diff options
Diffstat (limited to 'asm/code_80A26CC.s')
-rw-r--r-- | asm/code_80A26CC.s | 24958 |
1 files changed, 24958 insertions, 0 deletions
diff --git a/asm/code_80A26CC.s b/asm/code_80A26CC.s new file mode 100644 index 0000000..83be054 --- /dev/null +++ b/asm/code_80A26CC.s @@ -0,0 +1,24958 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80A26CC +sub_80A26CC: + lsls r0, 16 + movs r1, 0xDC + lsls r1, 14 + adds r0, r1 + asrs r0, 16 + bx lr + thumb_func_end sub_80A26CC + + thumb_func_start sub_80A26D8 +sub_80A26D8: + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 +_080A26E0: + lsls r0, r5, 16 + asrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80A2608 + adds r1, r0, 0 + ldrb r0, [r1, 0x11] + cmp r0, 0 + beq _080A26FC + ldrb r0, [r1, 0xC] + cmp r0, r6 + bne _080A26FC + adds r0, r4, 0 + b _080A2706 +_080A26FC: + adds r5, 0x1 + cmp r5, 0x52 + ble _080A26E0 + movs r0, 0x1 + negs r0, r0 +_080A2706: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80A26D8 + + thumb_func_start sub_80A270C +sub_80A270C: + push {lr} + lsls r0, 16 + ldr r1, _080A2724 + asrs r0, 15 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + bl sub_80A2608 + ldrb r0, [r0, 0xC] + pop {r1} + bx r1 + .align 2, 0 +_080A2724: .4byte gUnknown_8116F9A + thumb_func_end sub_80A270C + + thumb_func_start sub_80A2728 +sub_80A2728: + push {lr} + lsls r0, 16 + movs r1, 0xDC + lsls r1, 14 + adds r0, r1 + asrs r0, 16 + bl sub_80A2608 + ldrb r0, [r0, 0xC] + pop {r1} + bx r1 + thumb_func_end sub_80A2728 + + thumb_func_start sub_80A2740 +sub_80A2740: + push {lr} + lsls r0, 16 + asrs r0, 16 + bl sub_80A2608 + ldrb r0, [r0, 0xC] + pop {r1} + bx r1 + thumb_func_end sub_80A2740 + + thumb_func_start sub_80A2750 +sub_80A2750: + push {r4,lr} + lsls r0, 16 + asrs r1, r0, 16 + adds r2, r1, 0 + cmp r1, 0x50 + bne _080A2760 + movs r0, 0x3 + b _080A27C4 +_080A2760: + cmp r1, 0x51 + beq _080A27BE + cmp r1, 0x52 + beq _080A2780 + adds r0, r1, 0 + subs r0, 0x28 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xE + bls _080A27BE + adds r0, r1, 0 + subs r0, 0x37 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x18 + bhi _080A2784 +_080A2780: + movs r0, 0x4 + b _080A27C4 +_080A2784: + adds r0, r2, 0 + bl sub_80A2608 + adds r4, r0, 0 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080A27C2 + movs r0, 0x5 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + bne _080A27C2 + movs r1, 0xE + ldrsh r0, [r4, r1] + bl sub_80973F4 + lsls r0, 24 + cmp r0, 0 + beq _080A27C2 + movs r0, 0x1 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _080A27C2 +_080A27BE: + movs r0, 0x2 + b _080A27C4 +_080A27C2: + movs r0, 0x1 +_080A27C4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80A2750 + + thumb_func_start sub_80A27CC +sub_80A27CC: + push {r4,r5,lr} + lsls r0, 16 + asrs r4, r0, 16 + adds r5, r4, 0 + adds r0, r4, 0 + bl sub_80A2620 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080A281A + movs r0, 0x5 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + bne _080A281A + adds r0, r4, 0 + bl sub_8097384 + lsls r0, 24 + cmp r0, 0 + bne _080A2816 + movs r0, 0x1 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _080A281A + adds r0, r5, 0 + bl sub_80973F4 + lsls r0, 24 + cmp r0, 0 + beq _080A281A +_080A2816: + movs r0, 0x1 + b _080A281C +_080A281A: + movs r0, 0 +_080A281C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80A27CC + + thumb_func_start sub_80A2824 +sub_80A2824: + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0x5 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + bne _080A28AC + movs r0, 0x1 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _080A2880 + movs r5, 0 +_080A2844: + lsls r0, r5, 16 + asrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80A2620 + adds r1, r0, 0 + ldrb r0, [r1, 0x11] + cmp r0, 0 + beq _080A2874 + ldrb r0, [r1, 0xC] + cmp r0, r6 + bne _080A2874 + adds r0, r4, 0 + bl sub_8097384 + lsls r0, 24 + cmp r0, 0 + bne _080A287C + adds r0, r4, 0 + bl sub_80973F4 + lsls r0, 24 + cmp r0, 0 + bne _080A287C +_080A2874: + adds r5, 0x1 + cmp r5, 0x2D + ble _080A2844 + b _080A28AC +_080A287C: + movs r0, 0x1 + b _080A28AE +_080A2880: + movs r5, 0 +_080A2882: + lsls r0, r5, 16 + asrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80A2620 + adds r1, r0, 0 + ldrb r0, [r1, 0x11] + cmp r0, 0 + beq _080A28A6 + ldrb r0, [r1, 0xC] + cmp r0, r6 + bne _080A28A6 + adds r0, r4, 0 + bl sub_8097384 + lsls r0, 24 + cmp r0, 0 + bne _080A287C +_080A28A6: + adds r5, 0x1 + cmp r5, 0x2D + ble _080A2882 +_080A28AC: + movs r0, 0 +_080A28AE: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80A2824 + + thumb_func_start sub_80A28B4 +sub_80A28B4: + push {r4,lr} + lsls r0, 16 + asrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80A2620 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080A28E8 + adds r0, r4, 0 + bl sub_8097384 + lsls r0, 24 + cmp r0, 0 + bne _080A28E4 + adds r0, r4, 0 + bl sub_80973F4 + lsls r0, 24 + cmp r0, 0 + beq _080A28E8 +_080A28E4: + movs r0, 0x1 + b _080A28EA +_080A28E8: + movs r0, 0 +_080A28EA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80A28B4 + + thumb_func_start sub_80A28F0 +sub_80A28F0: + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 +_080A28F8: + lsls r0, r5, 16 + asrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80A2620 + adds r1, r0, 0 + ldrb r0, [r1, 0x11] + cmp r0, 0 + beq _080A292C + ldrb r0, [r1, 0xC] + cmp r0, r6 + bne _080A292C + adds r0, r4, 0 + bl sub_8097384 + lsls r0, 24 + cmp r0, 0 + bne _080A2928 + adds r0, r4, 0 + bl sub_80973F4 + lsls r0, 24 + cmp r0, 0 + beq _080A292C +_080A2928: + movs r0, 0x1 + b _080A2934 +_080A292C: + adds r5, 0x1 + cmp r5, 0x2D + ble _080A28F8 + movs r0, 0 +_080A2934: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80A28F0 + + thumb_func_start sub_80A293C +sub_80A293C: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x40 + mov r8, r0 + movs r7, 0 + movs r1, 0 + mov r0, sp + adds r0, 0x3E +_080A294E: + strb r1, [r0] + subs r0, 0x1 + cmp r0, sp + bge _080A294E + movs r5, 0 +_080A2958: + lsls r0, r5, 16 + asrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80A2620 + adds r6, r0, 0 + ldrb r0, [r6, 0x11] + cmp r0, 0 + beq _080A2980 + adds r0, r4, 0 + bl sub_8097384 + lsls r0, 24 + cmp r0, 0 + beq _080A2980 + ldrb r0, [r6, 0xC] + mov r2, sp + adds r1, r2, r0 + movs r0, 0x1 + strb r0, [r1] +_080A2980: + adds r5, 0x1 + cmp r5, 0x2D + ble _080A2958 + movs r5, 0 +_080A2988: + mov r1, sp + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, 0 + beq _080A299A + mov r2, r8 + adds r0, r2, r7 + strb r5, [r0] + adds r7, 0x1 +_080A299A: + adds r5, 0x1 + cmp r5, 0x3E + ble _080A2988 + adds r0, r7, 0 + add sp, 0x40 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A293C + + thumb_func_start sub_80A29B0 +sub_80A29B0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x48 + mov r8, r0 + movs r7, 0 + movs r0, 0x2B + add r0, sp + mov r9, r0 + add r1, sp, 0x2C + mov r10, r1 + mov r2, sp + adds r2, 0x2D + str r2, [sp, 0x40] + mov r0, sp + adds r0, 0x2E + str r0, [sp, 0x44] + movs r1, 0 + adds r0, 0x10 +_080A29DA: + strb r1, [r0] + subs r0, 0x1 + cmp r0, sp + bge _080A29DA + movs r0, 0x1 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _080A2A1E + movs r5, 0 +_080A29F0: + lsls r0, r5, 16 + asrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80A2620 + adds r6, r0, 0 + ldrb r0, [r6, 0x11] + cmp r0, 0 + beq _080A2A18 + adds r0, r4, 0 + bl sub_80973F4 + lsls r0, 24 + cmp r0, 0 + beq _080A2A18 + ldrb r0, [r6, 0xC] + mov r2, sp + adds r1, r2, r0 + movs r0, 0x1 + strb r0, [r1] +_080A2A18: + adds r5, 0x1 + cmp r5, 0x2D + ble _080A29F0 +_080A2A1E: + movs r0, 0 + mov r1, r9 + strb r0, [r1] + mov r2, r10 + strb r0, [r2] + ldr r1, [sp, 0x40] + strb r0, [r1] + ldr r2, [sp, 0x44] + strb r0, [r2] + movs r5, 0 +_080A2A32: + mov r1, sp + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, 0 + beq _080A2A44 + mov r2, r8 + adds r0, r2, r7 + strb r5, [r0] + adds r7, 0x1 +_080A2A44: + adds r5, 0x1 + cmp r5, 0x3E + ble _080A2A32 + adds r0, r7, 0 + add sp, 0x48 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A29B0 + + thumb_func_start sub_80A2A5C +sub_80A2A5C: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x40 + mov r8, r0 + movs r7, 0 + movs r1, 0 + mov r0, sp + adds r0, 0x3E +_080A2A6E: + strb r1, [r0] + subs r0, 0x1 + cmp r0, sp + bge _080A2A6E + movs r0, 0x1 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _080A2AC0 + movs r6, 0 +_080A2A84: + lsls r0, r6, 16 + asrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80A2620 + adds r5, r0, 0 + ldrb r0, [r5, 0x11] + cmp r0, 0 + beq _080A2AB8 + adds r0, r4, 0 + bl sub_8097384 + lsls r0, 24 + cmp r0, 0 + bne _080A2AAE + adds r0, r4, 0 + bl sub_80973F4 + lsls r0, 24 + cmp r0, 0 + beq _080A2AB8 +_080A2AAE: + ldrb r0, [r5, 0xC] + mov r2, sp + adds r1, r2, r0 + movs r0, 0x1 + strb r0, [r1] +_080A2AB8: + adds r6, 0x1 + cmp r6, 0x2D + ble _080A2A84 + b _080A2AF0 +_080A2AC0: + movs r6, 0 +_080A2AC2: + lsls r0, r6, 16 + asrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80A2620 + adds r5, r0, 0 + ldrb r0, [r5, 0x11] + cmp r0, 0 + beq _080A2AEA + adds r0, r4, 0 + bl sub_8097384 + lsls r0, 24 + cmp r0, 0 + beq _080A2AEA + ldrb r0, [r5, 0xC] + mov r2, sp + adds r1, r2, r0 + movs r0, 0x1 + strb r0, [r1] +_080A2AEA: + adds r6, 0x1 + cmp r6, 0x2D + ble _080A2AC2 +_080A2AF0: + movs r6, 0 +_080A2AF2: + mov r1, sp + adds r0, r1, r6 + ldrb r0, [r0] + cmp r0, 0 + beq _080A2B04 + mov r2, r8 + adds r0, r2, r7 + strb r6, [r0] + adds r7, 0x1 +_080A2B04: + adds r6, 0x1 + cmp r6, 0x3E + ble _080A2AF2 + adds r0, r7, 0 + add sp, 0x40 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A2A5C + + thumb_func_start sub_80A2B18 +sub_80A2B18: + lsls r0, 16 + ldr r1, _080A2B24 + asrs r0, 14 + adds r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_080A2B24: .4byte gUnknown_8117000 + thumb_func_end sub_80A2B18 + + thumb_func_start sub_80A2B28 +sub_80A2B28: + push {lr} + movs r0, 0 + movs r1, 0x11 + bl sub_8001658 + lsls r0, 16 + asrs r0, 16 + bl sub_80A2B18 + pop {r1} + bx r1 + thumb_func_end sub_80A2B28 + + thumb_func_start sub_80A2B40 +sub_80A2B40: + push {r4-r6,lr} + adds r5, r0, 0 + ldr r2, _080A2BFC + adds r0, r5, r2 + ldm r1!, {r2-r4} + stm r0!, {r2-r4} + ldm r1!, {r2-r4} + stm r0!, {r2-r4} + ldr r3, _080A2C00 + adds r0, r5, r3 + movs r4, 0 + ldrsh r1, [r0, r4] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + movs r1, 0x6 + bl MemoryAlloc + movs r2, 0xA9 + lsls r2, 3 + adds r1, r5, r2 + str r0, [r1] + movs r6, 0 + movs r3, 0xA7 + lsls r3, 3 + adds r0, r5, r3 + movs r4, 0 + ldrsh r0, [r0, r4] + cmp r6, r0 + bge _080A2BC0 +_080A2B7C: + lsls r4, r6, 2 + ldr r0, _080A2C04 + adds r2, r5, r0 + adds r2, r4 + ldr r1, _080A2C08 + adds r0, r5, r1 + movs r3, 0 + ldrsh r0, [r0, r3] + adds r1, r6, 0x2 + adds r0, r1 + lsls r0, 11 + ldr r1, _080A2C0C + adds r0, r1 + str r0, [r2] + ldr r1, _080A2C10 + adds r0, r5, r1 + movs r2, 0 + ldrsh r0, [r0, r2] + lsls r0, 7 + movs r1, 0x6 + bl MemoryAlloc + ldr r3, _080A2C14 + adds r1, r5, r3 + adds r1, r4 + str r0, [r1] + adds r6, 0x1 + movs r4, 0xA7 + lsls r4, 3 + adds r0, r5, r4 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r6, r0 + blt _080A2B7C +_080A2BC0: + cmp r6, 0x1 + bgt _080A2BD8 + movs r1, 0 + lsls r0, r6, 2 + ldr r2, _080A2C14 + adds r0, r2 + adds r0, r5 +_080A2BCE: + str r1, [r0, 0x8] + stm r0!, {r1} + adds r6, 0x1 + cmp r6, 0x1 + ble _080A2BCE +_080A2BD8: + movs r3, 0xA8 + lsls r3, 3 + adds r0, r5, r3 + ldr r1, [r0] + cmp r1, 0 + beq _080A2C20 + ldr r4, _080A2C18 + adds r0, r5, r4 + movs r1, 0 + ldrsh r0, [r0, r1] + lsls r0, 8 + movs r1, 0x6 + bl MemoryAlloc + ldr r2, _080A2C1C + adds r1, r5, r2 + str r0, [r1] + b _080A2C26 + .align 2, 0 +_080A2BFC: .4byte 0x0000052c +_080A2C00: .4byte 0x00000534 +_080A2C04: .4byte 0x00000554 +_080A2C08: .4byte 0x00000536 +_080A2C0C: .4byte gUnknown_202B038 +_080A2C10: .4byte 0x0000053c +_080A2C14: .4byte 0x0000054c +_080A2C18: .4byte 0x0000053a +_080A2C1C: .4byte 0x00000544 +_080A2C20: + ldr r3, _080A2CF0 + adds r0, r5, r3 + str r1, [r0] +_080A2C26: + movs r4, 0x86 + lsls r4, 3 + adds r0, r5, r4 + movs r1, 0 + str r1, [r0] + ldr r2, _080A2CF4 + adds r0, r5, r2 + str r1, [r0] + movs r3, 0x87 + lsls r3, 3 + adds r0, r5, r3 + str r1, [r0] + adds r4, 0xC + adds r0, r5, r4 + str r1, [r0] + adds r2, 0xC + adds r0, r5, r2 + str r1, [r0] + adds r3, 0xF2 + adds r0, r5, r3 + strb r1, [r0] + adds r4, 0x8 + adds r2, r5, r4 + ldr r0, _080A2CF8 + strh r0, [r2] + movs r2, 0x8D + lsls r2, 3 + adds r0, r5, r2 + str r1, [r0] + subs r3, 0xE2 + adds r0, r5, r3 + strb r1, [r0] + adds r4, 0x5 + adds r0, r5, r4 + strb r1, [r0] + subs r2, 0x1E + adds r0, r5, r2 + strb r1, [r0] + adds r3, 0x3 + adds r0, r5, r3 + strb r1, [r0] + adds r4, 0x3 + adds r0, r5, r4 + strb r1, [r0] + adds r2, 0x3 + adds r0, r5, r2 + strb r1, [r0] + adds r2, r5, 0 + adds r3, 0x21 + adds r0, r5, r3 + str r1, [r0] + adds r4, 0x24 + adds r0, r5, r4 + strb r1, [r0] + adds r3, 0x5 + adds r0, r5, r3 + strb r1, [r0] + movs r0, 0 + movs r1, 0xD +_080A2C9C: + strh r0, [r2] + strh r0, [r2, 0x2] + str r0, [r2, 0x8] + str r0, [r2, 0x4] + subs r1, 0x1 + adds r2, 0x10 + cmp r1, 0 + bge _080A2C9C + movs r1, 0 + movs r4, 0xF8 + lsls r4, 2 + adds r0, r5, r4 + movs r2, 0x1 +_080A2CB6: + strb r1, [r0] + strb r1, [r0, 0x1] + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] + str r1, [r0, 0x8] + str r1, [r0, 0xC] + str r1, [r0, 0x14] + str r1, [r0, 0x10] + str r1, [r0, 0x1C] + str r1, [r0, 0x18] + str r1, [r0, 0x20] + str r1, [r0, 0x24] + adds r0, 0x28 + subs r2, 0x1 + cmp r2, 0 + bge _080A2CB6 + movs r4, 0 +_080A2CD8: + adds r0, r5, 0 + adds r1, r4, 0 + ldr r2, _080A2CFC + bl sub_80A456C + adds r4, 0x1 + cmp r4, 0x1 + ble _080A2CD8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2CF0: .4byte 0x00000544 +_080A2CF4: .4byte 0x00000434 +_080A2CF8: .4byte 0x0000ffff +_080A2CFC: .4byte gUnknown_81172B8 + thumb_func_end sub_80A2B40 + + thumb_func_start sub_80A2D00 +sub_80A2D00: + push {r4-r7,lr} + adds r6, r0, 0 + bl sub_80A2DD4 + ldr r0, _080A2D5C + adds r4, r6, r0 + ldr r0, [r4] + cmp r0, 0 + beq _080A2D1A + bl MemoryFree + movs r0, 0 + str r0, [r4] +_080A2D1A: + movs r1, 0xA9 + lsls r1, 3 + adds r4, r6, r1 + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] + movs r5, 0 + movs r7, 0 +_080A2D2E: + lsls r2, r5, 2 + ldr r1, _080A2D60 + adds r0, r6, r1 + adds r1, r0, r2 + ldr r0, [r1] + cmp r0, 0 + beq _080A2D3E + str r7, [r1] +_080A2D3E: + ldr r1, _080A2D64 + adds r0, r6, r1 + adds r4, r0, r2 + ldr r0, [r4] + cmp r0, 0 + beq _080A2D50 + bl MemoryFree + str r7, [r4] +_080A2D50: + adds r5, 0x1 + cmp r5, 0x1 + ble _080A2D2E + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A2D5C: .4byte 0x00000544 +_080A2D60: .4byte 0x00000554 +_080A2D64: .4byte 0x0000054c + thumb_func_end sub_80A2D00 + + thumb_func_start sub_80A2D68 +sub_80A2D68: + push {r4,lr} + ldr r1, _080A2D84 + adds r4, r0, r1 + ldr r0, [r4] + cmp r0, 0 + beq _080A2D7C + bl MemoryFree + movs r0, 0 + str r0, [r4] +_080A2D7C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2D84: .4byte 0x00000544 + thumb_func_end sub_80A2D68 + + thumb_func_start sub_80A2D88 +sub_80A2D88: + push {r4-r7,lr} + adds r6, r0, 0 + movs r0, 0xA8 + lsls r0, 3 + adds r7, r6, r0 + ldr r0, [r7] + cmp r0, 0 + beq _080A2DC6 + movs r1, 0x89 + lsls r1, 3 + adds r5, r6, r1 + ldr r2, _080A2DCC + adds r4, r6, r2 + movs r1, 0 + ldrsh r0, [r4, r1] + lsls r0, 8 + movs r1, 0x6 + bl MemoryAlloc + ldr r2, _080A2DD0 + adds r1, r6, r2 + str r0, [r1] + subs r2, 0xDC + adds r1, r6, r2 + ldr r1, [r1] + movs r2, 0 + ldrsh r3, [r4, r2] + ldr r4, [r7] + adds r2, r5, 0 + bl _call_via_r4 +_080A2DC6: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A2DCC: .4byte 0x0000053a +_080A2DD0: .4byte 0x00000544 + thumb_func_end sub_80A2D88 + + thumb_func_start sub_80A2DD4 +sub_80A2DD4: + push {r4-r6,lr} + adds r6, r0, 0 + movs r0, 0xFA + lsls r0, 2 + adds r4, r6, r0 + movs r5, 0x1 +_080A2DE0: + ldr r0, [r4] + cmp r0, 0 + beq _080A2DEE + bl CloseFile + movs r0, 0 + str r0, [r4] +_080A2DEE: + adds r4, 0x28 + subs r5, 0x1 + cmp r5, 0 + bge _080A2DE0 + ldr r0, _080A2E5C + adds r4, r6, r0 + ldr r0, [r4] + cmp r0, 0 + beq _080A2E08 + bl CloseFile + movs r0, 0 + str r0, [r4] +_080A2E08: + movs r0, 0x88 + lsls r0, 3 + adds r4, r6, r0 + ldr r0, [r4] + cmp r0, 0 + beq _080A2E1C + bl CloseFile + movs r0, 0 + str r0, [r4] +_080A2E1C: + movs r0, 0x86 + lsls r0, 3 + adds r4, r6, r0 + ldr r0, [r4] + cmp r0, 0 + beq _080A2E30 + bl CloseFile + movs r0, 0 + str r0, [r4] +_080A2E30: + ldr r0, _080A2E60 + adds r4, r6, r0 + ldr r0, [r4] + cmp r0, 0 + beq _080A2E42 + bl CloseFile + movs r0, 0 + str r0, [r4] +_080A2E42: + movs r0, 0x87 + lsls r0, 3 + adds r4, r6, r0 + ldr r0, [r4] + cmp r0, 0 + beq _080A2E56 + bl CloseFile + movs r0, 0 + str r0, [r4] +_080A2E56: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2E5C: .4byte 0x0000043c +_080A2E60: .4byte 0x00000434 + thumb_func_end sub_80A2DD4 + + thumb_func_start sub_80A2E64 +sub_80A2E64: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r7, r0, 0 + bl sub_80A2DD4 + ldr r0, _080A2FA4 + adds r1, r7, r0 + ldr r0, _080A2FA8 + strh r0, [r1] + movs r1, 0xA5 + lsls r1, 3 + adds r0, r7, r1 + movs r1, 0 + movs r2, 0 + strh r2, [r0] + movs r3, 0x89 + lsls r3, 3 + adds r0, r7, r3 + strb r1, [r0] + ldr r4, _080A2FAC + adds r0, r7, r4 + strb r1, [r0] + adds r3, 0x2 + adds r0, r7, r3 + strb r1, [r0] + adds r4, 0x2 + adds r0, r7, r4 + strb r1, [r0] + adds r3, 0x2 + adds r0, r7, r3 + strb r1, [r0] + adds r4, 0x2 + adds r0, r7, r4 + strb r1, [r0] + adds r3, r7, 0 + adds r4, 0x1F + adds r0, r7, r4 + str r2, [r0] + movs r2, 0x8E + lsls r2, 3 + adds r0, r7, r2 + strb r1, [r0] + adds r4, 0x5 + adds r0, r7, r4 + strb r1, [r0] + movs r0, 0 + movs r1, 0xD +_080A2ECA: + strh r0, [r3] + strh r0, [r3, 0x2] + str r0, [r3, 0x8] + str r0, [r3, 0x4] + subs r1, 0x1 + adds r3, 0x10 + cmp r1, 0 + bge _080A2ECA + movs r1, 0 + movs r2, 0xF8 + lsls r2, 2 + adds r0, r7, r2 + movs r2, 0x1 +_080A2EE4: + strb r1, [r0] + strb r1, [r0, 0x1] + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] + str r1, [r0, 0x8] + str r1, [r0, 0xC] + str r1, [r0, 0x14] + str r1, [r0, 0x10] + str r1, [r0, 0x1C] + str r1, [r0, 0x18] + str r1, [r0, 0x20] + str r1, [r0, 0x24] + adds r0, 0x28 + subs r2, 0x1 + cmp r2, 0 + bge _080A2EE4 + ldr r3, _080A2FB0 + adds r0, r7, r3 + movs r4, 0 + ldrsh r0, [r0, r4] + lsls r0, 20 + lsrs r6, r0, 16 + movs r5, 0 + ldr r1, _080A2FB4 + adds r0, r7, r1 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r5, r0 + bge _080A2F78 + mov r10, r5 + add r4, sp, 0x4 + movs r3, 0xFF + mov r9, r3 +_080A2F26: + mov r0, r10 + str r0, [sp] + ldrb r0, [r4] + mov r1, r9 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r4, 0x1] + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x2] + orrs r0, r1 + strb r0, [r4, 0x2] + mov r2, r10 + strb r2, [r4, 0x3] + adds r0, r6, 0 + adds r1, r0, 0x1 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r1, [sp] + bl sub_8003810 + adds r5, 0x1 + mov r8, r5 + movs r5, 0xE +_080A2F56: + adds r0, r6, 0 + adds r1, r0, 0x1 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r1, [sp, 0x4] + bl sub_8003810 + subs r5, 0x1 + cmp r5, 0 + bge _080A2F56 + mov r5, r8 + ldr r3, _080A2FB4 + adds r0, r7, r3 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r5, r0 + blt _080A2F26 +_080A2F78: + adds r0, r7, 0 + movs r1, 0 + bl sub_80A3BB0 + movs r2, 0x91 + lsls r2, 3 + adds r0, r7, r2 + bl sub_80A3EB0 + ldr r3, _080A2FB8 + adds r1, r7, r3 + movs r0, 0x1 + strb r0, [r1] + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A2FA4: .4byte 0x00000444 +_080A2FA8: .4byte 0x0000ffff +_080A2FAC: .4byte 0x00000449 +_080A2FB0: .4byte 0x0000052c +_080A2FB4: .4byte 0x0000052e +_080A2FB8: .4byte 0x0000052a + thumb_func_end sub_80A2E64 + + thumb_func_start sub_80A2FBC +sub_80A2FBC: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + mov r9, r0 + lsls r1, 16 + asrs r4, r1, 16 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + bne _080A2FDE + mov r0, r9 + bl sub_80A2E64 + b _080A3428 +_080A2FDE: + mov r0, r9 + bl sub_80A2DD4 + ldr r0, _080A3284 + add r0, r9 + strh r4, [r0] + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + ldr r1, _080A3288 + adds r0, r1 + str r0, [sp, 0xC] + ldr r0, [r0] + ldr r4, _080A328C + adds r1, r4, 0 + bl OpenFileAndGetFileDataPtr + movs r6, 0x86 + lsls r6, 3 + add r6, r9 + str r0, [r6] + ldr r1, [sp, 0xC] + ldr r0, [r1, 0x4] + adds r1, r4, 0 + bl OpenFileAndGetFileDataPtr + ldr r5, _080A3290 + add r5, r9 + str r0, [r5] + ldr r2, [sp, 0xC] + ldr r0, [r2, 0x8] + adds r1, r4, 0 + bl OpenFileAndGetFileDataPtr + movs r1, 0x87 + lsls r1, 3 + add r1, r9 + str r0, [r1] + ldr r1, [r6] + ldr r1, [r1, 0x4] + str r1, [sp, 0x18] + ldr r1, [r5] + ldr r1, [r1, 0x4] + mov r8, r1 + ldr r6, [r0, 0x4] + ldr r3, _080A3294 + add r3, r9 + str r3, [sp, 0x10] + ldr r4, _080A3298 + add r4, r9 + str r4, [sp, 0x14] + movs r5, 0x89 + lsls r5, 3 + add r5, r9 + mov r10, r5 + ldr r7, [sp, 0x18] + ldrb r0, [r7] + strh r0, [r3] + adds r0, r7, 0 + adds r0, 0x2 + str r0, [sp, 0x18] + ldrb r0, [r0] + strh r0, [r3, 0x2] + ldr r1, [sp, 0x18] + adds r1, 0x2 + str r1, [sp, 0x18] + mov r2, r8 + ldrh r0, [r2] + strh r0, [r4] + movs r3, 0x2 + add r8, r3 + mov r4, r8 + ldrh r0, [r4] + ldr r5, [sp, 0x14] + strh r0, [r5, 0x2] + add r8, r3 + mov r7, r8 + ldrh r0, [r7] + strh r0, [r5, 0x4] + add r8, r3 + add r3, sp, 0x8 + ldr r0, _080A329C + add r0, r9 + str r0, [sp, 0x1C] + adds r1, r0, 0 + movs r2, 0x3 +_080A308A: + mov r4, r8 + ldrh r0, [r4] + strh r0, [r1] + movs r5, 0x2 + add r8, r5 + adds r1, 0x2 + subs r2, 0x1 + cmp r2, 0 + bge _080A308A + mov r7, r8 + ldrh r0, [r7] + movs r2, 0 + movs r1, 0 + ldr r4, [sp, 0x14] + strh r0, [r4, 0xE] + add r8, r5 + ldrb r0, [r6] + mov r5, r10 + strb r0, [r5] + adds r6, 0x1 + ldrb r0, [r6] + strb r0, [r5, 0x1] + adds r6, 0x1 + ldrb r0, [r6] + strb r0, [r5, 0x2] + adds r6, 0x1 + ldrb r0, [r6] + strb r0, [r5, 0x3] + adds r6, 0x1 + ldrb r0, [r6] + strb r0, [r5, 0x4] + adds r6, 0x1 + ldrb r0, [r6] + strb r0, [r5, 0x5] + adds r6, 0x1 + ldrb r0, [r6] + strh r0, [r5, 0x6] + adds r6, 0x2 + ldrb r0, [r6] + strh r0, [r5, 0x8] + adds r6, 0x2 + ldrb r0, [r6] + strh r0, [r5, 0xA] + adds r6, 0x2 + ldr r7, [sp, 0x18] + ldr r0, _080A32A0 + add r0, r9 + movs r4, 0 + ldrsh r0, [r0, r4] + lsls r0, 20 + lsrs r5, r0, 16 + str r1, [sp, 0x4] + movs r0, 0xFF + strb r0, [r3] + movs r0, 0x1 + negs r0, r0 + strb r0, [r3, 0x1] + strb r0, [r3, 0x2] + strb r2, [r3, 0x3] + movs r4, 0 + ldr r1, [sp, 0x10] + movs r2, 0 + ldrsh r0, [r1, r2] + ldr r3, [sp, 0xC] + adds r3, 0xC + str r3, [sp, 0x20] + cmp r4, r0 + bge _080A3158 + ldr r0, _080A32A4 + add r0, r9 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r4, r0 + bge _080A3198 +_080A311E: + adds r0, r5, 0 + adds r1, r0, 0x1 + lsls r1, 16 + lsrs r5, r1, 16 + ldr r1, [sp, 0x4] + bl sub_8003810 + adds r0, r5, 0 + adds r1, r7, 0 + movs r2, 0xF + bl sub_809971C + adds r0, r5, 0 + adds r0, 0xF + lsls r0, 16 + lsrs r5, r0, 16 + adds r7, 0x3C + adds r4, 0x1 + ldr r2, [sp, 0x10] + movs r3, 0 + ldrsh r0, [r2, r3] + cmp r4, r0 + bge _080A3158 + ldr r0, _080A32A4 + add r0, r9 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r4, r0 + blt _080A311E +_080A3158: + ldr r0, _080A32A4 + add r0, r9 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r4, r0 + bge _080A3198 +_080A3164: + adds r0, r5, 0 + adds r1, r0, 0x1 + lsls r1, 16 + lsrs r5, r1, 16 + ldr r1, [sp, 0x4] + bl sub_8003810 + adds r7, r4, 0x1 + movs r4, 0xE +_080A3176: + adds r0, r5, 0 + adds r1, r0, 0x1 + lsls r1, 16 + lsrs r5, r1, 16 + ldr r1, [sp, 0x8] + bl sub_8003810 + subs r4, 0x1 + cmp r4, 0 + bge _080A3176 + adds r4, r7, 0 + ldr r0, _080A32A4 + add r0, r9 + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r4, r0 + blt _080A3164 +_080A3198: + movs r0, 0xA6 + lsls r0, 3 + add r0, r9 + movs r4, 0 + ldrsh r0, [r0, r4] + lsls r0, 5 + ldr r5, _080A32A8 + adds r0, r5 + ldr r4, _080A32A0 + add r4, r9 + ldr r5, _080A3298 + add r5, r9 + mov r1, r8 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_80A37C4 + movs r0, 0xA9 + lsls r0, 3 + add r0, r9 + ldr r0, [r0] + movs r1, 0xA5 + lsls r1, 3 + add r1, r9 + ldr r7, [sp, 0x14] + movs r3, 0x4 + ldrsh r2, [r7, r3] + subs r2, 0x1 + lsls r2, 5 + add r2, r8 + str r5, [sp] + adds r3, r4, 0 + bl _UncompressCell + ldr r0, _080A32AC + add r0, r9 + movs r3, 0x89 + lsls r3, 3 + add r3, r9 + adds r1, r6, 0 + adds r2, r4, 0 + bl sub_80A3908 + adds r6, r0, 0 + movs r0, 0x8D + lsls r0, 3 + add r0, r9 + str r6, [r0] + ldr r0, _080A32B0 + add r0, r9 + ldr r2, [r0] + cmp r2, 0 + beq _080A321C + movs r1, 0xA8 + lsls r1, 3 + add r1, r9 + ldr r0, _080A32B4 + add r0, r9 + movs r4, 0 + ldrsh r3, [r0, r4] + ldr r4, [r1] + adds r0, r2, 0 + adds r1, r6, 0 + mov r2, r10 + bl _call_via_r4 +_080A321C: + mov r2, r9 + movs r4, 0 + ldr r5, [sp, 0x10] + movs r6, 0x2 + ldrsh r0, [r5, r6] + cmp r0, 0 + beq _080A32E4 + movs r7, 0 + ldrsh r1, [r5, r7] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + ldr r5, [sp, 0x18] + adds r3, r5, r0 + lsls r1, 2 + adds r6, r3, r1 + ldr r0, _080A32B8 + add r0, r9 + str r3, [r0] + movs r0, 0x8E + lsls r0, 3 + add r0, r9 + movs r1, 0x1 + strb r1, [r0] + ldr r0, _080A32BC + add r0, r9 + strb r1, [r0] + ldr r7, [sp, 0x10] + movs r1, 0 + ldrsh r0, [r7, r1] + cmp r4, r0 + bge _080A32F8 + ldr r1, _080A32A4 + add r1, r9 + movs r5, 0 + ldrsh r0, [r1, r5] + cmp r4, r0 + bge _080A32F8 + movs r5, 0 + mov r8, r1 +_080A326C: + movs r7, 0x2 + ldrsh r0, [r3, r7] + cmp r0, 0 + ble _080A32C0 + str r6, [r2, 0x4] + movs r0, 0x2 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + adds r6, r0 + b _080A32C2 + .align 2, 0 +_080A3284: .4byte 0x00000444 +_080A3288: .4byte gUnknown_81188F0 +_080A328C: .4byte gUnknown_9890000 +_080A3290: .4byte 0x00000434 +_080A3294: .4byte 0x00000464 +_080A3298: .4byte 0x00000454 +_080A329C: .4byte 0x0000045a +_080A32A0: .4byte 0x0000052c +_080A32A4: .4byte 0x0000052e +_080A32A8: .4byte 0x06008000 +_080A32AC: .4byte 0x0000054c +_080A32B0: .4byte 0x00000544 +_080A32B4: .4byte 0x0000053a +_080A32B8: .4byte 0x0000046c +_080A32BC: .4byte 0x00000471 +_080A32C0: + str r5, [r2, 0x4] +_080A32C2: + strh r5, [r2] + strh r5, [r2, 0x2] + str r5, [r2, 0x8] + adds r4, 0x1 + adds r2, 0x10 + adds r3, 0x4 + ldr r1, [sp, 0x10] + movs r7, 0 + ldrsh r0, [r1, r7] + cmp r4, r0 + bge _080A32F8 + mov r1, r8 + movs r7, 0 + ldrsh r0, [r1, r7] + cmp r4, r0 + blt _080A326C + b _080A32F8 +_080A32E4: + ldr r0, _080A3384 + add r0, r9 + str r4, [r0] + movs r0, 0x8E + lsls r0, 3 + add r0, r9 + strb r4, [r0] + ldr r0, _080A3388 + add r0, r9 + strb r4, [r0] +_080A32F8: + cmp r4, 0xD + bgt _080A330E + movs r0, 0 +_080A32FE: + strh r0, [r2] + strh r0, [r2, 0x2] + str r0, [r2, 0x8] + str r0, [r2, 0x4] + adds r4, 0x1 + adds r2, 0x10 + cmp r4, 0xD + ble _080A32FE +_080A330E: + movs r0, 0xA6 + lsls r0, 3 + add r0, r9 + movs r1, 0 + ldrsh r0, [r0, r1] + ldr r2, [sp, 0x14] + movs r3, 0x4 + ldrsh r1, [r2, r3] + adds r0, r1 + lsls r0, 5 + ldr r4, _080A338C + adds r5, r0, r4 + movs r7, 0 + movs r6, 0 + mov r8, r6 + movs r4, 0xF8 + lsls r4, 2 + add r4, r9 + ldr r0, [sp, 0x1C] + str r0, [sp, 0x28] + ldr r3, [sp, 0x20] +_080A3338: + ldr r0, [r3] + cmp r0, 0 + beq _080A3394 + ldr r1, _080A3390 + str r3, [sp, 0x24] + bl OpenFileAndGetFileDataPtr + str r0, [r4, 0x8] + movs r1, 0x1 + strb r1, [r4] + strb r1, [r4, 0x1] + ldr r2, [r0, 0x4] + str r2, [r4, 0xC] + adds r1, r2, 0x4 + movs r0, 0x2 + ldrsh r6, [r2, r0] + lsls r6, 2 + adds r0, r1, r6 + str r1, [r4, 0x14] + str r1, [r4, 0x10] + str r0, [r4, 0x1C] + str r0, [r4, 0x18] + mov r1, r8 + strh r1, [r4, 0x2] + ldr r0, [r2, 0x4] + strh r0, [r4, 0x4] + str r5, [r4, 0x20] + ldr r2, [sp, 0x28] + movs r6, 0 + ldrsh r0, [r2, r6] + lsls r0, 5 + str r0, [r4, 0x24] + movs r1, 0 + ldrsh r0, [r2, r1] + lsls r0, 5 + adds r5, r0 + ldr r3, [sp, 0x24] + b _080A33AC + .align 2, 0 +_080A3384: .4byte 0x0000046c +_080A3388: .4byte 0x00000471 +_080A338C: .4byte 0x06008000 +_080A3390: .4byte gUnknown_9890000 +_080A3394: + strb r0, [r4] + strb r0, [r4, 0x1] + strh r0, [r4, 0x4] + strh r0, [r4, 0x2] + str r0, [r4, 0x8] + str r0, [r4, 0xC] + str r0, [r4, 0x14] + str r0, [r4, 0x10] + str r0, [r4, 0x1C] + str r0, [r4, 0x18] + str r0, [r4, 0x20] + str r0, [r4, 0x24] +_080A33AC: + adds r4, 0x28 + ldr r2, [sp, 0x28] + adds r2, 0x2 + str r2, [sp, 0x28] + adds r3, 0x4 + adds r7, 0x1 + cmp r7, 0x1 + ble _080A3338 + cmp r7, 0x3 + bgt _080A340E +_080A33C0: + lsls r0, r7, 2 + ldr r3, [sp, 0x20] + adds r0, r3, r0 + ldr r0, [r0] + adds r4, r7, 0x1 + cmp r0, 0 + beq _080A3408 + ldr r1, _080A3438 + bl OpenFileAndGetFileDataPtr + adds r3, r0, 0 + ldr r0, [r3, 0x4] + adds r1, r0, 0x4 + movs r6, 0x2 + ldrsh r0, [r0, r6] + lsls r0, 2 + adds r1, r0 + lsls r0, r7, 1 + ldr r7, [sp, 0x1C] + adds r0, r7, r0 + movs r2, 0 + ldrsh r0, [r0, r2] + lsls r0, 4 + cmp r0, 0 + ble _080A3402 + adds r2, r0, 0 +_080A33F4: + ldrh r0, [r1] + strh r0, [r5] + adds r1, 0x2 + adds r5, 0x2 + subs r2, 0x1 + cmp r2, 0 + bne _080A33F4 +_080A3402: + adds r0, r3, 0 + bl CloseFile +_080A3408: + adds r7, r4, 0 + cmp r7, 0x3 + ble _080A33C0 +_080A340E: + mov r0, r9 + movs r1, 0 + bl sub_80A3BB0 + movs r0, 0x91 + lsls r0, 3 + add r0, r9 + bl sub_80A3EB0 + ldr r1, _080A343C + add r1, r9 + movs r0, 0x1 + strb r0, [r1] +_080A3428: + 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 +_080A3438: .4byte gUnknown_9890000 +_080A343C: .4byte 0x0000052a + thumb_func_end sub_80A2FBC + + thumb_func_start sub_80A3440 +sub_80A3440: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4C + mov r9, r0 + str r2, [sp, 0x34] + str r3, [sp, 0x38] + lsls r1, 16 + asrs r5, r1, 16 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + beq _080A3464 + ldrb r0, [r2] + cmp r0, 0x63 + bne _080A346C +_080A3464: + mov r0, r9 + bl sub_80A2E64 + b _080A376C +_080A346C: + mov r0, r9 + adds r1, r5, 0 + bl sub_80A2FBC + mov r0, r9 + bl sub_80A2DD4 + ldr r0, _080A377C + add r0, r9 + strh r5, [r0] + lsls r4, r5, 3 + subs r4, r5 + lsls r4, 2 + ldr r0, _080A3780 + adds r4, r0 + ldr r0, [r4] + ldr r5, _080A3784 + adds r1, r5, 0 + bl OpenFileAndGetFileDataPtr + movs r1, 0x86 + lsls r1, 3 + add r1, r9 + mov r8, r1 + str r0, [r1] + ldr r0, [r4, 0x4] + adds r1, r5, 0 + bl OpenFileAndGetFileDataPtr + ldr r6, _080A3788 + add r6, r9 + str r0, [r6] + ldr r0, [r4, 0x8] + adds r1, r5, 0 + bl OpenFileAndGetFileDataPtr + movs r1, 0x87 + lsls r1, 3 + add r1, r9 + str r0, [r1] + mov r2, r8 + ldr r1, [r2] + ldr r2, [r1, 0x4] + ldr r1, [r6] + ldr r3, [r1, 0x4] + ldr r7, [r0, 0x4] + ldr r1, _080A378C + add r1, r9 + ldr r4, _080A3790 + add r4, r9 + str r4, [sp, 0x3C] + movs r0, 0x89 + lsls r0, 3 + add r0, r9 + mov r10, r0 + ldrb r0, [r2] + strh r0, [r1] + ldrb r0, [r2, 0x2] + strh r0, [r1, 0x2] + ldrh r0, [r3] + strh r0, [r4] + adds r3, 0x2 + ldrh r0, [r3] + strh r0, [r4, 0x2] + adds r3, 0x2 + ldrh r0, [r3] + strh r0, [r4, 0x4] + adds r3, 0x2 + add r5, sp, 0x2C + ldr r1, _080A3794 + add r1, r9 + str r1, [sp, 0x48] + movs r2, 0x3 +_080A34FE: + ldrh r0, [r3] + strh r0, [r1] + adds r3, 0x2 + adds r1, 0x2 + subs r2, 0x1 + cmp r2, 0 + bge _080A34FE + ldrh r0, [r3] + movs r2, 0 + mov r8, r2 + ldr r4, [sp, 0x3C] + strh r0, [r4, 0xE] + ldrb r0, [r7] + mov r1, r10 + strb r0, [r1] + adds r7, 0x1 + ldrb r0, [r7] + strb r0, [r1, 0x1] + adds r7, 0x1 + ldrb r0, [r7] + strb r0, [r1, 0x2] + adds r7, 0x1 + ldrb r0, [r7] + strb r0, [r1, 0x3] + adds r7, 0x1 + ldrb r0, [r7] + strb r0, [r1, 0x4] + adds r7, 0x1 + ldrb r0, [r7] + strb r0, [r1, 0x5] + adds r7, 0x1 + ldrb r0, [r7] + strh r0, [r1, 0x6] + adds r7, 0x2 + ldrb r0, [r7] + strh r0, [r1, 0x8] + adds r7, 0x2 + ldrb r0, [r7] + strh r0, [r1, 0xA] + adds r7, 0x2 + ldr r4, _080A3798 + add r4, r9 + ldr r0, [r4] + str r0, [sp, 0x2C] + str r2, [r5, 0x4] + ldr r2, _080A379C + add r2, r9 + movs r3, 0x89 + lsls r3, 3 + add r3, r9 + adds r0, r5, 0 + adds r1, r7, 0 + bl sub_80A3908 + adds r7, r0, 0 + movs r0, 0x8D + lsls r0, 3 + add r0, r9 + str r7, [r0] + ldr r5, _080A37A0 + add r5, r9 + movs r6, 0x88 + lsls r6, 3 + add r6, r9 + ldr r2, _080A37A4 + movs r0, 0xA9 + lsls r0, 3 + add r0, r9 + ldr r3, [r0] + ldr r0, _080A37A8 + add r0, r9 + ldr r0, [r0] + str r0, [sp] + ldr r0, [sp, 0x34] + str r0, [sp, 0x4] + ldr r1, [sp, 0x38] + str r1, [sp, 0x8] + movs r0, 0x40 + str r0, [sp, 0xC] + mov r1, r10 + ldrb r0, [r1, 0x5] + str r0, [sp, 0x10] + ldr r0, [r4] + str r0, [sp, 0x14] + mov r0, r8 + str r0, [sp, 0x18] + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_80ADD9C + ldr r0, [r5] + movs r1, 0 + bl GetFileDataPtr + ldr r0, [r6] + movs r1, 0 + bl GetFileDataPtr + movs r2, 0xA8 + lsls r2, 3 + add r2, r9 + ldr r0, [r4] + ldr r1, _080A37AC + add r1, r9 + movs r4, 0 + ldrsh r3, [r1, r4] + ldr r4, [r2] + adds r1, r7, 0 + mov r2, r10 + bl _call_via_r4 + movs r0, 0x80 + lsls r0, 2 + ldr r1, [sp, 0x3C] + strh r0, [r1, 0x4] + ldr r1, [sp, 0x48] + movs r2, 0 + adds r0, r1, 0x6 +_080A35EA: + strh r2, [r0] + subs r0, 0x2 + cmp r0, r1 + bge _080A35EA + movs r2, 0 + movs r0, 0xFA + ldr r4, [sp, 0x3C] + strh r0, [r4, 0xE] + ldr r1, _080A378C + add r1, r9 + movs r0, 0xC + strh r0, [r1] + ldr r0, _080A37B0 + add r0, r9 + strh r2, [r0] + ldr r0, _080A37A0 + add r0, r9 + ldr r0, [r0] + cmp r0, 0 + beq _080A36E6 + ldr r4, [r0, 0x4] + movs r7, 0 + str r7, [sp, 0x1C] + add r1, sp, 0x20 + movs r0, 0xFF + strb r0, [r1] + movs r0, 0x1 + negs r0, r0 + strb r0, [r1, 0x1] + strb r0, [r1, 0x2] + movs r0, 0 + strb r0, [r1, 0x3] + movs r5, 0 + ldr r0, _080A37B4 + add r0, r9 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r5, r0 + bge _080A36E6 + mov r2, sp + adds r2, 0x28 + str r2, [sp, 0x40] + mov r0, sp + adds r0, 0x29 + str r0, [sp, 0x44] + movs r1, 0x2A + add r1, sp + mov r10, r1 + movs r2, 0x2B + add r2, sp + mov r8, r2 +_080A3650: + adds r0, r7, 0 + adds r1, r0, 0x1 + lsls r1, 16 + lsrs r7, r1, 16 + ldr r1, [sp, 0x1C] + bl sub_8003810 + adds r4, 0x4 + adds r6, r5, 0x1 + movs r5, 0xE +_080A3664: + ldrb r0, [r4] + ldr r1, [sp, 0x40] + strb r0, [r1] + ldrb r0, [r4, 0x1] + ldr r2, [sp, 0x44] + strb r0, [r2] + ldrb r0, [r4, 0x2] + mov r1, r10 + strb r0, [r1] + ldrb r0, [r4, 0x3] + mov r2, r8 + strb r0, [r2] + ldr r1, [sp, 0x28] + str r1, [sp, 0x24] + adds r0, r7, 0 + adds r2, r0, 0x1 + lsls r2, 16 + lsrs r7, r2, 16 + bl sub_8003810 + adds r4, 0x4 + subs r5, 0x1 + cmp r5, 0 + bge _080A3664 + adds r5, r6, 0 + cmp r5, 0xB + bgt _080A36A6 + ldr r0, _080A37B4 + add r0, r9 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r5, r0 + blt _080A3650 +_080A36A6: + ldr r0, _080A37B4 + add r0, r9 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r5, r0 + bge _080A36E6 +_080A36B2: + adds r0, r7, 0 + adds r1, r0, 0x1 + lsls r1, 16 + lsrs r7, r1, 16 + ldr r1, [sp, 0x1C] + bl sub_8003810 + adds r6, r5, 0x1 + movs r5, 0xE +_080A36C4: + adds r0, r7, 0 + adds r1, r0, 0x1 + lsls r1, 16 + lsrs r7, r1, 16 + ldr r1, [sp, 0x20] + bl sub_8003810 + subs r5, 0x1 + cmp r5, 0 + bge _080A36C4 + adds r5, r6, 0 + ldr r0, _080A37B4 + add r0, r9 + movs r4, 0 + ldrsh r0, [r0, r4] + cmp r5, r0 + blt _080A36B2 +_080A36E6: + mov r4, r9 + movs r0, 0x88 + lsls r0, 3 + add r0, r9 + ldr r1, [r0] + cmp r1, 0 + beq _080A36FE + mov r0, r9 + adds r0, 0xE0 + movs r2, 0x20 + bl sub_8004AA4 +_080A36FE: + ldr r0, _080A37B8 + add r0, r9 + movs r1, 0 + str r1, [r0] + movs r0, 0x8E + lsls r0, 3 + add r0, r9 + strb r1, [r0] + ldr r0, _080A37BC + add r0, r9 + strb r1, [r0] + movs r0, 0 + movs r1, 0xD +_080A3718: + strh r0, [r4] + strh r0, [r4, 0x2] + str r0, [r4, 0x8] + str r0, [r4, 0x4] + subs r1, 0x1 + adds r4, 0x10 + cmp r1, 0 + bge _080A3718 + movs r1, 0 + movs r0, 0xF8 + lsls r0, 2 + add r0, r9 + movs r2, 0x1 +_080A3732: + strb r1, [r0] + strb r1, [r0, 0x1] + strh r1, [r0, 0x4] + strh r1, [r0, 0x2] + str r1, [r0, 0x8] + str r1, [r0, 0xC] + str r1, [r0, 0x14] + str r1, [r0, 0x10] + str r1, [r0, 0x1C] + str r1, [r0, 0x18] + str r1, [r0, 0x20] + str r1, [r0, 0x24] + adds r0, 0x28 + subs r2, 0x1 + cmp r2, 0 + bge _080A3732 + mov r0, r9 + movs r1, 0 + bl sub_80A3BB0 + movs r0, 0x91 + lsls r0, 3 + add r0, r9 + bl sub_80A3EB0 + ldr r1, _080A37C0 + add r1, r9 + movs r0, 0x1 + strb r0, [r1] +_080A376C: + add sp, 0x4C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A377C: .4byte 0x00000444 +_080A3780: .4byte gUnknown_81188F0 +_080A3784: .4byte gUnknown_9890000 +_080A3788: .4byte 0x00000434 +_080A378C: .4byte 0x00000464 +_080A3790: .4byte 0x00000454 +_080A3794: .4byte 0x0000045a +_080A3798: .4byte 0x00000544 +_080A379C: .4byte 0x0000052c +_080A37A0: .4byte 0x0000043c +_080A37A4: .4byte 0x06008000 +_080A37A8: .4byte 0x0000054c +_080A37AC: .4byte 0x0000053a +_080A37B0: .4byte 0x00000466 +_080A37B4: .4byte 0x0000052e +_080A37B8: .4byte 0x0000046c +_080A37BC: .4byte 0x00000471 +_080A37C0: .4byte 0x0000052a + thumb_func_end sub_80A3440 + + thumb_func_start sub_80A37C4 +sub_80A37C4: + push {r4-r6,lr} + adds r6, r2, 0 + adds r4, r1, 0 + adds r2, r0, 0 + movs r0, 0 + movs r1, 0xF +_080A37D0: + strh r0, [r2] + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080A37D0 + movs r0, 0x1 + movs r1, 0x4 + ldrsh r3, [r3, r1] + cmp r0, r3 + bge _080A37FE + adds r5, r3, 0 +_080A37E6: + adds r3, r0, 0x1 + movs r1, 0xF +_080A37EA: + ldrh r0, [r4] + strh r0, [r2] + adds r4, 0x2 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080A37EA + adds r0, r3, 0 + cmp r0, r5 + blt _080A37E6 +_080A37FE: + movs r3, 0x6 + ldrsh r1, [r6, r3] + cmp r0, r1 + bge _080A3820 + ldr r3, _080A3828 + adds r4, r3, 0 + adds r5, r1, 0 +_080A380C: + adds r3, r0, 0x1 + movs r1, 0xF +_080A3810: + strh r4, [r2] + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080A3810 + adds r0, r3, 0 + cmp r0, r5 + blt _080A380C +_080A3820: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A3828: .4byte 0x0000ffff + thumb_func_end sub_80A37C4 + + thumb_func_start _UncompressCell +_UncompressCell: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r1, 0 + mov r8, r3 + ldr r3, [sp, 0x18] + adds r4, r2, 0 + adds r2, r0, 0 + mov r1, r8 + ldrh r0, [r1] + lsls r0, 12 + ldrh r1, [r1, 0x4] + orrs r0, r1 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r1, [r3] + ldr r0, _080A385C + cmp r1, r0 + bne _080A3860 + movs r0, 0x1 + strh r0, [r5] + movs r5, 0x4 + b _080A3890 + .align 2, 0 +_080A385C: .4byte 0x00020002 +_080A3860: + ldr r0, _080A3870 + cmp r1, r0 + bne _080A3874 + movs r0, 0x2 + strh r0, [r5] + movs r5, 0x9 + b _080A3890 + .align 2, 0 +_080A3870: .4byte 0x00030003 +_080A3874: + movs r0, 0 + strh r0, [r5] + ldr r0, _080A3888 + ldr r1, _080A388C + movs r4, 0 + ldrsh r2, [r3, r4] + movs r6, 0x2 + ldrsh r3, [r3, r6] + bl FatalError + .align 2, 0 +_080A3888: .4byte gUnknown_81172E8 +_080A388C: .4byte gUnknown_81172F4 +_080A3890: + movs r0, 0 + movs r1, 0x8 +_080A3894: + strh r0, [r2] + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080A3894 + movs r0, 0x1 + movs r7, 0xE + ldrsh r1, [r3, r7] + cmp r0, r1 + bge _080A38DC + mov r12, r1 +_080A38AA: + movs r1, 0 + adds r3, r0, 0x1 + cmp r1, r5 + bge _080A38C6 + adds r1, r5, 0 +_080A38B4: + ldrh r0, [r4] + adds r0, r6, r0 + strh r0, [r2] + adds r4, 0x2 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bne _080A38B4 + adds r1, r5, 0 +_080A38C6: + cmp r1, 0x8 + bgt _080A38D6 + movs r0, 0 +_080A38CC: + strh r0, [r2] + adds r2, 0x2 + adds r1, 0x1 + cmp r1, 0x8 + ble _080A38CC +_080A38D6: + adds r0, r3, 0 + cmp r0, r12 + blt _080A38AA +_080A38DC: + mov r1, r8 + movs r4, 0x8 + ldrsh r3, [r1, r4] + cmp r0, r3 + bge _080A38FE + movs r4, 0 + adds r5, r3, 0 +_080A38EA: + adds r3, r0, 0x1 + movs r1, 0x8 +_080A38EE: + strh r4, [r2] + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080A38EE + adds r0, r3, 0 + cmp r0, r5 + blt _080A38EA +_080A38FE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end _UncompressCell + + thumb_func_start sub_80A3908 +sub_80A3908: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + str r0, [sp] + str r2, [sp, 0x4] + mov r9, r3 + adds r6, r1, 0 + movs r2, 0 + ldr r1, [sp, 0x4] + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r2, r0 + blt _080A392A + b _080A3B6C +_080A392A: + lsls r0, r2, 2 + ldr r4, [sp] + adds r0, r4 + ldr r0, [r0] + mov r12, r0 + movs r1, 0 + adds r2, 0x1 + str r2, [sp, 0x8] + mov r5, r9 + ldrb r5, [r5, 0x5] + cmp r1, r5 + blt _080A3944 + b _080A3B2A +_080A3944: + ldr r0, _080A39A4 + mov r10, r0 +_080A3948: + movs r2, 0 + mov r8, r2 + cmp r1, 0 + bne _080A3A18 + movs r3, 0x1 + str r3, [sp, 0xC] + mov r4, r9 + ldrb r4, [r4, 0x4] + cmp r1, r4 + blt _080A395E + b _080A3B04 +_080A395E: + ldrb r1, [r6] + adds r6, 0x1 + cmp r1, 0xBF + ble _080A39A8 + adds r2, r1, 0 + subs r2, 0xBF + cmp r1, 0xBF + ble _080A39A0 + ldr r5, _080A39A4 + adds r4, r5, 0 + adds r3, r2, 0 +_080A3974: + ldrb r1, [r6] + ldrb r0, [r6, 0x1] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r6, 0x2] + lsls r0, 16 + orrs r1, r0 + adds r6, 0x3 + adds r0, r1, 0 + ands r0, r4 + mov r5, r12 + strh r0, [r5] + movs r0, 0x2 + add r12, r0 + asrs r1, 12 + ands r1, r4 + mov r5, r12 + strh r1, [r5] + add r12, r0 + subs r3, 0x1 + cmp r3, 0 + bne _080A3974 +_080A39A0: + lsls r0, r2, 1 + b _080A3A0C + .align 2, 0 +_080A39A4: .4byte 0x00000fff +_080A39A8: + cmp r1, 0x7F + ble _080A39EA + ldrb r2, [r6] + ldrb r0, [r6, 0x1] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r6, 0x2] + lsls r0, 16 + orrs r2, r0 + adds r6, 0x3 + adds r4, r1, 0 + subs r4, 0x7F + cmp r1, 0x7F + ble _080A39E6 + adds r0, r2, 0 + mov r1, r10 + ands r0, r1 + asrs r1, r2, 12 + mov r2, r10 + ands r1, r2 + adds r3, r4, 0 +_080A39D2: + mov r5, r12 + strh r0, [r5] + movs r2, 0x2 + add r12, r2 + mov r5, r12 + strh r1, [r5] + add r12, r2 + subs r3, 0x1 + cmp r3, 0 + bne _080A39D2 +_080A39E6: + lsls r0, r4, 1 + b _080A3A0C +_080A39EA: + movs r3, 0 + adds r0, r1, 0x1 + cmp r3, r1 + bgt _080A3A0A + movs r1, 0 + adds r3, r0, 0 +_080A39F6: + mov r2, r12 + strh r1, [r2] + movs r4, 0x2 + add r12, r4 + mov r5, r12 + strh r1, [r5] + add r12, r4 + subs r3, 0x1 + cmp r3, 0 + bne _080A39F6 +_080A3A0A: + lsls r0, 1 +_080A3A0C: + add r8, r0 + mov r0, r9 + ldrb r0, [r0, 0x4] + cmp r8, r0 + blt _080A395E + b _080A3B04 +_080A3A18: + mov r4, r12 + subs r4, 0x80 + adds r1, 0x1 + str r1, [sp, 0xC] + mov r1, r9 + ldrb r1, [r1, 0x4] + cmp r8, r1 + bge _080A3B04 +_080A3A28: + ldrb r1, [r6] + adds r6, 0x1 + cmp r1, 0xBF + ble _080A3A80 + adds r5, r1, 0 + subs r5, 0xBF + cmp r1, 0xBF + ble _080A3A78 + ldr r2, _080A3A7C + adds r7, r2, 0 + adds r3, r5, 0 +_080A3A3E: + ldrb r2, [r6] + ldrb r0, [r6, 0x1] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r6, 0x2] + lsls r0, 16 + orrs r2, r0 + adds r6, 0x3 + adds r0, r2, 0 + ands r0, r7 + ldrh r1, [r4] + eors r0, r1 + mov r1, r12 + strh r0, [r1] + adds r4, 0x2 + movs r0, 0x2 + add r12, r0 + asrs r2, 12 + ands r2, r7 + ldrh r0, [r4] + eors r2, r0 + mov r1, r12 + strh r2, [r1] + adds r4, 0x2 + movs r2, 0x2 + add r12, r2 + subs r3, 0x1 + cmp r3, 0 + bne _080A3A3E +_080A3A78: + lsls r0, r5, 1 + b _080A3AFA + .align 2, 0 +_080A3A7C: .4byte 0x00000fff +_080A3A80: + cmp r1, 0x7F + ble _080A3AD2 + ldrb r2, [r6] + ldrb r0, [r6, 0x1] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r6, 0x2] + lsls r0, 16 + orrs r2, r0 + adds r6, 0x3 + adds r7, r1, 0 + subs r7, 0x7F + cmp r1, 0x7F + ble _080A3ACE + adds r5, r2, 0 + mov r3, r10 + ands r5, r3 + asrs r2, 12 + ands r2, r3 + adds r3, r7, 0 +_080A3AA8: + ldrh r1, [r4] + adds r0, r5, 0 + eors r0, r1 + mov r1, r12 + strh r0, [r1] + adds r4, 0x2 + movs r0, 0x2 + add r12, r0 + ldrh r1, [r4] + adds r0, r2, 0 + eors r0, r1 + mov r1, r12 + strh r0, [r1] + adds r4, 0x2 + movs r0, 0x2 + add r12, r0 + subs r3, 0x1 + cmp r3, 0 + bne _080A3AA8 +_080A3ACE: + lsls r0, r7, 1 + b _080A3AFA +_080A3AD2: + movs r3, 0 + adds r2, r1, 0x1 + cmp r3, r1 + bgt _080A3AF8 + adds r3, r2, 0 +_080A3ADC: + ldrh r0, [r4] + mov r1, r12 + strh r0, [r1] + adds r4, 0x2 + movs r5, 0x2 + add r12, r5 + ldrh r0, [r4] + mov r1, r12 + strh r0, [r1] + adds r4, 0x2 + add r12, r5 + subs r3, 0x1 + cmp r3, 0 + bne _080A3ADC +_080A3AF8: + lsls r0, r2, 1 +_080A3AFA: + add r8, r0 + mov r2, r9 + ldrb r2, [r2, 0x4] + cmp r8, r2 + blt _080A3A28 +_080A3B04: + mov r3, r8 + cmp r3, 0x3F + bgt _080A3B1E + movs r0, 0 +_080A3B0C: + mov r4, r12 + strh r0, [r4] + movs r5, 0x2 + add r12, r5 + movs r1, 0x1 + add r8, r1 + mov r2, r8 + cmp r2, 0x3F + ble _080A3B0C +_080A3B1E: + ldr r1, [sp, 0xC] + mov r3, r9 + ldrb r3, [r3, 0x5] + cmp r1, r3 + bge _080A3B2A + b _080A3948 +_080A3B2A: + ldr r4, [sp, 0x4] + movs r5, 0x10 + ldrsh r0, [r4, r5] + cmp r1, r0 + bge _080A3B5E + movs r2, 0 +_080A3B36: + adds r1, 0x1 + str r1, [sp, 0xC] + movs r0, 0x3F + mov r8, r0 +_080A3B3E: + mov r1, r12 + strh r2, [r1] + movs r3, 0x2 + add r12, r3 + movs r4, 0x1 + negs r4, r4 + add r8, r4 + mov r5, r8 + cmp r5, 0 + bge _080A3B3E + ldr r1, [sp, 0xC] + ldr r3, [sp, 0x4] + movs r4, 0x10 + ldrsh r0, [r3, r4] + cmp r1, r0 + blt _080A3B36 +_080A3B5E: + ldr r2, [sp, 0x8] + ldr r5, [sp, 0x4] + movs r1, 0xC + ldrsh r0, [r5, r1] + cmp r2, r0 + bge _080A3B6C + b _080A392A +_080A3B6C: + adds r0, r6, 0 + 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_80A3908 + + thumb_func_start sub_80A3B80 +sub_80A3B80: + push {r4,lr} + adds r3, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + ldr r4, _080A3BA8 + adds r0, r3, r4 + ldr r0, [r0] + cmp r0, 0 + beq _080A3BA2 + adds r4, 0x4 + adds r0, r3, r4 + strb r1, [r0] + ldr r1, _080A3BAC + adds r0, r3, r1 + strb r2, [r0] +_080A3BA2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A3BA8: .4byte 0x0000046c +_080A3BAC: .4byte 0x00000471 + thumb_func_end sub_80A3B80 + + thumb_func_start sub_80A3BB0 +sub_80A3BB0: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r5, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r6, r1, 0 + movs r0, 0x91 + lsls r0, 3 + adds r0, r5 + mov r8, r0 + cmp r1, 0 + blt _080A3BD4 + cmp r1, 0x1 + ble _080A3BD4 + cmp r1, 0x4 + ble _080A3C00 +_080A3BD4: + ldr r1, _080A3BFC + adds r0, r5, r1 + movs r1, 0x1 + str r1, [r0] + movs r2, 0xA7 + lsls r2, 3 + adds r0, r5, r2 + movs r1, 0 + ldrsh r3, [r0, r1] + movs r0, 0 + cmp r6, 0x1 + bne _080A3BEE + movs r0, 0x1 +_080A3BEE: + str r0, [sp] + mov r0, r8 + adds r1, r5, 0 + movs r2, 0 + bl sub_80A3D40 + b _080A3C48 + .align 2, 0 +_080A3BFC: .4byte 0x00000474 +_080A3C00: + ldr r2, _080A3C88 + adds r0, r5, r2 + movs r7, 0x2 + str r7, [r0] + movs r0, 0xA7 + lsls r0, 3 + adds r4, r5, r0 + movs r2, 0 + ldrsh r0, [r4, r2] + subs r3, r0, 0x1 + movs r0, 0 + cmp r1, 0x4 + bne _080A3C1C + movs r0, 0x1 +_080A3C1C: + str r0, [sp] + mov r0, r8 + adds r1, r5, 0 + movs r2, 0 + bl sub_80A3D40 + movs r1, 0x9B + lsls r1, 3 + adds r0, r5, r1 + movs r1, 0 + ldrsh r2, [r4, r1] + subs r2, 0x1 + adds r3, r7, 0 + eors r3, r6 + negs r1, r3 + orrs r1, r3 + lsrs r1, 31 + str r1, [sp] + adds r1, r5, 0 + movs r3, 0x1 + bl sub_80A3D40 +_080A3C48: + movs r6, 0 + ldr r2, _080A3C88 + adds r0, r5, r2 + ldr r0, [r0] + cmp r6, r0 + bge _080A3CF0 + movs r0, 0x8F + lsls r0, 3 + adds r7, r5, r0 + mov r4, r8 +_080A3C5C: + adds r0, r5, 0 + adds r1, r6, 0 + ldr r2, _080A3C8C + bl sub_80A456C + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080A3C72 + cmp r0, 0x2 + beq _080A3CB4 +_080A3C72: + movs r2, 0 + ldrsh r0, [r4, r2] + cmp r0, 0x1 + beq _080A3C94 + cmp r0, 0x1 + ble _080A3C82 + cmp r0, 0x2 + beq _080A3C9C +_080A3C82: + ldr r0, _080A3C90 + b _080A3CD6 + .align 2, 0 +_080A3C88: .4byte 0x00000474 +_080A3C8C: .4byte gUnknown_8117314 +_080A3C90: .4byte sub_80A3EBC +_080A3C94: + ldr r0, _080A3C98 + b _080A3CD6 + .align 2, 0 +_080A3C98: .4byte sub_80A3EF4 +_080A3C9C: + ldrb r0, [r4, 0x6] + ldr r1, _080A3CAC + cmp r0, 0 + beq _080A3CA6 + ldr r1, _080A3CB0 +_080A3CA6: + str r1, [r4, 0x18] + b _080A3CD8 + .align 2, 0 +_080A3CAC: .4byte sub_80A4088 +_080A3CB0: .4byte sub_80A41C4 +_080A3CB4: + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080A3CCC + cmp r0, 0x1 + ble _080A3CC4 + cmp r0, 0x2 + beq _080A3CD4 +_080A3CC4: + ldr r0, _080A3CC8 + b _080A3CD6 + .align 2, 0 +_080A3CC8: .4byte sub_80A3ED4 +_080A3CCC: + ldr r0, _080A3CD0 + b _080A3CD6 + .align 2, 0 +_080A3CD0: .4byte sub_80A3F94 +_080A3CD4: + ldr r0, _080A3D34 +_080A3CD6: + str r0, [r4, 0x18] +_080A3CD8: + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80A3E14 + adds r7, 0x8 + adds r4, 0x50 + adds r6, 0x1 + ldr r2, _080A3D38 + adds r0, r5, r2 + ldr r0, [r0] + cmp r6, r0 + blt _080A3C5C +_080A3CF0: + ldr r1, _080A3D38 + adds r0, r5, r1 + ldr r6, [r0] + cmp r6, 0x1 + bgt _080A3D26 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 4 + mov r2, r8 + adds r4, r0, r2 +_080A3D04: + adds r0, r5, 0 + adds r1, r6, 0 + ldr r2, _080A3D3C + bl sub_80A456C + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + movs r3, 0 + bl sub_80A3D40 + adds r4, 0x50 + adds r6, 0x1 + cmp r6, 0x1 + ble _080A3D04 +_080A3D26: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A3D34: .4byte sub_80A4358 +_080A3D38: .4byte 0x00000474 +_080A3D3C: .4byte gUnknown_8117314 + thumb_func_end sub_80A3BB0 + + thumb_func_start sub_80A3D40 +sub_80A3D40: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r4, r0, 0 + adds r5, r1, 0 + mov r8, r3 + ldr r1, [sp, 0x1C] + movs r3, 0xA5 + lsls r3, 3 + adds r0, r5, r3 + ldrh r0, [r0] + strh r0, [r4] + strh r2, [r4, 0x2] + mov r7, r8 + strh r7, [r4, 0x4] + strb r1, [r4, 0x6] + ldr r1, _080A3E10 + adds r0, r5, r1 + ldrb r0, [r0] + str r0, [r4, 0x8] + subs r3, 0xDB + adds r0, r5, r3 + ldrb r0, [r0] + str r0, [r4, 0xC] + movs r7, 0x89 + lsls r7, 3 + adds r0, r5, r7 + ldrb r0, [r0] + lsls r0, 3 + str r0, [r4, 0x10] + subs r1, 0x3 + adds r0, r5, r1 + ldrb r0, [r0] + lsls r0, 3 + str r0, [r4, 0x14] + adds r3, 0xFB + adds r0, r5, r3 + ldr r0, [r0] + str r0, [r4, 0x1C] + movs r3, 0 + cmp r3, r8 + bge _080A3DE0 + adds r7, 0xF0 + adds r6, r5, r7 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r2, r0 + bge _080A3DE0 + lsls r0, r2, 2 + adds r7, 0x14 + adds r0, r7 + adds r1, r0, r5 + movs r0, 0x20 + adds r0, r4 + mov r12, r0 + movs r7, 0x28 + adds r7, r4 + mov r9, r7 +_080A3DB6: + ldr r0, [r1] + mov r7, r12 + adds r7, 0x4 + mov r12, r7 + subs r7, 0x4 + stm r7!, {r0} + ldr r0, [r1, 0x8] + mov r7, r9 + adds r7, 0x4 + mov r9, r7 + subs r7, 0x4 + stm r7!, {r0} + adds r3, 0x1 + adds r1, 0x4 + adds r2, 0x1 + cmp r3, r8 + bge _080A3DE0 + movs r7, 0 + ldrsh r0, [r6, r7] + cmp r2, r0 + blt _080A3DB6 +_080A3DE0: + cmp r3, 0x1 + bgt _080A3DF8 + movs r1, 0 + lsls r0, r3, 2 + adds r0, 0x20 + adds r0, r4 +_080A3DEC: + str r1, [r0] + str r1, [r0, 0x8] + adds r0, 0x4 + adds r3, 0x1 + cmp r3, 0x1 + ble _080A3DEC +_080A3DF8: + movs r0, 0x8F + lsls r0, 3 + adds r1, r5, r0 + adds r0, r4, 0 + bl sub_80A3E14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A3E10: .4byte 0x0000044c + thumb_func_end sub_80A3D40 + + thumb_func_start sub_80A3E14 +sub_80A3E14: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + adds r0, r1, 0 + ldr r1, [r0] + mov r8, r1 + str r1, [r4, 0x30] + cmp r1, 0 + bge _080A3E2A + adds r1, 0x7 +_080A3E2A: + asrs r6, r1, 3 + str r6, [r4, 0x38] + ldr r7, [r0, 0x4] + str r7, [r4, 0x34] + adds r0, r7, 0 + cmp r7, 0 + bge _080A3E3A + adds r0, r7, 0x7 +_080A3E3A: + asrs r5, r0, 3 + str r5, [r4, 0x3C] + movs r3, 0 + ldrsh r2, [r4, r3] + cmp r2, 0x1 + beq _080A3E60 + cmp r2, 0x1 + bgt _080A3E50 + cmp r2, 0 + beq _080A3E56 + b _080A3EA4 +_080A3E50: + cmp r2, 0x2 + beq _080A3E7E + b _080A3EA4 +_080A3E56: + str r2, [r4, 0x40] + str r2, [r4, 0x44] + str r2, [r4, 0x48] + str r2, [r4, 0x4C] + b _080A3EA4 +_080A3E60: + lsrs r1, 31 + adds r1, r6, r1 + asrs r1, 1 + str r1, [r4, 0x40] + lsrs r0, 31 + adds r0, r5, r0 + asrs r0, 1 + str r0, [r4, 0x44] + lsls r1, 4 + mov r2, r8 + subs r1, r2, r1 + str r1, [r4, 0x48] + lsls r0, 4 + subs r0, r7, r0 + b _080A3EA2 +_080A3E7E: + adds r0, r6, 0 + movs r1, 0x3 + bl __divsi3 + str r0, [r4, 0x40] + adds r0, r5, 0 + movs r1, 0x3 + bl __divsi3 + str r0, [r4, 0x44] + lsls r0, r6, 3 + mov r3, r8 + subs r0, r3, r0 + str r0, [r4, 0x48] + adds r0, r7, 0 + movs r1, 0x18 + bl __modsi3 +_080A3EA2: + str r0, [r4, 0x4C] +_080A3EA4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A3E14 + + thumb_func_start sub_80A3EB0 +sub_80A3EB0: + push {lr} + ldr r1, [r0, 0x18] + bl _call_via_r1 + pop {r0} + bx r0 + thumb_func_end sub_80A3EB0 + + thumb_func_start sub_80A3EBC +sub_80A3EBC: + push {lr} + ldr r0, [r0, 0x28] + movs r2, 0 + movs r1, 0x80 + lsls r1, 3 +_080A3EC6: + strh r2, [r0] + adds r0, 0x2 + subs r1, 0x1 + cmp r1, 0 + bne _080A3EC6 + pop {r0} + bx r0 + thumb_func_end sub_80A3EBC + + thumb_func_start sub_80A3ED4 +sub_80A3ED4: + push {lr} + ldr r1, [r0, 0x28] + ldr r0, [r0, 0x2C] + movs r3, 0 + movs r2, 0x80 + lsls r2, 3 +_080A3EE0: + strh r3, [r1] + adds r1, 0x2 + strh r3, [r0] + adds r0, 0x2 + subs r2, 0x1 + cmp r2, 0 + bne _080A3EE0 + pop {r0} + bx r0 + thumb_func_end sub_80A3ED4 + + thumb_func_start sub_80A3EF4 +sub_80A3EF4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + ldr r1, [r0, 0x44] + lsls r1, 6 + ldr r2, [r0, 0x40] + adds r1, r2 + lsls r1, 1 + ldr r2, [r0, 0x20] + adds r2, r1 + movs r1, 0 + mov r12, r1 + ldr r3, [r0, 0x28] + str r3, [sp, 0xC] + ldr r0, [r0, 0x1C] + mov r10, r0 + mov r0, sp + str r0, [sp, 0x8] +_080A3F1E: + adds r5, r2, 0 + movs r2, 0x80 + adds r2, r5 + mov r9, r2 + adds r1, 0x1 + mov r8, r1 + ldr r1, [sp, 0x8] + mov r3, r12 + lsls r0, r3, 1 + ldr r2, [sp, 0xC] + adds r0, r2 + movs r2, 0x1 +_080A3F36: + stm r1!, {r0} + adds r0, 0x40 + movs r3, 0x20 + add r12, r3 + subs r2, 0x1 + cmp r2, 0 + bge _080A3F36 + movs r4, 0 + mov r7, sp +_080A3F48: + ldrh r1, [r5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + mov r1, r10 + adds r3, r1, r0 + adds r5, 0x2 + adds r6, r4, 0x1 + adds r4, r7, 0 + movs r2, 0x1 +_080A3F5C: + ldr r0, [r4] + ldrh r1, [r3] + strh r1, [r0] + adds r3, 0x2 + adds r0, 0x2 + ldrh r1, [r3] + strh r1, [r0] + adds r3, 0x2 + adds r0, 0x2 + stm r4!, {r0} + subs r2, 0x1 + cmp r2, 0 + bge _080A3F5C + adds r4, r6, 0 + cmp r4, 0xF + ble _080A3F48 + mov r2, r9 + mov r1, r8 + cmp r1, 0xA + ble _080A3F1E + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A3EF4 + + thumb_func_start sub_80A3F94 +sub_80A3F94: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x34 + ldr r1, [r0, 0x44] + lsls r1, 6 + ldr r2, [r0, 0x40] + adds r1, r2 + lsls r1, 1 + ldr r2, [r0, 0x20] + adds r3, r2, r1 + ldr r2, [r0, 0x24] + adds r2, r1 + movs r1, 0 + ldr r4, [r0, 0x28] + str r4, [sp, 0x2C] + ldr r5, [r0, 0x2C] + str r5, [sp, 0x18] + ldr r0, [r0, 0x1C] + str r0, [sp, 0x1C] + mov r0, sp + str r0, [sp, 0x10] + mov r4, sp + adds r4, 0x8 + str r4, [sp, 0x14] + movs r5, 0 + str r5, [sp, 0x30] +_080A3FCE: + mov r8, r3 + mov r12, r2 + mov r0, r8 + adds r0, 0x80 + str r0, [sp, 0x20] + mov r4, r12 + adds r4, 0x80 + str r4, [sp, 0x24] + adds r1, 0x1 + str r1, [sp, 0x28] + ldr r3, [sp, 0x14] + ldr r2, [sp, 0x10] + ldr r5, [sp, 0x30] + ldr r0, [sp, 0x18] + adds r1, r5, r0 + ldr r4, [sp, 0x2C] + adds r0, r5, r4 + movs r5, 0x1 +_080A3FF2: + stm r2!, {r0} + stm r3!, {r1} + adds r1, 0x40 + adds r0, 0x40 + ldr r4, [sp, 0x30] + adds r4, 0x40 + str r4, [sp, 0x30] + subs r5, 0x1 + cmp r5, 0 + bge _080A3FF2 + movs r2, 0 + ldr r5, [sp, 0x1C] + mov r9, r5 +_080A400C: + mov r0, r8 + ldrh r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + mov r1, r9 + adds r4, r1, r0 + movs r5, 0x2 + add r8, r5 + mov r0, r12 + ldrh r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + mov r1, r9 + adds r3, r1, r0 + add r12, r5 + movs r5, 0 + adds r2, 0x1 + mov r10, r2 + ldr r7, [sp, 0x14] + ldr r6, [sp, 0x10] +_080A4038: + ldr r1, [r6] + ldr r2, [r7] + ldrh r0, [r4] + strh r0, [r1] + adds r4, 0x2 + adds r1, 0x2 + ldrh r0, [r4] + strh r0, [r1] + adds r4, 0x2 + adds r1, 0x2 + ldrh r0, [r3] + strh r0, [r2] + adds r3, 0x2 + adds r2, 0x2 + ldrh r0, [r3] + strh r0, [r2] + adds r3, 0x2 + adds r2, 0x2 + stm r6!, {r1} + stm r7!, {r2} + adds r5, 0x1 + cmp r5, 0x1 + ble _080A4038 + mov r2, r10 + cmp r2, 0xF + ble _080A400C + ldr r3, [sp, 0x20] + ldr r2, [sp, 0x24] + ldr r1, [sp, 0x28] + cmp r1, 0xA + ble _080A3FCE + add sp, 0x34 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A3F94 + + thumb_func_start sub_80A4088 +sub_80A4088: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r4, r0, 0 + ldr r0, [r4, 0x38] + movs r1, 0x3 + bl __modsi3 + adds r7, r0, 0 + ldr r0, [r4, 0x44] + lsls r0, 6 + ldr r1, [r4, 0x40] + adds r0, r1 + lsls r0, 1 + ldr r1, [r4, 0x20] + adds r1, r0 + movs r0, 0 + mov r8, r0 + ldr r2, [r4, 0x28] + str r2, [sp, 0xC] + ldr r4, [r4, 0x1C] + mov r12, r4 +_080A40BA: + adds r5, r1, 0 + movs r1, 0x80 + adds r1, r5 + mov r9, r1 + adds r0, 0x1 + mov r10, r0 + mov r1, sp + mov r2, r8 + lsls r0, r2, 1 + ldr r2, [sp, 0xC] + adds r0, r2 + movs r3, 0x2 +_080A40D2: + stm r1!, {r0} + adds r0, 0x40 + movs r2, 0x20 + add r8, r2 + subs r3, 0x1 + cmp r3, 0 + bge _080A40D2 + cmp r7, 0 + beq _080A412E + ldrh r1, [r5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + mov r1, r12 + adds r2, r1, r0 + adds r5, 0x2 + cmp r7, 0x1 + bne _080A4116 + adds r2, 0x2 + mov r4, sp + movs r3, 0x2 +_080A40FC: + ldr r0, [r4] + ldrh r1, [r2] + strh r1, [r0] + adds r0, 0x2 + ldrh r1, [r2, 0x2] + strh r1, [r0] + adds r0, 0x2 + stm r4!, {r0} + adds r2, 0x6 + subs r3, 0x1 + cmp r3, 0 + bge _080A40FC + b _080A412E +_080A4116: + adds r2, 0x4 + mov r4, sp + movs r3, 0x2 +_080A411C: + ldr r1, [r4] + ldrh r0, [r2] + strh r0, [r1] + adds r1, 0x2 + stm r4!, {r1} + adds r2, 0x6 + subs r3, 0x1 + cmp r3, 0 + bge _080A411C +_080A412E: + movs r3, 0 +_080A4130: + ldrh r1, [r5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + mov r1, r12 + adds r2, r1, r0 + adds r5, 0x2 + adds r6, r3, 0x1 + mov r4, sp + movs r3, 0x2 +_080A4144: + ldr r1, [r4] + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + stm r4!, {r1} + subs r3, 0x1 + cmp r3, 0 + bge _080A4144 + adds r3, r6, 0 + cmp r3, 0x9 + ble _080A4130 + cmp r7, 0x1 + beq _080A41AA + ldrh r1, [r5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + mov r1, r12 + adds r2, r1, r0 + cmp r7, 0 + bne _080A4198 + mov r4, sp + movs r3, 0x2 +_080A4184: + ldm r4!, {r0} + ldrh r1, [r2] + strh r1, [r0] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0x2] + adds r2, 0x6 + subs r3, 0x1 + cmp r3, 0 + bge _080A4184 + b _080A41AA +_080A4198: + mov r4, sp + movs r3, 0x2 +_080A419C: + ldm r4!, {r1} + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x6 + subs r3, 0x1 + cmp r3, 0 + bge _080A419C +_080A41AA: + mov r1, r9 + mov r0, r10 + cmp r0, 0x7 + ble _080A40BA + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A4088 + + thumb_func_start sub_80A41C4 +sub_80A41C4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + mov r8, r0 + ldr r0, [r0, 0x38] + movs r1, 0x3 + bl __modsi3 + str r0, [sp, 0xC] + mov r0, r8 + ldr r2, [r0, 0x44] + lsls r0, r2, 6 + mov r1, r8 + ldr r3, [r1, 0x40] + adds r0, r3 + lsls r0, 1 + ldr r1, [r1, 0x20] + adds r4, r1, r0 + movs r0, 0 + str r0, [sp, 0x10] + mov r1, r8 + ldr r0, [r1, 0xC] + subs r0, r2 + mov r10, r0 + ldr r0, [r1, 0x8] + subs r0, r3 + str r0, [sp, 0x14] + movs r2, 0 +_080A4202: + ldr r5, [sp, 0x14] + mov r3, r10 + cmp r3, 0 + ble _080A4212 + movs r0, 0x1 + negs r0, r0 + add r10, r0 + b _080A4222 +_080A4212: + mov r1, r8 + ldr r1, [r1, 0xC] + mov r10, r1 + mov r3, r8 + ldr r0, [r3, 0x40] + lsls r0, 1 + ldr r1, [r3, 0x20] + adds r4, r1, r0 +_080A4222: + adds r6, r4, 0 + mov r0, r8 + ldr r1, [r0, 0x28] + ldrh r7, [r4] + ldr r3, [r0, 0x1C] + mov r9, r3 + adds r0, r4, 0x2 + mov r12, r0 + adds r4, 0x80 + str r4, [sp, 0x18] + adds r2, 0x1 + str r2, [sp, 0x1C] + mov r2, sp + ldr r3, [sp, 0x10] + lsls r0, r3, 1 + adds r0, r1 + movs r3, 0x2 +_080A4244: + stm r2!, {r0} + adds r0, 0x40 + ldr r4, [sp, 0x10] + adds r4, 0x20 + str r4, [sp, 0x10] + subs r3, 0x1 + cmp r3, 0 + bge _080A4244 + ldr r0, [sp, 0xC] + cmp r0, 0 + beq _080A42B2 + lsls r0, r7, 3 + adds r0, r7 + lsls r0, 1 + mov r1, r9 + adds r2, r1, r0 + mov r6, r12 + ldr r3, [sp, 0xC] + cmp r3, 0x1 + bne _080A428C + adds r2, 0x2 + mov r4, sp + movs r3, 0x2 +_080A4272: + ldr r0, [r4] + ldrh r1, [r2] + strh r1, [r0] + adds r0, 0x2 + ldrh r1, [r2, 0x2] + strh r1, [r0] + adds r0, 0x2 + stm r4!, {r0} + adds r2, 0x6 + subs r3, 0x1 + cmp r3, 0 + bge _080A4272 + b _080A42A4 +_080A428C: + adds r2, 0x4 + mov r4, sp + movs r3, 0x2 +_080A4292: + ldr r1, [r4] + ldrh r0, [r2] + strh r0, [r1] + adds r1, 0x2 + stm r4!, {r1} + adds r2, 0x6 + subs r3, 0x1 + cmp r3, 0 + bge _080A4292 +_080A42A4: + subs r5, 0x1 + cmp r5, 0 + bgt _080A42B2 + mov r4, r8 + ldr r5, [r4, 0x8] + lsls r0, r5, 1 + subs r6, r0 +_080A42B2: + movs r3, 0 +_080A42B4: + ldrh r1, [r6] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + mov r1, r9 + adds r2, r1, r0 + adds r6, 0x2 + subs r5, 0x1 + adds r7, r3, 0x1 + mov r4, sp + movs r3, 0x2 +_080A42CA: + ldr r1, [r4] + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + stm r4!, {r1} + subs r3, 0x1 + cmp r3, 0 + bge _080A42CA + cmp r5, 0 + bgt _080A42F8 + mov r3, r8 + ldr r5, [r3, 0x8] + lsls r0, r5, 1 + subs r6, r0 +_080A42F8: + adds r3, r7, 0 + cmp r3, 0x9 + ble _080A42B4 + ldr r4, [sp, 0xC] + cmp r4, 0x1 + beq _080A433E + ldrh r1, [r6] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + mov r1, r9 + adds r2, r1, r0 + cmp r4, 0 + bne _080A432C + mov r4, sp + movs r3, 0x2 +_080A4318: + ldm r4!, {r0} + ldrh r1, [r2] + strh r1, [r0] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0x2] + adds r2, 0x6 + subs r3, 0x1 + cmp r3, 0 + bge _080A4318 + b _080A433E +_080A432C: + mov r4, sp + movs r3, 0x2 +_080A4330: + ldm r4!, {r1} + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x6 + subs r3, 0x1 + cmp r3, 0 + bge _080A4330 +_080A433E: + ldr r4, [sp, 0x18] + ldr r2, [sp, 0x1C] + cmp r2, 0x7 + bgt _080A4348 + b _080A4202 +_080A4348: + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A41C4 + + thumb_func_start sub_80A4358 +sub_80A4358: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x3C + adds r4, r0, 0 + ldr r0, [r4, 0x38] + movs r1, 0x3 + bl __modsi3 + str r0, [sp, 0x18] + ldr r0, [r4, 0x44] + lsls r0, 6 + ldr r1, [r4, 0x40] + adds r0, r1 + lsls r0, 1 + ldr r1, [r4, 0x20] + adds r2, r1, r0 + ldr r1, [r4, 0x24] + adds r1, r0 + movs r0, 0 + ldr r3, [r4, 0x28] + str r3, [sp, 0x24] + ldr r5, [r4, 0x2C] + str r5, [sp, 0x28] + ldr r4, [r4, 0x1C] + str r4, [sp, 0x20] + mov r3, sp + adds r3, 0xC + str r3, [sp, 0x1C] + movs r4, 0 + str r4, [sp, 0x38] +_080A439A: + mov r12, r2 + mov r8, r1 + mov r5, r12 + adds r5, 0x80 + str r5, [sp, 0x30] + adds r1, 0x80 + str r1, [sp, 0x34] + adds r0, 0x1 + str r0, [sp, 0x2C] + add r3, sp, 0xC + mov r2, sp + ldr r4, [sp, 0x38] + ldr r5, [sp, 0x28] + adds r1, r4, r5 + ldr r5, [sp, 0x24] + adds r0, r4, r5 + movs r5, 0x2 +_080A43BC: + stm r2!, {r0} + stm r3!, {r1} + adds r1, 0x40 + adds r0, 0x40 + ldr r4, [sp, 0x38] + adds r4, 0x40 + str r4, [sp, 0x38] + subs r5, 0x1 + cmp r5, 0 + bge _080A43BC + ldr r5, [sp, 0x18] + cmp r5, 0 + beq _080A445C + mov r0, r12 + ldrh r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r1, [sp, 0x20] + adds r4, r1, r0 + movs r3, 0x2 + add r12, r3 + mov r5, r8 + ldrh r1, [r5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r1, [sp, 0x20] + adds r3, r1, r0 + movs r5, 0x2 + add r8, r5 + ldr r0, [sp, 0x18] + cmp r0, 0x1 + bne _080A4434 + adds r4, 0x2 + adds r3, 0x2 + ldr r7, [sp, 0x1C] + mov r6, sp +_080A4408: + ldr r1, [r6] + ldr r2, [r7] + ldrh r0, [r4] + strh r0, [r1] + adds r1, 0x2 + ldrh r0, [r4, 0x2] + strh r0, [r1] + adds r1, 0x2 + ldrh r0, [r3] + strh r0, [r2] + adds r2, 0x2 + ldrh r0, [r3, 0x2] + strh r0, [r2] + adds r2, 0x2 + stm r6!, {r1} + stm r7!, {r2} + adds r4, 0x6 + adds r3, 0x6 + subs r5, 0x1 + cmp r5, 0 + bge _080A4408 + b _080A445C +_080A4434: + adds r4, 0x4 + adds r3, 0x4 + ldr r6, [sp, 0x1C] + mov r2, sp + movs r5, 0x2 +_080A443E: + ldr r1, [r2] + ldrh r0, [r4] + strh r0, [r1] + adds r1, 0x2 + stm r2!, {r1} + ldr r1, [r6] + ldrh r0, [r3] + strh r0, [r1] + adds r1, 0x2 + stm r6!, {r1} + adds r4, 0x6 + adds r3, 0x6 + subs r5, 0x1 + cmp r5, 0 + bge _080A443E +_080A445C: + movs r2, 0 + ldr r1, [sp, 0x20] + mov r9, r1 +_080A4462: + mov r3, r12 + ldrh r1, [r3] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + mov r5, r9 + adds r4, r5, r0 + movs r0, 0x2 + add r12, r0 + mov r3, r8 + ldrh r1, [r3] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + adds r3, r5, r0 + movs r5, 0x2 + add r8, r5 + movs r5, 0 + adds r2, 0x1 + mov r10, r2 + mov r7, sp + add r6, sp, 0xC +_080A448E: + ldr r1, [r7] + ldr r2, [r6] + ldrh r0, [r4] + strh r0, [r1] + adds r4, 0x2 + adds r1, 0x2 + ldrh r0, [r4] + strh r0, [r1] + adds r4, 0x2 + adds r1, 0x2 + ldrh r0, [r4] + strh r0, [r1] + adds r4, 0x2 + adds r1, 0x2 + ldrh r0, [r3] + strh r0, [r2] + adds r3, 0x2 + adds r2, 0x2 + ldrh r0, [r3] + strh r0, [r2] + adds r3, 0x2 + adds r2, 0x2 + ldrh r0, [r3] + strh r0, [r2] + adds r3, 0x2 + adds r2, 0x2 + stm r7!, {r1} + stm r6!, {r2} + adds r5, 0x1 + cmp r5, 0x2 + ble _080A448E + mov r2, r10 + cmp r2, 0x9 + ble _080A4462 + ldr r0, [sp, 0x18] + cmp r0, 0x1 + beq _080A453A + mov r3, r12 + ldrh r1, [r3] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r5, [sp, 0x20] + adds r4, r5, r0 + mov r0, r8 + ldrh r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + adds r3, r5, r0 + ldr r1, [sp, 0x18] + cmp r1, 0 + bne _080A451E + ldr r7, [sp, 0x1C] + mov r6, sp + movs r5, 0x2 +_080A44FE: + ldm r6!, {r1} + ldm r7!, {r2} + ldrh r0, [r4] + strh r0, [r1] + ldrh r0, [r4, 0x2] + strh r0, [r1, 0x2] + ldrh r0, [r3] + strh r0, [r2] + ldrh r0, [r3, 0x2] + strh r0, [r2, 0x2] + adds r4, 0x6 + adds r3, 0x6 + subs r5, 0x1 + cmp r5, 0 + bge _080A44FE + b _080A453A +_080A451E: + ldr r6, [sp, 0x1C] + mov r2, sp + movs r5, 0x2 +_080A4524: + ldm r2!, {r1} + ldrh r0, [r4] + strh r0, [r1] + ldm r6!, {r1} + ldrh r0, [r3] + strh r0, [r1] + adds r4, 0x6 + adds r3, 0x6 + subs r5, 0x1 + cmp r5, 0 + bge _080A4524 +_080A453A: + ldr r2, [sp, 0x30] + ldr r1, [sp, 0x34] + ldr r0, [sp, 0x2C] + cmp r0, 0x7 + bgt _080A4546 + b _080A439A +_080A4546: + add sp, 0x3C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A4358 + + thumb_func_start sub_80A4558 +sub_80A4558: + lsls r1, 3 + movs r3, 0x8F + lsls r3, 3 + adds r0, r3 + adds r0, r1 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, 0x4] + bx lr + thumb_func_end sub_80A4558 + + thumb_func_start sub_80A456C +sub_80A456C: + lsls r1, 3 + movs r3, 0x8F + lsls r3, 3 + adds r0, r3 + adds r0, r1 + ldr r1, [r2] + ldr r2, [r2, 0x4] + str r1, [r0] + str r2, [r0, 0x4] + bx lr + thumb_func_end sub_80A456C + + thumb_func_start sub_80A4580 +sub_80A4580: + push {r4,lr} + adds r3, r2, 0 + lsls r2, r1, 2 + adds r2, r1 + lsls r2, 4 + movs r1, 0x91 + lsls r1, 3 + adds r2, r1 + adds r2, r0, r2 + ldr r0, [r3] + cmp r0, 0 + bge _080A45AE + ldrb r0, [r2, 0x6] + ldr r4, [r3, 0x4] + cmp r0, 0 + beq _080A45CA + ldr r1, [r2, 0x10] +_080A45A2: + ldr r0, [r3] + adds r0, r1 + str r0, [r3] + cmp r0, 0 + blt _080A45A2 + b _080A45CC +_080A45AE: + ldr r1, [r2, 0x10] + ldr r4, [r3, 0x4] + cmp r0, r1 + blt _080A45CC + ldrb r0, [r2, 0x6] + cmp r0, 0 + beq _080A45C8 +_080A45BC: + ldr r0, [r3] + subs r0, r1 + str r0, [r3] + cmp r0, r1 + bge _080A45BC + b _080A45CC +_080A45C8: + subs r0, r1, 0x1 +_080A45CA: + str r0, [r3] +_080A45CC: + cmp r4, 0 + bge _080A45E4 + ldrb r0, [r2, 0x6] + cmp r0, 0 + beq _080A45FE + ldr r1, [r2, 0x14] +_080A45D8: + ldr r0, [r3, 0x4] + adds r0, r1 + str r0, [r3, 0x4] + cmp r0, 0 + blt _080A45D8 + b _080A4600 +_080A45E4: + ldr r1, [r2, 0x14] + cmp r4, r1 + blt _080A4600 + ldrb r0, [r2, 0x6] + cmp r0, 0 + beq _080A45FC +_080A45F0: + ldr r0, [r3, 0x4] + subs r0, r1 + str r0, [r3, 0x4] + cmp r0, r1 + bge _080A45F0 + b _080A4600 +_080A45FC: + subs r0, r1, 0x1 +_080A45FE: + str r0, [r3, 0x4] +_080A4600: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A4580 + + thumb_func_start sub_80A4608 +sub_80A4608: + movs r3, 0x89 + lsls r3, 3 + adds r2, r0, r3 + ldrb r2, [r2] + str r2, [r1] + ldr r2, _080A461C + adds r0, r2 + ldrb r0, [r0] + str r0, [r1, 0x4] + bx lr + .align 2, 0 +_080A461C: .4byte 0x00000449 + thumb_func_end sub_80A4608 + + thumb_func_start sub_80A4620 +sub_80A4620: + movs r3, 0x89 + lsls r3, 3 + adds r2, r0, r3 + ldrb r2, [r2] + lsls r2, 3 + str r2, [r1] + ldr r2, _080A4638 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 3 + str r0, [r1, 0x4] + bx lr + .align 2, 0 +_080A4638: .4byte 0x00000449 + thumb_func_end sub_80A4620 + + thumb_func_start sub_80A463C +sub_80A463C: + movs r3, 0 + str r3, [r1] + str r3, [r1, 0x4] + movs r3, 0x89 + lsls r3, 3 + adds r1, r0, r3 + ldrb r1, [r1] + lsls r1, 11 + str r1, [r2] + ldr r1, _080A465C + adds r0, r1 + ldrb r0, [r0] + lsls r0, 11 + str r0, [r2, 0x4] + bx lr + .align 2, 0 +_080A465C: .4byte 0x00000449 + thumb_func_end sub_80A463C + + thumb_func_start sub_80A4660 +sub_80A4660: + push {r4-r7,lr} + adds r6, r3, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r1, _080A4678 + adds r0, r1 + ldr r4, [r0] + cmp r4, 0 + bne _080A467C + movs r0, 0 + b _080A46B6 + .align 2, 0 +_080A4678: .4byte 0x00000544 +_080A467C: + ldr r0, [r2, 0x4] + lsls r0, 8 + ldr r1, [r2] + adds r0, r1 + ldr r1, _080A46BC + adds r0, r1 + adds r4, r0 + ldr r3, [r6, 0x4] + cmp r3, 0 + ble _080A46B4 + movs r7, 0x80 + lsls r7, 1 +_080A4694: + ldr r1, [r6] + adds r2, r4, 0 + cmp r1, 0 + ble _080A46AC +_080A469C: + ldrb r0, [r2] + ands r0, r5 + adds r2, 0x1 + cmp r0, 0 + bne _080A46B6 + subs r1, 0x1 + cmp r1, 0 + bgt _080A469C +_080A46AC: + adds r4, r7 + subs r3, 0x1 + cmp r3, 0 + bgt _080A4694 +_080A46B4: + movs r0, 0 +_080A46B6: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080A46BC: .4byte 0x00000405 + thumb_func_end sub_80A4660 + + thumb_func_start sub_80A46C0 +sub_80A46C0: + push {r4-r7,lr} + adds r6, r3, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r1, _080A46D8 + adds r0, r1 + ldr r4, [r0] + cmp r4, 0 + bne _080A46DC +_080A46D2: + movs r0, 0 + b _080A4716 + .align 2, 0 +_080A46D8: .4byte 0x00000544 +_080A46DC: + ldr r0, [r2, 0x4] + lsls r0, 8 + ldr r1, [r2] + adds r0, r1 + ldr r1, _080A471C + adds r0, r1 + adds r4, r0 + ldr r3, [r6, 0x4] + cmp r3, 0 + ble _080A4714 + movs r7, 0x80 + lsls r7, 1 +_080A46F4: + ldr r1, [r6] + adds r2, r4, 0 + cmp r1, 0 + ble _080A470C +_080A46FC: + ldrb r0, [r2] + ands r0, r5 + adds r2, 0x1 + cmp r0, r5 + bne _080A46D2 + subs r1, 0x1 + cmp r1, 0 + bgt _080A46FC +_080A470C: + adds r4, r7 + subs r3, 0x1 + cmp r3, 0 + bgt _080A46F4 +_080A4714: + movs r0, 0x1 +_080A4716: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080A471C: .4byte 0x00000405 + thumb_func_end sub_80A46C0 + + thumb_func_start sub_80A4720 +sub_80A4720: + lsls r1, 2 + ldr r3, _080A473C + adds r0, r3 + adds r0, r1 + ldr r1, [r2, 0x4] + lsls r1, 7 + ldr r3, [r0] + adds r3, r1 + ldr r0, [r2] + lsls r0, 1 + adds r3, r0 + ldrh r0, [r3] + bx lr + .align 2, 0 +_080A473C: .4byte 0x0000054c + thumb_func_end sub_80A4720 + + thumb_func_start sub_80A4740 +sub_80A4740: + push {r4,lr} + lsls r1, 2 + ldr r4, _080A4760 + adds r0, r4 + adds r0, r1 + ldr r1, [r2, 0x4] + lsls r1, 7 + ldr r4, [r0] + adds r4, r1 + ldr r0, [r2] + lsls r0, 1 + adds r4, r0 + strh r3, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4760: .4byte 0x0000054c + thumb_func_end sub_80A4740 + + thumb_func_start sub_80A4764 +sub_80A4764: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r9, r0 + ldr r0, _080A47E8 + add r0, r9 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080A4784 + b _080A49CE +_080A4784: + ldr r0, _080A47EC + add r0, r9 + movs r6, 0 + ldrsh r0, [r0, r6] + cmp r0, 0 + beq _080A4864 + mov r4, r9 + ldr r0, _080A47F0 + add r0, r9 + ldr r5, [r0] + ldr r0, _080A47F4 + add r0, r9 + movs r1, 0 + ldrsh r0, [r0, r1] + lsls r0, 20 + lsrs r6, r0, 16 + movs r7, 0 + ldr r0, _080A47F8 + add r0, r9 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r7, r0 + bge _080A484C +_080A47B2: + ldr r1, [r4, 0x4] + cmp r1, 0 + beq _080A4832 + ldrh r0, [r4, 0x2] + subs r0, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + cmp r0, 0 + bgt _080A4832 + ldrh r0, [r4] + subs r0, 0x1 + strh r0, [r4] + lsls r0, 16 + cmp r0, 0 + bgt _080A4808 + ldr r0, _080A47FC + add r0, r9 + ldrb r0, [r0] + cmp r0, 0 + beq _080A4800 + ldrh r0, [r5] + strh r0, [r4, 0x2] + ldrh r0, [r5, 0x2] + strh r0, [r4] + str r1, [r4, 0x8] + b _080A480C + .align 2, 0 +_080A47E8: .4byte 0x00000444 +_080A47EC: .4byte 0x00000466 +_080A47F0: .4byte 0x0000046c +_080A47F4: .4byte 0x0000052c +_080A47F8: .4byte 0x00000464 +_080A47FC: .4byte 0x00000471 +_080A4800: + strh r0, [r4] + strh r0, [r4, 0x2] + str r0, [r4, 0x8] + b _080A480C +_080A4808: + ldrh r0, [r5] + strh r0, [r4, 0x2] +_080A480C: + ldr r0, [r4, 0x8] + cmp r0, 0 + beq _080A4832 + movs r0, 0 + str r0, [sp] + adds r0, r6, 0 + movs r1, 0 + bl sub_8003810 + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r0, 16 + ldr r1, [r4, 0x8] + movs r2, 0xF + bl sub_809971C + ldr r0, [r4, 0x8] + adds r0, 0x3C + str r0, [r4, 0x8] +_080A4832: + adds r7, 0x1 + adds r4, 0x10 + adds r5, 0x4 + adds r0, r6, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, _080A485C + add r0, r9 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r7, r0 + blt _080A47B2 +_080A484C: + movs r0, 0x8E + lsls r0, 3 + add r0, r9 + ldrb r1, [r0] + ldr r0, _080A4860 + add r0, r9 + strb r1, [r0] + b _080A48E6 + .align 2, 0 +_080A485C: .4byte 0x00000464 +_080A4860: .4byte 0x00000471 +_080A4864: + movs r0, 0x88 + lsls r0, 3 + add r0, r9 + ldr r0, [r0] + cmp r0, 0 + beq _080A48E6 + mov r4, r9 + adds r4, 0xE0 + movs r6, 0xA0 + movs r5, 0x1F +_080A4878: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D14 + lsls r0, 24 + cmp r0, 0 + beq _080A48DC + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D40 + lsls r0, 24 + cmp r0, 0 + bne _080A48DC + ldrh r0, [r4, 0x6] + subs r0, 0x1 + strh r0, [r4, 0x6] + lsls r0, 16 + cmp r0, 0 + bgt _080A48DC + ldrh r0, [r4, 0x4] + strh r0, [r4, 0x6] + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bcc _080A48B0 + ldr r0, [r4, 0x8] + str r0, [r4, 0xC] +_080A48B0: + ldr r1, [r4, 0xC] + ldm r1!, {r0} + str r0, [r4, 0x14] + str r1, [r4, 0xC] + ldrb r1, [r4, 0x14] + add r0, sp, 0x4 + strb r1, [r0] + ldrb r1, [r4, 0x15] + adds r0, 0x1 + strb r1, [r0] + ldrb r1, [r4, 0x16] + adds r0, 0x1 + strb r1, [r0] + ldrb r1, [r4, 0x17] + adds r0, 0x1 + strb r1, [r0] + ldr r1, [sp, 0x4] + str r1, [sp] + lsls r0, r6, 16 + lsrs r0, 16 + bl sub_8003810 +_080A48DC: + subs r5, 0x1 + adds r4, 0x18 + adds r6, 0x1 + cmp r5, 0 + bge _080A4878 +_080A48E6: + movs r5, 0 + movs r4, 0x1 +_080A48EA: + movs r2, 0xF8 + lsls r2, 2 + adds r0, r5, r2 + mov r6, r9 + adds r2, r6, r0 + ldrb r0, [r2] + cmp r0, 0 + beq _080A4942 + ldrh r1, [r2, 0x4] + subs r0, r1, 0x1 + strh r0, [r2, 0x4] + lsls r1, 16 + cmp r1, 0 + bgt _080A4942 + ldr r0, [r2, 0x14] + adds r0, 0x4 + str r0, [r2, 0x14] + ldr r1, [r2, 0x24] + lsrs r1, 1 + lsls r1, 1 + ldr r0, [r2, 0x1C] + adds r0, r1 + str r0, [r2, 0x1C] + ldrh r0, [r2, 0x2] + adds r0, 0x1 + movs r3, 0 + strh r0, [r2, 0x2] + ldr r1, [r2, 0xC] + lsls r0, 16 + asrs r0, 16 + movs r6, 0x2 + ldrsh r1, [r1, r6] + cmp r0, r1 + blt _080A4938 + ldr r0, [r2, 0x10] + str r0, [r2, 0x14] + ldr r0, [r2, 0x18] + str r0, [r2, 0x1C] + strh r3, [r2, 0x2] +_080A4938: + movs r0, 0x1 + strb r0, [r2, 0x1] + ldr r0, [r2, 0x14] + ldr r0, [r0] + strh r0, [r2, 0x4] +_080A4942: + adds r5, 0x28 + subs r4, 0x1 + cmp r4, 0 + bge _080A48EA + movs r4, 0x91 + lsls r4, 3 + add r4, r9 + movs r7, 0x8F + lsls r7, 3 + add r7, r9 + movs r0, 0 + mov r8, r0 + b _080A49BC +_080A495C: + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80A3E14 + adds r0, r4, 0 + bl sub_80A3EB0 + movs r6, 0 + movs r2, 0x2 + ldrsh r1, [r4, r2] + ldr r0, _080A4998 + add r0, r9 + movs r2, 0 + ldrsh r0, [r0, r2] + adds r5, r1, r0 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x1 + add r8, r2 + movs r1, 0x50 + adds r1, r4 + mov r10, r1 + adds r7, 0x8 + cmp r6, r0 + bge _080A49BA +_080A498E: + cmp r5, 0 + beq _080A499C + cmp r5, 0x1 + beq _080A49A6 + b _080A49AE + .align 2, 0 +_080A4998: .4byte 0x00000536 +_080A499C: + ldr r0, [r4, 0x48] + ldr r1, [r4, 0x4C] + bl sub_800CCA0 + b _080A49AE +_080A49A6: + ldr r0, [r4, 0x48] + ldr r1, [r4, 0x4C] + bl sub_800CCAC +_080A49AE: + adds r6, 0x1 + adds r5, 0x1 + movs r2, 0x4 + ldrsh r0, [r4, r2] + cmp r6, r0 + blt _080A498E +_080A49BA: + mov r4, r10 +_080A49BC: + ldr r0, _080A49E0 + add r0, r9 + ldr r0, [r0] + cmp r8, r0 + blt _080A495C + ldr r1, _080A49E4 + add r1, r9 + movs r0, 0x1 + strb r0, [r1] +_080A49CE: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A49E0: .4byte 0x00000474 +_080A49E4: .4byte 0x0000052a + thumb_func_end sub_80A4764 + + thumb_func_start sub_80A49E8 +sub_80A49E8: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + ldr r0, _080A4A74 + adds r5, r6, r0 + movs r1, 0xFF + lsls r1, 2 + adds r4, r6, r1 + ldr r0, _080A4A78 + adds r0, r6 + mov r8, r0 + movs r7, 0x1 +_080A4A02: + ldrb r0, [r5] + cmp r0, 0 + beq _080A4A1C + ldr r0, [r4, 0x4] + ldr r1, [r4] + ldr r2, [r4, 0x8] + bl MemoryCopy32 + movs r0, 0 + strb r0, [r5] + movs r0, 0x1 + mov r1, r8 + strb r0, [r1] +_080A4A1C: + adds r5, 0x28 + adds r4, 0x28 + subs r7, 0x1 + cmp r7, 0 + bge _080A4A02 + ldr r1, _080A4A78 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080A4A68 + movs r5, 0 + adds r1, 0xC + adds r0, r6, r1 + movs r1, 0 + ldrsh r4, [r0, r1] + movs r1, 0xA7 + lsls r1, 3 + adds r0, r6, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r5, r0 + bge _080A4A60 + movs r0, 0xA7 + lsls r0, 3 + adds r7, r6, r0 +_080A4A4E: + adds r0, r4, 0x2 + bl sub_80098F8 + adds r5, 0x1 + adds r4, 0x1 + movs r1, 0 + ldrsh r0, [r7, r1] + cmp r5, r0 + blt _080A4A4E +_080A4A60: + ldr r0, _080A4A78 + adds r1, r6, r0 + movs r0, 0 + strb r0, [r1] +_080A4A68: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A4A74: .4byte 0x000003e1 +_080A4A78: .4byte 0x0000052a + thumb_func_end sub_80A49E8 + + thumb_func_start sub_80A4A7C +sub_80A4A7C: + push {r4,lr} + sub sp, 0x4 + ldr r4, _080A4AB8 + movs r0, 0x88 + lsls r0, 1 + movs r1, 0x6 + bl MemoryAlloc + str r0, [r4] + adds r2, r0, 0 + adds r2, 0xE4 + ldr r1, _080A4ABC + strh r1, [r2] + ldr r1, _080A4AC0 + movs r3, 0x1 + negs r3, r3 + str r3, [sp] + movs r2, 0 + bl sub_809D600 + movs r0, 0 + bl sub_80A5E8C + bl sub_80A4AEC + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4AB8: .4byte gUnknown_3001B6C +_080A4ABC: .4byte 0x0000ffff +_080A4AC0: .4byte gUnknown_811736C + thumb_func_end sub_80A4A7C + + thumb_func_start sub_80A4AC4 +sub_80A4AC4: + push {r4,lr} + bl sub_80A4AEC + bl sub_80A5EBC + ldr r4, _080A4AE8 + ldr r0, [r4] + bl sub_809D648 + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4AE8: .4byte gUnknown_3001B6C + thumb_func_end sub_80A4AC4 + + thumb_func_start sub_80A4AEC +sub_80A4AEC: + push {r4,lr} + movs r0, 0 + movs r1, 0x37 + bl sub_80015C0 + movs r0, 0 + movs r1, 0x38 + bl sub_80015C0 + ldr r0, _080A4B2C + ldr r0, [r0] + ldr r1, _080A4B30 + bl sub_809D754 + ldr r4, _080A4B34 + ldr r0, [r4] + cmp r0, 0 + beq _080A4B1E + bl sub_80A2D00 + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] +_080A4B1E: + movs r0, 0 + bl sub_80A5EDC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4B2C: .4byte gUnknown_3001B6C +_080A4B30: .4byte gUnknown_8117538 +_080A4B34: .4byte gUnknown_3001B70 + thumb_func_end sub_80A4AEC + + thumb_func_start sub_80A4B38 +sub_80A4B38: + push {lr} + bl nullsub_121 + ldr r0, _080A4B50 + ldr r0, [r0] + cmp r0, 0 + beq _080A4B4A + bl sub_80A2D68 +_080A4B4A: + pop {r0} + bx r0 + .align 2, 0 +_080A4B50: .4byte gUnknown_3001B70 + thumb_func_end sub_80A4B38 + + thumb_func_start sub_80A4B54 +sub_80A4B54: + push {lr} + ldr r0, _080A4B6C + ldr r0, [r0] + cmp r0, 0 + beq _080A4B62 + bl sub_80A2D88 +_080A4B62: + bl nullsub_122 + pop {r0} + bx r0 + .align 2, 0 +_080A4B6C: .4byte gUnknown_3001B70 + thumb_func_end sub_80A4B54 + + thumb_func_start GroundMap_GetStationScript +GroundMap_GetStationScript: + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + mov r8, r0 + adds r4, r1, 0 + adds r6, r2, 0 + adds r5, r3, 0 + lsls r4, 16 + asrs r4, 16 + lsls r6, 16 + asrs r6, 16 + lsls r5, 24 + asrs r5, 24 + adds r0, r4, 0 + bl sub_80A77A0 + ldr r1, _080A4BE0 + adds r0, r4, 0 + bl sub_80A77D0 + mov r9, r0 + ldr r1, _080A4BE4 + str r5, [sp] + movs r0, 0 + adds r2, r4, 0 + adds r3, r6, 0 + bl Log + lsls r1, r6, 3 + mov r2, r9 + ldr r0, [r2, 0x4] + adds r0, r1 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + ldr r0, [r0, 0x4] + adds r0, r1 + ldr r0, [r0, 0x24] + ldr r0, [r0] + ldr r0, [r0, 0x8] + mov r1, r8 + str r0, [r1] + movs r0, 0x2 + strh r0, [r1, 0x4] + strh r6, [r1, 0x6] + strb r5, [r1, 0x8] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A4BE0: .4byte gUnknown_8117560 +_080A4BE4: .4byte gUnknown_811756C + thumb_func_end GroundMap_GetStationScript + + thumb_func_start sub_80A4BE8 +sub_80A4BE8: + push {lr} + lsls r1, 16 + asrs r1, 16 + movs r2, 0 + movs r3, 0 + bl GroundMap_GetStationScript + pop {r0} + bx r0 + thumb_func_end sub_80A4BE8 + + thumb_func_start GroundMap_ExecuteEvent +GroundMap_ExecuteEvent: + push {r4,r5,lr} + sub sp, 0xC + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + asrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + ldr r1, _080A4C44 + movs r0, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl Log + movs r0, 0 + mov r1, sp + adds r2, r4, 0 + bl sub_809D710 + cmp r5, 0 + beq _080A4C2C + mov r1, sp + movs r0, 0x5 + strh r0, [r1, 0x4] +_080A4C2C: + ldr r0, _080A4C48 + ldr r0, [r0] + ldr r3, _080A4C4C + movs r1, 0 + mov r2, sp + bl GroundScript_ExecutePP + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4C44: .4byte gUnknown_8117594 +_080A4C48: .4byte gUnknown_3001B6C +_080A4C4C: .4byte gUnknown_81175E0 + thumb_func_end GroundMap_ExecuteEvent + + thumb_func_start GroundMap_ExecuteStation +GroundMap_ExecuteStation: + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x14 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + mov r8, r3 + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + lsls r6, 24 + asrs r6, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _080A4CB8 + str r6, [sp] + str r0, [sp, 0x4] + movs r0, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl Log + add r0, sp, 0x8 + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl GroundMap_GetStationScript + mov r0, r8 + cmp r0, 0 + beq _080A4C9C + add r1, sp, 0x8 + movs r0, 0x5 + strh r0, [r1, 0x4] +_080A4C9C: + ldr r0, _080A4CBC + ldr r0, [r0] + ldr r3, _080A4CC0 + movs r1, 0 + add r2, sp, 0x8 + bl GroundScript_ExecutePP + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A4CB8: .4byte gUnknown_81175EC +_080A4CBC: .4byte gUnknown_3001B6C +_080A4CC0: .4byte gUnknown_8117644 + thumb_func_end GroundMap_ExecuteStation + + thumb_func_start GroundMap_ExecuteEnter +GroundMap_ExecuteEnter: + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 16 + asrs r4, 16 + ldr r1, _080A4D08 + movs r0, 0 + adds r2, r4, 0 + bl Log + mov r0, sp + adds r1, r4, 0 + bl sub_80A4BE8 + mov r1, sp + movs r3, 0 + movs r2, 0 + movs r0, 0x2 + strh r0, [r1, 0x4] + mov r0, sp + strh r2, [r0, 0x6] + strb r3, [r0, 0x8] + ldr r0, _080A4D0C + ldr r0, [r0] + ldr r3, _080A4D10 + movs r1, 0 + mov r2, sp + bl GroundScript_ExecutePP + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4D08: .4byte gUnknown_8117650 +_080A4D0C: .4byte gUnknown_3001B6C +_080A4D10: .4byte gUnknown_8117698 + thumb_func_end GroundMap_ExecuteEnter + + thumb_func_start sub_80A4D14 +sub_80A4D14: + push {lr} + ldr r0, _080A4D28 + ldr r0, [r0] + bl sub_809D678 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080A4D28: .4byte gUnknown_3001B6C + thumb_func_end sub_80A4D14 + + thumb_func_start sub_80A4D2C +sub_80A4D2C: + push {lr} + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + ldr r0, _080A4D44 + ldr r0, [r0] + bl sub_809D968 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080A4D44: .4byte gUnknown_3001B6C + thumb_func_end sub_80A4D2C + + thumb_func_start sub_80A4D48 +sub_80A4D48: + push {lr} + lsls r0, 16 + asrs r2, r0, 16 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + beq _080A4D74 + ldr r1, _080A4D70 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x5 + beq _080A4D6C + cmp r0, 0x8 + bne _080A4D74 +_080A4D6C: + movs r0, 0 + b _080A4D76 + .align 2, 0 +_080A4D70: .4byte gUnknown_811BAF4 +_080A4D74: + movs r0, 0x1 +_080A4D76: + pop {r1} + bx r1 + thumb_func_end sub_80A4D48 + + thumb_func_start sub_80A4D7C +sub_80A4D7C: + push {r4,r5,lr} + lsls r0, 16 + asrs r5, r0, 16 + cmp r5, 0x9 + beq _080A4D94 + cmp r5, 0x9 + bgt _080A4D90 + cmp r5, 0x2 + beq _080A4DB6 + b _080A4DC4 +_080A4D90: + cmp r5, 0xC + bne _080A4DC4 +_080A4D94: + movs r0, 0 + movs r1, 0x27 + bl sub_8001658 + adds r4, r0, 0 + movs r0, 0 + movs r1, 0x28 + bl sub_8001658 + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 1 + adds r1, r0 + adds r1, r5, r1 + lsls r1, 16 + asrs r5, r1, 16 + b _080A4DC4 +_080A4DB6: + movs r0, 0x6 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _080A4DC4 + movs r5, 0x3 +_080A4DC4: + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80A4D7C + + thumb_func_start GroundMap_Select +GroundMap_Select: + push {r4-r6,lr} + lsls r0, 16 + asrs r5, r0, 16 + ldr r1, _080A4E38 + movs r0, 0 + adds r2, r5, 0 + bl Log + movs r0, 0 + movs r1, 0x37 + bl sub_80015C0 + movs r0, 0 + movs r1, 0x38 + bl sub_80015C0 + movs r0, 0 + bl sub_80A5EDC + ldr r4, _080A4E3C + ldr r0, [r4] + cmp r0, 0 + beq _080A4E08 + bl sub_80A2D00 + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] +_080A4E08: + ldr r0, _080A4E40 + movs r1, 0x6 + bl MemoryAlloc + adds r2, r0, 0 + str r2, [r4] + ldr r0, _080A4E44 + ldr r0, [r0] + adds r0, 0xE4 + strh r5, [r0] + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + bne _080A4E4C + ldr r1, _080A4E48 + adds r0, r2, 0 + bl sub_80A2B40 + ldr r0, [r4] + adds r1, r5, 0 + bl sub_80A2FBC + b _080A50BA + .align 2, 0 +_080A4E38: .4byte gUnknown_81176A4 +_080A4E3C: .4byte gUnknown_3001B70 +_080A4E40: .4byte 0x0000055c +_080A4E44: .4byte gUnknown_3001B6C +_080A4E48: .4byte gUnknown_8117324 +_080A4E4C: + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 2 + ldr r1, _080A4E6C + adds r6, r0, r1 + ldrh r0, [r6] + adds r0, 0x1 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + bhi _080A4F20 + lsls r0, 2 + ldr r1, _080A4E70 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A4E6C: .4byte gUnknown_811BAF4 +_080A4E70: .4byte _080A4E74 + .align 2, 0 +_080A4E74: + .4byte _080A4F08 + .4byte _080A4F20 + .4byte _080A4F20 + .4byte _080A4F20 + .4byte _080A4F20 + .4byte _080A4F20 + .4byte _080A4EA8 + .4byte _080A4EA8 + .4byte _080A4EA8 + .4byte _080A4EA8 + .4byte _080A4EA8 + .4byte _080A4ECC + .4byte _080A4ECC +_080A4EA8: + ldr r0, _080A4EC0 + ldr r0, [r0] + ldr r1, _080A4EC4 + bl sub_80A2B40 + ldr r1, _080A4EC8 + movs r2, 0x80 + lsls r2, 5 + adds r0, r2, 0 + strh r0, [r1] + b _080A4F30 + .align 2, 0 +_080A4EC0: .4byte gUnknown_3001B70 +_080A4EC4: .4byte gUnknown_811733C +_080A4EC8: .4byte gUnknown_2026E4E +_080A4ECC: + ldr r4, _080A4EDC + movs r1, 0 + ldrsh r0, [r4, r1] + movs r1, 0x1 + negs r1, r1 + ldr r6, _080A4EE0 + b _080A4EEA + .align 2, 0 +_080A4EDC: .4byte gUnknown_81173C0 +_080A4EE0: .4byte gUnknown_3001B70 +_080A4EE4: + adds r4, 0xC + movs r2, 0 + ldrsh r0, [r4, r2] +_080A4EEA: + cmp r0, r1 + beq _080A4EF2 + cmp r0, r5 + bne _080A4EE4 +_080A4EF2: + ldr r0, [r6] + bl MemoryFree + movs r0, 0 + str r0, [r6] + adds r1, r4, 0x4 + ldr r2, [r4, 0x8] + adds r0, r5, 0 + bl GroundMap_SelectDungeon + b _080A50BA +_080A4F08: + ldr r0, _080A4F18 + ldr r1, _080A4F1C + movs r2, 0 + ldrsh r3, [r6, r2] + adds r2, r5, 0 + bl FatalError + .align 2, 0 +_080A4F18: .4byte gUnknown_81176D0 +_080A4F1C: .4byte gUnknown_81176DC +_080A4F20: + ldr r0, _080A4FA0 + ldr r0, [r0] + ldr r1, _080A4FA4 + bl sub_80A2B40 + movs r0, 0x1 + bl sub_80A5EDC +_080A4F30: + ldr r5, _080A4FA0 + ldr r0, [r5] + movs r2, 0x4 + ldrsh r1, [r6, r2] + bl sub_80A2FBC + ldr r0, _080A4FA8 + ldr r0, [r0] + mov r12, r0 + adds r0, 0xE8 + movs r1, 0 + str r1, [r0] + adds r0, 0x4 + str r1, [r0] + adds r0, 0x4 + str r1, [r0] + adds r0, 0x4 + str r1, [r0] + adds r0, 0x4 + str r1, [r0] + adds r0, 0x4 + str r1, [r0] + movs r4, 0x80 + lsls r4, 1 + add r4, r12 + movs r3, 0x82 + lsls r3, 1 + add r3, r12 + movs r2, 0x84 + lsls r2, 1 + add r2, r12 + movs r0, 0x86 + lsls r0, 1 + add r0, r12 + str r1, [r0] + str r1, [r2] + str r1, [r3] + str r1, [r4] + mov r0, r12 + adds r0, 0xE4 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0xAD + beq _080A5034 + cmp r0, 0xAD + bgt _080A4FC0 + cmp r0, 0xA3 + bgt _080A4FAC + cmp r0, 0xA2 + bge _080A4FEE + cmp r0, 0x4 + beq _080A5084 + cmp r0, 0xA1 + beq _080A5084 + b _080A50A2 + .align 2, 0 +_080A4FA0: .4byte gUnknown_3001B70 +_080A4FA4: .4byte gUnknown_8117324 +_080A4FA8: .4byte gUnknown_3001B6C +_080A4FAC: + cmp r0, 0xAA + beq _080A500C + cmp r0, 0xAA + bgt _080A4FBA + cmp r0, 0xA8 + beq _080A500C + b _080A50A2 +_080A4FBA: + cmp r0, 0xAB + beq _080A5018 + b _080A50A2 +_080A4FC0: + cmp r0, 0xBA + beq _080A506A + cmp r0, 0xBA + bgt _080A4FD6 + cmp r0, 0xAF + beq _080A5072 + cmp r0, 0xAF + blt _080A5044 + cmp r0, 0xB0 + beq _080A5060 + b _080A50A2 +_080A4FD6: + cmp r0, 0xDF + beq _080A4FEE + cmp r0, 0xDF + bgt _080A4FE4 + cmp r0, 0xC0 + beq _080A5020 + b _080A50A2 +_080A4FE4: + cmp r0, 0xE0 + beq _080A508E + cmp r0, 0xE1 + beq _080A5096 + b _080A50A2 +_080A4FEE: + ldr r0, _080A5000 + ldr r0, [r0] + movs r1, 0x4 + bl sub_80A3BB0 + ldr r1, _080A5004 + ldr r2, _080A5008 + b _080A5050 + .align 2, 0 +_080A5000: .4byte gUnknown_3001B70 +_080A5004: .4byte gUnknown_2026E4E +_080A5008: .4byte 0x00000808 +_080A500C: + ldr r0, _080A5014 + ldr r0, [r0] + b _080A5062 + .align 2, 0 +_080A5014: .4byte gUnknown_3001B70 +_080A5018: + ldr r0, [r5] + movs r1, 0x1 + bl sub_80A3BB0 +_080A5020: + ldr r0, _080A5030 + ldr r0, [r0] + movs r1, 0 + movs r2, 0 + bl sub_80A3B80 + b _080A50A2 + .align 2, 0 +_080A5030: .4byte gUnknown_3001B70 +_080A5034: + ldr r1, _080A503C + ldr r2, _080A5040 + b _080A5050 + .align 2, 0 +_080A503C: .4byte gUnknown_2026E4E +_080A5040: .4byte 0x00001010 +_080A5044: + ldr r0, [r5] + movs r1, 0x4 + bl sub_80A3BB0 + ldr r1, _080A5058 + ldr r2, _080A505C +_080A5050: + adds r0, r2, 0 + strh r0, [r1] + b _080A50A2 + .align 2, 0 +_080A5058: .4byte gUnknown_2026E4E +_080A505C: .4byte 0x0000080c +_080A5060: + ldr r0, [r5] +_080A5062: + movs r1, 0x1 + bl sub_80A3BB0 + b _080A50A2 +_080A506A: + ldr r0, _080A507C + ldr r2, _080A5080 + adds r1, r2, 0 + strh r1, [r0] +_080A5072: + ldr r0, [r5] + movs r1, 0x4 + bl sub_80A3BB0 + b _080A50A2 + .align 2, 0 +_080A507C: .4byte gUnknown_2026E4E +_080A5080: .4byte 0x00001010 +_080A5084: + ldr r0, [r5] + movs r1, 0x3 + bl sub_80A3BB0 + b _080A50A2 +_080A508E: + ldr r0, [r5] + movs r1, 0x3 + bl sub_80A3BB0 +_080A5096: + ldr r0, _080A50C0 + ldr r0, [r0] + movs r1, 0 + movs r2, 0 + bl sub_80A3B80 +_080A50A2: + movs r0, 0x6 + ldrsh r1, [r6, r0] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080A50B4 + adds r0, r1, 0 + bl GroundWeather_Select +_080A50B4: + ldr r0, _080A50C4 + bl sub_80A56D8 +_080A50BA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A50C0: .4byte gUnknown_3001B70 +_080A50C4: .4byte gUnknown_81176F8 + thumb_func_end GroundMap_Select + + thumb_func_start GroundMap_SelectDungeon +GroundMap_SelectDungeon: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r8, r1 + mov r10, r2 + lsls r0, 16 + asrs r5, r0, 16 + ldr r1, _080A514C + movs r0, 0 + adds r2, r5, 0 + bl Log + movs r0, 0 + movs r1, 0x37 + bl sub_80015C0 + movs r0, 0 + movs r1, 0x38 + bl sub_80015C0 + movs r0, 0 + bl sub_80A5EDC + ldr r7, _080A5150 + ldr r0, [r7] + cmp r0, 0 + beq _080A5110 + bl sub_80A2D00 + ldr r0, [r7] + bl MemoryFree + movs r0, 0 + str r0, [r7] +_080A5110: + ldr r0, _080A5154 + movs r1, 0x6 + bl MemoryAlloc + adds r2, r0, 0 + str r2, [r7] + ldr r0, _080A5158 + mov r9, r0 + ldr r0, [r0] + adds r0, 0xE4 + movs r4, 0 + strh r5, [r0] + movs r6, 0x1 + negs r6, r6 + cmp r5, r6 + beq _080A5138 + mov r1, r8 + ldrb r0, [r1] + cmp r0, 0x63 + bne _080A5160 +_080A5138: + ldr r1, _080A515C + adds r0, r2, 0 + bl sub_80A2B40 + ldr r0, [r7] + adds r1, r6, 0 + bl sub_80A2FBC + b _080A51EC + .align 2, 0 +_080A514C: .4byte gUnknown_8117700 +_080A5150: .4byte gUnknown_3001B70 +_080A5154: .4byte 0x0000055c +_080A5158: .4byte gUnknown_3001B6C +_080A515C: .4byte gUnknown_8117324 +_080A5160: + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 2 + ldr r1, _080A5180 + adds r6, r0, r1 + ldrh r0, [r6] + subs r0, 0xA + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bls _080A518C + ldr r0, _080A5184 + ldr r1, _080A5188 + adds r2, r5, 0 + bl FatalError + .align 2, 0 +_080A5180: .4byte gUnknown_811BAF4 +_080A5184: .4byte gUnknown_8117734 +_080A5188: .4byte gUnknown_8117740 +_080A518C: + ldr r1, _080A51FC + adds r0, r2, 0 + bl sub_80A2B40 + movs r0, 0x1 + bl sub_80A5EDC + ldr r0, [r7] + movs r2, 0x4 + ldrsh r1, [r6, r2] + mov r2, r8 + mov r3, r10 + bl sub_80A3440 + mov r0, r9 + ldr r0, [r0] + mov r12, r0 + adds r0, 0xE8 + str r4, [r0] + adds r0, 0x4 + str r4, [r0] + adds r0, 0x4 + str r4, [r0] + adds r0, 0x4 + str r4, [r0] + adds r0, 0x4 + str r4, [r0] + adds r0, 0x4 + str r4, [r0] + movs r3, 0x80 + lsls r3, 1 + add r3, r12 + movs r2, 0x82 + lsls r2, 1 + add r2, r12 + movs r1, 0x84 + lsls r1, 1 + add r1, r12 + movs r0, 0x86 + lsls r0, 1 + add r0, r12 + str r4, [r0] + str r4, [r1] + str r4, [r2] + str r4, [r3] + ldr r0, _080A5200 + bl sub_80A56D8 +_080A51EC: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A51FC: .4byte gUnknown_8117354 +_080A5200: .4byte gUnknown_8117754 + thumb_func_end GroundMap_SelectDungeon + + thumb_func_start sub_80A5204 +sub_80A5204: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + str r0, [sp] + mov r8, r1 + str r2, [sp, 0x4] + str r3, [sp, 0x8] + movs r1, 0x8 + ldrsh r0, [r2, r1] + cmp r0, 0 + bgt _080A5222 + b _080A53EA +_080A5222: + mov r5, r8 + ldr r2, [sp] + mov r12, r2 + movs r0, 0 + ldr r3, [sp, 0x4] + ldrb r3, [r3, 0x1] + str r3, [sp, 0x10] + ldr r1, [sp, 0x4] + ldrh r2, [r1, 0xA] + mov r1, sp + strh r2, [r1, 0xC] + movs r1, 0xFF +_080A523A: + adds r0, 0x1 + mov r10, r0 + movs r3, 0xFF + mov r9, r3 +_080A5242: + mov r0, r12 + strb r1, [r0] + movs r2, 0x1 + add r12, r2 + movs r3, 0x1 + negs r3, r3 + add r9, r3 + mov r0, r9 + cmp r0, 0 + bge _080A5242 + mov r0, r10 + cmp r0, 0x3 + ble _080A523A + movs r1, 0 + ldr r2, [sp, 0x10] + cmp r1, r2 + blt _080A5266 + b _080A53BA +_080A5266: + ldr r3, [sp, 0x4] + ldrb r7, [r3] +_080A526A: + adds r0, 0x1 + mov r10, r0 + adds r0, r1, 0x1 + str r0, [sp, 0x14] + movs r0, 0xFF + movs r2, 0x4 + mov r9, r2 +_080A5278: + mov r3, r12 + strb r0, [r3] + movs r2, 0x1 + add r12, r2 + movs r3, 0x1 + negs r3, r3 + add r9, r3 + mov r2, r9 + cmp r2, 0 + bge _080A5278 + movs r3, 0x5 + mov r9, r3 + movs r0, 0 + cmp r1, 0 + bne _080A5308 + cmp r1, r7 + bge _080A5394 +_080A529A: + ldrb r1, [r5] + adds r5, 0x1 + cmp r1, 0xBF + ble _080A52C2 + adds r6, r0, 0 + subs r6, 0xBF + cmp r1, 0xBF + ble _080A5300 + adds r2, r1, 0 + subs r2, 0xBF +_080A52AE: + ldrb r0, [r5] + mov r3, r12 + strb r0, [r3] + adds r5, 0x1 + movs r0, 0x1 + add r12, r0 + subs r2, 0x1 + cmp r2, 0 + bne _080A52AE + b _080A5300 +_080A52C2: + cmp r1, 0x7F + ble _080A52E6 + ldrb r4, [r5] + adds r5, 0x1 + adds r6, r0, 0 + subs r6, 0x7F + cmp r1, 0x7F + ble _080A5300 + adds r2, r1, 0 + subs r2, 0x7F +_080A52D6: + mov r3, r12 + strb r4, [r3] + movs r0, 0x1 + add r12, r0 + subs r2, 0x1 + cmp r2, 0 + bne _080A52D6 + b _080A5300 +_080A52E6: + movs r2, 0 + adds r6, r0, 0x1 + cmp r2, r1 + bgt _080A5300 + movs r0, 0 + adds r2, r1, 0x1 +_080A52F2: + mov r3, r12 + strb r0, [r3] + movs r3, 0x1 + add r12, r3 + subs r2, 0x1 + cmp r2, 0 + bne _080A52F2 +_080A5300: + adds r0, r6, r1 + cmp r0, r7 + blt _080A529A + b _080A5394 +_080A5308: + ldr r4, _080A5340 + add r4, r12 + cmp r0, r7 + bge _080A5394 +_080A5310: + ldrb r3, [r5] + adds r5, 0x1 + cmp r3, 0xBF + ble _080A5344 + adds r6, r0, 0 + subs r6, 0xBF + cmp r3, 0xBF + ble _080A538E + adds r2, r3, 0 + subs r2, 0xBF +_080A5324: + ldrb r1, [r5] + ldrb r0, [r4] + eors r1, r0 + mov r0, r12 + strb r1, [r0] + adds r4, 0x1 + adds r5, 0x1 + movs r1, 0x1 + add r12, r1 + subs r2, 0x1 + cmp r2, 0 + bne _080A5324 + b _080A538E + .align 2, 0 +_080A5340: .4byte 0xffffff00 +_080A5344: + cmp r3, 0x7F + ble _080A5372 + ldrb r2, [r5] + mov r8, r2 + adds r5, 0x1 + adds r6, r0, 0 + subs r6, 0x7F + cmp r3, 0x7F + ble _080A538E + adds r2, r3, 0 + subs r2, 0x7F +_080A535A: + ldrb r1, [r4] + mov r0, r8 + eors r0, r1 + mov r1, r12 + strb r0, [r1] + adds r4, 0x1 + movs r0, 0x1 + add r12, r0 + subs r2, 0x1 + cmp r2, 0 + bne _080A535A + b _080A538E +_080A5372: + movs r2, 0 + adds r6, r0, 0x1 + cmp r2, r3 + bgt _080A538E + adds r2, r3, 0x1 +_080A537C: + ldrb r0, [r4] + mov r1, r12 + strb r0, [r1] + adds r4, 0x1 + movs r0, 0x1 + add r12, r0 + subs r2, 0x1 + cmp r2, 0 + bne _080A537C +_080A538E: + adds r0, r6, r3 + cmp r0, r7 + blt _080A5310 +_080A5394: + add r9, r7 + mov r1, r9 + cmp r1, 0xFF + bgt _080A53AE + movs r0, 0xFF +_080A539E: + mov r2, r12 + strb r0, [r2] + movs r3, 0x1 + add r12, r3 + add r9, r3 + mov r1, r9 + cmp r1, 0xFF + ble _080A539E +_080A53AE: + ldr r1, [sp, 0x14] + mov r0, r10 + ldr r2, [sp, 0x10] + cmp r1, r2 + bge _080A53BA + b _080A526A +_080A53BA: + ldr r3, [sp, 0x8] + cmp r0, r3 + bge _080A53E6 + movs r1, 0xFF +_080A53C2: + adds r0, 0x1 + mov r10, r0 + movs r0, 0xFF + mov r9, r0 +_080A53CA: + mov r2, r12 + strb r1, [r2] + movs r3, 0x1 + add r12, r3 + movs r0, 0x1 + negs r0, r0 + add r9, r0 + mov r2, r9 + cmp r2, 0 + bge _080A53CA + mov r0, r10 + ldr r3, [sp, 0x8] + cmp r0, r3 + blt _080A53C2 +_080A53E6: + mov r8, r5 + b _080A547E +_080A53EA: + ldr r1, [sp] + movs r0, 0 + ldr r2, [sp, 0x4] + ldrb r2, [r2, 0x1] + str r2, [sp, 0x10] + ldr r3, [sp, 0x4] + ldrh r2, [r3, 0xA] + mov r3, sp + strh r2, [r3, 0xC] + movs r6, 0xFF +_080A53FE: + adds r5, r0, 0x1 + movs r4, 0xFF +_080A5402: + strb r6, [r1] + adds r1, 0x1 + subs r4, 0x1 + cmp r4, 0 + bge _080A5402 + adds r0, r5, 0 + cmp r0, 0x3 + ble _080A53FE + movs r4, 0 + ldr r3, [sp, 0x10] + cmp r4, r3 + bge _080A5460 + ldr r2, [sp, 0x4] + ldrb r7, [r2] + movs r3, 0xFF +_080A5420: + adds r5, r0, 0x1 + adds r2, r4, 0x1 + movs r4, 0x4 +_080A5426: + strb r3, [r1] + adds r1, 0x1 + subs r4, 0x1 + cmp r4, 0 + bge _080A5426 + movs r4, 0x5 + cmp r7, 0 + beq _080A5444 + movs r6, 0 + adds r0, r7, 0 +_080A543A: + strb r6, [r1] + adds r1, 0x1 + subs r0, 0x1 + cmp r0, 0 + bne _080A543A +_080A5444: + adds r4, r7 + cmp r4, 0xFF + bgt _080A5456 + movs r0, 0xFF +_080A544C: + strb r0, [r1] + adds r1, 0x1 + adds r4, 0x1 + cmp r4, 0xFF + ble _080A544C +_080A5456: + adds r4, r2, 0 + adds r0, r5, 0 + ldr r2, [sp, 0x10] + cmp r4, r2 + blt _080A5420 +_080A5460: + ldr r3, [sp, 0x8] + cmp r0, r3 + bge _080A547E + movs r6, 0xFF +_080A5468: + adds r5, r0, 0x1 + movs r4, 0xFF +_080A546C: + strb r6, [r1] + adds r1, 0x1 + subs r4, 0x1 + cmp r4, 0 + bge _080A546C + adds r0, r5, 0 + ldr r2, [sp, 0x8] + cmp r0, r2 + blt _080A5468 +_080A547E: + mov r3, sp + ldrh r3, [r3, 0xC] + lsls r0, r3, 16 + cmp r0, 0 + bgt _080A548A + b _080A5590 +_080A548A: + mov r6, r8 + ldr r0, [sp] + movs r1, 0x80 + lsls r1, 3 + adds r2, r0, r1 + movs r0, 0 + ldr r3, [sp, 0x10] + cmp r0, r3 + bge _080A5586 + movs r1, 0xFB + mov r10, r1 +_080A54A0: + adds r2, 0x5 + movs r4, 0 + cmp r0, 0 + bne _080A54EC + ldr r3, [sp, 0x4] + ldrb r7, [r3] + movs r1, 0x1 + mov r9, r1 + cmp r0, r7 + bge _080A5574 +_080A54B4: + ldrb r1, [r6] + adds r6, 0x1 + cmp r1, 0x7F + ble _080A54DE + subs r4, 0x7F + cmp r1, 0x7F + ble _080A54D6 + movs r5, 0x80 + adds r3, r1, 0 + subs r3, 0x7F +_080A54C8: + ldrb r0, [r2] + orrs r0, r5 + strb r0, [r2] + adds r2, 0x1 + subs r3, 0x1 + cmp r3, 0 + bne _080A54C8 +_080A54D6: + adds r4, r1 + ldr r3, [sp, 0x4] + ldrb r7, [r3] + b _080A54E6 +_080A54DE: + adds r0, r1, 0x1 + adds r2, r0 + adds r0, r4, 0x1 + adds r4, r0, r1 +_080A54E6: + cmp r4, r7 + blt _080A54B4 + b _080A5574 +_080A54EC: + ldr r1, _080A5538 + adds r1, r2 + mov r12, r1 + ldr r3, [sp, 0x4] + ldrb r7, [r3] + adds r0, 0x1 + mov r9, r0 + cmp r4, r7 + bge _080A5574 +_080A54FE: + ldrb r5, [r6] + adds r6, 0x1 + cmp r5, 0x7F + ble _080A553C + subs r4, 0x7F + cmp r5, 0x7F + ble _080A556A + movs r7, 0x80 + movs r0, 0x80 + mov r8, r0 + adds r3, r5, 0 + subs r3, 0x7F +_080A5516: + mov r0, r12 + ldrb r1, [r0] + mov r0, r8 + ands r0, r1 + movs r1, 0x1 + add r12, r1 + cmp r0, 0 + bne _080A552C + ldrb r0, [r2] + orrs r0, r7 + strb r0, [r2] +_080A552C: + adds r2, 0x1 + subs r3, 0x1 + cmp r3, 0 + bne _080A5516 + b _080A556A + .align 2, 0 +_080A5538: .4byte 0xffffff00 +_080A553C: + movs r3, 0 + adds r4, 0x1 + cmp r3, r5 + bgt _080A556A + movs r7, 0x80 + movs r3, 0x80 + mov r8, r3 + adds r3, r5, 0x1 +_080A554C: + mov r0, r12 + ldrb r1, [r0] + mov r0, r8 + ands r0, r1 + movs r1, 0x1 + add r12, r1 + cmp r0, 0 + beq _080A5562 + ldrb r0, [r2] + orrs r0, r7 + strb r0, [r2] +_080A5562: + adds r2, 0x1 + subs r3, 0x1 + cmp r3, 0 + bne _080A554C +_080A556A: + adds r4, r5 + ldr r3, [sp, 0x4] + ldrb r7, [r3] + cmp r4, r7 + blt _080A54FE +_080A5574: + mov r1, r10 + subs r0, r1, r7 + adds r2, r0 + mov r0, r9 + ldr r3, [sp, 0x4] + ldrb r3, [r3, 0x1] + str r3, [sp, 0x10] + cmp r0, r3 + blt _080A54A0 +_080A5586: + mov r8, r6 + ldr r0, [sp, 0x4] + ldrh r1, [r0, 0xA] + mov r0, sp + strh r1, [r0, 0xC] +_080A5590: + mov r2, sp + ldrh r2, [r2, 0xC] + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A568C + mov r6, r8 + ldr r3, [sp] + movs r0, 0x80 + lsls r0, 3 + adds r2, r3, r0 + movs r0, 0 + b _080A5684 +_080A55AA: + adds r2, 0x5 + movs r4, 0 + cmp r0, 0 + bne _080A55F2 + ldr r3, [sp, 0x4] + ldrb r7, [r3] + movs r1, 0x1 + mov r10, r1 + cmp r0, r7 + bge _080A567C +_080A55BE: + ldrb r1, [r6] + adds r6, 0x1 + cmp r1, 0x7F + ble _080A55E4 + subs r4, 0x7F + cmp r1, 0x7F + ble _080A55E0 + movs r5, 0x40 + adds r3, r1, 0 + subs r3, 0x7F +_080A55D2: + ldrb r0, [r2] + orrs r0, r5 + strb r0, [r2] + adds r2, 0x1 + subs r3, 0x1 + cmp r3, 0 + bne _080A55D2 +_080A55E0: + adds r4, r1 + b _080A55EC +_080A55E4: + adds r0, r1, 0x1 + adds r2, r0 + adds r0, r4, 0x1 + adds r4, r0, r1 +_080A55EC: + cmp r4, r7 + blt _080A55BE + b _080A567C +_080A55F2: + ldr r3, _080A5640 + adds r3, r2 + mov r12, r3 + ldr r1, [sp, 0x4] + ldrb r7, [r1] + adds r0, 0x1 + mov r10, r0 + cmp r4, r7 + bge _080A567C +_080A5604: + ldrb r5, [r6] + adds r6, 0x1 + cmp r5, 0x7F + ble _080A5644 + subs r4, 0x7F + cmp r5, 0x7F + ble _080A5676 + movs r3, 0x40 + mov r8, r3 + movs r0, 0x40 + mov r9, r0 + adds r3, r5, 0 + subs r3, 0x7F +_080A561E: + mov r0, r12 + ldrb r1, [r0] + mov r0, r9 + ands r0, r1 + movs r1, 0x1 + add r12, r1 + cmp r0, 0 + bne _080A5636 + ldrb r0, [r2] + mov r1, r8 + orrs r0, r1 + strb r0, [r2] +_080A5636: + adds r2, 0x1 + subs r3, 0x1 + cmp r3, 0 + bne _080A561E + b _080A5676 + .align 2, 0 +_080A5640: .4byte 0xffffff00 +_080A5644: + movs r3, 0 + adds r4, 0x1 + cmp r3, r5 + bgt _080A5676 + movs r3, 0x40 + mov r8, r3 + movs r0, 0x40 + mov r9, r0 + adds r3, r5, 0x1 +_080A5656: + mov r0, r12 + ldrb r1, [r0] + mov r0, r9 + ands r0, r1 + movs r1, 0x1 + add r12, r1 + cmp r0, 0 + beq _080A566E + ldrb r0, [r2] + mov r1, r8 + orrs r0, r1 + strb r0, [r2] +_080A566E: + adds r2, 0x1 + subs r3, 0x1 + cmp r3, 0 + bne _080A5656 +_080A5676: + adds r4, r5 + cmp r4, r7 + blt _080A5604 +_080A567C: + movs r3, 0xFB + subs r0, r3, r7 + adds r2, r0 + mov r0, r10 +_080A5684: + ldr r1, [sp, 0x10] + cmp r0, r1 + blt _080A55AA + mov r8, r6 +_080A568C: + mov r0, r8 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A5204 + + thumb_func_start sub_80A56A0 +sub_80A56A0: + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + lsls r3, 24 + lsrs r3, 24 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _080A56BC + ldr r0, [r0] + adds r1, r3, 0 + bl sub_80A3B80 + pop {r0} + bx r0 + .align 2, 0 +_080A56BC: .4byte gUnknown_3001B70 + thumb_func_end sub_80A56A0 + + thumb_func_start sub_80A56C0 +sub_80A56C0: + push {lr} + adds r2, r0, 0 + ldr r0, _080A56D4 + ldr r0, [r0] + movs r1, 0 + bl sub_80A4558 + pop {r0} + bx r0 + .align 2, 0 +_080A56D4: .4byte gUnknown_3001B70 + thumb_func_end sub_80A56C0 + + thumb_func_start sub_80A56D8 +sub_80A56D8: + push {lr} + adds r2, r0, 0 + ldr r0, _080A56EC + ldr r0, [r0] + movs r1, 0 + bl sub_80A456C + pop {r0} + bx r0 + .align 2, 0 +_080A56EC: .4byte gUnknown_3001B70 + thumb_func_end sub_80A56D8 + + thumb_func_start sub_80A56F0 +sub_80A56F0: + ldr r1, _080A5700 + ldr r2, [r1] + adds r2, 0xE8 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .align 2, 0 +_080A5700: .4byte gUnknown_3001B6C + thumb_func_end sub_80A56F0 + + thumb_func_start sub_80A5704 +sub_80A5704: + ldr r1, _080A5724 + ldr r3, [r1] + adds r2, r3, 0 + adds r2, 0xF8 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, 0x4] + adds r0, r3, 0 + adds r0, 0xF0 + movs r1, 0 + str r1, [r0] + adds r0, 0x4 + str r1, [r0] + bx lr + .align 2, 0 +_080A5724: .4byte gUnknown_3001B6C + thumb_func_end sub_80A5704 + + thumb_func_start sub_80A5728 +sub_80A5728: + ldr r0, _080A5734 + ldr r0, [r0] + adds r0, 0xE4 + movs r1, 0 + ldrsh r0, [r0, r1] + bx lr + .align 2, 0 +_080A5734: .4byte gUnknown_3001B6C + thumb_func_end sub_80A5728 + + thumb_func_start sub_80A5738 +sub_80A5738: + ldr r0, _080A5750 + ldr r0, [r0] + adds r0, 0xE4 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _080A5754 + adds r0, r1 + bx lr + .align 2, 0 +_080A5750: .4byte gUnknown_3001B6C +_080A5754: .4byte gUnknown_811BAF4 + thumb_func_end sub_80A5738 + + thumb_func_start sub_80A5758 +sub_80A5758: + push {lr} + adds r1, r0, 0 + ldr r0, _080A5768 + ldr r0, [r0] + cmp r0, 0 + bne _080A576C + movs r0, 0 + b _080A5772 + .align 2, 0 +_080A5768: .4byte gUnknown_3001B70 +_080A576C: + bl sub_80A4608 + movs r0, 0x1 +_080A5772: + pop {r1} + bx r1 + thumb_func_end sub_80A5758 + + thumb_func_start sub_80A5778 +sub_80A5778: + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + ldr r0, _080A578C + ldr r0, [r0] + cmp r0, 0 + bne _080A5790 + movs r0, 0 + b _080A5798 + .align 2, 0 +_080A578C: .4byte gUnknown_3001B70 +_080A5790: + adds r1, r3, 0 + bl sub_80A463C + movs r0, 0x1 +_080A5798: + pop {r1} + bx r1 + thumb_func_end sub_80A5778 + + thumb_func_start sub_80A579C +sub_80A579C: + push {r4-r7,lr} + adds r6, r0, 0 + adds r5, r1, 0 + ldr r0, _080A5838 + ldr r3, [r0] + cmp r3, 0 + beq _080A5854 + ldr r0, _080A583C + ldr r0, [r0] + adds r2, r0, 0 + adds r2, 0xE4 + movs r0, 0 + ldrsh r1, [r2, r0] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080A5854 + adds r0, r1, 0 + lsls r4, r0, 1 + adds r4, r0 + lsls r4, 2 + ldr r0, _080A5840 + adds r4, r0 + adds r0, r3, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_80A463C + ldr r2, [r6] + mov r12, r2 + movs r0, 0xF0 + lsls r0, 7 + add r0, r12 + str r0, [r6] + ldr r3, [r6, 0x4] + movs r7, 0xA0 + lsls r7, 7 + adds r0, r3, r7 + str r0, [r6, 0x4] + ldr r2, [r5] + ldr r1, _080A5844 + adds r0, r2, r1 + str r0, [r5] + ldr r1, [r5, 0x4] + ldr r7, _080A5848 + adds r0, r1, r7 + str r0, [r5, 0x4] + movs r7, 0 + ldrsh r0, [r4, r7] + cmp r0, 0xA + bne _080A581E + movs r0, 0x90 + lsls r0, 8 + add r0, r12 + str r0, [r6] + movs r4, 0xD0 + lsls r4, 7 + adds r0, r3, r4 + str r0, [r6, 0x4] + ldr r7, _080A584C + adds r0, r2, r7 + str r0, [r5] + ldr r2, _080A5850 + adds r0, r1, r2 + str r0, [r5, 0x4] +_080A581E: + ldr r1, [r6] + ldr r0, [r5] + cmp r1, r0 + ble _080A5828 + str r1, [r5] +_080A5828: + ldr r1, [r6, 0x4] + ldr r0, [r5, 0x4] + cmp r1, r0 + ble _080A5832 + str r1, [r5, 0x4] +_080A5832: + movs r0, 0x1 + b _080A5856 + .align 2, 0 +_080A5838: .4byte gUnknown_3001B70 +_080A583C: .4byte gUnknown_3001B6C +_080A5840: .4byte gUnknown_811BAF4 +_080A5844: .4byte 0xffff8800 +_080A5848: .4byte 0xffffb000 +_080A584C: .4byte 0xffff7000 +_080A5850: .4byte 0xffff9800 +_080A5854: + movs r0, 0 +_080A5856: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A579C + + thumb_func_start sub_80A585C +sub_80A585C: + push {r4-r7,lr} + adds r7, r1, 0 + ldr r1, _080A5884 + ldr r2, [r1] + ldr r1, _080A5888 + adds r2, r1 + ldr r1, [r0, 0x4] + lsls r1, 8 + ldr r0, [r0] + adds r1, r0 + ldr r0, _080A588C + adds r1, r0 + ldr r0, [r2] + adds r5, r0, r1 + ldr r4, [r7, 0x4] + cmp r0, 0 + bne _080A5890 +_080A587E: + movs r0, 0x1 + b _080A58C0 + .align 2, 0 +_080A5884: .4byte gUnknown_3001B70 +_080A5888: .4byte 0x00000544 +_080A588C: .4byte 0x00000405 +_080A5890: + cmp r4, 0 + ble _080A58BE + movs r1, 0x80 + lsls r1, 1 + mov r12, r1 +_080A589A: + ldr r2, [r7] + adds r3, r5, 0 + cmp r2, 0 + ble _080A58B6 + movs r6, 0x80 +_080A58A4: + ldrb r1, [r3] + adds r0, r6, 0 + ands r0, r1 + adds r3, 0x1 + cmp r0, 0 + bne _080A587E + subs r2, 0x1 + cmp r2, 0 + bgt _080A58A4 +_080A58B6: + add r5, r12 + subs r4, 0x1 + cmp r4, 0 + bgt _080A589A +_080A58BE: + movs r0, 0 +_080A58C0: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A585C + + thumb_func_start sub_80A58C8 +sub_80A58C8: + push {r4-r7,lr} + adds r7, r1, 0 + ldr r1, _080A58F0 + ldr r2, [r1] + ldr r1, _080A58F4 + adds r2, r1 + ldr r1, [r0, 0x4] + lsls r1, 8 + ldr r0, [r0] + adds r1, r0 + ldr r0, _080A58F8 + adds r1, r0 + ldr r0, [r2] + adds r5, r0, r1 + ldr r4, [r7, 0x4] + cmp r0, 0 + bne _080A58FC +_080A58EA: + movs r0, 0x1 + b _080A592C + .align 2, 0 +_080A58F0: .4byte gUnknown_3001B70 +_080A58F4: .4byte 0x00000544 +_080A58F8: .4byte 0x00000405 +_080A58FC: + cmp r4, 0 + ble _080A592A + movs r1, 0x80 + lsls r1, 1 + mov r12, r1 +_080A5906: + ldr r2, [r7] + adds r3, r5, 0 + cmp r2, 0 + ble _080A5922 + movs r6, 0x40 +_080A5910: + ldrb r1, [r3] + adds r0, r6, 0 + ands r0, r1 + adds r3, 0x1 + cmp r0, 0 + bne _080A58EA + subs r2, 0x1 + cmp r2, 0 + bgt _080A5910 +_080A5922: + add r5, r12 + subs r4, 0x1 + cmp r4, 0 + bgt _080A5906 +_080A592A: + movs r0, 0 +_080A592C: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A58C8 + + thumb_func_start sub_80A5934 +sub_80A5934: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r3, r2, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080A5958 + ldr r0, [r0] + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80A4660 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080A5958: .4byte gUnknown_3001B70 + thumb_func_end sub_80A5934 + + thumb_func_start sub_80A595C +sub_80A595C: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r3, r2, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080A5980 + ldr r0, [r0] + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80A46C0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080A5980: .4byte gUnknown_3001B70 + thumb_func_end sub_80A595C + + thumb_func_start sub_80A5984 +sub_80A5984: + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + ldr r0, _080A599C + ldr r0, [r0] + adds r1, r3, 0 + bl sub_80A4720 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_080A599C: .4byte gUnknown_3001B70 + thumb_func_end sub_80A5984 + + thumb_func_start sub_80A59A0 +sub_80A59A0: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r3, r2, 16 + lsrs r3, 16 + ldr r0, _080A59BC + ldr r0, [r0] + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80A4740 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A59BC: .4byte gUnknown_3001B70 + thumb_func_end sub_80A59A0 + + thumb_func_start GroundMap_Action +GroundMap_Action: + push {lr} + bl nullsub_123 + ldr r0, _080A59D4 + ldr r0, [r0] + ldr r1, _080A59D8 + bl HandleAction + pop {r0} + bx r0 + .align 2, 0 +_080A59D4: .4byte gUnknown_3001B6C +_080A59D8: .4byte gUnknown_8117770 + thumb_func_end GroundMap_Action + + thumb_func_start sub_80A59DC +sub_80A59DC: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x58 + ldr r7, _080A5A34 + ldr r0, [r7] + cmp r0, 0 + bne _080A59F0 + b _080A5E5A +_080A59F0: + mov r9, sp + mov r0, sp + bl sub_809D248 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080A5A04 + str r0, [sp] + str r0, [sp, 0x4] +_080A5A04: + ldr r0, _080A5A38 + mov r8, r0 + ldr r3, [r0] + adds r0, r3, 0 + adds r0, 0xE4 + movs r1, 0 + ldrsh r0, [r0, r1] + mov r6, r8 + cmp r0, 0xAB + bne _080A5A1A + b _080A5BBE +_080A5A1A: + cmp r0, 0xAB + bgt _080A5A46 + cmp r0, 0xA3 + bgt _080A5A3C + cmp r0, 0xA2 + bge _080A5A76 + cmp r0, 0x4 + bne _080A5A2C + b _080A5D76 +_080A5A2C: + cmp r0, 0xA1 + bne _080A5A32 + b _080A5E28 +_080A5A32: + b _080A5E46 + .align 2, 0 +_080A5A34: .4byte gUnknown_3001B70 +_080A5A38: .4byte gUnknown_3001B6C +_080A5A3C: + cmp r0, 0xA8 + beq _080A5AF4 + cmp r0, 0xAA + beq _080A5AF4 + b _080A5E46 +_080A5A46: + cmp r0, 0xB0 + bne _080A5A4C + b _080A5C76 +_080A5A4C: + cmp r0, 0xB0 + bgt _080A5A5E + cmp r0, 0xAE + bne _080A5A56 + b _080A5B58 +_080A5A56: + cmp r0, 0xAF + bne _080A5A5C + b _080A5BD8 +_080A5A5C: + b _080A5E46 +_080A5A5E: + cmp r0, 0xDF + beq _080A5A76 + cmp r0, 0xDF + bgt _080A5A6E + cmp r0, 0xBA + bne _080A5A6C + b _080A5D18 +_080A5A6C: + b _080A5E46 +_080A5A6E: + cmp r0, 0xE0 + bne _080A5A74 + b _080A5DDA +_080A5A74: + b _080A5E46 +_080A5A76: + ldr r3, [r6] + adds r2, r3, 0 + adds r2, 0xF4 + ldr r1, [r2] + adds r0, r1, 0x2 + str r0, [r2] + adds r4, r3, 0 + adds r4, 0xFC + cmp r0, 0 + bge _080A5A8C + adds r0, r1, 0x5 +_080A5A8C: + asrs r1, r0, 2 + ldr r0, [r4] + adds r0, r1 + str r0, [r4] + ldr r0, [r2] + movs r1, 0x3 + ands r0, r1 + str r0, [r2] + ldr r5, _080A5AF0 + ldr r0, [r5] + adds r2, r3, 0 + adds r2, 0xF8 + movs r1, 0 + bl sub_80A4580 + ldr r0, [sp] + str r0, [sp, 0x8] + ldr r0, [r6] + adds r0, 0xFC + ldr r1, [sp, 0x4] + ldr r0, [r0] + adds r1, r0 + add r4, sp, 0x8 + str r1, [r4, 0x4] + ldr r0, [r5] + movs r1, 0 + adds r2, r4, 0 + bl sub_80A4580 + ldr r0, [r5] + movs r1, 0 + adds r2, r4, 0 + bl sub_80A456C + ldr r0, [sp] + str r0, [sp, 0x8] + ldr r0, [r6] + adds r0, 0xFC + ldr r1, [sp, 0x4] + ldr r0, [r0] + subs r1, r0 + str r1, [r4, 0x4] + ldr r0, [r5] + movs r1, 0x1 + adds r2, r4, 0 + bl sub_80A4580 + ldr r0, [r5] + b _080A5DD0 + .align 2, 0 +_080A5AF0: .4byte gUnknown_3001B70 +_080A5AF4: + ldr r2, [r6] + adds r3, r2, 0 + adds r3, 0xF0 + adds r0, r2, 0 + adds r0, 0xE8 + ldr r1, [r3] + ldr r0, [r0] + adds r1, r0 + str r1, [r3] + adds r2, 0xF8 + cmp r1, 0 + bge _080A5B0E + adds r1, 0x7 +_080A5B0E: + asrs r1, 3 + ldr r0, [r2] + adds r0, r1 + str r0, [r2] + ldr r1, [r3] + adds r0, r1, 0 + cmp r1, 0 + bge _080A5B20 + adds r0, r1, 0x7 +_080A5B20: + asrs r0, 3 + lsls r0, 3 + subs r0, r1, r0 + str r0, [r3] + ldr r5, _080A5B54 + ldr r0, [r5] + movs r1, 0 + bl sub_80A4580 + ldr r0, [r6] + adds r0, 0xF8 + ldr r1, [sp] + ldr r0, [r0] + adds r1, r0 + str r1, [sp, 0x10] + ldr r0, [sp, 0x4] + add r4, sp, 0x10 + str r0, [r4, 0x4] + ldr r0, [r5] + movs r1, 0 + adds r2, r4, 0 + bl sub_80A4580 + ldr r0, [r5] + movs r1, 0 + b _080A5DD2 + .align 2, 0 +_080A5B54: .4byte gUnknown_3001B70 +_080A5B58: + adds r4, r3, 0 + adds r4, 0xF0 + adds r0, r3, 0 + adds r0, 0xE8 + ldr r1, [r4] + ldr r0, [r0] + adds r1, r0 + str r1, [r4] + adds r2, r3, 0 + adds r2, 0xF8 + cmp r1, 0 + bge _080A5B72 + adds r1, 0x7 +_080A5B72: + asrs r1, 3 + ldr r0, [r2] + adds r0, r1 + str r0, [r2] + ldr r1, [r4] + adds r0, r1, 0 + cmp r1, 0 + bge _080A5B84 + adds r0, r1, 0x7 +_080A5B84: + asrs r0, 3 + lsls r0, 3 + subs r0, r1, r0 + str r0, [r4] + ldr r0, [r7] + movs r1, 0 + bl sub_80A4580 + mov r1, r8 + ldr r0, [r1] + adds r0, 0xF8 + ldr r1, [sp] + ldr r0, [r0] + adds r1, r0 + str r1, [sp, 0x18] + ldr r0, [sp, 0x4] + add r4, sp, 0x18 + str r0, [r4, 0x4] + ldr r0, [r7] + movs r1, 0 + adds r2, r4, 0 + bl sub_80A4580 + ldr r0, [r7] + movs r1, 0 + adds r2, r4, 0 + bl sub_80A456C + b _080A5DCE +_080A5BBE: + ldr r0, [sp] + ldr r1, [sp, 0x4] + str r0, [sp, 0x20] + str r1, [sp, 0x24] + ldr r0, [r7] + add r4, sp, 0x20 + movs r1, 0 + adds r2, r4, 0 + bl sub_80A4580 + ldr r0, [r7] + movs r1, 0 + b _080A5DD2 +_080A5BD8: + ldr r0, [r7] + movs r1, 0 + mov r2, sp + bl sub_80A456C + mov r0, r8 + ldr r3, [r0] + adds r4, r3, 0 + adds r4, 0xF0 + adds r1, r3, 0 + adds r1, 0xE8 + ldr r0, [r4] + ldr r1, [r1] + adds r0, r1 + str r0, [r4] + adds r5, r3, 0 + adds r5, 0xF4 + adds r1, r3, 0 + adds r1, 0xEC + ldr r0, [r5] + ldr r1, [r1] + adds r0, r1 + str r0, [r5] + adds r2, r3, 0 + adds r2, 0xF8 + ldr r1, [r4] + cmp r1, 0 + bge _080A5C12 + adds r1, 0x7 +_080A5C12: + asrs r1, 3 + ldr r0, [r2] + adds r0, r1 + str r0, [r2] + adds r3, 0xFC + ldr r1, [r5] + cmp r1, 0 + bge _080A5C24 + adds r1, 0x7 +_080A5C24: + asrs r1, 3 + ldr r0, [r3] + adds r0, r1 + str r0, [r3] + ldr r1, [r4] + adds r0, r1, 0 + cmp r1, 0 + bge _080A5C36 + adds r0, r1, 0x7 +_080A5C36: + asrs r0, 3 + lsls r0, 3 + subs r0, r1, r0 + str r0, [r4] + ldr r1, [r5] + adds r0, r1, 0 + cmp r1, 0 + bge _080A5C48 + adds r0, r1, 0x7 +_080A5C48: + asrs r0, 3 + lsls r0, 3 + subs r0, r1, r0 + str r0, [r5] + ldr r0, [r7] + movs r1, 0 + bl sub_80A4580 + mov r1, r8 + ldr r2, [r1] + adds r1, r2, 0 + adds r1, 0xF8 + ldr r0, [sp] + ldr r1, [r1] + adds r0, r1 + str r0, [sp, 0x28] + adds r2, 0xFC + mov r1, r9 + ldr r0, [r1, 0x4] + ldr r1, [r2] + adds r0, r1 + add r4, sp, 0x28 + b _080A5DC2 +_080A5C76: + adds r4, r3, 0 + adds r4, 0xF0 + adds r1, r3, 0 + adds r1, 0xE8 + ldr r0, [r4] + ldr r1, [r1] + adds r0, r1 + str r0, [r4] + adds r5, r3, 0 + adds r5, 0xF4 + adds r1, r3, 0 + adds r1, 0xEC + ldr r0, [r5] + ldr r1, [r1] + adds r0, r1 + str r0, [r5] + adds r6, r3, 0 + adds r6, 0xF8 + ldr r1, [r4] + cmp r1, 0 + bge _080A5CA2 + adds r1, 0x7 +_080A5CA2: + asrs r1, 3 + ldr r0, [r6] + adds r0, r1 + str r0, [r6] + adds r2, r3, 0 + adds r2, 0xFC + ldr r1, [r5] + cmp r1, 0 + bge _080A5CB6 + adds r1, 0x7 +_080A5CB6: + asrs r1, 3 + ldr r0, [r2] + adds r0, r1 + str r0, [r2] + ldr r1, [r4] + adds r0, r1, 0 + cmp r1, 0 + bge _080A5CC8 + adds r0, r1, 0x7 +_080A5CC8: + asrs r0, 3 + lsls r0, 3 + subs r0, r1, r0 + str r0, [r4] + ldr r1, [r5] + adds r0, r1, 0 + cmp r1, 0 + bge _080A5CDA + adds r0, r1, 0x7 +_080A5CDA: + asrs r0, 3 + lsls r0, 3 + subs r0, r1, r0 + str r0, [r5] + ldr r0, [r7] + movs r1, 0 + adds r2, r6, 0 + bl sub_80A4580 + mov r0, r8 + ldr r2, [r0] + adds r1, r2, 0 + adds r1, 0xF8 + ldr r0, [sp] + ldr r1, [r1] + adds r0, r1 + str r0, [sp, 0x30] + adds r2, 0xFC + ldr r0, [sp, 0x4] + ldr r1, [r2] + adds r0, r1 + add r4, sp, 0x30 + str r0, [r4, 0x4] + ldr r0, [r7] + movs r1, 0 + adds r2, r4, 0 + bl sub_80A4580 + ldr r0, [r7] + movs r1, 0 + b _080A5DD2 +_080A5D18: + ldr r0, [r7] + movs r1, 0x1 + mov r2, sp + bl sub_80A456C + mov r0, r8 + ldr r1, [r0] + adds r3, r1, 0 + adds r3, 0xF0 + ldr r4, [r3] + adds r0, r4, 0x1 + str r0, [r3] + adds r2, r1, 0 + adds r2, 0xF8 + cmp r0, 0 + bge _080A5D3A + adds r0, r4, 0x4 +_080A5D3A: + asrs r1, r0, 2 + ldr r0, [r2] + adds r0, r1 + str r0, [r2] + ldr r0, [r3] + movs r1, 0x3 + ands r0, r1 + str r0, [r3] + ldr r0, [r7] + movs r1, 0x1 + bl sub_80A4580 + mov r1, r8 + ldr r0, [r1] + adds r0, 0xF8 + ldr r1, [sp] + ldr r0, [r0] + adds r1, r0 + str r1, [sp, 0x38] + ldr r0, [sp, 0x4] + add r4, sp, 0x38 + str r0, [r4, 0x4] + ldr r0, [r7] + movs r1, 0 + adds r2, r4, 0 + bl sub_80A4580 + ldr r0, [r7] + movs r1, 0 + b _080A5DD2 +_080A5D76: + ldr r0, [r7] + movs r1, 0 + mov r2, sp + bl sub_80A456C + mov r0, r8 + ldr r1, [r0] + adds r3, r1, 0 + adds r3, 0xF0 + ldr r4, [r3] + adds r0, r4, 0x1 + str r0, [r3] + adds r2, r1, 0 + adds r2, 0xF8 + cmp r0, 0 + bge _080A5D98 + adds r0, 0x7 +_080A5D98: + asrs r1, r0, 3 + ldr r0, [r2] + adds r0, r1 + str r0, [r2] + ldr r0, [r3] + movs r1, 0x7 + ands r0, r1 + str r0, [r3] + ldr r0, [r7] + movs r1, 0x1 + bl sub_80A4580 + mov r1, r8 + ldr r0, [r1] + adds r0, 0xF8 + ldr r1, [sp] + ldr r0, [r0] + adds r1, r0 + str r1, [sp, 0x40] + ldr r0, [sp, 0x4] + add r4, sp, 0x40 +_080A5DC2: + str r0, [r4, 0x4] + ldr r0, [r7] + movs r1, 0x1 + adds r2, r4, 0 + bl sub_80A4580 +_080A5DCE: + ldr r0, [r7] +_080A5DD0: + movs r1, 0x1 +_080A5DD2: + adds r2, r4, 0 + bl sub_80A456C + b _080A5E52 +_080A5DDA: + ldr r0, [r7] + movs r1, 0 + mov r2, sp + bl sub_80A456C + mov r0, r8 + ldr r1, [r0] + adds r3, r1, 0 + adds r3, 0xF0 + ldr r4, [r3] + adds r0, r4, 0x1 + str r0, [r3] + adds r2, r1, 0 + adds r2, 0xF8 + cmp r0, 0 + bge _080A5DFC + adds r0, 0x7 +_080A5DFC: + asrs r1, r0, 3 + ldr r0, [r2] + adds r0, r1 + str r0, [r2] + ldr r0, [r3] + movs r1, 0x7 + ands r0, r1 + str r0, [r3] + ldr r0, [r7] + movs r1, 0x1 + bl sub_80A4580 + mov r1, r8 + ldr r0, [r1] + adds r0, 0xF8 + ldr r0, [r0] + str r0, [sp, 0x48] + ldr r0, [sp, 0x4] + add r2, sp, 0x48 + str r0, [r2, 0x4] + ldr r0, [r7] + b _080A5E3E +_080A5E28: + ldr r0, [r7] + movs r1, 0 + mov r2, sp + bl sub_80A456C + movs r0, 0 + movs r1, 0 + str r0, [sp, 0x50] + str r1, [sp, 0x54] + ldr r0, [r7] + add r2, sp, 0x50 +_080A5E3E: + movs r1, 0x1 + bl sub_80A456C + b _080A5E52 +_080A5E46: + ldr r0, _080A5E6C + ldr r0, [r0] + movs r1, 0 + mov r2, sp + bl sub_80A456C +_080A5E52: + ldr r0, _080A5E6C + ldr r0, [r0] + bl sub_80A4764 +_080A5E5A: + bl sub_80A60D8 + add sp, 0x58 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A5E6C: .4byte gUnknown_3001B70 + thumb_func_end sub_80A59DC + + thumb_func_start sub_80A5E70 +sub_80A5E70: + push {lr} + ldr r0, _080A5E88 + ldr r0, [r0] + cmp r0, 0 + beq _080A5E7E + bl sub_80A49E8 +_080A5E7E: + bl sub_80A62D0 + pop {r0} + bx r0 + .align 2, 0 +_080A5E88: .4byte gUnknown_3001B70 + thumb_func_end sub_80A5E70 + + thumb_func_start sub_80A5E8C +sub_80A5E8C: + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _080A5EB4 + movs r0, 0x24 + movs r1, 0x6 + bl MemoryAlloc + str r0, [r5] + ldr r1, _080A5EB8 + strh r1, [r0] + movs r1, 0 + strb r1, [r0, 0x2] + adds r0, r4, 0 + bl sub_80A5EDC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A5EB4: .4byte gUnknown_3001B74 +_080A5EB8: .4byte 0x0000ffff + thumb_func_end sub_80A5E8C + + thumb_func_start sub_80A5EBC +sub_80A5EBC: + push {r4,lr} + movs r0, 0 + bl sub_80A5EDC + ldr r4, _080A5ED8 + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A5ED8: .4byte gUnknown_3001B74 + thumb_func_end sub_80A5EBC + + thumb_func_start sub_80A5EDC +sub_80A5EDC: + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + movs r6, 0x1 + negs r6, r6 + movs r0, 0 + movs r1, 0x1B + adds r2, r6, 0 + bl sub_80018D8 + ldr r0, _080A5F34 + ldr r1, [r0] + ldr r0, _080A5F38 + strh r0, [r1] + strb r5, [r1, 0x2] + ldr r4, _080A5F3C + ldr r0, [r4] + cmp r0, 0 + beq _080A5F12 + bl sub_80A2D00 + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] +_080A5F12: + cmp r5, 0 + beq _080A5F2E + ldr r0, _080A5F40 + movs r1, 0x6 + bl MemoryAlloc + str r0, [r4] + ldr r1, _080A5F44 + bl sub_80A2B40 + ldr r0, [r4] + adds r1, r6, 0 + bl sub_80A2FBC +_080A5F2E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5F34: .4byte gUnknown_3001B74 +_080A5F38: .4byte 0x0000ffff +_080A5F3C: .4byte gUnknown_3001B78 +_080A5F40: .4byte 0x0000055c +_080A5F44: .4byte gUnknown_8117784 + thumb_func_end sub_80A5EDC + + thumb_func_start nullsub_121 +nullsub_121: + bx lr + thumb_func_end nullsub_121 + + thumb_func_start nullsub_122 +nullsub_122: + bx lr + thumb_func_end nullsub_122 + + thumb_func_start GroundWeather_Select +GroundWeather_Select: + push {r4-r7,lr} + lsls r0, 16 + asrs r5, r0, 16 + adds r7, r5, 0 + ldr r1, _080A5F94 + ldr r6, _080A5F98 + ldr r0, [r6] + ldrb r3, [r0, 0x2] + movs r0, 0 + adds r2, r5, 0 + bl Log + movs r0, 0 + movs r1, 0x1B + adds r2, r5, 0 + bl sub_80018D8 + ldr r0, [r6] + movs r4, 0 + strh r5, [r0] + ldrb r0, [r0, 0x2] + cmp r0, 0 + bne _080A5F80 + b _080A60B4 +_080A5F80: + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + bne _080A5FA0 + ldr r0, _080A5F9C + ldr r0, [r0] + adds r1, r5, 0 + bl sub_80A2FBC + b _080A60B4 + .align 2, 0 +_080A5F94: .4byte gUnknown_811779C +_080A5F98: .4byte gUnknown_3001B74 +_080A5F9C: .4byte gUnknown_3001B78 +_080A5FA0: + lsls r1, r7, 2 + ldr r0, _080A5FD8 + adds r5, r1, r0 + ldr r0, _080A5FDC + ldr r0, [r0] + movs r2, 0x2 + ldrsh r1, [r5, r2] + bl sub_80A2FBC + ldr r0, [r6] + str r4, [r0, 0x4] + str r4, [r0, 0x8] + str r4, [r0, 0xC] + str r4, [r0, 0x10] + str r4, [r0, 0x20] + str r4, [r0, 0x1C] + str r4, [r0, 0x18] + str r4, [r0, 0x14] + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0xF + bhi _080A6098 + lsls r0, 2 + ldr r1, _080A5FE0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A5FD8: .4byte gUnknown_811E5F4 +_080A5FDC: .4byte gUnknown_3001B78 +_080A5FE0: .4byte _080A5FE4 + .align 2, 0 +_080A5FE4: + .4byte _080A6088 + .4byte _080A6098 + .4byte _080A6098 + .4byte _080A6088 + .4byte _080A6088 + .4byte _080A6088 + .4byte _080A6098 + .4byte _080A6040 + .4byte _080A6088 + .4byte _080A6024 + .4byte _080A6098 + .4byte _080A6098 + .4byte _080A6098 + .4byte _080A6098 + .4byte _080A6050 + .4byte _080A606C +_080A6024: + ldr r0, _080A6034 + ldr r0, [r0] + movs r1, 0x1 + bl sub_80A3BB0 + ldr r1, _080A6038 + ldr r2, _080A603C + b _080A60B0 + .align 2, 0 +_080A6034: .4byte gUnknown_3001B78 +_080A6038: .4byte gUnknown_2026E4E +_080A603C: .4byte 0x0000040c +_080A6040: + ldr r1, _080A6048 + ldr r2, _080A604C + b _080A60B0 + .align 2, 0 +_080A6048: .4byte gUnknown_2026E4E +_080A604C: .4byte 0x00000808 +_080A6050: + ldr r0, _080A6060 + ldr r0, [r0] + movs r1, 0x1 + bl sub_80A3BB0 + ldr r1, _080A6064 + ldr r2, _080A6068 + b _080A60B0 + .align 2, 0 +_080A6060: .4byte gUnknown_3001B78 +_080A6064: .4byte gUnknown_2026E4E +_080A6068: .4byte 0x00001010 +_080A606C: + ldr r0, _080A607C + ldr r0, [r0] + movs r1, 0x1 + bl sub_80A3BB0 + ldr r1, _080A6080 + ldr r2, _080A6084 + b _080A60B0 + .align 2, 0 +_080A607C: .4byte gUnknown_3001B78 +_080A6080: .4byte gUnknown_2026E4E +_080A6084: .4byte 0x0000040c +_080A6088: + ldr r1, _080A6090 + ldr r2, _080A6094 + b _080A60B0 + .align 2, 0 +_080A6090: .4byte gUnknown_2026E4E +_080A6094: .4byte 0x00001010 +_080A6098: + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080A60AA + ldr r0, _080A60BC + ldr r0, [r0] + movs r1, 0x1 + bl sub_80A3BB0 +_080A60AA: + ldr r1, _080A60C0 + movs r2, 0x80 + lsls r2, 5 +_080A60B0: + adds r0, r2, 0 + strh r0, [r1] +_080A60B4: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A60BC: .4byte gUnknown_3001B78 +_080A60C0: .4byte gUnknown_2026E4E + thumb_func_end GroundWeather_Select + + thumb_func_start sub_80A60C4 +sub_80A60C4: + ldr r0, _080A60D0 + ldr r0, [r0] + movs r1, 0 + ldrsh r0, [r0, r1] + bx lr + .align 2, 0 +_080A60D0: .4byte gUnknown_3001B74 + thumb_func_end sub_80A60C4 + + thumb_func_start nullsub_123 +nullsub_123: + bx lr + thumb_func_end nullsub_123 + + thumb_func_start sub_80A60D8 +sub_80A60D8: + push {r4-r6,lr} + sub sp, 0x28 + ldr r0, _080A6104 + ldr r3, [r0] + ldrb r1, [r3, 0x2] + adds r6, r0, 0 + cmp r1, 0 + bne _080A60EA + b _080A62C0 +_080A60EA: + ldrh r0, [r3] + adds r0, 0x1 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + bls _080A60F8 + b _080A6278 +_080A60F8: + lsls r0, 2 + ldr r1, _080A6108 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A6104: .4byte gUnknown_3001B74 +_080A6108: .4byte _080A610C + .align 2, 0 +_080A610C: + .4byte _080A62AC + .4byte _080A6278 + .4byte _080A6278 + .4byte _080A6278 + .4byte _080A6278 + .4byte _080A6278 + .4byte _080A6278 + .4byte _080A6278 + .4byte _080A6278 + .4byte _080A6278 + .4byte _080A6150 + .4byte _080A61CC + .4byte _080A61CC + .4byte _080A61CC + .4byte _080A61CC + .4byte _080A61D0 + .4byte _080A6224 +_080A6150: + ldr r2, [r6] + ldr r1, [r2, 0x4] + adds r0, r1, 0x2 + str r0, [r2, 0x4] + ldr r4, [r2, 0x8] + adds r3, r4, 0x1 + str r3, [r2, 0x8] + cmp r0, 0 + bge _080A6164 + adds r0, r1, 0x5 +_080A6164: + asrs r1, r0, 2 + ldr r0, [r2, 0xC] + adds r0, r1 + str r0, [r2, 0xC] + adds r1, r3, 0 + cmp r1, 0 + bge _080A6174 + adds r1, r4, 0x4 +_080A6174: + asrs r1, 2 + ldr r0, [r2, 0x10] + adds r0, r1 + str r0, [r2, 0x10] + ldr r4, _080A61C8 + ldr r0, [r4] + adds r2, 0xC + movs r1, 0 + bl sub_80A4580 + ldr r1, [r6] + ldr r0, [r1, 0x4] + movs r2, 0x3 + ands r0, r2 + str r0, [r1, 0x4] + ldr r0, [r1, 0x8] + ands r0, r2 + str r0, [r1, 0x8] + mov r0, sp + bl sub_80A56C0 + ldr r2, [r6] + ldr r0, [sp] + ldr r1, [r2, 0xC] + subs r0, r1 + str r0, [sp] + ldr r0, [sp, 0x4] + ldr r1, [r2, 0x10] + adds r0, r1 + str r0, [sp, 0x4] + ldr r0, [r4] + movs r1, 0 + mov r2, sp + bl sub_80A4580 + ldr r0, [r4] + movs r1, 0 + mov r2, sp + bl sub_80A456C + b _080A62B8 + .align 2, 0 +_080A61C8: .4byte gUnknown_3001B78 +_080A61CC: + add r4, sp, 0x8 + b _080A628E +_080A61D0: + ldr r2, [r6] + ldr r1, [r2, 0x4] + adds r0, r1, 0x1 + str r0, [r2, 0x4] + cmp r0, 0 + bge _080A61DE + adds r0, r1, 0x4 +_080A61DE: + asrs r1, r0, 2 + ldr r0, [r2, 0xC] + adds r0, r1 + str r0, [r2, 0xC] + ldr r5, _080A6220 + ldr r0, [r5] + adds r2, 0xC + movs r1, 0 + bl sub_80A4580 + ldr r2, [r6] + ldr r0, [r2, 0x4] + movs r1, 0x3 + ands r0, r1 + str r0, [r2, 0x4] + add r4, sp, 0x10 + adds r0, r4, 0 + bl sub_80A56C0 + ldr r1, [r6] + ldr r0, [sp, 0x10] + ldr r1, [r1, 0xC] + subs r0, r1 + str r0, [sp, 0x10] + movs r0, 0 + str r0, [r4, 0x4] + ldr r0, [r5] + movs r1, 0 + adds r2, r4, 0 + bl sub_80A4580 + ldr r0, [r5] + b _080A6298 + .align 2, 0 +_080A6220: .4byte gUnknown_3001B78 +_080A6224: + ldr r2, [r6] + ldr r1, [r2, 0x4] + adds r0, r1, 0x2 + str r0, [r2, 0x4] + cmp r0, 0 + bge _080A6232 + adds r0, r1, 0x5 +_080A6232: + asrs r1, r0, 2 + ldr r0, [r2, 0xC] + adds r0, r1 + str r0, [r2, 0xC] + ldr r5, _080A6274 + ldr r0, [r5] + adds r2, 0xC + movs r1, 0 + bl sub_80A4580 + ldr r2, [r6] + ldr r0, [r2, 0x4] + movs r1, 0x3 + ands r0, r1 + str r0, [r2, 0x4] + add r4, sp, 0x18 + adds r0, r4, 0 + bl sub_80A56C0 + ldr r1, [r6] + ldr r0, [sp, 0x18] + ldr r1, [r1, 0xC] + subs r0, r1 + str r0, [sp, 0x18] + movs r0, 0 + str r0, [r4, 0x4] + ldr r0, [r5] + movs r1, 0 + adds r2, r4, 0 + bl sub_80A4580 + ldr r0, [r5] + b _080A6298 + .align 2, 0 +_080A6274: .4byte gUnknown_3001B78 +_080A6278: + ldr r0, [r6] + movs r1, 0 + ldrsh r0, [r0, r1] + lsls r0, 2 + ldr r1, _080A62A4 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A62AC + add r4, sp, 0x20 +_080A628E: + adds r0, r4, 0 + bl sub_80A56C0 + ldr r0, _080A62A8 + ldr r0, [r0] +_080A6298: + movs r1, 0 + adds r2, r4, 0 + bl sub_80A456C + b _080A62B8 + .align 2, 0 +_080A62A4: .4byte gUnknown_811E5F4 +_080A62A8: .4byte gUnknown_3001B78 +_080A62AC: + ldr r0, _080A62C8 + ldr r0, [r0] + ldr r2, _080A62CC + movs r1, 0 + bl sub_80A456C +_080A62B8: + ldr r0, _080A62C8 + ldr r0, [r0] + bl sub_80A4764 +_080A62C0: + add sp, 0x28 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A62C8: .4byte gUnknown_3001B78 +_080A62CC: .4byte gUnknown_81177BC + thumb_func_end sub_80A60D8 + + thumb_func_start sub_80A62D0 +sub_80A62D0: + push {lr} + ldr r0, _080A62E8 + ldr r0, [r0] + ldrb r0, [r0, 0x2] + cmp r0, 0 + beq _080A62E4 + ldr r0, _080A62EC + ldr r0, [r0] + bl sub_80A49E8 +_080A62E4: + pop {r0} + bx r0 + .align 2, 0 +_080A62E8: .4byte gUnknown_3001B74 +_080A62EC: .4byte gUnknown_3001B78 + thumb_func_end sub_80A62D0 + + thumb_func_start sub_80A62F0 +sub_80A62F0: + push {r4-r7,lr} + ldr r4, _080A6378 + movs r0, 0x88 + lsls r0, 1 + movs r1, 0x6 + bl MemoryAlloc + str r0, [r4] + ldr r0, _080A637C + ldr r1, _080A6380 + bl OpenFileAndGetFileDataPtr + ldr r1, _080A6384 + str r0, [r1] + movs r0, 0x1 + bl sub_800DAC0 + ldr r4, [r4] + ldr r1, _080A6388 + movs r0, 0x16 + str r0, [r1] + ldr r1, _080A638C + movs r0, 0x1 + strb r0, [r1] + movs r0, 0 + movs r2, 0 + movs r1, 0x80 + lsls r1, 9 + adds r3, r1, 0 +_080A632A: + str r2, [r4] + lsls r0, 4 + str r0, [r4, 0x4] + str r2, [r4, 0x8] + adds r0, r1, 0 + adds r1, r3 + asrs r0, 16 + adds r4, 0xC + cmp r0, 0x15 + ble _080A632A + ldr r0, _080A6378 + ldr r0, [r0] + movs r1, 0x84 + lsls r1, 1 + adds r4, r0, r1 + movs r6, 0 + movs r7, 0 + movs r5, 0xE8 + lsls r5, 13 +_080A6350: + strh r7, [r4] + strh r7, [r4, 0x2] + lsrs r0, r5, 16 + movs r1, 0 + bl sub_80997F4 + movs r0, 0x80 + lsls r0, 9 + adds r5, r0 + adds r6, 0x1 + adds r4, 0x4 + cmp r6, 0x1 + ble _080A6350 + movs r0, 0x1 + negs r0, r0 + bl GroundSprite_Reset + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6378: .4byte gUnknown_3001B7C +_080A637C: .4byte gUnknown_81177CC +_080A6380: .4byte gUnknown_83B0000 +_080A6384: .4byte gUnknown_203B4B4 +_080A6388: .4byte gUnknown_2039DD4 +_080A638C: .4byte gUnknown_2039DD0 + thumb_func_end sub_80A62F0 + + thumb_func_start GroundSprite_Reset +GroundSprite_Reset: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 16 + asrs r0, 16 + mov r9, r0 + ldr r1, _080A641C + movs r0, 0 + bl Log + ldr r0, _080A6420 + movs r1, 0 + mov r8, r1 + strh r1, [r0] + ldr r0, _080A6424 + strh r1, [r0] + bl sub_80A6460 + mov r0, r9 + bl sub_80A4D48 + lsls r0, 24 + movs r1, 0x2 + cmp r0, 0 + beq _080A63C6 + movs r1, 0x3 +_080A63C6: + movs r0, 0xF8 + lsls r0, 1 + bl sub_808E53C + ldr r5, _080A6428 + adds r0, r5, 0 + bl sub_8004E8C + ldr r4, _080A642C + adds r0, r4, 0 + bl sub_8004E8C + ldrh r1, [r4, 0x4] + ldr r6, _080A6430 + adds r0, r6, 0 + ands r0, r1 + strh r0, [r4, 0x4] + ldrh r1, [r4, 0xA] + adds r0, r6, 0 + ands r0, r1 + movs r2, 0x80 + lsls r2, 4 + adds r7, r2, 0 + orrs r0, r7 + strh r0, [r4, 0xA] + mov r0, r9 + bl sub_80A4D48 + lsls r0, 24 + cmp r0, 0 + beq _080A6434 + ldrh r1, [r5, 0x4] + adds r0, r6, 0 + ands r0, r1 + strh r0, [r5, 0x4] + ldrh r1, [r5, 0xA] + adds r0, r6, 0 + ands r0, r1 + movs r2, 0xC0 + lsls r2, 4 + adds r1, r2, 0 + orrs r0, r1 + b _080A6444 + .align 2, 0 +_080A641C: .4byte gUnknown_81177D8 +_080A6420: .4byte gUnknown_2039DCC +_080A6424: .4byte gUnknown_2039DCE +_080A6428: .4byte gUnknown_2039DB0 +_080A642C: .4byte gUnknown_2039DC0 +_080A6430: .4byte 0x0000f3ff +_080A6434: + ldrh r1, [r5, 0x4] + adds r0, r6, 0 + ands r0, r1 + strh r0, [r5, 0x4] + ldrh r1, [r5, 0xA] + adds r0, r6, 0 + ands r0, r1 + orrs r0, r7 +_080A6444: + strh r0, [r5, 0xA] + movs r0, 0x1 + bl ResetSprites + movs r0, 0x1 + bl nullsub_10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end GroundSprite_Reset + + thumb_func_start sub_80A6460 +sub_80A6460: + push {r4-r7,lr} + ldr r0, _080A649C + ldr r1, _080A64A0 + bl OpenFileAndGetFileDataPtr + adds r7, r0, 0 + movs r5, 0x80 + lsls r5, 1 + ldr r4, [r7, 0x4] + movs r6, 0xC +_080A6474: + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x10 + bl sub_809971C + adds r0, r5, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r5, r0, 16 + adds r4, 0x40 + subs r6, 0x1 + cmp r6, 0 + bge _080A6474 + adds r0, r7, 0 + bl CloseFile + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A649C: .4byte gUnknown_81177EC +_080A64A0: .4byte gUnknown_8510000 + thumb_func_end sub_80A6460 + + thumb_func_start sub_80A64A4 +sub_80A64A4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _080A6508 + ldr r0, [r0] + movs r1, 0x84 + lsls r1, 1 + adds r7, r0, r1 + bl sub_80A6460 + movs r0, 0 + mov r8, r0 +_080A64C0: + movs r1, 0x2 + ldrsh r0, [r7, r1] + cmp r0, 0 + ble _080A6568 + ldrh r5, [r7] + mov r0, r8 + adds r0, 0x1D + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + mov r1, r8 + lsls r0, r1, 20 + movs r1, 0xE8 + lsls r1, 17 + adds r0, r1 + lsrs r0, 16 + mov r9, r0 + movs r0, 0x80 + lsls r0, 2 + adds r1, r0, 0 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _080A6514 + ldr r0, _080A650C + ldr r1, _080A6510 + bl OpenFileAndGetFileDataPtr + adds r6, r0, 0 + movs r0, 0xFF + ands r0, r5 + lsls r0, 6 + ldr r1, [r6, 0x4] + adds r2, r1, r0 + b _080A652A + .align 2, 0 +_080A6508: .4byte gUnknown_3001B7C +_080A650C: .4byte gUnknown_81177EC +_080A6510: .4byte gUnknown_8510000 +_080A6514: + movs r0, 0xFF + ands r0, r5 + lsls r0, 2 + ldr r1, _080A6584 + adds r0, r1 + ldr r0, [r0] + ldr r1, _080A6588 + bl OpenFileAndGetFileDataPtr + adds r6, r0, 0 + ldr r2, [r6, 0x4] +_080A652A: + movs r1, 0x80 + lsls r1, 5 + adds r0, r1, 0 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 16 + lsrs r1, 16 + negs r1, r1 + lsrs r4, r1, 31 + movs r1, 0x80 + lsls r1, 6 + adds r0, r1, 0 + ands r5, r0 + cmp r5, 0 + beq _080A654C + movs r0, 0x2 + orrs r4, r0 +_080A654C: + mov r0, r9 + adds r1, r2, 0 + movs r2, 0x10 + bl sub_809971C + mov r0, r10 + adds r1, r4, 0 + bl sub_80997F4 + cmp r6, 0 + beq _080A6568 + adds r0, r6, 0 + bl CloseFile +_080A6568: + movs r0, 0x1 + add r8, r0 + adds r7, 0x4 + mov r1, r8 + cmp r1, 0x1 + ble _080A64C0 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6584: .4byte gUnknown_81178F4 +_080A6588: .4byte gUnknown_9E60000 + thumb_func_end sub_80A64A4 + + thumb_func_start sub_80A658C +sub_80A658C: + push {r4,lr} + bl sub_800DB7C + movs r0, 0 + bl ResetSprites + movs r0, 0 + bl nullsub_10 + bl sub_8005180 + bl nullsub_12 + bl CopySpritesToOam + bl nullsub_13 + bl sub_8005304 + bl nullsub_14 + ldr r0, _080A65D0 + ldr r0, [r0] + bl CloseFile + ldr r4, _080A65D4 + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A65D0: .4byte gUnknown_203B4B4 +_080A65D4: .4byte gUnknown_3001B7C + thumb_func_end sub_80A658C + + thumb_func_start sub_80A65D8 +sub_80A65D8: + adds r0, 0x50 + ldrh r0, [r0] + bx lr + thumb_func_end sub_80A65D8 + + thumb_func_start sub_80A65E0 +sub_80A65E0: + lsrs r0, 16 + ldr r2, _080A65EC + adds r1, r2, 0 + ands r0, r1 + bx lr + .align 2, 0 +_080A65EC: .4byte 0x0000337f + thumb_func_end sub_80A65E0 + + thumb_func_start sub_80A65F0 +sub_80A65F0: + push {r4-r6,lr} + adds r3, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, 0x50 + strh r1, [r0] + movs r0, 0x4 + ands r0, r1 + lsls r0, 16 + lsrs r0, 16 + negs r0, r0 + asrs r2, r0, 31 + movs r0, 0x40 + ands r2, r0 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080A6616 + subs r2, 0x40 +_080A6616: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A6624 + adds r1, r2, 0 + adds r1, 0x48 + b _080A6628 +_080A6624: + adds r1, r2, 0 + adds r1, 0x40 +_080A6628: + adds r0, r3, 0 + adds r0, 0x6A + strh r1, [r0] + adds r2, r3, 0 + adds r2, 0x50 + ldrh r1, [r2] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080A6648 + adds r1, r3, 0 + adds r1, 0x3C + ldr r0, _080A6644 + b _080A664E + .align 2, 0 +_080A6644: .4byte gUnknown_2039DC0 +_080A6648: + adds r1, r3, 0 + adds r1, 0x3C + ldr r0, _080A6680 +_080A664E: + ldm r0!, {r4-r6} + stm r1!, {r4-r6} + ldrh r1, [r2] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080A6678 + ldrh r2, [r3, 0x3C] + ldr r1, _080A6684 + adds r0, r1, 0 + ands r0, r2 + strh r0, [r3, 0x3C] + adds r2, r3, 0 + adds r2, 0x42 + ldrh r0, [r2] + ands r1, r0 + movs r3, 0x80 + lsls r3, 3 + adds r0, r3, 0 + orrs r1, r0 + strh r1, [r2] +_080A6678: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A6680: .4byte gUnknown_2039DB0 +_080A6684: .4byte 0x0000f3ff + thumb_func_end sub_80A65F0 + + thumb_func_start sub_80A6688 +sub_80A6688: + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + bl sub_80A65E0 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80A65F0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A6688 + + thumb_func_start sub_80A66A4 +sub_80A66A4: + push {lr} + movs r1, 0 + adds r0, 0x48 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + ble _080A66B4 + movs r1, 0x1 +_080A66B4: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_80A66A4 + + thumb_func_start sub_80A66BC +sub_80A66BC: + push {lr} + adds r0, 0x52 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bge _080A66CC + movs r0, 0 + b _080A66CE +_080A66CC: + movs r0, 0x1 +_080A66CE: + pop {r1} + bx r1 + thumb_func_end sub_80A66BC + + thumb_func_start sub_80A66D4 +sub_80A66D4: + push {lr} + adds r1, r0, 0 + adds r0, 0x52 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + bge _080A66F2 + adds r0, r1, 0 + adds r0, 0x48 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + ble _080A66F2 + movs r0, 0x1 + b _080A66F4 +_080A66F2: + movs r0, 0 +_080A66F4: + pop {r1} + bx r1 + thumb_func_end sub_80A66D4 + + thumb_func_start sub_80A66F8 +sub_80A66F8: + push {lr} + adds r1, r0, 0 + adds r0, 0x52 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + blt _080A6716 + ldrh r1, [r1] + movs r0, 0x80 + lsls r0, 6 + ands r0, r1 + cmp r0, 0 + bne _080A6716 + lsrs r0, r1, 15 + b _080A6718 +_080A6716: + movs r0, 0 +_080A6718: + pop {r1} + bx r1 + thumb_func_end sub_80A66F8 + + thumb_func_start sub_80A671C +sub_80A671C: + push {r4-r6,lr} + adds r4, r0, 0 + adds r6, r4, 0 + adds r6, 0x58 + movs r0, 0 + ldrsh r1, [r6, r0] + cmp r1, 0 + beq _080A6752 + movs r0, 0xE0 + lsls r0, 1 + cmp r1, r0 + beq _080A674A + ldr r0, [r4, 0x5C] + movs r5, 0x1 + negs r5, r5 + cmp r0, r5 + beq _080A674A + bl sub_800E9E4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080A674E +_080A674A: + movs r0, 0x1 + b _080A6754 +_080A674E: + str r5, [r4, 0x5C] + strh r0, [r6] +_080A6752: + movs r0, 0 +_080A6754: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80A671C + + thumb_func_start sub_80A675C +sub_80A675C: + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r1, 0 + mov r0, sp + bl sub_809D248 + lsls r0, 24 + cmp r0, 0 + beq _080A678C + ldr r1, [r6] + cmp r1, 0 + bge _080A6776 + adds r1, 0xFF +_080A6776: + asrs r1, 8 + ldr r0, [sp] + subs r4, r1, r0 + ldr r1, [r6, 0x4] + cmp r1, 0 + bge _080A6784 + adds r1, 0xFF +_080A6784: + asrs r1, 8 + ldr r0, [sp, 0x4] + subs r5, r1, r0 + b _080A67A0 +_080A678C: + ldr r0, [r6] + cmp r0, 0 + bge _080A6794 + adds r0, 0xFF +_080A6794: + asrs r4, r0, 8 + ldr r1, [r6, 0x4] + cmp r1, 0 + bge _080A679E + adds r1, 0xFF +_080A679E: + asrs r5, r1, 8 +_080A67A0: + adds r1, r4, 0 + adds r1, 0x40 + ldr r0, _080A67BC + cmp r1, r0 + bhi _080A67C0 + movs r0, 0x10 + negs r0, r0 + cmp r5, r0 + blt _080A67C0 + cmp r5, 0xCF + bgt _080A67C0 + movs r0, 0x1 + b _080A67C2 + .align 2, 0 +_080A67BC: .4byte 0x0000016f +_080A67C0: + movs r0, 0 +_080A67C2: + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80A675C + + thumb_func_start sub_80A67CC +sub_80A67CC: + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r7, 0 + cmp r5, 0 + beq _080A67E2 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0 + ble _080A67E2 + movs r7, 0x1 +_080A67E2: + adds r0, r2, 0 + bl sub_80A65E0 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80A65F0 + movs r1, 0 + str r1, [r4, 0x74] + str r1, [r4, 0x78] + movs r6, 0x1 + negs r6, r6 + str r6, [r4, 0x7C] + adds r0, r4, 0 + adds r0, 0x70 + strb r1, [r0] + subs r0, 0x4 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r2, r4, 0 + adds r2, 0x52 + ldr r0, _080A6884 + strh r0, [r2] + str r1, [r4, 0x54] + adds r0, r4, 0 + adds r0, 0x64 + strh r1, [r0] + adds r2, 0x14 + adds r0, r6, 0 + adds r3, r0, 0 + strh r0, [r2] + adds r0, r4, 0 + adds r0, 0x68 + strh r1, [r0] + subs r0, 0x10 + strh r1, [r0] + adds r1, r4, 0 + adds r1, 0x5A + movs r0, 0xFF + strb r0, [r1] + str r6, [r4, 0x5C] + str r6, [r4, 0x60] + cmp r7, 0 + beq _080A6888 + ldr r0, [r5] + ldr r1, [r5, 0x4] + str r0, [r4, 0x48] + str r1, [r4, 0x4C] + adds r5, r4, 0 + adds r5, 0x48 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_80A68F8 + lsls r0, 24 + cmp r0, 0 + bne _080A689A + adds r0, r4, 0 + adds r0, 0x50 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 5 + ands r0, r1 + cmp r0, 0 + bne _080A689A + adds r0, r5, 0 + bl sub_80A6CF4 + lsls r0, 24 + cmp r0, 0 + beq _080A689A + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_80A68F8 + b _080A689A + .align 2, 0 +_080A6884: .4byte 0x0000ffff +_080A6888: + adds r1, r4, 0 + adds r1, 0x48 + ldrh r0, [r1] + orrs r0, r3 + strh r0, [r1] + adds r0, r4, 0 + adds r0, 0x4A + strh r7, [r0] + str r7, [r4, 0x4C] +_080A689A: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A67CC + + thumb_func_start sub_80A68A0 +sub_80A68A0: + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x50 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _080A68CE + adds r0, r4, 0 + adds r0, 0x58 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080A68CE + ldr r1, [r4, 0x5C] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080A68CE + adds r0, r1, 0 + bl sub_800DC14 +_080A68CE: + ldr r0, [r4, 0x54] + cmp r0, 0 + beq _080A68DC + bl CloseFile + movs r0, 0 + str r0, [r4, 0x54] +_080A68DC: + adds r0, r4, 0 + bl sub_80A69FC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A68A0 + + thumb_func_start sub_80A68E8 +sub_80A68E8: + push {lr} + movs r0, 0x15 +_080A68EC: + subs r0, 0x1 + cmp r0, 0 + bge _080A68EC + pop {r0} + bx r0 + thumb_func_end sub_80A68E8 + + thumb_func_start sub_80A68F8 +sub_80A68F8: + push {r4-r7,lr} + mov r12, r0 + adds r5, r2, 0 + ldr r0, _080A6924 + ldr r4, [r0] + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, r5 + blt _080A6956 + adds r5, r0, 0 + movs r3, 0 + ldr r0, [r4] + mov r6, r12 + adds r6, 0x52 + mov r7, r12 + adds r7, 0x64 + cmp r0, 0 + bne _080A6928 + movs r2, 0x1 + cmp r2, r5 + blt _080A692A + b _080A6986 + .align 2, 0 +_080A6924: .4byte gUnknown_3001B7C +_080A6928: + movs r2, 0 +_080A692A: + adds r0, r3, 0x1 + lsls r0, 16 + asrs r3, r0, 16 + adds r4, 0xC + cmp r3, 0x15 + bgt _080A6986 + ldr r0, [r4] + cmp r0, 0 + bne _080A6928 + adds r2, 0x1 + cmp r2, r5 + blt _080A692A + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + subs r0, 0xC + subs r4, r0 + adds r0, r3, 0x1 + subs r0, r2 + lsls r0, 16 + asrs r3, r0, 16 + b _080A6986 +_080A6956: + movs r3, 0x15 + adds r4, 0xFC + ldr r0, [r4] + mov r6, r12 + adds r6, 0x52 + mov r7, r12 + adds r7, 0x64 + cmp r0, 0 + bne _080A696C + movs r2, 0x1 + b _080A6982 +_080A696C: + movs r2, 0 +_080A696E: + subs r0, r3, 0x1 + lsls r0, 16 + asrs r3, r0, 16 + subs r4, 0xC + cmp r3, 0 + blt _080A6986 + ldr r0, [r4] + cmp r0, 0 + bne _080A696C + adds r2, 0x1 +_080A6982: + cmp r2, r5 + blt _080A696E +_080A6986: + cmp r2, r5 + blt _080A69C4 + strh r3, [r6] + strh r5, [r7] + movs r0, 0x1 + str r0, [r4] + mov r0, r12 + str r0, [r4, 0x8] + ldrh r1, [r1, 0x2] + bl GroundSprite_ExtendPaletteAdd + cmp r5, 0x1 + ble _080A69B2 + movs r2, 0x2 + adds r0, r4, 0 + adds r0, 0xC + subs r1, r5, 0x1 +_080A69A8: + str r2, [r0] + adds r0, 0xC + subs r1, 0x1 + cmp r1, 0 + bne _080A69A8 +_080A69B2: + ldr r1, _080A69C0 + ldr r0, [r1] + subs r0, r5 + str r0, [r1] + movs r0, 0x1 + b _080A69EC + .align 2, 0 +_080A69C0: .4byte gUnknown_2039DD4 +_080A69C4: + ldr r1, _080A69F4 + movs r0, 0 + strb r0, [r1] + movs r0, 0x1 + negs r0, r0 + mov r1, r12 + str r0, [r1, 0x7C] + mov r0, r12 + adds r0, 0x70 + movs r1, 0 + strb r1, [r0] + ldr r0, _080A69F8 + strh r0, [r6] + strh r1, [r7] + mov r0, r12 + adds r0, 0x6C + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + movs r0, 0 +_080A69EC: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080A69F4: .4byte gUnknown_2039DD0 +_080A69F8: .4byte 0x0000ffff + thumb_func_end sub_80A68F8 + + thumb_func_start sub_80A69FC +sub_80A69FC: + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r6, 0 + adds r7, 0x52 + movs r0, 0 + ldrsh r4, [r7, r0] + ldr r0, _080A6A80 + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 2 + ldr r0, [r0] + adds r5, r0, r1 + cmp r4, 0 + blt _080A6A7A + adds r0, r6, 0 + bl GroundSprite_ExtendPaletteDelete + movs r0, 0 + str r0, [r5, 0x8] + str r0, [r5] + adds r5, 0xC + ldr r1, _080A6A84 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + adds r0, r4, 0x1 + lsls r0, 16 + asrs r4, r0, 16 + adds r6, 0x64 + mov r12, r6 + cmp r4, 0x15 + bgt _080A6A6A + ldr r0, [r5] + cmp r0, 0x2 + bne _080A6A6A + movs r6, 0 + adds r2, r1, 0 + lsls r1, r4, 16 + movs r0, 0x80 + lsls r0, 9 + adds r1, r0 + adds r3, r0, 0 +_080A6A50: + str r6, [r5] + adds r5, 0xC + ldr r0, [r2] + adds r0, 0x1 + str r0, [r2] + adds r0, r1, 0 + adds r1, r3 + asrs r4, r0, 16 + cmp r4, 0x15 + bgt _080A6A6A + ldr r0, [r5] + cmp r0, 0x2 + beq _080A6A50 +_080A6A6A: + ldr r0, _080A6A88 + strh r0, [r7] + movs r0, 0 + mov r1, r12 + strh r0, [r1] + ldr r1, _080A6A8C + movs r0, 0x1 + strb r0, [r1] +_080A6A7A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6A80: .4byte gUnknown_3001B7C +_080A6A84: .4byte gUnknown_2039DD4 +_080A6A88: .4byte 0x0000ffff +_080A6A8C: .4byte gUnknown_2039DD0 + thumb_func_end sub_80A69FC + + thumb_func_start GroundSprite_ExtendPaletteAdd +GroundSprite_ExtendPaletteAdd: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + mov r10, r0 + lsls r1, 16 + lsrs r2, r1, 16 + adds r5, r2, 0 + movs r0, 0xC0 + lsls r0, 2 + ands r0, r2 + cmp r0, 0 + bne _080A6AB0 + b _080A6C6C +_080A6AB0: + movs r0, 0x80 + lsls r0, 3 + ands r0, r2 + cmp r0, 0 + beq _080A6AD8 + ldr r0, _080A6AD4 + ldr r1, [r0] + movs r3, 0x86 + lsls r3, 1 + adds r4, r1, r3 + ldrh r1, [r4] + adds r3, r0, 0 + cmp r1, r2 + bne _080A6B36 + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + b _080A6C78 + .align 2, 0 +_080A6AD4: .4byte gUnknown_3001B7C +_080A6AD8: + movs r0, 0 + mov r8, r0 + ldr r1, _080A6B1C + ldr r0, [r1] + movs r2, 0x84 + lsls r2, 1 + adds r4, r0, r2 + adds r3, r1, 0 + movs r1, 0xE8 + lsls r1, 13 +_080A6AEC: + ldrh r0, [r4] + cmp r0, r5 + bne _080A6B24 + lsrs r1, 16 + adds r3, r1, 0 + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + mov r0, r10 + cmp r0, 0 + beq _080A6B08 + subs r1, 0x10 + adds r0, 0x68 + strh r1, [r0] +_080A6B08: + adds r0, r3, 0 + subs r0, 0x10 + str r0, [sp] + str r5, [sp, 0x4] + movs r0, 0 + ldr r1, _080A6B20 + mov r2, r8 + bl Log + b _080A6C78 + .align 2, 0 +_080A6B1C: .4byte gUnknown_3001B7C +_080A6B20: .4byte gUnknown_81177F4 +_080A6B24: + movs r2, 0x80 + lsls r2, 9 + adds r1, r2 + movs r0, 0x1 + add r8, r0 + adds r4, 0x4 + mov r2, r8 + cmp r2, 0x1 + ble _080A6AEC +_080A6B36: + movs r0, 0x80 + lsls r0, 3 + ands r0, r5 + cmp r0, 0 + beq _080A6B68 + movs r0, 0x1 + mov r8, r0 + ldr r0, [r3] + movs r1, 0x86 + lsls r1, 1 + adds r4, r0, r1 + movs r2, 0x2 + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080A6BA8 + ldr r0, _080A6B60 + ldr r1, _080A6B64 + adds r2, r5, 0 + bl FatalError + .align 2, 0 +_080A6B60: .4byte gUnknown_8117858 +_080A6B64: .4byte gUnknown_8117864 +_080A6B68: + movs r0, 0 + mov r8, r0 + ldr r0, [r3] + movs r1, 0x84 + lsls r1, 1 + adds r4, r0, r1 + movs r2, 0x2 + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080A6B90 +_080A6B7C: + movs r3, 0x1 + add r8, r3 + adds r4, 0x4 + mov r0, r8 + cmp r0, 0x1 + bgt _080A6B96 + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, 0 + bgt _080A6B7C +_080A6B90: + mov r2, r8 + cmp r2, 0x1 + ble _080A6BA8 +_080A6B96: + ldr r0, _080A6BA0 + ldr r1, _080A6BA4 + adds r2, r5, 0 + bl FatalError + .align 2, 0 +_080A6BA0: .4byte gUnknown_8117888 +_080A6BA4: .4byte gUnknown_8117864 +_080A6BA8: + mov r0, r8 + adds r0, 0x1D + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0xC] + mov r3, r8 + lsls r0, r3, 20 + movs r1, 0xE8 + lsls r1, 17 + adds r0, r1 + lsrs r0, 16 + str r0, [sp, 0x10] + movs r0, 0x80 + lsls r0, 2 + ands r0, r5 + cmp r0, 0 + beq _080A6BE8 + ldr r0, _080A6BE0 + ldr r1, _080A6BE4 + bl OpenFileAndGetFileDataPtr + mov r9, r0 + ldr r7, [r0, 0x4] + movs r0, 0xFF + ands r0, r5 + lsls r0, 6 + adds r7, r0 + b _080A6BFE + .align 2, 0 +_080A6BE0: .4byte gUnknown_81177EC +_080A6BE4: .4byte gUnknown_8510000 +_080A6BE8: + movs r0, 0xFF + ands r0, r5 + lsls r0, 2 + ldr r1, _080A6C60 + adds r0, r1 + ldr r0, [r0] + ldr r1, _080A6C64 + bl OpenFileAndGetFileDataPtr + mov r9, r0 + ldr r7, [r0, 0x4] +_080A6BFE: + movs r0, 0x80 + lsls r0, 5 + ands r0, r5 + lsls r0, 16 + lsrs r0, 16 + negs r0, r0 + lsrs r6, r0, 31 + movs r0, 0x80 + lsls r0, 6 + ands r0, r5 + cmp r0, 0 + beq _080A6C1A + movs r0, 0x2 + orrs r6, r0 +_080A6C1A: + ldr r0, [sp, 0xC] + adds r1, r6, 0 + bl sub_80997F4 + ldr r0, [sp, 0x10] + adds r1, r7, 0 + movs r2, 0x10 + bl sub_809971C + strh r5, [r4] + movs r0, 0x1 + strh r0, [r4, 0x2] + ldr r2, [sp, 0xC] + subs r2, 0x10 + mov r3, r10 + cmp r3, 0 + beq _080A6C42 + mov r0, r10 + adds r0, 0x68 + strh r2, [r0] +_080A6C42: + ldr r1, _080A6C68 + str r2, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + mov r2, r8 + ldr r3, [sp, 0xC] + bl Log + mov r0, r9 + cmp r0, 0 + beq _080A6C78 + bl CloseFile + b _080A6C78 + .align 2, 0 +_080A6C60: .4byte gUnknown_81178F4 +_080A6C64: .4byte gUnknown_9E60000 +_080A6C68: .4byte gUnknown_8117894 +_080A6C6C: + mov r1, r10 + cmp r1, 0 + beq _080A6C78 + mov r0, r10 + adds r0, 0x68 + strh r5, [r0] +_080A6C78: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end GroundSprite_ExtendPaletteAdd + + thumb_func_start GroundSprite_ExtendPaletteDelete +GroundSprite_ExtendPaletteDelete: + push {r4-r6,lr} + adds r2, r0, 0 + cmp r2, 0 + beq _080A6C9E + adds r0, 0x68 + ldrh r0, [r0] + adds r5, r0, 0 + subs r5, 0xD + cmp r5, 0 + blt _080A6CE6 + b _080A6CA0 +_080A6C9E: + movs r5, 0x1 +_080A6CA0: + ldr r0, _080A6CEC + lsls r1, r5, 2 + movs r3, 0x84 + lsls r3, 1 + adds r1, r3 + ldr r0, [r0] + adds r4, r0, r1 + cmp r2, 0 + beq _080A6CBA + adds r1, r2, 0 + adds r1, 0x68 + movs r0, 0 + strh r0, [r1] +_080A6CBA: + ldrh r0, [r4, 0x2] + subs r0, 0x1 + movs r6, 0 + strh r0, [r4, 0x2] + lsls r0, 16 + cmp r0, 0 + bgt _080A6CE6 + ldr r1, _080A6CF0 + ldrh r3, [r4] + movs r0, 0 + adds r2, r5, 0 + bl Log + strh r6, [r4] + strh r6, [r4, 0x2] + adds r0, r5, 0 + adds r0, 0x1D + lsls r0, 16 + lsrs r0, 16 + movs r1, 0 + bl sub_80997F4 +_080A6CE6: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A6CEC: .4byte gUnknown_3001B7C +_080A6CF0: .4byte gUnknown_81178C0 + thumb_func_end GroundSprite_ExtendPaletteDelete + + thumb_func_start sub_80A6CF4 +sub_80A6CF4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x68 + movs r1, 0 + mov r8, r1 + movs r1, 0 + ldrsh r2, [r0, r1] + mov r9, r2 + movs r2, 0 + mov r10, r2 + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x60] + str r0, [sp, 0x64] + add r4, sp, 0x58 + adds r0, r4, 0 + bl sub_809D248 + movs r7, 0 + ldr r0, _080A6D70 + ldr r3, [r0] + movs r1, 0x80 + lsls r1, 6 + mov r12, r1 + mov r4, sp +_080A6D2C: + ldr r0, [r3] + cmp r0, 0x1 + bne _080A6DB4 + ldr r2, [r3, 0x8] + adds r0, r2, 0 + adds r0, 0x50 + ldrh r1, [r0] + mov r0, r12 + ands r0, r1 + cmp r0, 0 + bne _080A6DB4 + ldr r0, [r2, 0x7C] + cmp r0, 0 + blt _080A6DB4 + ldr r1, [r2, 0x74] + cmp r1, 0 + bge _080A6D50 + adds r1, 0xFF +_080A6D50: + asrs r1, 8 + ldr r0, [sp, 0x58] + subs r5, r1, r0 + ldr r1, [r2, 0x78] + cmp r1, 0 + bge _080A6D5E + adds r1, 0xFF +_080A6D5E: + asrs r1, 8 + ldr r0, [sp, 0x5C] + subs r1, r0 + adds r6, r1, 0 + cmp r1, 0 + ble _080A6D74 + adds r0, r6, 0 + adds r0, 0x28 + b _080A6D78 + .align 2, 0 +_080A6D70: .4byte gUnknown_3001B7C +_080A6D74: + movs r0, 0x28 + subs r0, r6 +_080A6D78: + str r0, [r2, 0x7C] + cmp r5, 0 + ble _080A6D88 + ldr r0, [r2, 0x7C] + cmp r5, r0 + ble _080A6D92 + str r5, [r2, 0x7C] + b _080A6D92 +_080A6D88: + negs r1, r5 + ldr r0, [r2, 0x7C] + cmp r1, r0 + ble _080A6D92 + str r1, [r2, 0x7C] +_080A6D92: + adds r0, r2, 0 + adds r0, 0x48 + movs r1, 0 + ldrsh r0, [r0, r1] + add r10, r0 + cmp r0, r9 + blt _080A6DAE + ldr r0, [r2, 0x7C] + ldr r1, [sp, 0x64] + cmp r1, r0 + bge _080A6DAE + mov r1, r8 + str r1, [sp, 0x60] + str r0, [sp, 0x64] +_080A6DAE: + stm r4!, {r2} + movs r2, 0x1 + add r8, r2 +_080A6DB4: + adds r0, r7, 0x1 + lsls r0, 16 + asrs r7, r0, 16 + adds r3, 0xC + cmp r7, 0x15 + ble _080A6D2C + cmp r10, r9 + blt _080A6E54 + ldr r0, [sp, 0x60] + cmp r0, 0 + blt _080A6DD8 + lsls r0, 2 + add r0, sp + ldr r0, [r0] + bl sub_80A69FC + movs r0, 0x1 + b _080A6E56 +_080A6DD8: + mov r1, r8 + cmp r1, 0 + ble _080A6E54 +_080A6DDE: + movs r5, 0x1 + negs r5, r5 + adds r3, r5, 0 + movs r6, 0 + mov r7, r8 + subs r7, 0x1 + mov r2, r8 + cmp r2, 0 + ble _080A6E08 + mov r2, sp + mov r1, r8 +_080A6DF4: + ldr r0, [r2] + ldr r0, [r0, 0x7C] + cmp r3, r0 + bge _080A6E00 + mov r5, r8 + adds r3, r0, 0 +_080A6E00: + adds r2, 0x4 + subs r1, 0x1 + cmp r1, 0 + bne _080A6DF4 +_080A6E08: + lsls r0, r5, 2 + mov r1, sp + adds r4, r1, r0 + ldr r0, [r4] + bl sub_80A69FC + mov r8, r7 + adds r1, r5, 0 + cmp r1, r8 + bge _080A6E28 + adds r2, r4, 0 +_080A6E1E: + ldr r0, [r2, 0x4] + stm r2!, {r0} + adds r1, 0x1 + cmp r1, r8 + blt _080A6E1E +_080A6E28: + movs r1, 0 + ldr r0, _080A6E40 + ldr r3, [r0] +_080A6E2E: + ldr r0, [r3] + cmp r0, 0 + bne _080A6E44 + adds r6, 0x1 + cmp r6, r9 + blt _080A6E46 + movs r0, 0x1 + b _080A6E56 + .align 2, 0 +_080A6E40: .4byte gUnknown_3001B7C +_080A6E44: + movs r6, 0 +_080A6E46: + adds r1, 0x1 + adds r3, 0xC + cmp r1, 0x15 + ble _080A6E2E + mov r2, r8 + cmp r2, 0 + bgt _080A6DDE +_080A6E54: + movs r0, 0 +_080A6E56: + add sp, 0x68 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A6CF4 + + thumb_func_start sub_80A6E68 +sub_80A6E68: + push {lr} + movs r0, 0 + bl ResetSprites + movs r0, 0 + bl nullsub_10 + bl sub_800E970 + pop {r0} + bx r0 + thumb_func_end sub_80A6E68 + + thumb_func_start sub_80A6E80 +sub_80A6E80: + push {r4,lr} + sub sp, 0x4 + ldr r4, _080A6EC4 + adds r0, r4, 0 + bl sub_809D248 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080A6E98 + str r0, [r4] + str r0, [r4, 0x4] +_080A6E98: + bl sub_80ABA7C + bl sub_80ACAD4 + bl sub_80AD7AC + ldrh r1, [r4, 0x4] + lsls r1, 16 + ldrh r0, [r4] + orrs r0, r1 + str r0, [sp] + mov r0, sp + bl sub_800E90C + bl sub_8005180 + bl nullsub_12 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6EC4: .4byte gUnknown_2039DD8 + thumb_func_end sub_80A6E80 + + thumb_func_start sub_80A6EC8 +sub_80A6EC8: + push {lr} + adds r2, r0, 0 + adds r0, 0x52 + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r0, 0 + ble _080A6EF6 + adds r0, r2, 0 + adds r0, 0x48 + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r1, r0 + bgt _080A6EE4 + adds r1, r0, 0 +_080A6EE4: + adds r0, r2, 0 + adds r0, 0x64 + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r0, r1 + beq _080A6EF6 + adds r0, r2, 0 + adds r0, 0x66 + strh r1, [r0] +_080A6EF6: + pop {r0} + bx r0 + thumb_func_end sub_80A6EC8 + + thumb_func_start sub_80A6EFC +sub_80A6EFC: + push {r4-r7,lr} + sub sp, 0xC + adds r4, r0, 0 + lsls r1, 16 + asrs r7, r1, 16 + lsls r2, 24 + asrs r6, r2, 24 + adds r0, 0x52 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bge _080A6F48 + adds r5, r4, 0 + adds r5, 0x66 + movs r2, 0 + ldrsh r0, [r5, r2] + cmp r0, 0 + blt _080A6F28 + adds r1, r4, 0 + adds r1, 0x48 + adds r2, r0, 0 + b _080A6F62 +_080A6F28: + adds r1, r4, 0 + adds r1, 0x48 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + bgt _080A6F36 + b _080A7038 +_080A6F36: + movs r2, 0x1 + negs r2, r2 + adds r0, r4, 0 + bl sub_80A68F8 + lsls r0, 24 + cmp r0, 0 + beq _080A7038 + b _080A6F72 +_080A6F48: + adds r5, r4, 0 + adds r5, 0x66 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0 + blt _080A6F72 + adds r0, r4, 0 + bl sub_80A69FC + adds r1, r4, 0 + adds r1, 0x48 + movs r0, 0 + ldrsh r2, [r5, r0] +_080A6F62: + adds r0, r4, 0 + bl sub_80A68F8 + lsls r0, 24 + cmp r0, 0 + beq _080A7038 + ldr r0, _080A6F8C + strh r0, [r5] +_080A6F72: + movs r0, 0x80 + lsls r0, 3 + ands r0, r7 + lsls r0, 16 + asrs r3, r0, 16 + cmp r3, 0 + beq _080A6F94 + ldrh r1, [r4] + ldr r0, _080A6F90 + ands r0, r1 + strh r0, [r4] + b _080A7038 + .align 2, 0 +_080A6F8C: .4byte 0x0000ffff +_080A6F90: .4byte 0x0000efff +_080A6F94: + ldr r2, _080A6FE0 + adds r0, r4, 0 + adds r0, 0x52 + movs r5, 0 + ldrsh r1, [r0, r5] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, [r2] + adds r1, r0 + mov r12, r1 + adds r1, r4, 0 + adds r1, 0x70 + movs r0, 0x1 + strb r0, [r1] + subs r0, 0x2 + str r0, [r4, 0x7C] + movs r1, 0xE0 + lsls r1, 3 + ands r1, r7 + movs r0, 0x80 + lsls r0, 1 + cmp r1, r0 + beq _080A6FE4 + cmp r1, r0 + ble _080A6FEE + movs r0, 0x80 + lsls r0, 2 + cmp r1, r0 + beq _080A6FFA + movs r0, 0xC0 + lsls r0, 2 + cmp r1, r0 + bne _080A6FEE + adds r0, r4, 0 + adds r0, 0x6C + strh r3, [r0] + b _080A7000 + .align 2, 0 +_080A6FE0: .4byte gUnknown_3001B7C +_080A6FE4: + adds r1, r4, 0 + adds r1, 0x6C + movs r0, 0x80 + strh r0, [r1] + b _080A7000 +_080A6FEE: + adds r1, r4, 0 + adds r1, 0x6C + movs r0, 0x80 + lsls r0, 1 + strh r0, [r1] + b _080A7000 +_080A6FFA: + adds r0, r4, 0 + adds r0, 0x6C + strh r1, [r0] +_080A7000: + adds r0, r4, 0 + adds r0, 0x6E + movs r1, 0 + strh r1, [r0] + ldr r5, [r4, 0x4C] + movs r0, 0xFF + ands r0, r7 + adds r2, r6, 0 + cmp r6, 0 + bge _080A7016 + adds r2, r6, 0x7 +_080A7016: + asrs r2, 3 + adds r2, r0, r2 + movs r3, 0x7 + ands r3, r6 + mov r6, r12 + ldr r0, [r6, 0x4] + str r0, [sp] + str r1, [sp, 0x4] + lsls r0, r7, 16 + lsrs r0, 27 + movs r1, 0x1 + ands r0, r1 + str r0, [sp, 0x8] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80053D0 +_080A7038: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A6EFC + + thumb_func_start sub_80A7040 +sub_80A7040: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r3, 0 + lsls r1, 16 + asrs r3, r1, 16 + lsls r2, 24 + asrs r2, 24 + adds r0, 0x50 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _080A708C + cmp r3, 0 + beq _080A7068 + movs r0, 0xE0 + lsls r0, 1 + cmp r3, r0 + bne _080A7080 +_080A7068: + adds r0, r4, 0 + bl sub_80A671C + lsls r0, 24 + cmp r0, 0 + beq _080A708C + adds r1, r4, 0 + adds r1, 0x58 + movs r0, 0xE0 + lsls r0, 1 + strh r0, [r1] + b _080A708C +_080A7080: + adds r0, r4, 0 + adds r0, 0x58 + strh r3, [r0] + adds r0, 0x2 + strb r2, [r0] + str r5, [r4, 0x60] +_080A708C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A7040 + + thumb_func_start sub_80A7094 +sub_80A7094: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x40 + adds r7, r0, 0 + mov r10, r1 + mov r8, r2 + str r3, [sp, 0x3C] + ldr r0, [r2] + ldr r1, [r2, 0x4] + str r0, [r7, 0x74] + str r1, [r7, 0x78] + movs r6, 0 + str r6, [r7, 0x7C] + adds r0, r7, 0 + adds r0, 0x50 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _080A7172 + adds r4, r7, 0 + adds r4, 0x58 + movs r0, 0 + ldrsh r1, [r4, r0] + cmp r1, 0 + beq _080A7172 + movs r0, 0xE0 + lsls r0, 1 + cmp r1, r0 + bne _080A70EC + ldr r0, [r7, 0x5C] + movs r5, 0x1 + negs r5, r5 + cmp r0, r5 + beq _080A70E8 + bl sub_800DC14 + str r5, [r7, 0x5C] +_080A70E8: + strh r6, [r4] + b _080A7172 +_080A70EC: + ldr r0, [r7, 0x5C] + movs r1, 0x1 + negs r1, r1 + mov r9, r1 + cmp r0, r9 + bne _080A7160 + add r1, sp, 0x8 + ldr r0, _080A715C + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + movs r1, 0 + ldrsh r0, [r4, r1] + bl sub_800EE5C + bl sub_800EF64 + add r2, sp, 0x14 + movs r3, 0 + ldrsh r0, [r4, r3] + str r0, [sp, 0x14] + str r6, [r2, 0x4] + adds r0, r7, 0 + adds r0, 0x5A + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + str r0, [r2, 0x8] + mov r4, r8 + ldr r0, [r4] + cmp r0, 0 + bge _080A712C + adds r0, 0xFF +_080A712C: + asrs r0, 8 + strh r0, [r2, 0xC] + mov r5, r8 + ldr r0, [r5, 0x4] + cmp r0, 0 + bge _080A713A + adds r0, 0xFF +_080A713A: + asrs r0, 8 + strh r0, [r2, 0xE] + strh r6, [r2, 0x10] + strh r6, [r2, 0x12] + mov r0, r9 + str r0, [r2, 0x14] + str r6, [r2, 0x18] + add r1, sp, 0x30 + add r0, sp, 0x8 + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + adds r0, r2, 0 + bl sub_800E890 + str r0, [r7, 0x5C] + b _080A7172 + .align 2, 0 +_080A715C: .4byte gUnknown_81178E0 +_080A7160: + bl sub_800E9E4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080A7172 + mov r1, r9 + str r1, [r7, 0x5C] + strh r0, [r4] +_080A7172: + adds r0, r7, 0 + adds r0, 0x52 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + blt _080A7222 + adds r0, r7, 0 + adds r0, 0x50 + ldrh r4, [r0] + movs r0, 0x40 + ands r0, r4 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + cmp r0, 0 + bne _080A7222 + mov r3, r8 + ldr r1, [r3] + cmp r1, 0 + bge _080A719C + adds r1, 0xFF +_080A719C: + asrs r1, 8 + ldr r2, _080A7228 + ldr r0, [r2] + subs r5, r1, r0 + mov r1, r8 + ldr r0, [r1, 0x4] + cmp r0, 0 + bge _080A71AE + adds r0, 0xFF +_080A71AE: + asrs r1, r0, 8 + ldr r0, [r2, 0x4] + subs r6, r1, r0 + ldr r3, [sp, 0x3C] + cmp r3, 0 + bge _080A71BC + adds r3, 0xFF +_080A71BC: + asrs r0, r3, 8 + subs r0, r6, r0 + mov r8, r0 + adds r1, r5, 0 + adds r1, 0x40 + ldr r0, _080A722C + cmp r1, r0 + bhi _080A7274 + movs r0, 0x10 + negs r0, r0 + cmp r6, r0 + blt _080A7274 + cmp r6, 0xCF + bgt _080A7274 + cmp r8, r0 + blt _080A7274 + mov r2, r8 + cmp r2, 0xCF + bgt _080A7274 + movs r0, 0x10 + ands r0, r4 + cmp r0, 0 + beq _080A7234 + ldr r0, _080A7230 + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A7234 + adds r0, r7, 0 + movs r1, 0 + bl sub_80A72B8 + movs r1, 0x98 + lsls r1, 1 + adds r0, r7, 0 + adds r0, 0x68 + ldrh r0, [r0] + str r0, [sp] + adds r0, r7, 0 + adds r0, 0x3C + str r0, [sp, 0x4] + adds r0, r7, 0 + movs r2, 0xD0 + movs r3, 0 + bl sub_800558C + adds r0, r7, 0 + adds r0, 0x70 + mov r3, r9 + strb r3, [r0] +_080A7222: + movs r0, 0 + b _080A72A6 + .align 2, 0 +_080A7228: .4byte gUnknown_2039DD8 +_080A722C: .4byte 0x0000016f +_080A7230: .4byte gUnknown_2039DCC +_080A7234: + adds r4, r7, 0 + adds r4, 0x70 + ldrb r1, [r4] + adds r0, r7, 0 + bl sub_80A72B8 + adds r0, r7, 0 + adds r0, 0x6A + movs r1, 0 + ldrsh r3, [r0, r1] + adds r3, r6 + subs r0, 0x2 + ldrh r0, [r0] + str r0, [sp] + adds r0, r7, 0 + adds r0, 0x3C + str r0, [sp, 0x4] + adds r0, r7, 0 + adds r1, r5, 0 + mov r2, r8 + bl sub_800558C + movs r0, 0 + strb r0, [r4] + mov r2, r10 + cmp r2, 0 + beq _080A7270 + mov r3, r10 + str r5, [r3] + str r6, [r3, 0x4] +_080A7270: + movs r0, 0x1 + b _080A72A6 +_080A7274: + adds r4, r7, 0 + adds r4, 0x70 + ldrb r0, [r4] + cmp r0, 0 + beq _080A7222 + adds r0, r7, 0 + movs r1, 0x1 + bl sub_80A72B8 + movs r1, 0x98 + lsls r1, 1 + adds r0, r7, 0 + adds r0, 0x68 + ldrh r0, [r0] + str r0, [sp] + adds r0, r7, 0 + adds r0, 0x3C + str r0, [sp, 0x4] + adds r0, r7, 0 + movs r2, 0xD0 + movs r3, 0 + bl sub_800558C + movs r0, 0 + strb r0, [r4] +_080A72A6: + 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_80A7094 + + thumb_func_start sub_80A72B8 +sub_80A72B8: + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 24 + cmp r1, 0 + beq _080A72D2 + adds r1, r6, 0 + adds r1, 0x6E + movs r0, 0 + strh r0, [r1] + adds r0, r6, 0 + bl sub_80054BC + b _080A7304 +_080A72D2: + adds r5, r6, 0 + adds r5, 0x6E + adds r0, r6, 0 + adds r0, 0x6C + ldrh r0, [r0] + ldrh r1, [r5] + adds r0, r1 + strh r0, [r5] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080A7304 + ldr r0, _080A730C + adds r7, r0, 0 +_080A72EE: + adds r4, r5, 0 + ldrh r1, [r5] + adds r0, r7, r1 + strh r0, [r5] + adds r0, r6, 0 + bl sub_80054BC + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0xFF + bgt _080A72EE +_080A7304: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A730C: .4byte 0xffffff00 + thumb_func_end sub_80A72B8 + + thumb_func_start sub_80A7310 +sub_80A7310: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + mov r12, r0 + adds r4, r1, 0 + adds r5, r2, 0 + adds r0, 0x50 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _080A73DC + mov r0, r12 + ldr r0, [r0, 0x5C] + mov r8, r0 + movs r0, 0x1 + negs r0, r0 + cmp r8, r0 + beq _080A73DC + ldr r0, [r4] + cmp r0, 0 + bge _080A7344 + adds r0, 0xFF +_080A7344: + lsls r0, 8 + lsrs r0, 16 + ldr r1, _080A73D0 + mov r9, r1 + ldr r2, [sp, 0x4] + ands r2, r1 + orrs r2, r0 + str r2, [sp, 0x4] + ldr r0, [r4, 0x4] + cmp r0, 0 + bge _080A735C + adds r0, 0xFF +_080A735C: + lsls r0, 8 + lsrs r0, 16 + lsls r0, 16 + ldr r6, _080A73D4 + adds r4, r6, 0 + ands r4, r2 + orrs r4, r0 + str r4, [sp, 0x4] + asrs r2, r4, 16 + ldr r0, _080A73D8 + ldr r0, [r0, 0x4] + subs r0, r2, r0 + mov r1, r12 + adds r1, 0x6A + movs r7, 0 + ldrsh r1, [r1, r7] + adds r0, r1 + adds r7, r0, 0x2 + cmp r3, 0 + bge _080A7386 + adds r3, 0xFF +_080A7386: + asrs r0, r3, 8 + subs r0, r2, r0 + lsls r0, 16 + adds r2, r6, 0 + ands r2, r4 + orrs r2, r0 + str r2, [sp, 0x4] + cmp r5, 0 + beq _080A73B8 + ldr r1, [r5] + add r0, sp, 0x4 + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + mov r0, r9 + ands r0, r2 + orrs r0, r1 + asrs r2, r0, 16 + ldr r1, [r5, 0x4] + adds r1, r2 + lsls r1, 16 + ands r0, r6 + orrs r0, r1 + str r0, [sp, 0x4] +_080A73B8: + mov r0, r12 + adds r0, 0x3C + str r0, [sp] + mov r0, r8 + add r1, sp, 0x4 + movs r2, 0 + adds r3, r7, 0 + bl sub_800E8AC + movs r0, 0x1 + b _080A73DE + .align 2, 0 +_080A73D0: .4byte 0xffff0000 +_080A73D4: .4byte 0x0000ffff +_080A73D8: .4byte gUnknown_2039DD8 +_080A73DC: + movs r0, 0 +_080A73DE: + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A7310 + + thumb_func_start sub_80A73EC +sub_80A73EC: + push {lr} + bl CopySpritesToOam + bl nullsub_13 + bl sub_8005304 + bl nullsub_14 + ldr r1, _080A7420 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + ldr r1, _080A7424 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xB + bls _080A741A + movs r0, 0 + strh r0, [r1] +_080A741A: + pop {r0} + bx r0 + .align 2, 0 +_080A7420: .4byte gUnknown_2039DCC +_080A7424: .4byte gUnknown_2039DCE + thumb_func_end sub_80A73EC + + thumb_func_start sub_80A7428 +sub_80A7428: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r6, r0, 0 + mov r8, r3 + lsls r1, 16 + asrs r7, r1, 16 + lsls r2, 16 + asrs r2, 16 + adds r4, r2, 0 + ldr r1, _080A7480 + mov r0, sp + bl sprintf + ldr r1, _080A7484 + mov r0, sp + bl OpenFile + adds r5, r0, 0 + movs r1, 0 + bl GetFileDataPtr + adds r0, r4, 0 + bl sub_808DACC + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080A7488 + ldr r2, [sp, 0xC] + ands r2, r1 + orrs r2, r0 + str r2, [sp, 0xC] + movs r0, 0xD3 + lsls r0, 1 + cmp r4, r0 + bne _080A7490 + ldr r0, _080A748C + ands r0, r2 + movs r1, 0x91 + lsls r1, 17 + orrs r0, r1 + str r0, [sp, 0xC] + b _080A74AC + .align 2, 0 +_080A7480: .4byte gUnknown_8117EDC +_080A7484: .4byte gUnknown_8510000 +_080A7488: .4byte 0xffff0000 +_080A748C: .4byte 0x0000ffff +_080A7490: + movs r1, 0 + cmp r7, 0x47 + bne _080A7498 + movs r1, 0x1 +_080A7498: + adds r0, r4, 0 + bl sub_808DD68 + lsls r0, 24 + lsrs r0, 8 + ldr r2, _080A74E0 + ldr r1, [sp, 0xC] + ands r1, r2 + orrs r1, r0 + str r1, [sp, 0xC] +_080A74AC: + ldr r0, [r5, 0x4] + add r1, sp, 0xC + str r0, [r1, 0x4] + adds r0, r6, 0 + mov r2, r8 + bl sub_80A67CC + str r5, [r6, 0x54] + adds r0, r6, 0 + adds r0, 0x52 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + blt _080A74D4 + movs r1, 0xC0 + lsls r1, 2 + adds r0, r6, 0 + movs r2, 0 + bl sub_80A6EFC +_080A74D4: + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A74E0: .4byte 0x0000ffff + thumb_func_end sub_80A7428 + + thumb_func_start sub_80A74E4 +sub_80A74E4: + push {lr} + bl sub_80A68A0 + pop {r0} + bx r0 + thumb_func_end sub_80A74E4 + + thumb_func_start sub_80A74F0 +sub_80A74F0: + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 16 + asrs r4, r1, 16 + lsls r2, 24 + asrs r5, r2, 24 + cmp r3, 0 + bge _080A7514 + movs r0, 0xE0 + lsls r0, 1 + cmp r4, r0 + beq _080A7512 + adds r0, r4, 0 + bl sub_800E700 + adds r3, r0, 0 + b _080A7514 +_080A7512: + movs r3, 0 +_080A7514: + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80A7040 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A74F0 + + thumb_func_start sub_80A7524 +sub_80A7524: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x18 + adds r5, r0, 0 + adds r6, r2, 0 + adds r7, r3, 0 + lsls r1, 16 + asrs r1, 16 + mov r8, r1 + mov r1, sp + bl sub_80A7094 + lsls r0, 24 + cmp r0, 0 + beq _080A75C0 + ldr r1, [r5, 0x5C] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080A758C + ldr r2, [r5, 0x60] + cmp r2, 0x3 + bgt _080A7580 + cmp r2, 0 + blt _080A7580 + add r4, sp, 0x8 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_800569C + movs r1, 0 + ldrsh r0, [r4, r1] + str r0, [sp, 0xC] + movs r1, 0x2 + ldrsh r0, [r4, r1] + add r2, sp, 0xC + str r0, [r2, 0x4] + adds r0, r5, 0 + adds r1, r6, 0 + adds r3, r7, 0 + bl sub_80A7310 + b _080A758C +_080A7580: + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0 + adds r3, r7, 0 + bl sub_80A7310 +_080A758C: + adds r0, r5, 0 + adds r0, 0x50 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080A75B4 + ldr r0, [sp] + lsls r0, 16 + ldr r1, [sp, 0x4] + lsls r1, 16 + lsrs r0, 16 + orrs r0, r1 + str r0, [sp, 0x14] + add r1, sp, 0x14 + mov r0, r8 + adds r2, r5, 0 + bl sub_808E668 +_080A75B4: + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0 + adds r3, r7, 0 + bl sub_80A7310 +_080A75C0: + add sp, 0x18 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A7524 + + thumb_func_start sub_80A75CC +sub_80A75CC: + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r6, r3, 0 + lsls r2, 16 + asrs r2, 13 + ldr r0, _080A7618 + adds r2, r0 + movs r5, 0 + movs r0, 0 + ldrsb r0, [r2, r0] + lsls r0, 16 + lsrs r0, 16 + ldr r3, _080A761C + ldr r1, [sp] + ands r1, r3 + orrs r1, r0 + str r1, [sp] + ldrh r3, [r2, 0x2] + lsls r3, 16 + ldr r0, _080A7620 + ands r0, r1 + orrs r0, r3 + str r0, [sp] + ldr r0, [r2, 0x4] + cmp r0, 0 + beq _080A7628 + ldr r1, _080A7624 + bl OpenFile + adds r5, r0, 0 + movs r1, 0 + bl GetFileDataPtr + ldr r0, [r5, 0x4] + str r0, [sp, 0x4] + b _080A762A + .align 2, 0 +_080A7618: .4byte gUnknown_8117AE4 +_080A761C: .4byte 0xffff0000 +_080A7620: .4byte 0x0000ffff +_080A7624: .4byte gUnknown_9E60000 +_080A7628: + str r5, [sp, 0x4] +_080A762A: + adds r0, r4, 0 + mov r1, sp + adds r2, r6, 0 + bl sub_80A67CC + str r5, [r4, 0x54] + adds r0, r4, 0 + adds r0, 0x52 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + blt _080A764E + movs r1, 0x80 + lsls r1, 4 + adds r0, r4, 0 + movs r2, 0 + bl sub_80A6EFC +_080A764E: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A75CC + + thumb_func_start sub_80A7658 +sub_80A7658: + push {lr} + bl sub_80A68A0 + pop {r0} + bx r0 + thumb_func_end sub_80A7658 + + thumb_func_start sub_80A7664 +sub_80A7664: + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + movs r1, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_80A7094 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + adds r3, r6, 0 + bl sub_80A7310 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A7664 + + thumb_func_start sub_80A7688 +sub_80A7688: + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r6, r3, 0 + lsls r2, 16 + asrs r2, 13 + ldr r0, _080A76D4 + adds r2, r0 + movs r5, 0 + movs r0, 0 + ldrsb r0, [r2, r0] + lsls r0, 16 + lsrs r0, 16 + ldr r3, _080A76D8 + ldr r1, [sp] + ands r1, r3 + orrs r1, r0 + str r1, [sp] + ldrh r3, [r2, 0x2] + lsls r3, 16 + ldr r0, _080A76DC + ands r0, r1 + orrs r0, r3 + str r0, [sp] + ldr r0, [r2, 0x4] + cmp r0, 0 + beq _080A76E4 + ldr r1, _080A76E0 + bl OpenFile + adds r5, r0, 0 + movs r1, 0 + bl GetFileDataPtr + ldr r0, [r5, 0x4] + str r0, [sp, 0x4] + b _080A76E6 + .align 2, 0 +_080A76D4: .4byte gUnknown_8117E8C +_080A76D8: .4byte 0xffff0000 +_080A76DC: .4byte 0x0000ffff +_080A76E0: .4byte gUnknown_9E60000 +_080A76E4: + str r5, [sp, 0x4] +_080A76E6: + adds r0, r4, 0 + mov r1, sp + adds r2, r6, 0 + bl sub_80A67CC + str r5, [r4, 0x54] + adds r0, r4, 0 + adds r0, 0x52 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + blt _080A770A + movs r1, 0x80 + lsls r1, 4 + adds r0, r4, 0 + movs r2, 0 + bl sub_80A6EFC +_080A770A: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A7688 + + thumb_func_start sub_80A7714 +sub_80A7714: + push {lr} + bl sub_80A68A0 + pop {r0} + bx r0 + thumb_func_end sub_80A7714 + + thumb_func_start sub_80A7720 +sub_80A7720: + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + movs r1, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_80A7094 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + adds r3, r6, 0 + bl sub_80A7310 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A7720 + + thumb_func_start sub_80A7744 +sub_80A7744: + ldr r1, _080A7750 + movs r2, 0x1 + negs r2, r2 + adds r0, r2, 0 + strh r0, [r1] + bx lr + .align 2, 0 +_080A7750: .4byte gUnknown_2039DE0 + thumb_func_end sub_80A7744 + + thumb_func_start sub_80A7754 +sub_80A7754: + ldr r1, _080A7760 + movs r2, 0x1 + negs r2, r2 + adds r0, r2, 0 + strh r0, [r1] + bx lr + .align 2, 0 +_080A7760: .4byte gUnknown_2039DE0 + thumb_func_end sub_80A7754 + + thumb_func_start sub_80A7764 +sub_80A7764: + push {r4,lr} + lsls r0, 16 + asrs r4, r0, 16 + bl sub_80A7784 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _080A777A + ldr r0, _080A7780 + strh r4, [r0] +_080A777A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7780: .4byte gUnknown_2039DE0 + thumb_func_end sub_80A7764 + + thumb_func_start sub_80A7784 +sub_80A7784: + push {lr} + ldr r2, _080A779C + movs r1, 0 + ldrsh r0, [r2, r1] + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _080A7796 + strh r1, [r2] +_080A7796: + pop {r0} + bx r0 + .align 2, 0 +_080A779C: .4byte gUnknown_2039DE0 + thumb_func_end sub_80A7784 + + thumb_func_start sub_80A77A0 +sub_80A77A0: + push {lr} + lsls r0, 16 + asrs r1, r0, 16 + adds r2, r1, 0 + ldr r0, _080A77BC + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r0, r1 + beq _080A77CA + cmp r1, 0 + bge _080A77C0 + bl sub_80A7784 + b _080A77C6 + .align 2, 0 +_080A77BC: .4byte gUnknown_2039DE0 +_080A77C0: + adds r0, r2, 0 + bl sub_80A7764 +_080A77C6: + movs r0, 0x1 + b _080A77CC +_080A77CA: + movs r0, 0 +_080A77CC: + pop {r1} + bx r1 + thumb_func_end sub_80A77A0 + + thumb_func_start sub_80A77D0 +sub_80A77D0: + push {lr} + lsls r0, 16 + asrs r1, r0, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080A77E8 + ldr r0, _080A77E4 + b _080A77F0 + .align 2, 0 +_080A77E4: .4byte gUnknown_8117EFC +_080A77E8: + ldr r0, _080A77F4 + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] +_080A77F0: + pop {r1} + bx r1 + .align 2, 0 +_080A77F4: .4byte gUnknown_811E258 + thumb_func_end sub_80A77D0 + + thumb_func_start sub_80A77F8 +sub_80A77F8: + 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 sub_809D710 + ldr r0, [r4] + movs r1, 0xCC + lsls r1, 2 + adds r0, r1 + movs r1, 0x1 + strh r1, [r0] + bl sub_80A786C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A7860: .4byte gUnknown_3001B80 +_080A7864: .4byte gUnknown_3001B84 +_080A7868: .4byte 0x0000ffff + thumb_func_end sub_80A77F8 + + thumb_func_start sub_80A786C +sub_80A786C: + 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 gUnknown_3001B84 +_080A78EC: .4byte gUnknown_3001B80 + thumb_func_end sub_80A786C + + thumb_func_start sub_80A78F0 +sub_80A78F0: + push {r4,r5,lr} + bl sub_80A786C + 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 gUnknown_3001B84 +_080A7918: .4byte gUnknown_3001B80 + thumb_func_end sub_80A78F0 + + 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 sub_80A77D0 + 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 gUnknown_3001B84 + thumb_func_end GroundLives_Cancel + + thumb_func_start sub_80A79FC +sub_80A79FC: + 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 sub_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 gUnknown_3001B84 + thumb_func_end sub_80A79FC + + thumb_func_start sub_80A7A78 +sub_80A7A78: + 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 sub_80ADCA0 + b _080A7ACA + .align 2, 0 +_080A7AC0: .4byte gUnknown_81180D8 +_080A7AC4: .4byte gUnknown_3001B84 +_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 sub_80A7A78 + + 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 gUnknown_3001B84 +_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 gUnknown_3001B84 +_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 sub_8001658 + 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 gUnknown_811E63C +_080A7BD8: + cmp r4, 0x2 + beq _080A7BE4 + b _080A7C08 +_080A7BDE: + movs r0, 0x2 + strh r0, [r7] + b _080A7C10 +_080A7BE4: + bl sub_808D33C + 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 sub_8001658 + adds r4, r0, 0 + movs r0, 0 + movs r1, 0x1E + bl sub_8001658 + 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 sub_808D33C + 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 sub_808D33C + 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 sub_808D33C + 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 sub_8001658 + 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 gUnknown_203B45C +_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 sub_808D33C + 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 gUnknown_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 gUnknown_203B45C +_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 sub_8001658 + 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 gUnknown_203B45C +_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 sub_808D33C + ldrh r0, [r0, 0x8] + b _080A8094 +_080A7FFC: + movs r0, 0xF + bl RandomCapped + 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 sub_8001658 + 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 sub_8001B88 + 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 sub_8001658 + 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 gUnknown_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 gUnknown_3001B84 +_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 gUnknown_3001B84 +_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 gUnknown_3001B84 +_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 OtherRandomCapped + movs r2, 0xA0 + lsls r2, 1 + adds r1, r5, r2 + strh r0, [r1] + b _080A83EC + .align 2, 0 +_080A83DC: .4byte 0x2300068d +_080A83E0: .4byte gUnknown_3001B80 +_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 sub_80ADCA0 + 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 sub_80A5778 + 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 gUnknown_8117F10 +_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 gUnknown_3001B80 +_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 sub_809D648 + ldr r1, _080A8544 + ldr r0, [sp, 0x18] + str r0, [sp] + adds r0, r4, 0 + adds r2, r5, 0 + ldr r3, [sp, 0x14] + bl sub_809D600 + 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 gUnknown_8117F10 +_080A8548: .4byte gUnknown_3001B80 +_080A854C: .4byte gUnknown_8118170 +_080A8550: + adds r0, r4, 0 + bl sub_809D648 + ldr r1, _080A861C + ldr r2, [sp, 0x18] + str r2, [sp] +_080A855C: + adds r0, r4, 0 + adds r2, r5, 0 + ldr r3, [sp, 0x14] + bl sub_809D600 +_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 sub_809D6D8 + 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 sub_809D6D8 + 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 sub_809D6D8 + ldr r3, [sp, 0x10] + ldr r2, [r3, 0x8] + cmp r2, 0 + beq _080A8630 + adds r0, r4, 0 + movs r1, 0 + bl sub_809D6D8 + 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 sub_809D8C0 + b _080A865A + .align 2, 0 +_080A861C: .4byte gUnknown_8117F10 +_080A8620: .4byte gUnknown_812F1F8 +_080A8624: .4byte gUnknown_3001B80 +_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 sub_809D648 + ldr r0, _080A86C4 + strh r0, [r4, 0x2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A86BC: .4byte gUnknown_3001B84 +_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 gUnknown_3001B84 +_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 gUnknown_3001B80 + 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 gUnknown_3001B84 + 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 gUnknown_3001B84 + 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 gUnknown_3001B84 +_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 gUnknown_3001B84 +_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 gUnknown_3001B84 +_080A8888: + adds r0, r2, 0 + adds r0, 0x38 + adds r1, r4, 0 + adds r2, r3, 0 + bl sub_809D6E4 + 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 gUnknown_3001B84 +_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 gUnknown_3001B84 +_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 gUnknown_3001B84 + 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 sub_809D6E4 + 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 sub_809D8C0 + 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 gUnknown_3001B84 +_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 gUnknown_3001B84 +_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 gUnknown_3001B84 +_080A8B10: + movs r0, 0 +_080A8B12: + add sp, 0xC + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80A8ACC + + thumb_func_start sub_80A8B1C +sub_80A8B1C: + 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 sub_809D968 + 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 gUnknown_3001B84 + thumb_func_end sub_80A8B1C + + thumb_func_start sub_80A8B74 +sub_80A8B74: + 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 sub_809D92C + 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 gUnknown_3001B84 + thumb_func_end sub_80A8B74 + + 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 gUnknown_3001B84 + 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 gUnknown_3001B84 + 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 gUnknown_3001B84 +_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 gUnknown_3001B84 +_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 gUnknown_3001B84 +_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 gUnknown_3001B84 + 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 sub_808D33C + 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 gUnknown_203B45C +_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 sub_8001658 + 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 gUnknown_203B45C +_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 gUnknown_3001B84 + 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 gUnknown_811E63C +_080A8F30: + movs r2, 0x2 + ldrsh r1, [r0, r2] +_080A8F34: + adds r0, r4, 0 + bl sub_808D8BC + 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 gUnknown_811825C + 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 sub_8092310 + 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 gUnknown_3001B84 + 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 gUnknown_3001B84 +_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 gUnknown_3001B84 +_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 gUnknown_3001B84 + 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 gUnknown_3001B84 +_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 gUnknown_3001B84 + 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 gUnknown_3001B84 + 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 sub_8002DF0 + b _080A917E + .align 2, 0 +_080A916C: .4byte gUnknown_3001B84 +_080A9170: + adds r1, r5, 0 + adds r1, 0xC + adds r3, r4, 0 + adds r3, 0xC + mov r0, sp + bl sub_8002D54 +_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 sub_8002DF0 + 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 sub_8002D54 + 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 gUnknown_3001B84 +_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 sub_80A92A0 +sub_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 gUnknown_3001B84 +_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 sub_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 gUnknown_3001B84 +_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 gUnknown_3001B84 +_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 sub_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 sub_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 sub_80ADCA0 + 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 sub_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 sub_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 gUnknown_3001B84 +_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 sub_80ADCA0 + 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 sub_80ADCA0 + 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 sub_8002C60 + 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 sub_8002C60 + 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 sub_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 gUnknown_3001B84 +_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 sub_8002BB8 + 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 sub_8002BB8 + 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 sub_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 sub_8002BB8 + 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 sub_8002BB8 + 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 sub_8002BB8 + 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 gUnknown_3001B80 +_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 sub_8002BB8 + 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 gUnknown_3001B80 +_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 sub_809D710 + 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 sub_809D710 + 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 sub_809D710 + 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 sub_80AB008 +sub_80AB008: + movs r1, 0 + ldrsh r0, [r0, r1] + bx lr + thumb_func_end sub_80AB008 + + thumb_func_start sub_80AB010 +sub_80AB010: + ldr r2, [r0, 0xC] + ldr r3, [r0, 0x10] + str r2, [r1] + str r3, [r1, 0x4] + bx lr + thumb_func_end sub_80AB010 + + thumb_func_start sub_80AB01C +sub_80AB01C: + 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 sub_80AB01C + + thumb_func_start sub_80AB0C8 +sub_80AB0C8: + 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_80AB0C8 + + thumb_func_start sub_80AB0E0 +sub_80AB0E0: + 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 sub_80AB0E0 + + thumb_func_start sub_80AB100 +sub_80AB100: + push {lr} + bl sub_80A9F20 + pop {r1} + bx r1 + thumb_func_end sub_80AB100 + + thumb_func_start sub_80AB10C +sub_80AB10C: + 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 sub_80AB10C + + thumb_func_start sub_80AB12C +sub_80AB12C: + movs r2, 0xAA + lsls r2, 1 + adds r0, r2 + str r1, [r0] + bx lr + thumb_func_end sub_80AB12C + + thumb_func_start sub_80AB138 +sub_80AB138: + movs r2, 0xA1 + lsls r2, 1 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + bx lr + thumb_func_end sub_80AB138 + + thumb_func_start sub_80AB144 +sub_80AB144: + 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 sub_80AB144 + + thumb_func_start sub_80AB184 +sub_80AB184: + push {lr} + lsls r1, 16 + lsrs r1, 16 + bl sub_80A9750 + pop {r0} + bx r0 + thumb_func_end sub_80AB184 + + thumb_func_start sub_80AB194 +sub_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 sub_80AB194 + + thumb_func_start nullsub_211 +nullsub_211: + bx lr + thumb_func_end nullsub_211 + + thumb_func_start sub_80AB1C0 +sub_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 sub_80AB1C0 + + thumb_func_start sub_80AB1E4 +sub_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 sub_80AB1E4 + + thumb_func_start sub_80AB20C +sub_80AB20C: + movs r2, 0x8E + lsls r2, 1 + adds r0, r2 + ldr r0, [r0] + str r0, [r1] + bx lr + thumb_func_end sub_80AB20C + + thumb_func_start sub_80AB218 +sub_80AB218: + push {lr} + movs r2, 0 + ldrsh r0, [r0, r2] + bl sub_80A86C8 + pop {r0} + bx r0 + thumb_func_end sub_80AB218 + + thumb_func_start sub_80AB228 +sub_80AB228: + push {lr} + movs r2, 0 + ldrsh r0, [r0, r2] + bl sub_80A8750 + pop {r0} + bx r0 + thumb_func_end sub_80AB228 + + thumb_func_start sub_80AB238 +sub_80AB238: + push {lr} + movs r2, 0xB8 + lsls r2, 1 + adds r0, r2 + bl sub_80A6EC8 + pop {r0} + bx r0 + thumb_func_end sub_80AB238 + + thumb_func_start sub_80AB248 +sub_80AB248: + push {lr} + bl sub_80A9F94 + pop {r1} + bx r1 + thumb_func_end sub_80AB248 + + 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 gUnknown_3001B84 +_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 sub_8002C60 + 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 sub_809D8C0 +_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 gUnknown_3001B80 +_080AB4D0: .4byte gUnknown_3001B84 +_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 gUnknown_3001B80 + 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 sub_8002BB8 + 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 gUnknown_3001B80 +_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 gUnknown_3001B80 +_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 gUnknown_3001B80 +_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 gUnknown_3001B80 +_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 sub_8002C60 + 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 gUnknown_3001B80 +_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 gUnknown_3001B80 +_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 gUnknown_3001B84 + thumb_func_end sub_80ABA7C + + 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 gUnknown_812F1F8 +_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 + + thumb_func_start sub_80ACB90 +sub_80ACB90: + push {r4,r5,lr} + ldr r4, _080ACBCC + movs r0, 0xE2 + lsls r0, 5 + movs r1, 0x6 + bl MemoryAlloc + str r0, [r4] + adds r1, r0, 0 + ldr r0, _080ACBD0 + adds r5, r0, 0 + movs r4, 0xE2 + lsls r4, 1 + movs r2, 0x80 + lsls r2, 9 + adds r3, r2, 0 +_080ACBB0: + 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 _080ACBB0 + bl sub_80ACBD4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080ACBCC: .4byte gUnknown_3001B8C +_080ACBD0: .4byte 0x0000ffff + thumb_func_end sub_80ACB90 + + thumb_func_start sub_80ACBD4 +sub_80ACBD4: + push {r4-r6,lr} + ldr r0, _080ACC0C + ldr r4, [r0] + movs r1, 0 + movs r6, 0x1 + negs r6, r6 + movs r5, 0x80 + lsls r5, 9 +_080ACBE4: + movs r2, 0x6 + ldrsh r0, [r4, r2] + cmp r0, r6 + beq _080ACBF2 + adds r0, r1, 0 + bl GroundEffect_Delete +_080ACBF2: + 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 _080ACBE4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080ACC0C: .4byte gUnknown_3001B8C + thumb_func_end sub_80ACBD4 + + thumb_func_start sub_80ACC10 +sub_80ACC10: + push {r4,lr} + bl sub_80ACBD4 + ldr r4, _080ACC28 + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACC28: .4byte gUnknown_3001B8C + thumb_func_end sub_80ACC10 + + thumb_func_start GroundEffect_Select +GroundEffect_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, _080ACC90 + adds r0, r4, 0 + bl sub_80A77D0 + adds r5, r0, 0 + ldr r1, _080ACC94 + 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, 0x14] + ldr r0, [r0, 0x10] + cmp r0, 0 + ble _080ACC86 + adds r4, r0, 0 +_080ACC70: + movs r0, 0x1 + negs r0, r0 + adds r1, r5, 0 + adds r2, r7, 0 + adds r3, r6, 0 + bl GroundEffect_Add + subs r4, 0x1 + adds r5, 0xC + cmp r4, 0 + bne _080ACC70 +_080ACC86: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ACC90: .4byte gUnknown_8118610 +_080ACC94: .4byte gUnknown_811861C + thumb_func_end GroundEffect_Select + + thumb_func_start GroundEffect_Cancel +GroundEffect_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, _080ACD00 + movs r0, 0 + adds r2, r7, 0 + bl Log + movs r1, 0 + ldr r0, _080ACD04 + ldr r4, [r0] + movs r0, 0x1 + negs r0, r0 + mov r8, r0 + movs r6, 0x80 + lsls r6, 9 +_080ACCC0: + movs r2, 0x6 + ldrsh r0, [r4, r2] + cmp r0, r8 + beq _080ACCE2 + movs r2, 0x8 + ldrsh r0, [r4, r2] + cmp r0, r7 + bne _080ACCE2 + cmp r5, 0 + blt _080ACCDC + movs r0, 0xA + ldrsb r0, [r4, r0] + cmp r0, r5 + bne _080ACCE2 +_080ACCDC: + adds r0, r1, 0 + bl GroundEffect_Delete +_080ACCE2: + 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 _080ACCC0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ACD00: .4byte gUnknown_8118640 +_080ACD04: .4byte gUnknown_3001B8C + thumb_func_end GroundEffect_Cancel + + thumb_func_start GroundEffect_CancelBlank +GroundEffect_CancelBlank: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + ldr r1, _080ACD7C + movs r0, 0 + bl Log + movs r6, 0 + ldr r0, _080ACD80 + 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 +_080ACD2C: + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r0, r8 + beq _080ACD5C + 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 _080ACD5C + adds r0, r6, 0 + bl GroundEffect_Delete +_080ACD5C: + 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 _080ACD2C + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ACD7C: .4byte gUnknown_8118658 +_080ACD80: .4byte gUnknown_3001B8C + thumb_func_end GroundEffect_CancelBlank + + thumb_func_start sub_80ACD84 +sub_80ACD84: + push {r4-r7,lr} + lsls r0, 16 + asrs r4, r0, 16 + movs r3, 0 + ldr r0, _080ACDA8 + ldr r1, [r0] + movs r6, 0xE2 + lsls r6, 1 + movs r2, 0x80 + lsls r2, 9 + adds r5, r2, 0 +_080ACD9A: + movs r7, 0x6 + ldrsh r0, [r1, r7] + cmp r0, r4 + bne _080ACDAC + adds r0, r3, 0 + b _080ACDBC + .align 2, 0 +_080ACDA8: .4byte gUnknown_3001B8C +_080ACDAC: + adds r0, r2, 0 + adds r2, r5 + asrs r3, r0, 16 + adds r1, r6 + cmp r3, 0xF + ble _080ACD9A + movs r0, 0x1 + negs r0, r0 +_080ACDBC: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80ACD84 + + thumb_func_start GroundEffect_Add +GroundEffect_Add: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r7, r1, 0 + lsls r0, 16 + asrs r6, r0, 16 + lsls r2, 16 + asrs r2, 16 + mov r10, r2 + lsls r3, 24 + asrs r3, 24 + mov r9, r3 + ldrb r0, [r7] + lsls r0, 2 + ldr r1, _080ACE08 + adds r0, r1 + mov r8, r0 + ldr r3, _080ACE0C + cmp r6, 0 + bge _080ACE38 + movs r2, 0 + ldr r5, [r3] + movs r0, 0x6 + ldrsh r1, [r5, r0] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080ACE10 + movs r6, 0 + b _080ACE38 + .align 2, 0 +_080ACE08: .4byte gUnknown_811EE38 +_080ACE0C: .4byte gUnknown_3001B8C +_080ACE10: + adds r0, r2, 0x1 + lsls r0, 16 + asrs r2, r0, 16 + movs r1, 0xE2 + lsls r1, 1 + adds r5, r1 + cmp r2, 0xF + bgt _080ACE2E + movs r4, 0x6 + ldrsh r1, [r5, r4] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080ACE10 + adds r6, r2, 0 +_080ACE2E: + cmp r6, 0 + bge _080ACE38 + movs r0, 0x1 + negs r0, r0 + b _080AD062 +_080ACE38: + lsls r0, r6, 3 + subs r0, r6 + lsls r0, 4 + adds r0, r6 + lsls r0, 2 + ldr r1, [r3] + adds r5, r1, r0 + ldr r1, _080ACE9C + ldrb r3, [r7] + mov r2, r8 + movs r4, 0 + ldrsh r0, [r2, r4] + str r0, [sp] + mov r0, r10 + str r0, [sp, 0x4] + mov r2, r9 + str r2, [sp, 0x8] + movs r0, 0 + adds r2, r6, 0 + bl Log + movs r2, 0 + movs r3, 0x6 + ldrsh r1, [r5, r3] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080ACE72 + movs r2, 0x1 +_080ACE72: + str r2, [sp, 0xC] + strh r6, [r5, 0x4] + ldrb r0, [r7] + strh r0, [r5, 0x6] + mov r4, r10 + strh r4, [r5, 0x8] + mov r0, r9 + strb r0, [r5, 0xA] + mov r1, r8 + ldrh r0, [r1] + subs r0, 0x1 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bhi _080ACEEC + lsls r0, 2 + ldr r1, _080ACEA0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ACE9C: .4byte gUnknown_8118674 +_080ACEA0: .4byte _080ACEA4 + .align 2, 0 +_080ACEA4: + .4byte _080ACEB8 + .4byte _080ACEEC + .4byte _080ACEC4 + .4byte _080ACED0 + .4byte _080ACEDC +_080ACEB8: + movs r2, 0x8E + lsls r2, 1 + adds r1, r5, r2 + movs r0, 0x81 + lsls r0, 22 + b _080ACEF4 +_080ACEC4: + movs r4, 0x8E + lsls r4, 1 + adds r1, r5, r4 + movs r0, 0x83 + lsls r0, 18 + b _080ACEF4 +_080ACED0: + movs r0, 0x8E + lsls r0, 1 + adds r1, r5, r0 + movs r0, 0x88 + lsls r0, 22 + b _080ACEF4 +_080ACEDC: + movs r2, 0x8E + lsls r2, 1 + adds r1, r5, r2 + ldr r0, _080ACEE8 + b _080ACEF4 + .align 2, 0 +_080ACEE8: .4byte 0x22020000 +_080ACEEC: + movs r3, 0x8E + lsls r3, 1 + adds r1, r5, r3 + ldr r0, _080ACF08 +_080ACEF4: + str r0, [r1] + mov r4, r8 + ldrb r0, [r4, 0x2] + cmp r0, 0 + bne _080ACF0C + ldrb r0, [r7, 0x2] + lsls r0, 11 + str r0, [r5, 0xC] + ldrb r0, [r7, 0x3] + b _080ACF16 + .align 2, 0 +_080ACF08: .4byte 0x220c0000 +_080ACF0C: + mov r1, r8 + ldrb r0, [r1, 0x2] + lsls r0, 11 + str r0, [r5, 0xC] + ldrb r0, [r1, 0x3] +_080ACF16: + 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] + ldrb r0, [r7, 0x1] + strb r0, [r5, 0x1C] + adds r2, r7, 0x4 + adds r4, r5, 0 + adds r4, 0x20 + ldrb r1, [r2, 0x2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080ACF5A + ldrb r0, [r7, 0x4] + lsls r3, r0, 11 + str r3, [r5, 0x20] + ldrb r1, [r2, 0x2] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080ACF5A + movs r1, 0x80 + lsls r1, 3 + adds r0, r3, r1 + str r0, [r5, 0x20] +_080ACF5A: + ldrb r1, [r2, 0x3] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080ACF7C + 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 _080ACF7C + movs r2, 0x80 + lsls r2, 3 + adds r0, r3, r2 + str r0, [r4, 0x4] +_080ACF7C: + ldr r3, [sp, 0xC] + cmp r3, 0 + beq _080ACFD2 + ldrb r1, [r5, 0x1C] + movs r4, 0x90 + lsls r4, 1 + adds r0, r5, r4 + 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] + adds r4, 0x8 + adds r2, r5, r4 + ldr r0, [r5, 0x24] + ldr r1, [r5, 0x18] + subs r0, r1 + str r0, [r2] + movs r0, 0x98 + lsls r0, 1 + adds r2, r5, r0 + 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 r4, 0x10 + adds r0, r5, r4 + str r3, [r0] + str r3, [r1] +_080ACFD2: + adds r0, r5, 0 + adds r0, 0x28 + adds r1, r5, 0 + adds r1, 0x30 + bl sub_80A5778 + ldr r0, [sp, 0xC] + cmp r0, 0 + beq _080AD01A + movs r2, 0x9F + lsls r2, 1 + adds r1, r5, r2 + 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 r4, 0xA0 + lsls r4, 1 + adds r0, r5, r4 + strh r2, [r0] + movs r1, 0xA2 + lsls r1, 1 + adds r0, r5, r1 + movs r3, 0x6 + ldrsh r2, [r5, r3] + subs r4, 0x24 + adds r1, r5, r4 + ldr r3, [r1] + adds r1, r6, 0 + bl sub_80A7688 +_080AD01A: + adds r4, r5, 0 + adds r4, 0x38 + ldr r1, _080AD074 + mov r0, r9 + str r0, [sp] + adds r0, r4, 0 + adds r2, r5, 0 + mov r3, r10 + bl sub_809D600 + ldr r2, [r7, 0x8] + cmp r2, 0 + bne _080AD04C + mov r1, r8 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0x1 + bne _080AD048 + ldr r0, _080AD078 + movs r1, 0xB0 + lsls r1, 2 + adds r0, r1 + ldr r2, [r0] +_080AD048: + cmp r2, 0 + beq _080AD060 +_080AD04C: + adds r0, r4, 0 + movs r1, 0 + bl sub_809D6D8 + ldr r3, _080AD07C + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + bl sub_809D8C0 +_080AD060: + adds r0, r6, 0 +_080AD062: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080AD074: .4byte gUnknown_8118544 +_080AD078: .4byte gUnknown_812F1F8 +_080AD07C: .4byte gUnknown_81186CC + thumb_func_end GroundEffect_Add + + thumb_func_start GroundEffect_Delete +GroundEffect_Delete: + push {r4,lr} + adds r2, r0, 0 + lsls r2, 16 + asrs r2, 16 + ldr r1, _080AD0BC + 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, _080AD0C0 + movs r0, 0 + bl Log + movs r1, 0xA2 + lsls r1, 1 + adds r0, r4, r1 + bl sub_80A7714 + adds r0, r4, 0 + adds r0, 0x38 + bl sub_809D648 + ldr r0, _080AD0C4 + strh r0, [r4, 0x6] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AD0BC: .4byte gUnknown_3001B8C +_080AD0C0: .4byte gUnknown_81186D8 +_080AD0C4: .4byte 0x0000ffff + thumb_func_end GroundEffect_Delete + + thumb_func_start sub_80AD0C8 +sub_80AD0C8: + push {lr} + adds r3, r1, 0 + lsls r0, 16 + asrs r0, 16 + ldr r2, _080AD108 + 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 _080AD102 + 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 +_080AD102: + pop {r0} + bx r0 + .align 2, 0 +_080AD108: .4byte gUnknown_3001B8C + thumb_func_end sub_80AD0C8 + + thumb_func_start sub_80AD10C +sub_80AD10C: + push {r4,lr} + adds r4, r1, 0 + lsls r0, 16 + asrs r0, 16 + ldr r2, _080AD150 + 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 _080AD14A + movs r0, 0x8E + lsls r0, 1 + adds r2, r3, r0 + ldr r0, _080AD154 + 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 +_080AD14A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AD150: .4byte gUnknown_3001B8C +_080AD154: .4byte 0x337fffff + thumb_func_end sub_80AD10C + + thumb_func_start sub_80AD158 +sub_80AD158: + push {lr} + lsls r0, 16 + asrs r0, 16 + ldr r2, _080AD180 + 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 _080AD184 + movs r0, 0 + b _080AD188 + .align 2, 0 +_080AD180: .4byte gUnknown_3001B8C +_080AD184: + adds r0, r2, 0 + adds r0, 0x38 +_080AD188: + pop {r1} + bx r1 + thumb_func_end sub_80AD158 + + thumb_func_start sub_80AD18C +sub_80AD18C: + push {r4,lr} + adds r4, r1, 0 + lsls r0, 16 + asrs r0, 16 + lsls r2, 16 + asrs r3, r2, 16 + ldr r2, _080AD1B8 + 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 _080AD1BC + movs r0, 0 + b _080AD1CC + .align 2, 0 +_080AD1B8: .4byte gUnknown_3001B8C +_080AD1BC: + adds r0, r2, 0 + adds r0, 0x38 + adds r1, r4, 0 + adds r2, r3, 0 + bl sub_809D6E4 + lsls r0, 24 + lsrs r0, 24 +_080AD1CC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80AD18C + + thumb_func_start GroundEffect_ExecuteScript +GroundEffect_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, _080AD20C + 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, _080AD210 + 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 _080AD214 + movs r0, 0 + b _080AD22C + .align 2, 0 +_080AD20C: .4byte gUnknown_3001B8C +_080AD210: .4byte gUnknown_81186F4 +_080AD214: + adds r0, r4, 0 + adds r0, 0x38 + ldr r3, _080AD234 + 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] +_080AD22C: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080AD234: .4byte gUnknown_811872C + thumb_func_end GroundEffect_ExecuteScript + + thumb_func_start sub_80AD238 +sub_80AD238: + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + asrs r7, r0, 16 + ldr r0, _080AD28C + ldr r4, [r0] + movs r5, 0 + movs r0, 0x1 + negs r0, r0 + mov r8, r0 + movs r6, 0x80 + lsls r6, 9 +_080AD252: + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r0, r8 + beq _080AD26A + 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 +_080AD26A: + 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 _080AD252 + adds r0, r5, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080AD28C: .4byte gUnknown_3001B8C + thumb_func_end sub_80AD238 + + thumb_func_start sub_80AD290 +sub_80AD290: + push {r4-r7,lr} + ldr r0, _080AD2D4 + ldr r4, [r0] + movs r5, 0 + movs r7, 0x1 + negs r7, r7 + movs r6, 0x80 + lsls r6, 9 +_080AD2A0: + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r0, r7 + beq _080AD2B6 + adds r0, r4, 0 + adds r0, 0x38 + bl sub_809D92C + orrs r5, r0 + lsls r0, r5, 24 + lsrs r5, r0, 24 +_080AD2B6: + 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 _080AD2A0 + adds r0, r5, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080AD2D4: .4byte gUnknown_3001B8C + thumb_func_end sub_80AD290 + + thumb_func_start sub_80AD2D8 +sub_80AD2D8: + lsls r0, 16 + asrs r0, 16 + ldr r2, _080AD2F4 + 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 +_080AD2F4: .4byte gUnknown_3001B8C + thumb_func_end sub_80AD2D8 + + thumb_func_start sub_80AD2F8 +sub_80AD2F8: + lsls r0, 16 + asrs r0, 16 + ldr r3, _080AD31C + 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 +_080AD31C: .4byte gUnknown_3001B8C + thumb_func_end sub_80AD2F8 + + thumb_func_start sub_80AD320 +sub_80AD320: + push {lr} + adds r3, r1, 0 + lsls r0, 16 + asrs r0, 16 + ldr r2, _080AD34C + 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 _080AD350 + movs r0, 0 + str r0, [r3] + str r0, [r3, 0x4] + b _080AD358 + .align 2, 0 +_080AD34C: .4byte gUnknown_3001B8C +_080AD350: + ldr r0, [r2, 0xC] + ldr r1, [r2, 0x10] + str r0, [r3] + str r1, [r3, 0x4] +_080AD358: + movs r1, 0x6 + ldrsh r0, [r2, r1] + pop {r1} + bx r1 + thumb_func_end sub_80AD320 + + thumb_func_start sub_80AD360 +sub_80AD360: + push {lr} + adds r3, r1, 0 + lsls r0, 16 + asrs r0, 16 + ldr r2, _080AD38C + 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 _080AD390 + movs r0, 0 + str r0, [r3] + b _080AD3AA + .align 2, 0 +_080AD38C: .4byte gUnknown_3001B8C +_080AD390: + 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 +_080AD3AA: + str r0, [r3, 0x4] + movs r1, 0x6 + ldrsh r0, [r2, r1] + pop {r1} + bx r1 + thumb_func_end sub_80AD360 + + thumb_func_start sub_80AD3B4 +sub_80AD3B4: + push {r4,lr} + lsls r0, 16 + asrs r0, 16 + ldr r3, _080AD3DC + 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_80AD3E0 + movs r1, 0x6 + ldrsh r0, [r4, r1] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080AD3DC: .4byte gUnknown_3001B8C + thumb_func_end sub_80AD3B4 + + thumb_func_start sub_80AD3E0 +sub_80AD3E0: + push {r4-r7,lr} + mov r12, r0 + ldr r3, [r1] + ldr r2, [r0, 0x14] + subs r6, r3, r2 + ldr r1, [r1, 0x4] + ldr r0, [r0, 0x18] + subs r7, r1, r0 + adds r4, r3, r2 + adds r5, r1, r0 + mov r1, r12 + ldr r0, [r1, 0x28] + cmp r6, r0 + blt _080AD40E + ldr r0, [r1, 0x30] + cmp r4, r0 + bge _080AD40E + ldr r0, [r1, 0x2C] + cmp r7, r0 + blt _080AD40E + ldr r0, [r1, 0x34] + cmp r5, r0 + blt _080AD412 +_080AD40E: + movs r0, 0x1 + b _080AD428 +_080AD412: + movs r0, 0x92 + lsls r0, 1 + add r0, r12 + str r6, [r0] + str r7, [r0, 0x4] + movs r0, 0x96 + lsls r0, 1 + add r0, r12 + str r4, [r0] + str r5, [r0, 0x4] + movs r0, 0 +_080AD428: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80AD3E0 + + thumb_func_start sub_80AD430 +sub_80AD430: + push {r4-r6,lr} + mov r12, r0 + movs r0, 0x92 + lsls r0, 1 + add r0, r12 + ldr r0, [r0] + ldr r2, [r1] + adds r5, r0, r2 + movs r0, 0x94 + lsls r0, 1 + add r0, r12 + ldr r0, [r0] + ldr r1, [r1, 0x4] + adds r6, r0, r1 + movs r0, 0x96 + lsls r0, 1 + add r0, r12 + ldr r0, [r0] + adds r3, r0, r2 + movs r0, 0x98 + lsls r0, 1 + add r0, r12 + ldr r0, [r0] + adds r4, r0, r1 + mov r0, r12 + ldr r1, [r0, 0x28] + cmp r5, r1 + bge _080AD470 + adds r5, r1, 0 + ldr r0, [r0, 0xC] + adds r3, r1, r0 + b _080AD47E +_080AD470: + mov r2, r12 + ldr r1, [r2, 0x30] + cmp r3, r1 + blt _080AD47E + ldr r0, [r2, 0xC] + subs r5, r1, r0 + adds r3, r1, 0 +_080AD47E: + mov r0, r12 + ldr r1, [r0, 0x2C] + cmp r6, r1 + bge _080AD48E + adds r6, r1, 0 + ldr r0, [r0, 0x10] + adds r4, r1, r0 + b _080AD49C +_080AD48E: + mov r2, r12 + ldr r1, [r2, 0x34] + cmp r4, r1 + blt _080AD49C + ldr r0, [r2, 0x10] + subs r6, r1, r0 + adds r4, r1, 0 +_080AD49C: + movs r0, 0x92 + lsls r0, 1 + add r0, r12 + str r5, [r0] + str r6, [r0, 0x4] + movs r0, 0x96 + lsls r0, 1 + add r0, r12 + str r3, [r0] + str r4, [r0, 0x4] + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80AD430 + + thumb_func_start sub_80AD4B8 +sub_80AD4B8: + movs r1, 0x4 + ldrsh r0, [r0, r1] + bx lr + thumb_func_end sub_80AD4B8 + + thumb_func_start sub_80AD4C0 +sub_80AD4C0: + ldr r2, [r0, 0xC] + ldr r3, [r0, 0x10] + str r2, [r1] + str r3, [r1, 0x4] + bx lr + thumb_func_end sub_80AD4C0 + + thumb_func_start sub_80AD4CC +sub_80AD4CC: + push {r4,lr} + adds r3, r0, 0 + adds r4, r1, 0 + cmp r4, 0 + beq _080AD50C + 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 _080AD572 +_080AD50C: + 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 _080AD56E + movs r0, 0x9E + lsls r0, 1 + adds r1, r3, r0 + movs r0, 0x1 + strb r0, [r1] +_080AD56E: + ldrb r0, [r3, 0x1C] + strb r0, [r2] +_080AD572: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AD4CC + + thumb_func_start sub_80AD578 +sub_80AD578: + 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_80AD578 + + thumb_func_start sub_80AD590 +sub_80AD590: + 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_80AD590 + + thumb_func_start sub_80AD5B0 +sub_80AD5B0: + push {lr} + bl sub_80AD3E0 + pop {r1} + bx r1 + thumb_func_end sub_80AD5B0 + + thumb_func_start sub_80AD5BC +sub_80AD5BC: + 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_80AD5BC + + thumb_func_start sub_80AD5DC +sub_80AD5DC: + movs r2, 0x9A + lsls r2, 1 + adds r0, r2 + str r1, [r0] + bx lr + thumb_func_end sub_80AD5DC + + thumb_func_start sub_80AD5E8 +sub_80AD5E8: + movs r2, 0x90 + lsls r2, 1 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + bx lr + thumb_func_end sub_80AD5E8 + + thumb_func_start sub_80AD5F4 +sub_80AD5F4: + push {lr} + adds r2, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080AD60C + movs r3, 0x90 + lsls r3, 1 + adds r0, r2, r3 + strb r1, [r0] +_080AD60C: + pop {r0} + bx r0 + thumb_func_end sub_80AD5F4 + + thumb_func_start sub_80AD610 +sub_80AD610: + 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 _080AD630 + ldr r1, _080AD62C + lsls r0, 1 + adds r0, r1 + b _080AD636 + .align 2, 0 +_080AD62C: .4byte gUnknown_81185F2 +_080AD630: + movs r5, 0x9F + lsls r5, 1 + adds r0, r3, r5 +_080AD636: + 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 _080AD654 + strh r2, [r1] + movs r0, 0x9E + lsls r0, 1 + adds r1, r3, r0 + b _080AD664 +_080AD654: + movs r0, 0x80 + lsls r0, 5 + ands r0, r4 + cmp r0, 0 + beq _080AD668 + movs r5, 0x9E + lsls r5, 1 + adds r1, r3, r5 +_080AD664: + movs r0, 0x1 + strb r0, [r1] +_080AD668: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80AD610 + + thumb_func_start sub_80AD670 +sub_80AD670: + push {lr} + lsls r1, 16 + asrs r1, 16 + adds r2, r1, 0 + cmp r1, 0 + bne _080AD682 + movs r1, 0xE0 + lsls r1, 1 + adds r2, r1, 0 +_080AD682: + movs r1, 0xA0 + lsls r1, 1 + adds r0, r1 + strh r2, [r0] + pop {r0} + bx r0 + thumb_func_end sub_80AD670 + + thumb_func_start sub_80AD690 +sub_80AD690: + push {lr} + adds r1, r0, 0 + movs r2, 0x9E + lsls r2, 1 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _080AD6AE + adds r2, 0x8 + adds r0, r1, r2 + bl sub_80A66F8 + lsls r0, 24 + lsrs r0, 24 + b _080AD6B0 +_080AD6AE: + movs r0, 0x1 +_080AD6B0: + pop {r1} + bx r1 + thumb_func_end sub_80AD690 + + thumb_func_start sub_80AD6B4 +sub_80AD6B4: + 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 _080AD6D6 + movs r2, 0xA2 + lsls r2, 1 + adds r0, r1, r2 + bl sub_80A671C + lsls r0, 24 + lsrs r0, 24 + b _080AD6D8 +_080AD6D6: + movs r0, 0x1 +_080AD6D8: + pop {r1} + bx r1 + thumb_func_end sub_80AD6B4 + + thumb_func_start sub_80AD6DC +sub_80AD6DC: + movs r2, 0x8E + lsls r2, 1 + adds r0, r2 + ldr r0, [r0] + str r0, [r1] + bx lr + thumb_func_end sub_80AD6DC + + thumb_func_start sub_80AD6E8 +sub_80AD6E8: + push {lr} + movs r2, 0x4 + ldrsh r0, [r0, r2] + bl sub_80AD0C8 + pop {r0} + bx r0 + thumb_func_end sub_80AD6E8 + + thumb_func_start sub_80AD6F8 +sub_80AD6F8: + push {lr} + movs r2, 0x4 + ldrsh r0, [r0, r2] + bl sub_80AD10C + pop {r0} + bx r0 + thumb_func_end sub_80AD6F8 + + thumb_func_start sub_80AD708 +sub_80AD708: + push {lr} + bl sub_80AD430 + pop {r1} + bx r1 + thumb_func_end sub_80AD708 + + thumb_func_start GroundEffect_Action +GroundEffect_Action: + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _080AD754 + 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 +_080AD72C: + movs r3, 0x6 + ldrsh r0, [r5, r3] + cmp r0, r8 + beq _080AD78A + adds r4, r5, 0 + adds r4, 0x38 + adds r0, r4, 0 + ldr r1, _080AD758 + bl HandleAction + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + beq _080AD75C + cmp r0, 0x4 + bne _080AD768 + adds r0, r7, 0 + bl GroundEffect_Delete + b _080AD78A + .align 2, 0 +_080AD754: .4byte gUnknown_3001B8C +_080AD758: .4byte gUnknown_811874C +_080AD75C: + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x1 + ldr r3, _080AD7A8 + bl sub_809D8C0 +_080AD768: + ldrb r0, [r6] + cmp r0, 0 + beq _080AD78A + 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 +_080AD78A: + 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 _080AD72C + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AD7A8: .4byte gUnknown_8118758 + thumb_func_end GroundEffect_Action + + thumb_func_start sub_80AD7AC +sub_80AD7AC: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + ldr r0, _080AD864 + 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 +_080AD7CA: + movs r0, 0x6 + ldrsh r1, [r6, r0] + mov r2, r9 + lsls r0, r2, 16 + asrs r0, 16 + cmp r1, r0 + beq _080AD83C + 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 _080AD818 + 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 +_080AD818: + movs r1, 0x20 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AD832 + 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] +_080AD832: + adds r0, r5, 0 + mov r1, sp + adds r2, r7, 0 + bl sub_80A7720 +_080AD83C: + 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 _080AD7CA + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AD864: .4byte gUnknown_3001B8C + thumb_func_end sub_80AD7AC + + thumb_func_start sub_80AD868 +sub_80AD868: + ldr r1, _080AD870 + movs r0, 0 + str r0, [r1] + bx lr + .align 2, 0 +_080AD870: .4byte gUnknown_203B4B8 + thumb_func_end sub_80AD868 + + thumb_func_start sub_80AD874 +sub_80AD874: + ldr r1, _080AD87C + movs r0, 0 + str r0, [r1] + bx lr + .align 2, 0 +_080AD87C: .4byte gUnknown_203B4B8 + thumb_func_end sub_80AD874 + + thumb_func_start GroundLink_Select +GroundLink_Select: + push {lr} + lsls r0, 16 + asrs r0, 16 + ldr r1, _080AD898 + bl sub_80A77D0 + ldr r1, _080AD89C + ldr r0, [r0, 0x8] + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080AD898: .4byte gUnknown_8118798 +_080AD89C: .4byte gUnknown_203B4B8 + thumb_func_end GroundLink_Select + + thumb_func_start sub_80AD8A0 +sub_80AD8A0: + lsls r0, 16 + ldr r1, _080AD8B0 + asrs r0, 13 + ldr r1, [r1] + adds r1, r0 + adds r0, r1, 0 + bx lr + .align 2, 0 +_080AD8B0: .4byte gUnknown_203B4B8 + thumb_func_end sub_80AD8A0 + + thumb_func_start sub_80AD8B4 +sub_80AD8B4: + push {r4,lr} + adds r4, r1, 0 + lsls r0, 16 + ldr r1, _080AD910 + asrs r0, 13 + ldr r1, [r1] + adds r2, r1, r0 + ldrb r1, [r2, 0x2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080AD8E4 + ldrb r0, [r2] + lsls r3, r0, 11 + str r3, [r4] + ldrb r1, [r2, 0x2] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080AD8E4 + movs r1, 0x80 + lsls r1, 3 + adds r0, r3, r1 + str r0, [r4] +_080AD8E4: + ldrb r1, [r2, 0x3] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080AD906 + 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 _080AD906 + movs r1, 0x80 + lsls r1, 3 + adds r0, r3, r1 + str r0, [r4, 0x4] +_080AD906: + ldrb r0, [r2, 0x6] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080AD910: .4byte gUnknown_203B4B8 + thumb_func_end sub_80AD8B4 + + thumb_func_start sub_80AD914 +sub_80AD914: + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + lsls r0, 16 + ldr r1, _080AD98C + asrs r0, 13 + ldr r1, [r1] + adds r2, r1, r0 + ldr r0, [r3] + ldr r1, [r3, 0x4] + str r0, [r4] + str r1, [r4, 0x4] + ldrb r1, [r2, 0x2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080AD94E + ldrb r0, [r2] + lsls r3, r0, 11 + str r3, [r4] + ldrb r1, [r2, 0x2] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080AD94E + movs r1, 0x80 + lsls r1, 3 + adds r0, r3, r1 + str r0, [r4] +_080AD94E: + ldrb r1, [r2, 0x3] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080AD970 + 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 _080AD970 + movs r1, 0x80 + lsls r1, 3 + adds r0, r3, r1 + str r0, [r4, 0x4] +_080AD970: + ldrb r1, [r2, 0x4] + lsls r1, 11 + ldr r0, [r4] + adds r0, r1 + str r0, [r5] + ldrb r1, [r2, 0x5] + lsls r1, 11 + ldr r0, [r4, 0x4] + adds r0, r1 + str r0, [r5, 0x4] + ldrb r0, [r2, 0x6] + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080AD98C: .4byte gUnknown_203B4B8 + thumb_func_end sub_80AD914 + + thumb_func_start sub_80AD990 +sub_80AD990: + push {r4,lr} + ldr r4, _080AD9C8 + movs r0, 0x80 + lsls r0, 3 + movs r1, 0x6 + bl MemoryAlloc + str r0, [r4] + adds r1, r0, 0 + ldr r0, _080AD9CC + adds r4, r0, 0 + movs r2, 0x80 + lsls r2, 9 + adds r3, r2, 0 +_080AD9AC: + ldrh r0, [r1, 0x2] + orrs r0, r4 + strh r0, [r1, 0x2] + adds r0, r2, 0 + adds r2, r3 + asrs r0, 16 + adds r1, 0x20 + cmp r0, 0x1F + ble _080AD9AC + bl sub_80AD9D0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AD9C8: .4byte gUnknown_3001B90 +_080AD9CC: .4byte 0x0000ffff + thumb_func_end sub_80AD990 + + thumb_func_start sub_80AD9D0 +sub_80AD9D0: + push {r4-r6,lr} + ldr r0, _080ADA04 + ldr r4, [r0] + movs r1, 0 + movs r6, 0x1 + negs r6, r6 + movs r5, 0x80 + lsls r5, 9 +_080AD9E0: + movs r2, 0x2 + ldrsh r0, [r4, r2] + cmp r0, r6 + beq _080AD9EE + adds r0, r1, 0 + bl GroundEvent_Delete +_080AD9EE: + adds r0, r5, 0 + movs r1, 0x80 + lsls r1, 9 + adds r5, r1 + asrs r1, r0, 16 + adds r4, 0x20 + cmp r1, 0x1F + ble _080AD9E0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080ADA04: .4byte gUnknown_3001B90 + thumb_func_end sub_80AD9D0 + + thumb_func_start sub_80ADA08 +sub_80ADA08: + push {r4,lr} + bl sub_80AD9D0 + ldr r4, _080ADA20 + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ADA20: .4byte gUnknown_3001B90 + thumb_func_end sub_80ADA08 + + thumb_func_start GroundEvent_Select +GroundEvent_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, _080ADA88 + adds r0, r4, 0 + bl sub_80A77D0 + adds r5, r0, 0 + ldr r1, _080ADA8C + 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, 0x1C] + ldr r0, [r0, 0x18] + cmp r0, 0 + ble _080ADA7E + adds r4, r0, 0 +_080ADA68: + movs r0, 0x1 + negs r0, r0 + adds r1, r5, 0 + adds r2, r7, 0 + adds r3, r6, 0 + bl GroundEvent_Add + subs r4, 0x1 + adds r5, 0xC + cmp r4, 0 + bne _080ADA68 +_080ADA7E: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ADA88: .4byte gUnknown_81187DC +_080ADA8C: .4byte gUnknown_81187E8 + thumb_func_end GroundEvent_Select + + thumb_func_start GroundEvent_Cancel +GroundEvent_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, _080ADAF8 + movs r0, 0 + adds r2, r7, 0 + adds r3, r5, 0 + bl Log + movs r1, 0 + ldr r0, _080ADAFC + ldr r4, [r0] + movs r0, 0x1 + negs r0, r0 + mov r8, r0 + movs r6, 0x80 + lsls r6, 9 +_080ADABA: + movs r2, 0x2 + ldrsh r0, [r4, r2] + cmp r0, r8 + beq _080ADADC + movs r2, 0x4 + ldrsh r0, [r4, r2] + cmp r0, r7 + bne _080ADADC + cmp r5, 0 + blt _080ADAD6 + movs r0, 0x6 + ldrsb r0, [r4, r0] + cmp r0, r5 + bne _080ADADC +_080ADAD6: + adds r0, r1, 0 + bl GroundEvent_Delete +_080ADADC: + adds r0, r6, 0 + movs r1, 0x80 + lsls r1, 9 + adds r6, r1 + asrs r1, r0, 16 + adds r4, 0x20 + cmp r1, 0x1F + ble _080ADABA + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ADAF8: .4byte gUnknown_811880C +_080ADAFC: .4byte gUnknown_3001B90 + thumb_func_end GroundEvent_Cancel + + thumb_func_start GroundEvent_Add +GroundEvent_Add: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + mov r8, r1 + lsls r0, 16 + asrs r7, r0, 16 + lsls r2, 16 + asrs r6, r2, 16 + lsls r3, 24 + asrs r3, 24 + mov r9, r3 + ldr r5, [r1, 0x8] + cmp r7, 0 + bge _080ADB60 + ldr r0, _080ADB38 + ldr r4, [r0] + movs r2, 0 + movs r0, 0x2 + ldrsh r1, [r4, r0] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080ADB3C + movs r7, 0 + b _080ADB68 + .align 2, 0 +_080ADB38: .4byte gUnknown_3001B90 +_080ADB3C: + adds r0, r2, 0x1 + lsls r0, 16 + asrs r2, r0, 16 + adds r4, 0x20 + cmp r2, 0x1F + bgt _080ADB56 + movs r3, 0x2 + ldrsh r1, [r4, r3] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080ADB3C + adds r7, r2, 0 +_080ADB56: + cmp r7, 0 + bge _080ADB68 + movs r0, 0x1 + negs r0, r0 + b _080ADC24 +_080ADB60: + ldr r0, _080ADBA0 + lsls r1, r7, 5 + ldr r0, [r0] + adds r4, r0, r1 +_080ADB68: + ldr r1, _080ADBA4 + movs r0, 0 + ldrsh r3, [r5, r0] + str r6, [sp] + mov r2, r9 + str r2, [sp, 0x4] + mov r2, r8 + ldr r0, [r2, 0x8] + ldr r0, [r0, 0x8] + str r0, [sp, 0x8] + movs r0, 0 + adds r2, r7, 0 + bl Log + strh r7, [r4] + ldrh r0, [r5] + strh r0, [r4, 0x2] + strh r6, [r4, 0x4] + mov r3, r9 + strb r3, [r4, 0x6] + movs r6, 0x2 + ldrsh r0, [r5, r6] + cmp r0, 0x1 + blt _080ADBA8 + cmp r0, 0x2 + bgt _080ADBA8 + movs r0, 0x60 + b _080ADBAA + .align 2, 0 +_080ADBA0: .4byte gUnknown_3001B90 +_080ADBA4: .4byte gUnknown_8118828 +_080ADBA8: + movs r0, 0x20 +_080ADBAA: + str r0, [r4, 0x8] + mov r3, r8 + ldrb r0, [r3] + lsls r1, r0, 11 + ldrb r0, [r3, 0x1] + lsls r2, r0, 11 + mov r5, r8 + adds r5, 0x4 + add r6, sp, 0xC + mov r12, r6 + ldrb r6, [r5, 0x2] + movs r0, 0x4 + ands r0, r6 + cmp r0, 0 + bne _080ADBDE + ldrb r0, [r3, 0x4] + lsls r3, r0, 11 + str r3, [sp, 0xC] + movs r0, 0x2 + ands r0, r6 + cmp r0, 0 + beq _080ADBDE + movs r6, 0x80 + lsls r6, 3 + adds r0, r3, r6 + str r0, [sp, 0xC] +_080ADBDE: + ldrb r6, [r5, 0x3] + movs r0, 0x4 + ands r0, r6 + cmp r0, 0 + bne _080ADC02 + ldrb r0, [r5, 0x1] + lsls r3, r0, 11 + mov r0, r12 + str r3, [r0, 0x4] + movs r0, 0x2 + ands r0, r6 + cmp r0, 0 + beq _080ADC02 + movs r5, 0x80 + lsls r5, 3 + adds r0, r3, r5 + mov r6, r12 + str r0, [r6, 0x4] +_080ADC02: + ldr r0, [sp, 0xC] + str r0, [r4, 0xC] + ldr r0, [sp, 0xC] + adds r0, r1 + str r0, [r4, 0x14] + ldr r0, [sp, 0x10] + str r0, [r4, 0x10] + ldr r0, [sp, 0x10] + adds r0, r2 + str r0, [r4, 0x18] + mov r1, r8 + ldr r0, [r1, 0x8] + ldr r0, [r0, 0x8] + str r0, [r4, 0x1C] + bl sub_80A7A78 + adds r0, r7, 0 +_080ADC24: + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end GroundEvent_Add + + thumb_func_start GroundEvent_Delete +GroundEvent_Delete: + push {r4,lr} + adds r2, r0, 0 + lsls r2, 16 + asrs r2, 16 + ldr r0, _080ADC58 + lsls r1, r2, 5 + ldr r4, [r0] + adds r4, r1 + ldr r1, _080ADC5C + movs r0, 0 + bl Log + ldr r0, _080ADC60 + strh r0, [r4, 0x2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ADC58: .4byte gUnknown_3001B90 +_080ADC5C: .4byte gUnknown_811886C +_080ADC60: .4byte 0x0000ffff + thumb_func_end GroundEvent_Delete + + thumb_func_start sub_80ADC64 +sub_80ADC64: + push {lr} + adds r3, r1, 0 + lsls r0, 16 + ldr r1, _080ADC84 + asrs r0, 11 + ldr r1, [r1] + adds r2, r1, r0 + movs r0, 0x2 + ldrsh r1, [r2, r0] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080ADC88 + movs r0, 0 + b _080ADC9A + .align 2, 0 +_080ADC84: .4byte gUnknown_3001B90 +_080ADC88: + ldr r0, [r2, 0x1C] + str r0, [r3] + movs r0, 0x2 + strh r0, [r3, 0x4] + ldrh r0, [r2, 0x4] + strh r0, [r3, 0x6] + ldrb r0, [r2, 0x6] + strb r0, [r3, 0x8] + movs r0, 0x1 +_080ADC9A: + pop {r1} + bx r1 + thumb_func_end sub_80ADC64 + + thumb_func_start sub_80ADCA0 +sub_80ADCA0: + push {r4-r7,lr} + adds r7, r0, 0 + adds r4, r1, 0 + ldr r0, _080ADCEC + ldr r3, [r0] + movs r5, 0 + movs r0, 0x1 + negs r0, r0 + mov r12, r0 + movs r6, 0x80 + lsls r6, 9 +_080ADCB6: + movs r1, 0x2 + ldrsh r0, [r3, r1] + cmp r0, r12 + beq _080ADCF0 + ldr r0, [r3, 0x8] + ands r0, r7 + cmp r0, 0 + beq _080ADCF0 + ldr r1, [r3, 0xC] + ldr r0, [r2] + cmp r1, r0 + bge _080ADCF0 + ldr r1, [r3, 0x14] + ldr r0, [r4] + cmp r1, r0 + ble _080ADCF0 + ldr r1, [r3, 0x10] + ldr r0, [r2, 0x4] + cmp r1, r0 + bge _080ADCF0 + ldr r1, [r3, 0x18] + ldr r0, [r4, 0x4] + cmp r1, r0 + ble _080ADCF0 + adds r0, r5, 0 + b _080ADD04 + .align 2, 0 +_080ADCEC: .4byte gUnknown_3001B90 +_080ADCF0: + adds r0, r6, 0 + movs r1, 0x80 + lsls r1, 9 + adds r6, r1 + asrs r5, r0, 16 + adds r3, 0x20 + cmp r5, 0x1F + ble _080ADCB6 + movs r0, 0x1 + negs r0, r0 +_080ADD04: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80ADCA0 + + thumb_func_start sub_80ADD0C +sub_80ADD0C: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r8, r0 + adds r6, r1, 0 + adds r5, r2, 0 + ldr r0, _080ADD74 + ldr r4, [r0] + movs r7, 0 + movs r0, 0x1 + negs r0, r0 + mov r9, r0 + movs r1, 0x80 + lsls r1, 9 + mov r12, r1 +_080ADD2C: + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, r9 + beq _080ADD78 + ldr r0, [r4, 0x8] + mov r1, r8 + ands r0, r1 + cmp r0, 0 + beq _080ADD78 + ldr r0, [r4, 0xC] + ldr r1, [r4, 0x14] + adds r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r2, r0, 1 + ldr r0, [r4, 0x10] + ldr r1, [r4, 0x18] + adds r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r3, r0, 1 + ldr r0, [r5] + cmp r2, r0 + bge _080ADD78 + ldr r0, [r6] + cmp r2, r0 + ble _080ADD78 + ldr r0, [r5, 0x4] + cmp r3, r0 + bge _080ADD78 + ldr r0, [r6, 0x4] + cmp r3, r0 + ble _080ADD78 + adds r0, r7, 0 + b _080ADD8C + .align 2, 0 +_080ADD74: .4byte gUnknown_3001B90 +_080ADD78: + mov r0, r12 + movs r1, 0x80 + lsls r1, 9 + add r12, r1 + asrs r7, r0, 16 + adds r4, 0x20 + cmp r7, 0x1F + ble _080ADD2C + movs r0, 0x1 + negs r0, r0 +_080ADD8C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80ADD0C + + thumb_func_start nullsub_124 +nullsub_124: + bx lr + thumb_func_end nullsub_124 + + thumb_func_start sub_80ADD9C +sub_80ADD9C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + str r0, [sp, 0x20] + str r1, [sp, 0x24] + str r2, [sp, 0x28] + str r3, [sp, 0x2C] + ldr r5, [sp, 0x54] + ldr r0, [sp, 0x5C] + mov r9, r0 + movs r0, 0x93 + lsls r0, 4 + movs r1, 0x7 + bl MemoryAlloc + mov r10, r0 + ldr r0, _080ADEB4 + ldr r7, _080ADEB8 + adds r1, r7, 0 + bl OpenFileAndGetFileDataPtr + adds r6, r0, 0 + add r4, sp, 0x1C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80901D8 + ldrb r5, [r4] + ldrb r4, [r4, 0x1] + cmp r5, 0x3E + bls _080ADDE2 + movs r5, 0x3E +_080ADDE2: + cmp r4, 0 + bgt _080ADDE8 + movs r4, 0x1 +_080ADDE8: + adds r0, r5, 0 + bl sub_8090298 + cmp r4, r0 + blt _080ADDFA + adds r0, r5, 0 + bl sub_8090298 + subs r4, r0, 0x1 +_080ADDFA: + ldr r2, [r6, 0x4] + ldr r1, [r2] + lsls r0, r5, 2 + adds r0, r1 + lsls r1, r4, 4 + ldr r0, [r0] + adds r0, r1 + movs r3, 0 + ldrsh r1, [r0, r3] + ldr r2, [r2, 0x4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + mov r8, r0 + adds r0, r6, 0 + bl CloseFile + ldr r1, _080ADEBC + ldr r0, _080ADEC0 + add r0, r8 + ldrb r5, [r0] + add r0, sp, 0x10 + adds r2, r5, 0 + bl sprintf + add r0, sp, 0x10 + adds r1, r7, 0 + bl OpenFileAndGetFileDataPtr + adds r4, r0, 0 + ldr r0, [sp, 0x28] + movs r1, 0 + adds r2, r4, 0 + bl sub_800AE28 + adds r0, r4, 0 + bl CloseFile + ldr r1, _080ADEC4 + add r0, sp, 0x10 + mov r2, r8 + bl sprintf + add r0, sp, 0x10 + adds r1, r7, 0 + bl OpenFile + ldr r1, [sp, 0x20] + str r0, [r1] + ldr r1, _080ADEC8 + add r0, sp, 0x10 + adds r2, r5, 0 + bl sprintf + add r0, sp, 0x10 + adds r1, r7, 0 + bl OpenFileAndGetFileDataPtr + adds r4, r0, 0 + ldr r1, _080ADECC + ldr r0, [sp, 0x2C] + adds r2, r4, 0 + bl sub_800AAA8 + adds r0, r4, 0 + bl CloseFile + mov r2, r8 + cmp r2, 0x3F + bgt _080ADED4 + ldr r1, _080ADED0 + add r0, sp, 0x10 + adds r2, r5, 0 + bl sprintf + add r0, sp, 0x10 + adds r1, r7, 0 + bl OpenFileAndGetFileDataPtr + adds r4, r0, 0 + mov r0, r10 + movs r1, 0x93 + lsls r1, 4 + adds r2, r4, 0 + bl sub_800AAA8 + adds r0, r4, 0 + bl CloseFile + b _080ADEFC + .align 2, 0 +_080ADEB4: .4byte gUnknown_8118890 +_080ADEB8: .4byte gUnknown_83B0000 +_080ADEBC: .4byte gUnknown_811889C +_080ADEC0: .4byte gUnknown_8108EC0 +_080ADEC4: .4byte gUnknown_81188A8 +_080ADEC8: .4byte gUnknown_81188B4 +_080ADECC: .4byte 0x00001194 +_080ADED0: .4byte gUnknown_81188C0 +_080ADED4: + ldr r1, _080ADF80 + add r0, sp, 0x10 + mov r2, r8 + ldr r3, [sp, 0x58] + bl sprintf + add r0, sp, 0x10 + adds r1, r7, 0 + bl OpenFileAndGetFileDataPtr + adds r4, r0, 0 + movs r1, 0x90 + lsls r1, 2 + mov r0, r10 + adds r2, r4, 0 + bl sub_800AAA8 + adds r0, r4, 0 + bl CloseFile +_080ADEFC: + movs r5, 0 + ldr r3, [sp, 0x60] + cmp r5, r3 + bge _080ADF52 +_080ADF04: + mov r0, r8 + bl sub_8097F40 + lsls r0, 24 + movs r7, 0 + cmp r0, 0 + beq _080ADF14 + movs r7, 0x3 +_080ADF14: + movs r4, 0 + adds r6, r5, 0x1 + cmp r4, r9 + bge _080ADF4A +_080ADF1C: + ldr r0, [sp, 0x64] + str r0, [sp] + str r7, [sp, 0x4] + mov r1, r10 + str r1, [sp, 0x8] + mov r2, r8 + str r2, [sp, 0xC] + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, r9 + ldr r3, [sp, 0x60] + bl sub_80ADFB8 + mov r1, r9 + muls r1, r5 + adds r1, r4 + lsls r1, 1 + ldr r3, [sp, 0x50] + adds r1, r3 + strh r0, [r1] + adds r4, 0x1 + cmp r4, r9 + blt _080ADF1C +_080ADF4A: + adds r5, r6, 0 + ldr r0, [sp, 0x60] + cmp r5, r0 + blt _080ADF04 +_080ADF52: + ldr r1, _080ADF84 + add r0, sp, 0x10 + mov r2, r8 + bl sprintf + ldr r1, _080ADF88 + add r0, sp, 0x10 + bl OpenFile + ldr r1, [sp, 0x24] + str r0, [r1] + mov r0, r10 + bl MemoryFree + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ADF80: .4byte gUnknown_81188CC +_080ADF84: .4byte gUnknown_81188DC +_080ADF88: .4byte gUnknown_83B0000 + thumb_func_end sub_80ADD9C + + thumb_func_start sub_80ADF8C +sub_80ADF8C: + push {r4,lr} + adds r4, r0, 0 + ldr r0, [sp, 0xC] + cmp r4, 0 + blt _080ADFB0 + cmp r1, 0 + blt _080ADFB0 + cmp r4, r2 + bge _080ADFB0 + cmp r1, r3 + bge _080ADFB0 + adds r0, r1, 0 + muls r0, r2 + adds r0, r4, r0 + lsls r0, 1 + ldr r1, [sp, 0x8] + adds r0, r1 + ldrh r0, [r0] +_080ADFB0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80ADF8C + + thumb_func_start sub_80ADFB8 +sub_80ADFB8: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + mov r9, r0 + mov r10, r1 + adds r6, r2, 0 + mov r8, r3 + ldr r4, [sp, 0x5C] + movs r7, 0 + ldr r0, [sp, 0x50] + str r0, [sp] + ldr r1, [sp, 0x54] + str r1, [sp, 0x4] + mov r0, r9 + mov r1, r10 + bl sub_80ADF8C + str r0, [sp, 0x28] + cmp r4, 0x3F + ble _080AE000 + mov r0, r9 + cmp r0, 0x17 + bgt _080ADFFC + mov r1, r10 + cmp r1, 0x17 + bgt _080ADFFC + lsls r0, r1, 1 + add r0, r10 + lsls r0, 3 + add r0, r9 + b _080AE24E +_080ADFFC: + ldr r0, [sp, 0x54] + b _080AE254 +_080AE000: + mov r0, r10 + adds r0, 0x1 + str r0, [sp, 0x2C] + ldr r1, [sp, 0x50] + str r1, [sp] + ldr r0, [sp, 0x54] + str r0, [sp, 0x4] + mov r0, r9 + ldr r1, [sp, 0x2C] + adds r2, r6, 0 + mov r3, r8 + bl sub_80ADF8C + str r0, [sp, 0x8] + mov r4, r9 + adds r4, 0x1 + ldr r1, [sp, 0x50] + str r1, [sp] + ldr r0, [sp, 0x54] + str r0, [sp, 0x4] + adds r0, r4, 0 + ldr r1, [sp, 0x2C] + adds r2, r6, 0 + mov r3, r8 + bl sub_80ADF8C + str r0, [sp, 0xC] + ldr r1, [sp, 0x50] + str r1, [sp] + ldr r0, [sp, 0x54] + str r0, [sp, 0x4] + adds r0, r4, 0 + mov r1, r10 + adds r2, r6, 0 + mov r3, r8 + bl sub_80ADF8C + str r0, [sp, 0x10] + mov r5, r10 + subs r5, 0x1 + ldr r1, [sp, 0x50] + str r1, [sp] + ldr r0, [sp, 0x54] + str r0, [sp, 0x4] + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + mov r3, r8 + bl sub_80ADF8C + str r0, [sp, 0x14] + ldr r1, [sp, 0x50] + str r1, [sp] + ldr r0, [sp, 0x54] + str r0, [sp, 0x4] + mov r0, r9 + adds r1, r5, 0 + adds r2, r6, 0 + mov r3, r8 + bl sub_80ADF8C + str r0, [sp, 0x18] + subs r4, 0x2 + ldr r1, [sp, 0x50] + str r1, [sp] + ldr r0, [sp, 0x54] + str r0, [sp, 0x4] + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + mov r3, r8 + bl sub_80ADF8C + str r0, [sp, 0x1C] + ldr r1, [sp, 0x50] + str r1, [sp] + ldr r0, [sp, 0x54] + str r0, [sp, 0x4] + adds r0, r4, 0 + mov r1, r10 + adds r2, r6, 0 + mov r3, r8 + bl sub_80ADF8C + str r0, [sp, 0x20] + ldr r1, [sp, 0x50] + str r1, [sp] + ldr r0, [sp, 0x54] + str r0, [sp, 0x4] + adds r0, r4, 0 + ldr r1, [sp, 0x2C] + adds r2, r6, 0 + mov r3, r8 + bl sub_80ADF8C + adds r1, r0, 0 + str r1, [sp, 0x24] + ldr r0, [sp, 0x28] + cmp r0, 0x1 + bne _080AE12A + movs r7, 0xFF + ldr r0, [sp, 0x8] + cmp r0, 0 + bne _080AE0D2 + movs r7, 0xFE +_080AE0D2: + ldr r0, [sp, 0xC] + cmp r0, 0 + bne _080AE0DE + movs r0, 0x3 + negs r0, r0 + ands r7, r0 +_080AE0DE: + ldr r0, [sp, 0x10] + cmp r0, 0 + bne _080AE0EA + movs r0, 0x5 + negs r0, r0 + ands r7, r0 +_080AE0EA: + ldr r0, [sp, 0x14] + cmp r0, 0 + bne _080AE0F6 + movs r0, 0x9 + negs r0, r0 + ands r7, r0 +_080AE0F6: + ldr r0, [sp, 0x18] + cmp r0, 0 + bne _080AE102 + movs r0, 0x11 + negs r0, r0 + ands r7, r0 +_080AE102: + ldr r0, [sp, 0x1C] + cmp r0, 0 + bne _080AE10E + movs r0, 0x21 + negs r0, r0 + ands r7, r0 +_080AE10E: + ldr r0, [sp, 0x20] + cmp r0, 0 + bne _080AE11A + movs r0, 0x41 + negs r0, r0 + ands r7, r0 +_080AE11A: + cmp r1, 0 + bne _080AE124 + movs r0, 0x81 + negs r0, r0 + ands r7, r0 +_080AE124: + movs r0, 0x80 + lsls r0, 2 + b _080AE248 +_080AE12A: + ldr r0, [sp, 0x28] + cmp r0, 0x2 + bne _080AE192 + movs r7, 0xFF + ldr r0, [sp, 0x8] + cmp r0, 0x2 + beq _080AE13A + movs r7, 0xFE +_080AE13A: + ldr r0, [sp, 0xC] + cmp r0, 0x2 + beq _080AE146 + movs r0, 0x3 + negs r0, r0 + ands r7, r0 +_080AE146: + ldr r0, [sp, 0x10] + cmp r0, 0x2 + beq _080AE152 + movs r0, 0x5 + negs r0, r0 + ands r7, r0 +_080AE152: + ldr r0, [sp, 0x14] + cmp r0, 0x2 + beq _080AE15E + movs r0, 0x9 + negs r0, r0 + ands r7, r0 +_080AE15E: + ldr r0, [sp, 0x18] + cmp r0, 0x2 + beq _080AE16A + movs r0, 0x11 + negs r0, r0 + ands r7, r0 +_080AE16A: + ldr r0, [sp, 0x1C] + cmp r0, 0x2 + beq _080AE176 + movs r0, 0x21 + negs r0, r0 + ands r7, r0 +_080AE176: + ldr r0, [sp, 0x20] + cmp r0, 0x2 + beq _080AE182 + movs r0, 0x41 + negs r0, r0 + ands r7, r0 +_080AE182: + cmp r1, 0x2 + beq _080AE18C + movs r0, 0x81 + negs r0, r0 + ands r7, r0 +_080AE18C: + movs r0, 0x80 + lsls r0, 1 + b _080AE248 +_080AE192: + ldr r1, [sp, 0x28] + cmp r1, 0x3 + bne _080AE1FC + movs r7, 0xFF + ldr r0, [sp, 0x8] + cmp r0, 0x3 + beq _080AE1A2 + movs r7, 0xFE +_080AE1A2: + ldr r0, [sp, 0xC] + cmp r0, 0x3 + beq _080AE1AE + movs r0, 0x3 + negs r0, r0 + ands r7, r0 +_080AE1AE: + ldr r0, [sp, 0x10] + cmp r0, 0x3 + beq _080AE1BA + movs r0, 0x5 + negs r0, r0 + ands r7, r0 +_080AE1BA: + ldr r0, [sp, 0x14] + cmp r0, 0x3 + beq _080AE1C6 + movs r0, 0x9 + negs r0, r0 + ands r7, r0 +_080AE1C6: + ldr r0, [sp, 0x18] + cmp r0, 0x3 + beq _080AE1D2 + movs r0, 0x11 + negs r0, r0 + ands r7, r0 +_080AE1D2: + ldr r0, [sp, 0x1C] + cmp r0, 0x3 + beq _080AE1DE + movs r0, 0x21 + negs r0, r0 + ands r7, r0 +_080AE1DE: + ldr r0, [sp, 0x20] + cmp r0, 0x3 + beq _080AE1EA + movs r0, 0x41 + negs r0, r0 + ands r7, r0 +_080AE1EA: + ldr r0, [sp, 0x24] + cmp r0, 0x3 + beq _080AE1F6 + movs r0, 0x81 + negs r0, r0 + ands r7, r0 +_080AE1F6: + movs r0, 0x80 + lsls r0, 1 + b _080AE248 +_080AE1FC: + ldr r0, [sp, 0x8] + cmp r0, 0 + bne _080AE204 + movs r7, 0x1 +_080AE204: + ldr r0, [sp, 0xC] + cmp r0, 0 + bne _080AE20E + movs r0, 0x2 + orrs r7, r0 +_080AE20E: + ldr r0, [sp, 0x10] + cmp r0, 0 + bne _080AE218 + movs r0, 0x4 + orrs r7, r0 +_080AE218: + ldr r0, [sp, 0x14] + cmp r0, 0 + bne _080AE222 + movs r0, 0x8 + orrs r7, r0 +_080AE222: + ldr r0, [sp, 0x18] + cmp r0, 0 + bne _080AE22C + movs r0, 0x10 + orrs r7, r0 +_080AE22C: + ldr r0, [sp, 0x1C] + cmp r0, 0 + bne _080AE236 + movs r0, 0x20 + orrs r7, r0 +_080AE236: + ldr r0, [sp, 0x20] + cmp r0, 0 + bne _080AE240 + movs r0, 0x40 + orrs r7, r0 +_080AE240: + ldr r0, [sp, 0x24] + cmp r0, 0 + bne _080AE24A + movs r0, 0x80 +_080AE248: + orrs r7, r0 +_080AE24A: + lsls r0, r7, 1 + adds r0, r7 +_080AE24E: + ldr r1, [sp, 0x58] + adds r0, r1, r0 + ldrb r0, [r0] +_080AE254: + 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_80ADFB8 + + .align 2,0 |