.include "asm/macros.inc"
	.include "constants/constants.inc"

	.syntax unified

	.text

	thumb_func_start sub_812A4DC
sub_812A4DC: @ 812A4DC
	push {r4,r5,lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r5, r0, 24
	ldr r1, =gTasks
	lsls r0, r5, 2
	adds r0, r5
	lsls r0, 3
	adds r4, r0, r1
	movs r0, 0x8
	ldrsh r1, [r4, r0]
	cmp r1, 0
	beq _0812A500
	cmp r1, 0x1
	beq _0812A518
	b _0812A530
	.pool
_0812A500:
	movs r0, 0x1
	negs r0, r0
	str r1, [sp]
	movs r1, 0
	movs r2, 0
	movs r3, 0x10
	bl BeginNormalPaletteFade
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	b _0812A530
_0812A518:
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _0812A530
	ldr r0, =sub_812A588
	bl SetMainCallback2
	adds r0, r5, 0
	bl DestroyTask
_0812A530:
	add sp, 0x4
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812A4DC

	thumb_func_start PlaySlotMachine
PlaySlotMachine: @ 812A540
	push {r4-r6,lr}
	adds r4, r0, 0
	adds r6, r1, 0
	lsls r4, 24
	lsrs r4, 24
	ldr r5, =gUnknown_0203AB34
	movs r0, 0x68
	bl AllocZeroed
	str r0, [r5]
	adds r0, r4, 0
	adds r1, r6, 0
	bl sub_812A6D4
	ldr r0, =sub_812A4DC
	movs r1, 0
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	ldr r2, =gTasks
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	adds r1, r2
	movs r0, 0
	strh r0, [r1, 0x8]
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end PlaySlotMachine

	thumb_func_start sub_812A588
sub_812A588: @ 812A588
	push {lr}
	sub sp, 0x4
	ldr r0, =gMain
	movs r1, 0x87
	lsls r1, 3
	adds r0, r1
	ldrb r0, [r0]
	cmp r0, 0xB
	bhi _0812A666
	lsls r0, 2
	ldr r1, =_0812A5AC
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_0812A5AC:
	.4byte _0812A5DC
	.4byte _0812A5E6
	.4byte _0812A5EC
	.4byte _0812A5F6
	.4byte _0812A5FC
	.4byte _0812A602
	.4byte _0812A608
	.4byte _0812A60E
	.4byte _0812A638
	.4byte _0812A63E
	.4byte _0812A644
	.4byte _0812A660
_0812A5DC:
	bl sub_812A750
	bl sub_812A8C4
	b _0812A64C
_0812A5E6:
	bl sub_812A7BC
	b _0812A64C
_0812A5EC:
	bl sub_812A810
	bl sub_812A834
	b _0812A64C
_0812A5F6:
	bl sub_812A9AC
	b _0812A64C
_0812A5FC:
	bl sub_812A9CC
	b _0812A64C
_0812A602:
	bl sub_812AA48
	b _0812A64C
_0812A608:
	bl sub_812A79C
	b _0812A64C
_0812A60E:
	movs r0, 0x1
	negs r0, r0
	movs r1, 0
	str r1, [sp]
	movs r2, 0x10
	movs r3, 0
	bl BeginNormalPaletteFade
	movs r0, 0
	bl ShowBg
	movs r0, 0x1
	bl ShowBg
	movs r0, 0x2
	bl ShowBg
	movs r0, 0x3
	bl ShowBg
	b _0812A64C
_0812A638:
	bl sub_812FBC4
	b _0812A64C
_0812A63E:
	bl sub_812FB14
	b _0812A64C
_0812A644:
	bl sub_812AA78
	bl sub_812AA90
_0812A64C:
	ldr r1, =gMain
	movs r0, 0x87
	lsls r0, 3
	adds r1, r0
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	b _0812A666
	.pool
_0812A660:
	ldr r0, =sub_812A670
	bl SetMainCallback2
_0812A666:
	add sp, 0x4
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812A588

	thumb_func_start sub_812A670
sub_812A670: @ 812A670
	push {lr}
	bl RunTasks
	bl AnimateSprites
	bl BuildOamBuffer
	bl UpdatePaletteFade
	pop {r0}
	bx r0
	thumb_func_end sub_812A670

	thumb_func_start sub_812A688
sub_812A688: @ 812A688
	push {r4,lr}
	bl LoadOam
	bl ProcessSpriteCopyRequests
	bl TransferPlttBuffer
	ldr r4, =gUnknown_0203AB34
	ldr r0, [r4]
	adds r0, 0x58
	ldrh r1, [r0]
	movs r0, 0x40
	bl SetGpuReg
	ldr r0, [r4]
	adds r0, 0x5A
	ldrh r1, [r0]
	movs r0, 0x44
	bl SetGpuReg
	ldr r0, [r4]
	adds r0, 0x5C
	ldrh r1, [r0]
	movs r0, 0x48
	bl SetGpuReg
	ldr r0, [r4]
	adds r0, 0x5E
	ldrh r1, [r0]
	movs r0, 0x4A
	bl SetGpuReg
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812A688

	thumb_func_start sub_812A6D4
sub_812A6D4: @ 812A6D4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r4, 24
	lsrs r4, 24
	ldr r0, =TaskDummy9
	movs r1, 0xFF
	bl CreateTask
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	ldr r1, =gTasks
	adds r0, r1
	strh r4, [r0, 0x8]
	adds r0, 0xA
	adds r1, r5, 0
	bl StoreWordInTwoHalfwords
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812A6D4

	thumb_func_start sub_812A710
sub_812A710: @ 812A710
	push {lr}
	ldr r0, =TaskDummy9
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r0, 24
	lsls r2, r0, 2
	adds r2, r0
	lsls r2, 3
	ldr r0, =gTasks
	adds r2, r0
	ldr r3, =gUnknown_0203AB34
	ldr r1, [r3]
	ldrh r0, [r2, 0x8]
	strb r0, [r1, 0x1]
	adds r2, 0xA
	ldr r1, [r3]
	adds r1, 0x64
	adds r0, r2, 0
	bl LoadWordFromTwoHalfwords
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812A710

	thumb_func_start TaskDummy9
TaskDummy9: @ 812A74C
	bx lr
	thumb_func_end TaskDummy9

	thumb_func_start sub_812A750
sub_812A750: @ 812A750
	push {lr}
	sub sp, 0x4
	movs r0, 0
	bl SetVBlankCallback
	movs r0, 0
	bl SetHBlankCallback
	movs r0, 0
	str r0, [sp]
	movs r1, 0xC0
	lsls r1, 19
	ldr r2, =0x05006000
	mov r0, sp
	bl CpuSet
	movs r0, 0
	bl ResetBgsAndClearDma3BusyFlags
	ldr r1, =gUnknown_085A7424
	movs r0, 0
	movs r2, 0x4
	bl InitBgsFromTemplates
	ldr r0, =gUnknown_085A7434
	bl InitWindows
	bl DeactivateAllTextPrinters
	add sp, 0x4
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812A750

	thumb_func_start sub_812A79C
sub_812A79C: @ 812A79C
	push {lr}
	ldr r0, =sub_812A688
	bl SetVBlankCallback
	movs r0, 0x1
	bl EnableInterrupts
	movs r1, 0xC1
	lsls r1, 6
	movs r0, 0
	bl SetGpuReg
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812A79C

	thumb_func_start sub_812A7BC
sub_812A7BC: @ 812A7BC
	push {r4-r7,lr}
	sub sp, 0x4
	movs r2, 0xC0
	lsls r2, 19
	movs r3, 0x80
	lsls r3, 9
	mov r4, sp
	movs r6, 0
	ldr r1, =0x040000d4
	movs r5, 0x80
	lsls r5, 5
	ldr r7, =0x81000800
	movs r0, 0x81
	lsls r0, 24
	mov r12, r0
_0812A7DA:
	strh r6, [r4]
	mov r0, sp
	str r0, [r1]
	str r2, [r1, 0x4]
	str r7, [r1, 0x8]
	ldr r0, [r1, 0x8]
	adds r2, r5
	subs r3, r5
	cmp r3, r5
	bhi _0812A7DA
	strh r6, [r4]
	mov r0, sp
	str r0, [r1]
	str r2, [r1, 0x4]
	lsrs r0, r3, 1
	mov r2, r12
	orrs r0, r2
	str r0, [r1, 0x8]
	ldr r0, [r1, 0x8]
	add sp, 0x4
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812A7BC

	thumb_func_start sub_812A810
sub_812A810: @ 812A810
	sub sp, 0x4
	movs r2, 0xE0
	lsls r2, 19
	mov r1, sp
	movs r0, 0
	strh r0, [r1]
	ldr r0, =0x040000d4
	str r1, [r0]
	str r2, [r0, 0x4]
	ldr r1, =0x81000200
	str r1, [r0, 0x8]
	ldr r0, [r0, 0x8]
	add sp, 0x4
	bx lr
	.pool
	thumb_func_end sub_812A810

	thumb_func_start sub_812A834
sub_812A834: @ 812A834
	push {lr}
	movs r0, 0x8
	movs r1, 0
	bl SetGpuReg
	movs r0, 0xA
	movs r1, 0
	bl SetGpuReg
	movs r0, 0xC
	movs r1, 0
	bl SetGpuReg
	movs r0, 0xE
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x10
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x12
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x14
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x16
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x18
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x1A
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x1C
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x1E
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x48
	movs r1, 0x3F
	bl SetGpuReg
	movs r0, 0x4A
	movs r1, 0x3F
	bl SetGpuReg
	ldr r1, =0x00001048
	movs r0, 0x50
	bl SetGpuReg
	ldr r1, =0x00000809
	movs r0, 0x52
	bl SetGpuReg
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812A834

	thumb_func_start sub_812A8C4
sub_812A8C4: @ 812A8C4
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	bl sub_812A710
	ldr r5, =gUnknown_0203AB34
	ldr r0, [r5]
	movs r4, 0
	strb r4, [r0]
	ldr r0, [r5]
	strb r4, [r0, 0x2]
	bl Random
	ldr r2, [r5]
	movs r1, 0x1
	ands r1, r0
	strb r1, [r2, 0x3]
	ldr r0, [r5]
	strb r4, [r0, 0x4]
	ldr r0, [r5]
	movs r1, 0
	strh r4, [r0, 0x8]
	strb r1, [r0, 0xA]
	ldr r0, [r5]
	strb r1, [r0, 0xB]
	bl GetCoins
	ldr r2, [r5]
	strh r0, [r2, 0xC]
	strh r4, [r2, 0xE]
	strh r4, [r2, 0x10]
	strh r4, [r2, 0x12]
	strh r4, [r2, 0x18]
	movs r0, 0x8
	strh r0, [r2, 0x1A]
	adds r1, r2, 0
	adds r1, 0x58
	movs r0, 0xF0
	strh r0, [r1]
	adds r1, 0x2
	movs r0, 0xA0
	strh r0, [r1]
	adds r0, r2, 0
	adds r0, 0x5C
	movs r1, 0x3F
	strh r1, [r0]
	adds r0, 0x2
	strh r1, [r0]
	bl GetCurrentMapMusic
	ldr r1, [r5]
	adds r1, 0x60
	strh r0, [r1]
	movs r7, 0
	ldr r0, =gUnknown_085A76B4
	mov r8, r0
_0812A934:
	ldr r0, =gUnknown_0203AB34
	ldr r4, [r0]
	lsls r6, r7, 1
	adds r0, r4, 0
	adds r0, 0x22
	adds r0, r6
	movs r1, 0
	strh r1, [r0]
	adds r5, r4, 0
	adds r5, 0x28
	adds r5, r6
	ldrb r0, [r4, 0x3]
	lsls r0, 1
	lsls r1, r7, 2
	adds r0, r1
	add r0, r8
	movs r1, 0
	ldrsh r0, [r0, r1]
	movs r1, 0x15
	bl __modsi3
	strh r0, [r5]
	adds r4, 0x1C
	adds r4, r6
	movs r2, 0
	ldrsh r0, [r5, r2]
	lsls r1, r0, 1
	adds r1, r0
	lsls r1, 3
	movs r2, 0xFC
	lsls r2, 1
	adds r0, r2, 0
	subs r0, r1
	strh r0, [r4]
	movs r1, 0
	ldrsh r0, [r4, r1]
	adds r1, r2, 0
	bl __modsi3
	strh r0, [r4]
	adds r0, r7, 0x1
	lsls r0, 24
	lsrs r7, r0, 24
	cmp r7, 0x2
	bls _0812A934
	bl GetCoins
	lsls r0, 16
	lsrs r0, 16
	bl sub_80EDE70
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812A8C4

	thumb_func_start sub_812A9AC
sub_812A9AC: @ 812A9AC
	push {lr}
	bl ResetPaletteFade
	bl ResetSpriteData
	ldr r1, =gOamLimit
	movs r0, 0x80
	strb r0, [r1]
	bl FreeAllSpritePalettes
	bl ResetTasks
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812A9AC

	thumb_func_start sub_812A9CC
sub_812A9CC: @ 812A9CC
	push {r4,r5,lr}
	ldr r4, =gUnknown_0203AACC
	movs r0, 0x8
	bl Alloc
	str r0, [r4]
	ldr r4, =gUnknown_0203AAD0
	movs r0, 0xE
	bl AllocZeroed
	str r0, [r4]
	ldr r5, =gUnknown_0203AADC
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r5]
	ldr r1, [r4]
	ldr r2, =0x00002051
	adds r0, r2, 0
	strh r0, [r1]
	ldr r1, [r4]
	ldr r2, =0x00002851
	adds r0, r2, 0
	strh r0, [r1, 0x2]
	ldr r2, =0x00002061
	adds r0, r2, 0
	strh r0, [r1, 0x4]
	ldr r2, =0x00002861
	adds r0, r2, 0
	strh r0, [r1, 0x6]
	ldr r2, =0x000020be
	adds r0, r2, 0
	strh r0, [r1, 0x8]
	ldr r2, =0x000028be
	adds r0, r2, 0
	strh r0, [r1, 0xA]
	ldr r2, =0x000020bf
	adds r0, r2, 0
	strh r0, [r1, 0xC]
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812A9CC

	thumb_func_start sub_812AA48
sub_812AA48: @ 812AA48
	push {lr}
	bl sub_812F908
	bl sub_812F958
	bl sub_812F7E4
	movs r1, 0x80
	lsls r1, 2
	movs r0, 0
	movs r2, 0xF0
	bl copy_textbox_border_tile_patterns_to_vram
	movs r1, 0x85
	lsls r1, 2
	movs r0, 0
	movs r2, 0xE0
	bl sub_809882C
	movs r0, 0
	bl PutWindowTilemap
	pop {r0}
	bx r0
	thumb_func_end sub_812AA48

	thumb_func_start sub_812AA78
sub_812AA78: @ 812AA78
	push {lr}
	bl sub_812E0E4
	bl sub_812E1C8
	bl sub_812CEF4
	bl sub_812E300
	pop {r0}
	bx r0
	thumb_func_end sub_812AA78

	thumb_func_start sub_812AA90
sub_812AA90: @ 812AA90
	push {lr}
	bl sub_812D188
	bl sub_812BE5C
	bl sub_812DE94
	bl sub_812AAA8
	pop {r0}
	bx r0
	thumb_func_end sub_812AA90

	thumb_func_start sub_812AAA8
sub_812AAA8: @ 812AAA8
	push {r4,lr}
	ldr r4, =sub_812AAC8
	adds r0, r4, 0
	movs r1, 0
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	bl _call_via_r4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812AAA8

	thumb_func_start sub_812AAC8
sub_812AAC8: @ 812AAC8
	push {r4-r6,lr}
	lsls r0, 24
	lsrs r0, 24
	ldr r6, =gUnknown_085A7450
	lsls r1, r0, 2
	adds r1, r0
	lsls r4, r1, 3
	ldr r5, =gTasks
_0812AAD8:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	ldrb r0, [r0]
	lsls r0, 2
	adds r0, r6
	ldr r1, [r0]
	adds r0, r4, r5
	bl _call_via_r1
	lsls r0, 24
	cmp r0, 0
	bne _0812AAD8
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812AAC8

	thumb_func_start sub_812AB04
sub_812AB04: @ 812AB04
	push {r4,lr}
	sub sp, 0x4
	movs r0, 0x1
	negs r0, r0
	movs r1, 0
	str r1, [sp]
	movs r2, 0x10
	movs r3, 0
	bl BeginNormalPaletteFade
	ldr r4, =gUnknown_0203AB34
	ldr r0, [r4]
	ldrb r0, [r0, 0x2]
	bl sub_812D3B4
	ldr r1, [r4]
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	movs r0, 0
	add sp, 0x4
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812AB04

	thumb_func_start sub_812AB38
sub_812AB38: @ 812AB38
	push {lr}
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _0812AB50
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
_0812AB50:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812AB38

	thumb_func_start sub_812AB60
sub_812AB60: @ 812AB60
	push {lr}
	ldr r3, =gUnknown_0203AB34
	ldr r1, [r3]
	movs r0, 0
	strh r0, [r1, 0xE]
	strh r0, [r1, 0x12]
	strh r0, [r1, 0x18]
	ldrb r2, [r1, 0x4]
	movs r0, 0xC0
	ands r0, r2
	strb r0, [r1, 0x4]
	ldr r1, [r3]
	movs r0, 0x4
	strb r0, [r1]
	ldr r3, [r3]
	movs r1, 0xC
	ldrsh r0, [r3, r1]
	cmp r0, 0
	bgt _0812AB90
	movs r0, 0x19
	strb r0, [r3]
	b _0812ABA0
	.pool
_0812AB90:
	ldrb r0, [r3, 0xA]
	cmp r0, 0
	beq _0812ABA0
	movs r0, 0x3
	strb r0, [r3]
	movs r0, 0x4
	bl sub_812DEE4
_0812ABA0:
	movs r0, 0x1
	pop {r1}
	bx r1
	thumb_func_end sub_812AB60

	thumb_func_start sub_812ABA8
sub_812ABA8: @ 812ABA8
	push {lr}
	bl sub_812E054
	lsls r0, 24
	cmp r0, 0
	beq _0812ABBC
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x4
	strb r0, [r1]
_0812ABBC:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812ABA8

	thumb_func_start sub_812ABC8
sub_812ABC8: @ 812ABC8
	push {lr}
	movs r0, 0
	bl sub_812DEE4
	ldr r2, =gUnknown_0203AB34
	ldr r1, [r2]
	movs r0, 0x5
	strb r0, [r1]
	ldr r2, [r2]
	movs r0, 0xC
	ldrsh r1, [r2, r0]
	ldr r0, =0x0000270e
	cmp r1, r0
	ble _0812ABE8
	movs r0, 0x17
	strb r0, [r2]
_0812ABE8:
	movs r0, 0x1
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812ABC8

	thumb_func_start sub_812ABF8
sub_812ABF8: @ 812ABF8
	push {r4,r5,lr}
	ldr r0, =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0x4
	ands r0, r1
	cmp r0, 0
	beq _0812AC1C
	movs r0, 0
	bl sub_812DC80
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x8
	b _0812ACE2
	.pool
_0812AC1C:
	movs r0, 0x80
	lsls r0, 1
	ands r0, r1
	cmp r0, 0
	beq _0812AC82
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	movs r1, 0xC
	ldrsh r0, [r2, r1]
	subs r0, 0x3
	movs r3, 0x12
	ldrsh r1, [r2, r3]
	adds r0, r1
	cmp r0, 0
	blt _0812AC7C
	ldrh r4, [r2, 0x12]
	adds r0, r1, 0
	cmp r0, 0x2
	bgt _0812AC5A
_0812AC42:
	lsls r0, r4, 24
	lsrs r0, 24
	bl sub_812CE7C
	lsls r0, r4, 16
	movs r2, 0x80
	lsls r2, 9
	adds r0, r2
	lsrs r4, r0, 16
	asrs r0, 16
	cmp r0, 0x2
	ble _0812AC42
_0812AC5A:
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	ldrh r0, [r1, 0xC]
	subs r0, 0x3
	ldrh r3, [r1, 0x12]
	adds r0, r3
	strh r0, [r1, 0xC]
	movs r0, 0x3
	strh r0, [r1, 0x12]
	movs r0, 0x9
	strb r0, [r1]
	movs r0, 0x5F
	bl PlaySE
	b _0812ACE4
	.pool
_0812AC7C:
	movs r0, 0x6
	strb r0, [r2]
	b _0812ACE4
_0812AC82:
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0812ACB2
	ldr r4, =gUnknown_0203AB34
	ldr r0, [r4]
	movs r1, 0xC
	ldrsh r0, [r0, r1]
	cmp r0, 0
	beq _0812ACB2
	movs r0, 0x5F
	bl PlaySE
	ldr r0, [r4]
	ldrb r0, [r0, 0x12]
	bl sub_812CE7C
	ldr r1, [r4]
	ldrh r0, [r1, 0xC]
	subs r0, 0x1
	strh r0, [r1, 0xC]
	ldrh r0, [r1, 0x12]
	adds r0, 0x1
	strh r0, [r1, 0x12]
_0812ACB2:
	ldr r0, =gUnknown_0203AB34
	ldr r3, [r0]
	movs r1, 0x12
	ldrsh r2, [r3, r1]
	ldr r4, =gMain
	adds r5, r0, 0
	cmp r2, 0x2
	bgt _0812ACD0
	cmp r2, 0
	beq _0812ACD4
	ldrh r1, [r4, 0x2E]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	beq _0812ACD4
_0812ACD0:
	movs r0, 0x9
	strb r0, [r3]
_0812ACD4:
	ldrh r1, [r4, 0x2E]
	movs r0, 0x2
	ands r0, r1
	cmp r0, 0
	beq _0812ACE4
	ldr r1, [r5]
	movs r0, 0x15
_0812ACE2:
	strb r0, [r1]
_0812ACE4:
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812ABF8

	thumb_func_start sub_812ACF4
sub_812ACF4: @ 812ACF4
	push {lr}
	sub sp, 0xC
	movs r0, 0
	movs r1, 0
	bl sub_81973C4
	ldr r2, =gText_YouDontHaveThreeCoins
	movs r0, 0x1
	str r0, [sp]
	movs r0, 0
	str r0, [sp, 0x4]
	str r0, [sp, 0x8]
	movs r1, 0x1
	movs r3, 0
	bl PrintTextOnWindow
	movs r0, 0
	movs r1, 0x3
	bl CopyWindowToVram
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x7
	strb r0, [r1]
	movs r0, 0
	add sp, 0xC
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812ACF4

	thumb_func_start sub_812AD34
sub_812AD34: @ 812AD34
	push {lr}
	ldr r0, =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0x3
	ands r0, r1
	cmp r0, 0
	beq _0812AD52
	movs r0, 0
	movs r1, 0x1
	bl sub_8197434
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x5
	strb r0, [r1]
_0812AD52:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812AD34

	thumb_func_start sub_812AD60
sub_812AD60: @ 812AD60
	push {lr}
	bl sub_812DCB4
	lsls r0, 24
	cmp r0, 0
	beq _0812AD74
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x5
	strb r0, [r1]
_0812AD74:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812AD60

	thumb_func_start sub_812AD80
sub_812AD80: @ 812AD80
	push {r4,lr}
	adds r4, r0, 0
	bl sub_812B4EC
	bl sub_812DFDC
	movs r0, 0
	bl sub_812BEA4
	movs r0, 0x1
	bl sub_812BEA4
	movs r0, 0x2
	bl sub_812BEA4
	bl sub_80EEC80
	movs r0, 0
	strh r0, [r4, 0x8]
	ldr r4, =gUnknown_0203AB34
	ldr r0, [r4]
	ldrb r1, [r0, 0x4]
	movs r0, 0x20
	ands r0, r1
	cmp r0, 0
	beq _0812ADC4
	bl sub_812D4AC
	ldr r1, [r4]
	movs r0, 0xA
	b _0812ADCE
	.pool
_0812ADC4:
	movs r0, 0x1
	bl sub_812DEE4
	ldr r1, [r4]
	movs r0, 0xB
_0812ADCE:
	strb r0, [r1]
	ldr r4, =gUnknown_0203AB34
	ldr r0, [r4]
	movs r1, 0x8
	strh r1, [r0, 0x1A]
	ldrb r0, [r0, 0xA]
	cmp r0, 0
	beq _0812ADE6
	bl dp15_jump_random_unknown
	ldr r1, [r4]
	strh r0, [r1, 0x1A]
_0812ADE6:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812AD80

	thumb_func_start sub_812ADF4
sub_812ADF4: @ 812ADF4
	push {lr}
	bl sub_812D4CC
	lsls r0, 24
	cmp r0, 0
	beq _0812AE18
	movs r0, 0x1
	bl sub_812DEE4
	ldr r3, =gUnknown_0203AB34
	ldr r2, [r3]
	ldrb r1, [r2, 0x4]
	movs r0, 0xDF
	ands r0, r1
	strb r0, [r2, 0x4]
	ldr r1, [r3]
	movs r0, 0xB
	strb r0, [r1]
_0812AE18:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812ADF4

	thumb_func_start sub_812AE24
sub_812AE24: @ 812AE24
	push {lr}
	ldrh r1, [r0, 0x8]
	adds r1, 0x1
	strh r1, [r0, 0x8]
	lsls r1, 16
	asrs r1, 16
	cmp r1, 0x1D
	ble _0812AE40
	bl sub_812B55C
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0xC
	strb r0, [r1]
_0812AE40:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812AE24

	thumb_func_start sub_812AE4C
sub_812AE4C: @ 812AE4C
	push {r4,lr}
	ldr r0, =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	beq _0812AE78
	movs r0, 0x18
	bl PlaySE
	ldr r4, =gUnknown_0203AB34
	ldr r0, [r4]
	ldrb r0, [r0, 0x18]
	bl sub_812BEDC
	ldr r0, [r4]
	ldrb r0, [r0, 0x18]
	bl sub_812CD40
	ldr r1, [r4]
	movs r0, 0xD
	strb r0, [r1]
_0812AE78:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812AE4C

	thumb_func_start sub_812AE88
sub_812AE88: @ 812AE88
	push {r4,lr}
	ldr r4, =gUnknown_0203AB34
	ldr r0, [r4]
	ldrb r0, [r0, 0x18]
	bl sub_812BF04
	lsls r0, 24
	cmp r0, 0
	bne _0812AEBC
	ldr r1, [r4]
	ldrh r0, [r1, 0x18]
	adds r0, 0x1
	strh r0, [r1, 0x18]
	movs r0, 0xC
	strb r0, [r1]
	ldr r1, [r4]
	movs r2, 0x18
	ldrsh r0, [r1, r2]
	cmp r0, 0x2
	ble _0812AEB4
	movs r0, 0xE
	strb r0, [r1]
_0812AEB4:
	movs r0, 0x1
	b _0812AEBE
	.pool
_0812AEBC:
	movs r0, 0
_0812AEBE:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812AE88

	thumb_func_start sub_812AEC4
sub_812AEC4: @ 812AEC4
	push {r4,lr}
	ldr r4, =gUnknown_0203AB34
	ldr r2, [r4]
	ldrb r1, [r2, 0x4]
	movs r0, 0xC0
	ands r0, r1
	strb r0, [r2, 0x4]
	bl sub_812B828
	ldr r1, [r4]
	ldrb r0, [r1, 0xA]
	cmp r0, 0
	beq _0812AEEA
	subs r0, 0x1
	strb r0, [r1, 0xA]
	ldr r1, [r4]
	ldrb r0, [r1, 0xB]
	adds r0, 0x1
	strb r0, [r1, 0xB]
_0812AEEA:
	ldr r1, [r4]
	ldrh r0, [r1, 0x8]
	cmp r0, 0
	beq _0812AFCC
	movs r0, 0xF
	strb r0, [r1]
	bl sub_812BABC
	bl sub_812D0B0
	ldr r2, [r4]
	ldrh r0, [r2, 0x10]
	ldrh r1, [r2, 0xE]
	subs r0, r1
	strh r0, [r2, 0x10]
	lsls r0, 16
	cmp r0, 0
	bge _0812AF12
	movs r0, 0
	strh r0, [r2, 0x10]
_0812AF12:
	ldr r0, [r4]
	ldrh r1, [r0, 0x8]
	movs r0, 0xC0
	lsls r0, 1
	ands r0, r1
	cmp r0, 0
	beq _0812AF38
	ldr r0, =0x00000185
	bl PlayFanfare
	movs r0, 0x6
	bl sub_812DEE4
	b _0812AF62
	.pool
_0812AF38:
	movs r0, 0x40
	ands r0, r1
	cmp r0, 0
	beq _0812AF54
	ldr r0, =0x00000185
	bl PlayFanfare
	movs r0, 0x5
	bl sub_812DEE4
	b _0812AF62
	.pool
_0812AF54:
	movs r0, 0xC3
	lsls r0, 1
	bl PlayFanfare
	movs r0, 0x2
	bl sub_812DEE4
_0812AF62:
	ldr r2, =gUnknown_0203AB34
	ldr r3, [r2]
	ldrh r1, [r3, 0x8]
	movs r0, 0xE0
	lsls r0, 1
	ands r0, r1
	cmp r0, 0
	beq _0812AFA6
	ldrb r1, [r3, 0x4]
	movs r0, 0x3F
	ands r0, r1
	movs r4, 0
	strb r0, [r3, 0x4]
	ldr r3, [r2]
	ldrh r1, [r3, 0x8]
	movs r0, 0xC0
	lsls r0, 1
	ands r0, r1
	cmp r0, 0
	beq _0812AFA6
	strb r4, [r3, 0xA]
	ldr r0, [r2]
	strb r4, [r0, 0xB]
	ldr r0, [r2]
	strb r4, [r0, 0x3]
	ldr r3, [r2]
	ldrh r1, [r3, 0x8]
	movs r0, 0x80
	lsls r0, 1
	ands r0, r1
	cmp r0, 0
	beq _0812AFA6
	movs r0, 0x1
	strb r0, [r3, 0x3]
_0812AFA6:
	ldr r3, [r2]
	ldrh r1, [r3, 0x8]
	movs r0, 0x20
	ands r0, r1
	cmp r0, 0
	beq _0812AFEE
	ldrb r0, [r3, 0x2]
	cmp r0, 0xF
	bhi _0812AFEE
	adds r0, 0x1
	strb r0, [r3, 0x2]
	ldr r0, [r2]
	ldrb r0, [r0, 0x2]
	bl sub_812D1A8
	b _0812AFEE
	.pool
_0812AFCC:
	movs r0, 0x3
	bl sub_812DEE4
	ldr r1, [r4]
	movs r0, 0x14
	strb r0, [r1]
	ldr r1, [r4]
	ldrh r0, [r1, 0x12]
	ldrh r2, [r1, 0x10]
	adds r0, r2
	strh r0, [r1, 0x10]
	lsls r0, 16
	asrs r0, 16
	ldr r2, =0x0000270f
	cmp r0, r2
	ble _0812AFEE
	strh r2, [r1, 0x10]
_0812AFEE:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812AEC4

	thumb_func_start sub_812AFFC
sub_812AFFC: @ 812AFFC
	push {lr}
	bl sub_812BADC
	lsls r0, 24
	cmp r0, 0
	beq _0812B010
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x10
	strb r0, [r1]
_0812B010:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812AFFC

	thumb_func_start sub_812B01C
sub_812B01C: @ 812B01C
	push {r4,lr}
	bl sub_812D0E0
	lsls r0, 24
	cmp r0, 0
	beq _0812B088
	ldr r4, =gUnknown_0203AB34
	ldr r1, [r4]
	movs r0, 0x13
	strb r0, [r1]
	ldr r0, [r4]
	ldrh r1, [r0, 0x8]
	movs r0, 0xC0
	lsls r0, 1
	ands r0, r1
	cmp r0, 0
	beq _0812B044
	movs r0, 0x1C
	bl IncrementGameStat
_0812B044:
	ldr r2, [r4]
	ldrh r1, [r2, 0x8]
	movs r3, 0x4
	adds r0, r3, 0
	ands r0, r1
	cmp r0, 0
	beq _0812B05A
	movs r0, 0
	strh r0, [r2, 0x18]
	movs r0, 0x9
	strb r0, [r2]
_0812B05A:
	ldr r2, [r4]
	ldrh r1, [r2, 0x8]
	movs r0, 0x20
	ands r0, r1
	cmp r0, 0
	beq _0812B06A
	movs r0, 0x11
	strb r0, [r2]
_0812B06A:
	ldr r1, [r4]
	ldrb r0, [r1, 0xA]
	cmp r0, 0
	beq _0812B088
	ldrh r1, [r1, 0x8]
	adds r0, r3, 0
	ands r0, r1
	cmp r0, 0
	beq _0812B088
	movs r0, 0x4
	bl sub_812DEE4
	ldr r1, [r4]
	movs r0, 0x12
	strb r0, [r1]
_0812B088:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B01C

	thumb_func_start sub_812B094
sub_812B094: @ 812B094
	push {r4,lr}
	bl sub_812D20C
	lsls r0, 24
	cmp r0, 0
	bne _0812B0CC
	ldr r4, =gUnknown_0203AB34
	ldr r1, [r4]
	movs r0, 0x13
	strb r0, [r1]
	ldr r2, [r4]
	ldrh r1, [r2, 0x8]
	movs r0, 0x4
	ands r0, r1
	cmp r0, 0
	beq _0812B0CC
	movs r0, 0x9
	strb r0, [r2]
	ldr r0, [r4]
	ldrb r0, [r0, 0xA]
	cmp r0, 0
	beq _0812B0CC
	movs r0, 0x4
	bl sub_812DEE4
	ldr r1, [r4]
	movs r0, 0x12
	strb r0, [r1]
_0812B0CC:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B094

	thumb_func_start sub_812B0D8
sub_812B0D8: @ 812B0D8
	push {lr}
	bl sub_812E054
	lsls r0, 24
	cmp r0, 0
	beq _0812B0FC
	ldr r2, =gUnknown_0203AB34
	ldr r1, [r2]
	movs r0, 0x13
	strb r0, [r1]
	ldr r2, [r2]
	ldrh r1, [r2, 0x8]
	movs r0, 0x4
	ands r0, r1
	cmp r0, 0
	beq _0812B0FC
	movs r0, 0x9
	strb r0, [r2]
_0812B0FC:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B0D8

	thumb_func_start sub_812B108
sub_812B108: @ 812B108
	push {lr}
	movs r0, 0
	bl sub_812CEB8
	movs r0, 0x1
	bl sub_812CEB8
	movs r0, 0x2
	bl sub_812CEB8
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x2
	strb r0, [r1]
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B108

	thumb_func_start sub_812B130
sub_812B130: @ 812B130
	push {lr}
	adds r1, r0, 0
	ldrh r0, [r1, 0xA]
	adds r0, 0x1
	strh r0, [r1, 0xA]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x40
	ble _0812B14E
	movs r0, 0
	strh r0, [r1, 0xA]
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x13
	strb r0, [r1]
_0812B14E:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B130

	thumb_func_start sub_812B158
sub_812B158: @ 812B158
	push {lr}
	sub sp, 0xC
	movs r0, 0
	movs r1, 0
	bl sub_81973C4
	ldr r2, =gText_QuitTheGame
	movs r0, 0x1
	str r0, [sp]
	movs r0, 0
	str r0, [sp, 0x4]
	str r0, [sp, 0x8]
	movs r1, 0x1
	movs r3, 0
	bl PrintTextOnWindow
	movs r0, 0
	movs r1, 0x3
	bl CopyWindowToVram
	movs r2, 0x85
	lsls r2, 2
	movs r3, 0xC0
	lsls r3, 1
	movs r0, 0xE
	str r0, [sp]
	movs r0, 0xF
	str r0, [sp, 0x4]
	movs r0, 0x15
	movs r1, 0x7
	bl sub_80323CC
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x16
	strb r0, [r1]
	movs r0, 0
	add sp, 0xC
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B158

	thumb_func_start sub_812B1B0
sub_812B1B0: @ 812B1B0
	push {lr}
	bl sub_8198C58
	lsls r0, 24
	asrs r1, r0, 24
	cmp r1, 0
	bne _0812B1EC
	movs r0, 0
	movs r1, 0x1
	bl sub_8197434
	movs r0, 0
	bl sub_812CEB8
	movs r0, 0x1
	bl sub_812CEB8
	movs r0, 0x2
	bl sub_812CEB8
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	ldrh r0, [r1, 0x12]
	ldrh r2, [r1, 0xC]
	adds r0, r2
	strh r0, [r1, 0xC]
	movs r0, 0x1B
	b _0812B206
	.pool
_0812B1EC:
	cmp r1, 0x1
	beq _0812B1F8
	movs r0, 0x1
	negs r0, r0
	cmp r1, r0
	bne _0812B208
_0812B1F8:
	movs r0, 0
	movs r1, 0x1
	bl sub_8197434
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x5
_0812B206:
	strb r0, [r1]
_0812B208:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B1B0

	thumb_func_start sub_812B214
sub_812B214: @ 812B214
	push {lr}
	sub sp, 0xC
	movs r0, 0
	movs r1, 0
	bl sub_81973C4
	ldr r2, =gText_YouveGot9999Coins
	movs r0, 0x1
	str r0, [sp]
	movs r0, 0
	str r0, [sp, 0x4]
	str r0, [sp, 0x8]
	movs r1, 0x1
	movs r3, 0
	bl PrintTextOnWindow
	movs r0, 0
	movs r1, 0x3
	bl CopyWindowToVram
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x18
	strb r0, [r1]
	movs r0, 0
	add sp, 0xC
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B214

	thumb_func_start sub_812B254
sub_812B254: @ 812B254
	push {lr}
	ldr r0, =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0x3
	ands r0, r1
	cmp r0, 0
	beq _0812B272
	movs r0, 0
	movs r1, 0x1
	bl sub_8197434
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x5
	strb r0, [r1]
_0812B272:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B254

	thumb_func_start sub_812B280
sub_812B280: @ 812B280
	push {lr}
	sub sp, 0xC
	movs r0, 0
	movs r1, 0
	bl sub_81973C4
	ldr r2, =gText_YouveRunOutOfCoins
	movs r0, 0x1
	str r0, [sp]
	movs r0, 0
	str r0, [sp, 0x4]
	str r0, [sp, 0x8]
	movs r1, 0x1
	movs r3, 0
	bl PrintTextOnWindow
	movs r0, 0
	movs r1, 0x3
	bl CopyWindowToVram
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x1A
	strb r0, [r1]
	movs r0, 0
	add sp, 0xC
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B280

	thumb_func_start sub_812B2C0
sub_812B2C0: @ 812B2C0
	push {lr}
	ldr r0, =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0x3
	ands r0, r1
	cmp r0, 0
	beq _0812B2DE
	movs r0, 0
	movs r1, 0x1
	bl sub_8197434
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x1B
	strb r0, [r1]
_0812B2DE:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B2C0

	thumb_func_start sub_812B2EC
sub_812B2EC: @ 812B2EC
	push {r4,lr}
	sub sp, 0x4
	ldr r4, =gUnknown_0203AB34
	ldr r0, [r4]
	ldrh r0, [r0, 0xC]
	bl SetCoins
	bl GetCoins
	lsls r0, 16
	lsrs r0, 16
	bl sub_80EDD78
	movs r0, 0x1
	negs r0, r0
	movs r1, 0
	str r1, [sp]
	movs r2, 0
	movs r3, 0x10
	bl BeginNormalPaletteFade
	ldr r1, [r4]
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	movs r0, 0
	add sp, 0x4
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B2EC

	thumb_func_start sub_812B32C
sub_812B32C: @ 812B32C
	push {r4-r6,lr}
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0
	beq _0812B340
	b _0812B470
_0812B340:
	ldr r6, =gUnknown_0203AB34
	ldr r0, [r6]
	ldr r0, [r0, 0x64]
	bl SetMainCallback2
	ldr r4, =gUnknown_0203AAF4
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AAF8
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AAFC
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AB00
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AB04
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AB08
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AB0C
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AB10
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AB14
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AB18
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AB1C
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AB20
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AB24
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AB28
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AAE4
	ldr r0, [r4]
	cmp r0, 0
	beq _0812B3E4
	bl Free
	str r5, [r4]
_0812B3E4:
	ldr r4, =gUnknown_0203AAE8
	ldr r0, [r4]
	cmp r0, 0
	beq _0812B3F2
	bl Free
	str r5, [r4]
_0812B3F2:
	ldr r4, =gUnknown_0203AAEC
	ldr r0, [r4]
	cmp r0, 0
	beq _0812B400
	bl Free
	str r5, [r4]
_0812B400:
	ldr r4, =gUnknown_0203AAF0
	ldr r0, [r4]
	cmp r0, 0
	beq _0812B40E
	bl Free
	str r5, [r4]
_0812B40E:
	ldr r4, =gUnknown_0203AAC8
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AACC
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AAD0
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AAD4
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AAD8
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AADC
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AAE0
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AB2C
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0203AB30
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r0, [r6]
	bl Free
	str r5, [r6]
_0812B470:
	movs r0, 0
	pop {r4-r6}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B32C

	thumb_func_start sub_812B4EC
sub_812B4EC: @ 812B4EC
	push {r4,lr}
	ldr r4, =gUnknown_0203AB34
	ldr r1, [r4]
	ldrb r0, [r1, 0xA]
	cmp r0, 0
	bne _0812B54A
	ldrb r1, [r1, 0x4]
	movs r0, 0xC0
	ands r0, r1
	cmp r0, 0
	bne _0812B54A
	bl sub_812B5B0
	lsls r0, 24
	cmp r0, 0
	beq _0812B52C
	bl sub_812B5EC
	lsls r0, 24
	lsrs r3, r0, 24
	cmp r3, 0x3
	beq _0812B52C
	ldr r2, [r4]
	ldr r1, =gUnknown_085A77FE
	lsls r0, r3, 1
	adds r0, r1
	ldrb r1, [r0]
	ldrb r0, [r2, 0x4]
	orrs r0, r1
	strb r0, [r2, 0x4]
	cmp r3, 0x1
	bne _0812B54A
_0812B52C:
	bl sub_812B634
	lsls r0, 24
	lsrs r3, r0, 24
	cmp r3, 0x5
	beq _0812B54A
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	ldr r1, =gUnknown_085A7804
	lsls r0, r3, 1
	adds r0, r1
	ldrb r1, [r0]
	ldrb r0, [r2, 0x4]
	orrs r0, r1
	strb r0, [r2, 0x4]
_0812B54A:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812B4EC

	thumb_func_start sub_812B55C
sub_812B55C: @ 812B55C
	push {lr}
	ldr r2, =gUnknown_0203AB34
	ldr r1, [r2]
	movs r0, 0
	strb r0, [r1, 0x6]
	ldr r2, [r2]
	ldrb r0, [r2, 0x4]
	cmp r0, 0
	beq _0812B572
	movs r0, 0x1
	strb r0, [r2, 0x6]
_0812B572:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812B55C

	thumb_func_start sub_812B57C
sub_812B57C: @ 812B57C
	push {r4,lr}
	lsls r0, 24
	lsrs r1, r0, 24
	movs r2, 0
	movs r3, 0x1
	ldr r4, =gUnknown_085A77F6
_0812B588:
	adds r0, r1, 0
	ands r0, r3
	cmp r0, 0
	beq _0812B59C
	adds r0, r2, r4
	ldrb r0, [r0]
	b _0812B5AA
	.pool
_0812B59C:
	lsrs r1, 1
	adds r0, r2, 0x1
	lsls r0, 24
	lsrs r2, r0, 24
	cmp r2, 0x7
	bls _0812B588
	movs r0, 0
_0812B5AA:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812B57C

	thumb_func_start sub_812B5B0
sub_812B5B0: @ 812B5B0
	push {r4,lr}
	bl Random
	lsls r0, 24
	lsrs r0, 24
	ldr r4, =gUnknown_085A76C0
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	movs r3, 0x12
	ldrsh r2, [r1, r3]
	ldrb r3, [r1, 0x1]
	lsls r1, r3, 1
	adds r1, r3
	subs r1, 0x1
	adds r2, r1
	adds r2, r4
	ldrb r1, [r2]
	cmp r1, r0
	bhi _0812B5E4
	movs r0, 0
	b _0812B5E6
	.pool
_0812B5E4:
	movs r0, 0x1
_0812B5E6:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812B5B0

	thumb_func_start sub_812B5EC
sub_812B5EC: @ 812B5EC
	push {r4-r6,lr}
	movs r5, 0
	ldr r6, =gUnknown_085A76D2
_0812B5F2:
	bl Random
	movs r2, 0xFF
	ldr r1, =gUnknown_0203AB34
	ldr r3, [r1]
	lsls r1, r5, 16
	asrs r4, r1, 16
	lsls r1, r4, 1
	adds r1, r4
	lsls r1, 1
	ldrb r3, [r3, 0x1]
	adds r1, r3
	adds r1, r6
	ldrb r1, [r1]
	ands r2, r0
	cmp r1, r2
	bgt _0812B620
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, 0x2
	ble _0812B5F2
_0812B620:
	lsls r0, r5, 24
	lsrs r0, 24
	pop {r4-r6}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B5EC

	thumb_func_start sub_812B634
sub_812B634: @ 812B634
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	movs r6, 0
	ldr r0, =gUnknown_085A76E4
	mov r8, r0
	movs r7, 0x80
	lsls r7, 17
_0812B644:
	bl Random
	movs r5, 0xFF
	ands r5, r0
	ldr r0, =gUnknown_0203AB34
	ldr r4, [r0]
	lsls r2, r6, 16
	asrs r1, r2, 16
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 1
	ldrb r3, [r4, 0x1]
	adds r0, r3
	add r0, r8
	ldrb r3, [r0]
	cmp r1, 0
	bne _0812B680
	ldrb r0, [r4, 0x3]
	cmp r0, 0x1
	bne _0812B680
	adds r3, 0xA
	asrs r0, r7, 16
	cmp r3, r0
	ble _0812B69E
	adds r3, r0, 0
	b _0812B69E
	.pool
_0812B680:
	asrs r0, r2, 16
	cmp r0, 0x4
	bne _0812B69E
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	ldrb r0, [r0, 0x3]
	cmp r0, 0x1
	bne _0812B69E
	lsls r0, r3, 16
	ldr r1, =0xfff60000
	adds r0, r1
	lsrs r3, r0, 16
	cmp r0, 0
	bge _0812B69E
	movs r3, 0
_0812B69E:
	lsls r0, r3, 16
	asrs r0, 16
	cmp r0, r5
	bgt _0812B6B4
	movs r3, 0x80
	lsls r3, 9
	adds r0, r2, r3
	lsrs r6, r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812B644
_0812B6B4:
	lsls r0, r6, 24
	lsrs r0, 24
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B634

	thumb_func_start sub_812B6CC
sub_812B6CC: @ 812B6CC
	push {lr}
	lsls r0, 24
	lsrs r3, r0, 24
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	ldrb r0, [r2, 0x3]
	cmp r0, 0
	beq _0812B6E8
	ldr r0, =gUnknown_085A7768
	b _0812B6EA
	.pool
_0812B6E8:
	ldr r0, =gUnknown_085A7702
_0812B6EA:
	lsls r1, r3, 4
	adds r1, r3
	ldrb r2, [r2, 0x2]
	adds r1, r2
	adds r1, r0
	ldrb r0, [r1]
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812B6CC

	thumb_func_start sub_812B700
sub_812B700: @ 812B700
	push {r4-r6,lr}
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0
	strb r0, [r1, 0x5]
	bl Random
	lsls r0, 24
	lsrs r4, r0, 24
	movs r0, 0
	bl sub_812B6CC
	lsls r0, 24
	lsrs r0, 24
	cmp r4, r0
	bcc _0812B754
	movs r6, 0x5
	b _0812B72E
	.pool
_0812B728:
	subs r0, r5, 0x1
	lsls r0, 16
	lsrs r6, r0, 16
_0812B72E:
	lsls r0, r6, 16
	asrs r5, r0, 16
	cmp r5, 0
	ble _0812B74E
	bl Random
	lsls r0, 24
	lsrs r4, r0, 24
	lsls r0, r6, 24
	lsrs r0, 24
	bl sub_812B6CC
	lsls r0, 24
	lsrs r0, 24
	cmp r4, r0
	bcs _0812B728
_0812B74E:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	strb r6, [r0, 0x5]
_0812B754:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812B700

	thumb_func_start sub_812B760
sub_812B760: @ 812B760
	push {r4,lr}
	adds r4, r0, 0
	lsls r4, 16
	lsrs r4, 16
	bl Random
	movs r1, 0xFF
	ands r1, r0
	ldr r0, =gUnknown_085A77CE
	lsls r4, 1
	adds r4, r0
	ldrh r4, [r4]
	cmp r1, r4
	bcc _0812B784
	movs r0, 0
	b _0812B786
	.pool
_0812B784:
	movs r0, 0x1
_0812B786:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812B760

	thumb_func_start dp15_jump_random_unknown
dp15_jump_random_unknown: @ 812B78C
	push {r4,r5,lr}
	movs r4, 0
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	movs r2, 0x10
	ldrsh r1, [r0, r2]
	ldr r0, =0x0000012b
	cmp r1, r0
	ble _0812B7AC
	movs r4, 0x4
	b _0812B7C2
	.pool
_0812B7AC:
	cmp r1, 0xF9
	ble _0812B7B4
	movs r4, 0x3
	b _0812B7C2
_0812B7B4:
	cmp r1, 0xC7
	ble _0812B7BC
	movs r4, 0x2
	b _0812B7C2
_0812B7BC:
	cmp r1, 0x95
	ble _0812B7C2
	movs r4, 0x1
_0812B7C2:
	bl Random
	lsls r0, 16
	lsrs r0, 16
	movs r1, 0x64
	bl __umodsi3
	lsls r0, 24
	lsrs r1, r0, 24
	ldr r5, =gUnknown_085A77D8
	lsls r4, 2
	adds r0, r4, r5
	ldrb r0, [r0]
	cmp r1, r0
	bcs _0812B7E8
	movs r0, 0x4
	b _0812B822
	.pool
_0812B7E8:
	bl Random
	lsls r0, 16
	lsrs r0, 16
	movs r1, 0x64
	bl __umodsi3
	lsls r0, 24
	adds r2, r5, 0x2
	adds r2, r4, r2
	ldr r3, =gUnknown_085A77EC
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	ldrb r1, [r1, 0xB]
	lsls r1, 1
	adds r1, r3
	ldrb r1, [r1]
	ldrb r2, [r2]
	adds r1, r2
	lsls r1, 24
	cmp r0, r1
	bcc _0812B820
	movs r0, 0x8
	b _0812B822
	.pool
_0812B820:
	movs r0, 0x2
_0812B822:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end dp15_jump_random_unknown

	thumb_func_start sub_812B828
sub_812B828: @ 812B828
	push {r4,lr}
	ldr r4, =gUnknown_0203AB34
	ldr r1, [r4]
	movs r0, 0
	strh r0, [r1, 0x8]
	bl sub_812B85C
	ldr r0, [r4]
	movs r1, 0x12
	ldrsh r0, [r0, r1]
	cmp r0, 0x1
	ble _0812B844
	bl sub_812B8D0
_0812B844:
	ldr r0, [r4]
	movs r1, 0x12
	ldrsh r0, [r0, r1]
	cmp r0, 0x2
	ble _0812B852
	bl sub_812B9A0
_0812B852:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812B828

	thumb_func_start sub_812B85C
sub_812B85C: @ 812B85C
	push {r4,r5,lr}
	movs r0, 0
	movs r1, 0x2
	bl sub_812BC44
	adds r5, r0, 0
	lsls r5, 24
	lsrs r5, 24
	movs r0, 0x1
	movs r1, 0x2
	bl sub_812BC44
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	movs r0, 0x2
	movs r1, 0x2
	bl sub_812BC44
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_812BA6C
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0x9
	beq _0812B8BC
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	ldr r0, =gUnknown_085A7828
	lsls r1, 1
	adds r0, r1, r0
	ldrh r0, [r0]
	ldrh r3, [r2, 0xE]
	adds r0, r3
	strh r0, [r2, 0xE]
	ldr r0, =gUnknown_085A7816
	adds r1, r0
	ldrh r0, [r2, 0x8]
	ldrh r1, [r1]
	orrs r0, r1
	strh r0, [r2, 0x8]
	movs r0, 0
	bl sub_812CF34
_0812B8BC:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812B85C

	thumb_func_start sub_812B8D0
sub_812B8D0: @ 812B8D0
	push {r4,r5,lr}
	movs r0, 0
	movs r1, 0x1
	bl sub_812BC44
	lsls r0, 24
	lsrs r5, r0, 24
	movs r0, 0x1
	movs r1, 0x1
	bl sub_812BC44
	lsls r0, 24
	lsrs r4, r0, 24
	movs r0, 0x2
	movs r1, 0x1
	bl sub_812BC44
	lsls r0, 24
	lsrs r2, r0, 24
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_812BA6C
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0x9
	beq _0812B930
	cmp r1, 0
	bne _0812B90C
	movs r1, 0x1
_0812B90C:
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	ldr r0, =gUnknown_085A7828
	lsls r1, 1
	adds r0, r1, r0
	ldrh r0, [r0]
	ldrh r3, [r2, 0xE]
	adds r0, r3
	strh r0, [r2, 0xE]
	ldr r0, =gUnknown_085A7816
	adds r1, r0
	ldrh r0, [r2, 0x8]
	ldrh r1, [r1]
	orrs r0, r1
	strh r0, [r2, 0x8]
	movs r0, 0x1
	bl sub_812CF34
_0812B930:
	movs r0, 0
	movs r1, 0x3
	bl sub_812BC44
	lsls r0, 24
	lsrs r5, r0, 24
	movs r0, 0x1
	movs r1, 0x3
	bl sub_812BC44
	lsls r0, 24
	lsrs r4, r0, 24
	movs r0, 0x2
	movs r1, 0x3
	bl sub_812BC44
	lsls r0, 24
	lsrs r2, r0, 24
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_812BA6C
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0x9
	beq _0812B98E
	cmp r1, 0
	bne _0812B96A
	movs r1, 0x1
_0812B96A:
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	ldr r0, =gUnknown_085A7828
	lsls r1, 1
	adds r0, r1, r0
	ldrh r0, [r0]
	ldrh r3, [r2, 0xE]
	adds r0, r3
	strh r0, [r2, 0xE]
	ldr r0, =gUnknown_085A7816
	adds r1, r0
	ldrh r0, [r2, 0x8]
	ldrh r1, [r1]
	orrs r0, r1
	strh r0, [r2, 0x8]
	movs r0, 0x2
	bl sub_812CF34
_0812B98E:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812B8D0

	thumb_func_start sub_812B9A0
sub_812B9A0: @ 812B9A0
	push {r4,r5,lr}
	movs r0, 0
	movs r1, 0x1
	bl sub_812BC44
	lsls r0, 24
	lsrs r5, r0, 24
	movs r0, 0x1
	movs r1, 0x2
	bl sub_812BC44
	lsls r0, 24
	lsrs r4, r0, 24
	movs r0, 0x2
	movs r1, 0x3
	bl sub_812BC44
	lsls r0, 24
	lsrs r2, r0, 24
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_812BA6C
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0x9
	beq _0812B9FE
	cmp r1, 0
	beq _0812B9F8
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	ldr r0, =gUnknown_085A7828
	lsls r1, 1
	adds r0, r1, r0
	ldrh r0, [r0]
	ldrh r3, [r2, 0xE]
	adds r0, r3
	strh r0, [r2, 0xE]
	ldr r0, =gUnknown_085A7816
	adds r1, r0
	ldrh r0, [r2, 0x8]
	ldrh r1, [r1]
	orrs r0, r1
	strh r0, [r2, 0x8]
_0812B9F8:
	movs r0, 0x3
	bl sub_812CF34
_0812B9FE:
	movs r0, 0
	movs r1, 0x3
	bl sub_812BC44
	lsls r0, 24
	lsrs r5, r0, 24
	movs r0, 0x1
	movs r1, 0x2
	bl sub_812BC44
	lsls r0, 24
	lsrs r4, r0, 24
	movs r0, 0x2
	movs r1, 0x1
	bl sub_812BC44
	lsls r0, 24
	lsrs r2, r0, 24
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_812BA6C
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0x9
	beq _0812BA5A
	cmp r1, 0
	beq _0812BA54
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	ldr r0, =gUnknown_085A7828
	lsls r1, 1
	adds r0, r1, r0
	ldrh r0, [r0]
	ldrh r3, [r2, 0xE]
	adds r0, r3
	strh r0, [r2, 0xE]
	ldr r0, =gUnknown_085A7816
	adds r1, r0
	ldrh r0, [r2, 0x8]
	ldrh r1, [r1]
	orrs r0, r1
	strh r0, [r2, 0x8]
_0812BA54:
	movs r0, 0x4
	bl sub_812CF34
_0812BA5A:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812B9A0

	thumb_func_start sub_812BA6C
sub_812BA6C: @ 812BA6C
	push {lr}
	lsls r0, 24
	lsrs r3, r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	cmp r3, r1
	bne _0812BA90
	cmp r3, r2
	bne _0812BA90
	ldr r0, =gUnknown_085A780E
	adds r0, r3, r0
	ldrb r0, [r0]
	b _0812BAB6
	.pool
_0812BA90:
	cmp r3, 0
	bne _0812BA9C
	cmp r1, 0
	bne _0812BA9C
	cmp r2, 0x1
	beq _0812BAA8
_0812BA9C:
	cmp r3, 0x1
	bne _0812BAAC
	cmp r1, 0x1
	bne _0812BAAC
	cmp r2, 0
	bne _0812BAAC
_0812BAA8:
	movs r0, 0x6
	b _0812BAB6
_0812BAAC:
	cmp r3, 0x4
	beq _0812BAB4
	movs r0, 0x9
	b _0812BAB6
_0812BAB4:
	movs r0, 0
_0812BAB6:
	pop {r1}
	bx r1
	thumb_func_end sub_812BA6C

	thumb_func_start sub_812BABC
sub_812BABC: @ 812BABC
	push {r4,lr}
	ldr r4, =sub_812BAFC
	adds r0, r4, 0
	movs r1, 0x4
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	bl _call_via_r4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812BABC

	thumb_func_start sub_812BADC
sub_812BADC: @ 812BADC
	push {lr}
	ldr r0, =sub_812BAFC
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0xFF
	beq _0812BAF4
	movs r0, 0
	b _0812BAF6
	.pool
_0812BAF4:
	movs r0, 0x1
_0812BAF6:
	pop {r1}
	bx r1
	thumb_func_end sub_812BADC

	thumb_func_start sub_812BAFC
sub_812BAFC: @ 812BAFC
	push {r4,r5,lr}
	lsls r0, 24
	lsrs r0, 24
	ldr r5, =gUnknown_085A74C4
	ldr r2, =gTasks
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	adds r4, r1, r2
_0812BB0E:
	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 _0812BB0E
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812BAFC

	thumb_func_start sub_812BB34
sub_812BB34: @ 812BB34
	push {r4,lr}
	adds r4, r0, 0
	bl sub_812CF6C
	lsls r0, 24
	cmp r0, 0
	beq _0812BB60
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	movs r1, 0xE
	ldrsh r0, [r0, r1]
	cmp r0, 0
	bne _0812BB60
	movs r0, 0x2
	strh r0, [r4, 0x8]
	movs r0, 0x1
	b _0812BB62
	.pool
_0812BB60:
	movs r0, 0
_0812BB62:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812BB34

	thumb_func_start sub_812BB68
sub_812BB68: @ 812BB68
	push {r4,lr}
	adds r4, r0, 0
	ldrh r0, [r4, 0xA]
	subs r0, 0x1
	strh r0, [r4, 0xA]
	lsls r0, 16
	asrs r0, 16
	movs r1, 0x1
	negs r1, r1
	cmp r0, r1
	bne _0812BBBC
	bl IsFanfareTaskInactive
	lsls r0, 24
	cmp r0, 0
	beq _0812BB8E
	movs r0, 0x15
	bl PlaySE
_0812BB8E:
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	ldrh r0, [r2, 0xE]
	subs r0, 0x1
	strh r0, [r2, 0xE]
	ldrh r3, [r2, 0xC]
	movs r0, 0xC
	ldrsh r1, [r2, r0]
	ldr r0, =0x0000270e
	cmp r1, r0
	bgt _0812BBA8
	adds r0, r3, 0x1
	strh r0, [r2, 0xC]
_0812BBA8:
	movs r0, 0x8
	strh r0, [r4, 0xA]
	ldr r0, =gMain
	ldrh r1, [r0, 0x2C]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	beq _0812BBBC
	movs r0, 0x4
	strh r0, [r4, 0xA]
_0812BBBC:
	bl IsFanfareTaskInactive
	lsls r0, 24
	cmp r0, 0
	beq _0812BBF6
	ldr r0, =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0x8
	ands r0, r1
	cmp r0, 0
	beq _0812BBF6
	movs r0, 0x15
	bl PlaySE
	ldr r1, =gUnknown_0203AB34
	ldr r2, [r1]
	ldrh r0, [r2, 0xE]
	ldrh r3, [r2, 0xC]
	adds r0, r3
	strh r0, [r2, 0xC]
	lsls r0, 16
	asrs r0, 16
	ldr r3, =0x0000270f
	cmp r0, r3
	ble _0812BBF0
	strh r3, [r2, 0xC]
_0812BBF0:
	ldr r1, [r1]
	movs r0, 0
	strh r0, [r1, 0xE]
_0812BBF6:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	movs r1, 0xE
	ldrsh r0, [r0, r1]
	cmp r0, 0
	bne _0812BC08
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
_0812BC08:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812BB68

	thumb_func_start sub_812BC20
sub_812BC20: @ 812BC20
	push {lr}
	bl sub_812CFB8
	lsls r0, 24
	cmp r0, 0
	beq _0812BC3A
	ldr r0, =sub_812BAFC
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r0, 24
	bl DestroyTask
_0812BC3A:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812BC20

	thumb_func_start sub_812BC44
sub_812BC44: @ 812BC44
	push {r4,lr}
	lsls r0, 24
	lsrs r0, 24
	adds r4, r0, 0
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	lsls r2, r4, 1
	adds r0, 0x28
	adds r0, r2
	movs r2, 0
	ldrsh r0, [r0, r2]
	lsls r1, 16
	asrs r1, 16
	adds r0, r1
	movs r1, 0x15
	bl __modsi3
	lsls r0, 16
	lsrs r1, r0, 16
	asrs r0, 16
	cmp r0, 0
	bge _0812BC76
	adds r0, 0x15
	lsls r0, 16
	lsrs r1, r0, 16
_0812BC76:
	ldr r2, =gUnknown_085A766E
	lsls r1, 16
	asrs r1, 16
	lsls r0, r4, 2
	adds r0, r4
	lsls r0, 2
	adds r0, r4
	adds r1, r0
	adds r1, r2
	ldrb r0, [r1]
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812BC44

	thumb_func_start sub_812BC98
sub_812BC98: @ 812BC98
	push {r4-r6,lr}
	lsls r0, 24
	lsrs r0, 24
	adds r4, r0, 0
	lsls r1, 16
	lsrs r5, r1, 16
	movs r6, 0
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	lsls r1, r4, 1
	adds r0, 0x1C
	adds r0, r1
	movs r1, 0
	ldrsh r0, [r0, r1]
	movs r1, 0x18
	bl __modsi3
	lsls r0, 16
	cmp r0, 0
	beq _0812BCC2
	ldr r6, =0x0000ffff
_0812BCC2:
	lsls r1, r5, 16
	asrs r1, 16
	lsls r0, r6, 16
	asrs r0, 16
	adds r1, r0
	lsls r1, 16
	asrs r1, 16
	adds r0, r4, 0
	bl sub_812BC44
	lsls r0, 24
	lsrs r0, 24
	pop {r4-r6}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812BC98

	thumb_func_start sub_812BCE8
sub_812BCE8: @ 812BCE8
	push {lr}
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	movs r2, 0x16
	ldrsh r1, [r1, r2]
	lsls r0, 16
	asrs r0, 16
	adds r1, r0
	adds r0, r1, 0
	movs r1, 0x6
	bl __modsi3
	lsls r0, 16
	lsrs r1, r0, 16
	asrs r0, 16
	cmp r0, 0
	bge _0812BD10
	adds r0, 0x6
	lsls r0, 16
	lsrs r1, r0, 16
_0812BD10:
	ldr r0, =gUnknown_085A76AD
	lsls r1, 16
	asrs r1, 16
	adds r1, r0
	ldrb r0, [r1]
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812BCE8

	thumb_func_start sub_812BD28
sub_812BD28: @ 812BD28
	push {r4-r6,lr}
	adds r5, r0, 0
	lsls r5, 24
	ldr r0, =gUnknown_0203AB34
	ldr r6, [r0]
	lsrs r5, 23
	adds r4, r6, 0
	adds r4, 0x1C
	adds r4, r5
	lsls r1, 16
	asrs r1, 16
	ldrh r0, [r4]
	adds r1, r0
	strh r1, [r4]
	movs r1, 0
	ldrsh r0, [r4, r1]
	movs r1, 0xFC
	lsls r1, 1
	bl __modsi3
	strh r0, [r4]
	adds r6, 0x28
	adds r6, r5
	movs r1, 0
	ldrsh r0, [r4, r1]
	movs r1, 0x18
	bl __divsi3
	movs r1, 0x15
	subs r1, r0
	strh r1, [r6]
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812BD28

	thumb_func_start sub_812BD70
sub_812BD70: @ 812BD70
	push {r4-r7,lr}
	lsls r0, 24
	lsrs r0, 24
	adds r5, r0, 0
	lsls r1, 16
	lsrs r4, r1, 16
	ldr r7, =gUnknown_0203AB34
	ldr r0, [r7]
	lsls r6, r5, 1
	adds r0, 0x1C
	adds r0, r6
	movs r1, 0
	ldrsh r0, [r0, r1]
	movs r1, 0x18
	bl __modsi3
	lsls r0, 16
	lsrs r0, 16
	lsls r2, r0, 16
	asrs r1, r2, 16
	cmp r1, 0
	beq _0812BDC4
	lsls r0, r4, 16
	asrs r0, 16
	cmp r1, r0
	bge _0812BDA6
	lsrs r4, r2, 16
_0812BDA6:
	lsls r1, r4, 16
	asrs r1, 16
	adds r0, r5, 0
	bl sub_812BD28
	ldr r0, [r7]
	adds r0, 0x1C
	adds r0, r6
	movs r1, 0
	ldrsh r0, [r0, r1]
	movs r1, 0x18
	bl __modsi3
	lsls r0, 16
	lsrs r0, 16
_0812BDC4:
	lsls r0, 16
	asrs r0, 16
	pop {r4-r7}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812BD70

	thumb_func_start sub_812BDD4
sub_812BDD4: @ 812BDD4
	push {r4,lr}
	ldr r1, =gUnknown_0203AB34
	ldr r4, [r1]
	lsls r0, 16
	asrs r0, 16
	ldrh r1, [r4, 0x14]
	adds r0, r1
	strh r0, [r4, 0x14]
	movs r1, 0x14
	ldrsh r0, [r4, r1]
	movs r1, 0x78
	bl __modsi3
	strh r0, [r4, 0x14]
	movs r1, 0x14
	ldrsh r0, [r4, r1]
	movs r1, 0x14
	bl __divsi3
	movs r1, 0x6
	subs r1, r0
	strh r1, [r4, 0x16]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812BDD4

	thumb_func_start sub_812BE0C
sub_812BE0C: @ 812BE0C
	push {r4,r5,lr}
	lsls r0, 16
	lsrs r4, r0, 16
	ldr r5, =gUnknown_0203AB34
	ldr r0, [r5]
	movs r1, 0x14
	ldrsh r0, [r0, r1]
	movs r1, 0x14
	bl __modsi3
	lsls r0, 16
	lsrs r0, 16
	lsls r2, r0, 16
	asrs r1, r2, 16
	cmp r1, 0
	beq _0812BE4E
	lsls r0, r4, 16
	asrs r0, 16
	cmp r1, r0
	bge _0812BE36
	lsrs r4, r2, 16
_0812BE36:
	lsls r0, r4, 16
	asrs r0, 16
	bl sub_812BDD4
	ldr r0, [r5]
	movs r1, 0x14
	ldrsh r0, [r0, r1]
	movs r1, 0x14
	bl __modsi3
	lsls r0, 16
	lsrs r0, 16
_0812BE4E:
	lsls r0, 16
	asrs r0, 16
	pop {r4,r5}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812BE0C

	thumb_func_start sub_812BE5C
sub_812BE5C: @ 812BE5C
	push {r4-r6,lr}
	movs r4, 0
	ldr r5, =sub_812BF2C
	ldr r6, =gTasks
_0812BE64:
	adds r0, r5, 0
	movs r1, 0x2
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	adds r1, r6
	strh r4, [r1, 0x26]
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	adds r1, 0x3A
	adds r1, r4
	strb r0, [r1]
	bl _call_via_r5
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0x2
	bls _0812BE64
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812BE5C

	thumb_func_start sub_812BEA4
sub_812BEA4: @ 812BEA4
	push {r4,lr}
	lsls r0, 24
	lsrs r0, 24
	ldr r4, =gTasks
	ldr r1, =gUnknown_0203AB34
	ldr r2, [r1]
	adds r2, 0x3A
	adds r2, r0
	ldrb r1, [r2]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	adds r0, r4
	movs r3, 0x1
	strh r3, [r0, 0x8]
	ldrb r1, [r2]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	adds r0, r4
	strh r3, [r0, 0x24]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812BEA4

	thumb_func_start sub_812BEDC
sub_812BEDC: @ 812BEDC
	lsls r0, 24
	lsrs r0, 24
	ldr r2, =gTasks
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	adds r1, 0x3A
	adds r1, r0
	ldrb r1, [r1]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	adds r0, r2
	movs r1, 0x2
	strh r1, [r0, 0x8]
	bx lr
	.pool
	thumb_func_end sub_812BEDC

	thumb_func_start sub_812BF04
sub_812BF04: @ 812BF04
	lsls r0, 24
	lsrs r0, 24
	ldr r2, =gTasks
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	adds r1, 0x3A
	adds r1, r0
	ldrb r1, [r1]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	adds r0, r2
	ldrh r0, [r0, 0x24]
	lsls r0, 24
	lsrs r0, 24
	bx lr
	.pool
	thumb_func_end sub_812BF04

	thumb_func_start sub_812BF2C
sub_812BF2C: @ 812BF2C
	push {r4,r5,lr}
	lsls r0, 24
	lsrs r0, 24
	ldr r5, =gUnknown_085A74D0
	ldr r2, =gTasks
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	adds r4, r1, r2
_0812BF3E:
	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 _0812BF3E
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812BF2C

	thumb_func_start sub_812BF64
sub_812BF64: @ 812BF64
	movs r0, 0
	bx lr
	thumb_func_end sub_812BF64

	thumb_func_start sub_812BF68
sub_812BF68: @ 812BF68
	push {lr}
	ldrh r0, [r0, 0x26]
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	movs r2, 0x1A
	ldrsh r1, [r1, r2]
	bl sub_812BD28
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812BF68

	thumb_func_start sub_812BF88
sub_812BF88: @ 812BF88
	push {r4,lr}
	adds r4, r0, 0
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	movs r2, 0
	strh r0, [r4, 0x8]
	ldr r0, =gUnknown_0203AB34
	ldr r3, [r0]
	movs r0, 0x26
	ldrsh r1, [r4, r0]
	lsls r1, 1
	adds r0, r3, 0
	adds r0, 0x34
	adds r0, r1
	strh r2, [r0]
	movs r0, 0x26
	ldrsh r1, [r4, r0]
	lsls r1, 1
	adds r0, r3, 0
	adds r0, 0x2E
	adds r0, r1
	strh r2, [r0]
	ldrb r0, [r3, 0xA]
	cmp r0, 0
	bne _0812BFF4
	ldrb r0, [r3, 0x4]
	cmp r0, 0
	beq _0812BFDC
	ldrb r0, [r3, 0x6]
	cmp r0, 0
	beq _0812BFDC
	ldr r1, =gUnknown_085A74E4
	movs r2, 0x26
	ldrsh r0, [r4, r2]
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	bl _call_via_r0
	lsls r0, 24
	cmp r0, 0
	bne _0812BFF4
_0812BFDC:
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0
	strb r0, [r1, 0x6]
	ldr r1, =gUnknown_085A74F0
	movs r2, 0x26
	ldrsh r0, [r4, r2]
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	bl _call_via_r0
_0812BFF4:
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r2, 0x26
	ldrsh r0, [r4, r2]
	lsls r0, 1
	adds r1, 0x2E
	adds r1, r0
	ldrh r0, [r1]
	strh r0, [r4, 0xA]
	movs r0, 0x1
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812BF88

	thumb_func_start sub_812C01C
sub_812C01C: @ 812C01C
	push {r4-r7,lr}
	sub sp, 0xC
	adds r4, r0, 0
	ldr r1, =gUnknown_085A74FC
	mov r0, sp
	movs r2, 0xA
	bl memcpy
	ldr r7, =gUnknown_0203AB34
	ldr r5, [r7]
	movs r1, 0x26
	ldrsh r0, [r4, r1]
	lsls r6, r0, 1
	adds r0, r5, 0
	adds r0, 0x1C
	adds r0, r6
	movs r2, 0
	ldrsh r0, [r0, r2]
	movs r1, 0x18
	bl __modsi3
	lsls r0, 16
	lsrs r2, r0, 16
	cmp r0, 0
	beq _0812C068
	ldrh r0, [r4, 0x26]
	lsls r0, 24
	lsrs r0, 24
	movs r6, 0x1A
	ldrsh r1, [r5, r6]
	bl sub_812BD70
	b _0812C0A0
	.pool
_0812C068:
	adds r0, r5, 0
	adds r0, 0x2E
	adds r1, r0, r6
	ldrh r3, [r1]
	movs r6, 0
	ldrsh r0, [r1, r6]
	cmp r0, 0
	beq _0812C0A4
	subs r0, r3, 0x1
	strh r0, [r1]
	ldrh r0, [r4, 0x26]
	lsls r0, 24
	lsrs r0, 24
	movs r2, 0x1A
	ldrsh r1, [r5, r2]
	bl sub_812BD28
	ldr r1, [r7]
	movs r6, 0x26
	ldrsh r0, [r4, r6]
	lsls r0, 1
	adds r1, 0x1C
	adds r1, r0
	movs r2, 0
	ldrsh r0, [r1, r2]
	movs r1, 0x18
	bl __modsi3
_0812C0A0:
	lsls r0, 16
	lsrs r2, r0, 16
_0812C0A4:
	cmp r2, 0
	bne _0812C0D2
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r6, 0x26
	ldrsh r0, [r4, r6]
	lsls r0, 1
	adds r1, 0x2E
	adds r1, r0
	movs r0, 0
	ldrsh r1, [r1, r0]
	cmp r1, 0
	bne _0812C0D2
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	movs r2, 0xA
	ldrsh r0, [r4, r2]
	lsls r0, 1
	add r0, sp
	ldrh r0, [r0]
	strh r0, [r4, 0xA]
	strh r1, [r4, 0xC]
_0812C0D2:
	movs r0, 0
	add sp, 0xC
	pop {r4-r7}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812C01C

	thumb_func_start sub_812C0E0
sub_812C0E0: @ 812C0E0
	push {r4,lr}
	adds r2, r0, 0
	ldr r4, =gUnknown_0203AB34
	ldr r1, [r4]
	movs r3, 0x26
	ldrsh r0, [r2, r3]
	lsls r0, 1
	adds r1, 0x22
	adds r1, r0
	ldrh r0, [r2, 0xA]
	strh r0, [r1]
	ldrh r0, [r2, 0xA]
	negs r3, r0
	strh r3, [r2, 0xA]
	ldrh r0, [r2, 0xC]
	adds r0, 0x1
	strh r0, [r2, 0xC]
	movs r1, 0x3
	ands r0, r1
	cmp r0, 0
	bne _0812C110
	lsls r0, r3, 16
	asrs r0, 17
	strh r0, [r2, 0xA]
_0812C110:
	movs r0, 0xA
	ldrsh r3, [r2, r0]
	cmp r3, 0
	bne _0812C12A
	strh r3, [r2, 0x8]
	strh r3, [r2, 0x24]
	ldr r1, [r4]
	movs r4, 0x26
	ldrsh r0, [r2, r4]
	lsls r0, 1
	adds r1, 0x22
	adds r1, r0
	strh r3, [r1]
_0812C12A:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812C0E0

	thumb_func_start sub_812C138
sub_812C138: @ 812C138
	push {r4,r5,lr}
	ldr r4, =gUnknown_0203AB34
	ldr r0, [r4]
	ldrb r0, [r0, 0x4]
	bl sub_812B57C
	lsls r0, 24
	lsrs r3, r0, 24
	adds r5, r3, 0
	ldr r4, [r4]
	ldrb r1, [r4, 0x4]
	movs r0, 0xC0
	ands r0, r1
	cmp r0, 0
	beq _0812C15A
	movs r5, 0
	movs r3, 0x1
_0812C15A:
	ldr r1, =gUnknown_085A7508
	movs r2, 0x12
	ldrsh r0, [r4, r2]
	subs r0, 0x1
	lsls r0, 2
	adds r0, r1
	ldr r2, [r0]
	adds r0, r5, 0
	adds r1, r3, 0
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812C138

	thumb_func_start sub_812C184
sub_812C184: @ 812C184
	push {r4,r5,lr}
	adds r3, r0, 0
	adds r4, r1, 0
	lsls r4, 24
	lsrs r4, 24
	lsls r2, 24
	lsrs r5, r2, 24
	lsls r3, 16
	asrs r3, 16
	movs r0, 0
	adds r1, r3, 0
	bl sub_812BC98
	lsls r0, 24
	lsrs r0, 24
	adds r1, r0, 0
	cmp r0, r4
	beq _0812C1AC
	cmp r0, r5
	bne _0812C1BC
_0812C1AC:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	strb r1, [r0, 0x7]
	movs r0, 0x1
	b _0812C1BE
	.pool
_0812C1BC:
	movs r0, 0
_0812C1BE:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_812C184

	thumb_func_start sub_812C1C4
sub_812C1C4: @ 812C1C4
	push {r4,lr}
	movs r1, 0x1
	lsls r0, 16
	asrs r4, r0, 16
	subs r1, r4
	lsls r1, 16
	asrs r1, 16
	movs r0, 0
	bl sub_812BC98
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x4
	beq _0812C20C
	movs r1, 0x2
	subs r1, r4
	lsls r1, 16
	asrs r1, 16
	movs r0, 0
	bl sub_812BC98
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x4
	beq _0812C20C
	movs r1, 0x3
	subs r1, r4
	lsls r1, 16
	asrs r1, 16
	movs r0, 0
	bl sub_812BC98
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x4
	bne _0812C210
_0812C20C:
	movs r0, 0x1
	b _0812C212
_0812C210:
	movs r0, 0
_0812C212:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812C1C4

	thumb_func_start sub_812C218
sub_812C218: @ 812C218
	push {lr}
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	ldrb r1, [r0, 0x4]
	movs r0, 0xC2
	ands r0, r1
	cmp r0, 0
	bne _0812C230
	movs r0, 0
	b _0812C232
	.pool
_0812C230:
	movs r0, 0x1
_0812C232:
	pop {r1}
	bx r1
	thumb_func_end sub_812C218

	thumb_func_start sub_812C238
sub_812C238: @ 812C238
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	lsls r0, 24
	lsrs r7, r0, 24
	lsls r1, 24
	lsrs r6, r1, 24
	movs r5, 0
	movs r0, 0x2
	mov r8, r0
_0812C24C:
	lsls r0, r5, 16
	asrs r4, r0, 16
	mov r1, r8
	subs r0, r1, r4
	lsls r0, 16
	asrs r0, 16
	adds r1, r7, 0
	adds r2, r6, 0
	bl sub_812C184
	lsls r0, 24
	cmp r0, 0
	beq _0812C278
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x2
	strh r0, [r1, 0x34]
	strh r5, [r1, 0x2E]
	movs r0, 0x1
	b _0812C286
	.pool
_0812C278:
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812C24C
	movs r0, 0
_0812C286:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_812C238

	thumb_func_start sub_812C290
sub_812C290: @ 812C290
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	lsls r0, 24
	lsrs r0, 24
	mov r9, r0
	lsls r1, 24
	lsrs r1, 24
	mov r8, r1
	bl sub_812C218
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0
	bne _0812C2BE
	movs r0, 0
	bl sub_812C1C4
	lsls r0, 24
	cmp r0, 0
	bne _0812C2F4
_0812C2BE:
	movs r7, 0x1
	movs r6, 0
_0812C2C2:
	lsls r0, r7, 16
	asrs r4, r0, 16
	adds r0, r4, 0
	mov r1, r9
	mov r2, r8
	bl sub_812C184
	lsls r0, 24
	cmp r0, 0
	beq _0812C2E8
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	strh r7, [r0, 0x34]
	strh r6, [r0, 0x2E]
	movs r0, 0x1
	b _0812C390
	.pool
_0812C2E8:
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r7, r0, 16
	asrs r0, 16
	cmp r0, 0x3
	ble _0812C2C2
_0812C2F4:
	movs r7, 0x1
	adds r6, r5, 0
	ldr r0, =gUnknown_0203AB34
	mov r10, r0
_0812C2FC:
	lsls r5, r7, 16
	cmp r6, 0
	bne _0812C30E
	asrs r0, r5, 16
	bl sub_812C1C4
	lsls r0, 24
	cmp r0, 0
	bne _0812C380
_0812C30E:
	movs r0, 0x1
	asrs r4, r5, 16
	subs r0, r4
	lsls r0, 16
	asrs r0, 16
	mov r1, r9
	mov r2, r8
	bl sub_812C184
	lsls r0, 24
	cmp r0, 0
	beq _0812C380
	cmp r4, 0x1
	bne _0812C34C
	cmp r6, 0
	bne _0812C33A
	movs r0, 0x3
	bl sub_812C1C4
	lsls r0, 24
	cmp r0, 0
	bne _0812C34C
_0812C33A:
	mov r0, r10
	ldr r1, [r0]
	movs r0, 0x3
	strh r0, [r1, 0x34]
	strh r0, [r1, 0x2E]
	movs r0, 0x1
	b _0812C390
	.pool
_0812C34C:
	asrs r0, r5, 16
	cmp r0, 0x3
	bgt _0812C374
	adds r4, r0, 0x1
	cmp r6, 0
	bne _0812C366
	lsls r0, r4, 16
	asrs r0, 16
	bl sub_812C1C4
	lsls r0, 24
	cmp r0, 0
	bne _0812C374
_0812C366:
	mov r0, r10
	ldr r1, [r0]
	movs r0, 0x2
	strh r0, [r1, 0x34]
	strh r4, [r1, 0x2E]
	movs r0, 0x1
	b _0812C390
_0812C374:
	mov r0, r10
	ldr r1, [r0]
	movs r0, 0x1
	strh r0, [r1, 0x34]
	strh r7, [r1, 0x2E]
	b _0812C390
_0812C380:
	movs r1, 0x80
	lsls r1, 9
	adds r0, r5, r1
	lsrs r7, r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812C2FC
	movs r0, 0
_0812C390:
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_812C290

	thumb_func_start sub_812C3A0
sub_812C3A0: @ 812C3A0
	push {lr}
	ldr r1, =gUnknown_085A7514
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	movs r2, 0x12
	ldrsh r0, [r0, r2]
	subs r0, 0x1
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	bl _call_via_r0
	lsls r0, 24
	lsrs r0, 24
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812C3A0

	thumb_func_start sub_812C3C8
sub_812C3C8: @ 812C3C8
	push {r4-r7,lr}
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	movs r5, 0
	ldrh r7, [r0, 0x34]
	movs r1, 0x34
	ldrsh r6, [r0, r1]
_0812C3D6:
	lsls r0, r5, 16
	asrs r4, r0, 16
	subs r1, r6, r4
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x1
	bl sub_812BC98
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	lsls r0, 24
	lsrs r0, 24
	ldrb r2, [r1, 0x7]
	cmp r0, r2
	bne _0812C400
	strh r7, [r1, 0x36]
	strh r5, [r1, 0x30]
	movs r0, 0x1
	b _0812C40E
	.pool
_0812C400:
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812C3D6
	movs r0, 0
_0812C40E:
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_812C3C8

	thumb_func_start sub_812C414
sub_812C414: @ 812C414
	push {r4-r6,lr}
	bl sub_812C3C8
	lsls r0, 24
	cmp r0, 0
	beq _0812C476
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r2, 0x34
	ldrsh r0, [r1, r2]
	cmp r0, 0x2
	beq _0812C472
	movs r2, 0x30
	ldrsh r0, [r1, r2]
	cmp r0, 0x1
	ble _0812C472
	cmp r0, 0x4
	beq _0812C472
	movs r5, 0
	movs r6, 0x2
_0812C43C:
	lsls r0, r5, 16
	asrs r4, r0, 16
	subs r1, r6, r4
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x1
	bl sub_812BC98
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	lsls r0, 24
	lsrs r0, 24
	ldrb r2, [r1, 0x7]
	cmp r0, r2
	beq _0812C46C
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812C43C
	b _0812C472
	.pool
_0812C46C:
	movs r0, 0x2
	strh r0, [r1, 0x36]
	strh r5, [r1, 0x30]
_0812C472:
	movs r0, 0x1
	b _0812C4B2
_0812C476:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	movs r1, 0x34
	ldrsh r0, [r0, r1]
	cmp r0, 0x2
	beq _0812C4B0
	movs r5, 0
	movs r6, 0x2
_0812C486:
	lsls r0, r5, 16
	asrs r4, r0, 16
	subs r1, r6, r4
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x1
	bl sub_812BC98
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	lsls r0, 24
	lsrs r0, 24
	ldrb r2, [r1, 0x7]
	cmp r0, r2
	beq _0812C46C
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812C486
_0812C4B0:
	movs r0, 0
_0812C4B2:
	pop {r4-r6}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812C414

	thumb_func_start sub_812C4BC
sub_812C4BC: @ 812C4BC
	push {r4,lr}
	ldr r2, =gUnknown_0203AB34
	ldr r0, [r2]
	ldrb r3, [r0, 0x7]
	adds r4, r3, 0
	ldrb r1, [r0, 0x4]
	movs r0, 0x40
	ands r0, r1
	cmp r0, 0
	beq _0812C4D8
	movs r3, 0
	cmp r4, 0
	bne _0812C4D8
	movs r3, 0x1
_0812C4D8:
	ldr r1, =gUnknown_085A7520
	ldr r0, [r2]
	movs r2, 0x12
	ldrsh r0, [r0, r2]
	subs r0, 0x1
	lsls r0, 2
	adds r0, r1
	ldr r1, [r0]
	adds r0, r3, 0
	bl _call_via_r1
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812C4BC

	thumb_func_start sub_812C500
sub_812C500: @ 812C500
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	lsls r0, 24
	lsrs r7, r0, 24
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	movs r5, 0
	ldrh r1, [r0, 0x36]
	mov r8, r1
	movs r1, 0x36
	ldrsh r6, [r0, r1]
_0812C518:
	lsls r0, r5, 16
	asrs r4, r0, 16
	subs r1, r6, r4
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x2
	bl sub_812BC98
	lsls r0, 24
	lsrs r0, 24
	cmp r0, r7
	bne _0812C544
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	mov r1, r8
	strh r1, [r0, 0x38]
	strh r5, [r0, 0x32]
	movs r0, 0x1
	b _0812C552
	.pool
_0812C544:
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812C518
	movs r0, 0
_0812C552:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_812C500

	thumb_func_start sub_812C55C
sub_812C55C: @ 812C55C
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	movs r2, 0x34
	ldrsh r1, [r0, r2]
	movs r2, 0x36
	ldrsh r0, [r0, r2]
	cmp r1, r0
	bne _0812C59C
	adds r0, r6, 0
	bl sub_812C500
	lsls r0, 24
	lsrs r0, 24
	b _0812C5D2
	.pool
_0812C588:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	strh r5, [r0, 0x32]
	mov r1, r8
	strh r1, [r0, 0x38]
	movs r0, 0x1
	b _0812C5D2
	.pool
_0812C59C:
	movs r2, 0x1
	mov r8, r2
	cmp r1, 0x1
	bne _0812C5A8
	movs r0, 0x3
	mov r8, r0
_0812C5A8:
	movs r5, 0
	mov r7, r8
_0812C5AC:
	lsls r0, r5, 16
	asrs r4, r0, 16
	subs r1, r7, r4
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x2
	bl sub_812BC98
	lsls r0, 24
	lsrs r0, 24
	cmp r0, r6
	beq _0812C588
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812C5AC
	movs r0, 0
_0812C5D2:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_812C55C

	thumb_func_start sub_812C5DC
sub_812C5DC: @ 812C5DC
	push {r4,r5,lr}
	movs r5, 0
	b _0812C5E8
_0812C5E2:
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
_0812C5E8:
	lsls r0, r5, 16
	asrs r4, r0, 16
	adds r0, r4, 0
	bl sub_812C1C4
	lsls r0, 24
	cmp r0, 0
	bne _0812C5E2
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	strh r5, [r0, 0x2E]
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812C5DC

	thumb_func_start sub_812C608
sub_812C608: @ 812C608
	push {lr}
	adds r1, r0, 0
	ldrb r0, [r1]
	cmp r0, 0
	bne _0812C616
	movs r0, 0x1
	b _0812C620
_0812C616:
	cmp r0, 0x1
	beq _0812C61E
	movs r0, 0
	b _0812C624
_0812C61E:
	movs r0, 0
_0812C620:
	strb r0, [r1]
	movs r0, 0x1
_0812C624:
	pop {r1}
	bx r1
	thumb_func_end sub_812C608

	thumb_func_start sub_812C628
sub_812C628: @ 812C628
	push {lr}
	ldr r1, =gUnknown_085A752C
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	movs r2, 0x12
	ldrsh r0, [r0, r2]
	subs r0, 0x1
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	bl _call_via_r0
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812C628

	thumb_func_start sub_812C64C
sub_812C64C: @ 812C64C
	push {r4-r7,lr}
	sub sp, 0x4
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	movs r1, 0x34
	ldrsh r0, [r2, r1]
	cmp r0, 0
	beq _0812C6C4
	ldrb r1, [r2, 0x4]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0812C6C4
	ldrh r0, [r2, 0x2E]
	movs r1, 0x2
	subs r1, r0
	lsls r1, 16
	asrs r1, 16
	movs r0, 0
	bl sub_812BC98
	mov r1, sp
	strb r0, [r1]
	mov r0, sp
	bl sub_812C608
	lsls r0, 24
	cmp r0, 0
	beq _0812C6C4
	movs r5, 0
	mov r6, sp
	movs r7, 0x2
_0812C68C:
	lsls r0, r5, 16
	asrs r4, r0, 16
	subs r1, r7, r4
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x1
	bl sub_812BC98
	ldrb r1, [r6]
	lsls r0, 24
	lsrs r0, 24
	cmp r1, r0
	bne _0812C6B8
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	movs r0, 0x2
	strh r0, [r1, 0x36]
	strh r5, [r1, 0x30]
	b _0812C6C4
	.pool
_0812C6B8:
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812C68C
_0812C6C4:
	add sp, 0x4
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_812C64C

	thumb_func_start j5_08111E84
j5_08111E84: @ 812C6CC
	push {r4-r7,lr}
	sub sp, 0x4
	ldr r4, =gUnknown_0203AB34
	ldr r2, [r4]
	ldrh r3, [r2, 0x34]
	movs r1, 0x34
	ldrsh r0, [r2, r1]
	cmp r0, 0
	beq _0812C744
	ldrb r1, [r2, 0x4]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0812C744
	ldrh r1, [r2, 0x2E]
	subs r1, r3, r1
	lsls r1, 16
	asrs r1, 16
	movs r0, 0
	bl sub_812BC98
	mov r1, sp
	strb r0, [r1]
	mov r0, sp
	bl sub_812C608
	lsls r0, 24
	cmp r0, 0
	beq _0812C744
	movs r5, 0
	mov r7, sp
	adds r6, r4, 0
_0812C70C:
	ldr r0, [r6]
	ldrh r1, [r0, 0x34]
	lsls r0, r5, 16
	asrs r4, r0, 16
	subs r1, r4
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x1
	bl sub_812BC98
	ldrb r1, [r7]
	lsls r0, 24
	lsrs r0, 24
	cmp r1, r0
	bne _0812C738
	ldr r0, [r6]
	ldrh r1, [r0, 0x34]
	strh r1, [r0, 0x36]
	strh r5, [r0, 0x30]
	b _0812C744
	.pool
_0812C738:
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812C70C
_0812C744:
	add sp, 0x4
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end j5_08111E84

	thumb_func_start sub_812C74C
sub_812C74C: @ 812C74C
	push {r4-r7,lr}
	sub sp, 0x4
	ldr r6, =gUnknown_0203AB34
	ldr r2, [r6]
	ldrh r4, [r2, 0x34]
	movs r0, 0x34
	ldrsh r3, [r2, r0]
	cmp r3, 0
	beq _0812C84A
	ldrb r1, [r2, 0x4]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0812C84A
	cmp r3, 0x2
	bne _0812C796
	bl j5_08111E84
	b _0812C84A
	.pool
_0812C778:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	movs r1, 0
	strh r5, [r0, 0x36]
	strh r1, [r0, 0x30]
	b _0812C84A
	.pool
_0812C788:
	movs r0, 0x2
	strh r0, [r1, 0x36]
	adds r0, r4, 0x1
	strh r0, [r1, 0x30]
	b _0812C84A
_0812C792:
	movs r0, 0x3
	b _0812C824
_0812C796:
	ldrh r1, [r2, 0x2E]
	subs r1, r4, r1
	lsls r1, 16
	asrs r1, 16
	movs r0, 0
	bl sub_812BC98
	mov r1, sp
	strb r0, [r1]
	mov r0, sp
	bl sub_812C608
	lsls r0, 24
	cmp r0, 0
	beq _0812C84A
	movs r5, 0x2
	ldr r0, [r6]
	movs r1, 0x34
	ldrsh r0, [r0, r1]
	cmp r0, 0x3
	bne _0812C7C2
	movs r5, 0x3
_0812C7C2:
	movs r6, 0
	mov r7, sp
_0812C7C6:
	lsls r0, r5, 16
	asrs r4, r0, 16
	movs r0, 0x1
	adds r1, r4, 0
	bl sub_812BC98
	ldrb r1, [r7]
	lsls r0, 24
	lsrs r0, 24
	cmp r1, r0
	beq _0812C778
	lsls r1, r6, 16
	movs r2, 0x80
	lsls r2, 9
	adds r1, r2
	subs r0, r4, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	lsrs r6, r1, 16
	asrs r1, 16
	cmp r1, 0x1
	ble _0812C7C6
	movs r5, 0x1
	mov r7, sp
	ldr r6, =gUnknown_0203AB34
_0812C7F8:
	ldr r0, [r6]
	ldrh r1, [r0, 0x34]
	lsls r0, r5, 16
	asrs r4, r0, 16
	subs r1, r4
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x1
	bl sub_812BC98
	ldrb r1, [r7]
	lsls r0, 24
	lsrs r0, 24
	cmp r1, r0
	bne _0812C83E
	ldr r1, [r6]
	movs r2, 0x34
	ldrsh r0, [r1, r2]
	cmp r0, 0x1
	bne _0812C830
	cmp r4, 0x2
	ble _0812C788
_0812C824:
	strh r0, [r1, 0x36]
	strh r5, [r1, 0x30]
	b _0812C84A
	.pool
_0812C830:
	cmp r4, 0x2
	ble _0812C792
	movs r0, 0x2
	strh r0, [r1, 0x36]
	subs r0, r4, 0x1
	strh r0, [r1, 0x30]
	b _0812C84A
_0812C83E:
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812C7F8
_0812C84A:
	add sp, 0x4
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_812C74C

	thumb_func_start sub_812C854
sub_812C854: @ 812C854
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	adds r2, r1, 0
	cmp r0, 0
	bne _0812C868
	cmp r1, 0x1
	beq _0812C870
_0812C868:
	cmp r0, 0x1
	bne _0812C874
	cmp r2, 0
	bne _0812C874
_0812C870:
	movs r0, 0x1
	b _0812C876
_0812C874:
	movs r0, 0
_0812C876:
	pop {r1}
	bx r1
	thumb_func_end sub_812C854

	thumb_func_start sub_812C87C
sub_812C87C: @ 812C87C
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	cmp r0, 0
	bne _0812C896
	cmp r1, 0x1
	bne _0812C896
	cmp r2, 0
	beq _0812C8A2
_0812C896:
	cmp r0, 0x1
	bne _0812C8A6
	cmp r1, 0
	bne _0812C8A6
	cmp r2, 0x1
	bne _0812C8A6
_0812C8A2:
	movs r0, 0x1
	b _0812C8A8
_0812C8A6:
	movs r0, 0
_0812C8A8:
	pop {r1}
	bx r1
	thumb_func_end sub_812C87C

	thumb_func_start sub_812C8AC
sub_812C8AC: @ 812C8AC
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	cmp r0, 0
	bne _0812C8C6
	cmp r1, 0x1
	bne _0812C8C6
	cmp r2, 0
	beq _0812C8F2
_0812C8C6:
	cmp r0, 0x1
	bne _0812C8D2
	cmp r1, 0
	bne _0812C8D2
	cmp r2, 0x1
	beq _0812C8F2
_0812C8D2:
	cmp r0, 0
	bne _0812C8DE
	cmp r1, 0
	bne _0812C8DE
	cmp r2, 0x1
	beq _0812C8F2
_0812C8DE:
	cmp r0, 0x1
	bne _0812C8EA
	cmp r1, 0x1
	bne _0812C8EA
	cmp r2, 0
	beq _0812C8F2
_0812C8EA:
	cmp r0, r1
	bne _0812C8F6
	cmp r0, r2
	bne _0812C8F6
_0812C8F2:
	movs r0, 0
	b _0812C8F8
_0812C8F6:
	movs r0, 0x1
_0812C8F8:
	pop {r1}
	bx r1
	thumb_func_end sub_812C8AC

	thumb_func_start sub_812C8FC
sub_812C8FC: @ 812C8FC
	push {lr}
	ldr r1, =gUnknown_085A7538
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	movs r2, 0x12
	ldrsh r0, [r0, r2]
	subs r0, 0x1
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	bl _call_via_r0
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812C8FC

	thumb_func_start sub_812C920
sub_812C920: @ 812C920
	push {r4-r7,lr}
	movs r6, 0
	ldr r7, =gUnknown_0203AB34
	ldr r0, [r7]
	ldrh r1, [r0, 0x2E]
	movs r4, 0x2
	subs r1, r4, r1
	lsls r1, 16
	asrs r1, 16
	movs r0, 0
	bl sub_812BC98
	lsls r0, 24
	lsrs r5, r0, 24
	ldr r0, [r7]
	ldrh r0, [r0, 0x30]
	subs r4, r0
	lsls r4, 16
	asrs r4, 16
	movs r0, 0x1
	adds r1, r4, 0
	bl sub_812BC98
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r5, r1
	bne _0812C994
	movs r4, 0x2
	b _0812C96A
	.pool
_0812C960:
	lsls r0, r6, 16
	movs r1, 0x80
	lsls r1, 9
	adds r0, r1
	lsrs r6, r0, 16
_0812C96A:
	lsls r1, r6, 16
	asrs r1, 16
	subs r1, r4, r1
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x2
	bl sub_812BC98
	lsls r0, 24
	lsrs r0, 24
	cmp r5, r0
	beq _0812C960
	cmp r5, 0
	bne _0812C98A
	cmp r0, 0x1
	beq _0812C960
_0812C98A:
	cmp r5, 0x1
	bne _0812C9F6
	cmp r0, 0
	beq _0812C960
	b _0812C9F6
_0812C994:
	adds r0, r5, 0
	bl sub_812C854
	lsls r0, 24
	cmp r0, 0
	beq _0812C9F6
	ldr r0, [r7]
	ldrb r1, [r0, 0x4]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0812C9D2
	movs r7, 0x2
_0812C9AE:
	lsls r0, r6, 16
	asrs r4, r0, 16
	subs r1, r7, r4
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x2
	bl sub_812BC98
	lsls r0, 24
	lsrs r0, 24
	cmp r5, r0
	beq _0812C9F6
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r6, r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812C9AE
_0812C9D2:
	movs r6, 0
	movs r7, 0x2
	b _0812C9DE
_0812C9D8:
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r6, r0, 16
_0812C9DE:
	lsls r0, r6, 16
	asrs r4, r0, 16
	subs r1, r7, r4
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x2
	bl sub_812BC98
	lsls r0, 24
	lsrs r0, 24
	cmp r5, r0
	beq _0812C9D8
_0812C9F6:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	strh r6, [r0, 0x32]
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812C920

	thumb_func_start sub_812CA08
sub_812CA08: @ 812CA08
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x4
	movs r0, 0
	str r0, [sp]
	ldr r4, =gUnknown_0203AB34
	ldr r2, [r4]
	movs r5, 0x36
	ldrsh r1, [r2, r5]
	cmp r1, 0
	beq _0812CAA4
	ldrh r3, [r2, 0x34]
	movs r5, 0x34
	ldrsh r0, [r2, r5]
	cmp r0, r1
	bne _0812CAA4
	ldrb r1, [r2, 0x4]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0812CAA4
	ldrh r1, [r2, 0x2E]
	subs r1, r3, r1
	lsls r1, 16
	asrs r1, 16
	movs r0, 0
	bl sub_812BC98
	lsls r0, 24
	lsrs r7, r0, 24
	ldr r0, [r4]
	ldrh r1, [r0, 0x36]
	ldrh r0, [r0, 0x30]
	subs r1, r0
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x1
	bl sub_812BC98
	lsls r0, 24
	lsrs r6, r0, 24
	adds r0, r7, 0
	adds r1, r6, 0
	bl sub_812C854
	lsls r0, 24
	cmp r0, 0
	beq _0812CAA4
	movs r5, 0
	b _0812CA7E
	.pool
_0812CA78:
	adds r0, r5, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
_0812CA7E:
	lsls r6, r5, 16
	asrs r5, r6, 16
	cmp r5, 0x4
	bgt _0812CAA4
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	ldrh r1, [r0, 0x36]
	subs r1, r5
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x2
	bl sub_812BC98
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r7, r4
	bne _0812CA78
	lsrs r6, 16
	str r6, [sp]
_0812CAA4:
	ldr r0, =gUnknown_0203AB34
	mov r9, r0
_0812CAA8:
	movs r5, 0x1
	movs r1, 0
	mov r8, r1
	ldr r2, [sp]
	lsls r2, 16
	mov r10, r2
_0812CAB4:
	mov r1, r9
	ldr r0, [r1]
	ldrh r1, [r0, 0x2E]
	lsls r5, 16
	asrs r4, r5, 16
	subs r1, r4, r1
	lsls r1, 16
	asrs r1, 16
	movs r0, 0
	bl sub_812BC98
	lsls r0, 24
	lsrs r7, r0, 24
	mov r2, r9
	ldr r0, [r2]
	ldrh r1, [r0, 0x30]
	subs r1, r4, r1
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x1
	bl sub_812BC98
	lsls r0, 24
	lsrs r6, r0, 24
	mov r1, r10
	asrs r0, r1, 16
	subs r4, r0
	lsls r4, 16
	asrs r4, 16
	movs r0, 0x2
	adds r1, r4, 0
	bl sub_812BC98
	lsls r0, 24
	lsrs r4, r0, 24
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r4, 0
	bl sub_812C8AC
	lsls r0, 24
	cmp r0, 0
	bne _0812CB3C
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r4, 0
	bl sub_812C87C
	lsls r0, 24
	cmp r0, 0
	beq _0812CB28
	mov r2, r9
	ldr r0, [r2]
	ldrb r1, [r0, 0x4]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _0812CB3C
_0812CB28:
	mov r5, r8
	lsls r0, r5, 16
	movs r1, 0x80
	lsls r1, 9
	adds r0, r1
	lsrs r0, 16
	mov r8, r0
	b _0812CB4A
	.pool
_0812CB3C:
	movs r2, 0x80
	lsls r2, 9
	adds r0, r5, r2
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, 0x3
	ble _0812CAB4
_0812CB4A:
	mov r5, r8
	cmp r5, 0
	beq _0812CB60
	ldr r1, [sp]
	lsls r0, r1, 16
	movs r2, 0x80
	lsls r2, 9
	adds r0, r2
	lsrs r0, 16
	str r0, [sp]
	b _0812CAA8
_0812CB60:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	mov r5, sp
	ldrh r5, [r5]
	strh r5, [r0, 0x32]
	add sp, 0x4
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812CA08

	thumb_func_start sub_812CB80
sub_812CB80: @ 812CB80
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	bl sub_812CA08
	ldr r4, =gUnknown_0203AB34
	ldr r2, [r4]
	movs r0, 0x36
	ldrsh r1, [r2, r0]
	cmp r1, 0
	beq _0812CC34
	ldrh r3, [r2, 0x34]
	movs r5, 0x34
	ldrsh r0, [r2, r5]
	cmp r0, r1
	beq _0812CC34
	ldrb r1, [r2, 0x4]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0812CC34
	ldrh r1, [r2, 0x2E]
	subs r1, r3, r1
	lsls r1, 16
	asrs r1, 16
	movs r0, 0
	bl sub_812BC98
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r0, [r4]
	ldrh r1, [r0, 0x36]
	ldrh r0, [r0, 0x30]
	subs r1, r0
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x1
	bl sub_812BC98
	lsls r0, 24
	lsrs r5, r0, 24
	adds r0, r6, 0
	adds r1, r5, 0
	bl sub_812C854
	lsls r0, 24
	cmp r0, 0
	beq _0812CC34
	movs r1, 0x1
	ldr r0, [r4]
	movs r2, 0x34
	ldrsh r0, [r0, r2]
	cmp r0, 0x1
	bne _0812CBEE
	movs r1, 0x3
_0812CBEE:
	movs r3, 0
	lsls r1, 16
	mov r8, r1
	adds r7, r4, 0
_0812CBF6:
	ldr r0, [r7]
	ldrh r2, [r0, 0x32]
	lsls r0, r3, 16
	asrs r5, r0, 16
	adds r2, r5, r2
	mov r0, r8
	asrs r1, r0, 16
	subs r1, r2
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x2
	bl sub_812BC98
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r6, r4
	bne _0812CC28
	ldr r1, [r7]
	ldrh r0, [r1, 0x32]
	adds r0, r5, r0
	strh r0, [r1, 0x32]
	b _0812CC34
	.pool
_0812CC28:
	adds r0, r5, 0x1
	lsls r0, 16
	lsrs r3, r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812CBF6
_0812CC34:
	ldr r7, =gUnknown_0203AB34
_0812CC36:
	ldr r0, [r7]
	ldrh r0, [r0, 0x2E]
	movs r1, 0x1
	subs r1, r0
	lsls r1, 16
	asrs r1, 16
	movs r0, 0
	bl sub_812BC98
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r0, [r7]
	ldrh r0, [r0, 0x30]
	movs r1, 0x2
	subs r1, r0
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x1
	bl sub_812BC98
	lsls r0, 24
	lsrs r5, r0, 24
	ldr r0, [r7]
	ldrh r0, [r0, 0x32]
	movs r1, 0x3
	subs r1, r0
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x2
	bl sub_812BC98
	lsls r0, 24
	lsrs r4, r0, 24
	adds r0, r6, 0
	adds r1, r5, 0
	adds r2, r4, 0
	bl sub_812C8AC
	lsls r0, 24
	cmp r0, 0
	bne _0812CCB4
	adds r0, r6, 0
	adds r1, r5, 0
	adds r2, r4, 0
	bl sub_812C87C
	lsls r0, 24
	cmp r0, 0
	beq _0812CCA4
	ldr r0, [r7]
	ldrb r1, [r0, 0x4]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _0812CCB4
_0812CCA4:
	ldr r1, [r7]
	ldrh r0, [r1, 0x32]
	adds r0, 0x1
	strh r0, [r1, 0x32]
	b _0812CC36
	.pool
_0812CCB4:
	ldr r7, =gUnknown_0203AB34
_0812CCB6:
	ldr r0, [r7]
	ldrh r0, [r0, 0x2E]
	movs r1, 0x3
	subs r1, r0
	lsls r1, 16
	asrs r1, 16
	movs r0, 0
	bl sub_812BC98
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r0, [r7]
	ldrh r0, [r0, 0x30]
	movs r1, 0x2
	subs r1, r0
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x1
	bl sub_812BC98
	lsls r0, 24
	lsrs r5, r0, 24
	ldr r0, [r7]
	ldrh r0, [r0, 0x32]
	movs r1, 0x1
	subs r1, r0
	lsls r1, 16
	asrs r1, 16
	movs r0, 0x2
	bl sub_812BC98
	lsls r0, 24
	lsrs r4, r0, 24
	adds r0, r6, 0
	adds r1, r5, 0
	adds r2, r4, 0
	bl sub_812C8AC
	lsls r0, 24
	cmp r0, 0
	bne _0812CD34
	adds r0, r6, 0
	adds r1, r5, 0
	adds r2, r4, 0
	bl sub_812C87C
	lsls r0, 24
	cmp r0, 0
	beq _0812CD24
	ldr r0, [r7]
	ldrb r1, [r0, 0x4]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _0812CD34
_0812CD24:
	ldr r1, [r7]
	ldrh r0, [r1, 0x32]
	adds r0, 0x1
	strh r0, [r1, 0x32]
	b _0812CCB6
	.pool
_0812CD34:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_812CB80

	thumb_func_start sub_812CD40
sub_812CD40: @ 812CD40
	push {r4,r5,lr}
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	ldr r5, =sub_812CD74
	adds r0, r5, 0
	movs r1, 0x5
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	ldr r2, =gTasks
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	adds r1, r2
	strh r4, [r1, 0x26]
	bl _call_via_r5
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812CD40

	thumb_func_start sub_812CD74
sub_812CD74: @ 812CD74
	push {r4,lr}
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	ldr r3, =gUnknown_085A7544
	ldr r2, =gTasks
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	adds r0, r2
	movs r4, 0x8
	ldrsh r2, [r0, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812CD74

	thumb_func_start sub_812CDA4
sub_812CDA4: @ 812CDA4
	push {r4,lr}
	sub sp, 0x4
	adds r4, r0, 0
	ldr r1, =gUnknown_085A7550
	movs r2, 0x26
	ldrsh r0, [r4, r2]
	lsls r0, 1
	adds r0, r1
	movs r1, 0
	ldrsh r0, [r0, r1]
	movs r1, 0x73
	str r1, [sp]
	movs r1, 0x62
	movs r2, 0x63
	movs r3, 0x72
	bl sub_812FA78
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812CDA4

	thumb_func_start sub_812CDD8
sub_812CDD8: @ 812CDD8
	push {lr}
	adds r1, r0, 0
	ldrh r0, [r1, 0xA]
	adds r0, 0x1
	strh r0, [r1, 0xA]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0xB
	ble _0812CDF0
	ldrh r0, [r1, 0x8]
	adds r0, 0x1
	strh r0, [r1, 0x8]
_0812CDF0:
	pop {r0}
	bx r0
	thumb_func_end sub_812CDD8

	thumb_func_start sub_812CDF4
sub_812CDF4: @ 812CDF4
	push {r4,lr}
	sub sp, 0x4
	lsls r4, r1, 24
	lsrs r4, 24
	ldr r1, =gUnknown_085A7550
	movs r2, 0x26
	ldrsh r0, [r0, r2]
	lsls r0, 1
	adds r0, r1
	movs r1, 0
	ldrsh r0, [r0, r1]
	movs r1, 0x53
	str r1, [sp]
	movs r1, 0x42
	movs r2, 0x43
	movs r3, 0x52
	bl sub_812FA78
	adds r0, r4, 0
	bl DestroyTask
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812CDF4

	thumb_func_start sub_812CE2C
sub_812CE2C: @ 812CE2C
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	ldr r2, =gUnknown_085A8408
	lsls r1, r0, 2
	adds r1, r2
	ldr r2, [r1]
	ldr r1, =gUnknown_085A8430
	adds r0, r1
	ldrb r1, [r0]
	adds r0, r2, 0
	movs r2, 0x2
	bl LoadPalette
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812CE2C

	thumb_func_start sub_812CE54
sub_812CE54: @ 812CE54
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	ldr r2, =gUnknown_085A841C
	lsls r1, r0, 2
	adds r1, r2
	ldr r2, [r1]
	ldr r1, =gUnknown_085A8430
	adds r0, r1
	ldrb r1, [r0]
	adds r0, r2, 0
	movs r2, 0x2
	bl LoadPalette
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812CE54

	thumb_func_start sub_812CE7C
sub_812CE7C: @ 812CE7C
	push {r4-r7,lr}
	lsls r0, 24
	lsrs r1, r0, 24
	movs r4, 0
	ldr r0, =gUnknown_085A843B
	adds r0, r1, r0
	ldrb r0, [r0]
	cmp r4, r0
	bcs _0812CEA8
	ldr r7, =gUnknown_085A8435
	adds r6, r0, 0
	lsls r5, r1, 1
_0812CE94:
	adds r0, r4, r5
	adds r0, r7
	ldrb r0, [r0]
	bl sub_812CE2C
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, r6
	bcc _0812CE94
_0812CEA8:
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812CE7C

	thumb_func_start sub_812CEB8
sub_812CEB8: @ 812CEB8
	push {r4-r7,lr}
	lsls r0, 24
	lsrs r1, r0, 24
	movs r4, 0
	ldr r0, =gUnknown_085A843B
	adds r0, r1, r0
	ldrb r0, [r0]
	cmp r4, r0
	bcs _0812CEE4
	ldr r7, =gUnknown_085A8435
	adds r6, r0, 0
	lsls r5, r1, 1
_0812CED0:
	adds r0, r4, r5
	adds r0, r7
	ldrb r0, [r0]
	bl sub_812CE54
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, r6
	bcc _0812CED0
_0812CEE4:
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812CEB8

	thumb_func_start sub_812CEF4
sub_812CEF4: @ 812CEF4
	push {r4,r5,lr}
	movs r4, 0
	ldr r5, =gSprites
_0812CEFA:
	ldr r0, =sub_812D024
	bl CreateInvisibleSprite
	lsls r0, 24
	lsrs r0, 24
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	adds r1, r5
	strh r4, [r1, 0x2E]
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	adds r1, 0x44
	adds r1, r4
	strb r0, [r1]
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0x4
	bls _0812CEFA
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812CEF4

	thumb_func_start sub_812CF34
sub_812CF34: @ 812CF34
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	adds r1, 0x44
	adds r1, r0
	ldrb r1, [r1]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	movs r2, 0
	movs r1, 0x1
	strh r1, [r0, 0x30]
	movs r1, 0x4
	strh r1, [r0, 0x32]
	strh r2, [r0, 0x34]
	strh r2, [r0, 0x36]
	movs r1, 0x2
	strh r1, [r0, 0x38]
	strh r2, [r0, 0x3C]
	bx lr
	.pool
	thumb_func_end sub_812CF34

	thumb_func_start sub_812CF6C
sub_812CF6C: @ 812CF6C
	push {r4,r5,lr}
	movs r2, 0
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r3, r0, 0
	adds r3, 0x44
	ldr r4, =gSprites
_0812CF7A:
	adds r0, r3, r2
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r1, r0, r4
	movs r5, 0x30
	ldrsh r0, [r1, r5]
	cmp r0, 0
	beq _0812CFA4
	movs r5, 0x32
	ldrsh r0, [r1, r5]
	cmp r0, 0
	beq _0812CFA4
	movs r0, 0
	b _0812CFB0
	.pool
_0812CFA4:
	adds r0, r2, 0x1
	lsls r0, 24
	lsrs r2, r0, 24
	cmp r2, 0x4
	bls _0812CF7A
	movs r0, 0x1
_0812CFB0:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_812CF6C

	thumb_func_start sub_812CFB8
sub_812CFB8: @ 812CFB8
	push {r4,lr}
	movs r4, 0
_0812CFBC:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x44
	adds r0, r4
	ldrb r0, [r0]
	bl sub_812CFEC
	lsls r0, 24
	cmp r0, 0
	bne _0812CFD8
	movs r0, 0
	b _0812CFE4
	.pool
_0812CFD8:
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0x4
	bls _0812CFBC
	movs r0, 0x1
_0812CFE4:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812CFB8

	thumb_func_start sub_812CFEC
sub_812CFEC: @ 812CFEC
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	ldr r0, =gSprites
	adds r1, r0
	movs r2, 0x30
	ldrsh r0, [r1, r2]
	cmp r0, 0
	bne _0812D00C
	movs r0, 0x1
	b _0812D01E
	.pool
_0812D00C:
	ldrh r2, [r1, 0x3C]
	movs r3, 0x3C
	ldrsh r0, [r1, r3]
	cmp r0, 0
	beq _0812D01A
	movs r0, 0
	strh r0, [r1, 0x30]
_0812D01A:
	lsls r0, r2, 24
	lsrs r0, 24
_0812D01E:
	pop {r1}
	bx r1
	thumb_func_end sub_812CFEC

	thumb_func_start sub_812D024
sub_812D024: @ 812D024
	push {r4-r7,lr}
	adds r2, r0, 0
	movs r1, 0x30
	ldrsh r0, [r2, r1]
	cmp r0, 0
	beq _0812D0A6
	ldrh r0, [r2, 0x34]
	subs r0, 0x1
	strh r0, [r2, 0x34]
	lsls r0, 16
	asrs r0, 16
	movs r1, 0x1
	negs r1, r1
	cmp r0, r1
	bne _0812D08E
	movs r0, 0
	strh r0, [r2, 0x3C]
	movs r6, 0x1
	strh r6, [r2, 0x34]
	ldrh r1, [r2, 0x38]
	ldrh r3, [r2, 0x36]
	adds r0, r1, r3
	strh r0, [r2, 0x36]
	movs r4, 0x4
	ldrh r5, [r2, 0x32]
	movs r7, 0x32
	ldrsh r3, [r2, r7]
	cmp r3, 0
	beq _0812D060
	movs r4, 0x8
_0812D060:
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0
	bgt _0812D078
	strh r6, [r2, 0x3C]
	negs r0, r1
	strh r0, [r2, 0x38]
	cmp r3, 0
	beq _0812D08E
	subs r0, r5, 0x1
	strh r0, [r2, 0x32]
	b _0812D080
_0812D078:
	cmp r0, r4
	blt _0812D080
	negs r0, r1
	strh r0, [r2, 0x38]
_0812D080:
	movs r1, 0x32
	ldrsh r0, [r2, r1]
	cmp r0, 0
	beq _0812D08E
	ldrh r0, [r2, 0x34]
	lsls r0, 1
	strh r0, [r2, 0x34]
_0812D08E:
	ldr r1, =gUnknown_085A8430
	movs r3, 0x2E
	ldrsh r0, [r2, r3]
	adds r0, r1
	ldrb r0, [r0]
	ldrh r3, [r2, 0x36]
	lsls r3, 24
	lsrs r3, 24
	adds r1, r3, 0
	adds r2, r3, 0
	bl sub_80B6128
_0812D0A6:
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D024

	thumb_func_start sub_812D0B0
sub_812D0B0: @ 812D0B0
	push {r4,lr}
	ldr r4, =sub_812D128
	adds r0, r4, 0
	movs r1, 0x6
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	ldr r2, =gTasks
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	adds r1, r2
	movs r2, 0x1
	strh r2, [r1, 0xE]
	bl _call_via_r4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D0B0

	thumb_func_start sub_812D0E0
sub_812D0E0: @ 812D0E0
	push {lr}
	ldr r0, =sub_812D128
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r2, r0, 24
	ldr r1, =gTasks
	lsls r0, r2, 2
	adds r0, r2
	lsls r0, 3
	adds r0, r1
	movs r1, 0xC
	ldrsh r0, [r0, r1]
	cmp r0, 0
	beq _0812D10C
	movs r0, 0
	b _0812D120
	.pool
_0812D10C:
	adds r0, r2, 0
	bl DestroyTask
	ldr r0, =gUnknown_085A84AC
	ldr r0, [r0]
	movs r1, 0x10
	movs r2, 0x20
	bl LoadPalette
	movs r0, 0x1
_0812D120:
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812D0E0

	thumb_func_start sub_812D128
sub_812D128: @ 812D128
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	ldr r0, =gTasks
	adds r2, r1, r0
	ldrh r0, [r2, 0xA]
	subs r0, 0x1
	strh r0, [r2, 0xA]
	lsls r0, 16
	asrs r0, 16
	movs r1, 0x1
	negs r1, r1
	cmp r0, r1
	bne _0812D166
	movs r0, 0x4
	strh r0, [r2, 0xA]
	ldrh r1, [r2, 0xE]
	ldrh r3, [r2, 0xC]
	adds r0, r1, r3
	strh r0, [r2, 0xC]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0
	beq _0812D162
	cmp r0, 0x2
	bne _0812D166
_0812D162:
	negs r0, r1
	strh r0, [r2, 0xE]
_0812D166:
	ldr r0, =gUnknown_085A84A0
	movs r3, 0xC
	ldrsh r1, [r2, r3]
	lsls r1, 2
	adds r1, r0
	ldr r0, [r1]
	movs r1, 0x10
	movs r2, 0x20
	bl LoadPalette
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D128

	thumb_func_start sub_812D188
sub_812D188: @ 812D188
	push {lr}
	ldr r0, =sub_812D230
	movs r1, 0x8
	bl CreateTask
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	adds r1, 0x3E
	strb r0, [r1]
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D188

	thumb_func_start sub_812D1A8
sub_812D1A8: @ 812D1A8
	push {r4,lr}
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x3E
	ldrb r0, [r0]
	lsls r4, r0, 2
	adds r4, r0
	lsls r4, 3
	ldr r0, =gTasks
	adds r4, r0
	adds r0, r4, 0
	bl sub_812D394
	movs r1, 0x1
	strh r1, [r4, 0x8]
	ldrh r0, [r4, 0xA]
	adds r0, 0x1
	strh r0, [r4, 0xA]
	strh r1, [r4, 0x26]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D1A8

	thumb_func_start sub_812D1DC
sub_812D1DC: @ 812D1DC
	push {r4,lr}
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x3E
	ldrb r0, [r0]
	lsls r4, r0, 2
	adds r4, r0
	lsls r4, 3
	ldr r0, =gTasks
	adds r4, r0
	adds r0, r4, 0
	bl sub_812D394
	movs r0, 0x3
	strh r0, [r4, 0x8]
	movs r0, 0x1
	strh r0, [r4, 0x26]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D1DC

	thumb_func_start sub_812D20C
sub_812D20C: @ 812D20C
	ldr r2, =gTasks
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x3E
	ldrb r1, [r0]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	adds r0, r2
	ldrh r0, [r0, 0x26]
	lsls r0, 24
	lsrs r0, 24
	bx lr
	.pool
	thumb_func_end sub_812D20C

	thumb_func_start sub_812D230
sub_812D230: @ 812D230
	push {lr}
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	ldr r3, =gUnknown_085A7558
	ldr r2, =gTasks
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	adds r0, r2
	movs r2, 0x8
	ldrsh r1, [r0, r2]
	lsls r1, 2
	adds r1, r3
	ldr r1, [r1]
	bl _call_via_r1
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D230

	thumb_func_start nullsub_50
nullsub_50: @ 812D260
	bx lr
	thumb_func_end nullsub_50

	thumb_func_start sub_812D264
sub_812D264: @ 812D264
	push {r4,lr}
	adds r4, r0, 0
	ldrh r0, [r4, 0xA]
	lsls r0, 19
	movs r1, 0xA0
	lsls r1, 13
	adds r0, r1
	asrs r0, 16
	movs r1, 0x14
	bl sub_812EF00
	lsls r0, 24
	lsrs r0, 24
	strh r0, [r4, 0xC]
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_812D264

	thumb_func_start sub_812D28C
sub_812D28C: @ 812D28C
	push {r4,r5,lr}
	adds r4, r0, 0
	ldr r2, =gSprites
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	movs r1, 0x3C
	ldrsh r0, [r0, r1]
	cmp r0, 0
	beq _0812D2FC
	ldrh r1, [r4, 0xA]
	adds r0, r1, 0x2
	lsls r0, 16
	lsrs r5, r0, 16
	movs r3, 0
	movs r2, 0
	lsls r1, 16
	asrs r1, 16
	cmp r1, 0x1
	bne _0812D2C4
	movs r3, 0x1
	movs r2, 0x1
	b _0812D2CC
	.pool
_0812D2C4:
	cmp r1, 0x10
	bne _0812D2CC
	movs r3, 0x2
	movs r2, 0x2
_0812D2CC:
	ldr r0, =gUnknown_0203AACC
	ldr r0, [r0]
	lsls r1, r2, 1
	adds r1, r0
	ldr r2, =gUnknown_085A7568
	lsls r0, r3, 2
	adds r0, r2
	ldrh r0, [r0]
	strh r0, [r1]
	lsls r3, r5, 16
	movs r0, 0x80
	lsls r0, 15
	adds r3, r0
	lsrs r3, 16
	movs r0, 0x2
	movs r2, 0x2
	bl LoadBgTilemap
	ldrb r0, [r4, 0xC]
	bl sub_812EF6C
	movs r0, 0
	strh r0, [r4, 0x8]
	strh r0, [r4, 0x26]
_0812D2FC:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D28C

	thumb_func_start sub_812D30C
sub_812D30C: @ 812D30C
	push {r4,r5,lr}
	adds r4, r0, 0
	ldrh r1, [r4, 0xA]
	adds r0, r1, 0x2
	lsls r0, 16
	lsrs r5, r0, 16
	movs r3, 0
	movs r2, 0x3
	lsls r1, 16
	asrs r1, 16
	cmp r1, 0x1
	bne _0812D32A
	movs r3, 0x1
	movs r2, 0x1
	b _0812D332
_0812D32A:
	cmp r1, 0x10
	bne _0812D332
	movs r3, 0x2
	movs r2, 0x2
_0812D332:
	movs r1, 0xC
	ldrsh r0, [r4, r1]
	cmp r0, 0
	bne _0812D366
	ldr r0, =gUnknown_0203AACC
	ldr r0, [r0]
	lsls r1, r2, 1
	adds r1, r0
	ldr r0, =gUnknown_085A7568
	lsls r2, r3, 2
	adds r0, 0x2
	adds r2, r0
	ldrh r0, [r2]
	strh r0, [r1]
	lsls r3, r5, 16
	movs r0, 0x80
	lsls r0, 15
	adds r3, r0
	lsrs r3, 16
	movs r0, 0x2
	movs r2, 0x2
	bl LoadBgTilemap
	ldrh r0, [r4, 0xA]
	subs r0, 0x1
	strh r0, [r4, 0xA]
_0812D366:
	ldrh r0, [r4, 0xC]
	adds r0, 0x1
	strh r0, [r4, 0xC]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x13
	ble _0812D378
	movs r0, 0
	strh r0, [r4, 0xC]
_0812D378:
	movs r1, 0xA
	ldrsh r0, [r4, r1]
	cmp r0, 0
	bne _0812D384
	strh r0, [r4, 0x8]
	strh r0, [r4, 0x26]
_0812D384:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D30C

	thumb_func_start sub_812D394
sub_812D394: @ 812D394
	push {lr}
	movs r1, 0x2
	adds r2, r0, 0
	adds r2, 0x8
	movs r3, 0
_0812D39E:
	lsls r0, r1, 1
	adds r0, r2, r0
	strh r3, [r0]
	adds r0, r1, 0x1
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0xF
	bls _0812D39E
	pop {r0}
	bx r0
	thumb_func_end sub_812D394

	thumb_func_start sub_812D3B4
sub_812D3B4: @ 812D3B4
	push {r4-r7,lr}
	lsls r0, 24
	lsrs r6, r0, 24
	movs r4, 0x3
	movs r5, 0
	cmp r5, r6
	bge _0812D41E
	ldr r7, =gUnknown_085A7568
_0812D3C4:
	movs r3, 0
	movs r1, 0
	lsls r0, r5, 16
	asrs r0, 16
	cmp r0, 0
	bne _0812D3DC
	movs r3, 0x1
	movs r1, 0x1
	b _0812D3E4
	.pool
_0812D3DC:
	cmp r0, 0xF
	bne _0812D3E4
	movs r3, 0x2
	movs r1, 0x2
_0812D3E4:
	ldr r0, =gUnknown_0203AACC
	ldr r0, [r0]
	lsls r1, 1
	adds r1, r0
	lsls r0, r3, 2
	adds r0, r7
	ldrh r0, [r0]
	strh r0, [r1]
	lsls r3, r4, 16
	asrs r4, r3, 16
	movs r0, 0x80
	lsls r0, 15
	adds r3, r0
	lsrs r3, 16
	movs r0, 0x2
	movs r2, 0x2
	bl LoadBgTilemap
	lsls r0, r5, 16
	movs r1, 0x80
	lsls r1, 9
	adds r0, r1
	adds r4, 0x1
	lsls r4, 16
	lsrs r4, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, r6
	blt _0812D3C4
_0812D41E:
	lsls r2, r5, 16
	asrs r0, r2, 16
	cmp r0, 0xF
	bgt _0812D484
	ldr r7, =gUnknown_085A756A
_0812D428:
	movs r3, 0
	movs r1, 0x3
	asrs r0, r2, 16
	cmp r0, 0
	bne _0812D440
	movs r3, 0x1
	movs r1, 0x1
	b _0812D448
	.pool
_0812D440:
	cmp r0, 0xF
	bne _0812D448
	movs r3, 0x2
	movs r1, 0x2
_0812D448:
	ldr r0, =gUnknown_0203AACC
	ldr r0, [r0]
	lsls r1, 1
	adds r1, r0
	lsls r0, r3, 2
	adds r0, r7
	ldrh r0, [r0]
	strh r0, [r1]
	lsls r3, r4, 16
	asrs r4, r3, 16
	movs r0, 0x80
	lsls r0, 15
	adds r3, r0
	lsrs r3, 16
	movs r0, 0x2
	movs r2, 0x2
	bl LoadBgTilemap
	lsls r0, r5, 16
	movs r1, 0x80
	lsls r1, 9
	adds r0, r1
	lsrs r5, r0, 16
	adds r4, 0x1
	lsls r4, 16
	lsrs r4, 16
	lsls r2, r5, 16
	asrs r0, r2, 16
	cmp r0, 0xF
	ble _0812D428
_0812D484:
	ldr r2, =gTasks
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x3E
	ldrb r1, [r0]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	adds r0, r2
	strh r6, [r0, 0xA]
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D3B4

	thumb_func_start sub_812D4AC
sub_812D4AC: @ 812D4AC
	push {r4,lr}
	ldr r4, =sub_812D4EC
	adds r0, r4, 0
	movs r1, 0x7
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	bl _call_via_r4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D4AC

	thumb_func_start sub_812D4CC
sub_812D4CC: @ 812D4CC
	push {lr}
	ldr r0, =sub_812D4EC
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0xFF
	beq _0812D4E4
	movs r0, 0
	b _0812D4E6
	.pool
_0812D4E4:
	movs r0, 0x1
_0812D4E6:
	pop {r1}
	bx r1
	thumb_func_end sub_812D4CC

	thumb_func_start sub_812D4EC
sub_812D4EC: @ 812D4EC
	push {lr}
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	ldr r3, =gUnknown_085A7574
	ldr r2, =gTasks
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	adds r0, r2
	movs r2, 0x8
	ldrsh r1, [r0, r2]
	lsls r1, 2
	adds r1, r3
	ldr r1, [r1]
	bl _call_via_r1
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D4EC

	thumb_func_start sub_812D51C
sub_812D51C: @ 812D51C
	push {lr}
	ldr r3, =gUnknown_0203AB34
	ldr r1, [r3]
	movs r2, 0
	strb r2, [r1, 0xA]
	ldr r1, [r3]
	strh r2, [r1, 0x14]
	strh r2, [r1, 0x16]
	ldrh r1, [r0, 0x8]
	adds r1, 0x1
	strh r1, [r0, 0x8]
	strh r2, [r0, 0xA]
	movs r1, 0x1E
	strh r1, [r0, 0xC]
	movs r1, 0xA0
	lsls r1, 3
	strh r1, [r0, 0x10]
	ldr r0, =gSpriteCoordOffsetX
	strh r2, [r0]
	ldr r0, =gSpriteCoordOffsetY
	strh r2, [r0]
	movs r0, 0x14
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x16
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x1E
	movs r1, 0
	bl sub_812DC08
	bl sub_812E474
	bl sub_812E33C
	bl sub_812E650
	bl sub_812E70C
	bl sub_812E7CC
	bl sub_812B700
	bl StopMapMusic
	movs r0, 0xC4
	lsls r0, 1
	bl PlayNewMapMusic
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D51C

	thumb_func_start sub_812D594
sub_812D594: @ 812D594
	push {r4,r5,lr}
	adds r4, r0, 0
	ldr r1, =gSpriteCoordOffsetX
	ldrh r0, [r1]
	subs r0, 0x8
	strh r0, [r1]
	ldrh r1, [r4, 0xA]
	adds r1, 0x8
	strh r1, [r4, 0xA]
	movs r2, 0xA
	ldrsh r0, [r4, r2]
	adds r0, 0xF0
	movs r2, 0xFF
	ands r0, r2
	lsrs r5, r0, 3
	ldr r0, =0x000001ff
	ands r1, r0
	movs r0, 0x14
	bl SetGpuReg
	adds r2, r5, 0
	movs r1, 0xC
	ldrsh r0, [r4, r1]
	cmp r2, r0
	beq _0812D5E2
	movs r1, 0xE
	ldrsh r0, [r4, r1]
	cmp r0, 0x12
	bgt _0812D5E2
	strh r5, [r4, 0xC]
	ldrh r0, [r4, 0xA]
	lsls r0, 16
	asrs r0, 19
	strh r0, [r4, 0xE]
	movs r0, 0xE
	ldrsh r1, [r4, r0]
	adds r0, r2, 0
	bl sub_812DC08
_0812D5E2:
	movs r1, 0xA
	ldrsh r0, [r4, r1]
	cmp r0, 0xC7
	ble _0812D5F4
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	movs r1, 0
	strh r0, [r4, 0x8]
	strh r1, [r4, 0xE]
_0812D5F4:
	ldrh r0, [r4, 0x10]
	lsls r0, 16
	asrs r0, 24
	bl sub_812BDD4
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D594

	thumb_func_start sub_812D60C
sub_812D60C: @ 812D60C
	push {r4,lr}
	adds r4, r0, 0
	ldrh r0, [r4, 0x10]
	lsls r0, 16
	asrs r0, 24
	bl sub_812BDD4
	ldrh r0, [r4, 0x12]
	adds r0, 0x1
	strh r0, [r4, 0x12]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x3B
	ble _0812D636
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	bl sub_812E934
	bl sub_812EAB0
_0812D636:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_812D60C

	thumb_func_start sub_812D63C
sub_812D63C: @ 812D63C
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x14
	adds r7, r0, 0
	ldr r1, =gUnknown_085A75C0
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	add r0, sp, 0x4
	mov r8, r0
	ldr r1, =gUnknown_085A75C4
	movs r2, 0x8
	bl memcpy
	add r6, sp, 0xC
	ldr r1, =gUnknown_085A75CC
	adds r0, r6, 0
	movs r2, 0x8
	bl memcpy
	ldrh r0, [r7, 0x10]
	lsls r0, 16
	asrs r0, 24
	bl sub_812BDD4
	ldrh r0, [r7, 0x10]
	subs r0, 0x4
	strh r0, [r7, 0x10]
	lsls r0, 16
	asrs r0, 24
	movs r5, 0x4
	subs r5, r0
	lsls r4, r5, 1
	add r8, r4
	mov r1, r8
	movs r2, 0
	ldrsh r0, [r1, r2]
	bl sub_812EA44
	adds r6, r4
	movs r1, 0
	ldrsh r0, [r6, r1]
	bl sub_812EBAC
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x3F
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	mov r2, sp
	adds r1, r2, r5
	ldrb r1, [r1]
	bl StartSpriteAnimIfDifferent
	movs r1, 0x10
	ldrsh r0, [r7, r1]
	movs r1, 0x80
	lsls r1, 1
	cmp r0, r1
	bgt _0812D6CC
	ldrh r0, [r7, 0x8]
	adds r0, 0x1
	strh r0, [r7, 0x8]
	strh r1, [r7, 0x10]
	movs r0, 0
	strh r0, [r7, 0x12]
_0812D6CC:
	add sp, 0x14
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D63C

	thumb_func_start sub_812D6EC
sub_812D6EC: @ 812D6EC
	push {r4,lr}
	adds r4, r0, 0
	ldrh r0, [r4, 0x10]
	lsls r0, 16
	asrs r0, 24
	bl sub_812BDD4
	ldrh r0, [r4, 0x12]
	adds r0, 0x1
	strh r0, [r4, 0x12]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x4F
	ble _0812D730
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	movs r0, 0
	strh r0, [r4, 0x12]
	movs r0, 0x2
	bl sub_812EBAC
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x3F
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	movs r1, 0x3
	bl StartSpriteAnimIfDifferent
_0812D730:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D6EC

	thumb_func_start sub_812D740
sub_812D740: @ 812D740
	push {r4,lr}
	adds r4, r0, 0
	ldrh r0, [r4, 0x10]
	lsls r0, 16
	asrs r0, 24
	bl sub_812BDD4
	ldrb r0, [r4, 0x10]
	adds r0, 0x80
	strh r0, [r4, 0x10]
	ldrh r0, [r4, 0x12]
	adds r0, 0x1
	strh r0, [r4, 0x12]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x4F
	ble _0812D76C
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	movs r0, 0
	strh r0, [r4, 0x12]
_0812D76C:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_812D740

	thumb_func_start sub_812D774
sub_812D774: @ 812D774
	push {r4,lr}
	adds r4, r0, 0
	ldrh r0, [r4, 0x10]
	lsls r0, 16
	asrs r0, 24
	bl sub_812BDD4
	ldrb r0, [r4, 0x10]
	adds r0, 0x40
	strh r0, [r4, 0x10]
	ldrh r0, [r4, 0x12]
	adds r0, 0x1
	strh r0, [r4, 0x12]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x27
	ble _0812D7DC
	movs r0, 0
	strh r0, [r4, 0x12]
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	ldrb r0, [r1, 0x5]
	cmp r0, 0
	beq _0812D7B8
	ldrb r1, [r1, 0xA]
	movs r2, 0x14
	ldrsh r0, [r4, r2]
	cmp r1, r0
	bgt _0812D7D6
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	b _0812D7D4
	.pool
_0812D7B8:
	movs r1, 0x14
	ldrsh r0, [r4, r1]
	cmp r0, 0x3
	ble _0812D7C6
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	b _0812D7D4
_0812D7C6:
	ldrh r0, [r4, 0x14]
	bl sub_812B760
	lsls r0, 24
	cmp r0, 0
	beq _0812D7D6
	movs r0, 0xE
_0812D7D4:
	strh r0, [r4, 0x8]
_0812D7D6:
	ldrh r0, [r4, 0x14]
	adds r0, 0x1
	strh r0, [r4, 0x14]
_0812D7DC:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_812D774

	thumb_func_start sub_812D7E4
sub_812D7E4: @ 812D7E4
	push {r4-r6,lr}
	adds r4, r0, 0
	ldr r6, =gUnknown_0203AB34
	ldr r0, [r6]
	movs r1, 0x14
	ldrsh r0, [r0, r1]
	movs r1, 0x14
	bl __modsi3
	lsls r0, 16
	lsrs r5, r0, 16
	cmp r0, 0
	beq _0812D810
	ldrh r0, [r4, 0x10]
	lsls r0, 16
	asrs r0, 24
	bl sub_812BE0C
	b _0812D838
	.pool
_0812D810:
	movs r0, 0x1
	bl sub_812BCE8
	ldr r1, [r6]
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r1, 0x5]
	cmp r0, r1
	beq _0812D842
	ldrh r0, [r4, 0x10]
	lsls r0, 16
	asrs r0, 24
	bl sub_812BDD4
	ldr r0, [r6]
	movs r1, 0x14
	ldrsh r0, [r0, r1]
	movs r1, 0x14
	bl __modsi3
_0812D838:
	lsls r0, 16
	lsrs r5, r0, 16
	ldrb r0, [r4, 0x10]
	adds r0, 0x40
	strh r0, [r4, 0x10]
_0812D842:
	lsls r0, r5, 16
	asrs r5, r0, 16
	cmp r5, 0
	bne _0812D866
	movs r0, 0x1
	bl sub_812BCE8
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r1, 0x5]
	cmp r0, r1
	bne _0812D866
	strh r5, [r4, 0x10]
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
_0812D866:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D7E4

	thumb_func_start sub_812D870
sub_812D870: @ 812D870
	push {r4-r6,lr}
	adds r4, r0, 0
	ldrh r0, [r4, 0x10]
	adds r0, 0x1
	movs r6, 0
	strh r0, [r4, 0x10]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x3B
	ble _0812D914
	bl StopMapMusic
	bl sub_812EA7C
	bl sub_812EBCC
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	ldr r5, =gUnknown_0203AB34
	ldr r1, [r5]
	ldrb r0, [r1, 0x5]
	cmp r0, 0
	bne _0812D8D0
	movs r0, 0xA0
	strh r0, [r4, 0x10]
	adds r0, r1, 0
	adds r0, 0x3F
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	movs r1, 0x5
	bl StartSpriteAnimIfDifferent
	ldr r0, =0x00000187
	bl PlayFanfare
	b _0812D914
	.pool
_0812D8D0:
	movs r0, 0xC0
	strh r0, [r4, 0x10]
	adds r0, r1, 0
	adds r0, 0x3F
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r4, =gSprites
	adds r0, r4
	movs r1, 0x4
	bl StartSpriteAnimIfDifferent
	ldr r0, [r5]
	adds r0, 0x3F
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r4
	adds r0, 0x2B
	strb r6, [r0]
	ldr r0, [r5]
	ldrb r0, [r0, 0x2]
	cmp r0, 0
	beq _0812D90C
	bl sub_812D1DC
	ldr r0, [r5]
	strb r6, [r0, 0x2]
_0812D90C:
	movs r0, 0xC3
	lsls r0, 1
	bl PlayFanfare
_0812D914:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812D870

	thumb_func_start sub_812D920
sub_812D920: @ 812D920
	push {r4,lr}
	adds r4, r0, 0
	ldrh r1, [r4, 0x10]
	movs r2, 0x10
	ldrsh r0, [r4, r2]
	cmp r0, 0
	beq _0812D938
	subs r0, r1, 0x1
	strh r0, [r4, 0x10]
	lsls r0, 16
	cmp r0, 0
	bne _0812D948
_0812D938:
	bl sub_812D20C
	lsls r0, 24
	cmp r0, 0
	bne _0812D948
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
_0812D948:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_812D920

	thumb_func_start sub_812D950
sub_812D950: @ 812D950
	push {r4,r5,lr}
	adds r4, r0, 0
	ldr r1, =gSpriteCoordOffsetX
	ldrh r0, [r1]
	subs r0, 0x8
	strh r0, [r1]
	ldrh r1, [r4, 0xA]
	adds r1, 0x8
	strh r1, [r4, 0xA]
	ldrh r0, [r4, 0xE]
	adds r0, 0x8
	strh r0, [r4, 0xE]
	movs r2, 0xA
	ldrsh r0, [r4, r2]
	subs r0, 0x8
	movs r2, 0xFF
	ands r0, r2
	lsrs r5, r0, 3
	ldr r0, =0x000001ff
	ands r1, r0
	movs r0, 0x14
	bl SetGpuReg
	ldrh r0, [r4, 0xE]
	lsls r0, 16
	asrs r0, 19
	cmp r0, 0x19
	bgt _0812D998
	adds r0, r5, 0
	bl sub_812DC50
	b _0812D99E
	.pool
_0812D998:
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
_0812D99E:
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_812D950

	thumb_func_start sub_812D9A4
sub_812D9A4: @ 812D9A4
	push {r4-r6,lr}
	adds r5, r0, 0
	ldr r4, =gUnknown_0203AB34
	ldr r0, [r4]
	movs r6, 0
	strb r6, [r0, 0xB]
	ldr r1, [r4]
	ldrb r0, [r1, 0x5]
	strb r0, [r1, 0xA]
	ldr r0, =gSpriteCoordOffsetX
	strh r6, [r0]
	movs r0, 0x14
	movs r1, 0
	bl SetGpuReg
	ldr r1, [r4]
	movs r0, 0x8
	strh r0, [r1, 0x1A]
	bl sub_812E3E8
	bl sub_812E82C
	bl sub_812E8C4
	ldr r0, [r4]
	adds r0, 0x60
	ldrh r0, [r0]
	bl PlayNewMapMusic
	ldr r0, [r4]
	ldrb r0, [r0, 0xA]
	cmp r0, 0
	bne _0812DA04
	ldr r0, =sub_812D4EC
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r0, 24
	bl DestroyTask
	b _0812DA1A
	.pool
_0812DA04:
	movs r0, 0x4
	bl sub_812DEE4
	bl dp15_jump_random_unknown
	strh r0, [r5, 0xA]
	strh r6, [r5, 0xC]
	strh r6, [r5, 0xE]
	ldrh r0, [r5, 0x8]
	adds r0, 0x1
	strh r0, [r5, 0x8]
_0812DA1A:
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_812D9A4

	thumb_func_start sub_812DA20
sub_812DA20: @ 812DA20
	push {r4,r5,lr}
	adds r4, r0, 0
	ldr r0, =gUnknown_0203AB34
	ldr r5, [r0]
	movs r0, 0x1A
	ldrsh r1, [r5, r0]
	movs r2, 0xA
	ldrsh r0, [r4, r2]
	cmp r1, r0
	bne _0812DA40
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	b _0812DA66
	.pool
_0812DA40:
	movs r1, 0x1C
	ldrsh r0, [r5, r1]
	movs r1, 0x18
	bl __modsi3
	lsls r0, 16
	cmp r0, 0
	bne _0812DA66
	ldrh r0, [r4, 0xC]
	adds r0, 0x1
	strh r0, [r4, 0xC]
	movs r1, 0x7
	ands r0, r1
	cmp r0, 0
	bne _0812DA66
	ldrh r0, [r5, 0x1A]
	lsls r0, 16
	asrs r0, 17
	strh r0, [r5, 0x1A]
_0812DA66:
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_812DA20

	thumb_func_start sub_812DA6C
sub_812DA6C: @ 812DA6C
	push {lr}
	bl sub_812E054
	lsls r0, 24
	cmp r0, 0
	beq _0812DA86
	ldr r0, =sub_812D4EC
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r0, 24
	bl DestroyTask
_0812DA86:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DA6C

	thumb_func_start sub_812DA90
sub_812DA90: @ 812DA90
	push {r4,r5,lr}
	adds r4, r0, 0
	bl sub_812E82C
	bl sub_812EA7C
	bl sub_812EBCC
	bl sub_812EC20
	ldr r5, =gSprites
	ldr r3, =gUnknown_0203AB34
	ldr r0, [r3]
	adds r0, 0x4E
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r5
	adds r0, 0x3E
	ldrb r1, [r0]
	movs r2, 0x4
	orrs r1, r2
	strb r1, [r0]
	ldr r0, [r3]
	adds r0, 0x3F
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r5
	movs r1, 0x5
	bl StartSpriteAnimIfDifferent
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	movs r1, 0
	strh r0, [r4, 0x8]
	movs r0, 0x4
	strh r0, [r4, 0x10]
	strh r1, [r4, 0x12]
	bl StopMapMusic
	ldr r0, =0x00000187
	bl PlayFanfare
	movs r0, 0xB2
	bl PlaySE
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DA90

	thumb_func_start sub_812DB04
sub_812DB04: @ 812DB04
	push {r4,r5,lr}
	adds r4, r0, 0
	ldr r1, =gSpriteCoordOffsetY
	ldrh r0, [r4, 0x10]
	strh r0, [r1]
	ldrh r1, [r4, 0x10]
	movs r0, 0x16
	bl SetGpuReg
	ldrh r1, [r4, 0x12]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	beq _0812DB26
	ldrh r0, [r4, 0x10]
	negs r0, r0
	strh r0, [r4, 0x10]
_0812DB26:
	ldrh r0, [r4, 0x12]
	adds r0, 0x1
	strh r0, [r4, 0x12]
	movs r1, 0x1F
	ands r0, r1
	cmp r0, 0
	bne _0812DB3C
	ldrh r0, [r4, 0x10]
	lsls r0, 16
	asrs r0, 17
	strh r0, [r4, 0x10]
_0812DB3C:
	movs r0, 0x10
	ldrsh r5, [r4, r0]
	cmp r5, 0
	bne _0812DB7A
	bl sub_812EC70
	bl sub_812EC94
	bl sub_812E5A8
	bl sub_812EDC0
	ldr r2, =gSprites
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x4E
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	adds r0, 0x3E
	ldrb r2, [r0]
	movs r1, 0x5
	negs r1, r1
	ands r1, r2
	strb r1, [r0]
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	strh r5, [r4, 0x12]
_0812DB7A:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DB04

	thumb_func_start sub_812DB8C
sub_812DB8C: @ 812DB8C
	push {r4,lr}
	adds r4, r0, 0
	ldr r1, =gSpriteCoordOffsetY
	movs r0, 0
	strh r0, [r1]
	movs r0, 0x16
	movs r1, 0
	bl SetGpuReg
	bl sub_812EEA8
	lsls r0, 24
	cmp r0, 0
	beq _0812DBB2
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	bl sub_812EECC
_0812DBB2:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DB8C

	thumb_func_start sub_812DBBC
sub_812DBBC: @ 812DBBC
	push {lr}
	ldr r1, =gSpriteCoordOffsetX
	movs r0, 0
	strh r0, [r1]
	movs r0, 0x14
	movs r1, 0
	bl SetGpuReg
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x60
	ldrh r0, [r0]
	bl PlayNewMapMusic
	bl sub_812E3E8
	bl sub_812E8F8
	bl sub_812E8C4
	bl sub_812ED8C
	ldr r0, =sub_812D4EC
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r0, 24
	bl DestroyTask
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DBBC

	thumb_func_start sub_812DC08
sub_812DC08: @ 812DC08
	push {r4-r6,lr}
	movs r2, 0x4
	lsls r1, 16
	asrs r6, r1, 16
	lsls r0, 16
	asrs r5, r0, 16
_0812DC14:
	lsls r4, r2, 16
	asrs r4, 16
	subs r0, r4, 0x4
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 2
	adds r1, r6, r1
	lsls r1, 1
	ldr r0, =gUnknown_085A96E0
	adds r1, r0
	lsls r3, r4, 5
	adds r3, r5, r3
	lsls r3, 16
	lsrs r3, 16
	movs r0, 0x1
	movs r2, 0x2
	bl LoadBgTilemap
	adds r4, 0x1
	lsls r4, 16
	lsrs r2, r4, 16
	asrs r4, 16
	cmp r4, 0xE
	ble _0812DC14
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DC08

	thumb_func_start sub_812DC50
sub_812DC50: @ 812DC50
	push {r4,r5,lr}
	movs r4, 0x4
	lsls r0, 16
	asrs r5, r0, 16
_0812DC58:
	lsls r3, r4, 5
	adds r3, r5, r3
	lsls r3, 16
	lsrs r3, 16
	movs r0, 0x1
	ldr r1, =gUnknown_085A9898
	movs r2, 0x2
	bl LoadBgTilemap
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0xE
	bls _0812DC58
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DC50

	thumb_func_start sub_812DC80
sub_812DC80: @ 812DC80
	push {r4,r5,lr}
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	ldr r5, =sub_812DCD4
	adds r0, r5, 0
	movs r1, 0x1
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	ldr r2, =gTasks
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	adds r1, r2
	strh r4, [r1, 0xA]
	bl _call_via_r5
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DC80

	thumb_func_start sub_812DCB4
sub_812DCB4: @ 812DCB4
	push {lr}
	ldr r0, =sub_812DCD4
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0xFF
	beq _0812DCCC
	movs r0, 0
	b _0812DCCE
	.pool
_0812DCCC:
	movs r0, 0x1
_0812DCCE:
	pop {r1}
	bx r1
	thumb_func_end sub_812DCB4

	thumb_func_start sub_812DCD4
sub_812DCD4: @ 812DCD4
	push {lr}
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	ldr r3, =gUnknown_085A75D4
	ldr r2, =gTasks
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	adds r0, r2
	movs r2, 0x8
	ldrsh r1, [r0, r2]
	lsls r1, 2
	adds r1, r3
	ldr r1, [r1]
	bl _call_via_r1
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DCD4

	thumb_func_start sub_812DD04
sub_812DD04: @ 812DD04
	push {r4,lr}
	sub sp, 0x4
	adds r4, r0, 0
	movs r0, 0x1
	negs r0, r0
	movs r1, 0
	str r1, [sp]
	movs r2, 0
	movs r3, 0x10
	bl BeginNormalPaletteFade
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_812DD04

	thumb_func_start sub_812DD28
sub_812DD28: @ 812DD28
	push {lr}
	adds r2, r0, 0
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _0812DD3E
	ldrh r0, [r2, 0x8]
	adds r0, 0x1
	strh r0, [r2, 0x8]
_0812DD3E:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DD28

	thumb_func_start sub_812DD48
sub_812DD48: @ 812DD48
	push {r4,lr}
	adds r4, r0, 0
	bl sub_812DFDC
	bl sub_812FAF4
	ldr r0, =gUnknown_085A7444
	bl AddWindow
	movs r0, 0x1
	bl PutWindowTilemap
	movs r0, 0x1
	movs r1, 0
	bl FillWindowPixelBuffer
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DD48

	thumb_func_start sub_812DD78
sub_812DD78: @ 812DD78
	push {r4,r5,lr}
	sub sp, 0xC
	adds r5, r0, 0
	ldr r0, =gUnknown_085A744C
	str r0, [sp]
	movs r4, 0
	str r4, [sp, 0x4]
	ldr r0, =gText_ReelTimeHelp
	str r0, [sp, 0x8]
	movs r0, 0x1
	movs r1, 0x1
	movs r2, 0x2
	movs r3, 0x5
	bl box_print
	movs r0, 0x1
	movs r1, 0x3
	bl CopyWindowToVram
	movs r0, 0x1
	negs r0, r0
	str r4, [sp]
	movs r1, 0
	movs r2, 0x10
	movs r3, 0
	bl BeginNormalPaletteFade
	ldrh r0, [r5, 0x8]
	adds r0, 0x1
	strh r0, [r5, 0x8]
	add sp, 0xC
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DD78

	thumb_func_start sub_812DDC4
sub_812DDC4: @ 812DDC4
	push {r4,lr}
	sub sp, 0x4
	adds r4, r0, 0
	ldr r0, =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0x6
	ands r0, r1
	cmp r0, 0
	beq _0812DE08
	movs r0, 0x1
	movs r1, 0
	bl FillWindowPixelBuffer
	movs r0, 0x1
	bl ClearWindowTilemap
	movs r0, 0x1
	movs r1, 0x1
	bl CopyWindowToVram
	movs r0, 0x1
	bl RemoveWindow
	movs r0, 0x1
	negs r0, r0
	movs r1, 0
	str r1, [sp]
	movs r2, 0
	movs r3, 0x10
	bl BeginNormalPaletteFade
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
_0812DE08:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DDC4

	thumb_func_start sub_812DE14
sub_812DE14: @ 812DE14
	push {r4,lr}
	adds r4, r0, 0
	bl sub_812F968
	movs r0, 0x3
	bl ShowBg
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_812DE14

	thumb_func_start sub_812DE30
sub_812DE30: @ 812DE30
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4, 0xA]
	bl sub_812DEE4
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_812DE30

	thumb_func_start sub_812DE48
sub_812DE48: @ 812DE48
	push {r4,lr}
	sub sp, 0x4
	adds r4, r0, 0
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	ldrb r0, [r0, 0x2]
	bl sub_812D3B4
	movs r0, 0x1
	negs r0, r0
	movs r1, 0
	str r1, [sp]
	movs r2, 0x10
	movs r3, 0
	bl BeginNormalPaletteFade
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DE48

	thumb_func_start sub_812DE7C
sub_812DE7C: @ 812DE7C
	push {lr}
	ldr r0, =sub_812DCD4
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r0, 24
	bl DestroyTask
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DE7C

	thumb_func_start sub_812DE94
sub_812DE94: @ 812DE94
	push {lr}
	ldr r0, =sub_812E0B0
	movs r1, 0x3
	bl CreateTask
	lsls r0, 24
	lsrs r1, r0, 24
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x3D
	strb r1, [r0]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	ldr r1, =gTasks
	adds r0, r1
	ldr r1, =0x0000ffff
	strh r1, [r0, 0xA]
	movs r1, 0x4
	adds r2, r0, 0
	adds r2, 0x8
	movs r3, 0x40
_0812DEC0:
	lsls r0, r1, 1
	adds r0, r2, r0
	strh r3, [r0]
	adds r0, r1, 0x1
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0xF
	bls _0812DEC0
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DE94

	thumb_func_start sub_812DEE4
sub_812DEE4: @ 812DEE4
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	bl sub_812DFDC
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x3D
	ldrb r1, [r0]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	ldr r1, =gTasks
	adds r7, r0, r1
	strh r4, [r7, 0xA]
	movs r6, 0
	ldr r1, =gUnknown_085A7A04
	lsls r5, r4, 2
	adds r0, r5, r1
	ldr r0, [r0]
	ldrb r0, [r0]
	cmp r0, 0xFF
	beq _0812DF52
	mov r8, r1
_0812DF1A:
	mov r0, r8
	adds r4, r5, r0
	ldr r0, [r4]
	lsls r2, r6, 2
	adds r2, r0
	ldrb r0, [r2]
	ldrb r1, [r2, 0x1]
	movs r3, 0x2
	ldrsh r2, [r2, r3]
	bl sub_812EF98
	lsls r0, 24
	lsrs r0, 24
	adds r2, r6, 0x4
	lsls r2, 1
	adds r1, r7, 0
	adds r1, 0x8
	adds r1, r2
	strh r0, [r1]
	adds r0, r6, 0x1
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r1, [r4]
	lsls r0, r6, 2
	adds r0, r1
	ldrb r0, [r0]
	cmp r0, 0xFF
	bne _0812DF1A
_0812DF52:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DEE4

	thumb_func_start sub_812DF68
sub_812DF68: @ 812DF68
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x4
	mov r8, r1
	ldr r4, [sp, 0x1C]
	lsls r0, 24
	lsrs r7, r0, 24
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x3D
	ldrb r1, [r0]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	ldr r1, =gTasks
	adds r0, r1
	mov r12, r0
	movs r5, 0x4
	lsls r4, 16
	asrs r6, r4, 16
	lsls r2, 16
	lsls r3, 16
_0812DF96:
	lsls r0, r5, 1
	mov r1, r12
	adds r1, 0x8
	adds r4, r1, r0
	movs r1, 0
	ldrsh r0, [r4, r1]
	cmp r0, 0x40
	bne _0812DFC4
	str r6, [sp]
	adds r0, r7, 0
	mov r1, r8
	asrs r2, 16
	asrs r3, 16
	bl sub_812EFDC
	lsls r0, 24
	lsrs r0, 24
	strh r0, [r4]
	b _0812DFCE
	.pool
_0812DFC4:
	adds r0, r5, 0x1
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0xF
	bls _0812DF96
_0812DFCE:
	add sp, 0x4
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_812DF68

	thumb_func_start sub_812DFDC
sub_812DFDC: @ 812DFDC
	push {r4-r6,lr}
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x3D
	ldrb r1, [r0]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	ldr r1, =gTasks
	adds r4, r0, r1
	ldrh r1, [r4, 0xA]
	ldr r0, =0x0000ffff
	cmp r1, r0
	beq _0812E008
	ldr r0, =gUnknown_085A7A20
	movs r2, 0xA
	ldrsh r1, [r4, r2]
	lsls r1, 2
	adds r1, r0
	ldr r0, [r1]
	bl _call_via_r0
_0812E008:
	movs r5, 0x4
	adds r6, r4, 0
	adds r6, 0x8
_0812E00E:
	lsls r0, r5, 1
	adds r4, r6, r0
	movs r1, 0
	ldrsh r0, [r4, r1]
	cmp r0, 0x40
	beq _0812E02E
	adds r1, r0, 0
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl DestroySprite
	movs r0, 0x40
	strh r0, [r4]
_0812E02E:
	adds r0, r5, 0x1
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0xF
	bls _0812E00E
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812DFDC

	thumb_func_start sub_812E054
sub_812E054: @ 812E054
	push {r4,r5,lr}
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x3D
	ldrb r1, [r0]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	ldr r1, =gTasks
	adds r0, r1
	movs r2, 0x4
	adds r3, r0, 0
	adds r3, 0x8
	ldr r4, =gSprites
_0812E070:
	lsls r0, r2, 1
	adds r1, r3, r0
	movs r5, 0
	ldrsh r0, [r1, r5]
	cmp r0, 0x40
	beq _0812E09C
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	adds r1, r4
	movs r5, 0x3C
	ldrsh r0, [r1, r5]
	cmp r0, 0
	beq _0812E09C
	movs r0, 0
	b _0812E0A8
	.pool
_0812E09C:
	adds r0, r2, 0x1
	lsls r0, 24
	lsrs r2, r0, 24
	cmp r2, 0xF
	bls _0812E070
	movs r0, 0x1
_0812E0A8:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_812E054

	thumb_func_start sub_812E0B0
sub_812E0B0: @ 812E0B0
	push {lr}
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	ldr r3, =gUnknown_085A7610
	ldr r2, =gTasks
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	adds r0, r2
	movs r2, 0x8
	ldrsh r1, [r0, r2]
	lsls r1, 2
	adds r1, r3
	ldr r1, [r1]
	bl _call_via_r1
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E0B0

	thumb_func_start nullsub_51
nullsub_51: @ 812E0E0
	bx lr
	thumb_func_end nullsub_51

	thumb_func_start sub_812E0E4
sub_812E0E4: @ 812E0E4
	push {r4-r7,lr}
	movs r6, 0
	movs r0, 0x30
_0812E0EA:
	movs r4, 0
	lsls r5, r0, 16
	lsls r7, r6, 16
_0812E0F0:
	ldr r0, =gUnknown_085A7CE0
	asrs r1, r5, 16
	movs r2, 0
	movs r3, 0xE
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	ldr r0, =gSprites
	adds r1, r0
	ldrb r0, [r1, 0x5]
	movs r2, 0xC
	orrs r0, r2
	strb r0, [r1, 0x5]
	strh r6, [r1, 0x2E]
	strh r4, [r1, 0x30]
	ldr r0, =0x0000ffff
	strh r0, [r1, 0x34]
	lsls r0, r4, 16
	movs r1, 0xC0
	lsls r1, 13
	adds r0, r1
	lsrs r4, r0, 16
	asrs r0, 16
	cmp r0, 0x77
	ble _0812E0F0
	movs r2, 0x80
	lsls r2, 9
	adds r1, r7, r2
	movs r2, 0xA0
	lsls r2, 14
	adds r0, r5, r2
	lsrs r0, 16
	lsrs r6, r1, 16
	asrs r1, 16
	cmp r1, 0x2
	ble _0812E0EA
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E0E4

	thumb_func_start sub_812E154
sub_812E154: @ 812E154
	push {r4,r5,lr}
	adds r5, r0, 0
	ldr r0, =gUnknown_0203AB34
	ldr r4, [r0]
	movs r1, 0x2E
	ldrsh r0, [r5, r1]
	lsls r0, 1
	adds r1, r4, 0
	adds r1, 0x1C
	adds r1, r0
	ldrh r0, [r5, 0x30]
	ldrh r1, [r1]
	adds r0, r1
	strh r0, [r5, 0x32]
	movs r2, 0x32
	ldrsh r0, [r5, r2]
	movs r1, 0x78
	bl __modsi3
	strh r0, [r5, 0x32]
	movs r2, 0x2E
	ldrsh r1, [r5, r2]
	lsls r1, 1
	adds r4, 0x22
	adds r4, r1
	ldrh r1, [r4]
	adds r1, 0x1C
	adds r0, r1
	strh r0, [r5, 0x22]
	ldrh r4, [r5, 0x2E]
	lsls r4, 24
	lsrs r4, 24
	movs r1, 0x32
	ldrsh r0, [r5, r1]
	movs r1, 0x18
	bl __divsi3
	adds r1, r0, 0
	lsls r1, 16
	asrs r1, 16
	adds r0, r4, 0
	bl sub_812BC44
	lsls r0, 24
	lsrs r0, 24
	bl GetSpriteTileStartByTag
	adds r1, r5, 0
	adds r1, 0x40
	strh r0, [r1]
	adds r0, r5, 0
	bl SetSpriteSheetFrameTileNum
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E154

	thumb_func_start sub_812E1C8
sub_812E1C8: @ 812E1C8
	push {r4-r6,lr}
	movs r4, 0xCB
	movs r5, 0x1
	ldr r6, =0x0000270f
_0812E1D0:
	lsls r4, 16
	asrs r4, 16
	lsls r5, 16
	asrs r5, 16
	adds r0, r4, 0
	movs r1, 0x17
	movs r2, 0
	adds r3, r5, 0
	bl sub_812E230
	lsls r0, r5, 2
	adds r0, r5
	lsls r0, 17
	subs r4, 0x7
	lsls r4, 16
	lsrs r4, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, r6
	ble _0812E1D0
	movs r4, 0xEB
	movs r5, 0x1
	ldr r6, =0x0000270f
_0812E1FE:
	lsls r4, 16
	asrs r4, 16
	lsls r5, 16
	asrs r5, 16
	adds r0, r4, 0
	movs r1, 0x17
	movs r2, 0x1
	adds r3, r5, 0
	bl sub_812E230
	lsls r0, r5, 2
	adds r0, r5
	lsls r0, 17
	subs r4, 0x7
	lsls r4, 16
	lsrs r4, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, r6
	ble _0812E1FE
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E1C8

	thumb_func_start sub_812E230
sub_812E230: @ 812E230
	push {r4-r6,lr}
	mov r6, r8
	push {r6}
	adds r5, r0, 0
	adds r6, r1, 0
	mov r8, r2
	adds r4, r3, 0
	mov r0, r8
	lsls r0, 24
	lsrs r0, 24
	mov r8, r0
	lsls r4, 16
	lsrs r4, 16
	ldr r0, =gUnknown_085A7CF8
	lsls r5, 16
	asrs r5, 16
	lsls r6, 16
	asrs r6, 16
	adds r1, r5, 0
	adds r2, r6, 0
	movs r3, 0xD
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	lsls r2, r0, 4
	adds r2, r0
	lsls r2, 2
	ldr r0, =gSprites
	adds r2, r0
	ldrb r1, [r2, 0x5]
	movs r0, 0xD
	negs r0, r0
	ands r0, r1
	movs r1, 0x8
	orrs r0, r1
	strb r0, [r2, 0x5]
	mov r0, r8
	strh r0, [r2, 0x2E]
	strh r4, [r2, 0x30]
	lsls r4, 16
	asrs r4, 16
	lsls r0, r4, 2
	adds r0, r4
	lsls r0, 1
	strh r0, [r2, 0x32]
	ldr r0, =0x0000ffff
	strh r0, [r2, 0x34]
	pop {r3}
	mov r8, r3
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E230

	thumb_func_start sub_812E2A8
sub_812E2A8: @ 812E2A8
	push {r4,lr}
	adds r4, r0, 0
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	ldrh r2, [r1, 0xC]
	movs r3, 0x2E
	ldrsh r0, [r4, r3]
	cmp r0, 0
	beq _0812E2BC
	ldrh r2, [r1, 0xE]
_0812E2BC:
	movs r1, 0x34
	ldrsh r0, [r4, r1]
	cmp r0, r2
	beq _0812E2F6
	strh r2, [r4, 0x34]
	ldrh r1, [r4, 0x32]
	adds r0, r2, 0
	bl __umodsi3
	lsls r0, 16
	lsrs r2, r0, 16
	ldrh r1, [r4, 0x30]
	adds r0, r2, 0
	bl __udivsi3
	lsls r0, 16
	movs r3, 0xE0
	lsls r3, 11
	adds r0, r3
	lsrs r2, r0, 16
	adds r0, r2, 0
	bl GetSpriteTileStartByTag
	adds r1, r4, 0
	adds r1, 0x40
	strh r0, [r1]
	adds r0, r4, 0
	bl SetSpriteSheetFrameTileNum
_0812E2F6:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E2A8

	thumb_func_start sub_812E300
sub_812E300: @ 812E300
	push {lr}
	ldr r0, =gUnknown_085A7D10
	movs r1, 0x58
	movs r2, 0x48
	movs r3, 0xF
	bl CreateSprite
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	ldr r2, =gSprites
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r1, [r0, 0x5]
	movs r2, 0xC
	orrs r1, r2
	strb r1, [r0, 0x5]
	ldr r1, =gUnknown_085A7FC0
	bl SetSubspriteTables
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E300

	thumb_func_start sub_812E33C
sub_812E33C: @ 812E33C
	push {r4,r5,lr}
	sub sp, 0x18
	ldr r4, =gUnknown_0203AAE4
	ldr r0, [r4]
	cmp r0, 0
	bne _0812E350
	movs r0, 0x28
	bl AllocZeroed
	str r0, [r4]
_0812E350:
	ldr r2, [r4]
	ldr r0, =gUnknown_0203AAD8
	ldr r1, [r0]
	str r1, [r2]
	movs r3, 0x80
	lsls r3, 4
	strh r3, [r2, 0x4]
	adds r0, r1, r3
	str r0, [r2, 0x8]
	strh r3, [r2, 0xC]
	movs r4, 0x80
	lsls r4, 5
	adds r0, r1, r4
	str r0, [r2, 0x10]
	strh r3, [r2, 0x14]
	movs r5, 0xC0
	lsls r5, 5
	adds r0, r1, r5
	str r0, [r2, 0x18]
	strh r3, [r2, 0x1C]
	movs r0, 0x80
	lsls r0, 6
	adds r1, r0
	str r1, [r2, 0x20]
	strh r3, [r2, 0x24]
	mov r1, sp
	ldr r0, =gUnknown_085A7D28
	ldm r0!, {r3-r5}
	stm r1!, {r3-r5}
	ldm r0!, {r3-r5}
	stm r1!, {r3-r5}
	str r2, [sp, 0xC]
	movs r1, 0x8C
	lsls r1, 1
	mov r0, sp
	movs r2, 0x50
	movs r3, 0x1
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gSprites
	lsls r2, r0, 4
	adds r2, r0
	lsls r2, 2
	adds r2, r1
	ldrb r3, [r2, 0x5]
	movs r1, 0xD
	negs r1, r1
	ands r1, r3
	movs r3, 0x4
	orrs r1, r3
	strb r1, [r2, 0x5]
	adds r2, 0x3E
	ldrb r1, [r2]
	movs r3, 0x2
	orrs r1, r3
	strb r1, [r2]
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	adds r1, 0x3F
	strb r0, [r1]
	add sp, 0x18
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E33C

	thumb_func_start sub_812E3E8
sub_812E3E8: @ 812E3E8
	push {r4,lr}
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x3F
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl DestroySprite
	ldr r4, =gUnknown_0203AAE4
	ldr r0, [r4]
	cmp r0, 0
	beq _0812E410
	bl Free
	movs r0, 0
	str r0, [r4]
_0812E410:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E3E8

	thumb_func_start sub_812E424
sub_812E424: @ 812E424
	push {lr}
	adds r2, r0, 0
	movs r0, 0
	strh r0, [r2, 0x24]
	strh r0, [r2, 0x26]
	adds r0, r2, 0
	adds r0, 0x2A
	ldrb r0, [r0]
	cmp r0, 0x4
	bne _0812E46A
	movs r0, 0x8
	strh r0, [r2, 0x24]
	strh r0, [r2, 0x26]
	adds r0, r2, 0
	adds r0, 0x2B
	ldrb r0, [r0]
	cmp r0, 0
	beq _0812E458
	adds r0, r2, 0
	adds r0, 0x2C
	ldrb r1, [r0]
	movs r0, 0x3F
	ands r0, r1
	cmp r0, 0
	bne _0812E466
	b _0812E46A
_0812E458:
	adds r0, r2, 0
	adds r0, 0x2C
	ldrb r1, [r0]
	movs r0, 0x3F
	ands r0, r1
	cmp r0, 0
	bne _0812E46A
_0812E466:
	ldr r0, =0x0000fff8
	strh r0, [r2, 0x26]
_0812E46A:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E424

	thumb_func_start sub_812E474
sub_812E474: @ 812E474
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x18
	ldr r4, =gUnknown_0203AAE8
	ldr r0, [r4]
	cmp r0, 0
	bne _0812E490
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r4]
_0812E490:
	ldr r2, [r4]
	ldr r0, =gUnknown_0203AAD8
	mov r10, r0
	ldr r0, [r0]
	movs r1, 0xA0
	lsls r1, 6
	adds r0, r1
	str r0, [r2]
	movs r0, 0xC0
	lsls r0, 2
	strh r0, [r2, 0x4]
	mov r1, sp
	ldr r0, =gUnknown_085A7D40
	ldm r0!, {r3-r5}
	stm r1!, {r3-r5}
	ldm r0!, {r3,r4,r7}
	stm r1!, {r3,r4,r7}
	str r2, [sp, 0xC]
	mov r0, sp
	movs r1, 0xB8
	lsls r1, 1
	movs r2, 0x34
	movs r3, 0x7
	bl CreateSprite
	lsls r0, 24
	lsrs r4, r0, 24
	lsls r0, r4, 4
	adds r0, r4
	lsls r0, 2
	ldr r5, =gSprites
	mov r9, r5
	adds r2, r0, r5
	ldrb r1, [r2, 0x5]
	movs r7, 0xD
	negs r7, r7
	mov r8, r7
	mov r0, r8
	ands r0, r1
	movs r1, 0x4
	orrs r0, r1
	strb r0, [r2, 0x5]
	adds r1, r2, 0
	adds r1, 0x3E
	ldrb r0, [r1]
	movs r6, 0x2
	orrs r0, r6
	strb r0, [r1]
	ldr r1, =gUnknown_085A7FE0
	adds r0, r2, 0
	bl SetSubspriteTables
	ldr r5, =gUnknown_0203AB34
	ldr r0, [r5]
	adds r0, 0x49
	strb r4, [r0]
	ldr r4, =gUnknown_0203AAEC
	ldr r0, [r4]
	cmp r0, 0
	bne _0812E510
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r4]
_0812E510:
	ldr r2, [r4]
	mov r3, r10
	ldr r0, [r3]
	movs r4, 0xAC
	lsls r4, 6
	adds r0, r4
	str r0, [r2]
	movs r0, 0xA0
	lsls r0, 3
	strh r0, [r2, 0x4]
	mov r1, sp
	ldr r0, =gUnknown_085A7D58
	ldm r0!, {r3,r4,r7}
	stm r1!, {r3,r4,r7}
	ldm r0!, {r3,r4,r7}
	stm r1!, {r3,r4,r7}
	str r2, [sp, 0xC]
	mov r0, sp
	movs r1, 0xB8
	lsls r1, 1
	movs r2, 0x54
	movs r3, 0x7
	bl CreateSprite
	lsls r0, 24
	lsrs r4, r0, 24
	lsls r0, r4, 4
	adds r0, r4
	lsls r0, 2
	mov r7, r9
	adds r2, r0, r7
	ldrb r1, [r2, 0x5]
	mov r0, r8
	ands r0, r1
	movs r1, 0x4
	orrs r0, r1
	strb r0, [r2, 0x5]
	adds r1, r2, 0
	adds r1, 0x3E
	ldrb r0, [r1]
	orrs r0, r6
	strb r0, [r1]
	ldr r1, =gUnknown_085A7FF4
	adds r0, r2, 0
	bl SetSubspriteTables
	ldr r0, [r5]
	adds r0, 0x4A
	strb r4, [r0]
	add sp, 0x18
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E474

	thumb_func_start sub_812E5A8
sub_812E5A8: @ 812E5A8
	push {r4,r5,lr}
	sub sp, 0x18
	ldr r4, =gUnknown_0203AAF0
	ldr r0, [r4]
	cmp r0, 0
	bne _0812E5BC
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r4]
_0812E5BC:
	ldr r2, [r4]
	ldr r0, =gUnknown_0203AAD8
	ldr r0, [r0]
	movs r1, 0xC0
	lsls r1, 6
	adds r0, r1
	str r0, [r2]
	movs r0, 0xC0
	lsls r0, 3
	strh r0, [r2, 0x4]
	mov r1, sp
	ldr r0, =gUnknown_085A7D70
	ldm r0!, {r3-r5}
	stm r1!, {r3-r5}
	ldm r0!, {r3-r5}
	stm r1!, {r3-r5}
	str r2, [sp, 0xC]
	ldr r0, =gSpriteCoordOffsetX
	ldrh r0, [r0]
	movs r1, 0xA8
	subs r1, r0
	lsls r1, 16
	asrs r1, 16
	mov r0, sp
	movs r2, 0x50
	movs r3, 0x7
	bl CreateSprite
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	lsls r0, r4, 4
	adds r0, r4
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	ldrb r2, [r0, 0x5]
	movs r1, 0xD
	negs r1, r1
	ands r1, r2
	movs r2, 0x4
	orrs r1, r2
	strb r1, [r0, 0x5]
	adds r3, r0, 0
	adds r3, 0x3E
	ldrb r1, [r3]
	movs r2, 0x2
	orrs r1, r2
	strb r1, [r3]
	ldr r1, =gUnknown_085A8010
	bl SetSubspriteTables
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x42
	strb r4, [r0]
	add sp, 0x18
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E5A8

	thumb_func_start sub_812E650
sub_812E650: @ 812E650
	push {r4-r6,lr}
	movs r4, 0
	movs r5, 0
_0812E656:
	ldr r0, =gUnknown_085A7D88
	movs r1, 0xB8
	lsls r1, 1
	movs r2, 0
	movs r3, 0xA
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	lsls r3, r0, 4
	adds r3, r0
	lsls r3, 2
	ldr r1, =gSprites
	adds r3, r1
	ldrb r2, [r3, 0x5]
	movs r6, 0xD
	negs r6, r6
	adds r1, r6, 0
	ands r2, r1
	movs r1, 0x4
	orrs r2, r1
	strb r2, [r3, 0x5]
	movs r1, 0x3E
	adds r1, r3
	mov r12, r1
	ldrb r1, [r1]
	movs r2, 0x2
	orrs r1, r2
	mov r2, r12
	strb r1, [r2]
	strh r5, [r3, 0x3C]
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	adds r1, 0x4B
	adds r1, r4
	strb r0, [r1]
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	lsls r0, r5, 16
	movs r6, 0xA0
	lsls r6, 13
	adds r0, r6
	lsrs r5, r0, 16
	cmp r4, 0x2
	bls _0812E656
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E650

	thumb_func_start sub_812E6C4
sub_812E6C4: @ 812E6C4
	push {r4,lr}
	adds r4, r0, 0
	ldr r0, =gUnknown_0203AB34
	ldr r1, [r0]
	ldrh r0, [r4, 0x3C]
	ldrh r1, [r1, 0x14]
	adds r0, r1
	lsls r0, 16
	asrs r0, 16
	movs r1, 0x28
	bl __modsi3
	lsls r0, 16
	asrs r0, 16
	adds r1, r0, 0
	adds r1, 0x3B
	strh r1, [r4, 0x22]
	movs r1, 0x14
	bl __divsi3
	lsls r0, 16
	asrs r0, 16
	bl sub_812BCE8
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnimIfDifferent
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E6C4

	thumb_func_start sub_812E70C
sub_812E70C: @ 812E70C
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	movs r1, 0xB8
	lsls r1, 1
	ldr r0, =gUnknown_085A7DA0
	movs r2, 0x64
	movs r3, 0x9
	bl CreateSprite
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	lsls r0, r4, 4
	adds r0, r4
	lsls r0, 2
	ldr r7, =gSprites
	adds r2, r0, r7
	adds r1, r2, 0
	adds r1, 0x3E
	ldrb r0, [r1]
	movs r3, 0x2
	mov r10, r3
	mov r3, r10
	orrs r0, r3
	strb r0, [r1]
	ldrb r1, [r2, 0x5]
	movs r5, 0xD
	negs r5, r5
	adds r0, r5, 0
	ands r0, r1
	movs r1, 0x4
	mov r8, r1
	mov r3, r8
	orrs r0, r3
	strb r0, [r2, 0x5]
	ldr r0, =gUnknown_085A8028
	mov r9, r0
	adds r0, r2, 0
	mov r1, r9
	bl SetSubspriteTables
	ldr r6, =gUnknown_0203AB34
	ldr r0, [r6]
	adds r0, 0x4E
	strb r4, [r0]
	movs r1, 0x90
	lsls r1, 1
	ldr r0, =gUnknown_085A7DA0
	movs r2, 0x68
	movs r3, 0x4
	bl CreateSprite
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	lsls r0, r4, 4
	adds r0, r4
	lsls r0, 2
	adds r2, r0, r7
	adds r1, r2, 0
	adds r1, 0x3E
	ldrb r0, [r1]
	mov r3, r10
	orrs r0, r3
	strb r0, [r1]
	ldrb r0, [r2, 0x5]
	ands r5, r0
	mov r0, r8
	orrs r5, r0
	strb r5, [r2, 0x5]
	adds r0, r2, 0
	mov r1, r9
	bl SetSubspriteTables
	ldr r0, [r6]
	adds r0, 0x4F
	strb r4, [r0]
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E70C

	thumb_func_start sub_812E7CC
sub_812E7CC: @ 812E7CC
	push {r4,lr}
	ldr r0, =gUnknown_085A7DB8
	movs r1, 0xB8
	lsls r1, 1
	movs r2, 0x4C
	movs r3, 0xB
	bl CreateSprite
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	lsls r0, r4, 4
	adds r0, r4
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	adds r3, r0, 0
	adds r3, 0x3E
	ldrb r1, [r3]
	movs r2, 0x2
	orrs r1, r2
	strb r1, [r3]
	ldrb r2, [r0, 0x5]
	movs r1, 0xD
	negs r1, r1
	ands r1, r2
	movs r2, 0x4
	orrs r1, r2
	strb r1, [r0, 0x5]
	ldr r1, =gUnknown_085A803C
	bl SetSubspriteTables
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x40
	strb r4, [r0]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E7CC

	thumb_func_start sub_812E82C
sub_812E82C: @ 812E82C
	push {r4,lr}
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x40
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl DestroySprite
	movs r4, 0
_0812E846:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x49
	adds r0, r4
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl DestroySprite
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0x1
	bls _0812E846
	ldr r4, =gUnknown_0203AAE8
	ldr r0, [r4]
	cmp r0, 0
	beq _0812E878
	bl Free
	movs r0, 0
	str r0, [r4]
_0812E878:
	ldr r4, =gUnknown_0203AAEC
	ldr r0, [r4]
	cmp r0, 0
	beq _0812E888
	bl Free
	movs r0, 0
	str r0, [r4]
_0812E888:
	movs r4, 0
_0812E88A:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x4B
	adds r0, r4
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl DestroySprite
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0x2
	bls _0812E88A
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E82C

	thumb_func_start sub_812E8C4
sub_812E8C4: @ 812E8C4
	push {r4,lr}
	movs r4, 0
_0812E8C8:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x4E
	adds r0, r4
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl DestroySprite
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0x1
	bls _0812E8C8
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E8C4

	thumb_func_start sub_812E8F8
sub_812E8F8: @ 812E8F8
	push {r4,lr}
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x42
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl DestroySprite
	ldr r4, =gUnknown_0203AAF0
	ldr r0, [r4]
	cmp r0, 0
	beq _0812E920
	bl Free
	movs r0, 0
	str r0, [r4]
_0812E920:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E8F8

	thumb_func_start sub_812E934
sub_812E934: @ 812E934
	push {r4-r6,lr}
	mov r6, r10
	mov r5, r9
	mov r4, r8
	push {r4-r6}
	ldr r0, =gUnknown_085A7DD0
	mov r10, r0
	movs r1, 0x98
	movs r2, 0x20
	movs r3, 0x5
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	ldr r2, =gSprites
	mov r9, r2
	adds r3, r1, r2
	ldrb r2, [r3, 0x5]
	movs r4, 0xD
	negs r4, r4
	adds r1, r4, 0
	ands r1, r2
	movs r2, 0x4
	mov r8, r2
	mov r2, r8
	orrs r1, r2
	strb r1, [r3, 0x5]
	adds r5, r3, 0
	adds r5, 0x3F
	ldrb r1, [r5]
	movs r2, 0x1
	orrs r1, r2
	strb r1, [r5]
	ldr r6, =gUnknown_0203AB34
	ldr r1, [r6]
	adds r1, 0x50
	strb r0, [r1]
	movs r0, 0x8
	strh r0, [r3, 0x2E]
	ldr r0, =0x0000ffff
	strh r0, [r3, 0x30]
	movs r0, 0x1
	negs r0, r0
	strh r0, [r3, 0x32]
	movs r5, 0x20
	strh r5, [r3, 0x3C]
	mov r0, r10
	movs r1, 0xB8
	movs r2, 0x20
	movs r3, 0x5
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	mov r2, r9
	adds r3, r1, r2
	ldrb r1, [r3, 0x5]
	ands r4, r1
	mov r1, r8
	orrs r4, r1
	strb r4, [r3, 0x5]
	ldr r1, [r6]
	adds r1, 0x51
	strb r0, [r1]
	movs r0, 0x1
	strh r0, [r3, 0x30]
	subs r0, 0x2
	strh r0, [r3, 0x32]
	strh r5, [r3, 0x3C]
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812E934

	thumb_func_start sub_812E9E8
sub_812E9E8: @ 812E9E8
	push {r4,lr}
	adds r2, r0, 0
	ldrh r0, [r2, 0x2E]
	movs r1, 0x2E
	ldrsh r4, [r2, r1]
	cmp r4, 0
	beq _0812EA0C
	subs r0, 0x1
	movs r1, 0
	strh r0, [r2, 0x2E]
	strh r1, [r2, 0x24]
	strh r1, [r2, 0x26]
	adds r2, 0x3E
	ldrb r0, [r2]
	movs r1, 0x4
	orrs r0, r1
	strb r0, [r2]
	b _0812EA3E
_0812EA0C:
	adds r3, r2, 0
	adds r3, 0x3E
	ldrb r1, [r3]
	movs r0, 0x5
	negs r0, r0
	ands r0, r1
	strb r0, [r3]
	ldrh r0, [r2, 0x30]
	ldrh r1, [r2, 0x24]
	adds r0, r1
	strh r0, [r2, 0x24]
	ldrh r0, [r2, 0x32]
	ldrh r1, [r2, 0x26]
	adds r0, r1
	strh r0, [r2, 0x26]
	ldrh r0, [r2, 0x34]
	adds r0, 0x1
	strh r0, [r2, 0x34]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x7
	ble _0812EA3E
	ldrh r0, [r2, 0x3C]
	strh r0, [r2, 0x2E]
	strh r4, [r2, 0x34]
_0812EA3E:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_812E9E8

	thumb_func_start sub_812EA44
sub_812EA44: @ 812EA44
	push {r4,lr}
	lsls r0, 16
	lsrs r0, 16
	ldr r4, =gSprites
	ldr r1, =gUnknown_0203AB34
	ldr r3, [r1]
	adds r1, r3, 0
	adds r1, 0x50
	ldrb r2, [r1]
	lsls r1, r2, 4
	adds r1, r2
	lsls r1, 2
	adds r1, r4
	strh r0, [r1, 0x3C]
	adds r3, 0x51
	ldrb r2, [r3]
	lsls r1, r2, 4
	adds r1, r2
	lsls r1, 2
	adds r1, r4
	strh r0, [r1, 0x3C]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812EA44

	thumb_func_start sub_812EA7C
sub_812EA7C: @ 812EA7C
	push {r4,lr}
	movs r4, 0
_0812EA80:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x50
	adds r0, r4
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl DestroySprite
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0x1
	bls _0812EA80
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812EA7C

	thumb_func_start sub_812EAB0
sub_812EAB0: @ 812EAB0
	push {r4-r6,lr}
	mov r6, r9
	mov r5, r8
	push {r5,r6}
	ldr r0, =gUnknown_085A7DE8
	mov r8, r0
	movs r1, 0x48
	movs r2, 0x50
	movs r3, 0x3
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gSprites
	mov r9, r1
	lsls r2, r0, 4
	adds r2, r0
	lsls r2, 2
	add r2, r9
	ldrb r3, [r2, 0x5]
	movs r4, 0xD
	negs r4, r4
	adds r1, r4, 0
	ands r1, r3
	movs r6, 0x4
	orrs r1, r6
	strb r1, [r2, 0x5]
	movs r3, 0
	movs r1, 0x1
	strh r1, [r2, 0x2E]
	strh r3, [r2, 0x38]
	movs r1, 0x10
	strh r1, [r2, 0x3A]
	movs r1, 0x8
	strh r1, [r2, 0x3C]
	ldr r5, =gUnknown_0203AB34
	ldr r1, [r5]
	adds r1, 0x52
	strb r0, [r1]
	mov r0, r8
	movs r1, 0x68
	movs r2, 0x50
	movs r3, 0x3
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	add r1, r9
	ldrb r2, [r1, 0x5]
	ands r4, r2
	orrs r4, r6
	strb r4, [r1, 0x5]
	adds r1, 0x3F
	ldrb r2, [r1]
	movs r3, 0x1
	orrs r2, r3
	strb r2, [r1]
	ldr r1, [r5]
	adds r1, 0x53
	strb r0, [r1]
	pop {r3,r4}
	mov r8, r3
	mov r9, r4
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812EAB0

	thumb_func_start sub_812EB48
sub_812EB48: @ 812EB48
	push {r4,lr}
	sub sp, 0x4
	adds r4, r0, 0
	ldr r1, =gUnknown_085A7614
	mov r0, sp
	movs r2, 0x2
	bl memcpy
	movs r1, 0x2E
	ldrsh r0, [r4, r1]
	cmp r0, 0
	beq _0812EB9A
	ldrh r0, [r4, 0x3A]
	subs r0, 0x1
	strh r0, [r4, 0x3A]
	lsls r0, 16
	cmp r0, 0
	bgt _0812EB9A
	movs r0, 0x7
	bl IndexOfSpritePaletteTag
	lsls r0, 24
	lsrs r0, 4
	ldr r2, =0x01030000
	adds r0, r2
	lsrs r0, 16
	movs r2, 0x38
	ldrsh r1, [r4, r2]
	add r1, sp
	ldrb r3, [r1]
	adds r1, r3, 0
	adds r2, r3, 0
	bl sub_80B609C
	ldrh r0, [r4, 0x38]
	adds r0, 0x1
	movs r1, 0x1
	ands r0, r1
	strh r0, [r4, 0x38]
	ldrh r0, [r4, 0x3C]
	strh r0, [r4, 0x3A]
_0812EB9A:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812EB48

	thumb_func_start sub_812EBAC
sub_812EBAC: @ 812EBAC
	ldr r3, =gSprites
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	adds r1, 0x52
	ldrb r2, [r1]
	lsls r1, r2, 4
	adds r1, r2
	lsls r1, 2
	adds r1, r3
	strh r0, [r1, 0x3C]
	bx lr
	.pool
	thumb_func_end sub_812EBAC

	thumb_func_start sub_812EBCC
sub_812EBCC: @ 812EBCC
	push {r4,lr}
	movs r0, 0x7
	bl IndexOfSpritePaletteTag
	lsls r0, 24
	lsrs r0, 4
	ldr r1, =0x01030000
	adds r0, r1
	lsrs r0, 16
	movs r1, 0
	movs r2, 0
	movs r3, 0
	bl sub_80B609C
	movs r4, 0
_0812EBEA:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x52
	adds r0, r4
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl DestroySprite
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0x1
	bls _0812EBEA
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812EBCC

	thumb_func_start sub_812EC20
sub_812EC20: @ 812EC20
	push {lr}
	ldr r0, =gUnknown_085A7E00
	movs r1, 0xA8
	movs r2, 0x50
	movs r3, 0x6
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	ldr r2, =gSprites
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	adds r1, r2
	ldrb r3, [r1, 0x5]
	movs r2, 0xD
	negs r2, r2
	ands r2, r3
	movs r3, 0x4
	orrs r2, r3
	strb r2, [r1, 0x5]
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	adds r1, 0x41
	strb r0, [r1]
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812EC20

	thumb_func_start sub_812EC64
sub_812EC64: @ 812EC64
	ldr r1, =gSpriteCoordOffsetY
	ldrh r1, [r1]
	strh r1, [r0, 0x26]
	bx lr
	.pool
	thumb_func_end sub_812EC64

	thumb_func_start sub_812EC70
sub_812EC70: @ 812EC70
	push {lr}
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x41
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl DestroySprite
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812EC70

	thumb_func_start sub_812EC94
sub_812EC94: @ 812EC94
	push {r4,r5,lr}
	sub sp, 0x8
	ldr r1, =gUnknown_085A7616
	mov r0, sp
	movs r2, 0x8
	bl memcpy
	movs r4, 0
_0812ECA4:
	ldr r0, =gSpriteCoordOffsetX
	ldrh r0, [r0]
	movs r1, 0x50
	subs r1, r0
	lsls r1, 16
	asrs r1, 16
	ldr r0, =gUnknown_085A7E18
	movs r2, 0x44
	movs r3, 0
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	lsls r3, r0, 4
	adds r3, r0
	lsls r3, 2
	ldr r1, =gSprites
	adds r3, r1
	ldrb r2, [r3, 0x5]
	movs r5, 0xD
	negs r5, r5
	adds r1, r5, 0
	ands r2, r1
	movs r1, 0x4
	orrs r2, r1
	strb r2, [r3, 0x5]
	movs r1, 0x3E
	adds r1, r3
	mov r12, r1
	ldrb r1, [r1]
	movs r2, 0x2
	orrs r1, r2
	mov r2, r12
	strb r1, [r2]
	lsls r1, r4, 1
	add r1, sp
	ldrh r1, [r1]
	strh r1, [r3, 0x2E]
	ldr r1, =gUnknown_0203AB34
	ldr r1, [r1]
	adds r1, 0x54
	adds r1, r4
	strb r0, [r1]
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0x3
	bls _0812ECA4
	add sp, 0x8
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812EC94

	thumb_func_start sub_812ED20
sub_812ED20: @ 812ED20
	push {r4,r5,lr}
	adds r5, r0, 0
	ldrh r0, [r5, 0x2E]
	subs r0, 0x2
	movs r4, 0
	movs r1, 0xFF
	ands r0, r1
	strh r0, [r5, 0x2E]
	movs r1, 0x2E
	ldrsh r0, [r5, r1]
	movs r1, 0x14
	bl Cos
	strh r0, [r5, 0x24]
	movs r2, 0x2E
	ldrsh r0, [r5, r2]
	movs r1, 0x6
	bl Sin
	strh r0, [r5, 0x26]
	adds r1, r5, 0
	adds r1, 0x43
	strb r4, [r1]
	movs r2, 0x2E
	ldrsh r0, [r5, r2]
	cmp r0, 0x7F
	ble _0812ED5A
	movs r0, 0x2
	strb r0, [r1]
_0812ED5A:
	ldrh r0, [r5, 0x30]
	adds r0, 0x1
	strh r0, [r5, 0x30]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0xF
	ble _0812ED84
	adds r3, r5, 0
	adds r3, 0x3F
	ldrb r2, [r3]
	lsls r0, r2, 31
	lsrs r0, 31
	movs r1, 0x1
	eors r1, r0
	movs r0, 0x2
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	strb r0, [r3]
	movs r0, 0
	strh r0, [r5, 0x30]
_0812ED84:
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_812ED20

	thumb_func_start sub_812ED8C
sub_812ED8C: @ 812ED8C
	push {r4,lr}
	movs r4, 0
_0812ED90:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x54
	adds r0, r4
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl DestroySprite
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0x3
	bls _0812ED90
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812ED8C

	thumb_func_start sub_812EDC0
sub_812EDC0: @ 812EDC0
	push {r4,lr}
	ldr r0, =gUnknown_085A7E30
	movs r1, 0xA8
	movs r2, 0x3C
	movs r3, 0x8
	bl CreateSprite
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	lsls r0, r4, 4
	adds r0, r4
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	ldrb r2, [r0, 0x5]
	movs r1, 0xD
	negs r1, r1
	ands r1, r2
	movs r2, 0x4
	orrs r1, r2
	strb r1, [r0, 0x5]
	ldrb r1, [r0, 0x1]
	movs r2, 0x3
	orrs r1, r2
	strb r1, [r0, 0x1]
	bl InitSpriteAffineAnim
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x43
	strb r4, [r0]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812EDC0

	thumb_func_start sub_812EE14
sub_812EE14: @ 812EE14
	push {lr}
	adds r3, r0, 0
	ldrh r2, [r3, 0x2E]
	movs r1, 0x2E
	ldrsh r0, [r3, r1]
	cmp r0, 0
	bne _0812EE36
	adds r0, r3, 0
	adds r0, 0x3F
	ldrb r1, [r0]
	movs r0, 0x20
	ands r0, r1
	cmp r0, 0
	beq _0812EE90
	adds r0, r2, 0x1
	strh r0, [r3, 0x2E]
	b _0812EE90
_0812EE36:
	cmp r0, 0x1
	bne _0812EE72
	movs r0, 0x3E
	adds r0, r3
	mov r12, r0
	ldrb r2, [r0]
	lsls r0, r2, 29
	lsrs r0, 31
	movs r1, 0x1
	eors r1, r0
	lsls r1, 2
	movs r0, 0x5
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	mov r1, r12
	strb r0, [r1]
	ldrh r0, [r3, 0x32]
	adds r0, 0x1
	strh r0, [r3, 0x32]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x17
	ble _0812EE90
	ldrh r0, [r3, 0x2E]
	adds r0, 0x1
	strh r0, [r3, 0x2E]
	movs r0, 0
	strh r0, [r3, 0x32]
	b _0812EE90
_0812EE72:
	adds r2, r3, 0
	adds r2, 0x3E
	ldrb r0, [r2]
	movs r1, 0x4
	orrs r0, r1
	strb r0, [r2]
	ldrh r0, [r3, 0x32]
	adds r0, 0x1
	strh r0, [r3, 0x32]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0xF
	ble _0812EE90
	movs r0, 0x1
	strh r0, [r3, 0x3C]
_0812EE90:
	ldrh r0, [r3, 0x30]
	movs r1, 0xFF
	ands r1, r0
	adds r1, 0x10
	strh r1, [r3, 0x30]
	lsrs r1, 8
	ldrh r0, [r3, 0x26]
	subs r0, r1
	strh r0, [r3, 0x26]
	pop {r0}
	bx r0
	thumb_func_end sub_812EE14

	thumb_func_start sub_812EEA8
sub_812EEA8: @ 812EEA8
	ldr r2, =gSprites
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x43
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrh r0, [r0, 0x3C]
	lsls r0, 24
	lsrs r0, 24
	bx lr
	.pool
	thumb_func_end sub_812EEA8

	thumb_func_start sub_812EECC
sub_812EECC: @ 812EECC
	push {r4,lr}
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	adds r0, 0x43
	ldrb r0, [r0]
	lsls r4, r0, 4
	adds r4, r0
	lsls r4, 2
	ldr r0, =gSprites
	adds r4, r0
	ldrb r0, [r4, 0x3]
	lsls r0, 26
	lsrs r0, 27
	bl FreeOamMatrix
	adds r0, r4, 0
	bl DestroySprite
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812EECC

	thumb_func_start sub_812EF00
sub_812EF00: @ 812EF00
	push {r4,lr}
	adds r3, r0, 0
	adds r2, r1, 0
	ldr r0, =gUnknown_085A7F98
	lsls r3, 16
	asrs r3, 16
	lsls r2, 16
	asrs r2, 16
	adds r1, r3, 0
	movs r3, 0xC
	bl CreateSprite
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	lsls r0, r4, 4
	adds r0, r4
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	ldrb r2, [r0, 0x5]
	movs r1, 0xD
	negs r1, r1
	ands r1, r2
	movs r2, 0x8
	orrs r1, r2
	strb r1, [r0, 0x5]
	ldrb r1, [r0, 0x1]
	movs r2, 0x3
	orrs r1, r2
	strb r1, [r0, 0x1]
	bl InitSpriteAffineAnim
	adds r0, r4, 0
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812EF00

	thumb_func_start sub_812EF54
sub_812EF54: @ 812EF54
	push {lr}
	adds r2, r0, 0
	adds r0, 0x3F
	ldrb r1, [r0]
	movs r0, 0x20
	ands r0, r1
	cmp r0, 0
	beq _0812EF68
	movs r0, 0x1
	strh r0, [r2, 0x3C]
_0812EF68:
	pop {r0}
	bx r0
	thumb_func_end sub_812EF54

	thumb_func_start sub_812EF6C
sub_812EF6C: @ 812EF6C
	push {r4,lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r4, r0, 4
	adds r4, r0
	lsls r4, 2
	ldr r0, =gSprites
	adds r4, r0
	ldrb r0, [r4, 0x3]
	lsls r0, 26
	lsrs r0, 27
	bl FreeOamMatrix
	adds r0, r4, 0
	bl DestroySprite
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812EF6C

	thumb_func_start sub_812EF98
sub_812EF98: @ 812EF98
	push {r4-r6,lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	ldr r3, =gUnknown_085A78C8
	lsrs r1, 22
	adds r3, r1, r3
	ldr r5, [r3]
	ldr r3, =gUnknown_085A783A
	adds r4, r1, r3
	movs r6, 0
	ldrsh r4, [r4, r6]
	adds r3, 0x2
	adds r1, r3
	movs r6, 0
	ldrsh r3, [r1, r6]
	lsls r2, 16
	asrs r2, 16
	str r2, [sp]
	adds r1, r5, 0
	adds r2, r4, 0
	bl sub_812EFDC
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4-r6}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812EF98

	thumb_func_start sub_812EFDC
sub_812EFDC: @ 812EFDC
	push {r4-r7,lr}
	mov r7, r9
	mov r6, r8
	push {r6,r7}
	sub sp, 0x18
	adds r4, r0, 0
	mov r8, r1
	adds r1, r2, 0
	adds r2, r3, 0
	ldr r5, [sp, 0x34]
	lsls r4, 24
	lsls r5, 16
	lsrs r5, 16
	mov r9, r5
	ldr r0, =gUnknown_085A8264
	lsrs r4, 22
	adds r0, r4, r0
	mov r3, sp
	ldr r0, [r0]
	ldm r0!, {r5-r7}
	stm r3!, {r5-r7}
	ldm r0!, {r5-r7}
	stm r3!, {r5-r7}
	ldr r0, =gUnknown_03001188
	adds r0, r4, r0
	ldr r0, [r0]
	str r0, [sp, 0xC]
	lsls r1, 16
	asrs r1, 16
	lsls r2, 16
	asrs r2, 16
	mov r0, sp
	movs r3, 0x10
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	adds r7, r0, 0
	lsls r0, r7, 4
	adds r0, r7
	lsls r0, 2
	ldr r1, =gSprites
	adds r2, r0, r1
	ldrb r0, [r2, 0x5]
	movs r1, 0xC
	orrs r0, r1
	strb r0, [r2, 0x5]
	mov r0, r8
	str r0, [r2, 0x1C]
	mov r5, r9
	strh r5, [r2, 0x3A]
	movs r0, 0x1
	strh r0, [r2, 0x3C]
	ldr r0, =gUnknown_085A82CC
	adds r4, r0
	ldr r1, [r4]
	cmp r1, 0
	beq _0812F056
	adds r0, r2, 0
	bl SetSubspriteTables
_0812F056:
	adds r0, r7, 0
	add sp, 0x18
	pop {r3,r4}
	mov r8, r3
	mov r9, r4
	pop {r4-r7}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812EFDC

	thumb_func_start sub_812F078
sub_812F078: @ 812F078
	movs r1, 0
	strh r1, [r0, 0x3C]
	bx lr
	thumb_func_end sub_812F078

	thumb_func_start sub_812F080
sub_812F080: @ 812F080
	push {r4,r5,lr}
	sub sp, 0x10
	adds r4, r0, 0
	ldr r1, =gUnknown_085A761E
	mov r0, sp
	movs r2, 0x8
	bl memcpy
	add r5, sp, 0x8
	ldr r1, =gUnknown_085A7626
	adds r0, r5, 0
	movs r2, 0x8
	bl memcpy
	ldrh r0, [r4, 0x30]
	adds r1, r0, 0x1
	strh r1, [r4, 0x30]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0xF
	ble _0812F0C6
	adds r3, r4, 0
	adds r3, 0x42
	ldrb r2, [r3]
	lsls r0, r2, 26
	lsrs r0, 26
	movs r1, 0x1
	eors r1, r0
	movs r0, 0x40
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	strb r0, [r3]
	movs r0, 0
	strh r0, [r4, 0x30]
_0812F0C6:
	movs r0, 0
	strh r0, [r4, 0x24]
	strh r0, [r4, 0x26]
	adds r0, r4, 0
	adds r0, 0x42
	ldrb r1, [r0]
	movs r0, 0x3F
	ands r0, r1
	cmp r0, 0
	beq _0812F0F2
	movs r1, 0x3A
	ldrsh r0, [r4, r1]
	lsls r0, 1
	add r0, sp
	ldrh r0, [r0]
	strh r0, [r4, 0x24]
	movs r1, 0x3A
	ldrsh r0, [r4, r1]
	lsls r0, 1
	adds r0, r5, r0
	ldrh r0, [r0]
	strh r0, [r4, 0x26]
_0812F0F2:
	add sp, 0x10
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812F080

	thumb_func_start sub_812F104
sub_812F104: @ 812F104
	push {lr}
	adds r3, r0, 0
	adds r3, 0x3F
	ldrb r1, [r3]
	movs r2, 0x1
	orrs r1, r2
	strb r1, [r3]
	bl sub_812F080
	pop {r0}
	bx r0
	thumb_func_end sub_812F104

	thumb_func_start sub_812F11C
sub_812F11C: @ 812F11C
	push {lr}
	adds r3, r0, 0
	adds r3, 0x3F
	ldrb r1, [r3]
	movs r2, 0x2
	orrs r1, r2
	strb r1, [r3]
	bl sub_812F080
	pop {r0}
	bx r0
	thumb_func_end sub_812F11C

	thumb_func_start sub_812F134
sub_812F134: @ 812F134
	push {lr}
	adds r3, r0, 0
	adds r3, 0x3F
	ldrb r1, [r3]
	movs r2, 0x1
	orrs r1, r2
	movs r2, 0x2
	orrs r1, r2
	strb r1, [r3]
	bl sub_812F080
	pop {r0}
	bx r0
	thumb_func_end sub_812F134

	thumb_func_start sub_812F150
sub_812F150: @ 812F150
	push {lr}
	adds r2, r0, 0
	movs r1, 0x2E
	ldrsh r0, [r2, r1]
	cmp r0, 0x1
	beq _0812F184
	cmp r0, 0x1
	bgt _0812F166
	cmp r0, 0
	beq _0812F170
	b _0812F1B4
_0812F166:
	cmp r0, 0x2
	beq _0812F194
	cmp r0, 0x3
	beq _0812F1B0
	b _0812F1B4
_0812F170:
	ldrh r0, [r2, 0x20]
	adds r0, 0x4
	strh r0, [r2, 0x20]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0xCF
	ble _0812F1B4
	movs r0, 0xD0
	strh r0, [r2, 0x20]
	b _0812F1A2
_0812F184:
	ldrh r0, [r2, 0x30]
	adds r0, 0x1
	strh r0, [r2, 0x30]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x5A
	ble _0812F1B4
	b _0812F1A2
_0812F194:
	ldrh r0, [r2, 0x20]
	adds r0, 0x4
	strh r0, [r2, 0x20]
	lsls r0, 16
	ldr r1, =0x010f0000
	cmp r0, r1
	ble _0812F1B4
_0812F1A2:
	ldrh r0, [r2, 0x2E]
	adds r0, 0x1
	strh r0, [r2, 0x2E]
	b _0812F1B4
	.pool
_0812F1B0:
	movs r0, 0
	strh r0, [r2, 0x3C]
_0812F1B4:
	pop {r0}
	bx r0
	thumb_func_end sub_812F150

	thumb_func_start sub_812F1B8
sub_812F1B8: @ 812F1B8
	push {lr}
	adds r1, r0, 0
	movs r2, 0x2E
	ldrsh r0, [r1, r2]
	cmp r0, 0x1
	beq _0812F1EC
	cmp r0, 0x1
	bgt _0812F1CE
	cmp r0, 0
	beq _0812F1D8
	b _0812F216
_0812F1CE:
	cmp r0, 0x2
	beq _0812F1FC
	cmp r0, 0x3
	beq _0812F212
	b _0812F216
_0812F1D8:
	ldrh r0, [r1, 0x20]
	subs r0, 0x4
	strh r0, [r1, 0x20]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0xD0
	bgt _0812F216
	movs r0, 0xD0
	strh r0, [r1, 0x20]
	b _0812F20A
_0812F1EC:
	ldrh r0, [r1, 0x30]
	adds r0, 0x1
	strh r0, [r1, 0x30]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x5A
	ble _0812F216
	b _0812F20A
_0812F1FC:
	ldrh r0, [r1, 0x20]
	subs r0, 0x4
	strh r0, [r1, 0x20]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x90
	bgt _0812F216
_0812F20A:
	ldrh r0, [r1, 0x2E]
	adds r0, 0x1
	strh r0, [r1, 0x2E]
	b _0812F216
_0812F212:
	movs r0, 0
	strh r0, [r1, 0x3C]
_0812F216:
	pop {r0}
	bx r0
	thumb_func_end sub_812F1B8

	thumb_func_start sub_812F21C
sub_812F21C: @ 812F21C
	push {r4,lr}
	adds r4, r0, 0
	movs r1, 0x2E
	ldrsh r0, [r4, r1]
	cmp r0, 0x5
	bhi _0812F2C6
	lsls r0, 2
	ldr r1, =_0812F238
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_0812F238:
	.4byte _0812F250
	.4byte _0812F268
	.4byte _0812F288
	.4byte _0812F29C
	.4byte _0812F2AC
	.4byte _0812F2C2
_0812F250:
	ldr r0, =gUnknown_0203AB34
	ldr r0, [r0]
	ldrb r1, [r0, 0xA]
	subs r1, 0x1
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
	ldrh r0, [r4, 0x2E]
	adds r0, 0x1
	strh r0, [r4, 0x2E]
_0812F268:
	ldrh r0, [r4, 0x30]
	adds r0, 0x1
	strh r0, [r4, 0x30]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x3
	ble _0812F2C6
	ldrh r0, [r4, 0x2E]
	adds r0, 0x1
	strh r0, [r4, 0x2E]
	movs r0, 0
	strh r0, [r4, 0x30]
	b _0812F2C6
	.pool
_0812F288:
	ldrh r0, [r4, 0x20]
	adds r0, 0x4
	strh r0, [r4, 0x20]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0xCF
	ble _0812F2C6
	movs r0, 0xD0
	strh r0, [r4, 0x20]
	b _0812F2BA
_0812F29C:
	ldrh r0, [r4, 0x30]
	adds r0, 0x1
	strh r0, [r4, 0x30]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x5A
	ble _0812F2C6
	b _0812F2BA
_0812F2AC:
	ldrh r0, [r4, 0x20]
	adds r0, 0x4
	strh r0, [r4, 0x20]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0xF7
	ble _0812F2C6
_0812F2BA:
	ldrh r0, [r4, 0x2E]
	adds r0, 0x1
	strh r0, [r4, 0x2E]
	b _0812F2C6
_0812F2C2:
	movs r0, 0
	strh r0, [r4, 0x3C]
_0812F2C6:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_812F21C

	thumb_func_start sub_812F2CC
sub_812F2CC: @ 812F2CC
	push {lr}
	adds r3, r0, 0
	movs r1, 0x2E
	ldrsh r0, [r3, r1]
	cmp r0, 0x1
	beq _0812F2FA
	cmp r0, 0x1
	bgt _0812F2E2
	cmp r0, 0
	beq _0812F2E8
	b _0812F368
_0812F2E2:
	cmp r0, 0x2
	beq _0812F318
	b _0812F368
_0812F2E8:
	adds r2, r3, 0
	adds r2, 0x2C
	ldrb r0, [r2]
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r2]
	ldrh r0, [r3, 0x2E]
	adds r0, 0x1
	strh r0, [r3, 0x2E]
_0812F2FA:
	ldrh r0, [r3, 0x22]
	adds r0, 0x8
	strh r0, [r3, 0x22]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x6F
	ble _0812F368
	movs r0, 0x70
	strh r0, [r3, 0x22]
	movs r0, 0x10
	strh r0, [r3, 0x30]
	ldrh r0, [r3, 0x2E]
	adds r0, 0x1
	strh r0, [r3, 0x2E]
	b _0812F368
_0812F318:
	movs r0, 0x32
	ldrsh r2, [r3, r0]
	cmp r2, 0
	bne _0812F35E
	ldrh r0, [r3, 0x22]
	ldrh r1, [r3, 0x30]
	subs r0, r1
	strh r0, [r3, 0x22]
	negs r1, r1
	strh r1, [r3, 0x30]
	ldrh r0, [r3, 0x34]
	adds r0, 0x1
	strh r0, [r3, 0x34]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x1
	ble _0812F35E
	lsls r0, r1, 16
	asrs r0, 18
	strh r0, [r3, 0x30]
	strh r2, [r3, 0x34]
	adds r1, r0, 0
	cmp r1, 0
	bne _0812F35E
	ldrh r0, [r3, 0x2E]
	adds r0, 0x1
	strh r0, [r3, 0x2E]
	strh r1, [r3, 0x3C]
	adds r2, r3, 0
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
_0812F35E:
	ldrh r0, [r3, 0x32]
	adds r0, 0x1
	movs r1, 0x7
	ands r0, r1
	strh r0, [r3, 0x32]
_0812F368:
	pop {r0}
	bx r0
	thumb_func_end sub_812F2CC

	thumb_func_start sub_812F36C
sub_812F36C: @ 812F36C
	push {lr}
	adds r1, r0, 0
	movs r2, 0x2E
	ldrsh r0, [r1, r2]
	cmp r0, 0
	beq _0812F37E
	cmp r0, 0x1
	beq _0812F394
	b _0812F3B0
_0812F37E:
	ldrh r0, [r1, 0x30]
	adds r0, 0x1
	strh r0, [r1, 0x30]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x8
	ble _0812F3B0
	ldrh r0, [r1, 0x2E]
	adds r0, 0x1
	strh r0, [r1, 0x2E]
	b _0812F3B0
_0812F394:
	ldrh r0, [r1, 0x22]
	adds r0, 0x2
	strh r0, [r1, 0x22]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x2F
	ble _0812F3B0
	movs r0, 0x30
	strh r0, [r1, 0x22]
	ldrh r0, [r1, 0x2E]
	adds r0, 0x1
	strh r0, [r1, 0x2E]
	movs r0, 0
	strh r0, [r1, 0x3C]
_0812F3B0:
	pop {r0}
	bx r0
	thumb_func_end sub_812F36C

	thumb_func_start sub_812F3B4
sub_812F3B4: @ 812F3B4
	push {r4,lr}
	adds r4, r0, 0
	movs r1, 0x2E
	ldrsh r0, [r4, r1]
	cmp r0, 0
	beq _0812F3C6
	cmp r0, 0x1
	beq _0812F416
	b _0812F468
_0812F3C6:
	adds r2, r4, 0
	adds r2, 0x3E
	ldrb r0, [r2]
	movs r1, 0x4
	orrs r0, r1
	strb r0, [r2]
	ldrh r0, [r4, 0x30]
	adds r0, 0x1
	strh r0, [r4, 0x30]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x20
	ble _0812F468
	ldrh r0, [r4, 0x2E]
	adds r0, 0x1
	strh r0, [r4, 0x2E]
	movs r0, 0x5
	strh r0, [r4, 0x30]
	ldrb r0, [r4, 0x1]
	movs r1, 0x10
	orrs r0, r1
	strb r0, [r4, 0x1]
	ldrb r1, [r2]
	movs r0, 0x5
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	adds r0, r4, 0
	movs r1, 0x1
	bl StartSpriteAnim
	ldrh r0, [r4, 0x30]
	lsls r1, r0, 4
	orrs r1, r0
	lsls r1, 24
	lsrs r1, 16
	movs r0, 0x4C
	bl SetGpuReg
	b _0812F468
_0812F416:
	ldrh r1, [r4, 0x32]
	lsls r1, 16
	asrs r1, 24
	ldrh r0, [r4, 0x30]
	subs r0, r1
	strh r0, [r4, 0x30]
	lsls r0, 16
	cmp r0, 0
	bge _0812F42C
	movs r0, 0
	strh r0, [r4, 0x30]
_0812F42C:
	ldrh r0, [r4, 0x30]
	lsls r1, r0, 4
	orrs r1, r0
	lsls r1, 24
	lsrs r1, 16
	movs r0, 0x4C
	bl SetGpuReg
	ldrh r1, [r4, 0x32]
	movs r0, 0xFF
	ands r0, r1
	adds r0, 0x80
	strh r0, [r4, 0x32]
	movs r0, 0x30
	ldrsh r1, [r4, r0]
	cmp r1, 0
	bne _0812F468
	ldrh r0, [r4, 0x2E]
	adds r0, 0x1
	strh r0, [r4, 0x2E]
	strh r1, [r4, 0x3C]
	ldrb r1, [r4, 0x1]
	movs r0, 0x11
	negs r0, r0
	ands r0, r1
	strb r0, [r4, 0x1]
	adds r0, r4, 0
	movs r1, 0
	bl StartSpriteAnim
_0812F468:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_812F3B4

	thumb_func_start sub_812F470
sub_812F470: @ 812F470
	push {r4,r5,lr}
	adds r5, r0, 0
	movs r1, 0x30
	ldrsh r0, [r5, r1]
	cmp r0, 0x2
	bgt _0812F4C0
	ldr r1, =gUnknown_085A8510
	lsls r0, 2
	adds r0, r1
	ldr r4, [r0]
	movs r0, 0x6
	bl IndexOfSpritePaletteTag
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 4
	movs r0, 0x80
	lsls r0, 17
	adds r1, r0
	lsrs r1, 16
	adds r0, r4, 0
	movs r2, 0x20
	bl LoadPalette
	ldrh r0, [r5, 0x32]
	adds r0, 0x1
	strh r0, [r5, 0x32]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x3
	ble _0812F4FC
	ldrh r0, [r5, 0x30]
	adds r0, 0x1
	strh r0, [r5, 0x30]
	movs r0, 0
	strh r0, [r5, 0x32]
	b _0812F4FC
	.pool
_0812F4C0:
	ldr r1, =gUnknown_085A8510
	movs r2, 0x30
	ldrsh r0, [r5, r2]
	lsls r0, 2
	adds r0, r1
	ldr r4, [r0]
	movs r0, 0x6
	bl IndexOfSpritePaletteTag
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 4
	movs r0, 0x80
	lsls r0, 17
	adds r1, r0
	lsrs r1, 16
	adds r0, r4, 0
	movs r2, 0x20
	bl LoadPalette
	ldrh r0, [r5, 0x32]
	adds r0, 0x1
	movs r1, 0
	strh r0, [r5, 0x32]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x18
	ble _0812F4FC
	strh r1, [r5, 0x30]
	strh r1, [r5, 0x32]
_0812F4FC:
	adds r0, r5, 0
	movs r1, 0x1
	bl StartSpriteAnimIfDifferent
	movs r0, 0
	strh r0, [r5, 0x3C]
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812F470

	thumb_func_start sub_812F514
sub_812F514: @ 812F514
	push {r4-r6,lr}
	sub sp, 0x30
	adds r4, r0, 0
	ldr r1, =gUnknown_085A762E
	mov r0, sp
	movs r2, 0x10
	bl memcpy
	add r6, sp, 0x10
	ldr r1, =gUnknown_085A763E
	adds r0, r6, 0
	movs r2, 0x10
	bl memcpy
	add r5, sp, 0x20
	ldr r1, =gUnknown_085A764E
	adds r0, r5, 0
	movs r2, 0x10
	bl memcpy
	movs r1, 0x2E
	ldrsh r0, [r4, r1]
	cmp r0, 0x1
	beq _0812F58C
	cmp r0, 0x1
	bgt _0812F55C
	cmp r0, 0
	beq _0812F562
	b _0812F5D8
	.pool
_0812F55C:
	cmp r0, 0x2
	beq _0812F5A0
	b _0812F5D8
_0812F562:
	movs r2, 0x3A
	ldrsh r0, [r4, r2]
	lsls r0, 1
	add r0, sp
	ldrh r0, [r0]
	strh r0, [r4, 0x24]
	movs r1, 0x3A
	ldrsh r0, [r4, r1]
	lsls r0, 1
	adds r0, r6, r0
	ldrh r0, [r0]
	strh r0, [r4, 0x26]
	movs r2, 0x3A
	ldrsh r0, [r4, r2]
	lsls r0, 1
	adds r0, r5, r0
	ldrh r0, [r0]
	strh r0, [r4, 0x30]
	ldrh r0, [r4, 0x2E]
	adds r0, 0x1
	strh r0, [r4, 0x2E]
_0812F58C:
	ldrh r0, [r4, 0x30]
	subs r0, 0x1
	strh r0, [r4, 0x30]
	lsls r0, 16
	asrs r0, 16
	movs r1, 0x1
	negs r1, r1
	cmp r0, r1
	bne _0812F5D8
	b _0812F5D2
_0812F5A0:
	ldrh r0, [r4, 0x24]
	movs r2, 0x24
	ldrsh r1, [r4, r2]
	cmp r1, 0
	ble _0812F5AE
	subs r0, 0x4
	b _0812F5B4
_0812F5AE:
	cmp r1, 0
	bge _0812F5B6
	adds r0, 0x4
_0812F5B4:
	strh r0, [r4, 0x24]
_0812F5B6:
	ldrh r0, [r4, 0x26]
	movs r2, 0x26
	ldrsh r1, [r4, r2]
	cmp r1, 0
	ble _0812F5C4
	subs r0, 0x4
	b _0812F5CA
_0812F5C4:
	cmp r1, 0
	bge _0812F5CC
	adds r0, 0x4
_0812F5CA:
	strh r0, [r4, 0x26]
_0812F5CC:
	ldr r0, [r4, 0x24]
	cmp r0, 0
	bne _0812F5D8
_0812F5D2:
	ldrh r0, [r4, 0x2E]
	adds r0, 0x1
	strh r0, [r4, 0x2E]
_0812F5D8:
	add sp, 0x30
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_812F514

	thumb_func_start sub_812F5E0
sub_812F5E0: @ 812F5E0
	push {r4,lr}
	sub sp, 0x10
	adds r4, r0, 0
	ldr r1, =gUnknown_085A765E
	mov r0, sp
	movs r2, 0x10
	bl memcpy
	ldrh r1, [r4, 0x2E]
	movs r2, 0x2E
	ldrsh r0, [r4, r2]
	cmp r0, 0
	bne _0812F602
	adds r0, r1, 0x1
	strh r0, [r4, 0x2E]
	movs r0, 0xC
	strh r0, [r4, 0x30]
_0812F602:
	movs r1, 0x3A
	ldrsh r0, [r4, r1]
	lsls r0, 1
	add r0, sp
	movs r2, 0
	ldrsh r0, [r0, r2]
	movs r2, 0x30
	ldrsh r1, [r4, r2]
	bl Cos
	strh r0, [r4, 0x24]
	movs r1, 0x3A
	ldrsh r0, [r4, r1]
	lsls r0, 1
	add r0, sp
	movs r2, 0
	ldrsh r0, [r0, r2]
	movs r2, 0x30
	ldrsh r1, [r4, r2]
	bl Sin
	strh r0, [r4, 0x26]
	ldrh r1, [r4, 0x30]
	movs r2, 0x30
	ldrsh r0, [r4, r2]
	cmp r0, 0
	beq _0812F63C
	subs r0, r1, 0x1
	strh r0, [r4, 0x30]
_0812F63C:
	add sp, 0x10
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812F5E0

	thumb_func_start sub_812F648
sub_812F648: @ 812F648
	push {r4-r6,lr}
	sub sp, 0x4
	adds r5, r0, 0
	movs r1, 0x2E
	ldrsh r0, [r5, r1]
	cmp r0, 0x1
	beq _0812F694
	cmp r0, 0x1
	bgt _0812F660
	cmp r0, 0
	beq _0812F66A
	b _0812F76C
_0812F660:
	cmp r0, 0x2
	beq _0812F6E0
	cmp r0, 0x3
	beq _0812F71C
	b _0812F76C
_0812F66A:
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	adds r1, r2, 0
	adds r1, 0x5C
	movs r0, 0x2F
	strh r0, [r1]
	adds r1, 0x2
	movs r0, 0x3F
	strh r0, [r1]
	subs r1, 0x4
	ldr r0, =0x00002088
	strh r0, [r1]
	adds r2, r5, 0
	adds r2, 0x3E
	ldrb r0, [r2]
	movs r1, 0x4
	orrs r0, r1
	strb r0, [r2]
	ldrh r0, [r5, 0x2E]
	adds r0, 0x1
	strh r0, [r5, 0x2E]
_0812F694:
	ldrh r0, [r5, 0x30]
	adds r2, r0, 0x2
	strh r2, [r5, 0x30]
	adds r0, 0xB2
	strh r0, [r5, 0x32]
	movs r1, 0xF0
	subs r1, r2
	strh r1, [r5, 0x34]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0xD0
	ble _0812F6B0
	movs r0, 0xD0
	strh r0, [r5, 0x32]
_0812F6B0:
	movs r1, 0x34
	ldrsh r0, [r5, r1]
	cmp r0, 0xCF
	bgt _0812F6BC
	movs r0, 0xD0
	strh r0, [r5, 0x34]
_0812F6BC:
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	ldrh r0, [r5, 0x32]
	lsls r0, 8
	ldrh r1, [r5, 0x34]
	orrs r0, r1
	adds r1, r2, 0
	adds r1, 0x58
	strh r0, [r1]
	movs r1, 0x30
	ldrsh r0, [r5, r1]
	cmp r0, 0x33
	ble _0812F76C
	b _0812F75E
	.pool
_0812F6E0:
	ldr r6, =gUnknown_0203AB34
	ldr r0, [r6]
	movs r1, 0x12
	ldrsh r0, [r0, r1]
	cmp r0, 0
	beq _0812F76C
	ldr r1, =SpriteCallbackDummy
	movs r4, 0
	str r4, [sp]
	movs r0, 0x5
	movs r2, 0xD0
	movs r3, 0x74
	bl sub_812DF68
	ldr r2, [r6]
	adds r1, r2, 0
	adds r1, 0x58
	ldr r0, =0x0000c0e0
	strh r0, [r1]
	adds r1, 0x2
	movs r0, 0xD1
	lsls r0, 7
	strh r0, [r1]
	adds r1, 0x2
	movs r0, 0x2F
	strh r0, [r1]
	ldrh r0, [r5, 0x2E]
	adds r0, 0x1
	strh r0, [r5, 0x2E]
	strh r4, [r5, 0x30]
_0812F71C:
	ldrh r0, [r5, 0x30]
	adds r2, r0, 0x2
	strh r2, [r5, 0x30]
	adds r0, 0xC2
	strh r0, [r5, 0x32]
	movs r1, 0xE0
	subs r1, r2
	strh r1, [r5, 0x34]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0xD0
	ble _0812F738
	movs r0, 0xD0
	strh r0, [r5, 0x32]
_0812F738:
	movs r1, 0x34
	ldrsh r0, [r5, r1]
	cmp r0, 0xCF
	bgt _0812F744
	movs r0, 0xD0
	strh r0, [r5, 0x34]
_0812F744:
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	ldrh r0, [r5, 0x32]
	lsls r0, 8
	ldrh r1, [r5, 0x34]
	orrs r0, r1
	adds r1, r2, 0
	adds r1, 0x58
	strh r0, [r1]
	movs r1, 0x30
	ldrsh r0, [r5, r1]
	cmp r0, 0xF
	ble _0812F76C
_0812F75E:
	ldrh r0, [r5, 0x2E]
	adds r0, 0x1
	strh r0, [r5, 0x2E]
	adds r1, r2, 0
	adds r1, 0x5C
	movs r0, 0x3F
	strh r0, [r1]
_0812F76C:
	add sp, 0x4
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812F648

	thumb_func_start nullsub_101
nullsub_101: @ 812F780
	bx lr
	thumb_func_end nullsub_101

	thumb_func_start sub_812F784
sub_812F784: @ 812F784
	push {lr}
	movs r0, 0x4C
	movs r1, 0
	bl SetGpuReg
	pop {r0}
	bx r0
	thumb_func_end sub_812F784

	thumb_func_start sub_812F794
sub_812F794: @ 812F794
	push {r4,lr}
	ldr r0, =gUnknown_085A8520
	ldr r4, [r0]
	movs r0, 0x6
	bl IndexOfSpritePaletteTag
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 4
	movs r0, 0x80
	lsls r0, 17
	adds r1, r0
	lsrs r1, 16
	adds r0, r4, 0
	movs r2, 0x20
	bl LoadPalette
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812F794

	thumb_func_start sub_812F7C0
sub_812F7C0: @ 812F7C0
	ldr r0, =gUnknown_0203AB34
	ldr r2, [r0]
	adds r1, r2, 0
	adds r1, 0x58
	movs r0, 0xF0
	strh r0, [r1]
	adds r1, 0x2
	movs r0, 0xA0
	strh r0, [r1]
	adds r0, r2, 0
	adds r0, 0x5C
	movs r1, 0x3F
	strh r1, [r0]
	adds r0, 0x2
	strh r1, [r0]
	bx lr
	.pool
	thumb_func_end sub_812F7C0

	thumb_func_start sub_812F7E4
sub_812F7E4: @ 812F7E4
	push {r4-r6,lr}
	bl sub_812F8A0
	ldr r4, =gUnknown_0203AAD4
	movs r0, 0xC8
	lsls r0, 6
	bl Alloc
	adds r1, r0, 0
	str r1, [r4]
	ldr r0, =gUnknown_08DD0050
	bl LZDecompressWram
	ldr r4, =gUnknown_0203AAD8
	movs r0, 0xD8
	lsls r0, 6
	bl Alloc
	adds r1, r0, 0
	str r1, [r4]
	ldr r0, =gUnknown_085A858C
	bl LZDecompressWram
	ldr r4, =gUnknown_0203AB30
	movs r0, 0xB0
	bl AllocZeroed
	str r0, [r4]
	movs r3, 0
	ldr r5, =gUnknown_085A8334
	adds r6, r4, 0
_0812F822:
	ldr r2, [r4]
	lsls r1, r3, 3
	adds r2, r1, r2
	adds r1, r5
	ldr r0, [r1]
	str r0, [r2]
	ldrh r0, [r1, 0x4]
	strh r0, [r2, 0x4]
	ldrh r0, [r1, 0x6]
	strh r0, [r2, 0x6]
	adds r0, r3, 0x1
	lsls r0, 24
	lsrs r3, r0, 24
	cmp r3, 0x15
	bls _0812F822
	ldr r3, [r6]
	adds r2, r3, 0
	adds r2, 0x88
	ldr r0, =gUnknown_0203AAD4
	ldr r1, [r0]
	movs r4, 0xA0
	lsls r4, 4
	adds r0, r1, r4
	str r0, [r2]
	adds r2, 0x8
	movs r4, 0xA0
	lsls r4, 5
	adds r0, r1, r4
	str r0, [r2]
	adds r2, 0x8
	movs r4, 0xB0
	lsls r4, 5
	adds r0, r1, r4
	str r0, [r2]
	adds r0, r3, 0
	adds r0, 0xA0
	movs r2, 0xC8
	lsls r2, 5
	adds r1, r2
	str r1, [r0]
	adds r0, r3, 0
	bl LoadSpriteSheets
	ldr r0, =gUnknown_085A8544
	bl LoadSpritePalettes
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812F7E4

	thumb_func_start sub_812F8A0
sub_812F8A0: @ 812F8A0
	push {r4-r6,lr}
	ldr r5, =gUnknown_0203AB2C
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r5]
	ldr r4, =gUnknown_0203AAE0
	movs r0, 0x80
	lsls r0, 6
	bl AllocZeroed
	str r0, [r4]
	adds r3, r0, 0
	movs r1, 0
	adds r6, r4, 0
	ldr r0, =gUnknown_085A83E4
	ldr r4, [r0]
_0812F8C2:
	movs r2, 0
	adds r1, 0x1
_0812F8C6:
	adds r0, r4, r2
	ldrb r0, [r0]
	strb r0, [r3]
	adds r0, r2, 0x1
	lsls r0, 24
	lsrs r2, r0, 24
	adds r3, 0x1
	cmp r2, 0x1F
	bls _0812F8C6
	lsls r0, r1, 24
	lsrs r1, r0, 24
	cmp r1, 0x3F
	bls _0812F8C2
	ldr r0, [r5]
	ldr r1, [r6]
	str r1, [r0]
	movs r1, 0x80
	lsls r1, 4
	strh r1, [r0, 0x4]
	movs r1, 0x11
	strh r1, [r0, 0x6]
	bl LoadSpriteSheet
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812F8A0

	thumb_func_start sub_812F908
sub_812F908: @ 812F908
	push {r4,r5,lr}
	ldr r4, =gUnknown_0203AAC8
	movs r5, 0x88
	lsls r5, 6
	adds r0, r5, 0
	bl Alloc
	adds r1, r0, 0
	str r1, [r4]
	ldr r0, =gUnknown_08DCDB30
	bl LZDecompressWram
	ldr r1, [r4]
	movs r0, 0x2
	adds r2, r5, 0
	movs r3, 0
	bl LoadBgTiles
	ldr r0, =gUnknown_08DCDA90
	movs r1, 0
	movs r2, 0xA0
	bl LoadPalette
	ldr r0, =gUnknown_085A8524
	movs r1, 0xD0
	movs r2, 0x20
	bl LoadPalette
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812F908

	thumb_func_start sub_812F958
sub_812F958: @ 812F958
	push {lr}
	bl sub_812F968
	bl sub_812F980
	pop {r0}
	bx r0
	thumb_func_end sub_812F958

	thumb_func_start sub_812F968
sub_812F968: @ 812F968
	push {lr}
	ldr r1, =gUnknown_08DCE770
	movs r2, 0xA0
	lsls r2, 3
	movs r0, 0x2
	movs r3, 0
	bl LoadBgTilemap
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812F968

	thumb_func_start sub_812F980
sub_812F980: @ 812F980
	push {r4-r7,lr}
	mov r7, r9
	mov r6, r8
	push {r6,r7}
	movs r1, 0x4
	ldr r0, =gUnknown_0203AAD0
	mov r8, r0
_0812F98E:
	movs r0, 0
	lsls r1, 16
	mov r9, r1
_0812F994:
	mov r2, r8
	ldr r1, [r2]
	mov r2, r9
	asrs r6, r2, 16
	lsls r4, r0, 16
	asrs r4, 16
	adds r5, r6, r4
	adds r3, r5, 0
	adds r3, 0xA0
	lsls r3, 16
	lsrs r3, 16
	movs r0, 0x3
	movs r2, 0x2
	bl LoadBgTilemap
	mov r0, r8
	ldr r1, [r0]
	adds r1, 0x2
	movs r2, 0xD0
	lsls r2, 1
	adds r3, r5, r2
	lsls r3, 16
	lsrs r3, 16
	movs r0, 0x3
	movs r2, 0x2
	bl LoadBgTilemap
	mov r0, r8
	ldr r1, [r0]
	adds r1, 0x4
	adds r3, r5, 0
	adds r3, 0xC0
	lsls r3, 16
	lsrs r3, 16
	movs r0, 0x3
	movs r2, 0x2
	bl LoadBgTilemap
	mov r2, r8
	ldr r1, [r2]
	adds r1, 0x6
	movs r0, 0xC0
	lsls r0, 1
	adds r7, r0, 0
	adds r3, r5, r7
	lsls r3, 16
	lsrs r3, 16
	movs r0, 0x3
	movs r2, 0x2
	bl LoadBgTilemap
	adds r4, 0x1
	lsls r4, 16
	lsrs r0, r4, 16
	asrs r4, 16
	cmp r4, 0x3
	ble _0812F994
	mov r2, r8
	ldr r1, [r2]
	adds r1, 0x8
	adds r3, r6, 0
	adds r3, 0xC0
	lsls r3, 16
	lsrs r3, 16
	movs r0, 0x3
	movs r2, 0x2
	bl LoadBgTilemap
	mov r0, r8
	ldr r1, [r0]
	adds r1, 0xA
	adds r3, r6, r7
	lsls r3, 16
	lsrs r3, 16
	movs r0, 0x3
	movs r2, 0x2
	bl LoadBgTilemap
	movs r0, 0x7
_0812FA32:
	mov r2, r8
	ldr r1, [r2]
	adds r1, 0xC
	lsls r4, r0, 16
	asrs r4, 16
	lsls r3, r4, 5
	mov r0, r9
	asrs r5, r0, 16
	adds r3, r5, r3
	lsls r3, 16
	lsrs r3, 16
	movs r0, 0x3
	movs r2, 0x2
	bl LoadBgTilemap
	adds r4, 0x1
	lsls r4, 16
	lsrs r0, r4, 16
	asrs r4, 16
	cmp r4, 0xB
	ble _0812FA32
	adds r0, r5, 0x5
	lsls r0, 16
	lsrs r1, r0, 16
	asrs r0, 16
	cmp r0, 0x11
	ble _0812F98E
	pop {r3,r4}
	mov r8, r3
	mov r9, r4
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812F980

	thumb_func_start sub_812FA78
sub_812FA78: @ 812FA78
	push {r4-r6,lr}
	adds r4, r0, 0
	ldr r5, [sp, 0x10]
	ldr r6, =gUnknown_0203AADC
	ldr r0, [r6]
	strh r1, [r0]
	ldr r1, [r6]
	strh r2, [r1, 0x2]
	strh r3, [r1, 0x4]
	strh r5, [r1, 0x6]
	lsls r4, 16
	asrs r5, r4, 16
	movs r0, 0xF0
	lsls r0, 17
	adds r4, r0
	lsrs r4, 16
	movs r0, 0x2
	movs r2, 0x2
	adds r3, r4, 0
	bl LoadBgTilemap
	ldr r1, [r6]
	adds r1, 0x2
	ldr r0, =0x000001e1
	adds r3, r5, r0
	lsls r3, 16
	lsrs r3, 16
	movs r0, 0x2
	movs r2, 0x2
	bl LoadBgTilemap
	ldr r1, [r6]
	adds r1, 0x4
	movs r0, 0x80
	lsls r0, 2
	adds r3, r5, r0
	lsls r3, 16
	lsrs r3, 16
	movs r0, 0x2
	movs r2, 0x2
	bl LoadBgTilemap
	ldr r1, [r6]
	adds r1, 0x6
	ldr r0, =0x00000201
	adds r5, r0
	lsls r5, 16
	lsrs r5, 16
	movs r0, 0x2
	movs r2, 0x2
	adds r3, r5, 0
	bl LoadBgTilemap
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812FA78

	thumb_func_start sub_812FAF4
sub_812FAF4: @ 812FAF4
	push {lr}
	ldr r1, =gUnknown_08DCEC70
	movs r2, 0xA0
	lsls r2, 3
	movs r0, 0x2
	movs r3, 0
	bl LoadBgTilemap
	movs r0, 0x3
	bl HideBg
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812FAF4

	thumb_func_start sub_812FB14
sub_812FB14: @ 812FB14
	ldr r1, =gUnknown_03001188
	ldr r0, =gUnknown_0203AAF4
	ldr r0, [r0]
	str r0, [r1]
	ldr r0, =gUnknown_0203AAF8
	ldr r0, [r0]
	str r0, [r1, 0x4]
	ldr r0, =gUnknown_0203AAFC
	ldr r0, [r0]
	str r0, [r1, 0x8]
	ldr r0, =gUnknown_0203AB04
	ldr r0, [r0]
	str r0, [r1, 0xC]
	ldr r0, =gUnknown_0203AB08
	ldr r0, [r0]
	str r0, [r1, 0x10]
	ldr r0, =gUnknown_0203AB18
	ldr r0, [r0]
	str r0, [r1, 0x14]
	ldr r0, =gUnknown_0203AB1C
	ldr r0, [r0]
	str r0, [r1, 0x18]
	ldr r0, =gUnknown_0203AB20
	ldr r0, [r0]
	str r0, [r1, 0x1C]
	ldr r0, =gUnknown_0203AB24
	ldr r0, [r0]
	str r0, [r1, 0x20]
	ldr r0, =gUnknown_0203AB28
	ldr r0, [r0]
	str r0, [r1, 0x24]
	ldr r0, =gUnknown_0203AB00
	ldr r0, [r0]
	str r0, [r1, 0x28]
	str r0, [r1, 0x2C]
	str r0, [r1, 0x30]
	str r0, [r1, 0x34]
	ldr r0, =gUnknown_0203AB0C
	ldr r0, [r0]
	str r0, [r1, 0x38]
	str r0, [r1, 0x3C]
	str r0, [r1, 0x40]
	str r0, [r1, 0x44]
	str r0, [r1, 0x48]
	ldr r0, =gUnknown_0203AB10
	ldr r0, [r0]
	str r0, [r1, 0x4C]
	str r0, [r1, 0x50]
	str r0, [r1, 0x54]
	ldr r0, =gUnknown_0203AB14
	ldr r0, [r0]
	str r0, [r1, 0x58]
	str r0, [r1, 0x5C]
	str r0, [r1, 0x60]
	movs r0, 0
	str r0, [r1, 0x64]
	bx lr
	.pool
	thumb_func_end sub_812FB14

	thumb_func_start sub_812FBC4
sub_812FBC4: @ 812FBC4
	push {r4-r6,lr}
	mov r6, r8
	push {r6}
	ldr r4, =gUnknown_0203AAF4
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r4]
	ldr r6, =gUnknown_0203AAD4
	ldr r1, [r6]
	str r1, [r0]
	movs r5, 0xC0
	lsls r5, 3
	strh r5, [r0, 0x4]
	ldr r4, =gUnknown_0203AAF8
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r4]
	ldr r1, [r6]
	adds r1, r5
	str r1, [r0]
	movs r1, 0x80
	lsls r1, 2
	mov r8, r1
	mov r2, r8
	strh r2, [r0, 0x4]
	ldr r4, =gUnknown_0203AAFC
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r4]
	ldr r1, [r6]
	movs r3, 0x80
	lsls r3, 4
	adds r1, r3
	str r1, [r0]
	mov r4, r8
	strh r4, [r0, 0x4]
	ldr r4, =gUnknown_0203AB00
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r4]
	ldr r1, [r6]
	movs r2, 0xA0
	lsls r2, 4
	adds r1, r2
	str r1, [r0]
	mov r3, r8
	strh r3, [r0, 0x4]
	ldr r4, =gUnknown_0203AB04
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r4]
	ldr r1, [r6]
	movs r4, 0xC0
	lsls r4, 4
	adds r1, r4
	str r1, [r0]
	movs r5, 0xC0
	lsls r5, 2
	strh r5, [r0, 0x4]
	ldr r4, =gUnknown_0203AB08
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r4]
	ldr r1, [r6]
	movs r2, 0x80
	lsls r2, 5
	adds r1, r2
	str r1, [r0]
	movs r1, 0x80
	lsls r1, 3
	strh r1, [r0, 0x4]
	ldr r4, =gUnknown_0203AB0C
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r4]
	ldr r1, [r6]
	movs r3, 0xA0
	lsls r3, 5
	adds r1, r3
	str r1, [r0]
	mov r4, r8
	strh r4, [r0, 0x4]
	ldr r4, =gUnknown_0203AB10
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r4]
	ldr r1, [r6]
	movs r2, 0xB0
	lsls r2, 5
	adds r1, r2
	str r1, [r0]
	strh r5, [r0, 0x4]
	ldr r4, =gUnknown_0203AB14
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r4]
	ldr r1, [r6]
	movs r3, 0xC8
	lsls r3, 5
	adds r1, r3
	str r1, [r0]
	strh r5, [r0, 0x4]
	ldr r4, =gUnknown_0203AB18
	movs r0, 0x10
	bl AllocZeroed
	str r0, [r4]
	ldr r1, [r6]
	movs r4, 0xE0
	lsls r4, 5
	adds r2, r1, r4
	str r2, [r0]
	mov r2, r8
	strh r2, [r0, 0x4]
	movs r3, 0xF0
	lsls r3, 5
	adds r1, r3
	str r1, [r0, 0x8]
	strh r2, [r0, 0xC]
	ldr r4, =gUnknown_0203AB1C
	movs r0, 0x8
	bl AllocZeroed
	str r0, [r4]
	ldr r1, [r6]
	movs r4, 0x80
	lsls r4, 6
	adds r1, r4
	str r1, [r0]
	movs r1, 0xA0
	lsls r1, 2
	strh r1, [r0, 0x4]
	ldr r4, =gUnknown_0203AB20
	movs r0, 0x28
	bl AllocZeroed
	str r0, [r4]
	ldr r2, [r6]
	movs r3, 0x8A
	lsls r3, 6
	adds r1, r2, r3
	str r1, [r0]
	movs r3, 0x80
	strh r3, [r0, 0x4]
	movs r4, 0x8C
	lsls r4, 6
	adds r1, r2, r4
	str r1, [r0, 0x8]
	strh r3, [r0, 0xC]
	adds r4, 0x80
	adds r1, r2, r4
	str r1, [r0, 0x10]
	strh r3, [r0, 0x14]
	adds r4, 0x80
	adds r1, r2, r4
	str r1, [r0, 0x18]
	strh r3, [r0, 0x1C]
	movs r1, 0x92
	lsls r1, 6
	adds r2, r1
	str r2, [r0, 0x20]
	strh r3, [r0, 0x24]
	ldr r4, =gUnknown_0203AB24
	movs r0, 0x10
	bl AllocZeroed
	str r0, [r4]
	ldr r2, [r6]
	movs r3, 0x98
	lsls r3, 6
	adds r1, r2, r3
	str r1, [r0]
	movs r1, 0x90
	lsls r1, 3
	strh r1, [r0, 0x4]
	movs r4, 0xAA
	lsls r4, 6
	adds r2, r4
	str r2, [r0, 0x8]
	strh r1, [r0, 0xC]
	ldr r4, =gUnknown_0203AB28
	movs r0, 0x10
	bl AllocZeroed
	str r0, [r4]
	ldr r2, [r6]
	movs r3, 0xBC
	lsls r3, 6
	adds r1, r2, r3
	str r1, [r0]
	movs r1, 0xC0
	lsls r1, 1
	strh r1, [r0, 0x4]
	movs r4, 0xC2
	lsls r4, 6
	adds r2, r4
	str r2, [r0, 0x8]
	strh r1, [r0, 0xC]
	pop {r3}
	mov r8, r3
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812FBC4

	.align 2, 0 @ Don't pad with nop.