summaryrefslogtreecommitdiff
path: root/asm/ground_object.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/ground_object.s')
-rw-r--r--asm/ground_object.s2259
1 files changed, 2259 insertions, 0 deletions
diff --git a/asm/ground_object.s b/asm/ground_object.s
new file mode 100644
index 0000000..6425371
--- /dev/null
+++ b/asm/ground_object.s
@@ -0,0 +1,2259 @@
+ .include "constants/gba_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80ABB54
+sub_80ABB54:
+ push {r4,r5,lr}
+ ldr r4, _080ABB90
+ movs r0, 0xE2
+ lsls r0, 5
+ movs r1, 0x6
+ bl MemoryAlloc
+ str r0, [r4]
+ adds r1, r0, 0
+ ldr r0, _080ABB94
+ adds r5, r0, 0
+ movs r4, 0xE2
+ lsls r4, 1
+ movs r2, 0x80
+ lsls r2, 9
+ adds r3, r2, 0
+_080ABB74:
+ ldrh r0, [r1, 0x6]
+ orrs r0, r5
+ strh r0, [r1, 0x6]
+ adds r0, r2, 0
+ adds r2, r3
+ asrs r0, 16
+ adds r1, r4
+ cmp r0, 0xF
+ ble _080ABB74
+ bl sub_80ABB98
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ABB90: .4byte gUnknown_3001B88
+_080ABB94: .4byte 0x0000ffff
+ thumb_func_end sub_80ABB54
+
+ thumb_func_start sub_80ABB98
+sub_80ABB98:
+ push {r4-r6,lr}
+ ldr r0, _080ABBD0
+ ldr r4, [r0]
+ movs r1, 0
+ movs r6, 0x1
+ negs r6, r6
+ movs r5, 0x80
+ lsls r5, 9
+_080ABBA8:
+ movs r2, 0x6
+ ldrsh r0, [r4, r2]
+ cmp r0, r6
+ beq _080ABBB6
+ adds r0, r1, 0
+ bl GroundObject_Delete
+_080ABBB6:
+ adds r0, r5, 0
+ movs r1, 0x80
+ lsls r1, 9
+ adds r5, r1
+ asrs r1, r0, 16
+ movs r2, 0xE2
+ lsls r2, 1
+ adds r4, r2
+ cmp r1, 0xF
+ ble _080ABBA8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ABBD0: .4byte gUnknown_3001B88
+ thumb_func_end sub_80ABB98
+
+ thumb_func_start sub_80ABBD4
+sub_80ABBD4:
+ push {r4,lr}
+ bl sub_80ABB98
+ ldr r4, _080ABBEC
+ ldr r0, [r4]
+ bl MemoryFree
+ movs r0, 0
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ABBEC: .4byte gUnknown_3001B88
+ thumb_func_end sub_80ABBD4
+
+ thumb_func_start GroundObject_Select
+GroundObject_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, _080ABC54
+ adds r0, r4, 0
+ bl sub_80A77D0
+ adds r5, r0, 0
+ ldr r1, _080ABC58
+ 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, 0xC]
+ ldr r0, [r0, 0x8]
+ cmp r0, 0
+ ble _080ABC4A
+ adds r4, r0, 0
+_080ABC34:
+ movs r0, 0x1
+ negs r0, r0
+ adds r1, r5, 0
+ adds r2, r7, 0
+ adds r3, r6, 0
+ bl GroundObject_Add
+ subs r4, 0x1
+ adds r5, 0x18
+ cmp r4, 0
+ bne _080ABC34
+_080ABC4A:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ABC54: .4byte gUnknown_81183E4
+_080ABC58: .4byte gUnknown_81183F0
+ thumb_func_end GroundObject_Select
+
+ thumb_func_start GroundObject_Cancel
+GroundObject_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, _080ABCC4
+ movs r0, 0
+ adds r2, r7, 0
+ bl Log
+ movs r1, 0
+ ldr r0, _080ABCC8
+ ldr r4, [r0]
+ movs r0, 0x1
+ negs r0, r0
+ mov r8, r0
+ movs r6, 0x80
+ lsls r6, 9
+_080ABC84:
+ movs r2, 0x6
+ ldrsh r0, [r4, r2]
+ cmp r0, r8
+ beq _080ABCA6
+ movs r2, 0x8
+ ldrsh r0, [r4, r2]
+ cmp r0, r7
+ bne _080ABCA6
+ cmp r5, 0
+ blt _080ABCA0
+ movs r0, 0xA
+ ldrsb r0, [r4, r0]
+ cmp r0, r5
+ bne _080ABCA6
+_080ABCA0:
+ adds r0, r1, 0
+ bl GroundObject_Delete
+_080ABCA6:
+ adds r0, r6, 0
+ movs r1, 0x80
+ lsls r1, 9
+ adds r6, r1
+ asrs r1, r0, 16
+ movs r2, 0xE2
+ lsls r2, 1
+ adds r4, r2
+ cmp r1, 0xF
+ ble _080ABC84
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ABCC4: .4byte gUnknown_8118414
+_080ABCC8: .4byte gUnknown_3001B88
+ thumb_func_end GroundObject_Cancel
+
+ thumb_func_start GroundObject_CancelBlank
+GroundObject_CancelBlank:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x8
+ ldr r1, _080ABD40
+ movs r0, 0
+ bl Log
+ movs r6, 0
+ ldr r0, _080ABD44
+ ldr r4, [r0]
+ movs r0, 0x1
+ negs r0, r0
+ mov r8, r0
+ movs r1, 0x92
+ lsls r1, 1
+ adds r5, r4, r1
+ mov r7, sp
+_080ABCF0:
+ movs r1, 0x6
+ ldrsh r0, [r4, r1]
+ cmp r0, r8
+ beq _080ABD20
+ 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, 0xA2
+ lsls r1, 1
+ adds r0, r4, r1
+ mov r1, sp
+ bl sub_80A675C
+ lsls r0, 24
+ cmp r0, 0
+ bne _080ABD20
+ adds r0, r6, 0
+ bl GroundObject_Delete
+_080ABD20:
+ adds r0, r6, 0x1
+ lsls r0, 16
+ asrs r6, r0, 16
+ movs r0, 0xE2
+ lsls r0, 1
+ adds r5, r0
+ adds r4, r0
+ cmp r6, 0xF
+ ble _080ABCF0
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ABD40: .4byte gUnknown_811842C
+_080ABD44: .4byte gUnknown_3001B88
+ thumb_func_end GroundObject_CancelBlank
+
+ thumb_func_start sub_80ABD48
+sub_80ABD48:
+ push {r4-r7,lr}
+ lsls r0, 16
+ asrs r4, r0, 16
+ movs r3, 0
+ ldr r0, _080ABD6C
+ ldr r1, [r0]
+ movs r6, 0xE2
+ lsls r6, 1
+ movs r2, 0x80
+ lsls r2, 9
+ adds r5, r2, 0
+_080ABD5E:
+ movs r7, 0x6
+ ldrsh r0, [r1, r7]
+ cmp r0, r4
+ bne _080ABD70
+ adds r0, r3, 0
+ b _080ABD80
+ .align 2, 0
+_080ABD6C: .4byte gUnknown_3001B88
+_080ABD70:
+ adds r0, r2, 0
+ adds r2, r5
+ asrs r3, r0, 16
+ adds r1, r6
+ cmp r3, 0xF
+ ble _080ABD5E
+ movs r0, 0x1
+ negs r0, r0
+_080ABD80:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80ABD48
+
+ thumb_func_start GroundObject_Add
+GroundObject_Add:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ mov r8, r1
+ lsls r0, 16
+ asrs r7, r0, 16
+ lsls r2, 16
+ asrs r2, 16
+ mov r10, r2
+ lsls r3, 24
+ asrs r3, 24
+ mov r9, r3
+ ldrb r4, [r1]
+ cmp r4, 0x1A
+ bne _080ABDDA
+ movs r0, 0
+ movs r1, 0x28
+ bl sub_8001658
+ cmp r0, 0x1
+ bgt _080ABDBC
+ movs r4, 0x1B
+ b _080ABDDA
+_080ABDBC:
+ movs r0, 0
+ movs r1, 0x29
+ bl sub_8001658
+ cmp r0, 0
+ bne _080ABDD4
+ movs r0, 0
+ movs r1, 0x27
+ bl sub_8001658
+ adds r0, 0x1C
+ b _080ABDD6
+_080ABDD4:
+ adds r0, 0x2B
+_080ABDD6:
+ lsls r0, 16
+ asrs r4, r0, 16
+_080ABDDA:
+ lsls r1, r4, 2
+ ldr r0, _080ABE10
+ adds r6, r1, r0
+ cmp r7, 0
+ bge _080ABE40
+ cmp r4, 0xE
+ bgt _080ABDF4
+ cmp r4, 0xD
+ blt _080ABDF4
+ adds r0, r4, 0
+ bl sub_80ABD48
+ adds r7, r0, 0
+_080ABDF4:
+ cmp r7, 0
+ bge _080ABE40
+ movs r3, 0
+ ldr r0, _080ABE14
+ ldr r5, [r0]
+ movs r0, 0x6
+ ldrsh r1, [r5, r0]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080ABE18
+ movs r7, 0
+ b _080ABE40
+ .align 2, 0
+_080ABE10: .4byte gUnknown_811ED20
+_080ABE14: .4byte gUnknown_3001B88
+_080ABE18:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ asrs r3, r0, 16
+ movs r1, 0xE2
+ lsls r1, 1
+ adds r5, r1
+ cmp r3, 0xF
+ bgt _080ABE36
+ movs r2, 0x6
+ ldrsh r1, [r5, r2]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080ABE18
+ adds r7, r3, 0
+_080ABE36:
+ cmp r7, 0
+ bge _080ABE40
+ movs r0, 0x1
+ negs r0, r0
+ b _080AC142
+_080ABE40:
+ ldr r1, _080ABEA8
+ lsls r0, r7, 3
+ subs r0, r7
+ lsls r0, 4
+ adds r0, r7
+ lsls r0, 2
+ ldr r1, [r1]
+ adds r5, r1, r0
+ ldr r1, _080ABEAC
+ mov r3, r8
+ ldrb r0, [r3]
+ str r0, [sp]
+ movs r2, 0
+ ldrsh r0, [r6, r2]
+ str r0, [sp, 0x4]
+ mov r3, r10
+ str r3, [sp, 0x8]
+ mov r0, r9
+ str r0, [sp, 0xC]
+ movs r0, 0
+ adds r2, r7, 0
+ adds r3, r4, 0
+ bl Log
+ movs r2, 0
+ movs r3, 0x6
+ ldrsh r1, [r5, r3]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080ABE80
+ movs r2, 0x1
+_080ABE80:
+ str r2, [sp, 0x10]
+ strh r7, [r5, 0x4]
+ strh r4, [r5, 0x6]
+ mov r0, r10
+ strh r0, [r5, 0x8]
+ mov r1, r9
+ strb r1, [r5, 0xA]
+ ldrh r0, [r6]
+ subs r0, 0x1
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xE
+ bls _080ABE9C
+ b _080ABF8C
+_080ABE9C:
+ lsls r0, 2
+ ldr r1, _080ABEB0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080ABEA8: .4byte gUnknown_3001B88
+_080ABEAC: .4byte gUnknown_8118448
+_080ABEB0: .4byte _080ABEB4
+ .align 2, 0
+_080ABEB4:
+ .4byte _080ABEF0
+ .4byte _080ABF7C
+ .4byte _080ABF46
+ .4byte _080ABF54
+ .4byte _080ABF54
+ .4byte _080ABF5E
+ .4byte _080ABF68
+ .4byte _080ABF72
+ .4byte _080ABF3C
+ .4byte _080ABEFA
+ .4byte _080ABEF0
+ .4byte _080ABF06
+ .4byte _080ABF2C
+ .4byte _080ABF1E
+ .4byte _080ABF12
+_080ABEF0:
+ movs r2, 0x8E
+ lsls r2, 1
+ adds r1, r5, r2
+ movs r0, 0
+ b _080ABF94
+_080ABEFA:
+ movs r3, 0x8E
+ lsls r3, 1
+ adds r1, r5, r3
+ movs r0, 0x80
+ lsls r0, 10
+ b _080ABF94
+_080ABF06:
+ movs r0, 0x8E
+ lsls r0, 1
+ adds r1, r5, r0
+ movs r0, 0x80
+ lsls r0, 11
+ b _080ABF94
+_080ABF12:
+ movs r2, 0x8E
+ lsls r2, 1
+ adds r1, r5, r2
+ movs r0, 0x83
+ lsls r0, 18
+ b _080ABF94
+_080ABF1E:
+ movs r3, 0x8E
+ lsls r3, 1
+ adds r1, r5, r3
+ ldr r0, _080ABF28
+ b _080ABF94
+ .align 2, 0
+_080ABF28: .4byte 0x220c0000
+_080ABF2C:
+ movs r0, 0x8E
+ lsls r0, 1
+ adds r1, r5, r0
+ ldr r0, _080ABF38
+ b _080ABF94
+ .align 2, 0
+_080ABF38: .4byte 0x20010000
+_080ABF3C:
+ movs r2, 0x8E
+ lsls r2, 1
+ adds r1, r5, r2
+ movs r0, 0x5
+ b _080ABF94
+_080ABF46:
+ movs r3, 0x8E
+ lsls r3, 1
+ adds r1, r5, r3
+ ldr r0, _080ABF50
+ b _080ABF94
+ .align 2, 0
+_080ABF50: .4byte 0x22000184
+_080ABF54:
+ movs r0, 0x8E
+ lsls r0, 1
+ adds r1, r5, r0
+ adds r0, 0x68
+ b _080ABF94
+_080ABF5E:
+ movs r2, 0x8E
+ lsls r2, 1
+ adds r1, r5, r2
+ movs r0, 0x44
+ b _080ABF94
+_080ABF68:
+ movs r3, 0x8E
+ lsls r3, 1
+ adds r1, r5, r3
+ movs r0, 0x84
+ b _080ABF94
+_080ABF72:
+ movs r0, 0x8E
+ lsls r0, 1
+ adds r1, r5, r0
+ adds r0, 0x64
+ b _080ABF94
+_080ABF7C:
+ movs r2, 0x8E
+ lsls r2, 1
+ adds r1, r5, r2
+ ldr r0, _080ABF88
+ b _080ABF94
+ .align 2, 0
+_080ABF88: .4byte 0x020000c4
+_080ABF8C:
+ movs r3, 0x8E
+ lsls r3, 1
+ adds r1, r5, r3
+ ldr r0, _080ABFA8
+_080ABF94:
+ str r0, [r1]
+ ldrb r0, [r6, 0x2]
+ cmp r0, 0
+ bne _080ABFAC
+ mov r1, r8
+ ldrb r0, [r1, 0x2]
+ lsls r0, 11
+ str r0, [r5, 0xC]
+ ldrb r0, [r1, 0x3]
+ b _080ABFB4
+ .align 2, 0
+_080ABFA8: .4byte 0x02000185
+_080ABFAC:
+ ldrb r0, [r6, 0x2]
+ lsls r0, 11
+ str r0, [r5, 0xC]
+ ldrb r0, [r6, 0x3]
+_080ABFB4:
+ lsls r0, 11
+ str r0, [r5, 0x10]
+ ldr r0, [r5, 0xC]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ str r0, [r5, 0x14]
+ ldr r0, [r5, 0x10]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ str r0, [r5, 0x18]
+ mov r2, r8
+ ldrb r0, [r2, 0x1]
+ strb r0, [r5, 0x1C]
+ adds r2, 0x4
+ adds r4, r5, 0
+ adds r4, 0x20
+ ldrb r1, [r2, 0x2]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _080ABFFC
+ mov r3, r8
+ 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 _080ABFFC
+ movs r1, 0x80
+ lsls r1, 3
+ adds r0, r3, r1
+ str r0, [r5, 0x20]
+_080ABFFC:
+ ldrb r1, [r2, 0x3]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _080AC01E
+ 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 _080AC01E
+ movs r2, 0x80
+ lsls r2, 3
+ adds r0, r3, r2
+ str r0, [r4, 0x4]
+_080AC01E:
+ ldr r3, [sp, 0x10]
+ cmp r3, 0
+ beq _080AC076
+ ldrb r1, [r5, 0x1C]
+ movs r2, 0x90
+ lsls r2, 1
+ adds r0, r5, r2
+ movs r3, 0
+ strb r1, [r0]
+ movs r0, 0x92
+ lsls r0, 1
+ adds r2, r5, r0
+ ldr r0, [r5, 0x20]
+ ldr r1, [r5, 0x14]
+ subs r0, r1
+ str r0, [r2]
+ movs r1, 0x96
+ lsls r1, 1
+ adds r2, r5, r1
+ ldr r0, [r5, 0x20]
+ ldr r1, [r5, 0x14]
+ adds r0, r1
+ str r0, [r2]
+ movs r0, 0x94
+ lsls r0, 1
+ adds r2, r5, r0
+ ldr r0, [r5, 0x24]
+ ldr r1, [r5, 0x18]
+ subs r0, r1
+ str r0, [r2]
+ movs r1, 0x98
+ lsls r1, 1
+ adds r2, r5, r1
+ ldr r0, [r5, 0x24]
+ ldr r1, [r5, 0x18]
+ adds r0, r1
+ str r0, [r2]
+ movs r2, 0x9A
+ lsls r2, 1
+ adds r1, r5, r2
+ adds r2, 0x4
+ adds r0, r5, r2
+ str r3, [r0]
+ str r3, [r1]
+_080AC076:
+ adds r0, r5, 0
+ adds r0, 0x28
+ adds r1, r5, 0
+ adds r1, 0x30
+ bl sub_80A5778
+ ldr r3, [sp, 0x10]
+ cmp r3, 0
+ beq _080AC0C0
+ movs r0, 0x9F
+ lsls r0, 1
+ adds r1, r5, r0
+ movs r2, 0
+ movs r0, 0x80
+ lsls r0, 4
+ strh r0, [r1]
+ movs r3, 0x9E
+ lsls r3, 1
+ adds r1, r5, r3
+ movs r0, 0x1
+ strb r0, [r1]
+ movs r1, 0xA0
+ lsls r1, 1
+ adds r0, r5, r1
+ strh r2, [r0]
+ movs r2, 0xA2
+ lsls r2, 1
+ adds r0, r5, r2
+ movs r3, 0x6
+ ldrsh r2, [r5, r3]
+ movs r3, 0x8E
+ lsls r3, 1
+ adds r1, r5, r3
+ ldr r3, [r1]
+ adds r1, r7, 0
+ bl sub_80A75CC
+_080AC0C0:
+ adds r4, r5, 0
+ adds r4, 0x38
+ ldr r1, _080AC154
+ mov r0, r9
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r2, r5, 0
+ mov r3, r10
+ bl sub_809D600
+ adds r6, r4, 0
+ mov r1, r8
+ ldr r2, [r1, 0xC]
+ cmp r2, 0
+ bne _080AC0F2
+ movs r2, 0xA2
+ lsls r2, 1
+ adds r0, r5, r2
+ bl sub_80A66A4
+ lsls r0, 24
+ ldr r2, _080AC158
+ cmp r0, 0
+ beq _080AC0F2
+ ldr r2, _080AC15C
+_080AC0F2:
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl sub_809D6D8
+ adds r1, r4, 0
+ mov r3, r8
+ ldr r2, [r3, 0x10]
+ cmp r2, 0
+ bne _080AC108
+ ldr r0, _080AC160
+ ldr r2, [r0, 0x38]
+_080AC108:
+ adds r0, r1, 0
+ movs r1, 0x2
+ bl sub_809D6D8
+ mov r0, r8
+ ldr r2, [r0, 0x14]
+ cmp r2, 0
+ bne _080AC11C
+ ldr r0, _080AC160
+ ldr r2, [r0, 0x68]
+_080AC11C:
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl sub_809D6D8
+ mov r1, r8
+ ldr r2, [r1, 0x8]
+ cmp r2, 0
+ beq _080AC140
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_809D6D8
+ ldr r3, _080AC164
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0
+ bl sub_809D8C0
+_080AC140:
+ adds r0, r7, 0
+_080AC142:
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080AC154: .4byte gUnknown_81182A0
+_080AC158: .4byte gUnknown_81182F4
+_080AC15C: .4byte gUnknown_8118350
+_080AC160: .4byte gFunctionScriptTable
+_080AC164: .4byte gUnknown_81184A4
+ thumb_func_end GroundObject_Add
+
+ thumb_func_start GroundObject_Delete
+GroundObject_Delete:
+ push {r4,lr}
+ adds r2, r0, 0
+ lsls r2, 16
+ asrs r2, 16
+ ldr r1, _080AC1A4
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 4
+ adds r0, r2
+ lsls r0, 2
+ ldr r1, [r1]
+ adds r4, r1, r0
+ ldr r1, _080AC1A8
+ movs r0, 0
+ bl Log
+ movs r1, 0xA2
+ lsls r1, 1
+ adds r0, r4, r1
+ bl sub_80A7658
+ adds r0, r4, 0
+ adds r0, 0x38
+ bl sub_809D648
+ ldr r0, _080AC1AC
+ strh r0, [r4, 0x6]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC1A4: .4byte gUnknown_3001B88
+_080AC1A8: .4byte gUnknown_81184B0
+_080AC1AC: .4byte 0x0000ffff
+ thumb_func_end GroundObject_Delete
+
+ thumb_func_start sub_80AC1B0
+sub_80AC1B0:
+ push {lr}
+ adds r3, r1, 0
+ lsls r0, 16
+ asrs r0, 16
+ ldr r2, _080AC1F0
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, [r2]
+ adds r2, r0, r1
+ movs r0, 0x6
+ ldrsh r1, [r2, r0]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ beq _080AC1EA
+ movs r1, 0x8E
+ lsls r1, 1
+ adds r0, r2, r1
+ ldr r1, [r0]
+ orrs r1, r3
+ str r1, [r0]
+ movs r3, 0xA2
+ lsls r3, 1
+ adds r0, r2, r3
+ bl sub_80A6688
+_080AC1EA:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC1F0: .4byte gUnknown_3001B88
+ thumb_func_end sub_80AC1B0
+
+ thumb_func_start sub_80AC1F4
+sub_80AC1F4:
+ push {r4,lr}
+ adds r4, r1, 0
+ lsls r0, 16
+ asrs r0, 16
+ ldr r2, _080AC238
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, [r2]
+ adds r3, r0, r1
+ movs r0, 0x6
+ ldrsh r1, [r3, r0]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ beq _080AC232
+ movs r0, 0x8E
+ lsls r0, 1
+ adds r2, r3, r0
+ ldr r0, _080AC23C
+ eors r0, r4
+ ldr r1, [r2]
+ ands r1, r0
+ str r1, [r2]
+ movs r2, 0xA2
+ lsls r2, 1
+ adds r0, r3, r2
+ bl sub_80A6688
+_080AC232:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC238: .4byte gUnknown_3001B88
+_080AC23C: .4byte 0x337fffff
+ thumb_func_end sub_80AC1F4
+
+ thumb_func_start sub_80AC240
+sub_80AC240:
+ push {lr}
+ lsls r0, 16
+ asrs r0, 16
+ ldr r2, _080AC268
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, [r2]
+ adds r2, r0, r1
+ movs r0, 0x6
+ ldrsh r1, [r2, r0]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080AC26C
+ movs r0, 0
+ b _080AC270
+ .align 2, 0
+_080AC268: .4byte gUnknown_3001B88
+_080AC26C:
+ adds r0, r2, 0
+ adds r0, 0x38
+_080AC270:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AC240
+
+ thumb_func_start sub_80AC274
+sub_80AC274:
+ push {r4,lr}
+ adds r4, r1, 0
+ lsls r0, 16
+ asrs r0, 16
+ lsls r2, 16
+ asrs r3, r2, 16
+ ldr r2, _080AC2A0
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, [r2]
+ adds r2, r0, r1
+ movs r0, 0x6
+ ldrsh r1, [r2, r0]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080AC2A4
+ movs r0, 0
+ b _080AC2B4
+ .align 2, 0
+_080AC2A0: .4byte gUnknown_3001B88
+_080AC2A4:
+ adds r0, r2, 0
+ adds r0, 0x38
+ adds r1, r4, 0
+ adds r2, r3, 0
+ bl sub_809D6E4
+ lsls r0, 24
+ lsrs r0, 24
+_080AC2B4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AC274
+
+ thumb_func_start GroundObject_ExecuteScript
+GroundObject_ExecuteScript:
+ push {r4-r6,lr}
+ adds r3, r0, 0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ lsls r3, 16
+ asrs r3, 16
+ ldr r1, _080AC2F4
+ lsls r0, r3, 3
+ subs r0, r3
+ lsls r0, 4
+ adds r0, r3
+ lsls r0, 2
+ ldr r1, [r1]
+ adds r4, r1, r0
+ ldr r1, _080AC2F8
+ movs r0, 0
+ adds r2, r3, 0
+ bl Log
+ movs r0, 0x6
+ ldrsh r1, [r4, r0]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080AC2FC
+ movs r0, 0
+ b _080AC314
+ .align 2, 0
+_080AC2F4: .4byte gUnknown_3001B88
+_080AC2F8: .4byte gUnknown_81184CC
+_080AC2FC:
+ adds r0, r4, 0
+ adds r0, 0x38
+ ldr r3, _080AC31C
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl GroundScript_ExecutePP
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r1, r4, r0
+ movs r0, 0x1
+ strb r0, [r1]
+_080AC314:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080AC31C: .4byte gUnknown_8118504
+ thumb_func_end GroundObject_ExecuteScript
+
+ thumb_func_start sub_80AC320
+sub_80AC320:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 16
+ asrs r7, r0, 16
+ ldr r0, _080AC374
+ ldr r4, [r0]
+ movs r5, 0
+ movs r0, 0x1
+ negs r0, r0
+ mov r8, r0
+ movs r6, 0x80
+ lsls r6, 9
+_080AC33A:
+ movs r1, 0x6
+ ldrsh r0, [r4, r1]
+ cmp r0, r8
+ beq _080AC352
+ adds r0, r4, 0
+ adds r0, 0x38
+ adds r1, r7, 0
+ bl sub_809D968
+ orrs r5, r0
+ lsls r0, r5, 24
+ lsrs r5, r0, 24
+_080AC352:
+ adds r0, r6, 0
+ movs r1, 0x80
+ lsls r1, 9
+ adds r6, r1
+ asrs r0, 16
+ movs r1, 0xE2
+ lsls r1, 1
+ adds r4, r1
+ cmp r0, 0xF
+ ble _080AC33A
+ adds r0, r5, 0
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080AC374: .4byte gUnknown_3001B88
+ thumb_func_end sub_80AC320
+
+ thumb_func_start sub_80AC378
+sub_80AC378:
+ push {r4-r7,lr}
+ ldr r0, _080AC3BC
+ ldr r4, [r0]
+ movs r5, 0
+ movs r7, 0x1
+ negs r7, r7
+ movs r6, 0x80
+ lsls r6, 9
+_080AC388:
+ movs r1, 0x6
+ ldrsh r0, [r4, r1]
+ cmp r0, r7
+ beq _080AC39E
+ adds r0, r4, 0
+ adds r0, 0x38
+ bl sub_809D92C
+ orrs r5, r0
+ lsls r0, r5, 24
+ lsrs r5, r0, 24
+_080AC39E:
+ adds r0, r6, 0
+ movs r1, 0x80
+ lsls r1, 9
+ adds r6, r1
+ asrs r0, 16
+ movs r1, 0xE2
+ lsls r1, 1
+ adds r4, r1
+ cmp r0, 0xF
+ ble _080AC388
+ adds r0, r5, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080AC3BC: .4byte gUnknown_3001B88
+ thumb_func_end sub_80AC378
+
+ thumb_func_start sub_80AC3C0
+sub_80AC3C0:
+ lsls r0, 16
+ asrs r0, 16
+ ldr r2, _080AC3DC
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, [r2]
+ adds r0, r1
+ movs r1, 0x6
+ ldrsh r0, [r0, r1]
+ bx lr
+ .align 2, 0
+_080AC3DC: .4byte gUnknown_3001B88
+ thumb_func_end sub_80AC3C0
+
+ thumb_func_start sub_80AC3E0
+sub_80AC3E0:
+ lsls r0, 16
+ asrs r0, 16
+ ldr r3, _080AC404
+ lsls r2, r0, 3
+ subs r2, r0
+ lsls r2, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, [r3]
+ adds r0, r2
+ movs r3, 0x8E
+ lsls r3, 1
+ adds r2, r0, r3
+ ldr r2, [r2]
+ str r2, [r1]
+ movs r1, 0x6
+ ldrsh r0, [r0, r1]
+ bx lr
+ .align 2, 0
+_080AC404: .4byte gUnknown_3001B88
+ thumb_func_end sub_80AC3E0
+
+ thumb_func_start sub_80AC408
+sub_80AC408:
+ push {lr}
+ adds r3, r1, 0
+ lsls r0, 16
+ asrs r0, 16
+ ldr r2, _080AC434
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, [r2]
+ adds r2, r0, r1
+ movs r0, 0x6
+ ldrsh r1, [r2, r0]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080AC438
+ movs r0, 0
+ str r0, [r3]
+ str r0, [r3, 0x4]
+ b _080AC440
+ .align 2, 0
+_080AC434: .4byte gUnknown_3001B88
+_080AC438:
+ ldr r0, [r2, 0xC]
+ ldr r1, [r2, 0x10]
+ str r0, [r3]
+ str r1, [r3, 0x4]
+_080AC440:
+ movs r1, 0x6
+ ldrsh r0, [r2, r1]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AC408
+
+ thumb_func_start sub_80AC448
+sub_80AC448:
+ push {lr}
+ adds r3, r1, 0
+ lsls r0, 16
+ asrs r0, 16
+ ldr r2, _080AC474
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, [r2]
+ adds r2, r0, r1
+ movs r0, 0x6
+ ldrsh r1, [r2, r0]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080AC478
+ movs r0, 0
+ str r0, [r3]
+ b _080AC492
+ .align 2, 0
+_080AC474: .4byte gUnknown_3001B88
+_080AC478:
+ movs r1, 0x92
+ lsls r1, 1
+ adds r0, r2, r1
+ ldr r0, [r0]
+ ldr r1, [r2, 0x14]
+ adds r0, r1
+ str r0, [r3]
+ movs r1, 0x94
+ lsls r1, 1
+ adds r0, r2, r1
+ ldr r0, [r0]
+ ldr r1, [r2, 0x18]
+ adds r0, r1
+_080AC492:
+ str r0, [r3, 0x4]
+ movs r1, 0x6
+ ldrsh r0, [r2, r1]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AC448
+
+ thumb_func_start sub_80AC49C
+sub_80AC49C:
+ push {r4,lr}
+ lsls r0, 16
+ asrs r0, 16
+ ldr r3, _080AC4C4
+ lsls r2, r0, 3
+ subs r2, r0
+ lsls r2, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r4, [r3]
+ adds r4, r2
+ adds r0, r4, 0
+ bl sub_80AC6AC
+ movs r1, 0x6
+ ldrsh r0, [r4, r1]
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080AC4C4: .4byte gUnknown_3001B88
+ thumb_func_end sub_80AC49C
+
+ thumb_func_start sub_80AC4C8
+sub_80AC4C8:
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ adds r4, r1, 0
+ ldr r0, _080AC530
+ ldr r3, [r0]
+ movs r5, 0
+ movs r0, 0x1
+ negs r0, r0
+ mov r12, r0
+ movs r6, 0x80
+ lsls r6, 9
+_080AC4DE:
+ movs r1, 0x6
+ ldrsh r0, [r3, r1]
+ cmp r0, r12
+ beq _080AC534
+ movs r1, 0x8E
+ lsls r1, 1
+ adds r0, r3, r1
+ ldr r0, [r0]
+ ands r0, r7
+ cmp r0, 0
+ beq _080AC534
+ adds r1, 0x8
+ adds r0, r3, r1
+ ldr r1, [r0]
+ ldr r0, [r2]
+ cmp r1, r0
+ bge _080AC534
+ movs r1, 0x96
+ lsls r1, 1
+ adds r0, r3, r1
+ ldr r1, [r0]
+ ldr r0, [r4]
+ cmp r1, r0
+ ble _080AC534
+ movs r1, 0x94
+ lsls r1, 1
+ adds r0, r3, r1
+ ldr r1, [r0]
+ ldr r0, [r2, 0x4]
+ cmp r1, r0
+ bge _080AC534
+ movs r1, 0x98
+ lsls r1, 1
+ adds r0, r3, r1
+ ldr r1, [r0]
+ ldr r0, [r4, 0x4]
+ cmp r1, r0
+ ble _080AC534
+ adds r0, r5, 0
+ b _080AC54C
+ .align 2, 0
+_080AC530: .4byte gUnknown_3001B88
+_080AC534:
+ adds r0, r6, 0
+ movs r1, 0x80
+ lsls r1, 9
+ adds r6, r1
+ asrs r5, r0, 16
+ movs r0, 0xE2
+ lsls r0, 1
+ adds r3, r0
+ cmp r5, 0xF
+ ble _080AC4DE
+ movs r0, 0x1
+ negs r0, r0
+_080AC54C:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AC4C8
+
+ thumb_func_start sub_80AC554
+sub_80AC554:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ mov r8, r0
+ mov r10, r1
+ adds r4, r2, 0
+ ldr r0, _080AC5C8
+ ldr r0, [r0]
+ mov r12, r0
+ movs r6, 0
+ movs r0, 0x1
+ negs r0, r0
+ mov r9, r0
+ movs r7, 0x80
+ lsls r7, 9
+_080AC576:
+ mov r1, r12
+ movs r2, 0x6
+ ldrsh r0, [r1, r2]
+ cmp r0, r9
+ beq _080AC5CC
+ movs r0, 0x8E
+ lsls r0, 1
+ add r0, r12
+ ldr r0, [r0]
+ mov r5, r8
+ ands r0, r5
+ cmp r0, 0
+ beq _080AC5CC
+ movs r0, 0x92
+ lsls r0, 1
+ add r0, r12
+ ldr r1, [r0]
+ mov r5, r12
+ ldr r0, [r5, 0x14]
+ adds r2, r1, r0
+ movs r0, 0x94
+ lsls r0, 1
+ add r0, r12
+ ldr r1, [r0]
+ ldr r0, [r5, 0x18]
+ adds r3, r1, r0
+ ldr r0, [r4]
+ cmp r2, r0
+ bge _080AC5CC
+ mov r1, r10
+ ldr r0, [r1]
+ cmp r2, r0
+ ble _080AC5CC
+ ldr r0, [r4, 0x4]
+ cmp r3, r0
+ bge _080AC5CC
+ ldr r0, [r1, 0x4]
+ cmp r3, r0
+ ble _080AC5CC
+ adds r0, r6, 0
+ b _080AC5E4
+ .align 2, 0
+_080AC5C8: .4byte gUnknown_3001B88
+_080AC5CC:
+ adds r0, r7, 0
+ movs r2, 0x80
+ lsls r2, 9
+ adds r7, r2
+ asrs r6, r0, 16
+ movs r5, 0xE2
+ lsls r5, 1
+ add r12, r5
+ cmp r6, 0xF
+ ble _080AC576
+ movs r0, 0x1
+ negs r0, r0
+_080AC5E4:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AC554
+
+ thumb_func_start sub_80AC5F4
+sub_80AC5F4:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x10
+ mov r8, r0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ ldr r0, [r5]
+ cmp r0, 0
+ bge _080AC60C
+ ldr r1, _080AC670
+ adds r0, r1
+_080AC60C:
+ asrs r0, 11
+ mov r12, r0
+ str r0, [sp]
+ ldr r0, [r5, 0x4]
+ cmp r0, 0
+ bge _080AC61C
+ ldr r3, _080AC670
+ adds r0, r3
+_080AC61C:
+ asrs r4, r0, 11
+ str r4, [sp, 0x4]
+ ldr r3, [r6]
+ subs r0, r3, 0x1
+ cmp r0, 0
+ bge _080AC62C
+ ldr r7, _080AC674
+ adds r0, r3, r7
+_080AC62C:
+ asrs r1, r0, 11
+ ldr r3, [r6, 0x4]
+ subs r0, r3, 0x1
+ cmp r0, 0
+ bge _080AC63A
+ ldr r7, _080AC674
+ adds r0, r3, r7
+_080AC63A:
+ 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 r0, 0x8E
+ lsls r0, 1
+ add r0, r8
+ ldr r0, [r0]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080AC678
+ mov r0, sp
+ adds r1, r2, 0
+ bl sub_80A585C
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AC678
+ movs r0, 0x1
+ b _080AC6A0
+ .align 2, 0
+_080AC670: .4byte 0x000007ff
+_080AC674: .4byte 0x000007fe
+_080AC678:
+ movs r0, 0x8E
+ lsls r0, 1
+ add r0, r8
+ ldr r0, [r0]
+ movs r1, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080AC69E
+ movs r0, 0x1
+ negs r0, r0
+ adds r2, r5, 0
+ adds r3, r6, 0
+ bl sub_80A92A0
+ lsls r0, 16
+ cmp r0, 0
+ blt _080AC69E
+ movs r0, 0x4
+ b _080AC6A0
+_080AC69E:
+ movs r0, 0
+_080AC6A0:
+ add sp, 0x10
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AC5F4
+
+ thumb_func_start sub_80AC6AC
+sub_80AC6AC:
+ 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 _080AC6EA
+ ldr r1, [r5, 0x30]
+ ldr r0, [sp, 0x8]
+ cmp r0, r1
+ bge _080AC6EA
+ ldr r1, [r5, 0x2C]
+ ldr r0, [sp, 0x4]
+ cmp r0, r1
+ blt _080AC6EA
+ ldr r0, [r5, 0x34]
+ cmp r3, r0
+ blt _080AC6EE
+_080AC6EA:
+ movs r0, 0x1
+ b _080AC718
+_080AC6EE:
+ adds r0, r5, 0
+ mov r1, sp
+ bl sub_80AC5F4
+ cmp r0, 0
+ bne _080AC718
+ movs r0, 0x92
+ lsls r0, 1
+ adds r2, r5, r0
+ ldr r0, [sp]
+ ldr r1, [sp, 0x4]
+ str r0, [r2]
+ str r1, [r2, 0x4]
+ movs r0, 0x96
+ 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
+_080AC718:
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AC6AC
+
+ thumb_func_start sub_80AC720
+sub_80AC720:
+ push {r4,r5,lr}
+ sub sp, 0x10
+ adds r4, r0, 0
+ movs r2, 0x92
+ lsls r2, 1
+ adds r0, r4, r2
+ ldr r0, [r0]
+ ldr r2, [r1]
+ adds r0, r2
+ str r0, [sp]
+ movs r3, 0x94
+ 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, 0x98
+ lsls r2, 1
+ adds r0, r4, r2
+ ldr r0, [r0]
+ adds r0, r1
+ add r1, sp, 0x8
+ str r0, [r1, 0x4]
+ movs r5, 0
+ ldr r3, [r4, 0x28]
+ ldr r0, [sp]
+ adds r2, r1, 0
+ cmp r0, r3
+ bge _080AC770
+ str r3, [sp]
+ ldr r0, [r4, 0xC]
+ adds r0, r3, r0
+ str r0, [sp, 0x8]
+ b _080AC780
+_080AC770:
+ ldr r1, [r4, 0x30]
+ ldr r0, [sp, 0x8]
+ cmp r0, r1
+ blt _080AC782
+ ldr r0, [r4, 0xC]
+ subs r0, r1, r0
+ str r0, [sp]
+ str r1, [sp, 0x8]
+_080AC780:
+ movs r5, 0x1
+_080AC782:
+ ldr r1, [r4, 0x2C]
+ ldr r0, [sp, 0x4]
+ cmp r0, r1
+ bge _080AC794
+ str r1, [sp, 0x4]
+ ldr r0, [r4, 0x10]
+ adds r0, r1, r0
+ str r0, [r2, 0x4]
+ b _080AC7A4
+_080AC794:
+ ldr r1, [r4, 0x34]
+ ldr r0, [r2, 0x4]
+ cmp r0, r1
+ blt _080AC7A6
+ ldr r0, [r4, 0x10]
+ subs r0, r1, r0
+ str r0, [sp, 0x4]
+ str r1, [r2, 0x4]
+_080AC7A4:
+ movs r5, 0x1
+_080AC7A6:
+ adds r0, r4, 0
+ mov r1, sp
+ bl sub_80AC5F4
+ cmp r0, 0
+ bne _080AC7D8
+ movs r3, 0x92
+ lsls r3, 1
+ adds r2, r4, r3
+ ldr r0, [sp]
+ ldr r1, [sp, 0x4]
+ str r0, [r2]
+ str r1, [r2, 0x4]
+ movs r0, 0x96
+ lsls r0, 1
+ adds r2, r4, r0
+ ldr r0, [sp, 0x8]
+ ldr r1, [sp, 0xC]
+ str r0, [r2]
+ str r1, [r2, 0x4]
+ cmp r5, 0
+ bne _080AC7D6
+ movs r0, 0
+ b _080AC7D8
+_080AC7D6:
+ movs r0, 0x1
+_080AC7D8:
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AC720
+
+ thumb_func_start sub_80AC7E0
+sub_80AC7E0:
+ movs r1, 0x4
+ ldrsh r0, [r0, r1]
+ bx lr
+ thumb_func_end sub_80AC7E0
+
+ thumb_func_start sub_80AC7E8
+sub_80AC7E8:
+ ldr r2, [r0, 0xC]
+ ldr r3, [r0, 0x10]
+ str r2, [r1]
+ str r3, [r1, 0x4]
+ bx lr
+ thumb_func_end sub_80AC7E8
+
+ thumb_func_start sub_80AC7F4
+sub_80AC7F4:
+ push {r4,lr}
+ adds r3, r0, 0
+ adds r4, r1, 0
+ cmp r4, 0
+ beq _080AC834
+ movs r0, 0x92
+ lsls r0, 1
+ adds r2, r3, r0
+ ldr r1, [r4]
+ ldr r0, [r3, 0x14]
+ subs r0, r1, r0
+ str r0, [r2]
+ movs r0, 0x96
+ lsls r0, 1
+ adds r2, r3, r0
+ ldr r0, [r3, 0x14]
+ adds r1, r0
+ str r1, [r2]
+ movs r0, 0x94
+ lsls r0, 1
+ adds r2, r3, r0
+ ldr r1, [r4, 0x4]
+ ldr r0, [r3, 0x18]
+ subs r0, r1, r0
+ str r0, [r2]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r2, r3, r0
+ ldr r0, [r3, 0x18]
+ adds r1, r0
+ str r1, [r2]
+ b _080AC89A
+_080AC834:
+ movs r0, 0x92
+ lsls r0, 1
+ adds r2, r3, r0
+ ldr r0, [r3, 0x20]
+ ldr r1, [r3, 0x14]
+ subs r0, r1
+ str r0, [r2]
+ movs r0, 0x96
+ lsls r0, 1
+ adds r2, r3, r0
+ ldr r0, [r3, 0x20]
+ ldr r1, [r3, 0x14]
+ adds r0, r1
+ str r0, [r2]
+ movs r0, 0x94
+ lsls r0, 1
+ adds r2, r3, r0
+ ldr r0, [r3, 0x24]
+ ldr r1, [r3, 0x18]
+ subs r0, r1
+ str r0, [r2]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r2, r3, r0
+ ldr r0, [r3, 0x24]
+ ldr r1, [r3, 0x18]
+ adds r0, r1
+ str r0, [r2]
+ movs r2, 0x9A
+ lsls r2, 1
+ adds r1, r3, r2
+ adds r2, 0x4
+ adds r0, r3, r2
+ str r4, [r0]
+ str r4, [r1]
+ movs r0, 0x90
+ 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 _080AC896
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r1, r3, r0
+ movs r0, 0x1
+ strb r0, [r1]
+_080AC896:
+ ldrb r0, [r3, 0x1C]
+ strb r0, [r2]
+_080AC89A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AC7F4
+
+ thumb_func_start sub_80AC8A0
+sub_80AC8A0:
+ 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 sub_80AC8A0
+
+ thumb_func_start sub_80AC8B8
+sub_80AC8B8:
+ adds r3, r0, 0
+ movs r2, 0x92
+ lsls r2, 1
+ adds r0, r3, r2
+ ldr r0, [r0]
+ ldr r2, [r3, 0x14]
+ adds r0, r2
+ str r0, [r1]
+ movs r2, 0x94
+ 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 sub_80AC8B8
+
+ thumb_func_start sub_80AC8D8
+sub_80AC8D8:
+ push {lr}
+ bl sub_80AC6AC
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AC8D8
+
+ thumb_func_start sub_80AC8E4
+sub_80AC8E4:
+ push {r4,lr}
+ adds r3, r0, 0
+ movs r4, 0x9A
+ lsls r4, 1
+ adds r0, r3, r4
+ ldr r0, [r0]
+ str r0, [r1]
+ movs r1, 0x9C
+ lsls r1, 1
+ adds r0, r3, r1
+ ldr r0, [r0]
+ str r0, [r2]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AC8E4
+
+ thumb_func_start sub_80AC904
+sub_80AC904:
+ movs r2, 0x9A
+ lsls r2, 1
+ adds r0, r2
+ str r1, [r0]
+ bx lr
+ thumb_func_end sub_80AC904
+
+ thumb_func_start sub_80AC910
+sub_80AC910:
+ movs r2, 0x90
+ lsls r2, 1
+ adds r0, r2
+ ldrb r0, [r0]
+ strb r0, [r1]
+ bx lr
+ thumb_func_end sub_80AC910
+
+ thumb_func_start sub_80AC91C
+sub_80AC91C:
+ push {lr}
+ adds r2, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ beq _080AC934
+ movs r3, 0x90
+ lsls r3, 1
+ adds r0, r2, r3
+ strb r1, [r0]
+_080AC934:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AC91C
+
+ thumb_func_start sub_80AC938
+sub_80AC938:
+ push {r4,r5,lr}
+ lsls r1, 16
+ adds r3, r0, 0
+ movs r0, 0xFF
+ lsls r0, 16
+ ands r0, r1
+ lsrs r0, 16
+ cmp r0, 0
+ beq _080AC958
+ ldr r1, _080AC954
+ lsls r0, 1
+ adds r0, r1
+ b _080AC95E
+ .align 2, 0
+_080AC954: .4byte gUnknown_81183A0
+_080AC958:
+ movs r5, 0x9F
+ lsls r5, 1
+ adds r0, r3, r5
+_080AC95E:
+ movs r1, 0
+ ldrsh r2, [r0, r1]
+ movs r5, 0x9F
+ lsls r5, 1
+ adds r1, r3, r5
+ ldrh r4, [r1]
+ movs r5, 0
+ ldrsh r0, [r1, r5]
+ cmp r0, r2
+ beq _080AC97C
+ strh r2, [r1]
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r1, r3, r0
+ b _080AC98C
+_080AC97C:
+ movs r0, 0x80
+ lsls r0, 5
+ ands r0, r4
+ cmp r0, 0
+ beq _080AC990
+ movs r5, 0x9E
+ lsls r5, 1
+ adds r1, r3, r5
+_080AC98C:
+ movs r0, 0x1
+ strb r0, [r1]
+_080AC990:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AC938
+
+ thumb_func_start sub_80AC998
+sub_80AC998:
+ push {lr}
+ lsls r1, 16
+ asrs r1, 16
+ adds r2, r1, 0
+ cmp r1, 0
+ bne _080AC9AA
+ movs r1, 0xE0
+ lsls r1, 1
+ adds r2, r1, 0
+_080AC9AA:
+ movs r1, 0xA0
+ lsls r1, 1
+ adds r0, r1
+ strh r2, [r0]
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AC998
+
+ thumb_func_start sub_80AC9B8
+sub_80AC9B8:
+ push {lr}
+ adds r1, r0, 0
+ movs r2, 0x9E
+ lsls r2, 1
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080AC9D6
+ adds r2, 0x8
+ adds r0, r1, r2
+ bl sub_80A66F8
+ lsls r0, 24
+ lsrs r0, 24
+ b _080AC9D8
+_080AC9D6:
+ movs r0, 0x1
+_080AC9D8:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AC9B8
+
+ thumb_func_start sub_80AC9DC
+sub_80AC9DC:
+ push {lr}
+ adds r1, r0, 0
+ movs r2, 0xA0
+ lsls r2, 1
+ adds r0, r1, r2
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ cmp r0, 0
+ bne _080AC9FE
+ movs r2, 0xA2
+ lsls r2, 1
+ adds r0, r1, r2
+ bl sub_80A671C
+ lsls r0, 24
+ lsrs r0, 24
+ b _080ACA00
+_080AC9FE:
+ movs r0, 0x1
+_080ACA00:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AC9DC
+
+ thumb_func_start sub_80ACA04
+sub_80ACA04:
+ movs r2, 0x8E
+ lsls r2, 1
+ adds r0, r2
+ ldr r0, [r0]
+ str r0, [r1]
+ bx lr
+ thumb_func_end sub_80ACA04
+
+ thumb_func_start sub_80ACA10
+sub_80ACA10:
+ push {lr}
+ movs r2, 0x4
+ ldrsh r0, [r0, r2]
+ bl sub_80AC1B0
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACA10
+
+ thumb_func_start sub_80ACA20
+sub_80ACA20:
+ push {lr}
+ movs r2, 0x4
+ ldrsh r0, [r0, r2]
+ bl sub_80AC1F4
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACA20
+
+ thumb_func_start sub_80ACA30
+sub_80ACA30:
+ push {lr}
+ bl sub_80AC720
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80ACA30
+
+ thumb_func_start GroundObject_Action
+GroundObject_Action:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r0, _080ACA7C
+ ldr r5, [r0]
+ movs r7, 0
+ movs r0, 0x1
+ negs r0, r0
+ mov r8, r0
+ movs r1, 0x9E
+ lsls r1, 1
+ adds r6, r5, r1
+_080ACA54:
+ movs r3, 0x6
+ ldrsh r0, [r5, r3]
+ cmp r0, r8
+ beq _080ACAB2
+ adds r4, r5, 0
+ adds r4, 0x38
+ adds r0, r4, 0
+ ldr r1, _080ACA80
+ bl HandleAction
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ beq _080ACA84
+ cmp r0, 0x4
+ bne _080ACA90
+ adds r0, r7, 0
+ bl GroundObject_Delete
+ b _080ACAB2
+ .align 2, 0
+_080ACA7C: .4byte gUnknown_3001B88
+_080ACA80: .4byte gUnknown_8118524
+_080ACA84:
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0x1
+ ldr r3, _080ACAD0
+ bl sub_809D8C0
+_080ACA90:
+ ldrb r0, [r6]
+ cmp r0, 0
+ beq _080ACAB2
+ movs r0, 0
+ strb r0, [r6]
+ movs r1, 0xA2
+ lsls r1, 1
+ adds r0, r5, r1
+ ldrh r2, [r6, 0x2]
+ movs r3, 0xF8
+ lsls r3, 5
+ adds r1, r3, 0
+ ands r1, r2
+ lsls r2, 24
+ asrs r2, 24
+ bl sub_80A6EFC
+_080ACAB2:
+ adds r0, r7, 0x1
+ lsls r0, 16
+ asrs r7, r0, 16
+ movs r0, 0xE2
+ lsls r0, 1
+ adds r6, r0
+ adds r5, r0
+ cmp r7, 0xF
+ ble _080ACA54
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACAD0: .4byte gUnknown_8118530
+ thumb_func_end GroundObject_Action
+
+ thumb_func_start sub_80ACAD4
+sub_80ACAD4:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x8
+ ldr r0, _080ACB8C
+ ldr r6, [r0]
+ movs r0, 0
+ mov r8, r0
+ movs r1, 0x1
+ negs r1, r1
+ mov r9, r1
+ movs r2, 0x90
+ lsls r2, 1
+ adds r4, r6, r2
+_080ACAF2:
+ movs r0, 0x6
+ ldrsh r1, [r6, r0]
+ mov r2, r9
+ lsls r0, r2, 16
+ asrs r0, 16
+ cmp r1, r0
+ beq _080ACB64
+ ldr r0, [r4, 0x4]
+ ldr r1, [r6, 0x14]
+ adds r0, r1
+ str r0, [sp]
+ ldr r0, [r4, 0x8]
+ ldr r1, [r6, 0x18]
+ adds r0, r1
+ str r0, [sp, 0x4]
+ ldr r1, [r4, 0x14]
+ ldr r0, [r4, 0x18]
+ adds r7, r1, r0
+ movs r0, 0xA2
+ lsls r0, 1
+ adds r5, r6, r0
+ adds r0, r5, 0
+ bl sub_80A66D4
+ lsls r0, 24
+ cmp r0, 0
+ beq _080ACB40
+ movs r0, 0
+ strb r0, [r4, 0x1C]
+ ldrh r2, [r4, 0x1E]
+ movs r0, 0xF8
+ lsls r0, 5
+ adds r1, r0, 0
+ ands r1, r2
+ lsls r2, 24
+ asrs r2, 24
+ adds r0, r5, 0
+ bl sub_80A6EFC
+_080ACB40:
+ movs r1, 0x20
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080ACB5A
+ adds r1, r0, 0
+ movs r2, 0
+ ldrsb r2, [r4, r2]
+ adds r0, r5, 0
+ movs r3, 0
+ bl sub_80A7040
+ movs r0, 0
+ strh r0, [r4, 0x20]
+_080ACB5A:
+ adds r0, r5, 0
+ mov r1, sp
+ adds r2, r7, 0
+ bl sub_80A7664
+_080ACB64:
+ mov r0, r8
+ adds r0, 0x1
+ lsls r0, 16
+ asrs r0, 16
+ mov r8, r0
+ movs r0, 0xE2
+ lsls r0, 1
+ adds r4, r0
+ adds r6, r0
+ mov r1, r8
+ cmp r1, 0xF
+ ble _080ACAF2
+ add sp, 0x8
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACB8C: .4byte gUnknown_3001B88
+ thumb_func_end sub_80ACAD4
+
+ .align 2,0