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

	.syntax unified

	.text

	thumb_func_start sub_8177874
sub_8177874: @ 8177874
	push {lr}
	bl LoadOam
	bl ProcessSpriteCopyRequests
	bl TransferPlttBuffer
	pop {r0}
	bx r0
	thumb_func_end sub_8177874

	thumb_func_start sub_8177888
sub_8177888: @ 8177888
	push {r4,r5,lr}
	sub sp, 0xC
	movs r0, 0
	bl SetVBlankCallback
	movs r0, 0
	movs r1, 0
	bl SetGpuReg
	movs r0, 0xE
	movs r1, 0
	bl SetGpuReg
	movs r0, 0xC
	movs r1, 0
	bl SetGpuReg
	movs r0, 0xA
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x8
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x1C
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x1E
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x18
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x1A
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x14
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x16
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x10
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x12
	movs r1, 0
	bl SetGpuReg
	add r1, sp, 0x4
	movs r0, 0
	strh r0, [r1]
	ldr r1, =0x040000d4
	add r0, sp, 0x4
	str r0, [r1]
	movs r0, 0xC0
	lsls r0, 19
	str r0, [r1, 0x4]
	ldr r0, =0x8100c000
	str r0, [r1, 0x8]
	ldr r0, [r1, 0x8]
	movs r5, 0
	str r5, [sp, 0x8]
	add r0, sp, 0x8
	str r0, [r1]
	movs r0, 0xE0
	lsls r0, 19
	str r0, [r1, 0x4]
	ldr r0, =0x85000100
	str r0, [r1, 0x8]
	ldr r0, [r1, 0x8]
	add r0, sp, 0x4
	strh r5, [r0]
	str r0, [r1]
	movs r0, 0xA0
	lsls r0, 19
	str r0, [r1, 0x4]
	ldr r0, =0x81000200
	str r0, [r1, 0x8]
	ldr r0, [r1, 0x8]
	bl remove_some_task
	bl ResetTasks
	bl ResetSpriteData
	bl ResetPaletteFade
	bl FreeAllSpritePalettes
	ldr r0, =gUnknown_085E7088
	movs r1, 0
	movs r2, 0x40
	bl LoadPalette
	ldr r4, =gUnknown_0203BCF0
	movs r0, 0x80
	lsls r0, 5
	bl Alloc
	str r0, [r4]
	bl sub_8177B44
	bl sub_8177B9C
	bl reset_temp_tile_data_buffers
	ldr r1, =gUnknown_085E7804
	str r5, [sp]
	movs r0, 0x1
	movs r2, 0
	movs r3, 0
	bl decompress_and_copy_tile_data_to_vram
_0817797C:
	bl free_temp_tile_data_buffers_if_possible
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0
	bne _0817797C
	ldr r0, =gUnknown_085E70C8
	ldr r1, =gUnknown_0203BCF0
	ldr r1, [r1]
	bl LZDecompressWram
	movs r0, 0x1
	bl CopyBgTilemapBufferToVram
	bl pokedex_diploma_something
	movs r4, 0x1
	negs r4, r4
	adds r0, r4, 0
	movs r1, 0x10
	movs r2, 0
	bl BlendPalettes
	str r5, [sp]
	adds r0, r4, 0
	movs r1, 0
	movs r2, 0x10
	movs r3, 0
	bl BeginNormalPaletteFade
	movs r0, 0x1
	bl EnableInterrupts
	ldr r0, =sub_8177874
	bl SetVBlankCallback
	ldr r0, =sub_8177A08
	bl SetMainCallback2
	ldr r0, =sub_8177A20
	movs r1, 0
	bl CreateTask
	add sp, 0xC
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8177888

	thumb_func_start sub_8177A08
sub_8177A08: @ 8177A08
	push {lr}
	bl RunTasks
	bl AnimateSprites
	bl BuildOamBuffer
	bl UpdatePaletteFade
	pop {r0}
	bx r0
	thumb_func_end sub_8177A08

	thumb_func_start sub_8177A20
sub_8177A20: @ 8177A20
	push {lr}
	lsls r0, 24
	lsrs r2, r0, 24
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _08177A40
	ldr r0, =gTasks
	lsls r1, r2, 2
	adds r1, r2
	lsls r1, 3
	adds r1, r0
	ldr r0, =sub_8177A50
	str r0, [r1]
_08177A40:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8177A20

	thumb_func_start sub_8177A50
sub_8177A50: @ 8177A50
	push {r4,lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r0, =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0x3
	ands r0, r1
	cmp r0, 0
	beq _08177A82
	movs r0, 0x1
	negs r0, r0
	movs r1, 0
	str r1, [sp]
	movs r2, 0
	movs r3, 0x10
	bl BeginNormalPaletteFade
	ldr r1, =gTasks
	lsls r0, r4, 2
	adds r0, r4
	lsls r0, 3
	adds r0, r1
	ldr r1, =sub_8177A98
	str r1, [r0]
_08177A82:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8177A50

	thumb_func_start sub_8177A98
sub_8177A98: @ 8177A98
	push {r4,lr}
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _08177AC2
	ldr r0, =gUnknown_0203BCF0
	ldr r0, [r0]
	bl Free
	bl FreeAllWindowBuffers
	adds r0, r4, 0
	bl DestroyTask
	ldr r0, =sub_80861E8
	bl SetMainCallback2
_08177AC2:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8177A98

	thumb_func_start pokedex_diploma_something
pokedex_diploma_something: @ 8177AD4
	push {r4,lr}
	bl sub_80C0944
	lsls r0, 16
	cmp r0, 0
	beq _08177AFC
	movs r1, 0x80
	lsls r1, 1
	movs r0, 0x14
	bl SetGpuReg
	ldr r0, =gStringVar1
	ldr r1, =gUnknown_085EE855
	bl StringCopy
	b _08177B0C
	.pool
_08177AFC:
	movs r0, 0x14
	movs r1, 0
	bl SetGpuReg
	ldr r0, =gStringVar1
	ldr r1, =gUnknown_085EE84F
	bl StringCopy
_08177B0C:
	ldr r4, =gStringVar4
	ldr r1, =gUnknown_085EE85E
	adds r0, r4, 0
	bl StringExpandPlaceholders
	adds r0, r4, 0
	movs r1, 0
	movs r2, 0x1
	bl sub_8177BCC
	movs r0, 0
	bl PutWindowTilemap
	movs r0, 0
	movs r1, 0x3
	bl CopyWindowToVram
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end pokedex_diploma_something

	thumb_func_start sub_8177B44
sub_8177B44: @ 8177B44
	push {lr}
	movs r0, 0
	bl ResetBgsAndClearDma3BusyFlags
	ldr r1, =gUnknown_085E81FC
	movs r0, 0
	movs r2, 0x2
	bl InitBgsFromTemplates
	ldr r0, =gUnknown_0203BCF0
	ldr r1, [r0]
	movs r0, 0x1
	bl SetBgTilemapBuffer
	movs r1, 0x82
	lsls r1, 5
	movs r0, 0
	bl SetGpuReg
	movs r0, 0
	bl ShowBg
	movs r0, 0x1
	bl ShowBg
	movs r0, 0x50
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x52
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x54
	movs r1, 0
	bl SetGpuReg
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8177B44

	thumb_func_start sub_8177B9C
sub_8177B9C: @ 8177B9C
	push {lr}
	ldr r0, =gUnknown_085E8204
	bl InitWindows
	bl DeactivateAllTextPrinters
	ldr r0, =gUnknown_0860F074
	movs r1, 0xF0
	movs r2, 0x20
	bl LoadPalette
	movs r0, 0
	movs r1, 0
	bl FillWindowPixelBuffer
	movs r0, 0
	bl PutWindowTilemap
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8177B9C

	thumb_func_start sub_8177BCC
sub_8177BCC: @ 8177BCC
	push {r4-r6,lr}
	sub sp, 0x18
	adds r6, r0, 0
	adds r4, r1, 0
	adds r5, r2, 0
	lsls r4, 24
	lsrs r4, 24
	lsls r5, 24
	lsrs r5, 24
	ldr r1, =gUnknown_085E8214
	add r0, sp, 0x14
	movs r2, 0x3
	bl memcpy
	movs r0, 0
	str r0, [sp]
	str r0, [sp, 0x4]
	add r0, sp, 0x14
	str r0, [sp, 0x8]
	movs r0, 0x1
	negs r0, r0
	str r0, [sp, 0xC]
	str r6, [sp, 0x10]
	movs r0, 0
	movs r1, 0x1
	adds r2, r4, 0
	adds r3, r5, 0
	bl AddTextPrinterParametrized2
	add sp, 0x18
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8177BCC

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