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

	.syntax unified

	.text

	thumb_func_start sub_8121478
sub_8121478: @ 8121478
	push {r4-r7,lr}
	sub sp, 0x4
	adds r5, r0, 0
	adds r7, r1, 0
	lsls r2, 24
	lsrs r6, r2, 24
	ldr r4, =gUnknown_0203A134
	ldr r0, =0x0000222c
	bl AllocZeroed
	str r0, [r4]
	ldr r1, =0x0000021d
	adds r0, r1
	movs r1, 0x2
	strb r1, [r0]
	ldr r0, [r4]
	ldr r2, =0x0000021e
	adds r0, r2
	movs r1, 0x1
	strb r1, [r0]
	ldr r4, [r4]
	movs r3, 0x88
	lsls r3, 2
	adds r1, r4, r3
	ldr r0, =CopyEasyChatWord
	str r0, [r1]
	movs r0, 0x89
	lsls r0, 2
	adds r1, r4, r0
	ldr r0, =ConvertEasyChatWordsToString
	str r0, [r1]
	ldrh r1, [r5, 0x20]
	adds r0, r1, 0
	subs r0, 0x79
	lsls r0, 16
	lsrs r0, 16
	cmp r0, 0xB
	bhi _081214E8
	subs r1, 0x79
	subs r2, 0x4
	adds r0, r4, r2
	strb r1, [r0]
	b _081214F2
	.pool
_081214E8:
	ldr r3, =0x0000021a
	adds r1, r4, r3
	movs r0, 0
	strb r0, [r1]
	movs r6, 0
_081214F2:
	ldr r0, =gUnknown_0203A134
	ldr r1, [r0]
	ldr r2, =0x0000021e
	adds r0, r1, r2
	ldrb r0, [r0]
	cmp r0, 0
	beq _08121504
	cmp r0, 0x1
	beq _0812152C
_08121504:
	movs r3, 0x8A
	lsls r3, 2
	adds r2, r1, r3
	subs r3, 0xE
	adds r0, r1, r3
	ldrb r1, [r0]
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 2
	ldr r1, =gUnknown_0859F3B4
	b _08121540
	.pool
_0812152C:
	movs r0, 0x8A
	lsls r0, 2
	adds r2, r1, r0
	ldr r3, =0x0000021a
	adds r0, r1, r3
	ldrb r1, [r0]
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 2
	ldr r1, =gUnknown_0859F458
_08121540:
	adds r0, r1
	str r0, [r2]
	ldrh r0, [r5, 0x1E]
	mov r1, sp
	bl sub_80D45E8
	lsls r0, 16
	ldr r1, =0xffff0000
	adds r0, r1
	movs r1, 0xCD
	lsls r1, 17
	cmp r0, r1
	bhi _081215AC
	ldr r1, =gUnknown_0203A134
	ldr r2, [r1]
	ldr r3, =0x0000021a
	adds r0, r2, r3
	ldrb r0, [r0]
	adds r3, r1, 0
	cmp r0, 0x6
	beq _0812158C
	cmp r0, 0x9
	beq _0812159C
	ldr r0, =0x0000021b
	adds r1, r2, r0
	movs r0, 0
	strb r0, [r1]
	b _081215BA
	.pool
_0812158C:
	ldr r0, =0x0000021b
	adds r1, r2, r0
	movs r0, 0x1
	strb r0, [r1]
	b _081215BA
	.pool
_0812159C:
	ldr r0, =0x0000021b
	adds r1, r2, r0
	movs r0, 0x2
	strb r0, [r1]
	b _081215BA
	.pool
_081215AC:
	ldr r0, =gUnknown_0203A134
	ldr r1, [r0]
	ldr r2, =0x0000021b
	adds r1, r2
	movs r2, 0
	strb r2, [r1]
	adds r3, r0, 0
_081215BA:
	ldr r1, [r3]
	movs r3, 0x85
	lsls r3, 2
	adds r0, r1, r3
	str r5, [r0]
	movs r2, 0x83
	lsls r2, 2
	adds r0, r1, r2
	str r7, [r0]
	adds r3, 0x4
	adds r0, r1, r3
	strb r6, [r0]
	ldr r0, =sub_81219F0
	bl SetMainCallback2
	add sp, 0x4
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8121478

	thumb_func_start sub_81215EC
sub_81215EC: @ 81215EC
	push {r4-r6,lr}
	sub sp, 0xC
	ldr r0, =gMain
	movs r1, 0x87
	lsls r1, 3
	adds r0, r1
	ldrb r0, [r0]
	cmp r0, 0x12
	bls _08121600
	b _081219E2
_08121600:
	lsls r0, 2
	ldr r1, =_08121614
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_08121614:
	.4byte _08121660
	.4byte _0812166E
	.4byte _08121688
	.4byte _0812168E
	.4byte _08121694
	.4byte _0812169A
	.4byte _081216F4
	.4byte _08121730
	.4byte _08121740
	.4byte _08121774
	.4byte _08121782
	.4byte _081217D8
	.4byte _081217EC
	.4byte _081218B0
	.4byte _081218CC
	.4byte _081218EC
	.4byte _081218F6
	.4byte _08121910
	.4byte _08121980
_08121660:
	movs r0, 0
	bl SetVBlankCallback
	bl remove_some_task
	movs r0, 0
	b _081216EC
_0812166E:
	add r1, sp, 0x8
	movs r0, 0
	strh r0, [r1]
	movs r1, 0xE0
	lsls r1, 19
	ldr r2, =0x01000200
	add r0, sp, 0x8
	bl CpuSet
	b _081219D4
	.pool
_08121688:
	bl ResetPaletteFade
	b _081219D4
_0812168E:
	bl ResetTasks
	b _081219D4
_08121694:
	bl ResetSpriteData
	b _081219D4
_0812169A:
	bl FreeAllSpritePalettes
	bl reset_temp_tile_data_buffers
	movs r0, 0x10
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x12
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x14
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x16
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x1A
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x18
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x1C
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x1E
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x50
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x52
_081216EC:
	movs r1, 0
	bl SetGpuReg
	b _081219D4
_081216F4:
	movs r0, 0
	bl ResetBgsAndClearDma3BusyFlags
	ldr r1, =gUnknown_0859F290
	movs r0, 0
	movs r2, 0x3
	bl InitBgsFromTemplates
	ldr r4, =gUnknown_0203A134
	ldr r1, [r4]
	movs r2, 0x8B
	lsls r2, 2
	adds r1, r2
	movs r0, 0x1
	bl SetBgTilemapBuffer
	ldr r1, [r4]
	ldr r0, =0x0000122c
	adds r1, r0
	movs r0, 0x2
	bl SetBgTilemapBuffer
	b _081219D4
	.pool
_08121730:
	ldr r0, =gUnknown_0859F29C
	bl InitWindows
	bl DeactivateAllTextPrinters
	b _081219D4
	.pool
_08121740:
	ldr r2, =gUnknown_0859F2B8
	ldr r0, =gUnknown_0203A134
	ldr r0, [r0]
	ldr r1, =0x0000021a
	adds r0, r1
	ldrb r1, [r0]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 2
	adds r2, 0x4
	adds r0, r2
	ldr r1, [r0]
	movs r0, 0
	str r0, [sp]
	movs r0, 0x1
	movs r2, 0
	movs r3, 0
	bl decompress_and_copy_tile_data_to_vram
	b _081219D4
	.pool
_08121774:
	bl free_temp_tile_data_buffers_if_possible
	lsls r0, 24
	cmp r0, 0
	bne _08121780
	b _081219D4
_08121780:
	b _081219E2
_08121782:
	movs r5, 0x1E
	str r5, [sp]
	movs r4, 0x14
	str r4, [sp, 0x4]
	movs r0, 0
	movs r1, 0
	movs r2, 0
	movs r3, 0
	bl FillBgTilemapBufferRect_Palette0
	str r5, [sp]
	str r4, [sp, 0x4]
	movs r0, 0x2
	movs r1, 0x1
	movs r2, 0
	movs r3, 0
	bl FillBgTilemapBufferRect_Palette0
	ldr r2, =gUnknown_0859F2B8
	ldr r0, =gUnknown_0203A134
	ldr r0, [r0]
	ldr r1, =0x0000021a
	adds r0, r1
	ldrb r1, [r0]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 2
	adds r2, 0x8
	adds r0, r2
	ldr r1, [r0]
	movs r0, 0x1
	movs r2, 0
	movs r3, 0
	bl CopyToBgTilemapBuffer
	b _081219D4
	.pool
_081217D8:
	movs r0, 0
	bl CopyBgTilemapBufferToVram
	movs r0, 0x1
	bl CopyBgTilemapBufferToVram
	movs r0, 0x2
	bl CopyBgTilemapBufferToVram
	b _081219D4
_081217EC:
	bl sub_8098C64
	movs r1, 0xF0
	movs r2, 0x20
	bl LoadPalette
	ldr r6, =gPlttBufferUnfaded
	ldr r4, =gUnknown_0859F2B8
	ldr r0, =gUnknown_0203A134
	ldr r3, [r0]
	ldr r2, =0x0000021a
	adds r3, r2
	ldrb r1, [r3]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 2
	adds r0, r4
	ldrh r1, [r0, 0x10]
	subs r2, 0x26
	adds r0, r6, r2
	strh r1, [r0]
	ldr r5, =gPlttBufferFaded
	ldrb r1, [r3]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 2
	adds r0, r4
	ldrh r0, [r0, 0x10]
	adds r2, r5, r2
	strh r0, [r2]
	ldrb r1, [r3]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 2
	adds r0, r4
	ldrh r1, [r0, 0x12]
	movs r2, 0xFB
	lsls r2, 1
	adds r0, r6, r2
	strh r1, [r0]
	ldrb r1, [r3]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 2
	adds r0, r4
	ldrh r0, [r0, 0x12]
	adds r2, r5, r2
	strh r0, [r2]
	ldrb r1, [r3]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 2
	adds r0, r4
	ldr r0, [r0]
	movs r1, 0
	movs r2, 0x20
	bl LoadPalette
	ldr r1, =gUnknown_0859F2B0
	ldr r0, =gSaveBlock2Ptr
	ldr r2, [r0]
	ldrb r0, [r2, 0x8]
	lsls r0, 2
	adds r0, r1
	ldrh r0, [r0]
	strh r0, [r6, 0x14]
	ldrb r0, [r2, 0x8]
	lsls r0, 2
	adds r0, r1
	ldrh r0, [r0]
	strh r0, [r5, 0x14]
	ldrb r0, [r2, 0x8]
	lsls r0, 2
	adds r1, 0x2
	adds r0, r1
	ldrh r0, [r0]
	strh r0, [r6, 0x16]
	ldrb r0, [r2, 0x8]
	lsls r0, 2
	adds r0, r1
	ldrh r0, [r0]
	strh r0, [r5, 0x16]
	b _081219D4
	.pool
_081218B0:
	ldr r0, =gUnknown_0203A134
	ldr r0, [r0]
	movs r1, 0x86
	lsls r1, 2
	adds r0, r1
	ldrb r0, [r0]
	cmp r0, 0
	bne _081218C2
	b _081219D4
_081218C2:
	bl sub_8121A1C
	b _081219D4
	.pool
_081218CC:
	ldr r0, =gUnknown_0203A134
	ldr r0, [r0]
	movs r2, 0x86
	lsls r2, 2
	adds r0, r2
	ldrb r0, [r0]
	cmp r0, 0
	bne _081218DE
	b _081219D4
_081218DE:
	bl sub_8121B1C
	bl RunTextPrinters
	b _081219D4
	.pool
_081218EC:
	bl sub_8087598
	cmp r0, 0x1
	bne _081219D4
	b _081219E2
_081218F6:
	ldr r0, =sub_8121C50
	bl SetVBlankCallback
	ldr r2, =gPaletteFade
	ldrb r0, [r2, 0x8]
	movs r1, 0x80
	orrs r0, r1
	strb r0, [r2, 0x8]
	b _081219D4
	.pool
_08121910:
	ldr r5, =gUnknown_0203A134
	ldr r0, [r5]
	movs r1, 0x85
	lsls r1, 2
	adds r0, r1
	ldr r0, [r0]
	ldrh r0, [r0, 0x1E]
	bl sub_80D2E84
	lsls r0, 16
	lsrs r4, r0, 16
	ldr r0, [r5]
	ldr r2, =0x0000021b
	adds r0, r2
	ldrb r0, [r0]
	cmp r0, 0x1
	beq _08121940
	cmp r0, 0x2
	beq _08121958
	b _081219D4
	.pool
_08121940:
	adds r0, r4, 0
	bl sub_80D2F68
	ldr r1, =SpriteCallbackDummy
	movs r0, 0
	str r0, [sp]
	str r0, [sp, 0x4]
	adds r0, r4, 0
	movs r2, 0x60
	b _0812196A
	.pool
_08121958:
	adds r0, r4, 0
	bl sub_80D2F68
	ldr r1, =SpriteCallbackDummy
	movs r0, 0
	str r0, [sp]
	str r0, [sp, 0x4]
	adds r0, r4, 0
	movs r2, 0x28
_0812196A:
	movs r3, 0x80
	bl sub_80D2D78
	ldr r1, [r5]
	movs r2, 0x87
	lsls r2, 2
	adds r1, r2
	strb r0, [r1]
	b _081219D4
	.pool
_08121980:
	movs r1, 0x82
	lsls r1, 5
	movs r0, 0
	bl SetGpuReg
	movs r0, 0
	bl ShowBg
	movs r0, 0x1
	bl ShowBg
	movs r0, 0x2
	bl ShowBg
	movs r0, 0x1
	negs r0, r0
	movs r1, 0
	str r1, [sp]
	movs r2, 0x10
	movs r3, 0
	bl BeginNormalPaletteFade
	ldr r2, =gPaletteFade
	ldrb r1, [r2, 0x8]
	movs r0, 0x7F
	ands r0, r1
	strb r0, [r2, 0x8]
	ldr r0, =gUnknown_0203A134
	ldr r0, [r0]
	movs r1, 0x84
	lsls r1, 2
	adds r0, r1
	ldr r1, =sub_8121C98
	str r1, [r0]
	movs r0, 0x1
	b _081219E4
	.pool
_081219D4:
	ldr r1, =gMain
	movs r2, 0x87
	lsls r2, 3
	adds r1, r2
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
_081219E2:
	movs r0, 0
_081219E4:
	add sp, 0xC
	pop {r4-r6}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_81215EC

	thumb_func_start sub_81219F0
sub_81219F0: @ 81219F0
	push {lr}
_081219F2:
	bl sub_81215EC
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _08121A0C
	ldr r0, =sub_8121C64
	bl SetMainCallback2
	b _08121A18
	.pool
_08121A0C:
	bl sub_81221AC
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _081219F2
_08121A18:
	pop {r0}
	bx r0
	thumb_func_end sub_81219F0

	thumb_func_start sub_8121A1C
sub_8121A1C: @ 8121A1C
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	movs r6, 0
	movs r5, 0
	ldr r2, =gUnknown_0203A134
	ldr r0, [r2]
	movs r1, 0x8A
	lsls r1, 2
	adds r0, r1
	ldr r0, [r0]
	ldrb r0, [r0]
	cmp r5, r0
	bcs _08121A8A
	mov r8, r2
	adds r7, r1, 0
_08121A3C:
	lsls r0, r5, 6
	mov r1, r8
	ldr r2, [r1]
	adds r0, r2, r0
	movs r3, 0x85
	lsls r3, 2
	adds r1, r2, r3
	lsls r3, r6, 1
	ldr r1, [r1]
	adds r1, r3
	adds r2, r7
	ldr r2, [r2]
	ldr r2, [r2, 0x8]
	lsls r4, r5, 2
	adds r2, r4, r2
	ldr r2, [r2]
	lsls r2, 30
	lsrs r2, 30
	movs r3, 0x1
	bl ConvertEasyChatWordsToString
	mov r1, r8
	ldr r0, [r1]
	adds r0, r7
	ldr r1, [r0]
	ldr r0, [r1, 0x8]
	adds r4, r0
	ldr r0, [r4]
	lsls r0, 30
	lsrs r0, 30
	adds r0, r6, r0
	lsls r0, 24
	lsrs r6, r0, 24
	adds r0, r5, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	ldrb r1, [r1]
	cmp r5, r1
	bcc _08121A3C
_08121A8A:
	ldr r4, =gUnknown_0203A134
	ldr r1, [r4]
	movs r2, 0x80
	lsls r2, 2
	adds r0, r1, r2
	movs r3, 0x85
	lsls r3, 2
	adds r1, r3
	ldr r1, [r1]
	adds r1, 0x12
	bl StringCopy
	adds r2, r0, 0
	ldr r1, [r4]
	ldr r3, =0x0000021e
	adds r0, r1, r3
	ldrb r0, [r0]
	cmp r0, 0
	bne _08121AF0
	ldr r1, =gUnknown_085EEA78
	adds r0, r2, 0
	bl StringCopy
	ldr r0, [r4]
	movs r1, 0x80
	lsls r1, 2
	adds r0, r1
	bl StringLength
	ldr r2, [r4]
	movs r3, 0x8A
	lsls r3, 2
	adds r1, r2, r3
	ldr r1, [r1]
	lsls r0, 16
	lsrs r0, 13
	subs r0, 0x60
	ldrb r1, [r1, 0x2]
	subs r1, r0
	ldr r0, =0x00000219
	adds r2, r0
	strb r1, [r2]
	b _08121B0C
	.pool
_08121AF0:
	movs r2, 0x80
	lsls r2, 2
	adds r0, r1, r2
	bl sub_81DB52C
	ldr r0, [r4]
	movs r3, 0x8A
	lsls r3, 2
	adds r1, r0, r3
	ldr r1, [r1]
	ldrb r1, [r1, 0x2]
	ldr r2, =0x00000219
	adds r0, r2
	strb r1, [r0]
_08121B0C:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8121A1C

	thumb_func_start sub_8121B1C
sub_8121B1C: @ 8121B1C
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x2C
	movs r7, 0
	movs r0, 0
	bl PutWindowTilemap
	movs r0, 0x1
	bl PutWindowTilemap
	movs r0, 0
	movs r1, 0
	bl FillWindowPixelBuffer
	movs r0, 0x1
	movs r1, 0
	bl FillWindowPixelBuffer
	movs r6, 0
	ldr r1, =gUnknown_0203A134
	ldr r0, [r1]
	movs r2, 0x8A
	lsls r2, 2
	mov r10, r2
	add r0, r10
	ldr r0, [r0]
	ldrb r0, [r0]
	cmp r6, r0
	bcs _08121BCC
	mov r9, r1
	mov r8, r10
_08121B60:
	mov r0, r9
	ldr r1, [r0]
	lsls r0, r6, 6
	adds r5, r1, r0
	ldrb r0, [r5]
	cmp r0, 0xFF
	beq _08121BB8
	cmp r0, 0
	beq _08121BB8
	mov r2, r8
	adds r0, r1, r2
	ldr r1, [r0]
	ldr r0, [r1, 0x8]
	lsls r4, r6, 2
	adds r0, r4, r0
	ldr r2, [r0]
	lsls r2, 24
	lsrs r2, 26
	ldrb r0, [r1, 0x4]
	adds r2, r0
	lsls r2, 24
	lsrs r2, 24
	ldrb r3, [r1, 0x3]
	adds r3, r7, r3
	lsls r3, 24
	lsrs r3, 24
	ldr r0, =gUnknown_0859F2AC
	str r0, [sp]
	movs r0, 0
	str r0, [sp, 0x4]
	str r5, [sp, 0x8]
	movs r1, 0x1
	bl box_print
	mov r1, r9
	ldr r0, [r1]
	add r0, r8
	ldr r0, [r0]
	ldr r0, [r0, 0x8]
	adds r4, r0
	ldrb r0, [r4, 0x1]
	adds r0, r7, r0
	lsls r0, 24
	lsrs r7, r0, 24
_08121BB8:
	adds r0, r6, 0x1
	lsls r0, 16
	lsrs r6, r0, 16
	ldr r2, =gUnknown_0203A134
	ldr r0, [r2]
	add r0, r10
	ldr r0, [r0]
	ldrb r0, [r0]
	cmp r6, r0
	bcc _08121B60
_08121BCC:
	ldr r1, =gUnknown_085EEA78
	add r0, sp, 0xC
	bl StringCopy
	ldr r4, =gUnknown_0203A134
	ldr r1, [r4]
	movs r2, 0x80
	lsls r2, 2
	adds r1, r2
	bl StringCopy
	ldr r0, [r4]
	ldr r1, =0x00000219
	adds r0, r1
	ldrb r2, [r0]
	movs r0, 0x1
	add r1, sp, 0xC
	bl GetStringCenterAlignXOffset
	adds r2, r0, 0
	adds r2, 0x68
	ldr r0, [r4]
	movs r1, 0x8A
	lsls r1, 2
	adds r0, r1
	ldr r0, [r0]
	ldrb r3, [r0, 0x1]
	adds r3, 0x58
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 24
	lsrs r3, 24
	ldr r0, =gUnknown_0859F2AC
	str r0, [sp]
	movs r0, 0
	str r0, [sp, 0x4]
	add r0, sp, 0xC
	str r0, [sp, 0x8]
	movs r0, 0
	movs r1, 0x1
	bl box_print
	movs r0, 0
	movs r1, 0x3
	bl CopyWindowToVram
	movs r0, 0x1
	movs r1, 0x3
	bl CopyWindowToVram
	add sp, 0x2C
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8121B1C

	thumb_func_start sub_8121C50
sub_8121C50: @ 8121C50
	push {lr}
	bl LoadOam
	bl ProcessSpriteCopyRequests
	bl TransferPlttBuffer
	pop {r0}
	bx r0
	thumb_func_end sub_8121C50

	thumb_func_start sub_8121C64
sub_8121C64: @ 8121C64
	push {r4,lr}
	ldr r4, =gUnknown_0203A134
	ldr r0, [r4]
	ldr r1, =0x0000021b
	adds r0, r1
	ldrb r0, [r0]
	cmp r0, 0
	beq _08121C7C
	bl AnimateSprites
	bl BuildOamBuffer
_08121C7C:
	ldr r0, [r4]
	movs r1, 0x84
	lsls r1, 2
	adds r0, r1
	ldr r0, [r0]
	bl _call_via_r0
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8121C64

	thumb_func_start sub_8121C98
sub_8121C98: @ 8121C98
	push {lr}
	bl UpdatePaletteFade
	lsls r0, 24
	cmp r0, 0
	bne _08121CB2
	ldr r0, =gUnknown_0203A134
	ldr r0, [r0]
	movs r1, 0x84
	lsls r1, 2
	adds r0, r1
	ldr r1, =sub_8121CC0
	str r1, [r0]
_08121CB2:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8121C98

	thumb_func_start sub_8121CC0
sub_8121CC0: @ 8121CC0
	push {lr}
	sub sp, 0x4
	ldr r0, =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0x3
	ands r0, r1
	cmp r0, 0
	beq _08121CEE
	movs r0, 0x1
	negs r0, r0
	movs r1, 0
	str r1, [sp]
	movs r2, 0
	movs r3, 0x10
	bl BeginNormalPaletteFade
	ldr r0, =gUnknown_0203A134
	ldr r0, [r0]
	movs r1, 0x84
	lsls r1, 2
	adds r0, r1
	ldr r1, =sub_8121D00
	str r1, [r0]
_08121CEE:
	add sp, 0x4
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8121CC0

	thumb_func_start sub_8121D00
sub_8121D00: @ 8121D00
	push {r4,lr}
	bl UpdatePaletteFade
	lsls r0, 24
	cmp r0, 0
	bne _08121D88
	ldr r4, =gUnknown_0203A134
	ldr r0, [r4]
	movs r1, 0x83
	lsls r1, 2
	adds r0, r1
	ldr r0, [r0]
	bl SetMainCallback2
	ldr r1, [r4]
	ldr r2, =0x0000021b
	adds r0, r1, r2
	ldrb r0, [r0]
	cmp r0, 0x2
	bgt _08121D58
	cmp r0, 0x1
	blt _08121D58
	subs r2, 0x7
	adds r0, r1, r2
	ldr r0, [r0]
	ldrh r0, [r0, 0x1E]
	bl sub_80D2E84
	lsls r0, 16
	lsrs r0, 16
	bl sub_80D2FF0
	ldr r0, [r4]
	movs r1, 0x87
	lsls r1, 2
	adds r0, r1
	ldrb r1, [r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl sub_80D2EF8
_08121D58:
	ldr r4, =gUnknown_0203A134
	ldr r0, [r4]
	ldr r2, =0x0000222c
	movs r1, 0
	bl memset
	bl ResetPaletteFade
	movs r0, 0
	bl UnsetBgTilemapBuffer
	movs r0, 0x1
	bl UnsetBgTilemapBuffer
	movs r0, 0
	bl ResetBgsAndClearDma3BusyFlags
	bl FreeAllWindowBuffers
	ldr r0, [r4]
	bl Free
	movs r0, 0
	str r0, [r4]
_08121D88:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8121D00

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