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

	.syntax unified

	.text

	thumb_func_start sub_8151678
sub_8151678: @ 8151678
	push {lr}
	movs r1, 0
	strb r1, [r0]
	strh r1, [r0, 0x2]
	adds r0, 0x4
	movs r2, 0xC0
	bl memset
	pop {r0}
	bx r0
	thumb_func_end sub_8151678

	thumb_func_start sub_815168C
sub_815168C: @ 815168C
	push {r4-r7,lr}
	adds r3, r0, 0
	lsls r1, 24
	lsrs r6, r1, 24
	cmp r6, 0xF
	bhi _081516A8
	lsls r0, r6, 1
	adds r0, r6
	lsls r0, 2
	adds r5, r3, r0
	ldrb r7, [r5, 0x4]
	lsrs r0, r7, 7
	cmp r0, 0
	beq _081516AC
_081516A8:
	movs r0, 0xFF
	b _0815170A
_081516AC:
	ldrh r0, [r2]
	movs r4, 0
	strh r0, [r5, 0x8]
	ldrh r0, [r2, 0x2]
	strh r0, [r5, 0xA]
	ldrb r0, [r2, 0x4]
	strb r0, [r5, 0xC]
	ldrb r0, [r2, 0x5]
	strb r0, [r5, 0xD]
	ldrb r0, [r2, 0x6]
	strb r0, [r5, 0xE]
	ldrb r3, [r2, 0x7]
	lsls r0, r3, 27
	lsrs r0, 27
	ldrb r2, [r5, 0xF]
	movs r1, 0x20
	negs r1, r1
	ands r1, r2
	orrs r1, r0
	movs r0, 0x60
	ands r0, r3
	movs r2, 0x61
	negs r2, r2
	ands r1, r2
	orrs r1, r0
	lsls r3, 24
	asrs r3, 31
	lsls r3, 7
	movs r0, 0x7F
	ands r1, r0
	orrs r1, r3
	strb r1, [r5, 0xF]
	subs r0, 0xFF
	ands r0, r7
	movs r2, 0x80
	orrs r0, r2
	strb r0, [r5, 0x4]
	strb r4, [r5, 0x6]
	strb r4, [r5, 0x5]
	lsls r1, 24
	cmp r1, 0
	bge _08151704
	movs r0, 0xFF
	b _08151706
_08151704:
	movs r0, 0x1
_08151706:
	strb r0, [r5, 0x7]
	adds r0, r6, 0
_0815170A:
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_815168C

	thumb_func_start sub_8151710
sub_8151710: @ 8151710
	push {r4,lr}
	adds r2, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r4, r1, 0
	cmp r4, 0xF
	bhi _0815173C
	lsls r0, r4, 1
	adds r0, r4
	lsls r0, 2
	adds r1, r2, r0
	ldrb r0, [r1, 0x4]
	lsrs r0, 7
	cmp r0, 0
	beq _0815173C
	adds r0, r1, 0x4
	movs r1, 0
	movs r2, 0xC
	bl memset
	adds r0, r4, 0
	b _0815173E
_0815173C:
	movs r0, 0xFF
_0815173E:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8151710

	thumb_func_start sub_8151744
sub_8151744: @ 8151744
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	adds r5, r0, 0
	movs r0, 0
	mov r12, r0
	ldrb r1, [r5, 0x8]
	cmp r12, r1
	bcc _0815175C
	b _081518F4
_0815175C:
	movs r7, 0x1F
	ldr r0, =0xfffffc1f
	mov r10, r0
	movs r1, 0x7D
	negs r1, r1
	mov r9, r1
	movs r0, 0x1F
	mov r8, r0
_0815176C:
	ldrh r0, [r5, 0x6]
	add r0, r12
	lsls r0, 1
	ldr r1, =gPlttBufferFaded
	adds r3, r0, r1
	ldr r1, =gPlttBufferUnfaded
	adds r6, r0, r1
	ldrb r0, [r5]
	lsls r0, 25
	lsrs r0, 25
	cmp r0, 0x1
	beq _08151798
	cmp r0, 0x2
	beq _081517F6
	b _081518E2
	.pool
_08151798:
	ldr r0, [r3]
	lsls r2, r0, 27
	lsrs r0, r2, 27
	movs r1, 0x3
	ldrsb r1, [r5, r1]
	adds r0, r1
	cmp r0, 0x1F
	bhi _081517BA
	lsrs r0, r2, 27
	adds r0, r1
	ands r0, r7
	ldrb r2, [r3]
	movs r1, 0x20
	negs r1, r1
	ands r1, r2
	orrs r1, r0
	strb r1, [r3]
_081517BA:
	ldr r0, [r3]
	lsls r2, r0, 22
	lsrs r0, r2, 27
	movs r1, 0x3
	ldrsb r1, [r5, r1]
	adds r0, r1
	cmp r0, 0x1F
	bhi _081517DE
	lsrs r0, r2, 27
	adds r0, r1
	mov r1, r8
	ands r0, r1
	lsls r0, 5
	ldrh r2, [r3]
	mov r1, r10
	ands r1, r2
	orrs r1, r0
	strh r1, [r3]
_081517DE:
	ldr r0, [r3]
	lsls r2, r0, 17
	lsrs r0, r2, 27
	movs r1, 0x3
	ldrsb r1, [r5, r1]
	adds r0, r1
	cmp r0, 0x1F
	bls _081517F0
	b _081518E2
_081517F0:
	lsrs r0, r2, 27
	adds r0, r1
	b _081518D4
_081517F6:
	movs r0, 0x3
	ldrsb r0, [r5, r0]
	cmp r0, 0
	bge _08151868
	ldr r0, [r3]
	lsls r4, r0, 27
	lsrs r1, r4, 27
	movs r2, 0x3
	ldrsb r2, [r5, r2]
	adds r1, r2
	ldr r0, [r6]
	lsls r0, 27
	lsrs r0, 27
	cmp r1, r0
	blt _08151826
	lsrs r0, r4, 27
	adds r0, r2
	ands r0, r7
	ldrb r2, [r3]
	movs r1, 0x20
	negs r1, r1
	ands r1, r2
	orrs r1, r0
	strb r1, [r3]
_08151826:
	ldr r0, [r3]
	lsls r4, r0, 22
	lsrs r1, r4, 27
	movs r2, 0x3
	ldrsb r2, [r5, r2]
	adds r1, r2
	ldr r0, [r6]
	lsls r0, 22
	lsrs r0, 27
	cmp r1, r0
	blt _08151850
	lsrs r0, r4, 27
	adds r0, r2
	mov r1, r8
	ands r0, r1
	lsls r0, 5
	ldrh r2, [r3]
	mov r1, r10
	ands r1, r2
	orrs r1, r0
	strh r1, [r3]
_08151850:
	ldr r0, [r3]
	lsls r4, r0, 17
	lsrs r1, r4, 27
	movs r2, 0x3
	ldrsb r2, [r5, r2]
	adds r1, r2
	ldr r0, [r6]
	lsls r0, 17
	lsrs r0, 27
	cmp r1, r0
	blt _081518E2
	b _081518D0
_08151868:
	ldr r0, [r3]
	lsls r4, r0, 27
	lsrs r1, r4, 27
	movs r2, 0x3
	ldrsb r2, [r5, r2]
	adds r1, r2
	ldr r0, [r6]
	lsls r0, 27
	lsrs r0, 27
	cmp r1, r0
	bgt _08151890
	lsrs r0, r4, 27
	adds r0, r2
	ands r0, r7
	ldrb r2, [r3]
	movs r1, 0x20
	negs r1, r1
	ands r1, r2
	orrs r1, r0
	strb r1, [r3]
_08151890:
	ldr r0, [r3]
	lsls r4, r0, 22
	lsrs r1, r4, 27
	movs r2, 0x3
	ldrsb r2, [r5, r2]
	adds r1, r2
	ldr r0, [r6]
	lsls r0, 22
	lsrs r0, 27
	cmp r1, r0
	bgt _081518BA
	lsrs r0, r4, 27
	adds r0, r2
	mov r1, r8
	ands r0, r1
	lsls r0, 5
	ldrh r2, [r3]
	mov r1, r10
	ands r1, r2
	orrs r1, r0
	strh r1, [r3]
_081518BA:
	ldr r0, [r3]
	lsls r4, r0, 17
	lsrs r1, r4, 27
	movs r2, 0x3
	ldrsb r2, [r5, r2]
	adds r1, r2
	ldr r0, [r6]
	lsls r0, 17
	lsrs r0, 27
	cmp r1, r0
	bgt _081518E2
_081518D0:
	lsrs r0, r4, 27
	adds r0, r2
_081518D4:
	ands r0, r7
	lsls r0, 2
	ldrb r2, [r3, 0x1]
	mov r1, r9
	ands r1, r2
	orrs r1, r0
	strb r1, [r3, 0x1]
_081518E2:
	mov r0, r12
	adds r0, 0x1
	lsls r0, 24
	lsrs r0, 24
	mov r12, r0
	ldrb r0, [r5, 0x8]
	cmp r12, r0
	bcs _081518F4
	b _0815176C
_081518F4:
	ldrb r1, [r5, 0x2]
	adds r0, r1, 0x1
	strb r0, [r5, 0x2]
	ldrb r0, [r5, 0xB]
	lsls r0, 27
	lsls r1, 24
	asrs r0, 3
	cmp r1, r0
	beq _0815190A
	movs r0, 0
	b _0815193E
_0815190A:
	movs r0, 0
	strb r0, [r5, 0x2]
	movs r0, 0x3
	ldrsb r0, [r5, r0]
	negs r0, r0
	strb r0, [r5, 0x3]
	ldrb r2, [r5]
	movs r1, 0x7F
	movs r0, 0x7F
	ands r0, r2
	cmp r0, 0x1
	bne _0815192A
	lsls r0, r2, 25
	lsrs r0, 25
	adds r0, 0x1
	b _08151930
_0815192A:
	lsls r0, r2, 25
	lsrs r0, 25
	subs r0, 0x1
_08151930:
	ands r0, r1
	movs r1, 0x80
	negs r1, r1
	ands r1, r2
	orrs r1, r0
	strb r1, [r5]
	movs r0, 0x1
_0815193E:
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_8151744

	thumb_func_start sub_815194C
sub_815194C: @ 815194C
	push {r4,r5,lr}
	adds r3, r0, 0
	movs r2, 0
	ldrb r0, [r3]
	lsls r0, 25
	lsrs r0, 25
	cmp r0, 0x1
	beq _08151962
	cmp r0, 0x2
	beq _08151990
	b _081519CA
_08151962:
	ldrb r0, [r3, 0x8]
	cmp r2, r0
	bcs _08151982
	ldr r4, =gPlttBufferFaded
_0815196A:
	ldrh r0, [r3, 0x6]
	adds r0, r2
	lsls r0, 1
	adds r0, r4
	ldrh r1, [r3, 0x4]
	strh r1, [r0]
	adds r0, r2, 0x1
	lsls r0, 24
	lsrs r2, r0, 24
	ldrb r0, [r3, 0x8]
	cmp r2, r0
	bcc _0815196A
_08151982:
	ldrb r2, [r3]
	lsls r1, r2, 25
	lsrs r1, 25
	adds r1, 0x1
	b _081519BC
	.pool
_08151990:
	ldrb r0, [r3, 0x8]
	cmp r2, r0
	bcs _081519B4
	ldr r5, =gPlttBufferFaded
	ldr r4, =gPlttBufferUnfaded
_0815199A:
	ldrh r0, [r3, 0x6]
	adds r0, r2
	lsls r0, 1
	adds r1, r0, r5
	adds r0, r4
	ldrh r0, [r0]
	strh r0, [r1]
	adds r0, r2, 0x1
	lsls r0, 24
	lsrs r2, r0, 24
	ldrb r0, [r3, 0x8]
	cmp r2, r0
	bcc _0815199A
_081519B4:
	ldrb r2, [r3]
	lsls r1, r2, 25
	lsrs r1, 25
	subs r1, 0x1
_081519BC:
	movs r0, 0x7F
	ands r1, r0
	movs r0, 0x80
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	strb r0, [r3]
_081519CA:
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_815194C

	thumb_func_start task_tutorial_controls_fadein
task_tutorial_controls_fadein: @ 81519DC
	push {r4-r6,lr}
	adds r4, r0, 0
	movs r5, 0
	ldrb r0, [r4]
	cmp r0, 0
	beq _08151A40
_081519E8:
	ldrh r0, [r4, 0x2]
	asrs r0, r5
	movs r1, 0x1
	ands r0, r1
	cmp r0, 0
	beq _08151A36
	lsls r1, r5, 1
	adds r0, r1, r5
	lsls r3, r0, 2
	adds r2, r4, r3
	ldrb r0, [r2, 0x5]
	subs r0, 0x1
	strb r0, [r2, 0x5]
	lsls r0, 24
	lsrs r0, 24
	adds r6, r1, 0
	cmp r0, 0xFF
	bne _08151A36
	ldrh r0, [r2, 0x8]
	movs r2, 0x80
	lsls r2, 8
	adds r1, r2, 0
	ands r0, r1
	cmp r0, 0
	beq _08151A24
	adds r0, r3, 0x4
	adds r0, r4, r0
	bl sub_8151744
	b _08151A2C
_08151A24:
	adds r0, r3, 0x4
	adds r0, r4, r0
	bl sub_815194C
_08151A2C:
	adds r0, r6, r5
	lsls r0, 2
	adds r0, r4, r0
	ldrb r1, [r0, 0xD]
	strb r1, [r0, 0x5]
_08151A36:
	adds r0, r5, 0x1
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0xF
	bls _081519E8
_08151A40:
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end task_tutorial_controls_fadein

	thumb_func_start sub_8151A48
sub_8151A48: @ 8151A48
	push {r4-r7,lr}
	adds r3, r0, 0
	lsls r1, 16
	lsrs r6, r1, 16
	movs r4, 0
	ldrb r0, [r3]
	adds r0, 0x1
	strb r0, [r3]
	movs r5, 0x1
	movs r7, 0x80
	negs r7, r7
_08151A5E:
	adds r0, r6, 0
	asrs r0, r4
	ands r0, r5
	cmp r0, 0
	beq _08151A8C
	lsls r0, r4, 1
	adds r0, r4
	lsls r0, 2
	adds r2, r3, r0
	ldrb r0, [r2, 0x4]
	lsrs r0, 7
	cmp r0, 0
	beq _08151A8C
	adds r0, r5, 0
	lsls r0, r4
	ldrh r1, [r3, 0x2]
	orrs r0, r1
	strh r0, [r3, 0x2]
	ldrb r1, [r2, 0x4]
	adds r0, r7, 0
	ands r0, r1
	orrs r0, r5
	strb r0, [r2, 0x4]
_08151A8C:
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0xF
	bls _08151A5E
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_8151A48

	thumb_func_start sub_8151A9C
sub_8151A9C: @ 8151A9C
	push {r4-r7,lr}
	sub sp, 0x4
	adds r6, r0, 0
	lsls r1, 16
	lsrs r7, r1, 16
	movs r5, 0
	movs r3, 0x1
_08151AAA:
	ldrh r0, [r6, 0x2]
	asrs r0, r5
	ands r0, r3
	cmp r0, 0
	beq _08151B12
	lsls r0, r5, 1
	adds r0, r5
	lsls r0, 2
	adds r4, r6, r0
	ldrb r0, [r4, 0x4]
	lsrs r0, 7
	cmp r0, 0
	beq _08151B12
	adds r0, r7, 0
	asrs r0, r5
	ands r0, r3
	cmp r0, 0
	beq _08151B12
	ldrh r1, [r4, 0xA]
	lsls r1, 1
	ldr r0, =gPlttBufferFaded
	adds r0, r1, r0
	ldr r2, =gPlttBufferUnfaded
	adds r1, r2
	ldrb r2, [r4, 0xC]
	lsls r2, 1
	str r3, [sp]
	bl memcpy
	ldrb r0, [r4, 0x4]
	movs r2, 0x80
	negs r2, r2
	adds r1, r2, 0
	ands r0, r1
	strb r0, [r4, 0x4]
	movs r0, 0
	strb r0, [r4, 0x6]
	strb r0, [r4, 0x5]
	ldrb r0, [r4, 0xF]
	lsls r0, 24
	ldr r3, [sp]
	cmp r0, 0
	bge _08151B10
	movs r0, 0xFF
	strb r0, [r4, 0x7]
	b _08151B12
	.pool
_08151B10:
	strb r3, [r4, 0x7]
_08151B12:
	adds r0, r5, 0x1
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0xF
	bls _08151AAA
	ldr r0, =0x0000ffff
	cmp r7, r0
	bne _08151B2C
	movs r0, 0
	strb r0, [r6]
	b _08151B30
	.pool
_08151B2C:
	ldrh r0, [r6, 0x2]
	bics r0, r7
_08151B30:
	strh r0, [r6, 0x2]
	add sp, 0x4
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_8151A9C

	thumb_func_start sub_8151B3C
sub_8151B3C: @ 8151B3C
	push {r4,r5,lr}
	adds r5, r0, 0
	movs r4, 0
	strh r4, [r5]
	adds r0, r5, 0x4
	movs r1, 0
	movs r2, 0xC0
	bl memset
_08151B4E:
	lsls r0, r4, 1
	adds r0, r4
	lsls r0, 2
	adds r0, r5, r0
	strb r4, [r0, 0x4]
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0xF
	bls _08151B4E
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_8151B3C

	thumb_func_start sub_8151B68
sub_8151B68: @ 8151B68
	push {r4,r5,lr}
	adds r2, r0, 0
	adds r5, r1, 0
	movs r3, 0
	movs r4, 0
	ldrb r0, [r2, 0x5]
	lsrs r0, 7
	cmp r0, 0
	bne _08151B7E
	adds r4, r2, 0x4
	b _08151B9C
_08151B7E:
	adds r0, r3, 0x1
	lsls r0, 24
	lsrs r3, r0, 24
	cmp r3, 0xF
	bhi _08151B9C
	lsls r0, r3, 1
	adds r0, r3
	lsls r1, r0, 2
	adds r0, r2, r1
	ldrb r0, [r0, 0x5]
	lsrs r0, 7
	cmp r0, 0
	bne _08151B7E
	adds r0, r1, 0x4
	adds r4, r2, r0
_08151B9C:
	cmp r4, 0
	beq _08151BCA
	ldrb r1, [r4, 0x1]
	movs r0, 0x10
	negs r0, r0
	ands r0, r1
	movs r1, 0x11
	negs r1, r1
	ands r0, r1
	movs r1, 0x40
	orrs r0, r1
	movs r1, 0x80
	orrs r0, r1
	strb r0, [r4, 0x1]
	movs r0, 0
	strb r0, [r4, 0x2]
	strb r0, [r4, 0x3]
	adds r1, r4, 0x4
	adds r0, r5, 0
	ldm r0!, {r2,r4}
	stm r1!, {r2,r4}
	adds r0, r3, 0
	b _08151BCC
_08151BCA:
	movs r0, 0xFF
_08151BCC:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8151B68

	thumb_func_start sub_8151BD4
sub_8151BD4: @ 8151BD4
	push {r4,r5,lr}
	adds r4, r0, 0
	ldrb r1, [r4, 0x1]
	movs r2, 0x40
	adds r0, r2, 0
	ands r0, r1
	cmp r0, 0
	bne _08151C16
	ldrb r1, [r4, 0xB]
	adds r0, r2, 0
	ands r0, r1
	cmp r0, 0
	beq _08151C16
	ldrh r2, [r4, 0x6]
	ldrb r0, [r4, 0x8]
	adds r0, r2, r0
	cmp r2, r0
	bge _08151C16
	ldr r5, =gPlttBufferFaded
	ldr r3, =gPlttBufferUnfaded
_08151BFC:
	lsls r0, r2, 1
	adds r1, r0, r5
	adds r0, r3
	ldrh r0, [r0]
	strh r0, [r1]
	adds r0, r2, 0x1
	lsls r0, 16
	lsrs r2, r0, 16
	ldrh r0, [r4, 0x6]
	ldrb r1, [r4, 0x8]
	adds r0, r1
	cmp r2, r0
	blt _08151BFC
_08151C16:
	adds r0, r4, 0x4
	movs r1, 0
	movs r2, 0x8
	bl memset
	ldrb r1, [r4, 0x1]
	movs r0, 0x10
	negs r0, r0
	ands r0, r1
	movs r1, 0x11
	negs r1, r1
	ands r0, r1
	subs r1, 0x10
	ands r0, r1
	movs r1, 0x40
	orrs r0, r1
	movs r1, 0x7F
	ands r0, r1
	strb r0, [r4, 0x1]
	movs r0, 0
	strb r0, [r4, 0x3]
	strb r0, [r4, 0x2]
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8151BD4

	thumb_func_start sub_8151C50
sub_8151C50: @ 8151C50
	push {r4-r6,lr}
	adds r6, r0, 0
	lsls r1, 16
	lsrs r4, r1, 16
	lsls r2, 24
	movs r5, 0
	cmp r2, 0
	bne _08151C74
	movs r1, 0xF
	ands r1, r4
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 2
	adds r0, 0x4
	adds r0, r6, r0
	bl sub_8151BD4
	b _08151CA0
_08151C74:
	movs r0, 0x1
	ands r0, r4
	cmp r0, 0
	beq _08151C94
	lsls r0, r5, 1
	adds r0, r5
	lsls r1, r0, 2
	adds r0, r6, r1
	ldrb r0, [r0, 0x5]
	lsrs r0, 7
	cmp r0, 0
	beq _08151C94
	adds r0, r1, 0x4
	adds r0, r6, r0
	bl sub_8151BD4
_08151C94:
	lsrs r4, 1
	adds r0, r5, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	cmp r5, 0xF
	bls _08151C74
_08151CA0:
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_8151C50

	thumb_func_start sub_8151CA8
sub_8151CA8: @ 8151CA8
	push {r4-r7,lr}
	adds r5, r0, 0
	lsls r1, 16
	lsrs r4, r1, 16
	lsls r2, 24
	movs r3, 0
	cmp r2, 0
	bne _08151CDC
	movs r0, 0xF
	adds r3, r0, 0
	ands r3, r4
	lsls r1, r3, 1
	adds r1, r3
	lsls r1, 2
	adds r1, r5, r1
	ldrb r2, [r1, 0x5]
	movs r0, 0x41
	negs r0, r0
	ands r0, r2
	strb r0, [r1, 0x5]
	movs r0, 0x1
	lsls r0, r3
	ldrh r1, [r5]
	orrs r0, r1
	strh r0, [r5]
	b _08151D20
_08151CDC:
	movs r6, 0x1
	movs r7, 0x41
	negs r7, r7
_08151CE2:
	adds r0, r4, 0
	ands r0, r6
	cmp r0, 0
	beq _08151D00
	lsls r0, r3, 1
	adds r0, r3
	lsls r0, 2
	adds r2, r5, r0
	ldrb r1, [r2, 0x5]
	lsrs r0, r1, 7
	cmp r0, 0
	beq _08151D00
	lsls r0, r1, 25
	cmp r0, 0
	blt _08151D06
_08151D00:
	lsls r0, r4, 17
	lsrs r4, r0, 16
	b _08151D16
_08151D06:
	adds r0, r7, 0
	ands r0, r1
	strb r0, [r2, 0x5]
	adds r0, r6, 0
	lsls r0, r3
	ldrh r1, [r5]
	orrs r0, r1
	strh r0, [r5]
_08151D16:
	adds r0, r3, 0x1
	lsls r0, 24
	lsrs r3, r0, 24
	cmp r3, 0xF
	bls _08151CE2
_08151D20:
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_8151CA8

	thumb_func_start sub_8151D28
sub_8151D28: @ 8151D28
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	mov r8, r0
	lsls r1, 16
	lsrs r7, r1, 16
	lsls r2, 24
	movs r0, 0
	mov r12, r0
	cmp r2, 0
	bne _08151DB0
	movs r1, 0xF
	ands r1, r7
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 2
	adds r0, 0x4
	mov r1, r8
	adds r3, r1, r0
	ldrb r1, [r3, 0x1]
	movs r0, 0xC0
	ands r0, r1
	cmp r0, 0x80
	bne _08151E3A
	ldrb r1, [r3, 0xB]
	movs r0, 0x40
	ands r0, r1
	cmp r0, 0
	beq _08151D8E
	ldrh r2, [r3, 0x6]
	ldrb r0, [r3, 0x8]
	adds r0, r2, r0
	cmp r2, r0
	bge _08151D8E
	ldr r5, =gPlttBufferFaded
	ldr r4, =gPlttBufferUnfaded
_08151D74:
	lsls r0, r2, 1
	adds r1, r0, r5
	adds r0, r4
	ldrh r0, [r0]
	strh r0, [r1]
	adds r0, r2, 0x1
	lsls r0, 16
	lsrs r2, r0, 16
	ldrh r0, [r3, 0x6]
	ldrb r1, [r3, 0x8]
	adds r0, r1
	cmp r2, r0
	blt _08151D74
_08151D8E:
	ldrb r0, [r3, 0x1]
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r3, 0x1]
	movs r1, 0x1
	mov r2, r12
	lsls r1, r2
	mov r2, r8
	ldrh r0, [r2]
	bics r0, r1
	strh r0, [r2]
	b _08151E3A
	.pool
_08151DB0:
	movs r0, 0x1
	mov r9, r0
	movs r1, 0x40
	mov r10, r1
_08151DB8:
	mov r2, r12
	lsls r0, r2, 1
	add r0, r12
	lsls r0, 2
	adds r0, 0x4
	mov r1, r8
	adds r3, r1, r0
	adds r0, r7, 0
	mov r2, r9
	ands r0, r2
	cmp r0, 0
	beq _08151DDA
	ldrb r1, [r3, 0x1]
	movs r0, 0xC0
	ands r0, r1
	cmp r0, 0x80
	beq _08151DE4
_08151DDA:
	lsls r0, r7, 17
	lsrs r7, r0, 16
	mov r5, r12
	adds r5, 0x1
	b _08151E30
_08151DE4:
	ldrb r1, [r3, 0xB]
	mov r0, r10
	ands r0, r1
	mov r5, r12
	adds r5, 0x1
	cmp r0, 0
	beq _08151E1A
	ldrh r2, [r3, 0x6]
	ldrb r0, [r3, 0x8]
	adds r0, r2, r0
	cmp r2, r0
	bge _08151E1A
	ldr r6, =gPlttBufferFaded
	ldr r4, =gPlttBufferUnfaded
_08151E00:
	lsls r0, r2, 1
	adds r1, r0, r6
	adds r0, r4
	ldrh r0, [r0]
	strh r0, [r1]
	adds r0, r2, 0x1
	lsls r0, 16
	lsrs r2, r0, 16
	ldrh r0, [r3, 0x6]
	ldrb r1, [r3, 0x8]
	adds r0, r1
	cmp r2, r0
	blt _08151E00
_08151E1A:
	ldrb r1, [r3, 0x1]
	mov r0, r10
	orrs r0, r1
	strb r0, [r3, 0x1]
	mov r1, r9
	mov r0, r12
	lsls r1, r0
	mov r2, r8
	ldrh r0, [r2]
	bics r0, r1
	strh r0, [r2]
_08151E30:
	lsls r0, r5, 24
	lsrs r0, 24
	mov r12, r0
	cmp r0, 0xF
	bls _08151DB8
_08151E3A:
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8151D28

	thumb_func_start sub_8151E50
sub_8151E50: @ 8151E50
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x4
	str r0, [sp]
	movs r0, 0
	mov r10, r0
	ldr r1, [sp]
	ldrh r0, [r1]
	cmp r0, 0
	bne _08151E6C
	b _08151FF6
_08151E6C:
	movs r2, 0xF
	mov r9, r2
	movs r3, 0x10
	negs r3, r3
	mov r8, r3
	movs r7, 0x1
_08151E78:
	mov r5, r10
	lsls r0, r5, 1
	add r0, r10
	lsls r0, 2
	adds r0, 0x4
	ldr r1, [sp]
	adds r4, r1, r0
	ldrb r2, [r4, 0x1]
	movs r3, 0xC0
	ands r3, r2
	cmp r3, 0x80
	beq _08151E92
	b _08151FE6
_08151E92:
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	adds r0, r3, 0
	ands r0, r1
	cmp r0, 0
	beq _08151EA8
	ldrb r0, [r4, 0xB]
	ands r3, r0
	cmp r3, 0
	beq _08151EA8
	b _08151FE6
_08151EA8:
	ldrb r0, [r4, 0x2]
	subs r0, 0x1
	strb r0, [r4, 0x2]
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0xFF
	beq _08151EB8
	b _08151FE6
_08151EB8:
	ldrb r0, [r4, 0x9]
	strb r0, [r4, 0x2]
	ldrh r0, [r4, 0x6]
	ldrb r1, [r4, 0x8]
	lsls r2, 28
	lsrs r2, 28
	ldrh r3, [r4, 0x4]
	bl BlendPalette
	ldrb r5, [r4, 0xB]
	lsls r0, r5, 26
	asrs r0, 30
	cmp r0, 0x1
	beq _08151F16
	cmp r0, 0x1
	bgt _08151EE4
	cmp r0, 0
	beq _08151EEA
	b _08151FD0
	.pool
_08151EE4:
	cmp r0, 0x2
	beq _08151F92
	b _08151FD0
_08151EEA:
	ldrb r2, [r4, 0x1]
	lsls r1, r2, 28
	lsrs r0, r1, 28
	adds r0, 0x1
	mov r3, r9
	ands r0, r3
	mov r6, r8
	adds r3, r6, 0
	ands r3, r2
	orrs r3, r0
	strb r3, [r4, 0x1]
	lsrs r1, 28
	lsls r0, r5, 28
	asrs r0, 28
	cmp r1, r0
	bne _08151FD0
	ldrb r0, [r4, 0x3]
	adds r0, 0x1
	strb r0, [r4, 0x3]
	ands r3, r6
	strb r3, [r4, 0x1]
	b _08151FD0
_08151F16:
	ldrb r3, [r4, 0x1]
	movs r0, 0x10
	ands r0, r3
	cmp r0, 0
	beq _08151F54
	lsls r0, r3, 28
	lsrs r0, 28
	subs r0, 0x1
	mov r5, r9
	ands r0, r5
	mov r2, r8
	ands r2, r3
	orrs r2, r0
	strb r2, [r4, 0x1]
	cmp r0, 0
	bne _08151FD0
	ldrb r0, [r4, 0x3]
	adds r0, 0x1
	strb r0, [r4, 0x3]
	lsls r0, r2, 27
	lsrs r0, 31
	eors r0, r7
	ands r0, r7
	lsls r0, 4
	movs r3, 0x11
	negs r3, r3
	adds r1, r3, 0
	ands r2, r1
	orrs r2, r0
	strb r2, [r4, 0x1]
	b _08151FD0
_08151F54:
	lsls r0, r5, 28
	asrs r0, 28
	subs r0, 0x1
	mov r5, r9
	ands r0, r5
	lsls r2, r3, 28
	lsrs r1, r2, 28
	adds r1, 0x1
	ands r1, r5
	mov r5, r8
	ands r3, r5
	orrs r3, r1
	strb r3, [r4, 0x1]
	lsrs r2, 28
	cmp r2, r0
	bne _08151FD0
	ldrb r0, [r4, 0x3]
	adds r0, 0x1
	strb r0, [r4, 0x3]
	lsls r0, r3, 27
	lsrs r0, 31
	eors r0, r7
	ands r0, r7
	lsls r0, 4
	movs r2, 0x11
	negs r2, r2
	adds r1, r2, 0
	ands r3, r1
	orrs r3, r0
	strb r3, [r4, 0x1]
	b _08151FD0
_08151F92:
	ldrb r2, [r4, 0x1]
	movs r0, 0x10
	ands r0, r2
	cmp r0, 0
	beq _08151FA2
	mov r0, r8
	ands r0, r2
	b _08151FB0
_08151FA2:
	lsls r1, r5, 28
	asrs r1, 28
	mov r3, r9
	ands r1, r3
	mov r0, r8
	ands r0, r2
	orrs r0, r1
_08151FB0:
	strb r0, [r4, 0x1]
	ldrb r2, [r4, 0x1]
	lsls r0, r2, 27
	lsrs r0, 31
	eors r0, r7
	ands r0, r7
	lsls r0, 4
	movs r5, 0x11
	negs r5, r5
	adds r1, r5, 0
	ands r2, r1
	orrs r2, r0
	strb r2, [r4, 0x1]
	ldrb r0, [r4, 0x3]
	adds r0, 0x1
	strb r0, [r4, 0x3]
_08151FD0:
	ldrb r1, [r4, 0xA]
	cmp r1, 0xFF
	beq _08151FE6
	ldrb r0, [r4, 0x3]
	cmp r0, r1
	bne _08151FE6
	ldrb r1, [r4]
	ldr r0, [sp]
	movs r2, 0
	bl sub_8151D28
_08151FE6:
	mov r0, r10
	adds r0, 0x1
	lsls r0, 24
	lsrs r0, 24
	mov r10, r0
	cmp r0, 0xF
	bhi _08151FF6
	b _08151E78
_08151FF6:
	add sp, 0x4
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_8151E50

	thumb_func_start sub_8152008
sub_8152008: @ 8152008
	push {r4-r7,lr}
	adds r6, r0, 0
	ldr r0, [sp, 0x14]
	ldr r4, [sp, 0x18]
	lsls r1, 16
	lsrs r7, r1, 16
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 24
	lsls r0, 24
	lsrs r5, r0, 24
	lsls r4, 24
	lsrs r4, 24
	movs r1, 0
	lsrs r3, 19
	adds r3, r2
	lsls r3, 1
	adds r6, r3
	cmp r1, r4
	bcs _08152052
_08152030:
	lsls r0, r1, 6
	adds r2, r6, r0
	movs r0, 0
	adds r3, r1, 0x1
	cmp r0, r5
	bcs _0815204A
_0815203C:
	strh r7, [r2]
	adds r2, 0x2
	adds r0, 0x1
	lsls r0, 24
	lsrs r0, 24
	cmp r0, r5
	bcc _0815203C
_0815204A:
	lsls r0, r3, 24
	lsrs r1, r0, 24
	cmp r1, r4
	bcc _08152030
_08152052:
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_8152008

	thumb_func_start sub_8152058
sub_8152058: @ 8152058
	push {r4-r7,lr}
	adds r7, r0, 0
	ldr r0, [sp, 0x14]
	ldr r4, [sp, 0x18]
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 24
	lsls r0, 24
	lsrs r5, r0, 24
	lsls r4, 24
	lsrs r6, r4, 24
	movs r4, 0
	lsrs r3, 19
	adds r3, r2
	lsls r3, 1
	adds r7, r3
	cmp r4, r6
	bcs _081520A2
_0815207C:
	lsls r0, r4, 6
	adds r2, r7, r0
	movs r3, 0
	adds r4, 0x1
	cmp r3, r5
	bcs _0815209A
_08152088:
	ldrh r0, [r1]
	strh r0, [r2]
	adds r1, 0x2
	adds r2, 0x2
	adds r0, r3, 0x1
	lsls r0, 24
	lsrs r3, r0, 24
	cmp r3, r5
	bcc _08152088
_0815209A:
	lsls r0, r4, 24
	lsrs r4, r0, 24
	cmp r4, r6
	bcc _0815207C
_081520A2:
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_8152058

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