pmd-red/asm/ground_lives.s
Mateusz Naściszewski ae3c563713
Mega rename
2024-09-15 20:29:02 +02:00

8640 lines
129 KiB
ArmAsm

#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start AllocGroundLives
AllocGroundLives:
push {r4,r5,lr}
ldr r4, _080A7860
movs r0, 0xCE
lsls r0, 2
movs r1, 0x6
bl MemoryAlloc
str r0, [r4]
ldr r4, _080A7864
movs r0, 0xBA
lsls r0, 6
movs r1, 0x6
bl MemoryAlloc
str r0, [r4]
adds r1, r0, 0
ldr r0, _080A7868
adds r5, r0, 0
movs r4, 0xF8
lsls r4, 1
movs r2, 0x80
lsls r2, 9
adds r3, r2, 0
_080A7826:
ldrh r0, [r1, 0x2]
orrs r0, r5
strh r0, [r1, 0x2]
adds r0, r2, 0
adds r2, r3
asrs r0, 16
adds r1, r4
cmp r0, 0x17
ble _080A7826
ldr r4, _080A7860
ldr r1, [r4]
movs r0, 0xCB
lsls r0, 2
adds r1, r0
movs r0, 0
movs r2, 0x19
bl GetFunctionScript
ldr r0, [r4]
movs r1, 0xCC
lsls r1, 2
adds r0, r1
movs r1, 0x1
strh r1, [r0]
bl DeleteGroundLives
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A7860: .4byte gGroundLivesMeta
_080A7864: .4byte gGroundLives
_080A7868: .4byte 0x0000ffff
thumb_func_end AllocGroundLives
thumb_func_start DeleteGroundLives
DeleteGroundLives:
push {r4-r6,lr}
ldr r0, _080A78E8
ldr r4, [r0]
movs r1, 0
movs r6, 0x1
negs r6, r6
movs r5, 0x80
lsls r5, 9
_080A787C:
movs r2, 0x2
ldrsh r0, [r4, r2]
cmp r0, r6
beq _080A788A
adds r0, r1, 0
bl GroundLives_Delete
_080A788A:
adds r0, r5, 0
movs r1, 0x80
lsls r1, 9
adds r5, r1
asrs r1, r0, 16
movs r2, 0xF8
lsls r2, 1
adds r4, r2
cmp r1, 0x17
ble _080A787C
ldr r3, _080A78EC
ldr r0, [r3]
movs r2, 0x1
negs r2, r2
str r2, [r0, 0x24]
adds r0, 0x28
movs r1, 0xFF
strb r1, [r0]
movs r5, 0
movs r4, 0
movs r1, 0x2
_080A78B4:
ldr r0, [r3]
adds r0, r4
str r2, [r0, 0x8]
str r5, [r0]
str r5, [r0, 0x4]
adds r4, 0xC
subs r1, 0x1
cmp r1, 0
bge _080A78B4
ldr r4, _080A78EC
movs r2, 0
movs r3, 0x2C
movs r1, 0x3F
_080A78CE:
ldr r0, [r4]
adds r0, r3
str r2, [r0]
str r2, [r0, 0x4]
str r2, [r0, 0x8]
adds r3, 0xC
subs r1, 0x1
cmp r1, 0
bge _080A78CE
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A78E8: .4byte gGroundLives
_080A78EC: .4byte gGroundLivesMeta
thumb_func_end DeleteGroundLives
thumb_func_start FreeGroundLives
FreeGroundLives:
push {r4,r5,lr}
bl DeleteGroundLives
ldr r4, _080A7914
ldr r0, [r4]
bl MemoryFree
movs r5, 0
str r5, [r4]
ldr r4, _080A7918
ldr r0, [r4]
bl MemoryFree
str r5, [r4]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A7914: .4byte gGroundLives
_080A7918: .4byte gGroundLivesMeta
thumb_func_end FreeGroundLives
thumb_func_start GroundLives_Select
GroundLives_Select:
push {r4-r7,lr}
sub sp, 0x4
adds r4, r0, 0
lsls r4, 16
asrs r4, 16
lsls r1, 16
asrs r7, r1, 16
lsls r2, 24
asrs r6, r2, 24
ldr r1, _080A7980
adds r0, r4, 0
bl GetGroundScript
adds r5, r0, 0
ldr r1, _080A7984
str r6, [sp]
movs r0, 0
adds r2, r4, 0
adds r3, r7, 0
bl Log
lsls r1, r7, 3
ldr r0, [r5, 0x4]
adds r0, r1
lsls r1, r6, 2
adds r1, r6
lsls r1, 3
ldr r0, [r0, 0x4]
adds r0, r1
ldr r5, [r0, 0x4]
ldr r0, [r0]
cmp r0, 0
ble _080A7976
adds r4, r0, 0
_080A7960:
movs r0, 0x1
negs r0, r0
adds r1, r5, 0
adds r2, r7, 0
adds r3, r6, 0
bl GroundLives_Add
subs r4, 0x1
adds r5, 0x18
cmp r4, 0
bne _080A7960
_080A7976:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A7980: .4byte gUnknown_811808C
_080A7984: .4byte gUnknown_8118098
thumb_func_end GroundLives_Select
thumb_func_start GroundLives_Cancel
GroundLives_Cancel:
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 16
asrs r7, r0, 16
lsls r1, 24
asrs r5, r1, 24
ldr r1, _080A79F4
movs r0, 0
adds r2, r7, 0
adds r3, r5, 0
bl Log
movs r1, 0
ldr r0, _080A79F8
ldr r4, [r0]
movs r0, 0x1
negs r0, r0
mov r8, r0
movs r6, 0x80
lsls r6, 9
_080A79B2:
movs r2, 0x2
ldrsh r0, [r4, r2]
cmp r0, r8
beq _080A79D4
movs r2, 0x4
ldrsh r0, [r4, r2]
cmp r0, r7
bne _080A79D4
cmp r5, 0
blt _080A79CE
movs r0, 0x6
ldrsb r0, [r4, r0]
cmp r0, r5
bne _080A79D4
_080A79CE:
adds r0, r1, 0
bl GroundLives_Delete
_080A79D4:
adds r0, r6, 0
movs r1, 0x80
lsls r1, 9
adds r6, r1
asrs r1, r0, 16
movs r2, 0xF8
lsls r2, 1
adds r4, r2
cmp r1, 0x17
ble _080A79B2
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A79F4: .4byte gUnknown_81180BC
_080A79F8: .4byte gGroundLives
thumb_func_end GroundLives_Cancel
thumb_func_start GroundLives_CancelBlank_1
GroundLives_CancelBlank_1:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
ldr r1, _080A7A70
movs r0, 0
bl Log
movs r6, 0
ldr r0, _080A7A74
ldr r4, [r0]
movs r0, 0x1
negs r0, r0
mov r8, r0
movs r1, 0xA2
lsls r1, 1
adds r5, r4, r1
mov r7, sp
_080A7A20:
movs r1, 0x2
ldrsh r0, [r4, r1]
cmp r0, r8
beq _080A7A50
ldr r0, [r5]
ldr r1, [r4, 0x14]
adds r0, r1
str r0, [sp]
ldr r0, [r5, 0x4]
ldr r1, [r4, 0x18]
adds r0, r1
str r0, [r7, 0x4]
movs r1, 0xB8
lsls r1, 1
adds r0, r4, r1
mov r1, sp
bl IsOnscreen_80A675C
lsls r0, 24
cmp r0, 0
bne _080A7A50
adds r0, r6, 0
bl GroundLives_Delete
_080A7A50:
adds r0, r6, 0x1
lsls r0, 16
asrs r6, r0, 16
movs r0, 0xF8
lsls r0, 1
adds r5, r0
adds r4, r0
cmp r6, 0x17
ble _080A7A20
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A7A70: .4byte gUnknown_81180D8
_080A7A74: .4byte gGroundLives
thumb_func_end GroundLives_CancelBlank_1
thumb_func_start GroundLives_CancelBlank_2
GroundLives_CancelBlank_2:
push {r4-r7,lr}
ldr r1, _080A7AC0
movs r0, 0
bl Log
movs r6, 0
ldr r0, _080A7AC4
ldr r4, [r0]
movs r7, 0x1
negs r7, r7
movs r0, 0x9F
lsls r0, 1
adds r5, r4, r0
_080A7A92:
movs r1, 0x2
ldrsh r0, [r4, r1]
cmp r0, r7
beq _080A7ACC
movs r1, 0x8E
lsls r1, 1
adds r0, r4, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 4
ands r0, r1
cmp r0, 0
beq _080A7AC8
movs r0, 0xA2
lsls r0, 1
adds r1, r4, r0
adds r0, 0x8
adds r2, r4, r0
movs r0, 0x20
bl FindGroundEvent
b _080A7ACA
.align 2, 0
_080A7AC0: .4byte gUnknown_81180D8
_080A7AC4: .4byte gGroundLives
_080A7AC8:
ldr r0, _080A7AE4
_080A7ACA:
strh r0, [r5]
_080A7ACC:
adds r0, r6, 0x1
lsls r0, 16
asrs r6, r0, 16
movs r1, 0xF8
lsls r1, 1
adds r5, r1
adds r4, r1
cmp r6, 0x17
ble _080A7A92
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A7AE4: .4byte 0x0000ffff
thumb_func_end GroundLives_CancelBlank_2
thumb_func_start sub_80A7AE8
sub_80A7AE8:
push {r4-r7,lr}
sub sp, 0x4
mov r1, sp
strh r0, [r1]
mov r0, sp
bl sub_80A7B94
mov r0, sp
movs r1, 0
ldrsh r2, [r0, r1]
movs r0, 0x1
negs r0, r0
cmp r2, r0
beq _080A7B34
movs r3, 0
ldr r0, _080A7B24
ldr r1, [r0]
adds r4, r2, 0
movs r2, 0x80
lsls r2, 9
adds r6, r2, 0
movs r5, 0xF8
lsls r5, 1
_080A7B16:
movs r7, 0x2
ldrsh r0, [r1, r7]
cmp r0, r4
bne _080A7B28
adds r0, r3, 0
b _080A7B38
.align 2, 0
_080A7B24: .4byte gGroundLives
_080A7B28:
adds r0, r2, 0
adds r2, r6
asrs r3, r0, 16
adds r1, r5
cmp r3, 0x17
ble _080A7B16
_080A7B34:
movs r0, 0x1
negs r0, r0
_080A7B38:
add sp, 0x4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A7AE8
thumb_func_start sub_80A7B40
sub_80A7B40:
push {r4-r7,lr}
lsls r0, 16
asrs r4, r0, 16
movs r3, 0
ldr r0, _080A7B70
ldr r1, [r0]
movs r6, 0x1
negs r6, r6
movs r2, 0x80
lsls r2, 9
movs r5, 0x9E
lsls r5, 1
_080A7B58:
movs r7, 0x2
ldrsh r0, [r1, r7]
cmp r0, r6
beq _080A7B74
adds r0, r1, r5
movs r7, 0
ldrsh r0, [r0, r7]
cmp r0, r4
bne _080A7B74
adds r0, r3, 0
b _080A7B8C
.align 2, 0
_080A7B70: .4byte gGroundLives
_080A7B74:
adds r0, r2, 0
movs r3, 0x80
lsls r3, 9
adds r2, r3
asrs r3, r0, 16
movs r7, 0xF8
lsls r7, 1
adds r1, r7
cmp r3, 0x17
ble _080A7B58
movs r0, 0x1
negs r0, r0
_080A7B8C:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A7B40
thumb_func_start sub_80A7B94
sub_80A7B94:
push {r4-r7,lr}
sub sp, 0x10
adds r7, r0, 0
movs r0, 0
ldrsh r2, [r7, r0]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
ldr r1, _080A7BD4
adds r0, r1
movs r6, 0x1
negs r6, r6
movs r1, 0
ldrsh r5, [r0, r1]
cmp r5, 0x1
bne _080A7C14
adds r0, r2, 0
cmp r0, 0
bne _080A7C10
movs r0, 0
movs r1, 0x1C
bl GetScriptVarValue
adds r4, r0, 0
cmp r4, 0x1
beq _080A7BDE
cmp r4, 0x1
bgt _080A7BD8
cmp r4, 0
beq _080A7BF2
b _080A7C08
.align 2, 0
_080A7BD4: .4byte gGroundLivesTypeData_811E63C
_080A7BD8:
cmp r4, 0x2
beq _080A7BE4
b _080A7C08
_080A7BDE:
movs r0, 0x2
strh r0, [r7]
b _080A7C10
_080A7BE4:
bl GetPlayerPokemonStruct
adds r6, r0, 0
bl sub_808D3BC
cmp r0, r6
bne _080A7BF6
_080A7BF2:
strh r5, [r7]
b _080A7C10
_080A7BF6:
bl sub_808D3F8
cmp r0, r6
bne _080A7C02
strh r4, [r7]
b _080A7C10
_080A7C02:
movs r0, 0x3
strh r0, [r7]
b _080A7C10
_080A7C08:
movs r1, 0x1
negs r1, r1
adds r0, r1, 0
b _080A7DAC
_080A7C10:
movs r6, 0
b _080A7DD2
_080A7C14:
cmp r5, 0x2
bne _080A7CD2
movs r0, 0
movs r1, 0x1D
bl GetScriptVarValue
adds r4, r0, 0
movs r0, 0
movs r1, 0x1E
bl GetScriptVarValue
adds r2, r0, 0
ldrh r1, [r7]
subs r0, r1, 0x4
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bhi _080A7C82
cmp r1, 0x4
bne _080A7C44
adds r0, r4, 0
cmp r0, 0
bne _080A7C4C
b _080A7C4A
_080A7C44:
movs r0, 0
cmp r4, 0
beq _080A7C4C
_080A7C4A:
adds r0, r2, 0
_080A7C4C:
cmp r0, 0x2
beq _080A7C7A
cmp r0, 0x2
bhi _080A7C5A
cmp r0, 0x1
beq _080A7C6E
b _080A7DA6
_080A7C5A:
cmp r0, 0x3
beq _080A7C60
b _080A7DA6
_080A7C60:
bl GetPlayerPokemonStruct
adds r4, r0, 0
bl sub_808D3BC
cmp r0, r4
bne _080A7C72
_080A7C6E:
movs r0, 0x6
b _080A7C80
_080A7C72:
bl sub_808D3F8
cmp r0, r4
bne _080A7C7E
_080A7C7A:
movs r0, 0x7
b _080A7C80
_080A7C7E:
movs r0, 0x8
_080A7C80:
strh r0, [r7]
_080A7C82:
movs r0, 0
ldrsh r5, [r7, r0]
cmp r5, 0x7
beq _080A7CB0
cmp r5, 0x7
bgt _080A7C94
cmp r5, 0x6
beq _080A7C9A
b _080A7CCA
_080A7C94:
cmp r5, 0x8
beq _080A7CC6
b _080A7CCA
_080A7C9A:
movs r6, 0x2
bl GetPlayerPokemonStruct
adds r4, r0, 0
bl sub_808D3BC
cmp r4, r0
beq _080A7CAC
b _080A7DD2
_080A7CAC:
strh r5, [r7]
b _080A7DD2
_080A7CB0:
movs r6, 0x1
bl GetPlayerPokemonStruct
adds r4, r0, 0
bl sub_808D3F8
cmp r4, r0
beq _080A7CC2
b _080A7DD2
_080A7CC2:
movs r0, 0x6
b _080A7DD0
_080A7CC6:
movs r6, 0x2
b _080A7DD2
_080A7CCA:
movs r1, 0x1
negs r1, r1
adds r0, r1, 0
b _080A7DAC
_080A7CD2:
cmp r5, 0x3
bne _080A7DB0
ldrh r1, [r7]
adds r0, r1, 0
subs r0, 0xA
lsls r0, 16
lsrs r0, 16
cmp r0, 0x3
bhi _080A7D12
adds r4, r2, 0
subs r4, 0xA
bl sub_8098F88
lsls r0, 24
cmp r0, 0
bne _080A7DD2
movs r0, 0x9
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _080A7D06
mov r0, sp
bl sub_808D6A4
b _080A7D0C
_080A7D06:
mov r0, sp
bl sub_808D654
_080A7D0C:
cmp r4, r0
bge _080A7DA6
b _080A7D7E
_080A7D12:
adds r0, r1, 0
subs r0, 0xE
lsls r0, 16
lsrs r0, 16
cmp r0, 0xF
bhi _080A7DA6
movs r0, 0
movs r1, 0x10
bl GetScriptVarValue
lsls r0, 16
asrs r0, 16
bl sub_8002658
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _080A7DA6
movs r2, 0
ldrsh r0, [r7, r2]
adds r4, r0, 0
subs r4, 0xE
adds r0, r1, 0
mov r1, sp
movs r2, 0
movs r3, 0
bl sub_8092638
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
cmp r4, r0
bge _080A7DA6
ldr r2, _080A7D84
ldr r0, [sp, 0x8]
adds r0, r4
movs r1, 0x58
muls r1, r0
ldr r0, [r2]
adds r4, r0, r1
movs r0, 0x9
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _080A7D88
ldrb r1, [r4]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080A7DA6
ldrb r0, [r4, 0x2]
cmp r0, 0
bne _080A7DA6
_080A7D7E:
movs r0, 0x1
negs r0, r0
b _080A7DD4
.align 2, 0
_080A7D84: .4byte gRecruitedPokemonRef
_080A7D88:
ldrb r1, [r4]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080A7DA6
ldrb r0, [r4, 0x2]
cmp r0, 0
bne _080A7DA6
movs r1, 0
ldrb r0, [r4, 0x4]
cmp r0, 0x41
bne _080A7DA2
movs r1, 0x1
_080A7DA2:
cmp r1, 0
beq _080A7D7E
_080A7DA6:
movs r2, 0x1
negs r2, r2
adds r0, r2, 0
_080A7DAC:
strh r0, [r7]
b _080A7D7E
_080A7DB0:
cmp r2, 0x23
bne _080A7DD2
bl GetPlayerPokemonStruct
adds r4, r0, 0
bl sub_808D3BC
cmp r0, r4
bne _080A7DC6
movs r0, 0x21
b _080A7DD0
_080A7DC6:
bl sub_808D3F8
cmp r0, r4
bne _080A7DD2
movs r0, 0x22
_080A7DD0:
strh r0, [r7]
_080A7DD2:
adds r0, r6, 0
_080A7DD4:
add sp, 0x10
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A7B94
thumb_func_start sub_80A7DDC
sub_80A7DDC:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x24
adds r7, r0, 0
adds r5, r1, 0
bl sub_80A7B94
lsls r0, 16
asrs r0, 16
mov r8, r0
movs r0, 0
strh r0, [r5]
ldrh r3, [r7]
movs r1, 0
ldrsh r0, [r7, r1]
movs r6, 0x1
negs r6, r6
cmp r0, r6
bne _080A7E0A
_080A7E04:
movs r0, 0x1
negs r0, r0
b _080A8098
_080A7E0A:
movs r0, 0
ldrsh r2, [r7, r0]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
ldr r1, _080A7E50
adds r4, r0, r1
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0x3
beq _080A7E22
b _080A7F38
_080A7E22:
adds r0, r3, 0
subs r0, 0xA
lsls r0, 16
lsrs r0, 16
cmp r0, 0x3
bhi _080A7E90
adds r4, r2, 0
subs r4, 0xA
bl sub_8098F88
lsls r0, 24
cmp r0, 0
beq _080A7E58
ldr r0, _080A7E54
lsls r1, r4, 1
adds r1, r0
ldrh r0, [r1]
strh r0, [r5]
cmp r0, 0
bne _080A7E04
strh r6, [r7]
b _080A7E04
.align 2, 0
_080A7E50: .4byte gGroundLivesTypeData_811E63C
_080A7E54: .4byte gUnknown_81180F0
_080A7E58:
movs r0, 0x9
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _080A7E6C
mov r0, sp
bl sub_808D6A4
b _080A7E72
_080A7E6C:
mov r0, sp
bl sub_808D654
_080A7E72:
cmp r4, r0
blt _080A7E78
b _080A8080
_080A7E78:
ldr r2, _080A7E8C
lsls r0, r4, 2
add r0, sp
ldr r1, [r0]
movs r0, 0x58
muls r1, r0
ldr r0, [r2]
adds r0, r1
ldrh r0, [r0, 0x8]
b _080A800A
.align 2, 0
_080A7E8C: .4byte gRecruitedPokemonRef
_080A7E90:
adds r0, r3, 0
subs r0, 0xE
lsls r0, 16
lsrs r0, 16
cmp r0, 0xF
bls _080A7E9E
b _080A8080
_080A7E9E:
movs r0, 0
movs r1, 0x10
bl GetScriptVarValue
lsls r0, 16
asrs r0, 16
bl sub_8002658
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _080A7EB8
b _080A8080
_080A7EB8:
movs r2, 0
ldrsh r0, [r7, r2]
adds r4, r0, 0
subs r4, 0xE
adds r0, r1, 0
mov r1, sp
movs r2, 0
movs r3, 0
bl sub_8092638
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
cmp r4, r0
blt _080A7ED8
b _080A8080
_080A7ED8:
ldr r2, _080A7F0C
ldr r0, [sp, 0x8]
adds r0, r4
movs r1, 0x58
muls r1, r0
ldr r0, [r2]
adds r4, r0, r1
movs r0, 0x9
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _080A7F10
ldrb r1, [r4]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080A7EFE
b _080A8080
_080A7EFE:
ldrb r0, [r4, 0x2]
cmp r0, 0
beq _080A7F06
b _080A8080
_080A7F06:
ldrh r0, [r4, 0x8]
b _080A800A
.align 2, 0
_080A7F0C: .4byte gRecruitedPokemonRef
_080A7F10:
ldrb r1, [r4]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080A7F1C
b _080A8080
_080A7F1C:
ldrb r0, [r4, 0x2]
cmp r0, 0
beq _080A7F24
b _080A8080
_080A7F24:
movs r1, 0
ldrb r0, [r4, 0x4]
cmp r0, 0x41
bne _080A7F2E
movs r1, 0x1
_080A7F2E:
cmp r1, 0
beq _080A7F34
b _080A8080
_080A7F34:
ldrh r0, [r4, 0x8]
b _080A800A
_080A7F38:
subs r0, r3, 0x1
lsls r0, 16
asrs r0, 16
cmp r0, 0x23
bls _080A7F44
b _080A808A
_080A7F44:
lsls r0, 2
ldr r1, _080A7F50
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080A7F50: .4byte _080A7F54
.align 2, 0
_080A7F54:
.4byte _080A7FE4
.4byte _080A7FEC
.4byte _080A7FF4
.4byte _080A808A
.4byte _080A808A
.4byte _080A7FE4
.4byte _080A7FEC
.4byte _080A7FF4
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A808A
.4byte _080A8032
.4byte _080A8032
.4byte _080A8014
.4byte _080A7FE4
.4byte _080A7FEC
.4byte _080A7FF4
.4byte _080A7FFC
_080A7FE4:
bl sub_808D3BC
ldrh r0, [r0, 0x8]
b _080A8094
_080A7FEC:
bl sub_808D3F8
ldrh r0, [r0, 0x8]
b _080A8094
_080A7FF4:
bl GetPlayerPokemonStruct
ldrh r0, [r0, 0x8]
b _080A8094
_080A7FFC:
movs r0, 0xF
bl RandInt
ldr r1, _080A8010
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
_080A800A:
strh r0, [r5]
b _080A7E04
.align 2, 0
_080A8010: .4byte gUnknown_81180FC
_080A8014:
movs r0, 0
movs r1, 0x1F
bl GetScriptVarValue
lsls r0, 16
asrs r0, 16
cmp r0, 0
beq _080A8028
strh r0, [r5]
b _080A7E04
_080A8028:
movs r1, 0x1
negs r1, r1
adds r0, r1, 0
strh r0, [r7]
b _080A7E04
_080A8032:
movs r0, 0x89
strh r0, [r5]
add r6, sp, 0x10
adds r0, r6, 0
bl sub_8099328
lsls r0, 24
cmp r0, 0
bne _080A8046
b _080A7E04
_080A8046:
add r1, sp, 0x14
add r2, sp, 0x18
movs r0, 0x2
bl GetScriptVarScenario
add r4, sp, 0x1C
ldr r1, [sp, 0x18]
lsls r1, 24
lsrs r1, 24
ldrb r2, [r6]
adds r0, r4, 0
bl sub_8096AF8
ldrb r0, [r4]
cmp r0, 0
beq _080A8076
movs r2, 0
ldrsh r0, [r7, r2]
cmp r0, 0x1E
bne _080A8072
ldrh r0, [r4, 0x2]
b _080A8074
_080A8072:
ldrh r0, [r4, 0x4]
_080A8074:
strh r0, [r5]
_080A8076:
movs r1, 0
ldrsh r0, [r5, r1]
cmp r0, 0
beq _080A8080
b _080A7E04
_080A8080:
movs r2, 0x1
negs r2, r2
adds r0, r2, 0
strh r0, [r7]
b _080A7E04
_080A808A:
movs r1, 0
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080A8096
ldrh r0, [r4, 0x2]
_080A8094:
strh r0, [r5]
_080A8096:
mov r0, r8
_080A8098:
add sp, 0x24
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A7DDC
thumb_func_start GroundLives_Add
GroundLives_Add:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x24
str r1, [sp, 0x10]
lsls r0, 16
asrs r6, r0, 16
lsls r2, 16
asrs r2, 16
str r2, [sp, 0x14]
lsls r3, 24
asrs r3, 24
str r3, [sp, 0x18]
ldrb r1, [r1]
add r0, sp, 0xC
strh r1, [r0]
movs r0, 0
mov r8, r0
mov r4, sp
adds r4, 0xE
add r0, sp, 0xC
adds r1, r4, 0
bl sub_80A7DDC
lsls r0, 16
asrs r7, r0, 16
add r0, sp, 0xC
movs r2, 0
ldrsh r1, [r0, r2]
movs r0, 0x1
negs r0, r0
mov r9, r4
cmp r1, r0
beq _080A81AE
cmp r7, 0x1
beq _080A8104
cmp r7, 0x1
bgt _080A80FA
cmp r7, 0
beq _080A8100
b _080A8118
_080A80FA:
cmp r7, 0x2
beq _080A8108
b _080A8118
_080A8100:
movs r6, 0
b _080A8118
_080A8104:
movs r6, 0x1
b _080A8118
_080A8108:
movs r0, 0
movs r1, 0x1D
bl GetScriptVarValue
cmp r0, 0
bne _080A8116
movs r7, 0x1
_080A8116:
movs r6, 0x2
_080A8118:
add r0, sp, 0xC
movs r3, 0
ldrsh r2, [r0, r3]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
ldr r1, _080A813C
adds r0, r1
str r0, [sp, 0x1C]
cmp r6, 0
bge _080A81B4
cmp r2, 0x21
beq _080A8140
cmp r2, 0x23
beq _080A8154
adds r0, r2, 0
b _080A8162
.align 2, 0
_080A813C: .4byte gGroundLivesTypeData_811E63C
_080A8140:
ldr r0, _080A8150
ldr r0, [r0]
movs r4, 0x2
ldrsh r0, [r0, r4]
cmp r0, 0x1
beq _080A81AE
movs r0, 0x21
b _080A8162
.align 2, 0
_080A8150: .4byte gGroundLives
_080A8154:
ldr r0, _080A8188
ldr r0, [r0]
movs r1, 0x2
ldrsh r0, [r0, r1]
cmp r0, 0x3
beq _080A81AE
movs r0, 0x23
_080A8162:
bl sub_80A7AE8
adds r6, r0, 0
cmp r6, 0
bge _080A81B4
movs r2, 0x3
ldr r0, _080A8188
ldr r0, [r0]
movs r3, 0xBA
lsls r3, 3
adds r5, r0, r3
movs r4, 0x2
ldrsh r1, [r5, r4]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080A818C
movs r6, 0x3
b _080A81B4
.align 2, 0
_080A8188: .4byte gGroundLives
_080A818C:
adds r0, r2, 0x1
lsls r0, 16
asrs r2, r0, 16
movs r0, 0xF8
lsls r0, 1
adds r5, r0
cmp r2, 0x17
bgt _080A81AA
movs r3, 0x2
ldrsh r1, [r5, r3]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080A818C
adds r6, r2, 0
_080A81AA:
cmp r6, 0
bge _080A81B4
_080A81AE:
movs r0, 0x1
negs r0, r0
b _080A8674
_080A81B4:
ldr r1, _080A8234
lsls r0, r6, 5
subs r0, r6
lsls r0, 4
ldr r1, [r1]
adds r5, r1, r0
ldr r1, _080A8238
add r0, sp, 0xC
movs r4, 0
ldrsh r3, [r0, r4]
ldr r2, [sp, 0x1C]
movs r4, 0
ldrsh r0, [r2, r4]
str r0, [sp]
ldr r0, [sp, 0x14]
str r0, [sp, 0x4]
ldr r2, [sp, 0x18]
str r2, [sp, 0x8]
movs r0, 0
adds r2, r6, 0
bl Log
movs r2, 0
movs r3, 0x2
ldrsh r1, [r5, r3]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080A81F0
movs r2, 0x1
_080A81F0:
str r2, [sp, 0x20]
strh r6, [r5]
add r0, sp, 0xC
ldrh r0, [r0]
strh r0, [r5, 0x2]
mov r4, sp
ldrh r4, [r4, 0x14]
strh r4, [r5, 0x4]
mov r0, sp
ldrb r0, [r0, 0x18]
strb r0, [r5, 0x6]
mov r1, r9
ldrh r0, [r1]
strh r0, [r5, 0x8]
movs r2, 0x90
lsls r2, 1
adds r4, r5, r2
adds r0, r4, 0
bl sub_809CD68
movs r0, 0x9
str r0, [r4]
ldr r3, [sp, 0x1C]
ldrh r0, [r3]
subs r0, 0x1
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
bhi _080A82D8
lsls r0, 2
ldr r1, _080A823C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080A8234: .4byte gGroundLives
_080A8238: .4byte gUnknown_811811C
_080A823C: .4byte _080A8240
.align 2, 0
_080A8240:
.4byte _080A8268
.4byte _080A8280
.4byte _080A8290
.4byte _080A82D8
.4byte _080A82D8
.4byte _080A8298
.4byte _080A82A8
.4byte _080A82B4
.4byte _080A82BE
.4byte _080A82CA
_080A8268:
movs r4, 0x8E
lsls r4, 1
adds r1, r5, r4
ldr r0, _080A827C
str r0, [r1]
movs r0, 0x90
lsls r0, 1
adds r1, r5, r0
movs r0, 0x1
b _080A82E0
.align 2, 0
_080A827C: .4byte 0x2300181d
_080A8280:
movs r2, 0x8E
lsls r2, 1
adds r1, r5, r2
ldr r0, _080A828C
b _080A82E0
.align 2, 0
_080A828C: .4byte 0x23001000
_080A8290:
movs r3, 0x8E
lsls r3, 1
adds r1, r5, r3
b _080A82DE
_080A8298:
movs r4, 0x8E
lsls r4, 1
adds r1, r5, r4
ldr r0, _080A82A4
b _080A82E0
.align 2, 0
_080A82A4: .4byte 0x2000000d
_080A82A8:
movs r0, 0x8E
lsls r0, 1
adds r1, r5, r0
movs r0, 0x80
lsls r0, 10
b _080A82E0
_080A82B4:
movs r2, 0x8E
lsls r2, 1
adds r1, r5, r2
movs r0, 0
b _080A82E0
_080A82BE:
movs r3, 0x8E
lsls r3, 1
adds r1, r5, r3
movs r0, 0xC0
lsls r0, 12
b _080A82E0
_080A82CA:
movs r4, 0x8E
lsls r4, 1
adds r1, r5, r4
ldr r0, _080A82D4
b _080A82E0
.align 2, 0
_080A82D4: .4byte 0x20010000
_080A82D8:
movs r0, 0x8E
lsls r0, 1
adds r1, r5, r0
_080A82DE:
ldr r0, _080A83DC
_080A82E0:
str r0, [r1]
ldr r2, [sp, 0x1C]
ldrb r1, [r2, 0x8]
lsls r1, 11
str r1, [r5, 0xC]
ldrb r0, [r2, 0x9]
lsls r0, 11
str r0, [r5, 0x10]
lsrs r1, 1
str r1, [r5, 0x14]
lsrs r0, 1
str r0, [r5, 0x18]
ldr r3, [sp, 0x10]
ldrb r0, [r3, 0x1]
strb r0, [r5, 0x1C]
adds r2, r3, 0
adds r2, 0x4
adds r4, r5, 0
adds r4, 0x20
ldrb r1, [r2, 0x2]
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _080A8328
ldrb r0, [r3, 0x4]
lsls r3, r0, 11
str r3, [r5, 0x20]
ldrb r1, [r2, 0x2]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080A8328
movs r1, 0x80
lsls r1, 3
adds r0, r3, r1
str r0, [r5, 0x20]
_080A8328:
ldrb r1, [r2, 0x3]
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _080A834A
ldrb r0, [r2, 0x1]
lsls r3, r0, 11
str r3, [r4, 0x4]
ldrb r1, [r2, 0x3]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080A834A
movs r2, 0x80
lsls r2, 3
adds r0, r3, r2
str r0, [r4, 0x4]
_080A834A:
ldr r3, [sp, 0x20]
cmp r3, 0
beq _080A83EC
ldrb r0, [r5, 0x1C]
movs r4, 0xA1
lsls r4, 1
adds r1, r5, r4
movs r3, 0
strb r0, [r1]
movs r0, 0xA2
lsls r0, 1
adds r2, r5, r0
ldr r0, [r5, 0x20]
ldr r1, [r5, 0x14]
subs r0, r1
str r0, [r2]
movs r1, 0xA6
lsls r1, 1
adds r2, r5, r1
ldr r0, [r5, 0x20]
ldr r1, [r5, 0x14]
adds r0, r1
str r0, [r2]
adds r4, 0x6
adds r2, r5, r4
ldr r0, [r5, 0x24]
ldr r1, [r5, 0x18]
subs r0, r1
str r0, [r2]
movs r0, 0xA8
lsls r0, 1
adds r2, r5, r0
ldr r0, [r5, 0x24]
ldr r1, [r5, 0x18]
adds r0, r1
str r0, [r2]
movs r2, 0xAA
lsls r2, 1
adds r1, r5, r2
adds r4, 0x10
adds r0, r5, r4
str r3, [r0]
str r3, [r1]
movs r1, 0x9E
lsls r1, 1
adds r0, r5, r1
strh r7, [r0]
ldr r1, _080A83E0
lsls r0, r7, 1
adds r0, r7
lsls r0, 2
ldr r1, [r1]
adds r1, r0
movs r0, 0x1
negs r0, r0
str r0, [r1, 0x8]
str r3, [r1]
str r3, [r1, 0x4]
ldrh r0, [r5, 0x2]
subs r0, 0xE
lsls r0, 16
lsrs r0, 16
cmp r0, 0xF
bhi _080A83E4
movs r0, 0x12
bl OtherRandInt
movs r2, 0xA0
lsls r2, 1
adds r1, r5, r2
strh r0, [r1]
b _080A83EC
.align 2, 0
_080A83DC: .4byte 0x2300068d
_080A83E0: .4byte gGroundLivesMeta
_080A83E4:
movs r4, 0xA0
lsls r4, 1
adds r0, r5, r4
strh r3, [r0]
_080A83EC:
movs r1, 0x8E
lsls r1, 1
adds r0, r5, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 4
ands r0, r1
cmp r0, 0
beq _080A8418
movs r2, 0xA2
lsls r2, 1
adds r1, r5, r2
movs r3, 0xA6
lsls r3, 1
adds r2, r5, r3
movs r0, 0x20
bl FindGroundEvent
movs r4, 0x9F
lsls r4, 1
adds r1, r5, r4
b _080A8420
_080A8418:
movs r0, 0x9F
lsls r0, 1
adds r1, r5, r0
ldr r0, _080A849C
_080A8420:
strh r0, [r1]
adds r0, r5, 0
adds r0, 0x28
adds r1, r5, 0
adds r1, 0x30
bl GetCurrentDungeonBounds
ldr r1, [sp, 0x20]
cmp r1, 0
beq _080A84AC
ldr r2, _080A84A0
adds r1, r5, r2
movs r0, 0xFF
strb r0, [r1]
movs r3, 0xAF
lsls r3, 1
adds r1, r5, r3
movs r3, 0
movs r0, 0xC0
lsls r0, 2
strh r0, [r1]
movs r4, 0xB0
lsls r4, 1
adds r1, r5, r4
movs r2, 0x1
movs r0, 0x1
strh r0, [r1]
movs r1, 0xB2
lsls r1, 1
adds r0, r5, r1
str r3, [r0]
adds r4, 0x8
adds r1, r5, r4
ldr r0, _080A84A4
strh r0, [r1]
movs r1, 0xAE
lsls r1, 1
adds r0, r5, r1
strb r2, [r0]
movs r2, 0xB5
lsls r2, 1
adds r0, r5, r2
strh r3, [r0]
movs r3, 0xB8
lsls r3, 1
adds r0, r5, r3
movs r4, 0x2
ldrsh r1, [r5, r4]
movs r3, 0x8
ldrsh r2, [r5, r3]
movs r4, 0x8E
lsls r4, 1
adds r3, r5, r4
ldr r3, [r3]
bl sub_80A7428
adds r4, r5, 0
adds r4, 0x38
ldr r1, _080A84A8
ldr r0, [sp, 0x18]
str r0, [sp]
b _080A855C
.align 2, 0
_080A849C: .4byte 0x0000ffff
_080A84A0: .4byte 0x0000015d
_080A84A4: .4byte 0x00000807
_080A84A8: .4byte gGroundLivesCallbacks
_080A84AC:
adds r4, r5, 0
adds r4, 0x38
ldr r0, _080A84F0
ldr r1, [r0]
movs r2, 0xCB
lsls r2, 2
adds r1, r2
adds r0, r4, 0
bl sub_809D684
lsls r0, 24
cmp r0, 0
beq _080A8550
adds r0, r5, 0
adds r0, 0xBE
movs r3, 0
ldrsh r0, [r0, r3]
cmp r0, 0
beq _080A84F4
adds r0, r5, 0
adds r0, 0xE0
ldrh r0, [r0]
mov r10, r0
adds r0, r5, 0
adds r0, 0xE2
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
mov r9, r0
adds r7, r5, 0
adds r7, 0x80
movs r0, 0x82
adds r0, r5
b _080A8508
.align 2, 0
_080A84F0: .4byte gGroundLivesMeta
_080A84F4:
adds r1, r5, 0
adds r1, 0x80
ldrh r2, [r1]
mov r10, r2
adds r0, r5, 0
adds r0, 0x82
movs r3, 0
ldrsb r3, [r0, r3]
mov r9, r3
adds r7, r1, 0
_080A8508:
mov r8, r0
adds r0, r4, 0
bl InitAction2
ldr r1, _080A8544
ldr r0, [sp, 0x18]
str r0, [sp]
adds r0, r4, 0
adds r2, r5, 0
ldr r3, [sp, 0x14]
bl InitActionWithParams
ldr r0, _080A8548
ldr r2, [r0]
movs r1, 0xCB
lsls r1, 2
adds r2, r1
ldr r3, _080A854C
adds r0, r4, 0
movs r1, 0
bl GroundScript_ExecutePP
mov r2, r10
strh r2, [r7]
mov r0, r9
mov r3, r8
strb r0, [r3]
movs r1, 0x1
mov r8, r1
b _080A8566
.align 2, 0
_080A8544: .4byte gGroundLivesCallbacks
_080A8548: .4byte gGroundLivesMeta
_080A854C: .4byte gUnknown_8118170
_080A8550:
adds r0, r4, 0
bl InitAction2
ldr r1, _080A861C
ldr r2, [sp, 0x18]
str r2, [sp]
_080A855C:
adds r0, r4, 0
adds r2, r5, 0
ldr r3, [sp, 0x14]
bl InitActionWithParams
_080A8566:
ldr r3, [sp, 0x10]
ldr r2, [r3, 0xC]
cmp r2, 0
bne _080A8574
ldr r0, _080A8620
adds r0, 0xEC
ldr r2, [r0]
_080A8574:
adds r0, r4, 0
movs r1, 0x1
bl SetPredefinedScript
ldr r0, [sp, 0x10]
ldr r2, [r0, 0x10]
cmp r2, 0
bne _080A8588
ldr r0, _080A8620
ldr r2, [r0, 0x38]
_080A8588:
adds r0, r4, 0
movs r1, 0x2
bl SetPredefinedScript
ldr r1, [sp, 0x10]
ldr r2, [r1, 0x14]
cmp r2, 0
bne _080A859C
ldr r0, _080A8620
ldr r2, [r0, 0x50]
_080A859C:
adds r0, r4, 0
movs r1, 0x3
bl SetPredefinedScript
ldr r3, [sp, 0x10]
ldr r2, [r3, 0x8]
cmp r2, 0
beq _080A8630
adds r0, r4, 0
movs r1, 0
bl SetPredefinedScript
ldr r0, [sp, 0x20]
cmp r0, 0
bne _080A860C
mov r1, r8
cmp r1, 0
bne _080A860C
movs r2, 0x8E
lsls r2, 1
adds r0, r5, r2
ldr r0, [r0]
movs r1, 0xC0
lsls r1, 5
ands r0, r1
cmp r0, 0
bne _080A860C
ldr r0, _080A8624
ldr r2, [r0]
movs r3, 0xCB
lsls r3, 2
adds r2, r3
ldr r3, _080A8628
adds r0, r4, 0
movs r1, 0
bl GroundScript_ExecutePP
movs r1, 0xB0
lsls r1, 1
adds r0, r5, r1
movs r2, 0xAF
lsls r2, 1
adds r1, r5, r2
ldrh r0, [r0]
ldrh r1, [r1]
orrs r0, r1
adds r1, r5, 0
adds r1, 0x80
strh r0, [r1]
movs r3, 0xA1
lsls r3, 1
adds r0, r5, r3
ldrb r1, [r0]
adds r0, r5, 0
adds r0, 0x82
strb r1, [r0]
_080A860C:
ldr r3, _080A862C
adds r0, r4, 0
movs r1, 0
movs r2, 0
bl ExecutePredefinedScript
b _080A865A
.align 2, 0
_080A861C: .4byte gGroundLivesCallbacks
_080A8620: .4byte gFunctionScriptTable
_080A8624: .4byte gGroundLivesMeta
_080A8628: .4byte gUnknown_811817C
_080A862C: .4byte gUnknown_8118188
_080A8630:
mov r4, r8
cmp r4, 0
beq _080A865A
movs r0, 0xAE
lsls r0, 1
adds r1, r5, r0
movs r0, 0x1
strb r0, [r1]
adds r0, r5, 0
adds r0, 0x82
ldrb r0, [r0]
movs r2, 0xA1
lsls r2, 1
adds r1, r5, r2
strb r0, [r1]
adds r0, r5, 0
adds r0, 0x80
ldrh r1, [r0]
adds r0, r5, 0
bl sub_80A9750
_080A865A:
ldr r3, [sp, 0x1C]
movs r4, 0
ldrsh r0, [r3, r4]
cmp r0, 0x1
bne _080A8672
ldr r0, [sp, 0x20]
cmp r0, 0
beq _080A8672
movs r0, 0x1
adds r1, r6, 0
bl sub_809D170
_080A8672:
adds r0, r6, 0
_080A8674:
add sp, 0x24
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end GroundLives_Add
thumb_func_start GroundLives_Delete
GroundLives_Delete:
push {r4,lr}
adds r2, r0, 0
lsls r2, 16
asrs r2, 16
ldr r1, _080A86BC
lsls r0, r2, 5
subs r0, r2
lsls r0, 4
ldr r1, [r1]
adds r4, r1, r0
ldr r1, _080A86C0
movs r0, 0
bl Log
movs r1, 0xB8
lsls r1, 1
adds r0, r4, r1
bl sub_80A74E4
adds r0, r4, 0
adds r0, 0x38
bl InitAction2
ldr r0, _080A86C4
strh r0, [r4, 0x2]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A86BC: .4byte gGroundLives
_080A86C0: .4byte gUnknown_8118194
_080A86C4: .4byte 0x0000ffff
thumb_func_end GroundLives_Delete
thumb_func_start sub_80A86C8
sub_80A86C8:
push {r4,r5,lr}
adds r5, r1, 0
lsls r0, 16
asrs r0, 16
ldr r2, _080A8708
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r4, r0, r1
movs r1, 0x2
ldrsh r0, [r4, r1]
movs r3, 0x1
negs r3, r3
cmp r0, r3
beq _080A8744
movs r2, 0x9E
lsls r2, 1
adds r1, r4, r2
movs r2, 0
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080A870C
movs r0, 0xC0
lsls r0, 6
ands r0, r5
cmp r0, 0
beq _080A872E
bl sub_80AB5A4
b _080A872E
.align 2, 0
_080A8708: .4byte gGroundLives
_080A870C:
movs r0, 0x80
lsls r0, 5
ands r0, r5
cmp r0, 0
beq _080A872E
ldr r2, _080A874C
movs r0, 0
ldrsh r1, [r1, r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, [r2]
adds r1, r0
str r3, [r1, 0x8]
movs r0, 0
str r0, [r1]
str r0, [r1, 0x4]
_080A872E:
movs r1, 0x8E
lsls r1, 1
adds r0, r4, r1
ldr r1, [r0]
orrs r1, r5
str r1, [r0]
movs r2, 0xB8
lsls r2, 1
adds r0, r4, r2
bl sub_80A6688
_080A8744:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A874C: .4byte gGroundLivesMeta
thumb_func_end sub_80A86C8
thumb_func_start sub_80A8750
sub_80A8750:
push {r4,r5,lr}
adds r5, r1, 0
lsls r0, 16
asrs r0, 16
ldr r2, _080A87A8
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r4, r0, r1
movs r0, 0x2
ldrsh r1, [r4, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080A87A2
movs r1, 0x9E
lsls r1, 1
adds r0, r4, r1
movs r2, 0
ldrsh r0, [r0, r2]
cmp r0, 0
bne _080A878C
movs r0, 0xC0
lsls r0, 6
ands r0, r5
cmp r0, 0
beq _080A878C
bl sub_80AB5A4
_080A878C:
movs r1, 0x8E
lsls r1, 1
adds r0, r4, r1
ldr r1, [r0]
bics r1, r5
str r1, [r0]
movs r2, 0xB8
lsls r2, 1
adds r0, r4, r2
bl sub_80A6688
_080A87A2:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A87A8: .4byte gGroundLives
thumb_func_end sub_80A8750
thumb_func_start sub_80A87AC
sub_80A87AC:
push {lr}
adds r3, r1, 0
lsls r0, 16
asrs r0, 16
ldr r2, _080A87DC
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x2
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080A87D8
movs r1, 0x90
lsls r1, 1
adds r0, r2, r1
adds r1, r3, 0
bl sub_809CD8C
_080A87D8:
pop {r0}
bx r0
.align 2, 0
_080A87DC: .4byte gGroundLives
thumb_func_end sub_80A87AC
thumb_func_start sub_80A87E0
sub_80A87E0:
push {r4,lr}
adds r3, r1, 0
lsls r0, 16
asrs r0, 16
ldr r2, _080A8820
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r4, r0, r1
movs r0, 0x2
ldrsh r1, [r4, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080A8824
movs r0, 0x7
movs r1, 0
adds r2, r3, 0
bl sub_809B1C0
lsls r0, 24
cmp r0, 0
beq _080A8824
movs r1, 0x90
lsls r1, 1
adds r0, r4, r1
movs r1, 0x5
bl sub_809CD8C
movs r0, 0x1
b _080A8826
.align 2, 0
_080A8820: .4byte gGroundLives
_080A8824:
movs r0, 0
_080A8826:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80A87E0
thumb_func_start sub_80A882C
sub_80A882C:
push {lr}
lsls r0, 16
asrs r0, 16
ldr r2, _080A8850
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x2
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080A8854
movs r0, 0
b _080A8858
.align 2, 0
_080A8850: .4byte gGroundLives
_080A8854:
adds r0, r2, 0
adds r0, 0x38
_080A8858:
pop {r1}
bx r1
thumb_func_end sub_80A882C
thumb_func_start sub_80A885C
sub_80A885C:
push {r4,lr}
adds r4, r1, 0
lsls r0, 16
asrs r0, 16
lsls r2, 16
asrs r3, r2, 16
ldr r2, _080A8884
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x2
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080A8888
movs r0, 0
b _080A8898
.align 2, 0
_080A8884: .4byte gGroundLives
_080A8888:
adds r0, r2, 0
adds r0, 0x38
adds r1, r4, 0
adds r2, r3, 0
bl GetPredefinedScript
lsls r0, 24
lsrs r0, 24
_080A8898:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80A885C
thumb_func_start sub_80A88A0
sub_80A88A0:
push {lr}
lsls r0, 16
asrs r0, 16
ldr r2, _080A88C4
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x2
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080A88C8
movs r0, 0
b _080A88D4
.align 2, 0
_080A88C4: .4byte gGroundLives
_080A88C8:
adds r0, r2, 0
adds r0, 0x38
bl sub_809D678
lsls r0, 24
lsrs r0, 24
_080A88D4:
pop {r1}
bx r1
thumb_func_end sub_80A88A0
thumb_func_start GroundLives_ExecuteScript
GroundLives_ExecuteScript:
push {r4-r7,lr}
sub sp, 0x4
adds r4, r0, 0
adds r7, r1, 0
adds r6, r2, 0
lsls r4, 16
asrs r4, 16
ldr r1, _080A8914
lsls r0, r4, 5
subs r0, r4
lsls r0, 4
ldr r1, [r1]
adds r5, r1, r0
ldr r1, _080A8918
movs r0, 0x2
ldrsh r3, [r5, r0]
str r6, [sp]
movs r0, 0
adds r2, r4, 0
bl Log
movs r0, 0x2
ldrsh r1, [r5, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080A891C
movs r0, 0
b _080A8934
.align 2, 0
_080A8914: .4byte gGroundLives
_080A8918: .4byte gUnknown_81181B0
_080A891C:
adds r0, r5, 0
adds r0, 0x38
ldr r3, _080A893C
adds r1, r7, 0
adds r2, r6, 0
bl GroundScript_ExecutePP
movs r0, 0xAE
lsls r0, 1
adds r1, r5, r0
movs r0, 0x1
strb r0, [r1]
_080A8934:
add sp, 0x4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080A893C: .4byte gUnknown_81181F4
thumb_func_end GroundLives_ExecuteScript
thumb_func_start _ExecutePlayerScript
_ExecutePlayerScript:
push {r4,r5,lr}
adds r3, r0, 0
adds r5, r1, 0
adds r4, r2, 0
movs r0, 0xAF
lsls r0, 1
adds r1, r3, r0
movs r2, 0
movs r0, 0xC0
lsls r0, 2
strh r0, [r1]
movs r0, 0xB0
lsls r0, 1
adds r1, r3, r0
movs r0, 0x1
strh r0, [r1]
movs r1, 0xB2
lsls r1, 1
adds r0, r3, r1
str r2, [r0]
movs r0, 0xB4
lsls r0, 1
adds r2, r3, r0
movs r1, 0
ldrsh r0, [r2, r1]
ldr r1, _080A898C
cmp r0, r1
beq _080A8984
strh r1, [r2]
movs r0, 0xAE
lsls r0, 1
adds r1, r3, r0
movs r0, 0x1
strb r0, [r1]
_080A8984:
cmp r4, 0
bne _080A8990
movs r0, 0
b _080A89A2
.align 2, 0
_080A898C: .4byte 0x00000807
_080A8990:
adds r0, r3, 0
adds r0, 0x38
ldr r3, _080A89A8
adds r1, r5, 0
adds r2, r4, 0
bl GroundScript_ExecutePP
lsls r0, 24
lsrs r0, 24
_080A89A2:
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080A89A8: .4byte gUnknown_8118218
thumb_func_end _ExecutePlayerScript
thumb_func_start sub_80A89AC
sub_80A89AC:
push {r4,lr}
lsls r0, 16
asrs r0, 16
ldr r4, _080A89CC
lsls r3, r0, 5
subs r3, r0
lsls r3, 4
ldr r0, [r4]
adds r0, r3
bl _ExecutePlayerScript
lsls r0, 24
lsrs r0, 24
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080A89CC: .4byte gGroundLives
thumb_func_end sub_80A89AC
thumb_func_start GroundLives_ExecutePlayerScriptActionLives
GroundLives_ExecutePlayerScriptActionLives:
push {r4-r6,lr}
sub sp, 0x10
lsls r0, 16
asrs r2, r0, 16
lsls r1, 16
asrs r4, r1, 16
cmp r2, 0
blt _080A8A50
cmp r4, 0
blt _080A8A50
ldr r1, _080A8A48
lsls r0, r2, 5
subs r0, r2
lsls r0, 4
ldr r1, [r1]
adds r5, r1, r0
lsls r0, r4, 5
subs r0, r4
lsls r0, 4
adds r1, r0
movs r2, 0x2
ldrsh r0, [r5, r2]
movs r2, 0x1
negs r2, r2
cmp r0, r2
beq _080A8A50
movs r3, 0x2
ldrsh r0, [r1, r3]
cmp r0, r2
beq _080A8A50
adds r6, r1, 0
adds r6, 0x38
adds r0, r6, 0
mov r1, sp
movs r2, 0x2
bl GetPredefinedScript
lsls r0, 24
cmp r0, 0
beq _080A8A50
movs r1, 0x1
lsls r0, r4, 16
orrs r0, r1
str r0, [sp, 0xC]
adds r1, r5, 0
adds r1, 0x40
ldr r3, _080A8A4C
adds r0, r6, 0
movs r2, 0x3
bl ExecutePredefinedScript
add r1, sp, 0xC
adds r0, r5, 0
mov r2, sp
bl _ExecutePlayerScript
lsls r0, 24
lsrs r0, 24
b _080A8A52
.align 2, 0
_080A8A48: .4byte gGroundLives
_080A8A4C: .4byte gUnknown_8118250
_080A8A50:
movs r0, 0
_080A8A52:
add sp, 0x10
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end GroundLives_ExecutePlayerScriptActionLives
thumb_func_start sub_80A8A5C
sub_80A8A5C:
push {r4-r6,lr}
sub sp, 0x1C
lsls r0, 16
asrs r2, r0, 16
lsls r1, 16
asrs r5, r1, 16
cmp r2, 0
blt _080A8AC0
cmp r5, 0
blt _080A8AC0
ldr r1, _080A8ABC
lsls r0, r2, 5
subs r0, r2
lsls r0, 4
ldr r1, [r1]
adds r6, r1, r0
adds r0, r5, 0
mov r1, sp
movs r2, 0x2
bl sub_80AC274
lsls r0, 24
cmp r0, 0
beq _080A8AC0
movs r1, 0x2
lsls r0, r5, 16
orrs r0, r1
str r0, [sp, 0x18]
add r4, sp, 0xC
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x3
bl sub_80AC274
adds r1, r6, 0
adds r1, 0x40
adds r0, r5, 0
adds r2, r4, 0
bl GroundObject_ExecuteScript
add r1, sp, 0x18
adds r0, r6, 0
mov r2, sp
bl _ExecutePlayerScript
lsls r0, 24
lsrs r0, 24
b _080A8AC2
.align 2, 0
_080A8ABC: .4byte gGroundLives
_080A8AC0:
movs r0, 0
_080A8AC2:
add sp, 0x1C
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80A8A5C
thumb_func_start sub_80A8ACC
sub_80A8ACC:
push {r4,lr}
sub sp, 0xC
lsls r0, 16
asrs r2, r0, 16
lsls r1, 16
asrs r3, r1, 16
cmp r2, 0
blt _080A8B10
cmp r3, 0
blt _080A8B10
ldr r1, _080A8B0C
lsls r0, r2, 5
subs r0, r2
lsls r0, 4
ldr r1, [r1]
adds r4, r1, r0
adds r0, r3, 0
mov r1, sp
bl sub_80ADC64
lsls r0, 24
cmp r0, 0
beq _080A8B10
adds r0, r4, 0
movs r1, 0
mov r2, sp
bl _ExecutePlayerScript
lsls r0, 24
lsrs r0, 24
b _080A8B12
.align 2, 0
_080A8B0C: .4byte gGroundLives
_080A8B10:
movs r0, 0
_080A8B12:
add sp, 0xC
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80A8ACC
thumb_func_start GroundLivesNotifyAll
GroundLivesNotifyAll:
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 16
asrs r7, r0, 16
ldr r0, _080A8B70
ldr r4, [r0]
movs r5, 0
movs r0, 0x1
negs r0, r0
mov r8, r0
movs r6, 0x80
lsls r6, 9
_080A8B36:
movs r1, 0x2
ldrsh r0, [r4, r1]
cmp r0, r8
beq _080A8B4E
adds r0, r4, 0
adds r0, 0x38
adds r1, r7, 0
bl GroundScriptNotify
orrs r5, r0
lsls r0, r5, 24
lsrs r5, r0, 24
_080A8B4E:
adds r0, r6, 0
movs r1, 0x80
lsls r1, 9
adds r6, r1
asrs r0, 16
movs r1, 0xF8
lsls r1, 1
adds r4, r1
cmp r0, 0x17
ble _080A8B36
adds r0, r5, 0
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080A8B70: .4byte gGroundLives
thumb_func_end GroundLivesNotifyAll
thumb_func_start GroundLivesCancelAll
GroundLivesCancelAll:
push {r4-r7,lr}
ldr r0, _080A8BB8
ldr r4, [r0]
movs r5, 0
movs r7, 0x1
negs r7, r7
movs r6, 0x80
lsls r6, 9
_080A8B84:
movs r1, 0x2
ldrsh r0, [r4, r1]
cmp r0, r7
beq _080A8B9A
adds r0, r4, 0
adds r0, 0x38
bl GroundScript_Cancel
orrs r5, r0
lsls r0, r5, 24
lsrs r5, r0, 24
_080A8B9A:
adds r0, r6, 0
movs r1, 0x80
lsls r1, 9
adds r6, r1
asrs r0, 16
movs r1, 0xF8
lsls r1, 1
adds r4, r1
cmp r0, 0x17
ble _080A8B84
adds r0, r5, 0
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080A8BB8: .4byte gGroundLives
thumb_func_end GroundLivesCancelAll
thumb_func_start sub_80A8BBC
sub_80A8BBC:
lsls r0, 16
asrs r0, 16
ldr r2, _080A8BD4
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r0, r1
movs r1, 0x2
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_080A8BD4: .4byte gGroundLives
thumb_func_end sub_80A8BBC
thumb_func_start sub_80A8BD8
sub_80A8BD8:
lsls r0, 16
asrs r0, 16
ldr r3, _080A8BF8
lsls r2, r0, 5
subs r2, r0
lsls r2, 4
ldr r0, [r3]
adds r0, r2
movs r3, 0x8E
lsls r3, 1
adds r2, r0, r3
ldr r2, [r2]
str r2, [r1]
movs r1, 0x2
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_080A8BF8: .4byte gGroundLives
thumb_func_end sub_80A8BD8
thumb_func_start sub_80A8BFC
sub_80A8BFC:
push {lr}
lsls r0, 16
asrs r0, 16
ldr r2, _080A8C20
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x2
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080A8C24
movs r0, 0
b _080A8C28
.align 2, 0
_080A8C20: .4byte gGroundLives
_080A8C24:
movs r1, 0x8
ldrsh r0, [r2, r1]
_080A8C28:
pop {r1}
bx r1
thumb_func_end sub_80A8BFC
thumb_func_start sub_80A8C2C
sub_80A8C2C:
push {r4,lr}
sub sp, 0x4
mov r1, sp
strh r0, [r1]
mov r4, sp
adds r4, 0x2
mov r0, sp
adds r1, r4, 0
bl sub_80A7DDC
movs r1, 0
ldrsh r0, [r4, r1]
add sp, 0x4
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80A8C2C
thumb_func_start sub_80A8C4C
sub_80A8C4C:
push {r4,r5,lr}
adds r5, r1, 0
lsls r0, 16
asrs r0, 16
ldr r2, _080A8C80
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r4, r0, r1
movs r0, 0x2
ldrsh r1, [r4, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080A8C90
adds r0, r1, 0
bl sub_80A8D54
adds r1, r0, 0
cmp r1, 0
beq _080A8C84
ldr r0, [r1, 0x4]
str r0, [r5]
b _080A8C8A
.align 2, 0
_080A8C80: .4byte gGroundLives
_080A8C84:
movs r0, 0x63
strb r0, [r5]
strb r1, [r5, 0x1]
_080A8C8A:
movs r1, 0x8
ldrsh r0, [r4, r1]
b _080A8C92
_080A8C90:
movs r0, 0
_080A8C92:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_80A8C4C
thumb_func_start sub_80A8C98
sub_80A8C98:
push {r4,lr}
lsls r0, 16
asrs r0, 16
ldr r2, _080A8CD4
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r3, r0, r1
movs r0, 0x2
ldrsh r1, [r3, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080A8CE8
ldr r1, _080A8CD8
ldrh r2, [r1]
movs r4, 0
ldrsh r0, [r1, r4]
cmp r0, 0
beq _080A8CE8
movs r0, 0x8
ldrsh r3, [r3, r0]
_080A8CC6:
lsls r0, r2, 16
asrs r0, 16
cmp r0, r3
bne _080A8CDC
movs r0, 0x1
b _080A8CEA
.align 2, 0
_080A8CD4: .4byte gGroundLives
_080A8CD8: .4byte gUnknown_8117FCE
_080A8CDC:
adds r1, 0x2
ldrh r2, [r1]
movs r4, 0
ldrsh r0, [r1, r4]
cmp r0, 0
bne _080A8CC6
_080A8CE8:
movs r0, 0
_080A8CEA:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80A8C98
thumb_func_start sub_80A8CF0
sub_80A8CF0:
push {r4,lr}
lsls r0, 16
asrs r3, r0, 16
ldr r1, _080A8CFC
b _080A8D0E
.align 2, 0
_080A8CFC: .4byte gUnknown_8117FCE
_080A8D00:
lsls r0, r2, 16
asrs r0, 16
cmp r0, r3
bne _080A8D0C
movs r0, 0x1
b _080A8D1A
_080A8D0C:
adds r1, 0x2
_080A8D0E:
ldrh r2, [r1]
movs r4, 0
ldrsh r0, [r1, r4]
cmp r0, 0
bne _080A8D00
movs r0, 0
_080A8D1A:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80A8CF0
thumb_func_start sub_80A8D20
sub_80A8D20:
push {lr}
movs r0, 0
bl sub_80A7AE8
lsls r0, 16
asrs r0, 16
ldr r2, _080A8D50
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r0, r1
movs r1, 0x90
lsls r1, 1
adds r0, r1
bl sub_809CDB8
movs r1, 0
cmp r0, 0x1
bne _080A8D4A
movs r1, 0x1
_080A8D4A:
adds r0, r1, 0
pop {r1}
bx r1
.align 2, 0
_080A8D50: .4byte gGroundLives
thumb_func_end sub_80A8D20
thumb_func_start sub_80A8D54
sub_80A8D54:
push {r4,r5,lr}
sub sp, 0x14
mov r1, sp
strh r0, [r1]
mov r0, sp
bl sub_80A7B94
mov r0, sp
ldrh r1, [r0]
movs r2, 0
ldrsh r0, [r0, r2]
cmp r0, 0x1
beq _080A8D76
cmp r0, 0x6
beq _080A8D76
cmp r0, 0x21
bne _080A8D7C
_080A8D76:
bl sub_808D3BC
b _080A8E94
_080A8D7C:
cmp r0, 0x2
beq _080A8D88
cmp r0, 0x7
beq _080A8D88
cmp r0, 0x22
bne _080A8D8E
_080A8D88:
bl sub_808D3F8
b _080A8E94
_080A8D8E:
cmp r0, 0x3
beq _080A8D9A
cmp r0, 0x8
beq _080A8D9A
cmp r0, 0x23
bne _080A8DA0
_080A8D9A:
bl GetPlayerPokemonStruct
b _080A8E94
_080A8DA0:
adds r0, r1, 0
subs r0, 0xA
lsls r0, 16
lsrs r0, 16
cmp r0, 0x3
bhi _080A8DF8
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
adds r5, r0, 0
subs r5, 0xA
bl sub_8098F88
lsls r0, 24
cmp r0, 0
bne _080A8E92
movs r0, 0x9
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _080A8DD6
add r4, sp, 0x4
adds r0, r4, 0
bl sub_808D6A4
b _080A8DDE
_080A8DD6:
add r4, sp, 0x4
adds r0, r4, 0
bl sub_808D654
_080A8DDE:
cmp r5, r0
bge _080A8E92
ldr r2, _080A8DF4
lsls r0, r5, 2
adds r0, r4, r0
ldr r1, [r0]
movs r0, 0x58
muls r1, r0
ldr r0, [r2]
adds r0, r1
b _080A8E94
.align 2, 0
_080A8DF4: .4byte gRecruitedPokemonRef
_080A8DF8:
adds r0, r1, 0
subs r0, 0xE
lsls r0, 16
lsrs r0, 16
cmp r0, 0xF
bhi _080A8E92
movs r0, 0
movs r1, 0x10
bl GetScriptVarValue
lsls r0, 16
asrs r0, 16
bl sub_8002658
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _080A8E92
mov r0, sp
movs r2, 0
ldrsh r0, [r0, r2]
adds r5, r0, 0
subs r5, 0xE
add r4, sp, 0x4
adds r0, r1, 0
adds r1, r4, 0
movs r2, 0
movs r3, 0
bl sub_8092638
movs r1, 0
ldrsh r0, [r4, r1]
cmp r5, r0
bge _080A8E92
ldr r2, _080A8E6C
ldr r0, [r4, 0x8]
adds r0, r5
movs r1, 0x58
muls r1, r0
ldr r0, [r2]
adds r4, r0, r1
movs r0, 0x9
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _080A8E70
ldrb r1, [r4]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080A8E92
ldrb r0, [r4, 0x2]
cmp r0, 0
bne _080A8E92
adds r0, r4, 0
b _080A8E94
.align 2, 0
_080A8E6C: .4byte gRecruitedPokemonRef
_080A8E70:
ldrb r1, [r4]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080A8E92
ldrb r0, [r4, 0x2]
cmp r0, 0
bne _080A8E92
movs r1, 0
ldrb r0, [r4, 0x4]
cmp r0, 0x41
bne _080A8E8A
movs r1, 0x1
_080A8E8A:
cmp r1, 0
bne _080A8E92
adds r0, r4, 0
b _080A8E94
_080A8E92:
movs r0, 0
_080A8E94:
add sp, 0x14
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_80A8D54
thumb_func_start sub_80A8E9C
sub_80A8E9C:
push {lr}
lsls r0, 16
asrs r0, 16
ldr r2, _080A8EBC
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r0, r1
movs r1, 0x2
ldrsh r0, [r0, r1]
bl sub_80A8D54
pop {r1}
bx r1
.align 2, 0
_080A8EBC: .4byte gGroundLives
thumb_func_end sub_80A8E9C
thumb_func_start sub_80A8EC0
sub_80A8EC0:
push {r4,r5,lr}
sub sp, 0x4
adds r4, r0, 0
mov r0, sp
strh r1, [r0]
mov r5, sp
adds r5, 0x2
adds r1, r5, 0
bl sub_80A7DDC
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
bl sub_80A8D54
cmp r0, 0
beq _080A8EF0
adds r1, r0, 0
adds r1, 0x4C
adds r0, r4, 0
movs r2, 0xA
bl sub_80922B4
b _080A8F44
_080A8EF0:
mov r0, sp
movs r2, 0
ldrsh r1, [r0, r2]
cmp r1, 0x20
bne _080A8F00
movs r0, 0
ldrsh r1, [r5, r0]
b _080A8F34
_080A8F00:
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080A8F3C
mov r0, sp
movs r1, 0
ldrsh r2, [r0, r1]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
ldr r1, _080A8F2C
adds r0, r1
cmp r2, 0x34
beq _080A8F20
cmp r2, 0x64
bne _080A8F30
_080A8F20:
ldr r1, [r0, 0x4]
adds r0, r4, 0
bl strcpy
b _080A8F44
.align 2, 0
_080A8F2C: .4byte gGroundLivesTypeData_811E63C
_080A8F30:
movs r2, 0x2
ldrsh r1, [r0, r2]
_080A8F34:
adds r0, r4, 0
bl CopyMonsterNametoBuffer
b _080A8F44
_080A8F3C:
ldr r1, _080A8F4C
adds r0, r4, 0
bl strcpy
_080A8F44:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A8F4C: .4byte gGroundLives_InvalidityText
thumb_func_end sub_80A8EC0
thumb_func_start sub_80A8F50
sub_80A8F50:
push {r4,r5,lr}
sub sp, 0x80
adds r4, r0, 0
adds r5, r2, 0
lsls r1, 16
asrs r1, 16
mov r0, sp
bl sub_80A8EC0
adds r0, r4, 0
mov r1, sp
adds r2, r5, 0
bl BoundedCopyStringtoBuffer
add sp, 0x80
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80A8F50
thumb_func_start sub_80A8F74
sub_80A8F74:
push {lr}
adds r3, r1, 0
lsls r0, 16
asrs r0, 16
ldr r2, _080A8F98
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r0, r1
movs r2, 0x2
ldrsh r1, [r0, r2]
adds r0, r3, 0
bl sub_80A8EC0
pop {r0}
bx r0
.align 2, 0
_080A8F98: .4byte gGroundLives
thumb_func_end sub_80A8F74
thumb_func_start sub_80A8F9C
sub_80A8F9C:
push {lr}
adds r3, r1, 0
lsls r0, 16
asrs r0, 16
ldr r2, _080A8FC4
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x2
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080A8FC8
movs r0, 0
str r0, [r3]
str r0, [r3, 0x4]
b _080A8FD0
.align 2, 0
_080A8FC4: .4byte gGroundLives
_080A8FC8:
ldr r0, [r2, 0xC]
ldr r1, [r2, 0x10]
str r0, [r3]
str r1, [r3, 0x4]
_080A8FD0:
movs r1, 0x2
ldrsh r0, [r2, r1]
pop {r1}
bx r1
thumb_func_end sub_80A8F9C
thumb_func_start sub_80A8FD8
sub_80A8FD8:
push {lr}
adds r3, r1, 0
lsls r0, 16
asrs r0, 16
ldr r2, _080A9000
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x2
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080A9004
movs r0, 0
str r0, [r3]
b _080A901E
.align 2, 0
_080A9000: .4byte gGroundLives
_080A9004:
movs r1, 0xA2
lsls r1, 1
adds r0, r2, r1
ldr r0, [r0]
ldr r1, [r2, 0x14]
adds r0, r1
str r0, [r3]
movs r1, 0xA4
lsls r1, 1
adds r0, r2, r1
ldr r0, [r0]
ldr r1, [r2, 0x18]
adds r0, r1
_080A901E:
str r0, [r3, 0x4]
movs r1, 0x2
ldrsh r0, [r2, r1]
pop {r1}
bx r1
thumb_func_end sub_80A8FD8
thumb_func_start sub_80A9028
sub_80A9028:
push {r4,lr}
lsls r0, 16
asrs r0, 16
ldr r3, _080A904C
lsls r2, r0, 5
subs r2, r0
lsls r2, 4
ldr r4, [r3]
adds r4, r2
adds r0, r4, 0
bl sub_80A9F20
movs r1, 0x2
ldrsh r0, [r4, r1]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080A904C: .4byte gGroundLives
thumb_func_end sub_80A9028
thumb_func_start sub_80A9050
sub_80A9050:
push {r4,lr}
adds r4, r1, 0
lsls r0, 16
asrs r0, 16
ldr r2, _080A9078
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x2
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
adds r3, r0, 0
cmp r1, r0
bne _080A907C
strb r3, [r4]
b _080A9086
.align 2, 0
_080A9078: .4byte gGroundLives
_080A907C:
movs r1, 0xA1
lsls r1, 1
adds r0, r2, r1
ldrb r0, [r0]
strb r0, [r4]
_080A9086:
movs r1, 0x2
ldrsh r0, [r2, r1]
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80A9050
thumb_func_start sub_80A9090
sub_80A9090:
push {lr}
lsls r0, 16
asrs r0, 16
lsls r1, 24
asrs r3, r1, 24
ldr r2, _080A90C4
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x2
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080A90BA
movs r1, 0xA1
lsls r1, 1
adds r0, r2, r1
strb r3, [r0]
_080A90BA:
movs r1, 0x2
ldrsh r0, [r2, r1]
pop {r1}
bx r1
.align 2, 0
_080A90C4: .4byte gGroundLives
thumb_func_end sub_80A9090
thumb_func_start sub_80A90C8
sub_80A90C8:
lsls r0, 16
asrs r0, 16
ldr r2, _080A90E4
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r0, r1
movs r1, 0xA0
lsls r1, 1
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_080A90E4: .4byte gGroundLives
thumb_func_end sub_80A90C8
thumb_func_start sub_80A90E8
sub_80A90E8:
push {r4,r5,lr}
sub sp, 0x10
lsls r0, 16
asrs r2, r0, 16
lsls r1, 16
asrs r3, r1, 16
cmp r2, r3
beq _080A9196
ldr r1, _080A916C
lsls r0, r2, 5
subs r0, r2
lsls r0, 4
ldr r1, [r1]
adds r5, r1, r0
lsls r0, r3, 5
subs r0, r3
lsls r0, 4
adds r4, r1, r0
movs r1, 0x2
ldrsh r0, [r5, r1]
movs r1, 0x1
negs r1, r1
cmp r0, r1
beq _080A9196
movs r2, 0x2
ldrsh r0, [r4, r2]
cmp r0, r1
beq _080A9196
movs r3, 0xA2
lsls r3, 1
adds r0, r5, r3
ldr r0, [r0]
ldr r1, [r5, 0x14]
adds r0, r1
str r0, [sp]
movs r2, 0xA4
lsls r2, 1
adds r0, r5, r2
ldr r0, [r0]
ldr r1, [r5, 0x18]
adds r0, r1
str r0, [sp, 0x4]
adds r3, r4, r3
ldr r0, [r3]
ldr r1, [r4, 0x14]
adds r0, r1
str r0, [sp, 0x8]
adds r2, r4, r2
ldr r0, [r2]
ldr r1, [r4, 0x18]
adds r0, r1
add r2, sp, 0x8
str r0, [r2, 0x4]
movs r1, 0x2
ldrsh r0, [r5, r1]
cmp r0, 0x24
bgt _080A9170
adds r1, r5, 0
adds r1, 0xC
adds r3, r4, 0
adds r3, 0xC
mov r0, sp
bl SizedDeltaDirection8
b _080A917E
.align 2, 0
_080A916C: .4byte gGroundLives
_080A9170:
adds r1, r5, 0
adds r1, 0xC
adds r3, r4, 0
adds r3, 0xC
mov r0, sp
bl SizedDeltaDirection4
_080A917E:
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080A9196
movs r2, 0xA1
lsls r2, 1
adds r0, r5, r2
strb r1, [r0]
movs r0, 0x1
b _080A9198
_080A9196:
movs r0, 0
_080A9198:
add sp, 0x10
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_80A90E8
thumb_func_start sub_80A91A0
sub_80A91A0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x10
lsls r0, 16
asrs r2, r0, 16
lsls r1, 16
asrs r4, r1, 16
cmp r2, r4
beq _080A928E
ldr r1, _080A9260
lsls r0, r2, 5
subs r0, r2
lsls r0, 4
ldr r1, [r1]
adds r7, r1, r0
lsls r0, r4, 5
subs r0, r4
lsls r0, 4
adds r1, r0
mov r8, r1
movs r1, 0x2
ldrsh r0, [r7, r1]
movs r2, 0x1
negs r2, r2
mov r10, r2
cmp r0, r10
beq _080A928E
mov r3, r8
movs r1, 0x2
ldrsh r0, [r3, r1]
cmp r0, r10
beq _080A928E
movs r3, 0xA2
lsls r3, 1
adds r0, r7, r3
ldr r0, [r0]
ldr r1, [r7, 0x14]
adds r0, r1
str r0, [sp]
movs r2, 0xA4
lsls r2, 1
adds r0, r7, r2
ldr r0, [r0]
ldr r1, [r7, 0x18]
adds r0, r1
str r0, [sp, 0x4]
add r3, r8
ldr r0, [r3]
mov r3, r8
ldr r1, [r3, 0x14]
adds r0, r1
str r0, [sp, 0x8]
add r2, r8
ldr r0, [r2]
ldr r1, [r3, 0x18]
adds r0, r1
add r4, sp, 0x8
str r0, [r4, 0x4]
adds r5, r7, 0
adds r5, 0xC
mov r6, r8
adds r6, 0xC
mov r0, sp
adds r1, r5, 0
adds r2, r4, 0
adds r3, r6, 0
bl SizedDeltaDirection8
lsls r0, 24
asrs r0, 24
mov r9, r0
mov r0, sp
adds r1, r5, 0
adds r2, r4, 0
adds r3, r6, 0
bl SizedDeltaDirection4
lsls r0, 24
asrs r1, r0, 24
cmp r9, r10
beq _080A928E
cmp r1, r10
beq _080A928E
movs r2, 0x2
ldrsh r0, [r7, r2]
cmp r0, 0x24
bgt _080A9264
movs r3, 0xA1
lsls r3, 1
adds r0, r7, r3
mov r2, r9
strb r2, [r0]
b _080A926C
.align 2, 0
_080A9260: .4byte gGroundLives
_080A9264:
movs r3, 0xA1
lsls r3, 1
adds r0, r7, r3
strb r1, [r0]
_080A926C:
mov r2, r8
movs r3, 0x2
ldrsh r0, [r2, r3]
cmp r0, 0x25
bgt _080A927A
mov r0, r9
b _080A927C
_080A927A:
adds r0, r1, 0
_080A927C:
movs r1, 0x5
bl sub_8002984
movs r1, 0xA1
lsls r1, 1
add r1, r8
strb r0, [r1]
movs r0, 0x1
b _080A9290
_080A928E:
movs r0, 0
_080A9290:
add sp, 0x10
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A91A0
thumb_func_start GetLivesCollision_80A92A0
GetLivesCollision_80A92A0:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
mov r9, r1
adds r4, r2, 0
lsls r0, 16
asrs r6, r0, 16
ldr r0, _080A931C
ldr r0, [r0]
mov r12, r0
movs r2, 0
movs r0, 0x1
negs r0, r0
mov r8, r0
movs r5, 0x80
lsls r5, 9
_080A92C2:
cmp r2, r6
beq _080A9320
mov r1, r12
movs r7, 0x2
ldrsh r0, [r1, r7]
cmp r0, r8
beq _080A9320
movs r0, 0x8E
lsls r0, 1
add r0, r12
ldr r0, [r0]
mov r1, r9
ands r0, r1
cmp r0, 0
beq _080A9320
movs r0, 0xA2
lsls r0, 1
add r0, r12
ldr r1, [r0]
ldr r0, [r3]
cmp r1, r0
bge _080A9320
movs r0, 0xA6
lsls r0, 1
add r0, r12
ldr r1, [r0]
ldr r0, [r4]
cmp r1, r0
ble _080A9320
movs r0, 0xA4
lsls r0, 1
add r0, r12
ldr r1, [r0]
ldr r0, [r3, 0x4]
cmp r1, r0
bge _080A9320
movs r0, 0xA8
lsls r0, 1
add r0, r12
ldr r1, [r0]
ldr r0, [r4, 0x4]
cmp r1, r0
ble _080A9320
adds r0, r2, 0
b _080A9338
.align 2, 0
_080A931C: .4byte gGroundLives
_080A9320:
adds r0, r5, 0
movs r7, 0x80
lsls r7, 9
adds r5, r7
asrs r2, r0, 16
movs r0, 0xF8
lsls r0, 1
add r12, r0
cmp r2, 0x17
ble _080A92C2
movs r0, 0x1
negs r0, r0
_080A9338:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end GetLivesCollision_80A92A0
thumb_func_start sub_80A9344
sub_80A9344:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
mov r9, r1
str r2, [sp]
adds r5, r3, 0
lsls r0, 16
asrs r0, 16
mov r8, r0
ldr r0, _080A93C4
ldr r0, [r0]
mov r12, r0
movs r4, 0
movs r0, 0x1
negs r0, r0
mov r10, r0
movs r7, 0x80
lsls r7, 9
_080A936E:
cmp r4, r8
beq _080A93C8
mov r1, r12
movs r2, 0x2
ldrsh r0, [r1, r2]
cmp r0, r10
beq _080A93C8
movs r0, 0x8E
lsls r0, 1
add r0, r12
ldr r0, [r0]
mov r6, r9
ands r0, r6
cmp r0, 0
beq _080A93C8
movs r0, 0xA2
lsls r0, 1
add r0, r12
ldr r1, [r0]
mov r6, r12
ldr r0, [r6, 0x14]
adds r2, r1, r0
movs r0, 0xA4
lsls r0, 1
add r0, r12
ldr r1, [r0]
ldr r0, [r6, 0x18]
adds r3, r1, r0
ldr r0, [r5]
cmp r2, r0
bge _080A93C8
ldr r1, [sp]
ldr r0, [r1]
cmp r2, r0
ble _080A93C8
ldr r0, [r5, 0x4]
cmp r3, r0
bge _080A93C8
ldr r0, [r1, 0x4]
cmp r3, r0
ble _080A93C8
adds r0, r4, 0
b _080A93E0
.align 2, 0
_080A93C4: .4byte gGroundLives
_080A93C8:
adds r0, r7, 0
movs r2, 0x80
lsls r2, 9
adds r7, r2
asrs r4, r0, 16
movs r6, 0xF8
lsls r6, 1
add r12, r6
cmp r4, 0x17
ble _080A936E
movs r0, 0x1
negs r0, r0
_080A93E0:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A9344
thumb_func_start sub_80A93F0
sub_80A93F0:
push {r4-r7,lr}
sub sp, 0x10
lsls r0, 16
asrs r0, 16
lsls r1, 24
lsrs r6, r1, 24
ldr r2, _080A947C
lsls r1, r0, 5
subs r1, r0
lsls r1, 4
ldr r0, [r2]
adds r0, r1
mov r12, r0
movs r0, 0xA2
lsls r0, 1
add r0, r12
ldr r0, [r0]
cmp r0, 0
bge _080A941A
ldr r1, _080A9480
adds r0, r1
_080A941A:
asrs r5, r0, 11
str r5, [sp]
movs r0, 0xA4
lsls r0, 1
add r0, r12
ldr r0, [r0]
cmp r0, 0
bge _080A942E
ldr r7, _080A9480
adds r0, r7
_080A942E:
asrs r4, r0, 11
str r4, [sp, 0x4]
movs r0, 0xA6
lsls r0, 1
add r0, r12
ldr r0, [r0]
subs r1, r0, 0x1
cmp r1, 0
bge _080A9444
ldr r7, _080A9484
adds r1, r0, r7
_080A9444:
asrs r2, r1, 11
movs r0, 0xA8
lsls r0, 1
add r0, r12
ldr r0, [r0]
subs r1, r0, 0x1
cmp r1, 0
bge _080A9458
ldr r7, _080A9484
adds r1, r0, r7
_080A9458:
asrs r3, r1, 11
subs r0, r2, r5
adds r0, 0x1
str r0, [sp, 0x8]
subs r0, r3, r4
adds r0, 0x1
add r2, sp, 0x8
str r0, [r2, 0x4]
adds r0, r6, 0
mov r1, sp
bl sub_80A5934
lsls r0, 24
lsrs r0, 24
add sp, 0x10
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080A947C: .4byte gGroundLives
_080A9480: .4byte 0x000007ff
_080A9484: .4byte 0x000007fe
thumb_func_end sub_80A93F0
thumb_func_start sub_80A9488
sub_80A9488:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x10
adds r5, r0, 0
adds r7, r1, 0
mov r8, r2
ldr r0, [r7]
cmp r0, 0
bge _080A94A0
ldr r1, _080A9528
adds r0, r1
_080A94A0:
asrs r0, 11
mov r12, r0
str r0, [sp]
ldr r0, [r7, 0x4]
cmp r0, 0
bge _080A94B0
ldr r3, _080A9528
adds r0, r3
_080A94B0:
asrs r4, r0, 11
str r4, [sp, 0x4]
mov r6, r8
ldr r3, [r6]
subs r0, r3, 0x1
cmp r0, 0
bge _080A94C2
ldr r6, _080A952C
adds r0, r3, r6
_080A94C2:
asrs r1, r0, 11
mov r0, r8
ldr r3, [r0, 0x4]
subs r0, r3, 0x1
cmp r0, 0
bge _080A94D2
ldr r6, _080A952C
adds r0, r3, r6
_080A94D2:
asrs r2, r0, 11
mov r3, r12
subs r0, r1, r3
adds r0, 0x1
str r0, [sp, 0x8]
subs r0, r2, r4
adds r0, 0x1
add r2, sp, 0x8
str r0, [r2, 0x4]
movs r6, 0x8E
lsls r6, 1
adds r0, r5, r6
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
adds r4, r2, 0
cmp r0, 0
beq _080A9504
mov r0, sp
adds r1, r4, 0
bl CheckMapCollision_80A585C
lsls r0, 24
cmp r0, 0
bne _080A9522
_080A9504:
movs r1, 0x8E
lsls r1, 1
adds r0, r5, r1
ldr r0, [r0]
movs r1, 0x2
ands r0, r1
cmp r0, 0
beq _080A9530
mov r0, sp
adds r1, r4, 0
bl sub_80A58C8
lsls r0, 24
cmp r0, 0
beq _080A9530
_080A9522:
movs r0, 0x1
b _080A95A0
.align 2, 0
_080A9528: .4byte 0x000007ff
_080A952C: .4byte 0x000007fe
_080A9530:
movs r3, 0x8E
lsls r3, 1
adds r0, r5, r3
ldr r0, [r0]
movs r1, 0x4
ands r0, r1
cmp r0, 0
beq _080A9556
movs r6, 0
ldrsh r0, [r5, r6]
adds r2, r7, 0
mov r3, r8
bl GetLivesCollision_80A92A0
lsls r0, 16
cmp r0, 0
blt _080A9556
movs r0, 0x4
b _080A95A0
_080A9556:
movs r1, 0x8E
lsls r1, 1
adds r0, r5, r1
ldr r0, [r0]
movs r1, 0x8
ands r0, r1
cmp r0, 0
beq _080A957A
movs r0, 0x4
adds r1, r7, 0
mov r2, r8
bl sub_80AC4C8
lsls r0, 16
cmp r0, 0
blt _080A957A
movs r0, 0x8
b _080A95A0
_080A957A:
movs r3, 0x8E
lsls r3, 1
adds r0, r5, r3
ldr r0, [r0]
movs r1, 0x10
ands r0, r1
cmp r0, 0
beq _080A959E
movs r0, 0x40
adds r1, r7, 0
mov r2, r8
bl FindGroundEvent
lsls r0, 16
cmp r0, 0
blt _080A959E
movs r0, 0x10
b _080A95A0
_080A959E:
movs r0, 0
_080A95A0:
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A9488
thumb_func_start sub_80A95AC
sub_80A95AC:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x14
adds r5, r0, 0
adds r7, r1, 0
mov r8, r2
ldr r0, [r7]
cmp r0, 0
bge _080A95C6
ldr r1, _080A96BC
adds r0, r1
_080A95C6:
asrs r0, 11
mov r9, r0
str r0, [sp]
ldr r0, [r7, 0x4]
cmp r0, 0
bge _080A95D6
ldr r2, _080A96BC
adds r0, r2
_080A95D6:
asrs r4, r0, 11
str r4, [sp, 0x4]
mov r6, r8
ldr r3, [r6]
subs r0, r3, 0x1
cmp r0, 0
bge _080A95E8
ldr r6, _080A96C0
adds r0, r3, r6
_080A95E8:
asrs r1, r0, 11
mov r0, r8
ldr r3, [r0, 0x4]
subs r0, r3, 0x1
cmp r0, 0
bge _080A95F8
ldr r6, _080A96C0
adds r0, r3, r6
_080A95F8:
asrs r2, r0, 11
mov r3, r9
subs r0, r1, r3
adds r0, 0x1
str r0, [sp, 0x8]
subs r0, r2, r4
adds r0, 0x1
add r2, sp, 0x8
str r0, [r2, 0x4]
movs r6, 0x8E
lsls r6, 1
adds r0, r5, r6
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
adds r4, r2, 0
cmp r0, 0
beq _080A962C
mov r0, sp
adds r1, r4, 0
bl CheckMapCollision_80A585C
lsls r0, 24
cmp r0, 0
beq _080A962C
b _080A973C
_080A962C:
movs r1, 0x8E
lsls r1, 1
adds r0, r5, r1
ldr r0, [r0]
movs r1, 0x2
ands r0, r1
cmp r0, 0
beq _080A964A
mov r0, sp
adds r1, r4, 0
bl sub_80A58C8
lsls r0, 24
cmp r0, 0
bne _080A973C
_080A964A:
movs r4, 0x8E
lsls r4, 1
adds r0, r5, r4
ldr r0, [r0]
movs r1, 0x4
ands r0, r1
cmp r0, 0
beq _080A96C8
movs r2, 0
ldrsh r0, [r5, r2]
movs r1, 0x44
adds r2, r7, 0
mov r3, r8
bl GetLivesCollision_80A92A0
lsls r0, 16
asrs r2, r0, 16
mov r9, r2
cmp r2, 0
blt _080A96C8
ldr r1, _080A96C4
lsls r0, r2, 5
subs r0, r2
lsls r0, 4
ldr r1, [r1]
adds r6, r1, r0
adds r0, r6, r4
ldr r1, [r0]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _080A973C
movs r0, 0x80
lsls r0, 2
ands r1, r0
cmp r1, 0
beq _080A96A8
adds r4, 0x26
adds r0, r5, r4
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
movs r1, 0x5
bl sub_8002984
adds r4, r6, r4
strb r0, [r4]
_080A96A8:
movs r3, 0
ldrsh r0, [r5, r3]
mov r1, r9
bl GroundLives_ExecutePlayerScriptActionLives
_080A96B2:
lsls r0, 24
cmp r0, 0
bne _080A9738
b _080A973C
.align 2, 0
_080A96BC: .4byte 0x000007ff
_080A96C0: .4byte 0x000007fe
_080A96C4: .4byte gGroundLives
_080A96C8:
movs r6, 0x8E
lsls r6, 1
adds r0, r5, r6
ldr r0, [r0]
movs r1, 0x8
ands r0, r1
cmp r0, 0
beq _080A9708
movs r0, 0x44
adds r1, r7, 0
mov r2, r8
bl sub_80AC4C8
lsls r0, 16
asrs r4, r0, 16
cmp r4, 0
blt _080A9708
add r1, sp, 0x10
adds r0, r4, 0
bl sub_80AC3E0
ldr r0, [sp, 0x10]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _080A973C
movs r1, 0
ldrsh r0, [r5, r1]
adds r1, r4, 0
bl sub_80A8A5C
b _080A96B2
_080A9708:
movs r2, 0x8E
lsls r2, 1
adds r0, r5, r2
ldr r0, [r0]
movs r1, 0x10
ands r0, r1
cmp r0, 0
beq _080A9740
movs r0, 0x40
adds r1, r7, 0
mov r2, r8
bl FindGroundEvent
lsls r0, 16
asrs r1, r0, 16
cmp r1, 0
blt _080A9740
movs r3, 0
ldrsh r0, [r5, r3]
bl sub_80A8ACC
lsls r0, 24
cmp r0, 0
beq _080A973C
_080A9738:
movs r0, 0x2
b _080A9742
_080A973C:
movs r0, 0x1
b _080A9742
_080A9740:
movs r0, 0
_080A9742:
add sp, 0x14
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A95AC
thumb_func_start sub_80A9750
sub_80A9750:
push {r4,lr}
mov r12, r0
lsls r1, 16
lsrs r1, 16
adds r4, r1, 0
movs r3, 0xFF
ands r3, r1
movs r2, 0xF0
lsls r2, 4
ands r2, r1
cmp r3, 0
beq _080A9770
movs r0, 0xB0
lsls r0, 1
add r0, r12
strh r3, [r0]
_080A9770:
cmp r2, 0
beq _080A977C
movs r0, 0xAF
lsls r0, 1
add r0, r12
strh r2, [r0]
_080A977C:
movs r2, 0xB0
lsls r2, 1
add r2, r12
ldrh r0, [r2]
cmp r0, 0x1
bne _080A97A8
movs r0, 0x80
lsls r0, 5
cmp r1, r0
beq _080A97B6
movs r0, 0xB2
lsls r0, 1
add r0, r12
ldr r0, [r0]
ldr r2, _080A97A4
cmp r0, 0
bgt _080A97A0
b _080A9E98
_080A97A0:
b _080A97C0
.align 2, 0
_080A97A4: .4byte 0x00000807
_080A97A8:
cmp r0, 0x2
beq _080A97AE
b _080A9E8C
_080A97AE:
movs r0, 0x80
lsls r0, 5
cmp r4, r0
bne _080A97C6
_080A97B6:
movs r1, 0xB2
lsls r1, 1
add r1, r12
movs r0, 0x4
str r0, [r1]
_080A97C0:
movs r2, 0x80
lsls r2, 4
b _080A9E98
_080A97C6:
movs r0, 0xB2
lsls r0, 1
add r0, r12
ldr r0, [r0]
cmp r0, 0
bgt _080A97C0
mov r1, r12
ldrh r0, [r1, 0x8]
subs r0, 0xC
lsls r0, 16
asrs r1, r0, 16
ldr r0, _080A97F0
cmp r1, r0
bls _080A97E4
b _080A9E7E
_080A97E4:
lsls r0, r1, 2
ldr r1, _080A97F4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080A97F0: .4byte 0x00000197
_080A97F4: .4byte _080A97F8
.align 2, 0
_080A97F8:
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E60
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E60
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E68
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E60
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E60
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E60
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E60
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E60
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E60
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E60
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E60
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E60
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E60
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E7E
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
.4byte _080A9E58
_080A9E58:
ldr r2, _080A9E5C
b _080A9E98
.align 2, 0
_080A9E5C: .4byte 0x00000807
_080A9E60:
ldr r2, _080A9E64
b _080A9E98
.align 2, 0
_080A9E64: .4byte 0x00000307
_080A9E68:
movs r0, 0xB4
lsls r0, 1
add r0, r12
movs r2, 0
ldrsh r1, [r0, r2]
ldr r2, _080A9E84
cmp r1, r2
beq _080A9E98
ldr r0, _080A9E88
cmp r1, r0
beq _080A9E98
_080A9E7E:
movs r2, 0xC0
lsls r2, 2
b _080A9E98
.align 2, 0
_080A9E84: .4byte 0x00000807
_080A9E88: .4byte 0x00000307
_080A9E8C:
ldr r1, _080A9EC4
ldrh r0, [r2]
lsls r0, 1
adds r0, r1
movs r4, 0
ldrsh r2, [r0, r4]
_080A9E98:
movs r0, 0xE0
lsls r0, 3
ands r0, r2
cmp r0, 0
bne _080A9EEE
movs r0, 0xAF
lsls r0, 1
add r0, r12
ldrh r1, [r0]
movs r0, 0xC0
lsls r0, 2
cmp r1, r0
beq _080A9EEE
cmp r1, r0
bgt _080A9EC8
movs r3, 0x80
lsls r3, 1
cmp r1, r3
beq _080A9EDA
movs r0, 0x80
lsls r0, 2
b _080A9ED4
.align 2, 0
_080A9EC4: .4byte gUnknown_8117F64
_080A9EC8:
movs r3, 0x80
lsls r3, 3
cmp r1, r3
beq _080A9EDE
movs r0, 0x80
lsls r0, 4
_080A9ED4:
cmp r1, r0
beq _080A9EEC
b _080A9EEE
_080A9EDA:
orrs r2, r0
b _080A9EEE
_080A9EDE:
movs r1, 0x80
lsls r1, 2
adds r0, r1, 0
orrs r2, r0
lsls r0, r2, 16
asrs r2, r0, 16
b _080A9EEE
_080A9EEC:
orrs r2, r3
_080A9EEE:
movs r1, 0xB4
lsls r1, 1
add r1, r12
ldrh r3, [r1]
movs r4, 0
ldrsh r0, [r1, r4]
cmp r0, r2
beq _080A9F02
strh r2, [r1]
b _080A9F0C
_080A9F02:
movs r0, 0x80
lsls r0, 5
ands r0, r3
cmp r0, 0
beq _080A9F16
_080A9F0C:
movs r1, 0xAE
lsls r1, 1
add r1, r12
movs r0, 0x1
strb r0, [r1]
_080A9F16:
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80A9750
thumb_func_start sub_80A9F20
sub_80A9F20:
push {r4,r5,lr}
sub sp, 0x10
adds r5, r0, 0
ldr r2, [r1]
ldr r4, [r5, 0x14]
subs r0, r2, r4
str r0, [sp]
ldr r3, [r1, 0x4]
ldr r1, [r5, 0x18]
subs r0, r3, r1
str r0, [sp, 0x4]
adds r2, r4
str r2, [sp, 0x8]
adds r3, r1
add r2, sp, 0x8
str r3, [r2, 0x4]
ldr r1, [r5, 0x28]
ldr r0, [sp]
cmp r0, r1
blt _080A9F5E
ldr r1, [r5, 0x30]
ldr r0, [sp, 0x8]
cmp r0, r1
bge _080A9F5E
ldr r1, [r5, 0x2C]
ldr r0, [sp, 0x4]
cmp r0, r1
blt _080A9F5E
ldr r0, [r5, 0x34]
cmp r3, r0
blt _080A9F62
_080A9F5E:
movs r0, 0x1
b _080A9F8C
_080A9F62:
adds r0, r5, 0
mov r1, sp
bl sub_80A9488
cmp r0, 0
bne _080A9F8C
movs r0, 0xA2
lsls r0, 1
adds r2, r5, r0
ldr r0, [sp]
ldr r1, [sp, 0x4]
str r0, [r2]
str r1, [r2, 0x4]
movs r0, 0xA6
lsls r0, 1
adds r2, r5, r0
ldr r0, [sp, 0x8]
ldr r1, [sp, 0xC]
str r0, [r2]
str r1, [r2, 0x4]
movs r0, 0
_080A9F8C:
add sp, 0x10
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_80A9F20
thumb_func_start sub_80A9F94
sub_80A9F94:
push {r4-r6,lr}
sub sp, 0x10
adds r4, r0, 0
movs r2, 0xA2
lsls r2, 1
adds r0, r4, r2
ldr r0, [r0]
ldr r2, [r1]
adds r0, r2
str r0, [sp]
movs r3, 0xA4
lsls r3, 1
adds r0, r4, r3
ldr r0, [r0]
ldr r1, [r1, 0x4]
adds r0, r1
str r0, [sp, 0x4]
adds r3, 0x4
adds r0, r4, r3
ldr r0, [r0]
adds r0, r2
str r0, [sp, 0x8]
movs r2, 0xA8
lsls r2, 1
adds r0, r4, r2
ldr r0, [r0]
adds r0, r1
add r1, sp, 0x8
str r0, [r1, 0x4]
movs r6, 0
ldr r3, [r4, 0x28]
ldr r0, [sp]
adds r2, r1, 0
cmp r0, r3
bge _080A9FE4
str r3, [sp]
ldr r0, [r4, 0xC]
adds r0, r3, r0
str r0, [sp, 0x8]
b _080A9FF4
_080A9FE4:
ldr r1, [r4, 0x30]
ldr r0, [sp, 0x8]
cmp r0, r1
blt _080A9FF6
ldr r0, [r4, 0xC]
subs r0, r1, r0
str r0, [sp]
str r1, [sp, 0x8]
_080A9FF4:
movs r6, 0x1
_080A9FF6:
ldr r1, [r4, 0x2C]
ldr r0, [sp, 0x4]
cmp r0, r1
bge _080AA008
str r1, [sp, 0x4]
ldr r0, [r4, 0x10]
adds r0, r1, r0
str r0, [r2, 0x4]
b _080AA018
_080AA008:
ldr r1, [r4, 0x34]
ldr r0, [r2, 0x4]
cmp r0, r1
blt _080AA01A
ldr r0, [r4, 0x10]
subs r0, r1, r0
str r0, [sp, 0x4]
str r1, [r2, 0x4]
_080AA018:
movs r6, 0x1
_080AA01A:
adds r0, r4, 0
mov r1, sp
bl sub_80A9488
adds r5, r0, 0
cmp r5, 0
beq _080AA034
adds r0, r4, 0
movs r1, 0
bl sub_80AAF68
adds r0, r5, 0
b _080AA06A
_080AA034:
movs r3, 0xA2
lsls r3, 1
adds r2, r4, r3
ldr r0, [sp]
ldr r1, [sp, 0x4]
str r0, [r2]
str r1, [r2, 0x4]
movs r0, 0xA6
lsls r0, 1
adds r2, r4, r0
ldr r0, [sp, 0x8]
ldr r1, [sp, 0xC]
str r0, [r2]
str r1, [r2, 0x4]
cmp r6, 0
bne _080AA060
adds r0, r4, 0
movs r1, 0x1
bl sub_80AAF68
movs r0, 0
b _080AA06A
_080AA060:
adds r0, r4, 0
movs r1, 0
bl sub_80AAF68
movs r0, 0x1
_080AA06A:
add sp, 0x10
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80A9F94
thumb_func_start sub_80AA074
sub_80AA074:
push {r4-r7,lr}
sub sp, 0x10
adds r4, r0, 0
movs r2, 0xA2
lsls r2, 1
adds r0, r4, r2
ldr r0, [r0]
ldr r2, [r1]
adds r0, r2
str r0, [sp]
movs r3, 0xA4
lsls r3, 1
adds r0, r4, r3
ldr r0, [r0]
ldr r1, [r1, 0x4]
adds r0, r1
str r0, [sp, 0x4]
adds r3, 0x4
adds r0, r4, r3
ldr r0, [r0]
adds r0, r2
str r0, [sp, 0x8]
movs r2, 0xA8
lsls r2, 1
adds r0, r4, r2
ldr r0, [r0]
adds r0, r1
add r1, sp, 0x8
str r0, [r1, 0x4]
ldr r3, [r4, 0x28]
ldr r0, [sp]
adds r5, r1, 0
cmp r0, r3
bge _080AA0C2
str r3, [sp]
ldr r0, [r4, 0xC]
adds r0, r3, r0
str r0, [sp, 0x8]
b _080AA0D2
_080AA0C2:
ldr r1, [r4, 0x30]
ldr r0, [sp, 0x8]
cmp r0, r1
blt _080AA0D2
ldr r0, [r4, 0xC]
subs r0, r1, r0
str r0, [sp]
str r1, [sp, 0x8]
_080AA0D2:
ldr r1, [r4, 0x2C]
ldr r0, [sp, 0x4]
cmp r0, r1
bge _080AA0E4
str r1, [sp, 0x4]
ldr r0, [r4, 0x10]
adds r0, r1, r0
str r0, [r5, 0x4]
b _080AA0F4
_080AA0E4:
ldr r1, [r4, 0x34]
ldr r0, [r5, 0x4]
cmp r0, r1
blt _080AA0F4
ldr r0, [r4, 0x10]
subs r0, r1, r0
str r0, [sp, 0x4]
str r1, [r5, 0x4]
_080AA0F4:
adds r0, r4, 0
mov r1, sp
adds r2, r5, 0
bl sub_80A95AC
adds r6, r0, 0
cmp r6, 0
bne _080AA170
movs r3, 0xA2
lsls r3, 1
adds r2, r4, r3
ldr r0, [sp]
ldr r1, [sp, 0x4]
str r0, [r2]
str r1, [r2, 0x4]
movs r0, 0xA6
lsls r0, 1
adds r2, r4, r0
ldr r0, [sp, 0x8]
ldr r1, [sp, 0xC]
str r0, [r2]
str r1, [r2, 0x4]
movs r1, 0x8E
lsls r1, 1
adds r0, r4, r1
ldr r0, [r0]
movs r1, 0x10
ands r0, r1
cmp r0, 0
beq _080AA170
movs r0, 0x20
mov r1, sp
adds r2, r5, 0
bl FindGroundEvent
lsls r0, 16
asrs r5, r0, 16
cmp r5, 0
blt _080AA166
movs r2, 0x9F
lsls r2, 1
adds r7, r4, r2
movs r3, 0
ldrsh r0, [r7, r3]
cmp r0, r5
beq _080AA170
movs r1, 0
ldrsh r0, [r4, r1]
adds r1, r5, 0
bl sub_80A8ACC
lsls r0, 24
cmp r0, 0
beq _080AA170
strh r5, [r7]
movs r6, 0x2
b _080AA170
_080AA166:
movs r2, 0x9F
lsls r2, 1
adds r1, r4, r2
ldr r0, _080AA17C
strh r0, [r1]
_080AA170:
adds r0, r6, 0
add sp, 0x10
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080AA17C: .4byte 0x0000ffff
thumb_func_end sub_80AA074
thumb_func_start sub_80AA180
sub_80AA180:
push {r4-r7,lr}
sub sp, 0x10
adds r4, r0, 0
adds r5, r1, 0
adds r6, r2, 0
adds r7, r3, 0
movs r0, 0x4
ands r0, r5
cmp r0, 0
beq _080AA220
movs r1, 0
ldrsh r0, [r4, r1]
movs r1, 0x80
bl sub_80A9344
lsls r0, 16
asrs r0, 16
cmp r0, 0
blt _080AA220
mov r1, sp
bl sub_80A8FD8
movs r2, 0xA2
lsls r2, 1
adds r0, r4, r2
ldr r1, [r0]
ldr r0, [r4, 0x14]
adds r1, r0
ldr r0, [sp]
subs r0, r1
str r0, [sp, 0x8]
movs r3, 0xA4
lsls r3, 1
adds r0, r4, r3
ldr r0, [r0]
ldr r1, [r4, 0x18]
adds r0, r1
ldr r1, [sp, 0x4]
subs r1, r0
add r0, sp, 0x8
str r1, [r0, 0x4]
bl VecDirection8Radial
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080AA2B2
movs r0, 0xA1
lsls r0, 1
adds r2, r4, r0
lsls r0, r1, 24
lsrs r0, 24
strb r0, [r2]
ldr r3, _080AA21C
adds r1, r4, r3
ldrb r1, [r1]
lsls r1, 24
asrs r1, 24
lsls r0, 24
asrs r0, 24
cmp r1, r0
beq _080AA20A
movs r0, 0xAE
lsls r0, 1
adds r1, r4, r0
movs r0, 0x1
strb r0, [r1]
_080AA20A:
movs r1, 0
ldrsb r1, [r2, r1]
adds r0, r4, 0
bl sub_80AA3F8
lsls r0, 24
cmp r0, 0
bne _080AA2AE
b _080AA2B2
.align 2, 0
_080AA21C: .4byte 0x0000015d
_080AA220:
movs r0, 0x8
ands r0, r5
cmp r0, 0
beq _080AA2B2
movs r0, 0x80
adds r1, r6, 0
adds r2, r7, 0
bl sub_80AC554
lsls r0, 16
asrs r0, 16
cmp r0, 0
blt _080AA2B2
mov r1, sp
bl sub_80AC448
movs r1, 0xA2
lsls r1, 1
adds r0, r4, r1
ldr r1, [r0]
ldr r0, [r4, 0x14]
adds r1, r0
ldr r0, [sp]
subs r0, r1
str r0, [sp, 0x8]
add r0, sp, 0x8
movs r2, 0xA4
lsls r2, 1
adds r1, r4, r2
ldr r2, [r1]
ldr r1, [r4, 0x18]
adds r2, r1
ldr r1, [sp, 0x4]
subs r1, r2
str r1, [r0, 0x4]
bl VecDirection8Radial
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080AA2B2
movs r3, 0xA1
lsls r3, 1
adds r2, r4, r3
lsls r0, r1, 24
lsrs r0, 24
strb r0, [r2]
adds r3, 0x1B
adds r1, r4, r3
ldrb r1, [r1]
lsls r1, 24
asrs r1, 24
lsls r0, 24
asrs r0, 24
cmp r1, r0
beq _080AA29E
movs r0, 0xAE
lsls r0, 1
adds r1, r4, r0
movs r0, 0x1
strb r0, [r1]
_080AA29E:
movs r1, 0
ldrsb r1, [r2, r1]
adds r0, r4, 0
bl sub_80AA3F8
lsls r0, 24
cmp r0, 0
beq _080AA2B2
_080AA2AE:
movs r0, 0x3
b _080AA2B4
_080AA2B2:
movs r0, 0
_080AA2B4:
add sp, 0x10
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80AA180
thumb_func_start sub_80AA2BC
sub_80AA2BC:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x20
adds r7, r0, 0
mov r8, r1
ldr r0, [r2]
ldr r1, [r2, 0x4]
str r0, [sp]
str r1, [sp, 0x4]
ldr r0, [r3]
ldr r1, [r3, 0x4]
str r0, [sp, 0x10]
str r1, [sp, 0x14]
ldr r0, [sp]
cmp r0, 0
bge _080AA2E6
ldr r1, _080AA3C4
adds r0, r1
_080AA2E6:
asrs r0, 11
str r0, [sp, 0x8]
ldr r0, [sp, 0x4]
cmp r0, 0
bge _080AA2F4
ldr r2, _080AA3C4
adds r0, r2
_080AA2F4:
asrs r0, 11
add r1, sp, 0x8
str r0, [r1, 0x4]
ldr r4, [sp, 0x10]
subs r0, r4, 0x1
mov r10, r1
cmp r0, 0
bge _080AA308
ldr r1, _080AA3C8
adds r0, r4, r1
_080AA308:
asrs r2, r0, 11
add r0, sp, 0x10
ldr r4, [r0, 0x4]
subs r1, r4, 0x1
mov r9, r0
cmp r1, 0
bge _080AA31A
ldr r0, _080AA3C8
adds r1, r4, r0
_080AA31A:
asrs r3, r1, 11
ldr r0, [sp, 0x8]
subs r0, r2, r0
adds r0, 0x1
str r0, [sp, 0x18]
mov r1, r10
ldr r0, [r1, 0x4]
subs r0, r3, r0
adds r0, 0x1
add r1, sp, 0x18
str r0, [r1, 0x4]
movs r0, 0x4
mov r2, r8
ands r0, r2
cmp r0, 0
beq _080AA394
movs r1, 0
ldrsh r0, [r7, r1]
movs r1, 0x80
mov r2, sp
mov r3, r9
bl GetLivesCollision_80A92A0
lsls r0, 16
asrs r5, r0, 16
cmp r5, 0
blt _080AA394
ldr r1, _080AA3CC
lsls r0, r5, 5
subs r0, r5
lsls r0, 4
ldr r1, [r1]
adds r6, r1, r0
movs r2, 0x8E
lsls r2, 1
adds r0, r6, r2
ldr r0, [r0]
movs r1, 0x80
lsls r1, 2
ands r0, r1
cmp r0, 0
beq _080AA384
movs r4, 0xA1
lsls r4, 1
adds r0, r7, r4
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
movs r1, 0x5
bl sub_8002984
adds r4, r6, r4
strb r0, [r4]
_080AA384:
movs r1, 0
ldrsh r0, [r7, r1]
adds r1, r5, 0
bl GroundLives_ExecutePlayerScriptActionLives
lsls r0, 24
cmp r0, 0
bne _080AA3BE
_080AA394:
movs r0, 0x8
mov r2, r8
ands r0, r2
cmp r0, 0
beq _080AA3D0
movs r0, 0x80
mov r1, sp
mov r2, r9
bl sub_80AC4C8
lsls r0, 16
asrs r1, r0, 16
cmp r1, 0
blt _080AA3D0
movs r2, 0
ldrsh r0, [r7, r2]
bl sub_80A8A5C
lsls r0, 24
cmp r0, 0
beq _080AA3D0
_080AA3BE:
movs r0, 0x3
b _080AA3E6
.align 2, 0
_080AA3C4: .4byte 0x000007ff
_080AA3C8: .4byte 0x000007fe
_080AA3CC: .4byte gGroundLives
_080AA3D0:
movs r0, 0x10
mov r1, r10
add r2, sp, 0x18
bl sub_80A595C
lsls r0, 24
cmp r0, 0
bne _080AA3E4
movs r0, 0
b _080AA3E6
_080AA3E4:
movs r0, 0x6
_080AA3E6:
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80AA2BC
thumb_func_start sub_80AA3F8
sub_80AA3F8:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x40
adds r6, r0, 0
lsls r1, 24
asrs r1, 24
str r1, [sp, 0x28]
movs r2, 0x80
lsls r2, 1
mov r0, sp
bl SetVecFromDirectionSpeed
ldr r4, [sp]
ldr r5, [sp, 0x4]
movs r0, 0xA2
lsls r0, 1
adds r0, r6
mov r9, r0
ldr r0, [r0]
adds r0, r4
str r0, [sp, 0x8]
movs r1, 0xA4
lsls r1, 1
adds r1, r6
mov r10, r1
ldr r0, [r1]
adds r0, r5
add r2, sp, 0x8
str r0, [r2, 0x4]
movs r1, 0xA6
lsls r1, 1
adds r0, r6, r1
ldr r0, [r0]
adds r0, r4
str r0, [sp, 0x10]
adds r1, 0x4
adds r0, r6, r1
ldr r0, [r0]
adds r0, r5
add r3, sp, 0x10
str r0, [r3, 0x4]
adds r0, r6, 0
movs r1, 0xC
bl sub_80AA2BC
adds r7, r0, 0
cmp r7, 0x3
bne _080AA462
_080AA45E:
movs r0, 0x1
b _080AA650
_080AA462:
ldr r0, [r6, 0xC]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
movs r2, 0x80
lsls r2, 2
mov r8, r2
add r0, r8
muls r0, r4
cmp r0, 0
bge _080AA47A
adds r0, 0xFF
_080AA47A:
asrs r0, 8
str r0, [sp, 0x2C]
ldr r0, [r6, 0x10]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
add r0, r8
muls r0, r5
cmp r0, 0
bge _080AA490
adds r0, 0xFF
_080AA490:
asrs r0, 8
str r0, [sp, 0x30]
mov r1, r9
ldr r0, [r1]
ldr r1, [r6, 0x14]
adds r0, r1
ldr r2, [sp, 0x2C]
adds r0, r2
ldr r2, _080AA4F4
adds r0, r2
str r0, [sp, 0x18]
mov r1, r10
ldr r0, [r1]
ldr r1, [r6, 0x18]
adds r0, r1
ldr r1, [sp, 0x30]
adds r0, r1
adds r0, r2
add r2, sp, 0x18
str r0, [r2, 0x4]
movs r1, 0xC0
lsls r1, 3
ldr r0, [sp, 0x18]
adds r0, r1
str r0, [sp, 0x20]
ldr r0, [r2, 0x4]
adds r0, r1
add r3, sp, 0x20
str r0, [r3, 0x4]
ldr r0, _080AA4F8
mov r9, r0
ldr r0, [sp, 0x28]
lsls r1, r0, 2
add r9, r1
mov r0, r9
ldr r0, [r0]
str r0, [sp, 0x34]
ldr r0, _080AA4FC
adds r0, r1, r0
ldr r0, [r0]
str r0, [sp, 0x38]
ldr r0, _080AA500
adds r1, r0
ldr r1, [r1]
str r1, [sp, 0x3C]
mov r10, r8
mov r9, r2
mov r8, r3
b _080AA568
.align 2, 0
_080AA4F4: .4byte 0xfffffd00
_080AA4F8: .4byte gUnknown_8117FF0
_080AA4FC: .4byte gUnknown_8118010
_080AA500: .4byte gUnknown_8118030
_080AA504:
ldr r1, [r6, 0x28]
ldr r0, [sp, 0x18]
cmp r0, r1
bge _080AA50E
b _080AA64E
_080AA50E:
ldr r1, [r6, 0x30]
ldr r0, [sp, 0x20]
cmp r0, r1
blt _080AA518
b _080AA64E
_080AA518:
ldr r1, [r6, 0x2C]
mov r2, r9
ldr r0, [r2, 0x4]
cmp r0, r1
bge _080AA524
b _080AA64E
_080AA524:
ldr r1, [r6, 0x34]
mov r2, r8
ldr r0, [r2, 0x4]
cmp r0, r1
blt _080AA530
b _080AA64E
_080AA530:
adds r0, r6, 0
movs r1, 0xC
mov r2, r9
mov r3, r8
bl sub_80AA2BC
adds r7, r0, 0
cmp r7, 0x3
beq _080AA45E
ldr r0, [sp, 0x18]
adds r0, r4
str r0, [sp, 0x18]
mov r1, r9
ldr r0, [r1, 0x4]
adds r0, r5
str r0, [r1, 0x4]
ldr r0, [sp, 0x20]
adds r0, r4
str r0, [sp, 0x20]
mov r2, r8
ldr r0, [r2, 0x4]
adds r0, r5
str r0, [r2, 0x4]
cmp r7, 0x6
beq _080AA572
movs r0, 0x80
lsls r0, 1
add r10, r0
_080AA568:
ldr r1, [sp, 0x34]
cmp r10, r1
blt _080AA504
cmp r7, 0x6
bne _080AA64E
_080AA572:
ldr r2, [sp, 0x38]
cmp r10, r2
bge _080AA5DC
_080AA578:
ldr r1, [sp, 0x18]
ldr r0, [r6, 0x28]
cmp r1, r0
blt _080AA64E
ldr r1, [sp, 0x20]
ldr r0, [r6, 0x30]
cmp r1, r0
bge _080AA64E
mov r0, r9
ldr r1, [r0, 0x4]
ldr r0, [r6, 0x2C]
cmp r1, r0
blt _080AA64E
mov r2, r8
ldr r1, [r2, 0x4]
ldr r0, [r6, 0x34]
cmp r1, r0
bge _080AA64E
adds r0, r6, 0
movs r1, 0x4
mov r2, r9
mov r3, r8
bl sub_80AA2BC
adds r7, r0, 0
cmp r7, 0x3
bne _080AA5B0
b _080AA45E
_080AA5B0:
ldr r0, [sp, 0x18]
adds r0, r4
str r0, [sp, 0x18]
mov r1, r9
ldr r0, [r1, 0x4]
adds r0, r5
str r0, [r1, 0x4]
ldr r0, [sp, 0x20]
adds r0, r4
str r0, [sp, 0x20]
mov r2, r8
ldr r0, [r2, 0x4]
adds r0, r5
str r0, [r2, 0x4]
cmp r7, 0x6
bne _080AA5E0
movs r0, 0x80
lsls r0, 1
add r10, r0
ldr r1, [sp, 0x38]
cmp r10, r1
blt _080AA578
_080AA5DC:
cmp r7, 0x6
beq _080AA64E
_080AA5E0:
movs r2, 0
mov r10, r2
ldr r0, [sp, 0x3C]
cmp r10, r0
bge _080AA64E
_080AA5EA:
ldr r1, [sp, 0x18]
ldr r0, [r6, 0x28]
cmp r1, r0
blt _080AA64E
ldr r1, [sp, 0x20]
ldr r0, [r6, 0x30]
cmp r1, r0
bge _080AA64E
mov r2, r9
ldr r1, [r2, 0x4]
ldr r0, [r6, 0x2C]
cmp r1, r0
blt _080AA64E
mov r0, r8
ldr r1, [r0, 0x4]
ldr r0, [r6, 0x34]
cmp r1, r0
bge _080AA64E
adds r0, r6, 0
movs r1, 0x4
mov r2, r9
mov r3, r8
bl sub_80AA2BC
adds r7, r0, 0
cmp r7, 0x3
bne _080AA622
b _080AA45E
_080AA622:
cmp r7, 0x6
beq _080AA64E
ldr r0, [sp, 0x18]
adds r0, r4
str r0, [sp, 0x18]
mov r1, r9
ldr r0, [r1, 0x4]
adds r0, r5
str r0, [r1, 0x4]
ldr r0, [sp, 0x20]
adds r0, r4
str r0, [sp, 0x20]
mov r2, r8
ldr r0, [r2, 0x4]
adds r0, r5
str r0, [r2, 0x4]
movs r0, 0x80
lsls r0, 1
add r10, r0
ldr r1, [sp, 0x3C]
cmp r10, r1
blt _080AA5EA
_080AA64E:
movs r0, 0
_080AA650:
add sp, 0x40
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80AA3F8
thumb_func_start sub_80AA660
sub_80AA660:
push {r4,lr}
adds r4, r0, 0
movs r0, 0x80
lsls r0, 1
bl sub_80AC4C8
lsls r0, 16
asrs r1, r0, 16
cmp r1, 0
blt _080AA686
movs r2, 0
ldrsh r0, [r4, r2]
bl sub_80A8A5C
lsls r0, 24
cmp r0, 0
beq _080AA686
movs r0, 0x4
b _080AA688
_080AA686:
movs r0, 0
_080AA688:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80AA660
thumb_func_start sub_80AA690
sub_80AA690:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x18
adds r7, r0, 0
lsls r1, 24
asrs r1, 24
mov r9, r1
movs r2, 0x80
lsls r2, 1
mov r0, sp
bl SetVecFromDirectionSpeed
ldr r5, [sp]
ldr r6, [sp, 0x4]
ldr r0, [r7, 0xC]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
movs r1, 0x80
lsls r1, 2
mov r8, r1
add r0, r8
muls r0, r5
cmp r0, 0
bge _080AA6CA
adds r0, 0xFF
_080AA6CA:
asrs r3, r0, 8
ldr r0, [r7, 0x10]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
add r0, r8
muls r0, r6
cmp r0, 0
bge _080AA6DE
adds r0, 0xFF
_080AA6DE:
asrs r4, r0, 8
movs r2, 0xA2
lsls r2, 1
adds r0, r7, r2
ldr r0, [r0]
ldr r1, [r7, 0x14]
adds r0, r1
adds r0, r3
ldr r2, _080AA76C
adds r0, r2
str r0, [sp, 0x8]
movs r1, 0xA4
lsls r1, 1
adds r0, r7, r1
ldr r0, [r0]
ldr r1, [r7, 0x18]
adds r0, r1
adds r0, r4
adds r0, r2
add r2, sp, 0x8
str r0, [r2, 0x4]
movs r1, 0xC0
lsls r1, 3
ldr r0, [sp, 0x8]
adds r0, r1
str r0, [sp, 0x10]
ldr r0, [r2, 0x4]
adds r0, r1
add r3, sp, 0x10
str r0, [r3, 0x4]
ldr r1, _080AA770
mov r4, r9
lsls r0, r4, 2
adds r0, r1
ldr r0, [r0]
mov r10, r0
mov r9, r8
mov r8, r2
adds r4, r3, 0
cmp r9, r10
bge _080AA79C
_080AA730:
ldr r1, [r7, 0x28]
ldr r0, [sp, 0x8]
cmp r0, r1
blt _080AA79C
ldr r1, [r7, 0x30]
ldr r0, [sp, 0x10]
cmp r0, r1
bge _080AA79C
ldr r1, [r7, 0x2C]
mov r2, r8
ldr r0, [r2, 0x4]
cmp r0, r1
blt _080AA79C
ldr r1, [r7, 0x34]
ldr r0, [r4, 0x4]
cmp r0, r1
bge _080AA79C
adds r0, r7, 0
mov r1, r8
adds r2, r4, 0
bl sub_80AA660
cmp r0, 0x4
beq _080AA774
cmp r0, 0x4
bhi _080AA778
cmp r0, 0
bne _080AA778
b _080AA79C
.align 2, 0
_080AA76C: .4byte 0xfffffd00
_080AA770: .4byte gUnknown_8117FF0
_080AA774:
movs r0, 0x1
b _080AA79E
_080AA778:
ldr r0, [sp, 0x8]
adds r0, r5
str r0, [sp, 0x8]
mov r1, r8
ldr r0, [r1, 0x4]
adds r0, r6
str r0, [r1, 0x4]
ldr r0, [sp, 0x10]
adds r0, r5
str r0, [sp, 0x10]
ldr r0, [r4, 0x4]
adds r0, r6
str r0, [r4, 0x4]
movs r2, 0x80
lsls r2, 1
add r9, r2
cmp r9, r10
blt _080AA730
_080AA79C:
movs r0, 0
_080AA79E:
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_80AA690
thumb_func_start sub_80AA7B0
sub_80AA7B0:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x20
adds r7, r0, 0
adds r6, r1, 0
mov r12, r2
ldr r2, [sp, 0x38]
ldr r0, [r3]
ldr r1, [r3, 0x4]
str r0, [sp]
str r1, [sp, 0x4]
ldr r0, [r2]
ldr r1, [r2, 0x4]
str r0, [sp, 0x10]
str r1, [sp, 0x14]
ldr r0, [sp]
cmp r0, 0
bge _080AA7DA
ldr r1, _080AA884
adds r0, r1
_080AA7DA:
asrs r0, 11
str r0, [sp, 0x8]
ldr r0, [sp, 0x4]
cmp r0, 0
bge _080AA7E8
ldr r2, _080AA884
adds r0, r2
_080AA7E8:
asrs r0, 11
add r1, sp, 0x8
str r0, [r1, 0x4]
ldr r4, [sp, 0x10]
subs r0, r4, 0x1
mov r8, r1
cmp r0, 0
bge _080AA7FC
ldr r5, _080AA888
adds r0, r4, r5
_080AA7FC:
asrs r2, r0, 11
add r4, sp, 0x10
ldr r1, [r4, 0x4]
subs r0, r1, 0x1
cmp r0, 0
bge _080AA80C
ldr r5, _080AA888
adds r0, r1, r5
_080AA80C:
asrs r3, r0, 11
ldr r0, [sp, 0x8]
subs r0, r2, r0
adds r0, 0x1
str r0, [sp, 0x18]
mov r1, r8
ldr r0, [r1, 0x4]
subs r0, r3, r0
adds r0, 0x1
add r1, sp, 0x18
str r0, [r1, 0x4]
movs r0, 0x4
mov r2, r12
ands r0, r2
adds r5, r1, 0
cmp r0, 0
beq _080AA890
movs r1, 0
ldrsh r0, [r7, r1]
movs r1, 0x80
mov r2, sp
adds r3, r4, 0
bl GetLivesCollision_80A92A0
lsls r0, 16
asrs r4, r0, 16
cmp r4, 0
blt _080AA890
adds r0, r4, 0
bl sub_80A8BBC
lsls r0, 16
ldr r2, _080AA88C
adds r0, r2
lsrs r0, 16
cmp r0, 0xF
bhi _080AA890
adds r0, r4, 0
bl sub_80A8E9C
cmp r0, 0
beq _080AA890
strh r4, [r6]
movs r5, 0xA1
lsls r5, 1
adds r0, r7, r5
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
movs r1, 0x5
bl sub_8002984
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
adds r0, r4, 0
bl sub_80A9090
movs r0, 0x5
b _080AA8AE
.align 2, 0
_080AA884: .4byte 0x000007ff
_080AA888: .4byte 0x000007fe
_080AA88C: .4byte 0xfff20000
_080AA890:
movs r1, 0x1
negs r1, r1
adds r0, r1, 0
strh r0, [r6]
movs r0, 0x10
mov r1, r8
adds r2, r5, 0
bl sub_80A595C
lsls r0, 24
cmp r0, 0
bne _080AA8AC
movs r0, 0
b _080AA8AE
_080AA8AC:
movs r0, 0x6
_080AA8AE:
add sp, 0x20
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80AA7B0
thumb_func_start sub_80AA8BC
sub_80AA8BC:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x30
adds r6, r0, 0
str r1, [sp, 0x1C]
lsls r2, 24
asrs r2, 24
mov r8, r2
movs r2, 0x80
lsls r2, 1
add r0, sp, 0x4
mov r1, r8
bl SetVecFromDirectionSpeed
ldr r4, [sp, 0x4]
ldr r5, [sp, 0x8]
ldr r0, [r6, 0xC]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
movs r1, 0x80
lsls r1, 2
mov r9, r1
add r0, r9
muls r0, r4
cmp r0, 0
bge _080AA8FA
adds r0, 0xFF
_080AA8FA:
asrs r0, 8
str r0, [sp, 0x20]
ldr r0, [r6, 0x10]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
add r0, r9
muls r0, r5
cmp r0, 0
bge _080AA910
adds r0, 0xFF
_080AA910:
asrs r0, 8
str r0, [sp, 0x24]
movs r2, 0xA2
lsls r2, 1
adds r0, r6, r2
ldr r0, [r0]
ldr r1, [r6, 0x14]
adds r0, r1
ldr r7, [sp, 0x20]
adds r0, r7
ldr r2, _080AA9F0
adds r0, r2
str r0, [sp, 0xC]
movs r1, 0xA4
lsls r1, 1
adds r0, r6, r1
ldr r0, [r0]
ldr r1, [r6, 0x18]
adds r0, r1
ldr r7, [sp, 0x24]
adds r0, r7
adds r0, r2
add r2, sp, 0xC
str r0, [r2, 0x4]
movs r1, 0xC0
lsls r1, 3
ldr r0, [sp, 0xC]
adds r0, r1
str r0, [sp, 0x14]
ldr r0, [r2, 0x4]
adds r0, r1
add r3, sp, 0x14
str r0, [r3, 0x4]
ldr r0, _080AA9F4
mov r7, r8
lsls r1, r7, 2
adds r0, r1, r0
ldr r0, [r0]
mov r10, r0
ldr r0, _080AA9F8
adds r0, r1, r0
ldr r0, [r0]
str r0, [sp, 0x28]
ldr r0, _080AA9FC
adds r1, r0
ldr r1, [r1]
str r1, [sp, 0x2C]
movs r1, 0
movs r7, 0x1
negs r7, r7
adds r0, r7, 0
ldr r7, [sp, 0x1C]
strh r0, [r7]
mov r8, r2
adds r7, r3, 0
cmp r9, r10
bge _080AA9E8
_080AA982:
ldr r1, [r6, 0x28]
ldr r0, [sp, 0xC]
cmp r0, r1
bge _080AA98C
b _080AAAD4
_080AA98C:
ldr r1, [r6, 0x30]
ldr r0, [sp, 0x14]
cmp r0, r1
blt _080AA996
b _080AAAD4
_080AA996:
ldr r1, [r6, 0x2C]
mov r2, r8
ldr r0, [r2, 0x4]
cmp r0, r1
bge _080AA9A2
b _080AAAD4
_080AA9A2:
ldr r1, [r6, 0x34]
ldr r0, [r7, 0x4]
cmp r0, r1
blt _080AA9AC
b _080AAAD4
_080AA9AC:
str r7, [sp]
adds r0, r6, 0
ldr r1, [sp, 0x1C]
movs r2, 0xC
mov r3, r8
bl sub_80AA7B0
adds r1, r0, 0
cmp r1, 0x5
beq _080AAA66
ldr r0, [sp, 0xC]
adds r0, r4
str r0, [sp, 0xC]
mov r2, r8
ldr r0, [r2, 0x4]
adds r0, r5
str r0, [r2, 0x4]
ldr r0, [sp, 0x14]
adds r0, r4
str r0, [sp, 0x14]
ldr r0, [r7, 0x4]
adds r0, r5
str r0, [r7, 0x4]
cmp r1, 0x6
beq _080AAA5A
movs r0, 0x80
lsls r0, 1
add r9, r0
cmp r9, r10
blt _080AA982
_080AA9E8:
cmp r1, 0x6
bne _080AAAD4
b _080AAA5A
.align 2, 0
_080AA9F0: .4byte 0xfffffd00
_080AA9F4: .4byte gUnknown_8117FF0
_080AA9F8: .4byte gUnknown_8118010
_080AA9FC: .4byte gUnknown_8118030
_080AAA00:
ldr r1, [sp, 0xC]
ldr r0, [r6, 0x28]
cmp r1, r0
blt _080AAAD4
ldr r1, [sp, 0x14]
ldr r0, [r6, 0x30]
cmp r1, r0
bge _080AAAD4
mov r0, r8
ldr r1, [r0, 0x4]
ldr r0, [r6, 0x2C]
cmp r1, r0
blt _080AAAD4
ldr r1, [r7, 0x4]
ldr r0, [r6, 0x34]
cmp r1, r0
bge _080AAAD4
str r7, [sp]
adds r0, r6, 0
ldr r1, [sp, 0x1C]
movs r2, 0x4
mov r3, r8
bl sub_80AA7B0
adds r1, r0, 0
cmp r1, 0x5
beq _080AAA66
ldr r0, [sp, 0xC]
adds r0, r4
str r0, [sp, 0xC]
mov r2, r8
ldr r0, [r2, 0x4]
adds r0, r5
str r0, [r2, 0x4]
ldr r0, [sp, 0x14]
adds r0, r4
str r0, [sp, 0x14]
ldr r0, [r7, 0x4]
adds r0, r5
str r0, [r7, 0x4]
cmp r1, 0x6
bne _080AAA6A
movs r0, 0x80
lsls r0, 1
add r9, r0
_080AAA5A:
ldr r2, [sp, 0x28]
cmp r9, r2
blt _080AAA00
cmp r1, 0x6
bne _080AAA6A
b _080AAAD4
_080AAA66:
movs r0, 0x1
b _080AAAD6
_080AAA6A:
movs r0, 0
mov r9, r0
ldr r1, [sp, 0x2C]
cmp r9, r1
bge _080AAAD4
_080AAA74:
ldr r1, [sp, 0xC]
ldr r0, [r6, 0x28]
cmp r1, r0
blt _080AAAD4
ldr r1, [sp, 0x14]
ldr r0, [r6, 0x30]
cmp r1, r0
bge _080AAAD4
mov r2, r8
ldr r1, [r2, 0x4]
ldr r0, [r6, 0x2C]
cmp r1, r0
blt _080AAAD4
ldr r1, [r7, 0x4]
ldr r0, [r6, 0x34]
cmp r1, r0
bge _080AAAD4
str r7, [sp]
adds r0, r6, 0
ldr r1, [sp, 0x1C]
movs r2, 0x4
mov r3, r8
bl sub_80AA7B0
adds r1, r0, 0
cmp r1, 0x5
beq _080AAA66
cmp r1, 0x6
beq _080AAAD4
ldr r0, [sp, 0xC]
adds r0, r4
str r0, [sp, 0xC]
mov r1, r8
ldr r0, [r1, 0x4]
adds r0, r5
str r0, [r1, 0x4]
ldr r0, [sp, 0x14]
adds r0, r4
str r0, [sp, 0x14]
ldr r0, [r7, 0x4]
adds r0, r5
str r0, [r7, 0x4]
movs r2, 0x80
lsls r2, 1
add r9, r2
ldr r0, [sp, 0x2C]
cmp r9, r0
blt _080AAA74
_080AAAD4:
movs r0, 0
_080AAAD6:
add sp, 0x30
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80AA8BC
thumb_func_start sub_80AAAE8
sub_80AAAE8:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x80
adds r5, r0, 0
adds r3, r1, 0
lsls r2, 24
asrs r4, r2, 24
movs r0, 0x1
negs r0, r0
str r0, [sp, 0x78]
movs r2, 0xAF
lsls r2, 1
adds r1, r5, r2
movs r0, 0xC0
lsls r0, 2
strh r0, [r1]
movs r6, 0xB0
lsls r6, 1
adds r1, r5, r6
movs r0, 0x1
strh r0, [r1]
ldr r0, [sp, 0x78]
cmp r4, r0
beq _080AAB26
movs r1, 0xA1
lsls r1, 1
adds r0, r5, r1
strb r4, [r0]
_080AAB26:
subs r0, r3, 0x1
cmp r0, 0x13
bls _080AAB2E
b _080AAEB8
_080AAB2E:
lsls r0, 2
ldr r1, _080AAB38
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080AAB38: .4byte _080AAB3C
.align 2, 0
_080AAB3C:
.4byte _080AAB8C
.4byte _080AAD60
.4byte _080AAC9C
.4byte _080AAC9C
.4byte _080AAC9C
.4byte _080AAB9E
.4byte _080AAB9E
.4byte _080AAB9E
.4byte _080AAD7C
.4byte _080AADF4
.4byte _080AAE06
.4byte _080AAEB8
.4byte _080AAEB8
.4byte _080AAEB8
.4byte _080AAEB8
.4byte _080AAEB8
.4byte _080AAEB8
.4byte _080AAEB8
.4byte _080AAE32
.4byte _080AAE9C
_080AAB8C:
movs r4, 0xB2
lsls r4, 1
adds r1, r5, r4
movs r0, 0
str r0, [r1]
movs r6, 0xC0
lsls r6, 2
str r6, [sp, 0x78]
b _080AAD6E
_080AAB9E:
movs r0, 0x1
negs r0, r0
cmp r4, r0
beq _080AAC88
movs r6, 0
movs r0, 0xB2
lsls r0, 1
adds r1, r5, r0
movs r0, 0x4
str r0, [r1]
cmp r3, 0x7
beq _080AABD2
cmp r3, 0x7
bhi _080AABC0
cmp r3, 0x6
beq _080AABC6
b _080AABEA
_080AABC0:
cmp r3, 0x8
beq _080AABDE
b _080AABEA
_080AABC6:
movs r1, 0x90
lsls r1, 4
str r1, [sp, 0x78]
movs r2, 0x1
str r2, [sp, 0x7C]
b _080AABFC
_080AABD2:
movs r3, 0x80
lsls r3, 4
str r3, [sp, 0x78]
movs r0, 0x2
str r0, [sp, 0x7C]
b _080AABFC
_080AABDE:
movs r1, 0xA0
lsls r1, 4
str r1, [sp, 0x78]
movs r2, 0x4
str r2, [sp, 0x7C]
b _080AABFC
_080AABEA:
movs r3, 0xB2
lsls r3, 1
adds r1, r5, r3
movs r0, 0
str r0, [r1]
ldr r0, _080AAC20
str r0, [sp, 0x78]
movs r1, 0
str r1, [sp, 0x7C]
_080AABFC:
movs r2, 0x80
lsls r2, 1
add r0, sp, 0x28
adds r1, r4, 0
bl SetVecFromDirectionSpeed
ldr r0, [sp, 0x28]
ldr r1, [sp, 0x2C]
str r0, [sp, 0x38]
str r1, [sp, 0x3C]
movs r2, 0
mov r10, r2
add r3, sp, 0x40
mov r9, r3
add r4, sp, 0x30
mov r8, r4
b _080AAC42
.align 2, 0
_080AAC20: .4byte 0x00000807
_080AAC24:
cmp r6, 0x1
bne _080AAC3E
ldr r0, [sp, 0x38]
str r0, [sp, 0x30]
mov r6, r8
str r7, [r6, 0x4]
adds r0, r5, 0
mov r1, r8
bl sub_80AA074
adds r6, r0, 0
cmp r6, 0x2
beq _080AAC78
_080AAC3E:
movs r0, 0x1
add r10, r0
_080AAC42:
ldr r1, [sp, 0x7C]
cmp r10, r1
bge _080AAC74
add r4, sp, 0x38
adds r0, r5, 0
adds r1, r4, 0
bl sub_80AA074
adds r6, r0, 0
cmp r6, 0x2
beq _080AAC78
cmp r6, 0x1
bne _080AAC3E
movs r7, 0
str r7, [sp, 0x40]
ldr r0, [r4, 0x4]
mov r2, r9
str r0, [r2, 0x4]
adds r0, r5, 0
mov r1, r9
bl sub_80AA074
adds r6, r0, 0
cmp r6, 0x2
bne _080AAC24
_080AAC74:
cmp r6, 0x2
bne _080AAC7E
_080AAC78:
movs r3, 0x1
negs r3, r3
b _080AAD6C
_080AAC7E:
adds r0, r5, 0
movs r1, 0x1
bl sub_80AAF68
b _080AAEC0
_080AAC88:
movs r4, 0xB2
lsls r4, 1
adds r1, r5, r4
movs r0, 0
str r0, [r1]
ldr r6, _080AAC98
str r6, [sp, 0x78]
b _080AAD6E
.align 2, 0
_080AAC98: .4byte 0x00000807
_080AAC9C:
movs r0, 0x1
negs r0, r0
cmp r4, r0
beq _080AAD60
movs r0, 0xB2
lsls r0, 1
adds r1, r5, r0
movs r0, 0x4
str r0, [r1]
cmp r3, 0x4
beq _080AACCE
cmp r3, 0x4
bhi _080AACBC
cmp r3, 0x3
beq _080AACC2
b _080AACE6
_080AACBC:
cmp r3, 0x5
beq _080AACDA
b _080AACE6
_080AACC2:
movs r1, 0x90
lsls r1, 4
str r1, [sp, 0x78]
movs r2, 0x1
mov r9, r2
b _080AACF6
_080AACCE:
movs r3, 0x80
lsls r3, 4
str r3, [sp, 0x78]
movs r6, 0x2
mov r9, r6
b _080AACF6
_080AACDA:
movs r0, 0xA0
lsls r0, 4
str r0, [sp, 0x78]
movs r1, 0x4
mov r9, r1
b _080AACF6
_080AACE6:
movs r2, 0xB2
lsls r2, 1
adds r1, r5, r2
movs r0, 0
str r0, [r1]
ldr r3, _080AAD5C
str r3, [sp, 0x78]
mov r9, r0
_080AACF6:
movs r2, 0x80
lsls r2, 1
add r0, sp, 0x48
adds r1, r4, 0
bl SetVecFromDirectionSpeed
ldr r0, [sp, 0x48]
ldr r1, [sp, 0x4C]
str r0, [sp, 0x50]
str r1, [sp, 0x54]
movs r6, 0
cmp r6, r9
bge _080AAD52
add r4, sp, 0x50
mov r8, r4
add r7, sp, 0x58
_080AAD16:
adds r0, r5, 0
mov r1, r8
bl sub_80A9F94
cmp r0, 0
beq _080AAD4C
movs r4, 0
str r4, [sp, 0x58]
mov r1, r8
ldr r0, [r1, 0x4]
str r0, [r7, 0x4]
adds r0, r5, 0
adds r1, r7, 0
bl sub_80A9F94
cmp r0, 0
beq _080AAD4C
ldr r0, [sp, 0x50]
str r0, [sp, 0x60]
add r1, sp, 0x60
str r4, [r1, 0x4]
adds r0, r5, 0
bl sub_80A9F94
cmp r0, 0
beq _080AAD4C
mov r9, r4
_080AAD4C:
adds r6, 0x1
cmp r6, r9
blt _080AAD16
_080AAD52:
adds r0, r5, 0
mov r1, r9
bl sub_80AAF68
b _080AAEC0
.align 2, 0
_080AAD5C: .4byte 0x00000807
_080AAD60:
movs r2, 0xB2
lsls r2, 1
adds r1, r5, r2
movs r0, 0
str r0, [r1]
ldr r3, _080AAD78
_080AAD6C:
str r3, [sp, 0x78]
_080AAD6E:
adds r0, r5, 0
movs r1, 0
bl sub_80AAF68
b _080AAEC0
.align 2, 0
_080AAD78: .4byte 0x00000807
_080AAD7C:
movs r6, 0x8E
lsls r6, 1
adds r0, r5, r6
ldr r0, [r0]
movs r1, 0x80
lsls r1, 5
ands r0, r1
cmp r0, 0
beq _080AAD9C
ldr r0, _080AAD98
ldr r0, [r0]
adds r0, 0x28
strb r4, [r0]
b _080AADA6
.align 2, 0
_080AAD98: .4byte gGroundLivesMeta
_080AAD9C:
ldr r0, _080AADF0
ldr r0, [r0]
adds r0, 0x28
movs r1, 0xFF
strb r1, [r0]
_080AADA6:
movs r1, 0xB2
lsls r1, 1
adds r0, r5, r1
movs r1, 0
str r1, [r0]
movs r2, 0x80
lsls r2, 4
str r2, [sp, 0x78]
movs r3, 0xA1
lsls r3, 1
adds r1, r5, r3
movs r0, 0x4
strb r0, [r1]
movs r6, 0x1
negs r6, r6
cmp r4, r6
bne _080AADCA
b _080AAEC0
_080AADCA:
movs r2, 0x80
lsls r2, 1
add r0, sp, 0x68
adds r1, r4, 0
bl SetVecFromDirectionSpeed
ldr r0, [sp, 0x68]
ldr r1, [sp, 0x6C]
str r0, [sp, 0x70]
str r1, [sp, 0x74]
add r1, sp, 0x70
adds r0, r5, 0
bl sub_80AA074
cmp r0, 0x2
bne _080AAEC0
str r6, [sp, 0x78]
b _080AAEC0
.align 2, 0
_080AADF0: .4byte gGroundLivesMeta
_080AADF4:
movs r4, 0xA1
lsls r4, 1
adds r0, r5, r4
movs r1, 0
ldrsb r1, [r0, r1]
adds r0, r5, 0
bl sub_80AA3F8
b _080AAEC0
_080AAE06:
movs r6, 0xA1
lsls r6, 1
adds r0, r5, r6
movs r1, 0
ldrsb r1, [r0, r1]
adds r0, r5, 0
bl sub_80AA690
lsls r0, 24
cmp r0, 0
bne _080AAEC0
movs r0, 0
mov r1, sp
movs r2, 0x9
bl GetFunctionScript
adds r0, r5, 0
movs r1, 0
mov r2, sp
bl _ExecutePlayerScript
b _080AAEC0
_080AAE32:
add r6, sp, 0xC
movs r1, 0xA1
lsls r1, 1
adds r0, r5, r1
movs r2, 0
ldrsb r2, [r0, r2]
adds r0, r5, 0
adds r1, r6, 0
bl sub_80AA8BC
lsls r0, 24
cmp r0, 0
beq _080AAE84
add r4, sp, 0x10
movs r0, 0
adds r1, r4, 0
movs r2, 0x6
bl GetFunctionScript
movs r2, 0
ldrsh r0, [r6, r2]
adds r1, r5, 0
adds r1, 0x40
adds r2, r4, 0
bl GroundLives_ExecuteScript
adds r0, r5, 0
movs r1, 0
movs r2, 0
bl _ExecutePlayerScript
movs r3, 0
ldrsh r0, [r6, r3]
bl sub_80A8E9C
adds r2, r0, 0
movs r0, 0x7
movs r1, 0
bl sub_809B1C0
b _080AAE8E
_080AAE84:
movs r0, 0x7
movs r1, 0
movs r2, 0
bl sub_809B1C0
_080AAE8E:
movs r4, 0x90
lsls r4, 1
adds r0, r5, r4
movs r1, 0x5
bl sub_809CD8C
b _080AAEC0
_080AAE9C:
add r4, sp, 0x1C
ldr r2, _080AAEB4
movs r0, 0
adds r1, r4, 0
bl GetFunctionScript
adds r0, r5, 0
movs r1, 0
adds r2, r4, 0
bl _ExecutePlayerScript
b _080AAEC0
.align 2, 0
_080AAEB4: .4byte 0x00000195
_080AAEB8:
adds r0, r5, 0
movs r1, 0
bl sub_80AAF68
_080AAEC0:
movs r0, 0x1
negs r0, r0
ldr r6, [sp, 0x78]
cmp r6, r0
beq _080AAF04
movs r0, 0xB4
lsls r0, 1
adds r2, r5, r0
movs r1, 0
ldrsh r0, [r2, r1]
cmp r6, r0
beq _080AAF04
movs r3, 0xAE
lsls r3, 1
adds r1, r5, r3
movs r0, 0
strb r0, [r1]
movs r4, 0xB8
lsls r4, 1
adds r0, r5, r4
strh r6, [r2]
movs r1, 0xA1
lsls r1, 1
adds r3, r5, r1
ldrb r1, [r3]
subs r4, 0x13
adds r2, r5, r4
strb r1, [r2]
movs r2, 0
ldrsb r2, [r3, r2]
ldr r1, [sp, 0x78]
bl sub_80A6EFC
b _080AAF54
_080AAF04:
movs r6, 0xAE
lsls r6, 1
adds r2, r5, r6
ldrb r0, [r2]
cmp r0, 0
bne _080AAF2A
ldr r0, _080AAF64
adds r1, r5, r0
movs r3, 0xA1
lsls r3, 1
adds r0, r5, r3
ldrb r1, [r1]
lsls r1, 24
asrs r1, 24
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
cmp r1, r0
beq _080AAF54
_080AAF2A:
movs r0, 0
strb r0, [r2]
movs r4, 0xB8
lsls r4, 1
adds r0, r5, r4
movs r6, 0xB4
lsls r6, 1
adds r1, r5, r6
movs r2, 0
ldrsh r1, [r1, r2]
movs r3, 0xA1
lsls r3, 1
adds r4, r5, r3
ldrb r2, [r4]
subs r6, 0xB
adds r3, r5, r6
strb r2, [r3]
movs r2, 0
ldrsb r2, [r4, r2]
bl sub_80A6EFC
_080AAF54:
add sp, 0x80
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080AAF64: .4byte 0x0000015d
thumb_func_end sub_80AAAE8
thumb_func_start sub_80AAF68
sub_80AAF68:
push {r4,lr}
adds r4, r0, 0
movs r1, 0x8E
lsls r1, 1
adds r0, r4, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 7
ands r0, r1
cmp r0, 0
beq _080AB002
movs r2, 0
ldrsh r0, [r4, r2]
movs r1, 0x1
bl sub_80A93F0
lsls r0, 24
cmp r0, 0
beq _080AAFD0
movs r1, 0xE4
lsls r1, 1
adds r0, r4, r1
movs r2, 0
ldrsh r1, [r0, r2]
cmp r1, 0
bne _080AAFA6
movs r0, 0xB5
lsls r0, 1
adds r1, r4, r0
adds r0, 0x4C
b _080AAFB4
_080AAFA6:
movs r0, 0xDB
lsls r0, 1
cmp r1, r0
beq _080AAFC2
subs r0, 0x4C
adds r1, r4, r0
adds r0, 0x56
_080AAFB4:
strh r0, [r1]
movs r2, 0xB6
lsls r2, 1
adds r1, r4, r2
movs r0, 0x1
negs r0, r0
str r0, [r1]
_080AAFC2:
movs r1, 0
ldrsh r0, [r4, r1]
movs r1, 0x80
lsls r1, 17
bl sub_80A8750
b _080AB002
_080AAFD0:
movs r2, 0xE4
lsls r2, 1
adds r0, r4, r2
movs r2, 0
ldrsh r1, [r0, r2]
movs r0, 0xDB
lsls r0, 1
cmp r1, r0
bne _080AAFF6
subs r0, 0x4C
adds r1, r4, r0
adds r0, 0x56
strh r0, [r1]
movs r2, 0xB6
lsls r2, 1
adds r1, r4, r2
movs r0, 0x1
negs r0, r0
str r0, [r1]
_080AAFF6:
movs r1, 0
ldrsh r0, [r4, r1]
movs r1, 0x80
lsls r1, 17
bl sub_80A86C8
_080AB002:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80AAF68
thumb_func_start CallbackLivesGetIndex
CallbackLivesGetIndex:
movs r1, 0
ldrsh r0, [r0, r1]
bx lr
thumb_func_end CallbackLivesGetIndex
thumb_func_start CallbackLivesGetSize
CallbackLivesGetSize:
ldr r2, [r0, 0xC]
ldr r3, [r0, 0x10]
str r2, [r1]
str r3, [r1, 0x4]
bx lr
thumb_func_end CallbackLivesGetSize
thumb_func_start CallbackLivesSetHitboxPos
CallbackLivesSetHitboxPos:
push {r4,lr}
adds r3, r0, 0
adds r4, r1, 0
cmp r4, 0
beq _080AB05C
movs r0, 0xA2
lsls r0, 1
adds r2, r3, r0
ldr r1, [r4]
ldr r0, [r3, 0x14]
subs r0, r1, r0
str r0, [r2]
movs r0, 0xA6
lsls r0, 1
adds r2, r3, r0
ldr r0, [r3, 0x14]
adds r1, r0
str r1, [r2]
movs r0, 0xA4
lsls r0, 1
adds r2, r3, r0
ldr r1, [r4, 0x4]
ldr r0, [r3, 0x18]
subs r0, r1, r0
str r0, [r2]
movs r0, 0xA8
lsls r0, 1
adds r2, r3, r0
ldr r0, [r3, 0x18]
adds r1, r0
str r1, [r2]
b _080AB0C2
_080AB05C:
movs r0, 0xA2
lsls r0, 1
adds r2, r3, r0
ldr r0, [r3, 0x20]
ldr r1, [r3, 0x14]
subs r0, r1
str r0, [r2]
movs r0, 0xA6
lsls r0, 1
adds r2, r3, r0
ldr r0, [r3, 0x20]
ldr r1, [r3, 0x14]
adds r0, r1
str r0, [r2]
movs r0, 0xA4
lsls r0, 1
adds r2, r3, r0
ldr r0, [r3, 0x24]
ldr r1, [r3, 0x18]
subs r0, r1
str r0, [r2]
movs r0, 0xA8
lsls r0, 1
adds r2, r3, r0
ldr r0, [r3, 0x24]
ldr r1, [r3, 0x18]
adds r0, r1
str r0, [r2]
movs r2, 0xAA
lsls r2, 1
adds r1, r3, r2
adds r2, 0x4
adds r0, r3, r2
str r4, [r0]
str r4, [r1]
movs r0, 0xA1
lsls r0, 1
adds r2, r3, r0
movs r1, 0
ldrsb r1, [r2, r1]
movs r0, 0x1C
ldrsb r0, [r3, r0]
cmp r1, r0
beq _080AB0BE
movs r0, 0xAE
lsls r0, 1
adds r1, r3, r0
movs r0, 0x1
strb r0, [r1]
_080AB0BE:
ldrb r0, [r3, 0x1C]
strb r0, [r2]
_080AB0C2:
pop {r4}
pop {r0}
bx r0
thumb_func_end CallbackLivesSetHitboxPos
thumb_func_start CallbackLivesSetPositionBounds
CallbackLivesSetPositionBounds:
push {r4,lr}
ldr r3, [r1]
ldr r4, [r1, 0x4]
str r3, [r0, 0x28]
str r4, [r0, 0x2C]
ldr r1, [r2]
ldr r2, [r2, 0x4]
str r1, [r0, 0x30]
str r2, [r0, 0x34]
pop {r4}
pop {r0}
bx r0
thumb_func_end CallbackLivesSetPositionBounds
thumb_func_start CallbackLivesGetHitboxCenter
CallbackLivesGetHitboxCenter:
adds r3, r0, 0
movs r2, 0xA2
lsls r2, 1
adds r0, r3, r2
ldr r0, [r0]
ldr r2, [r3, 0x14]
adds r0, r2
str r0, [r1]
movs r2, 0xA4
lsls r2, 1
adds r0, r3, r2
ldr r0, [r0]
ldr r2, [r3, 0x18]
adds r0, r2
str r0, [r1, 0x4]
bx lr
thumb_func_end CallbackLivesGetHitboxCenter
thumb_func_start CallbackLivesMoveReal
CallbackLivesMoveReal:
push {lr}
bl sub_80A9F20
pop {r1}
bx r1
thumb_func_end CallbackLivesMoveReal
thumb_func_start CallbackLivesGetPosHeightAndUnk
CallbackLivesGetPosHeightAndUnk:
push {r4,lr}
adds r3, r0, 0
movs r4, 0xAA
lsls r4, 1
adds r0, r3, r4
ldr r0, [r0]
str r0, [r1]
movs r1, 0xAC
lsls r1, 1
adds r0, r3, r1
ldr r0, [r0]
str r0, [r2]
pop {r4}
pop {r0}
bx r0
thumb_func_end CallbackLivesGetPosHeightAndUnk
thumb_func_start CallbackLivesSetPosHeight
CallbackLivesSetPosHeight:
movs r2, 0xAA
lsls r2, 1
adds r0, r2
str r1, [r0]
bx lr
thumb_func_end CallbackLivesSetPosHeight
thumb_func_start CallbackLivesGetDirection
CallbackLivesGetDirection:
movs r2, 0xA1
lsls r2, 1
adds r0, r2
ldrb r0, [r0]
strb r0, [r1]
bx lr
thumb_func_end CallbackLivesGetDirection
thumb_func_start CallbackLivesSetDirection
CallbackLivesSetDirection:
push {lr}
adds r3, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080AB17C
movs r0, 0xA1
lsls r0, 1
adds r2, r3, r0
lsls r0, r1, 24
lsrs r0, 24
strb r0, [r2]
ldr r2, _080AB180
adds r1, r3, r2
ldrb r1, [r1]
lsls r1, 24
asrs r1, 24
lsls r0, 24
asrs r0, 24
cmp r1, r0
beq _080AB17C
movs r0, 0xAE
lsls r0, 1
adds r1, r3, r0
movs r0, 0x1
strb r0, [r1]
_080AB17C:
pop {r0}
bx r0
.align 2, 0
_080AB180: .4byte 0x0000015d
thumb_func_end CallbackLivesSetDirection
thumb_func_start CallbackLivesSetEventIndex
CallbackLivesSetEventIndex:
push {lr}
lsls r1, 16
lsrs r1, 16
bl sub_80A9750
pop {r0}
bx r0
thumb_func_end CallbackLivesSetEventIndex
thumb_func_start CallbackLivesSetUnk_80AB194
CallbackLivesSetUnk_80AB194:
push {lr}
mov r12, r0
lsls r1, 16
asrs r1, 16
adds r3, r1, 0
cmp r1, 0
bne _080AB1A8
movs r0, 0xE0
lsls r0, 1
adds r3, r0, 0
_080AB1A8:
movs r0, 0xB5
lsls r0, 1
add r0, r12
strh r3, [r0]
movs r0, 0xB6
lsls r0, 1
add r0, r12
str r2, [r0]
pop {r0}
bx r0
thumb_func_end CallbackLivesSetUnk_80AB194
thumb_func_start nullsub_211
nullsub_211:
bx lr
thumb_func_end nullsub_211
thumb_func_start CallbackLivesSpriteRelatedCheck_80AB1C0
CallbackLivesSpriteRelatedCheck_80AB1C0:
push {lr}
adds r1, r0, 0
movs r2, 0xAE
lsls r2, 1
adds r0, r1, r2
ldrb r0, [r0]
cmp r0, 0
bne _080AB1DE
adds r2, 0x14
adds r0, r1, r2
bl sub_80A66F8
lsls r0, 24
lsrs r0, 24
b _080AB1E0
_080AB1DE:
movs r0, 0x1
_080AB1E0:
pop {r1}
bx r1
thumb_func_end CallbackLivesSpriteRelatedCheck_80AB1C0
thumb_func_start CallbackLivesSpriteRelated_80AB1E4
CallbackLivesSpriteRelated_80AB1E4:
push {lr}
adds r1, r0, 0
movs r2, 0xB5
lsls r2, 1
adds r0, r1, r2
movs r2, 0
ldrsh r0, [r0, r2]
cmp r0, 0
bne _080AB206
movs r2, 0xB8
lsls r2, 1
adds r0, r1, r2
bl sub_80A671C
lsls r0, 24
lsrs r0, 24
b _080AB208
_080AB206:
movs r0, 0x1
_080AB208:
pop {r1}
bx r1
thumb_func_end CallbackLivesSpriteRelated_80AB1E4
thumb_func_start CallbackLivesGetFlags
CallbackLivesGetFlags:
movs r2, 0x8E
lsls r2, 1
adds r0, r2
ldr r0, [r0]
str r0, [r1]
bx lr
thumb_func_end CallbackLivesGetFlags
thumb_func_start CallbackLivesSetFlags
CallbackLivesSetFlags:
push {lr}
movs r2, 0
ldrsh r0, [r0, r2]
bl sub_80A86C8
pop {r0}
bx r0
thumb_func_end CallbackLivesSetFlags
thumb_func_start CallbackLivesClearFlags
CallbackLivesClearFlags:
push {lr}
movs r2, 0
ldrsh r0, [r0, r2]
bl sub_80A8750
pop {r0}
bx r0
thumb_func_end CallbackLivesClearFlags
thumb_func_start CallbackLivesSpriteRelated_80AB238
CallbackLivesSpriteRelated_80AB238:
push {lr}
movs r2, 0xB8
lsls r2, 1
adds r0, r2
bl sub_80A6EC8
pop {r0}
bx r0
thumb_func_end CallbackLivesSpriteRelated_80AB238
thumb_func_start CallbackLivesMoveRelative
CallbackLivesMoveRelative:
push {lr}
bl sub_80A9F94
pop {r1}
bx r1
thumb_func_end CallbackLivesMoveRelative
thumb_func_start GroundLives_Action
GroundLives_Action:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x3C
ldr r0, _080AB29C
ldr r5, [r0]
movs r0, 0
mov r9, r0
_080AB266:
movs r2, 0x2
ldrsh r1, [r5, r2]
movs r3, 0x1
negs r3, r3
mov r8, r3
adds r0, r3, 0
cmp r1, r0
bne _080AB278
b _080AB47C
_080AB278:
adds r4, r5, 0
adds r4, 0x38
ldr r1, _080AB2A0
adds r0, r4, 0
bl HandleAction
lsls r0, 16
asrs r3, r0, 16
cmp r3, 0
beq _080AB2A4
cmp r3, 0x4
beq _080AB292
b _080AB44C
_080AB292:
mov r0, r9
bl GroundLives_Delete
b _080AB47C
.align 2, 0
_080AB29C: .4byte gGroundLives
_080AB2A0: .4byte gUnknown_8118280
_080AB2A4:
movs r0, 0x8E
lsls r0, 1
adds r2, r5, r0
ldr r1, [r2]
movs r0, 0x80
lsls r0, 4
ands r0, r1
cmp r0, 0
bne _080AB2B8
b _080AB42E
_080AB2B8:
str r3, [sp, 0xC]
add r0, sp, 0x8
mov r1, r8
strb r1, [r0]
str r3, [sp, 0x10]
movs r3, 0x90
lsls r3, 1
adds r0, r5, r3
add r1, sp, 0xC
add r3, sp, 0x10
add r4, sp, 0x14
str r4, [sp]
ldr r2, [r2]
str r2, [sp, 0x4]
add r2, sp, 0x8
bl sub_809CDC8
subs r0, 0x1
mov r8, r4
cmp r0, 0x7
bls _080AB2E4
b _080AB44C
_080AB2E4:
lsls r0, 2
ldr r1, _080AB2F0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080AB2F0: .4byte _080AB2F4
.align 2, 0
_080AB2F4:
.4byte _080AB314
.4byte _080AB314
.4byte _080AB326
.4byte _080AB44C
.4byte _080AB314
.4byte _080AB44C
.4byte _080AB44C
.4byte _080AB314
_080AB314:
ldr r1, [sp, 0xC]
add r0, sp, 0x8
movs r2, 0
ldrsb r2, [r0, r2]
ldr r3, [sp, 0x10]
adds r0, r5, 0
bl sub_80AAAE8
b _080AB44C
_080AB326:
add r4, sp, 0x1C
adds r0, r4, 0
bl sub_809D248
ldr r1, [sp, 0x1C]
ldr r0, [sp, 0x14]
adds r6, r1, r0
ldr r1, [r4, 0x4]
mov r2, r8
ldr r0, [r2, 0x4]
adds r7, r1, r0
movs r3, 0xA2
lsls r3, 1
adds r0, r5, r3
ldr r1, [r0]
ldr r0, [r5, 0x14]
adds r0, r1, r0
cmp r0, 0
bge _080AB34E
adds r0, 0xFF
_080AB34E:
asrs r0, 8
subs r0, r6, r0
str r0, [sp, 0x24]
movs r1, 0xA4
lsls r1, 1
adds r0, r5, r1
ldr r1, [r0]
ldr r0, [r5, 0x18]
adds r0, r1, r0
cmp r0, 0
bge _080AB366
adds r0, 0xFF
_080AB366:
asrs r0, 8
subs r0, r7, r0
add r1, sp, 0x24
str r0, [r1, 0x4]
adds r0, r6, 0
subs r0, 0x10
lsls r0, 8
str r0, [sp, 0x2C]
adds r0, r6, 0
adds r0, 0x10
lsls r0, 8
str r0, [sp, 0x34]
subs r0, r7, 0x4
lsls r0, 8
add r2, sp, 0x2C
str r0, [r2, 0x4]
adds r0, r7, 0
adds r0, 0x1C
lsls r0, 8
add r3, sp, 0x34
str r0, [r3, 0x4]
ldr r0, [sp, 0xC]
adds r4, r1, 0
cmp r0, 0xC
bne _080AB3C4
adds r0, r5, 0
movs r1, 0xC
bl sub_80AA180
cmp r0, 0
bne _080AB44C
ldr r0, [sp, 0x24]
adds r0, 0x10
cmp r0, 0x20
bhi _080AB44C
movs r0, 0x1C
negs r0, r0
ldr r1, [r4, 0x4]
cmp r1, r0
blt _080AB44C
cmp r1, 0x4
bgt _080AB44C
movs r2, 0x1
negs r2, r2
adds r0, r5, 0
movs r1, 0x13
b _080AB426
_080AB3C4:
ldr r0, [sp, 0x24]
adds r0, 0x10
cmp r0, 0x20
bhi _080AB3DA
movs r0, 0x1C
negs r0, r0
ldr r1, [r4, 0x4]
cmp r1, r0
blt _080AB3DA
cmp r1, 0x4
ble _080AB44C
_080AB3DA:
adds r0, r4, 0
bl VecDirection8Radial
add r1, sp, 0x8
strb r0, [r1]
lsls r0, 24
movs r1, 0xFF
lsls r1, 24
cmp r0, r1
beq _080AB44C
ldr r0, [sp, 0xC]
cmp r0, 0x11
beq _080AB410
cmp r0, 0x11
bhi _080AB3FE
cmp r0, 0x10
beq _080AB404
b _080AB44C
_080AB3FE:
cmp r0, 0x12
beq _080AB41C
b _080AB44C
_080AB404:
add r0, sp, 0x8
movs r2, 0
ldrsb r2, [r0, r2]
adds r0, r5, 0
movs r1, 0x6
b _080AB426
_080AB410:
add r0, sp, 0x8
movs r2, 0
ldrsb r2, [r0, r2]
adds r0, r5, 0
movs r1, 0x7
b _080AB426
_080AB41C:
add r0, sp, 0x8
movs r2, 0
ldrsb r2, [r0, r2]
adds r0, r5, 0
movs r1, 0x8
_080AB426:
movs r3, 0
bl sub_80AAAE8
b _080AB44C
_080AB42E:
movs r0, 0x80
lsls r0, 5
ands r1, r0
cmp r1, 0
beq _080AB440
adds r0, r5, 0
bl sub_80AB5D4
b _080AB44C
_080AB440:
ldr r3, _080AB4C4
adds r0, r4, 0
movs r1, 0
movs r2, 0x1
bl ExecutePredefinedScript
_080AB44C:
movs r2, 0xAE
lsls r2, 1
adds r1, r5, r2
ldrb r0, [r1]
cmp r0, 0
beq _080AB47C
movs r0, 0
strb r0, [r1]
movs r3, 0xB8
lsls r3, 1
adds r0, r5, r3
adds r2, 0xC
adds r1, r5, r2
movs r3, 0
ldrsh r1, [r1, r3]
subs r2, 0x26
adds r4, r5, r2
ldrb r2, [r4]
ldr r3, _080AB4C8
strb r2, [r3, r5]
movs r2, 0
ldrsb r2, [r4, r2]
bl sub_80A6EFC
_080AB47C:
mov r0, r9
adds r0, 0x1
lsls r0, 16
asrs r0, 16
mov r9, r0
movs r0, 0xF8
lsls r0, 1
adds r5, r0
mov r1, r9
cmp r1, 0x17
bgt _080AB494
b _080AB266
_080AB494:
ldr r0, _080AB4CC
ldr r6, [r0]
ldr r0, _080AB4D0
ldr r5, [r0]
movs r0, 0
str r0, [r6]
str r0, [r6, 0x4]
movs r2, 0x2
ldrsh r1, [r5, r2]
subs r0, 0x1
cmp r1, r0
beq _080AB4BE
movs r3, 0x8E
lsls r3, 1
adds r0, r5, r3
ldr r1, [r0]
movs r3, 0x80
lsls r3, 6
ands r3, r1
cmp r3, 0
beq _080AB4D4
_080AB4BE:
bl sub_80AB5A4
b _080AB594
.align 2, 0
_080AB4C4: .4byte gUnknown_811828C
_080AB4C8: .4byte 0x0000015d
_080AB4CC: .4byte gGroundLivesMeta
_080AB4D0: .4byte gGroundLives
_080AB4D4:
movs r0, 0x80
lsls r0, 5
ands r1, r0
cmp r1, 0
beq _080AB590
ldr r7, [r6, 0x24]
cmp r7, 0
bge _080AB51E
adds r2, r6, 0
adds r2, 0x2C
str r3, [r6, 0x24]
str r3, [r6, 0x2C]
movs r1, 0xA2
lsls r1, 1
adds r0, r5, r1
ldr r0, [r0]
ldr r1, [r5, 0x14]
adds r0, r1
str r0, [r2, 0x4]
movs r3, 0xA4
lsls r3, 1
adds r0, r5, r3
ldr r0, [r0]
ldr r1, [r5, 0x18]
adds r0, r1
str r0, [r2, 0x8]
adds r0, r6, 0
movs r2, 0
movs r1, 0x2
_080AB50E:
str r2, [r0, 0x8]
str r2, [r0]
str r2, [r0, 0x4]
subs r1, 0x1
adds r0, 0xC
cmp r1, 0
bge _080AB50E
b _080AB594
_080AB51E:
adds r2, r7, 0x1
adds r0, r2, 0
cmp r2, 0
bge _080AB52A
adds r0, r7, 0
adds r0, 0x40
_080AB52A:
asrs r1, r0, 6
lsls r0, r1, 6
subs r1, r2, r0
str r1, [r6, 0x24]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, 0x2C
adds r0, r6
mov r8, r0
movs r1, 0xA2
lsls r1, 1
adds r0, r5, r1
ldr r2, [r0]
ldr r0, [r5, 0x14]
adds r2, r0
mov r3, r8
str r2, [r3, 0x4]
adds r1, 0x4
adds r0, r5, r1
ldr r1, [r0]
ldr r0, [r5, 0x18]
adds r1, r0
str r1, [r3, 0x8]
lsls r0, r7, 1
adds r0, r7
lsls r0, 2
adds r0, 0x2C
adds r0, r6, r0
ldr r3, [r0, 0x4]
ldr r0, [r0, 0x8]
subs r0, r1, r0
subs r2, r3
cmp r2, 0
bge _080AB572
negs r2, r2
_080AB572:
adds r4, r2, 0
cmp r0, 0
bge _080AB57A
negs r0, r0
_080AB57A:
cmp r0, r4
bge _080AB580
adds r0, r2, 0
_080AB580:
mov r2, r8
str r0, [r2]
cmp r0, 0
bgt _080AB58C
str r7, [r6, 0x24]
b _080AB594
_080AB58C:
str r0, [r6]
b _080AB594
_080AB590:
bl sub_80AB5A4
_080AB594:
add sp, 0x3C
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end GroundLives_Action
thumb_func_start sub_80AB5A4
sub_80AB5A4:
push {lr}
ldr r3, _080AB5D0
ldr r0, [r3]
movs r2, 0x1
negs r2, r2
str r2, [r0, 0x24]
adds r0, 0x28
movs r1, 0xFF
strb r1, [r0]
ldr r3, [r3]
movs r1, 0
movs r0, 0x2
_080AB5BC:
str r2, [r3, 0x8]
str r1, [r3]
str r1, [r3, 0x4]
subs r0, 0x1
adds r3, 0xC
cmp r0, 0
bge _080AB5BC
pop {r0}
bx r0
.align 2, 0
_080AB5D0: .4byte gGroundLivesMeta
thumb_func_end sub_80AB5A4
thumb_func_start sub_80AB5D4
sub_80AB5D4:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x2C
mov r9, r0
ldr r4, _080AB6BC
movs r2, 0x9E
lsls r2, 1
add r2, r9
movs r0, 0
ldrsh r1, [r2, r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r3, [r4]
adds r0, r3
mov r8, r0
adds r0, r1, 0
adds r5, r4, 0
cmp r0, 0
bne _080AB604
b _080AB9E6
_080AB604:
movs r1, 0xAF
lsls r1, 1
add r1, r9
movs r0, 0xC0
lsls r0, 2
strh r0, [r1]
movs r1, 0xB0
lsls r1, 1
add r1, r9
movs r0, 0x1
strh r0, [r1]
movs r0, 0x8E
lsls r0, 1
add r0, r9
ldr r2, [r0]
movs r0, 0x80
lsls r0, 6
ands r2, r0
cmp r2, 0
beq _080AB6D4
movs r2, 0xA1
lsls r2, 1
add r2, r9
movs r0, 0
ldrsb r0, [r2, r0]
cmp r0, 0x4
bne _080AB64C
movs r0, 0xB4
lsls r0, 1
add r0, r9
movs r3, 0
ldrsh r1, [r0, r3]
movs r0, 0x80
lsls r0, 4
cmp r1, r0
beq _080AB670
_080AB64C:
movs r1, 0xB2
lsls r1, 1
add r1, r9
movs r0, 0
str r0, [r1]
movs r1, 0xB4
lsls r1, 1
add r1, r9
movs r0, 0x80
lsls r0, 4
strh r0, [r1]
movs r0, 0x4
strb r0, [r2]
movs r1, 0xAE
lsls r1, 1
add r1, r9
movs r0, 0x1
strb r0, [r1]
_080AB670:
ldr r0, [r5]
adds r2, r0, 0
adds r2, 0x28
movs r1, 0
ldrsb r1, [r2, r1]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080AB69C
movs r2, 0x80
lsls r2, 1
mov r0, sp
bl SetVecFromDirectionSpeed
ldr r0, [sp]
ldr r1, [sp, 0x4]
str r0, [sp, 0x8]
str r1, [sp, 0xC]
add r1, sp, 0x8
mov r0, r9
bl sub_80A9F94
_080AB69C:
mov r4, r8
ldr r0, [r4, 0x8]
cmp r0, 0
blt _080AB6A6
b _080AB9E6
_080AB6A6:
ldr r0, [r5]
ldr r0, [r0, 0x24]
cmp r0, 0
bge _080AB6B0
b _080AB9E6
_080AB6B0:
str r0, [r4, 0x8]
movs r0, 0
str r0, [r4]
str r0, [r4, 0x4]
b _080AB9E6
.align 2, 0
_080AB6BC: .4byte gGroundLivesMeta
_080AB6C0:
ldr r5, [sp, 0x28]
ldr r0, [r5, 0x4]
adds r0, r7, r0
str r0, [r5, 0x4]
b _080AB7E2
_080AB6CA:
ldr r1, [sp, 0x28]
ldr r0, [r1, 0x4]
subs r0, r7
str r0, [r1, 0x4]
b _080AB7E2
_080AB6D4:
movs r0, 0xA2
lsls r0, 1
add r0, r9
ldr r1, [r0]
mov r5, r9
ldr r0, [r5, 0x14]
adds r0, r1, r0
str r0, [sp, 0x20]
movs r0, 0xA4
lsls r0, 1
add r0, r9
ldr r1, [r0]
ldr r0, [r5, 0x18]
adds r0, r1, r0
str r0, [sp, 0x24]
ldr r0, [sp, 0x20]
ldr r1, [sp, 0x24]
str r0, [sp, 0x10]
str r1, [sp, 0x14]
mov r1, r8
ldr r0, [r1, 0x8]
cmp r0, 0
bge _080AB710
ldr r0, [r3, 0x24]
cmp r0, 0
bge _080AB70A
b _080AB9E6
_080AB70A:
str r0, [r1, 0x8]
str r2, [r1]
str r2, [r1, 0x4]
_080AB710:
mov r2, r8
ldr r7, [r2]
movs r3, 0x1
mov r10, r3
mov r5, sp
adds r5, 0x10
str r5, [sp, 0x28]
_080AB71E:
mov r0, r8
ldr r1, [r0, 0x8]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, 0x2C
ldr r2, _080AB754
ldr r1, [r2]
adds r1, r0
mov r12, r1
ldr r6, [r1, 0x4]
ldr r5, [sp, 0x10]
subs r4, r6, r5
adds r2, r4, 0
ldr r1, [r1, 0x8]
ldr r0, [sp, 0x14]
subs r3, r1, r0
cmp r4, 0
ble _080AB75E
cmp r2, r7
ble _080AB758
adds r0, r7, r5
str r0, [sp, 0x10]
movs r4, 0
mov r10, r4
b _080AB75A
.align 2, 0
_080AB754: .4byte gGroundLivesMeta
_080AB758:
str r6, [sp, 0x10]
_080AB75A:
adds r1, r2, 0
b _080AB778
_080AB75E:
cmp r4, 0
bge _080AB776
cmn r2, r7
bge _080AB770
subs r0, r5, r7
str r0, [sp, 0x10]
movs r5, 0
mov r10, r5
b _080AB772
_080AB770:
str r6, [sp, 0x10]
_080AB772:
negs r1, r2
b _080AB778
_080AB776:
movs r1, 0
_080AB778:
cmp r3, 0
ble _080AB78E
cmp r3, r7
bgt _080AB6C0
mov r4, r12
ldr r0, [r4, 0x8]
str r0, [sp, 0x14]
cmp r3, r1
ble _080AB7A2
adds r1, r3, 0
b _080AB7A2
_080AB78E:
cmp r3, 0
bge _080AB7A2
cmn r3, r7
blt _080AB6CA
mov r5, r12
ldr r0, [r5, 0x8]
str r0, [sp, 0x14]
cmn r3, r1
bge _080AB7A2
negs r1, r3
_080AB7A2:
mov r0, r10
cmp r0, 0
beq _080AB7E2
subs r7, r1
cmp r7, 0
ble _080AB7E2
ldr r1, _080AB7D4
ldr r0, [r1]
mov r3, r8
ldr r2, [r3, 0x8]
ldr r0, [r0, 0x24]
cmp r2, r0
beq _080AB7D8
adds r1, r2, 0x1
adds r0, r1, 0
cmp r1, 0
bge _080AB7C8
adds r0, r2, 0
adds r0, 0x40
_080AB7C8:
asrs r0, 6
lsls r0, 6
subs r0, r1, r0
mov r4, r8
str r0, [r4, 0x8]
b _080AB7DC
.align 2, 0
_080AB7D4: .4byte gGroundLivesMeta
_080AB7D8:
movs r5, 0
mov r10, r5
_080AB7DC:
mov r0, r10
cmp r0, 0
bne _080AB71E
_080AB7E2:
mov r1, r8
ldr r0, [r1, 0x8]
bl sub_80ABA00
adds r6, r0, 0
ldr r0, _080AB860
ldr r7, [r0]
movs r2, 0x9E
lsls r2, 1
add r2, r9
mov r10, r2
movs r3, 0
ldrsh r2, [r2, r3]
subs r1, r2, 0x1
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r1, r7, 0x4
adds r1, r0
ldr r0, _080AB864
lsls r2, 2
adds r2, r0
ldr r1, [r1]
ldr r0, [r2]
adds r1, r0
mov r12, r1
mov r4, r8
ldr r1, [r4, 0x8]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, 0x2C
adds r0, r7, r0
ldr r3, [r0, 0x4]
ldr r2, [sp, 0x10]
ldr r1, [r0, 0x8]
ldr r5, [sp, 0x28]
ldr r0, [r5, 0x4]
subs r1, r0
subs r3, r2
cmp r3, 0
bge _080AB838
negs r3, r3
_080AB838:
adds r4, r3, 0
cmp r1, 0
bge _080AB840
negs r1, r1
_080AB840:
cmp r1, r4
bge _080AB846
adds r1, r3, 0
_080AB846:
adds r6, r1
mov r0, r8
str r6, [r0, 0x4]
cmp r6, r12
bgt _080AB86C
ldr r0, [r0]
cmp r0, 0
ble _080AB8B2
ldr r1, _080AB868
adds r0, r1
mov r2, r8
b _080AB8B0
.align 2, 0
_080AB860: .4byte gGroundLivesMeta
_080AB864: .4byte gUnknown_8118050
_080AB868: .4byte 0xffffff00
_080AB86C:
mov r3, r10
movs r4, 0
ldrsh r1, [r3, r4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 11
cmp r6, r0
bgt _080AB88E
mov r5, r8
ldr r0, [r5]
cmp r0, 0xFF
bgt _080AB8B2
movs r1, 0x80
lsls r1, 1
adds r0, r1
str r0, [r5]
b _080AB8B2
_080AB88E:
subs r1, 0x1
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r7, r0
ldr r0, [r0]
cmp r0, 0xFF
bgt _080AB8A2
movs r0, 0x80
lsls r0, 1
_080AB8A2:
mov r2, r8
ldr r1, [r2]
cmp r1, r0
bge _080AB8B2
movs r3, 0x80
lsls r3, 1
adds r0, r1, r3
_080AB8B0:
str r0, [r2]
_080AB8B2:
ldr r0, _080AB96C
ldr r3, [r0]
mov r4, r8
ldr r0, [r4, 0x8]
subs r0, 0x40
ldr r2, [r3, 0x24]
subs r1, r2, r0
adds r0, r1, 0
cmp r1, 0
bge _080AB8C8
adds r0, 0x3F
_080AB8C8:
asrs r0, 6
lsls r0, 6
subs r0, r1, r0
cmp r0, 0x3B
ble _080AB8FC
adds r1, r2, 0x5
adds r0, r1, 0
cmp r1, 0
bge _080AB8DE
adds r0, r2, 0
adds r0, 0x44
_080AB8DE:
asrs r0, 6
lsls r0, 6
subs r0, r1, r0
mov r5, r8
str r0, [r5, 0x8]
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r0, r3, 0
adds r0, 0x30
adds r0, r1
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [sp, 0x10]
str r1, [sp, 0x14]
_080AB8FC:
mov r0, r9
ldr r1, [sp, 0x28]
bl sub_80A9F20
adds r6, r0, 0
cmp r6, 0
bne _080AB9E6
ldr r0, [sp, 0x10]
ldr r1, [sp, 0x20]
subs r0, r1
str r0, [sp, 0x18]
ldr r2, [sp, 0x28]
ldr r1, [r2, 0x4]
ldr r3, [sp, 0x24]
subs r1, r3
add r0, sp, 0x18
str r1, [r0, 0x4]
movs r5, 0xA1
lsls r5, 1
add r5, r9
movs r4, 0
ldrsb r4, [r5, r4]
bl VecDirection8Radial
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
adds r0, r4, 0
bl sub_8002B04
strb r0, [r5]
mov r4, r8
ldr r0, [r4]
cmp r0, 0
ble _080AB970
movs r1, 0xB2
lsls r1, 1
add r1, r9
movs r0, 0x4
str r0, [r1]
ldr r1, [r4]
movs r0, 0x80
lsls r0, 2
movs r2, 0x80
lsls r2, 4
cmp r1, r0
ble _080AB95E
movs r2, 0xA0
lsls r2, 4
_080AB95E:
adds r4, r2, 0
mov r0, r9
movs r1, 0x1
bl sub_80AAF68
b _080AB982
.align 2, 0
_080AB96C: .4byte gGroundLivesMeta
_080AB970:
ldr r4, _080AB9F8
movs r0, 0xB2
lsls r0, 1
add r0, r9
str r6, [r0]
mov r0, r9
movs r1, 0
bl sub_80AAF68
_080AB982:
movs r0, 0xAE
lsls r0, 1
add r0, r9
ldrb r0, [r0]
cmp r0, 0
bne _080AB9B6
movs r0, 0xB4
lsls r0, 1
add r0, r9
movs r5, 0
ldrsh r0, [r0, r5]
cmp r4, r0
bne _080AB9B6
ldr r1, _080AB9FC
add r1, r9
movs r0, 0xA1
lsls r0, 1
add r0, r9
ldrb r1, [r1]
lsls r1, 24
asrs r1, 24
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
cmp r1, r0
beq _080AB9E6
_080AB9B6:
movs r1, 0xAE
lsls r1, 1
add r1, r9
movs r0, 0
strb r0, [r1]
movs r0, 0xB8
lsls r0, 1
add r0, r9
movs r1, 0xB4
lsls r1, 1
add r1, r9
strh r4, [r1]
movs r3, 0xA1
lsls r3, 1
add r3, r9
ldrb r1, [r3]
ldr r2, _080AB9FC
add r2, r9
strb r1, [r2]
movs r2, 0
ldrsb r2, [r3, r2]
adds r1, r4, 0
bl sub_80A6EFC
_080AB9E6:
add sp, 0x2C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080AB9F8: .4byte 0x00000807
_080AB9FC: .4byte 0x0000015d
thumb_func_end sub_80AB5D4
thumb_func_start sub_80ABA00
sub_80ABA00:
push {r4,r5,lr}
adds r1, r0, 0
movs r4, 0
ldr r0, _080ABA34
ldr r2, [r0]
ldr r3, [r2, 0x24]
adds r5, r0, 0
cmp r3, r1
ble _080ABA38
adds r1, 0x1
cmp r1, r3
bge _080ABA72
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, 0x2C
adds r2, r0, r2
subs r1, r3, r1
_080ABA24:
ldr r0, [r2]
adds r4, r0
adds r2, 0xC
subs r1, 0x1
cmp r1, 0
bne _080ABA24
b _080ABA72
.align 2, 0
_080ABA34: .4byte gGroundLivesMeta
_080ABA38:
cmp r3, r1
bge _080ABA72
adds r1, 0x1
cmp r1, 0x3F
bgt _080ABA58
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, 0x2C
adds r2, r0, r2
_080ABA4C:
ldr r0, [r2]
adds r4, r0
adds r2, 0xC
adds r1, 0x1
cmp r1, 0x3F
ble _080ABA4C
_080ABA58:
ldr r1, [r5]
ldr r0, [r1, 0x24]
cmp r0, 0
ble _080ABA72
adds r2, r1, 0
adds r2, 0x2C
adds r1, r0, 0
_080ABA66:
ldr r0, [r2]
adds r4, r0
adds r2, 0xC
subs r1, 0x1
cmp r1, 0
bne _080ABA66
_080ABA72:
adds r0, r4, 0
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_80ABA00
thumb_func_start sub_80ABA7C
sub_80ABA7C:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x8
ldr r0, _080ABB50
ldr r5, [r0]
movs r0, 0
mov r8, r0
movs r1, 0xA2
lsls r1, 1
adds r4, r5, r1
movs r2, 0x1
negs r2, r2
mov r9, r2
_080ABA9A:
movs r1, 0x2
ldrsh r0, [r5, r1]
cmp r0, r9
beq _080ABB2C
ldr r0, [r4]
ldr r1, [r5, 0x14]
adds r0, r1
str r0, [sp]
ldr r0, [r4, 0x4]
ldr r1, [r5, 0x18]
adds r0, r1
str r0, [sp, 0x4]
ldr r1, [r4, 0x10]
ldr r0, [r4, 0x14]
adds r7, r1, r0
ldr r0, [r4, 0x20]
cmp r0, 0
ble _080ABADA
subs r0, 0x1
str r0, [r4, 0x20]
cmp r0, 0
bgt _080ABADA
ldrh r0, [r4, 0x1C]
subs r0, 0x1
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bhi _080ABADA
ldrh r1, [r4, 0x1C]
adds r0, r5, 0
bl sub_80A9750
_080ABADA:
movs r2, 0xB8
lsls r2, 1
adds r6, r5, r2
adds r0, r6, 0
bl sub_80A66D4
lsls r0, 24
cmp r0, 0
beq _080ABAFE
movs r0, 0
strb r0, [r4, 0x18]
movs r0, 0x24
ldrsh r1, [r4, r0]
movs r2, 0x19
ldrsb r2, [r4, r2]
adds r0, r6, 0
bl sub_80A6EFC
_080ABAFE:
movs r1, 0x26
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080ABB1E
adds r1, r0, 0
movs r2, 0xA1
lsls r2, 1
adds r0, r5, r2
movs r2, 0
ldrsb r2, [r0, r2]
ldr r3, [r4, 0x28]
adds r0, r6, 0
bl sub_80A74F0
movs r0, 0
strh r0, [r4, 0x26]
_080ABB1E:
movs r0, 0x8
ldrsh r1, [r5, r0]
adds r0, r6, 0
mov r2, sp
adds r3, r7, 0
bl sub_80A7524
_080ABB2C:
mov r0, r8
adds r0, 0x1
lsls r0, 16
asrs r0, 16
mov r8, r0
movs r1, 0xF8
lsls r1, 1
adds r4, r1
adds r5, r1
cmp r0, 0x17
ble _080ABA9A
add sp, 0x8
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080ABB50: .4byte gGroundLives
thumb_func_end sub_80ABA7C
.align 2,0