#include "asm/constants/gba_constants.inc" #include "asm/macros.inc" .syntax unified .text thumb_func_start sub_800DD0C sub_800DD0C: push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 adds r5, r0, 0 adds r6, r1, 0 movs r0, 0x58 adds r0, r5 mov r8, r0 ldrh r1, [r0] movs r0, 0x80 lsls r0, 6 ands r0, r1 cmp r0, 0 beq _0800DD2E movs r0, 0 b _0800DD30 _0800DD2E: lsrs r0, r1, 15 _0800DD30: cmp r0, 0 bne _0800DD64 adds r0, r5, 0 bl sub_800DCA8 ldr r0, [r5, 0x34] cmp r0, 0x3 bne _0800DD60 movs r4, 0 b _0800DD46 _0800DD44: adds r4, 0x1 _0800DD46: cmp r4, 0x1 bgt _0800DD60 adds r0, r4, 0 bl sub_800F18C adds r2, r0, 0 ldr r1, [r2] ldr r0, [r5, 0x38] cmp r1, r0 bne _0800DD44 ldr r0, [r2, 0x4] subs r0, 0x1 str r0, [r2, 0x4] _0800DD60: movs r0, 0 b _0800DE28 _0800DD64: mov r0, r8 bl sub_80054BC movs r4, 0 ldr r0, [r5, 0x8] movs r1, 0x7 ands r0, r1 cmp r0, 0 bne _0800DD88 ldr r0, [r5, 0x14] cmp r0, 0x5 bgt _0800DD84 cmp r0, 0x3 blt _0800DD84 subs r4, 0x3 b _0800DD8A _0800DD84: adds r4, 0x3 b _0800DD8A _0800DD88: movs r4, 0x3 _0800DD8A: movs r2, 0 ldr r1, [r5, 0x20] movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0800DD9E ldrh r0, [r5, 0x1E] lsls r0, 16 ldrh r2, [r5, 0x1C] orrs r2, r0 _0800DD9E: lsls r0, r2, 16 asrs r1, r0, 16 adds r7, r0, 0 cmp r1, 0x63 beq _0800DE26 asrs r0, r2, 16 adds r2, r0, 0 cmp r2, 0x63 beq _0800DE26 ldr r3, [r5, 0x24] ldr r0, _0800DE34 cmp r3, r0 bne _0800DDCA movs r1, 0x1A ldrsh r0, [r5, r1] movs r3, 0x2 ldrsh r1, [r6, r3] subs r0, r1 lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 adds r3, r0, r4 _0800DDCA: movs r4, 0x18 ldrsh r0, [r5, r4] movs r4, 0 ldrsh r1, [r6, r4] subs r0, r1 asrs r1, r7, 16 adds r4, r0, r1 movs r7, 0x1A ldrsh r0, [r5, r7] movs r7, 0x2 ldrsh r1, [r6, r7] subs r0, r1 adds r2, r0, r2 adds r0, r5, 0 adds r0, 0xCC ldrh r0, [r0] ldrh r1, [r5, 0x18] adds r0, r1 strh r0, [r5, 0x18] adds r0, r5, 0 adds r0, 0xCE ldrh r0, [r0] ldrh r7, [r5, 0x1A] adds r0, r7 strh r0, [r5, 0x1A] adds r1, r4, 0 adds r1, 0x3F movs r0, 0xB7 lsls r0, 1 cmp r1, r0 bhi _0800DE26 movs r0, 0x40 negs r0, r0 cmp r2, r0 ble _0800DE26 cmp r2, 0xDF bgt _0800DE26 ldr r0, [r5, 0x3C] str r0, [sp] adds r0, r5, 0 adds r0, 0x28 str r0, [sp, 0x4] mov r0, r8 adds r1, r4, 0 bl sub_800558C _0800DE26: movs r0, 0x1 _0800DE28: add sp, 0x8 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0800DE34: .4byte 0x0000ffff thumb_func_end sub_800DD0C thumb_func_start sub_800DE38 sub_800DE38: push {r4,r5,lr} adds r5, r0, 0 adds r0, 0x58 ldrh r1, [r0] movs r0, 0x80 lsls r0, 6 ands r0, r1 cmp r0, 0 beq _0800DE4E movs r0, 0 b _0800DE50 _0800DE4E: lsrs r0, r1, 15 _0800DE50: cmp r0, 0 bne _0800DE84 adds r0, r5, 0 bl sub_800DCA8 ldr r0, [r5, 0x34] cmp r0, 0x3 bne _0800DE80 movs r4, 0 b _0800DE66 _0800DE64: adds r4, 0x1 _0800DE66: cmp r4, 0x1 bgt _0800DE80 adds r0, r4, 0 bl sub_800F18C adds r2, r0, 0 ldr r1, [r2] ldr r0, [r5, 0x38] cmp r1, r0 bne _0800DE64 ldr r0, [r2, 0x4] subs r0, 0x1 str r0, [r2, 0x4] _0800DE80: movs r0, 0 b _0800DE86 _0800DE84: movs r0, 0x1 _0800DE86: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_800DE38 thumb_func_start sub_800DE8C sub_800DE8C: push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x14 adds r6, r0, 0 movs r0, 0x94 adds r0, r6 mov r8, r0 ldr r4, [r0, 0x18] cmp r4, 0 beq _0800DEA4 b _0800E09C _0800DEA4: ldr r1, [r0, 0x14] movs r7, 0x1 str r7, [sp] adds r0, r6, 0 adds r0, 0xAC str r0, [sp, 0x4] add r2, sp, 0xC str r2, [sp, 0x8] mov r0, r8 movs r2, 0 movs r3, 0 bl sub_8009A7C lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 bne _0800DEC8 b _0800E030 _0800DEC8: add r0, sp, 0xC movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 beq _0800DEE8 adds r0, r6, 0 adds r0, 0xB4 strb r7, [r0] ldr r0, _0800DF0C ldr r0, [r0] ldr r2, _0800DF10 adds r1, r0, r2 str r4, [r1] ldr r1, _0800DF14 adds r0, r1 str r4, [r0] _0800DEE8: add r0, sp, 0xC ldrh r0, [r0, 0x2] lsls r0, 16 asrs r0, 16 cmp r0, 0 beq _0800DF6C cmp r0, 0x63 bne _0800DF1C ldr r0, _0800DF0C ldr r0, [r0] ldr r1, _0800DF10 adds r2, r0, r1 ldr r1, _0800DF18 str r1, [r2] ldr r2, _0800DF14 adds r0, r2 str r4, [r0] b _0800DF6C .align 2, 0 _0800DF0C: .4byte gUnknown_203B0CC _0800DF10: .4byte 0x00001a08 _0800DF14: .4byte 0x00001a0c _0800DF18: .4byte 0x00000c1c _0800DF1C: cmp r0, 0 ble _0800DF50 ldr r0, _0800DF40 ldr r4, [r0] ldr r0, _0800DF44 adds r5, r4, r0 ldr r1, _0800DF48 adds r4, r1 add r0, sp, 0xC movs r2, 0x2 ldrsh r1, [r0, r2] ldr r0, _0800DF4C bl __divsi3 str r0, [r4] str r0, [r5] b _0800DF6C .align 2, 0 _0800DF40: .4byte gUnknown_203B0CC _0800DF44: .4byte 0x00001a08 _0800DF48: .4byte 0x00001a0c _0800DF4C: .4byte 0x00000c1c _0800DF50: ldr r0, _0800DFA4 ldr r4, [r0] ldr r0, _0800DFA8 adds r1, r4, r0 ldr r0, _0800DFAC str r0, [r1] ldr r1, _0800DFB0 adds r4, r1 add r1, sp, 0xC movs r2, 0x2 ldrsh r1, [r1, r2] bl __divsi3 str r0, [r4] _0800DF6C: mov r0, r8 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0 bne _0800DF78 b _0800E094 _0800DF78: ldr r0, _0800DFA4 ldr r1, [r0] ldr r2, _0800DFB4 adds r0, r1, r2 ldr r0, [r0] cmp r0, 0 beq _0800DFB8 cmp r0, 0x1 bne _0800DFEA adds r0, r6, 0 adds r0, 0xB8 ldr r0, [r0] ldr r0, [r0, 0x4] ldr r1, [r0, 0x10] movs r0, 0xE0 lsls r0, 2 adds r1, r0 movs r0, 0xE0 movs r2, 0x10 bl sub_809971C b _0800DFEA .align 2, 0 _0800DFA4: .4byte gUnknown_203B0CC _0800DFA8: .4byte 0x00001a08 _0800DFAC: .4byte 0x00000c1c _0800DFB0: .4byte 0x00001a0c _0800DFB4: .4byte 0x00001a04 _0800DFB8: ldr r2, _0800E010 adds r0, r1, r2 ldr r0, [r0] movs r1, 0x64 bl __divsi3 adds r7, r0, 0 movs r4, 0 adds r6, 0xB8 movs r5, 0xE0 lsls r5, 2 _0800DFCE: adds r0, r4, 0 adds r0, 0xE0 ldr r1, [r6] ldr r1, [r1, 0x4] ldr r1, [r1, 0x10] adds r1, r5 adds r2, r7, 0 movs r3, 0 bl SetBGPaletteBufferColorRGB adds r5, 0x4 adds r4, 0x1 cmp r4, 0xF ble _0800DFCE _0800DFEA: ldr r1, _0800E014 ldr r2, _0800E018 adds r0, r2, 0 strh r0, [r1] ldr r0, _0800E01C ldr r0, [r0] ldr r1, _0800E010 adds r2, r0, r1 adds r1, 0x4 adds r0, r1 ldr r1, [r2] ldr r0, [r0] adds r1, r0 str r1, [r2] cmp r1, 0 bge _0800E020 movs r0, 0 str r0, [r2] b _0800E094 .align 2, 0 _0800E010: .4byte 0x00001a08 _0800E014: .4byte gUnknown_2026E4E _0800E018: .4byte 0x00000a0a _0800E01C: .4byte gUnknown_203B0CC _0800E020: ldr r0, _0800E02C cmp r1, r0 ble _0800E094 str r0, [r2] b _0800E094 .align 2, 0 _0800E02C: .4byte 0x00000c1c _0800E030: bl sub_8009BE4 adds r0, r6, 0 bl sub_800DCA8 bl sub_8000728 cmp r0, 0x1 bne _0800E058 bl sub_8040238 movs r0, 0 movs r1, 0 bl sub_803EAF0 movs r0, 0x80 lsls r0, 8 movs r1, 0 bl sub_800CD64 _0800E058: ldr r4, _0800E084 ldr r0, [r4] ldr r2, _0800E088 adds r0, r2 ldr r0, [r0] bl sub_800CDA8 ldr r1, _0800E08C ldr r0, [r4] ldr r2, _0800E090 adds r0, r2 ldrh r0, [r0] strh r0, [r1] movs r0, 0x1 bl sub_800F18C str r5, [r0, 0x4] movs r1, 0x1 negs r1, r1 str r1, [r0] movs r0, 0 b _0800E0A6 .align 2, 0 _0800E084: .4byte gUnknown_203B0CC _0800E088: .4byte 0x00001a10 _0800E08C: .4byte gUnknown_2026E4E _0800E090: .4byte 0x00001a14 _0800E094: mov r1, r8 ldr r0, [r1, 0x14] adds r0, 0x1 str r0, [r1, 0x14] _0800E09C: mov r2, r8 ldr r0, [r2, 0x18] subs r0, 0x1 str r0, [r2, 0x18] movs r0, 0x1 _0800E0A6: add sp, 0x14 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_800DE8C thumb_func_start sub_800E0B4 sub_800E0B4: push {r4-r6,lr} sub sp, 0x8 adds r5, r0, 0 ldr r0, [r5, 0xC] bl sub_800ECA4 adds r6, r0, 0 ldr r0, [r6] str r0, [r5, 0x34] ldr r0, [r6, 0x4] str r0, [r5, 0x38] ldr r0, [r6, 0x10] str r0, [r5, 0x4C] ldr r0, [r5, 0x10] ldr r1, [r6, 0x14] adds r0, r1 str r0, [r5, 0x50] adds r0, r6, 0 adds r0, 0x21 ldrb r0, [r0] adds r1, r5, 0 adds r1, 0x55 strb r0, [r1] adds r0, r6, 0 adds r0, 0x20 ldrb r1, [r0] adds r0, r5, 0 adds r0, 0x54 strb r1, [r0] adds r0, 0x64 ldr r0, [r0] bl sub_800E2B8 adds r2, r0, 0 str r2, [r5, 0x8] ldr r3, [r6, 0xC] str r3, [r5, 0x40] ldr r1, [r5, 0x14] movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0800E114 movs r0, 0x7 ands r0, r2 cmp r0, 0 bne _0800E114 adds r0, r3, r1 str r0, [r5, 0x40] _0800E114: ldr r0, [r5, 0x34] cmp r0, 0x3 beq _0800E12E cmp r0, 0x3 bhi _0800E128 cmp r0, 0x1 bcc _0800E184 movs r0, 0x92 lsls r0, 2 b _0800E132 _0800E128: cmp r0, 0x4 beq _0800E140 b _0800E184 _0800E12E: movs r0, 0xDC lsls r0, 2 _0800E132: str r0, [r5, 0x48] ldr r0, [r6, 0x8] str r0, [r5, 0x3C] movs r0, 0x1 negs r0, r0 str r0, [r5, 0x44] b _0800E184 _0800E140: movs r0, 0x1 negs r0, r0 str r0, [r5, 0x48] ldr r0, [r6, 0x8] str r0, [r5, 0x3C] movs r0, 0xF0 lsls r0, 4 str r0, [r5, 0x44] ldr r4, _0800E194 ldr r0, [r4] ldr r2, _0800E198 adds r1, r0, r2 movs r2, 0 str r2, [r1] ldr r3, _0800E19C adds r0, r3 str r2, [r0] bl sub_800CDC8 ldr r2, [r4] ldr r4, _0800E1A0 adds r1, r2, r4 str r0, [r1] ldr r0, _0800E1A4 ldrh r0, [r0] ldr r1, _0800E1A8 adds r2, r1 strh r0, [r2] ldrb r0, [r6, 0x18] cmp r0, 0 beq _0800E184 movs r0, 0x5 bl sub_800CDA8 _0800E184: ldr r0, [r5, 0x34] cmp r0, 0x3 beq _0800E1C2 cmp r0, 0x3 bls _0800E1AC cmp r0, 0x4 beq _0800E1E4 b _0800E200 .align 2, 0 _0800E194: .4byte gUnknown_203B0CC _0800E198: .4byte 0x00001a08 _0800E19C: .4byte 0x00001a0c _0800E1A0: .4byte 0x00001a10 _0800E1A4: .4byte gUnknown_2026E4E _0800E1A8: .4byte 0x00001a14 _0800E1AC: cmp r0, 0x1 bcc _0800E200 adds r0, r5, 0 adds r0, 0x58 adds r1, r5, 0 adds r1, 0xB8 ldr r1, [r1] ldr r2, [r5, 0x40] movs r3, 0x92 lsls r3, 2 b _0800E1D2 _0800E1C2: adds r0, r5, 0 adds r0, 0x58 adds r1, r5, 0 adds r1, 0xB8 ldr r1, [r1] ldr r2, [r5, 0x40] movs r3, 0xDC lsls r3, 2 _0800E1D2: movs r4, 0 str r4, [sp] adds r4, r5, 0 adds r4, 0x55 ldrb r4, [r4] str r4, [sp, 0x4] bl sub_800543C b _0800E200 _0800E1E4: adds r0, r5, 0 adds r0, 0xB8 ldr r0, [r0] adds r1, r5, 0 adds r1, 0x94 ldr r0, [r0, 0x4] ldm r0!, {r2-r4} stm r1!, {r2-r4} ldm r0!, {r2,r3} stm r1!, {r2,r3} adds r1, r5, 0 adds r1, 0xB4 movs r0, 0 strb r0, [r1] _0800E200: add sp, 0x8 pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_800E0B4 thumb_func_start sub_800E208 sub_800E208: push {r4-r7,lr} adds r7, r0, 0 adds r6, r1, 0 ldr r0, _0800E220 ldr r4, [r0] ldr r0, [r6] cmp r0, 0 bne _0800E224 _0800E218: movs r0, 0x1 negs r0, r0 b _0800E2B0 .align 2, 0 _0800E220: .4byte gUnknown_203B0CC _0800E224: movs r1, 0 _0800E226: ldr r5, [r4, 0x4] movs r0, 0x1 negs r0, r0 cmp r5, r0 bne _0800E2A8 adds r0, r4, 0 movs r1, 0xD0 bl MemoryClear8 ldr r0, [r6] bl sub_800ECA4 adds r1, r0, 0 ldr r2, [r1] cmp r2, 0x2 bne _0800E254 ldr r0, _0800E2A0 ldr r0, [r0] ldr r3, _0800E2A4 adds r0, r3 ldr r0, [r0] cmp r0, 0x1 bne _0800E218 _0800E254: cmp r2, 0x1 bne _0800E266 ldr r0, _0800E2A0 ldr r0, [r0] ldr r3, _0800E2A4 adds r0, r3 ldr r0, [r0] cmp r0, 0 bne _0800E218 _0800E266: ldr r1, [r1, 0x4] adds r0, r2, 0 bl sub_800F1C0 adds r1, r4, 0 adds r1, 0xB8 str r0, [r1] cmp r0, 0 beq _0800E218 str r7, [r4] bl sub_800E2F0 str r0, [r4, 0x4] adds r1, r4, 0 adds r1, 0xC adds r0, r6, 0 ldm r0!, {r2,r3,r5} stm r1!, {r2,r3,r5} ldm r0!, {r2,r3,r5} stm r1!, {r2,r3,r5} ldm r0!, {r2,r3,r5} stm r1!, {r2,r3,r5} ldr r0, [r0] str r0, [r1] adds r0, r4, 0 bl sub_800E0B4 ldr r0, [r4, 0x4] b _0800E2B0 .align 2, 0 _0800E2A0: .4byte gUnknown_203B0CC _0800E2A4: .4byte 0x00001a04 _0800E2A8: adds r1, 0x1 adds r4, 0xD0 cmp r1, 0x1F ble _0800E226 _0800E2B0: pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_800E208 thumb_func_start sub_800E2B8 sub_800E2B8: ldr r0, [r0, 0x4] ldr r0, [r0, 0x8] bx lr thumb_func_end sub_800E2B8 thumb_func_start sub_800E2C0 sub_800E2C0: push {lr} adds r3, r0, 0 movs r0, 0x1 negs r0, r0 cmp r3, r0 beq _0800E2E8 ldr r0, _0800E2DC ldr r1, [r0] movs r2, 0 _0800E2D2: ldr r0, [r1, 0x4] cmp r0, r3 bne _0800E2E0 adds r0, r2, 0 b _0800E2EC .align 2, 0 _0800E2DC: .4byte gUnknown_203B0CC _0800E2E0: adds r2, 0x1 adds r1, 0xD0 cmp r2, 0x1F ble _0800E2D2 _0800E2E8: movs r0, 0x1 negs r0, r0 _0800E2EC: pop {r1} bx r1 thumb_func_end sub_800E2C0 thumb_func_start sub_800E2F0 sub_800E2F0: ldr r0, _0800E304 ldr r1, [r0] movs r0, 0xD0 lsls r0, 5 adds r1, r0 ldr r0, [r1] adds r2, r0, 0x1 str r2, [r1] bx lr .align 2, 0 _0800E304: .4byte gUnknown_203B0CC thumb_func_end sub_800E2F0 thumb_func_start sub_800E308 sub_800E308: push {r4-r7,lr} sub sp, 0x50 adds r4, r0, 0 adds r7, r1, 0 ldrh r0, [r4] bl sub_800ECB8 movs r1, 0x6 ldrsh r0, [r0, r1] str r0, [sp, 0x28] ldr r0, [r4, 0x10] str r0, [sp, 0x2C] ldr r0, [r4, 0xC] str r0, [sp, 0x30] ldr r0, [r4, 0x4] str r0, [sp, 0x34] ldr r0, [r4, 0x8] str r0, [sp, 0x38] movs r2, 0x2 ldrsh r0, [r4, r2] ldrh r1, [r4] bl sub_800E750 str r0, [sp, 0x3C] ldr r0, _0800E3A0 str r0, [sp, 0x40] add r1, sp, 0x44 ldr r0, _0800E3A4 ldm r0!, {r2,r3,r5} stm r1!, {r2,r3,r5} add r1, sp, 0x28 mov r0, sp movs r2, 0x28 bl memcpy movs r0, 0x2 mov r1, sp bl sub_800E208 adds r5, r0, 0 movs r6, 0x1 negs r6, r6 cmp r5, r6 beq _0800E396 adds r0, r5, 0 bl sub_800E2C0 adds r1, r0, 0 cmp r1, r6 beq _0800E396 ldr r2, _0800E3A8 movs r0, 0xD0 muls r1, r0 ldr r0, [r2] adds r2, r0, r1 adds r1, r2, 0 adds r1, 0xBC ldr r0, [r4, 0x4] str r0, [r1] adds r1, 0x4 ldr r0, [r7] str r0, [r1] ldrh r1, [r4, 0x2] adds r0, r2, 0 adds r0, 0xC4 strh r1, [r0] adds r1, r2, 0 adds r1, 0xC8 ldr r0, [r2, 0x1C] str r0, [r1] adds r0, r5, 0 _0800E396: add sp, 0x50 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0800E3A0: .4byte 0x0000ffff _0800E3A4: .4byte gUnknown_80B9C60 _0800E3A8: .4byte gUnknown_203B0CC thumb_func_end sub_800E308 thumb_func_start sub_800E3AC sub_800E3AC: push {r4-r6,lr} adds r4, r1, 0 adds r6, r2, 0 bl sub_800E2C0 adds r1, r0, 0 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0800E43C ldr r2, _0800E444 movs r0, 0xD0 muls r1, r0 ldr r0, [r2] adds r5, r0, r1 ldr r0, [r4] str r0, [r5, 0x18] adds r0, r5, 0 adds r0, 0xC0 movs r2, 0 ldrsh r1, [r0, r2] subs r0, 0x4 movs r3, 0 ldrsh r0, [r0, r3] subs r2, r1, r0 cmp r2, 0 bge _0800E3E4 negs r2, r2 _0800E3E4: adds r0, r5, 0 adds r0, 0xC2 movs r3, 0 ldrsh r1, [r0, r3] subs r0, 0x4 movs r3, 0 ldrsh r0, [r0, r3] subs r1, r0 cmp r1, 0 bge _0800E3FA negs r1, r1 _0800E3FA: cmp r1, r2 bge _0800E400 adds r1, r2, 0 _0800E400: cmp r1, 0 bge _0800E406 adds r1, 0x3 _0800E406: asrs r4, r1, 2 subs r1, r4, 0x1 ldrh r0, [r5, 0x1E] adds r0, 0x9 strh r0, [r5, 0x1E] movs r2, 0x1C ldrsh r0, [r5, r2] muls r0, r1 strh r0, [r5, 0x1C] movs r3, 0x1E ldrsh r0, [r5, r3] muls r0, r1 strh r0, [r5, 0x1E] movs r1, 0x1C ldrsh r0, [r5, r1] adds r1, r4, 0 bl __divsi3 strh r0, [r5, 0x1C] movs r2, 0x1E ldrsh r0, [r5, r2] adds r1, r4, 0 bl __divsi3 subs r0, 0x9 strh r0, [r5, 0x1E] str r6, [r5, 0x24] _0800E43C: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800E444: .4byte gUnknown_203B0CC thumb_func_end sub_800E3AC thumb_func_start sub_800E448 sub_800E448: push {r4,lr} sub sp, 0x50 adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 bl sub_800ECE4 lsls r0, 16 asrs r0, 16 str r0, [sp, 0x28] movs r2, 0 str r2, [sp, 0x2C] movs r1, 0x1 negs r1, r1 str r1, [sp, 0x30] ldr r0, [r4] str r0, [sp, 0x34] str r2, [sp, 0x38] str r1, [sp, 0x3C] ldr r0, _0800E494 str r0, [sp, 0x40] add r1, sp, 0x44 ldr r0, _0800E498 ldm r0!, {r2-r4} stm r1!, {r2-r4} add r1, sp, 0x28 mov r0, sp movs r2, 0x28 bl memcpy movs r0, 0x3 mov r1, sp bl sub_800E208 add sp, 0x50 pop {r4} pop {r1} bx r1 .align 2, 0 _0800E494: .4byte 0x0000ffff _0800E498: .4byte gUnknown_80B9C60 thumb_func_end sub_800E448 thumb_func_start sub_800E49C sub_800E49C: push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x50 adds r7, r1, 0 mov r8, r2 lsls r0, 24 lsrs r0, 24 lsls r3, 24 lsrs r6, r3, 24 cmp r6, 0 beq _0800E4BA bl sub_800ECF8 b _0800E4BE _0800E4BA: bl sub_800ED0C _0800E4BE: lsls r0, 16 asrs r4, r0, 16 adds r0, r4, 0 bl sub_800E700 adds r5, r0, 0 str r4, [sp, 0x28] movs r1, 0 str r1, [sp, 0x2C] movs r4, 0x1 negs r4, r4 str r4, [sp, 0x30] ldr r0, [r7] str r0, [sp, 0x34] str r1, [sp, 0x38] str r4, [sp, 0x3C] str r1, [sp, 0x40] add r1, sp, 0x44 ldr r0, _0800E508 ldm r0!, {r2,r3,r7} stm r1!, {r2,r3,r7} add r1, sp, 0x28 mov r0, sp movs r2, 0x28 bl memcpy ldr r0, [sp, 0x68] str r0, [sp, 0x18] cmp r6, 0 beq _0800E50C cmp r5, r4 beq _0800E516 str r5, [sp, 0x14] lsls r0, r5, 2 add r0, r8 ldr r0, [r0] b _0800E514 .align 2, 0 _0800E508: .4byte gUnknown_80B9C60 _0800E50C: movs r0, 0x3 str r0, [sp, 0x14] mov r1, r8 ldr r0, [r1, 0xC] _0800E514: str r0, [sp, 0x10] _0800E516: movs r0, 0x4 mov r1, sp bl sub_800E208 add sp, 0x50 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_800E49C thumb_func_start sub_800E52C sub_800E52C: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x1B0 adds r7, r0, 0 ldrh r0, [r7] cmp r0, 0x52 bne _0800E628 mov r1, sp ldr r0, _0800E618 ldm r0!, {r2-r4} stm r1!, {r2-r4} ldm r0!, {r2,r3,r5} stm r1!, {r2,r3,r5} ldm r0!, {r4,r5} stm r1!, {r4,r5} movs r0, 0 mov r10, r0 mov r9, r0 mov r8, sp add r6, sp, 0x20 adds r4, r6, 0 _0800E55C: ldrh r0, [r7] bl sub_800ECB8 movs r1, 0x2 ldrsh r0, [r0, r1] str r0, [r4] ldr r0, [r7, 0x10] str r0, [r4, 0x4] ldr r0, [r7, 0xC] str r0, [r4, 0x8] ldr r0, [r7, 0x4] str r0, [r4, 0xC] ldrh r0, [r4, 0xE] adds r0, 0x40 strh r0, [r4, 0xE] ldr r0, [r7, 0x8] str r0, [r4, 0x10] mov r2, r8 ldrh r0, [r2] ldrh r3, [r4, 0x10] adds r0, r3 strh r0, [r4, 0x10] ldrh r0, [r4, 0x12] subs r0, 0x40 ldrh r5, [r2, 0x2] adds r0, r5 strh r0, [r4, 0x12] movs r1, 0x2 ldrsh r0, [r7, r1] ldrh r1, [r7] bl sub_800E750 str r0, [r4, 0x14] ldr r0, _0800E61C str r0, [r4, 0x18] adds r1, r6, 0 adds r1, 0x1C ldr r0, _0800E620 ldm r0!, {r2,r3,r5} stm r1!, {r2,r3,r5} movs r0, 0x1 adds r1, r6, 0 bl sub_800E208 adds r5, r0, 0 bl sub_800E2C0 adds r1, r0, 0 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0800E5D4 ldr r2, _0800E624 movs r0, 0xD0 muls r1, r0 ldr r0, [r2] adds r0, r1 adds r0, 0xCC movs r1, 0x6 strh r1, [r0] _0800E5D4: mov r0, r9 cmp r0, 0 bne _0800E5DC mov r10, r5 _0800E5DC: movs r1, 0x4 add r8, r1 adds r4, 0x28 adds r6, 0x28 movs r2, 0x1 add r9, r2 mov r3, r9 cmp r3, 0x7 ble _0800E55C movs r4, 0x6 mov r9, r4 _0800E5F2: ldrh r0, [r7] bl sub_800ECB8 movs r5, 0x2 ldrsh r0, [r0, r5] bl sub_800ECA4 ldr r0, [r0, 0x4] bl sub_800F15C movs r0, 0x1 negs r0, r0 add r9, r0 mov r1, r9 cmp r1, 0 bge _0800E5F2 mov r0, r10 b _0800E67E .align 2, 0 _0800E618: .4byte gUnknown_80B9C7C _0800E61C: .4byte 0x0000ffff _0800E620: .4byte gUnknown_80B9C60 _0800E624: .4byte gUnknown_203B0CC _0800E628: add r6, sp, 0x160 add r5, sp, 0x188 ldrh r0, [r7] bl sub_800ECB8 movs r2, 0x2 ldrsh r0, [r0, r2] str r0, [r5] add r1, sp, 0x18C ldr r0, [r7, 0x10] str r0, [r1] add r1, sp, 0x190 ldr r0, [r7, 0xC] str r0, [r1] add r1, sp, 0x194 ldr r0, [r7, 0x4] str r0, [r1] add r1, sp, 0x198 ldr r0, [r7, 0x8] str r0, [r1] add r4, sp, 0x19C movs r3, 0x2 ldrsh r0, [r7, r3] ldrh r1, [r7] bl sub_800E750 str r0, [r4] add r1, sp, 0x1A0 ldr r0, _0800E690 str r0, [r1] add r1, sp, 0x1A4 ldr r0, _0800E694 ldm r0!, {r2-r4} stm r1!, {r2-r4} adds r0, r6, 0 adds r1, r5, 0 movs r2, 0x28 bl memcpy movs r0, 0x1 adds r1, r6, 0 bl sub_800E208 _0800E67E: add sp, 0x1B0 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0800E690: .4byte 0x0000ffff _0800E694: .4byte gUnknown_80B9C60 thumb_func_end sub_800E52C thumb_func_start sub_800E698 sub_800E698: push {r4,r5,lr} adds r4, r1, 0 adds r5, r2, 0 bl sub_800E2C0 adds r1, r0, 0 movs r3, 0x1 negs r3, r3 cmp r1, r3 beq _0800E6D2 ldr r2, _0800E6C8 movs r0, 0xD0 muls r1, r0 ldr r0, [r2] adds r1, r0, r1 ldr r0, [r4] str r0, [r1, 0x18] ldr r0, [r1, 0x20] cmp r0, r3 beq _0800E6CC ldr r0, [r5] str r0, [r1, 0x1C] b _0800E6D2 .align 2, 0 _0800E6C8: .4byte gUnknown_203B0CC _0800E6CC: movs r0, 0 strh r0, [r1, 0x1C] strh r0, [r1, 0x1E] _0800E6D2: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_800E698 thumb_func_start sub_800E6D8 sub_800E6D8: push {lr} bl sub_800E2C0 adds r1, r0, 0 movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _0800E6EC adds r0, r1, 0 b _0800E6F8 _0800E6EC: ldr r2, _0800E6FC movs r0, 0xD0 muls r1, r0 ldr r0, [r2] adds r0, r1 ldr r0, [r0, 0x20] _0800E6F8: pop {r1} bx r1 .align 2, 0 _0800E6FC: .4byte gUnknown_203B0CC thumb_func_end sub_800E6D8 thumb_func_start sub_800E700 sub_800E700: push {lr} lsls r0, 16 asrs r0, 16 bl sub_800E900 pop {r1} bx r1 thumb_func_end sub_800E700 thumb_func_start sub_800E710 sub_800E710: push {r4-r6,lr} lsls r0, 16 asrs r5, r0, 16 lsls r1, 16 lsrs r1, 16 adds r0, r1, 0 bl sub_800ECB8 adds r4, r0, 0 ldr r0, [r4, 0x20] bl sub_800ECD0 adds r1, r0, 0 movs r2, 0 ldr r0, [r4, 0x1C] cmp r2, r0 bge _0800E748 adds r3, r0, 0 _0800E734: movs r6, 0 ldrsh r0, [r1, r6] cmp r0, r5 bne _0800E740 ldr r0, [r1, 0x4] b _0800E74A _0800E740: adds r2, 0x1 adds r1, 0xC cmp r2, r3 blt _0800E734 _0800E748: ldr r0, [r4, 0x14] _0800E74A: pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_800E710 thumb_func_start sub_800E750 sub_800E750: push {r4-r6,lr} lsls r0, 16 asrs r5, r0, 16 lsls r1, 16 lsrs r1, 16 adds r0, r1, 0 bl sub_800ECB8 adds r4, r0, 0 ldr r0, [r4, 0x20] bl sub_800ECD0 adds r1, r0, 0 movs r2, 0 ldr r0, [r4, 0x1C] cmp r2, r0 bge _0800E788 adds r3, r0, 0 _0800E774: movs r6, 0 ldrsh r0, [r1, r6] cmp r0, r5 bne _0800E780 ldr r0, [r1, 0x4] b _0800E78A _0800E780: adds r2, 0x1 adds r1, 0xC cmp r2, r3 blt _0800E774 _0800E788: ldr r0, [r4, 0x14] _0800E78A: pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_800E750 thumb_func_start sub_800E790 sub_800E790: push {r4-r6,lr} lsls r0, 16 asrs r5, r0, 16 lsls r1, 16 lsrs r1, 16 adds r0, r1, 0 bl sub_800ECB8 adds r4, r0, 0 ldr r0, [r4, 0x20] bl sub_800ECD0 adds r1, r0, 0 movs r2, 0 ldr r0, [r4, 0x1C] cmp r2, r0 bge _0800E7C8 adds r3, r0, 0 _0800E7B4: movs r6, 0 ldrsh r0, [r1, r6] cmp r0, r5 bne _0800E7C0 ldr r0, [r1, 0x8] b _0800E7CA _0800E7C0: adds r2, 0x1 adds r1, 0xC cmp r2, r3 blt _0800E7B4 _0800E7C8: ldr r0, [r4, 0x18] _0800E7CA: pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_800E790 thumb_func_start sub_800E7D0 sub_800E7D0: push {r4-r6,lr} sub sp, 0x10 adds r4, r0, 0 movs r6, 0 ldrh r0, [r4] bl sub_800ECB8 movs r1, 0 ldrsh r0, [r0, r1] str r0, [sp] ldrh r0, [r4] bl sub_800ECB8 movs r1, 0x2 ldrsh r0, [r0, r1] str r0, [sp, 0x4] ldrh r0, [r4] bl sub_800ECB8 movs r1, 0x4 ldrsh r0, [r0, r1] str r0, [sp, 0x8] ldrh r0, [r4] bl sub_800ECB8 movs r1, 0x6 ldrsh r0, [r0, r1] str r0, [sp, 0xC] movs r5, 0 mov r4, sp b _0800E812 _0800E80E: adds r4, 0x4 adds r5, 0x1 _0800E812: cmp r5, 0x3 bgt _0800E82C ldr r0, [r4] bl sub_800ECA4 movs r1, 0 ldr r0, [r0] cmp r0, 0x4 bne _0800E826 movs r1, 0x1 _0800E826: adds r6, r1, 0 cmp r6, 0 beq _0800E80E _0800E82C: adds r0, r6, 0 add sp, 0x10 pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_800E7D0 thumb_func_start sub_800E838 sub_800E838: push {r4,r5,lr} sub sp, 0x10 adds r4, r0, 0 adds r5, r1, 0 ldrh r0, [r4] bl sub_800ECB8 movs r1, 0 ldrsh r0, [r0, r1] str r0, [sp] ldrh r0, [r4] bl sub_800ECB8 movs r1, 0x2 ldrsh r0, [r0, r1] str r0, [sp, 0x4] ldrh r0, [r4] bl sub_800ECB8 movs r1, 0x4 ldrsh r0, [r0, r1] str r0, [sp, 0x8] ldrh r0, [r4] bl sub_800ECB8 movs r1, 0x6 ldrsh r0, [r0, r1] str r0, [sp, 0xC] lsls r5, 2 mov r1, sp adds r0, r1, r5 ldr r0, [r0] bl sub_800ECA4 movs r1, 0 ldr r0, [r0] cmp r0, 0x4 bne _0800E886 movs r1, 0x1 _0800E886: adds r0, r1, 0 add sp, 0x10 pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_800E838 thumb_func_start sub_800E890 sub_800E890: push {r4,lr} adds r4, r0, 0 ldr r0, [r4] bl sub_800E900 str r0, [r4, 0x14] movs r0, 0x7 adds r1, r4, 0 bl sub_800E208 pop {r4} pop {r1} bx r1 thumb_func_end sub_800E890 thumb_func_start sub_800E8AC sub_800E8AC: push {r4-r7,lr} adds r4, r1, 0 adds r5, r2, 0 adds r6, r3, 0 ldr r7, [sp, 0x14] bl sub_800E2C0 adds r1, r0, 0 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0800E8F2 ldr r2, _0800E8F8 movs r0, 0xD0 muls r1, r0 ldr r0, [r2] adds r1, r0, r1 cmp r4, 0 beq _0800E8D6 ldr r0, [r4] str r0, [r1, 0x18] _0800E8D6: cmp r5, 0 beq _0800E8DE ldr r0, [r5] str r0, [r1, 0x1C] _0800E8DE: ldr r0, _0800E8FC cmp r6, r0 beq _0800E8E6 str r6, [r1, 0x24] _0800E8E6: cmp r7, 0 beq _0800E8F2 adds r1, 0x28 adds r0, r7, 0 ldm r0!, {r2-r4} stm r1!, {r2-r4} _0800E8F2: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800E8F8: .4byte gUnknown_203B0CC _0800E8FC: .4byte 0x0000ffff thumb_func_end sub_800E8AC thumb_func_start sub_800E900 sub_800E900: push {lr} bl sub_800ECA4 ldr r0, [r0, 0x1C] pop {r1} bx r1 thumb_func_end sub_800E900 thumb_func_start sub_800E90C sub_800E90C: push {r4-r7,lr} adds r5, r0, 0 movs r7, 0 ldr r0, _0800E938 ldr r4, [r0] movs r6, 0x1F _0800E918: ldr r1, [r4, 0x4] movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0800E960 ldr r0, [r4, 0x10] cmp r0, 0 bgt _0800E94A ldr r0, [r4, 0x34] cmp r0, 0x4 bne _0800E93C adds r0, r4, 0 adds r1, r5, 0 bl sub_800DE8C b _0800E944 .align 2, 0 _0800E938: .4byte gUnknown_203B0CC _0800E93C: adds r0, r4, 0 adds r1, r5, 0 bl sub_800DD0C _0800E944: ldr r0, [r4, 0x10] cmp r0, 0 ble _0800E94E _0800E94A: subs r0, 0x1 str r0, [r4, 0x10] _0800E94E: adds r0, r4, 0 bl sub_800DCD0 adds r0, r4, 0 adds r0, 0x54 ldrb r0, [r0] cmp r0, 0 bne _0800E960 movs r7, 0x1 _0800E960: subs r6, 0x1 adds r4, 0xD0 cmp r6, 0 bge _0800E918 adds r0, r7, 0 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_800E90C thumb_func_start sub_800E970 sub_800E970: push {r4,r5,lr} ldr r0, _0800E9A4 ldr r4, [r0] movs r5, 0x1F _0800E978: ldr r1, [r4, 0x4] movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0800E994 ldr r0, [r4, 0x10] cmp r0, 0 bgt _0800E994 ldr r0, [r4, 0x34] cmp r0, 0x4 beq _0800E994 adds r0, r4, 0 bl sub_800DE38 _0800E994: subs r5, 0x1 adds r4, 0xD0 cmp r5, 0 bge _0800E978 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800E9A4: .4byte gUnknown_203B0CC thumb_func_end sub_800E970 thumb_func_start sub_800E9A8 sub_800E9A8: push {lr} adds r3, r0, 0 movs r0, 0x1 negs r0, r0 cmp r3, r0 beq _0800E9DC ldr r0, _0800E9D0 ldr r1, [r0] movs r2, 0 _0800E9BA: ldr r0, [r1, 0x4] cmp r0, r3 bne _0800E9D4 adds r0, r1, 0 adds r0, 0x54 ldrb r0, [r0] cmp r0, 0 bne _0800E9DC movs r0, 0x1 b _0800E9DE .align 2, 0 _0800E9D0: .4byte gUnknown_203B0CC _0800E9D4: adds r2, 0x1 adds r1, 0xD0 cmp r2, 0x1F ble _0800E9BA _0800E9DC: movs r0, 0 _0800E9DE: pop {r1} bx r1 thumb_func_end sub_800E9A8 thumb_func_start sub_800E9E4 sub_800E9E4: push {lr} bl sub_800E2C0 movs r1, 0x1 negs r1, r1 cmp r0, r1 bne _0800E9F6 movs r0, 0 b _0800E9F8 _0800E9F6: movs r0, 0x1 _0800E9F8: pop {r1} bx r1 thumb_func_end sub_800E9E4 thumb_func_start sub_800E9FC sub_800E9FC: push {r4,lr} lsls r0, 24 lsrs r3, r0, 24 ldr r0, _0800EA38 ldr r1, [r0] movs r2, 0 movs r4, 0x1 negs r4, r4 _0800EA0C: ldr r0, [r1, 0x4] cmp r0, r4 beq _0800EA20 cmp r3, 0 bne _0800EA3C adds r0, r1, 0 adds r0, 0x54 ldrb r0, [r0] cmp r0, 0 beq _0800EA3C _0800EA20: adds r2, 0x1 adds r1, 0xD0 cmp r2, 0x1F ble _0800EA0C bl sub_800EC74 lsls r0, 24 cmp r0, 0 bne _0800EA3C movs r0, 0 b _0800EA3E .align 2, 0 _0800EA38: .4byte gUnknown_203B0CC _0800EA3C: movs r0, 0x1 _0800EA3E: pop {r4} pop {r1} bx r1 thumb_func_end sub_800E9FC thumb_func_start sub_800EA44 sub_800EA44: push {r4-r6,lr} lsls r0, 16 asrs r5, r0, 16 lsls r1, 16 lsrs r1, 16 adds r0, r1, 0 bl sub_800ECB8 adds r4, r0, 0 ldr r0, [r4, 0x20] bl sub_800ECD0 adds r1, r0, 0 movs r2, 0 ldr r0, [r4, 0x1C] cmp r2, r0 bge _0800EA7C adds r3, r0, 0 _0800EA68: movs r6, 0 ldrsh r0, [r1, r6] cmp r0, r5 bne _0800EA74 ldrb r0, [r1, 0x2] b _0800EA7E _0800EA74: adds r2, 0x1 adds r1, 0xC cmp r2, r3 blt _0800EA68 _0800EA7C: ldrb r0, [r4, 0x10] _0800EA7E: pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_800EA44 thumb_func_start sub_800EA84 sub_800EA84: push {r4,lr} sub sp, 0x50 adds r4, r0, 0 ldrh r0, [r4] bl sub_800ECB8 movs r1, 0 ldrsh r0, [r0, r1] str r0, [sp, 0x28] ldr r0, [r4, 0x10] str r0, [sp, 0x2C] ldr r0, [r4, 0xC] str r0, [sp, 0x30] ldr r0, [r4, 0x4] str r0, [sp, 0x34] ldr r0, [r4, 0x8] str r0, [sp, 0x38] ldrh r0, [r4] bl sub_800ECB8 movs r2, 0 ldrsh r0, [r0, r2] bl sub_800EBBC str r0, [sp, 0x3C] ldr r0, _0800EADC str r0, [sp, 0x40] add r1, sp, 0x44 ldr r0, _0800EAE0 ldm r0!, {r2-r4} stm r1!, {r2-r4} add r1, sp, 0x28 mov r0, sp movs r2, 0x28 bl memcpy movs r0, 0x5 mov r1, sp bl sub_800E208 add sp, 0x50 pop {r4} pop {r1} bx r1 .align 2, 0 _0800EADC: .4byte 0x0000ffff _0800EAE0: .4byte gUnknown_80B9C60 thumb_func_end sub_800EA84 thumb_func_start sub_800EAE4 sub_800EAE4: push {r4,r5,lr} adds r4, r1, 0 adds r5, r2, 0 bl sub_800E2C0 adds r1, r0, 0 movs r3, 0x1 negs r3, r3 cmp r1, r3 beq _0800EB1E ldr r2, _0800EB14 movs r0, 0xD0 muls r1, r0 ldr r0, [r2] adds r1, r0, r1 ldr r0, [r4] str r0, [r1, 0x18] ldr r0, [r1, 0x20] cmp r0, r3 beq _0800EB18 ldr r0, [r5] str r0, [r1, 0x1C] b _0800EB1E .align 2, 0 _0800EB14: .4byte gUnknown_203B0CC _0800EB18: movs r0, 0 strh r0, [r1, 0x1C] strh r0, [r1, 0x1E] _0800EB1E: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_800EAE4 thumb_func_start sub_800EB24 sub_800EB24: push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x20 adds r6, r1, 0 mov r8, r2 adds r5, r3, 0 ldr r4, [sp, 0x38] bl sub_800E2C0 adds r1, r0, 0 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0800EBB0 ldr r2, _0800EB8C movs r0, 0xD0 muls r1, r0 ldr r0, [r2] adds r2, r0, r1 adds r0, r2, 0 adds r0, 0xCC ldr r0, [r0] cmp r0, 0 bne _0800EB5A ldr r0, [r6] str r0, [r2, 0x18] _0800EB5A: ldr r0, [r2] cmp r0, 0x6 beq _0800EB94 ldr r0, [r2, 0x8] movs r1, 0x7 mov r12, r1 ands r0, r1 cmp r0, 0 bne _0800EB94 mov r1, sp ldr r0, _0800EB90 ldm r0!, {r3,r6,r7} stm r1!, {r3,r6,r7} ldm r0!, {r3,r6,r7} stm r1!, {r3,r6,r7} ldm r0!, {r3,r6} stm r1!, {r3,r6} mov r7, r12 ands r4, r7 lsls r0, r4, 2 add r0, sp ldr r0, [r0] adds r0, r5, r0 b _0800EB96 .align 2, 0 _0800EB8C: .4byte gUnknown_203B0CC _0800EB90: .4byte gUnknown_80B9C9C _0800EB94: adds r0, r5, 0x1 _0800EB96: str r0, [r2, 0x24] ldr r1, [r2, 0x20] movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0800EBAA mov r1, r8 ldr r0, [r1] str r0, [r2, 0x1C] b _0800EBB0 _0800EBAA: movs r0, 0 strh r0, [r2, 0x1C] strh r0, [r2, 0x1E] _0800EBB0: add sp, 0x20 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_800EB24 thumb_func_start sub_800EBBC sub_800EBBC: push {lr} bl sub_800ECA4 ldr r0, [r0, 0x1C] pop {r1} bx r1 thumb_func_end sub_800EBBC thumb_func_start sub_800EBC8 sub_800EBC8: push {r4,lr} sub sp, 0x50 adds r4, r0, 0 ldrh r0, [r4] bl sub_800ECB8 movs r1, 0x4 ldrsh r0, [r0, r1] str r0, [sp, 0x28] ldr r0, [r4, 0x10] str r0, [sp, 0x2C] ldr r0, [r4, 0xC] str r0, [sp, 0x30] ldr r0, [r4, 0x4] str r0, [sp, 0x34] ldr r0, [r4, 0x8] str r0, [sp, 0x38] ldrh r0, [r4] bl sub_800ECB8 movs r2, 0x4 ldrsh r0, [r0, r2] bl sub_800EC68 str r0, [sp, 0x3C] ldr r0, _0800EC20 str r0, [sp, 0x40] add r1, sp, 0x44 ldr r0, _0800EC24 ldm r0!, {r2-r4} stm r1!, {r2-r4} add r1, sp, 0x28 mov r0, sp movs r2, 0x28 bl memcpy movs r0, 0x6 mov r1, sp bl sub_800E208 add sp, 0x50 pop {r4} pop {r1} bx r1 .align 2, 0 _0800EC20: .4byte 0x0000ffff _0800EC24: .4byte gUnknown_80B9C60 thumb_func_end sub_800EBC8 thumb_func_start sub_800EC28 sub_800EC28: push {r4,r5,lr} adds r4, r1, 0 adds r5, r2, 0 bl sub_800E2C0 adds r1, r0, 0 movs r3, 0x1 negs r3, r3 cmp r1, r3 beq _0800EC62 ldr r2, _0800EC58 movs r0, 0xD0 muls r1, r0 ldr r0, [r2] adds r1, r0, r1 ldr r0, [r4] str r0, [r1, 0x18] ldr r0, [r1, 0x20] cmp r0, r3 beq _0800EC5C ldr r0, [r5] str r0, [r1, 0x1C] b _0800EC62 .align 2, 0 _0800EC58: .4byte gUnknown_203B0CC _0800EC5C: movs r0, 0 strh r0, [r1, 0x1C] strh r0, [r1, 0x1E] _0800EC62: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_800EC28 thumb_func_start sub_800EC68 sub_800EC68: push {lr} bl sub_800ECA4 ldr r0, [r0, 0x1C] pop {r1} bx r1 thumb_func_end sub_800EC68 thumb_func_start sub_800EC74 sub_800EC74: push {lr} movs r0, 0x1 bl sub_800F19C lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 thumb_func_end sub_800EC74 thumb_func_start sub_800EC84 sub_800EC84: push {lr} lsls r0, 16 lsrs r0, 16 bl sub_800ECB8 ldrb r0, [r0, 0x8] pop {r1} bx r1 thumb_func_end sub_800EC84 thumb_func_start sub_800EC94 sub_800EC94: push {lr} lsls r0, 16 lsrs r0, 16 bl sub_800ECB8 ldrb r0, [r0, 0x9] pop {r1} bx r1 thumb_func_end sub_800EC94 thumb_func_start sub_800ECA4 sub_800ECA4: adds r1, r0, 0 lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _0800ECB4 adds r0, r1 bx lr .align 2, 0 _0800ECB4: .4byte gUnknown_80B9CC4 thumb_func_end sub_800ECA4 thumb_func_start sub_800ECB8 sub_800ECB8: adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _0800ECCC adds r0, r1 bx lr .align 2, 0 _0800ECCC: .4byte gUnknown_80BDBC4 thumb_func_end sub_800ECB8 thumb_func_start sub_800ECD0 sub_800ECD0: adds r1, r0, 0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 ldr r1, _0800ECE0 adds r0, r1 bx lr .align 2, 0 _0800ECE0: .4byte gUnknown_80C183C thumb_func_end sub_800ECD0 thumb_func_start sub_800ECE4 sub_800ECE4: lsls r0, 24 ldr r1, _0800ECF4 lsrs r0, 23 adds r0, r1 movs r1, 0 ldrsh r0, [r0, r1] bx lr .align 2, 0 _0800ECF4: .4byte gUnknown_80CE73C thumb_func_end sub_800ECE4 thumb_func_start sub_800ECF8 sub_800ECF8: lsls r0, 24 ldr r1, _0800ED08 lsrs r0, 22 adds r0, r1 movs r1, 0 ldrsh r0, [r0, r1] bx lr .align 2, 0 _0800ED08: .4byte gUnknown_80CE37C thumb_func_end sub_800ECF8 thumb_func_start sub_800ED0C sub_800ED0C: lsls r0, 24 ldr r1, _0800ED1C lsrs r0, 22 adds r0, r1 movs r1, 0x2 ldrsh r0, [r0, r1] bx lr .align 2, 0 _0800ED1C: .4byte gUnknown_80CE37C thumb_func_end sub_800ED0C thumb_func_start sub_800ED20 sub_800ED20: lsls r0, 16 lsrs r0, 16 ldr r2, _0800ED34 lsls r1, r0, 3 adds r1, r0 lsls r1, 2 adds r2, 0xC adds r1, r2 ldr r0, [r1] bx lr .align 2, 0 _0800ED34: .4byte gUnknown_80BDBC4 thumb_func_end sub_800ED20 thumb_func_start sub_800ED38 sub_800ED38: push {r4,r5,lr} adds r5, r0, 0 ldr r4, _0800ED60 ldr r0, [r4] cmp r0, 0 bne _0800ED54 movs r0, 0x4C movs r1, 0xB bl MemoryAlloc str r0, [r4] movs r1, 0x4C bl MemoryClear8 _0800ED54: ldr r0, [r4] str r5, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800ED60: .4byte gUnknown_203B0D0 thumb_func_end sub_800ED38 thumb_func_start sub_800ED64 sub_800ED64: push {r4,lr} ldr r4, _0800ED7C ldr r0, [r4] cmp r0, 0 beq _0800ED76 bl MemoryFree movs r0, 0 str r0, [r4] _0800ED76: pop {r4} pop {r0} bx r0 .align 2, 0 _0800ED7C: .4byte gUnknown_203B0D0 thumb_func_end sub_800ED64 thumb_func_start sub_800ED80 sub_800ED80: push {r4,lr} ldr r2, _0800EDAC ldr r1, [r2] movs r0, 0 str r0, [r1] adds r4, r2, 0 movs r3, 0 movs r2, 0x4 movs r1, 0x1 _0800ED92: ldr r0, [r4] adds r0, r2 str r3, [r0] str r3, [r0, 0x4] str r3, [r0, 0x8] adds r2, 0x24 subs r1, 0x1 cmp r1, 0 bge _0800ED92 pop {r4} pop {r0} bx r0 .align 2, 0 _0800EDAC: .4byte gUnknown_203B0D0 thumb_func_end sub_800ED80 thumb_func_start sub_800EDB0 sub_800EDB0: push {r4,r5,lr} adds r4, r0, 0 movs r3, 0 ldr r5, _0800EDDC movs r2, 0 _0800EDBA: ldr r1, [r5] adds r0, r1, 0x4 adds r0, r2 ldr r0, [r0] cmp r0, 0 bne _0800EDE0 adds r1, r2 adds r1, 0x4 adds r0, r4, 0 ldm r0!, {r2-r4} stm r1!, {r2-r4} ldm r0!, {r2-r4} stm r1!, {r2-r4} ldm r0!, {r2-r4} stm r1!, {r2-r4} movs r0, 0x1 b _0800EDEA .align 2, 0 _0800EDDC: .4byte gUnknown_203B0D0 _0800EDE0: adds r2, 0x24 adds r3, 0x1 cmp r3, 0x1 ble _0800EDBA movs r0, 0 _0800EDEA: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_800EDB0 thumb_func_start sub_800EDF0 sub_800EDF0: push {r4,lr} sub sp, 0x24 adds r4, r1, 0 cmp r0, 0 beq _0800EE00 cmp r0, 0x1 beq _0800EE1A b _0800EE44 _0800EE00: movs r0, 0x3 str r0, [sp] movs r0, 0xE str r0, [sp, 0xC] movs r1, 0x1 negs r1, r1 str r1, [sp, 0x10] movs r0, 0xDC lsls r0, 2 str r0, [sp, 0x18] movs r0, 0x1F str r0, [sp, 0x1C] b _0800EE40 _0800EE1A: movs r0, 0x4 str r0, [sp] movs r0, 0xE str r0, [sp, 0xC] movs r0, 0xF0 lsls r0, 4 str r0, [sp, 0x10] movs r0, 0x1 negs r0, r0 str r0, [sp, 0x18] str r0, [sp, 0x1C] bl sub_8000728 movs r2, 0x2 eors r0, r2 negs r1, r0 orrs r1, r0 asrs r1, 31 ands r1, r2 _0800EE40: str r1, [sp, 0x14] str r4, [sp, 0x4] _0800EE44: ldr r0, [r4, 0x4] str r0, [sp, 0x8] movs r0, 0 str r0, [sp, 0x20] mov r0, sp bl sub_800EDB0 add sp, 0x24 pop {r4} pop {r0} bx r0 thumb_func_end sub_800EDF0 thumb_func_start sub_800EE5C sub_800EE5C: push {r4-r6,lr} adds r4, r0, 0 bl sub_800ECA4 adds r6, r0, 0 cmp r4, 0 beq _0800EEC2 ldr r2, [r6] subs r0, r2, 0x1 cmp r0, 0x1 bls _0800EEC2 ldr r1, [r6, 0x4] adds r0, r2, 0 bl sub_800F1C0 adds r5, r0, 0 cmp r5, 0 beq _0800EEC2 ldr r0, [r6] ldr r1, [r6, 0x4] bl sub_800F0F4 adds r4, r0, 0 movs r0, 0x1 negs r0, r0 cmp r4, r0 bne _0800EE9A adds r0, r5, 0 bl sub_800F204 b _0800EEC2 _0800EE9A: movs r0, 0x2 negs r0, r0 cmp r4, r0 beq _0800EEB6 adds r0, r4, 0 adds r1, r5, 0 adds r2, r6, 0 bl sub_800F13C adds r0, r4, 0 adds r1, r5, 0 bl sub_800EDF0 b _0800EEBC _0800EEB6: adds r0, r5, 0 bl sub_800F204 _0800EEBC: ldr r0, [r6, 0x4] bl sub_800F15C _0800EEC2: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_800EE5C thumb_func_start sub_800EEC8 sub_800EEC8: push {lr} lsls r0, 16 lsrs r0, 16 bl sub_800ECB8 movs r1, 0 ldrsh r0, [r0, r1] bl sub_800EE5C pop {r0} bx r0 thumb_func_end sub_800EEC8 thumb_func_start sub_800EEE0 sub_800EEE0: push {lr} lsls r0, 16 lsrs r0, 16 bl sub_800ECB8 movs r1, 0x4 ldrsh r0, [r0, r1] bl sub_800EE5C pop {r0} bx r0 thumb_func_end sub_800EEE0 thumb_func_start sub_800EEF8 sub_800EEF8: push {lr} lsls r0, 16 lsrs r0, 16 bl sub_800ECB8 movs r1, 0x2 ldrsh r0, [r0, r1] bl sub_800EE5C pop {r0} bx r0 thumb_func_end sub_800EEF8 thumb_func_start sub_800EF10 sub_800EF10: push {lr} lsls r0, 16 lsrs r0, 16 bl sub_800ECB8 movs r1, 0x6 ldrsh r0, [r0, r1] bl sub_800EE5C pop {r0} bx r0 thumb_func_end sub_800EF10 thumb_func_start sub_800EF28 sub_800EF28: push {lr} lsls r0, 24 lsrs r0, 24 bl sub_800ECE4 lsls r0, 16 asrs r0, 16 bl sub_800EE5C pop {r0} bx r0 thumb_func_end sub_800EF28 thumb_func_start sub_800EF40 sub_800EF40: push {lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 cmp r1, 0 beq _0800EF52 bl sub_800ECF8 b _0800EF56 _0800EF52: bl sub_800ED0C _0800EF56: lsls r0, 16 asrs r0, 16 bl sub_800EE5C pop {r0} bx r0 thumb_func_end sub_800EF40 thumb_func_start sub_800EF64 sub_800EF64: push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, _0800EF9C mov r9, r0 movs r1, 0x4 mov r8, r1 movs r7, 0 movs r6, 0 movs r5, 0x1 _0800EF7A: mov r0, r9 ldr r1, [r0] adds r0, r1, 0x4 adds r0, r7 ldr r0, [r0] cmp r0, 0 beq _0800F01A mov r0, r8 adds r4, r1, r0 ldr r0, [r4] cmp r0, 0x3 beq _0800EFA0 cmp r0, 0x3 bls _0800F018 cmp r0, 0x4 beq _0800EFDA b _0800F018 .align 2, 0 _0800EF9C: .4byte gUnknown_203B0D0 _0800EFA0: ldr r0, [r4, 0x8] ldr r1, [r4, 0x18] bl sub_8005674 mov r1, r9 ldr r0, [r1] ldr r0, [r0] cmp r0, 0 beq _0800EFCA cmp r0, 0x1 bne _0800F00C ldr r0, [r4, 0x8] ldr r1, [r0, 0x18] ldr r0, [r4, 0xC] adds r0, 0x10 lsls r0, 20 lsrs r0, 16 movs r2, 0x10 bl sub_809971C b _0800F00C _0800EFCA: ldr r0, [r4, 0xC] ldr r1, [r4, 0x8] ldr r1, [r1, 0x18] ldr r2, [r4, 0x1C] ldr r3, [r4, 0x20] bl sub_8005770 b _0800F00C _0800EFDA: bl sub_8000728 cmp r0, 0x1 bne _0800F000 movs r0, 0 movs r1, 0x1 bl sub_800CD64 movs r0, 0 bl sub_8052210 movs r0, 0x5 movs r1, 0 bl sub_803EAF0 bl sub_800CB20 bl xxx_call_update_bg_vram _0800F000: ldr r0, [r4, 0x8] ldr r1, [r4, 0xC] ldr r2, [r4, 0x10] ldr r3, [r4, 0x14] bl sub_8009A1C _0800F00C: ldr r0, [r4, 0x4] cmp r0, 0 beq _0800F018 bl sub_800F204 str r6, [r4, 0x4] _0800F018: str r6, [r4] _0800F01A: movs r0, 0x24 add r8, r0 adds r7, 0x24 subs r5, 0x1 cmp r5, 0 bge _0800EF7A pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_800EF64 thumb_func_start sub_800F034 sub_800F034: push {r4-r6,lr} ldr r4, _0800F074 ldr r0, [r4] cmp r0, 0 bne _0800F04E movs r0, 0x10 movs r1, 0xB bl MemoryAlloc str r0, [r4] movs r1, 0x10 bl MemoryClear8 _0800F04E: movs r3, 0 adds r6, r4, 0 movs r5, 0x1 negs r5, r5 movs r4, 0 _0800F058: ldr r0, [r6] lsls r2, r3, 3 adds r1, r0, r2 str r5, [r1] adds r0, 0x4 adds r0, r2 str r4, [r0] adds r3, 0x1 cmp r3, 0x1 ble _0800F058 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800F074: .4byte gUnknown_203B0D4 thumb_func_end sub_800F034 thumb_func_start sub_800F078 sub_800F078: push {r4,lr} ldr r4, _0800F090 ldr r0, [r4] cmp r0, 0 beq _0800F08A bl MemoryFree movs r0, 0 str r0, [r4] _0800F08A: pop {r4} pop {r0} bx r0 .align 2, 0 _0800F090: .4byte gUnknown_203B0D4 thumb_func_end sub_800F078 thumb_func_start sub_800F094 sub_800F094: push {r4-r6,lr} movs r3, 0 ldr r6, _0800F0BC movs r5, 0x1 negs r5, r5 movs r4, 0 _0800F0A0: ldr r0, [r6] lsls r2, r3, 3 adds r1, r0, r2 str r5, [r1] adds r0, 0x4 adds r0, r2 str r4, [r0] adds r3, 0x1 cmp r3, 0x1 ble _0800F0A0 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800F0BC: .4byte gUnknown_203B0D4 thumb_func_end sub_800F094 thumb_func_start sub_800F0C0 sub_800F0C0: push {lr} cmp r0, 0x3 bne _0800F0D8 ldr r0, _0800F0D4 ldr r0, [r0] ldr r0, [r0] cmp r0, r1 bne _0800F0EC movs r0, 0 b _0800F0F0 .align 2, 0 _0800F0D4: .4byte gUnknown_203B0D4 _0800F0D8: ldr r0, _0800F0E8 ldr r0, [r0] ldr r0, [r0, 0x8] cmp r0, r1 bne _0800F0EC movs r0, 0x1 b _0800F0F0 .align 2, 0 _0800F0E8: .4byte gUnknown_203B0D4 _0800F0EC: movs r0, 0x3 negs r0, r0 _0800F0F0: pop {r1} bx r1 thumb_func_end sub_800F0C0 thumb_func_start sub_800F0F4 sub_800F0F4: push {lr} cmp r0, 0x3 bne _0800F114 ldr r0, _0800F110 ldr r2, [r0] ldr r0, [r2] cmp r0, r1 beq _0800F11E ldr r0, [r2, 0x4] cmp r0, 0 bne _0800F132 movs r0, 0 b _0800F136 .align 2, 0 _0800F110: .4byte gUnknown_203B0D4 _0800F114: ldr r0, _0800F124 ldr r2, [r0] ldr r0, [r2, 0x8] cmp r0, r1 bne _0800F128 _0800F11E: movs r0, 0x2 negs r0, r0 b _0800F136 .align 2, 0 _0800F124: .4byte gUnknown_203B0D4 _0800F128: ldr r0, [r2, 0xC] cmp r0, 0 bne _0800F132 movs r0, 0x1 b _0800F136 _0800F132: movs r0, 0x1 negs r0, r0 _0800F136: pop {r1} bx r1 thumb_func_end sub_800F0F4 thumb_func_start sub_800F13C sub_800F13C: push {lr} ldr r1, _0800F158 ldr r3, [r1] lsls r1, r0, 3 adds r0, r3, 0x4 adds r0, r1 ldr r0, [r0] cmp r0, 0 bne _0800F154 adds r1, r3, r1 ldr r0, [r2, 0x4] str r0, [r1] _0800F154: pop {r0} bx r0 .align 2, 0 _0800F158: .4byte gUnknown_203B0D4 thumb_func_end sub_800F13C thumb_func_start sub_800F15C sub_800F15C: push {r4,r5,lr} adds r4, r0, 0 movs r3, 0 ldr r5, _0800F17C _0800F164: ldr r1, [r5] lsls r2, r3, 3 adds r0, r1, r2 ldr r0, [r0] cmp r0, r4 bne _0800F180 adds r1, 0x4 adds r1, r2 ldr r0, [r1] adds r0, 0x1 str r0, [r1] b _0800F186 .align 2, 0 _0800F17C: .4byte gUnknown_203B0D4 _0800F180: adds r3, 0x1 cmp r3, 0x1 ble _0800F164 _0800F186: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_800F15C thumb_func_start sub_800F18C sub_800F18C: ldr r1, _0800F198 lsls r0, 3 ldr r1, [r1] adds r1, r0 adds r0, r1, 0 bx lr .align 2, 0 _0800F198: .4byte gUnknown_203B0D4 thumb_func_end sub_800F18C thumb_func_start sub_800F19C sub_800F19C: push {lr} ldr r1, _0800F1B4 ldr r1, [r1] lsls r0, 3 adds r1, 0x4 adds r1, r0 ldr r0, [r1] cmp r0, 0 beq _0800F1B8 movs r0, 0x1 b _0800F1BA .align 2, 0 _0800F1B4: .4byte gUnknown_203B0D4 _0800F1B8: movs r0, 0 _0800F1BA: pop {r1} bx r1 thumb_func_end sub_800F19C thumb_func_start sub_800F1C0 sub_800F1C0: push {lr} sub sp, 0x8 adds r2, r1, 0 cmp r0, 0x1 bcc _0800F1EC cmp r0, 0x3 bls _0800F1D4 cmp r0, 0x4 beq _0800F1E4 b _0800F1EC _0800F1D4: ldr r1, _0800F1E0 mov r0, sp bl sprintf b _0800F1EC .align 2, 0 _0800F1E0: .4byte gUnknown_80CE77C _0800F1E4: ldr r1, _0800F1FC mov r0, sp bl sprintf _0800F1EC: ldr r1, _0800F200 mov r0, sp bl Call_OpenFileAndGetFileDataPtr add sp, 0x8 pop {r1} bx r1 .align 2, 0 _0800F1FC: .4byte gUnknown_80CE788 _0800F200: .4byte gEffectFileArchive thumb_func_end sub_800F1C0 thumb_func_start sub_800F204 sub_800F204: push {lr} bl CloseFile pop {r0} bx r0 thumb_func_end sub_800F204 thumb_func_start GetDungeonPokemonSprite @ struct DungeonPokemonSprite *GetDungeonPokemonSprite(int id) GetDungeonPokemonSprite: push {r4,lr} adds r4, r0, 0 movs r3, 0 ldr r0, _0800F230 ldr r0, [r0] adds r1, r0, 0x4 adds r2, r0, 0 adds r2, 0x8 _0800F220: ldrb r0, [r1] cmp r0, 0 beq _0800F234 ldr r0, [r2] cmp r0, r4 bne _0800F234 adds r0, r1, 0 b _0800F240 .align 2, 0 _0800F230: .4byte gDungeonPokemonSprites _0800F234: adds r1, 0x40 adds r2, 0x40 adds r3, 0x1 cmp r3, 0x15 ble _0800F220 movs r0, 0 _0800F240: pop {r4} pop {r1} bx r1 thumb_func_end GetDungeonPokemonSprite thumb_func_start NewDungeonPokemonSprite @ struct DungeonPokemonSprite *NewDungeonPokemonSprite(void) NewDungeonPokemonSprite: push {lr} movs r2, 0 ldr r0, _0800F25C ldr r0, [r0] adds r1, r0, 0x4 _0800F252: ldrb r0, [r1] cmp r0, 0 bne _0800F260 adds r0, r1, 0 b _0800F26A .align 2, 0 _0800F25C: .4byte gDungeonPokemonSprites _0800F260: adds r1, 0x40 adds r2, 0x1 cmp r2, 0x15 ble _0800F252 movs r0, 0 _0800F26A: pop {r1} bx r1 thumb_func_end NewDungeonPokemonSprite thumb_func_start GetNextStatusSymbol @ u32 GetNextStatusSymbol(?, int select) @ The "select" parameter exists to differentiate between the two kinds of @ status symbols that can appear at the same time. @ Only frozen falls under select = 1, every other symbol falls under select = 0 GetNextStatusSymbol: push {r4-r6,lr} adds r2, r0, 0 lsls r0, r1, 3 adds r0, 0x28 adds r3, r2, r0 movs r5, 0x80 lsls r5, 21 cmp r1, 0 bne _0800F284 movs r5, 0x1 _0800F284: movs r6, 0x80 lsls r6, 21 cmp r1, 0 bne _0800F290 movs r6, 0x80 lsls r6, 20 _0800F290: movs r4, 0x1 cmp r1, 0 bne _0800F298 movs r4, 0x1C _0800F298: ldr r0, [r2, 0xC] cmp r0, 0 bne _0800F2A4 b _0800F2CC _0800F2A0: adds r0, r1, 0 b _0800F2CE _0800F2A4: ldr r2, [r3] adds r1, r5, 0 cmp r2, 0 beq _0800F2AE adds r1, r2, 0 _0800F2AE: movs r2, 0 cmp r2, r4 bge _0800F2CC adds r3, r0, 0 _0800F2B6: lsls r1, 1 cmp r1, r6 bls _0800F2BE adds r1, r5, 0 _0800F2BE: adds r0, r3, 0 ands r0, r1 cmp r0, 0 bne _0800F2A0 adds r2, 0x1 cmp r2, r4 blt _0800F2B6 _0800F2CC: movs r0, 0 _0800F2CE: pop {r4-r6} pop {r1} bx r1 thumb_func_end GetNextStatusSymbol thumb_func_start StatusSymbolBitToIndex StatusSymbolBitToIndex: push {lr} movs r1, 0 cmp r0, 0 beq _0800F2E4 _0800F2DC: lsrs r0, 1 adds r1, 0x1 cmp r0, 0 bne _0800F2DC _0800F2E4: adds r0, r1, 0 pop {r1} bx r1 thumb_func_end StatusSymbolBitToIndex thumb_func_start sub_800F2EC sub_800F2EC: push {r4-r7,lr} sub sp, 0xC adds r5, r0, 0 adds r6, r1, 0 adds r7, r2, 0 lsls r0, r6, 3 adds r0, 0x28 adds r4, r5, r0 ldr r0, [r5, 0xC] cmp r0, 0 bne _0800F306 str r0, [r4] b _0800F35C _0800F306: ldr r0, [r4] cmp r0, 0 bne _0800F30E str r0, [r4, 0x4] _0800F30E: ldr r0, [r4, 0x4] cmp r0, 0 bgt _0800F32A adds r0, r5, 0 adds r1, r6, 0 bl GetNextStatusSymbol adds r1, r0, 0 ldr r0, [r4] cmp r0, r1 beq _0800F326 str r1, [r4] _0800F326: movs r0, 0x3C b _0800F32C _0800F32A: subs r0, 0x1 _0800F32C: str r0, [r4, 0x4] ldrb r0, [r5, 0x10] cmp r0, 0 beq _0800F35C ldr r0, [r4] cmp r0, 0 beq _0800F35C bl StatusSymbolBitToIndex adds r1, r0, 0 movs r2, 0x8 ldrsh r0, [r5, r2] adds r2, r5, 0 adds r2, 0x14 lsls r3, r6, 2 adds r3, 0x18 adds r3, r5, r3 str r7, [sp] ldrb r4, [r5, 0x11] str r4, [sp, 0x4] ldr r4, [r5, 0x4] str r4, [sp, 0x8] bl DrawStatusSprite _0800F35C: add sp, 0xC pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_800F2EC thumb_func_start DrawStatusSprite @ void DrawStatusSprite(?, int status, struct Position *pos, struct Position *pos_offset, struct Position *pos_screen, ?) DrawStatusSprite: push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 mov r12, r2 ldr r0, [sp, 0x20] mov r8, r0 ldr r4, [sp, 0x24] ldr r0, _0800F410 lsls r1, 3 adds r2, r1, r0 ldr r0, [r2] ldr r1, [r2, 0x4] str r0, [sp] str r1, [sp, 0x4] lsls r2, r0, 1 ldr r1, [sp] adds r2, r1 lsls r2, 3 ldr r0, _0800F414 adds r2, r0 ldr r0, [r2, 0x8] ldr r6, _0800F418 adds r7, r0, r6 movs r0, 0x3 ands r4, r0 lsls r4, 10 ldr r5, _0800F41C ldrh r1, [r5, 0x4] ldr r0, _0800F420 ands r0, r1 orrs r0, r4 strh r0, [r5, 0x4] mov r0, r12 movs r4, 0 ldrsh r1, [r0, r4] ldr r0, [r2] lsls r0, 2 subs r1, r0 mov r6, r8 movs r4, 0 ldrsh r0, [r6, r4] subs r1, r0 movs r6, 0 ldrsh r0, [r3, r6] adds r4, r1, r0 mov r0, r12 movs r6, 0x2 ldrsh r1, [r0, r6] ldr r0, [r2, 0x4] lsls r0, 2 subs r1, r0 mov r2, r8 movs r6, 0x2 ldrsh r0, [r2, r6] subs r1, r0 movs r2, 0x2 ldrsh r0, [r3, r2] adds r3, r1, r0 adds r6, r3, 0 subs r6, 0x10 movs r0, 0x20 negs r0, r0 cmp r4, r0 bge _0800F3E8 b _0800F5E4 _0800F3E8: cmp r3, r0 bge _0800F3EE b _0800F5E4 _0800F3EE: cmp r4, 0xEF ble _0800F3F4 b _0800F5E4 _0800F3F4: cmp r3, 0x9F ble _0800F3FA b _0800F5E4 _0800F3FA: ldr r0, [sp] subs r0, 0x1 cmp r0, 0xF bls _0800F404 b _0800F5A6 _0800F404: lsls r0, 2 ldr r1, _0800F424 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0800F410: .4byte gStatusSprites _0800F414: .4byte gStatusGraphics _0800F418: .4byte 0x0000032b _0800F41C: .4byte gUnknown_203B0DC _0800F420: .4byte 0x0000f3ff _0800F424: .4byte _0800F428 .align 2, 0 _0800F428: .4byte _0800F468 .4byte _0800F4CC .4byte _0800F4CC .4byte _0800F574 .4byte _0800F538 .4byte _0800F4CC .4byte _0800F4CC .4byte _0800F498 .4byte _0800F4CC .4byte _0800F4CC .4byte _0800F4CC .4byte _0800F468 .4byte _0800F4CC .4byte _0800F468 .4byte _0800F4CC .4byte _0800F500 _0800F468: ldrh r2, [r5] ldr r1, _0800F48C adds r0, r1, 0 ands r0, r2 strh r0, [r5] ldrh r0, [r5, 0x2] ands r1, r0 ldr r0, _0800F490 ands r4, r0 movs r0, 0xFE lsls r0, 8 ands r1, r0 orrs r1, r4 strh r1, [r5, 0x2] ldr r1, _0800F494 ands r1, r6 b _0800F59A .align 2, 0 _0800F48C: .4byte 0x00003fff _0800F490: .4byte 0x000001ff _0800F494: .4byte 0x00000fff _0800F498: movs r3, 0x80 lsls r3, 8 ldrh r2, [r5] ldr r1, _0800F4C0 adds r0, r1, 0 ands r0, r2 orrs r0, r3 strh r0, [r5] ldrh r0, [r5, 0x2] ands r1, r0 ldr r0, _0800F4C4 ands r4, r0 movs r0, 0xFE lsls r0, 8 ands r1, r0 orrs r1, r4 strh r1, [r5, 0x2] ldr r1, _0800F4C8 ands r1, r6 b _0800F59A .align 2, 0 _0800F4C0: .4byte 0x00003fff _0800F4C4: .4byte 0x000001ff _0800F4C8: .4byte 0x00000fff _0800F4CC: ldrh r2, [r5] ldr r1, _0800F4F4 adds r0, r1, 0 ands r0, r2 strh r0, [r5] movs r2, 0x80 lsls r2, 7 ldrh r0, [r5, 0x2] ands r1, r0 orrs r1, r2 ldr r0, _0800F4F8 ands r4, r0 movs r0, 0xFE lsls r0, 8 ands r1, r0 orrs r1, r4 strh r1, [r5, 0x2] ldr r1, _0800F4FC ands r1, r6 b _0800F59A .align 2, 0 _0800F4F4: .4byte 0x00003fff _0800F4F8: .4byte 0x000001ff _0800F4FC: .4byte 0x00000fff _0800F500: ldrh r2, [r5] ldr r1, _0800F52C adds r0, r1, 0 ands r0, r2 strh r0, [r5] movs r2, 0x80 lsls r2, 7 ldrh r0, [r5, 0x2] ands r1, r0 orrs r1, r2 adds r2, r4, 0 adds r2, 0x8 ldr r0, _0800F530 ands r2, r0 movs r0, 0xFE lsls r0, 8 ands r1, r0 orrs r1, r2 strh r1, [r5, 0x2] ldr r1, _0800F534 ands r1, r6 b _0800F59A .align 2, 0 _0800F52C: .4byte 0x00003fff _0800F530: .4byte 0x000001ff _0800F534: .4byte 0x00000fff _0800F538: movs r3, 0x80 lsls r3, 7 ldrh r2, [r5] ldr r1, _0800F568 adds r0, r1, 0 ands r0, r2 orrs r0, r3 strh r0, [r5] movs r2, 0x80 lsls r2, 8 ldrh r0, [r5, 0x2] ands r1, r0 orrs r1, r2 ldr r0, _0800F56C ands r4, r0 movs r0, 0xFE lsls r0, 8 ands r1, r0 orrs r1, r4 strh r1, [r5, 0x2] ldr r1, _0800F570 ands r1, r6 b _0800F59A .align 2, 0 _0800F568: .4byte 0x00003fff _0800F56C: .4byte 0x000001ff _0800F570: .4byte 0x00000fff _0800F574: ldrh r2, [r5] ldr r1, _0800F5F0 adds r0, r1, 0 ands r0, r2 strh r0, [r5] movs r2, 0x80 lsls r2, 8 ldrh r0, [r5, 0x2] ands r1, r0 orrs r1, r2 ldr r0, _0800F5F4 ands r4, r0 movs r0, 0xFE lsls r0, 8 ands r1, r0 orrs r1, r4 strh r1, [r5, 0x2] ldr r1, _0800F5F8 ands r1, r3 _0800F59A: lsls r1, 4 ldrh r2, [r5, 0x6] movs r0, 0xF ands r0, r2 orrs r0, r1 strh r0, [r5, 0x6] _0800F5A6: ldr r0, _0800F5FC ands r7, r0 ldrh r1, [r5, 0x4] movs r0, 0xFC lsls r0, 8 ands r0, r1 orrs r0, r7 movs r1, 0xF ldr r3, [sp, 0x4] ands r1, r3 lsls r1, 12 ldr r2, _0800F5F8 ands r0, r2 orrs r0, r1 strh r0, [r5, 0x4] mov r4, r12 movs r6, 0x2 ldrsh r1, [r4, r6] mov r2, r8 movs r3, 0x2 ldrsh r0, [r2, r3] subs r1, r0 lsrs r0, r1, 31 adds r1, r0 asrs r1, 1 adds r1, 0x1 adds r0, r5, 0 movs r2, 0 movs r3, 0 bl AddSprite _0800F5E4: add sp, 0x8 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800F5F0: .4byte 0x00003fff _0800F5F4: .4byte 0x000001ff _0800F5F8: .4byte 0x00000fff _0800F5FC: .4byte 0x000003ff thumb_func_end DrawStatusSprite thumb_func_start LoadStatusGraphics LoadStatusGraphics: push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r1, 24 lsrs r1, 24 mov r9, r1 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 ldr r0, _0800F660 adds r1, r0 ldr r7, [r1, 0x14] ldr r3, [r1, 0x10] ldr r2, [r1] ldr r0, [r1, 0x4] muls r0, r2 lsls r4, r0, 5 mov r8, r4 ldr r0, [r1, 0x8] ldr r1, _0800F664 adds r0, r1 lsls r5, r0, 5 adds r6, r5, 0 ldr r0, _0800F668 ldr r0, [r0] ldr r0, [r0] cmp r0, 0 bge _0800F63C adds r0, 0x3 _0800F63C: asrs r0, 2 adds r1, r3, 0 bl __modsi3 muls r0, r4 ldr r1, _0800F66C adds r0, r1 adds r1, r7, r0 mov r2, r9 cmp r2, 0 beq _0800F674 ldr r2, _0800F670 adds r0, r5, r2 adds r2, r4, 0 bl sub_80098BC b _0800F67E .align 2, 0 _0800F660: .4byte gStatusGraphics _0800F664: .4byte 0x0000032b _0800F668: .4byte gDungeonPokemonSprites _0800F66C: .4byte gStatusGraphics4bpp _0800F670: .4byte 0x06010000 _0800F674: ldr r2, _0800F68C adds r0, r6, r2 mov r2, r8 bl CpuCopy _0800F67E: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800F68C: .4byte 0x06010000 thumb_func_end LoadStatusGraphics thumb_func_start InitDungeonPokemonSprites InitDungeonPokemonSprites: push {r4,r5,lr} ldr r5, _0800F738 ldr r0, [r5] cmp r0, 0 bne _0800F6AC ldr r4, _0800F73C adds r0, r4, 0 movs r1, 0xC bl MemoryAlloc str r0, [r5] adds r1, r4, 0 bl MemoryClear8 _0800F6AC: ldr r1, [r5] movs r0, 0 str r0, [r1] movs r0, 0x1 movs r1, 0 bl LoadStatusGraphics movs r0, 0x2 movs r1, 0 bl LoadStatusGraphics movs r0, 0x3 movs r1, 0 bl LoadStatusGraphics movs r0, 0x4 movs r1, 0 bl LoadStatusGraphics movs r0, 0x5 movs r1, 0 bl LoadStatusGraphics movs r0, 0x6 movs r1, 0 bl LoadStatusGraphics movs r0, 0x7 movs r1, 0 bl LoadStatusGraphics movs r0, 0x8 movs r1, 0 bl LoadStatusGraphics movs r0, 0x9 movs r1, 0 bl LoadStatusGraphics movs r0, 0xA movs r1, 0 bl LoadStatusGraphics movs r0, 0xB movs r1, 0 bl LoadStatusGraphics movs r0, 0xC movs r1, 0 bl LoadStatusGraphics movs r0, 0xD movs r1, 0 bl LoadStatusGraphics movs r0, 0xE movs r1, 0 bl LoadStatusGraphics movs r0, 0xF movs r1, 0 bl LoadStatusGraphics movs r0, 0x10 movs r1, 0 bl LoadStatusGraphics pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800F738: .4byte gDungeonPokemonSprites _0800F73C: .4byte 0x00000584 thumb_func_end InitDungeonPokemonSprites thumb_func_start FreeDungeonPokemonSprites FreeDungeonPokemonSprites: push {r4,lr} ldr r4, _0800F758 ldr r0, [r4] cmp r0, 0 beq _0800F752 bl MemoryFree movs r0, 0 str r0, [r4] _0800F752: pop {r4} pop {r0} bx r0 .align 2, 0 _0800F758: .4byte gDungeonPokemonSprites thumb_func_end FreeDungeonPokemonSprites thumb_func_start UpdateDungeonPokemonSprite @ void UpdateDungeonPokemonSprite(int id, short species, int status, char visible) UpdateDungeonPokemonSprite: push {r4-r7,lr} adds r4, r0, 0 adds r7, r2, 0 lsls r1, 16 asrs r5, r1, 16 lsls r3, 24 lsrs r6, r3, 24 ldr r0, _0800F790 ldr r0, [r0] cmp r0, 0 beq _0800F788 adds r0, r4, 0 bl GetDungeonPokemonSprite cmp r0, 0 beq _0800F788 movs r1, 0 strh r5, [r0, 0x8] str r7, [r0, 0xC] strb r6, [r0, 0x10] adds r0, 0x38 strb r1, [r0] _0800F788: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800F790: .4byte gDungeonPokemonSprites thumb_func_end UpdateDungeonPokemonSprite thumb_func_start sub_800F794 sub_800F794: push {r4-r6,lr} adds r1, r0, 0 adds r4, r2, 0 adds r5, r3, 0 ldr r6, [sp, 0x10] ldr r0, _0800F7CC ldr r0, [r0] cmp r0, 0 beq _0800F7C6 adds r0, r1, 0 bl GetDungeonPokemonSprite adds r2, r0, 0 cmp r2, 0 beq _0800F7C6 adds r1, r2, 0 adds r1, 0x38 movs r0, 0x1 strb r0, [r1] strh r4, [r2, 0x3C] strh r5, [r2, 0x3E] ldr r0, [r6] str r0, [r2, 0x20] ldr r0, [r6, 0xC] str r0, [r2, 0x24] _0800F7C6: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800F7CC: .4byte gDungeonPokemonSprites thumb_func_end sub_800F794 thumb_func_start sub_800F7D0 sub_800F7D0: push {r4-r7,lr} mov r7, r8 push {r7} mov r8, r0 ldr r0, _0800F800 ldr r0, [r0] cmp r0, 0 beq _0800F8C0 ldr r1, [r0] adds r0, r1, 0 cmp r1, 0 bge _0800F7EA adds r0, r1, 0x3 _0800F7EA: asrs r0, 2 lsls r0, 2 subs r0, r1, r0 cmp r0, 0x1 beq _0800F82A cmp r0, 0x1 bgt _0800F804 cmp r0, 0 beq _0800F80E b _0800F888 .align 2, 0 _0800F800: .4byte gDungeonPokemonSprites _0800F804: cmp r0, 0x2 beq _0800F846 cmp r0, 0x3 beq _0800F868 b _0800F888 _0800F80E: movs r0, 0x1 movs r1, 0x1 bl LoadStatusGraphics movs r0, 0x2 movs r1, 0x1 bl LoadStatusGraphics movs r0, 0x3 movs r1, 0x1 bl LoadStatusGraphics movs r0, 0x4 b _0800F860 _0800F82A: movs r0, 0x5 movs r1, 0x1 bl LoadStatusGraphics movs r0, 0x6 movs r1, 0x1 bl LoadStatusGraphics movs r0, 0x7 movs r1, 0x1 bl LoadStatusGraphics movs r0, 0x8 b _0800F860 _0800F846: movs r0, 0x9 movs r1, 0x1 bl LoadStatusGraphics movs r0, 0xA movs r1, 0x1 bl LoadStatusGraphics movs r0, 0xB movs r1, 0x1 bl LoadStatusGraphics movs r0, 0xC _0800F860: movs r1, 0x1 bl LoadStatusGraphics b _0800F888 _0800F868: movs r0, 0xD movs r1, 0x1 bl LoadStatusGraphics movs r0, 0xE movs r1, 0x1 bl LoadStatusGraphics movs r0, 0xF movs r1, 0x1 bl LoadStatusGraphics movs r0, 0x10 movs r1, 0x1 bl LoadStatusGraphics _0800F888: movs r5, 0 movs r6, 0x4 _0800F88C: ldr r7, _0800F8CC ldr r4, [r7] lsls r0, r5, 6 adds r0, r4, r0 ldrb r0, [r0, 0x4] cmp r0, 0 beq _0800F8B0 adds r4, r6 adds r0, r4, 0 movs r1, 0 mov r2, r8 bl sub_800F2EC adds r0, r4, 0 movs r1, 0x1 mov r2, r8 bl sub_800F2EC _0800F8B0: adds r6, 0x40 adds r5, 0x1 cmp r5, 0x15 ble _0800F88C ldr r1, [r7] ldr r0, [r1] adds r0, 0x1 str r0, [r1] _0800F8C0: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800F8CC: .4byte gDungeonPokemonSprites thumb_func_end sub_800F7D0 thumb_func_start AddPokemonDungeonSprite @ void AddPokemonDungeonSprite(int id, short species, struct Position *pos, ?) AddPokemonDungeonSprite: push {r4-r7,lr} mov r7, r8 push {r7} adds r5, r0, 0 adds r7, r2, 0 mov r8, r3 lsls r1, 16 asrs r6, r1, 16 ldr r0, _0800F92C ldr r0, [r0] cmp r0, 0 beq _0800F920 adds r0, r5, 0 bl GetDungeonPokemonSprite adds r4, r0, 0 cmp r4, 0 bne _0800F920 bl NewDungeonPokemonSprite adds r1, r0, 0 cmp r1, 0 beq _0800F920 movs r0, 0x1 strb r0, [r1] str r5, [r1, 0x4] strh r6, [r1, 0x8] str r4, [r1, 0xC] ldr r0, [r7] str r0, [r1, 0x14] mov r0, r8 strb r0, [r1, 0x11] ldr r0, _0800F930 ldr r0, [r0] str r0, [r1, 0x1C] str r0, [r1, 0x18] str r4, [r1, 0x28] str r4, [r1, 0x2C] str r4, [r1, 0x30] str r4, [r1, 0x34] _0800F920: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800F92C: .4byte gDungeonPokemonSprites _0800F930: .4byte gUnknown_80D3564 thumb_func_end AddPokemonDungeonSprite thumb_func_start DeletePokemonDungeonSprite @ void DeletePokemonDungeonSprite(int id) DeletePokemonDungeonSprite: push {lr} adds r1, r0, 0 ldr r0, _0800F954 ldr r0, [r0] cmp r0, 0 beq _0800F950 adds r0, r1, 0 bl GetDungeonPokemonSprite cmp r0, 0 beq _0800F950 movs r1, 0x40 bl MemoryClear8 _0800F950: pop {r0} bx r0 .align 2, 0 _0800F954: .4byte gDungeonPokemonSprites thumb_func_end DeletePokemonDungeonSprite thumb_func_start sub_800F958 sub_800F958: push {r4-r7,lr} adds r4, r0, 0 adds r6, r1, 0 adds r5, r2, 0 adds r7, r3, 0 ldr r0, _0800F98C ldr r0, [r0] cmp r0, 0 beq _0800F984 adds r0, r4, 0 bl GetDungeonPokemonSprite adds r3, r0, 0 cmp r3, 0 beq _0800F984 ldr r0, [r6] str r0, [r3, 0x14] strb r7, [r3, 0x11] ldr r0, [r5] str r0, [r3, 0x18] ldr r0, [r5, 0xC] str r0, [r3, 0x1C] _0800F984: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800F98C: .4byte gDungeonPokemonSprites thumb_func_end sub_800F958 thumb_func_start sub_800F990 sub_800F990: push {r4-r7,lr} sub sp, 0x8 adds r6, r0, 0 ldr r4, _0800FA20 ldr r0, [r6, 0x8] str r0, [r4] ldr r1, _0800FA24 ldr r2, _0800FA28 adds r0, r2, 0 strh r0, [r1] movs r0, 0 movs r1, 0x14 bl sub_80095CC movs r0, 0x2 bl xxx_update_some_bg_tiles ldr r1, [r4] ldr r0, _0800FA2C adds r2, r1, r0 ldr r0, _0800FA30 str r0, [r2] ldrb r0, [r6, 0x5] ldr r2, _0800FA34 adds r1, r2 movs r5, 0 strb r0, [r1] bl sub_8010DA4 ldr r0, [r4] ldr r2, _0800FA38 adds r1, r0, r2 movs r2, 0x1 negs r2, r2 str r2, [r1] ldr r1, _0800FA3C adds r0, r1 str r2, [r0] ldrb r0, [r6, 0x4] bl sub_800FC5C ldr r0, [r4] ldr r2, _0800FA40 adds r1, r0, r2 adds r2, 0x4 adds r0, r2 ldr r0, [r0] str r0, [r1] ldr r1, _0800FA44 movs r0, 0xFF strb r0, [r1] ldr r0, _0800FA48 strb r5, [r0] bl sub_8011760 add r7, sp, 0x4 _0800FA00: movs r5, 0 str r5, [sp] str r5, [sp, 0x4] mov r0, sp adds r1, r7, 0 bl sub_800FAA8 cmp r0, 0x1 bne _0800FA4C ldr r0, [sp] ldr r1, [sp, 0x4] movs r2, 0x32 bl sub_80100C0 b _0800FA00 .align 2, 0 _0800FA20: .4byte gUnknown_203B0E4 _0800FA24: .4byte gUnknown_2026E4E _0800FA28: .4byte 0x00001010 _0800FA2C: .4byte 0x00004014 _0800FA30: .4byte gFriendAreaLocations _0800FA34: .4byte 0x00004a2c _0800FA38: .4byte 0x00004a28 _0800FA3C: .4byte 0x00004a1c _0800FA40: .4byte 0x00004a20 _0800FA44: .4byte gUnknown_202DE18 _0800FA48: .4byte gUnknown_202DE19 _0800FA4C: cmp r0, 0x2 bne _0800FA6C bl sub_800FB6C lsls r0, 24 cmp r0, 0 beq _0800FA00 ldr r0, [r4] ldr r1, _0800FA68 adds r0, r1 ldrb r0, [r0] strb r0, [r6, 0xC] b _0800FA92 .align 2, 0 _0800FA68: .4byte 0x00004df4 _0800FA6C: cmp r0, 0x3 bne _0800FA00 ldr r0, [r4] ldr r2, _0800FA8C adds r1, r0, r2 adds r2, 0x8 adds r0, r2 ldr r1, [r1] ldr r0, [r0] cmp r1, r0 beq _0800FA90 movs r1, 0 movs r2, 0xA bl sub_80100C0 b _0800FA00 .align 2, 0 _0800FA8C: .4byte 0x00004a18 _0800FA90: strb r5, [r6, 0xC] _0800FA92: bl sub_800FC28 bl sub_8010EF0 bl nullsub_16 add sp, 0x8 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_800F990 thumb_func_start sub_800FAA8 sub_800FAA8: push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} mov r8, r0 mov r9, r1 movs r5, 0 bl sub_8011300 bl sub_8011398 _0800FABE: bl sub_801169C bl sub_8010014 lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0xFF beq _0800FB1C ldr r6, _0800FB50 ldr r2, [r6] ldr r1, _0800FB54 adds r0, r2, r1 ldr r4, [r0] lsls r0, r4, 2 adds r0, r4 lsls r0, 4 adds r0, r2 lsls r1, r3, 1 ldr r7, _0800FB58 adds r0, r7 adds r1, r0, r1 movs r7, 0 ldrsh r0, [r1, r7] cmp r0, 0 blt _0800FB1C adds r1, r0, 0 lsls r0, r1, 2 adds r0, r1 lsls r0, 4 ldr r7, _0800FB5C adds r0, r7 adds r0, r2, r0 ldrb r0, [r0] cmp r0, 0 beq _0800FB1C movs r5, 0x1 mov r0, r8 str r1, [r0] mov r1, r9 str r3, [r1] ldr r1, [r6] ldr r2, _0800FB60 adds r0, r1, r2 str r3, [r0] ldr r7, _0800FB64 adds r1, r7 str r4, [r1] _0800FB1C: ldr r4, _0800FB68 ldrh r1, [r4, 0x2] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0800FB2E bl sub_80117D0 movs r5, 0x2 _0800FB2E: ldrh r1, [r4, 0x2] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0800FB3E bl sub_80117E4 movs r5, 0x3 _0800FB3E: cmp r5, 0 beq _0800FABE adds r0, r5, 0 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0800FB50: .4byte gUnknown_203B0E4 _0800FB54: .4byte 0x00004a18 _0800FB58: .4byte 0x0000401a _0800FB5C: .4byte 0x00004018 _0800FB60: .4byte 0x00004a28 _0800FB64: .4byte 0x00004a1c _0800FB68: .4byte gRealInputs thumb_func_end sub_800FAA8 thumb_func_start sub_800FB6C sub_800FB6C: push {r4-r7,lr} mov r7, r8 push {r7} movs r0, 0 mov r8, r0 bl sub_8011494 ldr r7, _0800FBE8 ldr r6, _0800FBEC _0800FB7E: ldr r5, [r7] ldr r1, _0800FBF0 adds r4, r5, r1 adds r0, r4, 0 bl AddMenuCursorSprite bl sub_801169C ldrh r1, [r6, 0x4] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0800FBA2 adds r0, r4, 0 bl MoveMenuCursorDown bl sub_80117F8 _0800FBA2: ldrh r1, [r6, 0x4] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0800FBB6 adds r0, r4, 0 bl MoveMenuCursorUp bl sub_80117F8 _0800FBB6: ldrh r1, [r6, 0x2] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0800FBCA ldr r2, _0800FBF4 adds r0, r5, r2 ldrb r0, [r0] cmp r0, 0 beq _0800FC00 _0800FBCA: bl sub_80117D0 ldr r1, [r7] movs r3, 0x18 ldrsh r2, [r4, r3] ldr r3, _0800FBF8 adds r0, r1, r3 adds r0, r2 ldrb r0, [r0] ldr r2, _0800FBFC adds r1, r2 strb r0, [r1] movs r3, 0x1 mov r8, r3 b _0800FC16 .align 2, 0 _0800FBE8: .4byte gUnknown_203B0E4 _0800FBEC: .4byte gRealInputs _0800FBF0: .4byte 0x00004dfc _0800FBF4: .4byte 0x00004e25 _0800FBF8: .4byte 0x00004dec _0800FBFC: .4byte 0x00004df4 _0800FC00: movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _0800FC12 ldr r1, _0800FC24 adds r0, r5, r1 ldrb r0, [r0] cmp r0, 0 beq _0800FB7E _0800FC12: bl sub_80117E4 _0800FC16: mov r0, r8 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0800FC24: .4byte 0x00004e26 thumb_func_end sub_800FB6C thumb_func_start sub_800FC28 sub_800FC28: push {r4,r5,lr} bl sub_8011168 bl sub_80117AC ldr r5, _0800FC54 movs r4, 0x3B _0800FC36: ldr r1, [r5] ldr r0, _0800FC58 adds r1, r0 ldr r0, [r1] subs r0, 0x2 str r0, [r1] bl sub_801169C subs r4, 0x1 cmp r4, 0 bge _0800FC36 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800FC54: .4byte gUnknown_203B0E4 _0800FC58: .4byte 0x00004dcc thumb_func_end sub_800FC28 thumb_func_start sub_800FC5C sub_800FC5C: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x40 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x14] movs r0, 0 str r0, [sp, 0x18] mov r8, r0 ldr r1, _0800FD1C mov r9, r1 ldr r2, _0800FD20 str r2, [sp, 0x38] _0800FC7C: movs r7, 0 movs r3, 0 mov r10, r3 mov r4, r9 ldr r0, [r4] ldr r1, [sp, 0x38] adds r6, r0, r1 ldr r2, _0800FD24 adds r0, r2 mov r3, r8 lsls r1, r3, 5 ldr r0, [r0] adds r2, r0, r1 adds r1, r6, 0x2 movs r5, 0x7 _0800FC9A: ldrh r0, [r1] ldr r4, _0800FD28 orrs r0, r4 strh r0, [r1] adds r1, 0x2 subs r5, 0x1 cmp r5, 0 bge _0800FC9A movs r5, 0 adds r1, r2, 0 adds r1, 0x8 _0800FCB0: adds r4, r1, r5 ldrb r0, [r4] str r1, [sp, 0x3C] bl sub_800FFE8 lsls r0, 24 ldr r1, [sp, 0x3C] cmp r0, 0 beq _0800FCE4 ldrb r0, [r4] ldr r7, [sp, 0x14] cmp r0, r7 bne _0800FCCE mov r2, r8 str r2, [sp, 0x18] _0800FCCE: cmp r0, 0 bne _0800FCE2 mov r3, r9 ldr r0, [r3] ldr r4, _0800FD2C adds r0, r4 mov r7, r8 str r7, [r0] movs r0, 0x1 mov r10, r0 _0800FCE2: movs r7, 0x1 _0800FCE4: adds r5, 0x1 cmp r5, 0x7 ble _0800FCB0 cmp r7, 0 beq _0800FD30 movs r5, 0 movs r4, 0x1 strb r4, [r6] adds r3, r6, 0 adds r3, 0x14 mov r1, r9 ldr r0, [r1] ldr r1, [r0, 0x8] movs r2, 0x1 mov r7, r10 cmp r7, 0 beq _0800FD08 movs r2, 0xC _0800FD08: movs r0, 0x40 str r0, [sp] str r5, [sp, 0x4] str r4, [sp, 0x8] adds r0, r3, 0 movs r3, 0 bl sub_80053AC b _0800FD32 .align 2, 0 _0800FD1C: .4byte gUnknown_203B0E4 _0800FD20: .4byte 0x00004018 _0800FD24: .4byte 0x00004014 _0800FD28: .4byte 0x0000ffff _0800FD2C: .4byte 0x00004a24 _0800FD30: strb r7, [r6] _0800FD32: ldr r0, [sp, 0x38] adds r0, 0x50 str r0, [sp, 0x38] movs r1, 0x1 add r8, r1 mov r2, r8 cmp r2, 0x1F ble _0800FC7C movs r3, 0 mov r8, r3 ldr r4, [sp, 0x18] lsls r4, 5 str r4, [sp, 0x34] _0800FD4C: mov r7, r8 lsls r0, r7, 2 add r0, r8 lsls r0, 4 ldr r1, _0800FEDC adds r0, r1 ldr r2, _0800FEE0 ldr r1, [r2] adds r3, r1, r0 ldr r4, _0800FEE4 adds r1, r4 lsls r2, r7, 5 ldr r0, [r1] adds r0, r2 str r0, [sp, 0x1C] ldrb r0, [r3] adds r7, 0x1 str r7, [sp, 0x28] cmp r0, 0 bne _0800FD76 b _0800FF56 _0800FD76: movs r5, 0 adds r3, 0x2 mov r10, r3 ldr r4, [sp, 0x1C] adds r4, 0x10 ldr r6, _0800FEE0 _0800FD82: lsls r0, r5, 1 mov r1, r10 adds r2, r1, r0 ldr r1, _0800FEE8 strh r1, [r2] adds r1, r4, r0 ldrh r3, [r1] movs r7, 0 ldrsh r0, [r1, r7] cmp r0, 0 blt _0800FDB0 adds r1, r0, 0 lsls r0, r1, 2 adds r0, r1 lsls r0, 4 ldr r1, _0800FEDC adds r0, r1 ldr r1, [r6] adds r1, r0 ldrb r0, [r1] cmp r0, 0 beq _0800FDB0 strh r3, [r2] _0800FDB0: adds r5, 0x1 cmp r5, 0x7 ble _0800FD82 ldr r3, _0800FEE0 ldr r2, [r3] ldr r4, _0800FEEC adds r0, r2, r4 ldr r1, [r0] ldr r7, _0800FEF0 adds r0, r2, r7 ldr r3, [r0] cmp r1, 0 blt _0800FDEC cmp r3, 0 blt _0800FDEC lsls r0, r3, 2 adds r0, r3 lsls r0, 4 ldr r4, _0800FEDC adds r0, r4 adds r0, r2, r0 ldrb r0, [r0] cmp r0, 0 beq _0800FDEC adds r1, 0x4 movs r0, 0x7 ands r1, r0 lsls r0, r1, 1 add r0, r10 strh r3, [r0] _0800FDEC: movs r5, 0 _0800FDEE: movs r7, 0x1 negs r7, r7 str r7, [sp, 0x20] ldr r0, _0800FEF4 str r0, [sp, 0x24] lsls r0, r5, 1 mov r2, r10 adds r1, r2, r0 movs r3, 0 ldrsh r1, [r1, r3] str r0, [sp, 0x30] adds r4, r5, 0x1 str r4, [sp, 0x2C] cmp r1, 0 blt _0800FE0E b _0800FF4E _0800FE0E: movs r6, 0 _0800FE10: lsls r0, r6, 2 adds r0, r6 lsls r0, 4 ldr r7, _0800FEDC adds r0, r7 ldr r2, _0800FEE0 ldr r1, [r2] adds r3, r1, r0 ldr r4, _0800FEE4 adds r1, r4 lsls r2, r6, 5 ldr r0, [r1] adds r2, r0, r2 adds r7, r6, 0x1 mov r9, r7 cmp r6, r8 bne _0800FE34 b _0800FF3A _0800FE34: ldrb r0, [r3] cmp r0, 0 bne _0800FE3C b _0800FF3A _0800FE3C: movs r1, 0x4 ldrsh r0, [r2, r1] ldr r3, [sp, 0x1C] movs r4, 0x4 ldrsh r1, [r3, r4] subs r0, r1 lsls r0, 8 str r0, [sp, 0xC] movs r7, 0x6 ldrsh r0, [r2, r7] movs r2, 0x6 ldrsh r1, [r3, r2] subs r0, r1 lsls r0, 8 str r0, [sp, 0x10] add r0, sp, 0xC bl sub_800A0B0 adds r2, r0, 0 ldr r0, [sp, 0xC] cmp r0, 0 bge _0800FE6A adds r0, 0x3 _0800FE6A: asrs r1, r0, 2 str r1, [sp, 0xC] ldr r0, [sp, 0x10] cmp r0, 0 bge _0800FE76 adds r0, 0x3 _0800FE76: asrs r0, 2 str r0, [sp, 0x10] cmp r1, 0 bge _0800FE80 adds r1, 0xFF _0800FE80: asrs r1, 8 str r1, [sp, 0xC] cmp r0, 0 bge _0800FE8A adds r0, 0xFF _0800FE8A: asrs r0, 8 str r0, [sp, 0x10] cmp r1, 0 bne _0800FE96 movs r0, 0x1 str r0, [sp, 0xC] _0800FE96: ldr r0, [sp, 0x10] cmp r0, 0 bne _0800FEA0 movs r0, 0x1 str r0, [sp, 0x10] _0800FEA0: movs r7, 0 cmp r5, 0x2 bne _0800FF04 ldr r1, _0800FEF8 ldr r4, _0800FEFC movs r3, 0x8 cmp r2, r1 ble _0800FEB8 ldr r0, _0800FF00 _0800FEB2: adds r2, r0 cmp r2, r1 bgt _0800FEB2 _0800FEB8: cmp r2, 0 bge _0800FEC6 movs r0, 0x80 lsls r0, 5 _0800FEC0: adds r2, r0 cmp r2, 0 blt _0800FEC0 _0800FEC6: adds r1, r3, r4 movs r3, 0 ldrsh r0, [r1, r3] cmp r0, r2 blt _0800FF20 movs r4, 0x2 ldrsh r0, [r1, r4] cmp r0, r2 ble _0800FF1C b _0800FF20 .align 2, 0 _0800FEDC: .4byte 0x00004018 _0800FEE0: .4byte gUnknown_203B0E4 _0800FEE4: .4byte 0x00004014 _0800FEE8: .4byte 0x0000ffff _0800FEEC: .4byte 0x00004a28 _0800FEF0: .4byte 0x00004a1c _0800FEF4: .4byte 0x000f423f _0800FEF8: .4byte 0x00000fff _0800FEFC: .4byte gUnknown_80D3EBC _0800FF00: .4byte 0xfffff000 _0800FF04: ldr r0, _0800FFC8 lsls r1, r5, 2 adds r1, r0 movs r3, 0 ldrsh r0, [r1, r3] cmp r0, r2 bgt _0800FF1C movs r4, 0x2 ldrsh r0, [r1, r4] cmp r0, r2 ble _0800FF1C movs r7, 0x1 _0800FF1C: cmp r7, 0 beq _0800FF3A _0800FF20: ldr r0, [sp, 0xC] adds r1, r0, 0 muls r1, r0 ldr r0, [sp, 0x10] adds r7, r0, 0 muls r7, r0 adds r0, r7, 0 adds r1, r0 ldr r0, [sp, 0x24] cmp r0, r1 ble _0800FF3A str r1, [sp, 0x24] str r6, [sp, 0x20] _0800FF3A: mov r6, r9 cmp r6, 0x1F bgt _0800FF42 b _0800FE10 _0800FF42: ldr r1, [sp, 0x20] cmp r1, 0 blt _0800FF4E ldr r0, [sp, 0x30] add r0, r10 strh r1, [r0] _0800FF4E: ldr r5, [sp, 0x2C] cmp r5, 0x7 bgt _0800FF56 b _0800FDEE _0800FF56: ldr r3, [sp, 0x28] mov r8, r3 cmp r3, 0x1F bgt _0800FF60 b _0800FD4C _0800FF60: ldr r4, _0800FFCC ldr r1, [r4] ldr r7, _0800FFD0 adds r0, r1, r7 ldr r1, [r1, 0xC] movs r2, 0 str r2, [sp] str r2, [sp, 0x4] movs r2, 0x1 str r2, [sp, 0x8] movs r2, 0 movs r3, 0 bl sub_80053AC ldr r2, [r4] ldr r1, _0800FFD4 adds r0, r2, r1 ldr r3, [sp, 0x18] str r3, [r0] ldr r4, _0800FFD8 adds r1, r2, r4 ldr r7, _0800FFDC adds r0, r2, r7 ldr r0, [r0] ldr r3, [sp, 0x34] adds r0, r3, r0 ldr r0, [r0, 0x4] str r0, [r1] ldrh r0, [r1] subs r0, 0x78 subs r4, 0x4 adds r1, r2, r4 strh r0, [r1] ldr r7, _0800FFE0 adds r0, r2, r7 ldrh r0, [r0] subs r0, 0x50 ldr r1, _0800FFE4 adds r2, r1 strh r0, [r2] bl sub_8011240 bl sub_80110B0 add sp, 0x40 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800FFC8: .4byte gUnknown_80D3EBC _0800FFCC: .4byte gUnknown_203B0E4 _0800FFD0: .4byte 0x00004c10 _0800FFD4: .4byte 0x00004a18 _0800FFD8: .4byte 0x00004dd8 _0800FFDC: .4byte 0x00004014 _0800FFE0: .4byte 0x00004dda _0800FFE4: .4byte 0x00004dd6 thumb_func_end sub_800FC5C thumb_func_start sub_800FFE8 sub_800FFE8: push {lr} lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 cmp r0, 0x39 bhi _08010004 cmp r0, 0 beq _0801000C ldr r0, _08010008 ldr r0, [r0] adds r0, r1 ldrb r0, [r0] cmp r0, 0 bne _0801000C _08010004: movs r0, 0 b _0801000E .align 2, 0 _08010008: .4byte gFriendAreas _0801000C: movs r0, 0x1 _0801000E: pop {r1} bx r1 thumb_func_end sub_800FFE8 thumb_func_start sub_8010014 sub_8010014: push {r4,r5,lr} sub sp, 0x20 ldr r1, _08010094 mov r0, sp movs r2, 0x10 bl memcpy add r4, sp, 0x10 ldr r1, _08010098 adds r0, r4, 0 movs r2, 0x10 bl memcpy movs r2, 0 ldr r0, _0801009C ldrh r3, [r0] movs r0, 0x80 lsls r0, 1 ands r0, r3 mov r5, sp cmp r0, 0 beq _08010042 adds r5, r4, 0 _08010042: adds r1, r3, 0 movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0801004E movs r2, 0x1 _0801004E: movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0801005A movs r0, 0x2 orrs r2, r0 _0801005A: movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08010066 movs r0, 0x4 orrs r2, r0 _08010066: movs r0, 0x20 ands r0, r3 cmp r0, 0 beq _08010072 movs r0, 0x8 orrs r2, r0 _08010072: ldr r3, _080100A0 adds r2, r5, r2 ldrb r1, [r2] ldrb r0, [r3] cmp r0, r1 bne _080100A8 ldr r1, _080100A4 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 bls _080100B0 ldrb r0, [r2] b _080100B2 .align 2, 0 _08010094: .4byte gUnknown_80D3EDC _08010098: .4byte gUnknown_80D3EEC _0801009C: .4byte gRealInputs _080100A0: .4byte gUnknown_202DE18 _080100A4: .4byte gUnknown_202DE19 _080100A8: strb r1, [r3] ldr r1, _080100BC movs r0, 0 strb r0, [r1] _080100B0: movs r0, 0xFF _080100B2: add sp, 0x20 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _080100BC: .4byte gUnknown_202DE19 thumb_func_end sub_8010014 thumb_func_start sub_80100C0 sub_80100C0: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x18 str r0, [sp, 0xC] mov r8, r2 ldr r4, _080101E0 ldr r2, [r4] ldr r3, _080101E4 adds r0, r2, r3 ldr r2, [r2, 0xC] movs r3, 0x7 ands r3, r1 movs r1, 0 str r1, [sp] str r1, [sp, 0x4] movs r1, 0x1 str r1, [sp, 0x8] adds r1, r2, 0 movs r2, 0 bl sub_80053AC bl sub_8011168 ldr r0, [r4] ldr r2, _080101E8 adds r1, r0, r2 ldr r1, [r1] ldr r3, _080101EC adds r0, r3 ldr r2, [r0] lsls r1, 5 adds r1, r2 ldr r1, [r1, 0x4] mov r9, r1 ldr r1, [sp, 0xC] lsls r0, r1, 5 adds r0, r2 ldr r0, [r0, 0x4] str r0, [sp, 0x10] bl sub_80117F8 movs r7, 0 cmp r7, r8 bge _0801018A ldr r2, [sp, 0x10] lsls r1, r2, 16 asrs r1, 16 mov r3, r9 lsls r0, r3, 16 asrs r0, 16 subs r1, r0 str r1, [sp, 0x14] movs r0, 0 mov r10, r0 _08010132: ldr r0, _080101E0 ldr r6, [r0] lsls r5, r7, 8 mov r0, r10 mov r1, r8 bl __divsi3 cmp r0, 0 bge _08010146 adds r0, 0xFF _08010146: asrs r0, 8 add r0, r9 ldr r2, _080101F0 adds r1, r6, r2 strh r0, [r1] ldr r3, [sp, 0x10] asrs r0, r3, 16 mov r1, r9 asrs r4, r1, 16 subs r0, r4 muls r0, r5 mov r1, r8 bl __divsi3 cmp r0, 0 bge _08010168 adds r0, 0xFF _08010168: asrs r0, 8 adds r0, r4 ldr r2, _080101F4 adds r1, r6, r2 strh r0, [r1] bl sub_8011240 bl sub_80110B0 bl sub_801169C ldr r3, [sp, 0x14] lsls r0, r3, 8 add r10, r0 adds r7, 0x1 cmp r7, r8 blt _08010132 _0801018A: ldr r4, _080101E0 ldr r0, [r4] ldr r2, _080101E8 adds r1, r0, r2 ldr r3, [sp, 0xC] str r3, [r1] ldr r1, _080101F0 adds r2, r0, r1 ldr r3, _080101EC adds r0, r3 ldr r1, [r0] ldr r3, [sp, 0xC] lsls r0, r3, 5 adds r0, r1 ldr r0, [r0, 0x4] str r0, [r2] bl sub_8011240 bl sub_80110B0 bl sub_801169C ldr r1, [r4] ldr r2, _080101E4 adds r0, r1, r2 ldr r1, [r1, 0xC] movs r2, 0 str r2, [sp] str r2, [sp, 0x4] movs r2, 0x1 str r2, [sp, 0x8] movs r2, 0 movs r3, 0 bl sub_80053AC add sp, 0x18 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080101E0: .4byte gUnknown_203B0E4 _080101E4: .4byte 0x00004c10 _080101E8: .4byte 0x00004a18 _080101EC: .4byte 0x00004014 _080101F0: .4byte 0x00004dd8 _080101F4: .4byte 0x00004dda thumb_func_end sub_80100C0 thumb_func_start sub_80101F8 sub_80101F8: push {lr} adds r3, r0, 0 lsls r1, 24 lsrs r1, 24 cmp r1, 0 bne _08010218 ldr r0, _08010214 adds r2, r3, 0 adds r2, 0x50 adds r1, r3, 0 movs r3, 0 bl xxx_format_string b _08010220 .align 2, 0 _08010214: .4byte gUnknown_80D3EFC _08010218: adds r0, r3, 0 movs r2, 0 bl sub_8092578 _08010220: pop {r0} bx r0 thumb_func_end sub_80101F8 thumb_func_start sub_8010224 sub_8010224: push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 movs r7, 0 ldr r0, _08010248 adds r4, r0, 0x4 adds r5, r0, 0 adds r5, 0x8 _08010234: movs r2, 0 adds r3, r5, 0 _08010238: adds r0, r3, r2 ldrb r0, [r0] cmp r0, r6 bne _0801024C ldrh r0, [r4] strh r0, [r1] ldrh r0, [r4, 0x2] b _08010260 .align 2, 0 _08010248: .4byte gFriendAreaLocations _0801024C: adds r2, 0x1 cmp r2, 0x7 ble _08010238 adds r4, 0x20 adds r5, 0x20 adds r7, 0x1 cmp r7, 0x1F ble _08010234 movs r0, 0 strh r0, [r1] _08010260: strh r0, [r1, 0x2] pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_8010224 thumb_func_start sub_8010268 sub_8010268: push {r4-r6,lr} ldr r4, _080102D4 add sp, r4 adds r5, r0, 0 ldr r1, _080102D8 adds r0, 0xB0 ldr r0, [r0] str r0, [r1] ldr r1, _080102DC ldr r2, _080102E0 adds r0, r2, 0 strh r0, [r1] movs r0, 0 movs r1, 0x14 bl sub_80095CC movs r0, 0x2 bl xxx_update_some_bg_tiles bl sub_801059C adds r0, r5, 0x4 bl sub_8010494 bl sub_801178C movs r4, 0x3B _0801029E: bl sub_8010960 subs r4, 0x1 cmp r4, 0 bge _0801029E ldrb r0, [r5, 0x4] ldrb r1, [r5, 0x8] bl sub_8010344 adds r0, r5, 0 adds r0, 0x8 bl sub_8010B74 adds r6, r5, 0 adds r6, 0x70 movs r4, 0x3B _080102BE: bl sub_8010960 subs r4, 0x1 cmp r4, 0 bge _080102BE ldrb r0, [r5, 0x14] cmp r0, 0 beq _080102E4 movs r0, 0x20 ldrsh r1, [r5, r0] b _080102E6 .align 2, 0 _080102D4: .4byte 0xfffffc14 _080102D8: .4byte gUnknown_203B0E8 _080102DC: .4byte gUnknown_2026E4E _080102E0: .4byte 0x00000a06 _080102E4: movs r1, 0 _080102E6: ldrb r0, [r5, 0x8] ldrb r3, [r6] movs r4, 0 str r4, [sp] add r2, sp, 0x4 bl sub_809034C cmp r0, 0 beq _0801031C cmp r0, 0x1 bne _0801030A add r0, sp, 0x4 bl sub_8010C10 adds r0, r5, 0 adds r0, 0xB4 strb r4, [r0] b _0801032C _0801030A: cmp r0, 0x2 bne _0801032C add r0, sp, 0x4 bl sub_8010C58 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 beq _08010326 _0801031C: adds r1, r5, 0 adds r1, 0xB4 movs r0, 0x1 strb r0, [r1] b _0801032C _08010326: adds r0, r5, 0 adds r0, 0xB4 strb r1, [r0] _0801032C: bl sub_801091C bl sub_801073C bl nullsub_16 movs r3, 0xFB lsls r3, 2 add sp, r3 pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_8010268 thumb_func_start sub_8010344 sub_8010344: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x1C lsls r0, 24 lsls r1, 24 ldr r2, _08010470 lsrs r0, 22 adds r0, r2 lsrs r1, 22 adds r1, r2 ldr r2, [r1] str r2, [sp, 0x14] movs r3, 0 ldrsh r5, [r1, r3] ldr r1, [r0] mov r9, r1 movs r2, 0 ldrsh r6, [r0, r2] subs r2, r5, r6 cmp r2, 0 bge _08010376 negs r2, r2 _08010376: ldr r3, [sp, 0x14] asrs r0, r3, 16 mov r3, r9 asrs r1, r3, 16 subs r4, r0, r1 adds r3, r4, 0 str r0, [sp, 0x18] mov r8, r1 cmp r4, 0 bge _0801038C negs r4, r4 _0801038C: cmp r4, r2 bge _08010392 adds r4, r2, 0 _08010392: lsrs r0, r4, 31 adds r0, r4, r0 asrs r4, r0, 1 subs r0, r6, r5 str r0, [sp, 0xC] str r3, [sp, 0x10] add r0, sp, 0xC bl sub_800A0B0 ldr r1, _08010474 adds r3, r0, r1 cmp r3, 0 bge _080103B0 ldr r2, _08010478 adds r3, r0, r2 _080103B0: asrs r3, 9 movs r0, 0x7 ands r3, r0 ldr r0, _0801047C ldr r1, [r0] ldr r2, _08010480 adds r0, r1, r2 ldr r2, _08010484 adds r1, r2 ldr r1, [r1] movs r2, 0 str r2, [sp] str r2, [sp, 0x4] movs r2, 0x1 str r2, [sp, 0x8] movs r2, 0 bl sub_80053AC movs r7, 0 cmp r7, r4 bge _08010448 mov r10, r5 _080103DC: ldr r0, _0801047C ldr r6, [r0] mov r3, r9 lsls r0, r3, 16 asrs r0, 16 mov r1, r10 subs r0, r1, r0 lsls r5, r7, 8 muls r0, r5 adds r1, r4, 0 bl __divsi3 cmp r0, 0 bge _080103FA adds r0, 0xFF _080103FA: asrs r0, 8 add r0, r9 ldr r2, _08010488 adds r1, r6, r2 strh r0, [r1] ldr r3, [sp, 0x18] mov r1, r8 subs r0, r3, r1 muls r0, r5 adds r1, r4, 0 bl __divsi3 cmp r0, 0 bge _08010418 adds r0, 0xFF _08010418: asrs r0, 8 add r0, r8 ldr r2, _0801048C adds r1, r6, r2 strh r0, [r1] bl sub_8010798 bl sub_8010858 bl sub_8010960 ldr r0, _08010490 ldrh r1, [r0, 0x2] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _08010448 movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _08010448 adds r7, 0x1 cmp r7, r4 blt _080103DC _08010448: ldr r0, _0801047C ldr r0, [r0] ldr r3, _08010488 adds r0, r3 ldr r1, [sp, 0x14] str r1, [r0] bl sub_8010798 bl sub_8010858 bl sub_8010960 add sp, 0x1C pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08010470: .4byte gDungeonCoordinates _08010474: .4byte 0xfffffc00 _08010478: .4byte 0xfffffdff _0801047C: .4byte gUnknown_203B0E8 _08010480: .4byte 0x00005114 _08010484: .4byte 0x0000110c _08010488: .4byte 0x000052dc _0801048C: .4byte 0x000052de _08010490: .4byte gRealInputs thumb_func_end sub_8010344 thumb_func_start sub_8010494 sub_8010494: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0xC mov r9, r0 movs r5, 0 ldr r0, _080104C0 mov r10, r0 mov r8, r5 _080104AA: mov r1, r10 ldr r0, [r1] mov r3, r8 adds r4, r0, r3 cmp r5, 0x3E bgt _080104C4 mov r0, r9 adds r0, 0x6D adds r0, r5 ldrb r0, [r0] b _080104C6 .align 2, 0 _080104C0: .4byte gUnknown_203B0E8 _080104C4: movs r0, 0x1 _080104C6: cmp r0, 0 beq _0801050C movs r7, 0 movs r6, 0x1 strb r6, [r4] adds r3, r4, 0 adds r3, 0x8 mov r1, r10 ldr r0, [r1] ldr r1, _08010504 adds r0, r1 ldr r1, [r0] movs r2, 0x1 cmp r5, 0x3F bne _080104E6 movs r2, 0xC _080104E6: movs r0, 0x40 str r0, [sp] str r7, [sp, 0x4] str r6, [sp, 0x8] adds r0, r3, 0 movs r3, 0 bl sub_80053AC ldr r1, _08010508 lsls r0, r5, 2 adds r0, r1 ldr r0, [r0] str r0, [r4, 0x4] b _0801050E .align 2, 0 _08010504: .4byte 0x00001108 _08010508: .4byte gDungeonCoordinates _0801050C: strb r0, [r4] _0801050E: movs r3, 0x44 add r8, r3 adds r5, 0x1 cmp r5, 0x3F ble _080104AA movs r2, 0 ldr r4, _0801057C ldr r1, [r4] ldr r3, _08010580 adds r0, r1, r3 ldr r3, _08010584 adds r1, r3 ldr r1, [r1] str r2, [sp] str r2, [sp, 0x4] movs r2, 0x1 str r2, [sp, 0x8] movs r2, 0 movs r3, 0 bl sub_80053AC ldr r2, [r4] ldr r4, _08010588 adds r3, r2, r4 ldr r1, _0801058C mov r4, r9 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r0, [r0] str r0, [r3] ldrh r0, [r3] subs r0, 0x78 ldr r3, _08010590 adds r1, r2, r3 strh r0, [r1] ldr r4, _08010594 adds r0, r2, r4 ldrh r0, [r0] subs r0, 0x50 ldr r1, _08010598 adds r2, r1 strh r0, [r2] bl sub_8010798 bl sub_8010858 add sp, 0xC pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0801057C: .4byte gUnknown_203B0E8 _08010580: .4byte 0x00005114 _08010584: .4byte 0x0000110c _08010588: .4byte 0x000052dc _0801058C: .4byte gDungeonCoordinates _08010590: .4byte 0x000052d8 _08010594: .4byte 0x000052de _08010598: .4byte 0x000052da thumb_func_end sub_8010494 thumb_func_start sub_801059C sub_801059C: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 bl GetPlayerPokemonStruct adds r7, r0, 0 ldr r6, _080106E4 ldr r0, [r6] ldr r5, _080106E8 adds r1, r5, 0 bl OpenFileAndGetFileDataPtr str r0, [sp, 0xC] ldr r0, [r6, 0x4] adds r1, r5, 0 bl OpenFileAndGetFileDataPtr str r0, [sp, 0x10] ldr r1, _080106EC movs r0, 0x8 ldrsh r2, [r7, r0] mov r0, sp bl sprintf ldr r1, _080106F0 mov r8, r1 mov r0, sp bl OpenFileAndGetFileDataPtr ldr r4, _080106F4 ldr r1, [r4] ldr r2, _080106F8 adds r1, r2 str r0, [r1] ldr r0, _080106FC adds r1, r5, 0 bl OpenFileAndGetFileDataPtr ldr r1, [r4] ldr r3, _08010700 mov r9, r3 add r1, r9 str r0, [r1] ldr r0, [r6, 0x8] adds r1, r5, 0 bl OpenFileAndGetFileDataPtr ldr r1, [r4] ldr r2, _08010704 mov r10, r2 add r1, r10 str r0, [r1] ldr r0, _08010708 mov r1, r8 bl OpenFileAndGetFileDataPtr ldr r1, [r4] ldr r3, _0801070C adds r1, r3 str r0, [r1] ldr r0, [r6, 0xC] adds r1, r5, 0 bl OpenFileAndGetFileDataPtr ldr r1, [r4] movs r2, 0x88 lsls r2, 5 adds r1, r2 str r0, [r1] movs r3, 0x8 ldrsh r0, [r7, r3] movs r1, 0 bl GetPokemonOverworldPalette ldr r1, [r4] ldr r3, _08010710 adds r2, r1, r3 lsls r0, 24 lsrs r0, 24 str r0, [r2] add r1, r9 ldr r0, [r1] movs r1, 0x40 movs r2, 0x1F movs r3, 0 bl sub_8005610 ldr r0, _08010714 movs r1, 0 ldr r2, [sp, 0xC] bl DecompressATGlobalFile ldr r1, [r4] ldr r2, _08010718 adds r0, r1, r2 add r1, r10 ldr r1, [r1] movs r2, 0x10 bl sub_8004AA4 movs r1, 0x80 lsls r1, 7 ldr r0, [r4] ldr r3, _0801071C adds r0, r3 ldr r2, [sp, 0x10] bl DecompressATFile ldr r1, [r4] ldr r2, _08010720 adds r0, r1, r2 movs r2, 0 str r2, [r0] ldr r3, _08010724 adds r0, r1, r3 strh r2, [r0] ldr r0, _08010728 adds r1, r0 strh r2, [r1] movs r3, 0 ldr r1, _0801072C mov r9, r1 mov r8, r4 ldr r7, _08010730 ldr r2, _08010734 adds r4, r2, 0 ldr r6, _08010738 movs r5, 0 _080106A2: mov r0, r8 ldr r2, [r0] lsls r0, r3, 1 adds r1, r2, r7 adds r1, r0 ldrh r0, [r1] orrs r0, r4 strh r0, [r1] adds r2, r6 adds r2, r3 strb r5, [r2] adds r3, 0x1 cmp r3, r9 ble _080106A2 ldr r0, [sp, 0xC] bl CloseFile ldr r0, [sp, 0x10] bl CloseFile movs r0, 0 movs r1, 0x1 movs r2, 0x1 bl sub_800641C add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080106E4: .4byte gUnknown_80D4014 _080106E8: .4byte gTitleMenuFileArchive _080106EC: .4byte gUnknown_80D405C _080106F0: .4byte gMonsterFileArchive _080106F4: .4byte gUnknown_203B0E8 _080106F8: .4byte 0x0000110c _080106FC: .4byte gUnknown_80D4064 _08010700: .4byte 0x00001108 _08010704: .4byte 0x00001110 _08010708: .4byte gUnknown_80D406C _0801070C: .4byte 0x00001104 _08010710: .4byte 0x000052d4 _08010714: .4byte 0x06008000 _08010718: .4byte 0x00005150 _0801071C: .4byte 0x00001114 _08010720: .4byte 0x000052d0 _08010724: .4byte 0x000052d8 _08010728: .4byte 0x000052da _0801072C: .4byte 0x000005db _08010730: .4byte 0x000052e0 _08010734: .4byte 0x0000ffff _08010738: .4byte 0x00005e98 thumb_func_end sub_801059C thumb_func_start sub_801073C sub_801073C: push {r4,lr} ldr r4, _08010784 ldr r0, [r4] ldr r1, _08010788 adds r0, r1 ldr r0, [r0] bl CloseFile ldr r0, [r4] ldr r1, _0801078C adds r0, r1 ldr r0, [r0] bl CloseFile ldr r0, [r4] ldr r1, _08010790 adds r0, r1 ldr r0, [r0] bl CloseFile ldr r0, [r4] movs r1, 0x88 lsls r1, 5 adds r0, r1 ldr r0, [r0] bl CloseFile ldr r0, [r4] ldr r1, _08010794 adds r0, r1 ldr r0, [r0] bl CloseFile pop {r4} pop {r0} bx r0 .align 2, 0 _08010784: .4byte gUnknown_203B0E8 _08010788: .4byte 0x00001110 _0801078C: .4byte 0x0000110c _08010790: .4byte 0x00001108 _08010794: .4byte 0x00001104 thumb_func_end sub_801073C thumb_func_start sub_8010798 sub_8010798: push {r4-r6,lr} ldr r2, _080107BC ldr r0, [r2] ldr r1, _080107C0 adds r3, r0, r1 movs r4, 0 ldrsh r1, [r3, r4] ldr r5, _080107C4 adds r4, r0, r5 movs r6, 0 ldrsh r0, [r4, r6] subs r1, r0 adds r5, r2, 0 cmp r1, 0x2F bgt _080107C8 ldrh r0, [r3] subs r0, 0x30 b _080107D0 .align 2, 0 _080107BC: .4byte gUnknown_203B0E8 _080107C0: .4byte 0x000052dc _080107C4: .4byte 0x000052d8 _080107C8: cmp r1, 0xC0 ble _080107D2 ldrh r0, [r3] subs r0, 0xC0 _080107D0: strh r0, [r4] _080107D2: ldr r0, [r5] ldr r1, _080107F0 adds r3, r0, r1 movs r2, 0 ldrsh r1, [r3, r2] ldr r4, _080107F4 adds r2, r0, r4 movs r6, 0 ldrsh r0, [r2, r6] subs r1, r0 cmp r1, 0x2F bgt _080107F8 ldrh r0, [r3] subs r0, 0x30 b _08010800 .align 2, 0 _080107F0: .4byte 0x000052de _080107F4: .4byte 0x000052da _080107F8: cmp r1, 0x70 ble _08010802 ldrh r0, [r3] subs r0, 0x70 _08010800: strh r0, [r2] _08010802: adds r3, r5, 0 ldr r0, [r3] ldr r4, _08010850 adds r1, r0, r4 movs r2, 0 ldrsh r0, [r1, r2] cmp r0, 0 bge _08010816 movs r0, 0 strh r0, [r1] _08010816: ldr r0, [r3] ldr r2, _08010854 adds r1, r0, r2 movs r6, 0 ldrsh r0, [r1, r6] cmp r0, 0 bge _08010828 movs r0, 0 strh r0, [r1] _08010828: ldr r0, [r3] adds r1, r0, r4 movs r3, 0 ldrsh r0, [r1, r3] cmp r0, 0xEF ble _08010838 movs r0, 0xF0 strh r0, [r1] _08010838: ldr r0, [r5] adds r2, r0, r2 movs r4, 0 ldrsh r0, [r2, r4] cmp r0, 0x9F ble _08010848 movs r0, 0xA0 strh r0, [r2] _08010848: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08010850: .4byte 0x000052d8 _08010854: .4byte 0x000052da thumb_func_end sub_8010798 thumb_func_start sub_8010858 sub_8010858: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 ldr r0, _080108FC ldr r1, [r0] ldr r2, _08010900 adds r1, r2 ldrh r1, [r1] lsls r1, 16 asrs r6, r1, 19 adds r2, r6, 0 movs r3, 0 mov r10, r0 movs r0, 0x1F mov r9, r0 _0801087C: mov r1, r10 ldr r0, [r1] ldr r1, _08010904 adds r0, r1 ldrh r0, [r0] lsls r0, 16 asrs r4, r0, 19 lsls r1, r2, 7 adds r2, 0x1 mov r12, r2 adds r3, 0x1 mov r8, r3 movs r7, 0x1E lsls r0, r4, 1 adds r5, r0, r1 _0801089A: mov r2, r9 ands r4, r2 ands r6, r2 lsls r2, r4, 1 lsls r0, r6, 6 adds r2, r0 ldr r3, _08010908 adds r3, r2, r3 str r3, [sp] mov r0, r10 ldr r1, [r0] ldr r3, _0801090C adds r0, r1, r3 adds r0, r5 ldrh r0, [r0] ldr r3, [sp] strh r0, [r3] ldr r0, _08010910 adds r2, r0 ldr r3, _08010914 adds r1, r3 adds r1, r5 ldrh r0, [r1] strh r0, [r2] adds r5, 0x2 adds r4, 0x1 subs r7, 0x1 cmp r7, 0 bge _0801089A mov r2, r12 adds r6, 0x1 mov r3, r8 cmp r3, 0x14 ble _0801087C movs r0, 0x2 bl sub_80098F8 movs r0, 0x3 bl sub_80098F8 add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080108FC: .4byte gUnknown_203B0E8 _08010900: .4byte 0x000052da _08010904: .4byte 0x000052d8 _08010908: .4byte gUnknown_202C038 _0801090C: .4byte 0x00003114 _08010910: .4byte gUnknown_202C838 _08010914: .4byte 0x00001114 thumb_func_end sub_8010858 thumb_func_start nullsub_24 nullsub_24: bx lr thumb_func_end nullsub_24 thumb_func_start sub_801091C sub_801091C: push {r4,r5,lr} bl sub_8010950 bl sub_80117C4 ldr r5, _08010948 movs r4, 0x3B _0801092A: ldr r1, [r5] ldr r0, _0801094C adds r1, r0 ldr r0, [r1] subs r0, 0x2 str r0, [r1] bl sub_8010960 subs r4, 0x1 cmp r4, 0 bge _0801092A pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08010948: .4byte gUnknown_203B0E8 _0801094C: .4byte 0x000052d0 thumb_func_end sub_801091C thumb_func_start sub_8010950 sub_8010950: push {lr} movs r0, 0 movs r1, 0x1 movs r2, 0x1 bl sub_800641C pop {r0} bx r0 thumb_func_end sub_8010950 thumb_func_start sub_8010960 sub_8010960: push {r4-r6,lr} ldr r6, _080109EC ldr r1, [r6] ldr r4, _080109F0 adds r0, r1, r4 movs r2, 0 ldrsh r0, [r0, r2] ldr r5, _080109F4 adds r1, r5 movs r2, 0 ldrsh r1, [r1, r2] bl SetBG2RegOffsets ldr r1, [r6] adds r4, r1, r4 movs r2, 0 ldrsh r0, [r4, r2] adds r1, r5 movs r2, 0 ldrsh r1, [r1, r2] bl SetBG3RegOffsets movs r0, 0x1 bl sub_8010A88 bl sub_8010A00 movs r0, 0 movs r1, 0 bl sub_8005838 ldr r0, _080109F8 ldr r0, [r0] ldrb r0, [r0, 0xA] bl nullsub_8 bl sub_8005180 bl sub_80060EC ldr r0, _080109FC ldr r0, [r0] bl IncrementPlayTime bl sub_800CB20 bl LoadBufferedInputs bl CopySpritesToOam bl sub_8005304 bl TransferBGPaletteBuffer bl xxx_call_update_bg_vram bl nullsub_24 bl sub_8009908 bl xxx_call_update_bg_sound_input bl sub_8011860 movs r0, 0 bl ResetSprites pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080109EC: .4byte gUnknown_203B0E8 _080109F0: .4byte 0x000052d8 _080109F4: .4byte 0x000052da _080109F8: .4byte gGameOptionsRef _080109FC: .4byte gPlayTimeRef thumb_func_end sub_8010960 thumb_func_start sub_8010A00 sub_8010A00: push {r4-r6,lr} movs r3, 0 ldr r6, _08010A7C ldr r0, [r6] ldr r2, _08010A80 adds r1, r0, r2 ldr r2, [r1] cmp r2, 0x1E bgt _08010A74 movs r3, 0x88 lsls r3, 5 adds r0, r3 ldr r0, [r0] ldr r5, [r0, 0x4] adds r0, r2, 0x1 str r0, [r1] cmp r0, 0x1E ble _08010A28 movs r0, 0x1F str r0, [r1] _08010A28: movs r4, 0 _08010A2A: ldr r0, [r6] ldr r1, _08010A80 adds r0, r1 ldr r2, [r0] adds r0, r4, 0 adds r1, r5, 0 movs r3, 0 bl SetBGPaletteBufferColorRGB adds r5, 0x4 adds r4, 0x1 cmp r4, 0xDF ble _08010A2A ldr r0, _08010A7C ldr r0, [r0] ldr r2, _08010A84 adds r0, r2 ldr r0, [r0] ldr r5, [r0, 0x4] movs r4, 0 _08010A52: movs r3, 0x80 lsls r3, 1 adds r0, r4, r3 ldr r1, _08010A7C ldr r1, [r1] ldr r2, _08010A80 adds r1, r2 ldr r2, [r1] adds r1, r5, 0 movs r3, 0 bl SetBGPaletteBufferColorRGB adds r5, 0x4 adds r4, 0x1 cmp r4, 0xEF ble _08010A52 movs r3, 0x1 _08010A74: adds r0, r3, 0 pop {r4-r6} pop {r1} bx r1 .align 2, 0 _08010A7C: .4byte gUnknown_203B0E8 _08010A80: .4byte 0x000052d0 _08010A84: .4byte 0x00001104 thumb_func_end sub_8010A00 thumb_func_start sub_8010A88 sub_8010A88: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 lsls r0, 24 lsrs r0, 24 mov r9, r0 add r0, sp, 0x8 bl sub_8004E8C add r1, sp, 0x8 ldr r0, _08010B58 strh r0, [r1, 0x4] movs r0, 0x80 lsls r0, 4 strh r0, [r1, 0xA] ldr r6, _08010B5C ldr r0, [r6] ldr r2, _08010B60 adds r1, r0, r2 ldr r5, [r1] ldr r3, _08010B64 adds r0, r3 bl sub_80054BC mov r0, r9 cmp r0, 0 beq _08010AF6 ldr r4, [r6] ldr r1, _08010B64 adds r0, r4, r1 ldr r2, _08010B68 adds r1, r4, r2 movs r3, 0 ldrsh r1, [r1, r3] lsls r2, r5, 16 asrs r2, 16 subs r1, r2 ldr r3, _08010B6C adds r2, r4, r3 movs r3, 0 ldrsh r2, [r2, r3] asrs r3, r5, 16 subs r2, r3 ldr r3, _08010B70 adds r4, r3 ldr r3, [r4] str r3, [sp] add r3, sp, 0x8 str r3, [sp, 0x4] movs r3, 0x3 bl sub_800558C _08010AF6: lsls r0, r5, 16 asrs r0, 16 mov r10, r0 movs r7, 0 asrs r5, 16 mov r8, r5 movs r6, 0x3F _08010B04: ldr r1, _08010B5C ldr r0, [r1] adds r4, r0, r7 ldrb r0, [r4] cmp r0, 0 beq _08010B40 adds r5, r4, 0 adds r5, 0x8 adds r0, r5, 0 bl sub_80054BC mov r2, r9 cmp r2, 0 beq _08010B40 movs r3, 0x4 ldrsh r1, [r4, r3] mov r0, r10 subs r1, r0 movs r3, 0x6 ldrsh r2, [r4, r3] mov r0, r8 subs r2, r0 movs r0, 0 str r0, [sp] add r3, sp, 0x8 str r3, [sp, 0x4] adds r0, r5, 0 movs r3, 0x1 bl sub_800558C _08010B40: adds r7, 0x44 subs r6, 0x1 cmp r6, 0 bge _08010B04 add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08010B58: .4byte 0x0000f3ff _08010B5C: .4byte gUnknown_203B0E8 _08010B60: .4byte 0x000052d8 _08010B64: .4byte 0x00005114 _08010B68: .4byte 0x000052dc _08010B6C: .4byte 0x000052de _08010B70: .4byte 0x000052d4 thumb_func_end sub_8010A88 thumb_func_start sub_8010B74 sub_8010B74: push {r4,r5,lr} sub sp, 0x64 adds r5, r0, 0 add r4, sp, 0x4 adds r0, r4, 0 movs r1, 0 movs r2, 0x60 bl memset movs r2, 0x3 str r2, [sp, 0x8] movs r0, 0xC strh r0, [r4, 0x8] movs r1, 0x2 strh r1, [r4, 0xA] movs r0, 0x10 strh r0, [r4, 0xC] strh r1, [r4, 0xE] strh r1, [r4, 0x10] str r2, [sp, 0x20] str r2, [sp, 0x38] str r2, [sp, 0x50] ldr r0, _08010BC0 ldr r0, [r0] ldr r2, _08010BC4 adds r1, r0, r2 movs r2, 0 ldrsh r1, [r1, r2] ldr r2, _08010BC8 adds r0, r2 movs r2, 0 ldrsh r0, [r0, r2] subs r1, r0 cmp r1, 0x50 bgt _08010BCC add r1, sp, 0x4 movs r0, 0x11 b _08010BD0 .align 2, 0 _08010BC0: .4byte gUnknown_203B0E8 _08010BC4: .4byte 0x000052de _08010BC8: .4byte 0x000052da _08010BCC: add r1, sp, 0x4 movs r0, 0x1 _08010BD0: strh r0, [r1, 0xA] add r0, sp, 0x4 movs r1, 0x1 movs r2, 0x1 bl sub_800641C movs r0, 0 bl sub_80073B8 ldr r0, _08010C08 adds r1, r5, 0 bl CopyDungeonName1toBuffer ldr r2, _08010C0C movs r0, 0 str r0, [sp] movs r0, 0xC movs r1, 0x2 movs r3, 0 bl xxx_format_and_draw movs r0, 0 bl sub_80073E0 add sp, 0x64 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08010C08: .4byte gAvailablePokemonNames _08010C0C: .4byte gUnknown_80D4074 thumb_func_end sub_8010B74 thumb_func_start sub_8010C10 sub_8010C10: push {r4,lr} sub sp, 0x18 movs r2, 0 str r2, [sp] movs r1, 0x3 str r1, [sp, 0x4] str r2, [sp, 0x8] str r2, [sp, 0xC] ldr r1, _08010C54 str r1, [sp, 0x10] movs r1, 0 movs r3, 0 bl sub_8014248 _08010C2C: bl xxx_draw_string_80144C4 bl sub_8010960 add r0, sp, 0x14 bl sub_80144A4 cmp r0, 0 bne _08010C2C movs r4, 0x9 _08010C40: bl sub_8010960 subs r4, 0x1 cmp r4, 0 bge _08010C40 add sp, 0x18 pop {r4} pop {r0} bx r0 .align 2, 0 _08010C54: .4byte 0x00000301 thumb_func_end sub_8010C10 thumb_func_start sub_8010C58 sub_8010C58: push {r4-r6,lr} sub sp, 0x38 adds r5, r0, 0 movs r2, 0 ldrb r0, [r5] ldr r3, _08010D70 add r6, sp, 0x2C cmp r0, 0 beq _08010C7C adds r1, r5, 0 _08010C6C: ldrb r0, [r1] cmp r0, 0xA bne _08010C74 adds r2, 0xC _08010C74: adds r1, 0x1 ldrb r0, [r1] cmp r0, 0 bne _08010C6C _08010C7C: adds r2, 0xB adds r0, r2, 0 cmp r2, 0 bge _08010C86 adds r0, r2, 0x7 _08010C86: asrs r2, r0, 3 movs r0, 0x13 subs r0, r2 movs r4, 0 strh r0, [r3, 0xA] strh r2, [r3, 0x10] strh r2, [r3, 0xE] movs r0, 0xE subs r0, r2 strh r0, [r3, 0x22] adds r0, r3, 0 movs r1, 0x1 movs r2, 0x1 bl sub_800641C movs r0, 0 bl sub_80073B8 str r4, [sp] movs r0, 0x4 movs r1, 0 adds r2, r5, 0 movs r3, 0 bl xxx_format_and_draw movs r0, 0 bl sub_80073E0 movs r0, 0x1 bl sub_80073B8 ldr r2, _08010D74 str r4, [sp] movs r0, 0xA movs r1, 0 movs r3, 0x1 bl xxx_format_and_draw ldr r2, _08010D78 str r4, [sp] movs r0, 0xA movs r1, 0xC movs r3, 0x1 bl xxx_format_and_draw movs r0, 0x1 bl sub_80073E0 add r0, sp, 0x4 movs r2, 0x1 strh r2, [r0, 0x18] movs r1, 0x2 strh r1, [r0, 0x1A] strh r1, [r0, 0x1C] strh r4, [r0, 0x1E] strh r4, [r0, 0x20] strh r4, [r0, 0x4] strh r4, [r0, 0x6] str r2, [sp, 0x4] strh r4, [r0, 0xC] strh r4, [r0, 0xE] strh r4, [r0, 0x14] strh r4, [r0, 0x16] movs r1, 0x8 strh r1, [r0, 0x8] strh r1, [r0, 0xA] movs r1, 0x18 bl sub_80137B0 adds r0, r6, 0 bl sub_801317C ldr r4, _08010D7C _08010D18: add r0, sp, 0x4 bl AddMenuCursorSprite bl sub_8010960 ldrh r1, [r4, 0x4] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08010D36 add r0, sp, 0x4 bl MoveMenuCursorDown bl sub_80117F8 _08010D36: ldrh r1, [r4, 0x4] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08010D4A add r0, sp, 0x4 bl MoveMenuCursorUp bl sub_80117F8 _08010D4A: ldrh r1, [r4, 0x2] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _08010D5E mov r0, sp adds r0, 0x2D ldrb r0, [r0] cmp r0, 0 beq _08010D18 _08010D5E: bl sub_80117D0 add r0, sp, 0x4 movs r1, 0x18 ldrsh r0, [r0, r1] cmp r0, 0 beq _08010D80 movs r0, 0 b _08010D82 .align 2, 0 _08010D70: .4byte gUnknown_203B0EC _08010D74: .4byte gUnknown_80D407C _08010D78: .4byte gUnknown_80D4080 _08010D7C: .4byte gRealInputs _08010D80: movs r0, 0x1 _08010D82: add sp, 0x38 pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_8010C58 thumb_func_start sub_8010D8C sub_8010D8C: lsls r0, 24 ldr r2, _08010DA0 lsrs r0, 22 adds r0, r2 ldrh r2, [r0] strh r2, [r1] ldrh r0, [r0, 0x2] strh r0, [r1, 0x2] bx lr .align 2, 0 _08010DA0: .4byte gDungeonCoordinates thumb_func_end sub_8010D8C thumb_func_start sub_8010DA4 sub_8010DA4: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0xC bl GetPlayerPokemonStruct mov r9, r0 ldr r6, _08010EBC ldr r0, [r6] ldr r5, _08010EC0 adds r1, r5, 0 bl OpenFileAndGetFileDataPtr mov r10, r0 ldr r0, [r6, 0x4] adds r1, r5, 0 bl OpenFileAndGetFileDataPtr adds r7, r0, 0 ldr r1, _08010EC4 mov r0, r9 movs r3, 0x8 ldrsh r2, [r0, r3] mov r0, sp bl sprintf ldr r0, _08010EC8 mov r8, r0 mov r0, sp mov r1, r8 bl OpenFileAndGetFileDataPtr ldr r4, _08010ECC ldr r1, [r4] str r0, [r1, 0xC] ldr r0, _08010ED0 adds r1, r5, 0 bl OpenFileAndGetFileDataPtr ldr r1, [r4] str r0, [r1, 0x8] ldr r0, [r6, 0x8] adds r1, r5, 0 bl OpenFileAndGetFileDataPtr ldr r1, [r4] str r0, [r1, 0x10] ldr r0, _08010ED4 mov r1, r8 bl OpenFileAndGetFileDataPtr ldr r1, [r4] str r0, [r1, 0x4] ldr r0, [r6, 0xC] adds r1, r5, 0 bl OpenFileAndGetFileDataPtr ldr r1, [r4] str r0, [r1] mov r1, r9 movs r2, 0x8 ldrsh r0, [r1, r2] movs r1, 0 bl GetPokemonOverworldPalette ldr r2, [r4] ldr r3, _08010ED8 adds r1, r2, r3 lsls r0, 24 lsrs r0, 24 str r0, [r1] ldr r0, [r2, 0x8] movs r1, 0x40 movs r2, 0x1F movs r3, 0 bl sub_8005610 ldr r0, _08010EDC movs r1, 0 mov r2, r10 bl DecompressATGlobalFile ldr r1, [r4] ldr r2, _08010EE0 adds r0, r1, r2 ldr r1, [r1, 0x10] movs r2, 0x10 bl sub_8004AA4 movs r1, 0x80 lsls r1, 7 ldr r0, [r4] adds r0, 0x14 adds r2, r7, 0 bl DecompressATFile ldr r1, [r4] ldr r3, _08010EE4 adds r0, r1, r3 movs r2, 0 str r2, [r0] adds r3, 0x8 adds r0, r1, r3 strh r2, [r0] ldr r0, _08010EE8 adds r1, r0 strh r2, [r1] ldr r5, _08010EEC movs r3, 0 movs r1, 0x7 _08010E84: ldr r0, [r4] adds r0, r2, r0 adds r0, r5 strh r3, [r0] adds r2, 0x3C subs r1, 0x1 cmp r1, 0 bge _08010E84 mov r0, r10 bl CloseFile adds r0, r7, 0 bl CloseFile movs r0, 0 movs r1, 0x1 movs r2, 0x1 bl sub_800641C add sp, 0xC pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08010EBC: .4byte gUnknown_80D408C _08010EC0: .4byte gTitleMenuFileArchive _08010EC4: .4byte gUnknown_80D40E4 _08010EC8: .4byte gMonsterFileArchive _08010ECC: .4byte gUnknown_203B0E4 _08010ED0: .4byte gUnknown_80D40EC _08010ED4: .4byte gUnknown_80D40F4 _08010ED8: .4byte 0x00004dd0 _08010EDC: .4byte 0x06008000 _08010EE0: .4byte 0x00004c4c _08010EE4: .4byte 0x00004dcc _08010EE8: .4byte 0x00004dd6 _08010EEC: .4byte 0x00004a30 thumb_func_end sub_8010DA4 thumb_func_start sub_8010EF0 sub_8010EF0: push {r4,lr} ldr r4, _08010F24 ldr r0, [r4] ldr r0, [r0, 0x10] bl CloseFile ldr r0, [r4] ldr r0, [r0, 0x8] bl CloseFile ldr r0, [r4] ldr r0, [r0, 0xC] bl CloseFile ldr r0, [r4] ldr r0, [r0] bl CloseFile ldr r0, [r4] ldr r0, [r0, 0x4] bl CloseFile pop {r4} pop {r0} bx r0 .align 2, 0 _08010F24: .4byte gUnknown_203B0E4 thumb_func_end sub_8010EF0 thumb_func_start sub_8010F28 sub_8010F28: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x18 add r0, sp, 0x8 bl sub_8004E8C add r1, sp, 0x8 ldr r0, _08011080 strh r0, [r1, 0x4] movs r0, 0x80 lsls r0, 4 strh r0, [r1, 0xA] ldr r6, _08011084 ldr r0, [r6] ldr r2, _08011088 adds r1, r0, r2 ldr r1, [r1] mov r8, r1 ldr r4, _0801108C adds r0, r4 bl sub_80054BC ldr r3, [r6] adds r4, r3, r4 ldr r7, _08011090 adds r0, r3, r7 movs r2, 0 ldrsh r1, [r0, r2] mov r7, r8 lsls r5, r7, 16 asrs r5, 16 subs r1, r5 ldr r2, _08011094 adds r0, r3, r2 movs r7, 0 ldrsh r2, [r0, r7] mov r7, r8 asrs r0, r7, 16 subs r2, r0 ldr r0, _08011098 adds r3, r0 ldr r0, [r3] str r0, [sp] add r3, sp, 0x8 str r3, [sp, 0x4] adds r0, r4, 0 movs r3, 0x3 bl sub_800558C movs r7, 0 mov r10, r6 ldr r6, _0801109C mov r9, r5 _08010F98: mov r4, r10 ldr r0, [r4] adds r4, r0, r6 ldr r1, _080110A0 adds r0, r1 lsls r1, r7, 5 ldr r0, [r0] adds r5, r0, r1 ldrb r0, [r4] cmp r0, 0 beq _08010FD8 adds r4, 0x14 adds r0, r4, 0 bl sub_80054BC movs r2, 0x4 ldrsh r1, [r5, r2] mov r3, r9 subs r1, r3 movs r0, 0x6 ldrsh r2, [r5, r0] mov r3, r8 asrs r0, r3, 16 subs r2, r0 movs r0, 0 str r0, [sp] add r0, sp, 0x8 str r0, [sp, 0x4] adds r0, r4, 0 movs r3, 0x1 bl sub_800558C _08010FD8: adds r6, 0x50 adds r7, 0x1 cmp r7, 0x1F ble _08010F98 movs r5, 0 ldr r1, _08011084 mov r9, r1 ldr r6, _080110A4 movs r2, 0 str r2, [sp, 0x14] _08010FEC: mov r3, r9 ldr r1, [r3] ldr r4, [sp, 0x14] adds r0, r4, r1 ldr r7, _080110A4 adds r0, r7 ldrh r0, [r0] lsrs r0, 15 cmp r0, 0 beq _08011062 adds r0, r1, r6 bl sub_80054BC ldr r0, _080110A8 ldrh r0, [r0] movs r2, 0x80 lsls r2, 1 adds r1, r2, 0 ands r0, r1 cmp r0, 0 beq _0801101E movs r0, 0x1 ands r0, r5 cmp r0, 0 beq _08011062 _0801101E: mov r3, r9 ldr r4, [r3] adds r0, r4, r6 ldr r1, _080110AC lsls r3, r5, 2 adds r3, r1 movs r7, 0 ldrsh r1, [r3, r7] ldr r7, _08011090 adds r2, r4, r7 movs r7, 0 ldrsh r2, [r2, r7] adds r1, r2 mov r7, r8 lsls r2, r7, 16 asrs r2, 16 subs r1, r2 movs r7, 0x2 ldrsh r2, [r3, r7] ldr r3, _08011094 adds r3, r4 movs r4, 0 ldrsh r3, [r3, r4] adds r2, r3 mov r7, r8 asrs r3, r7, 16 subs r2, r3 movs r3, 0 str r3, [sp] add r3, sp, 0x8 str r3, [sp, 0x4] movs r3, 0x2 bl sub_800558C _08011062: adds r6, 0x3C ldr r4, [sp, 0x14] adds r4, 0x3C str r4, [sp, 0x14] adds r5, 0x1 cmp r5, 0x7 ble _08010FEC add sp, 0x18 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08011080: .4byte 0x0000f3ff _08011084: .4byte gUnknown_203B0E4 _08011088: .4byte 0x00004dd4 _0801108C: .4byte 0x00004c10 _08011090: .4byte 0x00004dd8 _08011094: .4byte 0x00004dda _08011098: .4byte 0x00004dd0 _0801109C: .4byte 0x00004018 _080110A0: .4byte 0x00004014 _080110A4: .4byte 0x00004a30 _080110A8: .4byte gRealInputs _080110AC: .4byte gUnknown_80D40C4 thumb_func_end sub_8010F28 thumb_func_start sub_80110B0 sub_80110B0: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 ldr r0, _08011150 ldr r1, [r0] ldr r2, _08011154 adds r1, r2 ldrh r1, [r1] lsls r1, 16 asrs r6, r1, 19 adds r2, r6, 0 movs r3, 0 mov r10, r0 movs r0, 0x1F mov r9, r0 _080110D4: mov r1, r10 ldr r0, [r1] ldr r1, _08011158 adds r0, r1 ldrh r0, [r0] lsls r0, 16 asrs r4, r0, 19 lsls r1, r2, 7 adds r2, 0x1 mov r12, r2 adds r3, 0x1 mov r8, r3 movs r7, 0x1E lsls r0, r4, 1 adds r5, r0, r1 _080110F2: mov r2, r9 ands r4, r2 ands r6, r2 lsls r2, r4, 1 lsls r0, r6, 6 adds r2, r0 ldr r3, _0801115C adds r3, r2, r3 str r3, [sp] mov r0, r10 ldr r1, [r0] ldr r3, _08011160 adds r0, r1, r3 adds r0, r5 ldrh r0, [r0] ldr r3, [sp] strh r0, [r3] ldr r0, _08011164 adds r2, r0 adds r1, 0x14 adds r1, r5 ldrh r0, [r1] strh r0, [r2] adds r5, 0x2 adds r4, 0x1 subs r7, 0x1 cmp r7, 0 bge _080110F2 mov r2, r12 adds r6, 0x1 mov r3, r8 cmp r3, 0x14 ble _080110D4 movs r0, 0x2 bl sub_80098F8 movs r0, 0x3 bl sub_80098F8 add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08011150: .4byte gUnknown_203B0E4 _08011154: .4byte 0x00004dd6 _08011158: .4byte 0x00004dd4 _0801115C: .4byte gUnknown_202C038 _08011160: .4byte 0x00002014 _08011164: .4byte gUnknown_202C838 thumb_func_end sub_80110B0 thumb_func_start sub_8011168 sub_8011168: push {r4,r5,lr} movs r0, 0 movs r1, 0x1 movs r2, 0x1 bl sub_800641C ldr r3, _080111B0 ldr r1, [r3] ldr r2, _080111B4 adds r0, r1, r2 movs r2, 0 str r2, [r0] ldr r4, _080111B8 adds r0, r1, r4 str r2, [r0] adds r4, 0x4 adds r0, r1, r4 str r2, [r0] ldr r0, _080111BC adds r1, r0 str r2, [r1] adds r5, r3, 0 ldr r4, _080111C0 movs r3, 0 movs r1, 0x7 _0801119A: ldr r0, [r5] adds r0, r2, r0 adds r0, r4 strh r3, [r0] adds r2, 0x3C subs r1, 0x1 cmp r1, 0 bge _0801119A pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080111B0: .4byte gUnknown_203B0E4 _080111B4: .4byte 0x00004ddc _080111B8: .4byte 0x00004de0 _080111BC: .4byte 0x00004de8 _080111C0: .4byte 0x00004a30 thumb_func_end sub_8011168 thumb_func_start sub_80111C4 sub_80111C4: push {r4-r6,lr} movs r3, 0 ldr r6, _08011238 ldr r0, [r6] ldr r2, _0801123C adds r1, r0, r2 ldr r2, [r1] cmp r2, 0x1E bgt _0801122E ldr r0, [r0] ldr r5, [r0, 0x4] adds r0, r2, 0x1 str r0, [r1] cmp r0, 0x1E ble _080111E6 movs r0, 0x1F str r0, [r1] _080111E6: movs r4, 0 _080111E8: ldr r0, [r6] ldr r1, _0801123C adds r0, r1 ldr r2, [r0] adds r0, r4, 0 adds r1, r5, 0 movs r3, 0 bl SetBGPaletteBufferColorRGB adds r5, 0x4 adds r4, 0x1 cmp r4, 0xDF ble _080111E8 ldr r0, _08011238 ldr r0, [r0] ldr r0, [r0, 0x4] ldr r5, [r0, 0x4] movs r4, 0 _0801120C: movs r2, 0x80 lsls r2, 1 adds r0, r4, r2 ldr r1, _08011238 ldr r1, [r1] ldr r2, _0801123C adds r1, r2 ldr r2, [r1] adds r1, r5, 0 movs r3, 0 bl SetBGPaletteBufferColorRGB adds r5, 0x4 adds r4, 0x1 cmp r4, 0xEF ble _0801120C movs r3, 0x1 _0801122E: adds r0, r3, 0 pop {r4-r6} pop {r1} bx r1 .align 2, 0 _08011238: .4byte gUnknown_203B0E4 _0801123C: .4byte 0x00004dcc thumb_func_end sub_80111C4 thumb_func_start sub_8011240 sub_8011240: push {r4-r6,lr} ldr r2, _08011264 ldr r0, [r2] ldr r1, _08011268 adds r3, r0, r1 movs r4, 0 ldrsh r1, [r3, r4] ldr r5, _0801126C adds r4, r0, r5 movs r6, 0 ldrsh r0, [r4, r6] subs r1, r0 adds r5, r2, 0 cmp r1, 0x2F bgt _08011270 ldrh r0, [r3] subs r0, 0x30 b _08011278 .align 2, 0 _08011264: .4byte gUnknown_203B0E4 _08011268: .4byte 0x00004dd8 _0801126C: .4byte 0x00004dd4 _08011270: cmp r1, 0xC0 ble _0801127A ldrh r0, [r3] subs r0, 0xC0 _08011278: strh r0, [r4] _0801127A: ldr r0, [r5] ldr r1, _08011298 adds r3, r0, r1 movs r2, 0 ldrsh r1, [r3, r2] ldr r4, _0801129C adds r2, r0, r4 movs r6, 0 ldrsh r0, [r2, r6] subs r1, r0 cmp r1, 0x2F bgt _080112A0 ldrh r0, [r3] subs r0, 0x30 b _080112A8 .align 2, 0 _08011298: .4byte 0x00004dda _0801129C: .4byte 0x00004dd6 _080112A0: cmp r1, 0x70 ble _080112AA ldrh r0, [r3] subs r0, 0x70 _080112A8: strh r0, [r2] _080112AA: adds r3, r5, 0 ldr r0, [r3] ldr r4, _080112F8 adds r1, r0, r4 movs r2, 0 ldrsh r0, [r1, r2] cmp r0, 0 bge _080112BE movs r0, 0 strh r0, [r1] _080112BE: ldr r0, [r3] ldr r2, _080112FC adds r1, r0, r2 movs r6, 0 ldrsh r0, [r1, r6] cmp r0, 0 bge _080112D0 movs r0, 0 strh r0, [r1] _080112D0: ldr r0, [r3] adds r1, r0, r4 movs r3, 0 ldrsh r0, [r1, r3] cmp r0, 0xEF ble _080112E0 movs r0, 0xEF strh r0, [r1] _080112E0: ldr r0, [r5] adds r2, r0, r2 movs r4, 0 ldrsh r0, [r2, r4] cmp r0, 0x97 ble _080112F0 movs r0, 0x97 strh r0, [r2] _080112F0: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080112F8: .4byte 0x00004dd4 _080112FC: .4byte 0x00004dd6 thumb_func_end sub_8011240 thumb_func_start sub_8011300 sub_8011300: push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0xC ldr r0, _08011388 ldr r2, [r0] ldr r1, _0801138C adds r0, r2, r1 ldr r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 4 ldr r3, _08011390 adds r0, r3 adds r2, r0 mov r9, r2 movs r4, 0 ldr r0, _08011394 mov r8, r0 movs r7, 0 mov r6, r8 movs r5, 0 _0801132E: ldr r0, _08011388 ldr r2, [r0] adds r0, r5, r2 add r0, r8 strh r7, [r0] lsls r1, r4, 1 mov r0, r9 adds r0, 0x2 adds r1, r0, r1 movs r3, 0 ldrsh r0, [r1, r3] cmp r0, 0 blt _08011370 lsls r1, r0, 2 adds r1, r0 lsls r1, 4 ldr r0, _08011390 adds r1, r0 adds r1, r2, r1 ldrb r0, [r1] cmp r0, 0 beq _08011370 adds r0, r2, r6 ldr r1, [r2, 0x8] adds r2, r4, 0x4 movs r3, 0x40 str r3, [sp] str r7, [sp, 0x4] movs r3, 0x1 str r3, [sp, 0x8] movs r3, 0 bl sub_80053AC _08011370: adds r6, 0x3C adds r5, 0x3C adds r4, 0x1 cmp r4, 0x7 ble _0801132E add sp, 0xC pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08011388: .4byte gUnknown_203B0E4 _0801138C: .4byte 0x00004a18 _08011390: .4byte 0x00004018 _08011394: .4byte 0x00004a30 thumb_func_end sub_8011300 thumb_func_start sub_8011398 sub_8011398: push {r4-r6,lr} sub sp, 0x12C ldr r5, _080113F4 ldr r0, [r5] ldr r2, _080113F8 adds r1, r0, r2 ldr r1, [r1] ldr r3, _080113FC adds r0, r3 lsls r1, 5 ldr r0, [r0] adds r6, r0, r1 add r4, sp, 0xCC adds r0, r4, 0 movs r1, 0 movs r2, 0x60 bl memset movs r2, 0x3 str r2, [r4, 0x4] movs r0, 0x7 strh r0, [r4, 0x8] movs r1, 0x2 strh r1, [r4, 0xA] movs r0, 0x15 strh r0, [r4, 0xC] strh r1, [r4, 0xE] strh r1, [r4, 0x10] str r2, [r4, 0x1C] str r2, [r4, 0x34] str r2, [r4, 0x4C] ldr r0, [r5] ldr r2, _08011400 adds r1, r0, r2 movs r3, 0 ldrsh r1, [r1, r3] subs r2, 0x4 adds r0, r2 movs r3, 0 ldrsh r0, [r0, r3] subs r1, r0 cmp r1, 0x50 bgt _08011404 movs r0, 0x11 b _08011406 .align 2, 0 _080113F4: .4byte gUnknown_203B0E4 _080113F8: .4byte 0x00004a18 _080113FC: .4byte 0x00004014 _08011400: .4byte 0x00004dda _08011404: movs r0, 0x1 _08011406: strh r0, [r4, 0xA] adds r0, r4, 0 movs r1, 0x1 movs r2, 0x1 bl sub_800641C movs r0, 0 bl sub_80073B8 ldr r1, _0801147C ldr r2, [r6] add r0, sp, 0x4 bl sprintfStatic movs r0, 0 str r0, [sp] movs r0, 0xC movs r1, 0x2 add r2, sp, 0x4 movs r3, 0 bl xxx_format_and_draw movs r0, 0 bl sub_80073E0 ldr r0, _08011480 ldr r1, [r0] ldr r0, _08011484 adds r2, r1, r0 movs r3, 0x8 ldrsh r0, [r4, r3] lsls r0, 3 subs r0, 0x5 str r0, [r2] ldr r0, _08011488 adds r2, r1, r0 movs r3, 0xA ldrsh r0, [r4, r3] lsls r0, 3 adds r0, 0x5 str r0, [r2] ldr r0, _0801148C adds r2, r1, r0 movs r3, 0xC ldrsh r0, [r4, r3] lsls r0, 3 adds r0, 0xA str r0, [r2] ldr r0, _08011490 adds r1, r0 movs r2, 0xE ldrsh r0, [r4, r2] lsls r0, 3 adds r0, 0xA str r0, [r1] add sp, 0x12C pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0801147C: .4byte gUnknown_80D40FC _08011480: .4byte gUnknown_203B0E4 _08011484: .4byte 0x00004ddc _08011488: .4byte 0x00004de0 _0801148C: .4byte 0x00004de4 _08011490: .4byte 0x00004de8 thumb_func_end sub_8011398 thumb_func_start sub_8011494 sub_8011494: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0xC8 ldr r0, _08011610 ldr r2, [r0] ldr r1, _08011614 adds r0, r2, r1 ldr r0, [r0] ldr r3, _08011618 adds r1, r2, r3 lsls r0, 5 ldr r1, [r1] adds r1, r0 mov r8, r1 ldr r0, _0801161C adds r7, r2, r0 add r4, sp, 0x64 adds r0, r4, 0 movs r1, 0 movs r2, 0x60 bl memset movs r0, 0x6 str r0, [sp, 0x68] add r1, sp, 0x6C movs r0, 0x7 strh r0, [r1] movs r2, 0x2 strh r2, [r1, 0x2] add r1, sp, 0x70 movs r0, 0x15 strh r0, [r1] mov r0, sp adds r0, 0x72 strh r2, [r0] add r0, sp, 0x74 strh r2, [r0] add r5, sp, 0xC4 str r5, [sp, 0x78] movs r1, 0x3 str r1, [sp, 0x80] add r0, sp, 0x94 str r1, [r0, 0x4] add r0, sp, 0xAC str r1, [r0, 0x4] add r0, sp, 0x4 adds r1, r4, 0 movs r2, 0x60 bl memcpy movs r1, 0 mov r9, r1 movs r6, 0 mov r10, r5 _08011506: mov r0, r8 adds r0, 0x8 adds r4, r0, r6 ldrb r0, [r4] bl sub_800FFE8 lsls r0, 24 cmp r0, 0 beq _0801152A ldr r0, _08011610 ldr r0, [r0] ldr r2, _08011620 adds r0, r2 add r0, r9 ldrb r1, [r4] strb r1, [r0] movs r3, 0x1 add r9, r3 _0801152A: adds r6, 0x1 cmp r6, 0x7 ble _08011506 ldr r5, _08011610 ldr r0, [r5] ldr r1, _08011624 adds r0, r1 mov r2, r9 str r2, [r0] movs r4, 0 movs r0, 0x1 mov r3, r10 strb r0, [r3] add r0, sp, 0xC4 strb r4, [r0, 0x1] movs r1, 0x12 strb r1, [r0, 0x2] strb r4, [r0, 0x3] strh r4, [r7, 0x18] strh r2, [r7, 0x1A] mov r0, r9 strh r0, [r7, 0x1C] strh r4, [r7, 0x1E] strh r4, [r7, 0x20] strh r4, [r7, 0x4] movs r0, 0x10 strh r0, [r7, 0x6] str r4, [r7] strh r4, [r7, 0xC] strh r4, [r7, 0xE] strh r4, [r7, 0x14] strh r4, [r7, 0x16] movs r0, 0x8 strh r0, [r7, 0x8] strh r0, [r7, 0xA] adds r0, r7, 0 adds r0, 0x28 bl sub_801317C movs r1, 0x1C ldrsh r0, [r7, r1] movs r1, 0 bl sub_80095E4 adds r1, r0, 0 add r3, sp, 0x4 adds r2, r3, 0 adds r0, r1, 0x2 strh r0, [r2, 0xE] strh r0, [r3, 0x10] lsls r1, 3 adds r0, r7, 0 bl sub_80137B0 add r0, sp, 0x4 movs r1, 0x1 movs r2, 0x1 bl sub_800641C ldr r1, [r5] ldr r2, _08011628 adds r0, r1, r2 str r4, [r0] ldr r3, _0801162C adds r0, r1, r3 str r4, [r0] adds r2, 0x8 adds r0, r1, r2 str r4, [r0] adds r3, 0x8 adds r1, r3 str r4, [r1] movs r0, 0 bl sub_80073B8 ldr r2, _08011630 str r4, [sp] movs r0, 0x10 movs r1, 0 movs r3, 0 bl xxx_format_and_draw movs r6, 0 cmp r6, r9 bge _08011678 add r0, sp, 0x64 mov r8, r0 ldr r1, _08011634 mov r10, r1 _080115DC: adds r0, r7, 0 adds r1, r6, 0 bl sub_8013800 adds r4, r0, 0 ldr r2, _08011610 ldr r0, [r2] ldr r3, _08011620 adds r0, r3 adds r0, r6 ldrb r5, [r0] ldr r0, _08011638 adds r1, r5, 0 bl sub_80101F8 cmp r5, 0 bne _08011640 str r5, [sp] movs r0, 0xC adds r1, r4, 0 ldr r2, _0801163C movs r3, 0 bl xxx_format_and_draw b _08011672 .align 2, 0 _08011610: .4byte gUnknown_203B0E4 _08011614: .4byte 0x00004a18 _08011618: .4byte 0x00004014 _0801161C: .4byte 0x00004dfc _08011620: .4byte 0x00004dec _08011624: .4byte 0x00004df8 _08011628: .4byte 0x00004ddc _0801162C: .4byte 0x00004de0 _08011630: .4byte gUnknown_80D4104 _08011634: .4byte gUnknown_202DE30 _08011638: .4byte gUnknown_202DE58 _0801163C: .4byte gUnknown_80D4120 _08011640: ldr r1, _08011690 ldr r0, [r1] ldr r2, _08011694 adds r0, r2 ldrb r2, [r0] adds r0, r5, 0 mov r1, r8 bl sub_80926F8 mov r3, r8 movs r1, 0x2 ldrsh r0, [r3, r1] mov r2, r10 str r0, [r2] movs r1, 0 ldrsh r0, [r3, r1] str r0, [r2, 0x4] movs r0, 0 str r0, [sp] movs r0, 0xC adds r1, r4, 0 ldr r2, _08011698 movs r3, 0 bl xxx_format_and_draw _08011672: adds r6, 0x1 cmp r6, r9 blt _080115DC _08011678: movs r0, 0 bl sub_80073E0 add sp, 0xC8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08011690: .4byte gUnknown_203B0E4 _08011694: .4byte 0x00004a2c _08011698: .4byte gUnknown_80D4124 thumb_func_end sub_8011494 .align 2,0