pmd-red/asm/wonder_mail_4.s
mid-kid 99a038284b Translate all .include to #include
This decision was made to reduce the complexity of using .include whilst
juggling with tools/scaninc and tools/preproc:
- tools/scaninc doesn't apply the proper search rules for .include (it
  assumes #include behavior). In particular, it doesn't consider paths
  starting from $PWD, and doesn't scan the included files as a result.
- .include had to be processed before #include by preproc in many cases,
  as code was being included that had to be preprocessed by CPP (think
  of #define). This contradicts standard GCC behavior.

To make include paths consistent across the asm/ data/ and src/
directories, the following files were moved:
- constants/ → include/asm/constants/
- asm/macros/ → include/asm/macros/
- asm/macros.inc → include/asm/macros.inc
- include/macros/m4a.inc → include/asm/macros/m4a.inc

As part of the necessary changes for this to work, the scaninc method in
the makefile was improved to generate .d files that don't choke when
files are missing.
2021-12-20 16:29:12 +01:00

1565 lines
24 KiB
ArmAsm

#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80308A0
sub_80308A0:
push {r4,lr}
ldr r4, _08030928
ldr r0, [r4]
adds r1, r0, 0
adds r1, 0x44
ldrh r1, [r1]
adds r0, 0xC0
movs r2, 0
strb r1, [r0]
ldr r0, [r4]
adds r1, r0, 0
adds r1, 0x42
ldrh r1, [r1]
adds r0, 0xC1
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xC2
movs r1, 0xC
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xC3
strb r2, [r0]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x60
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
movs r1, 0x3E
ldrsh r0, [r0, r1]
movs r1, 0xC
bl sub_80095E4
adds r0, 0x2
lsls r0, 16
ldr r2, [r4]
ldr r3, [r2, 0x58]
lsls r1, r3, 1
adds r1, r3
lsls r1, 3
adds r1, r2, r1
adds r1, 0x6E
asrs r3, r0, 16
lsrs r0, 16
strh r0, [r1]
ldr r1, [r2, 0x58]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r2, r0
adds r3, 0x2
adds r2, 0x70
strh r3, [r2]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x60
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08030928: .4byte gUnknown_203B320
thumb_func_end sub_80308A0
thumb_func_start sub_803092C
sub_803092C:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x60
ldr r7, _08030A24
ldr r0, [r7]
ldr r0, [r0, 0x58]
bl sub_8008C54
ldr r0, [r7]
ldr r0, [r0, 0x58]
bl sub_80073B8
ldr r1, [r7]
adds r0, r1, 0
adds r0, 0x42
movs r2, 0
ldrsh r4, [r0, r2]
lsls r4, 3
adds r5, r4, 0
adds r5, 0xA
ldr r2, _08030A28
ldr r0, [r1, 0x20]
lsls r0, 2
adds r0, r2
ldr r2, [r0]
ldr r3, [r1, 0x58]
movs r0, 0
str r0, [sp]
adds r0, r5, 0
movs r1, 0
bl xxx_call_draw_string
adds r4, 0x4
ldr r3, [r7]
adds r0, r3, 0
adds r0, 0xC2
ldrb r0, [r0]
lsls r0, 3
adds r5, r4, r0
adds r0, r3, 0
adds r0, 0x42
movs r1, 0
ldrsh r2, [r0, r1]
adds r2, 0x1
movs r0, 0x7
str r0, [sp]
ldr r0, [r3, 0x58]
str r0, [sp, 0x4]
adds r0, r5, 0
movs r1, 0
movs r3, 0x1
bl sub_8012BC4
movs r6, 0
ldr r0, [r7]
movs r2, 0x3E
ldrsh r0, [r0, r2]
cmp r6, r0
bge _08030A56
mov r9, r7
mov r8, r6
add r7, sp, 0x8
mov r5, sp
adds r5, 0x4B
_080309B0:
mov r3, r9
ldr r1, [r3]
adds r0, r1, 0
adds r0, 0x42
movs r3, 0
ldrsh r2, [r0, r3]
subs r0, 0x2
movs r3, 0
ldrsh r0, [r0, r3]
muls r0, r2
adds r0, r6
adds r1, r0
ldrb r0, [r1]
bl sub_8095228
adds r4, r0, 0
mov r1, r9
ldr r0, [r1]
ldr r1, [r0, 0x58]
str r1, [sp, 0x8]
adds r0, 0x24
adds r1, r6, 0
bl sub_8013800
str r0, [sp, 0x50]
add r1, sp, 0x48
movs r0, 0x7
strb r0, [r1]
mov r0, sp
adds r0, 0x4A
mov r2, r8
strb r2, [r0]
add r0, sp, 0x4C
strb r2, [r0]
adds r0, r4, 0x4
str r0, [sp, 0x10]
adds r0, 0x10
str r0, [sp, 0x14]
ldrh r0, [r4, 0xC]
strh r0, [r7, 0x10]
ldrh r0, [r4, 0xC]
strh r0, [r7, 0x12]
strb r2, [r7, 0x14]
subs r1, 0x12
movs r0, 0x5
strb r0, [r1]
ldrb r0, [r4]
cmp r0, 0x4
beq _08030A32
cmp r0, 0x4
bgt _08030A2C
cmp r0, 0x2
bgt _08030A3E
cmp r0, 0x1
blt _08030A3E
movs r0, 0x1
strb r0, [r5]
b _08030A42
.align 2, 0
_08030A24: .4byte gUnknown_203B320
_08030A28: .4byte gUnknown_80E086C
_08030A2C:
cmp r0, 0x5
beq _08030A38
b _08030A3E
_08030A32:
movs r0, 0x3
strb r0, [r5]
b _08030A42
_08030A38:
movs r0, 0x4
strb r0, [r5]
b _08030A42
_08030A3E:
mov r3, r8
strb r3, [r5]
_08030A42:
add r0, sp, 0x8
bl sub_803B6D4
adds r6, 0x1
mov r1, r9
ldr r0, [r1]
movs r2, 0x3E
ldrsh r0, [r0, r2]
cmp r6, r0
blt _080309B0
_08030A56:
ldr r0, _08030A70
ldr r0, [r0]
ldr r0, [r0, 0x58]
bl sub_80073E0
add sp, 0x60
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08030A70: .4byte gUnknown_203B320
thumb_func_end sub_803092C
thumb_func_start sub_8030A74
sub_8030A74:
push {r4,r5,lr}
movs r2, 0
ldr r0, _08030A90
ldr r0, [r0]
ldr r0, [r0, 0x20]
cmp r0, 0x7
bls _08030A84
b _08030C0E
_08030A84:
lsls r0, 2
ldr r1, _08030A94
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08030A90: .4byte gUnknown_203B320
_08030A94: .4byte _08030A98
.align 2, 0
_08030A98:
.4byte _08030AB8
.4byte _08030B10
.4byte _08030B3C
.4byte _08030B94
.4byte _08030B68
.4byte _08030BC0
.4byte _08030AE4
.4byte _08030BEC
_08030AB8:
movs r1, 0
ldr r5, _08030ADC
ldr r4, _08030AE0
movs r3, 0
_08030AC0:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0
beq _08030AD2
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030AD2:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030AC0
b _08030C0E
.align 2, 0
_08030ADC: .4byte gUnknown_203B480
_08030AE0: .4byte gUnknown_203B320
_08030AE4:
movs r1, 0
ldr r5, _08030B08
ldr r4, _08030B0C
movs r3, 0
_08030AEC:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x6
bne _08030AFE
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030AFE:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030AEC
b _08030C0E
.align 2, 0
_08030B08: .4byte gUnknown_203B480
_08030B0C: .4byte gUnknown_203B320
_08030B10:
movs r1, 0
ldr r5, _08030B34
ldr r4, _08030B38
movs r3, 0
_08030B18:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x1
bne _08030B2A
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030B2A:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030B18
b _08030C0E
.align 2, 0
_08030B34: .4byte gUnknown_203B480
_08030B38: .4byte gUnknown_203B320
_08030B3C:
movs r1, 0
ldr r5, _08030B60
ldr r4, _08030B64
movs r3, 0
_08030B44:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x2
bne _08030B56
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030B56:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030B44
b _08030C0E
.align 2, 0
_08030B60: .4byte gUnknown_203B480
_08030B64: .4byte gUnknown_203B320
_08030B68:
movs r1, 0
ldr r5, _08030B8C
ldr r4, _08030B90
movs r3, 0
_08030B70:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x4
bne _08030B82
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030B82:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030B70
b _08030C0E
.align 2, 0
_08030B8C: .4byte gUnknown_203B480
_08030B90: .4byte gUnknown_203B320
_08030B94:
movs r1, 0
ldr r5, _08030BB8
ldr r4, _08030BBC
movs r3, 0
_08030B9C:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x3
bne _08030BAE
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030BAE:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030B9C
b _08030C0E
.align 2, 0
_08030BB8: .4byte gUnknown_203B480
_08030BBC: .4byte gUnknown_203B320
_08030BC0:
movs r1, 0
ldr r5, _08030BE4
ldr r4, _08030BE8
movs r3, 0
_08030BC8:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x5
bne _08030BDA
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030BDA:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030BC8
b _08030C0E
.align 2, 0
_08030BE4: .4byte gUnknown_203B480
_08030BE8: .4byte gUnknown_203B320
_08030BEC:
movs r1, 0
ldr r5, _08030C18
ldr r4, _08030C1C
movs r3, 0
_08030BF4:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x7
bne _08030C06
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030C06:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030BF4
_08030C0E:
adds r0, r2, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08030C18: .4byte gUnknown_203B480
_08030C1C: .4byte gUnknown_203B320
thumb_func_end sub_8030A74
thumb_func_start sub_8030C20
sub_8030C20:
push {lr}
cmp r0, 0x7
bls _08030C28
b _08030D34
_08030C28:
lsls r0, 2
ldr r1, _08030C34
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08030C34: .4byte _08030C38
.align 2, 0
_08030C38:
.4byte _08030C58
.4byte _08030C90
.4byte _08030CAC
.4byte _08030CE4
.4byte _08030CC8
.4byte _08030D00
.4byte _08030C74
.4byte _08030D20
_08030C58:
movs r1, 0
ldr r0, _08030C70
ldr r2, [r0]
_08030C5E:
ldrb r0, [r2]
cmp r0, 0
bne _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030C5E
b _08030D34
.align 2, 0
_08030C70: .4byte gUnknown_203B480
_08030C74:
movs r1, 0
ldr r0, _08030C8C
ldr r2, [r0]
_08030C7A:
ldrb r0, [r2]
cmp r0, 0x6
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030C7A
b _08030D34
.align 2, 0
_08030C8C: .4byte gUnknown_203B480
_08030C90:
movs r1, 0
ldr r0, _08030CA8
ldr r2, [r0]
_08030C96:
ldrb r0, [r2]
cmp r0, 0x1
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030C96
b _08030D34
.align 2, 0
_08030CA8: .4byte gUnknown_203B480
_08030CAC:
movs r1, 0
ldr r0, _08030CC4
ldr r2, [r0]
_08030CB2:
ldrb r0, [r2]
cmp r0, 0x2
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030CB2
b _08030D34
.align 2, 0
_08030CC4: .4byte gUnknown_203B480
_08030CC8:
movs r1, 0
ldr r0, _08030CE0
ldr r2, [r0]
_08030CCE:
ldrb r0, [r2]
cmp r0, 0x4
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030CCE
b _08030D34
.align 2, 0
_08030CE0: .4byte gUnknown_203B480
_08030CE4:
movs r1, 0
ldr r0, _08030CFC
ldr r2, [r0]
_08030CEA:
ldrb r0, [r2]
cmp r0, 0x3
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030CEA
b _08030D34
.align 2, 0
_08030CFC: .4byte gUnknown_203B480
_08030D00:
movs r1, 0
ldr r0, _08030D18
ldr r2, [r0]
_08030D06:
ldrb r0, [r2]
cmp r0, 0x5
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030D06
b _08030D34
.align 2, 0
_08030D18: .4byte gUnknown_203B480
_08030D1C:
movs r0, 0
b _08030D36
_08030D20:
movs r1, 0
ldr r0, _08030D3C
ldr r2, [r0]
_08030D26:
ldrb r0, [r2]
cmp r0, 0x7
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030D26
_08030D34:
movs r0, 0x1
_08030D36:
pop {r1}
bx r1
.align 2, 0
_08030D3C: .4byte gUnknown_203B480
thumb_func_end sub_8030C20
thumb_func_start sub_8030D40
sub_8030D40:
push {r4-r6,lr}
adds r4, r0, 0
adds r5, r1, 0
lsls r4, 24
lsrs r4, 24
ldr r6, _08030D98
movs r0, 0x78
movs r1, 0x8
bl MemoryAlloc
str r0, [r6]
strb r4, [r0, 0xC]
ldr r0, [r6]
bl sub_801317C
ldr r0, [r6]
str r5, [r0, 0x10]
lsls r1, r5, 1
adds r1, r5
lsls r1, 3
adds r1, 0x18
adds r1, r0, r1
str r1, [r0, 0x14]
adds r0, 0x18
bl sub_8006518
ldr r1, [r6]
ldr r2, [r1, 0x10]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x18
ldr r0, _08030D9C
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
bl sub_8030DD4
movs r0, 0x1
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08030D98: .4byte gUnknown_203B324
_08030D9C: .4byte gUnknown_80E091C
thumb_func_end sub_8030D40
thumb_func_start sub_8030DA0
sub_8030DA0:
push {lr}
ldr r0, _08030DC0
ldr r0, [r0]
ldr r1, [r0, 0x10]
bl sub_8012A64
cmp r0, 0x1
beq _08030DC4
cmp r0, 0x2
bne _08030DCE
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _08030DD0
.align 2, 0
_08030DC0: .4byte gUnknown_203B324
_08030DC4:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _08030DD0
_08030DCE:
movs r0, 0
_08030DD0:
pop {r1}
bx r1
thumb_func_end sub_8030DA0
thumb_func_start sub_8030DD4
sub_8030DD4:
push {lr}
bl sub_8030E2C
bl sub_8030E48
pop {r0}
bx r0
thumb_func_end sub_8030DD4
thumb_func_start sub_8030DE4
sub_8030DE4:
push {r4,r5,lr}
ldr r4, _08030E24
ldr r2, [r4]
cmp r2, 0
beq _08030E1E
ldr r0, [r2, 0x10]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x18
ldr r0, _08030E28
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x18
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_08030E1E:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08030E24: .4byte gUnknown_203B324
_08030E28: .4byte gUnknown_80E0900
thumb_func_end sub_8030DE4
thumb_func_start sub_8030E2C
sub_8030E2C:
push {lr}
bl ResetUnusedInputStruct
ldr r0, _08030E44
ldr r0, [r0]
adds r0, 0x18
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r0}
bx r0
.align 2, 0
_08030E44: .4byte gUnknown_203B324
thumb_func_end sub_8030E2C
thumb_func_start sub_8030E48
sub_8030E48:
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0x15C
ldr r3, _08030EA8
ldr r4, _08030EAC
ldr r2, [r4]
ldrb r1, [r2, 0xC]
lsls r0, r1, 1
adds r0, r1
lsls r0, 4
ldr r1, [r3]
adds r5, r1, r0
ldr r0, [r2, 0x10]
bl sub_80073B8
ldr r0, [r4]
ldr r0, [r0, 0x10]
str r0, [sp, 0x4]
add r1, sp, 0x44
movs r2, 0
movs r0, 0x7
strb r0, [r1]
mov r0, sp
adds r0, 0x46
strb r2, [r0]
add r0, sp, 0x48
strb r2, [r0]
adds r0, r5, 0x4
str r0, [sp, 0xC]
adds r0, 0x10
str r0, [sp, 0x10]
add r1, sp, 0x4
ldrh r0, [r5, 0xC]
strh r0, [r1, 0x10]
ldrh r0, [r5, 0xC]
strh r0, [r1, 0x12]
adds r0, r1, 0
strb r2, [r0, 0x14]
adds r2, r5, 0
adds r2, 0x22
ldrb r0, [r2]
cmp r0, 0
bne _08030EB0
adds r1, 0x2E
movs r0, 0x5
strb r0, [r1]
b _08030EBE
.align 2, 0
_08030EA8: .4byte gUnknown_203B480
_08030EAC: .4byte gUnknown_203B324
_08030EB0:
mov r1, sp
adds r1, 0x32
movs r0, 0x2
strb r0, [r1]
ldrb r1, [r2]
add r0, sp, 0x38
strb r1, [r0]
_08030EBE:
ldrb r0, [r5]
cmp r0, 0x2
beq _08030ED2
cmp r0, 0x2
ble _08030EE2
cmp r0, 0x4
beq _08030ED2
cmp r0, 0x5
beq _08030EDA
b _08030EE2
_08030ED2:
mov r1, sp
adds r1, 0x45
movs r0, 0xA
b _08030EE8
_08030EDA:
mov r1, sp
adds r1, 0x45
movs r0, 0xB
b _08030EE8
_08030EE2:
mov r1, sp
adds r1, 0x45
movs r0, 0x9
_08030EE8:
strb r0, [r1]
add r0, sp, 0x4
bl CreateRescueDescription
ldrh r0, [r5, 0x10]
ldr r1, _08030F48
bl __umodsi3
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
ldr r2, _08030F4C
ldr r5, _08030F50
ldr r0, [r5]
ldr r3, [r0, 0x10]
movs r0, 0
mov r8, r0
str r0, [sp]
movs r0, 0xA
movs r1, 0x68
bl xxx_call_draw_string
add r6, sp, 0x5C
ldr r1, _08030F54
adds r0, r6, 0
adds r2, r4, 0
bl ExpandPlaceholdersBuffer
ldr r0, [r5]
ldr r3, [r0, 0x10]
mov r0, r8
str r0, [sp]
movs r0, 0x44
movs r1, 0x68
adds r2, r6, 0
bl xxx_call_draw_string
ldr r0, [r5]
ldr r0, [r0, 0x10]
bl sub_80073E0
add sp, 0x15C
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08030F48: .4byte 0x00002710
_08030F4C: .4byte gUnknown_80E0934
_08030F50: .4byte gUnknown_203B324
_08030F54: .4byte gUnknown_80E0938
thumb_func_end sub_8030E48
thumb_func_start sub_8030F58
sub_8030F58:
push {r4-r6,lr}
adds r6, r0, 0
bl ResetUnusedInputStruct
movs r0, 0
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r5, _08030FF4
ldr r0, [r5]
cmp r0, 0
bne _08030F88
movs r4, 0x8E
lsls r4, 1
adds r0, r4, 0
movs r1, 0x8
bl MemoryAlloc
str r0, [r5]
movs r1, 0
adds r2, r4, 0
bl MemoryFill8
_08030F88:
ldr r0, [r5]
movs r1, 0x8C
lsls r1, 1
adds r0, r1
str r6, [r0]
movs r0, 0x98
lsls r0, 1
bl GetDialogueSpriteDataPtr
ldr r2, [r5]
movs r4, 0x84
lsls r4, 1
adds r1, r2, r4
str r0, [r1]
movs r3, 0x86
lsls r3, 1
adds r1, r2, r3
ldr r0, [r0, 0x4]
str r0, [r1]
movs r0, 0x8A
lsls r0, 1
adds r2, r0
movs r1, 0
strb r1, [r2]
ldr r0, [r5]
ldr r2, _08030FF8
adds r0, r2
strb r1, [r0]
ldr r0, [r5]
adds r3, 0xA
adds r0, r3
strb r1, [r0]
ldr r2, [r5]
movs r0, 0x88
lsls r0, 1
adds r1, r2, r0
movs r0, 0x2
strh r0, [r1]
subs r3, 0x4
adds r1, r2, r3
movs r0, 0x8
strh r0, [r1]
adds r0, r6, 0
bl sub_8030C20
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _08031038
cmp r6, 0x2
beq _08030FFC
cmp r6, 0x4
beq _08031014
b _08031022
.align 2, 0
_08030FF4: .4byte gUnknown_203B328
_08030FF8: .4byte 0x00000115
_08030FFC:
ldr r0, _0803100C
ldr r2, [r5]
adds r2, r4
ldr r3, _08031010
movs r1, 0
bl sub_80141B4
b _08031022
.align 2, 0
_0803100C: .4byte gUnknown_80E09D8
_08031010: .4byte 0x00000101
_08031014:
ldr r0, _0803102C
ldr r2, [r5]
adds r2, r4
ldr r3, _08031030
movs r1, 0
bl sub_80141B4
_08031022:
ldr r0, _08031034
ldr r1, [r0]
movs r0, 0x5
str r0, [r1]
b _08031048
.align 2, 0
_0803102C: .4byte gUnknown_80E0A0C
_08031030: .4byte 0x00000101
_08031034: .4byte gUnknown_203B328
_08031038:
ldr r0, [r5]
str r1, [r0]
adds r0, r6, 0
movs r1, 0
movs r2, 0
movs r3, 0x8
bl sub_80306A8
_08031048:
movs r0, 0x1
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8030F58
thumb_func_start sub_8031050
sub_8031050:
push {lr}
ldr r1, _08031068
ldr r0, [r1]
ldr r0, [r0]
adds r2, r1, 0
cmp r0, 0x6
bhi _080310AC
lsls r0, 2
ldr r1, _0803106C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08031068: .4byte gUnknown_203B328
_0803106C: .4byte _08031070
.align 2, 0
_08031070:
.4byte _0803108C
.4byte _08031092
.4byte _08031098
.4byte _08031098
.4byte _080310A2
.4byte _080310A8
.4byte _080310A8
_0803108C:
bl sub_8031300
b _080310AC
_08031092:
bl sub_803136C
b _080310AC
_08031098:
ldr r0, [r2]
ldr r0, [r0]
bl sub_80313D8
b _080310AC
_080310A2:
bl sub_8031498
b _080310AC
_080310A8:
movs r0, 0x3
b _080310AE
_080310AC:
movs r0, 0
_080310AE:
pop {r1}
bx r1
thumb_func_end sub_8031050
thumb_func_start sub_80310B4
sub_80310B4:
push {r4,lr}
bl sub_803084C
ldr r4, _080310E0
ldr r0, [r4]
cmp r0, 0
beq _080310D8
movs r1, 0x84
lsls r1, 1
adds r0, r1
ldr r0, [r0]
bl CloseFile
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_080310D8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080310E0: .4byte gUnknown_203B328
thumb_func_end sub_80310B4
thumb_func_start sub_80310E4
sub_80310E4:
push {lr}
ldr r1, _080310F8
ldr r1, [r1]
str r0, [r1]
bl sub_80310FC
bl sub_8031258
pop {r0}
bx r0
.align 2, 0
_080310F8: .4byte gUnknown_203B328
thumb_func_end sub_80310E4
thumb_func_start sub_80310FC
sub_80310FC:
push {r4-r6,lr}
ldr r4, _0803111C
ldr r0, [r4]
adds r0, 0xA8
bl sub_8006518
ldr r0, [r4]
ldr r0, [r0]
cmp r0, 0x6
bls _08031112
b _0803122C
_08031112:
lsls r0, 2
ldr r1, _08031120
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803111C: .4byte gUnknown_203B328
_08031120: .4byte _08031124
.align 2, 0
_08031124:
.4byte _08031140
.4byte _08031178
.4byte _080311C0
.4byte _080311C0
.4byte _080311E8
.4byte _0803122C
.4byte _0803122C
_08031140:
ldr r3, _08031170
ldr r1, [r3]
ldr r2, _08031174
adds r1, 0xC0
adds r0, r2, 0
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldr r1, [r3]
adds r1, 0xD8
adds r0, r2, 0
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldr r0, [r3]
adds r0, 0xF0
ldm r2!, {r1,r3,r4}
stm r0!, {r1,r3,r4}
ldm r2!, {r1,r5,r6}
stm r0!, {r1,r5,r6}
b _0803123A
.align 2, 0
_08031170: .4byte gUnknown_203B328
_08031174: .4byte gUnknown_80E0990
_08031178:
ldr r3, _080311B0
ldr r1, [r3]
adds r1, 0xC0
ldr r0, _080311B4
ldm r0!, {r2,r4,r5}
stm r1!, {r2,r4,r5}
ldm r0!, {r2,r4,r6}
stm r1!, {r2,r4,r6}
ldr r1, [r3]
ldr r2, _080311B8
adds r1, 0xD8
adds r0, r2, 0
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldr r0, [r3]
adds r0, 0xF0
ldm r2!, {r1,r5,r6}
stm r0!, {r1,r5,r6}
ldm r2!, {r4-r6}
stm r0!, {r4-r6}
ldr r0, [r3]
adds r0, 0xC0
ldr r1, _080311BC
bl sub_8012CAC
b _0803123A
.align 2, 0
_080311B0: .4byte gUnknown_203B328
_080311B4: .4byte gUnknown_80E09A8
_080311B8: .4byte gUnknown_80E0990
_080311BC: .4byte gUnknown_80E0968
_080311C0:
ldr r2, _080311DC
ldr r1, [r2]
adds r1, 0xD8
ldr r0, _080311E0
ldm r0!, {r3-r5}
stm r1!, {r3-r5}
ldm r0!, {r3,r4,r6}
stm r1!, {r3,r4,r6}
ldr r0, [r2]
adds r0, 0xD8
ldr r1, _080311E4
bl sub_8012CAC
b _0803123A
.align 2, 0
_080311DC: .4byte gUnknown_203B328
_080311E0: .4byte gUnknown_80E09C0
_080311E4: .4byte gUnknown_80E0948
_080311E8:
ldr r3, _08031224
ldr r1, [r3]
ldr r2, _08031228
adds r1, 0xA8
adds r0, r2, 0
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldr r1, [r3]
adds r1, 0xC0
adds r0, r2, 0
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldr r1, [r3]
adds r1, 0xD8
adds r0, r2, 0
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldr r0, [r3]
adds r0, 0xF0
ldm r2!, {r1,r5,r6}
stm r0!, {r1,r5,r6}
ldm r2!, {r3-r5}
stm r0!, {r3-r5}
b _0803123A
.align 2, 0
_08031224: .4byte gUnknown_203B328
_08031228: .4byte gUnknown_80E0990
_0803122C:
bl ResetUnusedInputStruct
movs r0, 0
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
_0803123A:
bl ResetUnusedInputStruct
ldr r0, _08031254
ldr r0, [r0]
adds r0, 0xA8
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08031254: .4byte gUnknown_203B328
thumb_func_end sub_80310FC
thumb_func_start sub_8031258
sub_8031258:
push {r4,lr}
sub sp, 0x8
ldr r1, _08031274
ldr r0, [r1]
ldr r0, [r0]
adds r2, r1, 0
cmp r0, 0x6
bhi _080312F6
lsls r0, 2
ldr r1, _08031278
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08031274: .4byte gUnknown_203B328
_08031278: .4byte _0803127C
.align 2, 0
_0803127C:
.4byte _08031298
.4byte _080312A0
.4byte _080312BC
.4byte _080312BC
.4byte _080312EC
.4byte _080312F6
.4byte _080312F6
_08031298:
movs r0, 0x1
bl sub_8030810
b _080312F6
_080312A0:
bl sub_803092C
ldr r0, _080312B4
ldr r0, [r0]
adds r0, 0x8
ldr r1, _080312B8
movs r2, 0x4
str r2, [sp]
movs r2, 0x1
b _080312D8
.align 2, 0
_080312B4: .4byte gUnknown_203B328
_080312B8: .4byte gUnknown_80E0968
_080312BC:
bl sub_803092C
ldr r4, _080312E4
ldr r0, [r4]
adds r0, 0x8
movs r1, 0
bl sub_8012EA4
ldr r0, [r4]
adds r0, 0x58
ldr r1, _080312E8
movs r2, 0x3
str r2, [sp]
movs r2, 0x2
_080312D8:
str r2, [sp, 0x4]
movs r2, 0
movs r3, 0
bl sub_8012D60
b _080312F6
.align 2, 0
_080312E4: .4byte gUnknown_203B328
_080312E8: .4byte gUnknown_80E0948
_080312EC:
ldr r0, [r2]
ldrb r0, [r0, 0x4]
movs r1, 0x3
bl sub_8030D40
_080312F6:
add sp, 0x8
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8031258
thumb_func_start sub_8031300
sub_8031300:
push {lr}
movs r0, 0x1
bl sub_8030768
cmp r0, 0x4
bhi _08031366
lsls r0, 2
ldr r1, _08031318
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08031318: .4byte _0803131C
.align 2, 0
_0803131C:
.4byte _08031366
.4byte _08031366
.4byte _08031360
.4byte _08031330
.4byte _08031348
_08031330:
bl sub_80307EC
ldr r1, _08031344
ldr r1, [r1]
strb r0, [r1, 0x4]
movs r0, 0x1
bl sub_80310E4
b _08031366
.align 2, 0
_08031344: .4byte gUnknown_203B328
_08031348:
bl sub_80307EC
ldr r1, _0803135C
ldr r1, [r1]
strb r0, [r1, 0x4]
movs r0, 0x4
bl sub_80310E4
b _08031366
.align 2, 0
_0803135C: .4byte gUnknown_203B328
_08031360:
movs r0, 0x6
bl sub_80310E4
_08031366:
pop {r0}
bx r0
thumb_func_end sub_8031300
thumb_func_start sub_803136C
sub_803136C:
push {r4,lr}
sub sp, 0x4
movs r0, 0
str r0, [sp]
bl sub_8030768
ldr r4, _080313A4
ldr r0, [r4]
adds r0, 0x8
bl sub_8012FD8
lsls r0, 24
cmp r0, 0
bne _08031392
ldr r0, [r4]
adds r0, 0x8
mov r1, sp
bl sub_8013114
_08031392:
ldr r0, [sp]
cmp r0, 0x4
beq _080313C2
cmp r0, 0x4
bgt _080313A8
cmp r0, 0x1
beq _080313B2
b _080313D0
.align 2, 0
_080313A4: .4byte gUnknown_203B328
_080313A8:
cmp r0, 0x5
beq _080313CA
cmp r0, 0x6
beq _080313BA
b _080313D0
_080313B2:
movs r0, 0
bl sub_80310E4
b _080313D0
_080313BA:
movs r0, 0x3
bl sub_80310E4
b _080313D0
_080313C2:
movs r0, 0x2
bl sub_80310E4
b _080313D0
_080313CA:
movs r0, 0x4
bl sub_80310E4
_080313D0:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_803136C
thumb_func_start sub_80313D8
sub_80313D8:
push {r4,r5,lr}
sub sp, 0x4
adds r5, r0, 0
movs r0, 0
str r0, [sp]
bl sub_8030768
ldr r4, _08031418
ldr r0, [r4]
adds r0, 0x8
bl sub_8012FD8
ldr r0, [r4]
adds r0, 0x58
bl sub_8012FD8
lsls r0, 24
cmp r0, 0
bne _08031408
ldr r0, [r4]
adds r0, 0x58
mov r1, sp
bl sub_8013114
_08031408:
ldr r0, [sp]
cmp r0, 0x2
beq _08031428
cmp r0, 0x2
bgt _0803141C
cmp r0, 0x1
beq _08031420
b _0803148E
.align 2, 0
_08031418: .4byte gUnknown_203B328
_0803141C:
cmp r0, 0x3
bne _0803148E
_08031420:
movs r0, 0
bl sub_80310E4
b _0803148E
_08031428:
cmp r5, 0x2
beq _08031432
cmp r5, 0x3
beq _0803143C
b _0803145A
_08031432:
ldr r0, [r4]
ldrb r0, [r0, 0x4]
bl sub_8095240
b _0803145A
_0803143C:
ldr r4, _08031480
movs r3, 0
movs r1, 0
movs r2, 0x1F
_08031444:
ldr r0, [r4]
adds r0, r1
strb r3, [r0]
ldr r0, [r4]
adds r0, r1
adds r0, 0x22
strb r3, [r0]
adds r1, 0x30
subs r2, 0x1
cmp r2, 0
bge _08031444
_0803145A:
ldr r0, _08031484
ldr r0, [r0]
movs r1, 0x8C
lsls r1, 1
adds r0, r1
ldr r0, [r0]
cmp r0, 0x2
beq _0803146E
cmp r0, 0x4
bne _0803148E
_0803146E:
bl sub_8030C20
lsls r0, 24
cmp r0, 0
beq _08031488
movs r0, 0x5
bl sub_80310E4
b _0803148E
.align 2, 0
_08031480: .4byte gUnknown_203B480
_08031484: .4byte gUnknown_203B328
_08031488:
movs r0, 0
bl sub_80310E4
_0803148E:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80313D8
thumb_func_start sub_8031498
sub_8031498:
push {lr}
bl sub_8030DA0
cmp r0, 0x1
bls _080314B0
cmp r0, 0x3
bhi _080314B0
bl sub_8030DE4
movs r0, 0
bl sub_80310E4
_080314B0:
pop {r0}
bx r0
thumb_func_end sub_8031498