summaryrefslogtreecommitdiff
path: root/asm/frontier_pass.s
diff options
context:
space:
mode:
authorDiegoisawesome <Diegoisawesome@users.noreply.github.com>2019-01-23 14:43:37 -0600
committerGitHub <noreply@github.com>2019-01-23 14:43:37 -0600
commit4cd4cbe13312b1b0bb9c318cc453d084bb5c345f (patch)
tree845639b20a44976fc89bbd89899b4ba055c022ca /asm/frontier_pass.s
parent900f294011ea0eb06c48c28b4b4aea51e5cf32b7 (diff)
parent524db6068e40db9221fa1ef8214009c2f1ace3c8 (diff)
Merge pull request #522 from DizzyEggg/trainer_card
Trainer card
Diffstat (limited to 'asm/frontier_pass.s')
-rw-r--r--asm/frontier_pass.s3520
1 files changed, 3520 insertions, 0 deletions
diff --git a/asm/frontier_pass.s b/asm/frontier_pass.s
new file mode 100644
index 000000000..c9746b91f
--- /dev/null
+++ b/asm/frontier_pass.s
@@ -0,0 +1,3520 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+
+
+
+ thumb_func_start sub_80C51C4
+sub_80C51C4: @ 80C51C4
+ push {lr}
+ bl sub_80C51F0
+ ldr r0, =sub_80C544C
+ bl SetMainCallback2
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C51C4
+
+ thumb_func_start sub_80C51D8
+sub_80C51D8: @ 80C51D8
+ push {lr}
+ ldr r0, =gUnknown_02039CEC
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl SetMainCallback2
+ bl sub_80C52E4
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C51D8
+
+ thumb_func_start sub_80C51F0
+sub_80C51F0: @ 80C51F0
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r5, =gUnknown_02039CEC
+ ldr r0, [r5]
+ cmp r0, 0
+ beq _080C5204
+ movs r0, 0x1
+ b _080C52C8
+ .pool
+_080C5204:
+ movs r0, 0x18
+ bl AllocZeroed
+ str r0, [r5]
+ cmp r0, 0
+ bne _080C5214
+ movs r0, 0x2
+ b _080C52C8
+_080C5214:
+ str r4, [r0]
+ bl GetCurrentRegionMapSectionId
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x3A
+ beq _080C5232
+ cmp r4, 0xCA
+ beq _080C5232
+ ldr r0, [r5]
+ movs r1, 0xB0
+ strh r1, [r0, 0x8]
+ movs r1, 0x68
+ strh r1, [r0, 0xA]
+ b _080C5240
+_080C5232:
+ ldr r2, =gUnknown_02039CEC
+ ldr r1, [r2]
+ movs r0, 0xB0
+ strh r0, [r1, 0x8]
+ movs r0, 0x30
+ strh r0, [r1, 0xA]
+ adds r5, r2, 0
+_080C5240:
+ ldr r1, [r5]
+ ldr r0, =gSaveBlock2Ptr
+ ldr r0, [r0]
+ ldr r2, =0x00000eb8
+ adds r0, r2
+ ldrh r0, [r0]
+ strh r0, [r1, 0x6]
+ bl CanCopyRecordedBattleSaveData
+ ldr r3, [r5]
+ movs r1, 0x1
+ ands r0, r1
+ ldrb r2, [r3, 0xE]
+ movs r1, 0x2
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r3, 0xE]
+ ldr r2, [r5]
+ ldrb r1, [r2, 0xE]
+ movs r0, 0xF
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2, 0xE]
+ bl CountPlayerTrainerStars
+ ldr r3, [r5]
+ lsls r0, 4
+ ldrb r2, [r3, 0xE]
+ movs r1, 0xF
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r3, 0xE]
+ movs r4, 0
+ adds r6, r5, 0
+_080C5286:
+ lsls r5, r4, 1
+ ldr r1, =0x000008c4
+ adds r0, r5, r1
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _080C52A2
+ ldr r1, [r6]
+ adds r1, 0xF
+ adds r1, r4
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_080C52A2:
+ ldr r2, =0x000008c5
+ adds r0, r5, r2
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _080C52BC
+ ldr r1, [r6]
+ adds r1, 0xF
+ adds r1, r4
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_080C52BC:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x6
+ bls _080C5286
+ movs r0, 0
+_080C52C8:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80C51F0
+
+ thumb_func_start sub_80C52E4
+sub_80C52E4: @ 80C52E4
+ push {r4,lr}
+ ldr r4, =gUnknown_02039CEC
+ ldr r0, [r4]
+ cmp r0, 0
+ beq _080C5308
+ movs r1, 0
+ movs r2, 0x18
+ bl memset
+ ldr r0, [r4]
+ bl Free
+ movs r0, 0
+ str r0, [r4]
+ b _080C530A
+ .pool
+_080C5308:
+ movs r0, 0x1
+_080C530A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C52E4
+
+ thumb_func_start sub_80C5310
+sub_80C5310: @ 80C5310
+ push {r4,lr}
+ ldr r4, =gUnknown_02039CF0
+ ldr r0, [r4]
+ cmp r0, 0
+ beq _080C5324
+ movs r0, 0x1
+ b _080C533A
+ .pool
+_080C5324:
+ ldr r0, =0x00002434
+ bl AllocZeroed
+ str r0, [r4]
+ cmp r0, 0
+ beq _080C5338
+ movs r0, 0
+ b _080C533A
+ .pool
+_080C5338:
+ movs r0, 0x2
+_080C533A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C5310
+
+ thumb_func_start sub_80C5340
+sub_80C5340: @ 80C5340
+ push {r4,lr}
+ bl FreeAllWindowBuffers
+ ldr r4, =gUnknown_02039CF0
+ ldr r0, [r4]
+ cmp r0, 0
+ bne _080C5358
+ movs r0, 0x1
+ b _080C53A0
+ .pool
+_080C5358:
+ ldr r0, [r0, 0x28]
+ cmp r0, 0
+ beq _080C5368
+ bl Free
+ ldr r1, [r4]
+ movs r0, 0
+ str r0, [r1, 0x28]
+_080C5368:
+ ldr r0, [r4]
+ ldr r0, [r0, 0x24]
+ cmp r0, 0
+ beq _080C537A
+ bl Free
+ ldr r1, [r4]
+ movs r0, 0
+ str r0, [r1, 0x24]
+_080C537A:
+ ldr r0, [r4]
+ ldr r0, [r0, 0x20]
+ cmp r0, 0
+ beq _080C538C
+ bl Free
+ ldr r1, [r4]
+ movs r0, 0
+ str r0, [r1, 0x20]
+_080C538C:
+ ldr r0, [r4]
+ ldr r2, =0x00002434
+ movs r1, 0
+ bl memset
+ ldr r0, [r4]
+ bl Free
+ movs r0, 0
+ str r0, [r4]
+_080C53A0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80C5340
+
+ thumb_func_start pokemon_details
+pokemon_details: @ 80C53AC
+ push {r4-r7,lr}
+ sub sp, 0x10
+ ldr r0, =gUnknown_02039CF0
+ ldr r6, [r0]
+ adds r0, r6, 0
+ adds r0, 0x2C
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080C5416
+ ldr r3, =gUnknown_085713E0
+ ldr r0, =gUnknown_02039CEC
+ ldr r0, [r0]
+ ldrb r4, [r0, 0xE]
+ lsls r4, 28
+ lsrs r0, r4, 29
+ subs r0, 0x1
+ lsls r0, 2
+ adds r0, r3
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ lsls r1, 8
+ lsrs r0, r4, 29
+ subs r0, 0x1
+ lsls r0, 2
+ adds r5, r3, 0x2
+ adds r0, r5
+ movs r7, 0
+ ldrsh r2, [r0, r7]
+ lsls r2, 8
+ lsrs r0, r4, 29
+ subs r0, 0x1
+ lsls r0, 2
+ adds r0, r3
+ movs r7, 0
+ ldrsh r3, [r0, r7]
+ lsrs r4, 29
+ subs r4, 0x1
+ lsls r4, 2
+ adds r4, r5
+ movs r5, 0
+ ldrsh r0, [r4, r5]
+ str r0, [sp]
+ movs r7, 0x2E
+ ldrsh r0, [r6, r7]
+ str r0, [sp, 0x4]
+ movs r4, 0x30
+ ldrsh r0, [r6, r4]
+ str r0, [sp, 0x8]
+ movs r0, 0
+ str r0, [sp, 0xC]
+ movs r0, 0x2
+ bl SetBgAffine
+_080C5416:
+ bl LoadOam
+ bl ProcessSpriteCopyRequests
+ bl TransferPlttBuffer
+ add sp, 0x10
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end pokemon_details
+
+ thumb_func_start sub_80C5438
+sub_80C5438: @ 80C5438
+ push {lr}
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80C5438
+
+ thumb_func_start sub_80C544C
+sub_80C544C: @ 80C544C
+ push {lr}
+ bl sub_80C5484
+ cmp r0, 0
+ beq _080C5464
+ ldr r0, =sub_80C5A48
+ movs r1, 0
+ bl CreateTask
+ ldr r0, =sub_80C5438
+ bl SetMainCallback2
+_080C5464:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C544C
+
+ thumb_func_start sub_80C5470
+sub_80C5470: @ 80C5470
+ push {lr}
+ bl sub_80C570C
+ cmp r0, 0
+ beq _080C547E
+ bl sub_80C51D8
+_080C547E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80C5470
+
+ thumb_func_start sub_80C5484
+sub_80C5484: @ 80C5484
+ push {r4,r5,lr}
+ sub sp, 0xC
+ movs r0, 0
+ str r0, [sp, 0x8]
+ ldr r0, =gUnknown_02039CEC
+ ldr r0, [r0]
+ ldrh r0, [r0, 0x4]
+ cmp r0, 0xA
+ bls _080C5498
+ b _080C56F4
+_080C5498:
+ lsls r0, 2
+ ldr r1, =_080C54AC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_080C54AC:
+ .4byte _080C54D8
+ .4byte _080C54EE
+ .4byte _080C54F4
+ .4byte _080C550A
+ .4byte _080C5510
+ .4byte _080C5560
+ .4byte _080C5570
+ .4byte _080C55D0
+ .4byte _080C5624
+ .4byte _080C5684
+ .4byte _080C56D0
+_080C54D8:
+ movs r0, 0
+ bl SetVBlankCallback
+ bl ScanlineEffect_Stop
+ bl SetVBlankHBlankCallbacksToNull
+ movs r0, 0x2
+ bl DisableInterrupts
+ b _080C56F4
+_080C54EE:
+ bl sub_80C50D0
+ b _080C56F4
+_080C54F4:
+ bl ResetTasks
+ bl ResetSpriteData
+ bl FreeAllSpritePalettes
+ bl ResetPaletteFade
+ bl reset_temp_tile_data_buffers
+ b _080C56F4
+_080C550A:
+ bl sub_80C5310
+ b _080C56F4
+_080C5510:
+ movs r0, 0
+ bl ResetBgsAndClearDma3BusyFlags
+ ldr r1, =gUnknown_085713E8
+ movs r0, 0x1
+ movs r2, 0x3
+ bl InitBgsFromTemplates
+ ldr r4, =gUnknown_02039CF0
+ ldr r1, [r4]
+ adds r1, 0x32
+ movs r0, 0x1
+ bl SetBgTilemapBuffer
+ ldr r1, [r4]
+ ldr r0, =0x00001032
+ adds r1, r0
+ movs r0, 0x2
+ bl SetBgTilemapBuffer
+ ldr r1, [r4]
+ ldr r0, =0x00002032
+ adds r1, r0
+ movs r0, 0x3
+ bl SetBgTilemapBuffer
+ movs r0, 0x2
+ movs r1, 0x6
+ movs r2, 0x1
+ bl SetBgAttribute
+ b _080C56F4
+ .pool
+_080C5560:
+ ldr r0, =gUnknown_08571400
+ bl InitWindows
+ bl DeactivateAllTextPrinters
+ b _080C56F4
+ .pool
+_080C5570:
+ ldr r0, =gUnknown_085712F8
+ add r1, sp, 0x8
+ bl malloc_and_decompress
+ ldr r4, =gUnknown_02039CF0
+ ldr r1, [r4]
+ str r0, [r1, 0x20]
+ ldr r0, =gUnknown_08571060
+ add r1, sp, 0x8
+ bl malloc_and_decompress
+ ldr r1, [r4]
+ str r0, [r1, 0x24]
+ ldr r0, =gUnknown_085712C0
+ add r1, sp, 0x8
+ bl malloc_and_decompress
+ ldr r1, [r4]
+ str r0, [r1, 0x28]
+ ldr r1, =gUnknown_08DE08C8
+ movs r4, 0
+ str r4, [sp]
+ movs r0, 0x1
+ movs r2, 0
+ movs r3, 0
+ bl decompress_and_copy_tile_data_to_vram
+ ldr r1, =gUnknown_08DE2084
+ str r4, [sp]
+ movs r0, 0x2
+ movs r2, 0
+ movs r3, 0
+ bl decompress_and_copy_tile_data_to_vram
+ b _080C56F4
+ .pool
+_080C55D0:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ beq _080C55DC
+ b _080C56FE
+_080C55DC:
+ movs r5, 0x1E
+ str r5, [sp]
+ movs r4, 0x14
+ str r4, [sp, 0x4]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ str r5, [sp]
+ str r4, [sp, 0x4]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ str r5, [sp]
+ str r4, [sp, 0x4]
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ movs r0, 0x1
+ bl CopyBgTilemapBufferToVram
+ movs r0, 0x2
+ bl CopyBgTilemapBufferToVram
+ b _080C56F4
+_080C5624:
+ ldr r4, =gUnknown_08DE07C8
+ movs r2, 0xD0
+ lsls r2, 1
+ adds r0, r4, 0
+ movs r1, 0
+ bl LoadPalette
+ ldr r5, =gUnknown_02039CEC
+ ldr r0, [r5]
+ ldrb r0, [r0, 0xE]
+ lsrs r0, 4
+ lsls r0, 5
+ adds r4, 0x20
+ adds r0, r4
+ movs r1, 0x10
+ movs r2, 0x20
+ bl LoadPalette
+ movs r0, 0
+ bl stdpal_get
+ movs r1, 0xF0
+ movs r2, 0x20
+ bl LoadPalette
+ bl sub_80C629C
+ ldr r1, [r5]
+ ldrb r0, [r1, 0xC]
+ ldrb r1, [r1, 0xD]
+ bl sub_80C6104
+ ldr r5, [r5]
+ ldrb r0, [r5, 0xE]
+ movs r1, 0xE
+ ands r1, r0
+ cmp r1, 0x2
+ beq _080C5674
+ cmp r1, 0x4
+ bne _080C56F4
+_080C5674:
+ movs r0, 0
+ strh r0, [r5, 0x4]
+ movs r0, 0x1
+ b _080C5700
+ .pool
+_080C5684:
+ movs r1, 0x82
+ lsls r1, 5
+ movs r0, 0
+ bl SetGpuReg
+ movs r0, 0
+ bl ShowBg
+ movs r0, 0x1
+ bl ShowBg
+ movs r0, 0x2
+ bl ShowBg
+ bl sub_80C62DC
+ ldr r0, =pokemon_details
+ bl SetVBlankCallback
+ movs r4, 0x1
+ negs r4, r4
+ adds r0, r4, 0
+ movs r1, 0x10
+ movs r2, 0
+ bl BlendPalettes
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ b _080C56F4
+ .pool
+_080C56D0:
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _080C56FE
+ ldr r0, =gUnknown_02039CEC
+ ldr r0, [r0]
+ strh r1, [r0, 0x4]
+ movs r0, 0x1
+ b _080C5700
+ .pool
+_080C56F4:
+ ldr r0, =gUnknown_02039CEC
+ ldr r1, [r0]
+ ldrh r0, [r1, 0x4]
+ adds r0, 0x1
+ strh r0, [r1, 0x4]
+_080C56FE:
+ movs r0, 0
+_080C5700:
+ add sp, 0xC
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80C5484
+
+ thumb_func_start sub_80C570C
+sub_80C570C: @ 80C570C
+ push {lr}
+ sub sp, 0x4
+ ldr r1, =gUnknown_02039CEC
+ ldr r0, [r1]
+ ldrh r0, [r0, 0x4]
+ adds r2, r1, 0
+ cmp r0, 0x5
+ bhi _080C57E4
+ lsls r0, 2
+ ldr r1, =_080C5730
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_080C5730:
+ .4byte _080C5748
+ .4byte _080C5770
+ .4byte _080C577C
+ .4byte _080C57A6
+ .4byte _080C57AC
+ .4byte _080C57BE
+_080C5748:
+ ldr r0, [r2]
+ ldrb r0, [r0, 0xE]
+ movs r1, 0xE
+ ands r1, r0
+ cmp r1, 0x2
+ beq _080C576A
+ cmp r1, 0x4
+ beq _080C576A
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ b _080C57E4
+_080C576A:
+ ldr r1, [r2]
+ movs r0, 0x2
+ b _080C57EC
+_080C5770:
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ beq _080C57E4
+ b _080C57EE
+_080C577C:
+ movs r0, 0
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0
+ bl HideBg
+ movs r0, 0x1
+ bl HideBg
+ movs r0, 0x2
+ bl HideBg
+ movs r0, 0
+ bl SetVBlankCallback
+ bl ScanlineEffect_Stop
+ bl SetVBlankHBlankCallbacksToNull
+ b _080C57E4
+_080C57A6:
+ bl sub_80C63FC
+ b _080C57E4
+_080C57AC:
+ bl sub_80C50D0
+ bl ResetTasks
+ bl ResetSpriteData
+ bl FreeAllSpritePalettes
+ b _080C57E4
+_080C57BE:
+ movs r0, 0
+ bl UnsetBgTilemapBuffer
+ movs r0, 0x1
+ bl UnsetBgTilemapBuffer
+ movs r0, 0x2
+ bl UnsetBgTilemapBuffer
+ bl sub_80C5340
+ ldr r0, =gUnknown_02039CEC
+ ldr r1, [r0]
+ movs r0, 0
+ strh r0, [r1, 0x4]
+ movs r0, 0x1
+ b _080C57F0
+ .pool
+_080C57E4:
+ ldr r0, =gUnknown_02039CEC
+ ldr r1, [r0]
+ ldrh r0, [r1, 0x4]
+ adds r0, 0x1
+_080C57EC:
+ strh r0, [r1, 0x4]
+_080C57EE:
+ movs r0, 0
+_080C57F0:
+ add sp, 0x4
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80C570C
+
+ thumb_func_start sub_80C57FC
+sub_80C57FC: @ 80C57FC
+ push {r4-r7,lr}
+ lsls r0, 16
+ lsrs r6, r0, 16
+ movs r4, 0
+ ldr r7, =gUnknown_08571454
+ lsls r1, 16
+ asrs r5, r1, 16
+_080C580A:
+ lsls r0, r4, 3
+ adds r3, r0, r7
+ movs r1, 0
+ ldrsh r0, [r3, r1]
+ cmp r0, r5
+ bgt _080C5854
+ movs r1, 0x2
+ ldrsh r0, [r3, r1]
+ cmp r0, r5
+ blt _080C5854
+ movs r0, 0x4
+ ldrsh r1, [r3, r0]
+ lsls r0, r6, 16
+ asrs r2, r0, 16
+ cmp r1, r2
+ bgt _080C5854
+ movs r1, 0x6
+ ldrsh r0, [r3, r1]
+ cmp r0, r2
+ blt _080C5854
+ cmp r4, 0x5
+ bls _080C5842
+ ldr r0, =gUnknown_02039CEC
+ ldr r0, [r0]
+ adds r0, r4
+ ldrb r0, [r0, 0x9]
+ cmp r0, 0
+ beq _080C585E
+_080C5842:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ b _080C5860
+ .pool
+_080C5854:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xC
+ bls _080C580A
+_080C585E:
+ movs r0, 0
+_080C5860:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C57FC
+
+ thumb_func_start sub_80C5868
+sub_80C5868: @ 80C5868
+ push {lr}
+ bl sub_80C5484
+ cmp r0, 0
+ beq _080C58C6
+ ldr r1, =gUnknown_02039CEC
+ ldr r0, [r1]
+ ldrb r0, [r0, 0xE]
+ lsls r0, 28
+ lsrs r0, 29
+ cmp r0, 0x1
+ blt _080C58AC
+ cmp r0, 0x2
+ bgt _080C58AC
+ ldr r0, =sub_80C5BD8
+ movs r1, 0
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ movs r0, 0x1
+ strh r0, [r1, 0x8]
+ b _080C58C0
+ .pool
+_080C58AC:
+ ldr r2, [r1]
+ ldrb r1, [r2, 0xE]
+ movs r0, 0xF
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2, 0xE]
+ ldr r0, =sub_80C5A48
+ movs r1, 0
+ bl CreateTask
+_080C58C0:
+ ldr r0, =sub_80C5438
+ bl SetMainCallback2
+_080C58C6:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C5868
+
+ thumb_func_start sub_80C58D4
+sub_80C58D4: @ 80C58D4
+ push {r4,lr}
+ ldr r4, =gUnknown_02039CF8
+ ldr r0, [r4]
+ bl sub_80C51F0
+ ldr r0, =gUnknown_02039CEC
+ ldr r1, [r0]
+ ldrh r0, [r4, 0x4]
+ strh r0, [r1, 0x8]
+ ldrh r0, [r4, 0x6]
+ strh r0, [r1, 0xA]
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0x8
+ bl memset
+ bl InBattlePyramid
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _080C5914
+ cmp r0, 0x2
+ beq _080C591C
+ bl Overworld_PlaySpecialMapMusic
+ b _080C5924
+ .pool
+_080C5914:
+ ldr r0, =0x000001cd
+ b _080C5920
+ .pool
+_080C591C:
+ movs r0, 0xE7
+ lsls r0, 1
+_080C5920:
+ bl PlayBGM
+_080C5924:
+ ldr r0, =sub_80C5868
+ bl SetMainCallback2
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C58D4
+
+ thumb_func_start sub_80C5934
+sub_80C5934: @ 80C5934
+ push {lr}
+ bl sub_80C570C
+ cmp r0, 0
+ beq _080C599A
+ ldr r0, =gUnknown_02039CEC
+ ldr r2, [r0]
+ ldrb r0, [r2, 0xE]
+ lsls r0, 28
+ lsrs r0, 29
+ cmp r0, 0x2
+ beq _080C5994
+ cmp r0, 0x2
+ bgt _080C595C
+ cmp r0, 0x1
+ beq _080C5962
+ b _080C599A
+ .pool
+_080C595C:
+ cmp r0, 0x3
+ beq _080C5970
+ b _080C599A
+_080C5962:
+ ldr r0, =sub_80C5868
+ bl sub_80C6454
+ b _080C599A
+ .pool
+_080C5970:
+ ldr r1, =gUnknown_02039CF8
+ ldr r0, [r2]
+ str r0, [r1]
+ ldrh r0, [r2, 0x8]
+ strh r0, [r1, 0x4]
+ ldrh r0, [r2, 0xA]
+ strh r0, [r1, 0x6]
+ bl sub_80C52E4
+ ldr r0, =sub_80C58D4
+ bl PlayRecordedBattle
+ b _080C599A
+ .pool
+_080C5994:
+ ldr r0, =sub_80C5868
+ bl ShowPlayerTrainerCard
+_080C599A:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C5934
+
+ thumb_func_start sub_80C59A4
+sub_80C59A4: @ 80C59A4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r4, r3, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r2, r1, 0
+ cmp r1, 0x1
+ blt _080C59CC
+ cmp r1, 0x2
+ ble _080C59F4
+ cmp r1, 0x3
+ bne _080C59CC
+ ldr r0, =gUnknown_02039CEC
+ ldr r2, [r0]
+ ldrb r1, [r2, 0xE]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080C59D4
+_080C59CC:
+ movs r0, 0
+ b _080C5A30
+ .pool
+_080C59D4:
+ movs r0, 0xF
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x6
+ orrs r0, r1
+ strb r0, [r2, 0xE]
+ adds r0, r3, 0
+ bl DestroyTask
+ ldr r0, =sub_80C5934
+ bl SetMainCallback2
+ b _080C5A1A
+ .pool
+_080C59F4:
+ ldr r0, =gUnknown_02039CEC
+ ldr r3, [r0]
+ movs r0, 0x7
+ ands r2, r0
+ lsls r2, 1
+ ldrb r1, [r3, 0xE]
+ subs r0, 0x16
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r3, 0xE]
+ ldr r1, =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, =sub_80C5BD8
+ str r1, [r0]
+ movs r1, 0
+ strh r1, [r0, 0x8]
+_080C5A1A:
+ ldr r0, =gUnknown_02039CEC
+ ldr r2, [r0]
+ ldr r0, =gUnknown_02039CF0
+ ldr r1, [r0]
+ ldr r0, [r1]
+ ldrh r0, [r0, 0x20]
+ strh r0, [r2, 0x8]
+ ldr r0, [r1]
+ ldrh r0, [r0, 0x22]
+ strh r0, [r2, 0xA]
+ movs r0, 0x1
+_080C5A30:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80C59A4
+
+ thumb_func_start sub_80C5A48
+sub_80C5A48: @ 80C5A48
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r5, 0
+ ldr r2, =gMain
+ ldrh r1, [r2, 0x2C]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _080C5A80
+ ldr r0, =gUnknown_02039CF0
+ ldr r4, [r0]
+ ldr r1, [r4]
+ ldrh r3, [r1, 0x22]
+ movs r7, 0x22
+ ldrsh r0, [r1, r7]
+ cmp r0, 0x8
+ ble _080C5A80
+ subs r0, r3, 0x2
+ strh r0, [r1, 0x22]
+ ldr r1, [r4]
+ movs r3, 0x22
+ ldrsh r0, [r1, r3]
+ cmp r0, 0x7
+ bgt _080C5A7E
+ movs r0, 0x2
+ strh r0, [r1, 0x22]
+_080C5A7E:
+ movs r5, 0x1
+_080C5A80:
+ ldrh r1, [r2, 0x2C]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _080C5AAE
+ ldr r0, =gUnknown_02039CF0
+ ldr r4, [r0]
+ ldr r1, [r4]
+ ldrh r3, [r1, 0x22]
+ movs r7, 0x22
+ ldrsh r0, [r1, r7]
+ cmp r0, 0x87
+ bgt _080C5AAE
+ adds r0, r3, 0x2
+ strh r0, [r1, 0x22]
+ ldr r1, [r4]
+ movs r3, 0x22
+ ldrsh r0, [r1, r3]
+ cmp r0, 0x88
+ ble _080C5AAC
+ movs r0, 0x88
+ strh r0, [r1, 0x22]
+_080C5AAC:
+ movs r5, 0x1
+_080C5AAE:
+ ldrh r1, [r2, 0x2C]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080C5ADC
+ ldr r0, =gUnknown_02039CF0
+ ldr r4, [r0]
+ ldr r1, [r4]
+ ldrh r3, [r1, 0x20]
+ movs r7, 0x20
+ ldrsh r0, [r1, r7]
+ cmp r0, 0x5
+ ble _080C5ADC
+ subs r0, r3, 0x2
+ strh r0, [r1, 0x20]
+ ldr r1, [r4]
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ cmp r0, 0x4
+ bgt _080C5ADA
+ movs r0, 0x5
+ strh r0, [r1, 0x20]
+_080C5ADA:
+ movs r5, 0x1
+_080C5ADC:
+ ldrh r1, [r2, 0x2C]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080C5B0A
+ ldr r0, =gUnknown_02039CF0
+ ldr r4, [r0]
+ ldr r1, [r4]
+ ldrh r3, [r1, 0x20]
+ movs r7, 0x20
+ ldrsh r0, [r1, r7]
+ cmp r0, 0xE7
+ bgt _080C5B0A
+ adds r0, r3, 0x2
+ strh r0, [r1, 0x20]
+ ldr r1, [r4]
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ cmp r0, 0xE8
+ ble _080C5B08
+ movs r0, 0xE8
+ strh r0, [r1, 0x20]
+_080C5B08:
+ movs r5, 0x1
+_080C5B0A:
+ cmp r5, 0
+ bne _080C5B88
+ ldr r4, =gUnknown_02039CEC
+ ldr r0, [r4]
+ ldrb r3, [r0, 0xC]
+ cmp r3, 0
+ beq _080C5B5E
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080C5B5E
+ cmp r3, 0x3
+ bhi _080C5B48
+ movs r0, 0x5
+ bl PlaySE
+ ldr r0, [r4]
+ ldrb r1, [r0, 0xC]
+ adds r0, r6, 0
+ bl sub_80C59A4
+ cmp r0, 0
+ bne _080C5BCA
+ b _080C5B5E
+ .pool
+_080C5B48:
+ cmp r3, 0x4
+ bne _080C5B5E
+ movs r0, 0x3
+ bl PlaySE
+ ldr r0, =sub_80C5470
+ bl SetMainCallback2
+ adds r0, r6, 0
+ bl DestroyTask
+_080C5B5E:
+ ldr r0, =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080C5BCA
+ movs r0, 0x3
+ bl PlaySE
+ ldr r0, =sub_80C5470
+ bl SetMainCallback2
+ adds r0, r6, 0
+ bl DestroyTask
+ b _080C5BCA
+ .pool
+_080C5B88:
+ ldr r0, =gUnknown_02039CF0
+ ldr r0, [r0]
+ ldr r1, [r0]
+ ldrh r0, [r1, 0x20]
+ subs r0, 0x5
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r1, [r1, 0x22]
+ adds r1, 0x5
+ lsls r1, 16
+ asrs r1, 16
+ bl sub_80C57FC
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r4, =gUnknown_02039CEC
+ ldr r0, [r4]
+ ldrb r0, [r0, 0xC]
+ cmp r0, r5
+ beq _080C5BCA
+ adds r0, r5, 0
+ bl sub_80C5ED0
+ ldr r1, [r4]
+ ldrb r0, [r1, 0xC]
+ strb r0, [r1, 0xD]
+ ldr r0, [r4]
+ strb r5, [r0, 0xC]
+ ldr r1, [r4]
+ ldrb r0, [r1, 0xC]
+ ldrb r1, [r1, 0xD]
+ bl sub_80C6104
+_080C5BCA:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C5A48
+
+ thumb_func_start sub_80C5BD8
+sub_80C5BD8: @ 80C5BD8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r5, r0, 3
+ ldr r0, =gTasks + 0x8
+ mov r8, r0
+ adds r6, r5, r0
+ ldr r7, =gUnknown_02039CEC
+ ldr r0, [r7]
+ ldrh r0, [r0, 0x4]
+ cmp r0, 0x1
+ beq _080C5CD4
+ cmp r0, 0x1
+ bgt _080C5C0C
+ cmp r0, 0
+ beq _080C5C14
+ b _080C5D9C
+ .pool
+_080C5C0C:
+ cmp r0, 0x2
+ bne _080C5C12
+ b _080C5D2A
+_080C5C12:
+ b _080C5D9C
+_080C5C14:
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080C5C4C
+ movs r0, 0x1
+ movs r1, 0
+ bl sub_80C5F58
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1, 0
+ strh r0, [r6, 0x2]
+ strh r0, [r6, 0x4]
+ movs r0, 0x15
+ strh r0, [r6, 0x6]
+ strh r0, [r6, 0x8]
+ movs r0, 0x1
+ negs r0, r0
+ ldr r1, =0x00007fff
+ str r1, [sp]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ b _080C5CA4
+ .pool
+_080C5C4C:
+ movs r1, 0xFE
+ lsls r1, 1
+ adds r0, r1, 0
+ strh r0, [r6, 0x2]
+ strh r0, [r6, 0x4]
+ movs r1, 0x15
+ negs r1, r1
+ adds r0, r1, 0
+ strh r0, [r6, 0x6]
+ strh r0, [r6, 0x8]
+ movs r1, 0x82
+ lsls r1, 5
+ movs r0, 0
+ bl SetGpuReg
+ movs r0, 0
+ bl ShowBg
+ movs r0, 0x1
+ bl ShowBg
+ movs r0, 0x2
+ bl ShowBg
+ bl sub_80C62DC
+ ldr r0, =pokemon_details
+ bl SetVBlankCallback
+ movs r5, 0x1
+ negs r5, r5
+ ldr r4, =0x00007fff
+ adds r0, r5, 0
+ movs r1, 0x10
+ adds r2, r4, 0
+ bl BlendPalettes
+ str r4, [sp]
+ adds r0, r5, 0
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+_080C5CA4:
+ ldr r4, =gUnknown_02039CF0
+ ldr r0, [r4]
+ adds r0, 0x2C
+ movs r1, 0x1
+ strb r1, [r0]
+ movs r1, 0x2
+ ldrsh r0, [r6, r1]
+ bl sub_8151624
+ ldr r1, [r4]
+ strh r0, [r1, 0x2E]
+ movs r1, 0x4
+ ldrsh r0, [r6, r1]
+ bl sub_8151624
+ ldr r1, [r4]
+ strh r0, [r1, 0x30]
+ b _080C5D9C
+ .pool
+_080C5CD4:
+ bl UpdatePaletteFade
+ ldrh r0, [r6, 0x6]
+ ldrh r1, [r6, 0x2]
+ adds r0, r1
+ strh r0, [r6, 0x2]
+ ldrh r0, [r6, 0x8]
+ ldrh r1, [r6, 0x4]
+ adds r0, r1
+ strh r0, [r6, 0x4]
+ movs r1, 0x2
+ ldrsh r0, [r6, r1]
+ bl sub_8151624
+ ldr r4, =gUnknown_02039CF0
+ ldr r1, [r4]
+ strh r0, [r1, 0x2E]
+ movs r1, 0x4
+ ldrsh r0, [r6, r1]
+ bl sub_8151624
+ ldr r1, [r4]
+ strh r0, [r1, 0x30]
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080C5D1C
+ movs r0, 0x2
+ ldrsh r1, [r6, r0]
+ movs r0, 0xFE
+ lsls r0, 1
+ cmp r1, r0
+ ble _080C5DA6
+ b _080C5D9C
+ .pool
+_080C5D1C:
+ movs r0, 0x2
+ ldrsh r1, [r6, r0]
+ movs r0, 0x80
+ lsls r0, 1
+ cmp r1, r0
+ bne _080C5DA6
+ b _080C5D9C
+_080C5D2A:
+ ldr r0, =gUnknown_02039CF0
+ ldr r0, [r0]
+ adds r1, r0, 0
+ adds r1, 0x2C
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _080C5D3C
+ movs r0, 0
+ strb r0, [r1]
+_080C5D3C:
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ bne _080C5DA6
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080C5D64
+ adds r0, r4, 0
+ bl DestroyTask
+ ldr r0, =sub_80C5934
+ bl SetMainCallback2
+ b _080C5D82
+ .pool
+_080C5D64:
+ movs r0, 0
+ movs r1, 0
+ bl sub_80C5F58
+ ldr r2, [r7]
+ ldrb r1, [r2, 0xE]
+ movs r0, 0xF
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2, 0xE]
+ mov r0, r8
+ subs r0, 0x8
+ adds r0, r5, r0
+ ldr r1, =sub_80C5A48
+ str r1, [r0]
+_080C5D82:
+ movs r0, 0x2
+ movs r1, 0x6
+ movs r2, 0
+ bl SetBgAttribute
+ ldr r0, =gUnknown_02039CEC
+ ldr r1, [r0]
+ movs r0, 0
+ b _080C5DA4
+ .pool
+_080C5D9C:
+ ldr r0, =gUnknown_02039CEC
+ ldr r1, [r0]
+ ldrh r0, [r1, 0x4]
+ adds r0, 0x1
+_080C5DA4:
+ strh r0, [r1, 0x4]
+_080C5DA6:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C5BD8
+
+ thumb_func_start sub_80C5DB8
+sub_80C5DB8: @ 80C5DB8
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0xC
+ movs r4, 0
+_080C5DC2:
+ adds r0, r4, 0
+ bl PutWindowTilemap
+ adds r0, r4, 0
+ movs r1, 0
+ bl FillWindowPixelBuffer
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x4
+ bls _080C5DC2
+ ldr r4, =gText_SymbolsEarned
+ movs r0, 0x1
+ adds r1, r4, 0
+ movs r2, 0x60
+ bl GetStringCenterAlignXOffset
+ lsls r2, r0, 24
+ lsrs r2, 24
+ ldr r6, =gUnknown_08571448
+ str r6, [sp]
+ movs r0, 0
+ mov r8, r0
+ str r0, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0x1
+ movs r3, 0x5
+ bl AddTextPrinterParameterized3
+ ldr r4, =gText_BattleRecord
+ movs r0, 0x1
+ adds r1, r4, 0
+ movs r2, 0x60
+ bl GetStringCenterAlignXOffset
+ lsls r2, r0, 24
+ lsrs r2, 24
+ str r6, [sp]
+ mov r1, r8
+ str r1, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r3, 0x5
+ bl AddTextPrinterParameterized3
+ str r6, [sp]
+ mov r0, r8
+ str r0, [sp, 0x4]
+ ldr r0, =gText_BattlePoints
+ str r0, [sp, 0x8]
+ movs r0, 0x2
+ movs r1, 0x8
+ movs r2, 0x5
+ movs r3, 0x4
+ bl AddTextPrinterParameterized3
+ ldr r4, =gStringVar4
+ ldr r5, =gUnknown_02039CEC
+ ldr r0, [r5]
+ ldrh r1, [r0, 0x6]
+ adds r0, r4, 0
+ movs r2, 0
+ movs r3, 0x5
+ bl ConvertIntToDecimalStringN
+ movs r0, 0x8
+ adds r1, r4, 0
+ movs r2, 0x5B
+ bl GetStringRightAlignXOffset
+ lsls r2, r0, 24
+ lsrs r2, 24
+ str r6, [sp]
+ mov r1, r8
+ str r1, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r0, 0x2
+ movs r1, 0x8
+ movs r3, 0x10
+ bl AddTextPrinterParameterized3
+ ldr r1, [r5]
+ ldrh r0, [r1, 0x8]
+ subs r0, 0x5
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r1, [r1, 0xA]
+ adds r1, 0x5
+ lsls r1, 16
+ asrs r1, 16
+ bl sub_80C57FC
+ ldr r1, [r5]
+ strb r0, [r1, 0xC]
+ ldr r0, [r5]
+ mov r1, r8
+ strb r1, [r0, 0xD]
+ ldr r0, [r5]
+ ldrb r0, [r0, 0xC]
+ bl sub_80C5ED0
+ movs r4, 0
+_080C5E92:
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl CopyWindowToVram
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x4
+ bls _080C5E92
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C5DB8
+
+ thumb_func_start sub_80C5ED0
+sub_80C5ED0: @ 80C5ED0
+ push {r4,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r0, 0x3
+ movs r1, 0
+ bl FillWindowPixelBuffer
+ cmp r4, 0x3
+ bne _080C5F18
+ ldr r0, =gUnknown_02039CEC
+ ldr r0, [r0]
+ ldrb r0, [r0, 0xE]
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ bne _080C5F18
+ ldr r0, =gUnknown_0857144B
+ str r0, [sp]
+ str r1, [sp, 0x4]
+ ldr r0, =gUnknown_08571614
+ ldr r0, [r0]
+ str r0, [sp, 0x8]
+ movs r0, 0x3
+ movs r1, 0x1
+ movs r2, 0x2
+ movs r3, 0
+ bl AddTextPrinterParameterized3
+ b _080C5F3A
+ .pool
+_080C5F18:
+ cmp r4, 0
+ beq _080C5F3A
+ ldr r0, =gUnknown_0857144B
+ str r0, [sp]
+ movs r0, 0
+ str r0, [sp, 0x4]
+ ldr r1, =gUnknown_08571614
+ lsls r0, r4, 2
+ adds r0, r1
+ ldr r0, [r0]
+ str r0, [sp, 0x8]
+ movs r0, 0x3
+ movs r1, 0x1
+ movs r2, 0x2
+ movs r3, 0
+ bl AddTextPrinterParameterized3
+_080C5F3A:
+ movs r0, 0x3
+ movs r1, 0x3
+ bl CopyWindowToVram
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ add sp, 0xC
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C5ED0
+
+ thumb_func_start sub_80C5F58
+sub_80C5F58: @ 80C5F58
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r1, 24
+ lsrs r7, r1, 24
+ ldr r0, =gUnknown_02039CEC
+ ldr r0, [r0]
+ ldrb r0, [r0, 0xE]
+ lsls r0, 28
+ lsrs r0, 29
+ cmp r0, 0x1
+ beq _080C5F80
+ cmp r0, 0x2
+ beq _080C5FC2
+ b _080C60EE
+ .pool
+_080C5F80:
+ cmp r2, 0
+ beq _080C5FA8
+ ldr r0, =gUnknown_02039CF0
+ ldr r0, [r0]
+ ldr r1, [r0, 0x20]
+ movs r0, 0xC
+ str r0, [sp]
+ movs r0, 0x7
+ str r0, [sp, 0x4]
+ movs r0, 0x10
+ str r0, [sp, 0x8]
+ movs r0, 0x2
+ movs r2, 0x10
+ movs r3, 0x3
+ bl CopyToBgTilemapBufferRect_ChangePalette
+ b _080C6004
+ .pool
+_080C5FA8:
+ movs r0, 0xC
+ str r0, [sp]
+ movs r0, 0x7
+ str r0, [sp, 0x4]
+ movs r0, 0x10
+ str r0, [sp, 0x8]
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0x3
+ bl FillBgTilemapBufferRect
+ b _080C6004
+_080C5FC2:
+ cmp r2, 0
+ beq _080C5FEC
+ ldr r0, =gUnknown_02039CF0
+ ldr r0, [r0]
+ ldr r1, [r0, 0x20]
+ adds r1, 0x54
+ movs r0, 0xC
+ str r0, [sp]
+ movs r0, 0x7
+ str r0, [sp, 0x4]
+ movs r0, 0x10
+ str r0, [sp, 0x8]
+ movs r0, 0x2
+ movs r2, 0x10
+ movs r3, 0xA
+ bl CopyToBgTilemapBufferRect_ChangePalette
+ b _080C6004
+ .pool
+_080C5FEC:
+ movs r0, 0xC
+ str r0, [sp]
+ movs r0, 0x7
+ str r0, [sp, 0x4]
+ movs r0, 0x10
+ str r0, [sp, 0x8]
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0xA
+ bl FillBgTilemapBufferRect
+_080C6004:
+ movs r0, 0x2
+ bl CopyBgTilemapBufferToVram
+ cmp r7, 0
+ beq _080C6084
+ movs r4, 0xFE
+ lsls r4, 1
+ adds r0, r4, 0
+ bl sub_8151624
+ adds r6, r0, 0
+ lsls r6, 16
+ asrs r6, 16
+ adds r0, r4, 0
+ bl sub_8151624
+ lsls r0, 16
+ asrs r0, 16
+ ldr r5, =gUnknown_085713E0
+ ldr r1, =gUnknown_02039CEC
+ ldr r1, [r1]
+ ldrb r4, [r1, 0xE]
+ lsls r4, 28
+ lsrs r1, r4, 29
+ subs r1, 0x1
+ lsls r1, 2
+ adds r1, r5
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ lsls r1, 8
+ lsrs r2, r4, 29
+ subs r2, 0x1
+ lsls r2, 2
+ adds r3, r5, 0x2
+ mov r8, r3
+ add r2, r8
+ movs r3, 0
+ ldrsh r2, [r2, r3]
+ lsls r2, 8
+ lsrs r3, r4, 29
+ subs r3, 0x1
+ lsls r3, 2
+ adds r3, r5
+ movs r5, 0
+ ldrsh r3, [r3, r5]
+ lsrs r4, 29
+ subs r4, 0x1
+ lsls r4, 2
+ add r4, r8
+ movs r5, 0
+ ldrsh r4, [r4, r5]
+ str r4, [sp]
+ str r6, [sp, 0x4]
+ str r0, [sp, 0x8]
+ movs r0, 0
+ str r0, [sp, 0xC]
+ movs r0, 0x2
+ bl SetBgAffine
+ b _080C60EE
+ .pool
+_080C6084:
+ movs r4, 0x80
+ lsls r4, 1
+ adds r0, r4, 0
+ bl sub_8151624
+ adds r6, r0, 0
+ lsls r6, 16
+ asrs r6, 16
+ adds r0, r4, 0
+ bl sub_8151624
+ lsls r0, 16
+ asrs r0, 16
+ ldr r5, =gUnknown_085713E0
+ ldr r1, =gUnknown_02039CEC
+ ldr r1, [r1]
+ ldrb r4, [r1, 0xE]
+ lsls r4, 28
+ lsrs r1, r4, 29
+ subs r1, 0x1
+ lsls r1, 2
+ adds r1, r5
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ lsls r1, 8
+ lsrs r2, r4, 29
+ subs r2, 0x1
+ lsls r2, 2
+ adds r3, r5, 0x2
+ mov r8, r3
+ add r2, r8
+ movs r3, 0
+ ldrsh r2, [r2, r3]
+ lsls r2, 8
+ lsrs r3, r4, 29
+ subs r3, 0x1
+ lsls r3, 2
+ adds r3, r5
+ movs r5, 0
+ ldrsh r3, [r3, r5]
+ lsrs r4, 29
+ subs r4, 0x1
+ lsls r4, 2
+ add r4, r8
+ movs r5, 0
+ ldrsh r4, [r4, r5]
+ str r4, [sp]
+ str r6, [sp, 0x4]
+ str r0, [sp, 0x8]
+ str r7, [sp, 0xC]
+ movs r0, 0x2
+ bl SetBgAffine
+_080C60EE:
+ add sp, 0x10
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C5F58
+
+ thumb_func_start sub_80C6104
+sub_80C6104: @ 80C6104
+ push {r4,r5,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ cmp r5, 0x2
+ beq _080C614C
+ cmp r5, 0x2
+ bgt _080C611E
+ cmp r5, 0x1
+ beq _080C6128
+ b _080C61C4
+_080C611E:
+ cmp r5, 0x3
+ beq _080C6170
+ cmp r5, 0x4
+ beq _080C61A4
+ b _080C61C4
+_080C6128:
+ ldr r0, =gUnknown_02039CF0
+ ldr r0, [r0]
+ ldr r1, [r0, 0x24]
+ movs r0, 0xC
+ str r0, [sp]
+ movs r0, 0x7
+ str r0, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r2, 0x10
+ movs r3, 0x3
+ bl CopyToBgTilemapBufferRect_ChangePalette
+ b _080C61CE
+ .pool
+_080C614C:
+ ldr r0, =gUnknown_02039CF0
+ ldr r0, [r0]
+ ldr r1, [r0, 0x24]
+ movs r0, 0xA8
+ lsls r0, 1
+ adds r1, r0
+ movs r0, 0xC
+ str r0, [sp]
+ movs r0, 0x7
+ str r0, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r2, 0x10
+ b _080C6192
+ .pool
+_080C6170:
+ ldr r0, =gUnknown_02039CEC
+ ldr r0, [r0]
+ ldrb r1, [r0, 0xE]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080C61C4
+ ldr r0, =gUnknown_02039CF0
+ ldr r0, [r0]
+ ldr r1, [r0, 0x28]
+ movs r0, 0xC
+ str r0, [sp]
+ str r5, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r2, 0x2
+_080C6192:
+ movs r3, 0xA
+ bl CopyToBgTilemapBufferRect_ChangePalette
+ b _080C61CE
+ .pool
+_080C61A4:
+ ldr r1, =gUnknown_08DE3350
+ movs r0, 0x9
+ str r0, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r2, 0x15
+ movs r3, 0
+ bl CopyToBgTilemapBufferRect_ChangePalette
+ b _080C61CE
+ .pool
+_080C61C4:
+ subs r0, r4, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bhi _080C6294
+_080C61CE:
+ cmp r4, 0x2
+ beq _080C620C
+ cmp r4, 0x2
+ bgt _080C61DC
+ cmp r4, 0x1
+ beq _080C61E6
+ b _080C6284
+_080C61DC:
+ cmp r4, 0x3
+ beq _080C6230
+ cmp r4, 0x4
+ beq _080C6264
+ b _080C6284
+_080C61E6:
+ ldr r0, =gUnknown_02039CF0
+ ldr r0, [r0]
+ ldr r1, [r0, 0x24]
+ adds r1, 0xA8
+ movs r0, 0xC
+ str r0, [sp]
+ movs r0, 0x7
+ str r0, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r2, 0x10
+ movs r3, 0x3
+ bl CopyToBgTilemapBufferRect_ChangePalette
+ b _080C628E
+ .pool
+_080C620C:
+ ldr r0, =gUnknown_02039CF0
+ ldr r0, [r0]
+ ldr r1, [r0, 0x24]
+ movs r0, 0xFC
+ lsls r0, 1
+ adds r1, r0
+ movs r0, 0xC
+ str r0, [sp]
+ movs r0, 0x7
+ str r0, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r2, 0x10
+ b _080C6254
+ .pool
+_080C6230:
+ ldr r0, =gUnknown_02039CEC
+ ldr r0, [r0]
+ ldrb r1, [r0, 0xE]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080C6294
+ ldr r0, =gUnknown_02039CF0
+ ldr r0, [r0]
+ ldr r1, [r0, 0x28]
+ adds r1, 0x48
+ movs r0, 0xC
+ str r0, [sp]
+ str r4, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r2, 0x2
+_080C6254:
+ movs r3, 0xA
+ bl CopyToBgTilemapBufferRect_ChangePalette
+ b _080C628E
+ .pool
+_080C6264:
+ ldr r1, =gUnknown_08DE3374
+ movs r0, 0x9
+ str r0, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r2, 0x15
+ movs r3, 0
+ bl CopyToBgTilemapBufferRect_ChangePalette
+ b _080C628E
+ .pool
+_080C6284:
+ subs r0, r5, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bhi _080C6294
+_080C628E:
+ movs r0, 0x1
+ bl CopyBgTilemapBufferToVram
+_080C6294:
+ add sp, 0xC
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80C6104
+
+ thumb_func_start sub_80C629C
+sub_80C629C: @ 80C629C
+ push {r4,lr}
+ ldr r1, =gUnknown_08DE3060
+ movs r0, 0x1
+ movs r2, 0
+ movs r3, 0
+ bl CopyToBgTilemapBuffer
+ ldr r4, =gUnknown_02039CEC
+ ldr r1, [r4]
+ ldrb r0, [r1, 0xC]
+ ldrb r1, [r1, 0xD]
+ bl sub_80C6104
+ ldr r0, [r4]
+ ldrb r1, [r0, 0xE]
+ lsls r1, 28
+ lsrs r1, 29
+ movs r0, 0x1
+ bl sub_80C5F58
+ bl sub_80C5DB8
+ movs r0, 0x1
+ bl CopyBgTilemapBufferToVram
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C629C
+
+ thumb_func_start sub_80C62DC
+sub_80C62DC: @ 80C62DC
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x18
+ movs r5, 0
+ bl FreeAllSpritePalettes
+ bl ResetAffineAnimData
+ ldr r0, =gUnknown_085714E4
+ bl LoadSpritePalettes
+ ldr r4, =gUnknown_085714BC
+ adds r0, r4, 0
+ bl LoadCompressedSpriteSheet
+ adds r4, 0x10
+ adds r0, r4, 0
+ bl LoadCompressedSpriteSheet
+ ldr r0, =gUnknown_085715B4
+ ldr r1, =gUnknown_02039CEC
+ ldr r2, [r1]
+ movs r3, 0x8
+ ldrsh r1, [r2, r3]
+ movs r6, 0xA
+ ldrsh r2, [r2, r6]
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, =gUnknown_02039CF0
+ ldr r2, [r3]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, =gSprites
+ adds r1, r0
+ str r1, [r2]
+ ldrb r2, [r1, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0x5]
+ mov r8, sp
+ mov r9, r3
+_080C633C:
+ ldr r0, =gUnknown_02039CEC
+ ldr r0, [r0]
+ adds r0, 0xF
+ adds r2, r0, r5
+ ldrb r0, [r2]
+ adds r4, r5, 0x1
+ cmp r0, 0
+ beq _080C63C2
+ mov r1, sp
+ ldr r0, =gUnknown_085715E4
+ ldm r0!, {r3,r6,r7}
+ stm r1!, {r3,r6,r7}
+ ldm r0!, {r3,r6,r7}
+ stm r1!, {r3,r6,r7}
+ mov r7, r8
+ ldrh r0, [r7, 0x2]
+ ldr r1, =0x0000ffff
+ adds r0, r1
+ ldrb r2, [r2]
+ adds r0, r2
+ strh r0, [r7, 0x2]
+ ldr r1, =gUnknown_08571454
+ adds r0, r5, 0x6
+ lsls r0, 3
+ adds r0, r1
+ ldrh r1, [r0, 0x4]
+ adds r1, 0x8
+ lsls r1, 16
+ asrs r1, 16
+ ldrh r2, [r0]
+ adds r2, 0x6
+ lsls r2, 16
+ asrs r2, 16
+ lsls r3, r4, 24
+ lsrs r3, 24
+ mov r0, sp
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ mov r3, r9
+ ldr r2, [r3]
+ lsls r3, r5, 2
+ adds r2, 0x4
+ adds r2, r3
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, =gSprites
+ adds r1, r0
+ str r1, [r2]
+ ldrb r2, [r1, 0x5]
+ movs r6, 0xD
+ negs r6, r6
+ adds r0, r6, 0
+ ands r2, r0
+ movs r0, 0x8
+ orrs r2, r0
+ strb r2, [r1, 0x5]
+ mov r7, r9
+ ldr r0, [r7]
+ adds r0, 0x4
+ adds r0, r3
+ ldr r0, [r0]
+ adds r1, r5, 0
+ bl StartSpriteAnim
+_080C63C2:
+ lsls r0, r4, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x6
+ bls _080C633C
+ add sp, 0x18
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C62DC
+
+ thumb_func_start sub_80C63FC
+sub_80C63FC: @ 80C63FC
+ push {r4-r6,lr}
+ movs r5, 0
+ ldr r4, =gUnknown_02039CF0
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl DestroySprite
+ ldr r0, [r4]
+ str r5, [r0]
+ adds r6, r4, 0
+_080C6410:
+ ldr r0, [r6]
+ lsls r4, r5, 2
+ adds r0, 0x4
+ adds r0, r4
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _080C642C
+ bl DestroySprite
+ ldr r0, [r6]
+ adds r0, 0x4
+ adds r0, r4
+ movs r1, 0
+ str r1, [r0]
+_080C642C:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x6
+ bls _080C6410
+ bl FreeAllSpritePalettes
+ movs r0, 0x2
+ bl FreeSpriteTilesByTag
+ movs r0, 0
+ bl FreeSpriteTilesByTag
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C63FC
+
+ thumb_func_start nullsub_39
+nullsub_39: @ 80C6450
+ bx lr
+ thumb_func_end nullsub_39
+
+ thumb_func_start sub_80C6454
+sub_80C6454: @ 80C6454
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, =gUnknown_02039CF4
+ ldr r0, [r5]
+ cmp r0, 0
+ beq _080C6466
+ adds r0, r4, 0
+ bl SetMainCallback2
+_080C6466:
+ ldr r0, =0x00003014
+ bl AllocZeroed
+ str r0, [r5]
+ str r4, [r0]
+ bl ResetTasks
+ ldr r0, =sub_80C67BC
+ movs r1, 0
+ bl CreateTask
+ ldr r0, =sub_80C5438
+ bl SetMainCallback2
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C6454
+
+ thumb_func_start sub_80C6498
+sub_80C6498: @ 80C6498
+ push {r4,lr}
+ bl ResetTasks
+ ldr r4, =gUnknown_02039CF4
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl SetMainCallback2
+ ldr r0, [r4]
+ ldr r2, =0x00003014
+ movs r1, 0
+ bl memset
+ ldr r0, [r4]
+ bl Free
+ movs r0, 0
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C6498
+
+ thumb_func_start sub_80C64CC
+sub_80C64CC: @ 80C64CC
+ push {r4,r5,lr}
+ sub sp, 0x8
+ ldr r0, =gUnknown_02039CEC
+ ldr r0, [r0]
+ ldrh r0, [r0, 0x4]
+ cmp r0, 0x7
+ bls _080C64DC
+ b _080C6694
+_080C64DC:
+ lsls r0, 2
+ ldr r1, =_080C64F0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_080C64F0:
+ .4byte _080C6510
+ .4byte _080C6520
+ .4byte _080C6526
+ .4byte _080C6538
+ .4byte _080C65C0
+ .4byte _080C65E8
+ .4byte _080C6628
+ .4byte _080C6678
+_080C6510:
+ movs r0, 0
+ bl SetVBlankCallback
+ bl ScanlineEffect_Stop
+ bl SetVBlankHBlankCallbacksToNull
+ b _080C6694
+_080C6520:
+ bl sub_80C50D0
+ b _080C6694
+_080C6526:
+ bl ResetSpriteData
+ bl FreeAllSpritePalettes
+ bl ResetPaletteFade
+ bl reset_temp_tile_data_buffers
+ b _080C6694
+_080C6538:
+ movs r0, 0
+ bl ResetBgsAndClearDma3BusyFlags
+ ldr r1, =gUnknown_085713F4
+ movs r0, 0
+ movs r2, 0x3
+ bl InitBgsFromTemplates
+ ldr r4, =gUnknown_02039CF4
+ ldr r1, [r4]
+ adds r1, 0x12
+ movs r0, 0
+ bl SetBgTilemapBuffer
+ ldr r1, [r4]
+ ldr r0, =0x00001012
+ adds r1, r0
+ movs r0, 0x1
+ bl SetBgTilemapBuffer
+ ldr r1, [r4]
+ ldr r0, =0x00002012
+ adds r1, r0
+ movs r0, 0x2
+ bl SetBgTilemapBuffer
+ movs r5, 0x1E
+ str r5, [sp]
+ movs r4, 0x14
+ str r4, [sp, 0x4]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ str r5, [sp]
+ str r4, [sp, 0x4]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ str r5, [sp]
+ str r4, [sp, 0x4]
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ movs r0, 0x1
+ bl CopyBgTilemapBufferToVram
+ b _080C6618
+ .pool
+_080C65C0:
+ ldr r0, =gUnknown_08571428
+ bl InitWindows
+ bl DeactivateAllTextPrinters
+ bl sub_80C6B94
+ ldr r1, =gUnknown_0856FBBC
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x1
+ movs r2, 0
+ movs r3, 0
+ bl decompress_and_copy_tile_data_to_vram
+ b _080C6694
+ .pool
+_080C65E8:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ bne _080C669E
+ ldr r0, =gUnknown_08DE07C8
+ movs r2, 0xD0
+ lsls r2, 1
+ movs r1, 0
+ bl LoadPalette
+ movs r0, 0
+ bl stdpal_get
+ movs r1, 0xF0
+ movs r2, 0x20
+ bl LoadPalette
+ ldr r1, =gUnknown_08570E00
+ movs r0, 0x2
+ movs r2, 0
+ movs r3, 0
+ bl CopyToBgTilemapBuffer
+_080C6618:
+ movs r0, 0x2
+ bl CopyBgTilemapBufferToVram
+ b _080C6694
+ .pool
+_080C6628:
+ movs r1, 0x82
+ lsls r1, 5
+ movs r0, 0
+ bl SetGpuReg
+ movs r0, 0
+ bl ShowBg
+ movs r0, 0x1
+ bl ShowBg
+ movs r0, 0x2
+ bl ShowBg
+ bl sub_80C6974
+ ldr r0, =pokemon_details
+ bl SetVBlankCallback
+ movs r5, 0x1
+ negs r5, r5
+ ldr r4, =0x00007fff
+ adds r0, r5, 0
+ movs r1, 0x10
+ adds r2, r4, 0
+ bl BlendPalettes
+ str r4, [sp]
+ adds r0, r5, 0
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ b _080C6694
+ .pool
+_080C6678:
+ bl UpdatePaletteFade
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _080C669E
+ ldr r0, =gUnknown_02039CEC
+ ldr r0, [r0]
+ strh r1, [r0, 0x4]
+ movs r0, 0x1
+ b _080C66A0
+ .pool
+_080C6694:
+ ldr r0, =gUnknown_02039CEC
+ ldr r1, [r0]
+ ldrh r0, [r1, 0x4]
+ adds r0, 0x1
+ strh r0, [r1, 0x4]
+_080C669E:
+ movs r0, 0
+_080C66A0:
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80C64CC
+
+ thumb_func_start sub_80C66AC
+sub_80C66AC: @ 80C66AC
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r0, =gUnknown_02039CEC
+ ldr r0, [r0]
+ ldrh r0, [r0, 0x4]
+ cmp r0, 0x5
+ bhi _080C67A4
+ lsls r0, 2
+ ldr r1, =_080C66CC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_080C66CC:
+ .4byte _080C66E4
+ .4byte _080C66FC
+ .4byte _080C6722
+ .4byte _080C6732
+ .4byte _080C6774
+ .4byte _080C6782
+_080C66E4:
+ movs r0, 0x1
+ negs r0, r0
+ ldr r1, =0x00007fff
+ str r1, [sp]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ b _080C67A4
+ .pool
+_080C66FC:
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ bne _080C67AE
+ movs r0, 0
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0
+ bl HideBg
+ movs r0, 0x1
+ bl HideBg
+ movs r0, 0x2
+ bl HideBg
+ b _080C67A4
+_080C6722:
+ movs r0, 0
+ bl SetVBlankCallback
+ bl ScanlineEffect_Stop
+ bl SetVBlankHBlankCallbacksToNull
+ b _080C67A4
+_080C6732:
+ ldr r4, =gUnknown_02039CF4
+ ldr r0, [r4]
+ ldr r0, [r0, 0x4]
+ cmp r0, 0
+ beq _080C6746
+ bl DestroySprite
+ movs r0, 0
+ bl FreeSpriteTilesByTag
+_080C6746:
+ ldr r0, [r4]
+ ldr r0, [r0, 0xC]
+ cmp r0, 0
+ beq _080C6758
+ bl DestroySprite
+ movs r0, 0x1
+ bl FreeSpriteTilesByTag
+_080C6758:
+ ldr r0, [r4]
+ ldr r0, [r0, 0x8]
+ cmp r0, 0
+ beq _080C676A
+ bl DestroySprite
+ movs r0, 0x4
+ bl FreeSpriteTilesByTag
+_080C676A:
+ bl FreeAllWindowBuffers
+ b _080C67A4
+ .pool
+_080C6774:
+ bl sub_80C50D0
+ bl ResetSpriteData
+ bl FreeAllSpritePalettes
+ b _080C67A4
+_080C6782:
+ movs r0, 0
+ bl UnsetBgTilemapBuffer
+ movs r0, 0x1
+ bl UnsetBgTilemapBuffer
+ movs r0, 0x2
+ bl UnsetBgTilemapBuffer
+ ldr r0, =gUnknown_02039CEC
+ ldr r1, [r0]
+ movs r0, 0
+ strh r0, [r1, 0x4]
+ movs r0, 0x1
+ b _080C67B0
+ .pool
+_080C67A4:
+ ldr r0, =gUnknown_02039CEC
+ ldr r1, [r0]
+ ldrh r0, [r1, 0x4]
+ adds r0, 0x1
+ strh r0, [r1, 0x4]
+_080C67AE:
+ movs r0, 0
+_080C67B0:
+ add sp, 0x4
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80C66AC
+
+ thumb_func_start sub_80C67BC
+sub_80C67BC: @ 80C67BC
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, =gTasks + 0x8
+ adds r4, r0, r1
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5
+ bls _080C67D6
+ b _080C68DA
+_080C67D6:
+ lsls r0, 2
+ ldr r1, =_080C67E8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_080C67E8:
+ .4byte _080C6800
+ .4byte _080C6806
+ .4byte _080C686C
+ .4byte _080C6894
+ .4byte _080C68C4
+ .4byte _080C68CE
+_080C6800:
+ bl sub_80C64CC
+ b _080C68C8
+_080C6806:
+ ldr r0, =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r2, 0x2
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080C6824
+ movs r0, 0x3
+ bl PlaySE
+ movs r0, 0x4
+ b _080C68DE
+ .pool
+_080C6824:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _080C6848
+ ldr r0, =gUnknown_02039CF4
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x10]
+ cmp r0, 0x5
+ bls _080C6844
+ movs r0, 0
+ bl sub_80C6C70
+ b _080C68E0
+ .pool
+_080C6844:
+ strh r2, [r4]
+ b _080C68E0
+_080C6848:
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _080C68E0
+ ldr r0, =gUnknown_02039CF4
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x10]
+ cmp r0, 0
+ bne _080C6868
+ movs r0, 0x1
+ bl sub_80C6C70
+ b _080C68E0
+ .pool
+_080C6868:
+ movs r0, 0x3
+ b _080C68DE
+_080C686C:
+ movs r1, 0x2
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x3
+ ble _080C6882
+ movs r0, 0
+ bl sub_80C6C70
+ movs r0, 0
+ strh r0, [r4, 0x2]
+ movs r0, 0x1
+ b _080C68DE
+_080C6882:
+ ldr r0, =gUnknown_02039CF4
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ ldrh r0, [r1, 0x22]
+ adds r0, 0x4
+ b _080C68B4
+ .pool
+_080C6894:
+ movs r1, 0x2
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x3
+ ble _080C68AA
+ movs r0, 0x1
+ bl sub_80C6C70
+ movs r0, 0
+ strh r0, [r4, 0x2]
+ movs r0, 0x1
+ b _080C68DE
+_080C68AA:
+ ldr r0, =gUnknown_02039CF4
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ ldrh r0, [r1, 0x22]
+ subs r0, 0x4
+_080C68B4:
+ strh r0, [r1, 0x22]
+ ldrh r0, [r4, 0x2]
+ adds r0, 0x1
+ strh r0, [r4, 0x2]
+ b _080C68E0
+ .pool
+_080C68C4:
+ bl sub_80C66AC
+_080C68C8:
+ cmp r0, 0
+ bne _080C68DA
+ b _080C68E0
+_080C68CE:
+ adds r0, r2, 0
+ bl DestroyTask
+ bl sub_80C6498
+ b _080C68E0
+_080C68DA:
+ ldrh r0, [r4]
+ adds r0, 0x1
+_080C68DE:
+ strh r0, [r4]
+_080C68E0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80C67BC
+
+ thumb_func_start sub_80C68E8
+sub_80C68E8: @ 80C68E8
+ push {lr}
+ lsls r0, 16
+ lsrs r1, r0, 16
+ ldr r2, =0xfffb0000
+ adds r0, r2
+ lsrs r0, 16
+ cmp r0, 0x3
+ bls _080C6904
+ adds r0, r1, 0
+ subs r0, 0xF
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x2
+ bhi _080C690C
+_080C6904:
+ movs r0, 0x1
+ b _080C696E
+ .pool
+_080C690C:
+ adds r0, r1, 0
+ subs r0, 0x12
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x3
+ bhi _080C691C
+ movs r0, 0x2
+ b _080C696E
+_080C691C:
+ adds r0, r1, 0
+ subs r0, 0x16
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x2
+ bhi _080C692C
+ movs r0, 0x3
+ b _080C696E
+_080C692C:
+ adds r0, r1, 0
+ subs r0, 0x1C
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x2
+ bhi _080C693C
+ movs r0, 0x4
+ b _080C696E
+_080C693C:
+ adds r0, r1, 0
+ subs r0, 0x1F
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x2
+ bhi _080C694C
+ movs r0, 0x5
+ b _080C696E
+_080C694C:
+ adds r0, r1, 0
+ subs r0, 0x22
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x5
+ bhi _080C695C
+ movs r0, 0x6
+ b _080C696E
+_080C695C:
+ adds r0, r1, 0
+ subs r0, 0x19
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x2
+ bls _080C696C
+ movs r0, 0
+ b _080C696E
+_080C696C:
+ movs r0, 0x7
+_080C696E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C68E8
+
+ thumb_func_start sub_80C6974
+sub_80C6974: @ 80C6974
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x18
+ movs r7, 0
+ bl FreeAllSpritePalettes
+ ldr r0, =gUnknown_085714E4
+ bl LoadSpritePalettes
+ ldr r6, =gUnknown_085714BC
+ adds r0, r6, 0
+ bl LoadCompressedSpriteSheet
+ ldr r0, =gUnknown_085715B4
+ mov r8, r0
+ ldr r4, =gUnknown_02039CF4
+ ldr r0, [r4]
+ ldrb r2, [r0, 0x10]
+ lsls r2, 4
+ adds r2, 0x8
+ mov r0, r8
+ movs r1, 0x9B
+ movs r3, 0x2
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r0, [r4]
+ lsls r1, r3, 4
+ adds r1, r3
+ lsls r1, 2
+ ldr r2, =gSprites
+ mov r9, r2
+ add r1, r9
+ str r1, [r0, 0x4]
+ ldrb r2, [r1, 0x5]
+ movs r5, 0xD
+ negs r5, r5
+ adds r0, r5, 0
+ ands r0, r2
+ strb r0, [r1, 0x5]
+ ldr r0, [r4]
+ ldr r1, [r0, 0x4]
+ adds r1, 0x3F
+ ldrb r0, [r1]
+ movs r2, 0x1
+ orrs r0, r2
+ strb r0, [r1]
+ ldr r0, [r4]
+ ldr r0, [r0, 0x4]
+ movs r1, 0x1
+ bl StartSpriteAnim
+ adds r6, 0x8
+ adds r0, r6, 0
+ bl LoadCompressedSpriteSheet
+ movs r3, 0x18
+ add r8, r3
+ ldr r6, =gUnknown_08571650
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x10]
+ lsls r0, 4
+ adds r0, r6
+ movs r2, 0x8
+ ldrsh r1, [r0, r2]
+ movs r3, 0xA
+ ldrsh r2, [r0, r3]
+ mov r0, r8
+ movs r3, 0x1
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r1, [r4]
+ lsls r0, r3, 4
+ adds r0, r3
+ lsls r0, 2
+ add r0, r9
+ str r0, [r1, 0xC]
+ ldrb r1, [r0, 0x5]
+ ands r5, r1
+ strb r5, [r0, 0x5]
+ ldr r1, [r4]
+ ldr r0, [r1, 0xC]
+ ldrb r1, [r1, 0x10]
+ lsls r1, 4
+ adds r1, r6
+ ldrb r1, [r1, 0xC]
+ bl StartSpriteAnim
+ bl GetCurrentRegionMapSectionId
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x3A
+ beq _080C6A40
+ cmp r5, 0xCA
+ beq _080C6A40
+ b _080C6B7A
+_080C6A40:
+ ldr r4, =gSaveBlock1Ptr
+ ldr r2, [r4]
+ movs r0, 0x5
+ ldrsb r0, [r2, r0]
+ cmp r0, 0x4
+ beq _080C6A52
+ cmp r0, 0xE
+ bne _080C6A98
+ movs r7, 0x37
+_080C6A52:
+ lsls r0, r7, 16
+ asrs r0, 16
+ ldrh r6, [r2]
+ adds r0, r6
+ ldrh r4, [r2, 0x2]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080C6A66
+ adds r0, 0x7
+_080C6A66:
+ lsls r0, 13
+ lsrs r7, r0, 16
+ lsls r0, r4, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080C6A74
+ adds r0, 0x7
+_080C6A74:
+ lsls r0, 13
+ lsrs r4, r0, 16
+ movs r5, 0
+ b _080C6AF2
+ .pool
+_080C6A98:
+ lsls r0, 16
+ lsrs r0, 16
+ bl sub_80C68E8
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ beq _080C6AB4
+ subs r0, r5, 0x1
+ lsls r0, 4
+ adds r0, r6
+ ldrh r7, [r0, 0x8]
+ ldrh r4, [r0, 0xA]
+ b _080C6AF2
+_080C6AB4:
+ ldr r1, [r4]
+ adds r0, r1, 0
+ adds r0, 0x25
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ cmp r0, 0xE
+ bne _080C6ACE
+ ldrh r0, [r1, 0x28]
+ adds r0, 0x37
+ lsls r0, 16
+ lsrs r7, r0, 16
+ b _080C6AD0
+_080C6ACE:
+ ldrh r7, [r1, 0x28]
+_080C6AD0:
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldrh r4, [r0, 0x2A]
+ lsls r0, r7, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080C6AE0
+ adds r0, 0x7
+_080C6AE0:
+ lsls r0, 13
+ lsrs r7, r0, 16
+ lsls r0, r4, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080C6AEE
+ adds r0, 0x7
+_080C6AEE:
+ lsls r0, 13
+ lsrs r4, r0, 16
+_080C6AF2:
+ ldr r0, =gUnknown_085714D4
+ bl LoadCompressedSpriteSheet
+ mov r1, sp
+ ldr r0, =gUnknown_085715FC
+ ldm r0!, {r2,r3,r6}
+ stm r1!, {r2,r3,r6}
+ ldm r0!, {r2,r3,r6}
+ stm r1!, {r2,r3,r6}
+ mov r1, sp
+ ldr r0, =gSaveBlock2Ptr
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x8]
+ adds r0, 0x4
+ strh r0, [r1, 0x2]
+ cmp r5, 0
+ beq _080C6B2C
+ lsls r1, r7, 16
+ asrs r1, 16
+ lsls r2, r4, 16
+ b _080C6B3E
+ .pool
+_080C6B2C:
+ lsls r1, r7, 19
+ lsls r2, r4, 19
+ movs r0, 0xA0
+ lsls r0, 13
+ adds r1, r0
+ asrs r1, 16
+ movs r3, 0x90
+ lsls r3, 14
+ adds r2, r3
+_080C6B3E:
+ asrs r2, 16
+ mov r0, sp
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r4, =gUnknown_02039CF4
+ ldr r2, [r4]
+ lsls r1, r3, 4
+ adds r1, r3
+ lsls r1, 2
+ ldr r0, =gSprites
+ adds r1, r0
+ str r1, [r2, 0x8]
+ ldrb r2, [r1, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0x5]
+ ldr r0, =gSaveBlock2Ptr
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x8]
+ cmp r0, 0
+ beq _080C6B7A
+ ldr r0, [r4]
+ ldr r0, [r0, 0x8]
+ movs r1, 0x1
+ bl StartSpriteAnim
+_080C6B7A:
+ add sp, 0x18
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C6974
+
+ thumb_func_start sub_80C6B94
+sub_80C6B94: @ 80C6B94
+ push {r4-r6,lr}
+ sub sp, 0xC
+ movs r4, 0
+_080C6B9A:
+ adds r0, r4, 0
+ bl PutWindowTilemap
+ adds r0, r4, 0
+ movs r1, 0
+ bl FillWindowPixelBuffer
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x2
+ bls _080C6B9A
+ movs r4, 0
+ movs r6, 0
+ ldr r5, =gUnknown_08571650
+_080C6BB8:
+ ldr r0, =gUnknown_02039CF4
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x10]
+ cmp r4, r0
+ bne _080C6BF0
+ lsls r1, r4, 4
+ adds r3, r1, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ ldr r0, =gUnknown_0857144E
+ str r0, [sp]
+ str r6, [sp, 0x4]
+ adds r1, r5
+ ldr r0, [r1]
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0x7
+ movs r2, 0x4
+ bl AddTextPrinterParameterized3
+ b _080C6C0E
+ .pool
+_080C6BF0:
+ lsls r1, r4, 4
+ adds r3, r1, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ ldr r0, =gUnknown_0857144B
+ str r0, [sp]
+ str r6, [sp, 0x4]
+ adds r1, r5
+ ldr r0, [r1]
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0x7
+ movs r2, 0x4
+ bl AddTextPrinterParameterized3
+_080C6C0E:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x6
+ bls _080C6BB8
+ ldr r0, =gUnknown_08571448
+ str r0, [sp]
+ movs r0, 0
+ str r0, [sp, 0x4]
+ ldr r1, =gUnknown_08571650
+ ldr r0, =gUnknown_02039CF4
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x10]
+ lsls r0, 4
+ adds r1, 0x4
+ adds r0, r1
+ ldr r0, [r0]
+ str r0, [sp, 0x8]
+ movs r0, 0x2
+ movs r1, 0x1
+ movs r2, 0x4
+ movs r3, 0
+ bl AddTextPrinterParameterized3
+ movs r4, 0
+_080C6C40:
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl CopyWindowToVram
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x2
+ bls _080C6C40
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C6B94
+
+ thumb_func_start sub_80C6C70
+sub_80C6C70: @ 80C6C70
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0xC
+ lsls r0, 24
+ cmp r0, 0
+ beq _080C6C8C
+ ldr r0, =gUnknown_02039CF4
+ ldr r4, [r0]
+ ldrb r5, [r4, 0x10]
+ adds r0, r5, 0x6
+ b _080C6C94
+ .pool
+_080C6C8C:
+ ldr r0, =gUnknown_02039CF4
+ ldr r4, [r0]
+ ldrb r5, [r4, 0x10]
+ adds r0, r5, 0x1
+_080C6C94:
+ movs r1, 0x7
+ bl __modsi3
+ strb r0, [r4, 0x10]
+ lsls r0, r5, 4
+ adds r3, r0, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ ldr r6, =gUnknown_0857144B
+ str r6, [sp]
+ movs r1, 0
+ mov r8, r1
+ str r1, [sp, 0x4]
+ ldr r4, =gUnknown_08571650
+ adds r0, r4
+ ldr r0, [r0]
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0x7
+ movs r2, 0x4
+ bl AddTextPrinterParameterized3
+ ldr r5, =gUnknown_02039CF4
+ ldr r1, [r5]
+ ldrb r3, [r1, 0x10]
+ lsls r3, 4
+ adds r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r6, 0x3
+ str r0, [sp]
+ mov r0, r8
+ str r0, [sp, 0x4]
+ ldrb r0, [r1, 0x10]
+ lsls r0, 4
+ adds r0, r4
+ ldr r0, [r0]
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0x7
+ movs r2, 0x4
+ bl AddTextPrinterParameterized3
+ ldr r1, [r5]
+ ldr r2, [r1, 0x4]
+ ldrb r0, [r1, 0x10]
+ lsls r0, 4
+ adds r0, 0x8
+ strh r0, [r2, 0x22]
+ ldr r0, [r1, 0xC]
+ ldrb r1, [r1, 0x10]
+ lsls r1, 4
+ adds r1, r4
+ ldrb r1, [r1, 0xC]
+ bl StartSpriteAnim
+ ldr r1, [r5]
+ ldr r2, [r1, 0xC]
+ ldrb r0, [r1, 0x10]
+ lsls r0, 4
+ adds r0, r4
+ ldrh r0, [r0, 0x8]
+ strh r0, [r2, 0x20]
+ ldr r2, [r1, 0xC]
+ ldrb r0, [r1, 0x10]
+ lsls r0, 4
+ adds r0, r4
+ ldrh r0, [r0, 0xA]
+ strh r0, [r2, 0x22]
+ movs r0, 0x2
+ movs r1, 0
+ bl FillWindowPixelBuffer
+ subs r6, 0x3
+ str r6, [sp]
+ mov r1, r8
+ str r1, [sp, 0x4]
+ ldr r0, [r5]
+ ldrb r0, [r0, 0x10]
+ lsls r0, 4
+ adds r4, 0x4
+ adds r0, r4
+ ldr r0, [r0]
+ str r0, [sp, 0x8]
+ movs r0, 0x2
+ movs r1, 0x1
+ movs r2, 0x4
+ movs r3, 0
+ bl AddTextPrinterParameterized3
+ movs r4, 0
+_080C6D4A:
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl CopyWindowToVram
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x2
+ bls _080C6D4A
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ movs r0, 0x6C
+ bl PlaySE
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C6C70
+
+ thumb_func_start sub_80C6D80
+sub_80C6D80: @ 80C6D80
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x2C
+ str r0, [sp, 0x24]
+ adds r7, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp, 0x28]
+ lsls r3, 24
+ lsrs r3, 24
+ mov r9, r3
+ movs r0, 0
+ movs r1, 0
+ str r0, [sp, 0x1C]
+ str r1, [sp, 0x20]
+ ldr r1, =0x00ffffff
+ ldr r0, [sp, 0x1C]
+ ands r0, r1
+ movs r1, 0xC0
+ lsls r1, 21
+ orrs r0, r1
+ str r0, [sp, 0x1C]
+ ldr r1, =0xffffff00
+ add r5, sp, 0x1C
+ ldr r0, [r5, 0x4]
+ ands r0, r1
+ movs r1, 0x2
+ orrs r0, r1
+ str r0, [r5, 0x4]
+ adds r0, r5, 0
+ bl AddWindow
+ lsls r0, 16
+ lsrs r0, 16
+ mov r10, r0
+ lsls r4, r0, 24
+ lsrs r4, 24
+ mov r0, r9
+ lsls r1, r0, 4
+ orrs r1, r0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FillWindowPixelBuffer
+ adds r0, r4, 0
+ movs r1, 0x7
+ bl GetWindowAttribute
+ adds r6, r0, 0
+ ldrb r0, [r5, 0x3]
+ lsls r0, 5
+ adds r0, r6
+ mov r8, r0
+ ldr r1, [sp, 0x28]
+ cmp r1, 0
+ bne _080C6E04
+ add r0, sp, 0x14
+ b _080C6E08
+ .pool
+_080C6E04:
+ add r0, sp, 0x14
+ mov r1, r9
+_080C6E08:
+ strb r1, [r0]
+ add r1, sp, 0x14
+ movs r2, 0
+ movs r0, 0xF
+ strb r0, [r1, 0x1]
+ movs r0, 0xE
+ strb r0, [r1, 0x2]
+ mov r0, r10
+ lsls r4, r0, 24
+ lsrs r0, r4, 24
+ str r2, [sp]
+ str r2, [sp, 0x4]
+ str r1, [sp, 0x8]
+ movs r1, 0x1
+ negs r1, r1
+ str r1, [sp, 0xC]
+ ldr r1, [sp, 0x24]
+ str r1, [sp, 0x10]
+ movs r1, 0x1
+ movs r3, 0x1
+ bl AddTextPrinterParameterized4
+ ldr r0, [sp, 0x4C]
+ mov r10, r4
+ cmp r0, 0x6
+ bls _080C6E3E
+ movs r0, 0x6
+_080C6E3E:
+ ldr r4, [sp, 0x4C]
+ subs r4, 0x6
+ cmp r0, 0
+ ble _080C6E70
+ adds r5, r0, 0
+_080C6E48:
+ adds r0, r6, 0
+ adds r1, r7, 0
+ movs r2, 0x40
+ bl CpuSet
+ adds r1, r7, 0
+ adds r1, 0x80
+ mov r0, r8
+ movs r2, 0x40
+ bl CpuSet
+ adds r6, 0x80
+ movs r2, 0x80
+ add r8, r2
+ movs r0, 0x80
+ lsls r0, 1
+ adds r7, r0
+ subs r5, 0x1
+ cmp r5, 0
+ bne _080C6E48
+_080C6E70:
+ cmp r4, 0
+ ble _080C6E90
+ add r0, sp, 0x18
+ mov r2, r9
+ lsls r1, r2, 4
+ orrs r1, r2
+ strh r1, [r0]
+ lsls r2, r4, 7
+ ldr r1, =0x001fffff
+ ands r2, r1
+ movs r1, 0x80
+ lsls r1, 17
+ orrs r2, r1
+ adds r1, r7, 0
+ bl CpuSet
+_080C6E90:
+ mov r1, r10
+ lsrs r0, r1, 24
+ bl RemoveWindow
+ add sp, 0x2C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C6D80
+
+ thumb_func_start sub_80C6EAC
+sub_80C6EAC: @ 80C6EAC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x2C
+ str r0, [sp, 0x20]
+ str r1, [sp, 0x24]
+ adds r6, r3, 0
+ ldr r0, [sp, 0x4C]
+ mov r9, r0
+ ldr r1, [sp, 0x50]
+ mov r10, r1
+ lsls r2, 16
+ lsrs r2, 16
+ str r2, [sp, 0x28]
+ lsls r6, 24
+ lsrs r6, 24
+ mov r2, r9
+ lsls r2, 24
+ lsrs r2, 24
+ mov r9, r2
+ mov r0, r10
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ movs r0, 0
+ movs r1, 0
+ str r0, [sp, 0x18]
+ str r1, [sp, 0x1C]
+ ldr r0, [sp, 0x20]
+ bl StringLength_Multibyte
+ lsls r0, 24
+ ldr r2, =0x00ffffff
+ ldr r1, [sp, 0x18]
+ ands r1, r2
+ orrs r1, r0
+ str r1, [sp, 0x18]
+ ldr r1, =0xffffff00
+ add r2, sp, 0x18
+ mov r8, r2
+ ldr r0, [r2, 0x4]
+ ands r0, r1
+ movs r1, 0x2
+ orrs r0, r1
+ str r0, [r2, 0x4]
+ ldr r5, [sp, 0x18]
+ lsrs r5, 24
+ lsls r5, 5
+ mov r0, r8
+ bl AddWindow
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r1, r6, 4
+ orrs r1, r6
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FillWindowPixelBuffer
+ adds r0, r4, 0
+ movs r1, 0x7
+ bl GetWindowAttribute
+ adds r7, r0, 0
+ mov r0, r8
+ ldrb r0, [r0, 0x3]
+ lsls r0, 5
+ mov r8, r0
+ add r8, r7
+ add r0, sp, 0x14
+ movs r1, 0
+ strb r6, [r0]
+ mov r2, r9
+ strb r2, [r0, 0x1]
+ mov r2, r10
+ strb r2, [r0, 0x2]
+ str r1, [sp]
+ str r1, [sp, 0x4]
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ negs r0, r0
+ str r0, [sp, 0xC]
+ ldr r0, [sp, 0x20]
+ str r0, [sp, 0x10]
+ adds r0, r4, 0
+ movs r1, 0x1
+ movs r2, 0
+ movs r3, 0x2
+ bl AddTextPrinterParameterized4
+ lsrs r5, 1
+ adds r0, r7, 0
+ ldr r1, [sp, 0x24]
+ adds r2, r5, 0
+ bl CpuSet
+ ldr r2, [sp, 0x24]
+ ldr r0, [sp, 0x28]
+ adds r1, r2, r0
+ mov r0, r8
+ adds r2, r5, 0
+ bl CpuSet
+ adds r0, r4, 0
+ bl RemoveWindow
+ add sp, 0x2C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80C6EAC
+
+ .align 2, 0 @ Don't pad with nop.