pmd-red/asm/code_800DAC0.s
2023-01-13 22:36:16 -05:00

7516 lines
117 KiB
ArmAsm

#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_800DD0C
sub_800DD0C:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
adds r5, r0, 0
adds r6, r1, 0
movs r0, 0x58
adds r0, r5
mov r8, r0
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 6
ands r0, r1
cmp r0, 0
beq _0800DD2E
movs r0, 0
b _0800DD30
_0800DD2E:
lsrs r0, r1, 15
_0800DD30:
cmp r0, 0
bne _0800DD64
adds r0, r5, 0
bl sub_800DCA8
ldr r0, [r5, 0x34]
cmp r0, 0x3
bne _0800DD60
movs r4, 0
b _0800DD46
_0800DD44:
adds r4, 0x1
_0800DD46:
cmp r4, 0x1
bgt _0800DD60
adds r0, r4, 0
bl sub_800F18C
adds r2, r0, 0
ldr r1, [r2]
ldr r0, [r5, 0x38]
cmp r1, r0
bne _0800DD44
ldr r0, [r2, 0x4]
subs r0, 0x1
str r0, [r2, 0x4]
_0800DD60:
movs r0, 0
b _0800DE28
_0800DD64:
mov r0, r8
bl sub_80054BC
movs r4, 0
ldr r0, [r5, 0x8]
movs r1, 0x7
ands r0, r1
cmp r0, 0
bne _0800DD88
ldr r0, [r5, 0x14]
cmp r0, 0x5
bgt _0800DD84
cmp r0, 0x3
blt _0800DD84
subs r4, 0x3
b _0800DD8A
_0800DD84:
adds r4, 0x3
b _0800DD8A
_0800DD88:
movs r4, 0x3
_0800DD8A:
movs r2, 0
ldr r1, [r5, 0x20]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0800DD9E
ldrh r0, [r5, 0x1E]
lsls r0, 16
ldrh r2, [r5, 0x1C]
orrs r2, r0
_0800DD9E:
lsls r0, r2, 16
asrs r1, r0, 16
adds r7, r0, 0
cmp r1, 0x63
beq _0800DE26
asrs r0, r2, 16
adds r2, r0, 0
cmp r2, 0x63
beq _0800DE26
ldr r3, [r5, 0x24]
ldr r0, _0800DE34
cmp r3, r0
bne _0800DDCA
movs r1, 0x1A
ldrsh r0, [r5, r1]
movs r3, 0x2
ldrsh r1, [r6, r3]
subs r0, r1
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
adds r3, r0, r4
_0800DDCA:
movs r4, 0x18
ldrsh r0, [r5, r4]
movs r4, 0
ldrsh r1, [r6, r4]
subs r0, r1
asrs r1, r7, 16
adds r4, r0, r1
movs r7, 0x1A
ldrsh r0, [r5, r7]
movs r7, 0x2
ldrsh r1, [r6, r7]
subs r0, r1
adds r2, r0, r2
adds r0, r5, 0
adds r0, 0xCC
ldrh r0, [r0]
ldrh r1, [r5, 0x18]
adds r0, r1
strh r0, [r5, 0x18]
adds r0, r5, 0
adds r0, 0xCE
ldrh r0, [r0]
ldrh r7, [r5, 0x1A]
adds r0, r7
strh r0, [r5, 0x1A]
adds r1, r4, 0
adds r1, 0x3F
movs r0, 0xB7
lsls r0, 1
cmp r1, r0
bhi _0800DE26
movs r0, 0x40
negs r0, r0
cmp r2, r0
ble _0800DE26
cmp r2, 0xDF
bgt _0800DE26
ldr r0, [r5, 0x3C]
str r0, [sp]
adds r0, r5, 0
adds r0, 0x28
str r0, [sp, 0x4]
mov r0, r8
adds r1, r4, 0
bl sub_800558C
_0800DE26:
movs r0, 0x1
_0800DE28:
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0800DE34: .4byte 0x0000ffff
thumb_func_end sub_800DD0C
thumb_func_start sub_800DE38
sub_800DE38:
push {r4,r5,lr}
adds r5, r0, 0
adds r0, 0x58
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 6
ands r0, r1
cmp r0, 0
beq _0800DE4E
movs r0, 0
b _0800DE50
_0800DE4E:
lsrs r0, r1, 15
_0800DE50:
cmp r0, 0
bne _0800DE84
adds r0, r5, 0
bl sub_800DCA8
ldr r0, [r5, 0x34]
cmp r0, 0x3
bne _0800DE80
movs r4, 0
b _0800DE66
_0800DE64:
adds r4, 0x1
_0800DE66:
cmp r4, 0x1
bgt _0800DE80
adds r0, r4, 0
bl sub_800F18C
adds r2, r0, 0
ldr r1, [r2]
ldr r0, [r5, 0x38]
cmp r1, r0
bne _0800DE64
ldr r0, [r2, 0x4]
subs r0, 0x1
str r0, [r2, 0x4]
_0800DE80:
movs r0, 0
b _0800DE86
_0800DE84:
movs r0, 0x1
_0800DE86:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_800DE38
thumb_func_start sub_800DE8C
sub_800DE8C:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x14
adds r6, r0, 0
movs r0, 0x94
adds r0, r6
mov r8, r0
ldr r4, [r0, 0x18]
cmp r4, 0
beq _0800DEA4
b _0800E09C
_0800DEA4:
ldr r1, [r0, 0x14]
movs r7, 0x1
str r7, [sp]
adds r0, r6, 0
adds r0, 0xAC
str r0, [sp, 0x4]
add r2, sp, 0xC
str r2, [sp, 0x8]
mov r0, r8
movs r2, 0
movs r3, 0
bl sub_8009A7C
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
bne _0800DEC8
b _0800E030
_0800DEC8:
add r0, sp, 0xC
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
beq _0800DEE8
adds r0, r6, 0
adds r0, 0xB4
strb r7, [r0]
ldr r0, _0800DF0C
ldr r0, [r0]
ldr r2, _0800DF10
adds r1, r0, r2
str r4, [r1]
ldr r1, _0800DF14
adds r0, r1
str r4, [r0]
_0800DEE8:
add r0, sp, 0xC
ldrh r0, [r0, 0x2]
lsls r0, 16
asrs r0, 16
cmp r0, 0
beq _0800DF6C
cmp r0, 0x63
bne _0800DF1C
ldr r0, _0800DF0C
ldr r0, [r0]
ldr r1, _0800DF10
adds r2, r0, r1
ldr r1, _0800DF18
str r1, [r2]
ldr r2, _0800DF14
adds r0, r2
str r4, [r0]
b _0800DF6C
.align 2, 0
_0800DF0C: .4byte gUnknown_203B0CC
_0800DF10: .4byte 0x00001a08
_0800DF14: .4byte 0x00001a0c
_0800DF18: .4byte 0x00000c1c
_0800DF1C:
cmp r0, 0
ble _0800DF50
ldr r0, _0800DF40
ldr r4, [r0]
ldr r0, _0800DF44
adds r5, r4, r0
ldr r1, _0800DF48
adds r4, r1
add r0, sp, 0xC
movs r2, 0x2
ldrsh r1, [r0, r2]
ldr r0, _0800DF4C
bl __divsi3
str r0, [r4]
str r0, [r5]
b _0800DF6C
.align 2, 0
_0800DF40: .4byte gUnknown_203B0CC
_0800DF44: .4byte 0x00001a08
_0800DF48: .4byte 0x00001a0c
_0800DF4C: .4byte 0x00000c1c
_0800DF50:
ldr r0, _0800DFA4
ldr r4, [r0]
ldr r0, _0800DFA8
adds r1, r4, r0
ldr r0, _0800DFAC
str r0, [r1]
ldr r1, _0800DFB0
adds r4, r1
add r1, sp, 0xC
movs r2, 0x2
ldrsh r1, [r1, r2]
bl __divsi3
str r0, [r4]
_0800DF6C:
mov r0, r8
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0
bne _0800DF78
b _0800E094
_0800DF78:
ldr r0, _0800DFA4
ldr r1, [r0]
ldr r2, _0800DFB4
adds r0, r1, r2
ldr r0, [r0]
cmp r0, 0
beq _0800DFB8
cmp r0, 0x1
bne _0800DFEA
adds r0, r6, 0
adds r0, 0xB8
ldr r0, [r0]
ldr r0, [r0, 0x4]
ldr r1, [r0, 0x10]
movs r0, 0xE0
lsls r0, 2
adds r1, r0
movs r0, 0xE0
movs r2, 0x10
bl sub_809971C
b _0800DFEA
.align 2, 0
_0800DFA4: .4byte gUnknown_203B0CC
_0800DFA8: .4byte 0x00001a08
_0800DFAC: .4byte 0x00000c1c
_0800DFB0: .4byte 0x00001a0c
_0800DFB4: .4byte 0x00001a04
_0800DFB8:
ldr r2, _0800E010
adds r0, r1, r2
ldr r0, [r0]
movs r1, 0x64
bl __divsi3
adds r7, r0, 0
movs r4, 0
adds r6, 0xB8
movs r5, 0xE0
lsls r5, 2
_0800DFCE:
adds r0, r4, 0
adds r0, 0xE0
ldr r1, [r6]
ldr r1, [r1, 0x4]
ldr r1, [r1, 0x10]
adds r1, r5
adds r2, r7, 0
movs r3, 0
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
adds r4, 0x1
cmp r4, 0xF
ble _0800DFCE
_0800DFEA:
ldr r1, _0800E014
ldr r2, _0800E018
adds r0, r2, 0
strh r0, [r1]
ldr r0, _0800E01C
ldr r0, [r0]
ldr r1, _0800E010
adds r2, r0, r1
adds r1, 0x4
adds r0, r1
ldr r1, [r2]
ldr r0, [r0]
adds r1, r0
str r1, [r2]
cmp r1, 0
bge _0800E020
movs r0, 0
str r0, [r2]
b _0800E094
.align 2, 0
_0800E010: .4byte 0x00001a08
_0800E014: .4byte gUnknown_2026E4E
_0800E018: .4byte 0x00000a0a
_0800E01C: .4byte gUnknown_203B0CC
_0800E020:
ldr r0, _0800E02C
cmp r1, r0
ble _0800E094
str r0, [r2]
b _0800E094
.align 2, 0
_0800E02C: .4byte 0x00000c1c
_0800E030:
bl sub_8009BE4
adds r0, r6, 0
bl sub_800DCA8
bl sub_8000728
cmp r0, 0x1
bne _0800E058
bl sub_8040238
movs r0, 0
movs r1, 0
bl sub_803EAF0
movs r0, 0x80
lsls r0, 8
movs r1, 0
bl sub_800CD64
_0800E058:
ldr r4, _0800E084
ldr r0, [r4]
ldr r2, _0800E088
adds r0, r2
ldr r0, [r0]
bl sub_800CDA8
ldr r1, _0800E08C
ldr r0, [r4]
ldr r2, _0800E090
adds r0, r2
ldrh r0, [r0]
strh r0, [r1]
movs r0, 0x1
bl sub_800F18C
str r5, [r0, 0x4]
movs r1, 0x1
negs r1, r1
str r1, [r0]
movs r0, 0
b _0800E0A6
.align 2, 0
_0800E084: .4byte gUnknown_203B0CC
_0800E088: .4byte 0x00001a10
_0800E08C: .4byte gUnknown_2026E4E
_0800E090: .4byte 0x00001a14
_0800E094:
mov r1, r8
ldr r0, [r1, 0x14]
adds r0, 0x1
str r0, [r1, 0x14]
_0800E09C:
mov r2, r8
ldr r0, [r2, 0x18]
subs r0, 0x1
str r0, [r2, 0x18]
movs r0, 0x1
_0800E0A6:
add sp, 0x14
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_800DE8C
thumb_func_start sub_800E0B4
sub_800E0B4:
push {r4-r6,lr}
sub sp, 0x8
adds r5, r0, 0
ldr r0, [r5, 0xC]
bl sub_800ECA4
adds r6, r0, 0
ldr r0, [r6]
str r0, [r5, 0x34]
ldr r0, [r6, 0x4]
str r0, [r5, 0x38]
ldr r0, [r6, 0x10]
str r0, [r5, 0x4C]
ldr r0, [r5, 0x10]
ldr r1, [r6, 0x14]
adds r0, r1
str r0, [r5, 0x50]
adds r0, r6, 0
adds r0, 0x21
ldrb r0, [r0]
adds r1, r5, 0
adds r1, 0x55
strb r0, [r1]
adds r0, r6, 0
adds r0, 0x20
ldrb r1, [r0]
adds r0, r5, 0
adds r0, 0x54
strb r1, [r0]
adds r0, 0x64
ldr r0, [r0]
bl sub_800E2B8
adds r2, r0, 0
str r2, [r5, 0x8]
ldr r3, [r6, 0xC]
str r3, [r5, 0x40]
ldr r1, [r5, 0x14]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0800E114
movs r0, 0x7
ands r0, r2
cmp r0, 0
bne _0800E114
adds r0, r3, r1
str r0, [r5, 0x40]
_0800E114:
ldr r0, [r5, 0x34]
cmp r0, 0x3
beq _0800E12E
cmp r0, 0x3
bhi _0800E128
cmp r0, 0x1
bcc _0800E184
movs r0, 0x92
lsls r0, 2
b _0800E132
_0800E128:
cmp r0, 0x4
beq _0800E140
b _0800E184
_0800E12E:
movs r0, 0xDC
lsls r0, 2
_0800E132:
str r0, [r5, 0x48]
ldr r0, [r6, 0x8]
str r0, [r5, 0x3C]
movs r0, 0x1
negs r0, r0
str r0, [r5, 0x44]
b _0800E184
_0800E140:
movs r0, 0x1
negs r0, r0
str r0, [r5, 0x48]
ldr r0, [r6, 0x8]
str r0, [r5, 0x3C]
movs r0, 0xF0
lsls r0, 4
str r0, [r5, 0x44]
ldr r4, _0800E194
ldr r0, [r4]
ldr r2, _0800E198
adds r1, r0, r2
movs r2, 0
str r2, [r1]
ldr r3, _0800E19C
adds r0, r3
str r2, [r0]
bl sub_800CDC8
ldr r2, [r4]
ldr r4, _0800E1A0
adds r1, r2, r4
str r0, [r1]
ldr r0, _0800E1A4
ldrh r0, [r0]
ldr r1, _0800E1A8
adds r2, r1
strh r0, [r2]
ldrb r0, [r6, 0x18]
cmp r0, 0
beq _0800E184
movs r0, 0x5
bl sub_800CDA8
_0800E184:
ldr r0, [r5, 0x34]
cmp r0, 0x3
beq _0800E1C2
cmp r0, 0x3
bls _0800E1AC
cmp r0, 0x4
beq _0800E1E4
b _0800E200
.align 2, 0
_0800E194: .4byte gUnknown_203B0CC
_0800E198: .4byte 0x00001a08
_0800E19C: .4byte 0x00001a0c
_0800E1A0: .4byte 0x00001a10
_0800E1A4: .4byte gUnknown_2026E4E
_0800E1A8: .4byte 0x00001a14
_0800E1AC:
cmp r0, 0x1
bcc _0800E200
adds r0, r5, 0
adds r0, 0x58
adds r1, r5, 0
adds r1, 0xB8
ldr r1, [r1]
ldr r2, [r5, 0x40]
movs r3, 0x92
lsls r3, 2
b _0800E1D2
_0800E1C2:
adds r0, r5, 0
adds r0, 0x58
adds r1, r5, 0
adds r1, 0xB8
ldr r1, [r1]
ldr r2, [r5, 0x40]
movs r3, 0xDC
lsls r3, 2
_0800E1D2:
movs r4, 0
str r4, [sp]
adds r4, r5, 0
adds r4, 0x55
ldrb r4, [r4]
str r4, [sp, 0x4]
bl sub_800543C
b _0800E200
_0800E1E4:
adds r0, r5, 0
adds r0, 0xB8
ldr r0, [r0]
adds r1, r5, 0
adds r1, 0x94
ldr r0, [r0, 0x4]
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2,r3}
stm r1!, {r2,r3}
adds r1, r5, 0
adds r1, 0xB4
movs r0, 0
strb r0, [r1]
_0800E200:
add sp, 0x8
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_800E0B4
thumb_func_start sub_800E208
sub_800E208:
push {r4-r7,lr}
adds r7, r0, 0
adds r6, r1, 0
ldr r0, _0800E220
ldr r4, [r0]
ldr r0, [r6]
cmp r0, 0
bne _0800E224
_0800E218:
movs r0, 0x1
negs r0, r0
b _0800E2B0
.align 2, 0
_0800E220: .4byte gUnknown_203B0CC
_0800E224:
movs r1, 0
_0800E226:
ldr r5, [r4, 0x4]
movs r0, 0x1
negs r0, r0
cmp r5, r0
bne _0800E2A8
adds r0, r4, 0
movs r1, 0xD0
bl MemoryClear8
ldr r0, [r6]
bl sub_800ECA4
adds r1, r0, 0
ldr r2, [r1]
cmp r2, 0x2
bne _0800E254
ldr r0, _0800E2A0
ldr r0, [r0]
ldr r3, _0800E2A4
adds r0, r3
ldr r0, [r0]
cmp r0, 0x1
bne _0800E218
_0800E254:
cmp r2, 0x1
bne _0800E266
ldr r0, _0800E2A0
ldr r0, [r0]
ldr r3, _0800E2A4
adds r0, r3
ldr r0, [r0]
cmp r0, 0
bne _0800E218
_0800E266:
ldr r1, [r1, 0x4]
adds r0, r2, 0
bl sub_800F1C0
adds r1, r4, 0
adds r1, 0xB8
str r0, [r1]
cmp r0, 0
beq _0800E218
str r7, [r4]
bl sub_800E2F0
str r0, [r4, 0x4]
adds r1, r4, 0
adds r1, 0xC
adds r0, r6, 0
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldr r0, [r0]
str r0, [r1]
adds r0, r4, 0
bl sub_800E0B4
ldr r0, [r4, 0x4]
b _0800E2B0
.align 2, 0
_0800E2A0: .4byte gUnknown_203B0CC
_0800E2A4: .4byte 0x00001a04
_0800E2A8:
adds r1, 0x1
adds r4, 0xD0
cmp r1, 0x1F
ble _0800E226
_0800E2B0:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_800E208
thumb_func_start sub_800E2B8
sub_800E2B8:
ldr r0, [r0, 0x4]
ldr r0, [r0, 0x8]
bx lr
thumb_func_end sub_800E2B8
thumb_func_start sub_800E2C0
sub_800E2C0:
push {lr}
adds r3, r0, 0
movs r0, 0x1
negs r0, r0
cmp r3, r0
beq _0800E2E8
ldr r0, _0800E2DC
ldr r1, [r0]
movs r2, 0
_0800E2D2:
ldr r0, [r1, 0x4]
cmp r0, r3
bne _0800E2E0
adds r0, r2, 0
b _0800E2EC
.align 2, 0
_0800E2DC: .4byte gUnknown_203B0CC
_0800E2E0:
adds r2, 0x1
adds r1, 0xD0
cmp r2, 0x1F
ble _0800E2D2
_0800E2E8:
movs r0, 0x1
negs r0, r0
_0800E2EC:
pop {r1}
bx r1
thumb_func_end sub_800E2C0
thumb_func_start sub_800E2F0
sub_800E2F0:
ldr r0, _0800E304
ldr r1, [r0]
movs r0, 0xD0
lsls r0, 5
adds r1, r0
ldr r0, [r1]
adds r2, r0, 0x1
str r2, [r1]
bx lr
.align 2, 0
_0800E304: .4byte gUnknown_203B0CC
thumb_func_end sub_800E2F0
thumb_func_start sub_800E308
sub_800E308:
push {r4-r7,lr}
sub sp, 0x50
adds r4, r0, 0
adds r7, r1, 0
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x6
ldrsh r0, [r0, r1]
str r0, [sp, 0x28]
ldr r0, [r4, 0x10]
str r0, [sp, 0x2C]
ldr r0, [r4, 0xC]
str r0, [sp, 0x30]
ldr r0, [r4, 0x4]
str r0, [sp, 0x34]
ldr r0, [r4, 0x8]
str r0, [sp, 0x38]
movs r2, 0x2
ldrsh r0, [r4, r2]
ldrh r1, [r4]
bl sub_800E750
str r0, [sp, 0x3C]
ldr r0, _0800E3A0
str r0, [sp, 0x40]
add r1, sp, 0x44
ldr r0, _0800E3A4
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
add r1, sp, 0x28
mov r0, sp
movs r2, 0x28
bl memcpy
movs r0, 0x2
mov r1, sp
bl sub_800E208
adds r5, r0, 0
movs r6, 0x1
negs r6, r6
cmp r5, r6
beq _0800E396
adds r0, r5, 0
bl sub_800E2C0
adds r1, r0, 0
cmp r1, r6
beq _0800E396
ldr r2, _0800E3A8
movs r0, 0xD0
muls r1, r0
ldr r0, [r2]
adds r2, r0, r1
adds r1, r2, 0
adds r1, 0xBC
ldr r0, [r4, 0x4]
str r0, [r1]
adds r1, 0x4
ldr r0, [r7]
str r0, [r1]
ldrh r1, [r4, 0x2]
adds r0, r2, 0
adds r0, 0xC4
strh r1, [r0]
adds r1, r2, 0
adds r1, 0xC8
ldr r0, [r2, 0x1C]
str r0, [r1]
adds r0, r5, 0
_0800E396:
add sp, 0x50
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0800E3A0: .4byte 0x0000ffff
_0800E3A4: .4byte gUnknown_80B9C60
_0800E3A8: .4byte gUnknown_203B0CC
thumb_func_end sub_800E308
thumb_func_start sub_800E3AC
sub_800E3AC:
push {r4-r6,lr}
adds r4, r1, 0
adds r6, r2, 0
bl sub_800E2C0
adds r1, r0, 0
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0800E43C
ldr r2, _0800E444
movs r0, 0xD0
muls r1, r0
ldr r0, [r2]
adds r5, r0, r1
ldr r0, [r4]
str r0, [r5, 0x18]
adds r0, r5, 0
adds r0, 0xC0
movs r2, 0
ldrsh r1, [r0, r2]
subs r0, 0x4
movs r3, 0
ldrsh r0, [r0, r3]
subs r2, r1, r0
cmp r2, 0
bge _0800E3E4
negs r2, r2
_0800E3E4:
adds r0, r5, 0
adds r0, 0xC2
movs r3, 0
ldrsh r1, [r0, r3]
subs r0, 0x4
movs r3, 0
ldrsh r0, [r0, r3]
subs r1, r0
cmp r1, 0
bge _0800E3FA
negs r1, r1
_0800E3FA:
cmp r1, r2
bge _0800E400
adds r1, r2, 0
_0800E400:
cmp r1, 0
bge _0800E406
adds r1, 0x3
_0800E406:
asrs r4, r1, 2
subs r1, r4, 0x1
ldrh r0, [r5, 0x1E]
adds r0, 0x9
strh r0, [r5, 0x1E]
movs r2, 0x1C
ldrsh r0, [r5, r2]
muls r0, r1
strh r0, [r5, 0x1C]
movs r3, 0x1E
ldrsh r0, [r5, r3]
muls r0, r1
strh r0, [r5, 0x1E]
movs r1, 0x1C
ldrsh r0, [r5, r1]
adds r1, r4, 0
bl __divsi3
strh r0, [r5, 0x1C]
movs r2, 0x1E
ldrsh r0, [r5, r2]
adds r1, r4, 0
bl __divsi3
subs r0, 0x9
strh r0, [r5, 0x1E]
str r6, [r5, 0x24]
_0800E43C:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0800E444: .4byte gUnknown_203B0CC
thumb_func_end sub_800E3AC
thumb_func_start sub_800E448
sub_800E448:
push {r4,lr}
sub sp, 0x50
adds r4, r1, 0
lsls r0, 24
lsrs r0, 24
bl sub_800ECE4
lsls r0, 16
asrs r0, 16
str r0, [sp, 0x28]
movs r2, 0
str r2, [sp, 0x2C]
movs r1, 0x1
negs r1, r1
str r1, [sp, 0x30]
ldr r0, [r4]
str r0, [sp, 0x34]
str r2, [sp, 0x38]
str r1, [sp, 0x3C]
ldr r0, _0800E494
str r0, [sp, 0x40]
add r1, sp, 0x44
ldr r0, _0800E498
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
add r1, sp, 0x28
mov r0, sp
movs r2, 0x28
bl memcpy
movs r0, 0x3
mov r1, sp
bl sub_800E208
add sp, 0x50
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0800E494: .4byte 0x0000ffff
_0800E498: .4byte gUnknown_80B9C60
thumb_func_end sub_800E448
thumb_func_start sub_800E49C
sub_800E49C:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x50
adds r7, r1, 0
mov r8, r2
lsls r0, 24
lsrs r0, 24
lsls r3, 24
lsrs r6, r3, 24
cmp r6, 0
beq _0800E4BA
bl sub_800ECF8
b _0800E4BE
_0800E4BA:
bl sub_800ED0C
_0800E4BE:
lsls r0, 16
asrs r4, r0, 16
adds r0, r4, 0
bl sub_800E700
adds r5, r0, 0
str r4, [sp, 0x28]
movs r1, 0
str r1, [sp, 0x2C]
movs r4, 0x1
negs r4, r4
str r4, [sp, 0x30]
ldr r0, [r7]
str r0, [sp, 0x34]
str r1, [sp, 0x38]
str r4, [sp, 0x3C]
str r1, [sp, 0x40]
add r1, sp, 0x44
ldr r0, _0800E508
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
add r1, sp, 0x28
mov r0, sp
movs r2, 0x28
bl memcpy
ldr r0, [sp, 0x68]
str r0, [sp, 0x18]
cmp r6, 0
beq _0800E50C
cmp r5, r4
beq _0800E516
str r5, [sp, 0x14]
lsls r0, r5, 2
add r0, r8
ldr r0, [r0]
b _0800E514
.align 2, 0
_0800E508: .4byte gUnknown_80B9C60
_0800E50C:
movs r0, 0x3
str r0, [sp, 0x14]
mov r1, r8
ldr r0, [r1, 0xC]
_0800E514:
str r0, [sp, 0x10]
_0800E516:
movs r0, 0x4
mov r1, sp
bl sub_800E208
add sp, 0x50
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_800E49C
thumb_func_start sub_800E52C
sub_800E52C:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1B0
adds r7, r0, 0
ldrh r0, [r7]
cmp r0, 0x52
bne _0800E628
mov r1, sp
ldr r0, _0800E618
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r4,r5}
stm r1!, {r4,r5}
movs r0, 0
mov r10, r0
mov r9, r0
mov r8, sp
add r6, sp, 0x20
adds r4, r6, 0
_0800E55C:
ldrh r0, [r7]
bl sub_800ECB8
movs r1, 0x2
ldrsh r0, [r0, r1]
str r0, [r4]
ldr r0, [r7, 0x10]
str r0, [r4, 0x4]
ldr r0, [r7, 0xC]
str r0, [r4, 0x8]
ldr r0, [r7, 0x4]
str r0, [r4, 0xC]
ldrh r0, [r4, 0xE]
adds r0, 0x40
strh r0, [r4, 0xE]
ldr r0, [r7, 0x8]
str r0, [r4, 0x10]
mov r2, r8
ldrh r0, [r2]
ldrh r3, [r4, 0x10]
adds r0, r3
strh r0, [r4, 0x10]
ldrh r0, [r4, 0x12]
subs r0, 0x40
ldrh r5, [r2, 0x2]
adds r0, r5
strh r0, [r4, 0x12]
movs r1, 0x2
ldrsh r0, [r7, r1]
ldrh r1, [r7]
bl sub_800E750
str r0, [r4, 0x14]
ldr r0, _0800E61C
str r0, [r4, 0x18]
adds r1, r6, 0
adds r1, 0x1C
ldr r0, _0800E620
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
movs r0, 0x1
adds r1, r6, 0
bl sub_800E208
adds r5, r0, 0
bl sub_800E2C0
adds r1, r0, 0
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0800E5D4
ldr r2, _0800E624
movs r0, 0xD0
muls r1, r0
ldr r0, [r2]
adds r0, r1
adds r0, 0xCC
movs r1, 0x6
strh r1, [r0]
_0800E5D4:
mov r0, r9
cmp r0, 0
bne _0800E5DC
mov r10, r5
_0800E5DC:
movs r1, 0x4
add r8, r1
adds r4, 0x28
adds r6, 0x28
movs r2, 0x1
add r9, r2
mov r3, r9
cmp r3, 0x7
ble _0800E55C
movs r4, 0x6
mov r9, r4
_0800E5F2:
ldrh r0, [r7]
bl sub_800ECB8
movs r5, 0x2
ldrsh r0, [r0, r5]
bl sub_800ECA4
ldr r0, [r0, 0x4]
bl sub_800F15C
movs r0, 0x1
negs r0, r0
add r9, r0
mov r1, r9
cmp r1, 0
bge _0800E5F2
mov r0, r10
b _0800E67E
.align 2, 0
_0800E618: .4byte gUnknown_80B9C7C
_0800E61C: .4byte 0x0000ffff
_0800E620: .4byte gUnknown_80B9C60
_0800E624: .4byte gUnknown_203B0CC
_0800E628:
add r6, sp, 0x160
add r5, sp, 0x188
ldrh r0, [r7]
bl sub_800ECB8
movs r2, 0x2
ldrsh r0, [r0, r2]
str r0, [r5]
add r1, sp, 0x18C
ldr r0, [r7, 0x10]
str r0, [r1]
add r1, sp, 0x190
ldr r0, [r7, 0xC]
str r0, [r1]
add r1, sp, 0x194
ldr r0, [r7, 0x4]
str r0, [r1]
add r1, sp, 0x198
ldr r0, [r7, 0x8]
str r0, [r1]
add r4, sp, 0x19C
movs r3, 0x2
ldrsh r0, [r7, r3]
ldrh r1, [r7]
bl sub_800E750
str r0, [r4]
add r1, sp, 0x1A0
ldr r0, _0800E690
str r0, [r1]
add r1, sp, 0x1A4
ldr r0, _0800E694
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
adds r0, r6, 0
adds r1, r5, 0
movs r2, 0x28
bl memcpy
movs r0, 0x1
adds r1, r6, 0
bl sub_800E208
_0800E67E:
add sp, 0x1B0
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0800E690: .4byte 0x0000ffff
_0800E694: .4byte gUnknown_80B9C60
thumb_func_end sub_800E52C
thumb_func_start sub_800E698
sub_800E698:
push {r4,r5,lr}
adds r4, r1, 0
adds r5, r2, 0
bl sub_800E2C0
adds r1, r0, 0
movs r3, 0x1
negs r3, r3
cmp r1, r3
beq _0800E6D2
ldr r2, _0800E6C8
movs r0, 0xD0
muls r1, r0
ldr r0, [r2]
adds r1, r0, r1
ldr r0, [r4]
str r0, [r1, 0x18]
ldr r0, [r1, 0x20]
cmp r0, r3
beq _0800E6CC
ldr r0, [r5]
str r0, [r1, 0x1C]
b _0800E6D2
.align 2, 0
_0800E6C8: .4byte gUnknown_203B0CC
_0800E6CC:
movs r0, 0
strh r0, [r1, 0x1C]
strh r0, [r1, 0x1E]
_0800E6D2:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_800E698
thumb_func_start sub_800E6D8
sub_800E6D8:
push {lr}
bl sub_800E2C0
adds r1, r0, 0
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _0800E6EC
adds r0, r1, 0
b _0800E6F8
_0800E6EC:
ldr r2, _0800E6FC
movs r0, 0xD0
muls r1, r0
ldr r0, [r2]
adds r0, r1
ldr r0, [r0, 0x20]
_0800E6F8:
pop {r1}
bx r1
.align 2, 0
_0800E6FC: .4byte gUnknown_203B0CC
thumb_func_end sub_800E6D8
thumb_func_start sub_800E700
sub_800E700:
push {lr}
lsls r0, 16
asrs r0, 16
bl sub_800E900
pop {r1}
bx r1
thumb_func_end sub_800E700
thumb_func_start sub_800E710
sub_800E710:
push {r4-r6,lr}
lsls r0, 16
asrs r5, r0, 16
lsls r1, 16
lsrs r1, 16
adds r0, r1, 0
bl sub_800ECB8
adds r4, r0, 0
ldr r0, [r4, 0x20]
bl sub_800ECD0
adds r1, r0, 0
movs r2, 0
ldr r0, [r4, 0x1C]
cmp r2, r0
bge _0800E748
adds r3, r0, 0
_0800E734:
movs r6, 0
ldrsh r0, [r1, r6]
cmp r0, r5
bne _0800E740
ldr r0, [r1, 0x4]
b _0800E74A
_0800E740:
adds r2, 0x1
adds r1, 0xC
cmp r2, r3
blt _0800E734
_0800E748:
ldr r0, [r4, 0x14]
_0800E74A:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_800E710
thumb_func_start sub_800E750
sub_800E750:
push {r4-r6,lr}
lsls r0, 16
asrs r5, r0, 16
lsls r1, 16
lsrs r1, 16
adds r0, r1, 0
bl sub_800ECB8
adds r4, r0, 0
ldr r0, [r4, 0x20]
bl sub_800ECD0
adds r1, r0, 0
movs r2, 0
ldr r0, [r4, 0x1C]
cmp r2, r0
bge _0800E788
adds r3, r0, 0
_0800E774:
movs r6, 0
ldrsh r0, [r1, r6]
cmp r0, r5
bne _0800E780
ldr r0, [r1, 0x4]
b _0800E78A
_0800E780:
adds r2, 0x1
adds r1, 0xC
cmp r2, r3
blt _0800E774
_0800E788:
ldr r0, [r4, 0x14]
_0800E78A:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_800E750
thumb_func_start sub_800E790
sub_800E790:
push {r4-r6,lr}
lsls r0, 16
asrs r5, r0, 16
lsls r1, 16
lsrs r1, 16
adds r0, r1, 0
bl sub_800ECB8
adds r4, r0, 0
ldr r0, [r4, 0x20]
bl sub_800ECD0
adds r1, r0, 0
movs r2, 0
ldr r0, [r4, 0x1C]
cmp r2, r0
bge _0800E7C8
adds r3, r0, 0
_0800E7B4:
movs r6, 0
ldrsh r0, [r1, r6]
cmp r0, r5
bne _0800E7C0
ldr r0, [r1, 0x8]
b _0800E7CA
_0800E7C0:
adds r2, 0x1
adds r1, 0xC
cmp r2, r3
blt _0800E7B4
_0800E7C8:
ldr r0, [r4, 0x18]
_0800E7CA:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_800E790
thumb_func_start sub_800E7D0
sub_800E7D0:
push {r4-r6,lr}
sub sp, 0x10
adds r4, r0, 0
movs r6, 0
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0
ldrsh r0, [r0, r1]
str r0, [sp]
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x2
ldrsh r0, [r0, r1]
str r0, [sp, 0x4]
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x4
ldrsh r0, [r0, r1]
str r0, [sp, 0x8]
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x6
ldrsh r0, [r0, r1]
str r0, [sp, 0xC]
movs r5, 0
mov r4, sp
b _0800E812
_0800E80E:
adds r4, 0x4
adds r5, 0x1
_0800E812:
cmp r5, 0x3
bgt _0800E82C
ldr r0, [r4]
bl sub_800ECA4
movs r1, 0
ldr r0, [r0]
cmp r0, 0x4
bne _0800E826
movs r1, 0x1
_0800E826:
adds r6, r1, 0
cmp r6, 0
beq _0800E80E
_0800E82C:
adds r0, r6, 0
add sp, 0x10
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_800E7D0
thumb_func_start sub_800E838
sub_800E838:
push {r4,r5,lr}
sub sp, 0x10
adds r4, r0, 0
adds r5, r1, 0
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0
ldrsh r0, [r0, r1]
str r0, [sp]
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x2
ldrsh r0, [r0, r1]
str r0, [sp, 0x4]
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x4
ldrsh r0, [r0, r1]
str r0, [sp, 0x8]
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x6
ldrsh r0, [r0, r1]
str r0, [sp, 0xC]
lsls r5, 2
mov r1, sp
adds r0, r1, r5
ldr r0, [r0]
bl sub_800ECA4
movs r1, 0
ldr r0, [r0]
cmp r0, 0x4
bne _0800E886
movs r1, 0x1
_0800E886:
adds r0, r1, 0
add sp, 0x10
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_800E838
thumb_func_start sub_800E890
sub_800E890:
push {r4,lr}
adds r4, r0, 0
ldr r0, [r4]
bl sub_800E900
str r0, [r4, 0x14]
movs r0, 0x7
adds r1, r4, 0
bl sub_800E208
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_800E890
thumb_func_start sub_800E8AC
sub_800E8AC:
push {r4-r7,lr}
adds r4, r1, 0
adds r5, r2, 0
adds r6, r3, 0
ldr r7, [sp, 0x14]
bl sub_800E2C0
adds r1, r0, 0
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0800E8F2
ldr r2, _0800E8F8
movs r0, 0xD0
muls r1, r0
ldr r0, [r2]
adds r1, r0, r1
cmp r4, 0
beq _0800E8D6
ldr r0, [r4]
str r0, [r1, 0x18]
_0800E8D6:
cmp r5, 0
beq _0800E8DE
ldr r0, [r5]
str r0, [r1, 0x1C]
_0800E8DE:
ldr r0, _0800E8FC
cmp r6, r0
beq _0800E8E6
str r6, [r1, 0x24]
_0800E8E6:
cmp r7, 0
beq _0800E8F2
adds r1, 0x28
adds r0, r7, 0
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
_0800E8F2:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800E8F8: .4byte gUnknown_203B0CC
_0800E8FC: .4byte 0x0000ffff
thumb_func_end sub_800E8AC
thumb_func_start sub_800E900
sub_800E900:
push {lr}
bl sub_800ECA4
ldr r0, [r0, 0x1C]
pop {r1}
bx r1
thumb_func_end sub_800E900
thumb_func_start sub_800E90C
sub_800E90C:
push {r4-r7,lr}
adds r5, r0, 0
movs r7, 0
ldr r0, _0800E938
ldr r4, [r0]
movs r6, 0x1F
_0800E918:
ldr r1, [r4, 0x4]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0800E960
ldr r0, [r4, 0x10]
cmp r0, 0
bgt _0800E94A
ldr r0, [r4, 0x34]
cmp r0, 0x4
bne _0800E93C
adds r0, r4, 0
adds r1, r5, 0
bl sub_800DE8C
b _0800E944
.align 2, 0
_0800E938: .4byte gUnknown_203B0CC
_0800E93C:
adds r0, r4, 0
adds r1, r5, 0
bl sub_800DD0C
_0800E944:
ldr r0, [r4, 0x10]
cmp r0, 0
ble _0800E94E
_0800E94A:
subs r0, 0x1
str r0, [r4, 0x10]
_0800E94E:
adds r0, r4, 0
bl sub_800DCD0
adds r0, r4, 0
adds r0, 0x54
ldrb r0, [r0]
cmp r0, 0
bne _0800E960
movs r7, 0x1
_0800E960:
subs r6, 0x1
adds r4, 0xD0
cmp r6, 0
bge _0800E918
adds r0, r7, 0
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_800E90C
thumb_func_start sub_800E970
sub_800E970:
push {r4,r5,lr}
ldr r0, _0800E9A4
ldr r4, [r0]
movs r5, 0x1F
_0800E978:
ldr r1, [r4, 0x4]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0800E994
ldr r0, [r4, 0x10]
cmp r0, 0
bgt _0800E994
ldr r0, [r4, 0x34]
cmp r0, 0x4
beq _0800E994
adds r0, r4, 0
bl sub_800DE38
_0800E994:
subs r5, 0x1
adds r4, 0xD0
cmp r5, 0
bge _0800E978
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0800E9A4: .4byte gUnknown_203B0CC
thumb_func_end sub_800E970
thumb_func_start sub_800E9A8
sub_800E9A8:
push {lr}
adds r3, r0, 0
movs r0, 0x1
negs r0, r0
cmp r3, r0
beq _0800E9DC
ldr r0, _0800E9D0
ldr r1, [r0]
movs r2, 0
_0800E9BA:
ldr r0, [r1, 0x4]
cmp r0, r3
bne _0800E9D4
adds r0, r1, 0
adds r0, 0x54
ldrb r0, [r0]
cmp r0, 0
bne _0800E9DC
movs r0, 0x1
b _0800E9DE
.align 2, 0
_0800E9D0: .4byte gUnknown_203B0CC
_0800E9D4:
adds r2, 0x1
adds r1, 0xD0
cmp r2, 0x1F
ble _0800E9BA
_0800E9DC:
movs r0, 0
_0800E9DE:
pop {r1}
bx r1
thumb_func_end sub_800E9A8
thumb_func_start sub_800E9E4
sub_800E9E4:
push {lr}
bl sub_800E2C0
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _0800E9F6
movs r0, 0
b _0800E9F8
_0800E9F6:
movs r0, 0x1
_0800E9F8:
pop {r1}
bx r1
thumb_func_end sub_800E9E4
thumb_func_start sub_800E9FC
sub_800E9FC:
push {r4,lr}
lsls r0, 24
lsrs r3, r0, 24
ldr r0, _0800EA38
ldr r1, [r0]
movs r2, 0
movs r4, 0x1
negs r4, r4
_0800EA0C:
ldr r0, [r1, 0x4]
cmp r0, r4
beq _0800EA20
cmp r3, 0
bne _0800EA3C
adds r0, r1, 0
adds r0, 0x54
ldrb r0, [r0]
cmp r0, 0
beq _0800EA3C
_0800EA20:
adds r2, 0x1
adds r1, 0xD0
cmp r2, 0x1F
ble _0800EA0C
bl sub_800EC74
lsls r0, 24
cmp r0, 0
bne _0800EA3C
movs r0, 0
b _0800EA3E
.align 2, 0
_0800EA38: .4byte gUnknown_203B0CC
_0800EA3C:
movs r0, 0x1
_0800EA3E:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_800E9FC
thumb_func_start sub_800EA44
sub_800EA44:
push {r4-r6,lr}
lsls r0, 16
asrs r5, r0, 16
lsls r1, 16
lsrs r1, 16
adds r0, r1, 0
bl sub_800ECB8
adds r4, r0, 0
ldr r0, [r4, 0x20]
bl sub_800ECD0
adds r1, r0, 0
movs r2, 0
ldr r0, [r4, 0x1C]
cmp r2, r0
bge _0800EA7C
adds r3, r0, 0
_0800EA68:
movs r6, 0
ldrsh r0, [r1, r6]
cmp r0, r5
bne _0800EA74
ldrb r0, [r1, 0x2]
b _0800EA7E
_0800EA74:
adds r2, 0x1
adds r1, 0xC
cmp r2, r3
blt _0800EA68
_0800EA7C:
ldrb r0, [r4, 0x10]
_0800EA7E:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_800EA44
thumb_func_start sub_800EA84
sub_800EA84:
push {r4,lr}
sub sp, 0x50
adds r4, r0, 0
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0
ldrsh r0, [r0, r1]
str r0, [sp, 0x28]
ldr r0, [r4, 0x10]
str r0, [sp, 0x2C]
ldr r0, [r4, 0xC]
str r0, [sp, 0x30]
ldr r0, [r4, 0x4]
str r0, [sp, 0x34]
ldr r0, [r4, 0x8]
str r0, [sp, 0x38]
ldrh r0, [r4]
bl sub_800ECB8
movs r2, 0
ldrsh r0, [r0, r2]
bl sub_800EBBC
str r0, [sp, 0x3C]
ldr r0, _0800EADC
str r0, [sp, 0x40]
add r1, sp, 0x44
ldr r0, _0800EAE0
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
add r1, sp, 0x28
mov r0, sp
movs r2, 0x28
bl memcpy
movs r0, 0x5
mov r1, sp
bl sub_800E208
add sp, 0x50
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0800EADC: .4byte 0x0000ffff
_0800EAE0: .4byte gUnknown_80B9C60
thumb_func_end sub_800EA84
thumb_func_start sub_800EAE4
sub_800EAE4:
push {r4,r5,lr}
adds r4, r1, 0
adds r5, r2, 0
bl sub_800E2C0
adds r1, r0, 0
movs r3, 0x1
negs r3, r3
cmp r1, r3
beq _0800EB1E
ldr r2, _0800EB14
movs r0, 0xD0
muls r1, r0
ldr r0, [r2]
adds r1, r0, r1
ldr r0, [r4]
str r0, [r1, 0x18]
ldr r0, [r1, 0x20]
cmp r0, r3
beq _0800EB18
ldr r0, [r5]
str r0, [r1, 0x1C]
b _0800EB1E
.align 2, 0
_0800EB14: .4byte gUnknown_203B0CC
_0800EB18:
movs r0, 0
strh r0, [r1, 0x1C]
strh r0, [r1, 0x1E]
_0800EB1E:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_800EAE4
thumb_func_start sub_800EB24
sub_800EB24:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x20
adds r6, r1, 0
mov r8, r2
adds r5, r3, 0
ldr r4, [sp, 0x38]
bl sub_800E2C0
adds r1, r0, 0
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0800EBB0
ldr r2, _0800EB8C
movs r0, 0xD0
muls r1, r0
ldr r0, [r2]
adds r2, r0, r1
adds r0, r2, 0
adds r0, 0xCC
ldr r0, [r0]
cmp r0, 0
bne _0800EB5A
ldr r0, [r6]
str r0, [r2, 0x18]
_0800EB5A:
ldr r0, [r2]
cmp r0, 0x6
beq _0800EB94
ldr r0, [r2, 0x8]
movs r1, 0x7
mov r12, r1
ands r0, r1
cmp r0, 0
bne _0800EB94
mov r1, sp
ldr r0, _0800EB90
ldm r0!, {r3,r6,r7}
stm r1!, {r3,r6,r7}
ldm r0!, {r3,r6,r7}
stm r1!, {r3,r6,r7}
ldm r0!, {r3,r6}
stm r1!, {r3,r6}
mov r7, r12
ands r4, r7
lsls r0, r4, 2
add r0, sp
ldr r0, [r0]
adds r0, r5, r0
b _0800EB96
.align 2, 0
_0800EB8C: .4byte gUnknown_203B0CC
_0800EB90: .4byte gUnknown_80B9C9C
_0800EB94:
adds r0, r5, 0x1
_0800EB96:
str r0, [r2, 0x24]
ldr r1, [r2, 0x20]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0800EBAA
mov r1, r8
ldr r0, [r1]
str r0, [r2, 0x1C]
b _0800EBB0
_0800EBAA:
movs r0, 0
strh r0, [r2, 0x1C]
strh r0, [r2, 0x1E]
_0800EBB0:
add sp, 0x20
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_800EB24
thumb_func_start sub_800EBBC
sub_800EBBC:
push {lr}
bl sub_800ECA4
ldr r0, [r0, 0x1C]
pop {r1}
bx r1
thumb_func_end sub_800EBBC
thumb_func_start sub_800EBC8
sub_800EBC8:
push {r4,lr}
sub sp, 0x50
adds r4, r0, 0
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x4
ldrsh r0, [r0, r1]
str r0, [sp, 0x28]
ldr r0, [r4, 0x10]
str r0, [sp, 0x2C]
ldr r0, [r4, 0xC]
str r0, [sp, 0x30]
ldr r0, [r4, 0x4]
str r0, [sp, 0x34]
ldr r0, [r4, 0x8]
str r0, [sp, 0x38]
ldrh r0, [r4]
bl sub_800ECB8
movs r2, 0x4
ldrsh r0, [r0, r2]
bl sub_800EC68
str r0, [sp, 0x3C]
ldr r0, _0800EC20
str r0, [sp, 0x40]
add r1, sp, 0x44
ldr r0, _0800EC24
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
add r1, sp, 0x28
mov r0, sp
movs r2, 0x28
bl memcpy
movs r0, 0x6
mov r1, sp
bl sub_800E208
add sp, 0x50
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0800EC20: .4byte 0x0000ffff
_0800EC24: .4byte gUnknown_80B9C60
thumb_func_end sub_800EBC8
thumb_func_start sub_800EC28
sub_800EC28:
push {r4,r5,lr}
adds r4, r1, 0
adds r5, r2, 0
bl sub_800E2C0
adds r1, r0, 0
movs r3, 0x1
negs r3, r3
cmp r1, r3
beq _0800EC62
ldr r2, _0800EC58
movs r0, 0xD0
muls r1, r0
ldr r0, [r2]
adds r1, r0, r1
ldr r0, [r4]
str r0, [r1, 0x18]
ldr r0, [r1, 0x20]
cmp r0, r3
beq _0800EC5C
ldr r0, [r5]
str r0, [r1, 0x1C]
b _0800EC62
.align 2, 0
_0800EC58: .4byte gUnknown_203B0CC
_0800EC5C:
movs r0, 0
strh r0, [r1, 0x1C]
strh r0, [r1, 0x1E]
_0800EC62:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_800EC28
thumb_func_start sub_800EC68
sub_800EC68:
push {lr}
bl sub_800ECA4
ldr r0, [r0, 0x1C]
pop {r1}
bx r1
thumb_func_end sub_800EC68
thumb_func_start sub_800EC74
sub_800EC74:
push {lr}
movs r0, 0x1
bl sub_800F19C
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end sub_800EC74
thumb_func_start sub_800EC84
sub_800EC84:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_800ECB8
ldrb r0, [r0, 0x8]
pop {r1}
bx r1
thumb_func_end sub_800EC84
thumb_func_start sub_800EC94
sub_800EC94:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_800ECB8
ldrb r0, [r0, 0x9]
pop {r1}
bx r1
thumb_func_end sub_800EC94
thumb_func_start sub_800ECA4
sub_800ECA4:
adds r1, r0, 0
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _0800ECB4
adds r0, r1
bx lr
.align 2, 0
_0800ECB4: .4byte gUnknown_80B9CC4
thumb_func_end sub_800ECA4
thumb_func_start sub_800ECB8
sub_800ECB8:
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _0800ECCC
adds r0, r1
bx lr
.align 2, 0
_0800ECCC: .4byte gUnknown_80BDBC4
thumb_func_end sub_800ECB8
thumb_func_start sub_800ECD0
sub_800ECD0:
adds r1, r0, 0
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, _0800ECE0
adds r0, r1
bx lr
.align 2, 0
_0800ECE0: .4byte gUnknown_80C183C
thumb_func_end sub_800ECD0
thumb_func_start sub_800ECE4
sub_800ECE4:
lsls r0, 24
ldr r1, _0800ECF4
lsrs r0, 23
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_0800ECF4: .4byte gUnknown_80CE73C
thumb_func_end sub_800ECE4
thumb_func_start sub_800ECF8
sub_800ECF8:
lsls r0, 24
ldr r1, _0800ED08
lsrs r0, 22
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_0800ED08: .4byte gUnknown_80CE37C
thumb_func_end sub_800ECF8
thumb_func_start sub_800ED0C
sub_800ED0C:
lsls r0, 24
ldr r1, _0800ED1C
lsrs r0, 22
adds r0, r1
movs r1, 0x2
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_0800ED1C: .4byte gUnknown_80CE37C
thumb_func_end sub_800ED0C
thumb_func_start sub_800ED20
sub_800ED20:
lsls r0, 16
lsrs r0, 16
ldr r2, _0800ED34
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
adds r2, 0xC
adds r1, r2
ldr r0, [r1]
bx lr
.align 2, 0
_0800ED34: .4byte gUnknown_80BDBC4
thumb_func_end sub_800ED20
thumb_func_start sub_800ED38
sub_800ED38:
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _0800ED60
ldr r0, [r4]
cmp r0, 0
bne _0800ED54
movs r0, 0x4C
movs r1, 0xB
bl MemoryAlloc
str r0, [r4]
movs r1, 0x4C
bl MemoryClear8
_0800ED54:
ldr r0, [r4]
str r5, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0800ED60: .4byte gUnknown_203B0D0
thumb_func_end sub_800ED38
thumb_func_start sub_800ED64
sub_800ED64:
push {r4,lr}
ldr r4, _0800ED7C
ldr r0, [r4]
cmp r0, 0
beq _0800ED76
bl MemoryFree
movs r0, 0
str r0, [r4]
_0800ED76:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0800ED7C: .4byte gUnknown_203B0D0
thumb_func_end sub_800ED64
thumb_func_start sub_800ED80
sub_800ED80:
push {r4,lr}
ldr r2, _0800EDAC
ldr r1, [r2]
movs r0, 0
str r0, [r1]
adds r4, r2, 0
movs r3, 0
movs r2, 0x4
movs r1, 0x1
_0800ED92:
ldr r0, [r4]
adds r0, r2
str r3, [r0]
str r3, [r0, 0x4]
str r3, [r0, 0x8]
adds r2, 0x24
subs r1, 0x1
cmp r1, 0
bge _0800ED92
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0800EDAC: .4byte gUnknown_203B0D0
thumb_func_end sub_800ED80
thumb_func_start sub_800EDB0
sub_800EDB0:
push {r4,r5,lr}
adds r4, r0, 0
movs r3, 0
ldr r5, _0800EDDC
movs r2, 0
_0800EDBA:
ldr r1, [r5]
adds r0, r1, 0x4
adds r0, r2
ldr r0, [r0]
cmp r0, 0
bne _0800EDE0
adds r1, r2
adds r1, 0x4
adds r0, r4, 0
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
movs r0, 0x1
b _0800EDEA
.align 2, 0
_0800EDDC: .4byte gUnknown_203B0D0
_0800EDE0:
adds r2, 0x24
adds r3, 0x1
cmp r3, 0x1
ble _0800EDBA
movs r0, 0
_0800EDEA:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_800EDB0
thumb_func_start sub_800EDF0
sub_800EDF0:
push {r4,lr}
sub sp, 0x24
adds r4, r1, 0
cmp r0, 0
beq _0800EE00
cmp r0, 0x1
beq _0800EE1A
b _0800EE44
_0800EE00:
movs r0, 0x3
str r0, [sp]
movs r0, 0xE
str r0, [sp, 0xC]
movs r1, 0x1
negs r1, r1
str r1, [sp, 0x10]
movs r0, 0xDC
lsls r0, 2
str r0, [sp, 0x18]
movs r0, 0x1F
str r0, [sp, 0x1C]
b _0800EE40
_0800EE1A:
movs r0, 0x4
str r0, [sp]
movs r0, 0xE
str r0, [sp, 0xC]
movs r0, 0xF0
lsls r0, 4
str r0, [sp, 0x10]
movs r0, 0x1
negs r0, r0
str r0, [sp, 0x18]
str r0, [sp, 0x1C]
bl sub_8000728
movs r2, 0x2
eors r0, r2
negs r1, r0
orrs r1, r0
asrs r1, 31
ands r1, r2
_0800EE40:
str r1, [sp, 0x14]
str r4, [sp, 0x4]
_0800EE44:
ldr r0, [r4, 0x4]
str r0, [sp, 0x8]
movs r0, 0
str r0, [sp, 0x20]
mov r0, sp
bl sub_800EDB0
add sp, 0x24
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_800EDF0
thumb_func_start sub_800EE5C
sub_800EE5C:
push {r4-r6,lr}
adds r4, r0, 0
bl sub_800ECA4
adds r6, r0, 0
cmp r4, 0
beq _0800EEC2
ldr r2, [r6]
subs r0, r2, 0x1
cmp r0, 0x1
bls _0800EEC2
ldr r1, [r6, 0x4]
adds r0, r2, 0
bl sub_800F1C0
adds r5, r0, 0
cmp r5, 0
beq _0800EEC2
ldr r0, [r6]
ldr r1, [r6, 0x4]
bl sub_800F0F4
adds r4, r0, 0
movs r0, 0x1
negs r0, r0
cmp r4, r0
bne _0800EE9A
adds r0, r5, 0
bl sub_800F204
b _0800EEC2
_0800EE9A:
movs r0, 0x2
negs r0, r0
cmp r4, r0
beq _0800EEB6
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl sub_800F13C
adds r0, r4, 0
adds r1, r5, 0
bl sub_800EDF0
b _0800EEBC
_0800EEB6:
adds r0, r5, 0
bl sub_800F204
_0800EEBC:
ldr r0, [r6, 0x4]
bl sub_800F15C
_0800EEC2:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_800EE5C
thumb_func_start sub_800EEC8
sub_800EEC8:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_800ECB8
movs r1, 0
ldrsh r0, [r0, r1]
bl sub_800EE5C
pop {r0}
bx r0
thumb_func_end sub_800EEC8
thumb_func_start sub_800EEE0
sub_800EEE0:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_800ECB8
movs r1, 0x4
ldrsh r0, [r0, r1]
bl sub_800EE5C
pop {r0}
bx r0
thumb_func_end sub_800EEE0
thumb_func_start sub_800EEF8
sub_800EEF8:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_800ECB8
movs r1, 0x2
ldrsh r0, [r0, r1]
bl sub_800EE5C
pop {r0}
bx r0
thumb_func_end sub_800EEF8
thumb_func_start sub_800EF10
sub_800EF10:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_800ECB8
movs r1, 0x6
ldrsh r0, [r0, r1]
bl sub_800EE5C
pop {r0}
bx r0
thumb_func_end sub_800EF10
thumb_func_start sub_800EF28
sub_800EF28:
push {lr}
lsls r0, 24
lsrs r0, 24
bl sub_800ECE4
lsls r0, 16
asrs r0, 16
bl sub_800EE5C
pop {r0}
bx r0
thumb_func_end sub_800EF28
thumb_func_start sub_800EF40
sub_800EF40:
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, 24
cmp r1, 0
beq _0800EF52
bl sub_800ECF8
b _0800EF56
_0800EF52:
bl sub_800ED0C
_0800EF56:
lsls r0, 16
asrs r0, 16
bl sub_800EE5C
pop {r0}
bx r0
thumb_func_end sub_800EF40
thumb_func_start sub_800EF64
sub_800EF64:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, _0800EF9C
mov r9, r0
movs r1, 0x4
mov r8, r1
movs r7, 0
movs r6, 0
movs r5, 0x1
_0800EF7A:
mov r0, r9
ldr r1, [r0]
adds r0, r1, 0x4
adds r0, r7
ldr r0, [r0]
cmp r0, 0
beq _0800F01A
mov r0, r8
adds r4, r1, r0
ldr r0, [r4]
cmp r0, 0x3
beq _0800EFA0
cmp r0, 0x3
bls _0800F018
cmp r0, 0x4
beq _0800EFDA
b _0800F018
.align 2, 0
_0800EF9C: .4byte gUnknown_203B0D0
_0800EFA0:
ldr r0, [r4, 0x8]
ldr r1, [r4, 0x18]
bl sub_8005674
mov r1, r9
ldr r0, [r1]
ldr r0, [r0]
cmp r0, 0
beq _0800EFCA
cmp r0, 0x1
bne _0800F00C
ldr r0, [r4, 0x8]
ldr r1, [r0, 0x18]
ldr r0, [r4, 0xC]
adds r0, 0x10
lsls r0, 20
lsrs r0, 16
movs r2, 0x10
bl sub_809971C
b _0800F00C
_0800EFCA:
ldr r0, [r4, 0xC]
ldr r1, [r4, 0x8]
ldr r1, [r1, 0x18]
ldr r2, [r4, 0x1C]
ldr r3, [r4, 0x20]
bl sub_8005770
b _0800F00C
_0800EFDA:
bl sub_8000728
cmp r0, 0x1
bne _0800F000
movs r0, 0
movs r1, 0x1
bl sub_800CD64
movs r0, 0
bl sub_8052210
movs r0, 0x5
movs r1, 0
bl sub_803EAF0
bl sub_800CB20
bl xxx_call_update_bg_vram
_0800F000:
ldr r0, [r4, 0x8]
ldr r1, [r4, 0xC]
ldr r2, [r4, 0x10]
ldr r3, [r4, 0x14]
bl sub_8009A1C
_0800F00C:
ldr r0, [r4, 0x4]
cmp r0, 0
beq _0800F018
bl sub_800F204
str r6, [r4, 0x4]
_0800F018:
str r6, [r4]
_0800F01A:
movs r0, 0x24
add r8, r0
adds r7, 0x24
subs r5, 0x1
cmp r5, 0
bge _0800EF7A
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_800EF64
thumb_func_start sub_800F034
sub_800F034:
push {r4-r6,lr}
ldr r4, _0800F074
ldr r0, [r4]
cmp r0, 0
bne _0800F04E
movs r0, 0x10
movs r1, 0xB
bl MemoryAlloc
str r0, [r4]
movs r1, 0x10
bl MemoryClear8
_0800F04E:
movs r3, 0
adds r6, r4, 0
movs r5, 0x1
negs r5, r5
movs r4, 0
_0800F058:
ldr r0, [r6]
lsls r2, r3, 3
adds r1, r0, r2
str r5, [r1]
adds r0, 0x4
adds r0, r2
str r4, [r0]
adds r3, 0x1
cmp r3, 0x1
ble _0800F058
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0800F074: .4byte gUnknown_203B0D4
thumb_func_end sub_800F034
thumb_func_start sub_800F078
sub_800F078:
push {r4,lr}
ldr r4, _0800F090
ldr r0, [r4]
cmp r0, 0
beq _0800F08A
bl MemoryFree
movs r0, 0
str r0, [r4]
_0800F08A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0800F090: .4byte gUnknown_203B0D4
thumb_func_end sub_800F078
thumb_func_start sub_800F094
sub_800F094:
push {r4-r6,lr}
movs r3, 0
ldr r6, _0800F0BC
movs r5, 0x1
negs r5, r5
movs r4, 0
_0800F0A0:
ldr r0, [r6]
lsls r2, r3, 3
adds r1, r0, r2
str r5, [r1]
adds r0, 0x4
adds r0, r2
str r4, [r0]
adds r3, 0x1
cmp r3, 0x1
ble _0800F0A0
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0800F0BC: .4byte gUnknown_203B0D4
thumb_func_end sub_800F094
thumb_func_start sub_800F0C0
sub_800F0C0:
push {lr}
cmp r0, 0x3
bne _0800F0D8
ldr r0, _0800F0D4
ldr r0, [r0]
ldr r0, [r0]
cmp r0, r1
bne _0800F0EC
movs r0, 0
b _0800F0F0
.align 2, 0
_0800F0D4: .4byte gUnknown_203B0D4
_0800F0D8:
ldr r0, _0800F0E8
ldr r0, [r0]
ldr r0, [r0, 0x8]
cmp r0, r1
bne _0800F0EC
movs r0, 0x1
b _0800F0F0
.align 2, 0
_0800F0E8: .4byte gUnknown_203B0D4
_0800F0EC:
movs r0, 0x3
negs r0, r0
_0800F0F0:
pop {r1}
bx r1
thumb_func_end sub_800F0C0
thumb_func_start sub_800F0F4
sub_800F0F4:
push {lr}
cmp r0, 0x3
bne _0800F114
ldr r0, _0800F110
ldr r2, [r0]
ldr r0, [r2]
cmp r0, r1
beq _0800F11E
ldr r0, [r2, 0x4]
cmp r0, 0
bne _0800F132
movs r0, 0
b _0800F136
.align 2, 0
_0800F110: .4byte gUnknown_203B0D4
_0800F114:
ldr r0, _0800F124
ldr r2, [r0]
ldr r0, [r2, 0x8]
cmp r0, r1
bne _0800F128
_0800F11E:
movs r0, 0x2
negs r0, r0
b _0800F136
.align 2, 0
_0800F124: .4byte gUnknown_203B0D4
_0800F128:
ldr r0, [r2, 0xC]
cmp r0, 0
bne _0800F132
movs r0, 0x1
b _0800F136
_0800F132:
movs r0, 0x1
negs r0, r0
_0800F136:
pop {r1}
bx r1
thumb_func_end sub_800F0F4
thumb_func_start sub_800F13C
sub_800F13C:
push {lr}
ldr r1, _0800F158
ldr r3, [r1]
lsls r1, r0, 3
adds r0, r3, 0x4
adds r0, r1
ldr r0, [r0]
cmp r0, 0
bne _0800F154
adds r1, r3, r1
ldr r0, [r2, 0x4]
str r0, [r1]
_0800F154:
pop {r0}
bx r0
.align 2, 0
_0800F158: .4byte gUnknown_203B0D4
thumb_func_end sub_800F13C
thumb_func_start sub_800F15C
sub_800F15C:
push {r4,r5,lr}
adds r4, r0, 0
movs r3, 0
ldr r5, _0800F17C
_0800F164:
ldr r1, [r5]
lsls r2, r3, 3
adds r0, r1, r2
ldr r0, [r0]
cmp r0, r4
bne _0800F180
adds r1, 0x4
adds r1, r2
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
b _0800F186
.align 2, 0
_0800F17C: .4byte gUnknown_203B0D4
_0800F180:
adds r3, 0x1
cmp r3, 0x1
ble _0800F164
_0800F186:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_800F15C
thumb_func_start sub_800F18C
sub_800F18C:
ldr r1, _0800F198
lsls r0, 3
ldr r1, [r1]
adds r1, r0
adds r0, r1, 0
bx lr
.align 2, 0
_0800F198: .4byte gUnknown_203B0D4
thumb_func_end sub_800F18C
thumb_func_start sub_800F19C
sub_800F19C:
push {lr}
ldr r1, _0800F1B4
ldr r1, [r1]
lsls r0, 3
adds r1, 0x4
adds r1, r0
ldr r0, [r1]
cmp r0, 0
beq _0800F1B8
movs r0, 0x1
b _0800F1BA
.align 2, 0
_0800F1B4: .4byte gUnknown_203B0D4
_0800F1B8:
movs r0, 0
_0800F1BA:
pop {r1}
bx r1
thumb_func_end sub_800F19C
thumb_func_start sub_800F1C0
sub_800F1C0:
push {lr}
sub sp, 0x8
adds r2, r1, 0
cmp r0, 0x1
bcc _0800F1EC
cmp r0, 0x3
bls _0800F1D4
cmp r0, 0x4
beq _0800F1E4
b _0800F1EC
_0800F1D4:
ldr r1, _0800F1E0
mov r0, sp
bl sprintf
b _0800F1EC
.align 2, 0
_0800F1E0: .4byte gUnknown_80CE77C
_0800F1E4:
ldr r1, _0800F1FC
mov r0, sp
bl sprintf
_0800F1EC:
ldr r1, _0800F200
mov r0, sp
bl Call_OpenFileAndGetFileDataPtr
add sp, 0x8
pop {r1}
bx r1
.align 2, 0
_0800F1FC: .4byte gUnknown_80CE788
_0800F200: .4byte gEffectFileArchive
thumb_func_end sub_800F1C0
thumb_func_start sub_800F204
sub_800F204:
push {lr}
bl CloseFile
pop {r0}
bx r0
thumb_func_end sub_800F204
thumb_func_start GetDungeonPokemonSprite
@ struct DungeonPokemonSprite *GetDungeonPokemonSprite(int id)
GetDungeonPokemonSprite:
push {r4,lr}
adds r4, r0, 0
movs r3, 0
ldr r0, _0800F230
ldr r0, [r0]
adds r1, r0, 0x4
adds r2, r0, 0
adds r2, 0x8
_0800F220:
ldrb r0, [r1]
cmp r0, 0
beq _0800F234
ldr r0, [r2]
cmp r0, r4
bne _0800F234
adds r0, r1, 0
b _0800F240
.align 2, 0
_0800F230: .4byte gDungeonPokemonSprites
_0800F234:
adds r1, 0x40
adds r2, 0x40
adds r3, 0x1
cmp r3, 0x15
ble _0800F220
movs r0, 0
_0800F240:
pop {r4}
pop {r1}
bx r1
thumb_func_end GetDungeonPokemonSprite
thumb_func_start NewDungeonPokemonSprite
@ struct DungeonPokemonSprite *NewDungeonPokemonSprite(void)
NewDungeonPokemonSprite:
push {lr}
movs r2, 0
ldr r0, _0800F25C
ldr r0, [r0]
adds r1, r0, 0x4
_0800F252:
ldrb r0, [r1]
cmp r0, 0
bne _0800F260
adds r0, r1, 0
b _0800F26A
.align 2, 0
_0800F25C: .4byte gDungeonPokemonSprites
_0800F260:
adds r1, 0x40
adds r2, 0x1
cmp r2, 0x15
ble _0800F252
movs r0, 0
_0800F26A:
pop {r1}
bx r1
thumb_func_end NewDungeonPokemonSprite
thumb_func_start GetNextStatusSymbol
@ u32 GetNextStatusSymbol(?, int select)
@ The "select" parameter exists to differentiate between the two kinds of
@ status symbols that can appear at the same time.
@ Only frozen falls under select = 1, every other symbol falls under select = 0
GetNextStatusSymbol:
push {r4-r6,lr}
adds r2, r0, 0
lsls r0, r1, 3
adds r0, 0x28
adds r3, r2, r0
movs r5, 0x80
lsls r5, 21
cmp r1, 0
bne _0800F284
movs r5, 0x1
_0800F284:
movs r6, 0x80
lsls r6, 21
cmp r1, 0
bne _0800F290
movs r6, 0x80
lsls r6, 20
_0800F290:
movs r4, 0x1
cmp r1, 0
bne _0800F298
movs r4, 0x1C
_0800F298:
ldr r0, [r2, 0xC]
cmp r0, 0
bne _0800F2A4
b _0800F2CC
_0800F2A0:
adds r0, r1, 0
b _0800F2CE
_0800F2A4:
ldr r2, [r3]
adds r1, r5, 0
cmp r2, 0
beq _0800F2AE
adds r1, r2, 0
_0800F2AE:
movs r2, 0
cmp r2, r4
bge _0800F2CC
adds r3, r0, 0
_0800F2B6:
lsls r1, 1
cmp r1, r6
bls _0800F2BE
adds r1, r5, 0
_0800F2BE:
adds r0, r3, 0
ands r0, r1
cmp r0, 0
bne _0800F2A0
adds r2, 0x1
cmp r2, r4
blt _0800F2B6
_0800F2CC:
movs r0, 0
_0800F2CE:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end GetNextStatusSymbol
thumb_func_start StatusSymbolBitToIndex
StatusSymbolBitToIndex:
push {lr}
movs r1, 0
cmp r0, 0
beq _0800F2E4
_0800F2DC:
lsrs r0, 1
adds r1, 0x1
cmp r0, 0
bne _0800F2DC
_0800F2E4:
adds r0, r1, 0
pop {r1}
bx r1
thumb_func_end StatusSymbolBitToIndex
thumb_func_start sub_800F2EC
sub_800F2EC:
push {r4-r7,lr}
sub sp, 0xC
adds r5, r0, 0
adds r6, r1, 0
adds r7, r2, 0
lsls r0, r6, 3
adds r0, 0x28
adds r4, r5, r0
ldr r0, [r5, 0xC]
cmp r0, 0
bne _0800F306
str r0, [r4]
b _0800F35C
_0800F306:
ldr r0, [r4]
cmp r0, 0
bne _0800F30E
str r0, [r4, 0x4]
_0800F30E:
ldr r0, [r4, 0x4]
cmp r0, 0
bgt _0800F32A
adds r0, r5, 0
adds r1, r6, 0
bl GetNextStatusSymbol
adds r1, r0, 0
ldr r0, [r4]
cmp r0, r1
beq _0800F326
str r1, [r4]
_0800F326:
movs r0, 0x3C
b _0800F32C
_0800F32A:
subs r0, 0x1
_0800F32C:
str r0, [r4, 0x4]
ldrb r0, [r5, 0x10]
cmp r0, 0
beq _0800F35C
ldr r0, [r4]
cmp r0, 0
beq _0800F35C
bl StatusSymbolBitToIndex
adds r1, r0, 0
movs r2, 0x8
ldrsh r0, [r5, r2]
adds r2, r5, 0
adds r2, 0x14
lsls r3, r6, 2
adds r3, 0x18
adds r3, r5, r3
str r7, [sp]
ldrb r4, [r5, 0x11]
str r4, [sp, 0x4]
ldr r4, [r5, 0x4]
str r4, [sp, 0x8]
bl DrawStatusSprite
_0800F35C:
add sp, 0xC
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_800F2EC
thumb_func_start DrawStatusSprite
@ void DrawStatusSprite(?, int status, struct Position *pos, struct Position *pos_offset, struct Position *pos_screen, ?)
DrawStatusSprite:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
mov r12, r2
ldr r0, [sp, 0x20]
mov r8, r0
ldr r4, [sp, 0x24]
ldr r0, _0800F410
lsls r1, 3
adds r2, r1, r0
ldr r0, [r2]
ldr r1, [r2, 0x4]
str r0, [sp]
str r1, [sp, 0x4]
lsls r2, r0, 1
ldr r1, [sp]
adds r2, r1
lsls r2, 3
ldr r0, _0800F414
adds r2, r0
ldr r0, [r2, 0x8]
ldr r6, _0800F418
adds r7, r0, r6
movs r0, 0x3
ands r4, r0
lsls r4, 10
ldr r5, _0800F41C
ldrh r1, [r5, 0x4]
ldr r0, _0800F420
ands r0, r1
orrs r0, r4
strh r0, [r5, 0x4]
mov r0, r12
movs r4, 0
ldrsh r1, [r0, r4]
ldr r0, [r2]
lsls r0, 2
subs r1, r0
mov r6, r8
movs r4, 0
ldrsh r0, [r6, r4]
subs r1, r0
movs r6, 0
ldrsh r0, [r3, r6]
adds r4, r1, r0
mov r0, r12
movs r6, 0x2
ldrsh r1, [r0, r6]
ldr r0, [r2, 0x4]
lsls r0, 2
subs r1, r0
mov r2, r8
movs r6, 0x2
ldrsh r0, [r2, r6]
subs r1, r0
movs r2, 0x2
ldrsh r0, [r3, r2]
adds r3, r1, r0
adds r6, r3, 0
subs r6, 0x10
movs r0, 0x20
negs r0, r0
cmp r4, r0
bge _0800F3E8
b _0800F5E4
_0800F3E8:
cmp r3, r0
bge _0800F3EE
b _0800F5E4
_0800F3EE:
cmp r4, 0xEF
ble _0800F3F4
b _0800F5E4
_0800F3F4:
cmp r3, 0x9F
ble _0800F3FA
b _0800F5E4
_0800F3FA:
ldr r0, [sp]
subs r0, 0x1
cmp r0, 0xF
bls _0800F404
b _0800F5A6
_0800F404:
lsls r0, 2
ldr r1, _0800F424
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0800F410: .4byte gStatusSprites
_0800F414: .4byte gStatusGraphics
_0800F418: .4byte 0x0000032b
_0800F41C: .4byte gUnknown_203B0DC
_0800F420: .4byte 0x0000f3ff
_0800F424: .4byte _0800F428
.align 2, 0
_0800F428:
.4byte _0800F468
.4byte _0800F4CC
.4byte _0800F4CC
.4byte _0800F574
.4byte _0800F538
.4byte _0800F4CC
.4byte _0800F4CC
.4byte _0800F498
.4byte _0800F4CC
.4byte _0800F4CC
.4byte _0800F4CC
.4byte _0800F468
.4byte _0800F4CC
.4byte _0800F468
.4byte _0800F4CC
.4byte _0800F500
_0800F468:
ldrh r2, [r5]
ldr r1, _0800F48C
adds r0, r1, 0
ands r0, r2
strh r0, [r5]
ldrh r0, [r5, 0x2]
ands r1, r0
ldr r0, _0800F490
ands r4, r0
movs r0, 0xFE
lsls r0, 8
ands r1, r0
orrs r1, r4
strh r1, [r5, 0x2]
ldr r1, _0800F494
ands r1, r6
b _0800F59A
.align 2, 0
_0800F48C: .4byte 0x00003fff
_0800F490: .4byte 0x000001ff
_0800F494: .4byte 0x00000fff
_0800F498:
movs r3, 0x80
lsls r3, 8
ldrh r2, [r5]
ldr r1, _0800F4C0
adds r0, r1, 0
ands r0, r2
orrs r0, r3
strh r0, [r5]
ldrh r0, [r5, 0x2]
ands r1, r0
ldr r0, _0800F4C4
ands r4, r0
movs r0, 0xFE
lsls r0, 8
ands r1, r0
orrs r1, r4
strh r1, [r5, 0x2]
ldr r1, _0800F4C8
ands r1, r6
b _0800F59A
.align 2, 0
_0800F4C0: .4byte 0x00003fff
_0800F4C4: .4byte 0x000001ff
_0800F4C8: .4byte 0x00000fff
_0800F4CC:
ldrh r2, [r5]
ldr r1, _0800F4F4
adds r0, r1, 0
ands r0, r2
strh r0, [r5]
movs r2, 0x80
lsls r2, 7
ldrh r0, [r5, 0x2]
ands r1, r0
orrs r1, r2
ldr r0, _0800F4F8
ands r4, r0
movs r0, 0xFE
lsls r0, 8
ands r1, r0
orrs r1, r4
strh r1, [r5, 0x2]
ldr r1, _0800F4FC
ands r1, r6
b _0800F59A
.align 2, 0
_0800F4F4: .4byte 0x00003fff
_0800F4F8: .4byte 0x000001ff
_0800F4FC: .4byte 0x00000fff
_0800F500:
ldrh r2, [r5]
ldr r1, _0800F52C
adds r0, r1, 0
ands r0, r2
strh r0, [r5]
movs r2, 0x80
lsls r2, 7
ldrh r0, [r5, 0x2]
ands r1, r0
orrs r1, r2
adds r2, r4, 0
adds r2, 0x8
ldr r0, _0800F530
ands r2, r0
movs r0, 0xFE
lsls r0, 8
ands r1, r0
orrs r1, r2
strh r1, [r5, 0x2]
ldr r1, _0800F534
ands r1, r6
b _0800F59A
.align 2, 0
_0800F52C: .4byte 0x00003fff
_0800F530: .4byte 0x000001ff
_0800F534: .4byte 0x00000fff
_0800F538:
movs r3, 0x80
lsls r3, 7
ldrh r2, [r5]
ldr r1, _0800F568
adds r0, r1, 0
ands r0, r2
orrs r0, r3
strh r0, [r5]
movs r2, 0x80
lsls r2, 8
ldrh r0, [r5, 0x2]
ands r1, r0
orrs r1, r2
ldr r0, _0800F56C
ands r4, r0
movs r0, 0xFE
lsls r0, 8
ands r1, r0
orrs r1, r4
strh r1, [r5, 0x2]
ldr r1, _0800F570
ands r1, r6
b _0800F59A
.align 2, 0
_0800F568: .4byte 0x00003fff
_0800F56C: .4byte 0x000001ff
_0800F570: .4byte 0x00000fff
_0800F574:
ldrh r2, [r5]
ldr r1, _0800F5F0
adds r0, r1, 0
ands r0, r2
strh r0, [r5]
movs r2, 0x80
lsls r2, 8
ldrh r0, [r5, 0x2]
ands r1, r0
orrs r1, r2
ldr r0, _0800F5F4
ands r4, r0
movs r0, 0xFE
lsls r0, 8
ands r1, r0
orrs r1, r4
strh r1, [r5, 0x2]
ldr r1, _0800F5F8
ands r1, r3
_0800F59A:
lsls r1, 4
ldrh r2, [r5, 0x6]
movs r0, 0xF
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x6]
_0800F5A6:
ldr r0, _0800F5FC
ands r7, r0
ldrh r1, [r5, 0x4]
movs r0, 0xFC
lsls r0, 8
ands r0, r1
orrs r0, r7
movs r1, 0xF
ldr r3, [sp, 0x4]
ands r1, r3
lsls r1, 12
ldr r2, _0800F5F8
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x4]
mov r4, r12
movs r6, 0x2
ldrsh r1, [r4, r6]
mov r2, r8
movs r3, 0x2
ldrsh r0, [r2, r3]
subs r1, r0
lsrs r0, r1, 31
adds r1, r0
asrs r1, 1
adds r1, 0x1
adds r0, r5, 0
movs r2, 0
movs r3, 0
bl AddSprite
_0800F5E4:
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800F5F0: .4byte 0x00003fff
_0800F5F4: .4byte 0x000001ff
_0800F5F8: .4byte 0x00000fff
_0800F5FC: .4byte 0x000003ff
thumb_func_end DrawStatusSprite
thumb_func_start LoadStatusGraphics
LoadStatusGraphics:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r1, 24
lsrs r1, 24
mov r9, r1
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
ldr r0, _0800F660
adds r1, r0
ldr r7, [r1, 0x14]
ldr r3, [r1, 0x10]
ldr r2, [r1]
ldr r0, [r1, 0x4]
muls r0, r2
lsls r4, r0, 5
mov r8, r4
ldr r0, [r1, 0x8]
ldr r1, _0800F664
adds r0, r1
lsls r5, r0, 5
adds r6, r5, 0
ldr r0, _0800F668
ldr r0, [r0]
ldr r0, [r0]
cmp r0, 0
bge _0800F63C
adds r0, 0x3
_0800F63C:
asrs r0, 2
adds r1, r3, 0
bl __modsi3
muls r0, r4
ldr r1, _0800F66C
adds r0, r1
adds r1, r7, r0
mov r2, r9
cmp r2, 0
beq _0800F674
ldr r2, _0800F670
adds r0, r5, r2
adds r2, r4, 0
bl sub_80098BC
b _0800F67E
.align 2, 0
_0800F660: .4byte gStatusGraphics
_0800F664: .4byte 0x0000032b
_0800F668: .4byte gDungeonPokemonSprites
_0800F66C: .4byte gStatusGraphics4bpp
_0800F670: .4byte 0x06010000
_0800F674:
ldr r2, _0800F68C
adds r0, r6, r2
mov r2, r8
bl CpuCopy
_0800F67E:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800F68C: .4byte 0x06010000
thumb_func_end LoadStatusGraphics
thumb_func_start InitDungeonPokemonSprites
InitDungeonPokemonSprites:
push {r4,r5,lr}
ldr r5, _0800F738
ldr r0, [r5]
cmp r0, 0
bne _0800F6AC
ldr r4, _0800F73C
adds r0, r4, 0
movs r1, 0xC
bl MemoryAlloc
str r0, [r5]
adds r1, r4, 0
bl MemoryClear8
_0800F6AC:
ldr r1, [r5]
movs r0, 0
str r0, [r1]
movs r0, 0x1
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x2
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x3
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x4
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x5
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x6
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x7
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x8
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x9
movs r1, 0
bl LoadStatusGraphics
movs r0, 0xA
movs r1, 0
bl LoadStatusGraphics
movs r0, 0xB
movs r1, 0
bl LoadStatusGraphics
movs r0, 0xC
movs r1, 0
bl LoadStatusGraphics
movs r0, 0xD
movs r1, 0
bl LoadStatusGraphics
movs r0, 0xE
movs r1, 0
bl LoadStatusGraphics
movs r0, 0xF
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x10
movs r1, 0
bl LoadStatusGraphics
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0800F738: .4byte gDungeonPokemonSprites
_0800F73C: .4byte 0x00000584
thumb_func_end InitDungeonPokemonSprites
thumb_func_start FreeDungeonPokemonSprites
FreeDungeonPokemonSprites:
push {r4,lr}
ldr r4, _0800F758
ldr r0, [r4]
cmp r0, 0
beq _0800F752
bl MemoryFree
movs r0, 0
str r0, [r4]
_0800F752:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0800F758: .4byte gDungeonPokemonSprites
thumb_func_end FreeDungeonPokemonSprites
thumb_func_start UpdateDungeonPokemonSprite
@ void UpdateDungeonPokemonSprite(int id, short species, int status, char visible)
UpdateDungeonPokemonSprite:
push {r4-r7,lr}
adds r4, r0, 0
adds r7, r2, 0
lsls r1, 16
asrs r5, r1, 16
lsls r3, 24
lsrs r6, r3, 24
ldr r0, _0800F790
ldr r0, [r0]
cmp r0, 0
beq _0800F788
adds r0, r4, 0
bl GetDungeonPokemonSprite
cmp r0, 0
beq _0800F788
movs r1, 0
strh r5, [r0, 0x8]
str r7, [r0, 0xC]
strb r6, [r0, 0x10]
adds r0, 0x38
strb r1, [r0]
_0800F788:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800F790: .4byte gDungeonPokemonSprites
thumb_func_end UpdateDungeonPokemonSprite
thumb_func_start sub_800F794
sub_800F794:
push {r4-r6,lr}
adds r1, r0, 0
adds r4, r2, 0
adds r5, r3, 0
ldr r6, [sp, 0x10]
ldr r0, _0800F7CC
ldr r0, [r0]
cmp r0, 0
beq _0800F7C6
adds r0, r1, 0
bl GetDungeonPokemonSprite
adds r2, r0, 0
cmp r2, 0
beq _0800F7C6
adds r1, r2, 0
adds r1, 0x38
movs r0, 0x1
strb r0, [r1]
strh r4, [r2, 0x3C]
strh r5, [r2, 0x3E]
ldr r0, [r6]
str r0, [r2, 0x20]
ldr r0, [r6, 0xC]
str r0, [r2, 0x24]
_0800F7C6:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0800F7CC: .4byte gDungeonPokemonSprites
thumb_func_end sub_800F794
thumb_func_start sub_800F7D0
sub_800F7D0:
push {r4-r7,lr}
mov r7, r8
push {r7}
mov r8, r0
ldr r0, _0800F800
ldr r0, [r0]
cmp r0, 0
beq _0800F8C0
ldr r1, [r0]
adds r0, r1, 0
cmp r1, 0
bge _0800F7EA
adds r0, r1, 0x3
_0800F7EA:
asrs r0, 2
lsls r0, 2
subs r0, r1, r0
cmp r0, 0x1
beq _0800F82A
cmp r0, 0x1
bgt _0800F804
cmp r0, 0
beq _0800F80E
b _0800F888
.align 2, 0
_0800F800: .4byte gDungeonPokemonSprites
_0800F804:
cmp r0, 0x2
beq _0800F846
cmp r0, 0x3
beq _0800F868
b _0800F888
_0800F80E:
movs r0, 0x1
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x2
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x3
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x4
b _0800F860
_0800F82A:
movs r0, 0x5
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x6
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x7
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x8
b _0800F860
_0800F846:
movs r0, 0x9
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xA
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xB
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xC
_0800F860:
movs r1, 0x1
bl LoadStatusGraphics
b _0800F888
_0800F868:
movs r0, 0xD
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xE
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xF
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x10
movs r1, 0x1
bl LoadStatusGraphics
_0800F888:
movs r5, 0
movs r6, 0x4
_0800F88C:
ldr r7, _0800F8CC
ldr r4, [r7]
lsls r0, r5, 6
adds r0, r4, r0
ldrb r0, [r0, 0x4]
cmp r0, 0
beq _0800F8B0
adds r4, r6
adds r0, r4, 0
movs r1, 0
mov r2, r8
bl sub_800F2EC
adds r0, r4, 0
movs r1, 0x1
mov r2, r8
bl sub_800F2EC
_0800F8B0:
adds r6, 0x40
adds r5, 0x1
cmp r5, 0x15
ble _0800F88C
ldr r1, [r7]
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_0800F8C0:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800F8CC: .4byte gDungeonPokemonSprites
thumb_func_end sub_800F7D0
thumb_func_start AddPokemonDungeonSprite
@ void AddPokemonDungeonSprite(int id, short species, struct Position *pos, ?)
AddPokemonDungeonSprite:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r5, r0, 0
adds r7, r2, 0
mov r8, r3
lsls r1, 16
asrs r6, r1, 16
ldr r0, _0800F92C
ldr r0, [r0]
cmp r0, 0
beq _0800F920
adds r0, r5, 0
bl GetDungeonPokemonSprite
adds r4, r0, 0
cmp r4, 0
bne _0800F920
bl NewDungeonPokemonSprite
adds r1, r0, 0
cmp r1, 0
beq _0800F920
movs r0, 0x1
strb r0, [r1]
str r5, [r1, 0x4]
strh r6, [r1, 0x8]
str r4, [r1, 0xC]
ldr r0, [r7]
str r0, [r1, 0x14]
mov r0, r8
strb r0, [r1, 0x11]
ldr r0, _0800F930
ldr r0, [r0]
str r0, [r1, 0x1C]
str r0, [r1, 0x18]
str r4, [r1, 0x28]
str r4, [r1, 0x2C]
str r4, [r1, 0x30]
str r4, [r1, 0x34]
_0800F920:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800F92C: .4byte gDungeonPokemonSprites
_0800F930: .4byte gUnknown_80D3564
thumb_func_end AddPokemonDungeonSprite
thumb_func_start DeletePokemonDungeonSprite
@ void DeletePokemonDungeonSprite(int id)
DeletePokemonDungeonSprite:
push {lr}
adds r1, r0, 0
ldr r0, _0800F954
ldr r0, [r0]
cmp r0, 0
beq _0800F950
adds r0, r1, 0
bl GetDungeonPokemonSprite
cmp r0, 0
beq _0800F950
movs r1, 0x40
bl MemoryClear8
_0800F950:
pop {r0}
bx r0
.align 2, 0
_0800F954: .4byte gDungeonPokemonSprites
thumb_func_end DeletePokemonDungeonSprite
thumb_func_start sub_800F958
sub_800F958:
push {r4-r7,lr}
adds r4, r0, 0
adds r6, r1, 0
adds r5, r2, 0
adds r7, r3, 0
ldr r0, _0800F98C
ldr r0, [r0]
cmp r0, 0
beq _0800F984
adds r0, r4, 0
bl GetDungeonPokemonSprite
adds r3, r0, 0
cmp r3, 0
beq _0800F984
ldr r0, [r6]
str r0, [r3, 0x14]
strb r7, [r3, 0x11]
ldr r0, [r5]
str r0, [r3, 0x18]
ldr r0, [r5, 0xC]
str r0, [r3, 0x1C]
_0800F984:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800F98C: .4byte gDungeonPokemonSprites
thumb_func_end sub_800F958
thumb_func_start sub_800F990
sub_800F990:
push {r4-r7,lr}
sub sp, 0x8
adds r6, r0, 0
ldr r4, _0800FA20
ldr r0, [r6, 0x8]
str r0, [r4]
ldr r1, _0800FA24
ldr r2, _0800FA28
adds r0, r2, 0
strh r0, [r1]
movs r0, 0
movs r1, 0x14
bl sub_80095CC
movs r0, 0x2
bl xxx_update_some_bg_tiles
ldr r1, [r4]
ldr r0, _0800FA2C
adds r2, r1, r0
ldr r0, _0800FA30
str r0, [r2]
ldrb r0, [r6, 0x5]
ldr r2, _0800FA34
adds r1, r2
movs r5, 0
strb r0, [r1]
bl sub_8010DA4
ldr r0, [r4]
ldr r2, _0800FA38
adds r1, r0, r2
movs r2, 0x1
negs r2, r2
str r2, [r1]
ldr r1, _0800FA3C
adds r0, r1
str r2, [r0]
ldrb r0, [r6, 0x4]
bl sub_800FC5C
ldr r0, [r4]
ldr r2, _0800FA40
adds r1, r0, r2
adds r2, 0x4
adds r0, r2
ldr r0, [r0]
str r0, [r1]
ldr r1, _0800FA44
movs r0, 0xFF
strb r0, [r1]
ldr r0, _0800FA48
strb r5, [r0]
bl sub_8011760
add r7, sp, 0x4
_0800FA00:
movs r5, 0
str r5, [sp]
str r5, [sp, 0x4]
mov r0, sp
adds r1, r7, 0
bl sub_800FAA8
cmp r0, 0x1
bne _0800FA4C
ldr r0, [sp]
ldr r1, [sp, 0x4]
movs r2, 0x32
bl sub_80100C0
b _0800FA00
.align 2, 0
_0800FA20: .4byte gUnknown_203B0E4
_0800FA24: .4byte gUnknown_2026E4E
_0800FA28: .4byte 0x00001010
_0800FA2C: .4byte 0x00004014
_0800FA30: .4byte gFriendAreaLocations
_0800FA34: .4byte 0x00004a2c
_0800FA38: .4byte 0x00004a28
_0800FA3C: .4byte 0x00004a1c
_0800FA40: .4byte 0x00004a20
_0800FA44: .4byte gUnknown_202DE18
_0800FA48: .4byte gUnknown_202DE19
_0800FA4C:
cmp r0, 0x2
bne _0800FA6C
bl sub_800FB6C
lsls r0, 24
cmp r0, 0
beq _0800FA00
ldr r0, [r4]
ldr r1, _0800FA68
adds r0, r1
ldrb r0, [r0]
strb r0, [r6, 0xC]
b _0800FA92
.align 2, 0
_0800FA68: .4byte 0x00004df4
_0800FA6C:
cmp r0, 0x3
bne _0800FA00
ldr r0, [r4]
ldr r2, _0800FA8C
adds r1, r0, r2
adds r2, 0x8
adds r0, r2
ldr r1, [r1]
ldr r0, [r0]
cmp r1, r0
beq _0800FA90
movs r1, 0
movs r2, 0xA
bl sub_80100C0
b _0800FA00
.align 2, 0
_0800FA8C: .4byte 0x00004a18
_0800FA90:
strb r5, [r6, 0xC]
_0800FA92:
bl sub_800FC28
bl sub_8010EF0
bl nullsub_16
add sp, 0x8
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_800F990
thumb_func_start sub_800FAA8
sub_800FAA8:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
mov r8, r0
mov r9, r1
movs r5, 0
bl sub_8011300
bl sub_8011398
_0800FABE:
bl sub_801169C
bl sub_8010014
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0xFF
beq _0800FB1C
ldr r6, _0800FB50
ldr r2, [r6]
ldr r1, _0800FB54
adds r0, r2, r1
ldr r4, [r0]
lsls r0, r4, 2
adds r0, r4
lsls r0, 4
adds r0, r2
lsls r1, r3, 1
ldr r7, _0800FB58
adds r0, r7
adds r1, r0, r1
movs r7, 0
ldrsh r0, [r1, r7]
cmp r0, 0
blt _0800FB1C
adds r1, r0, 0
lsls r0, r1, 2
adds r0, r1
lsls r0, 4
ldr r7, _0800FB5C
adds r0, r7
adds r0, r2, r0
ldrb r0, [r0]
cmp r0, 0
beq _0800FB1C
movs r5, 0x1
mov r0, r8
str r1, [r0]
mov r1, r9
str r3, [r1]
ldr r1, [r6]
ldr r2, _0800FB60
adds r0, r1, r2
str r3, [r0]
ldr r7, _0800FB64
adds r1, r7
str r4, [r1]
_0800FB1C:
ldr r4, _0800FB68
ldrh r1, [r4, 0x2]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0800FB2E
bl sub_80117D0
movs r5, 0x2
_0800FB2E:
ldrh r1, [r4, 0x2]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _0800FB3E
bl sub_80117E4
movs r5, 0x3
_0800FB3E:
cmp r5, 0
beq _0800FABE
adds r0, r5, 0
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0800FB50: .4byte gUnknown_203B0E4
_0800FB54: .4byte 0x00004a18
_0800FB58: .4byte 0x0000401a
_0800FB5C: .4byte 0x00004018
_0800FB60: .4byte 0x00004a28
_0800FB64: .4byte 0x00004a1c
_0800FB68: .4byte gRealInputs
thumb_func_end sub_800FAA8
thumb_func_start sub_800FB6C
sub_800FB6C:
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r0, 0
mov r8, r0
bl sub_8011494
ldr r7, _0800FBE8
ldr r6, _0800FBEC
_0800FB7E:
ldr r5, [r7]
ldr r1, _0800FBF0
adds r4, r5, r1
adds r0, r4, 0
bl AddMenuCursorSprite
bl sub_801169C
ldrh r1, [r6, 0x4]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0800FBA2
adds r0, r4, 0
bl MoveMenuCursorDown
bl sub_80117F8
_0800FBA2:
ldrh r1, [r6, 0x4]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _0800FBB6
adds r0, r4, 0
bl MoveMenuCursorUp
bl sub_80117F8
_0800FBB6:
ldrh r1, [r6, 0x2]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0800FBCA
ldr r2, _0800FBF4
adds r0, r5, r2
ldrb r0, [r0]
cmp r0, 0
beq _0800FC00
_0800FBCA:
bl sub_80117D0
ldr r1, [r7]
movs r3, 0x18
ldrsh r2, [r4, r3]
ldr r3, _0800FBF8
adds r0, r1, r3
adds r0, r2
ldrb r0, [r0]
ldr r2, _0800FBFC
adds r1, r2
strb r0, [r1]
movs r3, 0x1
mov r8, r3
b _0800FC16
.align 2, 0
_0800FBE8: .4byte gUnknown_203B0E4
_0800FBEC: .4byte gRealInputs
_0800FBF0: .4byte 0x00004dfc
_0800FBF4: .4byte 0x00004e25
_0800FBF8: .4byte 0x00004dec
_0800FBFC: .4byte 0x00004df4
_0800FC00:
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _0800FC12
ldr r1, _0800FC24
adds r0, r5, r1
ldrb r0, [r0]
cmp r0, 0
beq _0800FB7E
_0800FC12:
bl sub_80117E4
_0800FC16:
mov r0, r8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0800FC24: .4byte 0x00004e26
thumb_func_end sub_800FB6C
thumb_func_start sub_800FC28
sub_800FC28:
push {r4,r5,lr}
bl sub_8011168
bl sub_80117AC
ldr r5, _0800FC54
movs r4, 0x3B
_0800FC36:
ldr r1, [r5]
ldr r0, _0800FC58
adds r1, r0
ldr r0, [r1]
subs r0, 0x2
str r0, [r1]
bl sub_801169C
subs r4, 0x1
cmp r4, 0
bge _0800FC36
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0800FC54: .4byte gUnknown_203B0E4
_0800FC58: .4byte 0x00004dcc
thumb_func_end sub_800FC28
thumb_func_start sub_800FC5C
sub_800FC5C:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x40
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x14]
movs r0, 0
str r0, [sp, 0x18]
mov r8, r0
ldr r1, _0800FD1C
mov r9, r1
ldr r2, _0800FD20
str r2, [sp, 0x38]
_0800FC7C:
movs r7, 0
movs r3, 0
mov r10, r3
mov r4, r9
ldr r0, [r4]
ldr r1, [sp, 0x38]
adds r6, r0, r1
ldr r2, _0800FD24
adds r0, r2
mov r3, r8
lsls r1, r3, 5
ldr r0, [r0]
adds r2, r0, r1
adds r1, r6, 0x2
movs r5, 0x7
_0800FC9A:
ldrh r0, [r1]
ldr r4, _0800FD28
orrs r0, r4
strh r0, [r1]
adds r1, 0x2
subs r5, 0x1
cmp r5, 0
bge _0800FC9A
movs r5, 0
adds r1, r2, 0
adds r1, 0x8
_0800FCB0:
adds r4, r1, r5
ldrb r0, [r4]
str r1, [sp, 0x3C]
bl sub_800FFE8
lsls r0, 24
ldr r1, [sp, 0x3C]
cmp r0, 0
beq _0800FCE4
ldrb r0, [r4]
ldr r7, [sp, 0x14]
cmp r0, r7
bne _0800FCCE
mov r2, r8
str r2, [sp, 0x18]
_0800FCCE:
cmp r0, 0
bne _0800FCE2
mov r3, r9
ldr r0, [r3]
ldr r4, _0800FD2C
adds r0, r4
mov r7, r8
str r7, [r0]
movs r0, 0x1
mov r10, r0
_0800FCE2:
movs r7, 0x1
_0800FCE4:
adds r5, 0x1
cmp r5, 0x7
ble _0800FCB0
cmp r7, 0
beq _0800FD30
movs r5, 0
movs r4, 0x1
strb r4, [r6]
adds r3, r6, 0
adds r3, 0x14
mov r1, r9
ldr r0, [r1]
ldr r1, [r0, 0x8]
movs r2, 0x1
mov r7, r10
cmp r7, 0
beq _0800FD08
movs r2, 0xC
_0800FD08:
movs r0, 0x40
str r0, [sp]
str r5, [sp, 0x4]
str r4, [sp, 0x8]
adds r0, r3, 0
movs r3, 0
bl sub_80053AC
b _0800FD32
.align 2, 0
_0800FD1C: .4byte gUnknown_203B0E4
_0800FD20: .4byte 0x00004018
_0800FD24: .4byte 0x00004014
_0800FD28: .4byte 0x0000ffff
_0800FD2C: .4byte 0x00004a24
_0800FD30:
strb r7, [r6]
_0800FD32:
ldr r0, [sp, 0x38]
adds r0, 0x50
str r0, [sp, 0x38]
movs r1, 0x1
add r8, r1
mov r2, r8
cmp r2, 0x1F
ble _0800FC7C
movs r3, 0
mov r8, r3
ldr r4, [sp, 0x18]
lsls r4, 5
str r4, [sp, 0x34]
_0800FD4C:
mov r7, r8
lsls r0, r7, 2
add r0, r8
lsls r0, 4
ldr r1, _0800FEDC
adds r0, r1
ldr r2, _0800FEE0
ldr r1, [r2]
adds r3, r1, r0
ldr r4, _0800FEE4
adds r1, r4
lsls r2, r7, 5
ldr r0, [r1]
adds r0, r2
str r0, [sp, 0x1C]
ldrb r0, [r3]
adds r7, 0x1
str r7, [sp, 0x28]
cmp r0, 0
bne _0800FD76
b _0800FF56
_0800FD76:
movs r5, 0
adds r3, 0x2
mov r10, r3
ldr r4, [sp, 0x1C]
adds r4, 0x10
ldr r6, _0800FEE0
_0800FD82:
lsls r0, r5, 1
mov r1, r10
adds r2, r1, r0
ldr r1, _0800FEE8
strh r1, [r2]
adds r1, r4, r0
ldrh r3, [r1]
movs r7, 0
ldrsh r0, [r1, r7]
cmp r0, 0
blt _0800FDB0
adds r1, r0, 0
lsls r0, r1, 2
adds r0, r1
lsls r0, 4
ldr r1, _0800FEDC
adds r0, r1
ldr r1, [r6]
adds r1, r0
ldrb r0, [r1]
cmp r0, 0
beq _0800FDB0
strh r3, [r2]
_0800FDB0:
adds r5, 0x1
cmp r5, 0x7
ble _0800FD82
ldr r3, _0800FEE0
ldr r2, [r3]
ldr r4, _0800FEEC
adds r0, r2, r4
ldr r1, [r0]
ldr r7, _0800FEF0
adds r0, r2, r7
ldr r3, [r0]
cmp r1, 0
blt _0800FDEC
cmp r3, 0
blt _0800FDEC
lsls r0, r3, 2
adds r0, r3
lsls r0, 4
ldr r4, _0800FEDC
adds r0, r4
adds r0, r2, r0
ldrb r0, [r0]
cmp r0, 0
beq _0800FDEC
adds r1, 0x4
movs r0, 0x7
ands r1, r0
lsls r0, r1, 1
add r0, r10
strh r3, [r0]
_0800FDEC:
movs r5, 0
_0800FDEE:
movs r7, 0x1
negs r7, r7
str r7, [sp, 0x20]
ldr r0, _0800FEF4
str r0, [sp, 0x24]
lsls r0, r5, 1
mov r2, r10
adds r1, r2, r0
movs r3, 0
ldrsh r1, [r1, r3]
str r0, [sp, 0x30]
adds r4, r5, 0x1
str r4, [sp, 0x2C]
cmp r1, 0
blt _0800FE0E
b _0800FF4E
_0800FE0E:
movs r6, 0
_0800FE10:
lsls r0, r6, 2
adds r0, r6
lsls r0, 4
ldr r7, _0800FEDC
adds r0, r7
ldr r2, _0800FEE0
ldr r1, [r2]
adds r3, r1, r0
ldr r4, _0800FEE4
adds r1, r4
lsls r2, r6, 5
ldr r0, [r1]
adds r2, r0, r2
adds r7, r6, 0x1
mov r9, r7
cmp r6, r8
bne _0800FE34
b _0800FF3A
_0800FE34:
ldrb r0, [r3]
cmp r0, 0
bne _0800FE3C
b _0800FF3A
_0800FE3C:
movs r1, 0x4
ldrsh r0, [r2, r1]
ldr r3, [sp, 0x1C]
movs r4, 0x4
ldrsh r1, [r3, r4]
subs r0, r1
lsls r0, 8
str r0, [sp, 0xC]
movs r7, 0x6
ldrsh r0, [r2, r7]
movs r2, 0x6
ldrsh r1, [r3, r2]
subs r0, r1
lsls r0, 8
str r0, [sp, 0x10]
add r0, sp, 0xC
bl sub_800A0B0
adds r2, r0, 0
ldr r0, [sp, 0xC]
cmp r0, 0
bge _0800FE6A
adds r0, 0x3
_0800FE6A:
asrs r1, r0, 2
str r1, [sp, 0xC]
ldr r0, [sp, 0x10]
cmp r0, 0
bge _0800FE76
adds r0, 0x3
_0800FE76:
asrs r0, 2
str r0, [sp, 0x10]
cmp r1, 0
bge _0800FE80
adds r1, 0xFF
_0800FE80:
asrs r1, 8
str r1, [sp, 0xC]
cmp r0, 0
bge _0800FE8A
adds r0, 0xFF
_0800FE8A:
asrs r0, 8
str r0, [sp, 0x10]
cmp r1, 0
bne _0800FE96
movs r0, 0x1
str r0, [sp, 0xC]
_0800FE96:
ldr r0, [sp, 0x10]
cmp r0, 0
bne _0800FEA0
movs r0, 0x1
str r0, [sp, 0x10]
_0800FEA0:
movs r7, 0
cmp r5, 0x2
bne _0800FF04
ldr r1, _0800FEF8
ldr r4, _0800FEFC
movs r3, 0x8
cmp r2, r1
ble _0800FEB8
ldr r0, _0800FF00
_0800FEB2:
adds r2, r0
cmp r2, r1
bgt _0800FEB2
_0800FEB8:
cmp r2, 0
bge _0800FEC6
movs r0, 0x80
lsls r0, 5
_0800FEC0:
adds r2, r0
cmp r2, 0
blt _0800FEC0
_0800FEC6:
adds r1, r3, r4
movs r3, 0
ldrsh r0, [r1, r3]
cmp r0, r2
blt _0800FF20
movs r4, 0x2
ldrsh r0, [r1, r4]
cmp r0, r2
ble _0800FF1C
b _0800FF20
.align 2, 0
_0800FEDC: .4byte 0x00004018
_0800FEE0: .4byte gUnknown_203B0E4
_0800FEE4: .4byte 0x00004014
_0800FEE8: .4byte 0x0000ffff
_0800FEEC: .4byte 0x00004a28
_0800FEF0: .4byte 0x00004a1c
_0800FEF4: .4byte 0x000f423f
_0800FEF8: .4byte 0x00000fff
_0800FEFC: .4byte gUnknown_80D3EBC
_0800FF00: .4byte 0xfffff000
_0800FF04:
ldr r0, _0800FFC8
lsls r1, r5, 2
adds r1, r0
movs r3, 0
ldrsh r0, [r1, r3]
cmp r0, r2
bgt _0800FF1C
movs r4, 0x2
ldrsh r0, [r1, r4]
cmp r0, r2
ble _0800FF1C
movs r7, 0x1
_0800FF1C:
cmp r7, 0
beq _0800FF3A
_0800FF20:
ldr r0, [sp, 0xC]
adds r1, r0, 0
muls r1, r0
ldr r0, [sp, 0x10]
adds r7, r0, 0
muls r7, r0
adds r0, r7, 0
adds r1, r0
ldr r0, [sp, 0x24]
cmp r0, r1
ble _0800FF3A
str r1, [sp, 0x24]
str r6, [sp, 0x20]
_0800FF3A:
mov r6, r9
cmp r6, 0x1F
bgt _0800FF42
b _0800FE10
_0800FF42:
ldr r1, [sp, 0x20]
cmp r1, 0
blt _0800FF4E
ldr r0, [sp, 0x30]
add r0, r10
strh r1, [r0]
_0800FF4E:
ldr r5, [sp, 0x2C]
cmp r5, 0x7
bgt _0800FF56
b _0800FDEE
_0800FF56:
ldr r3, [sp, 0x28]
mov r8, r3
cmp r3, 0x1F
bgt _0800FF60
b _0800FD4C
_0800FF60:
ldr r4, _0800FFCC
ldr r1, [r4]
ldr r7, _0800FFD0
adds r0, r1, r7
ldr r1, [r1, 0xC]
movs r2, 0
str r2, [sp]
str r2, [sp, 0x4]
movs r2, 0x1
str r2, [sp, 0x8]
movs r2, 0
movs r3, 0
bl sub_80053AC
ldr r2, [r4]
ldr r1, _0800FFD4
adds r0, r2, r1
ldr r3, [sp, 0x18]
str r3, [r0]
ldr r4, _0800FFD8
adds r1, r2, r4
ldr r7, _0800FFDC
adds r0, r2, r7
ldr r0, [r0]
ldr r3, [sp, 0x34]
adds r0, r3, r0
ldr r0, [r0, 0x4]
str r0, [r1]
ldrh r0, [r1]
subs r0, 0x78
subs r4, 0x4
adds r1, r2, r4
strh r0, [r1]
ldr r7, _0800FFE0
adds r0, r2, r7
ldrh r0, [r0]
subs r0, 0x50
ldr r1, _0800FFE4
adds r2, r1
strh r0, [r2]
bl sub_8011240
bl sub_80110B0
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
_0800FFC8: .4byte gUnknown_80D3EBC
_0800FFCC: .4byte gUnknown_203B0E4
_0800FFD0: .4byte 0x00004c10
_0800FFD4: .4byte 0x00004a18
_0800FFD8: .4byte 0x00004dd8
_0800FFDC: .4byte 0x00004014
_0800FFE0: .4byte 0x00004dda
_0800FFE4: .4byte 0x00004dd6
thumb_func_end sub_800FC5C
thumb_func_start sub_800FFE8
sub_800FFE8:
push {lr}
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
cmp r0, 0x39
bhi _08010004
cmp r0, 0
beq _0801000C
ldr r0, _08010008
ldr r0, [r0]
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _0801000C
_08010004:
movs r0, 0
b _0801000E
.align 2, 0
_08010008: .4byte gFriendAreas
_0801000C:
movs r0, 0x1
_0801000E:
pop {r1}
bx r1
thumb_func_end sub_800FFE8
thumb_func_start sub_8010014
sub_8010014:
push {r4,r5,lr}
sub sp, 0x20
ldr r1, _08010094
mov r0, sp
movs r2, 0x10
bl memcpy
add r4, sp, 0x10
ldr r1, _08010098
adds r0, r4, 0
movs r2, 0x10
bl memcpy
movs r2, 0
ldr r0, _0801009C
ldrh r3, [r0]
movs r0, 0x80
lsls r0, 1
ands r0, r3
mov r5, sp
cmp r0, 0
beq _08010042
adds r5, r4, 0
_08010042:
adds r1, r3, 0
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0801004E
movs r2, 0x1
_0801004E:
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0801005A
movs r0, 0x2
orrs r2, r0
_0801005A:
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _08010066
movs r0, 0x4
orrs r2, r0
_08010066:
movs r0, 0x20
ands r0, r3
cmp r0, 0
beq _08010072
movs r0, 0x8
orrs r2, r0
_08010072:
ldr r3, _080100A0
adds r2, r5, r2
ldrb r1, [r2]
ldrb r0, [r3]
cmp r0, r1
bne _080100A8
ldr r1, _080100A4
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
bls _080100B0
ldrb r0, [r2]
b _080100B2
.align 2, 0
_08010094: .4byte gUnknown_80D3EDC
_08010098: .4byte gUnknown_80D3EEC
_0801009C: .4byte gRealInputs
_080100A0: .4byte gUnknown_202DE18
_080100A4: .4byte gUnknown_202DE19
_080100A8:
strb r1, [r3]
ldr r1, _080100BC
movs r0, 0
strb r0, [r1]
_080100B0:
movs r0, 0xFF
_080100B2:
add sp, 0x20
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080100BC: .4byte gUnknown_202DE19
thumb_func_end sub_8010014
thumb_func_start sub_80100C0
sub_80100C0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x18
str r0, [sp, 0xC]
mov r8, r2
ldr r4, _080101E0
ldr r2, [r4]
ldr r3, _080101E4
adds r0, r2, r3
ldr r2, [r2, 0xC]
movs r3, 0x7
ands r3, r1
movs r1, 0
str r1, [sp]
str r1, [sp, 0x4]
movs r1, 0x1
str r1, [sp, 0x8]
adds r1, r2, 0
movs r2, 0
bl sub_80053AC
bl sub_8011168
ldr r0, [r4]
ldr r2, _080101E8
adds r1, r0, r2
ldr r1, [r1]
ldr r3, _080101EC
adds r0, r3
ldr r2, [r0]
lsls r1, 5
adds r1, r2
ldr r1, [r1, 0x4]
mov r9, r1
ldr r1, [sp, 0xC]
lsls r0, r1, 5
adds r0, r2
ldr r0, [r0, 0x4]
str r0, [sp, 0x10]
bl sub_80117F8
movs r7, 0
cmp r7, r8
bge _0801018A
ldr r2, [sp, 0x10]
lsls r1, r2, 16
asrs r1, 16
mov r3, r9
lsls r0, r3, 16
asrs r0, 16
subs r1, r0
str r1, [sp, 0x14]
movs r0, 0
mov r10, r0
_08010132:
ldr r0, _080101E0
ldr r6, [r0]
lsls r5, r7, 8
mov r0, r10
mov r1, r8
bl __divsi3
cmp r0, 0
bge _08010146
adds r0, 0xFF
_08010146:
asrs r0, 8
add r0, r9
ldr r2, _080101F0
adds r1, r6, r2
strh r0, [r1]
ldr r3, [sp, 0x10]
asrs r0, r3, 16
mov r1, r9
asrs r4, r1, 16
subs r0, r4
muls r0, r5
mov r1, r8
bl __divsi3
cmp r0, 0
bge _08010168
adds r0, 0xFF
_08010168:
asrs r0, 8
adds r0, r4
ldr r2, _080101F4
adds r1, r6, r2
strh r0, [r1]
bl sub_8011240
bl sub_80110B0
bl sub_801169C
ldr r3, [sp, 0x14]
lsls r0, r3, 8
add r10, r0
adds r7, 0x1
cmp r7, r8
blt _08010132
_0801018A:
ldr r4, _080101E0
ldr r0, [r4]
ldr r2, _080101E8
adds r1, r0, r2
ldr r3, [sp, 0xC]
str r3, [r1]
ldr r1, _080101F0
adds r2, r0, r1
ldr r3, _080101EC
adds r0, r3
ldr r1, [r0]
ldr r3, [sp, 0xC]
lsls r0, r3, 5
adds r0, r1
ldr r0, [r0, 0x4]
str r0, [r2]
bl sub_8011240
bl sub_80110B0
bl sub_801169C
ldr r1, [r4]
ldr r2, _080101E4
adds r0, r1, r2
ldr r1, [r1, 0xC]
movs r2, 0
str r2, [sp]
str r2, [sp, 0x4]
movs r2, 0x1
str r2, [sp, 0x8]
movs r2, 0
movs r3, 0
bl sub_80053AC
add sp, 0x18
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080101E0: .4byte gUnknown_203B0E4
_080101E4: .4byte 0x00004c10
_080101E8: .4byte 0x00004a18
_080101EC: .4byte 0x00004014
_080101F0: .4byte 0x00004dd8
_080101F4: .4byte 0x00004dda
thumb_func_end sub_80100C0
thumb_func_start sub_80101F8
sub_80101F8:
push {lr}
adds r3, r0, 0
lsls r1, 24
lsrs r1, 24
cmp r1, 0
bne _08010218
ldr r0, _08010214
adds r2, r3, 0
adds r2, 0x50
adds r1, r3, 0
movs r3, 0
bl xxx_format_string
b _08010220
.align 2, 0
_08010214: .4byte gUnknown_80D3EFC
_08010218:
adds r0, r3, 0
movs r2, 0
bl sub_8092578
_08010220:
pop {r0}
bx r0
thumb_func_end sub_80101F8
thumb_func_start sub_8010224
sub_8010224:
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r7, 0
ldr r0, _08010248
adds r4, r0, 0x4
adds r5, r0, 0
adds r5, 0x8
_08010234:
movs r2, 0
adds r3, r5, 0
_08010238:
adds r0, r3, r2
ldrb r0, [r0]
cmp r0, r6
bne _0801024C
ldrh r0, [r4]
strh r0, [r1]
ldrh r0, [r4, 0x2]
b _08010260
.align 2, 0
_08010248: .4byte gFriendAreaLocations
_0801024C:
adds r2, 0x1
cmp r2, 0x7
ble _08010238
adds r4, 0x20
adds r5, 0x20
adds r7, 0x1
cmp r7, 0x1F
ble _08010234
movs r0, 0
strh r0, [r1]
_08010260:
strh r0, [r1, 0x2]
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8010224
thumb_func_start sub_8010268
sub_8010268:
push {r4-r6,lr}
ldr r4, _080102D4
add sp, r4
adds r5, r0, 0
ldr r1, _080102D8
adds r0, 0xB0
ldr r0, [r0]
str r0, [r1]
ldr r1, _080102DC
ldr r2, _080102E0
adds r0, r2, 0
strh r0, [r1]
movs r0, 0
movs r1, 0x14
bl sub_80095CC
movs r0, 0x2
bl xxx_update_some_bg_tiles
bl sub_801059C
adds r0, r5, 0x4
bl sub_8010494
bl sub_801178C
movs r4, 0x3B
_0801029E:
bl sub_8010960
subs r4, 0x1
cmp r4, 0
bge _0801029E
ldrb r0, [r5, 0x4]
ldrb r1, [r5, 0x8]
bl sub_8010344
adds r0, r5, 0
adds r0, 0x8
bl sub_8010B74
adds r6, r5, 0
adds r6, 0x70
movs r4, 0x3B
_080102BE:
bl sub_8010960
subs r4, 0x1
cmp r4, 0
bge _080102BE
ldrb r0, [r5, 0x14]
cmp r0, 0
beq _080102E4
movs r0, 0x20
ldrsh r1, [r5, r0]
b _080102E6
.align 2, 0
_080102D4: .4byte 0xfffffc14
_080102D8: .4byte gUnknown_203B0E8
_080102DC: .4byte gUnknown_2026E4E
_080102E0: .4byte 0x00000a06
_080102E4:
movs r1, 0
_080102E6:
ldrb r0, [r5, 0x8]
ldrb r3, [r6]
movs r4, 0
str r4, [sp]
add r2, sp, 0x4
bl sub_809034C
cmp r0, 0
beq _0801031C
cmp r0, 0x1
bne _0801030A
add r0, sp, 0x4
bl sub_8010C10
adds r0, r5, 0
adds r0, 0xB4
strb r4, [r0]
b _0801032C
_0801030A:
cmp r0, 0x2
bne _0801032C
add r0, sp, 0x4
bl sub_8010C58
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _08010326
_0801031C:
adds r1, r5, 0
adds r1, 0xB4
movs r0, 0x1
strb r0, [r1]
b _0801032C
_08010326:
adds r0, r5, 0
adds r0, 0xB4
strb r1, [r0]
_0801032C:
bl sub_801091C
bl sub_801073C
bl nullsub_16
movs r3, 0xFB
lsls r3, 2
add sp, r3
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8010268
thumb_func_start sub_8010344
sub_8010344:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1C
lsls r0, 24
lsls r1, 24
ldr r2, _08010470
lsrs r0, 22
adds r0, r2
lsrs r1, 22
adds r1, r2
ldr r2, [r1]
str r2, [sp, 0x14]
movs r3, 0
ldrsh r5, [r1, r3]
ldr r1, [r0]
mov r9, r1
movs r2, 0
ldrsh r6, [r0, r2]
subs r2, r5, r6
cmp r2, 0
bge _08010376
negs r2, r2
_08010376:
ldr r3, [sp, 0x14]
asrs r0, r3, 16
mov r3, r9
asrs r1, r3, 16
subs r4, r0, r1
adds r3, r4, 0
str r0, [sp, 0x18]
mov r8, r1
cmp r4, 0
bge _0801038C
negs r4, r4
_0801038C:
cmp r4, r2
bge _08010392
adds r4, r2, 0
_08010392:
lsrs r0, r4, 31
adds r0, r4, r0
asrs r4, r0, 1
subs r0, r6, r5
str r0, [sp, 0xC]
str r3, [sp, 0x10]
add r0, sp, 0xC
bl sub_800A0B0
ldr r1, _08010474
adds r3, r0, r1
cmp r3, 0
bge _080103B0
ldr r2, _08010478
adds r3, r0, r2
_080103B0:
asrs r3, 9
movs r0, 0x7
ands r3, r0
ldr r0, _0801047C
ldr r1, [r0]
ldr r2, _08010480
adds r0, r1, r2
ldr r2, _08010484
adds r1, r2
ldr r1, [r1]
movs r2, 0
str r2, [sp]
str r2, [sp, 0x4]
movs r2, 0x1
str r2, [sp, 0x8]
movs r2, 0
bl sub_80053AC
movs r7, 0
cmp r7, r4
bge _08010448
mov r10, r5
_080103DC:
ldr r0, _0801047C
ldr r6, [r0]
mov r3, r9
lsls r0, r3, 16
asrs r0, 16
mov r1, r10
subs r0, r1, r0
lsls r5, r7, 8
muls r0, r5
adds r1, r4, 0
bl __divsi3
cmp r0, 0
bge _080103FA
adds r0, 0xFF
_080103FA:
asrs r0, 8
add r0, r9
ldr r2, _08010488
adds r1, r6, r2
strh r0, [r1]
ldr r3, [sp, 0x18]
mov r1, r8
subs r0, r3, r1
muls r0, r5
adds r1, r4, 0
bl __divsi3
cmp r0, 0
bge _08010418
adds r0, 0xFF
_08010418:
asrs r0, 8
add r0, r8
ldr r2, _0801048C
adds r1, r6, r2
strh r0, [r1]
bl sub_8010798
bl sub_8010858
bl sub_8010960
ldr r0, _08010490
ldrh r1, [r0, 0x2]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _08010448
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _08010448
adds r7, 0x1
cmp r7, r4
blt _080103DC
_08010448:
ldr r0, _0801047C
ldr r0, [r0]
ldr r3, _08010488
adds r0, r3
ldr r1, [sp, 0x14]
str r1, [r0]
bl sub_8010798
bl sub_8010858
bl sub_8010960
add sp, 0x1C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08010470: .4byte gDungeonCoordinates
_08010474: .4byte 0xfffffc00
_08010478: .4byte 0xfffffdff
_0801047C: .4byte gUnknown_203B0E8
_08010480: .4byte 0x00005114
_08010484: .4byte 0x0000110c
_08010488: .4byte 0x000052dc
_0801048C: .4byte 0x000052de
_08010490: .4byte gRealInputs
thumb_func_end sub_8010344
thumb_func_start sub_8010494
sub_8010494:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
mov r9, r0
movs r5, 0
ldr r0, _080104C0
mov r10, r0
mov r8, r5
_080104AA:
mov r1, r10
ldr r0, [r1]
mov r3, r8
adds r4, r0, r3
cmp r5, 0x3E
bgt _080104C4
mov r0, r9
adds r0, 0x6D
adds r0, r5
ldrb r0, [r0]
b _080104C6
.align 2, 0
_080104C0: .4byte gUnknown_203B0E8
_080104C4:
movs r0, 0x1
_080104C6:
cmp r0, 0
beq _0801050C
movs r7, 0
movs r6, 0x1
strb r6, [r4]
adds r3, r4, 0
adds r3, 0x8
mov r1, r10
ldr r0, [r1]
ldr r1, _08010504
adds r0, r1
ldr r1, [r0]
movs r2, 0x1
cmp r5, 0x3F
bne _080104E6
movs r2, 0xC
_080104E6:
movs r0, 0x40
str r0, [sp]
str r7, [sp, 0x4]
str r6, [sp, 0x8]
adds r0, r3, 0
movs r3, 0
bl sub_80053AC
ldr r1, _08010508
lsls r0, r5, 2
adds r0, r1
ldr r0, [r0]
str r0, [r4, 0x4]
b _0801050E
.align 2, 0
_08010504: .4byte 0x00001108
_08010508: .4byte gDungeonCoordinates
_0801050C:
strb r0, [r4]
_0801050E:
movs r3, 0x44
add r8, r3
adds r5, 0x1
cmp r5, 0x3F
ble _080104AA
movs r2, 0
ldr r4, _0801057C
ldr r1, [r4]
ldr r3, _08010580
adds r0, r1, r3
ldr r3, _08010584
adds r1, r3
ldr r1, [r1]
str r2, [sp]
str r2, [sp, 0x4]
movs r2, 0x1
str r2, [sp, 0x8]
movs r2, 0
movs r3, 0
bl sub_80053AC
ldr r2, [r4]
ldr r4, _08010588
adds r3, r2, r4
ldr r1, _0801058C
mov r4, r9
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
str r0, [r3]
ldrh r0, [r3]
subs r0, 0x78
ldr r3, _08010590
adds r1, r2, r3
strh r0, [r1]
ldr r4, _08010594
adds r0, r2, r4
ldrh r0, [r0]
subs r0, 0x50
ldr r1, _08010598
adds r2, r1
strh r0, [r2]
bl sub_8010798
bl sub_8010858
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801057C: .4byte gUnknown_203B0E8
_08010580: .4byte 0x00005114
_08010584: .4byte 0x0000110c
_08010588: .4byte 0x000052dc
_0801058C: .4byte gDungeonCoordinates
_08010590: .4byte 0x000052d8
_08010594: .4byte 0x000052de
_08010598: .4byte 0x000052da
thumb_func_end sub_8010494
thumb_func_start sub_801059C
sub_801059C:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
bl GetPlayerPokemonStruct
adds r7, r0, 0
ldr r6, _080106E4
ldr r0, [r6]
ldr r5, _080106E8
adds r1, r5, 0
bl OpenFileAndGetFileDataPtr
str r0, [sp, 0xC]
ldr r0, [r6, 0x4]
adds r1, r5, 0
bl OpenFileAndGetFileDataPtr
str r0, [sp, 0x10]
ldr r1, _080106EC
movs r0, 0x8
ldrsh r2, [r7, r0]
mov r0, sp
bl sprintf
ldr r1, _080106F0
mov r8, r1
mov r0, sp
bl OpenFileAndGetFileDataPtr
ldr r4, _080106F4
ldr r1, [r4]
ldr r2, _080106F8
adds r1, r2
str r0, [r1]
ldr r0, _080106FC
adds r1, r5, 0
bl OpenFileAndGetFileDataPtr
ldr r1, [r4]
ldr r3, _08010700
mov r9, r3
add r1, r9
str r0, [r1]
ldr r0, [r6, 0x8]
adds r1, r5, 0
bl OpenFileAndGetFileDataPtr
ldr r1, [r4]
ldr r2, _08010704
mov r10, r2
add r1, r10
str r0, [r1]
ldr r0, _08010708
mov r1, r8
bl OpenFileAndGetFileDataPtr
ldr r1, [r4]
ldr r3, _0801070C
adds r1, r3
str r0, [r1]
ldr r0, [r6, 0xC]
adds r1, r5, 0
bl OpenFileAndGetFileDataPtr
ldr r1, [r4]
movs r2, 0x88
lsls r2, 5
adds r1, r2
str r0, [r1]
movs r3, 0x8
ldrsh r0, [r7, r3]
movs r1, 0
bl GetPokemonOverworldPalette
ldr r1, [r4]
ldr r3, _08010710
adds r2, r1, r3
lsls r0, 24
lsrs r0, 24
str r0, [r2]
add r1, r9
ldr r0, [r1]
movs r1, 0x40
movs r2, 0x1F
movs r3, 0
bl sub_8005610
ldr r0, _08010714
movs r1, 0
ldr r2, [sp, 0xC]
bl DecompressATGlobalFile
ldr r1, [r4]
ldr r2, _08010718
adds r0, r1, r2
add r1, r10
ldr r1, [r1]
movs r2, 0x10
bl sub_8004AA4
movs r1, 0x80
lsls r1, 7
ldr r0, [r4]
ldr r3, _0801071C
adds r0, r3
ldr r2, [sp, 0x10]
bl DecompressATFile
ldr r1, [r4]
ldr r2, _08010720
adds r0, r1, r2
movs r2, 0
str r2, [r0]
ldr r3, _08010724
adds r0, r1, r3
strh r2, [r0]
ldr r0, _08010728
adds r1, r0
strh r2, [r1]
movs r3, 0
ldr r1, _0801072C
mov r9, r1
mov r8, r4
ldr r7, _08010730
ldr r2, _08010734
adds r4, r2, 0
ldr r6, _08010738
movs r5, 0
_080106A2:
mov r0, r8
ldr r2, [r0]
lsls r0, r3, 1
adds r1, r2, r7
adds r1, r0
ldrh r0, [r1]
orrs r0, r4
strh r0, [r1]
adds r2, r6
adds r2, r3
strb r5, [r2]
adds r3, 0x1
cmp r3, r9
ble _080106A2
ldr r0, [sp, 0xC]
bl CloseFile
ldr r0, [sp, 0x10]
bl CloseFile
movs r0, 0
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080106E4: .4byte gUnknown_80D4014
_080106E8: .4byte gTitleMenuFileArchive
_080106EC: .4byte gUnknown_80D405C
_080106F0: .4byte gMonsterFileArchive
_080106F4: .4byte gUnknown_203B0E8
_080106F8: .4byte 0x0000110c
_080106FC: .4byte gUnknown_80D4064
_08010700: .4byte 0x00001108
_08010704: .4byte 0x00001110
_08010708: .4byte gUnknown_80D406C
_0801070C: .4byte 0x00001104
_08010710: .4byte 0x000052d4
_08010714: .4byte 0x06008000
_08010718: .4byte 0x00005150
_0801071C: .4byte 0x00001114
_08010720: .4byte 0x000052d0
_08010724: .4byte 0x000052d8
_08010728: .4byte 0x000052da
_0801072C: .4byte 0x000005db
_08010730: .4byte 0x000052e0
_08010734: .4byte 0x0000ffff
_08010738: .4byte 0x00005e98
thumb_func_end sub_801059C
thumb_func_start sub_801073C
sub_801073C:
push {r4,lr}
ldr r4, _08010784
ldr r0, [r4]
ldr r1, _08010788
adds r0, r1
ldr r0, [r0]
bl CloseFile
ldr r0, [r4]
ldr r1, _0801078C
adds r0, r1
ldr r0, [r0]
bl CloseFile
ldr r0, [r4]
ldr r1, _08010790
adds r0, r1
ldr r0, [r0]
bl CloseFile
ldr r0, [r4]
movs r1, 0x88
lsls r1, 5
adds r0, r1
ldr r0, [r0]
bl CloseFile
ldr r0, [r4]
ldr r1, _08010794
adds r0, r1
ldr r0, [r0]
bl CloseFile
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08010784: .4byte gUnknown_203B0E8
_08010788: .4byte 0x00001110
_0801078C: .4byte 0x0000110c
_08010790: .4byte 0x00001108
_08010794: .4byte 0x00001104
thumb_func_end sub_801073C
thumb_func_start sub_8010798
sub_8010798:
push {r4-r6,lr}
ldr r2, _080107BC
ldr r0, [r2]
ldr r1, _080107C0
adds r3, r0, r1
movs r4, 0
ldrsh r1, [r3, r4]
ldr r5, _080107C4
adds r4, r0, r5
movs r6, 0
ldrsh r0, [r4, r6]
subs r1, r0
adds r5, r2, 0
cmp r1, 0x2F
bgt _080107C8
ldrh r0, [r3]
subs r0, 0x30
b _080107D0
.align 2, 0
_080107BC: .4byte gUnknown_203B0E8
_080107C0: .4byte 0x000052dc
_080107C4: .4byte 0x000052d8
_080107C8:
cmp r1, 0xC0
ble _080107D2
ldrh r0, [r3]
subs r0, 0xC0
_080107D0:
strh r0, [r4]
_080107D2:
ldr r0, [r5]
ldr r1, _080107F0
adds r3, r0, r1
movs r2, 0
ldrsh r1, [r3, r2]
ldr r4, _080107F4
adds r2, r0, r4
movs r6, 0
ldrsh r0, [r2, r6]
subs r1, r0
cmp r1, 0x2F
bgt _080107F8
ldrh r0, [r3]
subs r0, 0x30
b _08010800
.align 2, 0
_080107F0: .4byte 0x000052de
_080107F4: .4byte 0x000052da
_080107F8:
cmp r1, 0x70
ble _08010802
ldrh r0, [r3]
subs r0, 0x70
_08010800:
strh r0, [r2]
_08010802:
adds r3, r5, 0
ldr r0, [r3]
ldr r4, _08010850
adds r1, r0, r4
movs r2, 0
ldrsh r0, [r1, r2]
cmp r0, 0
bge _08010816
movs r0, 0
strh r0, [r1]
_08010816:
ldr r0, [r3]
ldr r2, _08010854
adds r1, r0, r2
movs r6, 0
ldrsh r0, [r1, r6]
cmp r0, 0
bge _08010828
movs r0, 0
strh r0, [r1]
_08010828:
ldr r0, [r3]
adds r1, r0, r4
movs r3, 0
ldrsh r0, [r1, r3]
cmp r0, 0xEF
ble _08010838
movs r0, 0xF0
strh r0, [r1]
_08010838:
ldr r0, [r5]
adds r2, r0, r2
movs r4, 0
ldrsh r0, [r2, r4]
cmp r0, 0x9F
ble _08010848
movs r0, 0xA0
strh r0, [r2]
_08010848:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08010850: .4byte 0x000052d8
_08010854: .4byte 0x000052da
thumb_func_end sub_8010798
thumb_func_start sub_8010858
sub_8010858:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
ldr r0, _080108FC
ldr r1, [r0]
ldr r2, _08010900
adds r1, r2
ldrh r1, [r1]
lsls r1, 16
asrs r6, r1, 19
adds r2, r6, 0
movs r3, 0
mov r10, r0
movs r0, 0x1F
mov r9, r0
_0801087C:
mov r1, r10
ldr r0, [r1]
ldr r1, _08010904
adds r0, r1
ldrh r0, [r0]
lsls r0, 16
asrs r4, r0, 19
lsls r1, r2, 7
adds r2, 0x1
mov r12, r2
adds r3, 0x1
mov r8, r3
movs r7, 0x1E
lsls r0, r4, 1
adds r5, r0, r1
_0801089A:
mov r2, r9
ands r4, r2
ands r6, r2
lsls r2, r4, 1
lsls r0, r6, 6
adds r2, r0
ldr r3, _08010908
adds r3, r2, r3
str r3, [sp]
mov r0, r10
ldr r1, [r0]
ldr r3, _0801090C
adds r0, r1, r3
adds r0, r5
ldrh r0, [r0]
ldr r3, [sp]
strh r0, [r3]
ldr r0, _08010910
adds r2, r0
ldr r3, _08010914
adds r1, r3
adds r1, r5
ldrh r0, [r1]
strh r0, [r2]
adds r5, 0x2
adds r4, 0x1
subs r7, 0x1
cmp r7, 0
bge _0801089A
mov r2, r12
adds r6, 0x1
mov r3, r8
cmp r3, 0x14
ble _0801087C
movs r0, 0x2
bl sub_80098F8
movs r0, 0x3
bl sub_80098F8
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080108FC: .4byte gUnknown_203B0E8
_08010900: .4byte 0x000052da
_08010904: .4byte 0x000052d8
_08010908: .4byte gUnknown_202C038
_0801090C: .4byte 0x00003114
_08010910: .4byte gUnknown_202C838
_08010914: .4byte 0x00001114
thumb_func_end sub_8010858
thumb_func_start nullsub_24
nullsub_24:
bx lr
thumb_func_end nullsub_24
thumb_func_start sub_801091C
sub_801091C:
push {r4,r5,lr}
bl sub_8010950
bl sub_80117C4
ldr r5, _08010948
movs r4, 0x3B
_0801092A:
ldr r1, [r5]
ldr r0, _0801094C
adds r1, r0
ldr r0, [r1]
subs r0, 0x2
str r0, [r1]
bl sub_8010960
subs r4, 0x1
cmp r4, 0
bge _0801092A
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08010948: .4byte gUnknown_203B0E8
_0801094C: .4byte 0x000052d0
thumb_func_end sub_801091C
thumb_func_start sub_8010950
sub_8010950:
push {lr}
movs r0, 0
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r0}
bx r0
thumb_func_end sub_8010950
thumb_func_start sub_8010960
sub_8010960:
push {r4-r6,lr}
ldr r6, _080109EC
ldr r1, [r6]
ldr r4, _080109F0
adds r0, r1, r4
movs r2, 0
ldrsh r0, [r0, r2]
ldr r5, _080109F4
adds r1, r5
movs r2, 0
ldrsh r1, [r1, r2]
bl SetBG2RegOffsets
ldr r1, [r6]
adds r4, r1, r4
movs r2, 0
ldrsh r0, [r4, r2]
adds r1, r5
movs r2, 0
ldrsh r1, [r1, r2]
bl SetBG3RegOffsets
movs r0, 0x1
bl sub_8010A88
bl sub_8010A00
movs r0, 0
movs r1, 0
bl sub_8005838
ldr r0, _080109F8
ldr r0, [r0]
ldrb r0, [r0, 0xA]
bl nullsub_8
bl sub_8005180
bl sub_80060EC
ldr r0, _080109FC
ldr r0, [r0]
bl IncrementPlayTime
bl sub_800CB20
bl LoadBufferedInputs
bl CopySpritesToOam
bl sub_8005304
bl TransferBGPaletteBuffer
bl xxx_call_update_bg_vram
bl nullsub_24
bl sub_8009908
bl xxx_call_update_bg_sound_input
bl sub_8011860
movs r0, 0
bl ResetSprites
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080109EC: .4byte gUnknown_203B0E8
_080109F0: .4byte 0x000052d8
_080109F4: .4byte 0x000052da
_080109F8: .4byte gGameOptionsRef
_080109FC: .4byte gPlayTimeRef
thumb_func_end sub_8010960
thumb_func_start sub_8010A00
sub_8010A00:
push {r4-r6,lr}
movs r3, 0
ldr r6, _08010A7C
ldr r0, [r6]
ldr r2, _08010A80
adds r1, r0, r2
ldr r2, [r1]
cmp r2, 0x1E
bgt _08010A74
movs r3, 0x88
lsls r3, 5
adds r0, r3
ldr r0, [r0]
ldr r5, [r0, 0x4]
adds r0, r2, 0x1
str r0, [r1]
cmp r0, 0x1E
ble _08010A28
movs r0, 0x1F
str r0, [r1]
_08010A28:
movs r4, 0
_08010A2A:
ldr r0, [r6]
ldr r1, _08010A80
adds r0, r1
ldr r2, [r0]
adds r0, r4, 0
adds r1, r5, 0
movs r3, 0
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
adds r4, 0x1
cmp r4, 0xDF
ble _08010A2A
ldr r0, _08010A7C
ldr r0, [r0]
ldr r2, _08010A84
adds r0, r2
ldr r0, [r0]
ldr r5, [r0, 0x4]
movs r4, 0
_08010A52:
movs r3, 0x80
lsls r3, 1
adds r0, r4, r3
ldr r1, _08010A7C
ldr r1, [r1]
ldr r2, _08010A80
adds r1, r2
ldr r2, [r1]
adds r1, r5, 0
movs r3, 0
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
adds r4, 0x1
cmp r4, 0xEF
ble _08010A52
movs r3, 0x1
_08010A74:
adds r0, r3, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08010A7C: .4byte gUnknown_203B0E8
_08010A80: .4byte 0x000052d0
_08010A84: .4byte 0x00001104
thumb_func_end sub_8010A00
thumb_func_start sub_8010A88
sub_8010A88:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
lsls r0, 24
lsrs r0, 24
mov r9, r0
add r0, sp, 0x8
bl sub_8004E8C
add r1, sp, 0x8
ldr r0, _08010B58
strh r0, [r1, 0x4]
movs r0, 0x80
lsls r0, 4
strh r0, [r1, 0xA]
ldr r6, _08010B5C
ldr r0, [r6]
ldr r2, _08010B60
adds r1, r0, r2
ldr r5, [r1]
ldr r3, _08010B64
adds r0, r3
bl sub_80054BC
mov r0, r9
cmp r0, 0
beq _08010AF6
ldr r4, [r6]
ldr r1, _08010B64
adds r0, r4, r1
ldr r2, _08010B68
adds r1, r4, r2
movs r3, 0
ldrsh r1, [r1, r3]
lsls r2, r5, 16
asrs r2, 16
subs r1, r2
ldr r3, _08010B6C
adds r2, r4, r3
movs r3, 0
ldrsh r2, [r2, r3]
asrs r3, r5, 16
subs r2, r3
ldr r3, _08010B70
adds r4, r3
ldr r3, [r4]
str r3, [sp]
add r3, sp, 0x8
str r3, [sp, 0x4]
movs r3, 0x3
bl sub_800558C
_08010AF6:
lsls r0, r5, 16
asrs r0, 16
mov r10, r0
movs r7, 0
asrs r5, 16
mov r8, r5
movs r6, 0x3F
_08010B04:
ldr r1, _08010B5C
ldr r0, [r1]
adds r4, r0, r7
ldrb r0, [r4]
cmp r0, 0
beq _08010B40
adds r5, r4, 0
adds r5, 0x8
adds r0, r5, 0
bl sub_80054BC
mov r2, r9
cmp r2, 0
beq _08010B40
movs r3, 0x4
ldrsh r1, [r4, r3]
mov r0, r10
subs r1, r0
movs r3, 0x6
ldrsh r2, [r4, r3]
mov r0, r8
subs r2, r0
movs r0, 0
str r0, [sp]
add r3, sp, 0x8
str r3, [sp, 0x4]
adds r0, r5, 0
movs r3, 0x1
bl sub_800558C
_08010B40:
adds r7, 0x44
subs r6, 0x1
cmp r6, 0
bge _08010B04
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08010B58: .4byte 0x0000f3ff
_08010B5C: .4byte gUnknown_203B0E8
_08010B60: .4byte 0x000052d8
_08010B64: .4byte 0x00005114
_08010B68: .4byte 0x000052dc
_08010B6C: .4byte 0x000052de
_08010B70: .4byte 0x000052d4
thumb_func_end sub_8010A88
thumb_func_start sub_8010B74
sub_8010B74:
push {r4,r5,lr}
sub sp, 0x64
adds r5, r0, 0
add r4, sp, 0x4
adds r0, r4, 0
movs r1, 0
movs r2, 0x60
bl memset
movs r2, 0x3
str r2, [sp, 0x8]
movs r0, 0xC
strh r0, [r4, 0x8]
movs r1, 0x2
strh r1, [r4, 0xA]
movs r0, 0x10
strh r0, [r4, 0xC]
strh r1, [r4, 0xE]
strh r1, [r4, 0x10]
str r2, [sp, 0x20]
str r2, [sp, 0x38]
str r2, [sp, 0x50]
ldr r0, _08010BC0
ldr r0, [r0]
ldr r2, _08010BC4
adds r1, r0, r2
movs r2, 0
ldrsh r1, [r1, r2]
ldr r2, _08010BC8
adds r0, r2
movs r2, 0
ldrsh r0, [r0, r2]
subs r1, r0
cmp r1, 0x50
bgt _08010BCC
add r1, sp, 0x4
movs r0, 0x11
b _08010BD0
.align 2, 0
_08010BC0: .4byte gUnknown_203B0E8
_08010BC4: .4byte 0x000052de
_08010BC8: .4byte 0x000052da
_08010BCC:
add r1, sp, 0x4
movs r0, 0x1
_08010BD0:
strh r0, [r1, 0xA]
add r0, sp, 0x4
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
movs r0, 0
bl sub_80073B8
ldr r0, _08010C08
adds r1, r5, 0
bl CopyDungeonName1toBuffer
ldr r2, _08010C0C
movs r0, 0
str r0, [sp]
movs r0, 0xC
movs r1, 0x2
movs r3, 0
bl xxx_format_and_draw
movs r0, 0
bl sub_80073E0
add sp, 0x64
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08010C08: .4byte gAvailablePokemonNames
_08010C0C: .4byte gUnknown_80D4074
thumb_func_end sub_8010B74
thumb_func_start sub_8010C10
sub_8010C10:
push {r4,lr}
sub sp, 0x18
movs r2, 0
str r2, [sp]
movs r1, 0x3
str r1, [sp, 0x4]
str r2, [sp, 0x8]
str r2, [sp, 0xC]
ldr r1, _08010C54
str r1, [sp, 0x10]
movs r1, 0
movs r3, 0
bl sub_8014248
_08010C2C:
bl xxx_draw_string_80144C4
bl sub_8010960
add r0, sp, 0x14
bl sub_80144A4
cmp r0, 0
bne _08010C2C
movs r4, 0x9
_08010C40:
bl sub_8010960
subs r4, 0x1
cmp r4, 0
bge _08010C40
add sp, 0x18
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08010C54: .4byte 0x00000301
thumb_func_end sub_8010C10
thumb_func_start sub_8010C58
sub_8010C58:
push {r4-r6,lr}
sub sp, 0x38
adds r5, r0, 0
movs r2, 0
ldrb r0, [r5]
ldr r3, _08010D70
add r6, sp, 0x2C
cmp r0, 0
beq _08010C7C
adds r1, r5, 0
_08010C6C:
ldrb r0, [r1]
cmp r0, 0xA
bne _08010C74
adds r2, 0xC
_08010C74:
adds r1, 0x1
ldrb r0, [r1]
cmp r0, 0
bne _08010C6C
_08010C7C:
adds r2, 0xB
adds r0, r2, 0
cmp r2, 0
bge _08010C86
adds r0, r2, 0x7
_08010C86:
asrs r2, r0, 3
movs r0, 0x13
subs r0, r2
movs r4, 0
strh r0, [r3, 0xA]
strh r2, [r3, 0x10]
strh r2, [r3, 0xE]
movs r0, 0xE
subs r0, r2
strh r0, [r3, 0x22]
adds r0, r3, 0
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
movs r0, 0
bl sub_80073B8
str r4, [sp]
movs r0, 0x4
movs r1, 0
adds r2, r5, 0
movs r3, 0
bl xxx_format_and_draw
movs r0, 0
bl sub_80073E0
movs r0, 0x1
bl sub_80073B8
ldr r2, _08010D74
str r4, [sp]
movs r0, 0xA
movs r1, 0
movs r3, 0x1
bl xxx_format_and_draw
ldr r2, _08010D78
str r4, [sp]
movs r0, 0xA
movs r1, 0xC
movs r3, 0x1
bl xxx_format_and_draw
movs r0, 0x1
bl sub_80073E0
add r0, sp, 0x4
movs r2, 0x1
strh r2, [r0, 0x18]
movs r1, 0x2
strh r1, [r0, 0x1A]
strh r1, [r0, 0x1C]
strh r4, [r0, 0x1E]
strh r4, [r0, 0x20]
strh r4, [r0, 0x4]
strh r4, [r0, 0x6]
str r2, [sp, 0x4]
strh r4, [r0, 0xC]
strh r4, [r0, 0xE]
strh r4, [r0, 0x14]
strh r4, [r0, 0x16]
movs r1, 0x8
strh r1, [r0, 0x8]
strh r1, [r0, 0xA]
movs r1, 0x18
bl sub_80137B0
adds r0, r6, 0
bl sub_801317C
ldr r4, _08010D7C
_08010D18:
add r0, sp, 0x4
bl AddMenuCursorSprite
bl sub_8010960
ldrh r1, [r4, 0x4]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08010D36
add r0, sp, 0x4
bl MoveMenuCursorDown
bl sub_80117F8
_08010D36:
ldrh r1, [r4, 0x4]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _08010D4A
add r0, sp, 0x4
bl MoveMenuCursorUp
bl sub_80117F8
_08010D4A:
ldrh r1, [r4, 0x2]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _08010D5E
mov r0, sp
adds r0, 0x2D
ldrb r0, [r0]
cmp r0, 0
beq _08010D18
_08010D5E:
bl sub_80117D0
add r0, sp, 0x4
movs r1, 0x18
ldrsh r0, [r0, r1]
cmp r0, 0
beq _08010D80
movs r0, 0
b _08010D82
.align 2, 0
_08010D70: .4byte gUnknown_203B0EC
_08010D74: .4byte gUnknown_80D407C
_08010D78: .4byte gUnknown_80D4080
_08010D7C: .4byte gRealInputs
_08010D80:
movs r0, 0x1
_08010D82:
add sp, 0x38
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8010C58
thumb_func_start sub_8010D8C
sub_8010D8C:
lsls r0, 24
ldr r2, _08010DA0
lsrs r0, 22
adds r0, r2
ldrh r2, [r0]
strh r2, [r1]
ldrh r0, [r0, 0x2]
strh r0, [r1, 0x2]
bx lr
.align 2, 0
_08010DA0: .4byte gDungeonCoordinates
thumb_func_end sub_8010D8C
thumb_func_start sub_8010DA4
sub_8010DA4:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
bl GetPlayerPokemonStruct
mov r9, r0
ldr r6, _08010EBC
ldr r0, [r6]
ldr r5, _08010EC0
adds r1, r5, 0
bl OpenFileAndGetFileDataPtr
mov r10, r0
ldr r0, [r6, 0x4]
adds r1, r5, 0
bl OpenFileAndGetFileDataPtr
adds r7, r0, 0
ldr r1, _08010EC4
mov r0, r9
movs r3, 0x8
ldrsh r2, [r0, r3]
mov r0, sp
bl sprintf
ldr r0, _08010EC8
mov r8, r0
mov r0, sp
mov r1, r8
bl OpenFileAndGetFileDataPtr
ldr r4, _08010ECC
ldr r1, [r4]
str r0, [r1, 0xC]
ldr r0, _08010ED0
adds r1, r5, 0
bl OpenFileAndGetFileDataPtr
ldr r1, [r4]
str r0, [r1, 0x8]
ldr r0, [r6, 0x8]
adds r1, r5, 0
bl OpenFileAndGetFileDataPtr
ldr r1, [r4]
str r0, [r1, 0x10]
ldr r0, _08010ED4
mov r1, r8
bl OpenFileAndGetFileDataPtr
ldr r1, [r4]
str r0, [r1, 0x4]
ldr r0, [r6, 0xC]
adds r1, r5, 0
bl OpenFileAndGetFileDataPtr
ldr r1, [r4]
str r0, [r1]
mov r1, r9
movs r2, 0x8
ldrsh r0, [r1, r2]
movs r1, 0
bl GetPokemonOverworldPalette
ldr r2, [r4]
ldr r3, _08010ED8
adds r1, r2, r3
lsls r0, 24
lsrs r0, 24
str r0, [r1]
ldr r0, [r2, 0x8]
movs r1, 0x40
movs r2, 0x1F
movs r3, 0
bl sub_8005610
ldr r0, _08010EDC
movs r1, 0
mov r2, r10
bl DecompressATGlobalFile
ldr r1, [r4]
ldr r2, _08010EE0
adds r0, r1, r2
ldr r1, [r1, 0x10]
movs r2, 0x10
bl sub_8004AA4
movs r1, 0x80
lsls r1, 7
ldr r0, [r4]
adds r0, 0x14
adds r2, r7, 0
bl DecompressATFile
ldr r1, [r4]
ldr r3, _08010EE4
adds r0, r1, r3
movs r2, 0
str r2, [r0]
adds r3, 0x8
adds r0, r1, r3
strh r2, [r0]
ldr r0, _08010EE8
adds r1, r0
strh r2, [r1]
ldr r5, _08010EEC
movs r3, 0
movs r1, 0x7
_08010E84:
ldr r0, [r4]
adds r0, r2, r0
adds r0, r5
strh r3, [r0]
adds r2, 0x3C
subs r1, 0x1
cmp r1, 0
bge _08010E84
mov r0, r10
bl CloseFile
adds r0, r7, 0
bl CloseFile
movs r0, 0
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08010EBC: .4byte gUnknown_80D408C
_08010EC0: .4byte gTitleMenuFileArchive
_08010EC4: .4byte gUnknown_80D40E4
_08010EC8: .4byte gMonsterFileArchive
_08010ECC: .4byte gUnknown_203B0E4
_08010ED0: .4byte gUnknown_80D40EC
_08010ED4: .4byte gUnknown_80D40F4
_08010ED8: .4byte 0x00004dd0
_08010EDC: .4byte 0x06008000
_08010EE0: .4byte 0x00004c4c
_08010EE4: .4byte 0x00004dcc
_08010EE8: .4byte 0x00004dd6
_08010EEC: .4byte 0x00004a30
thumb_func_end sub_8010DA4
thumb_func_start sub_8010EF0
sub_8010EF0:
push {r4,lr}
ldr r4, _08010F24
ldr r0, [r4]
ldr r0, [r0, 0x10]
bl CloseFile
ldr r0, [r4]
ldr r0, [r0, 0x8]
bl CloseFile
ldr r0, [r4]
ldr r0, [r0, 0xC]
bl CloseFile
ldr r0, [r4]
ldr r0, [r0]
bl CloseFile
ldr r0, [r4]
ldr r0, [r0, 0x4]
bl CloseFile
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08010F24: .4byte gUnknown_203B0E4
thumb_func_end sub_8010EF0
thumb_func_start sub_8010F28
sub_8010F28:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x18
add r0, sp, 0x8
bl sub_8004E8C
add r1, sp, 0x8
ldr r0, _08011080
strh r0, [r1, 0x4]
movs r0, 0x80
lsls r0, 4
strh r0, [r1, 0xA]
ldr r6, _08011084
ldr r0, [r6]
ldr r2, _08011088
adds r1, r0, r2
ldr r1, [r1]
mov r8, r1
ldr r4, _0801108C
adds r0, r4
bl sub_80054BC
ldr r3, [r6]
adds r4, r3, r4
ldr r7, _08011090
adds r0, r3, r7
movs r2, 0
ldrsh r1, [r0, r2]
mov r7, r8
lsls r5, r7, 16
asrs r5, 16
subs r1, r5
ldr r2, _08011094
adds r0, r3, r2
movs r7, 0
ldrsh r2, [r0, r7]
mov r7, r8
asrs r0, r7, 16
subs r2, r0
ldr r0, _08011098
adds r3, r0
ldr r0, [r3]
str r0, [sp]
add r3, sp, 0x8
str r3, [sp, 0x4]
adds r0, r4, 0
movs r3, 0x3
bl sub_800558C
movs r7, 0
mov r10, r6
ldr r6, _0801109C
mov r9, r5
_08010F98:
mov r4, r10
ldr r0, [r4]
adds r4, r0, r6
ldr r1, _080110A0
adds r0, r1
lsls r1, r7, 5
ldr r0, [r0]
adds r5, r0, r1
ldrb r0, [r4]
cmp r0, 0
beq _08010FD8
adds r4, 0x14
adds r0, r4, 0
bl sub_80054BC
movs r2, 0x4
ldrsh r1, [r5, r2]
mov r3, r9
subs r1, r3
movs r0, 0x6
ldrsh r2, [r5, r0]
mov r3, r8
asrs r0, r3, 16
subs r2, r0
movs r0, 0
str r0, [sp]
add r0, sp, 0x8
str r0, [sp, 0x4]
adds r0, r4, 0
movs r3, 0x1
bl sub_800558C
_08010FD8:
adds r6, 0x50
adds r7, 0x1
cmp r7, 0x1F
ble _08010F98
movs r5, 0
ldr r1, _08011084
mov r9, r1
ldr r6, _080110A4
movs r2, 0
str r2, [sp, 0x14]
_08010FEC:
mov r3, r9
ldr r1, [r3]
ldr r4, [sp, 0x14]
adds r0, r4, r1
ldr r7, _080110A4
adds r0, r7
ldrh r0, [r0]
lsrs r0, 15
cmp r0, 0
beq _08011062
adds r0, r1, r6
bl sub_80054BC
ldr r0, _080110A8
ldrh r0, [r0]
movs r2, 0x80
lsls r2, 1
adds r1, r2, 0
ands r0, r1
cmp r0, 0
beq _0801101E
movs r0, 0x1
ands r0, r5
cmp r0, 0
beq _08011062
_0801101E:
mov r3, r9
ldr r4, [r3]
adds r0, r4, r6
ldr r1, _080110AC
lsls r3, r5, 2
adds r3, r1
movs r7, 0
ldrsh r1, [r3, r7]
ldr r7, _08011090
adds r2, r4, r7
movs r7, 0
ldrsh r2, [r2, r7]
adds r1, r2
mov r7, r8
lsls r2, r7, 16
asrs r2, 16
subs r1, r2
movs r7, 0x2
ldrsh r2, [r3, r7]
ldr r3, _08011094
adds r3, r4
movs r4, 0
ldrsh r3, [r3, r4]
adds r2, r3
mov r7, r8
asrs r3, r7, 16
subs r2, r3
movs r3, 0
str r3, [sp]
add r3, sp, 0x8
str r3, [sp, 0x4]
movs r3, 0x2
bl sub_800558C
_08011062:
adds r6, 0x3C
ldr r4, [sp, 0x14]
adds r4, 0x3C
str r4, [sp, 0x14]
adds r5, 0x1
cmp r5, 0x7
ble _08010FEC
add sp, 0x18
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08011080: .4byte 0x0000f3ff
_08011084: .4byte gUnknown_203B0E4
_08011088: .4byte 0x00004dd4
_0801108C: .4byte 0x00004c10
_08011090: .4byte 0x00004dd8
_08011094: .4byte 0x00004dda
_08011098: .4byte 0x00004dd0
_0801109C: .4byte 0x00004018
_080110A0: .4byte 0x00004014
_080110A4: .4byte 0x00004a30
_080110A8: .4byte gRealInputs
_080110AC: .4byte gUnknown_80D40C4
thumb_func_end sub_8010F28
thumb_func_start sub_80110B0
sub_80110B0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
ldr r0, _08011150
ldr r1, [r0]
ldr r2, _08011154
adds r1, r2
ldrh r1, [r1]
lsls r1, 16
asrs r6, r1, 19
adds r2, r6, 0
movs r3, 0
mov r10, r0
movs r0, 0x1F
mov r9, r0
_080110D4:
mov r1, r10
ldr r0, [r1]
ldr r1, _08011158
adds r0, r1
ldrh r0, [r0]
lsls r0, 16
asrs r4, r0, 19
lsls r1, r2, 7
adds r2, 0x1
mov r12, r2
adds r3, 0x1
mov r8, r3
movs r7, 0x1E
lsls r0, r4, 1
adds r5, r0, r1
_080110F2:
mov r2, r9
ands r4, r2
ands r6, r2
lsls r2, r4, 1
lsls r0, r6, 6
adds r2, r0
ldr r3, _0801115C
adds r3, r2, r3
str r3, [sp]
mov r0, r10
ldr r1, [r0]
ldr r3, _08011160
adds r0, r1, r3
adds r0, r5
ldrh r0, [r0]
ldr r3, [sp]
strh r0, [r3]
ldr r0, _08011164
adds r2, r0
adds r1, 0x14
adds r1, r5
ldrh r0, [r1]
strh r0, [r2]
adds r5, 0x2
adds r4, 0x1
subs r7, 0x1
cmp r7, 0
bge _080110F2
mov r2, r12
adds r6, 0x1
mov r3, r8
cmp r3, 0x14
ble _080110D4
movs r0, 0x2
bl sub_80098F8
movs r0, 0x3
bl sub_80098F8
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08011150: .4byte gUnknown_203B0E4
_08011154: .4byte 0x00004dd6
_08011158: .4byte 0x00004dd4
_0801115C: .4byte gUnknown_202C038
_08011160: .4byte 0x00002014
_08011164: .4byte gUnknown_202C838
thumb_func_end sub_80110B0
thumb_func_start sub_8011168
sub_8011168:
push {r4,r5,lr}
movs r0, 0
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r3, _080111B0
ldr r1, [r3]
ldr r2, _080111B4
adds r0, r1, r2
movs r2, 0
str r2, [r0]
ldr r4, _080111B8
adds r0, r1, r4
str r2, [r0]
adds r4, 0x4
adds r0, r1, r4
str r2, [r0]
ldr r0, _080111BC
adds r1, r0
str r2, [r1]
adds r5, r3, 0
ldr r4, _080111C0
movs r3, 0
movs r1, 0x7
_0801119A:
ldr r0, [r5]
adds r0, r2, r0
adds r0, r4
strh r3, [r0]
adds r2, 0x3C
subs r1, 0x1
cmp r1, 0
bge _0801119A
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080111B0: .4byte gUnknown_203B0E4
_080111B4: .4byte 0x00004ddc
_080111B8: .4byte 0x00004de0
_080111BC: .4byte 0x00004de8
_080111C0: .4byte 0x00004a30
thumb_func_end sub_8011168
thumb_func_start sub_80111C4
sub_80111C4:
push {r4-r6,lr}
movs r3, 0
ldr r6, _08011238
ldr r0, [r6]
ldr r2, _0801123C
adds r1, r0, r2
ldr r2, [r1]
cmp r2, 0x1E
bgt _0801122E
ldr r0, [r0]
ldr r5, [r0, 0x4]
adds r0, r2, 0x1
str r0, [r1]
cmp r0, 0x1E
ble _080111E6
movs r0, 0x1F
str r0, [r1]
_080111E6:
movs r4, 0
_080111E8:
ldr r0, [r6]
ldr r1, _0801123C
adds r0, r1
ldr r2, [r0]
adds r0, r4, 0
adds r1, r5, 0
movs r3, 0
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
adds r4, 0x1
cmp r4, 0xDF
ble _080111E8
ldr r0, _08011238
ldr r0, [r0]
ldr r0, [r0, 0x4]
ldr r5, [r0, 0x4]
movs r4, 0
_0801120C:
movs r2, 0x80
lsls r2, 1
adds r0, r4, r2
ldr r1, _08011238
ldr r1, [r1]
ldr r2, _0801123C
adds r1, r2
ldr r2, [r1]
adds r1, r5, 0
movs r3, 0
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
adds r4, 0x1
cmp r4, 0xEF
ble _0801120C
movs r3, 0x1
_0801122E:
adds r0, r3, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08011238: .4byte gUnknown_203B0E4
_0801123C: .4byte 0x00004dcc
thumb_func_end sub_80111C4
thumb_func_start sub_8011240
sub_8011240:
push {r4-r6,lr}
ldr r2, _08011264
ldr r0, [r2]
ldr r1, _08011268
adds r3, r0, r1
movs r4, 0
ldrsh r1, [r3, r4]
ldr r5, _0801126C
adds r4, r0, r5
movs r6, 0
ldrsh r0, [r4, r6]
subs r1, r0
adds r5, r2, 0
cmp r1, 0x2F
bgt _08011270
ldrh r0, [r3]
subs r0, 0x30
b _08011278
.align 2, 0
_08011264: .4byte gUnknown_203B0E4
_08011268: .4byte 0x00004dd8
_0801126C: .4byte 0x00004dd4
_08011270:
cmp r1, 0xC0
ble _0801127A
ldrh r0, [r3]
subs r0, 0xC0
_08011278:
strh r0, [r4]
_0801127A:
ldr r0, [r5]
ldr r1, _08011298
adds r3, r0, r1
movs r2, 0
ldrsh r1, [r3, r2]
ldr r4, _0801129C
adds r2, r0, r4
movs r6, 0
ldrsh r0, [r2, r6]
subs r1, r0
cmp r1, 0x2F
bgt _080112A0
ldrh r0, [r3]
subs r0, 0x30
b _080112A8
.align 2, 0
_08011298: .4byte 0x00004dda
_0801129C: .4byte 0x00004dd6
_080112A0:
cmp r1, 0x70
ble _080112AA
ldrh r0, [r3]
subs r0, 0x70
_080112A8:
strh r0, [r2]
_080112AA:
adds r3, r5, 0
ldr r0, [r3]
ldr r4, _080112F8
adds r1, r0, r4
movs r2, 0
ldrsh r0, [r1, r2]
cmp r0, 0
bge _080112BE
movs r0, 0
strh r0, [r1]
_080112BE:
ldr r0, [r3]
ldr r2, _080112FC
adds r1, r0, r2
movs r6, 0
ldrsh r0, [r1, r6]
cmp r0, 0
bge _080112D0
movs r0, 0
strh r0, [r1]
_080112D0:
ldr r0, [r3]
adds r1, r0, r4
movs r3, 0
ldrsh r0, [r1, r3]
cmp r0, 0xEF
ble _080112E0
movs r0, 0xEF
strh r0, [r1]
_080112E0:
ldr r0, [r5]
adds r2, r0, r2
movs r4, 0
ldrsh r0, [r2, r4]
cmp r0, 0x97
ble _080112F0
movs r0, 0x97
strh r0, [r2]
_080112F0:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080112F8: .4byte 0x00004dd4
_080112FC: .4byte 0x00004dd6
thumb_func_end sub_8011240
thumb_func_start sub_8011300
sub_8011300:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0xC
ldr r0, _08011388
ldr r2, [r0]
ldr r1, _0801138C
adds r0, r2, r1
ldr r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 4
ldr r3, _08011390
adds r0, r3
adds r2, r0
mov r9, r2
movs r4, 0
ldr r0, _08011394
mov r8, r0
movs r7, 0
mov r6, r8
movs r5, 0
_0801132E:
ldr r0, _08011388
ldr r2, [r0]
adds r0, r5, r2
add r0, r8
strh r7, [r0]
lsls r1, r4, 1
mov r0, r9
adds r0, 0x2
adds r1, r0, r1
movs r3, 0
ldrsh r0, [r1, r3]
cmp r0, 0
blt _08011370
lsls r1, r0, 2
adds r1, r0
lsls r1, 4
ldr r0, _08011390
adds r1, r0
adds r1, r2, r1
ldrb r0, [r1]
cmp r0, 0
beq _08011370
adds r0, r2, r6
ldr r1, [r2, 0x8]
adds r2, r4, 0x4
movs r3, 0x40
str r3, [sp]
str r7, [sp, 0x4]
movs r3, 0x1
str r3, [sp, 0x8]
movs r3, 0
bl sub_80053AC
_08011370:
adds r6, 0x3C
adds r5, 0x3C
adds r4, 0x1
cmp r4, 0x7
ble _0801132E
add sp, 0xC
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08011388: .4byte gUnknown_203B0E4
_0801138C: .4byte 0x00004a18
_08011390: .4byte 0x00004018
_08011394: .4byte 0x00004a30
thumb_func_end sub_8011300
thumb_func_start sub_8011398
sub_8011398:
push {r4-r6,lr}
sub sp, 0x12C
ldr r5, _080113F4
ldr r0, [r5]
ldr r2, _080113F8
adds r1, r0, r2
ldr r1, [r1]
ldr r3, _080113FC
adds r0, r3
lsls r1, 5
ldr r0, [r0]
adds r6, r0, r1
add r4, sp, 0xCC
adds r0, r4, 0
movs r1, 0
movs r2, 0x60
bl memset
movs r2, 0x3
str r2, [r4, 0x4]
movs r0, 0x7
strh r0, [r4, 0x8]
movs r1, 0x2
strh r1, [r4, 0xA]
movs r0, 0x15
strh r0, [r4, 0xC]
strh r1, [r4, 0xE]
strh r1, [r4, 0x10]
str r2, [r4, 0x1C]
str r2, [r4, 0x34]
str r2, [r4, 0x4C]
ldr r0, [r5]
ldr r2, _08011400
adds r1, r0, r2
movs r3, 0
ldrsh r1, [r1, r3]
subs r2, 0x4
adds r0, r2
movs r3, 0
ldrsh r0, [r0, r3]
subs r1, r0
cmp r1, 0x50
bgt _08011404
movs r0, 0x11
b _08011406
.align 2, 0
_080113F4: .4byte gUnknown_203B0E4
_080113F8: .4byte 0x00004a18
_080113FC: .4byte 0x00004014
_08011400: .4byte 0x00004dda
_08011404:
movs r0, 0x1
_08011406:
strh r0, [r4, 0xA]
adds r0, r4, 0
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
movs r0, 0
bl sub_80073B8
ldr r1, _0801147C
ldr r2, [r6]
add r0, sp, 0x4
bl sprintfStatic
movs r0, 0
str r0, [sp]
movs r0, 0xC
movs r1, 0x2
add r2, sp, 0x4
movs r3, 0
bl xxx_format_and_draw
movs r0, 0
bl sub_80073E0
ldr r0, _08011480
ldr r1, [r0]
ldr r0, _08011484
adds r2, r1, r0
movs r3, 0x8
ldrsh r0, [r4, r3]
lsls r0, 3
subs r0, 0x5
str r0, [r2]
ldr r0, _08011488
adds r2, r1, r0
movs r3, 0xA
ldrsh r0, [r4, r3]
lsls r0, 3
adds r0, 0x5
str r0, [r2]
ldr r0, _0801148C
adds r2, r1, r0
movs r3, 0xC
ldrsh r0, [r4, r3]
lsls r0, 3
adds r0, 0xA
str r0, [r2]
ldr r0, _08011490
adds r1, r0
movs r2, 0xE
ldrsh r0, [r4, r2]
lsls r0, 3
adds r0, 0xA
str r0, [r1]
add sp, 0x12C
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0801147C: .4byte gUnknown_80D40FC
_08011480: .4byte gUnknown_203B0E4
_08011484: .4byte 0x00004ddc
_08011488: .4byte 0x00004de0
_0801148C: .4byte 0x00004de4
_08011490: .4byte 0x00004de8
thumb_func_end sub_8011398
thumb_func_start sub_8011494
sub_8011494:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC8
ldr r0, _08011610
ldr r2, [r0]
ldr r1, _08011614
adds r0, r2, r1
ldr r0, [r0]
ldr r3, _08011618
adds r1, r2, r3
lsls r0, 5
ldr r1, [r1]
adds r1, r0
mov r8, r1
ldr r0, _0801161C
adds r7, r2, r0
add r4, sp, 0x64
adds r0, r4, 0
movs r1, 0
movs r2, 0x60
bl memset
movs r0, 0x6
str r0, [sp, 0x68]
add r1, sp, 0x6C
movs r0, 0x7
strh r0, [r1]
movs r2, 0x2
strh r2, [r1, 0x2]
add r1, sp, 0x70
movs r0, 0x15
strh r0, [r1]
mov r0, sp
adds r0, 0x72
strh r2, [r0]
add r0, sp, 0x74
strh r2, [r0]
add r5, sp, 0xC4
str r5, [sp, 0x78]
movs r1, 0x3
str r1, [sp, 0x80]
add r0, sp, 0x94
str r1, [r0, 0x4]
add r0, sp, 0xAC
str r1, [r0, 0x4]
add r0, sp, 0x4
adds r1, r4, 0
movs r2, 0x60
bl memcpy
movs r1, 0
mov r9, r1
movs r6, 0
mov r10, r5
_08011506:
mov r0, r8
adds r0, 0x8
adds r4, r0, r6
ldrb r0, [r4]
bl sub_800FFE8
lsls r0, 24
cmp r0, 0
beq _0801152A
ldr r0, _08011610
ldr r0, [r0]
ldr r2, _08011620
adds r0, r2
add r0, r9
ldrb r1, [r4]
strb r1, [r0]
movs r3, 0x1
add r9, r3
_0801152A:
adds r6, 0x1
cmp r6, 0x7
ble _08011506
ldr r5, _08011610
ldr r0, [r5]
ldr r1, _08011624
adds r0, r1
mov r2, r9
str r2, [r0]
movs r4, 0
movs r0, 0x1
mov r3, r10
strb r0, [r3]
add r0, sp, 0xC4
strb r4, [r0, 0x1]
movs r1, 0x12
strb r1, [r0, 0x2]
strb r4, [r0, 0x3]
strh r4, [r7, 0x18]
strh r2, [r7, 0x1A]
mov r0, r9
strh r0, [r7, 0x1C]
strh r4, [r7, 0x1E]
strh r4, [r7, 0x20]
strh r4, [r7, 0x4]
movs r0, 0x10
strh r0, [r7, 0x6]
str r4, [r7]
strh r4, [r7, 0xC]
strh r4, [r7, 0xE]
strh r4, [r7, 0x14]
strh r4, [r7, 0x16]
movs r0, 0x8
strh r0, [r7, 0x8]
strh r0, [r7, 0xA]
adds r0, r7, 0
adds r0, 0x28
bl sub_801317C
movs r1, 0x1C
ldrsh r0, [r7, r1]
movs r1, 0
bl sub_80095E4
adds r1, r0, 0
add r3, sp, 0x4
adds r2, r3, 0
adds r0, r1, 0x2
strh r0, [r2, 0xE]
strh r0, [r3, 0x10]
lsls r1, 3
adds r0, r7, 0
bl sub_80137B0
add r0, sp, 0x4
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r1, [r5]
ldr r2, _08011628
adds r0, r1, r2
str r4, [r0]
ldr r3, _0801162C
adds r0, r1, r3
str r4, [r0]
adds r2, 0x8
adds r0, r1, r2
str r4, [r0]
adds r3, 0x8
adds r1, r3
str r4, [r1]
movs r0, 0
bl sub_80073B8
ldr r2, _08011630
str r4, [sp]
movs r0, 0x10
movs r1, 0
movs r3, 0
bl xxx_format_and_draw
movs r6, 0
cmp r6, r9
bge _08011678
add r0, sp, 0x64
mov r8, r0
ldr r1, _08011634
mov r10, r1
_080115DC:
adds r0, r7, 0
adds r1, r6, 0
bl sub_8013800
adds r4, r0, 0
ldr r2, _08011610
ldr r0, [r2]
ldr r3, _08011620
adds r0, r3
adds r0, r6
ldrb r5, [r0]
ldr r0, _08011638
adds r1, r5, 0
bl sub_80101F8
cmp r5, 0
bne _08011640
str r5, [sp]
movs r0, 0xC
adds r1, r4, 0
ldr r2, _0801163C
movs r3, 0
bl xxx_format_and_draw
b _08011672
.align 2, 0
_08011610: .4byte gUnknown_203B0E4
_08011614: .4byte 0x00004a18
_08011618: .4byte 0x00004014
_0801161C: .4byte 0x00004dfc
_08011620: .4byte 0x00004dec
_08011624: .4byte 0x00004df8
_08011628: .4byte 0x00004ddc
_0801162C: .4byte 0x00004de0
_08011630: .4byte gUnknown_80D4104
_08011634: .4byte gUnknown_202DE30
_08011638: .4byte gUnknown_202DE58
_0801163C: .4byte gUnknown_80D4120
_08011640:
ldr r1, _08011690
ldr r0, [r1]
ldr r2, _08011694
adds r0, r2
ldrb r2, [r0]
adds r0, r5, 0
mov r1, r8
bl sub_80926F8
mov r3, r8
movs r1, 0x2
ldrsh r0, [r3, r1]
mov r2, r10
str r0, [r2]
movs r1, 0
ldrsh r0, [r3, r1]
str r0, [r2, 0x4]
movs r0, 0
str r0, [sp]
movs r0, 0xC
adds r1, r4, 0
ldr r2, _08011698
movs r3, 0
bl xxx_format_and_draw
_08011672:
adds r6, 0x1
cmp r6, r9
blt _080115DC
_08011678:
movs r0, 0
bl sub_80073E0
add sp, 0xC8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08011690: .4byte gUnknown_203B0E4
_08011694: .4byte 0x00004a2c
_08011698: .4byte gUnknown_80D4124
thumb_func_end sub_8011494
.align 2,0