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

	.syntax unified

	.text

	thumb_func_start sub_8128420
sub_8128420: @ 8128420
	push {r4,lr}
	ldr r4, _08128450 @ =gUnknown_203B0E0
	movs r0, 0xDC
	lsls r0, 1
	bl Alloc
	str r0, [r4]
	bl sub_812845C
	ldr r1, _08128454 @ =gKeyRepeatStartDelay
	movs r0, 0x14
	strh r0, [r1]
	bl sub_812B4AC
	movs r0, 0
	bl SetVBlankCallback
	ldr r0, _08128458 @ =c2_081284E0
	bl SetMainCallback2
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08128450: .4byte gUnknown_203B0E0
_08128454: .4byte gKeyRepeatStartDelay
_08128458: .4byte c2_081284E0
	thumb_func_end sub_8128420

	thumb_func_start sub_812845C
sub_812845C: @ 812845C
	push {r4-r7,lr}
	adds r4, r0, 0
	movs r5, 0
	movs r0, 0
	strh r0, [r4, 0x4]
	strh r0, [r4, 0x6]
	strb r5, [r4, 0x10]
	strb r5, [r4, 0x11]
	strb r5, [r4, 0x12]
	strb r5, [r4, 0x14]
	strb r5, [r4, 0x15]
	strb r5, [r4, 0x16]
	movs r0, 0xFF
	strb r0, [r4, 0x1A]
	bl GetLinkPlayerCount
	strb r0, [r4, 0xD]
	bl GetMultiplayerId
	strb r0, [r4, 0x13]
	strb r5, [r4, 0x17]
	strb r5, [r4, 0x18]
	movs r1, 0xC8
	lsls r1, 1
	adds r0, r4, r1
	bl sub_8129560
	ldr r7, _081284B4 @ =gSaveBlock1Ptr
	ldr r6, _081284B8 @ =0x00003ad4
	adds r4, 0xB9
	movs r5, 0x9
_0812849A:
	ldr r1, [r7]
	adds r1, r6
	adds r0, r4, 0
	bl StringCopy
	adds r6, 0x15
	adds r4, 0x15
	subs r5, 0x1
	cmp r5, 0
	bge _0812849A
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_081284B4: .4byte gSaveBlock1Ptr
_081284B8: .4byte 0x00003ad4
	thumb_func_end sub_812845C

	thumb_func_start sub_81284BC
sub_81284BC: @ 81284BC
	push {r4,lr}
	ldr r4, _081284DC @ =gUnknown_203B0E0
	ldr r0, [r4]
	ldrb r0, [r0, 0xE]
	bl DestroyTask
	ldr r0, [r4]
	ldrb r0, [r0, 0xF]
	bl DestroyTask
	ldr r0, [r4]
	bl Free
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_081284DC: .4byte gUnknown_203B0E0
	thumb_func_end sub_81284BC

	thumb_func_start c2_081284E0
c2_081284E0: @ 81284E0
	push {r4-r6,lr}
	sub sp, 0x4
	ldr r0, _081284FC @ =gMain
	movs r1, 0x87
	lsls r1, 3
	adds r6, r0, r1
	ldrb r0, [r6]
	cmp r0, 0x1
	beq _08128518
	cmp r0, 0x1
	bgt _08128500
	cmp r0, 0
	beq _08128506
	b _08128598
	.align 2, 0
_081284FC: .4byte gMain
_08128500:
	cmp r0, 0x2
	beq _08128554
	b _08128598
_08128506:
	bl ResetTasks
	bl ResetSpriteData
	bl FreeAllSpritePalettes
	bl sub_8129B14
	b _08128548
_08128518:
	bl sub_8129BFC
	bl sub_8129B78
	adds r5, r0, 0
	cmp r5, 0
	bne _08128598
	movs r4, 0x1
	negs r4, r4
	adds r0, r4, 0
	movs r1, 0x10
	movs r2, 0
	bl BlendPalettes
	str r5, [sp]
	adds r0, r4, 0
	adds r1, r4, 0
	movs r2, 0x10
	movs r3, 0
	bl BeginNormalPaletteFade
	ldr r0, _08128550 @ =sub_81285B4
	bl SetVBlankCallback
_08128548:
	ldrb r0, [r6]
	adds r0, 0x1
	strb r0, [r6]
	b _08128598
	.align 2, 0
_08128550: .4byte sub_81285B4
_08128554:
	bl UpdatePaletteFade
	ldr r0, _081285A0 @ =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _08128598
	ldr r0, _081285A4 @ =sub_81285CC
	bl SetMainCallback2
	movs r0, 0x11
	movs r1, 0
	bl sub_8113550
	ldr r0, _081285A8 @ =sub_81285E8
	movs r1, 0x8
	bl CreateTask
	ldr r4, _081285AC @ =gUnknown_203B0E0
	ldr r1, [r4]
	strb r0, [r1, 0xE]
	ldr r0, _081285B0 @ =sub_81298F8
	movs r1, 0x7
	bl CreateTask
	ldr r1, [r4]
	strb r0, [r1, 0xF]
	bl sub_80FCEA8
	movs r0, 0xE8
	movs r1, 0x96
	bl sub_80FCD74
_08128598:
	add sp, 0x4
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_081285A0: .4byte gPaletteFade
_081285A4: .4byte sub_81285CC
_081285A8: .4byte sub_81285E8
_081285AC: .4byte gUnknown_203B0E0
_081285B0: .4byte sub_81298F8
	thumb_func_end c2_081284E0

	thumb_func_start sub_81285B4
sub_81285B4: @ 81285B4
	push {lr}
	bl TransferPlttBuffer
	bl LoadOam
	bl ProcessSpriteCopyRequests
	bl sub_8087F54
	pop {r0}
	bx r0
	thumb_func_end sub_81285B4

	thumb_func_start sub_81285CC
sub_81285CC: @ 81285CC
	push {lr}
	bl RunTasks
	bl sub_8129BFC
	bl AnimateSprites
	bl BuildOamBuffer
	bl UpdatePaletteFade
	pop {r0}
	bx r0
	thumb_func_end sub_81285CC

	thumb_func_start sub_81285E8
sub_81285E8: @ 81285E8
	push {r4,lr}
	ldr r4, _08128600 @ =gUnknown_203B0E0
	ldr r0, [r4]
	ldrb r0, [r0, 0x17]
	cmp r0, 0x2
	beq _0812860E
	cmp r0, 0x2
	bgt _08128604
	cmp r0, 0x1
	beq _0812860A
	b _0812861E
	.align 2, 0
_08128600: .4byte gUnknown_203B0E0
_08128604:
	cmp r0, 0x3
	beq _08128612
	b _0812861E
_0812860A:
	movs r0, 0x6
	b _08128614
_0812860E:
	movs r0, 0x7
	b _08128614
_08128612:
	movs r0, 0x8
_08128614:
	bl sub_8129218
	ldr r1, [r4]
	movs r0, 0
	strb r0, [r1, 0x17]
_0812861E:
	ldr r1, _08128638 @ =gUnknown_845A880
	ldr r0, _0812863C @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrh r0, [r0, 0x4]
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	bl _call_via_r0
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08128638: .4byte gUnknown_845A880
_0812863C: .4byte gUnknown_203B0E0
	thumb_func_end sub_81285E8

	thumb_func_start sub_8128640
sub_8128640: @ 8128640
	push {r4,lr}
	ldr r4, _08128658 @ =gUnknown_203B0E0
	ldr r0, [r4]
	ldrh r1, [r0, 0x6]
	cmp r1, 0x1
	beq _08128674
	cmp r1, 0x1
	bgt _0812865C
	cmp r1, 0
	beq _08128662
	b _081286BC
	.align 2, 0
_08128658: .4byte gUnknown_203B0E0
_0812865C:
	cmp r1, 0x2
	beq _081286AC
	b _081286BC
_08128662:
	movs r1, 0xC8
	lsls r1, 1
	adds r0, r1
	bl sub_8129568
	ldr r1, [r4]
	ldrh r0, [r1, 0x6]
	adds r0, 0x1
	strh r0, [r1, 0x6]
_08128674:
	bl sub_800A4BC
	lsls r0, 24
	cmp r0, 0
	beq _081286BC
	bl sub_80FBA1C
	cmp r0, 0
	bne _081286BC
	ldr r4, _081286A8 @ =gUnknown_203B0E0
	ldr r1, [r4]
	movs r0, 0xC8
	lsls r0, 1
	adds r1, r0
	movs r0, 0
	movs r2, 0x28
	bl SendBlock
	lsls r0, 24
	cmp r0, 0
	beq _081286BC
	ldr r1, [r4]
	ldrh r0, [r1, 0x6]
	adds r0, 0x1
	strh r0, [r1, 0x6]
	b _081286BC
	.align 2, 0
_081286A8: .4byte gUnknown_203B0E0
_081286AC:
	bl sub_800A4BC
	lsls r0, 24
	cmp r0, 0
	beq _081286BC
	movs r0, 0x1
	bl sub_8129218
_081286BC:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_8128640

	thumb_func_start sub_81286C4
sub_81286C4: @ 81286C4
	push {r4,r5,lr}
	ldr r5, _081286D8 @ =gUnknown_203B0E0
	ldr r3, [r5]
	ldrh r0, [r3, 0x6]
	cmp r0, 0
	beq _081286DC
	cmp r0, 0x1
	beq _0812878A
	b _081287AC
	.align 2, 0
_081286D8: .4byte gUnknown_203B0E0
_081286DC:
	ldr r1, _081286F8 @ =gMain
	ldrh r2, [r1, 0x2E]
	movs r0, 0x8
	ands r0, r2
	cmp r0, 0
	beq _081286FC
	ldrb r0, [r3, 0x15]
	cmp r0, 0
	beq _081287AC
	movs r0, 0x4
	bl sub_8129218
	b _081287AC
	.align 2, 0
_081286F8: .4byte gMain
_081286FC:
	movs r0, 0x4
	ands r0, r2
	cmp r0, 0
	beq _0812870C
	movs r0, 0x2
	bl sub_8129218
	b _081287AC
_0812870C:
	ldrh r1, [r1, 0x30]
	movs r0, 0x2
	ands r0, r1
	cmp r0, 0
	beq _08128738
	ldrb r0, [r3, 0x15]
	cmp r0, 0
	beq _08128730
	bl sub_81293AC
	movs r0, 0x8
	movs r1, 0
	bl sub_8129C34
	ldr r1, [r5]
	movs r0, 0x1
	strh r0, [r1, 0x6]
	b _081287AC
_08128730:
	movs r0, 0x3
	bl sub_8129218
	b _081287AC
_08128738:
	movs r4, 0x1
	adds r0, r4, 0
	ands r0, r2
	cmp r0, 0
	beq _08128754
	bl sub_81292D8
	movs r0, 0x8
	movs r1, 0
	bl sub_8129C34
	movs r0, 0x2
	movs r1, 0x1
	b _08128780
_08128754:
	movs r0, 0x80
	lsls r0, 1
	ands r0, r2
	cmp r0, 0
	beq _08128774
	ldrb r0, [r3, 0x10]
	cmp r0, 0x3
	beq _0812876C
	bl sub_81293D8
	movs r0, 0x8
	b _0812877E
_0812876C:
	movs r0, 0x5
	bl sub_8129218
	b _081287AC
_08128774:
	bl sub_8129228
	cmp r0, 0
	beq _081287AC
	movs r0, 0x1
_0812877E:
	movs r1, 0
_08128780:
	bl sub_8129C34
	ldr r0, [r5]
	strh r4, [r0, 0x6]
	b _081287AC
_0812878A:
	movs r0, 0
	bl sub_8129C8C
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	movs r0, 0x1
	bl sub_8129C8C
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r4, 0
	bne _081287AC
	cmp r1, 0
	bne _081287AC
	ldr r0, [r5]
	strh r1, [r0, 0x6]
_081287AC:
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_81286C4

	thumb_func_start sub_81287B4
sub_81287B4: @ 81287B4
	push {r4-r6,lr}
	ldr r0, _081287CC @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrh r0, [r0, 0x6]
	cmp r0, 0x4
	bls _081287C2
	b _081288CE
_081287C2:
	lsls r0, 2
	ldr r1, _081287D0 @ =_081287D4
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.align 2, 0
_081287CC: .4byte gUnknown_203B0E0
_081287D0: .4byte _081287D4
	.align 2, 0
_081287D4:
	.4byte _081287E8
	.4byte _081287F2
	.4byte _08128810
	.4byte _0812889C
	.4byte _081288B0
_081287E8:
	movs r0, 0x3
	movs r1, 0
	bl sub_8129C34
	b _081287FE
_081287F2:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _081288CE
_081287FE:
	ldr r0, _0812880C @ =gUnknown_203B0E0
	ldr r1, [r0]
	ldrh r0, [r1, 0x6]
	adds r0, 0x1
	strh r0, [r1, 0x6]
	b _081288CE
	.align 2, 0
_0812880C: .4byte gUnknown_203B0E0
_08128810:
	bl ProcessMenuInput
	lsls r0, 24
	asrs r0, 8
	lsrs r6, r0, 16
	asrs r4, r0, 16
	movs r0, 0x2
	negs r0, r0
	cmp r4, r0
	beq _08128848
	adds r0, 0x1
	cmp r4, r0
	beq _08128868
	movs r0, 0x4
	movs r1, 0
	bl sub_8129C34
	ldr r5, _08128844 @ =gUnknown_203B0E0
	ldr r2, [r5]
	ldrb r0, [r2, 0x10]
	cmp r0, r4
	beq _08128870
	cmp r4, 0x3
	ble _08128880
	b _08128870
	.align 2, 0
_08128844: .4byte gUnknown_203B0E0
_08128848:
	ldr r0, _08128864 @ =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0x4
	ands r0, r1
	cmp r0, 0
	beq _081288CE
	movs r0, 0x5
	bl PlaySE
	movs r0, 0x1
	bl MoveMenuCursor
	b _081288CE
	.align 2, 0
_08128864: .4byte gMain
_08128868:
	movs r0, 0x4
	movs r1, 0
	bl sub_8129C34
_08128870:
	ldr r0, _0812887C @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x3
	strh r0, [r1, 0x6]
	b _081288CE
	.align 2, 0
_0812887C: .4byte gUnknown_203B0E0
_08128880:
	movs r1, 0
	strb r1, [r2, 0x11]
	ldr r0, [r5]
	strb r1, [r0, 0x12]
	movs r0, 0x5
	movs r1, 0x1
	bl sub_8129C34
	ldr r0, [r5]
	strb r6, [r0, 0x10]
	ldr r1, [r5]
	movs r0, 0x4
	strh r0, [r1, 0x6]
	b _081288CE
_0812889C:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _081288CE
	movs r0, 0x1
	bl sub_8129218
	b _081288CE
_081288B0:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _081288CE
	movs r0, 0x1
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _081288CE
	movs r0, 0x1
	bl sub_8129218
_081288CE:
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_81287B4

	thumb_func_start sub_81288D4
sub_81288D4: @ 81288D4
	push {r4,lr}
	ldr r0, _081288EC @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrh r0, [r0, 0x6]
	cmp r0, 0xA
	bls _081288E2
	b _08128A94
_081288E2:
	lsls r0, 2
	ldr r1, _081288F0 @ =_081288F4
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.align 2, 0
_081288EC: .4byte gUnknown_203B0E0
_081288F0: .4byte _081288F4
	.align 2, 0
_081288F4:
	.4byte _08128920
	.4byte _08128938
	.4byte _08128954
	.4byte _0812899C
	.4byte _08128A44
	.4byte _08128A86
	.4byte _08128A94
	.4byte _08128A94
	.4byte _081289F0
	.4byte _081289B0
	.4byte _081289D4
_08128920:
	movs r0, 0x6
	movs r1, 0
	bl sub_8129C34
	ldr r0, _08128934 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x1
	strh r0, [r1, 0x6]
	b _08128A94
	.align 2, 0
_08128934: .4byte gUnknown_203B0E0
_08128938:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	beq _08128946
	b _08128A94
_08128946:
	ldr r0, _08128950 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x2
	strh r0, [r1, 0x6]
	b _08128A94
	.align 2, 0
_08128950: .4byte gUnknown_203B0E0
_08128954:
	bl sub_812A568
	lsls r0, 24
	asrs r1, r0, 24
	cmp r1, 0
	beq _08128966
	cmp r1, 0
	ble _08128A00
	b _08128A0A
_08128966:
	ldr r4, _0812898C @ =gUnknown_203B0E0
	ldr r1, [r4]
	ldrb r0, [r1, 0x13]
	cmp r0, 0
	bne _08128990
	movs r2, 0xC8
	lsls r2, 1
	adds r0, r1, r2
	bl sub_8129614
	movs r0, 0x7
	movs r1, 0
	bl sub_8129C34
	ldr r1, [r4]
	movs r0, 0x9
	strh r0, [r1, 0x6]
	b _08128A94
	.align 2, 0
_0812898C: .4byte gUnknown_203B0E0
_08128990:
	movs r2, 0xC8
	lsls r2, 1
	adds r0, r1, r2
	bl sub_81295C0
	b _08128A36
_0812899C:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08128A94
	movs r0, 0x1
	bl sub_8129218
	b _08128A94
_081289B0:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08128A94
	movs r0, 0x14
	movs r1, 0
	bl sub_8129C34
	ldr r0, _081289D0 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0xA
	strh r0, [r1, 0x6]
	b _08128A94
	.align 2, 0
_081289D0: .4byte gUnknown_203B0E0
_081289D4:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08128A94
	ldr r0, _081289EC @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x8
	strh r0, [r1, 0x6]
	b _08128A94
	.align 2, 0
_081289EC: .4byte gUnknown_203B0E0
_081289F0:
	bl sub_812A568
	lsls r0, 24
	asrs r1, r0, 24
	cmp r1, 0
	beq _08128A24
	cmp r1, 0
	bgt _08128A0A
_08128A00:
	movs r0, 0x1
	negs r0, r0
	cmp r1, r0
	beq _08128A0E
	b _08128A94
_08128A0A:
	cmp r1, 0x1
	bne _08128A94
_08128A0E:
	movs r0, 0x7
	movs r1, 0
	bl sub_8129C34
	ldr r0, _08128A20 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x3
	strh r0, [r1, 0x6]
	b _08128A94
	.align 2, 0
_08128A20: .4byte gUnknown_203B0E0
_08128A24:
	bl sub_80FA4A8
	ldr r4, _08128A40 @ =gUnknown_203B0E0
	ldr r0, [r4]
	movs r1, 0xC8
	lsls r1, 1
	adds r0, r1
	bl sub_8129614
_08128A36:
	ldr r1, [r4]
	movs r0, 0x4
	strh r0, [r1, 0x6]
	b _08128A94
	.align 2, 0
_08128A40: .4byte gUnknown_203B0E0
_08128A44:
	bl sub_800A4BC
	lsls r0, 24
	cmp r0, 0
	beq _08128A94
	bl sub_80FBA1C
	cmp r0, 0
	bne _08128A94
	ldr r4, _08128A7C @ =gUnknown_203B0E0
	ldr r1, [r4]
	movs r2, 0xC8
	lsls r2, 1
	adds r1, r2
	movs r0, 0
	movs r2, 0x28
	bl SendBlock
	lsls r0, 24
	cmp r0, 0
	beq _08128A94
	ldr r1, [r4]
	ldrb r0, [r1, 0x13]
	cmp r0, 0
	bne _08128A80
	movs r0, 0x6
	strh r0, [r1, 0x6]
	b _08128A94
	.align 2, 0
_08128A7C: .4byte gUnknown_203B0E0
_08128A80:
	movs r0, 0x5
	strh r0, [r1, 0x6]
	b _08128A94
_08128A86:
	ldr r0, _08128A9C @ =gUnknown_3003F64
	ldrb r0, [r0]
	cmp r0, 0
	bne _08128A94
	movs r0, 0x9
	bl sub_8129218
_08128A94:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08128A9C: .4byte gUnknown_3003F64
	thumb_func_end sub_81288D4

	thumb_func_start sub_8128AA0
sub_8128AA0: @ 8128AA0
	push {r4,lr}
	ldr r1, _08128ABC @ =gUnknown_203B0E0
	ldr r0, [r1]
	ldrh r0, [r0, 0x6]
	adds r2, r1, 0
	cmp r0, 0x7
	bls _08128AB0
	b _08128BFC
_08128AB0:
	lsls r0, 2
	ldr r1, _08128AC0 @ =_08128AC4
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.align 2, 0
_08128ABC: .4byte gUnknown_203B0E0
_08128AC0: .4byte _08128AC4
	.align 2, 0
_08128AC4:
	.4byte _08128AE4
	.4byte _08128B08
	.4byte _08128B28
	.4byte _08128B4C
	.4byte _08128B80
	.4byte _08128BA0
	.4byte _08128BC4
	.4byte _08128BE8
_08128AE4:
	ldr r0, _08128B00 @ =sub_81298F8
	bl FuncIsActiveTask
	lsls r0, 24
	cmp r0, 0
	beq _08128AF2
	b _08128BFC
_08128AF2:
	movs r0, 0x7
	movs r1, 0
	bl sub_8129C34
	ldr r0, _08128B04 @ =gUnknown_203B0E0
	ldr r1, [r0]
	b _08128BDA
	.align 2, 0
_08128B00: .4byte sub_81298F8
_08128B04: .4byte gUnknown_203B0E0
_08128B08:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08128BFC
	movs r0, 0x12
	movs r1, 0
	bl sub_8129C34
	ldr r0, _08128B24 @ =gUnknown_203B0E0
	ldr r1, [r0]
	b _08128BDA
	.align 2, 0
_08128B24: .4byte gUnknown_203B0E0
_08128B28:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08128BFC
	ldr r4, _08128B48 @ =gUnknown_203B0E0
	ldr r0, [r4]
	movs r1, 0xC8
	lsls r1, 1
	adds r0, r1
	bl sub_81295EC
	ldr r1, [r4]
	b _08128BDA
	.align 2, 0
_08128B48: .4byte gUnknown_203B0E0
_08128B4C:
	bl sub_800A4BC
	lsls r0, 24
	cmp r0, 0
	beq _08128BFC
	bl sub_80FBA1C
	cmp r0, 0
	bne _08128BFC
	ldr r4, _08128B7C @ =gUnknown_203B0E0
	ldr r1, [r4]
	movs r0, 0xC8
	lsls r0, 1
	adds r1, r0
	movs r0, 0
	movs r2, 0x28
	bl SendBlock
	lsls r0, 24
	cmp r0, 0
	beq _08128BFC
	ldr r1, [r4]
	b _08128BDA
	.align 2, 0
_08128B7C: .4byte gUnknown_203B0E0
_08128B80:
	bl GetBlockReceivedStatus
	movs r1, 0x1
	ands r1, r0
	cmp r1, 0
	beq _08128BFC
	bl sub_80FBA1C
	cmp r0, 0
	bne _08128BFC
	ldr r0, _08128B9C @ =gUnknown_203B0E0
	ldr r1, [r0]
	b _08128BDA
	.align 2, 0
_08128B9C: .4byte gUnknown_203B0E0
_08128BA0:
	bl sub_800A4BC
	lsls r0, 24
	cmp r0, 0
	beq _08128BFC
	bl sub_80FBA1C
	adds r4, r0, 0
	cmp r4, 0
	bne _08128BFC
	bl sub_800AAC0
	ldr r0, _08128BC0 @ =gUnknown_203B0E0
	ldr r1, [r0]
	strh r4, [r1, 0xA]
	b _08128BDA
	.align 2, 0
_08128BC0: .4byte gUnknown_203B0E0
_08128BC4:
	ldr r1, [r2]
	ldrh r0, [r1, 0xA]
	cmp r0, 0x95
	bhi _08128BD0
	adds r0, 0x1
	strh r0, [r1, 0xA]
_08128BD0:
	ldr r0, _08128BE4 @ =gUnknown_3003F64
	ldrb r0, [r0]
	cmp r0, 0
	bne _08128BFC
	ldr r1, [r2]
_08128BDA:
	ldrh r0, [r1, 0x6]
	adds r0, 0x1
	strh r0, [r1, 0x6]
	b _08128BFC
	.align 2, 0
_08128BE4: .4byte gUnknown_3003F64
_08128BE8:
	ldr r1, [r2]
	ldrh r0, [r1, 0xA]
	cmp r0, 0x95
	bls _08128BF8
	movs r0, 0x9
	bl sub_8129218
	b _08128BFC
_08128BF8:
	adds r0, 0x1
	strh r0, [r1, 0xA]
_08128BFC:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_8128AA0

	thumb_func_start sub_8128C04
sub_8128C04: @ 8128C04
	push {r4,r5,lr}
	ldr r5, _08128C1C @ =gUnknown_203B0E0
	ldr r1, [r5]
	ldrh r0, [r1, 0x6]
	cmp r0, 0x1
	beq _08128C44
	cmp r0, 0x1
	bgt _08128C20
	cmp r0, 0
	beq _08128C2A
	b _08128CA2
	.align 2, 0
_08128C1C: .4byte gUnknown_203B0E0
_08128C20:
	cmp r0, 0x2
	beq _08128C6E
	cmp r0, 0x3
	beq _08128C90
	b _08128CA2
_08128C2A:
	ldr r0, _08128C40 @ =sub_81298F8
	bl FuncIsActiveTask
	lsls r0, 24
	cmp r0, 0
	bne _08128CA2
	movs r0, 0x7
	movs r1, 0
	bl sub_8129C34
	b _08128C80
	.align 2, 0
_08128C40: .4byte sub_81298F8
_08128C44:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08128CA2
	bl sub_800A4BC
	lsls r0, 24
	cmp r0, 0
	beq _08128CA2
	bl sub_80FBA1C
	adds r4, r0, 0
	cmp r4, 0
	bne _08128CA2
	bl sub_800AAC0
	ldr r1, [r5]
	strh r4, [r1, 0xA]
	b _08128C82
_08128C6E:
	ldrh r0, [r1, 0xA]
	cmp r0, 0x95
	bhi _08128C78
	adds r0, 0x1
	strh r0, [r1, 0xA]
_08128C78:
	ldr r0, _08128C8C @ =gUnknown_3003F64
	ldrb r0, [r0]
	cmp r0, 0
	bne _08128CA2
_08128C80:
	ldr r1, [r5]
_08128C82:
	ldrh r0, [r1, 0x6]
	adds r0, 0x1
	strh r0, [r1, 0x6]
	b _08128CA2
	.align 2, 0
_08128C8C: .4byte gUnknown_3003F64
_08128C90:
	ldrh r0, [r1, 0xA]
	cmp r0, 0x95
	bls _08128C9E
	movs r0, 0x9
	bl sub_8129218
	b _08128CA2
_08128C9E:
	adds r0, 0x1
	strh r0, [r1, 0xA]
_08128CA2:
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_8128C04

	thumb_func_start sub_8128CA8
sub_8128CA8: @ 8128CA8
	push {r4,lr}
	ldr r1, _08128CC0 @ =gUnknown_203B0E0
	ldr r0, [r1]
	ldrh r0, [r0, 0x6]
	adds r2, r1, 0
	cmp r0, 0x4
	bhi _08128D9C
	lsls r0, 2
	ldr r1, _08128CC4 @ =_08128CC8
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.align 2, 0
_08128CC0: .4byte gUnknown_203B0E0
_08128CC4: .4byte _08128CC8
	.align 2, 0
_08128CC8:
	.4byte _08128CDC
	.4byte _08128D08
	.4byte _08128D30
	.4byte _08128D64
	.4byte _08128D88
_08128CDC:
	ldr r0, _08128D00 @ =sub_81298F8
	bl FuncIsActiveTask
	lsls r0, 24
	cmp r0, 0
	bne _08128D9C
	ldr r4, _08128D04 @ =gUnknown_203B0E0
	ldr r0, [r4]
	ldrb r0, [r0, 0x13]
	cmp r0, 0
	beq _08128CFA
	movs r0, 0x7
	movs r1, 0
	bl sub_8129C34
_08128CFA:
	ldr r1, [r4]
	b _08128D7A
	.align 2, 0
_08128D00: .4byte sub_81298F8
_08128D04: .4byte gUnknown_203B0E0
_08128D08:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08128D9C
	ldr r4, _08128D2C @ =gUnknown_203B0E0
	ldr r0, [r4]
	ldrb r0, [r0, 0x13]
	cmp r0, 0
	beq _08128D26
	movs r0, 0x13
	movs r1, 0
	bl sub_8129C34
_08128D26:
	ldr r1, [r4]
	b _08128D7A
	.align 2, 0
_08128D2C: .4byte gUnknown_203B0E0
_08128D30:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _08128D9C
	bl sub_800A4BC
	lsls r0, 24
	cmp r0, 0
	beq _08128D9C
	bl sub_80FBA1C
	adds r4, r0, 0
	cmp r4, 0
	bne _08128D9C
	bl sub_800AAC0
	ldr r0, _08128D60 @ =gUnknown_203B0E0
	ldr r1, [r0]
	strh r4, [r1, 0xA]
	b _08128D7A
	.align 2, 0
_08128D60: .4byte gUnknown_203B0E0
_08128D64:
	ldr r1, [r2]
	ldrh r0, [r1, 0xA]
	cmp r0, 0x95
	bhi _08128D70
	adds r0, 0x1
	strh r0, [r1, 0xA]
_08128D70:
	ldr r0, _08128D84 @ =gUnknown_3003F64
	ldrb r0, [r0]
	cmp r0, 0
	bne _08128D9C
	ldr r1, [r2]
_08128D7A:
	ldrh r0, [r1, 0x6]
	adds r0, 0x1
	strh r0, [r1, 0x6]
	b _08128D9C
	.align 2, 0
_08128D84: .4byte gUnknown_3003F64
_08128D88:
	ldr r1, [r2]
	ldrh r0, [r1, 0xA]
	cmp r0, 0x95
	bls _08128D98
	movs r0, 0x9
	bl sub_8129218
	b _08128D9C
_08128D98:
	adds r0, 0x1
	strh r0, [r1, 0xA]
_08128D9C:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_8128CA8

	thumb_func_start sub_8128DA4
sub_8128DA4: @ 8128DA4
	push {r4,lr}
	ldr r1, _08128DBC @ =gUnknown_203B0E0
	ldr r0, [r1]
	ldrh r0, [r0, 0x6]
	adds r4, r1, 0
	cmp r0, 0x4
	bhi _08128E70
	lsls r0, 2
	ldr r1, _08128DC0 @ =_08128DC4
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.align 2, 0
_08128DBC: .4byte gUnknown_203B0E0
_08128DC0: .4byte _08128DC4
	.align 2, 0
_08128DC4:
	.4byte _08128DD8
	.4byte _08128E00
	.4byte _08128E34
	.4byte _08128E42
	.4byte _08128E60
_08128DD8:
	ldr r0, _08128DE8 @ =gUnknown_3003F64
	ldrb r0, [r0]
	cmp r0, 0
	bne _08128DEC
	movs r0, 0x1
	bl sub_8129218
	b _08128E70
	.align 2, 0
_08128DE8: .4byte gUnknown_3003F64
_08128DEC:
	ldr r0, [r4]
	movs r1, 0xC8
	lsls r1, 1
	adds r0, r1
	bl sub_8129590
	ldr r1, [r4]
	ldrh r0, [r1, 0x6]
	adds r0, 0x1
	strh r0, [r1, 0x6]
_08128E00:
	bl sub_800A4BC
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _08128E70
	bl sub_80FBA1C
	cmp r0, 0
	bne _08128E70
	ldr r4, _08128E30 @ =gUnknown_203B0E0
	ldr r1, [r4]
	movs r0, 0xC8
	lsls r0, 1
	adds r1, r0
	movs r0, 0
	movs r2, 0x28
	bl SendBlock
	lsls r0, 24
	cmp r0, 0
	beq _08128E70
	ldr r1, [r4]
	b _08128E52
	.align 2, 0
_08128E30: .4byte gUnknown_203B0E0
_08128E34:
	bl sub_8129454
	movs r0, 0x8
	movs r1, 0
	bl sub_8129C34
	b _08128E4E
_08128E42:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08128E70
_08128E4E:
	ldr r0, _08128E5C @ =gUnknown_203B0E0
	ldr r1, [r0]
_08128E52:
	ldrh r0, [r1, 0x6]
	adds r0, 0x1
	strh r0, [r1, 0x6]
	b _08128E70
	.align 2, 0
_08128E5C: .4byte gUnknown_203B0E0
_08128E60:
	bl sub_800A4BC
	lsls r0, 24
	cmp r0, 0
	beq _08128E70
	movs r0, 0x1
	bl sub_8129218
_08128E70:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_8128DA4

	thumb_func_start sub_8128E78
sub_8128E78: @ 8128E78
	push {r4,lr}
	ldr r0, _08128E90 @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrh r0, [r0, 0x6]
	cmp r0, 0x6
	bls _08128E86
	b _08128FA8
_08128E86:
	lsls r0, 2
	ldr r1, _08128E94 @ =_08128E98
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.align 2, 0
_08128E90: .4byte gUnknown_203B0E0
_08128E94: .4byte _08128E98
	.align 2, 0
_08128E98:
	.4byte _08128EB4
	.4byte _08128EE4
	.4byte _08128F38
	.4byte _08128F50
	.4byte _08128F60
	.4byte _08128F74
	.4byte _08128F8C
_08128EB4:
	bl sub_8129408
	cmp r0, 0
	beq _08128ED0
	movs r0, 0x9
	movs r1, 0
	bl sub_8129C34
	ldr r0, _08128ECC @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x2
	b _08128FA6
	.align 2, 0
_08128ECC: .4byte gUnknown_203B0E0
_08128ED0:
	movs r0, 0xD
	movs r1, 0
	bl sub_8129C34
	ldr r0, _08128EE0 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x5
	b _08128FA6
	.align 2, 0
_08128EE0: .4byte gUnknown_203B0E0
_08128EE4:
	ldr r0, _08128F04 @ =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	beq _08128F0C
	bl sub_8129424
	movs r0, 0xB
	movs r1, 0
	bl sub_8129C34
	ldr r0, _08128F08 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x3
	b _08128FA6
	.align 2, 0
_08128F04: .4byte gMain
_08128F08: .4byte gUnknown_203B0E0
_08128F0C:
	movs r4, 0x2
	adds r0, r4, 0
	ands r0, r1
	cmp r0, 0
	beq _08128F1A
	movs r0, 0xA
	b _08128F9A
_08128F1A:
	bl sub_8129228
	cmp r0, 0
	beq _08128FA8
	movs r0, 0x1
	movs r1, 0
	bl sub_8129C34
	ldr r0, _08128F34 @ =gUnknown_203B0E0
	ldr r0, [r0]
	strh r4, [r0, 0x6]
	b _08128FA8
	.align 2, 0
_08128F34: .4byte gUnknown_203B0E0
_08128F38:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08128FA8
	ldr r0, _08128F4C @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x1
	b _08128FA6
	.align 2, 0
_08128F4C: .4byte gUnknown_203B0E0
_08128F50:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08128FA8
	movs r0, 0xA
	b _08128F9A
_08128F60:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08128FA8
	movs r0, 0x1
	bl sub_8129218
	b _08128FA8
_08128F74:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08128FA8
	ldr r0, _08128F88 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x6
	b _08128FA6
	.align 2, 0
_08128F88: .4byte gUnknown_203B0E0
_08128F8C:
	ldr r0, _08128FB0 @ =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0x3
	ands r0, r1
	cmp r0, 0
	beq _08128FA8
	movs r0, 0x7
_08128F9A:
	movs r1, 0
	bl sub_8129C34
	ldr r0, _08128FB4 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x4
_08128FA6:
	strh r0, [r1, 0x6]
_08128FA8:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08128FB0: .4byte gMain
_08128FB4: .4byte gUnknown_203B0E0
	thumb_func_end sub_8128E78

	thumb_func_start sub_8128FB8
sub_8128FB8: @ 8128FB8
	push {r4,lr}
	sub sp, 0x4
	ldr r1, _08128FD4 @ =gUnknown_203B0E0
	ldr r0, [r1]
	ldrh r0, [r0, 0x6]
	adds r4, r1, 0
	cmp r0, 0xD
	bls _08128FCA
	b _08129206
_08128FCA:
	lsls r0, 2
	ldr r1, _08128FD8 @ =_08128FDC
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.align 2, 0
_08128FD4: .4byte gUnknown_203B0E0
_08128FD8: .4byte _08128FDC
	.align 2, 0
_08128FDC:
	.4byte _08129014
	.4byte _0812902E
	.4byte _08129054
	.4byte _08129098
	.4byte _081290BC
	.4byte _081290D8
	.4byte _0812911C
	.4byte _08129144
	.4byte _08129168
	.4byte _08129180
	.4byte _081291A4
	.4byte _081291B2
	.4byte _081291C8
	.4byte _081291E8
_08129014:
	ldr r1, [r4]
	ldrb r0, [r1, 0x18]
	cmp r0, 0
	bne _0812901E
	b _081291C2
_0812901E:
	movs r0, 0x7
	movs r1, 0
	bl sub_8129C34
	ldr r1, [r4]
	movs r0, 0x1
	strh r0, [r1, 0x6]
	b _08129206
_0812902E:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	beq _0812903C
	b _08129206
_0812903C:
	movs r0, 0xE
	movs r1, 0
	bl sub_8129C34
	ldr r0, _08129050 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x2
	strh r0, [r1, 0x6]
	b _08129206
	.align 2, 0
_08129050: .4byte gUnknown_203B0E0
_08129054:
	bl sub_812A568
	lsls r0, 24
	asrs r1, r0, 24
	cmp r1, 0
	beq _08129080
	cmp r1, 0
	bgt _0812906E
	movs r0, 0x1
	negs r0, r0
	cmp r1, r0
	beq _08129074
	b _08129206
_0812906E:
	cmp r1, 0x1
	beq _08129074
	b _08129206
_08129074:
	ldr r0, _0812907C @ =gUnknown_203B0E0
	ldr r1, [r0]
	b _081291C2
	.align 2, 0
_0812907C: .4byte gUnknown_203B0E0
_08129080:
	movs r0, 0x7
	movs r1, 0
	bl sub_8129C34
	ldr r0, _08129094 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x3
	strh r0, [r1, 0x6]
	b _08129206
	.align 2, 0
_08129094: .4byte gUnknown_203B0E0
_08129098:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	beq _081290A6
	b _08129206
_081290A6:
	movs r0, 0xF
	movs r1, 0
	bl sub_8129C34
	ldr r0, _081290B8 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x4
	strh r0, [r1, 0x6]
	b _08129206
	.align 2, 0
_081290B8: .4byte gUnknown_203B0E0
_081290BC:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	beq _081290CA
	b _08129206
_081290CA:
	ldr r0, _081290D4 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x5
	strh r0, [r1, 0x6]
	b _08129206
	.align 2, 0
_081290D4: .4byte gUnknown_203B0E0
_081290D8:
	bl sub_812A568
	lsls r0, 24
	asrs r1, r0, 24
	cmp r1, 0
	beq _08129104
	cmp r1, 0
	bgt _081290F2
	movs r0, 0x1
	negs r0, r0
	cmp r1, r0
	beq _081290F8
	b _08129206
_081290F2:
	cmp r1, 0x1
	beq _081290F8
	b _08129206
_081290F8:
	ldr r0, _08129100 @ =gUnknown_203B0E0
	ldr r1, [r0]
	b _081291C2
	.align 2, 0
_08129100: .4byte gUnknown_203B0E0
_08129104:
	movs r0, 0x7
	movs r1, 0
	bl sub_8129C34
	ldr r0, _08129118 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x6
	strh r0, [r1, 0x6]
	b _08129206
	.align 2, 0
_08129118: .4byte gUnknown_203B0E0
_0812911C:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08129206
	movs r0, 0x10
	movs r1, 0
	bl sub_8129C34
	bl sub_8129470
	ldr r0, _08129140 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x7
	strh r0, [r1, 0x6]
	b _08129206
	.align 2, 0
_08129140: .4byte gUnknown_203B0E0
_08129144:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08129206
	bl sub_804C1C0
	movs r0, 0
	bl TrySavingData
	ldr r0, _08129164 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x8
	strh r0, [r1, 0x6]
	b _08129206
	.align 2, 0
_08129164: .4byte gUnknown_203B0E0
_08129168:
	movs r0, 0x11
	movs r1, 0
	bl sub_8129C34
	ldr r0, _0812917C @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x9
	strh r0, [r1, 0x6]
	b _08129206
	.align 2, 0
_0812917C: .4byte gUnknown_203B0E0
_08129180:
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08129206
	movs r0, 0x30
	bl PlaySE
	bl sav2_gender2_inplace_and_xFE
	ldr r0, _081291A0 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0xA
	strh r0, [r1, 0x6]
	b _08129206
	.align 2, 0
_081291A0: .4byte gUnknown_203B0E0
_081291A4:
	ldr r1, [r4]
	movs r0, 0
	strb r0, [r1, 0x19]
	ldr r1, [r4]
	movs r0, 0xB
	strh r0, [r1, 0x6]
	b _08129206
_081291B2:
	ldr r0, [r4]
	ldrb r1, [r0, 0x19]
	adds r1, 0x1
	strb r1, [r0, 0x19]
	ldr r1, [r4]
	ldrb r0, [r1, 0x19]
	cmp r0, 0x78
	bls _08129206
_081291C2:
	movs r0, 0xC
	strh r0, [r1, 0x6]
	b _08129206
_081291C8:
	movs r1, 0x1
	negs r1, r1
	movs r0, 0
	str r0, [sp]
	adds r0, r1, 0
	movs r2, 0
	movs r3, 0x10
	bl BeginNormalPaletteFade
	ldr r0, _081291E4 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0xD
	strh r0, [r1, 0x6]
	b _08129206
	.align 2, 0
_081291E4: .4byte gUnknown_203B0E0
_081291E8:
	ldr r0, _08129210 @ =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _08129206
	bl sub_812B4B8
	bl sub_8129B88
	bl sub_81284BC
	ldr r0, _08129214 @ =c2_exit_to_overworld_2_switch
	bl SetMainCallback2
_08129206:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08129210: .4byte gPaletteFade
_08129214: .4byte c2_exit_to_overworld_2_switch
	thumb_func_end sub_8128FB8

	thumb_func_start sub_8129218
sub_8129218: @ 8129218
	ldr r1, _08129224 @ =gUnknown_203B0E0
	ldr r1, [r1]
	movs r2, 0
	strh r0, [r1, 0x4]
	strh r2, [r1, 0x6]
	bx lr
	.align 2, 0
_08129224: .4byte gUnknown_203B0E0
	thumb_func_end sub_8129218

	thumb_func_start sub_8129228
sub_8129228: @ 8129228
	push {lr}
	ldr r0, _08129258 @ =gMain
	ldrh r2, [r0, 0x30]
	movs r0, 0x40
	ands r0, r2
	lsls r0, 16
	lsrs r3, r0, 16
	cmp r3, 0
	bne _081292B2
	movs r0, 0x80
	ands r0, r2
	cmp r0, 0
	beq _08129268
	ldr r0, _0812925C @ =gUnknown_203B0E0
	ldr r2, [r0]
	ldr r1, _08129260 @ =gUnknown_845A8A8
	ldrb r0, [r2, 0x10]
	adds r0, r1
	ldrb r1, [r2, 0x12]
	ldrb r0, [r0]
	cmp r1, r0
	bcs _08129264
	adds r0, r1, 0x1
	b _081292CC
	.align 2, 0
_08129258: .4byte gMain
_0812925C: .4byte gUnknown_203B0E0
_08129260: .4byte gUnknown_845A8A8
_08129264:
	strb r3, [r2, 0x12]
	b _081292CE
_08129268:
	ldr r0, _0812928C @ =gUnknown_203B0E0
	ldr r1, [r0]
	ldrb r0, [r1, 0x10]
	cmp r0, 0x3
	beq _081292AE
	movs r0, 0x20
	ands r0, r2
	lsls r0, 16
	lsrs r3, r0, 16
	cmp r3, 0
	beq _08129296
	ldrb r0, [r1, 0x11]
	cmp r0, 0
	beq _08129290
	subs r0, 0x1
	strb r0, [r1, 0x11]
	b _081292CE
	.align 2, 0
_0812928C: .4byte gUnknown_203B0E0
_08129290:
	movs r0, 0x4
	strb r0, [r1, 0x11]
	b _081292CE
_08129296:
	movs r0, 0x10
	ands r0, r2
	cmp r0, 0
	beq _081292AE
	ldrb r0, [r1, 0x11]
	cmp r0, 0x3
	bhi _081292AA
	adds r0, 0x1
	strb r0, [r1, 0x11]
	b _081292CE
_081292AA:
	strb r3, [r1, 0x11]
	b _081292CE
_081292AE:
	movs r0, 0
	b _081292D0
_081292B2:
	ldr r0, _081292C0 @ =gUnknown_203B0E0
	ldr r2, [r0]
	ldrb r0, [r2, 0x12]
	cmp r0, 0
	beq _081292C4
	subs r0, 0x1
	b _081292CC
	.align 2, 0
_081292C0: .4byte gUnknown_203B0E0
_081292C4:
	ldr r0, _081292D4 @ =gUnknown_845A8A8
	ldrb r1, [r2, 0x10]
	adds r1, r0
	ldrb r0, [r1]
_081292CC:
	strb r0, [r2, 0x12]
_081292CE:
	movs r0, 0x1
_081292D0:
	pop {r1}
	bx r1
	.align 2, 0
_081292D4: .4byte gUnknown_845A8A8
	thumb_func_end sub_8129228

	thumb_func_start sub_81292D8
sub_81292D8: @ 81292D8
	push {r4-r6,lr}
	sub sp, 0x18
	ldr r0, _08129318 @ =gUnknown_203B0E0
	ldr r5, [r0]
	ldrb r0, [r5, 0x10]
	cmp r0, 0x3
	beq _08129320
	ldr r3, _0812931C @ =gUnknown_845A9AC
	ldrb r1, [r5, 0x12]
	lsls r1, 2
	adds r2, r0, 0
	lsls r0, r2, 2
	adds r0, r2
	lsls r0, 3
	adds r1, r0
	adds r1, r3
	ldr r4, [r1]
	ldrb r0, [r5, 0x11]
	cmp r0, 0
	beq _08129312
	adds r1, r0, 0
_08129302:
	ldrb r0, [r4]
	cmp r0, 0xF9
	bne _0812930A
	adds r4, 0x1
_0812930A:
	adds r4, 0x1
	subs r1, 0x1
	cmp r1, 0
	bne _08129302
_08129312:
	movs r5, 0x1
	b _08129346
	.align 2, 0
_08129318: .4byte gUnknown_203B0E0
_0812931C: .4byte gUnknown_845A9AC
_08129320:
	ldrb r0, [r5, 0x12]
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 2
	adds r1, r0
	adds r1, 0xB9
	adds r1, r5, r1
	mov r0, sp
	bl StringCopy
	movs r1, 0
	strb r1, [r0]
	movs r1, 0xFF
	strb r1, [r0, 0x1]
	mov r4, sp
	mov r0, sp
	bl StringLength_Multibyte
	adds r5, r0, 0
_08129346:
	ldr r6, _081293A8 @ =gUnknown_203B0E0
	ldr r1, [r6]
	ldrb r0, [r1, 0x15]
	strb r0, [r1, 0x14]
	cmp r4, 0
	beq _0812939E
	bl sub_81294C8
	adds r2, r0, 0
	subs r5, 0x1
	movs r0, 0x1
	negs r0, r0
	cmp r5, r0
	beq _0812939A
	ldr r0, [r6]
	ldrb r0, [r0, 0x15]
	cmp r0, 0xE
	bhi _0812939A
	adds r3, r6, 0
_0812936C:
	ldrb r0, [r4]
	cmp r0, 0xF9
	bne _08129378
	strb r0, [r2]
	adds r4, 0x1
	adds r2, 0x1
_08129378:
	ldrb r0, [r4]
	strb r0, [r2]
	adds r4, 0x1
	adds r2, 0x1
	ldr r1, [r3]
	ldrb r0, [r1, 0x15]
	adds r0, 0x1
	strb r0, [r1, 0x15]
	subs r5, 0x1
	movs r0, 0x1
	negs r0, r0
	cmp r5, r0
	beq _0812939A
	ldr r0, [r3]
	ldrb r0, [r0, 0x15]
	cmp r0, 0xE
	bls _0812936C
_0812939A:
	movs r0, 0xFF
	strb r0, [r2]
_0812939E:
	add sp, 0x18
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_081293A8: .4byte gUnknown_203B0E0
	thumb_func_end sub_81292D8

	thumb_func_start sub_81293AC
sub_81293AC: @ 81293AC
	push {r4,lr}
	ldr r4, _081293D4 @ =gUnknown_203B0E0
	ldr r1, [r4]
	ldrb r0, [r1, 0x15]
	strb r0, [r1, 0x14]
	ldr r0, [r4]
	ldrb r0, [r0, 0x15]
	cmp r0, 0
	beq _081293CE
	bl sub_81294EC
	movs r1, 0xFF
	strb r1, [r0]
	ldr r1, [r4]
	ldrb r0, [r1, 0x15]
	subs r0, 0x1
	strb r0, [r1, 0x15]
_081293CE:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_081293D4: .4byte gUnknown_203B0E0
	thumb_func_end sub_81293AC

	thumb_func_start sub_81293D8
sub_81293D8: @ 81293D8
	push {lr}
	ldr r0, _08129400 @ =gUnknown_203B0E0
	ldr r1, [r0]
	ldrb r0, [r1, 0x15]
	subs r0, 0x1
	strb r0, [r1, 0x14]
	bl sub_81294EC
	adds r2, r0, 0
	ldrb r0, [r2]
	cmp r0, 0xF9
	beq _081293FC
	ldr r1, _08129404 @ =gUnknown_845A8AC
	adds r0, r1
	ldrb r0, [r0]
	cmp r0, 0
	beq _081293FC
	strb r0, [r2]
_081293FC:
	pop {r0}
	bx r0
	.align 2, 0
_08129400: .4byte gUnknown_203B0E0
_08129404: .4byte gUnknown_845A8AC
	thumb_func_end sub_81293D8

	thumb_func_start sub_8129408
sub_8129408: @ 8129408
	push {lr}
	ldr r0, _08129418 @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrb r0, [r0, 0x15]
	cmp r0, 0
	bne _0812941C
	movs r0, 0
	b _0812941E
	.align 2, 0
_08129418: .4byte gUnknown_203B0E0
_0812941C:
	movs r0, 0x1
_0812941E:
	pop {r1}
	bx r1
	thumb_func_end sub_8129408

	thumb_func_start sub_8129424
sub_8129424: @ 8129424
	push {r4,lr}
	bl sub_8129758
	adds r1, r0, 0
	ldr r4, _08129450 @ =gUnknown_203B0E0
	ldr r0, [r4]
	ldrb r3, [r0, 0x12]
	lsls r2, r3, 2
	adds r2, r3
	lsls r2, 2
	adds r2, r3
	adds r2, 0xB9
	adds r0, r2
	bl StringCopy
	ldr r1, [r4]
	movs r0, 0x1
	strb r0, [r1, 0x18]
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08129450: .4byte gUnknown_203B0E0
	thumb_func_end sub_8129424

	thumb_func_start sub_8129454
sub_8129454: @ 8129454
	ldr r1, _0812946C @ =gUnknown_203B0E0
	ldr r2, [r1]
	movs r0, 0xFF
	strb r0, [r2, 0x1A]
	ldr r2, [r1]
	movs r3, 0
	movs r0, 0xF
	strb r0, [r2, 0x14]
	ldr r0, [r1]
	strb r3, [r0, 0x15]
	bx lr
	.align 2, 0
_0812946C: .4byte gUnknown_203B0E0
	thumb_func_end sub_8129454

	thumb_func_start sub_8129470
sub_8129470: @ 8129470
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	ldr r0, _081294A4 @ =gSaveBlock1Ptr
	mov r8, r0
	ldr r7, _081294A8 @ =gUnknown_203B0E0
	movs r6, 0xB9
	ldr r5, _081294AC @ =0x00003ad4
	movs r4, 0x9
_08129482:
	mov r1, r8
	ldr r0, [r1]
	adds r0, r5
	ldr r1, [r7]
	adds r1, r6
	bl StringCopy
	adds r6, 0x15
	adds r5, 0x15
	subs r4, 0x1
	cmp r4, 0
	bge _08129482
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_081294A4: .4byte gSaveBlock1Ptr
_081294A8: .4byte gUnknown_203B0E0
_081294AC: .4byte 0x00003ad4
	thumb_func_end sub_8129470

	thumb_func_start sub_81294B0
sub_81294B0: @ 81294B0
	ldr r2, _081294C4 @ =gUnknown_203B0E0
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 2
	adds r1, r0
	adds r1, 0xB9
	ldr r0, [r2]
	adds r0, r1
	bx lr
	.align 2, 0
_081294C4: .4byte gUnknown_203B0E0
	thumb_func_end sub_81294B0

	thumb_func_start sub_81294C8
sub_81294C8: @ 81294C8
	push {lr}
	ldr r0, _081294E8 @ =gUnknown_203B0E0
	ldr r0, [r0]
	adds r1, r0, 0
	adds r1, 0x1A
	ldrb r0, [r0, 0x1A]
	cmp r0, 0xFF
	beq _081294E0
_081294D8:
	adds r1, 0x1
	ldrb r0, [r1]
	cmp r0, 0xFF
	bne _081294D8
_081294E0:
	adds r0, r1, 0
	pop {r1}
	bx r1
	.align 2, 0
_081294E8: .4byte gUnknown_203B0E0
	thumb_func_end sub_81294C8

	thumb_func_start sub_81294EC
sub_81294EC: @ 81294EC
	push {lr}
	ldr r0, _08129518 @ =gUnknown_203B0E0
	ldr r0, [r0]
	adds r2, r0, 0
	adds r2, 0x1A
	adds r1, r2, 0
	ldrb r0, [r0, 0x1A]
	cmp r0, 0xFF
	beq _08129510
_081294FE:
	adds r2, r1, 0
	ldrb r0, [r2]
	cmp r0, 0xF9
	bne _08129508
	adds r1, r2, 0x1
_08129508:
	adds r1, 0x1
	ldrb r0, [r1]
	cmp r0, 0xFF
	bne _081294FE
_08129510:
	adds r0, r2, 0
	pop {r1}
	bx r1
	.align 2, 0
_08129518: .4byte gUnknown_203B0E0
	thumb_func_end sub_81294EC

	thumb_func_start sub_812951C
sub_812951C: @ 812951C
	push {r4,lr}
	ldr r4, _0812955C @ =gUnknown_203B0E0
	ldr r0, [r4]
	adds r0, 0x1A
	bl StringLength_Multibyte
	adds r2, r0, 0
	ldr r0, [r4]
	adds r1, r0, 0
	adds r1, 0x1A
	movs r4, 0
	cmp r2, 0xA
	bls _08129550
	subs r2, 0xA
	movs r3, 0
	cmp r4, r2
	bcs _08129550
_0812953E:
	ldrb r0, [r1]
	cmp r0, 0xF9
	bne _08129546
	adds r1, 0x1
_08129546:
	adds r1, 0x1
	adds r4, 0x1
	adds r3, 0x1
	cmp r3, r2
	bcc _0812953E
_08129550:
	lsls r0, r4, 16
	lsrs r0, 16
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0812955C: .4byte gUnknown_203B0E0
	thumb_func_end sub_812951C

	thumb_func_start sub_8129560
sub_8129560: @ 8129560
	movs r1, 0
	strb r1, [r0]
	bx lr
	thumb_func_end sub_8129560

	thumb_func_start sub_8129568
sub_8129568: @ 8129568
	push {r4,lr}
	adds r4, r0, 0
	movs r0, 0x2
	strb r0, [r4]
	adds r0, r4, 0x1
	ldr r1, _08129588 @ =gSaveBlock2Ptr
	ldr r1, [r1]
	bl StringCopy
	ldr r0, _0812958C @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrb r0, [r0, 0x13]
	strb r0, [r4, 0x9]
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08129588: .4byte gSaveBlock2Ptr
_0812958C: .4byte gUnknown_203B0E0
	thumb_func_end sub_8129568

	thumb_func_start sub_8129590
sub_8129590: @ 8129590
	push {r4,lr}
	adds r4, r0, 0
	movs r0, 0x1
	strb r0, [r4]
	adds r0, r4, 0x1
	ldr r1, _081295B8 @ =gSaveBlock2Ptr
	ldr r1, [r1]
	bl StringCopy
	adds r4, 0x9
	ldr r0, _081295BC @ =gUnknown_203B0E0
	ldr r1, [r0]
	adds r1, 0x1A
	adds r0, r4, 0
	bl StringCopy
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_081295B8: .4byte gSaveBlock2Ptr
_081295BC: .4byte gUnknown_203B0E0
	thumb_func_end sub_8129590

	thumb_func_start sub_81295C0
sub_81295C0: @ 81295C0
	push {r4,lr}
	adds r4, r0, 0
	movs r0, 0x3
	strb r0, [r4]
	adds r0, r4, 0x1
	ldr r1, _081295E4 @ =gSaveBlock2Ptr
	ldr r1, [r1]
	bl StringCopy
	ldr r0, _081295E8 @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrb r0, [r0, 0x13]
	strb r0, [r4, 0x9]
	bl sub_80FB9D0
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_081295E4: .4byte gSaveBlock2Ptr
_081295E8: .4byte gUnknown_203B0E0
	thumb_func_end sub_81295C0

	thumb_func_start sub_81295EC
sub_81295EC: @ 81295EC
	push {r4,lr}
	adds r4, r0, 0
	movs r0, 0x4
	strb r0, [r4]
	adds r0, r4, 0x1
	ldr r1, _0812960C @ =gSaveBlock2Ptr
	ldr r1, [r1]
	bl StringCopy
	ldr r0, _08129610 @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrb r0, [r0, 0x13]
	strb r0, [r4, 0x9]
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0812960C: .4byte gSaveBlock2Ptr
_08129610: .4byte gUnknown_203B0E0
	thumb_func_end sub_81295EC

	thumb_func_start sub_8129614
sub_8129614: @ 8129614
	push {r4,lr}
	adds r4, r0, 0
	movs r0, 0x5
	strb r0, [r4]
	adds r0, r4, 0x1
	ldr r1, _08129634 @ =gSaveBlock2Ptr
	ldr r1, [r1]
	bl StringCopy
	ldr r0, _08129638 @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrb r0, [r0, 0x13]
	strb r0, [r4, 0x9]
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08129634: .4byte gSaveBlock2Ptr
_08129638: .4byte gUnknown_203B0E0
	thumb_func_end sub_8129614

	thumb_func_start sub_812963C
sub_812963C: @ 812963C
	push {r4-r6,lr}
	adds r6, r0, 0
	adds r5, r1, 0
	ldrb r0, [r5]
	adds r1, r0, 0
	adds r4, r5, 0x1
	adds r5, r4, 0
	adds r5, 0x8
	cmp r0, 0x2
	beq _08129664
	cmp r0, 0x2
	bgt _0812965A
	cmp r0, 0x1
	beq _08129688
	b _081296EC
_0812965A:
	cmp r1, 0x3
	beq _081296BE
	cmp r1, 0x5
	beq _081296B2
	b _081296EC
_08129664:
	ldr r0, _08129680 @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrb r0, [r0, 0x13]
	ldrb r1, [r4, 0x8]
	cmp r0, r1
	beq _081296EC
	bl UnkTextUtil_Reset
	movs r0, 0
	adds r1, r4, 0
	bl UnkTextUtil_SetPtrI
	ldr r1, _08129684 @ =gUnknown_841B3AA
	b _081296D8
	.align 2, 0
_08129680: .4byte gUnknown_203B0E0
_08129684: .4byte gUnknown_841B3AA
_08129688:
	adds r0, r6, 0
	adds r1, r4, 0
	bl StringCopy
	movs r1, 0xFC
	strb r1, [r0]
	adds r0, 0x1
	movs r1, 0x13
	strb r1, [r0]
	adds r0, 0x1
	movs r1, 0x2A
	strb r1, [r0]
	adds r0, 0x1
	movs r1, 0xF0
	strb r1, [r0]
	adds r0, 0x1
	adds r1, r5, 0
	bl StringCopy
	movs r0, 0x1
	b _081296EE
_081296B2:
	ldr r0, _081296E4 @ =gUnknown_203B0E0
	ldr r0, [r0]
	adds r0, 0x79
	adds r1, r4, 0
	bl StringCopy
_081296BE:
	ldr r0, _081296E4 @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrb r0, [r0, 0x13]
	ldrb r5, [r5]
	cmp r0, r5
	beq _081296EC
	bl UnkTextUtil_Reset
	movs r0, 0
	adds r1, r4, 0
	bl UnkTextUtil_SetPtrI
	ldr r1, _081296E8 @ =gUnknown_841B3BE
_081296D8:
	adds r0, r6, 0
	bl UnkTextUtil_StringExpandPlaceholders
	movs r0, 0x1
	b _081296EE
	.align 2, 0
_081296E4: .4byte gUnknown_203B0E0
_081296E8: .4byte gUnknown_841B3BE
_081296EC:
	movs r0, 0
_081296EE:
	pop {r4-r6}
	pop {r1}
	bx r1
	thumb_func_end sub_812963C

	thumb_func_start sub_81296F4
sub_81296F4: @ 81296F4
	ldr r0, _081296FC @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrb r0, [r0, 0x10]
	bx lr
	.align 2, 0
_081296FC: .4byte gUnknown_203B0E0
	thumb_func_end sub_81296F4

	thumb_func_start sub_8129700
sub_8129700: @ 8129700
	ldr r2, _08129710 @ =gUnknown_203B0E0
	ldr r3, [r2]
	ldrb r2, [r3, 0x11]
	strb r2, [r0]
	ldrb r0, [r3, 0x12]
	strb r0, [r1]
	bx lr
	.align 2, 0
_08129710: .4byte gUnknown_203B0E0
	thumb_func_end sub_8129700

	thumb_func_start sub_8129714
sub_8129714: @ 8129714
	ldr r0, _0812971C @ =gUnknown_203B0E0
	ldr r0, [r0]
	adds r0, 0x1A
	bx lr
	.align 2, 0
_0812971C: .4byte gUnknown_203B0E0
	thumb_func_end sub_8129714

	thumb_func_start sub_8129720
sub_8129720: @ 8129720
	push {lr}
	bl sub_8129714
	bl StringLength_Multibyte
	pop {r1}
	bx r1
	thumb_func_end sub_8129720

	thumb_func_start sub_8129730
sub_8129730: @ 8129730
	push {r4,lr}
	adds r4, r0, 0
	ldr r0, _08129748 @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrb r3, [r0, 0x15]
	ldrb r2, [r0, 0x14]
	subs r0, r3, r2
	cmp r0, 0
	bge _0812974C
	negs r0, r0
	str r3, [r4]
	b _0812974E
	.align 2, 0
_08129748: .4byte gUnknown_203B0E0
_0812974C:
	str r2, [r4]
_0812974E:
	str r0, [r1]
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_8129730

	thumb_func_start sub_8129758
sub_8129758: @ 8129758
	push {lr}
	bl sub_812951C
	lsls r0, 16
	lsrs r2, r0, 16
	ldr r0, _08129784 @ =gUnknown_203B0E0
	ldr r0, [r0]
	adds r1, r0, 0
	adds r1, 0x1A
	cmp r2, 0
	beq _0812977E
_0812976E:
	ldrb r0, [r1]
	cmp r0, 0xF9
	bne _08129776
	adds r1, 0x1
_08129776:
	adds r1, 0x1
	subs r2, 0x1
	cmp r2, 0
	bne _0812976E
_0812977E:
	adds r0, r1, 0
	pop {r1}
	bx r1
	.align 2, 0
_08129784: .4byte gUnknown_203B0E0
	thumb_func_end sub_8129758

	thumb_func_start sub_8129788
sub_8129788: @ 8129788
	push {r4,lr}
	bl sub_812951C
	lsls r0, 16
	lsrs r4, r0, 16
	ldr r0, _081297C0 @ =gUnknown_203B0E0
	ldr r0, [r0]
	adds r1, r0, 0
	adds r1, 0x1A
	movs r2, 0
	movs r3, 0
	cmp r2, r4
	bcs _081297B8
_081297A2:
	ldrb r0, [r1]
	cmp r0, 0xF9
	bne _081297AA
	adds r1, 0x1
_081297AA:
	adds r1, 0x1
	adds r0, r2, 0x1
	lsls r0, 16
	lsrs r2, r0, 16
	adds r3, 0x1
	cmp r3, r4
	bcc _081297A2
_081297B8:
	adds r0, r2, 0
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_081297C0: .4byte gUnknown_203B0E0
	thumb_func_end sub_8129788

	thumb_func_start sub_81297C4
sub_81297C4: @ 81297C4
	ldr r0, _081297CC @ =gUnknown_203B0E0
	ldr r0, [r0]
	adds r0, 0x39
	bx lr
	.align 2, 0
_081297CC: .4byte gUnknown_203B0E0
	thumb_func_end sub_81297C4

	thumb_func_start sub_81297D0
sub_81297D0: @ 81297D0
	ldr r0, _081297D8 @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrb r0, [r0, 0x16]
	bx lr
	.align 2, 0
_081297D8: .4byte gUnknown_203B0E0
	thumb_func_end sub_81297D0

	thumb_func_start sub_81297DC
sub_81297DC: @ 81297DC
	ldr r0, _081297E4 @ =gUnknown_203B0E0
	ldr r0, [r0]
	ldrb r0, [r0, 0x15]
	bx lr
	.align 2, 0
_081297E4: .4byte gUnknown_203B0E0
	thumb_func_end sub_81297DC

	thumb_func_start sub_81297E8
sub_81297E8: @ 81297E8
	push {lr}
	bl sub_81294EC
	ldrb r1, [r0]
	cmp r1, 0xFF
	bhi _08129802
	ldr r0, _08129808 @ =gUnknown_845A8AC
	adds r0, r1, r0
	ldrb r0, [r0]
	cmp r0, r1
	beq _08129802
	cmp r0, 0
	bne _0812980C
_08129802:
	movs r0, 0x3
	b _0812980E
	.align 2, 0
_08129808: .4byte gUnknown_845A8AC
_0812980C:
	movs r0, 0
_0812980E:
	pop {r1}
	bx r1
	thumb_func_end sub_81297E8

	thumb_func_start sub_8129814
sub_8129814: @ 8129814
	ldr r0, _0812981C @ =gUnknown_203B0E0
	ldr r0, [r0]
	adds r0, 0x79
	bx lr
	.align 2, 0
_0812981C: .4byte gUnknown_203B0E0
	thumb_func_end sub_8129814

	thumb_func_start copy_strings_to_sav1
copy_strings_to_sav1: @ 8129820
	push {r4,lr}
	ldr r4, _081298A4 @ =gSaveBlock1Ptr
	ldr r0, [r4]
	ldr r1, _081298A8 @ =0x00003ad4
	adds r0, r1
	ldr r1, _081298AC @ =gUnknown_841B510
	bl StringCopy
	ldr r0, [r4]
	ldr r1, _081298B0 @ =0x00003ae9
	adds r0, r1
	ldr r1, _081298B4 @ =gUnknown_841B516
	bl StringCopy
	ldr r0, [r4]
	ldr r1, _081298B8 @ =0x00003afe
	adds r0, r1
	ldr r1, _081298BC @ =gUnknown_841B51E
	bl StringCopy
	ldr r0, [r4]
	ldr r1, _081298C0 @ =0x00003b13
	adds r0, r1
	ldr r1, _081298C4 @ =gUnknown_841B524
	bl StringCopy
	ldr r0, [r4]
	ldr r1, _081298C8 @ =0x00003b28
	adds r0, r1
	ldr r1, _081298CC @ =gUnknown_841B52B
	bl StringCopy
	ldr r0, [r4]
	ldr r1, _081298D0 @ =0x00003b3d
	adds r0, r1
	ldr r1, _081298D4 @ =gUnknown_841B531
	bl StringCopy
	ldr r0, [r4]
	ldr r1, _081298D8 @ =0x00003b52
	adds r0, r1
	ldr r1, _081298DC @ =gUnknown_841B535
	bl StringCopy
	ldr r0, [r4]
	ldr r1, _081298E0 @ =0x00003b67
	adds r0, r1
	ldr r1, _081298E4 @ =gUnknown_841B53B
	bl StringCopy
	ldr r0, [r4]
	ldr r1, _081298E8 @ =0x00003b7c
	adds r0, r1
	ldr r1, _081298EC @ =gUnknown_841B541
	bl StringCopy
	ldr r0, [r4]
	ldr r1, _081298F0 @ =0x00003b91
	adds r0, r1
	ldr r1, _081298F4 @ =gUnknown_841B54B
	bl StringCopy
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_081298A4: .4byte gSaveBlock1Ptr
_081298A8: .4byte 0x00003ad4
_081298AC: .4byte gUnknown_841B510
_081298B0: .4byte 0x00003ae9
_081298B4: .4byte gUnknown_841B516
_081298B8: .4byte 0x00003afe
_081298BC: .4byte gUnknown_841B51E
_081298C0: .4byte 0x00003b13
_081298C4: .4byte gUnknown_841B524
_081298C8: .4byte 0x00003b28
_081298CC: .4byte gUnknown_841B52B
_081298D0: .4byte 0x00003b3d
_081298D4: .4byte gUnknown_841B531
_081298D8: .4byte 0x00003b52
_081298DC: .4byte gUnknown_841B535
_081298E0: .4byte 0x00003b67
_081298E4: .4byte gUnknown_841B53B
_081298E8: .4byte 0x00003b7c
_081298EC: .4byte gUnknown_841B541
_081298F0: .4byte 0x00003b91
_081298F4: .4byte gUnknown_841B54B
	thumb_func_end copy_strings_to_sav1

	thumb_func_start sub_81298F8
sub_81298F8: @ 81298F8
	push {r4-r6,lr}
	lsls r0, 24
	lsrs r5, r0, 24
	lsls r0, r5, 2
	adds r0, r5
	lsls r0, 3
	ldr r1, _0812991C @ =gTasks+0x8
	adds r4, r0, r1
	movs r1, 0
	ldrsh r0, [r4, r1]
	cmp r0, 0x7
	bls _08129912
	b _08129B08
_08129912:
	lsls r0, 2
	ldr r1, _08129920 @ =_08129924
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.align 2, 0
_0812991C: .4byte gTasks+0x8
_08129920: .4byte _08129924
	.align 2, 0
_08129924:
	.4byte _08129944
	.4byte _08129952
	.4byte _08129AEC
	.4byte _081299A0
	.4byte _08129A8C
	.4byte _08129AC4
	.4byte _08129AD8
	.4byte _08129A7C
_08129944:
	ldr r0, _08129978 @ =gUnknown_3003F64
	ldrb r0, [r0]
	cmp r0, 0
	bne _0812994E
	b _08129AE0
_0812994E:
	movs r0, 0x1
	strh r0, [r4]
_08129952:
	bl GetLinkPlayerCount
	lsls r0, 24
	lsrs r0, 24
	adds r2, r0, 0
	strh r0, [r4, 0x8]
	ldr r3, _0812997C @ =gUnknown_203B0E0
	ldr r0, [r3]
	ldrb r1, [r0, 0xD]
	movs r5, 0x8
	ldrsh r0, [r4, r5]
	cmp r1, r0
	beq _08129980
	movs r0, 0x2
	strh r0, [r4]
	ldr r0, [r3]
	strb r2, [r0, 0xD]
	b _08129B08
	.align 2, 0
_08129978: .4byte gUnknown_3003F64
_0812997C: .4byte gUnknown_203B0E0
_08129980:
	bl GetBlockReceivedStatus
	lsls r0, 24
	lsrs r0, 24
	strh r0, [r4, 0x6]
	cmp r0, 0
	bne _08129998
	bl sub_80FBA1C
	cmp r0, 0
	beq _08129998
	b _08129B08
_08129998:
	movs r0, 0
	strh r0, [r4, 0x2]
	movs r0, 0x3
	strh r0, [r4]
_081299A0:
	movs r1, 0x2
	ldrsh r0, [r4, r1]
	cmp r0, 0x4
	bgt _081299DA
	movs r2, 0x6
	ldrsh r0, [r4, r2]
	movs r3, 0x2
	ldrsh r1, [r4, r3]
	asrs r0, r1
	movs r1, 0x1
	ands r0, r1
	cmp r0, 0
	bne _081299DA
	movs r2, 0x1
_081299BC:
	ldrh r0, [r4, 0x2]
	adds r0, 0x1
	strh r0, [r4, 0x2]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x4
	bgt _081299DA
	movs r5, 0x6
	ldrsh r0, [r4, r5]
	movs r3, 0x2
	ldrsh r1, [r4, r3]
	asrs r0, r1
	ands r0, r2
	cmp r0, 0
	beq _081299BC
_081299DA:
	ldrh r1, [r4, 0x2]
	movs r5, 0x2
	ldrsh r0, [r4, r5]
	cmp r0, 0x5
	bne _081299E6
	b _08129B04
_081299E6:
	strh r1, [r4, 0x4]
	lsls r0, r1, 24
	lsrs r0, 24
	bl ResetBlockReceivedFlag
	movs r1, 0x2
	ldrsh r0, [r4, r1]
	lsls r0, 8
	ldr r1, _08129A0C @ =gUnknown_2022118
	adds r0, r1
	ldrb r0, [r0]
	subs r0, 0x1
	cmp r0, 0x4
	bhi _08129A28
	lsls r0, 2
	ldr r1, _08129A10 @ =_08129A14
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.align 2, 0
_08129A0C: .4byte gUnknown_2022118
_08129A10: .4byte _08129A14
	.align 2, 0
_08129A14:
	.4byte _08129A28
	.4byte _08129A2C
	.4byte _08129A30
	.4byte _08129A34
	.4byte _08129A38
_08129A28:
	movs r0, 0x3
	b _08129A3A
_08129A2C:
	movs r0, 0x3
	b _08129A3A
_08129A30:
	movs r0, 0x4
	b _08129A3A
_08129A34:
	movs r0, 0x5
	b _08129A3A
_08129A38:
	movs r0, 0x6
_08129A3A:
	strh r0, [r4, 0xA]
	ldr r5, _08129A68 @ =gUnknown_203B0E0
	ldr r0, [r5]
	adds r0, 0x39
	movs r2, 0x2
	ldrsh r1, [r4, r2]
	lsls r1, 8
	ldr r2, _08129A6C @ =gUnknown_2022118
	adds r1, r2
	bl sub_812963C
	cmp r0, 0
	beq _08129A70
	ldr r0, [r5]
	ldrh r1, [r4, 0x2]
	strb r1, [r0, 0x16]
	movs r0, 0xC
	movs r1, 0x2
	bl sub_8129C34
	movs r0, 0x7
	b _08129A72
	.align 2, 0
_08129A68: .4byte gUnknown_203B0E0
_08129A6C: .4byte gUnknown_2022118
_08129A70:
	ldrh r0, [r4, 0xA]
_08129A72:
	strh r0, [r4]
	ldrh r0, [r4, 0x2]
	adds r0, 0x1
	strh r0, [r4, 0x2]
	b _08129B08
_08129A7C:
	movs r0, 0x2
	bl sub_8129C8C
	lsls r0, 24
	cmp r0, 0
	bne _08129B08
	ldrh r0, [r4, 0xA]
	b _08129B06
_08129A8C:
	ldr r6, _08129AB4 @ =gUnknown_203B0E0
	ldr r0, [r6]
	ldrb r0, [r0, 0x13]
	cmp r0, 0
	bne _08129AC0
	movs r3, 0x4
	ldrsh r0, [r4, r3]
	cmp r0, 0
	beq _08129AC0
	bl GetLinkPlayerCount
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x2
	bne _08129AB8
	bl sub_80FA4A8
	ldr r1, [r6]
	movs r0, 0x1
	b _08129ADE
	.align 2, 0
_08129AB4: .4byte gUnknown_203B0E0
_08129AB8:
	movs r5, 0x4
	ldrsh r0, [r4, r5]
	bl sub_80FBD6C
_08129AC0:
	movs r0, 0x3
	b _08129B06
_08129AC4:
	ldr r0, _08129AD4 @ =gUnknown_203B0E0
	ldr r1, [r0]
	ldrb r0, [r1, 0x13]
	cmp r0, 0
	beq _08129AE0
	movs r0, 0x2
	b _08129ADE
	.align 2, 0
_08129AD4: .4byte gUnknown_203B0E0
_08129AD8:
	ldr r0, _08129AE8 @ =gUnknown_203B0E0
	ldr r1, [r0]
	movs r0, 0x3
_08129ADE:
	strb r0, [r1, 0x17]
_08129AE0:
	adds r0, r5, 0
	bl DestroyTask
	b _08129B08
	.align 2, 0
_08129AE8: .4byte gUnknown_203B0E0
_08129AEC:
	bl sub_80FBA1C
	cmp r0, 0
	bne _08129B08
	ldr r0, _08129B10 @ =gUnknown_203B0E0
	ldr r1, [r0]
	ldrb r0, [r1, 0x13]
	cmp r0, 0
	bne _08129B04
	ldrb r0, [r1, 0xD]
	bl sub_80FB030
_08129B04:
	movs r0, 0x1
_08129B06:
	strh r0, [r4]
_08129B08:
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_08129B10: .4byte gUnknown_203B0E0
	thumb_func_end sub_81298F8

	thumb_func_start sub_8129B14
sub_8129B14: @ 8129B14
	push {r4,lr}
	ldr r4, _08129B60 @ =gUnknown_203B0E4
	ldr r0, _08129B64 @ =0x00002168
	bl Alloc
	str r0, [r4]
	cmp r0, 0
	beq _08129B70
	bl sub_812AE70
	cmp r0, 0
	beq _08129B70
	movs r0, 0
	bl ResetBgsAndClearDma3BusyFlags
	ldr r1, _08129B68 @ =gUnknown_845AA84
	movs r0, 0
	movs r2, 0x4
	bl InitBgsFromTemplates
	ldr r0, _08129B6C @ =gUnknown_845AA94
	bl InitWindows
	bl reset_temp_tile_data_buffers
	bl sub_812AD50
	ldr r0, [r4]
	bl sub_8129BB8
	bl sub_8129BC4
	movs r0, 0
	movs r1, 0
	bl sub_8129C34
	movs r0, 0x1
	b _08129B72
	.align 2, 0
_08129B60: .4byte gUnknown_203B0E4
_08129B64: .4byte 0x00002168
_08129B68: .4byte gUnknown_845AA84
_08129B6C: .4byte gUnknown_845AA94
_08129B70:
	movs r0, 0
_08129B72:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8129B14

	thumb_func_start sub_8129B78
sub_8129B78: @ 8129B78
	push {lr}
	movs r0, 0
	bl sub_8129C8C
	lsls r0, 24
	lsrs r0, 24
	pop {r1}
	bx r1
	thumb_func_end sub_8129B78

	thumb_func_start sub_8129B88
sub_8129B88: @ 8129B88
	push {r4,lr}
	bl sub_812AEB0
	ldr r4, _08129BB0 @ =gUnknown_203B0E4
	ldr r0, [r4]
	cmp r0, 0
	beq _08129B9E
	bl Free
	movs r0, 0
	str r0, [r4]
_08129B9E:
	bl FreeAllWindowBuffers
	ldr r1, _08129BB4 @ =gUnknown_2039600
	movs r0, 0x3
	strb r0, [r1, 0x15]
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08129BB0: .4byte gUnknown_203B0E4
_08129BB4: .4byte gUnknown_2039600
	thumb_func_end sub_8129B88

	thumb_func_start sub_8129BB8
sub_8129BB8: @ 8129BB8
	movs r2, 0
	movs r1, 0xFF
	strh r1, [r0, 0x18]
	strh r1, [r0, 0x1E]
	strh r2, [r0, 0x1A]
	bx lr
	thumb_func_end sub_8129BB8

	thumb_func_start sub_8129BC4
sub_8129BC4: @ 8129BC4
	push {r4,r5,lr}
	ldr r1, _08129BF4 @ =gUnknown_203B0E4
	ldr r0, [r1]
	cmp r0, 0
	beq _08129BEC
	movs r2, 0
	adds r4, r1, 0
	ldr r5, _08129BF8 @ =sub_812A420
	movs r3, 0
_08129BD6:
	ldr r0, [r4]
	lsls r1, r2, 3
	adds r0, r1
	str r5, [r0]
	strb r3, [r0, 0x4]
	ldr r0, [r4]
	adds r0, r1
	strb r3, [r0, 0x5]
	adds r2, 0x1
	cmp r2, 0x2
	ble _08129BD6
_08129BEC:
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_08129BF4: .4byte gUnknown_203B0E4
_08129BF8: .4byte sub_812A420
	thumb_func_end sub_8129BC4

	thumb_func_start sub_8129BFC
sub_8129BFC: @ 8129BFC
	push {r4-r6,lr}
	ldr r1, _08129C30 @ =gUnknown_203B0E4
	ldr r0, [r1]
	cmp r0, 0
	beq _08129C2A
	movs r5, 0
	adds r6, r1, 0
_08129C0A:
	ldr r0, [r6]
	lsls r4, r5, 3
	adds r1, r0, r4
	ldrb r0, [r1, 0x4]
	cmp r0, 0
	beq _08129C24
	adds r0, r1, 0x5
	ldr r1, [r1]
	bl _call_via_r1
	ldr r1, [r6]
	adds r1, r4
	strb r0, [r1, 0x4]
_08129C24:
	adds r5, 0x1
	cmp r5, 0x2
	ble _08129C0A
_08129C2A:
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_08129C30: .4byte gUnknown_203B0E4
	thumb_func_end sub_8129BFC

	thumb_func_start sub_8129C34
sub_8129C34: @ 8129C34
	push {r4-r7,lr}
	lsls r0, 16
	lsrs r6, r0, 16
	lsls r1, 24
	ldr r3, _08129C70 @ =gUnknown_203B0E4
	ldr r0, [r3]
	lsrs r1, 21
	adds r0, r1
	ldr r2, _08129C74 @ =sub_812A420
	str r2, [r0]
	movs r4, 0
	adds r5, r3, 0
	adds r3, r1, 0
	mov r12, r4
	ldr r1, _08129C78 @ =gUnknown_845AABC
	movs r7, 0x1
	adds r2, r1, 0x4
_08129C56:
	ldrh r0, [r1]
	cmp r0, r6
	bne _08129C7C
	ldr r1, [r5]
	adds r1, r3
	ldr r0, [r2]
	str r0, [r1]
	strb r7, [r1, 0x4]
	ldr r0, [r5]
	adds r0, r3
	mov r1, r12
	strb r1, [r0, 0x5]
	b _08129C86
	.align 2, 0
_08129C70: .4byte gUnknown_203B0E4
_08129C74: .4byte sub_812A420
_08129C78: .4byte gUnknown_845AABC
_08129C7C:
	adds r1, 0x8
	adds r2, 0x8
	adds r4, 0x1
	cmp r4, 0x14
	bls _08129C56
_08129C86:
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_8129C34

	thumb_func_start sub_8129C8C
sub_8129C8C: @ 8129C8C
	lsls r0, 24
	ldr r1, _08129C9C @ =gUnknown_203B0E4
	ldr r1, [r1]
	lsrs r0, 21
	adds r1, r0
	ldrb r0, [r1, 0x4]
	bx lr
	.align 2, 0
_08129C9C: .4byte gUnknown_203B0E4
	thumb_func_end sub_8129C8C

	thumb_func_start sub_8129CA0
sub_8129CA0: @ 8129CA0
	push {r4,lr}
	adds r4, r0, 0
	bl free_temp_tile_data_buffers_if_possible
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _08129D36
	ldrb r0, [r4]
	cmp r0, 0x6
	bhi _08129D2C
	lsls r0, 2
	ldr r1, _08129CC0 @ =_08129CC4
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.align 2, 0
_08129CC0: .4byte _08129CC4
	.align 2, 0
_08129CC4:
	.4byte _08129CE0
	.4byte _08129CEA
	.4byte _08129CF0
	.4byte _08129CF6
	.4byte _08129CFC
	.4byte _08129D02
	.4byte _08129D14
_08129CE0:
	bl sub_812AAD4
	bl sub_812AB8C
	b _08129D30
_08129CEA:
	bl sub_812ABD8
	b _08129D30
_08129CF0:
	bl sub_812AC08
	b _08129D30
_08129CF6:
	bl sub_812AC58
	b _08129D30
_08129CFC:
	bl sub_812AC9C
	b _08129D30
_08129D02:
	bl sub_812ACC0
	bl sub_812ACEC
	bl sub_812AD20
	bl sub_812AD04
	b _08129D30
_08129D14:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	cmp r0, 0
	bne _08129D30
	bl sub_812AEC8
	bl sub_812B048
	bl sub_812B100
	b _08129D30
_08129D2C:
	movs r0, 0
	b _08129D38
_08129D30:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
_08129D36:
	movs r0, 0x1
_08129D38:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8129CA0

	thumb_func_start sub_8129D40
sub_8129D40: @ 8129D40
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _08129D50
	cmp r0, 0x1
	beq _08129D5E
	b _08129D68
_08129D50:
	bl sub_812AA10
	movs r0, 0x3
	movs r1, 0x3
	bl CopyWindowToVram
	b _08129D68
_08129D5E:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	lsrs r0, 24
	b _08129D70
_08129D68:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	movs r0, 0x1
_08129D70:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8129D40

	thumb_func_start sub_8129D78
sub_8129D78: @ 8129D78
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _08129D88
	cmp r0, 0x1
	beq _08129D96
	b _08129DA0
_08129D88:
	bl sub_812AA64
	movs r0, 0x3
	movs r1, 0x3
	bl CopyWindowToVram
	b _08129DA0
_08129D96:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	lsrs r0, 24
	b _08129DA8
_08129DA0:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	movs r0, 0x1
_08129DA8:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8129D78

	thumb_func_start sub_8129DB0
sub_8129DB0: @ 8129DB0
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0x1
	beq _08129DE6
	cmp r0, 0x1
	bgt _08129DC4
	cmp r0, 0
	beq _08129DCA
	b _08129E0C
_08129DC4:
	cmp r0, 0x2
	beq _08129DF2
	b _08129E0C
_08129DCA:
	movs r0, 0x1
	bl sub_812AEFC
	bl sub_812A980
	cmp r0, 0
	bne _08129E12
	bl sub_812A804
	movs r0, 0x2
	movs r1, 0x2
	bl CopyWindowToVram
	b _08129E0C
_08129DE6:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	cmp r0, 0
	beq _08129E0C
	b _08129E12
_08129DF2:
	bl sub_812A9C8
	cmp r0, 0
	bne _08129E12
	bl sub_812AF1C
	movs r0, 0
	bl sub_812AEFC
	bl sub_812B160
	movs r0, 0
	b _08129E14
_08129E0C:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
_08129E12:
	movs r0, 0x1
_08129E14:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8129DB0

	thumb_func_start sub_8129E1C
sub_8129E1C: @ 8129E1C
	push {lr}
	bl sub_812AF1C
	movs r0, 0
	pop {r1}
	bx r1
	thumb_func_end sub_8129E1C

	thumb_func_start sub_8129E28
sub_8129E28: @ 8129E28
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _08129E38
	cmp r0, 0x1
	beq _08129E5C
	b _08129E66
_08129E38:
	movs r0, 0
	movs r1, 0
	bl sub_812A578
	movs r0, 0x17
	movs r1, 0xB
	movs r2, 0x1
	bl sub_812A424
	ldr r0, _08129E58 @ =gUnknown_203B0E4
	ldr r0, [r0]
	ldrb r0, [r0, 0x1E]
	movs r1, 0x3
	bl CopyWindowToVram
	b _08129E66
	.align 2, 0
_08129E58: .4byte gUnknown_203B0E4
_08129E5C:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	lsrs r0, 24
	b _08129E6E
_08129E66:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	movs r0, 0x1
_08129E6E:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8129E28

	thumb_func_start sub_8129E74
sub_8129E74: @ 8129E74
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _08129E84
	cmp r0, 0x1
	beq _08129E94
	b _08129EAA
_08129E84:
	bl sub_812A6F4
	bl sub_812A51C
	movs r0, 0
	bl CopyBgTilemapBufferToVram
	b _08129EAA
_08129E94:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	cmp r0, 0
	bne _08129EB0
	bl sub_812A728
	bl sub_812A544
	movs r0, 0
	b _08129EB2
_08129EAA:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
_08129EB0:
	movs r0, 0x1
_08129EB2:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8129E74

	thumb_func_start sub_8129EB8
sub_8129EB8: @ 8129EB8
	push {r4,lr}
	sub sp, 0xC
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _08129ECA
	cmp r0, 0x1
	beq _08129F02
	b _08129F14
_08129ECA:
	add r1, sp, 0x8
	add r0, sp, 0x4
	bl sub_8129730
	ldr r0, [sp, 0x4]
	lsls r0, 16
	lsrs r0, 16
	ldr r1, [sp, 0x8]
	lsls r1, 16
	lsrs r1, 16
	movs r2, 0
	bl sub_812A74C
	bl sub_8129714
	adds r1, r0, 0
	movs r0, 0x2
	str r0, [sp]
	movs r0, 0
	movs r2, 0x3
	movs r3, 0x1
	bl sub_812A778
	movs r0, 0x1
	movs r1, 0x2
	bl CopyWindowToVram
	b _08129F14
_08129F02:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	cmp r0, 0
	bne _08129F1A
	bl sub_812B160
	movs r0, 0
	b _08129F1C
_08129F14:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
_08129F1A:
	movs r0, 0x1
_08129F1C:
	add sp, 0xC
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8129EB8

	thumb_func_start sub_8129F24
sub_8129F24: @ 8129F24
	push {r4-r6,lr}
	sub sp, 0x4
	adds r6, r0, 0
	ldrb r0, [r6]
	cmp r0, 0x1
	beq _08129F80
	cmp r0, 0x1
	bgt _08129F3A
	cmp r0, 0
	beq _08129F44
	b _08129FBA
_08129F3A:
	cmp r0, 0x2
	beq _08129FA4
	cmp r0, 0x3
	beq _08129FB6
	b _08129FBA
_08129F44:
	bl sub_8129788
	adds r4, r0, 0
	lsls r4, 16
	lsrs r4, 16
	bl sub_8129758
	adds r5, r0, 0
	bl StringLength_Multibyte
	adds r1, r0, 0
	lsls r1, 16
	lsrs r1, 16
	adds r0, r4, 0
	movs r2, 0x66
	bl sub_812A74C
	movs r0, 0x5
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0
	movs r3, 0x4
	bl sub_812A778
	movs r0, 0x1
	movs r1, 0x2
	bl CopyWindowToVram
	b _08129FBA
_08129F80:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	cmp r0, 0
	bne _08129FC0
	movs r0, 0x1
	movs r1, 0x10
	bl sub_812A578
	ldr r0, _08129FA0 @ =gUnknown_203B0E4
	ldr r0, [r0]
	ldrb r0, [r0, 0x1E]
	movs r1, 0x3
	bl CopyWindowToVram
	b _08129FBA
	.align 2, 0
_08129FA0: .4byte gUnknown_203B0E4
_08129FA4:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	cmp r0, 0
	bne _08129FC0
	movs r0, 0x1
	bl sub_812AF8C
	b _08129FBA
_08129FB6:
	movs r0, 0
	b _08129FC2
_08129FBA:
	ldrb r0, [r6]
	adds r0, 0x1
	strb r0, [r6]
_08129FC0:
	movs r0, 0x1
_08129FC2:
	add sp, 0x4
	pop {r4-r6}
	pop {r1}
	bx r1
	thumb_func_end sub_8129F24

	thumb_func_start sub_8129FCC
sub_8129FCC: @ 8129FCC
	push {r4-r6,lr}
	sub sp, 0x4
	adds r6, r0, 0
	ldrb r0, [r6]
	cmp r0, 0x1
	beq _0812A028
	cmp r0, 0x1
	bgt _08129FE2
	cmp r0, 0
	beq _08129FEC
	b _0812A062
_08129FE2:
	cmp r0, 0x2
	beq _0812A048
	cmp r0, 0x3
	beq _0812A05E
	b _0812A062
_08129FEC:
	bl sub_8129788
	adds r4, r0, 0
	lsls r4, 16
	lsrs r4, 16
	bl sub_8129758
	adds r5, r0, 0
	bl StringLength_Multibyte
	adds r1, r0, 0
	lsls r1, 16
	lsrs r1, 16
	adds r0, r4, 0
	movs r2, 0
	bl sub_812A74C
	movs r0, 0x2
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x3
	movs r3, 0x1
	bl sub_812A778
	movs r0, 0x1
	movs r1, 0x2
	bl CopyWindowToVram
	b _0812A062
_0812A028:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	cmp r0, 0
	bne _0812A068
	bl sub_812A6F4
	ldr r0, _0812A044 @ =gUnknown_203B0E4
	ldr r0, [r0]
	ldrb r0, [r0, 0x1E]
	movs r1, 0x3
	bl CopyWindowToVram
	b _0812A062
	.align 2, 0
_0812A044: .4byte gUnknown_203B0E4
_0812A048:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	cmp r0, 0
	bne _0812A068
	movs r0, 0
	bl sub_812AF8C
	bl sub_812A728
	b _0812A062
_0812A05E:
	movs r0, 0
	b _0812A06A
_0812A062:
	ldrb r0, [r6]
	adds r0, 0x1
	strb r0, [r6]
_0812A068:
	movs r0, 0x1
_0812A06A:
	add sp, 0x4
	pop {r4-r6}
	pop {r1}
	bx r1
	thumb_func_end sub_8129FCC

	thumb_func_start sub_812A074
sub_812A074: @ 812A074
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _0812A084
	cmp r0, 0x1
	beq _0812A098
	b _0812A0A6
_0812A084:
	bl sub_812A804
	movs r0, 0x2
	movs r1, 0x2
	bl CopyWindowToVram
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	b _0812A0A6
_0812A098:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	cmp r0, 0
	bne _0812A0A6
	movs r0, 0
	b _0812A0A8
_0812A0A6:
	movs r0, 0x1
_0812A0A8:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812A074

	thumb_func_start sub_812A0B0
sub_812A0B0: @ 812A0B0
	push {r4-r6,lr}
	adds r6, r0, 0
	ldrb r0, [r6]
	cmp r0, 0x4
	bhi _0812A182
	lsls r0, 2
	ldr r1, _0812A0C4 @ =_0812A0C8
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.align 2, 0
_0812A0C4: .4byte _0812A0C8
	.align 2, 0
_0812A0C8:
	.4byte _0812A0DC
	.4byte _0812A108
	.4byte _0812A138
	.4byte _0812A15C
	.4byte _0812A126
_0812A0DC:
	ldr r0, _0812A104 @ =gUnknown_203B0E4
	ldr r0, [r0]
	ldrh r5, [r0, 0x1A]
	bl sub_81297C4
	adds r4, r0, 0
	bl sub_81297D0
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_812AA78
	movs r0, 0
	movs r1, 0x2
	bl CopyWindowToVram
	b _0812A17C
	.align 2, 0
_0812A104: .4byte gUnknown_203B0E4
_0812A108:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	lsrs r2, r0, 24
	cmp r2, 0
	bne _0812A182
	ldr r0, _0812A12C @ =gUnknown_203B0E4
	ldr r1, [r0]
	ldrh r0, [r1, 0x1A]
	cmp r0, 0x8
	bhi _0812A130
	adds r0, 0x1
	strh r0, [r1, 0x1A]
	movs r0, 0x4
	strb r0, [r6]
_0812A126:
	movs r0, 0
	b _0812A184
	.align 2, 0
_0812A12C: .4byte gUnknown_203B0E4
_0812A130:
	strh r2, [r1, 0x1C]
	ldrb r0, [r6]
	adds r0, 0x1
	strb r0, [r6]
_0812A138:
	movs r0, 0
	movs r1, 0
	movs r2, 0x5
	movs r3, 0x11
	bl ScrollWindow
	movs r0, 0
	movs r1, 0x2
	bl CopyWindowToVram
	ldr r0, _0812A178 @ =gUnknown_203B0E4
	ldr r1, [r0]
	ldrh r0, [r1, 0x1C]
	adds r0, 0x1
	strh r0, [r1, 0x1C]
	ldrb r0, [r6]
	adds r0, 0x1
	strb r0, [r6]
_0812A15C:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	cmp r0, 0
	bne _0812A182
	ldr r0, _0812A178 @ =gUnknown_203B0E4
	ldr r0, [r0]
	ldrh r0, [r0, 0x1C]
	cmp r0, 0x2
	bhi _0812A17C
	ldrb r0, [r6]
	subs r0, 0x1
	b _0812A180
	.align 2, 0
_0812A178: .4byte gUnknown_203B0E4
_0812A17C:
	ldrb r0, [r6]
	adds r0, 0x1
_0812A180:
	strb r0, [r6]
_0812A182:
	movs r0, 0x1
_0812A184:
	pop {r4-r6}
	pop {r1}
	bx r1
	thumb_func_end sub_812A0B0

	thumb_func_start sub_812A18C
sub_812A18C: @ 812A18C
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _0812A19C
	cmp r0, 0x1
	beq _0812A1A8
	b _0812A1AE
_0812A19C:
	bl sub_812AFC0
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	b _0812A1AE
_0812A1A8:
	bl sub_812AFFC
	b _0812A1B0
_0812A1AE:
	movs r0, 0x1
_0812A1B0:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812A18C

	thumb_func_start sub_812A1B8
sub_812A1B8: @ 812A1B8
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _0812A1C8
	cmp r0, 0x1
	beq _0812A1E8
	b _0812A1F2
_0812A1C8:
	movs r0, 0x3
	movs r1, 0x10
	bl sub_812A578
	ldr r0, _0812A1E4 @ =gUnknown_203B0E4
	ldr r0, [r0]
	ldrb r0, [r0, 0x1E]
	movs r1, 0x3
	bl CopyWindowToVram
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	b _0812A1F2
	.align 2, 0
_0812A1E4: .4byte gUnknown_203B0E4
_0812A1E8:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	lsrs r0, 24
	b _0812A1F4
_0812A1F2:
	movs r0, 0x1
_0812A1F4:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812A1B8

	thumb_func_start sub_812A1FC
sub_812A1FC: @ 812A1FC
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _0812A20C
	cmp r0, 0x1
	beq _0812A22C
	b _0812A236
_0812A20C:
	movs r0, 0x4
	movs r1, 0
	bl sub_812A578
	ldr r0, _0812A228 @ =gUnknown_203B0E4
	ldr r0, [r0]
	ldrb r0, [r0, 0x1E]
	movs r1, 0x3
	bl CopyWindowToVram
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	b _0812A236
	.align 2, 0
_0812A228: .4byte gUnknown_203B0E4
_0812A22C:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	lsrs r0, 24
	b _0812A238
_0812A236:
	movs r0, 0x1
_0812A238:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812A1FC

	thumb_func_start sub_812A240
sub_812A240: @ 812A240
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _0812A250
	cmp r0, 0x1
	beq _0812A280
	b _0812A28A
_0812A250:
	bl UnkTextUtil_Reset
	bl sub_8129814
	adds r1, r0, 0
	movs r0, 0
	bl UnkTextUtil_SetPtrI
	movs r0, 0x5
	movs r1, 0
	bl sub_812A578
	ldr r0, _0812A27C @ =gUnknown_203B0E4
	ldr r0, [r0]
	ldrb r0, [r0, 0x1E]
	movs r1, 0x3
	bl CopyWindowToVram
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	b _0812A28A
	.align 2, 0
_0812A27C: .4byte gUnknown_203B0E4
_0812A280:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	lsrs r0, 24
	b _0812A28C
_0812A28A:
	movs r0, 0x1
_0812A28C:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812A240

	thumb_func_start sub_812A294
sub_812A294: @ 812A294
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _0812A2A4
	cmp r0, 0x1
	beq _0812A2D0
	b _0812A2DA
_0812A2A4:
	movs r0, 0x6
	movs r1, 0
	bl sub_812A578
	movs r0, 0x17
	movs r1, 0xA
	movs r2, 0x1
	bl sub_812A424
	ldr r0, _0812A2CC @ =gUnknown_203B0E4
	ldr r0, [r0]
	ldrb r0, [r0, 0x1E]
	movs r1, 0x3
	bl CopyWindowToVram
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	b _0812A2DA
	.align 2, 0
_0812A2CC: .4byte gUnknown_203B0E4
_0812A2D0:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	lsrs r0, 24
	b _0812A2DC
_0812A2DA:
	movs r0, 0x1
_0812A2DC:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812A294

	thumb_func_start sub_812A2E4
sub_812A2E4: @ 812A2E4
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _0812A2F4
	cmp r0, 0x1
	beq _0812A320
	b _0812A32A
_0812A2F4:
	movs r0, 0x7
	movs r1, 0
	bl sub_812A578
	movs r0, 0x17
	movs r1, 0xA
	movs r2, 0x1
	bl sub_812A424
	ldr r0, _0812A31C @ =gUnknown_203B0E4
	ldr r0, [r0]
	ldrb r0, [r0, 0x1E]
	movs r1, 0x3
	bl CopyWindowToVram
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	b _0812A32A
	.align 2, 0
_0812A31C: .4byte gUnknown_203B0E4
_0812A320:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	lsrs r0, 24
	b _0812A32C
_0812A32A:
	movs r0, 0x1
_0812A32C:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812A2E4

	thumb_func_start sub_812A334
sub_812A334: @ 812A334
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _0812A344
	cmp r0, 0x1
	beq _0812A364
	b _0812A36E
_0812A344:
	movs r0, 0x8
	movs r1, 0
	bl sub_812A578
	ldr r0, _0812A360 @ =gUnknown_203B0E4
	ldr r0, [r0]
	ldrb r0, [r0, 0x1E]
	movs r1, 0x3
	bl CopyWindowToVram
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	b _0812A36E
	.align 2, 0
_0812A360: .4byte gUnknown_203B0E4
_0812A364:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	lsrs r0, 24
	b _0812A370
_0812A36E:
	movs r0, 0x1
_0812A370:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812A334

	thumb_func_start sub_812A378
sub_812A378: @ 812A378
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _0812A388
	cmp r0, 0x1
	beq _0812A3BC
	b _0812A3C6
_0812A388:
	bl UnkTextUtil_Reset
	ldr r0, _0812A3B4 @ =gSaveBlock2Ptr
	ldr r1, [r0]
	movs r0, 0
	bl UnkTextUtil_SetPtrI
	movs r0, 0x9
	movs r1, 0
	bl sub_812A578
	ldr r0, _0812A3B8 @ =gUnknown_203B0E4
	ldr r0, [r0]
	ldrb r0, [r0, 0x1E]
	movs r1, 0x3
	bl CopyWindowToVram
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	b _0812A3C6
	.align 2, 0
_0812A3B4: .4byte gSaveBlock2Ptr
_0812A3B8: .4byte gUnknown_203B0E4
_0812A3BC:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	lsrs r0, 24
	b _0812A3C8
_0812A3C6:
	movs r0, 0x1
_0812A3C8:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812A378

	thumb_func_start sub_812A3D0
sub_812A3D0: @ 812A3D0
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _0812A3E0
	cmp r0, 0x1
	beq _0812A40C
	b _0812A416
_0812A3E0:
	movs r0, 0xA
	movs r1, 0
	bl sub_812A578
	movs r0, 0x17
	movs r1, 0xA
	movs r2, 0x1
	bl sub_812A424
	ldr r0, _0812A408 @ =gUnknown_203B0E4
	ldr r0, [r0]
	ldrb r0, [r0, 0x1E]
	movs r1, 0x3
	bl CopyWindowToVram
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	b _0812A416
	.align 2, 0
_0812A408: .4byte gUnknown_203B0E4
_0812A40C:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	lsrs r0, 24
	b _0812A418
_0812A416:
	movs r0, 0x1
_0812A418:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812A3D0

	thumb_func_start sub_812A420
sub_812A420: @ 812A420
	movs r0, 0
	bx lr
	thumb_func_end sub_812A420

	thumb_func_start sub_812A424
sub_812A424: @ 812A424
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x14
	lsls r0, 24
	lsls r1, 24
	lsls r2, 24
	lsrs r2, 24
	mov r8, r2
	ldr r4, _0812A4FC @ =0xffffff00
	ldr r2, [sp, 0xC]
	ands r2, r4
	lsrs r0, 16
	ldr r3, _0812A500 @ =0xffff00ff
	ands r2, r3
	orrs r2, r0
	lsrs r1, 8
	ldr r0, _0812A504 @ =0xff00ffff
	ands r2, r0
	orrs r2, r1
	ldr r0, _0812A508 @ =0x00ffffff
	ands r2, r0
	movs r0, 0xC0
	lsls r0, 19
	orrs r2, r0
	str r2, [sp, 0xC]
	ldr r0, [sp, 0x10]
	ands r0, r4
	movs r1, 0x4
	orrs r0, r1
	ands r0, r3
	movs r1, 0xE0
	lsls r1, 4
	orrs r0, r1
	ldr r1, _0812A50C @ =0x0000ffff
	ands r0, r1
	movs r1, 0xA4
	lsls r1, 15
	orrs r0, r1
	str r0, [sp, 0x10]
	add r0, sp, 0xC
	bl AddWindow
	adds r1, r0, 0
	ldr r6, _0812A510 @ =gUnknown_203B0E4
	ldr r0, [r6]
	movs r7, 0
	strh r1, [r0, 0x18]
	lsls r0, r1, 16
	lsrs r0, 16
	cmp r0, 0xFF
	beq _0812A4F0
	lsls r0, r1, 24
	lsrs r0, 24
	movs r1, 0x11
	bl FillWindowPixelBuffer
	ldr r0, [r6]
	ldrb r0, [r0, 0x18]
	bl PutWindowTilemap
	ldr r0, [r6]
	ldrb r0, [r0, 0x18]
	ldr r2, _0812A514 @ =gUnknown_8417938
	movs r5, 0x2
	str r5, [sp]
	movs r4, 0xFF
	str r4, [sp, 0x4]
	str r7, [sp, 0x8]
	movs r1, 0x2
	movs r3, 0x8
	bl AddTextPrinterParameterized
	ldr r0, [r6]
	ldrb r0, [r0, 0x18]
	ldr r2, _0812A518 @ =gUnknown_841793C
	movs r1, 0x10
	str r1, [sp]
	str r4, [sp, 0x4]
	str r7, [sp, 0x8]
	movs r1, 0x2
	movs r3, 0x8
	bl AddTextPrinterParameterized
	ldr r0, [r6]
	ldrb r0, [r0, 0x18]
	movs r1, 0x1
	movs r2, 0xD
	bl sub_8150048
	ldr r0, [r6]
	ldrb r0, [r0, 0x18]
	movs r1, 0xE
	str r1, [sp]
	str r5, [sp, 0x4]
	mov r1, r8
	str r1, [sp, 0x8]
	movs r1, 0x2
	movs r2, 0
	movs r3, 0x2
	bl sub_810F7D8
_0812A4F0:
	add sp, 0x14
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_0812A4FC: .4byte 0xffffff00
_0812A500: .4byte 0xffff00ff
_0812A504: .4byte 0xff00ffff
_0812A508: .4byte 0x00ffffff
_0812A50C: .4byte 0x0000ffff
_0812A510: .4byte gUnknown_203B0E4
_0812A514: .4byte gUnknown_8417938
_0812A518: .4byte gUnknown_841793C
	thumb_func_end sub_812A424

	thumb_func_start sub_812A51C
sub_812A51C: @ 812A51C
	push {r4,lr}
	ldr r4, _0812A540 @ =gUnknown_203B0E4
	ldr r0, [r4]
	ldrh r0, [r0, 0x18]
	cmp r0, 0xFF
	beq _0812A53A
	lsls r0, 24
	lsrs r0, 24
	movs r1, 0
	bl sub_810F4D8
	ldr r0, [r4]
	ldrb r0, [r0, 0x18]
	bl ClearWindowTilemap
_0812A53A:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0812A540: .4byte gUnknown_203B0E4
	thumb_func_end sub_812A51C

	thumb_func_start sub_812A544
sub_812A544: @ 812A544
	push {r4,lr}
	ldr r4, _0812A564 @ =gUnknown_203B0E4
	ldr r0, [r4]
	ldrh r0, [r0, 0x18]
	cmp r0, 0xFF
	beq _0812A55E
	lsls r0, 24
	lsrs r0, 24
	bl RemoveWindow
	ldr r1, [r4]
	movs r0, 0xFF
	strh r0, [r1, 0x18]
_0812A55E:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0812A564: .4byte gUnknown_203B0E4
	thumb_func_end sub_812A544

	thumb_func_start sub_812A568
sub_812A568: @ 812A568
	push {lr}
	bl ProcessMenuInput
	lsls r0, 24
	asrs r0, 24
	pop {r1}
	bx r1
	thumb_func_end sub_812A568

	thumb_func_start sub_812A578
sub_812A578: @ 812A578
	push {r4-r7,lr}
	mov r7, r9
	mov r6, r8
	push {r6,r7}
	sub sp, 0x1C
	adds r7, r0, 0
	lsls r1, 16
	lsrs r1, 16
	mov r9, r1
	ldr r1, _0812A624 @ =0xffffff00
	ldr r3, [sp, 0x14]
	ands r3, r1
	ldr r2, _0812A628 @ =0xffff00ff
	ands r3, r2
	movs r0, 0x80
	lsls r0, 4
	orrs r3, r0
	ldr r0, _0812A62C @ =0xff00ffff
	ands r3, r0
	movs r0, 0x80
	lsls r0, 13
	orrs r3, r0
	ldr r5, _0812A630 @ =0x00ffffff
	ands r3, r5
	movs r0, 0xA8
	lsls r0, 21
	orrs r3, r0
	str r3, [sp, 0x14]
	ldr r0, [sp, 0x18]
	ands r0, r1
	movs r1, 0x4
	orrs r0, r1
	ands r0, r2
	movs r1, 0xE0
	lsls r1, 4
	orrs r0, r1
	ldr r1, _0812A634 @ =0x0000ffff
	ands r0, r1
	movs r1, 0xD4
	lsls r1, 15
	orrs r0, r1
	str r0, [sp, 0x18]
	ldr r1, _0812A638 @ =gUnknown_845AB64
	lsls r0, r7, 1
	adds r0, r7
	lsls r0, 2
	adds r4, r0, r1
	ldrb r0, [r4, 0xA]
	cmp r0, 0
	beq _0812A5F8
	lsls r0, r3, 16
	movs r1, 0xF9
	lsls r1, 24
	adds r0, r1
	lsrs r0, 16
	ands r2, r3
	orrs r2, r0
	lsrs r1, r2, 24
	adds r1, 0x7
	lsls r1, 24
	adds r0, r5, 0
	ands r0, r2
	orrs r0, r1
	str r0, [sp, 0x14]
_0812A5F8:
	add r0, sp, 0x14
	bl AddWindow
	ldr r5, _0812A63C @ =gUnknown_203B0E4
	ldr r1, [r5]
	strh r0, [r1, 0x1E]
	ldrh r0, [r1, 0x1E]
	mov r8, r0
	cmp r0, 0xFF
	beq _0812A6E2
	ldrb r0, [r4, 0x9]
	cmp r0, 0
	beq _0812A640
	adds r0, r1, 0
	adds r0, 0x22
	ldr r1, [r4]
	bl UnkTextUtil_StringExpandPlaceholders
	ldr r0, [r5]
	adds r6, r0, 0
	adds r6, 0x22
	b _0812A642
	.align 2, 0
_0812A624: .4byte 0xffffff00
_0812A628: .4byte 0xffff00ff
_0812A62C: .4byte 0xff00ffff
_0812A630: .4byte 0x00ffffff
_0812A634: .4byte 0x0000ffff
_0812A638: .4byte gUnknown_845AB64
_0812A63C: .4byte gUnknown_203B0E4
_0812A640:
	ldr r6, [r4]
_0812A642:
	mov r0, r9
	lsls r1, r0, 8
	movs r0, 0
	movs r2, 0
	bl ChangeBgY
	mov r1, r8
	lsls r0, r1, 24
	lsrs r5, r0, 24
	adds r0, r5, 0
	movs r1, 0x11
	bl FillWindowPixelBuffer
	adds r0, r5, 0
	bl PutWindowTilemap
	ldr r1, _0812A6AC @ =gUnknown_845AB64
	lsls r0, r7, 1
	adds r0, r7
	lsls r0, 2
	adds r4, r0, r1
	ldrb r0, [r4, 0x4]
	cmp r0, 0x1
	bne _0812A6B0
	adds r0, r5, 0
	movs r1, 0xA
	movs r2, 0x2
	bl sub_81501D0
	ldrb r3, [r4, 0x5]
	adds r3, 0x8
	lsls r3, 24
	lsrs r3, 24
	ldrb r0, [r4, 0x6]
	adds r0, 0x8
	lsls r0, 24
	lsrs r0, 24
	str r0, [sp]
	movs r0, 0xFF
	str r0, [sp, 0x4]
	movs r0, 0
	str r0, [sp, 0x8]
	ldrb r0, [r4, 0x7]
	str r0, [sp, 0xC]
	ldrb r0, [r4, 0x8]
	str r0, [sp, 0x10]
	adds r0, r5, 0
	movs r1, 0x2
	adds r2, r6, 0
	bl sub_812E62C
	b _0812A6DA
	.align 2, 0
_0812A6AC: .4byte gUnknown_845AB64
_0812A6B0:
	adds r0, r5, 0
	movs r1, 0xA
	movs r2, 0x2
	bl sub_8150048
	ldrb r3, [r4, 0x5]
	ldrb r0, [r4, 0x6]
	str r0, [sp]
	movs r0, 0xFF
	str r0, [sp, 0x4]
	movs r0, 0
	str r0, [sp, 0x8]
	ldrb r0, [r4, 0x7]
	str r0, [sp, 0xC]
	ldrb r0, [r4, 0x8]
	str r0, [sp, 0x10]
	adds r0, r5, 0
	movs r1, 0x2
	adds r2, r6, 0
	bl sub_812E62C
_0812A6DA:
	ldr r0, _0812A6F0 @ =gUnknown_203B0E4
	ldr r0, [r0]
	mov r1, r8
	strh r1, [r0, 0x1E]
_0812A6E2:
	add sp, 0x1C
	pop {r3,r4}
	mov r8, r3
	mov r9, r4
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_0812A6F0: .4byte gUnknown_203B0E4
	thumb_func_end sub_812A578

	thumb_func_start sub_812A6F4
sub_812A6F4: @ 812A6F4
	push {r4,lr}
	ldr r4, _0812A724 @ =gUnknown_203B0E4
	ldr r0, [r4]
	ldrh r0, [r0, 0x1E]
	cmp r0, 0xFF
	beq _0812A712
	lsls r0, 24
	lsrs r0, 24
	movs r1, 0
	bl sub_810F4D8
	ldr r0, [r4]
	ldrb r0, [r0, 0x1E]
	bl ClearWindowTilemap
_0812A712:
	movs r0, 0
	movs r1, 0
	movs r2, 0
	bl ChangeBgY
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0812A724: .4byte gUnknown_203B0E4
	thumb_func_end sub_812A6F4

	thumb_func_start sub_812A728
sub_812A728: @ 812A728
	push {r4,lr}
	ldr r4, _0812A748 @ =gUnknown_203B0E4
	ldr r0, [r4]
	ldrh r0, [r0, 0x1E]
	cmp r0, 0xFF
	beq _0812A742
	lsls r0, 24
	lsrs r0, 24
	bl RemoveWindow
	ldr r1, [r4]
	movs r0, 0xFF
	strh r0, [r1, 0x1E]
_0812A742:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0812A748: .4byte gUnknown_203B0E4
	thumb_func_end sub_812A728

	thumb_func_start sub_812A74C
sub_812A74C: @ 812A74C
	push {lr}
	sub sp, 0x8
	adds r3, r0, 0
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 19
	lsrs r3, 16
	lsls r1, 19
	lsrs r1, 16
	str r1, [sp]
	movs r0, 0xE
	str r0, [sp, 0x4]
	movs r0, 0x1
	adds r1, r2, 0
	adds r2, r3, 0
	movs r3, 0x1
	bl FillWindowPixelRect
	add sp, 0x8
	pop {r0}
	bx r0
	thumb_func_end sub_812A74C

	thumb_func_start sub_812A778
sub_812A778: @ 812A778
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x34
	mov r10, r1
	ldr r1, [sp, 0x54]
	lsls r0, 16
	lsrs r5, r0, 16
	mov r9, r5
	lsls r2, 24
	lsrs r4, r2, 24
	mov r8, r4
	lsls r3, 24
	lsrs r7, r3, 24
	lsls r1, 24
	lsrs r6, r1, 24
	cmp r4, 0
	beq _0812A7B4
	bl sub_81297DC
	adds r1, r0, 0
	subs r1, r5
	lsls r1, 16
	lsrs r1, 16
	adds r0, r5, 0
	adds r2, r4, 0
	bl sub_812A74C
_0812A7B4:
	add r0, sp, 0xC
	mov r1, r8
	strb r1, [r0]
	strb r7, [r0, 0x1]
	strb r6, [r0, 0x2]
	add r4, sp, 0x10
	movs r0, 0xFC
	strb r0, [r4]
	movs r0, 0x14
	strb r0, [r4, 0x1]
	movs r0, 0x8
	strb r0, [r4, 0x2]
	mov r0, sp
	adds r0, 0x13
	mov r1, r10
	bl StringCopy
	mov r0, r9
	lsls r2, r0, 27
	lsrs r2, 24
	add r1, sp, 0xC
	str r1, [sp]
	movs r0, 0x1
	negs r0, r0
	str r0, [sp, 0x4]
	str r4, [sp, 0x8]
	movs r0, 0x1
	movs r1, 0x2
	movs r3, 0x1
	bl box_print
	add sp, 0x34
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_812A778

	thumb_func_start sub_812A804
sub_812A804: @ 812A804
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x4C
	movs r0, 0x2
	movs r1, 0xFF
	bl FillWindowPixelBuffer
	bl sub_81296F4
	lsls r0, 24
	lsrs r2, r0, 24
	add r1, sp, 0xC
	movs r0, 0
	strb r0, [r1]
	movs r0, 0xE
	strb r0, [r1, 0x1]
	movs r0, 0xD
	strb r0, [r1, 0x2]
	cmp r2, 0x3
	beq _0812A8A0
	add r1, sp, 0x10
	movs r0, 0xFC
	strb r0, [r1]
	movs r0, 0x14
	strb r0, [r1, 0x1]
	movs r0, 0x8
	strb r0, [r1, 0x2]
	str r0, [sp, 0x40]
	str r1, [sp, 0x44]
	cmp r2, 0x2
	bne _0812A84C
	movs r1, 0x6
	str r1, [sp, 0x40]
_0812A84C:
	movs r7, 0
	movs r6, 0
	lsls r0, r2, 2
	ldr r1, _0812A89C @ =gUnknown_845A9AC
	adds r0, r2
	lsls r0, 3
	adds r4, r0, r1
	ldr r0, [sp, 0x40]
	lsls r5, r0, 24
_0812A85E:
	ldr r1, [r4]
	cmp r1, 0
	bne _0812A866
	b _0812A96C
_0812A866:
	mov r0, sp
	adds r0, 0x13
	bl StringCopy
	lsls r3, r6, 24
	lsrs r3, 24
	add r1, sp, 0xC
	str r1, [sp]
	movs r0, 0x1
	negs r0, r0
	str r0, [sp, 0x4]
	ldr r0, [sp, 0x44]
	str r0, [sp, 0x8]
	movs r0, 0x2
	movs r1, 0
	lsrs r2, r5, 24
	bl box_print
	adds r4, 0x4
	adds r7, 0x1
	adds r0, r6, 0
	adds r0, 0xC
	lsls r0, 16
	lsrs r6, r0, 16
	cmp r7, 0x9
	ble _0812A85E
	b _0812A96C
	.align 2, 0
_0812A89C: .4byte gUnknown_845A9AC
_0812A8A0:
	movs r1, 0x4
	str r1, [sp, 0x40]
	movs r7, 0
	movs r6, 0
_0812A8A8:
	adds r0, r7, 0
	bl sub_81294B0
	adds r5, r0, 0
	movs r0, 0
	adds r1, r5, 0
	movs r2, 0
	bl GetStringWidth
	cmp r0, 0x28
	bgt _0812A8E6
	lsls r3, r6, 24
	lsrs r3, 24
	add r4, sp, 0xC
	str r4, [sp]
	movs r0, 0x1
	negs r0, r0
	str r0, [sp, 0x4]
	str r5, [sp, 0x8]
	movs r0, 0x2
	movs r1, 0
	movs r4, 0x80
	lsls r4, 19
	lsrs r2, r4, 24
	bl box_print
	adds r0, r7, 0x1
	str r0, [sp, 0x48]
	adds r6, 0xC
	mov r10, r6
	b _0812A960
_0812A8E6:
	adds r0, r5, 0
	bl StringLength_Multibyte
	adds r4, r0, 0
	mov r1, sp
	adds r1, 0x10
	str r1, [sp, 0x44]
	ldr r0, [sp, 0x40]
	lsls r0, 24
	mov r8, r0
	lsls r1, r6, 24
	mov r9, r1
	adds r0, r7, 0x1
	str r0, [sp, 0x48]
	adds r6, 0xC
	mov r10, r6
	ldr r7, [sp, 0x40]
	adds r7, 0x23
	ldr r6, [sp, 0x44]
_0812A90C:
	subs r4, 0x1
	adds r0, r6, 0
	adds r1, r5, 0
	adds r2, r4, 0
	bl StringCopyN_Multibyte
	movs r0, 0
	adds r1, r6, 0
	movs r2, 0
	bl GetStringWidth
	cmp r0, 0x23
	bgt _0812A90C
	mov r1, r8
	lsrs r2, r1, 24
	mov r0, r9
	lsrs r4, r0, 24
	add r1, sp, 0xC
	str r1, [sp]
	movs r0, 0x1
	negs r0, r0
	str r0, [sp, 0x4]
	ldr r1, [sp, 0x44]
	str r1, [sp, 0x8]
	movs r0, 0x2
	movs r1, 0
	adds r3, r4, 0
	bl box_print
	adds r2, r7, 0
	add r0, sp, 0xC
	str r0, [sp]
	movs r1, 0x1
	negs r1, r1
	str r1, [sp, 0x4]
	ldr r0, _0812A97C @ =gUnknown_845ABE8
	str r0, [sp, 0x8]
	movs r0, 0x2
	movs r1, 0
	adds r3, r4, 0
	bl box_print
_0812A960:
	ldr r7, [sp, 0x48]
	mov r4, r10
	lsls r0, r4, 16
	lsrs r6, r0, 16
	cmp r7, 0x9
	ble _0812A8A8
_0812A96C:
	add sp, 0x4C
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_0812A97C: .4byte gUnknown_845ABE8
	thumb_func_end sub_812A804

	thumb_func_start sub_812A980
sub_812A980: @ 812A980
	push {r4,lr}
	ldr r1, _0812A9A4 @ =gUnknown_203B0E4
	ldr r2, [r1]
	ldrh r3, [r2, 0x20]
	movs r4, 0x20
	ldrsh r0, [r2, r4]
	cmp r0, 0x37
	bgt _0812A9B4
	adds r0, r3, 0
	adds r0, 0xC
	strh r0, [r2, 0x20]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x37
	ble _0812A9A8
	movs r0, 0x38
	strh r0, [r2, 0x20]
	b _0812A9B4
	.align 2, 0
_0812A9A4: .4byte gUnknown_203B0E4
_0812A9A8:
	movs r1, 0x20
	ldrsh r0, [r2, r1]
	bl sub_812ADA0
	movs r0, 0x1
	b _0812A9C0
_0812A9B4:
	ldr r0, [r1]
	movs r4, 0x20
	ldrsh r0, [r0, r4]
	bl sub_812ADF8
	movs r0, 0
_0812A9C0:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812A980

	thumb_func_start sub_812A9C8
sub_812A9C8: @ 812A9C8
	push {r4,lr}
	ldr r1, _0812A9EC @ =gUnknown_203B0E4
	ldr r2, [r1]
	ldrh r3, [r2, 0x20]
	movs r4, 0x20
	ldrsh r0, [r2, r4]
	cmp r0, 0
	ble _0812A9FC
	adds r0, r3, 0
	subs r0, 0xC
	strh r0, [r2, 0x20]
	lsls r0, 16
	cmp r0, 0
	bgt _0812A9F0
	movs r0, 0
	strh r0, [r2, 0x20]
	b _0812A9FC
	.align 2, 0
_0812A9EC: .4byte gUnknown_203B0E4
_0812A9F0:
	movs r1, 0x20
	ldrsh r0, [r2, r1]
	bl sub_812ADA0
	movs r0, 0x1
	b _0812AA08
_0812A9FC:
	ldr r0, [r1]
	movs r4, 0x20
	ldrsh r0, [r0, r4]
	bl sub_812ADF8
	movs r0, 0
_0812AA08:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812A9C8

	thumb_func_start sub_812AA10
sub_812AA10: @ 812AA10
	push {lr}
	sub sp, 0xC
	movs r0, 0x3
	movs r1, 0x11
	bl FillWindowPixelBuffer
	movs r0, 0x3
	movs r1, 0x1
	movs r2, 0xD
	bl sub_8150048
	ldr r0, _0812AA60 @ =gUnknown_845ABEC
	str r0, [sp]
	movs r0, 0x3
	movs r1, 0x2
	movs r2, 0xE
	movs r3, 0x5
	bl sub_810FC80
	bl sub_81296F4
	lsls r0, 24
	lsrs r0, 24
	movs r1, 0xE
	str r1, [sp]
	movs r1, 0x5
	str r1, [sp, 0x4]
	str r0, [sp, 0x8]
	movs r0, 0x3
	movs r1, 0x2
	movs r2, 0
	movs r3, 0
	bl sub_810F7D8
	movs r0, 0x3
	bl PutWindowTilemap
	add sp, 0xC
	pop {r0}
	bx r0
	.align 2, 0
_0812AA60: .4byte gUnknown_845ABEC
	thumb_func_end sub_812AA10

	thumb_func_start sub_812AA64
sub_812AA64: @ 812AA64
	push {lr}
	movs r0, 0x3
	movs r1, 0
	bl sub_810F4D8
	movs r0, 0x3
	bl ClearWindowTilemap
	pop {r0}
	bx r0
	thumb_func_end sub_812AA64

	thumb_func_start sub_812AA78
sub_812AA78: @ 812AA78
	push {r4,r5,lr}
	sub sp, 0x10
	adds r5, r1, 0
	lsls r0, 16
	lsrs r0, 16
	lsls r2, 24
	add r3, sp, 0xC
	movs r1, 0x1
	strb r1, [r3]
	lsrs r2, 23
	adds r1, r2, 0x2
	strb r1, [r3, 0x1]
	adds r1, r3, 0
	adds r2, 0x3
	strb r2, [r1, 0x2]
	lsls r4, r0, 4
	subs r4, r0
	lsls r3, r4, 16
	lsrs r3, 16
	movs r0, 0xA8
	str r0, [sp]
	movs r0, 0xF
	str r0, [sp, 0x4]
	movs r0, 0
	movs r1, 0x11
	movs r2, 0
	bl FillWindowPixelRect
	lsls r4, 24
	lsrs r4, 24
	add r0, sp, 0xC
	str r0, [sp]
	movs r0, 0x1
	negs r0, r0
	str r0, [sp, 0x4]
	str r5, [sp, 0x8]
	movs r0, 0
	movs r1, 0x2
	movs r2, 0
	adds r3, r4, 0
	bl box_print
	add sp, 0x10
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_812AA78

	thumb_func_start sub_812AAD4
sub_812AAD4: @ 812AAD4
	push {lr}
	movs r0, 0
	movs r1, 0
	movs r2, 0
	bl ChangeBgX
	movs r0, 0
	movs r1, 0
	movs r2, 0
	bl ChangeBgY
	movs r0, 0x1
	movs r1, 0
	movs r2, 0
	bl ChangeBgX
	movs r0, 0x1
	movs r1, 0
	movs r2, 0
	bl ChangeBgY
	movs r0, 0x2
	movs r1, 0
	movs r2, 0
	bl ChangeBgX
	movs r0, 0x2
	movs r1, 0
	movs r2, 0
	bl ChangeBgY
	movs r0, 0x3
	movs r1, 0
	movs r2, 0
	bl ChangeBgX
	movs r0, 0x3
	movs r1, 0
	movs r2, 0
	bl ChangeBgY
	movs r0, 0
	bl ShowBg
	movs r0, 0x1
	bl ShowBg
	movs r0, 0x2
	bl ShowBg
	movs r0, 0x3
	bl ShowBg
	movs r1, 0x82
	lsls r1, 5
	movs r0, 0
	bl SetGpuRegBits
	movs r0, 0x50
	movs r1, 0
	bl SetGpuReg
	movs r1, 0xE0
	lsls r1, 8
	movs r0, 0
	bl ClearGpuRegBits
	movs r1, 0x80
	lsls r1, 6
	movs r0, 0
	bl SetGpuRegBits
	ldr r1, _0812AB88 @ =0x000040f0
	movs r0, 0x40
	bl SetGpuReg
	movs r0, 0x44
	movs r1, 0x90
	bl SetGpuReg
	movs r0, 0x48
	movs r1, 0x3D
	bl SetGpuReg
	movs r0, 0x4A
	movs r1, 0x3F
	bl SetGpuReg
	pop {r0}
	bx r0
	.align 2, 0
_0812AB88: .4byte 0x000040f0
	thumb_func_end sub_812AAD4

	thumb_func_start sub_812AB8C
sub_812AB8C: @ 812AB8C
	push {r4,lr}
	ldr r4, _0812ABC8 @ =gUnknown_203B0E4
	ldr r1, [r4]
	movs r0, 0x94
	lsls r0, 1
	adds r1, r0
	movs r0, 0
	bl SetBgTilemapBuffer
	ldr r1, [r4]
	ldr r0, _0812ABCC @ =0x00000928
	adds r1, r0
	movs r0, 0x1
	bl SetBgTilemapBuffer
	ldr r1, [r4]
	ldr r0, _0812ABD0 @ =0x00001128
	adds r1, r0
	movs r0, 0x3
	bl SetBgTilemapBuffer
	ldr r1, [r4]
	ldr r0, _0812ABD4 @ =0x00001928
	adds r1, r0
	movs r0, 0x2
	bl SetBgTilemapBuffer
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0812ABC8: .4byte gUnknown_203B0E4
_0812ABCC: .4byte 0x00000928
_0812ABD0: .4byte 0x00001128
_0812ABD4: .4byte 0x00001928
	thumb_func_end sub_812AB8C

	thumb_func_start sub_812ABD8
sub_812ABD8: @ 812ABD8
	push {lr}
	sub sp, 0x8
	movs r1, 0xC0
	lsls r1, 19
	movs r0, 0
	movs r2, 0x20
	movs r3, 0x1
	bl RequestDma3Fill
	movs r0, 0x20
	str r0, [sp]
	str r0, [sp, 0x4]
	movs r0, 0
	movs r1, 0
	movs r2, 0
	movs r3, 0
	bl FillBgTilemapBufferRect_Palette0
	movs r0, 0
	bl CopyBgTilemapBufferToVram
	add sp, 0x8
	pop {r0}
	bx r0
	thumb_func_end sub_812ABD8

	thumb_func_start sub_812AC08
sub_812AC08: @ 812AC08
	push {lr}
	sub sp, 0x4
	ldr r0, _0812AC48 @ =gUnknown_8EAA9F0
	movs r1, 0x70
	movs r2, 0x20
	bl LoadPalette
	ldr r0, _0812AC4C @ =gUnknown_845AA24
	movs r1, 0xC0
	movs r2, 0x20
	bl LoadPalette
	ldr r1, _0812AC50 @ =gUnknown_8EAAA10
	movs r0, 0
	str r0, [sp]
	movs r0, 0x1
	movs r2, 0
	movs r3, 0
	bl decompress_and_copy_tile_data_to_vram
	ldr r1, _0812AC54 @ =gUnknown_8EAAA6C
	movs r0, 0x1
	movs r2, 0
	movs r3, 0
	bl CopyToBgTilemapBuffer
	movs r0, 0x1
	bl CopyBgTilemapBufferToVram
	add sp, 0x4
	pop {r0}
	bx r0
	.align 2, 0
_0812AC48: .4byte gUnknown_8EAA9F0
_0812AC4C: .4byte gUnknown_845AA24
_0812AC50: .4byte gUnknown_8EAAA10
_0812AC54: .4byte gUnknown_8EAAA6C
	thumb_func_end sub_812AC08

	thumb_func_start sub_812AC58
sub_812AC58: @ 812AC58
	push {lr}
	sub sp, 0x4
	ldr r0, _0812AC90 @ =gUnknown_8EA1700
	movs r1, 0
	movs r2, 0x20
	bl LoadPalette
	ldr r1, _0812AC94 @ =gUnknown_8EA1720
	movs r0, 0
	str r0, [sp]
	movs r0, 0x2
	movs r2, 0
	movs r3, 0
	bl decompress_and_copy_tile_data_to_vram
	ldr r1, _0812AC98 @ =gUnknown_8EA1958
	movs r0, 0x2
	movs r2, 0
	movs r3, 0
	bl CopyToBgTilemapBuffer
	movs r0, 0x2
	bl CopyBgTilemapBufferToVram
	add sp, 0x4
	pop {r0}
	bx r0
	.align 2, 0
_0812AC90: .4byte gUnknown_8EA1700
_0812AC94: .4byte gUnknown_8EA1720
_0812AC98: .4byte gUnknown_8EA1958
	thumb_func_end sub_812AC58

	thumb_func_start sub_812AC9C
sub_812AC9C: @ 812AC9C
	push {lr}
	ldr r0, _0812ACB8 @ =gUnknown_845AA44
	movs r1, 0x80
	movs r2, 0x20
	bl LoadPalette
	ldr r1, _0812ACBC @ =0x06004020
	movs r0, 0
	movs r2, 0x20
	movs r3, 0x1
	bl RequestDma3Fill
	pop {r0}
	bx r0
	.align 2, 0
_0812ACB8: .4byte gUnknown_845AA44
_0812ACBC: .4byte 0x06004020
	thumb_func_end sub_812AC9C

	thumb_func_start sub_812ACC0
sub_812ACC0: @ 812ACC0
	push {lr}
	ldr r0, _0812ACE8 @ =gUnknown_845AA64
	movs r1, 0xF0
	movs r2, 0x20
	bl LoadPalette
	movs r0, 0
	bl PutWindowTilemap
	movs r0, 0
	movs r1, 0x11
	bl FillWindowPixelBuffer
	movs r0, 0
	movs r1, 0x3
	bl CopyWindowToVram
	pop {r0}
	bx r0
	.align 2, 0
_0812ACE8: .4byte gUnknown_845AA64
	thumb_func_end sub_812ACC0

	thumb_func_start sub_812ACEC
sub_812ACEC: @ 812ACEC
	push {lr}
	movs r0, 0x2
	bl PutWindowTilemap
	bl sub_812A804
	movs r0, 0x2
	movs r1, 0x3
	bl CopyWindowToVram
	pop {r0}
	bx r0
	thumb_func_end sub_812ACEC

	thumb_func_start sub_812AD04
sub_812AD04: @ 812AD04
	push {lr}
	movs r0, 0x1
	movs r1, 0
	bl FillWindowPixelBuffer
	movs r0, 0x1
	bl PutWindowTilemap
	movs r0, 0x1
	movs r1, 0x3
	bl CopyWindowToVram
	pop {r0}
	bx r0
	thumb_func_end sub_812AD04

	thumb_func_start sub_812AD20
sub_812AD20: @ 812AD20
	push {lr}
	movs r0, 0x3
	movs r1, 0x11
	bl FillWindowPixelBuffer
	movs r0, 0x3
	movs r1, 0x1
	movs r2, 0xD0
	bl sub_815001C
	movs r0, 0x3
	movs r1, 0xA
	movs r2, 0x20
	bl sub_814FF2C
	ldr r0, _0812AD4C @ =gUnknown_841F408
	movs r1, 0xE0
	movs r2, 0x20
	bl LoadPalette
	pop {r0}
	bx r0
	.align 2, 0
_0812AD4C: .4byte gUnknown_841F408
	thumb_func_end sub_812AD20

	thumb_func_start sub_812AD50
sub_812AD50: @ 812AD50
	push {lr}
	sub sp, 0x10
	ldr r0, _0812AD8C @ =0xa2600001
	str r0, [sp, 0x4]
	ldr r0, _0812AD90 @ =0x04000014
	str r0, [sp]
	mov r2, sp
	movs r1, 0
	movs r0, 0x1
	strb r0, [r2, 0x8]
	mov r0, sp
	strb r1, [r0, 0x9]
	ldr r0, _0812AD94 @ =gUnknown_203B0E4
	ldr r0, [r0]
	strh r1, [r0, 0x20]
	str r1, [sp, 0xC]
	add r0, sp, 0xC
	ldr r1, _0812AD98 @ =gUnknown_2038700
	ldr r2, _0812AD9C @ =0x010003c0
	bl CpuFastSet
	ldr r0, [sp]
	ldr r1, [sp, 0x4]
	ldr r2, [sp, 0x8]
	bl sub_8087EE4
	add sp, 0x10
	pop {r0}
	bx r0
	.align 2, 0
_0812AD8C: .4byte 0xa2600001
_0812AD90: .4byte 0x04000014
_0812AD94: .4byte gUnknown_203B0E4
_0812AD98: .4byte gUnknown_2038700
_0812AD9C: .4byte 0x010003c0
	thumb_func_end sub_812AD50

	thumb_func_start sub_812ADA0
sub_812ADA0: @ 812ADA0
	push {r4,r5,lr}
	sub sp, 0x4
	lsls r0, 16
	lsrs r0, 16
	mov r1, sp
	strh r0, [r1]
	ldr r5, _0812ADE8 @ =gUnknown_2039600
	ldrb r0, [r5, 0x14]
	lsls r1, r0, 4
	subs r1, r0
	lsls r1, 7
	ldr r4, _0812ADEC @ =gUnknown_2038700
	adds r1, r4
	ldr r2, _0812ADF0 @ =0x01000090
	mov r0, sp
	bl CpuSet
	mov r0, sp
	adds r0, 0x2
	movs r1, 0
	strh r1, [r0]
	ldrb r2, [r5, 0x14]
	lsls r1, r2, 4
	subs r1, r2
	lsls r1, 7
	movs r2, 0x90
	lsls r2, 1
	adds r4, r2
	adds r1, r4
	ldr r2, _0812ADF4 @ =0x01000010
	bl CpuSet
	add sp, 0x4
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_0812ADE8: .4byte gUnknown_2039600
_0812ADEC: .4byte gUnknown_2038700
_0812ADF0: .4byte 0x01000090
_0812ADF4: .4byte 0x01000010
	thumb_func_end sub_812ADA0

	thumb_func_start sub_812ADF8
sub_812ADF8: @ 812ADF8
	push {r4-r6,lr}
	mov r6, r9
	mov r5, r8
	push {r5,r6}
	sub sp, 0x8
	adds r4, r0, 0
	lsls r4, 16
	lsrs r4, 16
	mov r0, sp
	strh r4, [r0]
	ldr r5, _0812AE64 @ =gUnknown_2038700
	ldr r0, _0812AE68 @ =0x01000090
	mov r9, r0
	mov r0, sp
	adds r1, r5, 0
	mov r2, r9
	bl CpuSet
	mov r0, sp
	adds r0, 0x2
	movs r6, 0
	strh r6, [r0]
	movs r2, 0x90
	lsls r2, 1
	adds r1, r5, r2
	ldr r2, _0812AE6C @ =0x01000010
	mov r8, r2
	bl CpuSet
	add r0, sp, 0x4
	strh r4, [r0]
	movs r2, 0xF0
	lsls r2, 3
	adds r1, r5, r2
	mov r2, r9
	bl CpuSet
	mov r0, sp
	adds r0, 0x6
	strh r6, [r0]
	movs r1, 0x8A
	lsls r1, 4
	adds r5, r1
	adds r1, r5, 0
	mov r2, r8
	bl CpuSet
	add sp, 0x8
	pop {r3,r4}
	mov r8, r3
	mov r9, r4
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_0812AE64: .4byte gUnknown_2038700
_0812AE68: .4byte 0x01000090
_0812AE6C: .4byte 0x01000010
	thumb_func_end sub_812ADF8

	thumb_func_start sub_812AE70
sub_812AE70: @ 812AE70
	push {r4,r5,lr}
	movs r5, 0
	ldr r4, _0812AE9C @ =gUnknown_845AF58
_0812AE76:
	adds r0, r4, 0
	bl LoadCompressedObjectPic
	adds r4, 0x8
	adds r5, 0x1
	cmp r5, 0x4
	bls _0812AE76
	ldr r0, _0812AEA0 @ =gUnknown_845AF80
	bl LoadSpritePalette
	ldr r4, _0812AEA4 @ =gUnknown_203B0E8
	movs r0, 0x18
	bl Alloc
	str r0, [r4]
	cmp r0, 0
	beq _0812AEA8
	movs r0, 0x1
	b _0812AEAA
	.align 2, 0
_0812AE9C: .4byte gUnknown_845AF58
_0812AEA0: .4byte gUnknown_845AF80
_0812AEA4: .4byte gUnknown_203B0E8
_0812AEA8:
	movs r0, 0
_0812AEAA:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_812AE70

	thumb_func_start sub_812AEB0
sub_812AEB0: @ 812AEB0
	push {lr}
	ldr r0, _0812AEC4 @ =gUnknown_203B0E8
	ldr r0, [r0]
	cmp r0, 0
	beq _0812AEBE
	bl Free
_0812AEBE:
	pop {r0}
	bx r0
	.align 2, 0
_0812AEC4: .4byte gUnknown_203B0E8
	thumb_func_end sub_812AEB0

	thumb_func_start sub_812AEC8
sub_812AEC8: @ 812AEC8
	push {lr}
	ldr r0, _0812AEF0 @ =gUnknown_845AFC0
	movs r1, 0xA
	movs r2, 0x18
	movs r3, 0
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0812AEF4 @ =gUnknown_203B0E8
	ldr r2, [r1]
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	ldr r0, _0812AEF8 @ =gSprites
	adds r1, r0
	str r1, [r2]
	pop {r0}
	bx r0
	.align 2, 0
_0812AEF0: .4byte gUnknown_845AFC0
_0812AEF4: .4byte gUnknown_203B0E8
_0812AEF8: .4byte gSprites
	thumb_func_end sub_812AEC8

	thumb_func_start sub_812AEFC
sub_812AEFC: @ 812AEFC
	ldr r1, _0812AF18 @ =gUnknown_203B0E8
	ldr r1, [r1]
	ldr r2, [r1]
	adds r2, 0x3E
	movs r1, 0x1
	ands r0, r1
	lsls r0, 2
	ldrb r3, [r2]
	movs r1, 0x5
	negs r1, r1
	ands r1, r3
	orrs r1, r0
	strb r1, [r2]
	bx lr
	.align 2, 0
_0812AF18: .4byte gUnknown_203B0E8
	thumb_func_end sub_812AEFC

	thumb_func_start sub_812AF1C
sub_812AF1C: @ 812AF1C
	push {r4,r5,lr}
	sub sp, 0x4
	bl sub_81296F4
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	mov r5, sp
	adds r5, 0x1
	mov r0, sp
	adds r1, r5, 0
	bl sub_8129700
	cmp r4, 0x3
	beq _0812AF5C
	ldr r4, _0812AF58 @ =gUnknown_203B0E8
	ldr r0, [r4]
	ldr r0, [r0]
	movs r1, 0
	bl StartSpriteAnim
	ldr r1, [r4]
	ldr r2, [r1]
	mov r0, sp
	ldrb r0, [r0]
	lsls r0, 3
	adds r0, 0xA
	strh r0, [r2, 0x20]
	ldr r2, [r1]
	b _0812AF72
	.align 2, 0
_0812AF58: .4byte gUnknown_203B0E8
_0812AF5C:
	ldr r4, _0812AF88 @ =gUnknown_203B0E8
	ldr r0, [r4]
	ldr r0, [r0]
	movs r1, 0x2
	bl StartSpriteAnim
	ldr r2, [r4]
	ldr r1, [r2]
	movs r0, 0x18
	strh r0, [r1, 0x20]
	ldr r2, [r2]
_0812AF72:
	ldrb r1, [r5]
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 2
	adds r0, 0x18
	strh r0, [r2, 0x22]
	add sp, 0x4
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_0812AF88: .4byte gUnknown_203B0E8
	thumb_func_end sub_812AF1C

	thumb_func_start sub_812AF8C
sub_812AF8C: @ 812AF8C
	push {r4,lr}
	adds r4, r0, 0
	lsls r4, 2
	ldr r0, _0812AFB8 @ =gUnknown_845AC16
	adds r4, r0
	movs r0, 0
	bl IndexOfSpritePaletteTag
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 4
	ldr r0, _0812AFBC @ =0x01010000
	adds r1, r0
	lsrs r1, 16
	adds r0, r4, 0
	movs r2, 0x4
	bl LoadPalette
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0812AFB8: .4byte gUnknown_845AC16
_0812AFBC: .4byte 0x01010000
	thumb_func_end sub_812AF8C

	thumb_func_start sub_812AFC0
sub_812AFC0: @ 812AFC0
	push {lr}
	bl sub_81296F4
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x3
	beq _0812AFE0
	ldr r0, _0812AFDC @ =gUnknown_203B0E8
	ldr r0, [r0]
	ldr r0, [r0]
	movs r1, 0x1
	bl StartSpriteAnim
	b _0812AFEC
	.align 2, 0
_0812AFDC: .4byte gUnknown_203B0E8
_0812AFE0:
	ldr r0, _0812AFF8 @ =gUnknown_203B0E8
	ldr r0, [r0]
	ldr r0, [r0]
	movs r1, 0x3
	bl StartSpriteAnim
_0812AFEC:
	ldr r0, _0812AFF8 @ =gUnknown_203B0E8
	ldr r1, [r0]
	movs r0, 0
	strh r0, [r1, 0x14]
	pop {r0}
	bx r0
	.align 2, 0
_0812AFF8: .4byte gUnknown_203B0E8
	thumb_func_end sub_812AFC0

	thumb_func_start sub_812AFFC
sub_812AFFC: @ 812AFFC
	push {r4,lr}
	ldr r4, _0812B00C @ =gUnknown_203B0E8
	ldr r1, [r4]
	ldrh r0, [r1, 0x14]
	cmp r0, 0x3
	bls _0812B010
_0812B008:
	movs r0, 0
	b _0812B042
	.align 2, 0
_0812B00C: .4byte gUnknown_203B0E8
_0812B010:
	adds r0, 0x1
	strh r0, [r1, 0x14]
	lsls r0, 16
	lsrs r0, 16
	cmp r0, 0x3
	bls _0812B040
	bl sub_81296F4
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x3
	beq _0812B034
	ldr r0, [r4]
	ldr r0, [r0]
	movs r1, 0
	bl StartSpriteAnim
	b _0812B008
_0812B034:
	ldr r0, [r4]
	ldr r0, [r0]
	movs r1, 0x2
	bl StartSpriteAnim
	b _0812B008
_0812B040:
	movs r0, 0x1
_0812B042:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_812AFFC

	thumb_func_start sub_812B048
sub_812B048: @ 812B048
	push {r4,r5,lr}
	ldr r0, _0812B08C @ =gUnknown_845AFE0
	movs r1, 0x4C
	movs r2, 0x98
	movs r3, 0x2
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	ldr r5, _0812B090 @ =gUnknown_203B0E8
	ldr r2, [r5]
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	ldr r4, _0812B094 @ =gSprites
	adds r1, r4
	str r1, [r2, 0x8]
	ldr r0, _0812B098 @ =gUnknown_845AFF8
	movs r1, 0x40
	movs r2, 0x98
	movs r3, 0x1
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	ldr r2, [r5]
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	adds r1, r4
	str r1, [r2, 0x4]
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_0812B08C: .4byte gUnknown_845AFE0
_0812B090: .4byte gUnknown_203B0E8
_0812B094: .4byte gSprites
_0812B098: .4byte gUnknown_845AFF8
	thumb_func_end sub_812B048

	thumb_func_start sub_812B09C
sub_812B09C: @ 812B09C
	push {r4,lr}
	adds r4, r0, 0
	bl sub_81297DC
	adds r3, r0, 0
	cmp r3, 0xF
	bne _0812B0B8
	adds r0, r4, 0
	adds r0, 0x3E
	ldrb r1, [r0]
	movs r2, 0x4
	orrs r1, r2
	strb r1, [r0]
	b _0812B0CC
_0812B0B8:
	adds r2, r4, 0
	adds r2, 0x3E
	ldrb r0, [r2]
	movs r1, 0x5
	negs r1, r1
	ands r1, r0
	strb r1, [r2]
	lsls r0, r3, 3
	adds r0, 0x4C
	strh r0, [r4, 0x20]
_0812B0CC:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_812B09C

	thumb_func_start sub_812B0D4
sub_812B0D4: @ 812B0D4
	push {lr}
	adds r1, r0, 0
	ldrh r0, [r1, 0x2E]
	adds r0, 0x1
	movs r2, 0
	strh r0, [r1, 0x2E]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812B0FA
	strh r2, [r1, 0x2E]
	ldrh r0, [r1, 0x24]
	adds r0, 0x1
	strh r0, [r1, 0x24]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x4
	ble _0812B0FA
	strh r2, [r1, 0x24]
_0812B0FA:
	pop {r0}
	bx r0
	thumb_func_end sub_812B0D4

	thumb_func_start sub_812B100
sub_812B100: @ 812B100
	push {r4,r5,lr}
	ldr r0, _0812B150 @ =gUnknown_845B050
	movs r1, 0x8
	movs r2, 0x98
	movs r3, 0x3
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	ldr r5, _0812B154 @ =gUnknown_203B0E8
	ldr r2, [r5]
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	ldr r4, _0812B158 @ =gSprites
	adds r1, r4
	str r1, [r2, 0xC]
	ldr r0, _0812B15C @ =gUnknown_845B068
	movs r1, 0x20
	movs r2, 0x98
	movs r3, 0x4
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	ldr r2, [r5]
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	adds r1, r4
	str r1, [r2, 0x10]
	adds r1, 0x3E
	ldrb r0, [r1]
	movs r2, 0x4
	orrs r0, r2
	strb r0, [r1]
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_0812B150: .4byte gUnknown_845B050
_0812B154: .4byte gUnknown_203B0E8
_0812B158: .4byte gSprites
_0812B15C: .4byte gUnknown_845B068
	thumb_func_end sub_812B100

	thumb_func_start sub_812B160
sub_812B160: @ 812B160
	push {r4,lr}
	bl sub_81296F4
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x3
	bne _0812B198
	bl sub_8129720
	cmp r0, 0
	beq _0812B1A2
	ldr r3, _0812B194 @ =gUnknown_203B0E8
	ldr r0, [r3]
	ldr r1, [r0, 0x10]
	adds r1, 0x3E
	ldrb r2, [r1]
	movs r0, 0x5
	negs r0, r0
	ands r0, r2
	strb r0, [r1]
	ldr r0, [r3]
	ldr r0, [r0, 0x10]
	movs r1, 0x3
	bl StartSpriteAnim
	b _0812B1D6
	.align 2, 0
_0812B194: .4byte gUnknown_203B0E8
_0812B198:
	bl sub_81297E8
	adds r4, r0, 0
	cmp r4, 0x3
	bne _0812B1B8
_0812B1A2:
	ldr r0, _0812B1B4 @ =gUnknown_203B0E8
	ldr r0, [r0]
	ldr r1, [r0, 0x10]
	adds r1, 0x3E
	ldrb r0, [r1]
	movs r2, 0x4
	orrs r0, r2
	strb r0, [r1]
	b _0812B1D6
	.align 2, 0
_0812B1B4: .4byte gUnknown_203B0E8
_0812B1B8:
	ldr r3, _0812B1DC @ =gUnknown_203B0E8
	ldr r0, [r3]
	ldr r1, [r0, 0x10]
	adds r1, 0x3E
	ldrb r2, [r1]
	movs r0, 0x5
	negs r0, r0
	ands r0, r2
	strb r0, [r1]
	ldr r0, [r3]
	ldr r0, [r0, 0x10]
	lsls r1, r4, 24
	lsrs r1, 24
	bl StartSpriteAnim
_0812B1D6:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0812B1DC: .4byte gUnknown_203B0E8
	thumb_func_end sub_812B160

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