.include "constants/gba_constants.inc" .include "constants/species_constants.inc" .include "asm/macros.inc" .syntax unified .text thumb_func_start sub_811AABC sub_811AABC: @ 811AABC push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _0811AAD0 @ =gMain ldr r1, _0811AAD4 @ =sub_8054398 str r1, [r2, 0x4] bl sub_811AB20 pop {r0} bx r0 .align 2, 0 _0811AAD0: .4byte gMain _0811AAD4: .4byte sub_8054398 thumb_func_end sub_811AABC thumb_func_start sub_811AAD8 sub_811AAD8: @ 811AAD8 push {lr} lsls r0, 24 lsrs r0, 24 bl sub_811AB20 pop {r0} bx r0 thumb_func_end sub_811AAD8 thumb_func_start sub_811AAE8 sub_811AAE8: @ 811AAE8 push {lr} ldr r0, _0811AB0C @ =sub_811AB50 bl FindTaskIdByFunc lsls r0, 24 lsrs r2, r0, 24 ldr r1, _0811AB10 @ =gTasks lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r0, r1 movs r1, 0x26 ldrsh r0, [r0, r1] cmp r0, 0 bne _0811AB14 movs r0, 0 b _0811AB1C .align 2, 0 _0811AB0C: .4byte sub_811AB50 _0811AB10: .4byte gTasks _0811AB14: adds r0, r2, 0 bl DestroyTask movs r0, 0x1 _0811AB1C: pop {r1} bx r1 thumb_func_end sub_811AAE8 thumb_func_start sub_811AB20 sub_811AB20: @ 811AB20 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _0811AB48 @ =sub_811AB50 movs r1, 0x2 bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r2, _0811AB4C @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 strh r4, [r1, 0xA] pop {r4} pop {r0} bx r0 .align 2, 0 _0811AB48: .4byte sub_811AB50 _0811AB4C: .4byte gTasks thumb_func_end sub_811AB20 thumb_func_start sub_811AB50 sub_811AB50: @ 811AB50 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811AB80 @ =gUnknown_083FD794 ldr r2, _0811AB84 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811AB62: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811AB62 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811AB80: .4byte gUnknown_083FD794 _0811AB84: .4byte gTasks thumb_func_end sub_811AB50 thumb_func_start sub_811AB88 sub_811AB88: @ 811AB88 push {r4,lr} adds r4, r0, 0 bl sub_807DE10 ldr r0, _0811ABB4 @ =gPlttBufferFaded ldr r1, _0811ABB8 @ =gPlttBufferUnfaded ldr r2, _0811ABBC @ =0x04000100 bl CpuSet ldr r1, _0811ABC0 @ =gUnknown_083FD70C movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 adds r0, r1 ldr r0, [r0] cmp r0, 0 bne _0811ABC4 movs r0, 0x2 strh r0, [r4, 0x8] movs r0, 0x1 b _0811ABD2 .align 2, 0 _0811ABB4: .4byte gPlttBufferFaded _0811ABB8: .4byte gPlttBufferUnfaded _0811ABBC: .4byte 0x04000100 _0811ABC0: .4byte gUnknown_083FD70C _0811ABC4: movs r1, 0x4 bl CreateTask ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0 _0811ABD2: pop {r4} pop {r1} bx r1 thumb_func_end sub_811AB88 thumb_func_start sub_811ABD8 sub_811ABD8: @ 811ABD8 push {r4,lr} adds r4, r0, 0 ldr r1, _0811ABF8 @ =gUnknown_083FD70C movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 adds r0, r1 ldr r0, [r0] bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF beq _0811ABFC movs r0, 0 b _0811AC04 .align 2, 0 _0811ABF8: .4byte gUnknown_083FD70C _0811ABFC: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0x1 _0811AC04: pop {r4} pop {r1} bx r1 thumb_func_end sub_811ABD8 thumb_func_start sub_811AC0C sub_811AC0C: @ 811AC0C push {r4,lr} adds r4, r0, 0 ldr r1, _0811AC30 @ =gBattleTransitionFuncs movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 adds r0, r1 ldr r0, [r0] movs r1, 0 bl CreateTask ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _0811AC30: .4byte gBattleTransitionFuncs thumb_func_end sub_811AC0C thumb_func_start sub_811AC34 sub_811AC34: @ 811AC34 push {r4,lr} adds r4, r0, 0 movs r0, 0 strh r0, [r4, 0x26] ldr r1, _0811AC60 @ =gBattleTransitionFuncs movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 adds r0, r1 ldr r0, [r0] bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF bne _0811AC58 movs r0, 0x1 strh r0, [r4, 0x26] _0811AC58: movs r0, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _0811AC60: .4byte gBattleTransitionFuncs thumb_func_end sub_811AC34 thumb_func_start sub_811AC64 sub_811AC64: @ 811AC64 push {r4,lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 adds r4, r0, 0 ldr r1, _0811AC98 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r1, r0, r1 ldrh r2, [r1, 0x8] movs r3, 0x8 ldrsh r0, [r1, r3] cmp r0, 0 bne _0811AC9C adds r0, r2, 0x1 strh r0, [r1, 0x8] movs r0, 0x2 str r0, [sp] movs r0, 0 movs r1, 0 movs r2, 0x3 movs r3, 0x2 bl sub_811D4C8 b _0811ACAC .align 2, 0 _0811AC98: .4byte gTasks _0811AC9C: bl sub_811D52C lsls r0, 24 cmp r0, 0 beq _0811ACAC adds r0, r4, 0 bl DestroyTask _0811ACAC: add sp, 0x4 pop {r4} pop {r0} bx r0 thumb_func_end sub_811AC64 thumb_func_start sub_811ACB4 sub_811ACB4: @ 811ACB4 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811ACE4 @ =gUnknown_083FD7A4 ldr r2, _0811ACE8 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811ACC6: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811ACC6 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811ACE4: .4byte gUnknown_083FD7A4 _0811ACE8: .4byte gTasks thumb_func_end sub_811ACB4 thumb_func_start sub_811ACEC sub_811ACEC: @ 811ACEC ldr r2, _0811AD18 @ =REG_MOSAIC movs r1, 0 strh r1, [r2] subs r2, 0x42 ldrh r1, [r2] movs r3, 0x40 orrs r1, r3 strh r1, [r2] adds r2, 0x2 ldrh r1, [r2] orrs r1, r3 strh r1, [r2] adds r2, 0x2 ldrh r1, [r2] orrs r1, r3 strh r1, [r2] ldrh r1, [r0, 0x8] adds r1, 0x1 strh r1, [r0, 0x8] movs r0, 0x1 bx lr .align 2, 0 _0811AD18: .4byte REG_MOSAIC thumb_func_end sub_811ACEC thumb_func_start sub_811AD1C sub_811AD1C: @ 811AD1C push {r4,lr} sub sp, 0x4 adds r4, r0, 0 ldrh r0, [r4, 0xA] movs r1, 0xA ldrsh r2, [r4, r1] cmp r2, 0 beq _0811AD32 subs r0, 0x1 strh r0, [r4, 0xA] b _0811AD70 _0811AD32: movs r0, 0x4 strh r0, [r4, 0xA] ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0xA bne _0811AD54 movs r1, 0x1 negs r1, r1 str r2, [sp] adds r0, r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade _0811AD54: ldr r2, _0811AD7C @ =REG_MOSAIC ldrh r0, [r4, 0xC] movs r1, 0xF ands r1, r0 lsls r0, r1, 4 adds r0, r1 strh r0, [r2] movs r1, 0xC ldrsh r0, [r4, r1] cmp r0, 0xE ble _0811AD70 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _0811AD70: movs r0, 0 add sp, 0x4 pop {r4} pop {r1} bx r1 .align 2, 0 _0811AD7C: .4byte REG_MOSAIC thumb_func_end sub_811AD1C thumb_func_start sub_811AD80 sub_811AD80: @ 811AD80 push {lr} ldr r0, _0811ADA4 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0811AD9C ldr r0, _0811ADA8 @ =sub_811ACB4 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask _0811AD9C: movs r0, 0 pop {r1} bx r1 .align 2, 0 _0811ADA4: .4byte gPaletteFade _0811ADA8: .4byte sub_811ACB4 thumb_func_end sub_811AD80 thumb_func_start sub_811ADAC sub_811ADAC: @ 811ADAC push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811ADDC @ =gUnknown_083FD7B0 ldr r2, _0811ADE0 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811ADBE: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811ADBE pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811ADDC: .4byte gUnknown_083FD7B0 _0811ADE0: .4byte gTasks thumb_func_end sub_811ADAC thumb_func_start sub_811ADE4 sub_811ADE4: @ 811ADE4 push {r4,r5,lr} sub sp, 0x8 adds r5, r0, 0 bl sub_811D658 bl dp12_8087EA4 movs r0, 0x1 negs r0, r0 movs r4, 0 str r4, [sp] movs r1, 0x4 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r0, _0811AE54 @ =gUnknown_03005560 ldr r1, _0811AE58 @ =0x0200c000 movs r2, 0x14 ldrsh r1, [r1, r2] str r4, [sp] movs r2, 0xA0 str r2, [sp, 0x4] movs r2, 0 movs r3, 0x2 bl sub_811D6E8 ldr r0, _0811AE5C @ =sub_811AEE0 bl SetVBlankCallback ldr r0, _0811AE60 @ =sub_811AF18 bl SetHBlankCallback ldr r3, _0811AE64 @ =0x04000208 ldrh r2, [r3] strh r4, [r3] ldr r4, _0811AE68 @ =0x04000200 ldrh r0, [r4] movs r1, 0x3 orrs r0, r1 strh r0, [r4] strh r2, [r3] ldr r2, _0811AE6C @ =REG_DISPSTAT ldrh r0, [r2] movs r1, 0x18 orrs r0, r1 strh r0, [r2] ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] movs r0, 0 add sp, 0x8 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0811AE54: .4byte gUnknown_03005560 _0811AE58: .4byte 0x0200c000 _0811AE5C: .4byte sub_811AEE0 _0811AE60: .4byte sub_811AF18 _0811AE64: .4byte 0x04000208 _0811AE68: .4byte 0x04000200 _0811AE6C: .4byte REG_DISPSTAT thumb_func_end sub_811ADE4 thumb_func_start sub_811AE70 sub_811AE70: @ 811AE70 push {r4,r5,lr} sub sp, 0x8 ldr r4, _0811AED0 @ =0x0200c000 ldrb r1, [r4] movs r1, 0 strb r1, [r4] ldrh r1, [r0, 0xA] adds r1, 0x4 strh r1, [r0, 0xA] ldrh r1, [r0, 0xC] adds r1, 0x8 strh r1, [r0, 0xC] ldr r3, _0811AED4 @ =gUnknown_03004DE0 movs r2, 0x14 ldrsh r1, [r4, r2] movs r5, 0xA ldrsh r2, [r0, r5] movs r5, 0xC ldrsh r0, [r0, r5] str r0, [sp] movs r0, 0xA0 str r0, [sp, 0x4] adds r0, r3, 0 movs r3, 0x2 bl sub_811D6E8 ldr r0, _0811AED8 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0811AEBE ldr r0, _0811AEDC @ =sub_811ADAC bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask _0811AEBE: ldrb r0, [r4] adds r0, 0x1 ldrb r1, [r4] strb r0, [r4] movs r0, 0 add sp, 0x8 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0811AED0: .4byte 0x0200c000 _0811AED4: .4byte gUnknown_03004DE0 _0811AED8: .4byte gPaletteFade _0811AEDC: .4byte sub_811ADAC thumb_func_end sub_811AE70 thumb_func_start sub_811AEE0 sub_811AEE0: @ 811AEE0 push {lr} bl sub_811D67C ldr r0, _0811AF08 @ =0x0200c000 ldrb r0, [r0] cmp r0, 0 beq _0811AF02 ldr r1, _0811AF0C @ =0x040000d4 ldr r0, _0811AF10 @ =gUnknown_03004DE0 str r0, [r1] movs r2, 0xF0 lsls r2, 3 adds r0, r2 str r0, [r1, 0x4] ldr r0, _0811AF14 @ =0x800000a0 str r0, [r1, 0x8] ldr r0, [r1, 0x8] _0811AF02: pop {r0} bx r0 .align 2, 0 _0811AF08: .4byte 0x0200c000 _0811AF0C: .4byte 0x040000d4 _0811AF10: .4byte gUnknown_03004DE0 _0811AF14: .4byte 0x800000a0 thumb_func_end sub_811AEE0 thumb_func_start sub_811AF18 sub_811AF18: @ 811AF18 ldr r1, _0811AF38 @ =gUnknown_03004DE0 ldr r0, _0811AF3C @ =REG_VCOUNT ldrh r0, [r0] lsls r0, 1 movs r2, 0xF0 lsls r2, 3 adds r1, r2 adds r0, r1 ldrh r1, [r0] ldr r0, _0811AF40 @ =REG_BG1HOFS strh r1, [r0] adds r0, 0x4 strh r1, [r0] adds r0, 0x4 strh r1, [r0] bx lr .align 2, 0 _0811AF38: .4byte gUnknown_03004DE0 _0811AF3C: .4byte REG_VCOUNT _0811AF40: .4byte REG_BG1HOFS thumb_func_end sub_811AF18 thumb_func_start sub_811AF44 sub_811AF44: @ 811AF44 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811AF74 @ =gUnknown_083FD7B8 ldr r2, _0811AF78 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811AF56: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811AF56 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811AF74: .4byte gUnknown_083FD7B8 _0811AF78: .4byte gTasks thumb_func_end sub_811AF44 thumb_func_start sub_811AF7C sub_811AF7C: @ 811AF7C push {r4,r5,lr} sub sp, 0x4 adds r5, r0, 0 bl sub_811D658 bl dp12_8087EA4 movs r0, 0x1 negs r0, r0 movs r4, 0 str r4, [sp] movs r1, 0x4 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r1, _0811AFE4 @ =0x0200c000 ldr r0, _0811AFE8 @ =gUnknown_03005560 movs r2, 0x16 ldrsh r1, [r1, r2] movs r2, 0xA0 lsls r2, 1 bl memset ldr r0, _0811AFEC @ =sub_811B08C bl SetVBlankCallback ldr r0, _0811AFF0 @ =sub_811B0C4 bl SetHBlankCallback ldr r3, _0811AFF4 @ =0x04000208 ldrh r2, [r3] strh r4, [r3] ldr r4, _0811AFF8 @ =0x04000200 ldrh r0, [r4] movs r1, 0x3 orrs r0, r1 strh r0, [r4] strh r2, [r3] ldr r2, _0811AFFC @ =REG_DISPSTAT ldrh r0, [r2] movs r1, 0x18 orrs r0, r1 strh r0, [r2] ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] movs r0, 0 add sp, 0x4 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0811AFE4: .4byte 0x0200c000 _0811AFE8: .4byte gUnknown_03005560 _0811AFEC: .4byte sub_811B08C _0811AFF0: .4byte sub_811B0C4 _0811AFF4: .4byte 0x04000208 _0811AFF8: .4byte 0x04000200 _0811AFFC: .4byte REG_DISPSTAT thumb_func_end sub_811AF7C thumb_func_start sub_811B000 sub_811B000: @ 811B000 push {r4-r7,lr} ldr r2, _0811B07C @ =0x0200c000 ldrb r1, [r2] movs r1, 0 strb r1, [r2] ldrh r4, [r0, 0xA] ldrh r2, [r0, 0xC] lsls r3, r2, 16 asrs r3, 24 movs r5, 0x84 lsls r5, 5 adds r1, r4, r5 strh r1, [r0, 0xA] movs r1, 0xC0 lsls r1, 1 adds r2, r1 strh r2, [r0, 0xC] movs r5, 0 lsls r7, r3, 16 _0811B026: lsrs r0, r4, 8 asrs r1, r7, 16 bl Sin ldr r2, _0811B080 @ =gUnknown_03004DE0 lsls r1, r5, 1 adds r1, r2 ldr r6, _0811B07C @ =0x0200c000 ldrh r2, [r6, 0x16] adds r0, r2 strh r0, [r1] adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 movs r1, 0x84 lsls r1, 5 adds r0, r4, r1 lsls r0, 16 lsrs r4, r0, 16 cmp r5, 0x9F bls _0811B026 ldr r0, _0811B084 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0811B06A ldr r0, _0811B088 @ =sub_811AF44 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask _0811B06A: ldrb r0, [r6] adds r0, 0x1 ldrb r1, [r6] strb r0, [r6] movs r0, 0 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0811B07C: .4byte 0x0200c000 _0811B080: .4byte gUnknown_03004DE0 _0811B084: .4byte gPaletteFade _0811B088: .4byte sub_811AF44 thumb_func_end sub_811B000 thumb_func_start sub_811B08C sub_811B08C: @ 811B08C push {lr} bl sub_811D67C ldr r0, _0811B0B4 @ =0x0200c000 ldrb r0, [r0] cmp r0, 0 beq _0811B0AE ldr r1, _0811B0B8 @ =0x040000d4 ldr r0, _0811B0BC @ =gUnknown_03004DE0 str r0, [r1] movs r2, 0xF0 lsls r2, 3 adds r0, r2 str r0, [r1, 0x4] ldr r0, _0811B0C0 @ =0x800000a0 str r0, [r1, 0x8] ldr r0, [r1, 0x8] _0811B0AE: pop {r0} bx r0 .align 2, 0 _0811B0B4: .4byte 0x0200c000 _0811B0B8: .4byte 0x040000d4 _0811B0BC: .4byte gUnknown_03004DE0 _0811B0C0: .4byte 0x800000a0 thumb_func_end sub_811B08C thumb_func_start sub_811B0C4 sub_811B0C4: @ 811B0C4 ldr r1, _0811B0E4 @ =gUnknown_03004DE0 ldr r0, _0811B0E8 @ =REG_VCOUNT ldrh r0, [r0] lsls r0, 1 movs r2, 0xF0 lsls r2, 3 adds r1, r2 adds r0, r1 ldrh r1, [r0] ldr r0, _0811B0EC @ =REG_BG1VOFS strh r1, [r0] adds r0, 0x4 strh r1, [r0] adds r0, 0x4 strh r1, [r0] bx lr .align 2, 0 _0811B0E4: .4byte gUnknown_03004DE0 _0811B0E8: .4byte REG_VCOUNT _0811B0EC: .4byte REG_BG1VOFS thumb_func_end sub_811B0C4 thumb_func_start sub_811B0F0 sub_811B0F0: @ 811B0F0 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811B120 @ =gUnknown_083FD7C0 ldr r2, _0811B124 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811B102: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811B102 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811B120: .4byte gUnknown_083FD7C0 _0811B124: .4byte gTasks thumb_func_end sub_811B0F0 thumb_func_start sub_811B128 sub_811B128: @ 811B128 push {r4-r6,lr} sub sp, 0xC adds r4, r0, 0 bl sub_811D658 bl dp12_8087EA4 movs r2, 0 movs r3, 0x10 strh r3, [r4, 0xA] strh r2, [r4, 0xC] strh r2, [r4, 0x10] movs r0, 0x80 lsls r0, 7 strh r0, [r4, 0x12] ldr r1, _0811B1BC @ =0x0200c000 movs r0, 0x3F strh r0, [r1, 0x2] strh r2, [r1, 0x4] movs r0, 0xF0 strh r0, [r1, 0x6] movs r0, 0xA0 strh r0, [r1, 0x8] ldr r0, _0811B1C0 @ =0x00003f41 strh r0, [r1, 0xE] lsls r3, 8 strh r3, [r1, 0x10] movs r1, 0 add r5, sp, 0x4 add r6, sp, 0x8 ldr r3, _0811B1C4 @ =gUnknown_03005560 movs r2, 0xF0 _0811B168: lsls r0, r1, 1 adds r0, r3 strh r2, [r0] adds r0, r1, 0x1 lsls r0, 16 lsrs r1, r0, 16 cmp r1, 0x9F bls _0811B168 ldr r0, _0811B1C8 @ =sub_811B520 bl SetVBlankCallback adds r0, r5, 0 adds r1, r6, 0 bl sub_811D6A8 mov r1, sp movs r0, 0 strh r0, [r1] ldr r1, [sp, 0x4] ldr r2, _0811B1CC @ =0x01000400 mov r0, sp bl CpuSet ldr r0, _0811B1D0 @ =gUnknown_083FBB88 ldr r1, [sp, 0x8] movs r2, 0xB0 lsls r2, 2 bl CpuSet ldr r0, _0811B1D4 @ =gFieldEffectObjectPalette10 movs r1, 0xF0 movs r2, 0x20 bl LoadPalette ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0 add sp, 0xC pop {r4-r6} pop {r1} bx r1 .align 2, 0 _0811B1BC: .4byte 0x0200c000 _0811B1C0: .4byte 0x00003f41 _0811B1C4: .4byte gUnknown_03005560 _0811B1C8: .4byte sub_811B520 _0811B1CC: .4byte 0x01000400 _0811B1D0: .4byte gUnknown_083FBB88 _0811B1D4: .4byte gFieldEffectObjectPalette10 thumb_func_end sub_811B128 thumb_func_start sub_811B1D8 sub_811B1D8: @ 811B1D8 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x10 adds r7, r0, 0 ldr r5, _0811B260 @ =gUnknown_083FDB44 add r1, sp, 0xC add r0, sp, 0x8 bl sub_811D6A8 movs r1, 0 ldr r0, [sp, 0x8] mov r9, r0 ldr r6, _0811B264 @ =gUnknown_03004DE0 mov r8, r6 movs r0, 0xF0 lsls r0, 8 mov r12, r0 _0811B1FE: movs r0, 0 lsls r3, r1, 16 asrs r4, r3, 11 _0811B204: lsls r2, r0, 16 asrs r2, 16 adds r1, r4, r2 lsls r1, 1 add r1, r9 ldrh r0, [r5] mov r6, r12 orrs r0, r6 strh r0, [r1] adds r2, 0x1 lsls r2, 16 adds r5, 0x2 lsrs r0, r2, 16 asrs r2, 16 cmp r2, 0x1D ble _0811B204 movs r1, 0x80 lsls r1, 9 adds r0, r3, r1 lsrs r1, r0, 16 asrs r0, 16 cmp r0, 0x13 ble _0811B1FE movs r6, 0x10 ldrsh r2, [r7, r6] movs r1, 0x12 ldrsh r0, [r7, r1] str r0, [sp] movs r0, 0xA0 str r0, [sp, 0x4] mov r0, r8 movs r1, 0 movs r3, 0x84 bl sub_811D6E8 ldrh r0, [r7, 0x8] adds r0, 0x1 strh r0, [r7, 0x8] movs r0, 0x1 add sp, 0x10 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0811B260: .4byte gUnknown_083FDB44 _0811B264: .4byte gUnknown_03004DE0 thumb_func_end sub_811B1D8 thumb_func_start sub_811B268 sub_811B268: @ 811B268 push {r4,lr} sub sp, 0x8 adds r2, r0, 0 ldr r1, _0811B2E8 @ =0x0200c000 ldrb r0, [r1] movs r0, 0 strb r0, [r1] ldrh r3, [r2, 0xE] movs r4, 0xE ldrsh r0, [r2, r4] adds r4, r1, 0 cmp r0, 0 beq _0811B28C subs r0, r3, 0x1 strh r0, [r2, 0xE] lsls r0, 16 cmp r0, 0 bne _0811B296 _0811B28C: ldrh r0, [r2, 0xC] adds r0, 0x1 strh r0, [r2, 0xC] movs r0, 0x2 strh r0, [r2, 0xE] _0811B296: ldrh r0, [r2, 0xA] lsls r0, 8 ldrh r1, [r2, 0xC] orrs r0, r1 strh r0, [r4, 0x10] lsls r1, 16 asrs r1, 16 cmp r1, 0xF ble _0811B2AE ldrh r0, [r2, 0x8] adds r0, 0x1 strh r0, [r2, 0x8] _0811B2AE: ldrh r0, [r2, 0x10] adds r0, 0x8 strh r0, [r2, 0x10] ldr r0, _0811B2EC @ =0xffffff00 adds r1, r0, 0 ldrh r3, [r2, 0x12] adds r1, r3 strh r1, [r2, 0x12] ldr r0, _0811B2F0 @ =gUnknown_03004DE0 movs r3, 0x10 ldrsh r2, [r2, r3] lsls r1, 16 asrs r1, 24 str r1, [sp] movs r1, 0xA0 str r1, [sp, 0x4] movs r1, 0 movs r3, 0x84 bl sub_811D6E8 ldrb r0, [r4] adds r0, 0x1 ldrb r1, [r4] strb r0, [r4] movs r0, 0 add sp, 0x8 pop {r4} pop {r1} bx r1 .align 2, 0 _0811B2E8: .4byte 0x0200c000 _0811B2EC: .4byte 0xffffff00 _0811B2F0: .4byte gUnknown_03004DE0 thumb_func_end sub_811B268 thumb_func_start sub_811B2F4 sub_811B2F4: @ 811B2F4 push {r4,r5,lr} sub sp, 0x8 adds r3, r0, 0 ldr r1, _0811B374 @ =0x0200c000 ldrb r0, [r1] movs r0, 0 strb r0, [r1] ldrh r2, [r3, 0xE] movs r4, 0xE ldrsh r0, [r3, r4] adds r4, r1, 0 cmp r0, 0 beq _0811B318 subs r0, r2, 0x1 strh r0, [r3, 0xE] lsls r0, 16 cmp r0, 0 bne _0811B322 _0811B318: ldrh r0, [r3, 0xA] subs r0, 0x1 strh r0, [r3, 0xA] movs r0, 0x2 strh r0, [r3, 0xE] _0811B322: ldrh r0, [r3, 0xA] lsls r1, r0, 8 ldrh r2, [r3, 0xC] orrs r1, r2 strh r1, [r4, 0x10] lsls r0, 16 cmp r0, 0 bne _0811B338 ldrh r0, [r3, 0x8] adds r0, 0x1 strh r0, [r3, 0x8] _0811B338: ldrh r0, [r3, 0x10] adds r0, 0x8 strh r0, [r3, 0x10] ldr r5, _0811B378 @ =0xffffff00 adds r1, r5, 0 ldrh r0, [r3, 0x12] adds r1, r0 strh r1, [r3, 0x12] ldr r0, _0811B37C @ =gUnknown_03004DE0 movs r5, 0x10 ldrsh r2, [r3, r5] lsls r1, 16 asrs r1, 24 str r1, [sp] movs r1, 0xA0 str r1, [sp, 0x4] movs r1, 0 movs r3, 0x84 bl sub_811D6E8 ldrb r0, [r4] adds r0, 0x1 ldrb r1, [r4] strb r0, [r4] movs r0, 0 add sp, 0x8 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0811B374: .4byte 0x0200c000 _0811B378: .4byte 0xffffff00 _0811B37C: .4byte gUnknown_03004DE0 thumb_func_end sub_811B2F4 thumb_func_start sub_811B380 sub_811B380: @ 811B380 push {r4-r7,lr} sub sp, 0x8 adds r4, r0, 0 ldr r5, _0811B3E0 @ =0x0200c000 ldrb r0, [r5] movs r7, 0 strb r7, [r5] ldrh r0, [r4, 0x10] adds r0, 0x8 strh r0, [r4, 0x10] ldr r0, _0811B3E4 @ =0xffffff00 adds r1, r0, 0 ldrh r3, [r4, 0x12] adds r1, r3 strh r1, [r4, 0x12] ldr r0, _0811B3E8 @ =gUnknown_03004DE0 movs r3, 0x10 ldrsh r2, [r4, r3] lsls r1, 16 asrs r1, 24 str r1, [sp] movs r6, 0xA0 str r6, [sp, 0x4] movs r1, 0 movs r3, 0x84 bl sub_811D6E8 movs r1, 0x12 ldrsh r0, [r4, r1] cmp r0, 0 bgt _0811B3CE ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] strh r6, [r4, 0xA] movs r0, 0x80 lsls r0, 1 strh r0, [r4, 0xC] strh r7, [r4, 0xE] _0811B3CE: ldrb r0, [r5] adds r0, 0x1 ldrb r1, [r5] strb r0, [r5] movs r0, 0 add sp, 0x8 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0811B3E0: .4byte 0x0200c000 _0811B3E4: .4byte 0xffffff00 _0811B3E8: .4byte gUnknown_03004DE0 thumb_func_end sub_811B380 thumb_func_start sub_811B3EC sub_811B3EC: @ 811B3EC push {r4,lr} adds r4, r0, 0 ldr r0, _0811B488 @ =0x0200c000 ldrb r1, [r0] movs r3, 0 strb r3, [r0] ldrh r2, [r4, 0xC] movs r0, 0xC ldrsh r1, [r4, r0] ldr r0, _0811B48C @ =0x000003ff cmp r1, r0 bgt _0811B40A adds r0, r2, 0 adds r0, 0x80 strh r0, [r4, 0xC] _0811B40A: ldrh r1, [r4, 0xA] movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0 beq _0811B426 ldrh r0, [r4, 0xC] lsls r0, 16 asrs r0, 24 subs r0, r1, r0 strh r0, [r4, 0xA] lsls r0, 16 cmp r0, 0 bge _0811B426 strh r3, [r4, 0xA] _0811B426: ldr r0, _0811B490 @ =gUnknown_03004DE0 movs r1, 0xA ldrsh r3, [r4, r1] movs r1, 0x78 movs r2, 0x50 bl sub_811D764 movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0 bne _0811B462 ldr r1, _0811B494 @ =0x040000b0 ldrh r2, [r1, 0xA] ldr r0, _0811B498 @ =0x0000c5ff ands r0, r2 strh r0, [r1, 0xA] ldrh r2, [r1, 0xA] ldr r0, _0811B49C @ =0x00007fff ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] bl sub_811D6D4 ldr r0, _0811B4A0 @ =sub_811B0F0 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask _0811B462: ldrh r1, [r4, 0xE] movs r2, 0xE ldrsh r0, [r4, r2] cmp r0, 0 bne _0811B476 adds r0, r1, 0x1 strh r0, [r4, 0xE] ldr r0, _0811B4A4 @ =sub_811B54C bl SetVBlankCallback _0811B476: ldr r0, _0811B488 @ =0x0200c000 ldrb r1, [r0] adds r1, 0x1 ldrb r2, [r0] strb r1, [r0] movs r0, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _0811B488: .4byte 0x0200c000 _0811B48C: .4byte 0x000003ff _0811B490: .4byte gUnknown_03004DE0 _0811B494: .4byte 0x040000b0 _0811B498: .4byte 0x0000c5ff _0811B49C: .4byte 0x00007fff _0811B4A0: .4byte sub_811B0F0 _0811B4A4: .4byte sub_811B54C thumb_func_end sub_811B3EC thumb_func_start sub_811B4A8 sub_811B4A8: @ 811B4A8 push {lr} ldr r1, _0811B500 @ =0x040000b0 ldrh r2, [r1, 0xA] ldr r0, _0811B504 @ =0x0000c5ff ands r0, r2 strh r0, [r1, 0xA] ldrh r2, [r1, 0xA] ldr r0, _0811B508 @ =0x00007fff ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] bl sub_811D67C ldr r2, _0811B50C @ =0x0200c000 ldrb r0, [r2] cmp r0, 0 beq _0811B4DE ldr r1, _0811B510 @ =0x040000d4 ldr r0, _0811B514 @ =gUnknown_03004DE0 str r0, [r1] movs r3, 0xF0 lsls r3, 3 adds r0, r3 str r0, [r1, 0x4] ldr r0, _0811B518 @ =0x800000a0 str r0, [r1, 0x8] ldr r0, [r1, 0x8] _0811B4DE: ldr r1, _0811B51C @ =REG_WININ ldrh r0, [r2, 0x2] strh r0, [r1] adds r1, 0x2 ldrh r0, [r2, 0x4] strh r0, [r1] subs r1, 0x6 ldrh r0, [r2, 0x8] strh r0, [r1] adds r1, 0xC ldrh r0, [r2, 0xE] strh r0, [r1] adds r1, 0x2 ldrh r0, [r2, 0x10] strh r0, [r1] pop {r0} bx r0 .align 2, 0 _0811B500: .4byte 0x040000b0 _0811B504: .4byte 0x0000c5ff _0811B508: .4byte 0x00007fff _0811B50C: .4byte 0x0200c000 _0811B510: .4byte 0x040000d4 _0811B514: .4byte gUnknown_03004DE0 _0811B518: .4byte 0x800000a0 _0811B51C: .4byte REG_WININ thumb_func_end sub_811B4A8 thumb_func_start sub_811B520 sub_811B520: @ 811B520 push {lr} bl sub_811B4A8 ldr r1, _0811B53C @ =0x040000b0 ldr r0, _0811B540 @ =gUnknown_03005560 str r0, [r1] ldr r0, _0811B544 @ =REG_BG0HOFS str r0, [r1, 0x4] ldr r0, _0811B548 @ =0xa2400001 str r0, [r1, 0x8] ldr r0, [r1, 0x8] pop {r0} bx r0 .align 2, 0 _0811B53C: .4byte 0x040000b0 _0811B540: .4byte gUnknown_03005560 _0811B544: .4byte REG_BG0HOFS _0811B548: .4byte 0xa2400001 thumb_func_end sub_811B520 thumb_func_start sub_811B54C sub_811B54C: @ 811B54C push {lr} bl sub_811B4A8 ldr r1, _0811B568 @ =0x040000b0 ldr r0, _0811B56C @ =gUnknown_03005560 str r0, [r1] ldr r0, _0811B570 @ =REG_WIN0H str r0, [r1, 0x4] ldr r0, _0811B574 @ =0xa2400001 str r0, [r1, 0x8] ldr r0, [r1, 0x8] pop {r0} bx r0 .align 2, 0 _0811B568: .4byte 0x040000b0 _0811B56C: .4byte gUnknown_03005560 _0811B570: .4byte REG_WIN0H _0811B574: .4byte 0xa2400001 thumb_func_end sub_811B54C thumb_func_start sub_811B578 sub_811B578: @ 811B578 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811B5A8 @ =gUnknown_083FD7D8 ldr r2, _0811B5AC @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811B58A: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811B58A pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811B5A8: .4byte gUnknown_083FD7D8 _0811B5AC: .4byte gTasks thumb_func_end sub_811B578 thumb_func_start sub_811B5B0 sub_811B5B0: @ 811B5B0 push {r4,lr} sub sp, 0xC adds r4, r0, 0 add r0, sp, 0x4 add r1, sp, 0x8 bl sub_811D6A8 ldr r0, _0811B5F0 @ =gUnknown_083FC108 ldr r1, [sp, 0x8] movs r2, 0x20 bl CpuSet movs r0, 0 str r0, [sp] ldr r1, [sp, 0x4] ldr r2, _0811B5F4 @ =0x05000200 mov r0, sp bl CpuSet ldr r0, _0811B5F8 @ =gFieldEffectObjectPalette10 movs r1, 0xF0 movs r2, 0x20 bl LoadPalette ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0 add sp, 0xC pop {r4} pop {r1} bx r1 .align 2, 0 _0811B5F0: .4byte gUnknown_083FC108 _0811B5F4: .4byte 0x05000200 _0811B5F8: .4byte gFieldEffectObjectPalette10 thumb_func_end sub_811B5B0 thumb_func_start sub_811B5FC sub_811B5FC: @ 811B5FC push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x10 adds r7, r0, 0 ldr r1, _0811B67C @ =gUnknown_083FD7E4 mov r0, sp movs r2, 0x4 bl memcpy add r4, sp, 0x4 ldr r1, _0811B680 @ =gUnknown_083FD7E8 adds r0, r4, 0 movs r2, 0xA bl memcpy bl Random movs r5, 0x1 ands r5, r0 movs r1, 0 mov r8, r4 ldr r6, _0811B684 @ =gUnknown_0202FF84 _0811B62A: lsls r5, 16 asrs r5, 16 lsls r0, r5, 1 add r0, sp movs r2, 0 ldrsh r0, [r0, r2] str r0, [r6] lsls r4, r1, 16 asrs r4, 16 lsls r0, r4, 5 adds r0, 0x10 str r0, [r6, 0x4] str r5, [r6, 0x8] lsls r0, r4, 1 add r0, r8 movs r1, 0 ldrsh r0, [r0, r1] str r0, [r6, 0xC] movs r0, 0x2D bl FieldEffectStart adds r4, 0x1 lsls r4, 16 movs r0, 0x1 eors r5, r0 lsls r5, 16 lsrs r5, 16 lsrs r1, r4, 16 asrs r4, 16 cmp r4, 0x4 ble _0811B62A ldrh r0, [r7, 0x8] adds r0, 0x1 strh r0, [r7, 0x8] movs r0, 0 add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0811B67C: .4byte gUnknown_083FD7E4 _0811B680: .4byte gUnknown_083FD7E8 _0811B684: .4byte gUnknown_0202FF84 thumb_func_end sub_811B5FC thumb_func_start sub_811B688 sub_811B688: @ 811B688 push {lr} movs r0, 0x2D bl FieldEffectActiveListContains lsls r0, 24 cmp r0, 0 bne _0811B6A8 bl sub_811D6D4 ldr r0, _0811B6B0 @ =sub_811B578 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask _0811B6A8: movs r0, 0 pop {r1} bx r1 .align 2, 0 _0811B6B0: .4byte sub_811B578 thumb_func_end sub_811B688 thumb_func_start FldEff_Pokeball FldEff_Pokeball: @ 811B6B4 push {r4,r5,lr} ldr r0, _0811B710 @ =gSpriteTemplate_83FD98C ldr r5, _0811B714 @ =gUnknown_0202FF84 movs r2, 0 ldrsh r1, [r5, r2] movs r3, 0x4 ldrsh r2, [r5, r3] movs r3, 0 bl CreateSpriteAtEnd lsls r0, 24 lsrs r0, 24 ldr r1, _0811B718 @ =gSprites lsls r4, r0, 4 adds r4, r0 lsls r4, 2 adds r4, r1 ldrb r1, [r4, 0x5] movs r0, 0xD negs r0, r0 ands r0, r1 strb r0, [r4, 0x5] ldrb r1, [r4, 0x1] movs r0, 0x4 negs r0, r0 ands r0, r1 movs r1, 0x1 orrs r0, r1 strb r0, [r4, 0x1] ldr r0, [r5, 0x8] strh r0, [r4, 0x2E] ldr r0, [r5, 0xC] strh r0, [r4, 0x30] ldr r0, _0811B71C @ =0x0000ffff strh r0, [r4, 0x32] adds r0, r4, 0 bl InitSpriteAffineAnim ldrb r1, [r5, 0x8] adds r0, r4, 0 bl StartSpriteAffineAnim movs r0, 0 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0811B710: .4byte gSpriteTemplate_83FD98C _0811B714: .4byte gUnknown_0202FF84 _0811B718: .4byte gSprites _0811B71C: .4byte 0x0000ffff thumb_func_end FldEff_Pokeball thumb_func_start sub_811B720 sub_811B720: @ 811B720 push {r4-r6,lr} sub sp, 0x4 adds r4, r0, 0 ldr r1, _0811B740 @ =gUnknown_083FD7F2 mov r0, sp movs r2, 0x4 bl memcpy ldrh r1, [r4, 0x30] movs r2, 0x30 ldrsh r0, [r4, r2] cmp r0, 0 beq _0811B744 subs r0, r1, 0x1 strh r0, [r4, 0x30] b _0811B7D6 .align 2, 0 _0811B740: .4byte gUnknown_083FD7F2 _0811B744: ldrh r0, [r4, 0x20] lsls r1, r0, 16 lsrs r0, r1, 16 cmp r0, 0xF0 bhi _0811B7B2 asrs r0, r1, 19 lsls r0, 16 ldrh r1, [r4, 0x22] lsls r1, 16 asrs r1, 19 lsls r1, 16 lsrs r1, 16 lsrs r2, r0, 16 asrs r5, r0, 16 movs r3, 0x32 ldrsh r0, [r4, r3] cmp r5, r0 beq _0811B7B2 strh r2, [r4, 0x32] ldr r0, _0811B7E0 @ =REG_BG0CNT ldrh r2, [r0] lsrs r2, 8 movs r0, 0x1F ands r2, r0 lsls r2, 11 movs r0, 0xC0 lsls r0, 19 adds r2, r0 lsls r1, 16 asrs r1, 16 subs r0, r1, 0x2 lsls r0, 5 adds r0, r5 lsls r0, 1 adds r0, r2 ldr r6, _0811B7E4 @ =0x0000f001 adds r3, r6, 0 strh r3, [r0] subs r0, r1, 0x1 lsls r0, 5 adds r0, r5 lsls r0, 1 adds r0, r2 strh r3, [r0] lsls r0, r1, 5 adds r0, r5 lsls r0, 1 adds r0, r2 strh r3, [r0] adds r1, 0x1 lsls r1, 5 adds r1, r5 lsls r1, 1 adds r1, r2 strh r3, [r1] _0811B7B2: movs r1, 0x2E ldrsh r0, [r4, r1] lsls r0, 1 add r0, sp ldrh r0, [r0] ldrh r2, [r4, 0x20] adds r0, r2 strh r0, [r4, 0x20] adds r0, 0xF lsls r0, 16 movs r1, 0x87 lsls r1, 17 cmp r0, r1 bls _0811B7D6 adds r0, r4, 0 movs r1, 0x2D bl FieldEffectStop _0811B7D6: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0811B7E0: .4byte REG_BG0CNT _0811B7E4: .4byte 0x0000f001 thumb_func_end sub_811B720 thumb_func_start sub_811B7E8 sub_811B7E8: @ 811B7E8 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811B818 @ =gUnknown_083FD7F8 ldr r2, _0811B81C @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811B7FA: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811B7FA pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811B818: .4byte gUnknown_083FD7F8 _0811B81C: .4byte gTasks thumb_func_end sub_811B7E8 thumb_func_start sub_811B820 sub_811B820: @ 811B820 push {r4,lr} adds r4, r0, 0 bl sub_811D658 bl dp12_8087EA4 ldr r1, _0811B870 @ =0x0200c000 movs r0, 0 strh r0, [r1, 0x2] movs r0, 0x3F strh r0, [r1, 0x4] ldr r0, _0811B874 @ =0x0000f0f1 strh r0, [r1, 0x6] movs r0, 0xA0 strh r0, [r1, 0x8] movs r1, 0 ldr r3, _0811B878 @ =gUnknown_03005560 ldr r2, _0811B87C @ =0x0000f3f4 _0811B844: lsls r0, r1, 1 adds r0, r3 strh r2, [r0] adds r0, r1, 0x1 lsls r0, 16 lsrs r1, r0, 16 cmp r1, 0x9F bls _0811B844 ldr r0, _0811B880 @ =sub_811BC2C bl SetVBlankCallback ldr r1, _0811B870 @ =0x0200c000 movs r0, 0x78 strh r0, [r1, 0x2C] ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0x1 pop {r4} pop {r1} bx r1 .align 2, 0 _0811B870: .4byte 0x0200c000 _0811B874: .4byte 0x0000f0f1 _0811B878: .4byte gUnknown_03005560 _0811B87C: .4byte 0x0000f3f4 _0811B880: .4byte sub_811BC2C thumb_func_end sub_811B820 thumb_func_start sub_811B884 sub_811B884: @ 811B884 push {r4-r6,lr} sub sp, 0xC adds r6, r0, 0 ldr r4, _0811B904 @ =0x0200c000 ldrb r0, [r4] movs r0, 0 strb r0, [r4] adds r0, r4, 0 adds r0, 0x24 movs r1, 0x2C ldrsh r3, [r4, r1] movs r1, 0x1 negs r1, r1 str r1, [sp] movs r1, 0x1 str r1, [sp, 0x4] str r1, [sp, 0x8] movs r1, 0x78 movs r2, 0x50 bl sub_811D8FC ldr r5, _0811B908 @ =gUnknown_03004DE0 _0811B8B0: movs r3, 0x2A ldrsh r2, [r4, r3] lsls r2, 1 adds r2, r5 ldrh r0, [r4, 0x28] adds r0, 0x1 movs r3, 0xF0 lsls r3, 7 adds r1, r3, 0 orrs r0, r1 strh r0, [r2] adds r0, r4, 0 adds r0, 0x24 movs r1, 0x1 movs r2, 0x1 bl sub_811D978 lsls r0, 24 cmp r0, 0 beq _0811B8B0 ldr r2, _0811B904 @ =0x0200c000 ldrh r0, [r2, 0x2C] adds r0, 0x10 strh r0, [r2, 0x2C] lsls r0, 16 asrs r0, 16 cmp r0, 0xEF ble _0811B8F2 movs r0, 0 strh r0, [r2, 0x2E] ldrh r0, [r6, 0x8] adds r0, 0x1 strh r0, [r6, 0x8] _0811B8F2: ldrb r0, [r2] adds r0, 0x1 ldrb r1, [r2] strb r0, [r2] movs r0, 0 add sp, 0xC pop {r4-r6} pop {r1} bx r1 .align 2, 0 _0811B904: .4byte 0x0200c000 _0811B908: .4byte gUnknown_03004DE0 thumb_func_end sub_811B884 thumb_func_start sub_811B90C sub_811B90C: @ 811B90C push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x10 adds r7, r0, 0 add r1, sp, 0xC movs r0, 0 strb r0, [r1] ldr r4, _0811B988 @ =0x0200c000 ldrb r0, [r4] movs r0, 0 strb r0, [r4] adds r0, r4, 0 adds r0, 0x24 movs r2, 0x2E ldrsh r1, [r4, r2] str r1, [sp] movs r1, 0x1 str r1, [sp, 0x4] str r1, [sp, 0x8] movs r1, 0x78 movs r2, 0x50 movs r3, 0xF0 bl sub_811D8FC adds r6, r4, 0 ldr r5, _0811B98C @ =gUnknown_03004DE0 mov r8, r5 add r5, sp, 0xC _0811B946: movs r1, 0x78 ldrh r0, [r4, 0x28] adds r0, 0x1 lsls r0, 16 lsrs r3, r0, 16 movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0x4F ble _0811B95C ldrh r1, [r4, 0x28] movs r3, 0xF0 _0811B95C: movs r0, 0x2A ldrsh r2, [r4, r0] lsls r2, 1 add r2, r8 lsls r1, 16 asrs r1, 8 lsls r0, r3, 16 asrs r3, r0, 16 orrs r3, r1 strh r3, [r2] ldrb r0, [r5] cmp r0, 0 bne _0811B990 adds r0, r4, 0 adds r0, 0x24 movs r1, 0x1 movs r2, 0x1 bl sub_811D978 strb r0, [r5] b _0811B946 .align 2, 0 _0811B988: .4byte 0x0200c000 _0811B98C: .4byte gUnknown_03004DE0 _0811B990: ldrh r0, [r4, 0x2E] adds r0, 0x8 strh r0, [r4, 0x2E] lsls r0, 16 asrs r1, r0, 16 cmp r1, 0x9F ble _0811B9AA movs r0, 0xF0 strh r0, [r4, 0x2C] ldrh r0, [r7, 0x8] adds r0, 0x1 strh r0, [r7, 0x8] b _0811B9D0 _0811B9AA: movs r2, 0x2A ldrsh r0, [r4, r2] cmp r0, r1 bge _0811B9D0 ldr r4, _0811B9E8 @ =gUnknown_03004DE0 ldr r2, _0811B9EC @ =0x0200c000 _0811B9B6: ldrh r0, [r2, 0x2A] adds r0, 0x1 strh r0, [r2, 0x2A] lsls r0, 16 asrs r0, 15 adds r0, r4 strh r3, [r0] movs r5, 0x2A ldrsh r1, [r2, r5] movs r5, 0x2E ldrsh r0, [r2, r5] cmp r1, r0 blt _0811B9B6 _0811B9D0: ldrb r0, [r6] adds r0, 0x1 ldrb r1, [r6] strb r0, [r6] movs r0, 0 add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0811B9E8: .4byte gUnknown_03004DE0 _0811B9EC: .4byte 0x0200c000 thumb_func_end sub_811B90C thumb_func_start sub_811B9F0 sub_811B9F0: @ 811B9F0 push {r4-r6,lr} sub sp, 0xC adds r6, r0, 0 ldr r4, _0811BA68 @ =0x0200c000 ldrb r0, [r4] movs r0, 0 strb r0, [r4] adds r0, r4, 0 adds r0, 0x24 movs r1, 0x2C ldrsh r3, [r4, r1] movs r1, 0xA0 str r1, [sp] movs r1, 0x1 str r1, [sp, 0x4] str r1, [sp, 0x8] movs r1, 0x78 movs r2, 0x50 bl sub_811D8FC ldr r5, _0811BA6C @ =gUnknown_03004DE0 _0811BA1A: movs r0, 0x2A ldrsh r2, [r4, r0] lsls r2, 1 adds r2, r5 ldrh r0, [r4, 0x28] lsls r0, 8 movs r1, 0xF0 orrs r0, r1 strh r0, [r2] adds r0, r4, 0 adds r0, 0x24 movs r1, 0x1 movs r2, 0x1 bl sub_811D978 lsls r0, 24 cmp r0, 0 beq _0811BA1A ldr r2, _0811BA68 @ =0x0200c000 ldrh r0, [r2, 0x2C] subs r0, 0x10 strh r0, [r2, 0x2C] lsls r0, 16 cmp r0, 0 bgt _0811BA56 movs r0, 0xA0 strh r0, [r2, 0x2E] ldrh r0, [r6, 0x8] adds r0, 0x1 strh r0, [r6, 0x8] _0811BA56: ldrb r0, [r2] adds r0, 0x1 ldrb r1, [r2] strb r0, [r2] movs r0, 0 add sp, 0xC pop {r4-r6} pop {r1} bx r1 .align 2, 0 _0811BA68: .4byte 0x0200c000 _0811BA6C: .4byte gUnknown_03004DE0 thumb_func_end sub_811B9F0 thumb_func_start sub_811BA70 sub_811BA70: @ 811BA70 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 mov r8, r0 add r1, sp, 0xC movs r0, 0 strb r0, [r1] ldr r4, _0811BAF0 @ =0x0200c000 ldrb r0, [r4] movs r0, 0 strb r0, [r4] adds r0, r4, 0 adds r0, 0x24 movs r2, 0x2E ldrsh r1, [r4, r2] str r1, [sp] movs r1, 0x1 str r1, [sp, 0x4] str r1, [sp, 0x8] movs r1, 0x78 movs r2, 0x50 movs r3, 0 bl sub_811D8FC ldr r3, _0811BAF4 @ =gUnknown_03004DE0 mov r9, r3 mov r10, r4 add r6, sp, 0xC _0811BAAE: movs r5, 0x2A ldrsh r0, [r4, r5] lsls r0, 1 mov r7, r9 adds r5, r0, r7 ldrb r1, [r5] ldrh r2, [r4, 0x28] adds r3, r2, 0 movs r7, 0x2E ldrsh r0, [r4, r7] cmp r0, 0x50 bgt _0811BACA movs r2, 0x78 adds r1, r3, 0 _0811BACA: lsls r0, r2, 16 asrs r0, 8 lsls r1, 16 asrs r1, 16 orrs r1, r0 movs r3, 0 strh r1, [r5] ldrb r0, [r6] cmp r0, 0 bne _0811BAF8 adds r0, r4, 0 adds r0, 0x24 movs r1, 0x1 movs r2, 0x1 bl sub_811D978 strb r0, [r6] b _0811BAAE .align 2, 0 _0811BAF0: .4byte 0x0200c000 _0811BAF4: .4byte gUnknown_03004DE0 _0811BAF8: ldrh r0, [r4, 0x2E] subs r0, 0x8 strh r0, [r4, 0x2E] lsls r0, 16 asrs r2, r0, 16 cmp r2, 0 bgt _0811BB12 strh r3, [r4, 0x2C] mov r1, r8 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] b _0811BB3A _0811BB12: movs r3, 0x2A ldrsh r0, [r4, r3] cmp r0, r2 ble _0811BB3A ldr r4, _0811BB58 @ =gUnknown_03004DE0 ldr r2, _0811BB5C @ =0x0200c000 adds r3, r1, 0 _0811BB20: ldrh r0, [r2, 0x2A] subs r0, 0x1 strh r0, [r2, 0x2A] lsls r0, 16 asrs r0, 15 adds r0, r4 strh r3, [r0] movs r5, 0x2A ldrsh r1, [r2, r5] movs r7, 0x2E ldrsh r0, [r2, r7] cmp r1, r0 bgt _0811BB20 _0811BB3A: mov r1, r10 ldrb r0, [r1] adds r0, 0x1 ldrb r1, [r1] mov r2, r10 strb r0, [r2] movs r0, 0 add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0811BB58: .4byte gUnknown_03004DE0 _0811BB5C: .4byte 0x0200c000 thumb_func_end sub_811BA70 thumb_func_start sub_811BB60 sub_811BB60: @ 811BB60 push {r4-r6,lr} sub sp, 0xC adds r6, r0, 0 ldr r4, _0811BBE4 @ =0x0200c000 ldrb r0, [r4] movs r1, 0 strb r1, [r4] adds r0, r4, 0 adds r0, 0x24 movs r2, 0x2C ldrsh r3, [r4, r2] str r1, [sp] movs r1, 0x1 str r1, [sp, 0x4] str r1, [sp, 0x8] movs r1, 0x78 movs r2, 0x50 bl sub_811D8FC ldr r5, _0811BBE8 @ =gUnknown_03004DE0 _0811BB88: movs r2, 0x78 ldrh r3, [r4, 0x28] movs r1, 0x28 ldrsh r0, [r4, r1] cmp r0, 0x77 ble _0811BB98 movs r2, 0 movs r3, 0xF0 _0811BB98: movs r0, 0x2A ldrsh r1, [r4, r0] lsls r1, 1 adds r1, r5 lsls r2, 8 lsls r0, r3, 16 asrs r0, 16 orrs r0, r2 strh r0, [r1] adds r0, r4, 0 adds r0, 0x24 movs r1, 0x1 movs r2, 0x1 bl sub_811D978 lsls r0, 24 cmp r0, 0 beq _0811BB88 ldr r2, _0811BBE4 @ =0x0200c000 ldrh r0, [r2, 0x2C] adds r0, 0x10 strh r0, [r2, 0x2C] movs r1, 0x28 ldrsh r0, [r2, r1] cmp r0, 0x78 ble _0811BBD2 ldrh r0, [r6, 0x8] adds r0, 0x1 strh r0, [r6, 0x8] _0811BBD2: ldrb r0, [r2] adds r0, 0x1 ldrb r1, [r2] strb r0, [r2] movs r0, 0 add sp, 0xC pop {r4-r6} pop {r1} bx r1 .align 2, 0 _0811BBE4: .4byte 0x0200c000 _0811BBE8: .4byte gUnknown_03004DE0 thumb_func_end sub_811BB60 thumb_func_start sub_811BBEC sub_811BBEC: @ 811BBEC push {lr} ldr r1, _0811BC1C @ =0x040000b0 ldrh r2, [r1, 0xA] ldr r0, _0811BC20 @ =0x0000c5ff ands r0, r2 strh r0, [r1, 0xA] ldrh r2, [r1, 0xA] ldr r0, _0811BC24 @ =0x00007fff ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] bl sub_811D6D4 ldr r0, _0811BC28 @ =sub_811B7E8 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask movs r0, 0 pop {r1} bx r1 .align 2, 0 _0811BC1C: .4byte 0x040000b0 _0811BC20: .4byte 0x0000c5ff _0811BC24: .4byte 0x00007fff _0811BC28: .4byte sub_811B7E8 thumb_func_end sub_811BBEC thumb_func_start sub_811BC2C sub_811BC2C: @ 811BC2C push {r4,lr} ldr r4, _0811BC94 @ =0x040000b0 ldrh r1, [r4, 0xA] ldr r0, _0811BC98 @ =0x0000c5ff ands r0, r1 strh r0, [r4, 0xA] ldrh r1, [r4, 0xA] ldr r0, _0811BC9C @ =0x00007fff ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] bl sub_811D67C ldr r2, _0811BCA0 @ =0x0200c000 ldrb r0, [r2] cmp r0, 0 beq _0811BC62 ldr r1, _0811BCA4 @ =0x040000d4 ldr r0, _0811BCA8 @ =gUnknown_03004DE0 str r0, [r1] movs r3, 0xF0 lsls r3, 3 adds r0, r3 str r0, [r1, 0x4] ldr r0, _0811BCAC @ =0x800000a0 str r0, [r1, 0x8] ldr r0, [r1, 0x8] _0811BC62: ldr r1, _0811BCB0 @ =REG_WININ ldrh r0, [r2, 0x2] strh r0, [r1] adds r1, 0x2 ldrh r0, [r2, 0x4] strh r0, [r1] subs r1, 0x6 ldrh r0, [r2, 0x8] strh r0, [r1] ldr r2, _0811BCB4 @ =REG_WIN0H ldr r0, _0811BCA8 @ =gUnknown_03004DE0 movs r1, 0xF0 lsls r1, 3 adds r0, r1 ldrh r1, [r0] strh r1, [r2] str r0, [r4] str r2, [r4, 0x4] ldr r0, _0811BCB8 @ =0xa2400001 str r0, [r4, 0x8] ldr r0, [r4, 0x8] pop {r4} pop {r0} bx r0 .align 2, 0 _0811BC94: .4byte 0x040000b0 _0811BC98: .4byte 0x0000c5ff _0811BC9C: .4byte 0x00007fff _0811BCA0: .4byte 0x0200c000 _0811BCA4: .4byte 0x040000d4 _0811BCA8: .4byte gUnknown_03004DE0 _0811BCAC: .4byte 0x800000a0 _0811BCB0: .4byte REG_WININ _0811BCB4: .4byte REG_WIN0H _0811BCB8: .4byte 0xa2400001 thumb_func_end sub_811BC2C thumb_func_start sub_811BCBC sub_811BCBC: @ 811BCBC push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811BCEC @ =gUnknown_083FD814 ldr r2, _0811BCF0 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811BCCE: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811BCCE pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811BCEC: .4byte gUnknown_083FD814 _0811BCF0: .4byte gTasks thumb_func_end sub_811BCBC thumb_func_start sub_811BCF4 sub_811BCF4: @ 811BCF4 push {r4,r5,lr} adds r5, r0, 0 bl sub_811D658 bl dp12_8087EA4 movs r2, 0 ldr r4, _0811BD48 @ =gUnknown_03005560 ldr r3, _0811BD4C @ =0x0200c000 _0811BD06: lsls r0, r2, 1 adds r0, r4 ldrh r1, [r3, 0x16] strh r1, [r0] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x9F bls _0811BD06 ldr r0, _0811BD50 @ =sub_811BE3C bl SetVBlankCallback ldr r0, _0811BD54 @ =sub_811BE74 bl SetHBlankCallback ldr r2, _0811BD58 @ =0x04000200 ldrh r0, [r2] movs r1, 0x2 orrs r0, r1 strh r0, [r2] ldr r2, _0811BD5C @ =REG_DISPSTAT ldrh r0, [r2] movs r1, 0x10 orrs r0, r1 strh r0, [r2] ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] movs r0, 0x1 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0811BD48: .4byte gUnknown_03005560 _0811BD4C: .4byte 0x0200c000 _0811BD50: .4byte sub_811BE3C _0811BD54: .4byte sub_811BE74 _0811BD58: .4byte 0x04000200 _0811BD5C: .4byte REG_DISPSTAT thumb_func_end sub_811BCF4 thumb_func_start sub_811BD60 sub_811BD60: @ 811BD60 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 adds r6, r0, 0 ldr r1, _0811BE28 @ =0x0200c000 ldrb r0, [r1] movs r0, 0 strb r0, [r1] ldrh r2, [r6, 0xC] lsls r1, r2, 16 asrs r0, r1, 24 lsls r0, 16 lsrs r3, r0, 16 ldrh r4, [r6, 0xA] movs r0, 0xC0 lsls r0, 1 mov r8, r0 movs r5, 0x80 lsls r5, 3 adds r0, r4, r5 strh r0, [r6, 0xA] ldr r0, _0811BE2C @ =0x1fff0000 cmp r1, r0 bgt _0811BD9A movs r1, 0xC0 lsls r1, 1 adds r0, r2, r1 strh r0, [r6, 0xC] _0811BD9A: movs r5, 0 lsls r7, r3, 16 _0811BD9E: lsrs r0, r4, 8 asrs r1, r7, 16 bl Sin ldr r1, _0811BE30 @ =gUnknown_03004DE0 lsls r2, r5, 1 adds r2, r1 ldr r1, _0811BE28 @ =0x0200c000 ldrh r1, [r1, 0x16] adds r0, r1 strh r0, [r2] adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 mov r1, r8 adds r0, r4, r1 lsls r0, 16 lsrs r4, r0, 16 cmp r5, 0x9F bls _0811BD9E ldrh r0, [r6, 0xE] adds r0, 0x1 strh r0, [r6, 0xE] lsls r0, 16 asrs r0, 16 cmp r0, 0x51 bne _0811BDEC ldrh r0, [r6, 0x10] adds r0, 0x1 strh r0, [r6, 0x10] movs r0, 0x1 negs r0, r0 movs r1, 0x2 negs r1, r1 movs r2, 0 str r2, [sp] movs r3, 0x10 bl BeginNormalPaletteFade _0811BDEC: movs r5, 0x10 ldrsh r0, [r6, r5] cmp r0, 0 beq _0811BE0E ldr r0, _0811BE34 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0811BE0E ldr r0, _0811BE38 @ =sub_811BCBC bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask _0811BE0E: ldr r0, _0811BE28 @ =0x0200c000 ldrb r1, [r0] adds r1, 0x1 ldrb r2, [r0] strb r1, [r0] movs r0, 0 add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0811BE28: .4byte 0x0200c000 _0811BE2C: .4byte 0x1fff0000 _0811BE30: .4byte gUnknown_03004DE0 _0811BE34: .4byte gPaletteFade _0811BE38: .4byte sub_811BCBC thumb_func_end sub_811BD60 thumb_func_start sub_811BE3C sub_811BE3C: @ 811BE3C push {lr} bl sub_811D67C ldr r0, _0811BE64 @ =0x0200c000 ldrb r0, [r0] cmp r0, 0 beq _0811BE5E ldr r1, _0811BE68 @ =0x040000d4 ldr r0, _0811BE6C @ =gUnknown_03004DE0 str r0, [r1] movs r2, 0xF0 lsls r2, 3 adds r0, r2 str r0, [r1, 0x4] ldr r0, _0811BE70 @ =0x800000a0 str r0, [r1, 0x8] ldr r0, [r1, 0x8] _0811BE5E: pop {r0} bx r0 .align 2, 0 _0811BE64: .4byte 0x0200c000 _0811BE68: .4byte 0x040000d4 _0811BE6C: .4byte gUnknown_03004DE0 _0811BE70: .4byte 0x800000a0 thumb_func_end sub_811BE3C thumb_func_start sub_811BE74 sub_811BE74: @ 811BE74 ldr r1, _0811BE94 @ =gUnknown_03004DE0 ldr r0, _0811BE98 @ =REG_VCOUNT ldrh r0, [r0] lsls r0, 1 movs r2, 0xF0 lsls r2, 3 adds r1, r2 adds r0, r1 ldrh r1, [r0] ldr r0, _0811BE9C @ =REG_BG1VOFS strh r1, [r0] adds r0, 0x4 strh r1, [r0] adds r0, 0x4 strh r1, [r0] bx lr .align 2, 0 _0811BE94: .4byte gUnknown_03004DE0 _0811BE98: .4byte REG_VCOUNT _0811BE9C: .4byte REG_BG1VOFS thumb_func_end sub_811BE74 thumb_func_start sub_811BEA0 sub_811BEA0: @ 811BEA0 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811BED0 @ =gUnknown_083FD81C ldr r2, _0811BED4 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811BEB2: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811BEB2 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811BED0: .4byte gUnknown_083FD81C _0811BED4: .4byte gTasks thumb_func_end sub_811BEA0 thumb_func_start sub_811BED8 sub_811BED8: @ 811BED8 push {r4,lr} adds r4, r0, 0 bl sub_811D658 bl dp12_8087EA4 ldr r1, _0811BF20 @ =0x0200c000 movs r2, 0 movs r0, 0x3F strh r0, [r1, 0x2] strh r2, [r1, 0x4] movs r0, 0xF0 strh r0, [r1, 0x6] movs r0, 0xA0 strh r0, [r1, 0x8] movs r1, 0 ldr r3, _0811BF24 @ =gUnknown_03005560 movs r2, 0xF2 _0811BEFC: lsls r0, r1, 1 adds r0, r3 strh r2, [r0] adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x9F bls _0811BEFC ldr r0, _0811BF28 @ =sub_811C004 bl SetVBlankCallback ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0x1 pop {r4} pop {r1} bx r1 .align 2, 0 _0811BF20: .4byte 0x0200c000 _0811BF24: .4byte gUnknown_03005560 _0811BF28: .4byte sub_811C004 thumb_func_end sub_811BED8 thumb_func_start sub_811BF2C sub_811BF2C: @ 811BF2C push {r4-r7,lr} mov r7, r8 push {r7} adds r4, r0, 0 ldr r1, _0811BFBC @ =0x0200c000 ldrb r0, [r1] movs r0, 0 strb r0, [r1] ldr r7, _0811BFC0 @ =gUnknown_03004DE0 ldrh r0, [r4, 0xC] ldrb r5, [r4, 0xC] adds r0, 0x10 strh r0, [r4, 0xC] ldrh r0, [r4, 0xA] adds r0, 0x8 strh r0, [r4, 0xA] movs r6, 0 movs r0, 0x1 mov r8, r0 _0811BF52: adds r0, r5, 0 movs r1, 0x28 bl Sin ldrh r1, [r4, 0xA] adds r0, r1 lsls r0, 16 lsrs r1, r0, 16 cmp r0, 0 bge _0811BF68 movs r1, 0 _0811BF68: lsls r0, r1, 16 asrs r0, 16 cmp r0, 0xF0 ble _0811BF72 movs r1, 0xF0 _0811BF72: lsls r0, r1, 16 asrs r0, 16 lsls r1, r0, 8 movs r2, 0xF1 orrs r1, r2 strh r1, [r7] cmp r0, 0xEF bgt _0811BF86 movs r0, 0 mov r8, r0 _0811BF86: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 adds r0, r5, 0x4 lsls r0, 24 lsrs r5, r0, 24 adds r7, 0x2 cmp r6, 0x9F bls _0811BF52 mov r1, r8 cmp r1, 0 beq _0811BFA4 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _0811BFA4: ldr r0, _0811BFBC @ =0x0200c000 ldrb r1, [r0] adds r1, 0x1 ldrb r2, [r0] strb r1, [r0] movs r0, 0 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0811BFBC: .4byte 0x0200c000 _0811BFC0: .4byte gUnknown_03004DE0 thumb_func_end sub_811BF2C thumb_func_start sub_811BFC4 sub_811BFC4: @ 811BFC4 push {lr} ldr r1, _0811BFF4 @ =0x040000b0 ldrh r2, [r1, 0xA] ldr r0, _0811BFF8 @ =0x0000c5ff ands r0, r2 strh r0, [r1, 0xA] ldrh r2, [r1, 0xA] ldr r0, _0811BFFC @ =0x00007fff ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] bl sub_811D6D4 ldr r0, _0811C000 @ =sub_811BEA0 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask movs r0, 0 pop {r1} bx r1 .align 2, 0 _0811BFF4: .4byte 0x040000b0 _0811BFF8: .4byte 0x0000c5ff _0811BFFC: .4byte 0x00007fff _0811C000: .4byte sub_811BEA0 thumb_func_end sub_811BFC4 thumb_func_start sub_811C004 sub_811C004: @ 811C004 push {r4,lr} ldr r4, _0811C060 @ =0x040000b0 ldrh r1, [r4, 0xA] ldr r0, _0811C064 @ =0x0000c5ff ands r0, r1 strh r0, [r4, 0xA] ldrh r1, [r4, 0xA] ldr r0, _0811C068 @ =0x00007fff ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] bl sub_811D67C ldr r2, _0811C06C @ =0x0200c000 ldrb r0, [r2] cmp r0, 0 beq _0811C03A ldr r1, _0811C070 @ =0x040000d4 ldr r0, _0811C074 @ =gUnknown_03004DE0 str r0, [r1] movs r3, 0xF0 lsls r3, 3 adds r0, r3 str r0, [r1, 0x4] ldr r0, _0811C078 @ =0x800000a0 str r0, [r1, 0x8] ldr r0, [r1, 0x8] _0811C03A: ldr r1, _0811C07C @ =REG_WININ ldrh r0, [r2, 0x2] strh r0, [r1] adds r1, 0x2 ldrh r0, [r2, 0x4] strh r0, [r1] subs r1, 0x6 ldrh r0, [r2, 0x8] strh r0, [r1] ldr r0, _0811C080 @ =gUnknown_03005560 str r0, [r4] ldr r0, _0811C084 @ =REG_WIN0H str r0, [r4, 0x4] ldr r0, _0811C088 @ =0xa2400001 str r0, [r4, 0x8] ldr r0, [r4, 0x8] pop {r4} pop {r0} bx r0 .align 2, 0 _0811C060: .4byte 0x040000b0 _0811C064: .4byte 0x0000c5ff _0811C068: .4byte 0x00007fff _0811C06C: .4byte 0x0200c000 _0811C070: .4byte 0x040000d4 _0811C074: .4byte gUnknown_03004DE0 _0811C078: .4byte 0x800000a0 _0811C07C: .4byte REG_WININ _0811C080: .4byte gUnknown_03005560 _0811C084: .4byte REG_WIN0H _0811C088: .4byte 0xa2400001 thumb_func_end sub_811C004 thumb_func_start sub_811C08C sub_811C08C: @ 811C08C push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _0811C0A8 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 movs r2, 0 strh r2, [r1, 0x26] bl sub_811C12C pop {r0} bx r0 .align 2, 0 _0811C0A8: .4byte gTasks thumb_func_end sub_811C08C thumb_func_start sub_811C0AC sub_811C0AC: @ 811C0AC push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _0811C0C8 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 movs r2, 0x1 strh r2, [r1, 0x26] bl sub_811C12C pop {r0} bx r0 .align 2, 0 _0811C0C8: .4byte gTasks thumb_func_end sub_811C0AC thumb_func_start sub_811C0CC sub_811C0CC: @ 811C0CC push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _0811C0E8 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 movs r2, 0x2 strh r2, [r1, 0x26] bl sub_811C12C pop {r0} bx r0 .align 2, 0 _0811C0E8: .4byte gTasks thumb_func_end sub_811C0CC thumb_func_start sub_811C0EC sub_811C0EC: @ 811C0EC push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _0811C108 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 movs r2, 0x3 strh r2, [r1, 0x26] bl sub_811C12C pop {r0} bx r0 .align 2, 0 _0811C108: .4byte gTasks thumb_func_end sub_811C0EC thumb_func_start sub_811C10C sub_811C10C: @ 811C10C push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _0811C128 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 movs r2, 0x4 strh r2, [r1, 0x26] bl sub_811C12C pop {r0} bx r0 .align 2, 0 _0811C128: .4byte gTasks thumb_func_end sub_811C10C thumb_func_start sub_811C12C sub_811C12C: @ 811C12C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811C15C @ =gUnknown_083FD828 ldr r2, _0811C160 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811C13E: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811C13E pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811C15C: .4byte gUnknown_083FD828 _0811C160: .4byte gTasks thumb_func_end sub_811C12C thumb_func_start sub_811C164 sub_811C164: @ 811C164 push {r4,lr} adds r4, r0, 0 bl sub_811D658 bl dp12_8087EA4 adds r0, r4, 0 bl sub_811C7B0 movs r0, 0 strh r0, [r4, 0xA] movs r0, 0x1 strh r0, [r4, 0xC] movs r0, 0xEF strh r0, [r4, 0xE] ldr r1, _0811C1BC @ =0x0200c000 movs r0, 0x3F strh r0, [r1, 0x2] movs r0, 0x3E strh r0, [r1, 0x4] movs r0, 0xA0 strh r0, [r1, 0x8] movs r1, 0 ldr r3, _0811C1C0 @ =gUnknown_03005560 ldr r2, _0811C1C4 @ =0x0000f0f1 _0811C196: lsls r0, r1, 1 adds r0, r3 strh r2, [r0] adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x9F bls _0811C196 ldr r0, _0811C1C8 @ =sub_811C670 bl SetVBlankCallback ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _0811C1BC: .4byte 0x0200c000 _0811C1C0: .4byte gUnknown_03005560 _0811C1C4: .4byte 0x0000f0f1 _0811C1C8: .4byte sub_811C670 thumb_func_end sub_811C164 thumb_func_start sub_811C1CC sub_811C1CC: @ 811C1CC push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 mov r8, r0 ldr r6, _0811C284 @ =gUnknown_083FDFF4 add r1, sp, 0x4 mov r0, sp bl sub_811D6A8 ldr r0, _0811C288 @ =gUnknown_083FC348 ldr r1, [sp, 0x4] movs r2, 0xF0 bl CpuSet ldr r1, _0811C28C @ =gUnknown_083FDB00 mov r2, r8 movs r3, 0x26 ldrsh r0, [r2, r3] lsls r0, 2 adds r0, r1 ldr r0, [r0] movs r1, 0xF0 movs r2, 0x20 bl LoadPalette ldr r1, _0811C290 @ =gUnknown_083FDB14 ldr r0, _0811C294 @ =gSaveBlock2 ldrb r0, [r0, 0x8] lsls r0, 2 adds r0, r1 ldr r0, [r0] movs r1, 0xFA movs r2, 0xC bl LoadPalette movs r1, 0 ldr r5, [sp] ldr r0, _0811C298 @ =sub_811C77C mov r12, r0 movs r2, 0xF0 lsls r2, 8 adds r7, r2, 0 _0811C222: movs r0, 0 lsls r3, r1, 16 asrs r4, r3, 11 _0811C228: lsls r2, r0, 16 asrs r2, 16 adds r1, r4, r2 lsls r1, 1 adds r1, r5 ldrh r0, [r6] orrs r0, r7 strh r0, [r1] adds r2, 0x1 lsls r2, 16 adds r6, 0x2 lsrs r0, r2, 16 asrs r2, 16 cmp r2, 0x1F ble _0811C228 movs r1, 0x80 lsls r1, 9 adds r0, r3, r1 lsrs r1, r0, 16 asrs r0, 16 cmp r0, 0x13 ble _0811C222 ldr r2, _0811C29C @ =0x04000200 ldrh r0, [r2] movs r1, 0x2 orrs r0, r1 strh r0, [r2] ldr r2, _0811C2A0 @ =REG_DISPSTAT ldrh r0, [r2] movs r1, 0x10 orrs r0, r1 strh r0, [r2] mov r0, r12 bl SetHBlankCallback mov r2, r8 ldrh r0, [r2, 0x8] adds r0, 0x1 strh r0, [r2, 0x8] movs r0, 0 add sp, 0x8 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0811C284: .4byte gUnknown_083FDFF4 _0811C288: .4byte gUnknown_083FC348 _0811C28C: .4byte gUnknown_083FDB00 _0811C290: .4byte gUnknown_083FDB14 _0811C294: .4byte gSaveBlock2 _0811C298: .4byte sub_811C77C _0811C29C: .4byte 0x04000200 _0811C2A0: .4byte REG_DISPSTAT thumb_func_end sub_811C1CC thumb_func_start sub_811C2A4 sub_811C2A4: @ 811C2A4 push {r4-r7,lr} adds r4, r0, 0 ldr r1, _0811C384 @ =0x0200c000 ldrb r0, [r1] movs r0, 0 strb r0, [r1] ldr r7, _0811C388 @ =gUnknown_03004DE0 ldrh r0, [r4, 0xA] ldrb r5, [r4, 0xA] adds r0, 0x10 strh r0, [r4, 0xA] movs r6, 0 _0811C2BC: adds r0, r5, 0 movs r1, 0x10 bl Sin ldrh r1, [r4, 0xC] adds r0, r1 lsls r0, 16 lsrs r2, r0, 16 cmp r0, 0 bge _0811C2D2 movs r2, 0x1 _0811C2D2: lsls r0, r2, 16 asrs r0, 16 cmp r0, 0xF0 ble _0811C2DC movs r2, 0xF0 _0811C2DC: strh r2, [r7] adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 adds r7, 0x2 adds r0, r5, 0 adds r0, 0x10 lsls r0, 24 lsrs r5, r0, 24 cmp r6, 0x4F bls _0811C2BC cmp r6, 0x9F bhi _0811C334 _0811C2F6: adds r0, r5, 0 movs r1, 0x10 bl Sin ldrh r1, [r4, 0xE] subs r1, r0 lsls r1, 16 lsrs r2, r1, 16 cmp r1, 0 bge _0811C30C movs r2, 0 _0811C30C: lsls r0, r2, 16 asrs r0, 16 cmp r0, 0xEF ble _0811C316 movs r2, 0xEF _0811C316: lsls r0, r2, 16 asrs r0, 8 movs r1, 0xF0 orrs r0, r1 strh r0, [r7] adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 adds r7, 0x2 adds r0, r5, 0 adds r0, 0x10 lsls r0, 24 lsrs r5, r0, 24 cmp r6, 0x9F bls _0811C2F6 _0811C334: ldrh r1, [r4, 0xC] adds r1, 0x8 strh r1, [r4, 0xC] ldrh r0, [r4, 0xE] subs r0, 0x8 strh r0, [r4, 0xE] lsls r1, 16 asrs r1, 16 cmp r1, 0xF0 ble _0811C34C movs r0, 0xF0 strh r0, [r4, 0xC] _0811C34C: movs r1, 0xE ldrsh r0, [r4, r1] cmp r0, 0 bge _0811C358 movs r0, 0 strh r0, [r4, 0xE] _0811C358: ldr r0, [r4, 0xC] cmp r0, 0xF0 bne _0811C364 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _0811C364: ldr r1, _0811C384 @ =0x0200c000 ldrh r0, [r1, 0x18] subs r0, 0x8 strh r0, [r1, 0x18] ldrh r0, [r1, 0x1A] adds r0, 0x8 strh r0, [r1, 0x1A] ldrb r0, [r1] adds r0, 0x1 ldrb r2, [r1] strb r0, [r1] movs r0, 0 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0811C384: .4byte 0x0200c000 _0811C388: .4byte gUnknown_03004DE0 thumb_func_end sub_811C2A4 thumb_func_start sub_811C38C sub_811C38C: @ 811C38C push {r4,r5,lr} adds r4, r0, 0 ldr r0, _0811C3F8 @ =0x0200c000 ldrb r1, [r0] movs r1, 0 strb r1, [r0] ldr r2, _0811C3FC @ =gUnknown_03004DE0 adds r5, r0, 0 movs r3, 0xF0 _0811C39E: strh r3, [r2] adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 adds r2, 0x2 cmp r1, 0x9F bls _0811C39E ldrh r0, [r4, 0x8] adds r0, 0x1 movs r1, 0 strh r0, [r4, 0x8] strh r1, [r4, 0xA] strh r1, [r4, 0xC] strh r1, [r4, 0xE] ldrh r0, [r5, 0x18] subs r0, 0x8 strh r0, [r5, 0x18] ldrh r0, [r5, 0x1A] adds r0, 0x8 strh r0, [r5, 0x1A] movs r1, 0x22 ldrsh r0, [r4, r1] movs r1, 0 bl sub_811CA10 movs r1, 0x24 ldrsh r0, [r4, r1] movs r1, 0x1 bl sub_811CA10 movs r1, 0x22 ldrsh r0, [r4, r1] bl sub_811CA28 movs r0, 0x68 bl PlaySE ldrb r0, [r5] adds r0, 0x1 ldrb r1, [r5] strb r0, [r5] movs r0, 0 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0811C3F8: .4byte 0x0200c000 _0811C3FC: .4byte gUnknown_03004DE0 thumb_func_end sub_811C38C thumb_func_start sub_811C400 sub_811C400: @ 811C400 push {r4,lr} adds r4, r0, 0 ldr r1, _0811C438 @ =0x0200c000 ldrh r0, [r1, 0x18] subs r0, 0x8 strh r0, [r1, 0x18] ldrh r0, [r1, 0x1A] adds r0, 0x8 strh r0, [r1, 0x1A] movs r1, 0x22 ldrsh r0, [r4, r1] bl sub_811CA44 lsls r0, 16 cmp r0, 0 beq _0811C42E ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r1, 0x24 ldrsh r0, [r4, r1] bl sub_811CA28 _0811C42E: movs r0, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _0811C438: .4byte 0x0200c000 thumb_func_end sub_811C400 thumb_func_start sub_811C43C sub_811C43C: @ 811C43C push {r4-r7,lr} mov r7, r8 push {r7} adds r6, r0, 0 ldr r7, _0811C4D0 @ =0x0200c000 ldrh r0, [r7, 0x18] subs r0, 0x8 movs r1, 0 mov r8, r1 strh r0, [r7, 0x18] ldrh r0, [r7, 0x1A] adds r0, 0x8 strh r0, [r7, 0x1A] movs r1, 0x24 ldrsh r0, [r6, r1] bl sub_811CA44 lsls r0, 16 cmp r0, 0 beq _0811C4C4 ldrb r0, [r7] movs r0, 0 strb r0, [r7] movs r0, 0 bl SetVBlankCallback ldr r1, _0811C4D4 @ =0x040000b0 ldrh r2, [r1, 0xA] ldr r0, _0811C4D8 @ =0x0000c5ff ands r0, r2 strh r0, [r1, 0xA] ldrh r2, [r1, 0xA] ldr r0, _0811C4DC @ =0x00007fff ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] ldr r4, _0811C4E0 @ =gUnknown_03004DE0 movs r5, 0xA0 lsls r5, 1 adds r0, r4, 0 movs r1, 0 adds r2, r5, 0 bl memset movs r0, 0xF0 lsls r0, 3 adds r4, r0 adds r0, r4, 0 movs r1, 0 adds r2, r5, 0 bl memset ldr r1, _0811C4E4 @ =REG_WIN0H movs r0, 0xF0 strh r0, [r1] ldr r0, _0811C4E8 @ =REG_BLDY mov r1, r8 strh r1, [r0] ldrh r0, [r6, 0x8] adds r0, 0x1 strh r0, [r6, 0x8] strh r1, [r6, 0xE] strh r1, [r6, 0x10] movs r0, 0xBF strh r0, [r7, 0xE] ldr r0, _0811C4EC @ =sub_811C700 bl SetVBlankCallback _0811C4C4: movs r0, 0 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0811C4D0: .4byte 0x0200c000 _0811C4D4: .4byte 0x040000b0 _0811C4D8: .4byte 0x0000c5ff _0811C4DC: .4byte 0x00007fff _0811C4E0: .4byte gUnknown_03004DE0 _0811C4E4: .4byte REG_WIN0H _0811C4E8: .4byte REG_BLDY _0811C4EC: .4byte sub_811C700 thumb_func_end sub_811C43C thumb_func_start sub_811C4F0 sub_811C4F0: @ 811C4F0 push {r4-r7,lr} adds r4, r0, 0 ldr r1, _0811C5AC @ =0x0200c000 ldrb r0, [r1] movs r0, 0 strb r0, [r1] movs r6, 0x1 ldrh r0, [r1, 0x18] subs r0, 0x8 strh r0, [r1, 0x18] ldrh r0, [r1, 0x1A] adds r0, 0x8 strh r0, [r1, 0x1A] ldrh r2, [r4, 0x10] movs r3, 0x10 ldrsh r0, [r4, r3] adds r7, r1, 0 cmp r0, 0x4F bgt _0811C51A adds r0, r2, 0x2 strh r0, [r4, 0x10] _0811C51A: movs r1, 0x10 ldrsh r0, [r4, r1] cmp r0, 0x50 ble _0811C526 movs r0, 0x50 strh r0, [r4, 0x10] _0811C526: ldrh r0, [r4, 0xE] adds r0, 0x1 strh r0, [r4, 0xE] movs r1, 0x1 ands r0, r1 ldrh r2, [r4, 0x10] cmp r0, 0 beq _0811C58C movs r3, 0 lsls r0, r2, 16 movs r6, 0 cmp r0, 0 blt _0811C58C movs r2, 0x50 mov r12, r2 ldr r5, _0811C5B0 @ =gUnknown_03004DE0 _0811C546: lsls r0, r3, 16 asrs r2, r0, 16 mov r3, r12 subs r1, r3, r2 adds r0, r2, 0 adds r0, 0x50 lsls r0, 16 lsrs r3, r0, 16 lsls r1, 16 asrs r1, 15 adds r1, r5 ldrh r0, [r1] cmp r0, 0xF bhi _0811C568 movs r6, 0x1 adds r0, 0x1 strh r0, [r1] _0811C568: lsls r0, r3, 16 asrs r0, 15 adds r1, r0, r5 ldrh r0, [r1] cmp r0, 0xF bhi _0811C57A movs r6, 0x1 adds r0, 0x1 strh r0, [r1] _0811C57A: adds r0, r2, 0x1 lsls r0, 16 lsrs r3, r0, 16 asrs r0, 16 movs r2, 0x10 ldrsh r1, [r4, r2] ldrh r2, [r4, 0x10] cmp r0, r1 ble _0811C546 _0811C58C: cmp r2, 0x50 bne _0811C59A cmp r6, 0 bne _0811C59A ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _0811C59A: ldrb r0, [r7] adds r0, 0x1 ldrb r1, [r7] strb r0, [r7] movs r0, 0 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0811C5AC: .4byte 0x0200c000 _0811C5B0: .4byte gUnknown_03004DE0 thumb_func_end sub_811C4F0 thumb_func_start sub_811C5B4 sub_811C5B4: @ 811C5B4 push {r4-r6,lr} adds r5, r0, 0 ldr r4, _0811C5E0 @ =0x0200c000 ldrb r0, [r4] movs r6, 0 strb r6, [r4] movs r0, 0x1 negs r0, r0 ldr r2, _0811C5E4 @ =0x00007fff movs r1, 0x10 bl BlendPalettes movs r0, 0xFF strh r0, [r4, 0xE] strh r6, [r5, 0xE] ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] movs r0, 0x1 pop {r4-r6} pop {r1} bx r1 .align 2, 0 _0811C5E0: .4byte 0x0200c000 _0811C5E4: .4byte 0x00007fff thumb_func_end sub_811C5B4 thumb_func_start sub_811C5E8 sub_811C5E8: @ 811C5E8 push {r4,r5,lr} adds r4, r0, 0 ldr r5, _0811C628 @ =0x0200c000 ldrb r0, [r5] movs r0, 0 strb r0, [r5] ldrh r0, [r4, 0xE] adds r0, 0x1 strh r0, [r4, 0xE] ldr r0, _0811C62C @ =gUnknown_03004DE0 movs r2, 0xE ldrsh r1, [r4, r2] movs r2, 0xA0 lsls r2, 1 bl memset movs r1, 0xE ldrsh r0, [r4, r1] cmp r0, 0xF ble _0811C616 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _0811C616: ldrb r0, [r5] adds r0, 0x1 ldrb r1, [r5] strb r0, [r5] movs r0, 0 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0811C628: .4byte 0x0200c000 _0811C62C: .4byte gUnknown_03004DE0 thumb_func_end sub_811C5E8 thumb_func_start sub_811C630 sub_811C630: @ 811C630 push {r4,lr} adds r4, r0, 0 ldr r1, _0811C664 @ =0x040000b0 ldrh r2, [r1, 0xA] ldr r0, _0811C668 @ =0x0000c5ff ands r0, r2 strh r0, [r1, 0xA] ldrh r2, [r1, 0xA] ldr r0, _0811C66C @ =0x00007fff ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] bl sub_811D6D4 ldr r0, [r4] bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask movs r0, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _0811C664: .4byte 0x040000b0 _0811C668: .4byte 0x0000c5ff _0811C66C: .4byte 0x00007fff thumb_func_end sub_811C630 thumb_func_start sub_811C670 sub_811C670: @ 811C670 push {r4,lr} ldr r4, _0811C6D4 @ =0x040000b0 ldrh r1, [r4, 0xA] ldr r0, _0811C6D8 @ =0x0000c5ff ands r0, r1 strh r0, [r4, 0xA] ldrh r1, [r4, 0xA] ldr r0, _0811C6DC @ =0x00007fff ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] bl sub_811D67C ldr r2, _0811C6E0 @ =0x0200c000 ldrb r0, [r2] cmp r0, 0 beq _0811C6A6 ldr r1, _0811C6E4 @ =0x040000d4 ldr r0, _0811C6E8 @ =gUnknown_03004DE0 str r0, [r1] movs r3, 0xF0 lsls r3, 3 adds r0, r3 str r0, [r1, 0x4] ldr r0, _0811C6EC @ =0x800000a0 str r0, [r1, 0x8] ldr r0, [r1, 0x8] _0811C6A6: ldr r1, _0811C6F0 @ =REG_BG0VOFS ldrh r0, [r2, 0x1C] strh r0, [r1] adds r1, 0x36 ldrh r0, [r2, 0x2] strh r0, [r1] adds r1, 0x2 ldrh r0, [r2, 0x4] strh r0, [r1] subs r1, 0x6 ldrh r0, [r2, 0x8] strh r0, [r1] ldr r0, _0811C6F4 @ =gUnknown_03005560 str r0, [r4] ldr r0, _0811C6F8 @ =REG_WIN0H str r0, [r4, 0x4] ldr r0, _0811C6FC @ =0xa2400001 str r0, [r4, 0x8] ldr r0, [r4, 0x8] pop {r4} pop {r0} bx r0 .align 2, 0 _0811C6D4: .4byte 0x040000b0 _0811C6D8: .4byte 0x0000c5ff _0811C6DC: .4byte 0x00007fff _0811C6E0: .4byte 0x0200c000 _0811C6E4: .4byte 0x040000d4 _0811C6E8: .4byte gUnknown_03004DE0 _0811C6EC: .4byte 0x800000a0 _0811C6F0: .4byte REG_BG0VOFS _0811C6F4: .4byte gUnknown_03005560 _0811C6F8: .4byte REG_WIN0H _0811C6FC: .4byte 0xa2400001 thumb_func_end sub_811C670 thumb_func_start sub_811C700 sub_811C700: @ 811C700 push {r4,lr} ldr r4, _0811C750 @ =0x040000b0 ldrh r1, [r4, 0xA] ldr r0, _0811C754 @ =0x0000c5ff ands r0, r1 strh r0, [r4, 0xA] ldrh r1, [r4, 0xA] ldr r0, _0811C758 @ =0x00007fff ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] bl sub_811D67C ldr r2, _0811C75C @ =0x0200c000 ldrb r0, [r2] cmp r0, 0 beq _0811C736 ldr r1, _0811C760 @ =0x040000d4 ldr r0, _0811C764 @ =gUnknown_03004DE0 str r0, [r1] movs r3, 0xF0 lsls r3, 3 adds r0, r3 str r0, [r1, 0x4] ldr r0, _0811C768 @ =0x800000a0 str r0, [r1, 0x8] ldr r0, [r1, 0x8] _0811C736: ldr r1, _0811C76C @ =REG_BLDCNT ldrh r0, [r2, 0xE] strh r0, [r1] ldr r0, _0811C770 @ =gUnknown_03005560 str r0, [r4] ldr r0, _0811C774 @ =REG_BLDY str r0, [r4, 0x4] ldr r0, _0811C778 @ =0xa2400001 str r0, [r4, 0x8] ldr r0, [r4, 0x8] pop {r4} pop {r0} bx r0 .align 2, 0 _0811C750: .4byte 0x040000b0 _0811C754: .4byte 0x0000c5ff _0811C758: .4byte 0x00007fff _0811C75C: .4byte 0x0200c000 _0811C760: .4byte 0x040000d4 _0811C764: .4byte gUnknown_03004DE0 _0811C768: .4byte 0x800000a0 _0811C76C: .4byte REG_BLDCNT _0811C770: .4byte gUnknown_03005560 _0811C774: .4byte REG_BLDY _0811C778: .4byte 0xa2400001 thumb_func_end sub_811C700 thumb_func_start sub_811C77C sub_811C77C: @ 811C77C push {lr} ldr r0, _0811C790 @ =REG_VCOUNT ldrh r0, [r0] cmp r0, 0x4F bhi _0811C79C ldr r0, _0811C794 @ =REG_BG0HOFS ldr r1, _0811C798 @ =0x0200c000 ldrh r1, [r1, 0x18] b _0811C7A2 .align 2, 0 _0811C790: .4byte REG_VCOUNT _0811C794: .4byte REG_BG0HOFS _0811C798: .4byte 0x0200c000 _0811C79C: ldr r0, _0811C7A8 @ =REG_BG0HOFS ldr r1, _0811C7AC @ =0x0200c000 ldrh r1, [r1, 0x1A] _0811C7A2: strh r1, [r0] pop {r0} bx r0 .align 2, 0 _0811C7A8: .4byte REG_BG0HOFS _0811C7AC: .4byte 0x0200c000 thumb_func_end sub_811C77C thumb_func_start sub_811C7B0 sub_811C7B0: @ 811C7B0 push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} sub sp, 0x4 adds r4, r0, 0 ldr r0, _0811C8EC @ =gUnknown_083FD850 movs r2, 0x26 ldrsh r1, [r4, r2] mov r8, r1 add r0, r8 ldrb r0, [r0] ldr r2, _0811C8F0 @ =gUnknown_083FD86A lsls r1, 2 mov r8, r1 adds r1, r2 ldrh r1, [r1] subs r1, 0x20 lsls r1, 16 asrs r1, 16 adds r2, 0x2 add r2, r8 ldrh r2, [r2] adds r2, 0x2A lsls r2, 16 asrs r2, 16 ldr r5, _0811C8F4 @ =0x0200c03c str r5, [sp] movs r3, 0 bl CreateTrainerSprite_BirchSpeech lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] ldr r0, _0811C8F8 @ =gSaveBlock2 ldrb r0, [r0, 0x8] movs r1, 0x88 lsls r1, 1 str r5, [sp] movs r2, 0x6A movs r3, 0 bl CreateTrainerSprite_BirchSpeech lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x24] movs r3, 0x22 ldrsh r0, [r4, r3] lsls r5, r0, 4 adds r5, r0 lsls r5, 2 ldr r1, _0811C8FC @ =gSprites adds r5, r1 movs r2, 0x24 ldrsh r0, [r4, r2] lsls r6, r0, 4 adds r6, r0 lsls r6, 2 adds r6, r1 ldr r0, _0811C900 @ =sub_811C90C str r0, [r5, 0x1C] str r0, [r6, 0x1C] ldrb r0, [r5, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r5, 0x1] ldrb r0, [r6, 0x1] orrs r0, r1 strb r0, [r6, 0x1] bl AllocOamMatrix lsls r0, 24 lsrs r0, 24 movs r3, 0x1F mov r9, r3 mov r4, r9 ands r0, r4 lsls r0, 1 ldrb r2, [r5, 0x3] movs r4, 0x3F negs r4, r4 adds r1, r4, 0 ands r1, r2 orrs r1, r0 strb r1, [r5, 0x3] bl AllocOamMatrix lsls r0, 24 lsrs r0, 24 mov r1, r9 ands r0, r1 lsls r0, 1 ldrb r1, [r6, 0x3] ands r4, r1 orrs r4, r0 strb r4, [r6, 0x3] ldrb r2, [r5, 0x1] movs r1, 0x3F adds r0, r1, 0 ands r0, r2 movs r2, 0x40 orrs r0, r2 strb r0, [r5, 0x1] ldrb r0, [r6, 0x1] ands r1, r0 orrs r1, r2 strb r1, [r6, 0x1] ldrb r0, [r5, 0x3] movs r1, 0xC0 orrs r0, r1 strb r0, [r5, 0x3] ldrb r0, [r6, 0x3] orrs r0, r1 strb r0, [r6, 0x3] adds r0, r5, 0 movs r1, 0x1 movs r2, 0x3 movs r3, 0x3 bl CalcCenterToCornerVec adds r0, r6, 0 movs r1, 0x1 movs r2, 0x3 movs r3, 0x3 bl CalcCenterToCornerVec ldrb r0, [r5, 0x3] lsls r0, 26 lsrs r0, 27 ldr r2, _0811C904 @ =gUnknown_083FD856 mov r3, r8 adds r1, r3, r2 movs r4, 0 ldrsh r1, [r1, r4] adds r2, 0x2 add r8, r2 mov r3, r8 movs r4, 0 ldrsh r2, [r3, r4] movs r3, 0 bl SetOamMatrixRotationScaling ldrb r0, [r6, 0x3] lsls r0, 26 lsrs r0, 27 ldr r1, _0811C908 @ =0xfffffe00 movs r2, 0x80 lsls r2, 2 movs r3, 0 bl SetOamMatrixRotationScaling add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0811C8EC: .4byte gUnknown_083FD850 _0811C8F0: .4byte gUnknown_083FD86A _0811C8F4: .4byte 0x0200c03c _0811C8F8: .4byte gSaveBlock2 _0811C8FC: .4byte gSprites _0811C900: .4byte sub_811C90C _0811C904: .4byte gUnknown_083FD856 _0811C908: .4byte 0xfffffe00 thumb_func_end sub_811C7B0 thumb_func_start sub_811C90C sub_811C90C: @ 811C90C push {r4,r5,lr} adds r4, r0, 0 ldr r5, _0811C930 @ =gUnknown_083FD880 _0811C912: movs r1, 0x2E ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811C912 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811C930: .4byte gUnknown_083FD880 thumb_func_end sub_811C90C thumb_func_start sub_811C934 sub_811C934: @ 811C934 movs r0, 0 bx lr thumb_func_end sub_811C934 thumb_func_start sub_811C938 sub_811C938: @ 811C938 push {r4,r5,lr} sub sp, 0x8 adds r5, r0, 0 ldr r1, _0811C97C @ =gUnknown_083FD89C mov r0, sp movs r2, 0x4 bl memcpy add r4, sp, 0x4 ldr r1, _0811C980 @ =gUnknown_083FD8A0 adds r0, r4, 0 movs r2, 0x4 bl memcpy ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] movs r1, 0x3C ldrsh r0, [r5, r1] lsls r0, 1 add r0, sp ldrh r0, [r0] strh r0, [r5, 0x30] movs r1, 0x3C ldrsh r0, [r5, r1] lsls r0, 1 adds r4, r0 ldrh r0, [r4] strh r0, [r5, 0x32] movs r0, 0x1 add sp, 0x8 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0811C97C: .4byte gUnknown_083FD89C _0811C980: .4byte gUnknown_083FD8A0 thumb_func_end sub_811C938 thumb_func_start sub_811C984 sub_811C984: @ 811C984 push {lr} adds r1, r0, 0 ldrh r0, [r1, 0x30] ldrh r3, [r1, 0x20] adds r2, r0, r3 strh r2, [r1, 0x20] movs r3, 0x3C ldrsh r0, [r1, r3] cmp r0, 0 beq _0811C9A2 lsls r0, r2, 16 asrs r0, 16 cmp r0, 0x84 bgt _0811C9B0 b _0811C9AA _0811C9A2: lsls r0, r2, 16 asrs r0, 16 cmp r0, 0x67 ble _0811C9B0 _0811C9AA: ldrh r0, [r1, 0x2E] adds r0, 0x1 strh r0, [r1, 0x2E] _0811C9B0: movs r0, 0 pop {r1} bx r1 thumb_func_end sub_811C984 thumb_func_start sub_811C9B8 sub_811C9B8: @ 811C9B8 push {lr} adds r2, r0, 0 ldrh r3, [r2, 0x32] ldrh r0, [r2, 0x30] adds r1, r3, r0 strh r1, [r2, 0x30] ldrh r0, [r2, 0x20] adds r0, r1 strh r0, [r2, 0x20] lsls r1, 16 cmp r1, 0 bne _0811C9DE ldrh r0, [r2, 0x2E] adds r0, 0x1 strh r0, [r2, 0x2E] negs r0, r3 strh r0, [r2, 0x32] movs r0, 0x1 strh r0, [r2, 0x3A] _0811C9DE: movs r0, 0 pop {r1} bx r1 thumb_func_end sub_811C9B8 thumb_func_start sub_811C9E4 sub_811C9E4: @ 811C9E4 push {lr} adds r2, r0, 0 ldrh r0, [r2, 0x32] ldrh r1, [r2, 0x30] adds r0, r1 strh r0, [r2, 0x30] ldrh r1, [r2, 0x20] adds r1, r0 strh r1, [r2, 0x20] adds r1, 0x1F lsls r1, 16 movs r0, 0x97 lsls r0, 17 cmp r1, r0 bls _0811CA08 ldrh r0, [r2, 0x2E] adds r0, 0x1 strh r0, [r2, 0x2E] _0811CA08: movs r0, 0 pop {r1} bx r1 thumb_func_end sub_811C9E4 thumb_func_start sub_811CA10 sub_811CA10: @ 811CA10 ldr r3, _0811CA24 @ =gSprites lsls r0, 16 asrs r0, 16 lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r3 strh r1, [r2, 0x3C] bx lr .align 2, 0 _0811CA24: .4byte gSprites thumb_func_end sub_811CA10 thumb_func_start sub_811CA28 sub_811CA28: @ 811CA28 ldr r2, _0811CA40 @ =gSprites lsls r0, 16 asrs r0, 16 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 ldrh r0, [r1, 0x2E] adds r0, 0x1 strh r0, [r1, 0x2E] bx lr .align 2, 0 _0811CA40: .4byte gSprites thumb_func_end sub_811CA28 thumb_func_start sub_811CA44 sub_811CA44: @ 811CA44 ldr r2, _0811CA58 @ =gSprites lsls r0, 16 asrs r0, 16 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r2, 0x3A ldrsh r0, [r1, r2] bx lr .align 2, 0 _0811CA58: .4byte gSprites thumb_func_end sub_811CA44 thumb_func_start sub_811CA5C sub_811CA5C: @ 811CA5C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811CA8C @ =gUnknown_083FD8A4 ldr r2, _0811CA90 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811CA6E: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811CA6E pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811CA8C: .4byte gUnknown_083FD8A4 _0811CA90: .4byte gTasks thumb_func_end sub_811CA5C thumb_func_start sub_811CA94 sub_811CA94: @ 811CA94 push {r4-r6,lr} adds r4, r0, 0 bl sub_811D658 bl dp12_8087EA4 movs r2, 0 movs r0, 0x80 lsls r0, 1 strh r0, [r4, 0xC] movs r0, 0x1 strh r0, [r4, 0xE] ldr r1, _0811CB08 @ =0x0200c000 movs r0, 0x3F strh r0, [r1, 0x2] strh r2, [r1, 0x4] movs r0, 0xA0 strh r0, [r1, 0x8] ldr r3, _0811CB0C @ =gUnknown_03005560 adds r6, r1, 0 movs r5, 0xF0 _0811CABE: lsls r0, r2, 1 adds r0, r3 ldrh r1, [r6, 0x14] strh r1, [r0] adds r0, r2, 0 adds r0, 0xA0 lsls r0, 1 adds r0, r3 strh r5, [r0] adds r0, r2, 0x1 lsls r0, 16 lsrs r2, r0, 16 cmp r2, 0x9F bls _0811CABE ldr r2, _0811CB10 @ =0x04000200 ldrh r0, [r2] movs r1, 0x2 orrs r0, r1 strh r0, [r2] ldr r2, _0811CB14 @ =REG_DISPSTAT ldrh r0, [r2] movs r1, 0x10 orrs r0, r1 strh r0, [r2] ldr r0, _0811CB18 @ =sub_811CC28 bl SetVBlankCallback ldr r0, _0811CB1C @ =sub_811CCB0 bl SetHBlankCallback ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0x1 pop {r4-r6} pop {r1} bx r1 .align 2, 0 _0811CB08: .4byte 0x0200c000 _0811CB0C: .4byte gUnknown_03005560 _0811CB10: .4byte 0x04000200 _0811CB14: .4byte REG_DISPSTAT _0811CB18: .4byte sub_811CC28 _0811CB1C: .4byte sub_811CCB0 thumb_func_end sub_811CA94 thumb_func_start sub_811CB20 sub_811CB20: @ 811CB20 push {r4-r7,lr} mov r7, r8 push {r7} adds r2, r0, 0 ldr r1, _0811CB98 @ =0x0200c000 ldrb r0, [r1] movs r0, 0 strb r0, [r1] ldrh r0, [r2, 0xC] lsls r0, 16 asrs r0, 24 ldrh r3, [r2, 0xA] adds r0, r3 strh r0, [r2, 0xA] lsls r0, 16 asrs r0, 16 mov r12, r1 cmp r0, 0xF0 ble _0811CB4A movs r0, 0xF0 strh r0, [r2, 0xA] _0811CB4A: ldrh r4, [r2, 0xC] movs r0, 0xC ldrsh r1, [r2, r0] ldr r0, _0811CB9C @ =0x00000fff ldrh r3, [r2, 0xE] cmp r1, r0 bgt _0811CB5C adds r0, r4, r3 strh r0, [r2, 0xC] _0811CB5C: lsls r0, r3, 16 asrs r0, 16 cmp r0, 0x7F bgt _0811CB68 lsls r0, r3, 1 strh r0, [r2, 0xE] _0811CB68: movs r5, 0 ldr r7, _0811CBA0 @ =gUnknown_03004DE0 movs r1, 0xA0 lsls r1, 1 adds r1, r7 mov r8, r1 mov r6, r12 _0811CB76: lsls r0, r5, 1 adds r3, r0, r7 mov r1, r8 adds r4, r0, r1 movs r0, 0x1 ands r0, r5 cmp r0, 0 beq _0811CBA4 ldrh r0, [r2, 0xA] ldrh r1, [r6, 0x14] adds r0, r1 strh r0, [r3] ldrh r1, [r2, 0xA] movs r0, 0xF0 subs r0, r1 b _0811CBB4 .align 2, 0 _0811CB98: .4byte 0x0200c000 _0811CB9C: .4byte 0x00000fff _0811CBA0: .4byte gUnknown_03004DE0 _0811CBA4: ldrh r0, [r6, 0x14] ldrh r1, [r2, 0xA] subs r0, r1 strh r0, [r3] ldrh r0, [r2, 0xA] lsls r0, 8 movs r1, 0xF1 orrs r0, r1 _0811CBB4: strh r0, [r4] adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0x9F bls _0811CB76 movs r3, 0xA ldrsh r0, [r2, r3] cmp r0, 0xEF ble _0811CBCE ldrh r0, [r2, 0x8] adds r0, 0x1 strh r0, [r2, 0x8] _0811CBCE: mov r1, r12 ldrb r0, [r1] adds r0, 0x1 ldrb r1, [r1] mov r2, r12 strb r0, [r2] movs r0, 0 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_811CB20 thumb_func_start sub_811CBE8 sub_811CBE8: @ 811CBE8 push {lr} ldr r1, _0811CC18 @ =0x040000b0 ldrh r2, [r1, 0xA] ldr r0, _0811CC1C @ =0x0000c5ff ands r0, r2 strh r0, [r1, 0xA] ldrh r2, [r1, 0xA] ldr r0, _0811CC20 @ =0x00007fff ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] bl sub_811D6D4 ldr r0, _0811CC24 @ =sub_811CA5C bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask movs r0, 0 pop {r1} bx r1 .align 2, 0 _0811CC18: .4byte 0x040000b0 _0811CC1C: .4byte 0x0000c5ff _0811CC20: .4byte 0x00007fff _0811CC24: .4byte sub_811CA5C thumb_func_end sub_811CBE8 thumb_func_start sub_811CC28 sub_811CC28: @ 811CC28 push {r4,lr} ldr r4, _0811CC84 @ =0x040000b0 ldrh r1, [r4, 0xA] ldr r0, _0811CC88 @ =0x0000c5ff ands r0, r1 strh r0, [r4, 0xA] ldrh r1, [r4, 0xA] ldr r0, _0811CC8C @ =0x00007fff ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] bl sub_811D67C ldr r2, _0811CC90 @ =REG_WININ ldr r1, _0811CC94 @ =0x0200c000 ldrh r0, [r1, 0x2] strh r0, [r2] adds r2, 0x2 ldrh r0, [r1, 0x4] strh r0, [r2] subs r2, 0x6 ldrh r0, [r1, 0x8] strh r0, [r2] ldrb r0, [r1] cmp r0, 0 beq _0811CC70 ldr r1, _0811CC98 @ =0x040000d4 ldr r0, _0811CC9C @ =gUnknown_03004DE0 str r0, [r1] movs r2, 0xF0 lsls r2, 3 adds r0, r2 str r0, [r1, 0x4] ldr r0, _0811CCA0 @ =0x80000140 str r0, [r1, 0x8] ldr r0, [r1, 0x8] _0811CC70: ldr r0, _0811CCA4 @ =gUnknown_030056A0 str r0, [r4] ldr r0, _0811CCA8 @ =REG_WIN0H str r0, [r4, 0x4] ldr r0, _0811CCAC @ =0xa2400001 str r0, [r4, 0x8] ldr r0, [r4, 0x8] pop {r4} pop {r0} bx r0 .align 2, 0 _0811CC84: .4byte 0x040000b0 _0811CC88: .4byte 0x0000c5ff _0811CC8C: .4byte 0x00007fff _0811CC90: .4byte REG_WININ _0811CC94: .4byte 0x0200c000 _0811CC98: .4byte 0x040000d4 _0811CC9C: .4byte gUnknown_03004DE0 _0811CCA0: .4byte 0x80000140 _0811CCA4: .4byte gUnknown_030056A0 _0811CCA8: .4byte REG_WIN0H _0811CCAC: .4byte 0xa2400001 thumb_func_end sub_811CC28 thumb_func_start sub_811CCB0 sub_811CCB0: @ 811CCB0 ldr r1, _0811CCD0 @ =gUnknown_03004DE0 ldr r0, _0811CCD4 @ =REG_VCOUNT ldrh r0, [r0] lsls r0, 1 movs r2, 0xF0 lsls r2, 3 adds r1, r2 adds r0, r1 ldrh r1, [r0] ldr r0, _0811CCD8 @ =REG_BG1HOFS strh r1, [r0] adds r0, 0x4 strh r1, [r0] adds r0, 0x4 strh r1, [r0] bx lr .align 2, 0 _0811CCD0: .4byte gUnknown_03004DE0 _0811CCD4: .4byte REG_VCOUNT _0811CCD8: .4byte REG_BG1HOFS thumb_func_end sub_811CCB0 thumb_func_start sub_811CCDC sub_811CCDC: @ 811CCDC push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811CD0C @ =gUnknown_083FD8B0 ldr r2, _0811CD10 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811CCEE: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811CCEE pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811CD0C: .4byte gUnknown_083FD8B0 _0811CD10: .4byte gTasks thumb_func_end sub_811CCDC thumb_func_start sub_811CD14 sub_811CD14: @ 811CD14 push {r4,r5,lr} adds r5, r0, 0 bl sub_811D658 bl dp12_8087EA4 ldr r1, _0811CD88 @ =0x0200c000 movs r2, 0 movs r0, 0xBF strh r0, [r1, 0xE] strh r2, [r1, 0x12] movs r0, 0x1E strh r0, [r1, 0x2] movs r0, 0x3F strh r0, [r1, 0x4] movs r0, 0xA0 strh r0, [r1, 0x8] movs r1, 0 ldr r2, _0811CD8C @ =gUnknown_03005560 movs r4, 0 movs r3, 0xF0 _0811CD3E: lsls r0, r1, 1 adds r0, r2 strh r4, [r0] adds r0, r1, 0 adds r0, 0xA0 lsls r0, 1 adds r0, r2 strh r3, [r0] adds r0, r1, 0x1 lsls r0, 16 lsrs r1, r0, 16 cmp r1, 0x9F bls _0811CD3E ldr r2, _0811CD90 @ =0x04000200 ldrh r0, [r2] movs r1, 0x2 orrs r0, r1 strh r0, [r2] ldr r2, _0811CD94 @ =REG_DISPSTAT ldrh r0, [r2] movs r1, 0x10 orrs r0, r1 strh r0, [r2] ldr r0, _0811CD98 @ =sub_811CFAC bl SetHBlankCallback ldr r0, _0811CD9C @ =sub_811CEE4 bl SetVBlankCallback ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] movs r0, 0 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0811CD88: .4byte 0x0200c000 _0811CD8C: .4byte gUnknown_03005560 _0811CD90: .4byte 0x04000200 _0811CD94: .4byte REG_DISPSTAT _0811CD98: .4byte sub_811CFAC _0811CD9C: .4byte sub_811CEE4 thumb_func_end sub_811CD14 thumb_func_start sub_811CDA0 sub_811CDA0: @ 811CDA0 push {r4-r6,lr} sub sp, 0x10 adds r6, r0, 0 ldr r1, _0811CE08 @ =gUnknown_083FD8C4 mov r0, sp movs r2, 0x10 bl memcpy movs r5, 0 movs r4, 0 _0811CDB4: ldr r0, _0811CE0C @ =sub_811CFD0 bl CreateInvisibleSprite lsls r0, 24 lsrs r0, 24 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 ldr r0, _0811CE10 @ =gSprites adds r2, r1, r0 movs r0, 0xF0 strh r0, [r2, 0x20] strh r4, [r2, 0x22] lsls r1, r5, 16 asrs r1, 16 lsls r0, r1, 1 add r0, sp ldrh r0, [r0] strh r0, [r2, 0x38] adds r1, 0x1 lsls r1, 16 lsls r0, r4, 16 movs r3, 0xA0 lsls r3, 13 adds r0, r3 lsrs r4, r0, 16 lsrs r5, r1, 16 asrs r1, 16 cmp r1, 0x7 ble _0811CDB4 ldrh r0, [r2, 0x3A] adds r0, 0x1 strh r0, [r2, 0x3A] ldrh r0, [r6, 0x8] adds r0, 0x1 strh r0, [r6, 0x8] movs r0, 0 add sp, 0x10 pop {r4-r6} pop {r1} bx r1 .align 2, 0 _0811CE08: .4byte gUnknown_083FD8C4 _0811CE0C: .4byte sub_811CFD0 _0811CE10: .4byte gSprites thumb_func_end sub_811CDA0 thumb_func_start sub_811CE14 sub_811CE14: @ 811CE14 push {r4,lr} adds r4, r0, 0 ldr r0, _0811CE44 @ =0x0200c000 ldrb r1, [r0] movs r1, 0 strb r1, [r0] movs r1, 0x20 ldrsh r0, [r0, r1] cmp r0, 0x7 ble _0811CE3A movs r0, 0x1 negs r0, r0 ldr r2, _0811CE48 @ =0x00007fff movs r1, 0x10 bl BlendPalettes ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _0811CE3A: movs r0, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _0811CE44: .4byte 0x0200c000 _0811CE48: .4byte 0x00007fff thumb_func_end sub_811CE14 thumb_func_start sub_811CE4C sub_811CE4C: @ 811CE4C push {r4-r6,lr} adds r6, r0, 0 ldr r4, _0811CE9C @ =0x0200c000 ldrb r0, [r4] movs r5, 0 strb r5, [r4] ldr r1, _0811CEA0 @ =0x040000b0 ldrh r2, [r1, 0xA] ldr r0, _0811CEA4 @ =0x0000c5ff ands r0, r2 strh r0, [r1, 0xA] ldrh r2, [r1, 0xA] ldr r0, _0811CEA8 @ =0x00007fff ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] movs r0, 0 bl SetVBlankCallback movs r0, 0 bl SetHBlankCallback movs r0, 0xF0 strh r0, [r4, 0x6] strh r5, [r4, 0x12] movs r0, 0xFF strh r0, [r4, 0xE] movs r0, 0x3F strh r0, [r4, 0x2] ldr r0, _0811CEAC @ =sub_811CF74 bl SetVBlankCallback ldrh r0, [r6, 0x8] adds r0, 0x1 strh r0, [r6, 0x8] movs r0, 0 pop {r4-r6} pop {r1} bx r1 .align 2, 0 _0811CE9C: .4byte 0x0200c000 _0811CEA0: .4byte 0x040000b0 _0811CEA4: .4byte 0x0000c5ff _0811CEA8: .4byte 0x00007fff _0811CEAC: .4byte sub_811CF74 thumb_func_end sub_811CE4C thumb_func_start sub_811CEB0 sub_811CEB0: @ 811CEB0 push {lr} ldr r1, _0811CEDC @ =0x0200c000 ldrh r0, [r1, 0x12] adds r0, 0x1 strh r0, [r1, 0x12] lsls r0, 16 lsrs r0, 16 cmp r0, 0x10 bls _0811CED4 bl sub_811D6D4 ldr r0, _0811CEE0 @ =sub_811CCDC bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask _0811CED4: movs r0, 0 pop {r1} bx r1 .align 2, 0 _0811CEDC: .4byte 0x0200c000 _0811CEE0: .4byte sub_811CCDC thumb_func_end sub_811CEB0 thumb_func_start sub_811CEE4 sub_811CEE4: @ 811CEE4 push {r4,lr} ldr r4, _0811CF48 @ =0x040000b0 ldrh r1, [r4, 0xA] ldr r0, _0811CF4C @ =0x0000c5ff ands r0, r1 strh r0, [r4, 0xA] ldrh r1, [r4, 0xA] ldr r0, _0811CF50 @ =0x00007fff ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] bl sub_811D67C ldr r2, _0811CF54 @ =REG_BLDCNT ldr r1, _0811CF58 @ =0x0200c000 ldrh r0, [r1, 0xE] strh r0, [r2] subs r2, 0x8 ldrh r0, [r1, 0x2] strh r0, [r2] adds r2, 0x2 ldrh r0, [r1, 0x4] strh r0, [r2] subs r2, 0x6 ldrh r0, [r1, 0x6] strh r0, [r2] ldrb r0, [r1] cmp r0, 0 beq _0811CF32 ldr r1, _0811CF5C @ =0x040000d4 ldr r0, _0811CF60 @ =gUnknown_03004DE0 str r0, [r1] movs r2, 0xF0 lsls r2, 3 adds r0, r2 str r0, [r1, 0x4] ldr r0, _0811CF64 @ =0x80000140 str r0, [r1, 0x8] ldr r0, [r1, 0x8] _0811CF32: ldr r0, _0811CF68 @ =gUnknown_030056A0 str r0, [r4] ldr r0, _0811CF6C @ =REG_WIN0H str r0, [r4, 0x4] ldr r0, _0811CF70 @ =0xa2400001 str r0, [r4, 0x8] ldr r0, [r4, 0x8] pop {r4} pop {r0} bx r0 .align 2, 0 _0811CF48: .4byte 0x040000b0 _0811CF4C: .4byte 0x0000c5ff _0811CF50: .4byte 0x00007fff _0811CF54: .4byte REG_BLDCNT _0811CF58: .4byte 0x0200c000 _0811CF5C: .4byte 0x040000d4 _0811CF60: .4byte gUnknown_03004DE0 _0811CF64: .4byte 0x80000140 _0811CF68: .4byte gUnknown_030056A0 _0811CF6C: .4byte REG_WIN0H _0811CF70: .4byte 0xa2400001 thumb_func_end sub_811CEE4 thumb_func_start sub_811CF74 sub_811CF74: @ 811CF74 push {lr} bl sub_811D67C ldr r1, _0811CFA4 @ =REG_BLDY ldr r2, _0811CFA8 @ =0x0200c000 ldrh r0, [r2, 0x12] strh r0, [r1] subs r1, 0x4 ldrh r0, [r2, 0xE] strh r0, [r1] subs r1, 0x8 ldrh r0, [r2, 0x2] strh r0, [r1] adds r1, 0x2 ldrh r0, [r2, 0x4] strh r0, [r1] subs r1, 0xA ldrh r0, [r2, 0x6] strh r0, [r1] adds r1, 0x4 ldrh r0, [r2, 0x8] strh r0, [r1] pop {r0} bx r0 .align 2, 0 _0811CFA4: .4byte REG_BLDY _0811CFA8: .4byte 0x0200c000 thumb_func_end sub_811CF74 thumb_func_start sub_811CFAC sub_811CFAC: @ 811CFAC ldr r2, _0811CFC4 @ =REG_BLDY ldr r1, _0811CFC8 @ =gUnknown_03004DE0 ldr r0, _0811CFCC @ =REG_VCOUNT ldrh r0, [r0] lsls r0, 1 movs r3, 0xF0 lsls r3, 3 adds r1, r3 adds r0, r1 ldrh r0, [r0] strh r0, [r2] bx lr .align 2, 0 _0811CFC4: .4byte REG_BLDY _0811CFC8: .4byte gUnknown_03004DE0 _0811CFCC: .4byte REG_VCOUNT thumb_func_end sub_811CFAC thumb_func_start sub_811CFD0 sub_811CFD0: @ 811CFD0 push {r4-r6,lr} adds r3, r0, 0 ldrh r1, [r3, 0x38] movs r2, 0x38 ldrsh r0, [r3, r2] cmp r0, 0 beq _0811CFF8 subs r0, r1, 0x1 strh r0, [r3, 0x38] movs r1, 0x3A ldrsh r0, [r3, r1] cmp r0, 0 beq _0811D0AA ldr r0, _0811CFF4 @ =0x0200c000 ldrb r1, [r0] movs r1, 0x1 strb r1, [r0] b _0811D0AA .align 2, 0 _0811CFF4: .4byte 0x0200c000 _0811CFF8: movs r2, 0x22 ldrsh r1, [r3, r2] lsls r1, 1 ldr r0, _0811D0B0 @ =gUnknown_03004DE0 adds r6, r1, r0 movs r2, 0xA0 lsls r2, 1 adds r0, r2 adds r5, r1, r0 movs r4, 0 _0811D00C: lsls r1, r4, 1 adds r2, r1, r6 ldrh r0, [r3, 0x2E] lsls r0, 16 asrs r0, 24 strh r0, [r2] adds r1, r5 ldrh r0, [r3, 0x20] lsls r0, 24 lsrs r0, 24 strh r0, [r1] adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x13 bls _0811D00C movs r1, 0x20 ldrsh r0, [r3, r1] ldrh r2, [r3, 0x20] cmp r0, 0 bne _0811D046 movs r0, 0x2E ldrsh r1, [r3, r0] movs r0, 0x80 lsls r0, 5 cmp r1, r0 bne _0811D046 movs r0, 0x1 strh r0, [r3, 0x30] _0811D046: adds r1, r2, 0 subs r1, 0x10 strh r1, [r3, 0x20] ldrh r0, [r3, 0x2E] adds r0, 0x80 strh r0, [r3, 0x2E] lsls r1, 16 cmp r1, 0 bge _0811D05C movs r0, 0 strh r0, [r3, 0x20] _0811D05C: movs r1, 0x2E ldrsh r0, [r3, r1] movs r1, 0x80 lsls r1, 5 cmp r0, r1 ble _0811D06A strh r1, [r3, 0x2E] _0811D06A: movs r0, 0x3A ldrsh r2, [r3, r0] cmp r2, 0 beq _0811D07A ldr r0, _0811D0B4 @ =0x0200c000 ldrb r1, [r0] movs r1, 0x1 strb r1, [r0] _0811D07A: movs r1, 0x30 ldrsh r0, [r3, r1] cmp r0, 0 beq _0811D0AA ldr r4, _0811D0B4 @ =0x0200c000 cmp r2, 0 beq _0811D09E movs r2, 0x20 ldrsh r0, [r4, r2] cmp r0, 0x6 ble _0811D0AA ldrh r0, [r3, 0x32] adds r1, r0, 0x1 strh r1, [r3, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x7 ble _0811D0AA _0811D09E: ldrh r0, [r4, 0x20] adds r0, 0x1 strh r0, [r4, 0x20] adds r0, r3, 0 bl DestroySprite _0811D0AA: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0811D0B0: .4byte gUnknown_03004DE0 _0811D0B4: .4byte 0x0200c000 thumb_func_end sub_811CFD0 thumb_func_start sub_811D0B8 sub_811D0B8: @ 811D0B8 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811D0E8 @ =gUnknown_083FD8D4 ldr r2, _0811D0EC @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811D0CA: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811D0CA pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811D0E8: .4byte gUnknown_083FD8D4 _0811D0EC: .4byte gTasks thumb_func_end sub_811D0B8 thumb_func_start sub_811D0F0 sub_811D0F0: @ 811D0F0 push {r4,lr} sub sp, 0xC adds r4, r0, 0 add r0, sp, 0x4 add r1, sp, 0x8 bl sub_811D6A8 ldr r0, _0811D138 @ =gUnknown_083FD528 ldr r1, [sp, 0x8] movs r2, 0x10 bl CpuSet mov r1, sp movs r2, 0xF0 lsls r2, 8 adds r0, r2, 0 strh r0, [r1] ldr r1, [sp, 0x4] ldr r2, _0811D13C @ =0x01000400 mov r0, sp bl CpuSet ldr r0, _0811D140 @ =gFieldEffectObjectPalette10 movs r1, 0xF0 movs r2, 0x20 bl LoadPalette ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0 add sp, 0xC pop {r4} pop {r1} bx r1 .align 2, 0 _0811D138: .4byte gUnknown_083FD528 _0811D13C: .4byte 0x01000400 _0811D140: .4byte gFieldEffectObjectPalette10 thumb_func_end sub_811D0F0 thumb_func_start sub_811D144 sub_811D144: @ 811D144 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0 bne _0811D186 mov r0, sp bl sub_811D690 movs r0, 0x3 strh r0, [r4, 0xA] ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] movs r1, 0xC ldrsh r0, [r4, r1] lsls r0, 5 ldr r1, _0811D198 @ =gUnknown_083FD528 adds r0, r1 ldr r1, [sp] movs r2, 0x10 bl CpuSet movs r1, 0xC ldrsh r0, [r4, r1] cmp r0, 0xD ble _0811D186 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0x10 strh r0, [r4, 0xA] _0811D186: ldrh r0, [r4, 0xA] subs r0, 0x1 strh r0, [r4, 0xA] movs r0, 0 add sp, 0x4 pop {r4} pop {r1} bx r1 .align 2, 0 _0811D198: .4byte gUnknown_083FD528 thumb_func_end sub_811D144 thumb_func_start sub_811D19C sub_811D19C: @ 811D19C push {lr} ldrh r1, [r0, 0xA] subs r1, 0x1 strh r1, [r0, 0xA] lsls r1, 16 cmp r1, 0 bne _0811D1BC bl sub_811D6D4 ldr r0, _0811D1C4 @ =sub_811D0B8 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask _0811D1BC: movs r0, 0 pop {r1} bx r1 .align 2, 0 _0811D1C4: .4byte sub_811D0B8 thumb_func_end sub_811D19C thumb_func_start sub_811D1C8 sub_811D1C8: @ 811D1C8 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811D1F8 @ =gUnknown_083FD8E0 ldr r2, _0811D1FC @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811D1DA: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811D1DA pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811D1F8: .4byte gUnknown_083FD8E0 _0811D1FC: .4byte gTasks thumb_func_end sub_811D1C8 thumb_func_start sub_811D200 sub_811D200: @ 811D200 push {r4,r5,lr} adds r5, r0, 0 bl sub_811D658 bl dp12_8087EA4 ldr r1, _0811D254 @ =0x0200c000 movs r2, 0 movs r0, 0x3F strh r0, [r1, 0x2] strh r2, [r1, 0x4] movs r0, 0xA0 strh r0, [r1, 0x8] movs r1, 0 ldr r2, _0811D258 @ =gUnknown_03004DE0 movs r3, 0xF0 adds r4, r2, 0 _0811D222: lsls r0, r1, 1 adds r0, r2 strh r3, [r0] adds r0, r1, 0x1 lsls r0, 16 lsrs r1, r0, 16 cmp r1, 0x9F bls _0811D222 movs r0, 0xF0 lsls r0, 3 adds r1, r4, r0 adds r0, r4, 0 movs r2, 0xA0 bl CpuSet ldr r0, _0811D25C @ =sub_811D438 bl SetVBlankCallback ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] movs r0, 0x1 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0811D254: .4byte 0x0200c000 _0811D258: .4byte gUnknown_03004DE0 _0811D25C: .4byte sub_811D438 thumb_func_end sub_811D200 thumb_func_start sub_811D260 sub_811D260: @ 811D260 push {r4-r6,lr} mov r6, r8 push {r6} sub sp, 0xC mov r8, r0 ldr r0, _0811D2D0 @ =0x0200c024 ldr r6, _0811D2D4 @ =gUnknown_083FD8F4 mov r2, r8 movs r3, 0xA ldrsh r1, [r2, r3] lsls r4, r1, 2 adds r4, r1 lsls r4, 1 adds r1, r4, r6 movs r5, 0 ldrsh r1, [r1, r5] adds r2, r6, 0x2 adds r2, r4, r2 movs r3, 0 ldrsh r2, [r2, r3] adds r3, r6, 0x4 adds r3, r4, r3 movs r5, 0 ldrsh r3, [r3, r5] adds r5, r6, 0x6 adds r4, r5 movs r5, 0 ldrsh r4, [r4, r5] str r4, [sp] movs r4, 0x1 str r4, [sp, 0x4] str r4, [sp, 0x8] bl sub_811D8FC mov r0, r8 movs r2, 0xA ldrsh r1, [r0, r2] lsls r0, r1, 2 adds r0, r1 lsls r0, 1 adds r6, 0x8 adds r0, r6 ldrh r0, [r0] mov r3, r8 strh r0, [r3, 0xC] ldrh r0, [r3, 0x8] adds r0, 0x1 strh r0, [r3, 0x8] movs r0, 0x1 add sp, 0xC pop {r3} mov r8, r3 pop {r4-r6} pop {r1} bx r1 .align 2, 0 _0811D2D0: .4byte 0x0200c024 _0811D2D4: .4byte gUnknown_083FD8F4 thumb_func_end sub_811D260 thumb_func_start sub_811D2D8 sub_811D2D8: @ 811D2D8 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} adds r7, r0, 0 ldr r0, _0811D324 @ =0x0200c000 ldrb r1, [r0] movs r1, 0 strb r1, [r0] mov r8, r1 mov r12, r1 adds r6, r0, 0 ldr r0, _0811D328 @ =gUnknown_03004DE0 mov r9, r0 _0811D2F4: ldr r1, _0811D328 @ =gUnknown_03004DE0 movs r2, 0x2A ldrsh r0, [r6, r2] lsls r0, 1 adds r0, r1 ldrh r0, [r0] lsrs r3, r0, 8 movs r4, 0xFF ands r4, r0 movs r1, 0xC ldrsh r0, [r7, r1] cmp r0, 0 bne _0811D32C movs r2, 0x28 ldrsh r0, [r6, r2] cmp r3, r0 bge _0811D318 ldrh r3, [r6, 0x28] _0811D318: lsls r0, r3, 16 lsls r1, r4, 16 cmp r0, r1 ble _0811D344 lsrs r3, r1, 16 b _0811D344 .align 2, 0 _0811D324: .4byte 0x0200c000 _0811D328: .4byte gUnknown_03004DE0 _0811D32C: lsls r0, r4, 16 asrs r0, 16 movs r2, 0x28 ldrsh r1, [r6, r2] cmp r0, r1 ble _0811D33A ldrh r4, [r6, 0x28] _0811D33A: lsls r0, r4, 16 lsls r1, r3, 16 cmp r0, r1 bgt _0811D344 lsrs r4, r1, 16 _0811D344: ldr r5, _0811D368 @ =0x0200c000 movs r0, 0x2A ldrsh r2, [r5, r0] lsls r2, 1 add r2, r9 lsls r1, r3, 16 asrs r1, 8 lsls r0, r4, 16 asrs r0, 16 orrs r0, r1 strh r0, [r2] mov r1, r12 cmp r1, 0 beq _0811D36C ldrh r0, [r7, 0x8] adds r0, 0x1 strh r0, [r7, 0x8] b _0811D392 .align 2, 0 _0811D368: .4byte 0x0200c000 _0811D36C: adds r0, r5, 0 adds r0, 0x24 movs r1, 0x1 movs r2, 0x1 bl sub_811D978 lsls r0, 24 lsrs r0, 24 mov r12, r0 mov r2, r8 lsls r0, r2, 16 movs r1, 0x80 lsls r1, 9 adds r0, r1 lsrs r2, r0, 16 mov r8, r2 asrs r0, 16 cmp r0, 0xF ble _0811D2F4 _0811D392: ldr r0, _0811D3AC @ =0x0200c000 ldrb r1, [r0] adds r1, 0x1 ldrb r2, [r0] strb r1, [r0] movs r0, 0 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0811D3AC: .4byte 0x0200c000 thumb_func_end sub_811D2D8 thumb_func_start sub_811D3B0 sub_811D3B0: @ 811D3B0 push {lr} adds r2, r0, 0 ldrh r0, [r2, 0xA] adds r0, 0x1 strh r0, [r2, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x6 ble _0811D3FC ldr r1, _0811D3EC @ =0x040000b0 ldrh r2, [r1, 0xA] ldr r0, _0811D3F0 @ =0x0000c5ff ands r0, r2 strh r0, [r1, 0xA] ldrh r2, [r1, 0xA] ldr r0, _0811D3F4 @ =0x00007fff ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] bl sub_811D6D4 ldr r0, _0811D3F8 @ =sub_811D1C8 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask movs r0, 0 b _0811D414 .align 2, 0 _0811D3EC: .4byte 0x040000b0 _0811D3F0: .4byte 0x0000c5ff _0811D3F4: .4byte 0x00007fff _0811D3F8: .4byte sub_811D1C8 _0811D3FC: ldrh r0, [r2, 0x8] adds r0, 0x1 strh r0, [r2, 0x8] ldr r1, _0811D418 @ =gUnknown_083FD93A movs r3, 0xA ldrsh r0, [r2, r3] subs r0, 0x1 lsls r0, 1 adds r0, r1 ldrh r0, [r0] strh r0, [r2, 0xE] movs r0, 0x1 _0811D414: pop {r1} bx r1 .align 2, 0 _0811D418: .4byte gUnknown_083FD93A thumb_func_end sub_811D3B0 thumb_func_start sub_811D41C sub_811D41C: @ 811D41C push {lr} adds r1, r0, 0 ldrh r0, [r1, 0xE] subs r0, 0x1 strh r0, [r1, 0xE] lsls r0, 16 cmp r0, 0 beq _0811D430 movs r0, 0 b _0811D434 _0811D430: movs r0, 0x1 strh r0, [r1, 0x8] _0811D434: pop {r1} bx r1 thumb_func_end sub_811D41C thumb_func_start sub_811D438 sub_811D438: @ 811D438 push {r4,lr} ldr r4, _0811D4A0 @ =0x040000b0 ldrh r1, [r4, 0xA] ldr r0, _0811D4A4 @ =0x0000c5ff ands r0, r1 strh r0, [r4, 0xA] ldrh r1, [r4, 0xA] ldr r0, _0811D4A8 @ =0x00007fff ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] bl sub_811D67C ldr r2, _0811D4AC @ =0x0200c000 ldrb r0, [r2] cmp r0, 0 beq _0811D46E ldr r1, _0811D4B0 @ =0x040000d4 ldr r0, _0811D4B4 @ =gUnknown_03004DE0 str r0, [r1] movs r3, 0xF0 lsls r3, 3 adds r0, r3 str r0, [r1, 0x4] ldr r0, _0811D4B8 @ =0x800000a0 str r0, [r1, 0x8] ldr r0, [r1, 0x8] _0811D46E: ldr r1, _0811D4BC @ =REG_WININ ldrh r0, [r2, 0x2] strh r0, [r1] adds r1, 0x2 ldrh r0, [r2, 0x4] strh r0, [r1] subs r1, 0x6 ldrh r0, [r2, 0x8] strh r0, [r1] ldr r2, _0811D4C0 @ =REG_WIN0H ldr r0, _0811D4B4 @ =gUnknown_03004DE0 movs r1, 0xF0 lsls r1, 3 adds r0, r1 ldrh r1, [r0] strh r1, [r2] str r0, [r4] str r2, [r4, 0x4] ldr r0, _0811D4C4 @ =0xa2400001 str r0, [r4, 0x8] ldr r0, [r4, 0x8] pop {r4} pop {r0} bx r0 .align 2, 0 _0811D4A0: .4byte 0x040000b0 _0811D4A4: .4byte 0x0000c5ff _0811D4A8: .4byte 0x00007fff _0811D4AC: .4byte 0x0200c000 _0811D4B0: .4byte 0x040000d4 _0811D4B4: .4byte gUnknown_03004DE0 _0811D4B8: .4byte 0x800000a0 _0811D4BC: .4byte REG_WININ _0811D4C0: .4byte REG_WIN0H _0811D4C4: .4byte 0xa2400001 thumb_func_end sub_811D438 thumb_func_start sub_811D4C8 sub_811D4C8: @ 811D4C8 push {r4-r6,lr} mov r6, r8 push {r6} sub sp, 0x4 mov r8, r0 adds r4, r1, 0 adds r5, r2, 0 adds r6, r3, 0 ldr r3, [sp, 0x18] lsls r0, 16 lsrs r0, 16 mov r8, r0 lsls r4, 16 lsrs r4, 16 lsls r5, 16 lsrs r5, 16 lsls r6, 16 lsrs r6, 16 lsls r3, 16 lsrs r3, 16 ldr r0, _0811D524 @ =sub_811D54C movs r1, 0x3 str r3, [sp] bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r2, _0811D528 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 mov r0, r8 strh r0, [r1, 0xA] strh r4, [r1, 0xC] strh r5, [r1, 0xE] strh r6, [r1, 0x10] ldr r3, [sp] strh r3, [r1, 0x12] strh r0, [r1, 0x14] add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0811D524: .4byte sub_811D54C _0811D528: .4byte gTasks thumb_func_end sub_811D4C8 thumb_func_start sub_811D52C sub_811D52C: @ 811D52C push {lr} ldr r0, _0811D540 @ =sub_811D54C bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF beq _0811D544 movs r0, 0 b _0811D546 .align 2, 0 _0811D540: .4byte sub_811D54C _0811D544: movs r0, 0x1 _0811D546: pop {r1} bx r1 thumb_func_end sub_811D52C thumb_func_start sub_811D54C sub_811D54C: @ 811D54C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _0811D57C @ =gUnknown_083FD948 ldr r2, _0811D580 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 _0811D55E: movs r1, 0x8 ldrsh r0, [r4, r1] lsls r0, 2 adds r0, r5 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 24 cmp r0, 0 bne _0811D55E pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811D57C: .4byte gUnknown_083FD948 _0811D580: .4byte gTasks thumb_func_end sub_811D54C thumb_func_start sub_811D584 sub_811D584: @ 811D584 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x14] movs r2, 0x14 ldrsh r0, [r4, r2] cmp r0, 0 beq _0811D59C subs r0, r1, 0x1 strh r0, [r4, 0x14] lsls r0, 16 cmp r0, 0 bne _0811D5C0 _0811D59C: ldrh r0, [r4, 0xA] strh r0, [r4, 0x14] ldrh r0, [r4, 0x10] ldrh r1, [r4, 0x16] adds r0, r1 strh r0, [r4, 0x16] lsls r0, 16 asrs r0, 16 cmp r0, 0x10 ble _0811D5B4 movs r0, 0x10 strh r0, [r4, 0x16] _0811D5B4: movs r0, 0x1 negs r0, r0 ldrb r1, [r4, 0x16] ldr r2, _0811D5DC @ =0x00002d6b bl BlendPalettes _0811D5C0: movs r2, 0x16 ldrsh r0, [r4, r2] cmp r0, 0xF ble _0811D5D2 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] ldrh r0, [r4, 0xC] strh r0, [r4, 0x14] _0811D5D2: movs r0, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _0811D5DC: .4byte 0x00002d6b thumb_func_end sub_811D584 thumb_func_start sub_811D5E0 sub_811D5E0: @ 811D5E0 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x14] movs r2, 0x14 ldrsh r0, [r4, r2] cmp r0, 0 beq _0811D5F8 subs r0, r1, 0x1 strh r0, [r4, 0x14] lsls r0, 16 cmp r0, 0 bne _0811D61A _0811D5F8: ldrh r0, [r4, 0xC] strh r0, [r4, 0x14] ldrh r0, [r4, 0x16] ldrh r1, [r4, 0x12] subs r0, r1 strh r0, [r4, 0x16] lsls r0, 16 cmp r0, 0 bge _0811D60E movs r0, 0 strh r0, [r4, 0x16] _0811D60E: movs r0, 0x1 negs r0, r0 ldrb r1, [r4, 0x16] ldr r2, _0811D640 @ =0x00002d6b bl BlendPalettes _0811D61A: movs r0, 0x16 ldrsh r1, [r4, r0] cmp r1, 0 bne _0811D64E ldrh r0, [r4, 0xE] subs r0, 0x1 strh r0, [r4, 0xE] lsls r0, 16 cmp r0, 0 bne _0811D648 ldr r0, _0811D644 @ =sub_811D54C bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask b _0811D64E .align 2, 0 _0811D640: .4byte 0x00002d6b _0811D644: .4byte sub_811D54C _0811D648: ldrh r0, [r4, 0xA] strh r0, [r4, 0x14] strh r1, [r4, 0x8] _0811D64E: movs r0, 0 pop {r4} pop {r1} bx r1 thumb_func_end sub_811D5E0 thumb_func_start sub_811D658 sub_811D658: @ 811D658 push {lr} ldr r0, _0811D674 @ =gUnknown_083FD708 ldr r0, [r0] movs r1, 0 movs r2, 0x3C bl memset ldr r0, _0811D678 @ =0x0200c014 adds r1, r0, 0x2 bl sub_8057B14 pop {r0} bx r0 .align 2, 0 _0811D674: .4byte gUnknown_083FD708 _0811D678: .4byte 0x0200c014 thumb_func_end sub_811D658 thumb_func_start sub_811D67C sub_811D67C: @ 811D67C push {lr} bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer pop {r0} bx r0 thumb_func_end sub_811D67C thumb_func_start sub_811D690 sub_811D690: @ 811D690 ldr r1, _0811D6A4 @ =REG_BG0CNT ldrh r1, [r1] lsrs r1, 2 lsls r1, 30 lsrs r1, 16 movs r2, 0xC0 lsls r2, 19 adds r1, r2 str r1, [r0] bx lr .align 2, 0 _0811D6A4: .4byte REG_BG0CNT thumb_func_end sub_811D690 thumb_func_start sub_811D6A8 sub_811D6A8: @ 811D6A8 push {r4,lr} ldr r3, _0811D6D0 @ =REG_BG0CNT ldrh r2, [r3] lsrs r2, 8 ldrh r3, [r3] lsrs r3, 2 lsls r2, 27 lsrs r2, 16 lsls r3, 30 lsrs r3, 16 movs r4, 0xC0 lsls r4, 19 adds r2, r4 str r2, [r0] adds r3, r4 str r3, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0811D6D0: .4byte REG_BG0CNT thumb_func_end sub_811D6A8 thumb_func_start sub_811D6D4 sub_811D6D4: @ 811D6D4 push {lr} movs r0, 0x1 negs r0, r0 movs r1, 0x10 movs r2, 0 bl BlendPalettes pop {r0} bx r0 thumb_func_end sub_811D6D4 thumb_func_start sub_811D6E8 sub_811D6E8: @ 811D6E8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} mov r10, r0 ldr r0, [sp, 0x20] ldr r4, [sp, 0x24] lsls r1, 16 lsrs r7, r1, 16 lsls r2, 16 lsrs r2, 16 lsls r3, 16 lsrs r3, 16 lsls r0, 16 lsrs r1, r0, 16 lsls r4, 16 movs r6, 0 lsrs r5, r4, 16 cmp r4, 0 ble _0811D750 lsls r0, r7, 16 asrs r0, 16 mov r9, r0 lsls r1, 16 mov r8, r1 lsls r0, r3, 16 asrs r7, r0, 16 _0811D720: lsls r4, r2, 16 asrs r4, 16 movs r0, 0xFF ands r0, r4 mov r2, r8 asrs r1, r2, 16 bl Sin lsls r1, r6, 1 add r1, r10 add r0, r9 strh r0, [r1] lsls r1, r5, 16 ldr r0, _0811D760 @ =0xffff0000 adds r1, r0 adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 adds r4, r7 lsls r4, 16 lsrs r2, r4, 16 lsrs r5, r1, 16 cmp r1, 0 bgt _0811D720 _0811D750: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0811D760: .4byte 0xffff0000 thumb_func_end sub_811D6E8 thumb_func_start sub_811D764 sub_811D764: @ 811D764 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 mov r9, r0 adds r5, r2, 0 adds r4, r3, 0 lsls r1, 16 lsrs r1, 16 str r1, [sp] lsls r5, 16 lsrs r5, 16 lsls r4, 16 lsrs r4, 16 movs r2, 0xA0 lsls r2, 1 movs r1, 0xA bl memset movs r1, 0 lsls r4, 16 asrs r4, 16 str r4, [sp, 0x4] lsls r5, 16 asrs r5, 16 str r5, [sp, 0x8] _0811D79C: lsls r5, r1, 16 asrs r0, r5, 16 mov r10, r0 ldr r1, [sp, 0x4] bl Sin adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r0, r10 ldr r1, [sp, 0x4] bl Cos ldr r2, [sp] lsls r1, r2, 16 asrs r1, 16 lsls r4, 16 asrs r4, 16 subs r2, r1, r4 lsls r2, 16 adds r1, r4 lsls r1, 16 lsrs r6, r1, 16 lsls r0, 16 asrs r0, 16 ldr r3, [sp, 0x8] subs r1, r3, r0 lsls r1, 16 lsrs r7, r1, 16 adds r0, r3, r0 lsls r0, 16 lsrs r0, 16 mov r8, r0 lsrs r1, r2, 16 str r5, [sp, 0x10] cmp r2, 0 bge _0811D7E8 movs r1, 0 _0811D7E8: lsls r0, r6, 16 asrs r0, 16 cmp r0, 0xF0 ble _0811D7F2 movs r6, 0xF0 _0811D7F2: lsls r0, r7, 16 cmp r0, 0 bge _0811D7FA movs r7, 0 _0811D7FA: mov r2, r8 lsls r0, r2, 16 asrs r0, 16 cmp r0, 0x9F ble _0811D808 movs r3, 0x9F mov r8, r3 _0811D808: lsls r0, r1, 24 lsrs r0, 16 orrs r6, r0 lsls r0, r7, 16 asrs r0, 16 str r0, [sp, 0xC] lsls r0, 1 add r0, r9 strh r6, [r0] mov r0, r8 lsls r4, r0, 16 asrs r0, r4, 15 add r0, r9 strh r6, [r0] mov r0, r10 adds r0, 0x1 lsls r0, 16 asrs r0, 16 ldr r1, [sp, 0x4] bl Cos lsls r0, 16 asrs r0, 16 ldr r2, [sp, 0x8] subs r1, r2, r0 lsls r1, 16 adds r0, r2, r0 lsls r0, 16 lsrs r2, r0, 16 lsrs r3, r1, 16 cmp r1, 0 bge _0811D84A movs r3, 0 _0811D84A: lsls r0, r2, 16 asrs r0, 16 cmp r0, 0x9F ble _0811D854 movs r2, 0x9F _0811D854: lsls r0, r3, 16 asrs r1, r0, 16 adds r3, r0, 0 lsls r5, r2, 16 ldr r0, [sp, 0xC] cmp r0, r1 ble _0811D878 adds r2, r1, 0 _0811D864: lsls r1, r7, 16 ldr r0, _0811D8F8 @ =0xffff0000 adds r1, r0 asrs r0, r1, 15 add r0, r9 strh r6, [r0] lsrs r7, r1, 16 asrs r1, 16 cmp r1, r2 bgt _0811D864 _0811D878: lsls r1, r7, 16 asrs r0, r3, 16 cmp r1, r3 bge _0811D896 adds r2, r0, 0 _0811D882: movs r3, 0x80 lsls r3, 9 adds r0, r1, r3 asrs r1, r0, 15 add r1, r9 strh r6, [r1] adds r1, r0, 0 asrs r0, r1, 16 cmp r0, r2 blt _0811D882 _0811D896: asrs r0, r5, 16 cmp r4, r5 ble _0811D8B4 adds r1, r0, 0 _0811D89E: ldr r2, _0811D8F8 @ =0xffff0000 adds r0, r4, r2 lsrs r3, r0, 16 mov r8, r3 asrs r0, 15 add r0, r9 strh r6, [r0] lsls r4, r3, 16 asrs r0, r4, 16 cmp r0, r1 bgt _0811D89E _0811D8B4: mov r0, r8 lsls r4, r0, 16 asrs r0, r5, 16 cmp r4, r5 bge _0811D8D4 adds r2, r0, 0 _0811D8C0: movs r1, 0x80 lsls r1, 9 adds r0, r4, r1 asrs r1, r0, 15 add r1, r9 strh r6, [r1] adds r4, r0, 0 asrs r0, r4, 16 cmp r0, r2 blt _0811D8C0 _0811D8D4: ldr r2, [sp, 0x10] movs r3, 0x80 lsls r3, 9 adds r0, r2, r3 lsrs r1, r0, 16 asrs r0, 16 cmp r0, 0x3F bgt _0811D8E6 b _0811D79C _0811D8E6: 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 _0811D8F8: .4byte 0xffff0000 thumb_func_end sub_811D764 thumb_func_start sub_811D8FC sub_811D8FC: @ 811D8FC push {r4-r7,lr} adds r6, r0, 0 ldr r0, [sp, 0x14] ldr r5, [sp, 0x18] ldr r4, [sp, 0x1C] lsls r1, 16 lsrs r1, 16 lsls r2, 16 lsrs r2, 16 lsls r3, 16 lsrs r3, 16 lsls r0, 16 lsrs r0, 16 adds r7, r0, 0 lsls r5, 16 lsrs r5, 16 lsls r4, 16 lsrs r4, 16 strh r1, [r6] strh r2, [r6, 0x2] strh r1, [r6, 0x4] strh r2, [r6, 0x6] strh r3, [r6, 0x8] strh r7, [r6, 0xA] strh r5, [r6, 0xC] strh r4, [r6, 0xE] lsls r3, 16 asrs r3, 16 lsls r1, 16 asrs r1, 16 subs r3, r1 strh r3, [r6, 0x10] lsls r0, r3, 16 cmp r0, 0 bge _0811D94E negs r0, r3 strh r0, [r6, 0x10] lsls r0, r5, 16 asrs r0, 16 negs r0, r0 strh r0, [r6, 0xC] _0811D94E: lsls r0, r7, 16 asrs r0, 16 lsls r1, r2, 16 asrs r1, 16 subs r1, r0, r1 strh r1, [r6, 0x12] lsls r0, r1, 16 cmp r0, 0 bge _0811D96C negs r0, r1 strh r0, [r6, 0x12] lsls r0, r4, 16 asrs r0, 16 negs r0, r0 strh r0, [r6, 0xE] _0811D96C: movs r0, 0 strh r0, [r6, 0x14] pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_811D8FC thumb_func_start sub_811D978 sub_811D978: @ 811D978 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} adds r3, r0, 0 lsls r1, 24 lsrs r1, 24 mov r9, r1 lsls r2, 24 lsrs r2, 24 mov r10, r2 ldrh r0, [r3, 0x10] mov r8, r0 movs r1, 0x10 ldrsh r6, [r3, r1] ldrh r2, [r3, 0x12] mov r12, r2 movs r4, 0x12 ldrsh r5, [r3, r4] cmp r6, r5 ble _0811D9C8 ldrh r0, [r3, 0xC] ldrh r2, [r3, 0x4] adds r1, r0, r2 strh r1, [r3, 0x4] ldrh r2, [r3, 0x14] add r2, r12 strh r2, [r3, 0x14] lsls r1, r2, 16 asrs r1, 16 adds r4, r0, 0 ldrh r7, [r3, 0xE] cmp r1, r6 ble _0811D9EE ldrh r1, [r3, 0x6] adds r0, r7, r1 strh r0, [r3, 0x6] mov r1, r8 b _0811D9EA _0811D9C8: ldrh r0, [r3, 0xE] ldrh r2, [r3, 0x6] adds r1, r0, r2 strh r1, [r3, 0x6] ldrh r2, [r3, 0x14] add r2, r8 strh r2, [r3, 0x14] lsls r1, r2, 16 asrs r1, 16 ldrh r4, [r3, 0xC] adds r7, r0, 0 cmp r1, r5 ble _0811D9EE ldrh r1, [r3, 0x4] adds r0, r4, r1 strh r0, [r3, 0x4] mov r1, r12 _0811D9EA: subs r0, r2, r1 strh r0, [r3, 0x14] _0811D9EE: movs r5, 0 lsls r0, r4, 16 asrs r2, r0, 16 cmp r2, 0 ble _0811DA06 movs r4, 0x4 ldrsh r1, [r3, r4] movs r4, 0x8 ldrsh r0, [r3, r4] ldrh r4, [r3, 0x8] cmp r1, r0 bge _0811DA18 _0811DA06: cmp r2, 0 bge _0811DA26 movs r0, 0x4 ldrsh r1, [r3, r0] movs r2, 0x8 ldrsh r0, [r3, r2] ldrh r4, [r3, 0x8] cmp r1, r0 bgt _0811DA26 _0811DA18: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 mov r0, r9 cmp r0, 0 beq _0811DA26 strh r4, [r3, 0x4] _0811DA26: lsls r0, r7, 16 asrs r2, r0, 16 cmp r2, 0 ble _0811DA3C movs r4, 0x6 ldrsh r1, [r3, r4] movs r4, 0xA ldrsh r0, [r3, r4] ldrh r4, [r3, 0xA] cmp r1, r0 bge _0811DA4E _0811DA3C: cmp r2, 0 bge _0811DA5C movs r0, 0x6 ldrsh r1, [r3, r0] movs r2, 0xA ldrsh r0, [r3, r2] ldrh r4, [r3, 0xA] cmp r1, r0 bgt _0811DA5C _0811DA4E: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 mov r0, r10 cmp r0, 0 beq _0811DA5C strh r4, [r3, 0x6] _0811DA5C: cmp r5, 0x2 beq _0811DA64 movs r0, 0 b _0811DA66 _0811DA64: movs r0, 0x1 _0811DA66: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_811D978 .align 2, 0 @ Don't pad with nop.