summaryrefslogtreecommitdiff
path: root/asm/battle_transition.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/battle_transition.s')
-rw-r--r--asm/battle_transition.s6254
1 files changed, 6254 insertions, 0 deletions
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
new file mode 100644
index 000000000..66443242b
--- /dev/null
+++ b/asm/battle_transition.s
@@ -0,0 +1,6254 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .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.