diff options
Diffstat (limited to 'asm/contest_link_80C2020.s')
-rw-r--r-- | asm/contest_link_80C2020.s | 5580 |
1 files changed, 5580 insertions, 0 deletions
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s new file mode 100644 index 000000000..390902a18 --- /dev/null +++ b/asm/contest_link_80C2020.s @@ -0,0 +1,5580 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start sub_80C2020 +sub_80C2020: @ 80C2020 + push {r4,r5,lr} + movs r5, 0x80 + lsls r5, 19 + movs r0, 0x40 + strh r0, [r5] + ldr r4, _080C20F0 @ =gWindowConfig_81E6FA0 + adds r0, r4, 0 + bl SetUpWindowConfig + ldr r0, _080C20F4 @ =gMenuWindow + adds r1, r4, 0 + bl InitWindowFromConfig + ldr r1, _080C20F8 @ =REG_BG0CNT + movs r2, 0xF8 + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r3, _080C20FC @ =0x00001803 + adds r0, r3, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r2, _080C2100 @ =0x00001c03 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r3, _080C2104 @ =0x00003a03 + adds r0, r3, 0 + strh r0, [r1] + ldr r0, _080C2108 @ =REG_MOSAIC + movs r2, 0 + strh r2, [r0] + adds r1, 0x3A + ldr r3, _080C210C @ =0x00003f3f + adds r0, r3, 0 + strh r0, [r1] + adds r1, 0x2 + subs r3, 0x11 + adds r0, r3, 0 + strh r0, [r1] + ldr r0, _080C2110 @ =REG_WIN0H + strh r2, [r0] + adds r0, 0x4 + strh r2, [r0] + subs r0, 0x2 + strh r2, [r0] + adds r0, 0x4 + strh r2, [r0] + adds r0, 0xA + strh r2, [r0] + adds r0, 0x2 + strh r2, [r0] + adds r0, 0x2 + strh r2, [r0] + subs r0, 0x44 + strh r2, [r0] + adds r0, 0x2 + strh r2, [r0] + adds r0, 0x2 + strh r2, [r0] + adds r0, 0x2 + strh r2, [r0] + adds r0, 0x2 + strh r2, [r0] + adds r0, 0x2 + strh r2, [r0] + adds r0, 0x2 + strh r2, [r0] + adds r0, 0x2 + strh r2, [r0] + ldrh r0, [r5] + movs r3, 0xFE + lsls r3, 7 + adds r1, r3, 0 + orrs r0, r1 + strh r0, [r5] + ldr r0, _080C2114 @ =gUnknown_030042A4 + strh r2, [r0] + ldr r0, _080C2118 @ =gUnknown_030042A0 + strh r2, [r0] + ldr r0, _080C211C @ =gUnknown_030042C0 + strh r2, [r0] + ldr r0, _080C2120 @ =gUnknown_030041B4 + strh r2, [r0] + ldr r0, _080C2124 @ =gUnknown_03004288 + strh r2, [r0] + ldr r0, _080C2128 @ =gUnknown_03004280 + strh r2, [r0] + ldr r0, _080C212C @ =gUnknown_030041B0 + strh r2, [r0] + ldr r0, _080C2130 @ =gUnknown_030041B8 + strh r2, [r0] + ldr r0, _080C2134 @ =gUnknown_030042C4 + strh r2, [r0] + ldr r0, _080C2138 @ =gUnknown_03004240 + strh r2, [r0] + ldr r0, _080C213C @ =gUnknown_03004200 + strh r2, [r0] + ldr r0, _080C2140 @ =gUnknown_03004244 + strh r2, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C20F0: .4byte gWindowConfig_81E6FA0 +_080C20F4: .4byte gMenuWindow +_080C20F8: .4byte REG_BG0CNT +_080C20FC: .4byte 0x00001803 +_080C2100: .4byte 0x00001c03 +_080C2104: .4byte 0x00003a03 +_080C2108: .4byte REG_MOSAIC +_080C210C: .4byte 0x00003f3f +_080C2110: .4byte REG_WIN0H +_080C2114: .4byte gUnknown_030042A4 +_080C2118: .4byte gUnknown_030042A0 +_080C211C: .4byte gUnknown_030042C0 +_080C2120: .4byte gUnknown_030041B4 +_080C2124: .4byte gUnknown_03004288 +_080C2128: .4byte gUnknown_03004280 +_080C212C: .4byte gUnknown_030041B0 +_080C2130: .4byte gUnknown_030041B8 +_080C2134: .4byte gUnknown_030042C4 +_080C2138: .4byte gUnknown_03004240 +_080C213C: .4byte gUnknown_03004200 +_080C2140: .4byte gUnknown_03004244 + thumb_func_end sub_80C2020 + + thumb_func_start sub_80C2144 +sub_80C2144: @ 80C2144 + push {r4-r7,lr} + sub sp, 0x4 + movs r2, 0xC0 + lsls r2, 19 + movs r3, 0xC0 + lsls r3, 9 + ldr r0, _080C220C @ =gUnknown_08D1977C + mov r12, r0 + movs r5, 0 + ldr r1, _080C2210 @ =0x040000d4 + movs r4, 0x80 + lsls r4, 5 + ldr r6, _080C2214 @ =0x85000400 + movs r7, 0x85 + lsls r7, 24 +_080C2162: + str r5, [sp] + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + str r6, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r2, r4 + subs r3, r4 + cmp r3, r4 + bhi _080C2162 + str r5, [sp] + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + lsrs r0, r3, 2 + orrs r0, r7 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r1, 0xC0 + lsls r1, 19 + mov r0, r12 + bl LZDecompressVram + ldr r0, _080C2218 @ =gUnknown_08D1A490 + ldr r1, _080C221C @ =0x0600d000 + bl LZDecompressVram + ldr r0, _080C2220 @ =gUnknown_08D1A364 + ldr r1, _080C2224 @ =0x0600e000 + bl LZDecompressVram + ldr r0, _080C2228 @ =gUnknown_08D1A250 + ldr r1, _080C222C @ =0x0600f000 + bl LZDecompressVram + bl sub_80C37E4 + ldr r0, _080C2230 @ =gUnknown_08D1A618 + movs r2, 0x80 + lsls r2, 2 + movs r1, 0 + bl LoadCompressedPalette + ldr r0, _080C2234 @ =gWindowConfig_81E6FA0 + bl LoadFontDefaultPalette + movs r6, 0 +_080C21C0: + lsls r5, r6, 24 + lsrs r5, 24 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80C3990 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80C39E4 + movs r5, 0 + lsls r1, r6, 1 + adds r2, r6, 0x1 + mov r12, r2 + lsls r4, 24 + asrs r7, r4, 24 + adds r1, r6 + lsls r1, 6 + lsls r4, r0, 24 +_080C21EC: + ldr r6, _080C2238 @ =0x000060b2 + cmp r5, r7 + bge _080C21F4 + adds r6, 0x2 +_080C21F4: + asrs r2, r4, 24 + adds r0, r2, 0 + cmp r2, 0 + bge _080C21FE + negs r0, r2 +_080C21FE: + cmp r5, r0 + bge _080C2240 + ldr r3, _080C223C @ =0x000060a4 + cmp r2, 0 + bge _080C2242 + adds r3, 0x2 + b _080C2242 + .align 2, 0 +_080C220C: .4byte gUnknown_08D1977C +_080C2210: .4byte 0x040000d4 +_080C2214: .4byte 0x85000400 +_080C2218: .4byte gUnknown_08D1A490 +_080C221C: .4byte 0x0600d000 +_080C2220: .4byte gUnknown_08D1A364 +_080C2224: .4byte 0x0600e000 +_080C2228: .4byte gUnknown_08D1A250 +_080C222C: .4byte 0x0600f000 +_080C2230: .4byte gUnknown_08D1A618 +_080C2234: .4byte gWindowConfig_81E6FA0 +_080C2238: .4byte 0x000060b2 +_080C223C: .4byte 0x000060a4 +_080C2240: + ldr r3, _080C2264 @ =0x000060a2 +_080C2242: + ldr r2, _080C2268 @ =0x0600c166 + adds r0, r1, r2 + strh r6, [r0] + adds r2, 0x40 + adds r0, r1, r2 + strh r3, [r0] + adds r1, 0x2 + adds r5, 0x1 + cmp r5, 0x9 + ble _080C21EC + mov r6, r12 + cmp r6, 0x3 + ble _080C21C0 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C2264: .4byte 0x000060a2 +_080C2268: .4byte 0x0600c166 + thumb_func_end sub_80C2144 + + thumb_func_start sub_80C226C +sub_80C226C: @ 80C226C + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080C2288 @ =gUnknown_02038695 + ldrb r0, [r0] + cmp r5, r0 + bne _080C2294 + ldr r0, _080C228C @ =gUnknown_020238CC + ldr r1, _080C2290 @ =gUnknown_083D17DC + bl StringCopy + adds r2, r0, 0 + b _080C2296 + .align 2, 0 +_080C2288: .4byte gUnknown_02038695 +_080C228C: .4byte gUnknown_020238CC +_080C2290: .4byte gUnknown_083D17DC +_080C2294: + ldr r2, _080C22E8 @ =gUnknown_020238CC +_080C2296: + movs r4, 0xFC + strb r4, [r2] + movs r0, 0x6 + strb r0, [r2, 0x1] + movs r0, 0x4 + strb r0, [r2, 0x2] + adds r2, 0x3 + lsls r6, r5, 6 + ldr r7, _080C22EC @ =gUnknown_02038572 + adds r1, r6, r7 + adds r0, r2, 0 + bl StringCopy + adds r2, r0, 0 + strb r4, [r2] + movs r0, 0x13 + strb r0, [r2, 0x1] + movs r0, 0x32 + strb r0, [r2, 0x2] + adds r2, 0x3 + ldr r1, _080C22F0 @ =gUnknown_083D17E0 + adds r0, r2, 0 + bl StringCopy + adds r2, r0, 0 + ldr r0, _080C22F4 @ =gUnknown_0203869A + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080C22FC + lsls r4, r5, 3 + subs r1, r4, r5 + lsls r1, 2 + ldr r0, _080C22F8 @ =gLinkPlayers + 0x8 + adds r1, r0 + adds r0, r2, 0 + bl StringCopy + b _080C230A + .align 2, 0 +_080C22E8: .4byte gUnknown_020238CC +_080C22EC: .4byte gUnknown_02038572 +_080C22F0: .4byte gUnknown_083D17E0 +_080C22F4: .4byte gUnknown_0203869A +_080C22F8: .4byte gLinkPlayers + 0x8 +_080C22FC: + adds r1, r7, 0 + adds r1, 0xB + adds r1, r6, r1 + adds r0, r2, 0 + bl StringCopy + lsls r4, r5, 3 +_080C230A: + ldr r0, _080C2334 @ =gMenuWindow + ldr r1, _080C2338 @ =gUnknown_020238CC + adds r2, r4, r5 + lsls r2, 18 + ldr r3, _080C233C @ =0x03020000 + adds r2, r3 + lsrs r2, 16 + lsls r3, r5, 1 + adds r3, r5 + adds r3, 0x4 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp] + movs r3, 0x7 + bl sub_8003460 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C2334: .4byte gMenuWindow +_080C2338: .4byte gUnknown_020238CC +_080C233C: .4byte 0x03020000 + thumb_func_end sub_80C226C + + thumb_func_start sub_80C2340 +sub_80C2340: @ 80C2340 + push {r4,lr} + movs r4, 0 +_080C2344: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80C226C + adds r4, 0x1 + cmp r4, 0x3 + ble _080C2344 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C2340 + + thumb_func_start sub_80C2358 +sub_80C2358: @ 80C2358 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, _080C240C @ =gPaletteFade + ldrb r0, [r5, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r5, 0x8] + movs r0, 0 + bl SetVBlankCallback + bl sub_80C2020 + bl dp12_8087EA4 + bl ResetPaletteFade + bl ResetSpriteData + bl ResetTasks + bl FreeAllSpritePalettes + bl sub_80C2144 + bl sub_80C310C + movs r0, 0 + movs r1, 0x1 + bl sub_80C30D4 + bl sub_80C2340 + ldr r4, _080C2410 @ =0x02018000 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x18 + bl memset + adds r0, r4, 0 + adds r0, 0x18 + movs r1, 0 + movs r2, 0x50 + bl memset + bl sub_80C33DC + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl BeginNormalPaletteFade + ldrb r1, [r5, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r5, 0x8] + ldr r0, _080C2414 @ =sub_80C24F4 + movs r1, 0x5 + bl CreateTask + strb r0, [r4, 0x2] + ldr r0, _080C2418 @ =sub_80C2430 + bl SetMainCallback2 + ldr r1, _080C241C @ =gUnknown_03004200 + movs r0, 0xF0 + strh r0, [r1] + ldr r1, _080C2420 @ =gUnknown_03004244 + ldr r2, _080C2424 @ =0x000080a0 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _080C2428 @ =sub_80C2F28 + movs r1, 0x14 + bl CreateTask + bl sub_80C3F00 + movs r0, 0xDF + lsls r0, 1 + bl PlayBGM + ldr r0, _080C242C @ =sub_80C2448 + bl SetVBlankCallback + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C240C: .4byte gPaletteFade +_080C2410: .4byte 0x02018000 +_080C2414: .4byte sub_80C24F4 +_080C2418: .4byte sub_80C2430 +_080C241C: .4byte gUnknown_03004200 +_080C2420: .4byte gUnknown_03004244 +_080C2424: .4byte 0x000080a0 +_080C2428: .4byte sub_80C2F28 +_080C242C: .4byte sub_80C2448 + thumb_func_end sub_80C2358 + + thumb_func_start sub_80C2430 +sub_80C2430: @ 80C2430 + push {lr} + bl AnimateSprites + bl BuildOamBuffer + bl RunTasks + bl UpdatePaletteFade + pop {r0} + bx r0 + thumb_func_end sub_80C2430 + + thumb_func_start sub_80C2448 +sub_80C2448: @ 80C2448 + push {lr} + ldr r1, _080C24C0 @ =REG_BG0HOFS + ldr r0, _080C24C4 @ =gUnknown_030042A4 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x2 + ldr r0, _080C24C8 @ =gUnknown_030042A0 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x2 + ldr r0, _080C24CC @ =gUnknown_030042C0 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x2 + ldr r0, _080C24D0 @ =gUnknown_030041B4 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x2 + ldr r0, _080C24D4 @ =gUnknown_03004288 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x2 + ldr r0, _080C24D8 @ =gUnknown_03004280 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x2 + ldr r0, _080C24DC @ =gUnknown_030041B0 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x2 + ldr r0, _080C24E0 @ =gUnknown_030041B8 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x22 + ldr r0, _080C24E4 @ =gUnknown_030042C4 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x4 + ldr r0, _080C24E8 @ =gUnknown_03004240 + ldrh r0, [r0] + strh r0, [r1] + subs r1, 0x2 + ldr r0, _080C24EC @ =gUnknown_03004200 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x4 + ldr r0, _080C24F0 @ =gUnknown_03004244 + ldrh r0, [r0] + strh r0, [r1] + bl LoadOam + bl ProcessSpriteCopyRequests + bl TransferPlttBuffer + bl sub_8089668 + pop {r0} + bx r0 + .align 2, 0 +_080C24C0: .4byte REG_BG0HOFS +_080C24C4: .4byte gUnknown_030042A4 +_080C24C8: .4byte gUnknown_030042A0 +_080C24CC: .4byte gUnknown_030042C0 +_080C24D0: .4byte gUnknown_030041B4 +_080C24D4: .4byte gUnknown_03004288 +_080C24D8: .4byte gUnknown_03004280 +_080C24DC: .4byte gUnknown_030041B0 +_080C24E0: .4byte gUnknown_030041B8 +_080C24E4: .4byte gUnknown_030042C4 +_080C24E8: .4byte gUnknown_03004240 +_080C24EC: .4byte gUnknown_03004200 +_080C24F0: .4byte gUnknown_03004244 + thumb_func_end sub_80C2448 + + thumb_func_start sub_80C24F4 +sub_80C24F4: @ 80C24F4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r2, r4, 0 + ldr r0, _080C252C @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080C254E + ldr r0, _080C2530 @ =gUnknown_0203869A + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080C2540 + ldr r0, _080C2534 @ =gOtherText_LinkStandby + bl sub_80C3698 + ldr r1, _080C2538 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080C253C @ =sub_80C255C + str r1, [r0] + b _080C254E + .align 2, 0 +_080C252C: .4byte gPaletteFade +_080C2530: .4byte gUnknown_0203869A +_080C2534: .4byte gOtherText_LinkStandby +_080C2538: .4byte gTasks +_080C253C: .4byte sub_80C255C +_080C2540: + ldr r0, _080C2554 @ =gTasks + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldr r0, _080C2558 @ =sub_80C2600 + str r0, [r1] +_080C254E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C2554: .4byte gTasks +_080C2558: .4byte sub_80C2600 + thumb_func_end sub_80C24F4 + + thumb_func_start sub_80C255C +sub_80C255C: @ 80C255C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080C2594 @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + beq _080C258C + bl GetLinkPlayerCount + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _080C258C + ldr r0, _080C2598 @ =sub_80C25A4 + movs r1, 0 + bl CreateTask + ldr r1, _080C259C @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080C25A0 @ =TaskDummy + str r1, [r0] +_080C258C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C2594: .4byte gReceivedRemoteLinkPlayers +_080C2598: .4byte sub_80C25A4 +_080C259C: .4byte gTasks +_080C25A0: .4byte TaskDummy + thumb_func_end sub_80C255C + + thumb_func_start sub_80C25A4 +sub_80C25A4: @ 80C25A4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080C25B8 @ =sub_80C89DC + ldr r2, _080C25BC @ =sub_80C25C0 + bl SetTaskFuncWithFollowupFunc + pop {r0} + bx r0 + .align 2, 0 +_080C25B8: .4byte sub_80C89DC +_080C25BC: .4byte sub_80C25C0 + thumb_func_end sub_80C25A4 + + thumb_func_start sub_80C25C0 +sub_80C25C0: @ 80C25C0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8007ECC + lsls r0, 24 + cmp r0, 0 + beq _080C25EC + adds r0, r4, 0 + bl DestroyTask + ldr r2, _080C25F4 @ =gTasks + ldr r0, _080C25F8 @ =0x02018000 + ldrb r1, [r0, 0x2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldr r1, _080C25FC @ =sub_80C2600 + str r1, [r0] + bl sub_80C3764 +_080C25EC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C25F4: .4byte gTasks +_080C25F8: .4byte 0x02018000 +_080C25FC: .4byte sub_80C2600 + thumb_func_end sub_80C25C0 + + thumb_func_start sub_80C2600 +sub_80C2600: @ 80C2600 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C2644 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r5, r1, r2 + ldrh r1, [r5, 0x8] + movs r2, 0x8 + ldrsh r0, [r5, r2] + cmp r0, 0 + bne _080C2654 + ldr r0, _080C2648 @ =sub_80C2F64 + movs r1, 0x14 + bl CreateTask + ldr r4, _080C264C @ =gContestText_AnnounceResults + ldr r0, _080C2650 @ =0x02018000 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_80C3158 + adds r0, r4, 0 + bl sub_80C34AC + lsls r0, 16 + asrs r0, 16 + movs r3, 0x88 + lsls r3, 3 + movs r1, 0x90 + movs r2, 0x78 + b _080C26A6 + .align 2, 0 +_080C2644: .4byte gTasks +_080C2648: .4byte sub_80C2F64 +_080C264C: .4byte gContestText_AnnounceResults +_080C2650: .4byte 0x02018000 +_080C2654: + cmp r0, 0x1 + bne _080C2668 + ldr r0, _080C2664 @ =0x02018000 + ldrb r0, [r0, 0x4] + cmp r0, 0 + bne _080C26D4 + b _080C267C + .align 2, 0 +_080C2664: .4byte 0x02018000 +_080C2668: + cmp r0, 0x2 + bne _080C2684 + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x15 + bne _080C26D4 + movs r0, 0 +_080C267C: + strh r0, [r5, 0xA] + adds r0, r1, 0x1 + strh r0, [r5, 0x8] + b _080C26D4 +_080C2684: + cmp r0, 0x3 + bne _080C26C0 + ldr r4, _080C26B4 @ =gContestText_PreliminaryResults + ldr r0, _080C26B8 @ =0x02018000 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_80C3158 + adds r0, r4, 0 + bl sub_80C34AC + lsls r0, 16 + asrs r0, 16 + ldr r2, _080C26BC @ =0x0000ffff + movs r3, 0x88 + lsls r3, 3 + movs r1, 0x90 +_080C26A6: + bl sub_80C34CC + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080C26D4 + .align 2, 0 +_080C26B4: .4byte gContestText_PreliminaryResults +_080C26B8: .4byte 0x02018000 +_080C26BC: .4byte 0x0000ffff +_080C26C0: + cmp r0, 0x4 + bne _080C26D4 + ldr r0, _080C26DC @ =0x02018000 + ldrb r0, [r0, 0x4] + cmp r0, 0x2 + bne _080C26D4 + movs r0, 0 + strh r0, [r5, 0x8] + ldr r0, _080C26E0 @ =sub_80C26E4 + str r0, [r5] +_080C26D4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C26DC: .4byte 0x02018000 +_080C26E0: .4byte sub_80C26E4 + thumb_func_end sub_80C2600 + + thumb_func_start sub_80C26E4 +sub_80C26E4: @ 80C26E4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C2708 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080C2744 + cmp r0, 0x1 + bgt _080C270C + cmp r0, 0 + beq _080C2712 + b _080C2766 + .align 2, 0 +_080C2708: .4byte gTasks +_080C270C: + cmp r0, 0x2 + beq _080C2754 + b _080C2766 +_080C2712: + ldr r5, _080C2738 @ =0x02018000 + ldrb r0, [r5, 0xA] + cmp r0, 0 + bne _080C2766 + ldrh r1, [r4, 0xC] + adds r0, r1, 0x1 + strh r0, [r4, 0xC] + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + bl sub_80C40D4 + ldrb r0, [r5, 0x14] + cmp r0, 0 + bne _080C273C + movs r0, 0x2 + strh r0, [r4, 0x8] + b _080C2766 + .align 2, 0 +_080C2738: .4byte 0x02018000 +_080C273C: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080C2766 +_080C2744: + ldr r0, _080C2750 @ =0x02018000 + ldrb r0, [r0, 0x14] + cmp r0, 0 + bne _080C2766 + strh r0, [r4, 0x8] + b _080C2766 + .align 2, 0 +_080C2750: .4byte 0x02018000 +_080C2754: + movs r0, 0x88 + lsls r0, 3 + bl sub_80C3520 + movs r0, 0 + strh r0, [r4, 0x8] + strh r0, [r4, 0xC] + ldr r0, _080C276C @ =sub_80C2770 + str r0, [r4] +_080C2766: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C276C: .4byte sub_80C2770 + thumb_func_end sub_80C26E4 + + thumb_func_start sub_80C2770 +sub_80C2770: @ 80C2770 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + adds r4, r2, 0 + ldr r5, _080C27BC @ =0x02018000 + ldrb r3, [r5, 0x4] + cmp r3, 0 + bne _080C27CC + ldr r1, _080C27C0 @ =gTasks + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0, r1 + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x15 + bne _080C27DE + strh r3, [r1, 0xA] + ldr r4, _080C27C4 @ =gContestText_Round2Results + ldrb r1, [r5] + adds r0, r4, 0 + bl sub_80C3158 + adds r0, r4, 0 + bl sub_80C34AC + lsls r0, 16 + asrs r0, 16 + ldr r2, _080C27C8 @ =0x0000ffff + movs r3, 0x88 + lsls r3, 3 + movs r1, 0x90 + bl sub_80C34CC + b _080C27DE + .align 2, 0 +_080C27BC: .4byte 0x02018000 +_080C27C0: .4byte gTasks +_080C27C4: .4byte gContestText_Round2Results +_080C27C8: .4byte 0x0000ffff +_080C27CC: + cmp r3, 0x2 + bne _080C27DE + ldr r0, _080C27E4 @ =gTasks + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080C27E8 @ =sub_80C27EC + str r0, [r1] +_080C27DE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C27E4: .4byte gTasks +_080C27E8: .4byte sub_80C27EC + thumb_func_end sub_80C2770 + + thumb_func_start sub_80C27EC +sub_80C27EC: @ 80C27EC + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C2810 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080C284C + cmp r0, 0x1 + bgt _080C2814 + cmp r0, 0 + beq _080C281A + b _080C286C + .align 2, 0 +_080C2810: .4byte gTasks +_080C2814: + cmp r0, 0x2 + beq _080C285C + b _080C286C +_080C281A: + ldr r5, _080C2840 @ =0x02018000 + ldrb r0, [r5, 0xA] + cmp r0, 0 + bne _080C286C + ldrh r1, [r4, 0xC] + adds r0, r1, 0x1 + strh r0, [r4, 0xC] + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x1 + bl sub_80C40D4 + ldrb r0, [r5, 0x14] + cmp r0, 0 + bne _080C2844 + movs r0, 0x2 + strh r0, [r4, 0x8] + b _080C286C + .align 2, 0 +_080C2840: .4byte 0x02018000 +_080C2844: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080C286C +_080C284C: + ldr r0, _080C2858 @ =0x02018000 + ldrb r0, [r0, 0x14] + cmp r0, 0 + bne _080C286C + strh r0, [r4, 0x8] + b _080C286C + .align 2, 0 +_080C2858: .4byte 0x02018000 +_080C285C: + movs r0, 0x88 + lsls r0, 3 + bl sub_80C3520 + movs r0, 0 + strh r0, [r4, 0x8] + ldr r0, _080C2874 @ =sub_80C2878 + str r0, [r4] +_080C286C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C2874: .4byte sub_80C2878 + thumb_func_end sub_80C27EC + + thumb_func_start sub_80C2878 +sub_80C2878: @ 80C2878 + push {r4-r7,lr} + sub sp, 0x64 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080C28A0 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0x5 + bls _080C2896 + b _080C2A80 +_080C2896: + lsls r0, 2 + ldr r1, _080C28A4 @ =_080C28A8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C28A0: .4byte gTasks +_080C28A4: .4byte _080C28A8 + .align 2, 0 +_080C28A8: + .4byte _080C28C0 + .4byte _080C28E0 + .4byte _080C28FE + .4byte _080C2938 + .4byte _080C299C + .4byte _080C2A70 +_080C28C0: + ldr r0, _080C28DC @ =0x02018000 + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _080C28CA + b _080C2A80 +_080C28CA: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x8] + adds r1, 0x1 + strh r1, [r0, 0x8] + b _080C2A80 + .align 2, 0 +_080C28DC: .4byte 0x02018000 +_080C28E0: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r1, r0, r2 + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + beq _080C28F8 + b _080C2A80 +_080C28F8: + movs r0, 0 + strh r0, [r1, 0xA] + b _080C2A4A +_080C28FE: + movs r4, 0 + lsls r6, r5, 2 + ldr r7, _080C292C @ =gTasks +_080C2904: + ldr r0, _080C2930 @ =sub_80C3A5C + movs r1, 0xA + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r7 + ldr r0, _080C2934 @ =gUnknown_02038690 + adds r0, r4, r0 + ldrb r0, [r0] + strh r0, [r1, 0x8] + strh r4, [r1, 0xA] + adds r4, 0x1 + cmp r4, 0x3 + ble _080C2904 + b _080C2A42 + .align 2, 0 +_080C292C: .4byte gTasks +_080C2930: .4byte sub_80C3A5C +_080C2934: .4byte gUnknown_02038690 +_080C2938: + ldr r0, _080C2990 @ =0x02018000 + ldrb r0, [r0, 0x5] + cmp r0, 0x4 + beq _080C2942 + b _080C2A80 +_080C2942: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + beq _080C295A + b _080C2A80 +_080C295A: + movs r0, 0 + strh r0, [r4, 0xA] + ldr r0, _080C2994 @ =sub_80C3B30 + movs r1, 0xA + bl CreateTask + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r4, 0 + ldr r1, _080C2998 @ =gUnknown_02038690 + ldrb r0, [r1] + cmp r0, 0 + beq _080C2984 +_080C2976: + adds r4, 0x1 + cmp r4, 0x3 + bgt _080C2984 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080C2976 +_080C2984: + lsls r0, r4, 24 + lsrs r0, 24 + movs r1, 0xE + bl sub_80C3E60 + b _080C2A80 + .align 2, 0 +_080C2990: .4byte 0x02018000 +_080C2994: .4byte sub_80C3B30 +_080C2998: .4byte gUnknown_02038690 +_080C299C: + lsls r1, r5, 2 + adds r0, r1, r5 + lsls r0, 3 + adds r2, r0, r2 + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + adds r6, r1, 0 + cmp r0, 0x15 + bne _080C2A80 + movs r0, 0 + strh r0, [r2, 0xA] + movs r4, 0 + ldr r2, _080C29F4 @ =gUnknown_02038690 + ldrb r0, [r2] + ldr r1, _080C29F8 @ =gUnknown_0203869A + ldr r3, _080C29FC @ =gStringVar1 + cmp r0, 0 + beq _080C29D4 +_080C29C6: + adds r4, 0x1 + cmp r4, 0x3 + bgt _080C29D4 + adds r0, r4, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _080C29C6 +_080C29D4: + ldrb r1, [r1] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080C2A04 + lsls r1, r4, 3 + subs r1, r4 + lsls r1, 2 + ldr r0, _080C2A00 @ =gLinkPlayers + 0x8 + adds r1, r0 + adds r0, r3, 0 + bl StringCopy + lsls r4, 6 + b _080C2A10 + .align 2, 0 +_080C29F4: .4byte gUnknown_02038690 +_080C29F8: .4byte gUnknown_0203869A +_080C29FC: .4byte gStringVar1 +_080C2A00: .4byte gLinkPlayers + 0x8 +_080C2A04: + lsls r4, 6 + ldr r1, _080C2A54 @ =gUnknown_0203857D + adds r1, r4, r1 + adds r0, r3, 0 + bl StringCopy +_080C2A10: + ldr r0, _080C2A58 @ =gStringVar2 + ldr r1, _080C2A5C @ =gUnknown_02038572 + adds r1, r4, r1 + bl StringCopy + ldr r1, _080C2A60 @ =gContestText_PokeWon + mov r0, sp + bl StringExpandPlaceholders + ldr r0, _080C2A64 @ =0x02018000 + ldrb r1, [r0] + mov r0, sp + bl sub_80C3158 + mov r0, sp + bl sub_80C34AC + lsls r0, 16 + asrs r0, 16 + ldr r2, _080C2A68 @ =0x0000ffff + movs r3, 0x88 + lsls r3, 3 + movs r1, 0x90 + bl sub_80C34CC +_080C2A42: + ldr r0, _080C2A6C @ =gTasks + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 +_080C2A4A: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _080C2A80 + .align 2, 0 +_080C2A54: .4byte gUnknown_0203857D +_080C2A58: .4byte gStringVar2 +_080C2A5C: .4byte gUnknown_02038572 +_080C2A60: .4byte gContestText_PokeWon +_080C2A64: .4byte 0x02018000 +_080C2A68: .4byte 0x0000ffff +_080C2A6C: .4byte gTasks +_080C2A70: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0x8] + ldr r1, _080C2A88 @ =sub_80C2A8C + str r1, [r0] +_080C2A80: + add sp, 0x64 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C2A88: .4byte sub_80C2A8C + thumb_func_end sub_80C2878 + + thumb_func_start sub_80C2A8C +sub_80C2A8C: @ 80C2A8C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080C2ABC @ =gTasks + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r4, r1, 0 + cmp r0, 0x5 + bls _080C2AB2 + b _080C2D04 +_080C2AB2: + lsls r0, 2 + ldr r1, _080C2AC0 @ =_080C2AC4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C2ABC: .4byte gTasks +_080C2AC0: .4byte _080C2AC4 + .align 2, 0 +_080C2AC4: + .4byte _080C2ADC + .4byte _080C2C04 + .4byte _080C2C54 + .4byte _080C2C64 + .4byte _080C2CA8 + .4byte _080C2CE8 +_080C2ADC: + ldr r1, _080C2BC4 @ =gUnknown_030042C4 + movs r0, 0xF0 + strh r0, [r1] + ldr r1, _080C2BC8 @ =gUnknown_03004240 + ldr r3, _080C2BCC @ =0x00005050 + adds r0, r3, 0 + strh r0, [r1] + movs r1, 0 + ldr r3, _080C2BD0 @ =gUnknown_02038690 + ldrb r0, [r3] + lsls r4, r7, 2 + mov r10, r4 + ldr r2, _080C2BD4 @ =gUnknown_02038570 + ldr r5, _080C2BD8 @ =gMonFrontPicTable + mov r12, r5 + ldr r4, _080C2BDC @ =gMonFrontPicCoords + mov r8, r4 + ldr r5, _080C2BE0 @ =gUnknown_081FAF4C + mov r9, r5 + cmp r0, 0 + beq _080C2B14 +_080C2B06: + adds r1, 0x1 + cmp r1, 0x3 + bgt _080C2B14 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _080C2B06 +_080C2B14: + lsls r1, 6 + adds r0, r1, r2 + ldrh r6, [r0] + adds r0, r2, 0 + adds r0, 0x38 + adds r0, r1, r0 + ldr r4, [r0] + adds r0, r2, 0 + adds r0, 0x3C + adds r1, r0 + ldr r1, [r1] + str r1, [sp, 0xC] + lsls r0, r6, 3 + add r0, r12 + lsls r2, r6, 2 + add r2, r8 + ldrb r1, [r2] + ldrb r2, [r2, 0x1] + mov r5, r9 + ldr r3, [r5, 0x4] + str r3, [sp] + str r6, [sp, 0x4] + str r4, [sp, 0x8] + ldr r3, _080C2BE4 @ =0x02000000 + bl sub_800D334 + adds r0, r6, 0 + ldr r1, [sp, 0xC] + adds r2, r4, 0 + bl sub_80409C8 + adds r4, r0, 0 + bl LoadCompressedObjectPalette + adds r0, r6, 0 + movs r1, 0x1 + bl GetMonSpriteTemplate_803C56C + ldr r0, _080C2BE8 @ =gUnknown_02024E8C + ldrh r1, [r4, 0x4] + strh r1, [r0, 0x2] + movs r1, 0x88 + lsls r1, 1 + movs r2, 0x50 + movs r3, 0xA + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080C2BEC @ =gSprites + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r3, r2, r5 + strh r6, [r3, 0x30] + ldrb r4, [r3, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r4 + strb r1, [r3, 0x5] + adds r5, 0x1C + adds r2, r5 + ldr r1, _080C2BF0 @ =sub_80C3C44 + str r1, [r2] + ldr r2, _080C2BE4 @ =0x02000000 + movs r3, 0xC0 + lsls r3, 9 + adds r1, r2, r3 + strb r0, [r1, 0x8] + ldr r0, _080C2BF4 @ =gUnknown_083D17CC + bl LoadCompressedObjectPic + ldr r0, _080C2BF8 @ =gUnknown_083D17D4 + bl LoadCompressedObjectPalette + ldr r0, _080C2BFC @ =sub_80C3D04 + movs r1, 0xA + bl CreateTask + ldr r0, _080C2C00 @ =gTasks + mov r4, r10 + adds r1, r4, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _080C2D04 + .align 2, 0 +_080C2BC4: .4byte gUnknown_030042C4 +_080C2BC8: .4byte gUnknown_03004240 +_080C2BCC: .4byte 0x00005050 +_080C2BD0: .4byte gUnknown_02038690 +_080C2BD4: .4byte gUnknown_02038570 +_080C2BD8: .4byte gMonFrontPicTable +_080C2BDC: .4byte gMonFrontPicCoords +_080C2BE0: .4byte gUnknown_081FAF4C +_080C2BE4: .4byte 0x02000000 +_080C2BE8: .4byte gUnknown_02024E8C +_080C2BEC: .4byte gSprites +_080C2BF0: .4byte sub_80C3C44 +_080C2BF4: .4byte gUnknown_083D17CC +_080C2BF8: .4byte gUnknown_083D17D4 +_080C2BFC: .4byte sub_80C3D04 +_080C2C00: .4byte gTasks +_080C2C04: + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r4, r0, r4 + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080C2D04 + movs r0, 0 + strh r0, [r4, 0xE] + ldrh r0, [r4, 0xC] + adds r0, 0x2 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x20 + ble _080C2C30 + movs r0, 0x20 + strh r0, [r4, 0xC] +_080C2C30: + ldrb r2, [r4, 0xC] + ldr r3, _080C2C50 @ =gUnknown_03004240 + movs r0, 0x50 + subs r0, r2 + lsls r0, 8 + adds r1, r2, 0 + adds r1, 0x50 + orrs r0, r1 + strh r0, [r3] + cmp r2, 0x20 + bne _080C2D04 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080C2D04 + .align 2, 0 +_080C2C50: .4byte gUnknown_03004240 +_080C2C54: + ldr r0, _080C2C60 @ =0x02018000 + ldrb r0, [r0, 0x6] + cmp r0, 0x1 + bne _080C2D04 + b _080C2CD0 + .align 2, 0 +_080C2C60: .4byte 0x02018000 +_080C2C64: + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r3, r0, r4 + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x79 + bne _080C2D04 + movs r0, 0 + strh r0, [r3, 0xA] + ldr r2, _080C2C9C @ =gSprites + ldr r0, _080C2CA0 @ =0x02018000 + ldrb r1, [r0, 0x8] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _080C2CA4 @ =sub_80C3CB8 + str r1, [r0] + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] + b _080C2D04 + .align 2, 0 +_080C2C9C: .4byte gSprites +_080C2CA0: .4byte 0x02018000 +_080C2CA4: .4byte sub_80C3CB8 +_080C2CA8: + ldr r0, _080C2CE0 @ =0x02018000 + ldrb r0, [r0, 0x6] + cmp r0, 0x2 + bne _080C2D04 + ldr r3, _080C2CE4 @ =gUnknown_03004240 + ldrh r0, [r3] + lsrs r2, r0, 8 + adds r0, r2, 0x2 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x50 + bls _080C2CC2 + movs r2, 0x50 +_080C2CC2: + lsls r1, r2, 8 + movs r0, 0xA0 + subs r0, r2 + orrs r1, r0 + strh r1, [r3] + cmp r2, 0x50 + bne _080C2D04 +_080C2CD0: + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r4 + ldrh r1, [r0, 0x8] + adds r1, 0x1 + strh r1, [r0, 0x8] + b _080C2D04 + .align 2, 0 +_080C2CE0: .4byte 0x02018000 +_080C2CE4: .4byte gUnknown_03004240 +_080C2CE8: + ldr r2, _080C2D14 @ =0x02018000 + ldrb r0, [r2, 0x6] + cmp r0, 0x2 + bne _080C2D04 + movs r1, 0 + movs r0, 0x1 + strb r0, [r2, 0x9] + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r4 + strh r1, [r0, 0x8] + ldr r1, _080C2D18 @ =sub_80C2D1C + str r1, [r0] +_080C2D04: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C2D14: .4byte 0x02018000 +_080C2D18: .4byte sub_80C2D1C + thumb_func_end sub_80C2A8C + + thumb_func_start sub_80C2D1C +sub_80C2D1C: @ 80C2D1C + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _080C2D6C @ =gMain + ldrh r1, [r0, 0x2E] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080C2D66 + ldr r0, _080C2D70 @ =gUnknown_0203869A + ldrb r1, [r0] + adds r0, r2, 0 + ands r0, r1 + lsls r6, r7, 2 + cmp r0, 0 + bne _080C2D5A + ldr r5, _080C2D74 @ =gUnknown_02038570 + movs r4, 0x3 +_080C2D42: + ldrh r0, [r5] + bl SpeciesToNationalPokedexNum + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2 + bl sub_8090D90 + adds r5, 0x40 + subs r4, 0x1 + cmp r4, 0 + bge _080C2D42 +_080C2D5A: + ldr r0, _080C2D78 @ =gTasks + adds r1, r6, r7 + lsls r1, 3 + adds r1, r0 + ldr r0, _080C2D7C @ =sub_80C2D80 + str r0, [r1] +_080C2D66: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C2D6C: .4byte gMain +_080C2D70: .4byte gUnknown_0203869A +_080C2D74: .4byte gUnknown_02038570 +_080C2D78: .4byte gTasks +_080C2D7C: .4byte sub_80C2D80 + thumb_func_end sub_80C2D1C + + thumb_func_start sub_80C2D80 +sub_80C2D80: @ 80C2D80 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080C2DAC @ =gUnknown_0203869A + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080C2DBC + ldr r0, _080C2DB0 @ =gOtherText_LinkStandby + bl sub_80C3698 + bl sub_800832C + ldr r1, _080C2DB4 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080C2DB8 @ =sub_80C2DD8 + str r1, [r0] + b _080C2DCA + .align 2, 0 +_080C2DAC: .4byte gUnknown_0203869A +_080C2DB0: .4byte gOtherText_LinkStandby +_080C2DB4: .4byte gTasks +_080C2DB8: .4byte sub_80C2DD8 +_080C2DBC: + ldr r0, _080C2DD0 @ =gTasks + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080C2DD4 @ =sub_80C2E14 + str r0, [r1] +_080C2DCA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C2DD0: .4byte gTasks +_080C2DD4: .4byte sub_80C2E14 + thumb_func_end sub_80C2D80 + + thumb_func_start sub_80C2DD8 +sub_80C2DD8: @ 80C2DD8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080C2E04 @ =gReceivedRemoteLinkPlayers + ldrb r1, [r0] + cmp r1, 0 + bne _080C2DFC + ldr r0, _080C2E08 @ =gUnknown_0203869A + strb r1, [r0] + bl sub_80C3764 + ldr r1, _080C2E0C @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080C2E10 @ =sub_80C2E14 + str r1, [r0] +_080C2DFC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C2E04: .4byte gReceivedRemoteLinkPlayers +_080C2E08: .4byte gUnknown_0203869A +_080C2E0C: .4byte gTasks +_080C2E10: .4byte sub_80C2E14 + thumb_func_end sub_80C2DD8 + + thumb_func_start sub_80C2E14 +sub_80C2E14: @ 80C2E14 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r1, _080C2E80 @ =gUnknown_02038690 + ldr r0, _080C2E84 @ =gUnknown_02038695 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + bl sub_80BE284 + movs r0, 0x2 + bl sub_810FB10 + ldr r0, _080C2E88 @ =gUnknown_0203869E + ldrb r0, [r0] + bl sub_80B2A7C + movs r0, 0xFE + bl sub_80B2A7C + ldr r4, _080C2E8C @ =0x02000000 + ldr r0, _080C2E90 @ =0x00015ddf + adds r1, r4, r0 + movs r6, 0 + movs r0, 0x1 + strb r0, [r1] + movs r0, 0xFE + movs r1, 0 + bl sub_80B2C4C + ldr r1, _080C2E94 @ =0x00015dde + adds r4, r1 + strb r0, [r4] + str r6, [sp] + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl BeginHardwarePaletteFade + ldr r1, _080C2E98 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _080C2E9C @ =sub_80C2EA0 + str r1, [r0] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C2E80: .4byte gUnknown_02038690 +_080C2E84: .4byte gUnknown_02038695 +_080C2E88: .4byte gUnknown_0203869E +_080C2E8C: .4byte 0x02000000 +_080C2E90: .4byte 0x00015ddf +_080C2E94: .4byte 0x00015dde +_080C2E98: .4byte gTasks +_080C2E9C: .4byte sub_80C2EA0 + thumb_func_end sub_80C2E14 + + thumb_func_start sub_80C2EA0 +sub_80C2EA0: @ 80C2EA0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + adds r5, r2, 0 + ldr r0, _080C2ED8 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + bne _080C2F18 + ldr r1, _080C2EDC @ =gTasks + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080C2EE8 + ldr r0, _080C2EE0 @ =0x02018000 + ldrb r0, [r0, 0x3] + bl DestroyTask + ldr r0, _080C2EE4 @ =0x0000ffff + b _080C2EEE + .align 2, 0 +_080C2ED8: .4byte gPaletteFade +_080C2EDC: .4byte gTasks +_080C2EE0: .4byte 0x02018000 +_080C2EE4: .4byte 0x0000ffff +_080C2EE8: + cmp r0, 0x1 + bne _080C2F04 + ldr r0, _080C2F00 @ =0xffff0000 +_080C2EEE: + movs r1, 0x10 + movs r2, 0 + bl BlendPalettes + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + b _080C2F18 + .align 2, 0 +_080C2F00: .4byte 0xffff0000 +_080C2F04: + ldr r0, _080C2F20 @ =REG_BLDCNT + strh r3, [r0] + adds r0, 0x4 + strh r3, [r0] + adds r0, r5, 0 + bl DestroyTask + ldr r0, _080C2F24 @ =c2_exit_to_overworld_1_continue_scripts_restart_music + bl SetMainCallback2 +_080C2F18: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C2F20: .4byte REG_BLDCNT +_080C2F24: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music + thumb_func_end sub_80C2EA0 + + thumb_func_start sub_80C2F28 +sub_80C2F28: @ 80C2F28 + push {r4,r5,lr} + ldr r2, _080C2F5C @ =gUnknown_030041B0 + ldrh r3, [r2] + adds r0, r3, 0x2 + strh r0, [r2] + ldr r4, _080C2F60 @ =gUnknown_030041B8 + ldrh r5, [r4] + adds r1, r5, 0x1 + strh r1, [r4] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xFF + bls _080C2F48 + adds r0, r3, 0 + subs r0, 0xFD + strh r0, [r2] +_080C2F48: + lsls r0, r1, 16 + lsrs r0, 16 + cmp r0, 0xFF + bls _080C2F56 + adds r0, r5, 0 + subs r0, 0xFE + strh r0, [r4] +_080C2F56: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C2F5C: .4byte gUnknown_030041B0 +_080C2F60: .4byte gUnknown_030041B8 + thumb_func_end sub_80C2F28 + + thumb_func_start sub_80C2F64 +sub_80C2F64: @ 80C2F64 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080C2F94 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r2, r0, r1 + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080C2FE6 + movs r0, 0 + strh r0, [r2, 0x8] + movs r3, 0xC + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _080C2F98 + ldrh r0, [r2, 0xA] + adds r0, 0x1 + b _080C2F9C + .align 2, 0 +_080C2F94: .4byte gTasks +_080C2F98: + ldrh r0, [r2, 0xA] + subs r0, 0x1 +_080C2F9C: + strh r0, [r2, 0xA] + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r1, r0, r1 + movs r2, 0xA + ldrsh r0, [r1, r2] + cmp r0, 0x10 + bne _080C2FB2 + movs r0, 0x1 + b _080C2FB6 +_080C2FB2: + cmp r0, 0 + bne _080C2FB8 +_080C2FB6: + strh r0, [r1, 0xC] +_080C2FB8: + ldr r0, _080C3000 @ =gTasks + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + ldrb r2, [r4, 0xA] + ldr r3, _080C3004 @ =0x00002ede + movs r0, 0x6B + movs r1, 0x1 + bl BlendPalette + ldrb r2, [r4, 0xA] + ldr r3, _080C3008 @ =0x00007fff + movs r0, 0x68 + movs r1, 0x1 + bl BlendPalette + ldrb r2, [r4, 0xA] + ldr r3, _080C300C @ =0x000077be + movs r0, 0x6E + movs r1, 0x1 + bl BlendPalette +_080C2FE6: + ldr r1, _080C3000 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r3, 0xA + ldrsh r4, [r0, r3] + cmp r4, 0 + bne _080C3014 + ldr r0, _080C3010 @ =0x02018000 + strb r4, [r0, 0xA] + b _080C301A + .align 2, 0 +_080C3000: .4byte gTasks +_080C3004: .4byte 0x00002ede +_080C3008: .4byte 0x00007fff +_080C300C: .4byte 0x000077be +_080C3010: .4byte 0x02018000 +_080C3014: + ldr r1, _080C3020 @ =0x02018000 + movs r0, 0x1 + strb r0, [r1, 0xA] +_080C301A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C3020: .4byte 0x02018000 + thumb_func_end sub_80C2F64 + + thumb_func_start sub_80C3024 +sub_80C3024: @ 80C3024 + push {r4-r6,lr} + ldr r6, [sp, 0x10] + lsls r0, 16 + lsrs r0, 16 + lsls r1, 24 + lsrs r4, r1, 24 + lsls r2, 24 + lsrs r5, r2, 24 + lsls r3, 24 + cmp r3, 0 + beq _080C30B0 + adds r1, r6, 0 + bl sub_809D4F4 + lsls r1, r5, 9 + adds r0, r1 + adds r0, 0x80 + lsls r1, r4, 9 + ldr r2, _080C30A0 @ =0x06004000 + adds r1, r2 + ldr r2, _080C30A4 @ =0x040000d4 + str r0, [r2] + str r1, [r2, 0x4] + ldr r0, _080C30A8 @ =0x84000060 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + adds r1, r4, 0 + adds r1, 0xA + lsls r1, 28 + lsls r0, r4, 20 + movs r2, 0x80 + lsls r2, 18 + adds r0, r2 + orrs r0, r1 + lsrs r1, r0, 16 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 21 + movs r2, 0x83 + lsls r2, 16 + adds r0, r2 + lsrs r5, r0, 16 + movs r2, 0 + ldr r6, _080C30AC @ =0x0600c000 +_080C307C: + lsls r0, r2, 5 + adds r4, r2, 0x1 + adds r0, r5 + movs r3, 0x3 + lsls r0, 1 + adds r2, r0, r6 +_080C3088: + strh r1, [r2] + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + adds r2, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _080C3088 + adds r2, r4, 0 + cmp r2, 0x2 + ble _080C307C + b _080C30CA + .align 2, 0 +_080C30A0: .4byte 0x06004000 +_080C30A4: .4byte 0x040000d4 +_080C30A8: .4byte 0x84000060 +_080C30AC: .4byte 0x0600c000 +_080C30B0: + adds r1, r6, 0 + bl sub_809D4F4 + lsls r1, r5, 9 + adds r0, r1 + adds r0, 0x80 + lsls r1, r4, 9 + ldr r2, _080C30D0 @ =0x06004000 + adds r1, r2 + movs r2, 0xC0 + lsls r2, 1 + bl RequestSpriteCopy +_080C30CA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C30D0: .4byte 0x06004000 + thumb_func_end sub_80C3024 + + thumb_func_start sub_80C30D4 +sub_80C30D4: @ 80C30D4 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + movs r5, 0 + ldr r4, _080C3108 @ =gUnknown_02038570 +_080C30E4: + ldrh r0, [r4] + lsls r1, r5, 24 + lsrs r1, 24 + ldr r2, [r4, 0x38] + str r2, [sp] + adds r2, r7, 0 + adds r3, r6, 0 + bl sub_80C3024 + adds r4, 0x40 + adds r5, 0x1 + cmp r5, 0x3 + ble _080C30E4 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C3108: .4byte gUnknown_02038570 + thumb_func_end sub_80C30D4 + + thumb_func_start sub_80C310C +sub_80C310C: @ 80C310C + push {r4-r6,lr} + movs r4, 0 + ldr r6, _080C314C @ =gMonIconPaletteIndices + movs r5, 0xA0 + lsls r5, 16 +_080C3116: + ldr r1, _080C3150 @ =gUnknown_02038570 + lsls r0, r4, 6 + adds r0, r1 + ldrh r0, [r0] + movs r1, 0 + bl mon_icon_convert_unown_species_id + lsls r0, 16 + lsrs r0, 16 + adds r0, r6 + ldrb r0, [r0] + lsls r0, 5 + ldr r1, _080C3154 @ =gMonIconPalettes + adds r0, r1 + lsrs r1, r5, 16 + movs r2, 0x20 + bl LoadPalette + movs r0, 0x80 + lsls r0, 13 + adds r5, r0 + adds r4, 0x1 + cmp r4, 0x3 + ble _080C3116 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C314C: .4byte gMonIconPaletteIndices +_080C3150: .4byte gUnknown_02038570 +_080C3154: .4byte gMonIconPalettes + thumb_func_end sub_80C310C + + thumb_func_start sub_80C3158 +sub_80C3158: @ 80C3158 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + mov r9, r0 + lsls r1, 24 + lsrs r1, 24 + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + ldr r3, _080C32C0 @ =gSprites + adds r2, r3 + mov r1, sp + ldrh r0, [r2, 0x4] + lsls r0, 22 + lsrs r0, 22 + strh r0, [r1] + mov r4, sp + movs r0, 0x2E + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x4] + lsls r0, 22 + lsrs r0, 22 + strh r0, [r4, 0x2] + movs r0, 0x30 + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x4] + lsls r0, 22 + lsrs r0, 22 + strh r0, [r4, 0x4] + movs r0, 0x32 + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x4] + lsls r0, 22 + lsrs r0, 22 + strh r0, [r4, 0x6] + ldr r1, _080C32C4 @ =gWindowConfig_81E7278 + mov r8, r1 + ldr r7, _080C32C8 @ =0x06010000 + ldr r2, _080C32CC @ =0x040000d4 + ldr r6, _080C32D0 @ =0x85000100 + mov r1, sp + movs r5, 0 + add r3, sp, 0x8 + movs r4, 0x3 +_080C31CE: + ldrh r0, [r1] + lsls r0, 5 + adds r0, r7 + str r5, [sp, 0x8] + str r3, [r2] + str r0, [r2, 0x4] + str r6, [r2, 0x8] + ldr r0, [r2, 0x8] + adds r1, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080C31CE + mov r0, r8 + mov r1, r9 + bl GetStringWidthGivenWindowConfig + lsls r0, 24 + lsrs r5, r0, 24 + ldr r2, _080C32D4 @ =gUnknown_020238CC + ldr r1, _080C32D8 @ =gUnknown_083D17E2 + adds r0, r2, 0 + bl StringCopy + adds r2, r0, 0 + mvns r0, r5 + adds r1, r0, 0x1 + movs r0, 0x7 + ands r1, r0 + cmp r1, 0 + beq _080C3218 + movs r0, 0xFC + strb r0, [r2] + movs r0, 0x11 + strb r0, [r2, 0x1] + lsrs r0, r1, 1 + strb r0, [r2, 0x2] + adds r2, 0x3 +_080C3218: + adds r6, r5, 0x7 + movs r1, 0x8 + negs r1, r1 + adds r0, r1, 0 + ands r6, r0 + lsls r6, 24 + lsrs r5, r6, 24 + adds r0, r2, 0 + mov r1, r9 + bl StringCopy + adds r2, r0, 0 + movs r0, 0xFC + strb r0, [r2] + movs r0, 0x13 + strb r0, [r2, 0x1] + strb r5, [r2, 0x2] + movs r0, 0xFF + strb r0, [r2, 0x3] + ldr r0, _080C32DC @ =0x02018068 + mov r10, r0 + ldr r1, _080C32D4 @ =gUnknown_020238CC + bl sub_80034D4 + mov r0, sp + ldrh r4, [r0] + lsls r4, 5 + ldr r1, _080C32C8 @ =0x06010000 + adds r7, r4, r1 + ldr r0, _080C32E0 @ =gUnknown_083D1624 + mov r9, r0 + ldr r1, _080C32E4 @ =REG_BG0CNT + mov r8, r1 + adds r1, r7, 0 + mov r2, r8 + bl CpuSet + mov r5, r9 + adds r5, 0x80 + ldr r0, _080C32E8 @ =0x06010100 + adds r1, r4, r0 + adds r0, r5, 0 + mov r2, r8 + bl CpuSet + ldr r0, _080C32EC @ =0x06010200 + adds r1, r4, r0 + adds r0, r5, 0 + mov r2, r8 + bl CpuSet + mov r0, r9 + adds r0, 0x40 + ldr r1, _080C32F0 @ =0x06010300 + adds r4, r1 + adds r1, r4, 0 + mov r2, r8 + bl CpuSet + lsrs r5, r6, 27 + movs r4, 0 + cmp r4, r5 + bgt _080C3382 + mov r6, sp + mov r0, r10 + adds r0, 0x20 + str r0, [sp, 0xC] + mov r1, r10 + str r1, [sp, 0x10] + ldr r0, _080C32F4 @ =0x0600fd20 + str r0, [sp, 0x14] + ldr r1, _080C32F8 @ =0x0600fe20 + str r1, [sp, 0x18] + ldr r0, _080C32FC @ =0x0600ff20 + mov r10, r0 + ldr r1, _080C3300 @ =0x06010020 + mov r9, r1 +_080C32B2: + cmp r4, 0x6 + bgt _080C3304 + ldrh r0, [r6] + lsls r0, 5 + mov r1, r9 + b _080C3322 + .align 2, 0 +_080C32C0: .4byte gSprites +_080C32C4: .4byte gWindowConfig_81E7278 +_080C32C8: .4byte 0x06010000 +_080C32CC: .4byte 0x040000d4 +_080C32D0: .4byte 0x85000100 +_080C32D4: .4byte gUnknown_020238CC +_080C32D8: .4byte gUnknown_083D17E2 +_080C32DC: .4byte 0x02018068 +_080C32E0: .4byte gUnknown_083D1624 +_080C32E4: .4byte REG_BG0CNT +_080C32E8: .4byte 0x06010100 +_080C32EC: .4byte 0x06010200 +_080C32F0: .4byte 0x06010300 +_080C32F4: .4byte 0x0600fd20 +_080C32F8: .4byte 0x0600fe20 +_080C32FC: .4byte 0x0600ff20 +_080C3300: .4byte 0x06010020 +_080C3304: + cmp r4, 0xE + bgt _080C3310 + ldrh r0, [r6, 0x2] + lsls r0, 5 + mov r1, r10 + b _080C3322 +_080C3310: + cmp r4, 0x16 + bgt _080C331C + ldrh r0, [r6, 0x4] + lsls r0, 5 + ldr r1, [sp, 0x18] + b _080C3322 +_080C331C: + ldrh r0, [r6, 0x6] + lsls r0, 5 + ldr r1, [sp, 0x14] +_080C3322: + adds r7, r0, r1 + cmp r4, r5 + beq _080C3382 + ldr r0, _080C33D0 @ =gUnknown_083D16E4 + adds r1, r7, 0 + mov r2, r8 + bl CpuSet + movs r0, 0xC0 + lsls r0, 2 + adds r1, r7, r0 + ldr r0, _080C33D0 @ =gUnknown_083D16E4 + adds r0, 0x20 + mov r2, r8 + bl CpuSet + movs r0, 0x80 + lsls r0, 1 + adds r1, r7, r0 + ldr r0, [sp, 0x10] + mov r2, r8 + bl CpuSet + movs r0, 0x80 + lsls r0, 2 + adds r1, r7, r0 + ldr r0, [sp, 0xC] + mov r2, r8 + bl CpuSet + ldr r1, [sp, 0xC] + adds r1, 0x40 + str r1, [sp, 0xC] + ldr r0, [sp, 0x10] + adds r0, 0x40 + str r0, [sp, 0x10] + ldr r1, [sp, 0x14] + adds r1, 0x20 + str r1, [sp, 0x14] + ldr r0, [sp, 0x18] + adds r0, 0x20 + str r0, [sp, 0x18] + movs r1, 0x20 + add r10, r1 + add r9, r1 + adds r4, 0x1 + cmp r4, r5 + ble _080C32B2 +_080C3382: + ldr r4, _080C33D4 @ =gUnknown_083D1644 + ldr r5, _080C33D8 @ =REG_BG0CNT + adds r0, r4, 0 + adds r1, r7, 0 + adds r2, r5, 0 + bl CpuSet + adds r6, r4, 0 + adds r6, 0x80 + movs r0, 0x80 + lsls r0, 1 + adds r1, r7, r0 + adds r0, r6, 0 + adds r2, r5, 0 + bl CpuSet + movs r0, 0x80 + lsls r0, 2 + adds r1, r7, r0 + adds r0, r6, 0 + adds r2, r5, 0 + bl CpuSet + adds r4, 0x40 + movs r0, 0xC0 + lsls r0, 2 + adds r1, r7, r0 + adds r0, r4, 0 + adds r2, r5, 0 + bl CpuSet + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C33D0: .4byte gUnknown_083D16E4 +_080C33D4: .4byte gUnknown_083D1644 +_080C33D8: .4byte REG_BG0CNT + thumb_func_end sub_80C3158 + + thumb_func_start sub_80C33DC +sub_80C33DC: @ 80C33DC + push {r4-r6,lr} + sub sp, 0x20 + mov r1, sp + ldr r0, _080C3498 @ =gSpriteTemplate_83D174C + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + add r5, sp, 0x18 + ldr r6, _080C349C @ =gUnknown_083D1764 + movs r4, 0x7 +_080C33F2: + adds r0, r6, 0 + bl LoadSpriteSheet + adds r6, 0x8 + subs r4, 0x1 + cmp r4, 0 + bge _080C33F2 + ldr r0, _080C34A0 @ =gUnknown_083D17A4 + bl LoadSpritePalette + movs r4, 0 + mov r6, sp +_080C340A: + mov r0, sp + movs r1, 0x88 + lsls r1, 1 + movs r2, 0x90 + movs r3, 0xA + bl CreateSprite + adds r1, r5, r4 + strb r0, [r1] + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] + adds r4, 0x1 + cmp r4, 0x7 + ble _080C340A + ldr r2, _080C34A4 @ =gSprites + ldrb r1, [r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r5, 0x1] + movs r3, 0 + strh r1, [r0, 0x2E] + ldrb r1, [r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r5, 0x2] + strh r1, [r0, 0x30] + ldrb r1, [r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r5, 0x3] + strh r1, [r0, 0x32] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r5, 0x5] + strh r1, [r0, 0x2E] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r5, 0x6] + strh r1, [r0, 0x30] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r5, 0x7] + strh r1, [r0, 0x32] + ldr r1, _080C34A8 @ =0x02018000 + ldrb r0, [r5] + strb r0, [r1] + strb r3, [r1, 0x4] + ldrb r0, [r5, 0x4] + strb r0, [r1, 0x1] + bl sub_80C3764 + add sp, 0x20 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C3498: .4byte gSpriteTemplate_83D174C +_080C349C: .4byte gUnknown_083D1764 +_080C34A0: .4byte gUnknown_083D17A4 +_080C34A4: .4byte gSprites +_080C34A8: .4byte 0x02018000 + thumb_func_end sub_80C33DC + + thumb_func_start sub_80C34AC +sub_80C34AC: @ 80C34AC + push {lr} + bl StringLength + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 25 + lsrs r1, 25 + movs r0, 0x70 + subs r0, r1 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80C34AC + + thumb_func_start sub_80C34CC +sub_80C34CC: @ 80C34CC + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r4, _080C3514 @ =0x02018000 + mov r8, r4 + ldrb r5, [r4] + lsls r4, r5, 4 + adds r4, r5 + lsls r4, 2 + ldr r5, _080C3518 @ =gSprites + adds r4, r5 + movs r6, 0 + movs r5, 0x88 + lsls r5, 1 + strh r5, [r4, 0x20] + strh r1, [r4, 0x22] + strh r6, [r4, 0x24] + strh r6, [r4, 0x26] + lsls r0, 16 + asrs r0, 16 + adds r0, 0x20 + strh r0, [r4, 0x36] + strh r2, [r4, 0x38] + strh r3, [r4, 0x3A] + strh r6, [r4, 0x3C] + ldr r0, _080C351C @ =sub_80C3588 + str r0, [r4, 0x1C] + movs r0, 0x1 + mov r1, r8 + strb r0, [r1, 0x4] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C3514: .4byte 0x02018000 +_080C3518: .4byte gSprites +_080C351C: .4byte sub_80C3588 + thumb_func_end sub_80C34CC + + thumb_func_start sub_80C3520 +sub_80C3520: @ 80C3520 + push {r4,r5,lr} + ldr r4, _080C3558 @ =0x02018000 + ldrb r2, [r4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + ldr r2, _080C355C @ =gSprites + adds r1, r2 + ldrh r2, [r1, 0x24] + ldrh r3, [r1, 0x20] + adds r2, r3 + movs r3, 0 + strh r2, [r1, 0x20] + ldrh r2, [r1, 0x26] + ldrh r5, [r1, 0x22] + adds r2, r5 + strh r2, [r1, 0x22] + strh r3, [r1, 0x26] + strh r3, [r1, 0x24] + strh r0, [r1, 0x3A] + strh r3, [r1, 0x3C] + ldr r0, _080C3560 @ =sub_80C3630 + str r0, [r1, 0x1C] + movs r0, 0x3 + strb r0, [r4, 0x4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C3558: .4byte 0x02018000 +_080C355C: .4byte gSprites +_080C3560: .4byte sub_80C3630 + thumb_func_end sub_80C3520 + + thumb_func_start sub_80C3564 +sub_80C3564: @ 80C3564 + movs r3, 0 + movs r2, 0 + movs r1, 0x88 + lsls r1, 1 + strh r1, [r0, 0x20] + movs r1, 0x90 + strh r1, [r0, 0x22] + strh r2, [r0, 0x26] + strh r2, [r0, 0x24] + ldr r1, _080C3580 @ =SpriteCallbackDummy + str r1, [r0, 0x1C] + ldr r0, _080C3584 @ =0x02018000 + strb r3, [r0, 0x4] + bx lr + .align 2, 0 +_080C3580: .4byte SpriteCallbackDummy +_080C3584: .4byte 0x02018000 + thumb_func_end sub_80C3564 + + thumb_func_start sub_80C3588 +sub_80C3588: @ 80C3588 + push {r4-r7,lr} + adds r3, r0, 0 + ldrh r2, [r3, 0x3A] + ldrh r0, [r3, 0x3C] + adds r2, r0 + lsls r1, r2, 16 + asrs r1, 24 + ldrh r0, [r3, 0x20] + subs r0, r1 + strh r0, [r3, 0x20] + movs r1, 0xFF + ands r2, r1 + strh r2, [r3, 0x3C] + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r3, 0x36] + movs r4, 0x36 + ldrsh r1, [r3, r4] + cmp r0, r1 + bge _080C35B2 + strh r2, [r3, 0x20] +_080C35B2: + movs r4, 0 + ldr r6, _080C35F4 @ =gSprites + movs r5, 0x40 + adds r2, r3, 0 + adds r2, 0x2E +_080C35BC: + movs r7, 0 + ldrsh r0, [r2, r7] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrh r0, [r3, 0x24] + ldrh r7, [r3, 0x20] + adds r0, r7 + adds r0, r5 + strh r0, [r1, 0x20] + adds r5, 0x40 + adds r2, 0x2 + adds r4, 0x1 + cmp r4, 0x2 + ble _080C35BC + movs r0, 0x20 + ldrsh r1, [r3, r0] + movs r2, 0x36 + ldrsh r0, [r3, r2] + cmp r1, r0 + bne _080C35EC + ldr r0, _080C35F8 @ =sub_80C35FC + str r0, [r3, 0x1C] +_080C35EC: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C35F4: .4byte gSprites +_080C35F8: .4byte sub_80C35FC + thumb_func_end sub_80C3588 + + thumb_func_start sub_80C35FC +sub_80C35FC: @ 80C35FC + push {lr} + adds r2, r0, 0 + ldr r0, _080C3628 @ =0x02018000 + movs r1, 0x2 + strb r1, [r0, 0x4] + ldrh r3, [r2, 0x38] + ldr r1, _080C362C @ =0xffff0000 + lsrs r0, r1, 16 + cmp r3, r0 + beq _080C3624 + subs r0, r3, 0x1 + strh r0, [r2, 0x38] + lsls r0, 16 + asrs r0, 16 + asrs r1, 16 + cmp r0, r1 + bne _080C3624 + ldrh r0, [r2, 0x3A] + bl sub_80C3520 +_080C3624: + pop {r0} + bx r0 + .align 2, 0 +_080C3628: .4byte 0x02018000 +_080C362C: .4byte 0xffff0000 + thumb_func_end sub_80C35FC + + thumb_func_start sub_80C3630 +sub_80C3630: @ 80C3630 + push {r4-r7,lr} + adds r3, r0, 0 + ldrh r2, [r3, 0x3A] + ldrh r0, [r3, 0x3C] + adds r2, r0 + lsls r1, r2, 16 + asrs r1, 24 + ldrh r0, [r3, 0x20] + subs r0, r1 + strh r0, [r3, 0x20] + movs r0, 0xFF + ands r2, r0 + strh r2, [r3, 0x3C] + movs r4, 0 + ldr r6, _080C3694 @ =gSprites + movs r5, 0x40 + adds r2, r3, 0 + adds r2, 0x2E +_080C3654: + movs r1, 0 + ldrsh r0, [r2, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrh r0, [r3, 0x24] + ldrh r7, [r3, 0x20] + adds r0, r7 + adds r0, r5 + strh r0, [r1, 0x20] + adds r5, 0x40 + adds r2, 0x2 + adds r4, 0x1 + cmp r4, 0x2 + ble _080C3654 + movs r1, 0x20 + ldrsh r0, [r3, r1] + movs r2, 0x24 + ldrsh r1, [r3, r2] + adds r0, r1 + movs r1, 0xE0 + negs r1, r1 + cmp r0, r1 + bge _080C368C + adds r0, r3, 0 + bl sub_80C3564 +_080C368C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C3694: .4byte gSprites + thumb_func_end sub_80C3630 + + thumb_func_start sub_80C3698 +sub_80C3698: @ 80C3698 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r5, _080C374C @ =0x02018000 + ldrb r1, [r5, 0x1] + bl sub_80C3158 + adds r0, r4, 0 + bl sub_80C34AC + lsls r0, 16 + lsrs r0, 16 + ldrb r2, [r5, 0x1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + ldr r3, _080C3750 @ =gSprites + adds r4, r1, r3 + adds r0, 0x20 + strh r0, [r4, 0x20] + movs r0, 0x50 + strh r0, [r4, 0x22] + adds r5, r4, 0 + adds r5, 0x3E + ldrb r1, [r5] + movs r2, 0x5 + negs r2, r2 + adds r0, r2, 0 + ands r0, r1 + strb r0, [r5] + movs r5, 0 + adds r6, r3, 0 + mov r12, r2 + movs r3, 0x40 +_080C36DA: + lsls r0, r5, 1 + adds r2, r4, 0 + adds r2, 0x2E + adds r2, r0 + movs r1, 0 + ldrsh r0, [r2, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrh r0, [r4, 0x24] + ldrh r7, [r4, 0x20] + adds r0, r7 + adds r0, r3 + strh r0, [r1, 0x20] + movs r0, 0 + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrh r1, [r4, 0x22] + strh r1, [r0, 0x22] + movs r1, 0 + ldrsh r0, [r2, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + adds r1, 0x3E + ldrb r2, [r1] + mov r0, r12 + ands r0, r2 + strb r0, [r1] + adds r3, 0x40 + adds r5, 0x1 + cmp r5, 0x2 + ble _080C36DA + ldr r1, _080C3754 @ =gUnknown_030042C4 + movs r0, 0xF0 + strh r0, [r1] + ldr r2, _080C3758 @ =gUnknown_03004240 + ldrh r1, [r4, 0x22] + adds r0, r1, 0 + subs r0, 0x10 + lsls r0, 8 + adds r1, 0x10 + orrs r0, r1 + strh r0, [r2] + ldr r1, _080C375C @ =REG_WININ + ldr r2, _080C3760 @ =0x00003f3e + adds r0, r2, 0 + strh r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C374C: .4byte 0x02018000 +_080C3750: .4byte gSprites +_080C3754: .4byte gUnknown_030042C4 +_080C3758: .4byte gUnknown_03004240 +_080C375C: .4byte REG_WININ +_080C3760: .4byte 0x00003f3e + thumb_func_end sub_80C3698 + + thumb_func_start sub_80C3764 +sub_80C3764: @ 80C3764 + push {r4-r7,lr} + ldr r0, _080C37C8 @ =0x02018000 + ldrb r0, [r0, 0x1] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r3, _080C37CC @ =gSprites + adds r2, r3 + movs r0, 0x3E + adds r0, r2 + mov r12, r0 + ldrb r0, [r0] + movs r1, 0x4 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldr r7, _080C37D0 @ =gUnknown_030042C4 + ldr r6, _080C37D4 @ =gUnknown_03004240 + adds r5, r3, 0 + movs r4, 0x4 + adds r2, 0x2E + movs r3, 0x2 +_080C3790: + movs r1, 0 + ldrsh r0, [r2, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + adds r1, 0x3E + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + adds r2, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _080C3790 + movs r1, 0 + strh r1, [r7] + strh r1, [r6] + ldr r0, _080C37D8 @ =REG_WIN0H + strh r1, [r0] + adds r0, 0x4 + strh r1, [r0] + ldr r1, _080C37DC @ =REG_WININ + ldr r2, _080C37E0 @ =0x00003f3f + adds r0, r2, 0 + strh r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C37C8: .4byte 0x02018000 +_080C37CC: .4byte gSprites +_080C37D0: .4byte gUnknown_030042C4 +_080C37D4: .4byte gUnknown_03004240 +_080C37D8: .4byte REG_WIN0H +_080C37DC: .4byte REG_WININ +_080C37E0: .4byte 0x00003f3f + thumb_func_end sub_80C3764 + + thumb_func_start sub_80C37E4 +sub_80C37E4: @ 80C37E4 + push {r4-r6,lr} + sub sp, 0x10 + movs r5, 0x1 + movs r4, 0 + ldr r0, _080C3808 @ =gUnknown_0203869A + ldrb r0, [r0] + adds r1, r5, 0 + ands r1, r0 + cmp r1, 0 + beq _080C3814 + ldr r0, _080C380C @ =0x0600e000 + ldr r3, _080C3810 @ =gUnknown_08E964B8 + movs r1, 0x9 + str r1, [sp] + movs r2, 0x2 + str r2, [sp, 0x4] + b _080C386A + .align 2, 0 +_080C3808: .4byte gUnknown_0203869A +_080C380C: .4byte 0x0600e000 +_080C3810: .4byte gUnknown_08E964B8 +_080C3814: + ldr r0, _080C3830 @ =gUnknown_0203869E + ldrh r2, [r0] + cmp r2, 0 + bne _080C383C + movs r4, 0x1 + ldr r0, _080C3834 @ =0x0600e000 + ldr r3, _080C3838 @ =gUnknown_08E964B8 + str r2, [sp] + str r2, [sp, 0x4] + movs r1, 0x9 + str r1, [sp, 0x8] + movs r1, 0x2 + str r1, [sp, 0xC] + b _080C3870 + .align 2, 0 +_080C3830: .4byte gUnknown_0203869E +_080C3834: .4byte 0x0600e000 +_080C3838: .4byte gUnknown_08E964B8 +_080C383C: + cmp r2, 0x1 + bne _080C385C + ldr r0, _080C3854 @ =0x0600e000 + ldr r3, _080C3858 @ =gUnknown_08E964B8 + movs r1, 0x9 + str r1, [sp] + str r4, [sp, 0x4] + movs r1, 0x8 + str r1, [sp, 0x8] + movs r1, 0x2 + str r1, [sp, 0xC] + b _080C3870 + .align 2, 0 +_080C3854: .4byte 0x0600e000 +_080C3858: .4byte gUnknown_08E964B8 +_080C385C: + cmp r2, 0x2 + bne _080C3884 + ldr r0, _080C387C @ =0x0600e000 + ldr r3, _080C3880 @ =gUnknown_08E964B8 + movs r1, 0x11 + str r1, [sp] + str r4, [sp, 0x4] +_080C386A: + movs r1, 0x8 + str r1, [sp, 0x8] + str r2, [sp, 0xC] +_080C3870: + movs r1, 0x5 + movs r2, 0x1 + bl sub_809D104 + b _080C389E + .align 2, 0 +_080C387C: .4byte 0x0600e000 +_080C3880: .4byte gUnknown_08E964B8 +_080C3884: + movs r4, 0x1 + ldr r0, _080C38C0 @ =0x0600e000 + ldr r3, _080C38C4 @ =gUnknown_08E964B8 + str r1, [sp] + movs r2, 0x2 + str r2, [sp, 0x4] + movs r1, 0x9 + str r1, [sp, 0x8] + str r2, [sp, 0xC] + movs r1, 0x5 + movs r2, 0x1 + bl sub_809D104 +_080C389E: + adds r4, 0xD + ldr r0, _080C38C8 @ =gUnknown_0203869C + ldrh r0, [r0] + cmp r0, 0 + bne _080C38CC + movs r6, 0 + ldr r0, _080C38C0 @ =0x0600e000 + ldr r3, _080C38C4 @ =gUnknown_08E964B8 + movs r1, 0x11 + str r1, [sp] + movs r2, 0x2 + str r2, [sp, 0x4] + movs r1, 0xA + str r1, [sp, 0x8] + str r2, [sp, 0xC] + b _080C392A + .align 2, 0 +_080C38C0: .4byte 0x0600e000 +_080C38C4: .4byte gUnknown_08E964B8 +_080C38C8: .4byte gUnknown_0203869C +_080C38CC: + cmp r0, 0x1 + bne _080C38EC + movs r6, 0x1 + ldr r0, _080C38E4 @ =0x0600e000 + ldr r3, _080C38E8 @ =gUnknown_08E964B8 + movs r1, 0 + str r1, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + movs r1, 0xB + b _080C3924 + .align 2, 0 +_080C38E4: .4byte 0x0600e000 +_080C38E8: .4byte gUnknown_08E964B8 +_080C38EC: + cmp r0, 0x2 + bne _080C3910 + movs r6, 0x2 + ldr r0, _080C3908 @ =0x0600e000 + ldr r3, _080C390C @ =gUnknown_08E964B8 + movs r1, 0xB + str r1, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + movs r1, 0xA + str r1, [sp, 0x8] + str r6, [sp, 0xC] + b _080C392A + .align 2, 0 +_080C3908: .4byte 0x0600e000 +_080C390C: .4byte gUnknown_08E964B8 +_080C3910: + cmp r0, 0x3 + bne _080C393C + movs r6, 0x3 + ldr r0, _080C3934 @ =0x0600e000 + ldr r3, _080C3938 @ =gUnknown_08E964B8 + movs r1, 0x15 + str r1, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + movs r1, 0xA +_080C3924: + str r1, [sp, 0x8] + movs r1, 0x2 + str r1, [sp, 0xC] +_080C392A: + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_809D104 + b _080C395A + .align 2, 0 +_080C3934: .4byte 0x0600e000 +_080C3938: .4byte gUnknown_08E964B8 +_080C393C: + movs r6, 0x4 + ldr r0, _080C3984 @ =0x0600e000 + ldr r3, _080C3988 @ =gUnknown_08E964B8 + movs r1, 0 + str r1, [sp] + movs r1, 0x6 + str r1, [sp, 0x4] + movs r1, 0xA + str r1, [sp, 0x8] + movs r1, 0x2 + str r1, [sp, 0xC] + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_809D104 +_080C395A: + ldr r5, _080C398C @ =0x00000fff + lsls r4, r6, 12 + ldr r2, _080C3984 @ =0x0600e000 + movs r3, 0x7F +_080C3962: + ldrh r1, [r2] + adds r0, r5, 0 + ands r0, r1 + strh r0, [r2] + ldrh r1, [r2] + adds r0, r4, 0 + orrs r0, r1 + strh r0, [r2] + adds r2, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _080C3962 + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C3984: .4byte 0x0600e000 +_080C3988: .4byte gUnknown_08E964B8 +_080C398C: .4byte 0x00000fff + thumb_func_end sub_80C37E4 + + thumb_func_start sub_80C3990 +sub_80C3990: @ 80C3990 + push {r4,r5,lr} + lsls r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r1, _080C39DC @ =gUnknown_02038670 + lsrs r0, 23 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + lsls r4, r0, 16 + adds r0, r4, 0 + movs r1, 0x3F + bl __udivsi3 + adds r1, r0, 0 + ldr r0, _080C39E0 @ =0x0000ffff + ands r0, r1 + cmp r0, 0 + beq _080C39BC + movs r0, 0x80 + lsls r0, 9 + adds r1, r0 +_080C39BC: + lsrs r1, 16 + cmp r1, 0 + bne _080C39C8 + cmp r4, 0 + beq _080C39C8 + movs r1, 0x1 +_080C39C8: + cmp r5, 0 + beq _080C39D2 + cmp r1, 0xA + bls _080C39D2 + movs r1, 0xA +_080C39D2: + lsls r0, r1, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080C39DC: .4byte gUnknown_02038670 +_080C39E0: .4byte 0x0000ffff + thumb_func_end sub_80C3990 + + thumb_func_start sub_80C39E4 +sub_80C39E4: @ 80C39E4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + ldr r1, _080C3A44 @ =gUnknown_02038688 + lsls r0, r5, 1 + adds r0, r1 + movs r2, 0 + ldrsh r0, [r0, r2] + adds r7, r1, 0 + cmp r0, 0 + bge _080C3A00 + negs r0, r0 +_080C3A00: + lsls r4, r0, 16 + adds r0, r4, 0 + movs r1, 0x50 + bl __udivsi3 + adds r2, r0, 0 + ldr r0, _080C3A48 @ =0x0000ffff + ands r0, r2 + cmp r0, 0 + beq _080C3A1A + movs r0, 0x80 + lsls r0, 9 + adds r2, r0 +_080C3A1A: + lsrs r2, 16 + cmp r2, 0 + bne _080C3A26 + cmp r4, 0 + beq _080C3A26 + movs r2, 0x1 +_080C3A26: + cmp r6, 0 + beq _080C3A30 + cmp r2, 0xA + bls _080C3A30 + movs r2, 0xA +_080C3A30: + lsls r0, r5, 1 + adds r0, r7 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bge _080C3A4C + negs r0, r2 + lsls r0, 24 + b _080C3A4E + .align 2, 0 +_080C3A44: .4byte gUnknown_02038688 +_080C3A48: .4byte 0x0000ffff +_080C3A4C: + lsls r0, r2, 24 +_080C3A4E: + lsrs r0, 24 + lsls r0, 24 + asrs r0, 24 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80C39E4 + + thumb_func_start sub_80C3A5C +sub_80C3A5C: @ 80C3A5C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + ldr r1, _080C3A90 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r3, r0, r1 + ldrh r2, [r3, 0x1C] + movs r1, 0x1C + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080C3A94 + movs r1, 0x8 + ldrsh r0, [r3, r1] + movs r1, 0x3 + subs r1, r0 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + strh r0, [r3, 0x1E] + adds r0, r2, 0x1 + strh r0, [r3, 0x1C] + b _080C3B12 + .align 2, 0 +_080C3A90: .4byte gTasks +_080C3A94: + cmp r0, 0x1 + bne _080C3B12 + ldrh r0, [r3, 0x1E] + subs r0, 0x1 + strh r0, [r3, 0x1E] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080C3B12 + movs r0, 0x8 + ldrsh r2, [r3, r0] + lsls r2, 17 + ldr r1, _080C3B18 @ =0x50430000 + adds r2, r1 + lsrs r2, 16 + movs r0, 0xA + ldrsh r1, [r3, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 6 + ldr r1, _080C3B1C @ =0x0600e142 + adds r0, r1 + strh r2, [r0] + movs r0, 0xA + ldrsh r1, [r3, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 6 + ldr r1, _080C3B20 @ =0x0600e144 + adds r0, r1 + adds r1, r2, 0x1 + strh r1, [r0] + movs r0, 0xA + ldrsh r1, [r3, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 6 + ldr r1, _080C3B24 @ =0x0600e182 + adds r0, r1 + adds r1, r2, 0 + adds r1, 0x10 + strh r1, [r0] + movs r0, 0xA + ldrsh r1, [r3, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 6 + ldr r1, _080C3B28 @ =0x0600e184 + adds r0, r1 + adds r2, 0x11 + strh r2, [r0] + ldr r1, _080C3B2C @ =0x02018000 + ldrb r0, [r1, 0x5] + adds r0, 0x1 + strb r0, [r1, 0x5] + adds r0, r4, 0 + bl DestroyTask + movs r0, 0x18 + bl PlaySE +_080C3B12: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C3B18: .4byte 0x50430000 +_080C3B1C: .4byte 0x0600e142 +_080C3B20: .4byte 0x0600e144 +_080C3B24: .4byte 0x0600e182 +_080C3B28: .4byte 0x0600e184 +_080C3B2C: .4byte 0x02018000 + thumb_func_end sub_80C3A5C + + thumb_func_start sub_80C3B30 +sub_80C3B30: @ 80C3B30 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + movs r5, 0 + ldr r1, _080C3BC0 @ =gUnknown_02038690 + ldrb r0, [r1] + ldr r2, _080C3BC4 @ =gTasks + mov r10, r2 + cmp r0, 0 + beq _080C3B5C +_080C3B4E: + adds r5, 0x1 + cmp r5, 0x3 + bgt _080C3B5C + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080C3B4E +_080C3B5C: + movs r1, 0 + lsls r0, r5, 1 + mov r2, r12 + lsls r2, 2 + mov r9, r2 + adds r0, r5 + lsls r0, 5 + mov r8, r0 + ldr r7, _080C3BC8 @ =0x00000fff + movs r0, 0x90 + lsls r0, 8 + adds r6, r0, 0 +_080C3B74: + lsls r0, r1, 5 + adds r4, r1, 0x1 + add r0, r8 + movs r3, 0x1D + lsls r0, 1 + ldr r1, _080C3BCC @ =0x0600e100 + adds r2, r0, r1 +_080C3B82: + ldrh r1, [r2] + adds r0, r7, 0 + ands r0, r1 + orrs r0, r6 + strh r0, [r2] + adds r2, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _080C3B82 + adds r1, r4, 0 + cmp r1, 0x2 + ble _080C3B74 + mov r0, r9 + add r0, r12 + lsls r0, 3 + add r0, r10 + strh r5, [r0, 0x1C] + movs r1, 0x1 + strh r1, [r0, 0x20] + ldr r2, _080C3BD0 @ =sub_80C3BD8 + str r2, [r0] + mov r1, r12 + ldr r0, _080C3BD4 @ =0x02018000 + strb r1, [r0, 0x3] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C3BC0: .4byte gUnknown_02038690 +_080C3BC4: .4byte gTasks +_080C3BC8: .4byte 0x00000fff +_080C3BCC: .4byte 0x0600e100 +_080C3BD0: .4byte sub_80C3BD8 +_080C3BD4: .4byte 0x02018000 + thumb_func_end sub_80C3B30 + + thumb_func_start sub_80C3BD8 +sub_80C3BD8: @ 80C3BD8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C3C24 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] + lsls r0, 16 + asrs r5, r0, 16 + cmp r5, 0x1 + bne _080C3C3C + movs r0, 0 + strh r0, [r4, 0x1E] + ldrh r2, [r4, 0x20] + lsls r2, 24 + lsrs r2, 24 + ldr r3, _080C3C28 @ =0x00006f8d + movs r0, 0x91 + movs r1, 0x1 + bl BlendPalette + movs r1, 0x22 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080C3C2C + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + bne _080C3C3C + strh r5, [r4, 0x22] + b _080C3C3C + .align 2, 0 +_080C3C24: .4byte gTasks +_080C3C28: .4byte 0x00006f8d +_080C3C2C: + ldrh r0, [r4, 0x20] + subs r0, 0x1 + strh r0, [r4, 0x20] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bne _080C3C3C + strh r0, [r4, 0x22] +_080C3C3C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C3BD8 + + thumb_func_start sub_80C3C44 +sub_80C3C44: @ 80C3C44 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0x9 + bgt _080C3C6C + adds r0, r1, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080C3CA8 + ldrh r0, [r4, 0x30] + movs r1, 0 + bl PlayCry1 + movs r0, 0 + strh r0, [r4, 0x30] + b _080C3CA8 +_080C3C6C: + movs r0, 0xC0 + lsls r0, 3 + adds r2, r0, 0 + ldrh r1, [r4, 0x30] + adds r2, r1 + lsls r1, r2, 16 + asrs r1, 24 + ldrh r0, [r4, 0x20] + subs r0, r1 + strh r0, [r4, 0x20] + movs r1, 0xFF + ands r2, r1 + strh r2, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x77 + bgt _080C3C92 + movs r0, 0x78 + strh r0, [r4, 0x20] +_080C3C92: + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0x78 + bne _080C3CA8 + ldr r0, _080C3CB0 @ =SpriteCallbackDummy + str r0, [r4, 0x1C] + movs r0, 0 + strh r0, [r4, 0x30] + ldr r1, _080C3CB4 @ =0x02018000 + movs r0, 0x1 + strb r0, [r1, 0x6] +_080C3CA8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C3CB0: .4byte SpriteCallbackDummy +_080C3CB4: .4byte 0x02018000 + thumb_func_end sub_80C3C44 + + thumb_func_start sub_80C3CB8 +sub_80C3CB8: @ 80C3CB8 + push {lr} + adds r3, r0, 0 + movs r0, 0xC0 + lsls r0, 3 + adds r2, r0, 0 + ldrh r0, [r3, 0x30] + adds r2, r0 + lsls r1, r2, 16 + asrs r1, 24 + ldrh r0, [r3, 0x20] + subs r0, r1 + strh r0, [r3, 0x20] + movs r1, 0xFF + ands r2, r1 + strh r2, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bge _080C3CF8 + ldr r0, _080C3CFC @ =SpriteCallbackDummy + str r0, [r3, 0x1C] + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080C3D00 @ =0x02018000 + movs r0, 0x2 + strb r0, [r1, 0x6] +_080C3CF8: + pop {r0} + bx r0 + .align 2, 0 +_080C3CFC: .4byte SpriteCallbackDummy +_080C3D00: .4byte 0x02018000 + thumb_func_end sub_80C3CB8 + + thumb_func_start sub_80C3D04 +sub_80C3D04: @ 80C3D04 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080C3DD8 @ =gTasks + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r1, r0, r1 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080C3DBE + movs r0, 0 + strh r0, [r1, 0x8] + ldr r0, _080C3DDC @ =0x02018000 + mov r8, r0 + ldrb r0, [r0, 0x7] + cmp r0, 0x27 + bhi _080C3DBE + ldr r4, _080C3DE0 @ =gSpriteTemplate_83D17B4 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF0 + bl __umodsi3 + adds r1, r0, 0 + subs r1, 0x14 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + movs r2, 0x2C + movs r3, 0x5 + bl CreateSprite + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl Random + ldr r1, _080C3DE4 @ =gSprites + lsls r5, r4, 4 + adds r5, r4 + lsls r5, 2 + adds r5, r1 + lsls r0, 23 + lsrs r0, 23 + strh r0, [r5, 0x2E] + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x18 + bl __umodsi3 + adds r0, 0x10 + strh r0, [r5, 0x30] + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xFF + ands r0, r1 + adds r0, 0x30 + strh r0, [r5, 0x32] + bl Random + ldrh r6, [r5, 0x4] + lsls r4, r6, 22 + lsrs r4, 22 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x11 + bl __umodsi3 + adds r4, r0 + ldr r1, _080C3DE8 @ =0x000003ff + adds r0, r1, 0 + ands r4, r0 + ldr r0, _080C3DEC @ =0xfffffc00 + ands r0, r6 + orrs r0, r4 + strh r0, [r5, 0x4] + mov r1, r8 + ldrb r0, [r1, 0x7] + adds r0, 0x1 + strb r0, [r1, 0x7] +_080C3DBE: + ldr r0, _080C3DDC @ =0x02018000 + ldrb r0, [r0, 0x9] + cmp r0, 0 + beq _080C3DCC + adds r0, r7, 0 + bl DestroyTask +_080C3DCC: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C3DD8: .4byte gTasks +_080C3DDC: .4byte 0x02018000 +_080C3DE0: .4byte gSpriteTemplate_83D17B4 +_080C3DE4: .4byte gSprites +_080C3DE8: .4byte 0x000003ff +_080C3DEC: .4byte 0xfffffc00 + thumb_func_end sub_80C3D04 + + thumb_func_start sub_80C3DF0 +sub_80C3DF0: @ 80C3DF0 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 24 + movs r2, 0x30 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + ldrh r1, [r4, 0x32] + ldrh r0, [r4, 0x36] + adds r1, r0 + lsls r0, r1, 16 + asrs r0, 24 + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + movs r0, 0xFF + ands r1, r0 + strh r1, [r4, 0x36] + ldrh r0, [r4, 0x22] + adds r0, 0x1 + strh r0, [r4, 0x22] + ldr r5, _080C3E5C @ =0x02018000 + ldrb r0, [r5, 0x9] + cmp r0, 0 + beq _080C3E3A + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080C3E3A: + movs r1, 0x20 + ldrsh r0, [r4, r1] + cmp r0, 0xF8 + bgt _080C3E4A + movs r2, 0x22 + ldrsh r0, [r4, r2] + cmp r0, 0x74 + ble _080C3E56 +_080C3E4A: + adds r0, r4, 0 + bl DestroySprite + ldrb r0, [r5, 0x7] + subs r0, 0x1 + strb r0, [r5, 0x7] +_080C3E56: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C3E5C: .4byte 0x02018000 + thumb_func_end sub_80C3DF0 + + thumb_func_start sub_80C3E60 +sub_80C3E60: @ 80C3E60 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080C3E98 @ =sub_80C3EA4 + movs r1, 0x8 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C3E9C @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + strh r5, [r1, 0xA] + ldr r0, _080C3EA0 @ =gUnknown_02038570 + lsls r4, 6 + adds r4, r0 + ldrh r0, [r4] + strh r0, [r1, 0xC] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C3E98: .4byte sub_80C3EA4 +_080C3E9C: .4byte gTasks +_080C3EA0: .4byte gUnknown_02038570 + thumb_func_end sub_80C3E60 + + thumb_func_start sub_80C3EA4 +sub_80C3EA4: @ 80C3EA4 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C3EF8 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + ldrb r5, [r4, 0x8] + ldrh r0, [r4, 0x1C] + adds r1, r0, 0x1 + strh r1, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xA + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080C3EEE + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r0, [r4, 0xC] + ldrb r2, [r4, 0x1E] + ldr r1, _080C3EFC @ =gUnknown_02038570 + lsls r3, r5, 6 + adds r1, 0x38 + adds r3, r1 + ldr r1, [r3] + str r1, [sp] + adds r1, r5, 0 + movs r3, 0 + bl sub_80C3024 + ldrh r0, [r4, 0x1E] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x1E] +_080C3EEE: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C3EF8: .4byte gTasks +_080C3EFC: .4byte gUnknown_02038570 + thumb_func_end sub_80C3EA4 + + thumb_func_start sub_80C3F00 +sub_80C3F00: @ 80C3F00 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _080C4098 @ =gUnknown_02038678 + ldrh r2, [r0] + adds r4, r0, 0 + adds r3, r4, 0x2 + movs r0, 0x2 + mov r8, r0 +_080C3F16: + lsls r0, r2, 16 + asrs r0, 16 + movs r5, 0 + ldrsh r1, [r3, r5] + cmp r0, r1 + bge _080C3F24 + ldrh r2, [r3] +_080C3F24: + adds r3, 0x2 + movs r0, 0x1 + negs r0, r0 + add r8, r0 + mov r1, r8 + cmp r1, 0 + bge _080C3F16 + lsls r0, r2, 16 + mov r9, r0 + cmp r0, 0 + bge _080C3F62 + ldrh r2, [r4] + adds r3, r4, 0x2 + movs r4, 0x2 + mov r8, r4 +_080C3F42: + lsls r0, r2, 16 + asrs r0, 16 + movs r5, 0 + ldrsh r1, [r3, r5] + cmp r0, r1 + ble _080C3F50 + ldrh r2, [r3] +_080C3F50: + adds r3, 0x2 + movs r0, 0x1 + negs r0, r0 + add r8, r0 + lsls r1, r2, 16 + mov r9, r1 + mov r4, r8 + cmp r4, 0 + bge _080C3F42 +_080C3F62: + movs r5, 0 + mov r8, r5 + mov r10, r5 +_080C3F68: + ldr r0, _080C409C @ =gUnknown_02038670 + mov r1, r8 + lsls r7, r1, 1 + adds r0, r7, r0 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 5 + subs r0, r1 + lsls r0, 2 + adds r0, r1 + lsls r0, 3 + mov r4, r9 + asrs r6, r4, 16 + adds r1, r6, 0 + cmp r6, 0 + bge _080C3F8A + negs r1, r6 +_080C3F8A: + bl __divsi3 + adds r4, r0, 0 + movs r1, 0xA + bl __modsi3 + cmp r0, 0x4 + ble _080C3F9C + adds r4, 0xA +_080C3F9C: + ldr r0, _080C40A0 @ =0x02018018 + mov r1, r10 + adds r5, r1, r0 + adds r0, r4, 0 + movs r1, 0xA + bl __divsi3 + str r0, [r5] + ldr r0, _080C40A4 @ =gUnknown_02038688 + adds r7, r0 + movs r2, 0 + ldrsh r1, [r7, r2] + cmp r1, 0 + bge _080C3FBA + negs r1, r1 +_080C3FBA: + lsls r0, r1, 5 + subs r0, r1 + lsls r0, 2 + adds r0, r1 + lsls r0, 3 + adds r1, r6, 0 + cmp r1, 0 + bge _080C3FCC + negs r1, r1 +_080C3FCC: + bl __divsi3 + adds r4, r0, 0 + movs r1, 0xA + bl __modsi3 + cmp r0, 0x4 + ble _080C3FDE + adds r4, 0xA +_080C3FDE: + adds r0, r4, 0 + movs r1, 0xA + bl __divsi3 + str r0, [r5, 0x4] + movs r4, 0 + ldrsh r0, [r7, r4] + cmp r0, 0 + bge _080C3FF4 + movs r0, 0x1 + strb r0, [r5, 0x10] +_080C3FF4: + ldr r1, [r5] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + subs r0, r1 + lsls r0, 11 + movs r1, 0x64 + bl __divsi3 + adds r1, r0, 0 + movs r4, 0xFF + ands r0, r4 + cmp r0, 0x7F + bls _080C4016 + movs r0, 0x80 + lsls r0, 1 + adds r1, r0 +_080C4016: + lsrs r0, r1, 8 + str r0, [r5, 0x8] + ldr r1, [r5, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + subs r0, r1 + lsls r0, 11 + movs r1, 0x64 + bl __divsi3 + adds r1, r0, 0 + ands r0, r4 + cmp r0, 0x7F + bls _080C403A + movs r2, 0x80 + lsls r2, 1 + adds r1, r2 +_080C403A: + lsrs r0, r1, 8 + str r0, [r5, 0xC] + mov r0, r8 + lsls r4, r0, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80C3990 + strb r0, [r5, 0x11] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80C39E4 + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bge _080C4060 + negs r0, r0 +_080C4060: + strb r0, [r5, 0x12] + ldr r0, _080C40A8 @ =gUnknown_02038690 + add r0, r8 + ldrb r0, [r0] + cmp r0, 0 + beq _080C40B4 + ldr r4, [r5, 0x8] + ldrh r2, [r5, 0x8] + ldr r3, [r5, 0xC] + ldrh r1, [r5, 0xC] + ldrb r0, [r5, 0x10] + cmp r0, 0 + beq _080C4080 + lsls r0, r1, 16 + negs r0, r0 + lsrs r1, r0, 16 +_080C4080: + lsls r0, r2, 16 + asrs r2, r0, 16 + lsls r0, r1, 16 + asrs r1, r0, 16 + adds r0, r2, r1 + cmp r0, 0x58 + bne _080C40B4 + cmp r1, 0 + ble _080C40AC + subs r0, r3, 0x1 + str r0, [r5, 0xC] + b _080C40B4 + .align 2, 0 +_080C4098: .4byte gUnknown_02038678 +_080C409C: .4byte gUnknown_02038670 +_080C40A0: .4byte 0x02018018 +_080C40A4: .4byte gUnknown_02038688 +_080C40A8: .4byte gUnknown_02038690 +_080C40AC: + cmp r2, 0 + ble _080C40B4 + subs r0, r4, 0x1 + str r0, [r5, 0x8] +_080C40B4: + movs r1, 0x14 + add r10, r1 + movs r2, 0x1 + add r8, r2 + mov r4, r8 + cmp r4, 0x3 + bgt _080C40C4 + b _080C3F68 +_080C40C4: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80C3F00 + + thumb_func_start sub_80C40D4 +sub_80C40D4: @ 80C40D4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + movs r1, 0 + mov r10, r1 + movs r2, 0 + str r2, [sp] + cmp r0, 0 + bne _080C4198 + mov r8, r2 + ldr r0, _080C417C @ =0x02018018 + subs r1, 0x18 + adds r1, r0 + mov r9, r1 + adds r4, r0, 0 + adds r4, 0x8 + movs r6, 0xA0 +_080C4102: + ldrb r0, [r4, 0x9] + cmp r7, r0 + bcs _080C416A + adds r0, 0x13 + adds r0, r6, r0 + subs r0, r7 + lsls r0, 1 + ldr r2, _080C4180 @ =0x0600bffe + adds r0, r2 + ldr r2, _080C4184 @ =0x000060b3 + adds r1, r2, 0 + strh r1, [r0] + ldr r0, _080C4188 @ =sub_80C42C0 + movs r1, 0xA + bl CreateTask + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, [r4] + lsls r0, 16 + ldrb r1, [r4, 0x9] + bl __udivsi3 + adds r1, r7, 0x1 + adds r3, r0, 0 + muls r3, r1 + ldr r0, _080C418C @ =0x0000ffff + ands r0, r3 + ldr r1, _080C4190 @ =0x00007fff + cmp r0, r1 + bls _080C4146 + movs r0, 0x80 + lsls r0, 9 + adds r3, r0 +_080C4146: + ldr r1, _080C4194 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + mov r1, r8 + strh r1, [r0, 0x8] + lsrs r1, r3, 16 + strh r1, [r0, 0xA] + mov r2, r9 + ldrb r0, [r2, 0x14] + adds r0, 0x1 + strb r0, [r2, 0x14] + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 +_080C416A: + adds r4, 0x14 + adds r6, 0x60 + movs r0, 0x1 + add r8, r0 + mov r1, r8 + cmp r1, 0x3 + ble _080C4102 + b _080C4292 + .align 2, 0 +_080C417C: .4byte 0x02018018 +_080C4180: .4byte 0x0600bffe +_080C4184: .4byte 0x000060b3 +_080C4188: .4byte sub_80C42C0 +_080C418C: .4byte 0x0000ffff +_080C4190: .4byte 0x00007fff +_080C4194: .4byte gTasks +_080C4198: + movs r2, 0 + mov r8, r2 + ldr r0, _080C4220 @ =0x02018018 + mov r12, r0 + mov r9, r2 + movs r1, 0xC0 + str r1, [sp, 0x4] +_080C41A6: + mov r6, r9 + add r6, r12 + ldrb r1, [r6, 0x12] + ldrb r0, [r6, 0x10] + ldr r2, _080C4224 @ =0x000060a3 + cmp r0, 0 + beq _080C41B6 + adds r2, 0x2 +_080C41B6: + lsls r0, r1, 24 + asrs r0, 24 + cmp r7, r0 + bge _080C427E + adds r0, 0x13 + ldr r1, [sp, 0x4] + adds r0, r1, r0 + subs r0, r7 + lsls r0, 1 + ldr r1, _080C4228 @ =0x0600bffe + adds r0, r1 + strh r2, [r0] + ldr r0, _080C422C @ =sub_80C42C0 + movs r1, 0xA + bl CreateTask + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, [r6, 0xC] + lsls r0, 16 + ldrb r1, [r6, 0x12] + bl __udivsi3 + adds r1, r7, 0x1 + adds r3, r0, 0 + muls r3, r1 + ldr r0, _080C4230 @ =0x0000ffff + ands r0, r3 + ldr r1, _080C4234 @ =0x00007fff + cmp r0, r1 + bls _080C41FA + movs r2, 0x80 + lsls r2, 9 + adds r3, r2 +_080C41FA: + ldr r1, _080C4238 @ =gTasks + lsls r2, r5, 2 + adds r0, r2, r5 + lsls r0, 3 + adds r4, r0, r1 + mov r0, r8 + strh r0, [r4, 0x8] + ldrb r0, [r6, 0x10] + adds r6, r1, 0 + cmp r0, 0 + beq _080C423C + movs r0, 0x1 + strh r0, [r4, 0xC] + ldr r0, [sp] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + b _080C4246 + .align 2, 0 +_080C4220: .4byte 0x02018018 +_080C4224: .4byte 0x000060a3 +_080C4228: .4byte 0x0600bffe +_080C422C: .4byte sub_80C42C0 +_080C4230: .4byte 0x0000ffff +_080C4234: .4byte 0x00007fff +_080C4238: .4byte gTasks +_080C423C: + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 +_080C4246: + ldr r0, _080C4264 @ =0x02018018 + mov r1, r9 + adds r4, r1, r0 + ldrb r1, [r4, 0x10] + mov r12, r0 + cmp r1, 0 + beq _080C4268 + adds r0, r2, r5 + lsls r0, 3 + adds r0, r6 + lsrs r2, r3, 16 + ldr r1, [r4, 0x8] + subs r1, r2 + b _080C4274 + .align 2, 0 +_080C4264: .4byte 0x02018018 +_080C4268: + adds r0, r2, r5 + lsls r0, 3 + adds r0, r6 + lsrs r2, r3, 16 + ldr r1, [r4, 0x8] + adds r1, r2 +_080C4274: + strh r1, [r0, 0xA] + ldr r1, _080C42BC @ =0x02018000 + ldrb r0, [r1, 0x14] + adds r0, 0x1 + strb r0, [r1, 0x14] +_080C427E: + movs r2, 0x14 + add r9, r2 + ldr r0, [sp, 0x4] + adds r0, 0x60 + str r0, [sp, 0x4] + movs r1, 0x1 + add r8, r1 + mov r2, r8 + cmp r2, 0x3 + ble _080C41A6 +_080C4292: + ldr r0, [sp] + cmp r0, 0 + beq _080C429E + movs r0, 0x16 + bl PlaySE +_080C429E: + mov r1, r10 + cmp r1, 0 + beq _080C42AA + movs r0, 0x15 + bl PlaySE +_080C42AA: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C42BC: .4byte 0x02018000 + thumb_func_end sub_80C40D4 + + thumb_func_start sub_80C42C0 +sub_80C42C0: @ 80C42C0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + movs r6, 0 + mov r9, r6 + ldr r1, _080C4308 @ =gTasks + lsls r0, 2 + add r0, r12 + lsls r0, 3 + adds r0, r1 + ldrb r5, [r0, 0x8] + ldrh r7, [r0, 0xA] + ldrh r1, [r0, 0xC] + mov r8, r1 + movs r2, 0xC + ldrsh r0, [r0, r2] + cmp r0, 0 + beq _080C4310 + ldr r1, _080C430C @ =0x02018000 + lsls r2, r5, 1 + adds r0, r1, 0 + adds r0, 0xC + adds r0, r2, r0 + movs r3, 0 + ldrsh r0, [r0, r3] + mov r10, r1 + adds r4, r2, 0 + cmp r0, 0 + bgt _080C4328 + b _080C4326 + .align 2, 0 +_080C4308: .4byte gTasks +_080C430C: .4byte 0x02018000 +_080C4310: + ldr r1, _080C4350 @ =0x02018000 + lsls r2, r5, 1 + adds r0, r1, 0 + adds r0, 0xC + adds r0, r2, r0 + movs r3, 0 + ldrsh r0, [r0, r3] + mov r10, r1 + adds r4, r2, 0 + cmp r0, 0x57 + ble _080C4328 +_080C4326: + movs r6, 0x1 +_080C4328: + mov r0, r10 + adds r0, 0xC + adds r3, r4, r0 + ldrh r2, [r3] + movs r0, 0 + ldrsh r1, [r3, r0] + lsls r0, r7, 16 + asrs r0, 16 + cmp r1, r0 + bne _080C4340 + movs r1, 0x1 + mov r9, r1 +_080C4340: + mov r0, r9 + cmp r0, 0 + bne _080C4362 + cmp r6, 0 + beq _080C4354 + strh r7, [r3] + b _080C4362 + .align 2, 0 +_080C4350: .4byte 0x02018000 +_080C4354: + mov r1, r8 + cmp r1, 0 + beq _080C435E + subs r0, r2, 0x1 + b _080C4360 +_080C435E: + adds r0, r2, 0x1 +_080C4360: + strh r0, [r3] +_080C4362: + cmp r6, 0 + bne _080C43C8 + mov r2, r9 + cmp r2, 0 + bne _080C43CE + movs r2, 0 + ldr r0, _080C4388 @ =0x0201800c + adds r6, r4, r0 + adds r0, r4, r5 + lsls r5, r0, 5 +_080C4376: + movs r0, 0 + ldrsh r3, [r6, r0] + adds r0, r2, 0x1 + lsls r1, r0, 3 + adds r4, r0, 0 + cmp r3, r1 + blt _080C438C + movs r0, 0x8 + b _080C43A8 + .align 2, 0 +_080C4388: .4byte 0x0201800c +_080C438C: + lsls r0, r2, 3 + cmp r3, r0 + blt _080C43A6 + adds r0, r3, 0 + cmp r3, 0 + bge _080C439A + adds r0, r3, 0x7 +_080C439A: + asrs r0, 3 + lsls r0, 3 + subs r0, r3, r0 + lsls r0, 24 + lsrs r0, 24 + b _080C43A8 +_080C43A6: + movs r0, 0 +_080C43A8: + cmp r0, 0x3 + bhi _080C43B4 + ldr r3, _080C43B0 @ =0x0000504c + b _080C43B6 + .align 2, 0 +_080C43B0: .4byte 0x0000504c +_080C43B4: + ldr r3, _080C43EC @ =0x00005057 +_080C43B6: + adds r1, r0, r3 + adds r0, r5, r2 + lsls r0, 1 + ldr r2, _080C43F0 @ =0x0600e18e + adds r0, r2 + strh r1, [r0] + adds r2, r4, 0 + cmp r2, 0xA + ble _080C4376 +_080C43C8: + mov r3, r9 + cmp r3, 0 + beq _080C43DC +_080C43CE: + mov r1, r10 + ldrb r0, [r1, 0x14] + subs r0, 0x1 + strb r0, [r1, 0x14] + mov r0, r12 + bl DestroyTask +_080C43DC: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C43EC: .4byte 0x00005057 +_080C43F0: .4byte 0x0600e18e + thumb_func_end sub_80C42C0 + + thumb_func_start sub_80C43F4 +sub_80C43F4: @ 80C43F4 + push {r4,r5,lr} + ldr r0, _080C442C @ =gUnknown_02038694 + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080C4430 @ =gPlayerParty + adds r0, r1 + bl sub_80AE47C + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + cmp r5, 0 + beq _080C4422 + ldr r4, _080C4434 @ =gUnknown_0203869C + ldrb r0, [r4] + ldr r1, _080C4438 @ =gUnknown_0203869E + ldrb r1, [r1] + bl sub_80AE398 + ldrb r0, [r4] + bl sub_80AE82C +_080C4422: + ldr r0, _080C443C @ =gScriptResult + strh r5, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C442C: .4byte gUnknown_02038694 +_080C4430: .4byte gPlayerParty +_080C4434: .4byte gUnknown_0203869C +_080C4438: .4byte gUnknown_0203869E +_080C443C: .4byte gScriptResult + thumb_func_end sub_80C43F4 + + thumb_func_start sub_80C4440 +sub_80C4440: @ 80C4440 + push {r4,lr} + movs r4, 0 + ldr r0, _080C4464 @ =gUnknown_02038694 + ldrb r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080C4468 @ =gPlayerParty + adds r2, r1, r0 + ldr r0, _080C446C @ =gUnknown_0203869C + ldrh r0, [r0] + cmp r0, 0x4 + bhi _080C44B2 + lsls r0, 2 + ldr r1, _080C4470 @ =_080C4474 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C4464: .4byte gUnknown_02038694 +_080C4468: .4byte gPlayerParty +_080C446C: .4byte gUnknown_0203869C +_080C4470: .4byte _080C4474 + .align 2, 0 +_080C4474: + .4byte _080C4488 + .4byte _080C448E + .4byte _080C4494 + .4byte _080C449A + .4byte _080C44A0 +_080C4488: + adds r0, r2, 0 + movs r1, 0x32 + b _080C44A4 +_080C448E: + adds r0, r2, 0 + movs r1, 0x33 + b _080C44A4 +_080C4494: + adds r0, r2, 0 + movs r1, 0x34 + b _080C44A4 +_080C449A: + adds r0, r2, 0 + movs r1, 0x35 + b _080C44A4 +_080C44A0: + adds r0, r2, 0 + movs r1, 0x36 +_080C44A4: + bl GetMonData + ldr r1, _080C44BC @ =gUnknown_0203869E + ldrh r1, [r1] + cmp r0, r1 + bls _080C44B2 + movs r4, 0x1 +_080C44B2: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080C44BC: .4byte gUnknown_0203869E + thumb_func_end sub_80C4440 + + thumb_func_start sub_80C44C0 +sub_80C44C0: @ 80C44C0 + push {r4-r7,lr} + sub sp, 0x4 + ldr r1, _080C44E8 @ =gUnknown_02038690 + ldr r0, _080C44EC @ =gUnknown_02038695 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080C44D4 + b _080C465E +_080C44D4: + ldr r0, _080C44F0 @ =gUnknown_0203869C + ldrh r0, [r0] + cmp r0, 0x4 + bls _080C44DE + b _080C465E +_080C44DE: + lsls r0, 2 + ldr r1, _080C44F4 @ =_080C44F8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C44E8: .4byte gUnknown_02038690 +_080C44EC: .4byte gUnknown_02038695 +_080C44F0: .4byte gUnknown_0203869C +_080C44F4: .4byte _080C44F8 + .align 2, 0 +_080C44F8: + .4byte _080C450C + .4byte _080C4554 + .4byte _080C4598 + .4byte _080C45DC + .4byte _080C4624 +_080C450C: + ldr r6, _080C4548 @ =gUnknown_02038694 + ldrb r0, [r6] + movs r5, 0x64 + muls r0, r5 + ldr r4, _080C454C @ =gPlayerParty + adds r0, r4 + movs r1, 0x32 + bl GetMonData + lsls r0, 24 + lsrs r1, r0, 24 + mov r0, sp + strb r1, [r0] + ldr r0, _080C4550 @ =gUnknown_0203869E + ldrh r0, [r0] + cmp r1, r0 + bls _080C4530 + b _080C465E +_080C4530: + adds r0, r1, 0 + cmp r0, 0x3 + bls _080C4538 + b _080C465E +_080C4538: + adds r1, r0, 0x1 + mov r0, sp + strb r1, [r0] + ldrb r0, [r6] + muls r0, r5 + adds r0, r4 + movs r1, 0x32 + b _080C4610 + .align 2, 0 +_080C4548: .4byte gUnknown_02038694 +_080C454C: .4byte gPlayerParty +_080C4550: .4byte gUnknown_0203869E +_080C4554: + mov r4, sp + ldr r7, _080C458C @ =gUnknown_02038694 + ldrb r0, [r7] + movs r6, 0x64 + muls r0, r6 + ldr r5, _080C4590 @ =gPlayerParty + adds r0, r5 + movs r1, 0x33 + bl GetMonData + strb r0, [r4] + mov r0, sp + ldrb r2, [r0] + ldr r0, _080C4594 @ =gUnknown_0203869E + ldrh r0, [r0] + cmp r2, r0 + bhi _080C465E + cmp r2, 0x3 + bhi _080C465E + mov r1, sp + adds r0, r2, 0x1 + strb r0, [r1] + ldrb r0, [r7] + muls r0, r6 + adds r0, r5 + movs r1, 0x33 + b _080C4610 + .align 2, 0 +_080C458C: .4byte gUnknown_02038694 +_080C4590: .4byte gPlayerParty +_080C4594: .4byte gUnknown_0203869E +_080C4598: + mov r4, sp + ldr r7, _080C45D0 @ =gUnknown_02038694 + ldrb r0, [r7] + movs r6, 0x64 + muls r0, r6 + ldr r5, _080C45D4 @ =gPlayerParty + adds r0, r5 + movs r1, 0x34 + bl GetMonData + strb r0, [r4] + mov r0, sp + ldrb r2, [r0] + ldr r0, _080C45D8 @ =gUnknown_0203869E + ldrh r0, [r0] + cmp r2, r0 + bhi _080C465E + cmp r2, 0x3 + bhi _080C465E + mov r1, sp + adds r0, r2, 0x1 + strb r0, [r1] + ldrb r0, [r7] + muls r0, r6 + adds r0, r5 + movs r1, 0x34 + b _080C4610 + .align 2, 0 +_080C45D0: .4byte gUnknown_02038694 +_080C45D4: .4byte gPlayerParty +_080C45D8: .4byte gUnknown_0203869E +_080C45DC: + mov r4, sp + ldr r7, _080C4618 @ =gUnknown_02038694 + ldrb r0, [r7] + movs r6, 0x64 + muls r0, r6 + ldr r5, _080C461C @ =gPlayerParty + adds r0, r5 + movs r1, 0x35 + bl GetMonData + strb r0, [r4] + mov r0, sp + ldrb r2, [r0] + ldr r0, _080C4620 @ =gUnknown_0203869E + ldrh r0, [r0] + cmp r2, r0 + bhi _080C465E + cmp r2, 0x3 + bhi _080C465E + mov r1, sp + adds r0, r2, 0x1 + strb r0, [r1] + ldrb r0, [r7] + muls r0, r6 + adds r0, r5 + movs r1, 0x35 +_080C4610: + mov r2, sp + bl SetMonData + b _080C465E + .align 2, 0 +_080C4618: .4byte gUnknown_02038694 +_080C461C: .4byte gPlayerParty +_080C4620: .4byte gUnknown_0203869E +_080C4624: + mov r4, sp + ldr r7, _080C4668 @ =gUnknown_02038694 + ldrb r0, [r7] + movs r6, 0x64 + muls r0, r6 + ldr r5, _080C466C @ =gPlayerParty + adds r0, r5 + movs r1, 0x36 + bl GetMonData + strb r0, [r4] + mov r0, sp + ldrb r2, [r0] + ldr r0, _080C4670 @ =gUnknown_0203869E + ldrh r0, [r0] + cmp r2, r0 + bhi _080C465E + cmp r2, 0x3 + bhi _080C465E + mov r1, sp + adds r0, r2, 0x1 + strb r0, [r1] + ldrb r0, [r7] + muls r0, r6 + adds r0, r5 + movs r1, 0x36 + mov r2, sp + bl SetMonData +_080C465E: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C4668: .4byte gUnknown_02038694 +_080C466C: .4byte gPlayerParty +_080C4670: .4byte gUnknown_0203869E + thumb_func_end sub_80C44C0 + + thumb_func_start sub_80C4674 +sub_80C4674: @ 80C4674 + push {r4,lr} + adds r4, r0, 0 + bl StringCopy + ldrb r0, [r4] + cmp r0, 0xFC + bne _080C4690 + ldrb r0, [r4, 0x1] + cmp r0, 0x15 + bne _080C4690 + adds r0, r4, 0 + movs r1, 0x1 + bl ConvertInternationalString +_080C4690: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C4674 + + thumb_func_start sub_80C4698 +sub_80C4698: @ 80C4698 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + lsls r1, r4, 6 + ldr r0, _080C46E0 @ =gUnknown_02038572 + adds r1, r0 + adds r0, r5, 0 + bl StringCopy + ldr r0, _080C46E4 @ =gUnknown_0203869A + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080C46DA + ldr r0, _080C46E8 @ =gLinkPlayers + lsls r1, r4, 3 + subs r1, r4 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x1A] + cmp r0, 0x1 + bne _080C46DA + adds r0, r5, 0 + bl sub_80C86A0 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl ConvertInternationalString +_080C46DA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C46E0: .4byte gUnknown_02038572 +_080C46E4: .4byte gUnknown_0203869A +_080C46E8: .4byte gLinkPlayers + thumb_func_end sub_80C4698 + + thumb_func_start sub_80C46EC +sub_80C46EC: @ 80C46EC + push {lr} + ldr r0, _080C4710 @ =gUnknown_0203869A + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080C4720 + ldr r0, _080C4714 @ =gStringVar1 + ldr r1, _080C4718 @ =gUnknown_0202E8D0 + ldrh r2, [r1] + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + ldr r2, _080C471C @ =gLinkPlayers + 0x8 + adds r1, r2 + bl sub_80C4674 + b _080C4730 + .align 2, 0 +_080C4710: .4byte gUnknown_0203869A +_080C4714: .4byte gStringVar1 +_080C4718: .4byte gUnknown_0202E8D0 +_080C471C: .4byte gLinkPlayers + 0x8 +_080C4720: + ldr r0, _080C4734 @ =gStringVar1 + ldr r1, _080C4738 @ =gUnknown_0202E8D0 + ldrh r1, [r1] + lsls r1, 6 + ldr r2, _080C473C @ =gUnknown_0203857D + adds r1, r2 + bl sub_80C4674 +_080C4730: + pop {r0} + bx r0 + .align 2, 0 +_080C4734: .4byte gStringVar1 +_080C4738: .4byte gUnknown_0202E8D0 +_080C473C: .4byte gUnknown_0203857D + thumb_func_end sub_80C46EC + + thumb_func_start sub_80C4740 +sub_80C4740: @ 80C4740 + push {lr} + ldr r0, _080C4750 @ =gStringVar3 + ldr r1, _080C4754 @ =gUnknown_0202E8D0 + ldrb r1, [r1] + bl sub_80C4698 + pop {r0} + bx r0 + .align 2, 0 +_080C4750: .4byte gStringVar3 +_080C4754: .4byte gUnknown_0202E8D0 + thumb_func_end sub_80C4740 + + thumb_func_start sub_80C4758 +sub_80C4758: @ 80C4758 + push {r4-r6,lr} + movs r1, 0 + movs r2, 0 + ldr r5, _080C4794 @ =gUnknown_0202E8CC + ldr r4, _080C4798 @ =gUnknown_02038670 + ldr r0, _080C479C @ =gUnknown_0202E8D0 + ldrh r0, [r0] + lsls r0, 1 + adds r0, r4 + movs r6, 0 + ldrsh r3, [r0, r6] +_080C476E: + lsls r0, r1, 1 + adds r0, r4 + movs r6, 0 + ldrsh r0, [r0, r6] + cmp r3, r0 + bge _080C4780 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 +_080C4780: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x3 + bls _080C476E + strh r2, [r5] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C4794: .4byte gUnknown_0202E8CC +_080C4798: .4byte gUnknown_02038670 +_080C479C: .4byte gUnknown_0202E8D0 + thumb_func_end sub_80C4758 + + thumb_func_start sub_80C47A0 +sub_80C47A0: @ 80C47A0 + ldr r2, _080C47B4 @ =gUnknown_0202E8CC + ldr r1, _080C47B8 @ =gUnknown_02038670 + ldr r0, _080C47BC @ =gUnknown_0202E8D0 + ldrh r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2] + bx lr + .align 2, 0 +_080C47B4: .4byte gUnknown_0202E8CC +_080C47B8: .4byte gUnknown_02038670 +_080C47BC: .4byte gUnknown_0202E8D0 + thumb_func_end sub_80C47A0 + + thumb_func_start sub_80C47C0 +sub_80C47C0: @ 80C47C0 + push {lr} + movs r1, 0 + ldr r2, _080C47E8 @ =gUnknown_02038690 + ldrb r0, [r2] + ldr r3, _080C47EC @ =gUnknown_0202E8CE + cmp r0, 0 + beq _080C47E0 +_080C47CE: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x3 + bhi _080C47E0 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _080C47CE +_080C47E0: + strh r1, [r3] + pop {r0} + bx r0 + .align 2, 0 +_080C47E8: .4byte gUnknown_02038690 +_080C47EC: .4byte gUnknown_0202E8CE + thumb_func_end sub_80C47C0 + + thumb_func_start sub_80C47F0 +sub_80C47F0: @ 80C47F0 + push {r4,lr} + movs r2, 0 + ldr r3, _080C4830 @ =gUnknown_02038690 + ldrb r0, [r3] + ldr r1, _080C4834 @ =gUnknown_0203869A + ldr r4, _080C4838 @ =gStringVar3 + cmp r0, 0 + beq _080C4812 +_080C4800: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bhi _080C4812 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _080C4800 +_080C4812: + ldrb r1, [r1] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080C4840 + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + ldr r0, _080C483C @ =gLinkPlayers + 0x8 + adds r1, r0 + adds r0, r4, 0 + bl sub_80C4674 + b _080C484C + .align 2, 0 +_080C4830: .4byte gUnknown_02038690 +_080C4834: .4byte gUnknown_0203869A +_080C4838: .4byte gStringVar3 +_080C483C: .4byte gLinkPlayers + 0x8 +_080C4840: + lsls r1, r2, 6 + ldr r0, _080C4854 @ =gUnknown_0203857D + adds r1, r0 + adds r0, r4, 0 + bl sub_80C4674 +_080C484C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C4854: .4byte gUnknown_0203857D + thumb_func_end sub_80C47F0 + + thumb_func_start sub_80C4858 +sub_80C4858: @ 80C4858 + push {lr} + movs r1, 0 + ldr r2, _080C4884 @ =gUnknown_02038690 + ldrb r0, [r2] + ldr r3, _080C4888 @ =gStringVar1 + cmp r0, 0 + beq _080C4878 +_080C4866: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x3 + bhi _080C4878 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _080C4866 +_080C4878: + adds r0, r3, 0 + bl sub_80C4698 + pop {r0} + bx r0 + .align 2, 0 +_080C4884: .4byte gUnknown_02038690 +_080C4888: .4byte gStringVar1 + thumb_func_end sub_80C4858 + + thumb_func_start sub_80C488C +sub_80C488C: @ 80C488C + push {lr} + ldr r0, _080C4898 @ =sub_80AB47C + bl SetMainCallback2 + pop {r0} + bx r0 + .align 2, 0 +_080C4898: .4byte sub_80AB47C + thumb_func_end sub_80C488C + + thumb_func_start sub_80C489C +sub_80C489C: @ 80C489C + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080C48C0 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080C48BA + adds r0, r2, 0 + bl DestroyTask + ldr r0, _080C48C4 @ =sub_80C488C + bl SetMainCallback2 +_080C48BA: + pop {r0} + bx r0 + .align 2, 0 +_080C48C0: .4byte gPaletteFade +_080C48C4: .4byte sub_80C488C + thumb_func_end sub_80C489C + + thumb_func_start sub_80C48C8 +sub_80C48C8: @ 80C48C8 + push {lr} + sub sp, 0x4 + bl ScriptContext2_Enable + ldr r0, _080C48F0 @ =sub_80C489C + movs r1, 0xA + bl CreateTask + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080C48F0: .4byte sub_80C489C + thumb_func_end sub_80C48C8 + + thumb_func_start sub_80C48F4 +sub_80C48F4: @ 80C48F4 + ldr r2, _080C4908 @ =gUnknown_0202E8CC + ldr r1, _080C490C @ =gUnknown_02038570 + ldr r0, _080C4910 @ =gUnknown_0202E8D0 + ldrh r0, [r0] + lsls r0, 6 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2] + bx lr + .align 2, 0 +_080C4908: .4byte gUnknown_0202E8CC +_080C490C: .4byte gUnknown_02038570 +_080C4910: .4byte gUnknown_0202E8D0 + thumb_func_end sub_80C48F4 + + thumb_func_start sub_80C4914 +sub_80C4914: @ 80C4914 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080C4938 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080C4932 + adds r0, r2, 0 + bl DestroyTask + ldr r0, _080C493C @ =sub_80C2358 + bl SetMainCallback2 +_080C4932: + pop {r0} + bx r0 + .align 2, 0 +_080C4938: .4byte gPaletteFade +_080C493C: .4byte sub_80C2358 + thumb_func_end sub_80C4914 + + thumb_func_start sub_80C4940 +sub_80C4940: @ 80C4940 + push {lr} + sub sp, 0x4 + bl ScriptContext2_Enable + ldr r0, _080C4968 @ =sub_80C4914 + movs r1, 0xA + bl CreateTask + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080C4968: .4byte sub_80C4914 + thumb_func_end sub_80C4940 + + thumb_func_start sub_80C496C +sub_80C496C: @ 80C496C + ldr r0, _080C4978 @ =gUnknown_0202E8CC + ldr r1, _080C497C @ =gUnknown_02038695 + ldrb r1, [r1] + strh r1, [r0] + bx lr + .align 2, 0 +_080C4978: .4byte gUnknown_0202E8CC +_080C497C: .4byte gUnknown_02038695 + thumb_func_end sub_80C496C + + thumb_func_start sub_80C4980 +sub_80C4980: @ 80C4980 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + bl ScriptContext2_Enable + ldr r6, _080C49B8 @ =sub_80C8604 + adds r0, r6, 0 + movs r1, 0 + bl CreateTask + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r2, _080C49BC @ =sub_80C49C4 + adds r0, r4, 0 + adds r1, r6, 0 + bl SetTaskFuncWithFollowupFunc + ldr r1, _080C49C0 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + strh r5, [r0, 0x1A] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C49B8: .4byte sub_80C8604 +_080C49BC: .4byte sub_80C49C4 +_080C49C0: .4byte gTasks + thumb_func_end sub_80C4980 + + thumb_func_start sub_80C49C4 +sub_80C49C4: @ 80C49C4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080C49E4 @ =gUnknown_02038694 + ldrb r0, [r0] + bl sub_80AE098 + ldr r1, _080C49E8 @ =sub_80C8734 + ldr r2, _080C49EC @ =sub_80C49F0 + adds r0, r4, 0 + bl SetTaskFuncWithFollowupFunc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C49E4: .4byte gUnknown_02038694 +_080C49E8: .4byte sub_80C8734 +_080C49EC: .4byte sub_80C49F0 + thumb_func_end sub_80C49C4 + + thumb_func_start sub_80C49F0 +sub_80C49F0: @ 80C49F0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080C4A04 @ =sub_80C88AC + ldr r2, _080C4A08 @ =sub_80C4A0C + bl SetTaskFuncWithFollowupFunc + pop {r0} + bx r0 + .align 2, 0 +_080C4A04: .4byte sub_80C88AC +_080C4A08: .4byte sub_80C4A0C + thumb_func_end sub_80C49F0 + + thumb_func_start sub_80C4A0C +sub_80C4A0C: @ 80C4A0C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080C4A20 @ =sub_80C8E1C + ldr r2, _080C4A24 @ =sub_80C4A28 + bl SetTaskFuncWithFollowupFunc + pop {r0} + bx r0 + .align 2, 0 +_080C4A20: .4byte sub_80C8E1C +_080C4A24: .4byte sub_80C4A28 + thumb_func_end sub_80C4A0C + + thumb_func_start sub_80C4A28 +sub_80C4A28: @ 80C4A28 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080C4A3C @ =sub_80C8938 + ldr r2, _080C4A40 @ =sub_80C4A44 + bl SetTaskFuncWithFollowupFunc + pop {r0} + bx r0 + .align 2, 0 +_080C4A3C: .4byte sub_80C8938 +_080C4A40: .4byte sub_80C4A44 + thumb_func_end sub_80C4A28 + + thumb_func_start sub_80C4A44 +sub_80C4A44: @ 80C4A44 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + movs r3, 0 + ldr r0, _080C4AA0 @ =gUnknown_0202E8CC + mov r8, r0 + add r1, sp, 0x4 + mov r12, r1 + lsls r1, r5, 2 + adds r0, r1, r5 + lsls r4, r0, 3 + ldr r6, _080C4AA4 @ =gTasks + 0x8 + adds r7, r1, 0 +_080C4A64: + mov r0, sp + adds r2, r0, r3 + adds r1, r3, 0x1 + lsls r0, r1, 1 + adds r0, r4 + adds r0, r6 + ldrh r0, [r0] + strb r0, [r2] + lsls r1, 24 + lsrs r3, r1, 24 + cmp r3, 0x3 + bls _080C4A64 + movs r3, 0 + mov r2, sp +_080C4A80: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bhi _080C4A96 + mov r0, sp + adds r1, r0, r3 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + beq _080C4A80 +_080C4A96: + cmp r3, 0x4 + bne _080C4AA8 + movs r0, 0 + b _080C4AAA + .align 2, 0 +_080C4AA0: .4byte gUnknown_0202E8CC +_080C4AA4: .4byte gTasks + 0x8 +_080C4AA8: + movs r0, 0x1 +_080C4AAA: + mov r1, r8 + strh r0, [r1] + movs r3, 0 + mov r4, r12 + adds r0, r7, r5 + lsls r2, r0, 3 + ldr r6, _080C4AF8 @ =gTasks + 0x8 +_080C4AB8: + adds r1, r4, r3 + adds r0, r3, 0x5 + lsls r0, 1 + adds r0, r2 + adds r0, r6 + ldrh r0, [r0] + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _080C4AB8 + mov r0, r12 + bl sub_80C4B34 + ldr r1, _080C4AFC @ =gUnknown_0203869B + strb r0, [r1] + ldr r0, _080C4B00 @ =gUnknown_0203869C + ldrb r0, [r0] + bl sub_80AE82C + ldr r1, _080C4B04 @ =sub_80C8EBC + ldr r2, _080C4B08 @ =sub_80C4B0C + adds r0, r5, 0 + bl SetTaskFuncWithFollowupFunc + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C4AF8: .4byte gTasks + 0x8 +_080C4AFC: .4byte gUnknown_0203869B +_080C4B00: .4byte gUnknown_0203869C +_080C4B04: .4byte sub_80C8EBC +_080C4B08: .4byte sub_80C4B0C + thumb_func_end sub_80C4A44 + + thumb_func_start sub_80C4B0C +sub_80C4B0C: @ 80C4B0C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + bl sub_80B0F28 + ldr r1, _080C4B2C @ =sub_80C8F34 + ldr r2, _080C4B30 @ =sub_80C4B5C + adds r0, r4, 0 + bl SetTaskFuncWithFollowupFunc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C4B2C: .4byte sub_80C8F34 +_080C4B30: .4byte sub_80C4B5C + thumb_func_end sub_80C4B0C + + thumb_func_start sub_80C4B34 +sub_80C4B34: @ 80C4B34 + push {r4,lr} + adds r3, r0, 0 + movs r4, 0 + movs r2, 0x1 +_080C4B3C: + adds r0, r3, r4 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bcs _080C4B4C + lsls r0, r2, 24 + lsrs r4, r0, 24 +_080C4B4C: + adds r2, 0x1 + cmp r2, 0x3 + ble _080C4B3C + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80C4B34 + + thumb_func_start sub_80C4B5C +sub_80C4B5C: @ 80C4B5C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080C4B84 @ =gUnknown_0202E8CC + ldrh r0, [r0] + cmp r0, 0x1 + bne _080C4B90 + bl sub_8007ECC + lsls r0, 24 + cmp r0, 0 + beq _080C4B9E + ldr r0, _080C4B88 @ =gTasks + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080C4B8C @ =sub_80C4BA4 + str r0, [r1] + b _080C4B9E + .align 2, 0 +_080C4B84: .4byte gUnknown_0202E8CC +_080C4B88: .4byte gTasks +_080C4B8C: .4byte sub_80C4BA4 +_080C4B90: + adds r0, r4, 0 + bl DestroyTask + bl ScriptContext2_Disable + bl EnableBothScriptContexts +_080C4B9E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C4B5C + + thumb_func_start sub_80C4BA4 +sub_80C4BA4: @ 80C4BA4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_800832C + ldr r1, _080C4BC4 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080C4BC8 @ =sub_80C4BCC + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C4BC4: .4byte gTasks +_080C4BC8: .4byte sub_80C4BCC + thumb_func_end sub_80C4BA4 + + thumb_func_start sub_80C4BCC +sub_80C4BCC: @ 80C4BCC + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _080C4BEC @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + bne _080C4BE8 + adds r0, r1, 0 + bl DestroyTask + bl ScriptContext2_Disable + bl EnableBothScriptContexts +_080C4BE8: + pop {r0} + bx r0 + .align 2, 0 +_080C4BEC: .4byte gReceivedRemoteLinkPlayers + thumb_func_end sub_80C4BCC + + .align 2, 0 @ Don't pad with nop. |