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

	.syntax unified

	.text

	thumb_func_start sub_8122CDC
sub_8122CDC: @ 8122CDC
	push {lr}
	lsls r2, r1, 24
	lsrs r2, 24
	movs r1, 0
	bl sub_8122CF8
_08122CE8:
	bl sub_8122DB0
	lsls r0, 24
	cmp r0, 0
	bne _08122CE8
	pop {r0}
	bx r0
	thumb_func_end sub_8122CDC

	thumb_func_start sub_8122CF8
sub_8122CF8: @ 8122CF8
	push {r4,r5,lr}
	adds r4, r1, 0
	lsls r2, 24
	lsrs r2, 24
	ldr r3, =gUnknown_0203A144
	str r0, [r3]
	movs r1, 0x79
	adds r1, r0
	mov r12, r1
	movs r1, 0
	mov r5, r12
	strb r1, [r5]
	adds r0, 0x78
	strb r2, [r0]
	ldr r1, [r3]
	cmp r2, 0x1
	bne _08122D28
	ldr r0, =sub_8123254
	b _08122D2A
	.pool
_08122D28:
	ldr r0, =sub_81230C4
_08122D2A:
	str r0, [r1, 0x18]
	cmp r4, 0
	beq _08122D64
	ldr r1, [r3]
	ldr r0, [r4]
	lsls r0, 30
	lsrs r0, 30
	adds r1, 0x80
	strb r0, [r1]
	ldr r1, [r3]
	ldr r0, [r4]
	lsls r0, 28
	lsrs r0, 30
	adds r1, 0x81
	strb r0, [r1]
	ldr r1, [r3]
	ldr r0, [r4]
	lsls r0, 23
	lsrs r0, 27
	adds r1, 0x82
	strb r0, [r1]
	ldr r0, [r3]
	adds r0, 0x83
	movs r1, 0x1
	strb r1, [r0]
	b _08122D80
	.pool
_08122D64:
	ldr r0, [r3]
	adds r0, 0x80
	movs r1, 0x2
	strb r1, [r0]
	ldr r0, [r3]
	adds r0, 0x81
	strb r1, [r0]
	ldr r0, [r3]
	adds r0, 0x82
	movs r1, 0x1C
	strb r1, [r0]
	ldr r0, [r3]
	adds r0, 0x83
	strb r4, [r0]
_08122D80:
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_8122CF8

	thumb_func_start sub_8122D88
sub_8122D88: @ 8122D88
	push {r4,lr}
	ldr r4, =gUnknown_0203A144
	str r0, [r4]
	bl sub_81238AC
	ldr r2, [r4]
	adds r0, r2, 0
	adds r0, 0x54
	ldrh r1, [r0]
	adds r0, 0x20
	strh r1, [r0]
	subs r0, 0x1E
	ldrh r1, [r0]
	adds r0, 0x20
	strh r1, [r0]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8122D88

	thumb_func_start sub_8122DB0
sub_8122DB0: @ 8122DB0
	push {r4,r5,lr}
	sub sp, 0xC
	ldr r0, =gUnknown_0203A144
	ldr r0, [r0]
	adds r0, 0x79
	ldrb r0, [r0]
	cmp r0, 0x7
	bls _08122DC2
	b _0812300C
_08122DC2:
	lsls r0, 2
	ldr r1, =_08122DD4
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_08122DD4:
	.4byte _08122DF4
	.4byte _08122E2C
	.4byte _08122E78
	.4byte _08122E94
	.4byte _08122EB0
	.4byte _08122ECC
	.4byte _08122F10
	.4byte _08122F8C
_08122DF4:
	ldr r0, =gUnknown_0203A144
	ldr r1, [r0]
	adds r0, r1, 0
	adds r0, 0x83
	ldrb r0, [r0]
	cmp r0, 0
	beq _08122E18
	adds r0, r1, 0
	adds r0, 0x80
	ldrb r0, [r0]
	ldr r1, =gUnknown_0859F77C
	movs r2, 0
	str r2, [sp]
	b _08122E52
	.pool
_08122E18:
	ldr r0, =gUnknown_0859F77C
	ldr r1, =0x06008000
	bl LZ77UnCompVram
	b _08123014
	.pool
_08122E2C:
	ldr r4, =gUnknown_0203A144
	ldr r0, [r4]
	adds r0, 0x83
	ldrb r0, [r0]
	cmp r0, 0
	beq _08122E64
	bl free_temp_tile_data_buffers_if_possible
	lsls r0, 24
	cmp r0, 0
	beq _08122E44
	b _08123014
_08122E44:
	ldr r0, [r4]
	adds r0, 0x80
	ldrb r0, [r0]
	ldr r1, =gUnknown_085A04E0
	movs r2, 0x1
	str r2, [sp]
	movs r2, 0
_08122E52:
	movs r3, 0
	bl decompress_and_copy_tile_data_to_vram
	b _08123014
	.pool
_08122E64:
	ldr r0, =gUnknown_085A04E0
	ldr r1, =0x0600e000
	bl LZ77UnCompVram
	b _08123014
	.pool
_08122E78:
	bl free_temp_tile_data_buffers_if_possible
	lsls r0, 24
	cmp r0, 0
	beq _08122E84
	b _08123014
_08122E84:
	ldr r0, =gUnknown_0859F73C
	movs r1, 0x70
	movs r2, 0x60
	bl LoadPalette
	b _08123014
	.pool
_08122E94:
	ldr r0, =gUnknown_0859F60C
	ldr r1, =gUnknown_0203A144
	ldr r1, [r1]
	movs r2, 0xC2
	lsls r2, 1
	adds r1, r2
	bl LZ77UnCompWram
	b _08123014
	.pool
_08122EB0:
	ldr r0, =gUnknown_0859F650
	ldr r1, =gUnknown_0203A144
	ldr r1, [r1]
	movs r5, 0xA1
	lsls r5, 2
	adds r1, r5
	bl LZ77UnCompWram
	b _08123014
	.pool
_08122ECC:
	bl sub_81238AC
	ldr r4, =gUnknown_0203A144
	ldr r2, [r4]
	adds r0, r2, 0
	adds r0, 0x54
	ldrh r1, [r0]
	adds r0, 0x20
	strh r1, [r0]
	subs r0, 0x1E
	ldrh r0, [r0]
	adds r1, r2, 0
	adds r1, 0x76
	strh r0, [r1]
	ldrh r0, [r2]
	bl sub_8123EB4
	ldr r1, [r4]
	strh r0, [r1]
	ldrh r0, [r1]
	bl get_flagnr_blue_points
	ldr r1, [r4]
	strb r0, [r1, 0x2]
	ldr r1, [r4]
	adds r0, r1, 0x4
	ldrh r1, [r1]
	movs r2, 0x10
	bl GetMapName
	b _08123014
	.pool
_08122F10:
	ldr r0, =gUnknown_0203A144
	ldr r4, [r0]
	adds r0, r4, 0
	adds r0, 0x78
	ldrb r1, [r0]
	cmp r1, 0
	bne _08122F3C
	movs r0, 0x80
	lsls r0, 1
	str r0, [sp]
	str r0, [sp, 0x4]
	str r1, [sp, 0x8]
	movs r0, 0
	movs r1, 0
	movs r2, 0
	movs r3, 0
	bl sub_81236C4
	b _08123014
	.pool
_08122F3C:
	adds r1, r4, 0
	adds r1, 0x54
	ldrh r0, [r1]
	lsls r0, 3
	subs r0, 0x34
	adds r2, r4, 0
	adds r2, 0x5C
	movs r3, 0
	strh r0, [r2]
	movs r0, 0x56
	adds r0, r4
	mov r12, r0
	ldrh r0, [r0]
	lsls r0, 3
	subs r0, 0x44
	adds r5, r4, 0
	adds r5, 0x5E
	strh r0, [r5]
	ldrh r1, [r1]
	adds r0, r4, 0
	adds r0, 0x64
	strh r1, [r0]
	mov r0, r12
	ldrh r1, [r0]
	adds r0, r4, 0
	adds r0, 0x66
	strh r1, [r0]
	movs r1, 0
	ldrsh r0, [r2, r1]
	movs r2, 0
	ldrsh r1, [r5, r2]
	movs r2, 0x80
	str r2, [sp]
	str r2, [sp, 0x4]
	str r3, [sp, 0x8]
	movs r2, 0x38
	movs r3, 0x48
	bl sub_81236C4
	b _08123014
_08122F8C:
	bl sub_8123FB0
	bl sub_81237B4
	ldr r4, =gUnknown_0203A144
	ldr r0, [r4]
	movs r1, 0
	str r1, [r0, 0x1C]
	str r1, [r0, 0x20]
	adds r0, 0x7A
	strb r1, [r0]
	ldr r0, [r4]
	adds r0, 0x7E
	strb r1, [r0]
	ldr r1, [r4]
	adds r0, r1, 0
	adds r0, 0x83
	ldrb r0, [r0]
	cmp r0, 0
	beq _08123002
	adds r0, r1, 0
	adds r0, 0x80
	ldrb r0, [r0]
	movs r1, 0x3
	movs r2, 0x2
	bl SetBgAttribute
	ldr r1, [r4]
	adds r0, r1, 0
	adds r0, 0x80
	ldrb r0, [r0]
	adds r1, 0x81
	ldrb r2, [r1]
	movs r1, 0x1
	bl SetBgAttribute
	ldr r1, [r4]
	adds r0, r1, 0
	adds r0, 0x80
	ldrb r0, [r0]
	adds r1, 0x82
	ldrb r2, [r1]
	movs r1, 0x2
	bl SetBgAttribute
	ldr r0, [r4]
	adds r0, 0x80
	ldrb r0, [r0]
	movs r1, 0x6
	movs r2, 0x1
	bl SetBgAttribute
	ldr r0, [r4]
	adds r0, 0x80
	ldrb r0, [r0]
	movs r1, 0x4
	movs r2, 0x1
	bl SetBgAttribute
_08123002:
	ldr r1, [r4]
	adds r1, 0x79
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
_0812300C:
	movs r0, 0
	b _08123022
	.pool
_08123014:
	ldr r0, =gUnknown_0203A144
	ldr r1, [r0]
	adds r1, 0x79
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	movs r0, 0x1
_08123022:
	add sp, 0xC
	pop {r4,r5}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_8122DB0

	thumb_func_start sub_8123030
sub_8123030: @ 8123030
	push {lr}
	adds r2, r0, 0
	lsls r2, 16
	lsrs r2, 16
	movs r0, 0xE0
	lsls r0, 2
	lsls r1, 24
	lsrs r1, 24
	bl BlendPalettes
	ldr r0, =gPlttBufferFaded + 0xE0
	ldr r1, =gPlttBufferUnfaded + 0xE0
	movs r2, 0x30
	bl CpuSet
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8123030

	thumb_func_start sub_812305C
sub_812305C: @ 812305C
	push {r4,lr}
	ldr r4, =gUnknown_0203A144
	ldr r0, [r4]
	ldr r0, [r0, 0x1C]
	cmp r0, 0
	beq _08123080
	bl DestroySprite
	ldr r0, [r4]
	adds r0, 0x58
	ldrh r0, [r0]
	bl FreeSpriteTilesByTag
	ldr r0, [r4]
	adds r0, 0x5A
	ldrh r0, [r0]
	bl FreeSpritePaletteByTag
_08123080:
	ldr r0, [r4]
	ldr r0, [r0, 0x20]
	cmp r0, 0
	beq _081230A0
	bl DestroySprite
	ldr r0, [r4]
	adds r0, 0x70
	ldrh r0, [r0]
	bl FreeSpriteTilesByTag
	ldr r0, [r4]
	adds r0, 0x72
	ldrh r0, [r0]
	bl FreeSpritePaletteByTag
_081230A0:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812305C

	thumb_func_start sub_81230AC
sub_81230AC: @ 81230AC
	push {lr}
	ldr r0, =gUnknown_0203A144
	ldr r0, [r0]
	ldr r0, [r0, 0x18]
	bl _call_via_r0
	lsls r0, 24
	lsrs r0, 24
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_81230AC

	thumb_func_start sub_81230C4
sub_81230C4: @ 81230C4
	push {r4,lr}
	movs r4, 0
	ldr r2, =gUnknown_0203A144
	ldr r0, [r2]
	adds r0, 0x7B
	strb r4, [r0]
	ldr r0, [r2]
	adds r0, 0x7C
	strb r4, [r0]
	ldr r3, =gMain
	ldrh r1, [r3, 0x2C]
	movs r0, 0x40
	ands r0, r1
	cmp r0, 0
	beq _081230F6
	ldr r1, [r2]
	adds r0, r1, 0
	adds r0, 0x56
	ldrh r0, [r0]
	cmp r0, 0x2
	bls _081230F6
	adds r1, 0x7C
	movs r0, 0xFF
	strb r0, [r1]
	movs r4, 0x1
_081230F6:
	ldrh r1, [r3, 0x2C]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _08123114
	ldr r1, [r2]
	adds r0, r1, 0
	adds r0, 0x56
	ldrh r0, [r0]
	cmp r0, 0xF
	bhi _08123114
	adds r1, 0x7C
	movs r0, 0x1
	strb r0, [r1]
	movs r4, 0x1
_08123114:
	ldrh r1, [r3, 0x2C]
	movs r0, 0x20
	ands r0, r1
	cmp r0, 0
	beq _08123132
	ldr r1, [r2]
	adds r0, r1, 0
	adds r0, 0x54
	ldrh r0, [r0]
	cmp r0, 0x1
	bls _08123132
	adds r1, 0x7B
	movs r0, 0xFF
	strb r0, [r1]
	movs r4, 0x1
_08123132:
	ldrh r1, [r3, 0x2C]
	movs r0, 0x10
	ands r0, r1
	cmp r0, 0
	beq _08123150
	ldr r1, [r2]
	adds r0, r1, 0
	adds r0, 0x54
	ldrh r0, [r0]
	cmp r0, 0x1B
	bhi _08123150
	adds r1, 0x7B
	movs r0, 0x1
	strb r0, [r1]
	movs r4, 0x1
_08123150:
	ldrh r3, [r3, 0x2E]
	movs r0, 0x1
	ands r0, r3
	cmp r0, 0
	beq _08123168
	movs r4, 0x4
	b _08123172
	.pool
_08123168:
	movs r0, 0x2
	ands r0, r3
	cmp r0, 0
	beq _08123172
	movs r4, 0x5
_08123172:
	cmp r4, 0x1
	bne _08123184
	ldr r0, [r2]
	adds r0, 0x7A
	movs r1, 0x4
	strb r1, [r0]
	ldr r1, [r2]
	ldr r0, =_swiopen
	str r0, [r1, 0x18]
_08123184:
	adds r0, r4, 0
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_81230C4

	thumb_func_start _swiopen
_swiopen: @ 8123190
	push {r4,r5,lr}
	ldr r5, =gUnknown_0203A144
	ldr r1, [r5]
	adds r0, r1, 0
	adds r0, 0x7A
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	cmp r0, 0
	beq _081231AC
	movs r0, 0x2
	b _08123248
	.pool
_081231AC:
	adds r0, r1, 0
	adds r0, 0x7B
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	cmp r0, 0
	ble _081231C2
	adds r1, 0x54
	ldrh r0, [r1]
	adds r0, 0x1
	strh r0, [r1]
_081231C2:
	ldr r1, [r5]
	adds r0, r1, 0
	adds r0, 0x7B
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	cmp r0, 0
	bge _081231DA
	adds r1, 0x54
	ldrh r0, [r1]
	subs r0, 0x1
	strh r0, [r1]
_081231DA:
	ldr r1, [r5]
	adds r0, r1, 0
	adds r0, 0x7C
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	cmp r0, 0
	ble _081231F2
	adds r1, 0x56
	ldrh r0, [r1]
	adds r0, 0x1
	strh r0, [r1]
_081231F2:
	ldr r1, [r5]
	adds r0, r1, 0
	adds r0, 0x7C
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	cmp r0, 0
	bge _0812320A
	adds r1, 0x56
	ldrh r0, [r1]
	subs r0, 0x1
	strh r0, [r1]
_0812320A:
	ldr r1, [r5]
	adds r0, r1, 0
	adds r0, 0x54
	ldrh r0, [r0]
	adds r1, 0x56
	ldrh r1, [r1]
	bl sub_812386C
	lsls r0, 16
	lsrs r4, r0, 16
	adds r0, r4, 0
	bl get_flagnr_blue_points
	ldr r1, [r5]
	strb r0, [r1, 0x2]
	ldr r1, [r5]
	ldrh r0, [r1]
	cmp r4, r0
	beq _0812323C
	strh r4, [r1]
	adds r0, r1, 0x4
	ldrh r1, [r1]
	movs r2, 0x10
	bl GetMapName
_0812323C:
	bl sub_8123FB0
	ldr r1, [r5]
	ldr r0, =sub_81230C4
	str r0, [r1, 0x18]
	movs r0, 0x3
_08123248:
	pop {r4,r5}
	pop {r1}
	bx r1
	.pool
	thumb_func_end _swiopen

	thumb_func_start sub_8123254
sub_8123254: @ 8123254
	push {r4-r6,lr}
	movs r4, 0
	ldr r3, =gUnknown_0203A144
	ldr r0, [r3]
	mov r12, r0
	adds r0, 0x6A
	strh r4, [r0]
	mov r5, r12
	adds r5, 0x68
	strh r4, [r5]
	ldr r2, =gMain
	ldrh r1, [r2, 0x2C]
	movs r0, 0x40
	ands r0, r1
	adds r6, r3, 0
	adds r3, r2, 0
	cmp r0, 0
	beq _0812328E
	mov r0, r12
	adds r0, 0x5E
	movs r2, 0
	ldrsh r1, [r0, r2]
	movs r0, 0x34
	negs r0, r0
	cmp r1, r0
	ble _0812328E
	ldr r0, =0x0000ffff
	strh r0, [r5]
	movs r4, 0x1
_0812328E:
	ldrh r1, [r3, 0x2C]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _081232AE
	ldr r1, [r6]
	adds r0, r1, 0
	adds r0, 0x5E
	movs r5, 0
	ldrsh r0, [r0, r5]
	cmp r0, 0x3B
	bgt _081232AE
	adds r1, 0x68
	movs r0, 0x1
	strh r0, [r1]
	movs r4, 0x1
_081232AE:
	ldrh r1, [r3, 0x2C]
	movs r0, 0x20
	ands r0, r1
	cmp r0, 0
	beq _081232D4
	ldr r2, [r6]
	adds r0, r2, 0
	adds r0, 0x5C
	movs r5, 0
	ldrsh r1, [r0, r5]
	movs r0, 0x2C
	negs r0, r0
	cmp r1, r0
	ble _081232D4
	adds r1, r2, 0
	adds r1, 0x6A
	ldr r0, =0x0000ffff
	strh r0, [r1]
	movs r4, 0x1
_081232D4:
	ldrh r1, [r3, 0x2C]
	movs r0, 0x10
	ands r0, r1
	cmp r0, 0
	beq _081232F4
	ldr r1, [r6]
	adds r0, r1, 0
	adds r0, 0x5C
	movs r2, 0
	ldrsh r0, [r0, r2]
	cmp r0, 0xAB
	bgt _081232F4
	adds r1, 0x6A
	movs r0, 0x1
	strh r0, [r1]
	movs r4, 0x1
_081232F4:
	ldrh r2, [r3, 0x2E]
	movs r0, 0x1
	ands r0, r2
	cmp r0, 0
	beq _08123300
	movs r4, 0x4
_08123300:
	movs r0, 0x2
	ands r0, r2
	cmp r0, 0
	beq _0812330A
	movs r4, 0x5
_0812330A:
	cmp r4, 0x1
	bne _0812331A
	ldr r0, [r6]
	ldr r1, =sub_8123334
	str r1, [r0, 0x18]
	adds r0, 0x6C
	movs r1, 0
	strh r1, [r0]
_0812331A:
	adds r0, r4, 0
	pop {r4-r6}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_8123254

	thumb_func_start sub_8123334
sub_8123334: @ 8123334
	push {r4,r5,lr}
	ldr r5, =gUnknown_0203A144
	ldr r2, [r5]
	adds r3, r2, 0
	adds r3, 0x5E
	adds r0, r2, 0
	adds r0, 0x68
	ldrh r0, [r0]
	ldrh r1, [r3]
	adds r0, r1
	strh r0, [r3]
	adds r1, r2, 0
	adds r1, 0x5C
	adds r0, r2, 0
	adds r0, 0x6A
	ldrh r0, [r0]
	ldrh r2, [r1]
	adds r0, r2
	strh r0, [r1]
	movs r4, 0
	ldrsh r0, [r1, r4]
	movs r2, 0
	ldrsh r1, [r3, r2]
	bl sub_812378C
	ldr r2, [r5]
	adds r1, r2, 0
	adds r1, 0x6C
	ldrh r0, [r1]
	adds r0, 0x1
	strh r0, [r1]
	lsls r0, 16
	lsrs r0, 16
	cmp r0, 0x8
	bne _08123410
	adds r0, r2, 0
	adds r0, 0x5C
	movs r3, 0
	ldrsh r1, [r0, r3]
	adds r0, r1, 0
	adds r0, 0x2C
	cmp r0, 0
	bge _0812338C
	adds r0, 0x7
_0812338C:
	asrs r0, 3
	adds r0, 0x1
	lsls r0, 16
	lsrs r3, r0, 16
	adds r0, r2, 0
	adds r0, 0x5E
	movs r4, 0
	ldrsh r1, [r0, r4]
	adds r0, r1, 0
	adds r0, 0x34
	cmp r0, 0
	bge _081233A6
	adds r0, 0x7
_081233A6:
	asrs r0, 3
	adds r0, 0x2
	lsls r0, 16
	lsrs r1, r0, 16
	adds r4, r2, 0
	adds r4, 0x64
	adds r0, r2, 0
	adds r0, 0x66
	ldrh r2, [r4]
	cmp r3, r2
	bne _081233C2
	ldrh r2, [r0]
	cmp r1, r2
	beq _081233F2
_081233C2:
	strh r3, [r4]
	strh r1, [r0]
	adds r0, r3, 0
	bl sub_812386C
	lsls r0, 16
	lsrs r4, r0, 16
	adds r0, r4, 0
	bl get_flagnr_blue_points
	ldr r1, [r5]
	strb r0, [r1, 0x2]
	ldr r1, [r5]
	ldrh r3, [r1]
	cmp r4, r3
	beq _081233EE
	strh r4, [r1]
	adds r0, r1, 0x4
	ldrh r1, [r1]
	movs r2, 0x10
	bl GetMapName
_081233EE:
	bl sub_8123FB0
_081233F2:
	ldr r0, =gUnknown_0203A144
	ldr r2, [r0]
	adds r1, r2, 0
	adds r1, 0x6C
	movs r0, 0
	strh r0, [r1]
	ldr r0, =sub_8123254
	str r0, [r2, 0x18]
	movs r0, 0x3
	b _08123412
	.pool
_08123410:
	movs r0, 0x2
_08123412:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8123334

	thumb_func_start sub_8123418
sub_8123418: @ 8123418
	push {r4-r6,lr}
	ldr r1, =gUnknown_0203A144
	ldr r2, [r1]
	adds r0, r2, 0
	adds r0, 0x78
	ldrb r3, [r0]
	adds r5, r1, 0
	cmp r3, 0
	bne _0812349C
	subs r0, 0x1A
	strh r3, [r0]
	subs r0, 0x2
	strh r3, [r0]
	str r3, [r2, 0x40]
	str r3, [r2, 0x3C]
	adds r4, r2, 0
	adds r4, 0x54
	ldrh r0, [r4]
	lsls r0, 3
	subs r0, 0x34
	adds r1, r2, 0
	adds r1, 0x60
	strh r0, [r1]
	movs r0, 0x56
	adds r0, r2
	mov r12, r0
	ldrh r0, [r0]
	lsls r0, 3
	subs r0, 0x44
	adds r3, r2, 0
	adds r3, 0x62
	strh r0, [r3]
	movs r6, 0
	ldrsh r0, [r1, r6]
	lsls r0, 8
	cmp r0, 0
	bge _08123464
	adds r0, 0xF
_08123464:
	asrs r0, 4
	str r0, [r2, 0x44]
	movs r1, 0
	ldrsh r0, [r3, r1]
	lsls r0, 8
	cmp r0, 0
	bge _08123474
	adds r0, 0xF
_08123474:
	asrs r0, 4
	str r0, [r2, 0x48]
	ldrh r1, [r4]
	adds r0, r2, 0
	adds r0, 0x64
	strh r1, [r0]
	mov r3, r12
	ldrh r0, [r3]
	adds r1, r2, 0
	adds r1, 0x66
	strh r0, [r1]
	movs r0, 0x80
	lsls r0, 9
	str r0, [r2, 0x4C]
	ldr r0, =0xfffff800
	b _081234FA
	.pool
_0812349C:
	adds r0, r2, 0
	adds r0, 0x5C
	movs r6, 0
	ldrsh r0, [r0, r6]
	lsls r0, 8
	str r0, [r2, 0x3C]
	adds r0, r2, 0
	adds r0, 0x5E
	movs r1, 0
	ldrsh r0, [r0, r1]
	lsls r0, 8
	str r0, [r2, 0x40]
	adds r0, r2, 0
	adds r0, 0x60
	movs r1, 0
	strh r1, [r0]
	adds r0, 0x2
	strh r1, [r0]
	ldr r0, [r2, 0x3C]
	cmp r0, 0
	bge _081234C8
	adds r0, 0xF
_081234C8:
	asrs r0, 4
	negs r0, r0
	str r0, [r2, 0x44]
	ldr r0, [r2, 0x40]
	cmp r0, 0
	bge _081234D6
	adds r0, 0xF
_081234D6:
	asrs r0, 4
	negs r0, r0
	str r0, [r2, 0x48]
	adds r0, r2, 0
	adds r0, 0x64
	ldrh r1, [r0]
	subs r0, 0x10
	strh r1, [r0]
	adds r0, 0x12
	ldrh r0, [r0]
	adds r1, r2, 0
	adds r1, 0x56
	strh r0, [r1]
	movs r0, 0x80
	lsls r0, 8
	str r0, [r2, 0x4C]
	movs r0, 0x80
	lsls r0, 4
_081234FA:
	str r0, [r2, 0x50]
	ldr r0, [r5]
	adds r0, 0x6E
	movs r1, 0
	strh r1, [r0]
	bl sub_8124238
	bl sub_81243B0
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_8123418

	thumb_func_start sub_8123514
sub_8123514: @ 8123514
	push {r4-r6,lr}
	sub sp, 0xC
	ldr r0, =gUnknown_0203A144
	ldr r3, [r0]
	adds r2, r3, 0
	adds r2, 0x6E
	ldrh r1, [r2]
	adds r5, r0, 0
	cmp r1, 0xF
	bls _08123530
	movs r0, 0
	b _081236B8
	.pool
_08123530:
	adds r0, r1, 0x1
	movs r1, 0
	strh r0, [r2]
	lsls r0, 16
	lsrs r0, 16
	cmp r0, 0x10
	bne _081235A4
	str r1, [r3, 0x44]
	str r1, [r3, 0x48]
	adds r0, r3, 0
	adds r0, 0x60
	ldrh r1, [r0]
	subs r0, 0x4
	strh r1, [r0]
	adds r0, 0x6
	ldrh r0, [r0]
	adds r1, r3, 0
	adds r1, 0x5E
	strh r0, [r1]
	adds r1, 0x1A
	ldrb r0, [r1]
	movs r2, 0x80
	lsls r2, 9
	cmp r0, 0
	bne _08123566
	movs r2, 0x80
	lsls r2, 8
_08123566:
	str r2, [r3, 0x4C]
	movs r2, 0
	ldrb r0, [r1]
	cmp r0, 0
	bne _08123572
	movs r2, 0x1
_08123572:
	strb r2, [r1]
	ldr r1, [r5]
	adds r0, r1, 0
	adds r0, 0x78
	ldrb r0, [r0]
	ldr r2, =sub_8123254
	cmp r0, 0
	bne _08123584
	ldr r2, =sub_81230C4
_08123584:
	str r2, [r1, 0x18]
	adds r0, r1, 0
	adds r0, 0x58
	ldrh r0, [r0]
	adds r1, 0x5A
	ldrh r1, [r1]
	bl sub_81240D4
	bl sub_81243DC
	movs r4, 0
	b _08123686
	.pool
_081235A4:
	ldr r2, [r3, 0x3C]
	ldr r0, [r3, 0x44]
	adds r2, r0
	str r2, [r3, 0x3C]
	ldr r0, [r3, 0x40]
	ldr r1, [r3, 0x48]
	adds r0, r1
	str r0, [r3, 0x40]
	asrs r2, 8
	adds r4, r3, 0
	adds r4, 0x5C
	strh r2, [r4]
	ldr r0, [r3, 0x40]
	asrs r0, 8
	adds r1, r3, 0
	adds r1, 0x5E
	strh r0, [r1]
	ldr r0, [r3, 0x4C]
	ldr r1, [r3, 0x50]
	adds r0, r1
	str r0, [r3, 0x4C]
	ldr r2, [r3, 0x44]
	cmp r2, 0
	bge _081235E4
	adds r0, r3, 0
	adds r0, 0x60
	movs r6, 0
	ldrsh r1, [r4, r6]
	movs r6, 0
	ldrsh r0, [r0, r6]
	cmp r1, r0
	blt _081235F8
_081235E4:
	cmp r2, 0
	ble _08123608
	adds r0, r3, 0
	adds r0, 0x60
	movs r2, 0
	ldrsh r1, [r4, r2]
	movs r6, 0
	ldrsh r0, [r0, r6]
	cmp r1, r0
	ble _08123608
_081235F8:
	ldr r3, [r5]
	adds r0, r3, 0
	adds r0, 0x60
	ldrh r2, [r0]
	subs r0, 0x4
	movs r1, 0
	strh r2, [r0]
	str r1, [r3, 0x44]
_08123608:
	ldr r2, [r5]
	ldr r4, [r2, 0x48]
	cmp r4, 0
	bge _08123624
	adds r0, r2, 0
	adds r0, 0x5E
	adds r3, r2, 0
	adds r3, 0x62
	movs r6, 0
	ldrsh r1, [r0, r6]
	movs r6, 0
	ldrsh r0, [r3, r6]
	cmp r1, r0
	blt _0812363C
_08123624:
	cmp r4, 0
	ble _0812364E
	adds r1, r2, 0
	adds r1, 0x5E
	adds r0, r2, 0
	adds r0, 0x62
	movs r2, 0
	ldrsh r1, [r1, r2]
	movs r6, 0
	ldrsh r0, [r0, r6]
	cmp r1, r0
	ble _0812364E
_0812363C:
	ldr r2, [r5]
	adds r0, r2, 0
	adds r0, 0x62
	ldrh r1, [r0]
	adds r3, r2, 0
	adds r3, 0x5E
	movs r0, 0
	strh r1, [r3]
	str r0, [r2, 0x48]
_0812364E:
	ldr r0, =gUnknown_0203A144
	ldr r2, [r0]
	adds r0, r2, 0
	adds r0, 0x78
	ldrb r3, [r0]
	cmp r3, 0
	bne _08123674
	ldr r1, [r2, 0x4C]
	ldr r0, =0x00007fff
	cmp r1, r0
	bgt _08123684
	adds r0, 0x1
	str r0, [r2, 0x4C]
	str r3, [r2, 0x50]
	b _08123684
	.pool
_08123674:
	ldr r0, [r2, 0x4C]
	movs r1, 0x80
	lsls r1, 9
	cmp r0, r1
	ble _08123684
	str r1, [r2, 0x4C]
	movs r0, 0
	str r0, [r2, 0x50]
_08123684:
	movs r4, 0x1
_08123686:
	ldr r0, =gUnknown_0203A144
	ldr r3, [r0]
	adds r0, r3, 0
	adds r0, 0x5C
	movs r1, 0
	ldrsh r0, [r0, r1]
	adds r1, r3, 0
	adds r1, 0x5E
	movs r2, 0
	ldrsh r1, [r1, r2]
	ldr r2, [r3, 0x4C]
	lsls r2, 8
	lsrs r2, 16
	str r2, [sp]
	ldr r2, [r3, 0x4C]
	lsls r2, 8
	lsrs r2, 16
	str r2, [sp, 0x4]
	movs r2, 0
	str r2, [sp, 0x8]
	movs r2, 0x38
	movs r3, 0x48
	bl sub_81236C4
	adds r0, r4, 0
_081236B8:
	add sp, 0xC
	pop {r4-r6}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_8123514

	thumb_func_start sub_81236C4
sub_81236C4: @ 81236C4
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x4
	ldr r4, [sp, 0x24]
	ldr r7, [sp, 0x28]
	ldr r5, [sp, 0x2C]
	lsls r4, 16
	lsrs r4, 16
	mov r8, r4
	lsls r7, 16
	adds r4, r7, 0
	lsrs r4, 16
	mov r9, r4
	lsls r5, 24
	lsrs r5, 24
	ldr r4, =gUnknown_0203A144
	ldr r6, [r4]
	ldr r7, =gSineTable
	mov r12, r7
	adds r4, r5, 0
	adds r4, 0x40
	lsls r4, 1
	add r4, r12
	movs r7, 0
	ldrsh r4, [r4, r7]
	str r4, [sp]
	mov r7, r8
	muls r7, r4
	adds r4, r7, 0
	asrs r4, 8
	mov r10, r4
	str r4, [r6, 0x2C]
	lsls r5, 1
	add r5, r12
	movs r7, 0
	ldrsh r5, [r5, r7]
	negs r4, r5
	mov r7, r8
	muls r7, r4
	adds r4, r7, 0
	asrs r4, 8
	mov r12, r4
	str r4, [r6, 0x30]
	mov r7, r9
	muls r7, r5
	adds r5, r7, 0
	asrs r5, 8
	str r5, [r6, 0x34]
	ldr r7, [sp]
	mov r4, r9
	muls r4, r7
	asrs r4, 8
	mov r8, r4
	str r4, [r6, 0x38]
	lsls r0, 16
	asrs r0, 8
	lsls r2, 16
	asrs r2, 16
	lsls r4, r2, 8
	adds r0, r4
	lsls r3, 16
	asrs r3, 16
	adds r4, r3, 0
	muls r4, r5
	mov r5, r10
	muls r5, r2
	adds r4, r5
	subs r0, r4
	str r0, [r6, 0x24]
	lsls r1, 16
	asrs r1, 8
	lsls r0, r3, 8
	adds r1, r0
	mov r0, r8
	muls r0, r3
	mov r3, r12
	muls r3, r2
	adds r2, r3, 0
	adds r0, r2
	subs r1, r0
	str r1, [r6, 0x28]
	adds r6, 0x7D
	movs r0, 0x1
	strb r0, [r6]
	add sp, 0x4
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_81236C4

	thumb_func_start sub_812378C
sub_812378C: @ 812378C
	ldr r2, =gUnknown_0203A144
	ldr r2, [r2]
	lsls r0, 16
	asrs r0, 8
	movs r3, 0xE0
	lsls r3, 5
	adds r0, r3
	str r0, [r2, 0x24]
	lsls r1, 16
	asrs r1, 8
	movs r0, 0x90
	lsls r0, 6
	adds r1, r0
	str r1, [r2, 0x28]
	adds r2, 0x7D
	movs r0, 0x1
	strb r0, [r2]
	bx lr
	.pool
	thumb_func_end sub_812378C

	thumb_func_start sub_81237B4
sub_81237B4: @ 81237B4
	push {r4,lr}
	ldr r4, =gUnknown_0203A144
	ldr r1, [r4]
	adds r0, r1, 0
	adds r0, 0x7D
	ldrb r0, [r0]
	cmp r0, 0
	beq _0812381A
	ldrh r1, [r1, 0x2C]
	movs r0, 0x20
	bl SetGpuReg
	ldr r0, [r4]
	ldrh r1, [r0, 0x34]
	movs r0, 0x22
	bl SetGpuReg
	ldr r0, [r4]
	ldrh r1, [r0, 0x30]
	movs r0, 0x24
	bl SetGpuReg
	ldr r0, [r4]
	ldrh r1, [r0, 0x38]
	movs r0, 0x26
	bl SetGpuReg
	ldr r0, [r4]
	ldrh r1, [r0, 0x24]
	movs r0, 0x28
	bl SetGpuReg
	ldr r0, [r4]
	ldrh r1, [r0, 0x26]
	movs r0, 0x2A
	bl SetGpuReg
	ldr r0, [r4]
	ldrh r1, [r0, 0x28]
	movs r0, 0x2C
	bl SetGpuReg
	ldr r0, [r4]
	ldrh r1, [r0, 0x2A]
	movs r0, 0x2E
	bl SetGpuReg
	ldr r0, [r4]
	adds r0, 0x7D
	movs r1, 0
	strb r1, [r0]
_0812381A:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_81237B4

	thumb_func_start sub_8123824
sub_8123824: @ 8123824
	push {r4,r5,lr}
	sub sp, 0xC
	lsls r0, 16
	asrs r4, r0, 16
	lsls r1, 16
	asrs r5, r1, 16
	movs r0, 0x80
	lsls r0, 1
	str r0, [sp]
	str r0, [sp, 0x4]
	movs r0, 0
	str r0, [sp, 0x8]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x38
	movs r3, 0x48
	bl sub_81236C4
	bl sub_81237B4
	ldr r0, =gUnknown_0203A144
	ldr r2, [r0]
	ldr r1, [r2, 0x20]
	cmp r1, 0
	beq _08123860
	negs r0, r4
	strh r0, [r1, 0x24]
	ldr r1, [r2, 0x20]
	negs r0, r5
	strh r0, [r1, 0x26]
_08123860:
	add sp, 0xC
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8123824

	thumb_func_start sub_812386C
sub_812386C: @ 812386C
	push {lr}
	lsls r0, 16
	lsrs r3, r0, 16
	lsls r1, 16
	ldr r0, =0xfffe0000
	adds r1, r0
	lsrs r2, r1, 16
	cmp r2, 0xE
	bhi _08123886
	cmp r3, 0
	beq _08123886
	cmp r3, 0x1C
	bls _08123890
_08123886:
	movs r0, 0xD5
	b _081238A4
	.pool
_08123890:
	subs r0, r3, 0x1
	lsls r0, 16
	lsrs r3, r0, 16
	ldr r1, =gUnknown_085A096C
	lsls r0, r2, 3
	subs r0, r2
	lsls r0, 2
	adds r0, r3, r0
	adds r0, r1
	ldrb r0, [r0]
_081238A4:
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_812386C

	thumb_func_start sub_81238AC
sub_81238AC: @ 81238AC
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0xC
	ldr r0, =gSaveBlock1Ptr
	ldr r2, [r0]
	movs r1, 0x4
	ldrsb r1, [r2, r1]
	adds r3, r0, 0
	cmp r1, 0x19
	bne _081238DC
	ldrb r0, [r2, 0x5]
	subs r0, 0x29
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x2
	bhi _081238DC
	bl sub_8123C00
	b _08123BEC
	.pool
_081238DC:
	ldr r1, [r3]
	movs r0, 0x4
	ldrsb r0, [r1, r0]
	ldrb r1, [r1, 0x5]
	lsls r1, 24
	asrs r1, 24
	bl get_map_light_level_by_bank_and_number
	lsls r0, 24
	lsrs r0, 24
	subs r0, 0x1
	cmp r0, 0x8
	bhi _08123928
	lsls r0, 2
	ldr r1, =_08123904
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_08123904:
	.4byte _08123928
	.4byte _08123928
	.4byte _08123928
	.4byte _0812396C
	.4byte _08123928
	.4byte _08123928
	.4byte _0812396C
	.4byte _08123A28
	.4byte _081239E4
_08123928:
	ldr r4, =gUnknown_0203A144
	ldr r0, [r4]
	ldr r3, =gMapHeader
	ldrb r1, [r3, 0x14]
	movs r2, 0
	strh r1, [r0]
	adds r0, 0x7F
	strb r2, [r0]
	ldr r0, [r3]
	ldrh r2, [r0]
	ldrh r0, [r0, 0x4]
	mov r9, r0
	ldr r0, =gSaveBlock1Ptr
	ldr r0, [r0]
	ldrh r6, [r0]
	ldrh r3, [r0, 0x2]
	ldr r1, [r4]
	ldrh r0, [r1]
	cmp r0, 0x45
	beq _08123956
	cmp r0, 0xCC
	beq _08123956
	b _08123ABE
_08123956:
	adds r1, 0x7F
	movs r0, 0x1
	strb r0, [r1]
	b _08123ABE
	.pool
_0812396C:
	ldr r2, =gMapHeader
	ldrb r1, [r2, 0x1A]
	movs r0, 0x2
	ands r0, r1
	cmp r0, 0
	beq _081239C8
	ldr r4, =gSaveBlock1Ptr
	ldr r1, [r4]
	adds r0, r1, 0
	adds r0, 0x24
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	lsls r0, 16
	lsrs r0, 16
	adds r1, 0x25
	ldrb r1, [r1]
	lsls r1, 24
	asrs r1, 24
	lsls r1, 16
	lsrs r1, 16
	bl get_mapheader_by_bank_and_number
	adds r5, r0, 0
	ldr r0, =gUnknown_0203A144
	ldr r0, [r0]
	ldrb r1, [r5, 0x14]
	strh r1, [r0]
	adds r0, 0x7F
	movs r1, 0x1
	strb r1, [r0]
	ldr r0, [r5]
	ldrh r2, [r0]
	ldrh r0, [r0, 0x4]
	mov r9, r0
	ldr r0, [r4]
	ldrh r6, [r0, 0x28]
	ldrh r3, [r0, 0x2A]
	b _08123ABE
	.pool
_081239C8:
	ldr r0, =gUnknown_0203A144
	ldr r0, [r0]
	ldrb r1, [r2, 0x14]
	strh r1, [r0]
	adds r0, 0x7F
	movs r1, 0x1
	strb r1, [r0]
	movs r2, 0x1
	mov r9, r2
	movs r6, 0x1
	movs r3, 0x1
	b _08123ABE
	.pool
_081239E4:
	ldr r4, =gSaveBlock1Ptr
	ldr r1, [r4]
	movs r0, 0x14
	ldrsb r0, [r1, r0]
	lsls r0, 16
	lsrs r0, 16
	ldrb r1, [r1, 0x15]
	lsls r1, 24
	asrs r1, 24
	lsls r1, 16
	lsrs r1, 16
	bl get_mapheader_by_bank_and_number
	adds r5, r0, 0
	ldr r0, =gUnknown_0203A144
	ldr r0, [r0]
	ldrb r1, [r5, 0x14]
	strh r1, [r0]
	adds r0, 0x7F
	movs r1, 0x1
	strb r1, [r0]
	ldr r0, [r5]
	ldrh r2, [r0]
	ldrh r0, [r0, 0x4]
	mov r9, r0
	ldr r0, [r4]
	ldrh r6, [r0, 0x18]
	ldrh r3, [r0, 0x1A]
	b _08123ABE
	.pool
_08123A28:
	ldr r4, =gUnknown_0203A144
	ldr r0, [r4]
	ldr r1, =gMapHeader
	ldrb r1, [r1, 0x14]
	strh r1, [r0]
	cmp r1, 0x57
	beq _08123A64
	ldr r0, =gSaveBlock1Ptr
	ldr r0, [r0]
	adds r7, r0, 0
	adds r7, 0x24
	movs r0, 0
	ldrsb r0, [r7, r0]
	lsls r0, 16
	lsrs r0, 16
	movs r1, 0x1
	ldrsb r1, [r7, r1]
	lsls r1, 16
	lsrs r1, 16
	bl get_mapheader_by_bank_and_number
	adds r5, r0, 0
	b _08123A8A
	.pool
_08123A64:
	ldr r0, =gSaveBlock1Ptr
	ldr r0, [r0]
	adds r7, r0, 0
	adds r7, 0x14
	ldrb r0, [r0, 0x14]
	lsls r0, 24
	asrs r0, 24
	lsls r0, 16
	lsrs r0, 16
	movs r1, 0x1
	ldrsb r1, [r7, r1]
	lsls r1, 16
	lsrs r1, 16
	bl get_mapheader_by_bank_and_number
	adds r5, r0, 0
	ldr r1, [r4]
	ldrb r0, [r5, 0x14]
	strh r0, [r1]
_08123A8A:
	ldr r4, =gUnknown_0203A144
	ldr r0, [r4]
	ldrb r0, [r0]
	bl sub_8123F74
	adds r1, r0, 0
	cmp r1, 0
	beq _08123AAC
	ldr r0, [r4]
	adds r0, 0x7F
	movs r1, 0x1
	b _08123AB0
	.pool
_08123AAC:
	ldr r0, [r4]
	adds r0, 0x7F
_08123AB0:
	strb r1, [r0]
	ldr r0, [r5]
	ldrh r2, [r0]
	ldrh r0, [r0, 0x4]
	mov r9, r0
	ldrh r6, [r7, 0x4]
	ldrh r3, [r7, 0x6]
_08123ABE:
	str r6, [sp]
	ldr r5, =gRegionMapEntries
	ldr r4, =gUnknown_0203A144
	ldr r0, [r4]
	mov r10, r0
	ldrh r7, [r0]
	lsls r0, r7, 3
	adds r0, r5
	str r0, [sp, 0x4]
	ldrb r0, [r0, 0x2]
	mov r8, r0
	adds r0, r2, 0
	mov r1, r8
	str r3, [sp, 0x8]
	bl __divsi3
	lsls r0, 16
	lsrs r1, r0, 16
	ldr r3, [sp, 0x8]
	cmp r1, 0
	bne _08123AEA
	movs r1, 0x1
_08123AEA:
	adds r0, r6, 0
	str r3, [sp, 0x8]
	bl __udivsi3
	lsls r0, 16
	lsrs r6, r0, 16
	ldr r3, [sp, 0x8]
	cmp r6, r8
	bcc _08123B04
	mov r0, r8
	subs r0, 0x1
	lsls r0, 16
	lsrs r6, r0, 16
_08123B04:
	ldr r2, [sp, 0x4]
	ldrb r4, [r2, 0x3]
	mov r0, r9
	adds r1, r4, 0
	str r3, [sp, 0x8]
	bl __divsi3
	lsls r0, 16
	lsrs r1, r0, 16
	ldr r3, [sp, 0x8]
	cmp r1, 0
	bne _08123B1E
	movs r1, 0x1
_08123B1E:
	adds r0, r3, 0
	bl __udivsi3
	lsls r0, 16
	lsrs r3, r0, 16
	cmp r3, r4
	bcc _08123B32
	subs r0, r4, 0x1
	lsls r0, 16
	lsrs r3, r0, 16
_08123B32:
	cmp r7, 0x29
	beq _08123B5E
	cmp r7, 0x29
	bgt _08123B4C
	cmp r7, 0x1D
	beq _08123B56
	cmp r7, 0x24
	beq _08123B94
	b _08123BC6
	.pool
_08123B4C:
	cmp r7, 0x33
	beq _08123B5E
	cmp r7, 0xCC
	beq _08123BB8
	b _08123BC6
_08123B56:
	cmp r3, 0
	beq _08123BC6
	movs r6, 0
	b _08123BC6
_08123B5E:
	movs r6, 0
	ldr r0, =gSaveBlock1Ptr
	ldr r1, [r0]
	movs r2, 0
	ldrsh r0, [r1, r2]
	cmp r0, 0x20
	ble _08123B6E
	movs r6, 0x1
_08123B6E:
	cmp r0, 0x33
	ble _08123B78
	adds r0, r6, 0x1
	lsls r0, 16
	lsrs r6, r0, 16
_08123B78:
	movs r3, 0
	movs r2, 0x2
	ldrsh r0, [r1, r2]
	cmp r0, 0x25
	ble _08123B84
	movs r3, 0x1
_08123B84:
	cmp r0, 0x38
	ble _08123BC6
	adds r0, r3, 0x1
	lsls r0, 16
	lsrs r3, r0, 16
	b _08123BC6
	.pool
_08123B94:
	movs r6, 0
	ldr r0, [sp]
	cmp r0, 0xE
	bls _08123B9E
	movs r6, 0x1
_08123B9E:
	ldr r2, [sp]
	cmp r2, 0x1C
	bls _08123BAA
	adds r0, r6, 0x1
	lsls r0, 16
	lsrs r6, r0, 16
_08123BAA:
	ldr r0, [sp]
	cmp r0, 0x36
	bls _08123BC6
	adds r0, r6, 0x1
	lsls r0, 16
	lsrs r6, r0, 16
	b _08123BC6
_08123BB8:
	mov r0, r10
	adds r0, 0x54
	mov r1, r10
	adds r1, 0x56
	bl sub_8123F30
	b _08123BEC
_08123BC6:
	ldr r0, =gUnknown_0203A144
	ldr r2, [r0]
	ldrh r0, [r2]
	lsls r0, 3
	adds r0, r5
	ldrb r0, [r0]
	adds r0, r6, r0
	adds r0, 0x1
	adds r1, r2, 0
	adds r1, 0x54
	strh r0, [r1]
	ldrh r0, [r2]
	lsls r0, 3
	adds r0, r5
	ldrb r0, [r0, 0x1]
	adds r0, r3, r0
	adds r0, 0x2
	adds r2, 0x56
	strh r0, [r2]
_08123BEC:
	add sp, 0xC
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_81238AC

	thumb_func_start sub_8123C00
sub_8123C00: @ 8123C00
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x8
	movs r7, 0
	movs r0, 0
	mov r8, r0
	mov r4, sp
	adds r4, 0x1
	mov r5, sp
	adds r5, 0x2
	add r6, sp, 0x4
	mov r0, sp
	adds r1, r4, 0
	adds r2, r5, 0
	adds r3, r6, 0
	bl GetSSTidalLocation
	lsls r0, 24
	lsrs r0, 24
	mov r10, r5
	cmp r0, 0x4
	bhi _08123C94
	lsls r0, 2
	ldr r1, =_08123C40
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_08123C40:
	.4byte _08123C94
	.4byte _08123C54
	.4byte _08123C64
	.4byte _08123C74
	.4byte _08123C84
_08123C54:
	ldr r2, =gUnknown_0203A144
	ldr r1, [r2]
	movs r0, 0x8
	strh r0, [r1]
	b _08123D10
	.pool
_08123C64:
	ldr r2, =gUnknown_0203A144
	ldr r1, [r2]
	movs r0, 0xC
	strh r0, [r1]
	b _08123D10
	.pool
_08123C74:
	ldr r2, =gUnknown_0203A144
	ldr r1, [r2]
	movs r0, 0x27
	strh r0, [r1]
	b _08123D10
	.pool
_08123C84:
	ldr r2, =gUnknown_0203A144
	ldr r1, [r2]
	movs r0, 0x2E
	strh r0, [r1]
	b _08123D10
	.pool
_08123C94:
	mov r0, sp
	ldrb r0, [r0]
	ldrb r1, [r4]
	bl get_mapheader_by_bank_and_number
	ldr r1, =gUnknown_0203A144
	mov r9, r1
	ldr r2, [r1]
	ldrb r1, [r0, 0x14]
	strh r1, [r2]
	ldr r6, [r0]
	ldr r1, =gRegionMapEntries
	ldrh r0, [r2]
	lsls r0, 3
	adds r5, r0, r1
	ldrb r4, [r5, 0x2]
	ldr r0, [r6]
	adds r1, r4, 0
	bl __divsi3
	lsls r0, 16
	lsrs r1, r0, 16
	cmp r1, 0
	bne _08123CC6
	movs r1, 0x1
_08123CC6:
	mov r2, r10
	movs r3, 0
	ldrsh r0, [r2, r3]
	bl __divsi3
	lsls r0, 16
	lsrs r0, 16
	mov r8, r0
	cmp r8, r4
	bcc _08123CE2
	subs r0, r4, 0x1
	lsls r0, 16
	lsrs r0, 16
	mov r8, r0
_08123CE2:
	ldrb r4, [r5, 0x3]
	ldr r0, [r6, 0x4]
	adds r1, r4, 0
	bl __divsi3
	lsls r0, 16
	lsrs r1, r0, 16
	cmp r1, 0
	bne _08123CF6
	movs r1, 0x1
_08123CF6:
	mov r2, sp
	movs r3, 0x4
	ldrsh r0, [r2, r3]
	bl __divsi3
	lsls r0, 16
	lsrs r7, r0, 16
	mov r2, r9
	cmp r7, r4
	bcc _08123D10
	subs r0, r4, 0x1
	lsls r0, 16
	lsrs r7, r0, 16
_08123D10:
	ldr r0, [r2]
	adds r0, 0x7F
	movs r1, 0
	strb r1, [r0]
	ldr r2, [r2]
	ldr r3, =gRegionMapEntries
	ldrh r0, [r2]
	lsls r0, 3
	adds r0, r3
	ldrb r0, [r0]
	add r0, r8
	adds r0, 0x1
	adds r1, r2, 0
	adds r1, 0x54
	strh r0, [r1]
	ldrh r0, [r2]
	lsls r0, 3
	adds r0, r3
	ldrb r0, [r0, 0x1]
	adds r0, r7, r0
	adds r0, 0x2
	adds r2, 0x56
	strh r0, [r2]
	add sp, 0x8
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8123C00

	thumb_func_start get_flagnr_blue_points
get_flagnr_blue_points: @ 8123D58
	push {lr}
	lsls r0, 16
	lsrs r0, 16
	adds r1, r0, 0
	cmp r0, 0x9
	beq _08123E18
	cmp r0, 0x9
	bgt _08123D9A
	cmp r0, 0x4
	beq _08123DF0
	cmp r0, 0x4
	bgt _08123D88
	cmp r0, 0x1
	beq _08123DD8
	cmp r0, 0x1
	bgt _08123D7E
	cmp r0, 0
	beq _08123DD0
	b _08123E94
_08123D7E:
	cmp r0, 0x2
	beq _08123DDE
	cmp r0, 0x3
	beq _08123DE8
	b _08123E94
_08123D88:
	cmp r0, 0x6
	beq _08123E00
	cmp r0, 0x6
	blt _08123DF8
	cmp r0, 0x7
	beq _08123E08
	cmp r0, 0x8
	beq _08123E10
	b _08123E94
_08123D9A:
	cmp r0, 0xE
	beq _08123E40
	cmp r0, 0xE
	bgt _08123DB4
	cmp r0, 0xB
	beq _08123E28
	cmp r0, 0xB
	blt _08123E20
	cmp r0, 0xC
	beq _08123E30
	cmp r0, 0xD
	beq _08123E38
	b _08123E94
_08123DB4:
	cmp r0, 0x3A
	beq _08123E60
	cmp r0, 0x3A
	bgt _08123DC2
	cmp r0, 0xF
	beq _08123E48
	b _08123E94
_08123DC2:
	cmp r1, 0x49
	beq _08123E7C
	cmp r1, 0xD5
	beq _08123DCC
	b _08123E94
_08123DCC:
	movs r0, 0
	b _08123E96
_08123DD0:
	ldr r0, =0x0000086f
	b _08123E4A
	.pool
_08123DD8:
	movs r0, 0x87
	lsls r0, 4
	b _08123E4A
_08123DDE:
	ldr r0, =0x00000871
	b _08123E4A
	.pool
_08123DE8:
	ldr r0, =0x00000872
	b _08123E4A
	.pool
_08123DF0:
	ldr r0, =0x00000873
	b _08123E4A
	.pool
_08123DF8:
	ldr r0, =0x00000874
	b _08123E4A
	.pool
_08123E00:
	ldr r0, =0x00000875
	b _08123E4A
	.pool
_08123E08:
	ldr r0, =0x00000876
	b _08123E4A
	.pool
_08123E10:
	ldr r0, =0x00000877
	b _08123E4A
	.pool
_08123E18:
	ldr r0, =0x00000878
	b _08123E4A
	.pool
_08123E20:
	ldr r0, =0x00000879
	b _08123E4A
	.pool
_08123E28:
	ldr r0, =0x0000087a
	b _08123E4A
	.pool
_08123E30:
	ldr r0, =0x0000087b
	b _08123E4A
	.pool
_08123E38:
	ldr r0, =0x0000087c
	b _08123E4A
	.pool
_08123E40:
	ldr r0, =0x0000087d
	b _08123E4A
	.pool
_08123E48:
	ldr r0, =0x0000087e
_08123E4A:
	bl FlagGet
	lsls r0, 24
	movs r1, 0x3
	cmp r0, 0
	beq _08123E58
	movs r1, 0x2
_08123E58:
	adds r0, r1, 0
	b _08123E96
	.pool
_08123E60:
	ldr r0, =0x000008a8
	bl FlagGet
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	negs r0, r1
	orrs r0, r1
	asrs r0, 31
	movs r1, 0x4
	ands r0, r1
	b _08123E96
	.pool
_08123E7C:
	ldr r0, =0x000008a9
	bl FlagGet
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	negs r0, r1
	orrs r0, r1
	lsrs r0, 31
	b _08123E96
	.pool
_08123E94:
	movs r0, 0x1
_08123E96:
	pop {r1}
	bx r1
	thumb_func_end get_flagnr_blue_points

	thumb_func_start sub_8123E9C
sub_8123E9C: @ 8123E9C
	push {lr}
	lsls r0, 16
	lsrs r0, 16
	lsls r1, 16
	lsrs r1, 16
	bl sub_812386C
	lsls r0, 16
	lsrs r0, 16
	pop {r1}
	bx r1
	thumb_func_end sub_8123E9C

	thumb_func_start sub_8123EB4
sub_8123EB4: @ 8123EB4
	push {lr}
	lsls r0, 16
	lsrs r3, r0, 16
	movs r2, 0
	ldr r1, =gUnknown_085A1B84
_08123EBE:
	ldrh r0, [r1]
	cmp r0, r3
	bne _08123ED4
	bl sub_8123F04
	lsls r0, 16
	lsrs r0, 16
	b _08123F00
	.pool
_08123ED4:
	adds r1, 0x2
	adds r2, 0x1
	cmp r2, 0x2
	bls _08123EBE
	ldr r1, =gUnknown_085A1B24
	ldrh r0, [r1]
	cmp r0, 0xD5
	beq _08123EFE
	adds r2, r1, 0
_08123EE6:
	ldrh r0, [r2]
	cmp r0, r3
	bne _08123EF4
	ldrh r0, [r1, 0x2]
	b _08123F00
	.pool
_08123EF4:
	adds r1, 0x4
	adds r2, 0x4
	ldrh r0, [r1]
	cmp r0, 0xD5
	bne _08123EE6
_08123EFE:
	adds r0, r3, 0
_08123F00:
	pop {r1}
	bx r1
	thumb_func_end sub_8123EB4

	thumb_func_start sub_8123F04
sub_8123F04: @ 8123F04
	push {lr}
	ldr r0, =0x00004037
	bl VarGet
	subs r0, 0x1
	lsls r0, 16
	lsrs r1, r0, 16
	cmp r1, 0xF
	bls _08123F18
	movs r1, 0
_08123F18:
	ldr r0, =gUnknown_085A1B8A
	lsls r1, 16
	asrs r1, 15
	adds r1, r0
	ldrh r0, [r1]
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_8123F04

	thumb_func_start sub_8123F30
sub_8123F30: @ 8123F30
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r0, =0x00004037
	bl VarGet
	lsls r0, 16
	lsrs r1, r0, 16
	ldr r2, =0xfff70000
	adds r0, r2
	lsrs r0, 16
	cmp r0, 0x7
	bls _08123F4C
	movs r1, 0x9
_08123F4C:
	subs r1, 0x9
	lsls r1, 16
	ldr r0, =gUnknown_085A1BAC
	lsrs r1, 14
	adds r1, r0
	ldrh r0, [r1]
	adds r0, 0x1
	strh r0, [r4]
	ldrh r0, [r1, 0x2]
	adds r0, 0x2
	strh r0, [r5]
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8123F30

	thumb_func_start sub_8123F74
sub_8123F74: @ 8123F74
	push {lr}
	lsls r0, 24
	lsrs r2, r0, 24
	movs r1, 0
	ldr r3, =gUnknown_085A1BCC
_08123F7E:
	adds r0, r1, r3
	ldrb r0, [r0]
	cmp r0, r2
	bne _08123F90
	movs r0, 0x1
	b _08123F98
	.pool
_08123F90:
	adds r1, 0x1
	cmp r1, 0
	beq _08123F7E
	movs r0, 0
_08123F98:
	pop {r1}
	bx r1
	thumb_func_end sub_8123F74

	thumb_func_start sub_8123F9C
sub_8123F9C: @ 8123F9C
	push {lr}
	lsls r0, 16
	lsrs r0, 16
	bl sub_8123EB4
	lsls r0, 16
	lsrs r0, 16
	pop {r1}
	bx r1
	thumb_func_end sub_8123F9C

	thumb_func_start sub_8123FB0
sub_8123FB0: @ 8123FB0
	push {r4-r6,lr}
	ldr r0, =gUnknown_0203A144
	ldr r1, [r0]
	ldrh r0, [r1]
	cmp r0, 0xD5
	bne _08123FC8
	movs r0, 0
	strb r0, [r1, 0x3]
	b _0812402E
	.pool
_08123FC8:
	adds r0, r1, 0
	adds r0, 0x78
	ldrb r0, [r0]
	cmp r0, 0
	bne _08123FD8
	adds r0, r1, 0
	adds r0, 0x54
	b _08123FDC
_08123FD8:
	adds r0, r1, 0
	adds r0, 0x64
_08123FDC:
	ldrh r4, [r0]
	adds r0, 0x2
	ldrh r5, [r0]
	movs r6, 0
	b _08124008
_08123FE6:
	subs r0, r4, 0x1
	lsls r0, 16
	lsrs r4, r0, 16
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_812386C
	ldr r1, =gUnknown_0203A144
	ldr r1, [r1]
	lsls r0, 16
	lsrs r0, 16
	ldrh r1, [r1]
	cmp r0, r1
	bne _08124008
	adds r0, r6, 0x1
	lsls r0, 16
	lsrs r6, r0, 16
_08124008:
	cmp r4, 0x1
	bhi _08123FE6
	adds r0, r5, 0
	bl sub_8124038
	lsls r0, 24
	cmp r0, 0
	beq _08124028
	subs r0, r5, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	movs r4, 0x1D
	b _08124008
	.pool
_08124028:
	ldr r0, =gUnknown_0203A144
	ldr r0, [r0]
	strb r6, [r0, 0x3]
_0812402E:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8123FB0

	thumb_func_start sub_8124038
sub_8124038: @ 8124038
	push {r4,r5,lr}
	lsls r0, 16
	ldr r1, =0xffff0000
	adds r0, r1
	lsrs r5, r0, 16
	ldr r0, =0x0000ffff
	cmp r5, r0
	bne _08124058
	b _0812407A
	.pool
_08124054:
	movs r0, 0x1
	b _0812407C
_08124058:
	movs r4, 0x1
_0812405A:
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_812386C
	ldr r1, =gUnknown_0203A144
	ldr r1, [r1]
	lsls r0, 16
	lsrs r0, 16
	ldrh r1, [r1]
	cmp r0, r1
	beq _08124054
	adds r0, r4, 0x1
	lsls r0, 16
	lsrs r4, r0, 16
	cmp r4, 0x1C
	bls _0812405A
_0812407A:
	movs r0, 0
_0812407C:
	pop {r4,r5}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_8124038

	thumb_func_start sub_8124088
sub_8124088: @ 8124088
	push {r4,lr}
	adds r2, r0, 0
	ldr r0, =gUnknown_0203A144
	ldr r1, [r0]
	adds r3, r1, 0
	adds r3, 0x7A
	movs r0, 0
	ldrsb r0, [r3, r0]
	cmp r0, 0
	beq _081240C6
	adds r0, r1, 0
	adds r0, 0x7B
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	lsls r0, 1
	ldrh r4, [r2, 0x20]
	adds r0, r4
	strh r0, [r2, 0x20]
	adds r0, r1, 0
	adds r0, 0x7C
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	lsls r0, 1
	ldrh r1, [r2, 0x22]
	adds r0, r1
	strh r0, [r2, 0x22]
	ldrb r0, [r3]
	subs r0, 0x1
	strb r0, [r3]
_081240C6:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8124088

	thumb_func_start TaskDummy8
TaskDummy8: @ 81240D0
	bx lr
	thumb_func_end TaskDummy8

	thumb_func_start sub_81240D4
sub_81240D4: @ 81240D4
	push {r4-r7,lr}
	sub sp, 0x28
	lsls r0, 16
	lsls r1, 16
	lsrs r6, r1, 16
	ldr r1, =gUnknown_085A1C00
	ldr r2, [r1, 0x4]
	ldr r1, [r1]
	str r1, [sp, 0x20]
	str r2, [sp, 0x24]
	mov r2, sp
	ldr r1, =gUnknown_085A1C08
	ldm r1!, {r3-r5}
	stm r2!, {r3-r5}
	ldm r1!, {r3-r5}
	stm r2!, {r3-r5}
	lsrs r3, r0, 16
	add r2, sp, 0x18
	ldrh r1, [r2, 0x4]
	orrs r1, r0
	str r1, [r2, 0x4]
	mov r0, sp
	strh r3, [r0]
	ldr r0, =gUnknown_0203A144
	ldr r4, [r0]
	adds r0, r4, 0
	adds r0, 0x58
	strh r3, [r0]
	ldr r5, =0xffff0000
	add r1, sp, 0x20
	ldr r0, [r1, 0x4]
	ands r0, r5
	orrs r0, r6
	str r0, [r1, 0x4]
	mov r0, sp
	strh r6, [r0, 0x2]
	adds r3, r4, 0
	adds r0, r3, 0
	adds r0, 0x5A
	strh r6, [r0]
	adds r0, 0x1E
	ldrb r0, [r0]
	adds r7, r1, 0
	cmp r0, 0
	bne _08124158
	movs r1, 0xC2
	lsls r1, 1
	adds r0, r3, r1
	str r0, [sp, 0x18]
	ldr r0, [r2, 0x4]
	ands r0, r5
	subs r1, 0x84
	orrs r0, r1
	str r0, [r2, 0x4]
	ldr r0, =sub_8124088
	b _0812416E
	.pool
_08124158:
	movs r3, 0xA1
	lsls r3, 2
	adds r0, r4, r3
	str r0, [sp, 0x18]
	ldr r0, [r2, 0x4]
	ands r0, r5
	movs r1, 0xC0
	lsls r1, 3
	orrs r0, r1
	str r0, [r2, 0x4]
	ldr r0, =TaskDummy8
_0812416E:
	str r0, [sp, 0x14]
	adds r0, r2, 0
	bl LoadSpriteSheet
	adds r0, r7, 0
	bl LoadSpritePalette
	mov r0, sp
	movs r1, 0x38
	movs r2, 0x48
	movs r3, 0
	bl CreateSprite
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0x40
	beq _08124228
	ldr r4, =gUnknown_0203A144
	ldr r2, [r4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r3, r0, r1
	str r3, [r2, 0x1C]
	adds r2, 0x78
	ldrb r0, [r2]
	cmp r0, 0x1
	bne _081241DC
	ldrb r1, [r3, 0x3]
	movs r0, 0x3F
	ands r0, r1
	movs r1, 0x80
	orrs r0, r1
	strb r0, [r3, 0x3]
	ldr r2, [r4]
	ldr r1, [r2, 0x1C]
	ldrh r0, [r1, 0x20]
	subs r0, 0x8
	strh r0, [r1, 0x20]
	ldr r1, [r2, 0x1C]
	ldrh r0, [r1, 0x22]
	subs r0, 0x8
	strh r0, [r1, 0x22]
	ldr r0, [r2, 0x1C]
	movs r1, 0x1
	bl StartSpriteAnim
	b _08124204
	.pool
_081241DC:
	ldrb r1, [r3, 0x3]
	movs r0, 0x3F
	ands r0, r1
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r3, 0x3]
	ldr r1, [r4]
	ldr r2, [r1, 0x1C]
	adds r0, r1, 0
	adds r0, 0x54
	ldrh r0, [r0]
	lsls r0, 3
	adds r0, 0x4
	strh r0, [r2, 0x20]
	ldr r2, [r1, 0x1C]
	adds r1, 0x56
	ldrh r0, [r1]
	lsls r0, 3
	adds r0, 0x4
	strh r0, [r2, 0x22]
_08124204:
	ldr r4, =gUnknown_0203A144
	ldr r0, [r4]
	ldr r1, [r0, 0x1C]
	movs r0, 0x2
	strh r0, [r1, 0x30]
	adds r0, r6, 0
	bl IndexOfSpritePaletteTag
	ldr r1, [r4]
	ldr r2, [r1, 0x1C]
	lsls r0, 24
	lsrs r0, 20
	ldr r4, =0x00000101
	adds r0, r4
	strh r0, [r2, 0x32]
	ldr r1, [r1, 0x1C]
	movs r0, 0x1
	strh r0, [r1, 0x34]
_08124228:
	add sp, 0x28
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_81240D4

	thumb_func_start sub_8124238
sub_8124238: @ 8124238
	push {r4,lr}
	ldr r4, =gUnknown_0203A144
	ldr r0, [r4]
	ldr r0, [r0, 0x1C]
	cmp r0, 0
	beq _0812425C
	bl DestroySprite
	ldr r0, [r4]
	adds r0, 0x58
	ldrh r0, [r0]
	bl FreeSpriteTilesByTag
	ldr r0, [r4]
	adds r0, 0x5A
	ldrh r0, [r0]
	bl FreeSpritePaletteByTag
_0812425C:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8124238

	thumb_func_start sub_8124268
sub_8124268: @ 8124268
	ldr r0, =gUnknown_0203A144
	ldr r0, [r0]
	ldr r1, [r0, 0x1C]
	movs r0, 0x1
	strh r0, [r1, 0x34]
	bx lr
	.pool
	thumb_func_end sub_8124268

	thumb_func_start sub_8124278
sub_8124278: @ 8124278
	ldr r0, =gUnknown_0203A144
	ldr r0, [r0]
	ldr r1, [r0, 0x1C]
	movs r0, 0
	strh r0, [r1, 0x34]
	bx lr
	.pool
	thumb_func_end sub_8124278

	thumb_func_start sub_8124288
sub_8124288: @ 8124288
	push {r4-r6,lr}
	sub sp, 0x28
	lsls r0, 16
	lsls r1, 16
	lsrs r1, 16
	ldr r2, =gUnknown_085A084C
	str r2, [sp, 0x18]
	movs r2, 0x80
	add r6, sp, 0x18
	lsrs r3, r0, 16
	orrs r0, r2
	str r0, [r6, 0x4]
	ldr r0, =gUnknown_085A082C
	str r0, [sp, 0x20]
	ldr r2, =0xffff0000
	add r4, sp, 0x20
	ldr r0, [r4, 0x4]
	ands r0, r2
	orrs r0, r1
	str r0, [r4, 0x4]
	mov r0, sp
	movs r5, 0
	strh r3, [r0]
	strh r1, [r0, 0x2]
	ldr r0, =gUnknown_085A1C20
	str r0, [sp, 0x4]
	ldr r0, =gUnknown_085A1C30
	str r0, [sp, 0x8]
	str r5, [sp, 0xC]
	ldr r0, =gDummySpriteAffineAnimTable
	str r0, [sp, 0x10]
	ldr r0, =SpriteCallbackDummy
	str r0, [sp, 0x14]
	ldr r0, =gMapHeader
	ldrb r0, [r0, 0x14]
	bl sub_8124668
	cmp r0, 0
	beq _08124304
	ldr r0, =gUnknown_0203A144
	ldr r0, [r0]
	str r5, [r0, 0x20]
	b _081243A4
	.pool
_08124304:
	ldr r0, =gSaveBlock2Ptr
	ldr r0, [r0]
	ldrb r0, [r0, 0x8]
	cmp r0, 0x1
	bne _08124316
	ldr r0, =gUnknown_085A08EC
	str r0, [sp, 0x18]
	ldr r0, =gUnknown_085A08CC
	str r0, [sp, 0x20]
_08124316:
	adds r0, r6, 0
	bl LoadSpriteSheet
	adds r0, r4, 0
	bl LoadSpritePalette
	mov r0, sp
	movs r1, 0
	movs r2, 0
	movs r3, 0x1
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gUnknown_0203A144
	ldr r2, [r1]
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	ldr r0, =gSprites
	adds r1, r0
	str r1, [r2, 0x20]
	adds r0, r2, 0
	adds r0, 0x78
	ldrb r0, [r0]
	cmp r0, 0
	bne _08124384
	adds r0, r2, 0
	adds r0, 0x74
	ldrh r0, [r0]
	lsls r0, 3
	adds r0, 0x4
	strh r0, [r1, 0x20]
	ldr r1, [r2, 0x20]
	adds r0, r2, 0
	adds r0, 0x76
	ldrh r0, [r0]
	lsls r0, 3
	adds r0, 0x4
	strh r0, [r1, 0x22]
	ldr r1, [r2, 0x20]
	ldr r0, =sub_81244EC
	b _081243A2
	.pool
_08124384:
	adds r0, r2, 0
	adds r0, 0x74
	ldrh r0, [r0]
	lsls r0, 4
	subs r0, 0x30
	strh r0, [r1, 0x20]
	ldr r1, [r2, 0x20]
	adds r0, r2, 0
	adds r0, 0x76
	ldrh r0, [r0]
	lsls r0, 4
	subs r0, 0x42
	strh r0, [r1, 0x22]
	ldr r1, [r2, 0x20]
	ldr r0, =sub_812445C
_081243A2:
	str r0, [r1, 0x1C]
_081243A4:
	add sp, 0x28
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8124288

	thumb_func_start sub_81243B0
sub_81243B0: @ 81243B0
	push {lr}
	ldr r3, =gUnknown_0203A144
	ldr r0, [r3]
	ldr r2, [r0, 0x20]
	cmp r2, 0
	beq _081243CE
	adds r2, 0x3E
	ldrb r0, [r2]
	movs r1, 0x4
	orrs r0, r1
	strb r0, [r2]
	ldr r0, [r3]
	ldr r1, [r0, 0x20]
	ldr r0, =SpriteCallbackDummy
	str r0, [r1, 0x1C]
_081243CE:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_81243B0

	thumb_func_start sub_81243DC
sub_81243DC: @ 81243DC
	push {lr}
	ldr r0, =gUnknown_0203A144
	ldr r3, [r0]
	ldr r1, [r3, 0x20]
	cmp r1, 0
	beq _08124452
	adds r0, r3, 0
	adds r0, 0x78
	ldrb r0, [r0]
	cmp r0, 0x1
	bne _0812441C
	adds r0, r3, 0
	adds r0, 0x74
	ldrh r0, [r0]
	lsls r0, 4
	subs r0, 0x30
	strh r0, [r1, 0x20]
	ldr r1, [r3, 0x20]
	adds r0, r3, 0
	adds r0, 0x76
	ldrh r0, [r0]
	lsls r0, 4
	subs r0, 0x42
	strh r0, [r1, 0x22]
	ldr r1, [r3, 0x20]
	ldr r0, =sub_812445C
	b _08124444
	.pool
_0812441C:
	adds r0, r3, 0
	adds r0, 0x74
	ldrh r0, [r0]
	lsls r0, 3
	adds r0, 0x4
	movs r2, 0
	strh r0, [r1, 0x20]
	ldr r1, [r3, 0x20]
	adds r0, r3, 0
	adds r0, 0x76
	ldrh r0, [r0]
	lsls r0, 3
	adds r0, 0x4
	strh r0, [r1, 0x22]
	ldr r0, [r3, 0x20]
	strh r2, [r0, 0x24]
	ldr r0, [r3, 0x20]
	strh r2, [r0, 0x26]
	ldr r1, [r3, 0x20]
	ldr r0, =sub_81244EC
_08124444:
	str r0, [r1, 0x1C]
	adds r1, 0x3E
	ldrb r2, [r1]
	movs r0, 0x5
	negs r0, r0
	ands r0, r2
	strb r0, [r1]
_08124452:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_81243DC

	thumb_func_start sub_812445C
sub_812445C: @ 812445C
	push {r4,lr}
	adds r3, r0, 0
	ldr r0, =gUnknown_0203A144
	ldr r1, [r0]
	adds r0, r1, 0
	adds r0, 0x5C
	movs r4, 0
	ldrsh r2, [r0, r4]
	lsls r2, 1
	negs r2, r2
	strh r2, [r3, 0x24]
	adds r1, 0x5E
	movs r4, 0
	ldrsh r0, [r1, r4]
	lsls r0, 1
	negs r0, r0
	strh r0, [r3, 0x26]
	ldrh r1, [r3, 0x22]
	adds r1, r0
	adds r0, r3, 0
	adds r0, 0x29
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	adds r0, r1
	strh r0, [r3, 0x2E]
	ldrh r1, [r3, 0x20]
	adds r1, r2
	adds r2, r3, 0
	adds r2, 0x28
	ldrb r2, [r2]
	lsls r2, 24
	asrs r2, 24
	adds r2, r1
	strh r2, [r3, 0x30]
	adds r0, 0x8
	lsls r0, 16
	lsrs r0, 16
	cmp r0, 0xB0
	bhi _081244BC
	lsls r0, r2, 16
	asrs r2, r0, 16
	movs r0, 0x8
	negs r0, r0
	cmp r2, r0
	blt _081244BC
	cmp r2, 0xF8
	ble _081244C4
_081244BC:
	movs r0, 0
	b _081244C6
	.pool
_081244C4:
	movs r0, 0x1
_081244C6:
	strh r0, [r3, 0x32]
	movs r1, 0x32
	ldrsh r0, [r3, r1]
	cmp r0, 0x1
	bne _081244D8
	adds r0, r3, 0
	bl sub_81244F8
	b _081244E4
_081244D8:
	adds r0, r3, 0
	adds r0, 0x3E
	ldrb r1, [r0]
	movs r2, 0x4
	orrs r1, r2
	strb r1, [r0]
_081244E4:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_812445C

	thumb_func_start sub_81244EC
sub_81244EC: @ 81244EC
	push {lr}
	bl sub_81244F8
	pop {r0}
	bx r0
	thumb_func_end sub_81244EC

	thumb_func_start sub_81244F8
sub_81244F8: @ 81244F8
	push {lr}
	adds r2, r0, 0
	ldr r0, =gUnknown_0203A144
	ldr r0, [r0]
	adds r0, 0x7E
	ldrb r0, [r0]
	cmp r0, 0
	beq _0812453C
	ldrh r0, [r2, 0x3C]
	adds r0, 0x1
	strh r0, [r2, 0x3C]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x10
	ble _08124548
	movs r0, 0
	strh r0, [r2, 0x3C]
	adds r3, r2, 0
	adds r3, 0x3E
	ldrb r2, [r3]
	lsrs r1, r2, 2
	movs r0, 0x1
	eors r1, r0
	ands r1, r0
	lsls r1, 2
	movs r0, 0x5
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	strb r0, [r3]
	b _08124548
	.pool
_0812453C:
	adds r2, 0x3E
	ldrb r1, [r2]
	movs r0, 0x5
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
_08124548:
	pop {r0}
	bx r0
	thumb_func_end sub_81244F8

	thumb_func_start sub_812454C
sub_812454C: @ 812454C
	push {lr}
	ldr r0, =gUnknown_0203A144
	ldr r1, [r0]
	adds r0, r1, 0
	adds r0, 0x7F
	ldrb r0, [r0]
	cmp r0, 0
	beq _08124562
	adds r1, 0x7E
	movs r0, 0x1
	strb r0, [r1]
_08124562:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_812454C

	thumb_func_start GetMapName
@ u8 *GetMapName(u8 *dest, u16 regionMapId, u16 padLength)
GetMapName: @ 812456C
	push {r4,r5,lr}
	adds r5, r0, 0
	lsls r1, 16
	lsrs r1, 16
	lsls r2, 16
	lsrs r4, r2, 16
	cmp r1, 0x56
	bne _08124584
	bl GetSecretBaseMapName
	adds r1, r0, 0
	b _081245B2
_08124584:
	cmp r1, 0xD4
	bhi _081245A0
	ldr r0, =gRegionMapEntries
	lsls r1, 3
	adds r0, 0x4
	adds r1, r0
	ldr r1, [r1]
	adds r0, r5, 0
	bl StringCopy
	adds r1, r0, 0
	b _081245B2
	.pool
_081245A0:
	cmp r4, 0
	bne _081245A6
	movs r4, 0x12
_081245A6:
	adds r0, r5, 0
	movs r1, 0
	adds r2, r4, 0
	bl StringFill
	b _081245D6
_081245B2:
	cmp r4, 0
	beq _081245D4
	subs r0, r1, r5
	lsls r0, 16
	lsrs r0, 16
	cmp r0, r4
	bcs _081245D0
	movs r2, 0
_081245C2:
	strb r2, [r1]
	adds r1, 0x1
	adds r0, 0x1
	lsls r0, 16
	lsrs r0, 16
	cmp r0, r4
	bcc _081245C2
_081245D0:
	movs r0, 0xFF
	strb r0, [r1]
_081245D4:
	adds r0, r1, 0
_081245D6:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end GetMapName

	thumb_func_start sub_81245DC
sub_81245DC: @ 81245DC
	push {lr}
	lsls r1, 16
	lsrs r1, 16
	cmp r1, 0x56
	beq _081245F8
	cmp r1, 0x57
	bne _08124604
	ldr r1, =gText_Ferry
	bl StringCopy
	b _0812460A
	.pool
_081245F8:
	ldr r1, =gText_SecretBase
	bl StringCopy
	b _0812460A
	.pool
_08124604:
	movs r2, 0
	bl GetMapName
_0812460A:
	pop {r1}
	bx r1
	thumb_func_end sub_81245DC

	thumb_func_start sub_8124610
sub_8124610: @ 8124610
	push {lr}
	lsls r1, 16
	lsrs r1, 16
	cmp r1, 0x42
	beq _08124620
	bl sub_81245DC
	b _08124626
_08124620:
	ldr r1, =gText_Hideout
	bl StringCopy
_08124626:
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_8124610

	thumb_func_start sub_8124630
sub_8124630: @ 8124630
	push {r4,r5,lr}
	ldr r5, [sp, 0xC]
	lsls r0, 16
	ldr r4, =gRegionMapEntries
	lsrs r0, 13
	adds r0, r4
	ldrb r4, [r0]
	strh r4, [r1]
	ldrb r1, [r0, 0x1]
	strh r1, [r2]
	ldrb r1, [r0, 0x2]
	strh r1, [r3]
	ldrb r0, [r0, 0x3]
	strh r0, [r5]
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8124630

	thumb_func_start sub_8124658
sub_8124658: @ 8124658
	ldr r0, =gUnknown_0203A144
	ldr r0, [r0]
	adds r0, 0x78
	ldrb r0, [r0]
	bx lr
	.pool
	thumb_func_end sub_8124658

	thumb_func_start sub_8124668
sub_8124668: @ 8124668
	push {lr}
	lsls r0, 24
	lsrs r2, r0, 24
	movs r1, 0
	ldr r3, =gUnknown_085A1C34
_08124672:
	adds r0, r1, r3
	ldrb r0, [r0]
	cmp r2, r0
	bne _08124684
	movs r0, 0x1
	b _0812468C
	.pool
_08124684:
	adds r1, 0x1
	cmp r1, 0x2
	bls _08124672
	movs r0, 0
_0812468C:
	pop {r1}
	bx r1
	thumb_func_end sub_8124668

	thumb_func_start sub_8124690
sub_8124690: @ 8124690
	push {r4,lr}
	sub sp, 0xC
	ldr r0, =gMain
	movs r1, 0x87
	lsls r1, 3
	adds r0, r1
	ldrb r0, [r0]
	cmp r0, 0xA
	bls _081246A4
	b _081248AA
_081246A4:
	lsls r0, 2
	ldr r1, =_081246B8
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_081246B8:
	.4byte _081246E4
	.4byte _08124766
	.4byte _0812477C
	.4byte _0812478C
	.4byte _0812479C
	.4byte _081247E4
	.4byte _081247F8
	.4byte _0812480C
	.4byte _0812484C
	.4byte _08124852
	.4byte _0812486C
_081246E4:
	movs r0, 0
	bl SetVBlankCallback
	movs r0, 0
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x10
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x12
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x14
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x16
	movs r1, 0
	bl SetGpuReg
	movs r0, 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
	ldr r4, =gUnknown_0203A148
	ldr r0, =0x00000a74
	bl Alloc
	str r0, [r4]
	cmp r0, 0
	bne _08124754
	ldr r0, =sub_8086194
	bl SetMainCallback2
	b _081248AA
	.pool
_08124754:
	bl ResetPaletteFade
	bl ResetSpriteData
	bl FreeSpriteTileRanges
	bl FreeAllSpritePalettes
	b _0812489C
_08124766:
	movs r0, 0
	bl ResetBgsAndClearDma3BusyFlags
	ldr r1, =gUnknown_085A1EE4
	movs r0, 0x1
	movs r2, 0x3
	bl InitBgsFromTemplates
	b _0812489C
	.pool
_0812477C:
	ldr r0, =gUnknown_085A1EF0
	bl InitWindows
	bl DeactivateAllTextPrinters
	b _0812489C
	.pool
_0812478C:
	movs r0, 0
	movs r1, 0x65
	movs r2, 0xD0
	bl sub_809882C
	bl clear_scheduled_bg_copies_to_vram
	b _0812489C
_0812479C:
	ldr r4, =gUnknown_0203A148
	ldr r0, [r4]
	adds r0, 0x8
	movs r1, 0
	bl sub_8122CDC
	movs r0, 0
	movs r1, 0
	bl sub_81240D4
	movs r0, 0x1
	movs r1, 0x1
	bl sub_8124288
	ldr r0, [r4]
	ldrh r1, [r0, 0x8]
	strh r1, [r0, 0x6]
	ldr r1, =0x00000a4c
	adds r0, r1
	movs r1, 0
	movs r2, 0x10
	bl StringFill
	ldr r1, =gUnknown_03001180
	movs r0, 0x1
	str r0, [r1]
	bl sub_8124904
	b _0812489C
	.pool
_081247E4:
	ldr r0, =gUnknown_085A1C58
	ldr r1, =0x0600c000
	bl LZ77UnCompVram
	b _0812489C
	.pool
_081247F8:
	ldr r0, =gUnknown_085A1C90
	ldr r1, =0x0600f000
	bl LZ77UnCompVram
	b _0812489C
	.pool
_0812480C:
	ldr r0, =gUnknown_085A1C38
	movs r1, 0x10
	movs r2, 0x20
	bl LoadPalette
	movs r0, 0x2
	bl PutWindowTilemap
	movs r0, 0x2
	movs r1, 0
	bl FillWindowPixelBuffer
	ldr r2, =gText_FlyToWhere
	movs r0, 0x1
	str r0, [sp]
	movs r0, 0
	str r0, [sp, 0x4]
	str r0, [sp, 0x8]
	movs r0, 0x2
	movs r1, 0x1
	movs r3, 0
	bl PrintTextOnWindow
	movs r0, 0
	bl schedule_bg_copy_tilemap_to_vram
	b _0812489C
	.pool
_0812484C:
	bl sub_8124A70
	b _0812489C
_08124852:
	movs r0, 0x1
	negs r0, r0
	movs r1, 0x10
	movs r2, 0
	bl BlendPalettes
	ldr r0, =sub_81248C0
	bl SetVBlankCallback
	b _0812489C
	.pool
_0812486C:
	movs r0, 0x50
	movs r1, 0
	bl SetGpuReg
	movs r1, 0x82
	lsls r1, 5
	movs r0, 0
	bl SetGpuRegBits
	movs r0, 0
	bl ShowBg
	movs r0, 0x1
	bl ShowBg
	movs r0, 0x2
	bl ShowBg
	ldr r0, =sub_8124D14
	bl sub_81248F4
	ldr r0, =sub_81248D4
	bl SetMainCallback2
_0812489C:
	ldr r1, =gMain
	movs r0, 0x87
	lsls r0, 3
	adds r1, r0
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
_081248AA:
	add sp, 0xC
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8124690

	thumb_func_start sub_81248C0
sub_81248C0: @ 81248C0
	push {lr}
	bl LoadOam
	bl ProcessSpriteCopyRequests
	bl TransferPlttBuffer
	pop {r0}
	bx r0
	thumb_func_end sub_81248C0

	thumb_func_start sub_81248D4
sub_81248D4: @ 81248D4
	push {lr}
	ldr r0, =gUnknown_0203A148
	ldr r0, [r0]
	ldr r0, [r0]
	bl _call_via_r0
	bl AnimateSprites
	bl BuildOamBuffer
	bl do_scheduled_bg_tilemap_copies_to_vram
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_81248D4

	thumb_func_start sub_81248F4
sub_81248F4: @ 81248F4
	ldr r1, =gUnknown_0203A148
	ldr r1, [r1]
	str r0, [r1]
	movs r0, 0
	strh r0, [r1, 0x4]
	bx lr
	.pool
	thumb_func_end sub_81248F4

	thumb_func_start sub_8124904
sub_8124904: @ 8124904
	push {r4-r7,lr}
	sub sp, 0xC
	ldr r2, =gUnknown_0203A148
	ldr r0, [r2]
	ldrb r0, [r0, 0xA]
	subs r0, 0x1
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x3
	bls _0812491A
	b _08124A2C
_0812491A:
	movs r7, 0
	movs r3, 0
	ldr r0, =gUnknown_085A1EDC
	mov r12, r0
	adds r5, r2, 0
	movs r6, 0
_08124926:
	ldr r0, [r5]
	lsls r1, r3, 3
	mov r2, r12
	adds r4, r1, r2
	ldrh r0, [r0, 0x8]
	ldrh r1, [r4, 0x4]
	cmp r0, r1
	bne _081249C4
	ldrh r0, [r4, 0x6]
	bl FlagGet
	lsls r0, 24
	cmp r0, 0
	beq _081249CE
	ldr r0, [r5]
	ldrb r0, [r0, 0xB]
	ldr r1, [r4]
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	bl StringLength
	movs r7, 0x1
	movs r0, 0
	movs r1, 0
	bl sub_8198070
	movs r0, 0x1
	movs r1, 0
	movs r2, 0x65
	movs r3, 0xD
	bl SetWindowBorderStyle
	ldr r2, [r5]
	adds r2, 0xC
	str r7, [sp]
	str r6, [sp, 0x4]
	str r6, [sp, 0x8]
	movs r0, 0x1
	movs r1, 0x1
	movs r3, 0
	bl PrintTextOnWindow
	ldr r0, [r5]
	ldrb r0, [r0, 0xB]
	ldr r1, [r4]
	lsls r0, 2
	adds r0, r1
	ldr r4, [r0]
	movs r0, 0x1
	adds r1, r4, 0
	movs r2, 0x60
	bl GetStringRightAlignXOffset
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x11
	str r0, [sp]
	str r6, [sp, 0x4]
	str r6, [sp, 0x8]
	movs r0, 0x1
	movs r1, 0x1
	adds r2, r4, 0
	bl PrintTextOnWindow
	movs r0, 0
	bl schedule_bg_copy_tilemap_to_vram
	ldr r0, =gUnknown_03001180
	str r7, [r0]
	b _081249CE
	.pool
_081249C4:
	adds r0, r3, 0x1
	lsls r0, 16
	lsrs r3, r0, 16
	cmp r3, 0
	beq _08124926
_081249CE:
	cmp r7, 0
	bne _08124A62
	ldr r0, =gUnknown_03001180
	ldr r0, [r0]
	cmp r0, 0x1
	bne _081249F4
	movs r0, 0x1
	movs r1, 0
	bl sub_8198070
	movs r0, 0
	movs r1, 0
	movs r2, 0x65
	movs r3, 0xD
	bl SetWindowBorderStyle
	b _081249FC
	.pool
_081249F4:
	movs r0, 0
	movs r1, 0x11
	bl FillWindowPixelBuffer
_081249FC:
	ldr r0, =gUnknown_0203A148
	ldr r2, [r0]
	adds r2, 0xC
	movs r0, 0x1
	str r0, [sp]
	movs r4, 0
	str r4, [sp, 0x4]
	str r4, [sp, 0x8]
	movs r0, 0
	movs r1, 0x1
	movs r3, 0
	bl PrintTextOnWindow
	movs r0, 0
	bl schedule_bg_copy_tilemap_to_vram
	ldr r0, =gUnknown_03001180
	str r4, [r0]
	b _08124A62
	.pool
_08124A2C:
	ldr r4, =gUnknown_03001180
	ldr r0, [r4]
	cmp r0, 0x1
	bne _08124A48
	movs r0, 0x1
	movs r1, 0
	bl sub_8198070
	movs r0, 0
	movs r1, 0
	movs r2, 0x65
	movs r3, 0xD
	bl SetWindowBorderStyle
_08124A48:
	movs r0, 0
	movs r1, 0x11
	bl FillWindowPixelBuffer
	movs r0, 0
	movs r1, 0x2
	bl CopyWindowToVram
	movs r0, 0
	bl schedule_bg_copy_tilemap_to_vram
	movs r0, 0
	str r0, [r4]
_08124A62:
	add sp, 0xC
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8124904

	thumb_func_start sub_8124A70
sub_8124A70: @ 8124A70
	push {r4,r5,lr}
	sub sp, 0x8
	ldr r0, =gUnknown_085A1D68
	ldr r5, =gUnknown_0203A148
	ldr r1, [r5]
	ldr r4, =0x0000088c
	adds r1, r4
	bl LZ77UnCompWram
	ldr r0, [r5]
	adds r0, r4
	str r0, [sp]
	ldr r1, =0xffff0000
	ldr r0, [sp, 0x4]
	ands r0, r1
	movs r1, 0xE0
	lsls r1, 1
	orrs r0, r1
	ldr r1, =0x0000ffff
	ands r0, r1
	movs r1, 0x80
	lsls r1, 10
	orrs r0, r1
	str r0, [sp, 0x4]
	mov r0, sp
	bl LoadSpriteSheet
	ldr r0, =gUnknown_085A1F10
	bl LoadSpritePalette
	bl sub_8124AD4
	bl sub_8124BE4
	add sp, 0x8
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8124A70

	thumb_func_start sub_8124AD4
sub_8124AD4: @ 8124AD4
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x1C
	ldr r0, =0x0000086f
	str r0, [sp, 0xC]
	movs r1, 0
	mov r9, r1
	mov r2, sp
	adds r2, 0x6
	str r2, [sp, 0x14]
	mov r3, sp
	adds r3, 0xA
	str r3, [sp, 0x18]
	mov r0, sp
	adds r0, 0x8
	str r0, [sp, 0x10]
	add r1, sp, 0x4
	mov r10, r1
_08124AFE:
	ldr r2, [sp, 0x18]
	str r2, [sp]
	mov r0, r9
	add r1, sp, 0x4
	mov r2, sp
	adds r2, 0x6
	ldr r3, [sp, 0x10]
	bl sub_8124630
	mov r3, r10
	ldrh r0, [r3]
	adds r0, 0x1
	lsls r0, 3
	adds r0, 0x4
	strh r0, [r3]
	mov r1, sp
	ldrh r0, [r1, 0x6]
	adds r0, 0x2
	lsls r0, 3
	adds r0, 0x4
	strh r0, [r1, 0x6]
	ldr r2, [sp, 0x10]
	ldrh r0, [r2]
	cmp r0, 0x2
	bne _08124B38
	movs r7, 0x1
	b _08124B44
	.pool
_08124B38:
	ldr r3, [sp, 0x18]
	ldrh r0, [r3]
	movs r7, 0
	cmp r0, 0x2
	bne _08124B44
	movs r7, 0x2
_08124B44:
	mov r0, r10
	movs r2, 0
	ldrsh r1, [r0, r2]
	ldr r3, [sp, 0x14]
	movs r0, 0
	ldrsh r2, [r3, r0]
	ldr r0, =gUnknown_085A1F7C
	movs r3, 0xA
	bl CreateSprite
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0x40
	beq _08124BB8
	ldr r1, =gSprites
	mov r8, r1
	lsls r4, r5, 4
	adds r0, r4, r5
	lsls r6, r0, 2
	adds r2, r6, r1
	lsls r3, r7, 6
	ldrb r1, [r2, 0x1]
	movs r0, 0x3F
	ands r0, r1
	orrs r0, r3
	strb r0, [r2, 0x1]
	ldr r0, [sp, 0xC]
	bl FlagGet
	lsls r0, 24
	cmp r0, 0
	beq _08124B9C
	mov r0, r8
	adds r0, 0x1C
	adds r0, r6, r0
	ldr r1, =sub_8124CBC
	str r1, [r0]
	b _08124BA2
	.pool
_08124B9C:
	adds r0, r7, 0x3
	lsls r0, 16
	lsrs r7, r0, 16
_08124BA2:
	adds r4, r5
	lsls r4, 2
	ldr r0, =gSprites
	adds r4, r0
	lsls r1, r7, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
	mov r2, r9
	strh r2, [r4, 0x2E]
_08124BB8:
	ldr r0, [sp, 0xC]
	adds r0, 0x1
	lsls r0, 16
	lsrs r0, 16
	str r0, [sp, 0xC]
	mov r0, r9
	adds r0, 0x1
	lsls r0, 16
	lsrs r0, 16
	mov r9, r0
	cmp r0, 0xF
	bls _08124AFE
	add sp, 0x1C
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8124AD4

	thumb_func_start sub_8124BE4
sub_8124BE4: @ 8124BE4
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0xC
	movs r0, 0
	mov r8, r0
	ldr r6, =gUnknown_085A1F18
	ldrh r0, [r6, 0x2]
	cmp r0, 0xD5
	beq _08124C9C
	mov r5, sp
	adds r5, 0x6
	add r7, sp, 0x4
	ldr r1, =gSprites
	mov r9, r1
	movs r0, 0x1C
	add r0, r9
	mov r10, r0
_08124C0C:
	mov r1, r8
	lsls r4, r1, 2
	adds r0, r4, r6
	ldrh r0, [r0]
	bl FlagGet
	lsls r0, 24
	cmp r0, 0
	beq _08124C84
	adds r0, r6, 0x2
	adds r0, r4, r0
	ldrh r6, [r0]
	mov r0, sp
	adds r0, 0xA
	str r0, [sp]
	adds r0, r6, 0
	add r1, sp, 0x4
	adds r2, r5, 0
	add r3, sp, 0x8
	bl sub_8124630
	ldrh r0, [r7]
	adds r0, 0x1
	lsls r0, 3
	strh r0, [r7]
	ldrh r0, [r5]
	adds r0, 0x2
	lsls r0, 3
	strh r0, [r5]
	movs r0, 0
	ldrsh r1, [r7, r0]
	movs r0, 0
	ldrsh r2, [r5, r0]
	ldr r0, =gUnknown_085A1F7C
	movs r3, 0xA
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x40
	beq _08124C84
	lsls r2, r0, 4
	adds r2, r0
	lsls r2, 2
	mov r1, r9
	adds r4, r2, r1
	ldrb r1, [r4, 0x3]
	movs r0, 0x3F
	ands r0, r1
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r4, 0x3]
	add r2, r10
	ldr r0, =sub_8124CBC
	str r0, [r2]
	adds r0, r4, 0
	movs r1, 0x6
	bl StartSpriteAnim
	strh r6, [r4, 0x2E]
_08124C84:
	mov r0, r8
	adds r0, 0x1
	lsls r0, 16
	lsrs r0, 16
	mov r8, r0
	ldr r6, =gUnknown_085A1F18
	lsls r0, 2
	adds r1, r6, 0x2
	adds r0, r1
	ldrh r0, [r0]
	cmp r0, 0xD5
	bne _08124C0C
_08124C9C:
	add sp, 0xC
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8124BE4

	thumb_func_start sub_8124CBC
sub_8124CBC: @ 8124CBC
	push {lr}
	adds r2, r0, 0
	ldr r0, =gUnknown_0203A148
	ldr r0, [r0]
	ldrh r1, [r0, 0x8]
	movs r3, 0x2E
	ldrsh r0, [r2, r3]
	cmp r1, r0
	bne _08124D00
	ldrh r0, [r2, 0x30]
	adds r0, 0x1
	strh r0, [r2, 0x30]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x10
	ble _08124D0E
	movs r0, 0
	strh r0, [r2, 0x30]
	adds r3, r2, 0
	adds r3, 0x3E
	ldrb r2, [r3]
	lsrs r1, r2, 2
	movs r0, 0x1
	eors r1, r0
	ands r1, r0
	lsls r1, 2
	movs r0, 0x5
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	strb r0, [r3]
	b _08124D0E
	.pool
_08124D00:
	movs r0, 0x10
	strh r0, [r2, 0x30]
	adds r2, 0x3E
	ldrb r1, [r2]
	subs r0, 0x15
	ands r0, r1
	strb r0, [r2]
_08124D0E:
	pop {r0}
	bx r0
	thumb_func_end sub_8124CBC

	thumb_func_start sub_8124D14
sub_8124D14: @ 8124D14
	push {r4,lr}
	sub sp, 0x4
	ldr r4, =gUnknown_0203A148
	ldr r0, [r4]
	ldrh r1, [r0, 0x4]
	cmp r1, 0
	beq _08124D2C
	cmp r1, 0x1
	beq _08124D46
	b _08124D56
	.pool
_08124D2C:
	movs r0, 0x1
	negs r0, r0
	str r1, [sp]
	movs r1, 0
	movs r2, 0x10
	movs r3, 0
	bl BeginNormalPaletteFade
	ldr r1, [r4]
	ldrh r0, [r1, 0x4]
	adds r0, 0x1
	strh r0, [r1, 0x4]
	b _08124D56
_08124D46:
	bl UpdatePaletteFade
	lsls r0, 24
	cmp r0, 0
	bne _08124D56
	ldr r0, =sub_8124D64
	bl sub_81248F4
_08124D56:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8124D14

	thumb_func_start sub_8124D64
sub_8124D64: @ 8124D64
	push {r4,lr}
	ldr r0, =gUnknown_0203A148
	ldr r0, [r0]
	ldrh r0, [r0, 0x4]
	cmp r0, 0
	bne _08124DF8
	bl sub_81230AC
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x5
	bhi _08124DF8
	lsls r0, 2
	ldr r1, =_08124D90
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_08124D90:
	.4byte _08124DF8
	.4byte _08124DF8
	.4byte _08124DF8
	.4byte _08124DA8
	.4byte _08124DAE
	.4byte _08124DE0
_08124DA8:
	bl sub_8124904
	b _08124DF8
_08124DAE:
	ldr r4, =gUnknown_0203A148
	ldr r0, [r4]
	ldrb r0, [r0, 0xA]
	cmp r0, 0x2
	beq _08124DBC
	cmp r0, 0x4
	bne _08124DF8
_08124DBC:
	movs r0, 0x5
	bl m4aSongNumStart
	ldr r0, [r4]
	ldr r1, =0x00000a72
	adds r0, r1
	movs r1, 0x1
	strb r1, [r0]
	ldr r0, =sub_8124E0C
	bl sub_81248F4
	b _08124DF8
	.pool
_08124DE0:
	movs r0, 0x5
	bl m4aSongNumStart
	ldr r0, =gUnknown_0203A148
	ldr r0, [r0]
	ldr r1, =0x00000a72
	adds r0, r1
	movs r1, 0
	strb r1, [r0]
	ldr r0, =sub_8124E0C
	bl sub_81248F4
_08124DF8:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8124D64

	thumb_func_start sub_8124E0C
sub_8124E0C: @ 8124E0C
	push {r4,lr}
	sub sp, 0x4
	ldr r4, =gUnknown_0203A148
	ldr r0, [r4]
	ldrh r1, [r0, 0x4]
	cmp r1, 0
	beq _08124E24
	cmp r1, 0x1
	beq _08124E3E
	b _08124F1A
	.pool
_08124E24:
	movs r0, 0x1
	negs r0, r0
	str r1, [sp]
	movs r1, 0
	movs r2, 0
	movs r3, 0x10
	bl BeginNormalPaletteFade
	ldr r1, [r4]
	ldrh r0, [r1, 0x4]
	adds r0, 0x1
	strh r0, [r1, 0x4]
	b _08124F1A
_08124E3E:
	bl UpdatePaletteFade
	lsls r0, 24
	cmp r0, 0
	bne _08124F1A
	bl sub_812305C
	ldr r1, [r4]
	ldr r2, =0x00000a72
	adds r0, r1, r2
	ldrb r0, [r0]
	cmp r0, 0
	beq _08124F00
	ldrh r0, [r1, 0x8]
	cmp r0, 0xF
	beq _08124E98
	cmp r0, 0xF
	bgt _08124E6C
	cmp r0, 0
	beq _08124E84
	b _08124EBC
	.pool
_08124E6C:
	cmp r0, 0x3A
	beq _08124E7C
	cmp r0, 0x49
	bne _08124EBC
	movs r0, 0x15
	bl sub_8084CCC
	b _08124EFA
_08124E7C:
	movs r0, 0x16
	bl sub_8084CCC
	b _08124EFA
_08124E84:
	ldr r0, =gSaveBlock2Ptr
	ldr r0, [r0]
	ldrb r0, [r0, 0x8]
	movs r1, 0xD
	cmp r0, 0
	bne _08124EB0
	movs r1, 0xC
	b _08124EB0
	.pool
_08124E98:
	ldr r0, =0x000008b4
	bl FlagGet
	lsls r0, 24
	movs r1, 0xB
	cmp r0, 0
	beq _08124EB0
	ldr r0, [r4]
	ldrb r0, [r0, 0xB]
	cmp r0, 0
	bne _08124EB0
	movs r1, 0x14
_08124EB0:
	adds r0, r1, 0
	bl sub_8084CCC
	b _08124EFA
	.pool
_08124EBC:
	ldr r3, =gUnknown_085A1E3C
	ldr r0, =gUnknown_0203A148
	ldr r0, [r0]
	ldrh r1, [r0, 0x8]
	lsls r0, r1, 1
	adds r2, r0, r1
	adds r0, r3, 0x2
	adds r1, r2, r0
	ldrb r0, [r1]
	cmp r0, 0
	beq _08124EE0
	bl sub_8084CCC
	b _08124EFA
	.pool
_08124EE0:
	adds r0, r2, r3
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	adds r1, r3, 0x1
	adds r1, r2, r1
	ldrb r1, [r1]
	lsls r1, 24
	asrs r1, 24
	movs r2, 0x1
	negs r2, r2
	bl warp1_set_2
_08124EFA:
	bl sub_80B69DC
	b _08124F06
_08124F00:
	ldr r0, =sub_81B58A8
	bl SetMainCallback2
_08124F06:
	ldr r4, =gUnknown_0203A148
	ldr r0, [r4]
	cmp r0, 0
	beq _08124F16
	bl Free
	movs r0, 0
	str r0, [r4]
_08124F16:
	bl FreeAllWindowBuffers
_08124F1A:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8124E0C

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