diff options
Diffstat (limited to 'asm/ground_map_1.s')
-rw-r--r-- | asm/ground_map_1.s | 3043 |
1 files changed, 3043 insertions, 0 deletions
diff --git a/asm/ground_map_1.s b/asm/ground_map_1.s new file mode 100644 index 0000000..fa10e6f --- /dev/null +++ b/asm/ground_map_1.s @@ -0,0 +1,3043 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + 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 + + .align 2,0 |