pmd-red/asm/ground_map_1.s
2024-10-26 19:10:29 -07:00

2248 lines
33 KiB
ArmAsm

#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start GroundMap_Select
GroundMap_Select:
push {r4-r6,lr}
lsls r0, 16
asrs r5, r0, 16
ldr r1, _080A4E38
movs r0, 0
adds r2, r5, 0
bl Log
movs r0, 0
movs r1, 0x37
bl ClearScriptVarArray
movs r0, 0
movs r1, 0x38
bl ClearScriptVarArray
movs r0, 0
bl sub_80A5EDC
ldr r4, _080A4E3C
ldr r0, [r4]
cmp r0, 0
beq _080A4E08
bl sub_80A2D00
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_080A4E08:
ldr r0, _080A4E40
movs r1, 0x6
bl MemoryAlloc
adds r2, r0, 0
str r2, [r4]
ldr r0, _080A4E44
ldr r0, [r0]
adds r0, 0xE4
strh r5, [r0]
movs r0, 0x1
negs r0, r0
cmp r5, r0
bne _080A4E4C
ldr r1, _080A4E48
adds r0, r2, 0
bl sub_80A2B40
ldr r0, [r4]
adds r1, r5, 0
bl sub_80A2FBC
b _080A50BA
.align 2, 0
_080A4E38: .4byte gUnknown_81176A4
_080A4E3C: .4byte gGroundMapDungeon_3001B70
_080A4E40: .4byte 0x0000055c
_080A4E44: .4byte gGroundMapAction
_080A4E48: .4byte gUnknown_8117324
_080A4E4C:
lsls r0, r5, 1
adds r0, r5
lsls r0, 2
ldr r1, _080A4E6C
adds r6, r0, r1
ldrh r0, [r6]
adds r0, 0x1
lsls r0, 16
asrs r0, 16
cmp r0, 0xC
bhi _080A4F20
lsls r0, 2
ldr r1, _080A4E70
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080A4E6C: .4byte gGroundConversion_811BAF4
_080A4E70: .4byte _080A4E74
.align 2, 0
_080A4E74:
.4byte _080A4F08
.4byte _080A4F20
.4byte _080A4F20
.4byte _080A4F20
.4byte _080A4F20
.4byte _080A4F20
.4byte _080A4EA8
.4byte _080A4EA8
.4byte _080A4EA8
.4byte _080A4EA8
.4byte _080A4EA8
.4byte _080A4ECC
.4byte _080A4ECC
_080A4EA8:
ldr r0, _080A4EC0
ldr r0, [r0]
ldr r1, _080A4EC4
bl sub_80A2B40
ldr r1, _080A4EC8
movs r2, 0x80
lsls r2, 5
adds r0, r2, 0
strh r0, [r1]
b _080A4F30
.align 2, 0
_080A4EC0: .4byte gGroundMapDungeon_3001B70
_080A4EC4: .4byte gUnknown_811733C
_080A4EC8: .4byte gUnknown_2026E4E
_080A4ECC:
ldr r4, _080A4EDC
movs r1, 0
ldrsh r0, [r4, r1]
movs r1, 0x1
negs r1, r1
ldr r6, _080A4EE0
b _080A4EEA
.align 2, 0
_080A4EDC: .4byte gUnknown_81173C0
_080A4EE0: .4byte gGroundMapDungeon_3001B70
_080A4EE4:
adds r4, 0xC
movs r2, 0
ldrsh r0, [r4, r2]
_080A4EEA:
cmp r0, r1
beq _080A4EF2
cmp r0, r5
bne _080A4EE4
_080A4EF2:
ldr r0, [r6]
bl MemoryFree
movs r0, 0
str r0, [r6]
adds r1, r4, 0x4
ldr r2, [r4, 0x8]
adds r0, r5, 0
bl GroundMap_SelectDungeon
b _080A50BA
_080A4F08:
ldr r0, _080A4F18
ldr r1, _080A4F1C
movs r2, 0
ldrsh r3, [r6, r2]
adds r2, r5, 0
bl FatalError
.align 2, 0
_080A4F18: .4byte gUnknown_81176D0
_080A4F1C: .4byte gUnknown_81176DC
_080A4F20:
ldr r0, _080A4FA0
ldr r0, [r0]
ldr r1, _080A4FA4
bl sub_80A2B40
movs r0, 0x1
bl sub_80A5EDC
_080A4F30:
ldr r5, _080A4FA0
ldr r0, [r5]
movs r2, 0x4
ldrsh r1, [r6, r2]
bl sub_80A2FBC
ldr r0, _080A4FA8
ldr r0, [r0]
mov r12, r0
adds r0, 0xE8
movs r1, 0
str r1, [r0]
adds r0, 0x4
str r1, [r0]
adds r0, 0x4
str r1, [r0]
adds r0, 0x4
str r1, [r0]
adds r0, 0x4
str r1, [r0]
adds r0, 0x4
str r1, [r0]
movs r4, 0x80
lsls r4, 1
add r4, r12
movs r3, 0x82
lsls r3, 1
add r3, r12
movs r2, 0x84
lsls r2, 1
add r2, r12
movs r0, 0x86
lsls r0, 1
add r0, r12
str r1, [r0]
str r1, [r2]
str r1, [r3]
str r1, [r4]
mov r0, r12
adds r0, 0xE4
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0xAD
beq _080A5034
cmp r0, 0xAD
bgt _080A4FC0
cmp r0, 0xA3
bgt _080A4FAC
cmp r0, 0xA2
bge _080A4FEE
cmp r0, 0x4
beq _080A5084
cmp r0, 0xA1
beq _080A5084
b _080A50A2
.align 2, 0
_080A4FA0: .4byte gGroundMapDungeon_3001B70
_080A4FA4: .4byte gUnknown_8117324
_080A4FA8: .4byte gGroundMapAction
_080A4FAC:
cmp r0, 0xAA
beq _080A500C
cmp r0, 0xAA
bgt _080A4FBA
cmp r0, 0xA8
beq _080A500C
b _080A50A2
_080A4FBA:
cmp r0, 0xAB
beq _080A5018
b _080A50A2
_080A4FC0:
cmp r0, 0xBA
beq _080A506A
cmp r0, 0xBA
bgt _080A4FD6
cmp r0, 0xAF
beq _080A5072
cmp r0, 0xAF
blt _080A5044
cmp r0, 0xB0
beq _080A5060
b _080A50A2
_080A4FD6:
cmp r0, 0xDF
beq _080A4FEE
cmp r0, 0xDF
bgt _080A4FE4
cmp r0, 0xC0
beq _080A5020
b _080A50A2
_080A4FE4:
cmp r0, 0xE0
beq _080A508E
cmp r0, 0xE1
beq _080A5096
b _080A50A2
_080A4FEE:
ldr r0, _080A5000
ldr r0, [r0]
movs r1, 0x4
bl sub_80A3BB0
ldr r1, _080A5004
ldr r2, _080A5008
b _080A5050
.align 2, 0
_080A5000: .4byte gGroundMapDungeon_3001B70
_080A5004: .4byte gUnknown_2026E4E
_080A5008: .4byte 0x00000808
_080A500C:
ldr r0, _080A5014
ldr r0, [r0]
b _080A5062
.align 2, 0
_080A5014: .4byte gGroundMapDungeon_3001B70
_080A5018:
ldr r0, [r5]
movs r1, 0x1
bl sub_80A3BB0
_080A5020:
ldr r0, _080A5030
ldr r0, [r0]
movs r1, 0
movs r2, 0
bl sub_80A3B80
b _080A50A2
.align 2, 0
_080A5030: .4byte gGroundMapDungeon_3001B70
_080A5034:
ldr r1, _080A503C
ldr r2, _080A5040
b _080A5050
.align 2, 0
_080A503C: .4byte gUnknown_2026E4E
_080A5040: .4byte 0x00001010
_080A5044:
ldr r0, [r5]
movs r1, 0x4
bl sub_80A3BB0
ldr r1, _080A5058
ldr r2, _080A505C
_080A5050:
adds r0, r2, 0
strh r0, [r1]
b _080A50A2
.align 2, 0
_080A5058: .4byte gUnknown_2026E4E
_080A505C: .4byte 0x0000080c
_080A5060:
ldr r0, [r5]
_080A5062:
movs r1, 0x1
bl sub_80A3BB0
b _080A50A2
_080A506A:
ldr r0, _080A507C
ldr r2, _080A5080
adds r1, r2, 0
strh r1, [r0]
_080A5072:
ldr r0, [r5]
movs r1, 0x4
bl sub_80A3BB0
b _080A50A2
.align 2, 0
_080A507C: .4byte gUnknown_2026E4E
_080A5080: .4byte 0x00001010
_080A5084:
ldr r0, [r5]
movs r1, 0x3
bl sub_80A3BB0
b _080A50A2
_080A508E:
ldr r0, [r5]
movs r1, 0x3
bl sub_80A3BB0
_080A5096:
ldr r0, _080A50C0
ldr r0, [r0]
movs r1, 0
movs r2, 0
bl sub_80A3B80
_080A50A2:
movs r0, 0x6
ldrsh r1, [r6, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080A50B4
adds r0, r1, 0
bl GroundWeather_Select
_080A50B4:
ldr r0, _080A50C4
bl sub_80A56D8
_080A50BA:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A50C0: .4byte gGroundMapDungeon_3001B70
_080A50C4: .4byte gUnknown_81176F8
thumb_func_end GroundMap_Select
thumb_func_start GroundMap_SelectDungeon
GroundMap_SelectDungeon:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
mov r8, r1
mov r10, r2
lsls r0, 16
asrs r5, r0, 16
ldr r1, _080A514C
movs r0, 0
adds r2, r5, 0
bl Log
movs r0, 0
movs r1, 0x37
bl ClearScriptVarArray
movs r0, 0
movs r1, 0x38
bl ClearScriptVarArray
movs r0, 0
bl sub_80A5EDC
ldr r7, _080A5150
ldr r0, [r7]
cmp r0, 0
beq _080A5110
bl sub_80A2D00
ldr r0, [r7]
bl MemoryFree
movs r0, 0
str r0, [r7]
_080A5110:
ldr r0, _080A5154
movs r1, 0x6
bl MemoryAlloc
adds r2, r0, 0
str r2, [r7]
ldr r0, _080A5158
mov r9, r0
ldr r0, [r0]
adds r0, 0xE4
movs r4, 0
strh r5, [r0]
movs r6, 0x1
negs r6, r6
cmp r5, r6
beq _080A5138
mov r1, r8
ldrb r0, [r1]
cmp r0, 0x63
bne _080A5160
_080A5138:
ldr r1, _080A515C
adds r0, r2, 0
bl sub_80A2B40
ldr r0, [r7]
adds r1, r6, 0
bl sub_80A2FBC
b _080A51EC
.align 2, 0
_080A514C: .4byte gUnknown_8117700
_080A5150: .4byte gGroundMapDungeon_3001B70
_080A5154: .4byte 0x0000055c
_080A5158: .4byte gGroundMapAction
_080A515C: .4byte gUnknown_8117324
_080A5160:
lsls r0, r5, 1
adds r0, r5
lsls r0, 2
ldr r1, _080A5180
adds r6, r0, r1
ldrh r0, [r6]
subs r0, 0xA
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bls _080A518C
ldr r0, _080A5184
ldr r1, _080A5188
adds r2, r5, 0
bl FatalError
.align 2, 0
_080A5180: .4byte gGroundConversion_811BAF4
_080A5184: .4byte gUnknown_8117734
_080A5188: .4byte gUnknown_8117740
_080A518C:
ldr r1, _080A51FC
adds r0, r2, 0
bl sub_80A2B40
movs r0, 0x1
bl sub_80A5EDC
ldr r0, [r7]
movs r2, 0x4
ldrsh r1, [r6, r2]
mov r2, r8
mov r3, r10
bl sub_80A3440
mov r0, r9
ldr r0, [r0]
mov r12, r0
adds r0, 0xE8
str r4, [r0]
adds r0, 0x4
str r4, [r0]
adds r0, 0x4
str r4, [r0]
adds r0, 0x4
str r4, [r0]
adds r0, 0x4
str r4, [r0]
adds r0, 0x4
str r4, [r0]
movs r3, 0x80
lsls r3, 1
add r3, r12
movs r2, 0x82
lsls r2, 1
add r2, r12
movs r1, 0x84
lsls r1, 1
add r1, r12
movs r0, 0x86
lsls r0, 1
add r0, r12
str r4, [r0]
str r4, [r1]
str r4, [r2]
str r4, [r3]
ldr r0, _080A5200
bl sub_80A56D8
_080A51EC:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A51FC: .4byte gUnknown_8117354
_080A5200: .4byte gUnknown_8117754
thumb_func_end GroundMap_SelectDungeon
thumb_func_start sub_80A5204
sub_80A5204:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x18
str r0, [sp]
mov r8, r1
str r2, [sp, 0x4]
str r3, [sp, 0x8]
movs r1, 0x8
ldrsh r0, [r2, r1]
cmp r0, 0
bgt _080A5222
b _080A53EA
_080A5222:
mov r5, r8
ldr r2, [sp]
mov r12, r2
movs r0, 0
ldr r3, [sp, 0x4]
ldrb r3, [r3, 0x1]
str r3, [sp, 0x10]
ldr r1, [sp, 0x4]
ldrh r2, [r1, 0xA]
mov r1, sp
strh r2, [r1, 0xC]
movs r1, 0xFF
_080A523A:
adds r0, 0x1
mov r10, r0
movs r3, 0xFF
mov r9, r3
_080A5242:
mov r0, r12
strb r1, [r0]
movs r2, 0x1
add r12, r2
movs r3, 0x1
negs r3, r3
add r9, r3
mov r0, r9
cmp r0, 0
bge _080A5242
mov r0, r10
cmp r0, 0x3
ble _080A523A
movs r1, 0
ldr r2, [sp, 0x10]
cmp r1, r2
blt _080A5266
b _080A53BA
_080A5266:
ldr r3, [sp, 0x4]
ldrb r7, [r3]
_080A526A:
adds r0, 0x1
mov r10, r0
adds r0, r1, 0x1
str r0, [sp, 0x14]
movs r0, 0xFF
movs r2, 0x4
mov r9, r2
_080A5278:
mov r3, r12
strb r0, [r3]
movs r2, 0x1
add r12, r2
movs r3, 0x1
negs r3, r3
add r9, r3
mov r2, r9
cmp r2, 0
bge _080A5278
movs r3, 0x5
mov r9, r3
movs r0, 0
cmp r1, 0
bne _080A5308
cmp r1, r7
bge _080A5394
_080A529A:
ldrb r1, [r5]
adds r5, 0x1
cmp r1, 0xBF
ble _080A52C2
adds r6, r0, 0
subs r6, 0xBF
cmp r1, 0xBF
ble _080A5300
adds r2, r1, 0
subs r2, 0xBF
_080A52AE:
ldrb r0, [r5]
mov r3, r12
strb r0, [r3]
adds r5, 0x1
movs r0, 0x1
add r12, r0
subs r2, 0x1
cmp r2, 0
bne _080A52AE
b _080A5300
_080A52C2:
cmp r1, 0x7F
ble _080A52E6
ldrb r4, [r5]
adds r5, 0x1
adds r6, r0, 0
subs r6, 0x7F
cmp r1, 0x7F
ble _080A5300
adds r2, r1, 0
subs r2, 0x7F
_080A52D6:
mov r3, r12
strb r4, [r3]
movs r0, 0x1
add r12, r0
subs r2, 0x1
cmp r2, 0
bne _080A52D6
b _080A5300
_080A52E6:
movs r2, 0
adds r6, r0, 0x1
cmp r2, r1
bgt _080A5300
movs r0, 0
adds r2, r1, 0x1
_080A52F2:
mov r3, r12
strb r0, [r3]
movs r3, 0x1
add r12, r3
subs r2, 0x1
cmp r2, 0
bne _080A52F2
_080A5300:
adds r0, r6, r1
cmp r0, r7
blt _080A529A
b _080A5394
_080A5308:
ldr r4, _080A5340
add r4, r12
cmp r0, r7
bge _080A5394
_080A5310:
ldrb r3, [r5]
adds r5, 0x1
cmp r3, 0xBF
ble _080A5344
adds r6, r0, 0
subs r6, 0xBF
cmp r3, 0xBF
ble _080A538E
adds r2, r3, 0
subs r2, 0xBF
_080A5324:
ldrb r1, [r5]
ldrb r0, [r4]
eors r1, r0
mov r0, r12
strb r1, [r0]
adds r4, 0x1
adds r5, 0x1
movs r1, 0x1
add r12, r1
subs r2, 0x1
cmp r2, 0
bne _080A5324
b _080A538E
.align 2, 0
_080A5340: .4byte 0xffffff00
_080A5344:
cmp r3, 0x7F
ble _080A5372
ldrb r2, [r5]
mov r8, r2
adds r5, 0x1
adds r6, r0, 0
subs r6, 0x7F
cmp r3, 0x7F
ble _080A538E
adds r2, r3, 0
subs r2, 0x7F
_080A535A:
ldrb r1, [r4]
mov r0, r8
eors r0, r1
mov r1, r12
strb r0, [r1]
adds r4, 0x1
movs r0, 0x1
add r12, r0
subs r2, 0x1
cmp r2, 0
bne _080A535A
b _080A538E
_080A5372:
movs r2, 0
adds r6, r0, 0x1
cmp r2, r3
bgt _080A538E
adds r2, r3, 0x1
_080A537C:
ldrb r0, [r4]
mov r1, r12
strb r0, [r1]
adds r4, 0x1
movs r0, 0x1
add r12, r0
subs r2, 0x1
cmp r2, 0
bne _080A537C
_080A538E:
adds r0, r6, r3
cmp r0, r7
blt _080A5310
_080A5394:
add r9, r7
mov r1, r9
cmp r1, 0xFF
bgt _080A53AE
movs r0, 0xFF
_080A539E:
mov r2, r12
strb r0, [r2]
movs r3, 0x1
add r12, r3
add r9, r3
mov r1, r9
cmp r1, 0xFF
ble _080A539E
_080A53AE:
ldr r1, [sp, 0x14]
mov r0, r10
ldr r2, [sp, 0x10]
cmp r1, r2
bge _080A53BA
b _080A526A
_080A53BA:
ldr r3, [sp, 0x8]
cmp r0, r3
bge _080A53E6
movs r1, 0xFF
_080A53C2:
adds r0, 0x1
mov r10, r0
movs r0, 0xFF
mov r9, r0
_080A53CA:
mov r2, r12
strb r1, [r2]
movs r3, 0x1
add r12, r3
movs r0, 0x1
negs r0, r0
add r9, r0
mov r2, r9
cmp r2, 0
bge _080A53CA
mov r0, r10
ldr r3, [sp, 0x8]
cmp r0, r3
blt _080A53C2
_080A53E6:
mov r8, r5
b _080A547E
_080A53EA:
ldr r1, [sp]
movs r0, 0
ldr r2, [sp, 0x4]
ldrb r2, [r2, 0x1]
str r2, [sp, 0x10]
ldr r3, [sp, 0x4]
ldrh r2, [r3, 0xA]
mov r3, sp
strh r2, [r3, 0xC]
movs r6, 0xFF
_080A53FE:
adds r5, r0, 0x1
movs r4, 0xFF
_080A5402:
strb r6, [r1]
adds r1, 0x1
subs r4, 0x1
cmp r4, 0
bge _080A5402
adds r0, r5, 0
cmp r0, 0x3
ble _080A53FE
movs r4, 0
ldr r3, [sp, 0x10]
cmp r4, r3
bge _080A5460
ldr r2, [sp, 0x4]
ldrb r7, [r2]
movs r3, 0xFF
_080A5420:
adds r5, r0, 0x1
adds r2, r4, 0x1
movs r4, 0x4
_080A5426:
strb r3, [r1]
adds r1, 0x1
subs r4, 0x1
cmp r4, 0
bge _080A5426
movs r4, 0x5
cmp r7, 0
beq _080A5444
movs r6, 0
adds r0, r7, 0
_080A543A:
strb r6, [r1]
adds r1, 0x1
subs r0, 0x1
cmp r0, 0
bne _080A543A
_080A5444:
adds r4, r7
cmp r4, 0xFF
bgt _080A5456
movs r0, 0xFF
_080A544C:
strb r0, [r1]
adds r1, 0x1
adds r4, 0x1
cmp r4, 0xFF
ble _080A544C
_080A5456:
adds r4, r2, 0
adds r0, r5, 0
ldr r2, [sp, 0x10]
cmp r4, r2
blt _080A5420
_080A5460:
ldr r3, [sp, 0x8]
cmp r0, r3
bge _080A547E
movs r6, 0xFF
_080A5468:
adds r5, r0, 0x1
movs r4, 0xFF
_080A546C:
strb r6, [r1]
adds r1, 0x1
subs r4, 0x1
cmp r4, 0
bge _080A546C
adds r0, r5, 0
ldr r2, [sp, 0x8]
cmp r0, r2
blt _080A5468
_080A547E:
mov r3, sp
ldrh r3, [r3, 0xC]
lsls r0, r3, 16
cmp r0, 0
bgt _080A548A
b _080A5590
_080A548A:
mov r6, r8
ldr r0, [sp]
movs r1, 0x80
lsls r1, 3
adds r2, r0, r1
movs r0, 0
ldr r3, [sp, 0x10]
cmp r0, r3
bge _080A5586
movs r1, 0xFB
mov r10, r1
_080A54A0:
adds r2, 0x5
movs r4, 0
cmp r0, 0
bne _080A54EC
ldr r3, [sp, 0x4]
ldrb r7, [r3]
movs r1, 0x1
mov r9, r1
cmp r0, r7
bge _080A5574
_080A54B4:
ldrb r1, [r6]
adds r6, 0x1
cmp r1, 0x7F
ble _080A54DE
subs r4, 0x7F
cmp r1, 0x7F
ble _080A54D6
movs r5, 0x80
adds r3, r1, 0
subs r3, 0x7F
_080A54C8:
ldrb r0, [r2]
orrs r0, r5
strb r0, [r2]
adds r2, 0x1
subs r3, 0x1
cmp r3, 0
bne _080A54C8
_080A54D6:
adds r4, r1
ldr r3, [sp, 0x4]
ldrb r7, [r3]
b _080A54E6
_080A54DE:
adds r0, r1, 0x1
adds r2, r0
adds r0, r4, 0x1
adds r4, r0, r1
_080A54E6:
cmp r4, r7
blt _080A54B4
b _080A5574
_080A54EC:
ldr r1, _080A5538
adds r1, r2
mov r12, r1
ldr r3, [sp, 0x4]
ldrb r7, [r3]
adds r0, 0x1
mov r9, r0
cmp r4, r7
bge _080A5574
_080A54FE:
ldrb r5, [r6]
adds r6, 0x1
cmp r5, 0x7F
ble _080A553C
subs r4, 0x7F
cmp r5, 0x7F
ble _080A556A
movs r7, 0x80
movs r0, 0x80
mov r8, r0
adds r3, r5, 0
subs r3, 0x7F
_080A5516:
mov r0, r12
ldrb r1, [r0]
mov r0, r8
ands r0, r1
movs r1, 0x1
add r12, r1
cmp r0, 0
bne _080A552C
ldrb r0, [r2]
orrs r0, r7
strb r0, [r2]
_080A552C:
adds r2, 0x1
subs r3, 0x1
cmp r3, 0
bne _080A5516
b _080A556A
.align 2, 0
_080A5538: .4byte 0xffffff00
_080A553C:
movs r3, 0
adds r4, 0x1
cmp r3, r5
bgt _080A556A
movs r7, 0x80
movs r3, 0x80
mov r8, r3
adds r3, r5, 0x1
_080A554C:
mov r0, r12
ldrb r1, [r0]
mov r0, r8
ands r0, r1
movs r1, 0x1
add r12, r1
cmp r0, 0
beq _080A5562
ldrb r0, [r2]
orrs r0, r7
strb r0, [r2]
_080A5562:
adds r2, 0x1
subs r3, 0x1
cmp r3, 0
bne _080A554C
_080A556A:
adds r4, r5
ldr r3, [sp, 0x4]
ldrb r7, [r3]
cmp r4, r7
blt _080A54FE
_080A5574:
mov r1, r10
subs r0, r1, r7
adds r2, r0
mov r0, r9
ldr r3, [sp, 0x4]
ldrb r3, [r3, 0x1]
str r3, [sp, 0x10]
cmp r0, r3
blt _080A54A0
_080A5586:
mov r8, r6
ldr r0, [sp, 0x4]
ldrh r1, [r0, 0xA]
mov r0, sp
strh r1, [r0, 0xC]
_080A5590:
mov r2, sp
ldrh r2, [r2, 0xC]
lsls r0, r2, 16
asrs r0, 16
cmp r0, 0x1
ble _080A568C
mov r6, r8
ldr r3, [sp]
movs r0, 0x80
lsls r0, 3
adds r2, r3, r0
movs r0, 0
b _080A5684
_080A55AA:
adds r2, 0x5
movs r4, 0
cmp r0, 0
bne _080A55F2
ldr r3, [sp, 0x4]
ldrb r7, [r3]
movs r1, 0x1
mov r10, r1
cmp r0, r7
bge _080A567C
_080A55BE:
ldrb r1, [r6]
adds r6, 0x1
cmp r1, 0x7F
ble _080A55E4
subs r4, 0x7F
cmp r1, 0x7F
ble _080A55E0
movs r5, 0x40
adds r3, r1, 0
subs r3, 0x7F
_080A55D2:
ldrb r0, [r2]
orrs r0, r5
strb r0, [r2]
adds r2, 0x1
subs r3, 0x1
cmp r3, 0
bne _080A55D2
_080A55E0:
adds r4, r1
b _080A55EC
_080A55E4:
adds r0, r1, 0x1
adds r2, r0
adds r0, r4, 0x1
adds r4, r0, r1
_080A55EC:
cmp r4, r7
blt _080A55BE
b _080A567C
_080A55F2:
ldr r3, _080A5640
adds r3, r2
mov r12, r3
ldr r1, [sp, 0x4]
ldrb r7, [r1]
adds r0, 0x1
mov r10, r0
cmp r4, r7
bge _080A567C
_080A5604:
ldrb r5, [r6]
adds r6, 0x1
cmp r5, 0x7F
ble _080A5644
subs r4, 0x7F
cmp r5, 0x7F
ble _080A5676
movs r3, 0x40
mov r8, r3
movs r0, 0x40
mov r9, r0
adds r3, r5, 0
subs r3, 0x7F
_080A561E:
mov r0, r12
ldrb r1, [r0]
mov r0, r9
ands r0, r1
movs r1, 0x1
add r12, r1
cmp r0, 0
bne _080A5636
ldrb r0, [r2]
mov r1, r8
orrs r0, r1
strb r0, [r2]
_080A5636:
adds r2, 0x1
subs r3, 0x1
cmp r3, 0
bne _080A561E
b _080A5676
.align 2, 0
_080A5640: .4byte 0xffffff00
_080A5644:
movs r3, 0
adds r4, 0x1
cmp r3, r5
bgt _080A5676
movs r3, 0x40
mov r8, r3
movs r0, 0x40
mov r9, r0
adds r3, r5, 0x1
_080A5656:
mov r0, r12
ldrb r1, [r0]
mov r0, r9
ands r0, r1
movs r1, 0x1
add r12, r1
cmp r0, 0
beq _080A566E
ldrb r0, [r2]
mov r1, r8
orrs r0, r1
strb r0, [r2]
_080A566E:
adds r2, 0x1
subs r3, 0x1
cmp r3, 0
bne _080A5656
_080A5676:
adds r4, r5
cmp r4, r7
blt _080A5604
_080A567C:
movs r3, 0xFB
subs r0, r3, r7
adds r2, r0
mov r0, r10
_080A5684:
ldr r1, [sp, 0x10]
cmp r0, r1
blt _080A55AA
mov r8, r6
_080A568C:
mov r0, r8
add sp, 0x18
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A5204
thumb_func_start sub_80A56A0
sub_80A56A0:
push {lr}
adds r3, r0, 0
adds r2, r1, 0
lsls r3, 24
lsrs r3, 24
lsls r2, 24
lsrs r2, 24
ldr r0, _080A56BC
ldr r0, [r0]
adds r1, r3, 0
bl sub_80A3B80
pop {r0}
bx r0
.align 2, 0
_080A56BC: .4byte gGroundMapDungeon_3001B70
thumb_func_end sub_80A56A0
thumb_func_start sub_80A56C0
sub_80A56C0:
push {lr}
adds r2, r0, 0
ldr r0, _080A56D4
ldr r0, [r0]
movs r1, 0
bl sub_80A4558
pop {r0}
bx r0
.align 2, 0
_080A56D4: .4byte gGroundMapDungeon_3001B70
thumb_func_end sub_80A56C0
thumb_func_start sub_80A56D8
sub_80A56D8:
push {lr}
adds r2, r0, 0
ldr r0, _080A56EC
ldr r0, [r0]
movs r1, 0
bl sub_80A456C
pop {r0}
bx r0
.align 2, 0
_080A56EC: .4byte gGroundMapDungeon_3001B70
thumb_func_end sub_80A56D8
thumb_func_start sub_80A56F0
sub_80A56F0:
ldr r1, _080A5700
ldr r2, [r1]
adds r2, 0xE8
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [r2]
str r1, [r2, 0x4]
bx lr
.align 2, 0
_080A5700: .4byte gGroundMapAction
thumb_func_end sub_80A56F0
thumb_func_start sub_80A5704
sub_80A5704:
ldr r1, _080A5724
ldr r3, [r1]
adds r2, r3, 0
adds r2, 0xF8
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [r2]
str r1, [r2, 0x4]
adds r0, r3, 0
adds r0, 0xF0
movs r1, 0
str r1, [r0]
adds r0, 0x4
str r1, [r0]
bx lr
.align 2, 0
_080A5724: .4byte gGroundMapAction
thumb_func_end sub_80A5704
thumb_func_start sub_80A5728
sub_80A5728:
ldr r0, _080A5734
ldr r0, [r0]
adds r0, 0xE4
movs r1, 0
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_080A5734: .4byte gGroundMapAction
thumb_func_end sub_80A5728
thumb_func_start sub_80A5738
sub_80A5738:
ldr r0, _080A5750
ldr r0, [r0]
adds r0, 0xE4
movs r2, 0
ldrsh r1, [r0, r2]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, _080A5754
adds r0, r1
bx lr
.align 2, 0
_080A5750: .4byte gGroundMapAction
_080A5754: .4byte gGroundConversion_811BAF4
thumb_func_end sub_80A5738
thumb_func_start sub_80A5758
sub_80A5758:
push {lr}
adds r1, r0, 0
ldr r0, _080A5768
ldr r0, [r0]
cmp r0, 0
bne _080A576C
movs r0, 0
b _080A5772
.align 2, 0
_080A5768: .4byte gGroundMapDungeon_3001B70
_080A576C:
bl sub_80A4608
movs r0, 0x1
_080A5772:
pop {r1}
bx r1
thumb_func_end sub_80A5758
thumb_func_start GetCurrentDungeonBounds
GetCurrentDungeonBounds:
push {lr}
adds r3, r0, 0
adds r2, r1, 0
ldr r0, _080A578C
ldr r0, [r0]
cmp r0, 0
bne _080A5790
movs r0, 0
b _080A5798
.align 2, 0
_080A578C: .4byte gGroundMapDungeon_3001B70
_080A5790:
adds r1, r3, 0
bl GetDungeonBounds
movs r0, 0x1
_080A5798:
pop {r1}
bx r1
thumb_func_end GetCurrentDungeonBounds
thumb_func_start sub_80A579C
sub_80A579C:
push {r4-r7,lr}
adds r6, r0, 0
adds r5, r1, 0
ldr r0, _080A5838
ldr r3, [r0]
cmp r3, 0
beq _080A5854
ldr r0, _080A583C
ldr r0, [r0]
adds r2, r0, 0
adds r2, 0xE4
movs r0, 0
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080A5854
adds r0, r1, 0
lsls r4, r0, 1
adds r4, r0
lsls r4, 2
ldr r0, _080A5840
adds r4, r0
adds r0, r3, 0
adds r1, r6, 0
adds r2, r5, 0
bl GetDungeonBounds
ldr r2, [r6]
mov r12, r2
movs r0, 0xF0
lsls r0, 7
add r0, r12
str r0, [r6]
ldr r3, [r6, 0x4]
movs r7, 0xA0
lsls r7, 7
adds r0, r3, r7
str r0, [r6, 0x4]
ldr r2, [r5]
ldr r1, _080A5844
adds r0, r2, r1
str r0, [r5]
ldr r1, [r5, 0x4]
ldr r7, _080A5848
adds r0, r1, r7
str r0, [r5, 0x4]
movs r7, 0
ldrsh r0, [r4, r7]
cmp r0, 0xA
bne _080A581E
movs r0, 0x90
lsls r0, 8
add r0, r12
str r0, [r6]
movs r4, 0xD0
lsls r4, 7
adds r0, r3, r4
str r0, [r6, 0x4]
ldr r7, _080A584C
adds r0, r2, r7
str r0, [r5]
ldr r2, _080A5850
adds r0, r1, r2
str r0, [r5, 0x4]
_080A581E:
ldr r1, [r6]
ldr r0, [r5]
cmp r1, r0
ble _080A5828
str r1, [r5]
_080A5828:
ldr r1, [r6, 0x4]
ldr r0, [r5, 0x4]
cmp r1, r0
ble _080A5832
str r1, [r5, 0x4]
_080A5832:
movs r0, 0x1
b _080A5856
.align 2, 0
_080A5838: .4byte gGroundMapDungeon_3001B70
_080A583C: .4byte gGroundMapAction
_080A5840: .4byte gGroundConversion_811BAF4
_080A5844: .4byte 0xffff8800
_080A5848: .4byte 0xffffb000
_080A584C: .4byte 0xffff7000
_080A5850: .4byte 0xffff9800
_080A5854:
movs r0, 0
_080A5856:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A579C
thumb_func_start CheckMapCollision_80A585C
CheckMapCollision_80A585C:
push {r4-r7,lr}
adds r7, r1, 0
ldr r1, _080A5884
ldr r2, [r1]
ldr r1, _080A5888
adds r2, r1
ldr r1, [r0, 0x4]
lsls r1, 8
ldr r0, [r0]
adds r1, r0
ldr r0, _080A588C
adds r1, r0
ldr r0, [r2]
adds r5, r0, r1
ldr r4, [r7, 0x4]
cmp r0, 0
bne _080A5890
_080A587E:
movs r0, 0x1
b _080A58C0
.align 2, 0
_080A5884: .4byte gGroundMapDungeon_3001B70
_080A5888: .4byte 0x00000544
_080A588C: .4byte 0x00000405
_080A5890:
cmp r4, 0
ble _080A58BE
movs r1, 0x80
lsls r1, 1
mov r12, r1
_080A589A:
ldr r2, [r7]
adds r3, r5, 0
cmp r2, 0
ble _080A58B6
movs r6, 0x80
_080A58A4:
ldrb r1, [r3]
adds r0, r6, 0
ands r0, r1
adds r3, 0x1
cmp r0, 0
bne _080A587E
subs r2, 0x1
cmp r2, 0
bgt _080A58A4
_080A58B6:
add r5, r12
subs r4, 0x1
cmp r4, 0
bgt _080A589A
_080A58BE:
movs r0, 0
_080A58C0:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end CheckMapCollision_80A585C
thumb_func_start sub_80A58C8
sub_80A58C8:
push {r4-r7,lr}
adds r7, r1, 0
ldr r1, _080A58F0
ldr r2, [r1]
ldr r1, _080A58F4
adds r2, r1
ldr r1, [r0, 0x4]
lsls r1, 8
ldr r0, [r0]
adds r1, r0
ldr r0, _080A58F8
adds r1, r0
ldr r0, [r2]
adds r5, r0, r1
ldr r4, [r7, 0x4]
cmp r0, 0
bne _080A58FC
_080A58EA:
movs r0, 0x1
b _080A592C
.align 2, 0
_080A58F0: .4byte gGroundMapDungeon_3001B70
_080A58F4: .4byte 0x00000544
_080A58F8: .4byte 0x00000405
_080A58FC:
cmp r4, 0
ble _080A592A
movs r1, 0x80
lsls r1, 1
mov r12, r1
_080A5906:
ldr r2, [r7]
adds r3, r5, 0
cmp r2, 0
ble _080A5922
movs r6, 0x40
_080A5910:
ldrb r1, [r3]
adds r0, r6, 0
ands r0, r1
adds r3, 0x1
cmp r0, 0
bne _080A58EA
subs r2, 0x1
cmp r2, 0
bgt _080A5910
_080A5922:
add r5, r12
subs r4, 0x1
cmp r4, 0
bgt _080A5906
_080A592A:
movs r0, 0
_080A592C:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A58C8
thumb_func_start sub_80A5934
sub_80A5934:
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
adds r3, r2, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _080A5958
ldr r0, [r0]
adds r1, r4, 0
adds r2, r5, 0
bl sub_80A4660
lsls r0, 24
lsrs r0, 24
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080A5958: .4byte gGroundMapDungeon_3001B70
thumb_func_end sub_80A5934
thumb_func_start sub_80A595C
sub_80A595C:
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
adds r3, r2, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _080A5980
ldr r0, [r0]
adds r1, r4, 0
adds r2, r5, 0
bl sub_80A46C0
lsls r0, 24
lsrs r0, 24
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080A5980: .4byte gGroundMapDungeon_3001B70
thumb_func_end sub_80A595C
thumb_func_start sub_80A5984
sub_80A5984:
push {lr}
adds r3, r0, 0
adds r2, r1, 0
ldr r0, _080A599C
ldr r0, [r0]
adds r1, r3, 0
bl sub_80A4720
lsls r0, 16
lsrs r0, 16
pop {r1}
bx r1
.align 2, 0
_080A599C: .4byte gGroundMapDungeon_3001B70
thumb_func_end sub_80A5984
thumb_func_start sub_80A59A0
sub_80A59A0:
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
lsls r3, r2, 16
lsrs r3, 16
ldr r0, _080A59BC
ldr r0, [r0]
adds r1, r4, 0
adds r2, r5, 0
bl sub_80A4740
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A59BC: .4byte gGroundMapDungeon_3001B70
thumb_func_end sub_80A59A0
thumb_func_start GroundMap_Action
GroundMap_Action:
push {lr}
bl nullsub_123
ldr r0, _080A59D4
ldr r0, [r0]
ldr r1, _080A59D8
bl HandleAction
pop {r0}
bx r0
.align 2, 0
_080A59D4: .4byte gGroundMapAction
_080A59D8: .4byte gUnknown_8117770
thumb_func_end GroundMap_Action
thumb_func_start sub_80A59DC
sub_80A59DC:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x58
ldr r7, _080A5A34
ldr r0, [r7]
cmp r0, 0
bne _080A59F0
b _080A5E5A
_080A59F0:
mov r9, sp
mov r0, sp
bl sub_809D248
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _080A5A04
str r0, [sp]
str r0, [sp, 0x4]
_080A5A04:
ldr r0, _080A5A38
mov r8, r0
ldr r3, [r0]
adds r0, r3, 0
adds r0, 0xE4
movs r1, 0
ldrsh r0, [r0, r1]
mov r6, r8
cmp r0, 0xAB
bne _080A5A1A
b _080A5BBE
_080A5A1A:
cmp r0, 0xAB
bgt _080A5A46
cmp r0, 0xA3
bgt _080A5A3C
cmp r0, 0xA2
bge _080A5A76
cmp r0, 0x4
bne _080A5A2C
b _080A5D76
_080A5A2C:
cmp r0, 0xA1
bne _080A5A32
b _080A5E28
_080A5A32:
b _080A5E46
.align 2, 0
_080A5A34: .4byte gGroundMapDungeon_3001B70
_080A5A38: .4byte gGroundMapAction
_080A5A3C:
cmp r0, 0xA8
beq _080A5AF4
cmp r0, 0xAA
beq _080A5AF4
b _080A5E46
_080A5A46:
cmp r0, 0xB0
bne _080A5A4C
b _080A5C76
_080A5A4C:
cmp r0, 0xB0
bgt _080A5A5E
cmp r0, 0xAE
bne _080A5A56
b _080A5B58
_080A5A56:
cmp r0, 0xAF
bne _080A5A5C
b _080A5BD8
_080A5A5C:
b _080A5E46
_080A5A5E:
cmp r0, 0xDF
beq _080A5A76
cmp r0, 0xDF
bgt _080A5A6E
cmp r0, 0xBA
bne _080A5A6C
b _080A5D18
_080A5A6C:
b _080A5E46
_080A5A6E:
cmp r0, 0xE0
bne _080A5A74
b _080A5DDA
_080A5A74:
b _080A5E46
_080A5A76:
ldr r3, [r6]
adds r2, r3, 0
adds r2, 0xF4
ldr r1, [r2]
adds r0, r1, 0x2
str r0, [r2]
adds r4, r3, 0
adds r4, 0xFC
cmp r0, 0
bge _080A5A8C
adds r0, r1, 0x5
_080A5A8C:
asrs r1, r0, 2
ldr r0, [r4]
adds r0, r1
str r0, [r4]
ldr r0, [r2]
movs r1, 0x3
ands r0, r1
str r0, [r2]
ldr r5, _080A5AF0
ldr r0, [r5]
adds r2, r3, 0
adds r2, 0xF8
movs r1, 0
bl sub_80A4580
ldr r0, [sp]
str r0, [sp, 0x8]
ldr r0, [r6]
adds r0, 0xFC
ldr r1, [sp, 0x4]
ldr r0, [r0]
adds r1, r0
add r4, sp, 0x8
str r1, [r4, 0x4]
ldr r0, [r5]
movs r1, 0
adds r2, r4, 0
bl sub_80A4580
ldr r0, [r5]
movs r1, 0
adds r2, r4, 0
bl sub_80A456C
ldr r0, [sp]
str r0, [sp, 0x8]
ldr r0, [r6]
adds r0, 0xFC
ldr r1, [sp, 0x4]
ldr r0, [r0]
subs r1, r0
str r1, [r4, 0x4]
ldr r0, [r5]
movs r1, 0x1
adds r2, r4, 0
bl sub_80A4580
ldr r0, [r5]
b _080A5DD0
.align 2, 0
_080A5AF0: .4byte gGroundMapDungeon_3001B70
_080A5AF4:
ldr r2, [r6]
adds r3, r2, 0
adds r3, 0xF0
adds r0, r2, 0
adds r0, 0xE8
ldr r1, [r3]
ldr r0, [r0]
adds r1, r0
str r1, [r3]
adds r2, 0xF8
cmp r1, 0
bge _080A5B0E
adds r1, 0x7
_080A5B0E:
asrs r1, 3
ldr r0, [r2]
adds r0, r1
str r0, [r2]
ldr r1, [r3]
adds r0, r1, 0
cmp r1, 0
bge _080A5B20
adds r0, r1, 0x7
_080A5B20:
asrs r0, 3
lsls r0, 3
subs r0, r1, r0
str r0, [r3]
ldr r5, _080A5B54
ldr r0, [r5]
movs r1, 0
bl sub_80A4580
ldr r0, [r6]
adds r0, 0xF8
ldr r1, [sp]
ldr r0, [r0]
adds r1, r0
str r1, [sp, 0x10]
ldr r0, [sp, 0x4]
add r4, sp, 0x10
str r0, [r4, 0x4]
ldr r0, [r5]
movs r1, 0
adds r2, r4, 0
bl sub_80A4580
ldr r0, [r5]
movs r1, 0
b _080A5DD2
.align 2, 0
_080A5B54: .4byte gGroundMapDungeon_3001B70
_080A5B58:
adds r4, r3, 0
adds r4, 0xF0
adds r0, r3, 0
adds r0, 0xE8
ldr r1, [r4]
ldr r0, [r0]
adds r1, r0
str r1, [r4]
adds r2, r3, 0
adds r2, 0xF8
cmp r1, 0
bge _080A5B72
adds r1, 0x7
_080A5B72:
asrs r1, 3
ldr r0, [r2]
adds r0, r1
str r0, [r2]
ldr r1, [r4]
adds r0, r1, 0
cmp r1, 0
bge _080A5B84
adds r0, r1, 0x7
_080A5B84:
asrs r0, 3
lsls r0, 3
subs r0, r1, r0
str r0, [r4]
ldr r0, [r7]
movs r1, 0
bl sub_80A4580
mov r1, r8
ldr r0, [r1]
adds r0, 0xF8
ldr r1, [sp]
ldr r0, [r0]
adds r1, r0
str r1, [sp, 0x18]
ldr r0, [sp, 0x4]
add r4, sp, 0x18
str r0, [r4, 0x4]
ldr r0, [r7]
movs r1, 0
adds r2, r4, 0
bl sub_80A4580
ldr r0, [r7]
movs r1, 0
adds r2, r4, 0
bl sub_80A456C
b _080A5DCE
_080A5BBE:
ldr r0, [sp]
ldr r1, [sp, 0x4]
str r0, [sp, 0x20]
str r1, [sp, 0x24]
ldr r0, [r7]
add r4, sp, 0x20
movs r1, 0
adds r2, r4, 0
bl sub_80A4580
ldr r0, [r7]
movs r1, 0
b _080A5DD2
_080A5BD8:
ldr r0, [r7]
movs r1, 0
mov r2, sp
bl sub_80A456C
mov r0, r8
ldr r3, [r0]
adds r4, r3, 0
adds r4, 0xF0
adds r1, r3, 0
adds r1, 0xE8
ldr r0, [r4]
ldr r1, [r1]
adds r0, r1
str r0, [r4]
adds r5, r3, 0
adds r5, 0xF4
adds r1, r3, 0
adds r1, 0xEC
ldr r0, [r5]
ldr r1, [r1]
adds r0, r1
str r0, [r5]
adds r2, r3, 0
adds r2, 0xF8
ldr r1, [r4]
cmp r1, 0
bge _080A5C12
adds r1, 0x7
_080A5C12:
asrs r1, 3
ldr r0, [r2]
adds r0, r1
str r0, [r2]
adds r3, 0xFC
ldr r1, [r5]
cmp r1, 0
bge _080A5C24
adds r1, 0x7
_080A5C24:
asrs r1, 3
ldr r0, [r3]
adds r0, r1
str r0, [r3]
ldr r1, [r4]
adds r0, r1, 0
cmp r1, 0
bge _080A5C36
adds r0, r1, 0x7
_080A5C36:
asrs r0, 3
lsls r0, 3
subs r0, r1, r0
str r0, [r4]
ldr r1, [r5]
adds r0, r1, 0
cmp r1, 0
bge _080A5C48
adds r0, r1, 0x7
_080A5C48:
asrs r0, 3
lsls r0, 3
subs r0, r1, r0
str r0, [r5]
ldr r0, [r7]
movs r1, 0
bl sub_80A4580
mov r1, r8
ldr r2, [r1]
adds r1, r2, 0
adds r1, 0xF8
ldr r0, [sp]
ldr r1, [r1]
adds r0, r1
str r0, [sp, 0x28]
adds r2, 0xFC
mov r1, r9
ldr r0, [r1, 0x4]
ldr r1, [r2]
adds r0, r1
add r4, sp, 0x28
b _080A5DC2
_080A5C76:
adds r4, r3, 0
adds r4, 0xF0
adds r1, r3, 0
adds r1, 0xE8
ldr r0, [r4]
ldr r1, [r1]
adds r0, r1
str r0, [r4]
adds r5, r3, 0
adds r5, 0xF4
adds r1, r3, 0
adds r1, 0xEC
ldr r0, [r5]
ldr r1, [r1]
adds r0, r1
str r0, [r5]
adds r6, r3, 0
adds r6, 0xF8
ldr r1, [r4]
cmp r1, 0
bge _080A5CA2
adds r1, 0x7
_080A5CA2:
asrs r1, 3
ldr r0, [r6]
adds r0, r1
str r0, [r6]
adds r2, r3, 0
adds r2, 0xFC
ldr r1, [r5]
cmp r1, 0
bge _080A5CB6
adds r1, 0x7
_080A5CB6:
asrs r1, 3
ldr r0, [r2]
adds r0, r1
str r0, [r2]
ldr r1, [r4]
adds r0, r1, 0
cmp r1, 0
bge _080A5CC8
adds r0, r1, 0x7
_080A5CC8:
asrs r0, 3
lsls r0, 3
subs r0, r1, r0
str r0, [r4]
ldr r1, [r5]
adds r0, r1, 0
cmp r1, 0
bge _080A5CDA
adds r0, r1, 0x7
_080A5CDA:
asrs r0, 3
lsls r0, 3
subs r0, r1, r0
str r0, [r5]
ldr r0, [r7]
movs r1, 0
adds r2, r6, 0
bl sub_80A4580
mov r0, r8
ldr r2, [r0]
adds r1, r2, 0
adds r1, 0xF8
ldr r0, [sp]
ldr r1, [r1]
adds r0, r1
str r0, [sp, 0x30]
adds r2, 0xFC
ldr r0, [sp, 0x4]
ldr r1, [r2]
adds r0, r1
add r4, sp, 0x30
str r0, [r4, 0x4]
ldr r0, [r7]
movs r1, 0
adds r2, r4, 0
bl sub_80A4580
ldr r0, [r7]
movs r1, 0
b _080A5DD2
_080A5D18:
ldr r0, [r7]
movs r1, 0x1
mov r2, sp
bl sub_80A456C
mov r0, r8
ldr r1, [r0]
adds r3, r1, 0
adds r3, 0xF0
ldr r4, [r3]
adds r0, r4, 0x1
str r0, [r3]
adds r2, r1, 0
adds r2, 0xF8
cmp r0, 0
bge _080A5D3A
adds r0, r4, 0x4
_080A5D3A:
asrs r1, r0, 2
ldr r0, [r2]
adds r0, r1
str r0, [r2]
ldr r0, [r3]
movs r1, 0x3
ands r0, r1
str r0, [r3]
ldr r0, [r7]
movs r1, 0x1
bl sub_80A4580
mov r1, r8
ldr r0, [r1]
adds r0, 0xF8
ldr r1, [sp]
ldr r0, [r0]
adds r1, r0
str r1, [sp, 0x38]
ldr r0, [sp, 0x4]
add r4, sp, 0x38
str r0, [r4, 0x4]
ldr r0, [r7]
movs r1, 0
adds r2, r4, 0
bl sub_80A4580
ldr r0, [r7]
movs r1, 0
b _080A5DD2
_080A5D76:
ldr r0, [r7]
movs r1, 0
mov r2, sp
bl sub_80A456C
mov r0, r8
ldr r1, [r0]
adds r3, r1, 0
adds r3, 0xF0
ldr r4, [r3]
adds r0, r4, 0x1
str r0, [r3]
adds r2, r1, 0
adds r2, 0xF8
cmp r0, 0
bge _080A5D98
adds r0, 0x7
_080A5D98:
asrs r1, r0, 3
ldr r0, [r2]
adds r0, r1
str r0, [r2]
ldr r0, [r3]
movs r1, 0x7
ands r0, r1
str r0, [r3]
ldr r0, [r7]
movs r1, 0x1
bl sub_80A4580
mov r1, r8
ldr r0, [r1]
adds r0, 0xF8
ldr r1, [sp]
ldr r0, [r0]
adds r1, r0
str r1, [sp, 0x40]
ldr r0, [sp, 0x4]
add r4, sp, 0x40
_080A5DC2:
str r0, [r4, 0x4]
ldr r0, [r7]
movs r1, 0x1
adds r2, r4, 0
bl sub_80A4580
_080A5DCE:
ldr r0, [r7]
_080A5DD0:
movs r1, 0x1
_080A5DD2:
adds r2, r4, 0
bl sub_80A456C
b _080A5E52
_080A5DDA:
ldr r0, [r7]
movs r1, 0
mov r2, sp
bl sub_80A456C
mov r0, r8
ldr r1, [r0]
adds r3, r1, 0
adds r3, 0xF0
ldr r4, [r3]
adds r0, r4, 0x1
str r0, [r3]
adds r2, r1, 0
adds r2, 0xF8
cmp r0, 0
bge _080A5DFC
adds r0, 0x7
_080A5DFC:
asrs r1, r0, 3
ldr r0, [r2]
adds r0, r1
str r0, [r2]
ldr r0, [r3]
movs r1, 0x7
ands r0, r1
str r0, [r3]
ldr r0, [r7]
movs r1, 0x1
bl sub_80A4580
mov r1, r8
ldr r0, [r1]
adds r0, 0xF8
ldr r0, [r0]
str r0, [sp, 0x48]
ldr r0, [sp, 0x4]
add r2, sp, 0x48
str r0, [r2, 0x4]
ldr r0, [r7]
b _080A5E3E
_080A5E28:
ldr r0, [r7]
movs r1, 0
mov r2, sp
bl sub_80A456C
movs r0, 0
movs r1, 0
str r0, [sp, 0x50]
str r1, [sp, 0x54]
ldr r0, [r7]
add r2, sp, 0x50
_080A5E3E:
movs r1, 0x1
bl sub_80A456C
b _080A5E52
_080A5E46:
ldr r0, _080A5E6C
ldr r0, [r0]
movs r1, 0
mov r2, sp
bl sub_80A456C
_080A5E52:
ldr r0, _080A5E6C
ldr r0, [r0]
bl sub_80A4764
_080A5E5A:
bl sub_80A60D8
add sp, 0x58
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A5E6C: .4byte gGroundMapDungeon_3001B70
thumb_func_end sub_80A59DC
.align 2,0