.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_80FC4F4 sub_80FC4F4: @ 80FC4F4 push {r4,r5,lr} adds r2, r0, 0 lsls r4, r1, 16 lsrs r4, 16 ldr r5, =gDecompressionBuffer adds r0, r5, 0 adds r1, r2, 0 adds r2, r4, 0 bl memcpy bl bitmask_all_link_players_but_self lsls r0, 24 lsrs r0, 24 adds r1, r5, 0 adds r2, r4, 0 bl SendBlock lsls r0, 24 cmp r0, 0 bne _080FC528 movs r0, 0 b _080FC52A .pool _080FC528: movs r0, 0x1 _080FC52A: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_80FC4F4 thumb_func_start sub_80FC530 sub_80FC530: @ 80FC530 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 movs r4, 0x80 lsls r4, 17 lsls r4, r5 lsrs r4, 24 bl GetBlockReceivedStatus ands r4, r0 cmp r4, 0 beq _080FC552 adds r0, r5, 0 bl ResetBlockReceivedFlag movs r0, 0x1 b _080FC554 _080FC552: movs r0, 0 _080FC554: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_80FC530 thumb_func_start sub_80FC55C sub_80FC55C: @ 80FC55C push {r4,lr} bl GetBlockReceivedStatus adds r4, r0, 0 bl sub_800A9D8 lsls r4, 24 lsls r0, 24 cmp r4, r0 beq _080FC574 movs r0, 0 b _080FC57A _080FC574: bl ResetBlockReceivedFlags movs r0, 0x1 _080FC57A: pop {r4} pop {r1} bx r1 thumb_func_end sub_80FC55C thumb_func_start sub_80FC580 sub_80FC580: @ 80FC580 push {r4-r6,lr} lsls r0, 24 lsrs r2, r0, 24 movs r1, 0 ldr r5, =gTasks ldr r6, =sub_80FC5C0 ldr r4, =gBlockRecvBuffer movs r3, 0xFF _080FC590: lsls r0, r1, 8 adds r0, r4 strh r3, [r0] adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x3 bls _080FC590 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r0, r5 movs r1, 0 strh r1, [r0, 0x8] str r6, [r0] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_80FC580 thumb_func_start sub_80FC5C0 sub_80FC5C0: @ 80FC5C0 lsls r0, 24 lsrs r0, 24 ldr r2, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldr r0, =sub_80FC5DC str r0, [r1] bx lr .pool thumb_func_end sub_80FC5C0 thumb_func_start sub_80FC5DC sub_80FC5DC: @ 80FC5DC push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _080FC650 bl GetMultiplayerId ldr r1, =gContestPlayerMonIndex strb r0, [r1] bl GetLinkPlayerCount ldr r4, =gUnknown_02039F30 strb r0, [r4] ldr r1, =gIsLinkContest movs r0, 0x1 strb r0, [r1] ldr r0, =gWirelessCommType ldrb r0, [r0] cmp r0, 0x1 bne _080FC60C movs r0, 0x3 strb r0, [r1] _080FC60C: movs r3, 0 ldrb r2, [r4] cmp r3, r2 bge _080FC64A ldr r1, =gLinkPlayers ldrb r0, [r1] subs r0, 0x1 adds r6, r4, 0 cmp r0, 0x1 bls _080FC63A adds r4, r2, 0 adds r2, r1, 0 movs r5, 0xFF _080FC626: adds r2, 0x1C adds r3, 0x1 cmp r3, r4 bge _080FC64A ldrh r1, [r2] adds r0, r5, 0 ands r0, r1 subs r0, 0x1 cmp r0, 0x1 bhi _080FC626 _080FC63A: ldrb r6, [r6] cmp r3, r6 bge _080FC64A ldr r0, =gIsLinkContest ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] _080FC64A: adds r0, r7, 0 bl SwitchTaskToFollowupFunc _080FC650: pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80FC5DC thumb_func_start sub_80FC670 sub_80FC670: @ 80FC670 push {r4,lr} adds r4, r0, 0 ldr r0, =gIsLinkContest ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 bne _080FC698 movs r1, 0 ldrsh r0, [r4, r1] cmp r0, 0 beq _080FC6A0 cmp r0, 0x1 beq _080FC6AE bl sub_800A520 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080FC6B4 _080FC698: movs r0, 0x1 b _080FC6B6 .pool _080FC6A0: bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FC6B4 bl sub_800ADF8 _080FC6AE: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] _080FC6B4: movs r0, 0 _080FC6B6: pop {r4} pop {r1} bx r1 thumb_func_end sub_80FC670 thumb_func_start sub_80FC6BC sub_80FC6BC: @ 80FC6BC push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r7, r0, 24 lsls r6, r7, 2 adds r0, r6, r7 lsls r4, r0, 3 ldr r5, =gTasks + 0x8 adds r0, r4, r5 adds r0, 0x18 bl sub_80FC670 cmp r0, 0 bne _080FC6DC b _080FC7F4 _080FC6DC: adds r0, r5, 0 subs r0, 0x8 adds r4, r0 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x1 beq _080FC758 cmp r0, 0x1 bgt _080FC6F8 cmp r0, 0 beq _080FC6FE b _080FC7DC .pool _080FC6F8: cmp r0, 0xA beq _080FC7C0 b _080FC7DC _080FC6FE: bl GetMultiplayerId lsls r0, 24 cmp r0, 0 bne _080FC738 bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FC7F4 ldr r0, =gBlockSendBuffer ldr r1, =gContestPlayerMonIndex ldrb r1, [r1] lsls r1, 6 ldr r2, =gContestMons adds r1, r2 movs r2, 0x40 bl memcpy movs r0, 0xA strh r0, [r4, 0x8] b _080FC7F4 .pool _080FC738: ldr r0, =gBlockSendBuffer ldr r1, =gContestPlayerMonIndex ldrb r1, [r1] lsls r1, 6 ldr r2, =gContestMons adds r1, r2 movs r2, 0x40 bl memcpy b _080FC7D6 .pool _080FC758: bl sub_80FC55C lsls r0, 24 cmp r0, 0 beq _080FC7F4 movs r5, 0 ldr r0, =gUnknown_02039F30 mov r8, r6 ldrb r0, [r0] cmp r5, r0 bge _080FC798 ldr r6, =gLinkPlayers _080FC770: lsls r4, r5, 6 ldr r0, =gContestMons adds r4, r0 lsls r1, r5, 8 ldr r0, =gBlockRecvBuffer adds r1, r0 adds r0, r4, 0 movs r2, 0x40 bl memcpy ldrh r1, [r6, 0x1A] adds r0, r4, 0 bl sub_80DFA08 adds r6, 0x1C adds r5, 0x1 ldr r0, =gUnknown_02039F30 ldrb r0, [r0] cmp r5, r0 blt _080FC770 _080FC798: ldr r0, =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] b _080FC7F4 .pool _080FC7C0: ldrh r0, [r4, 0x1E] adds r0, 0x1 strh r0, [r4, 0x1E] lsls r0, 16 movs r1, 0x96 lsls r1, 17 cmp r0, r1 ble _080FC7F4 movs r0, 0x2 bl sub_800A4D8 _080FC7D6: movs r0, 0x1 strh r0, [r4, 0x8] b _080FC7F4 _080FC7DC: ldr r0, =gTasks lsls r1, r7, 2 adds r1, r7 lsls r1, 3 adds r1, r0 movs r0, 0 strh r0, [r1, 0x8] strh r0, [r1, 0x1E] strh r0, [r1, 0x20] adds r0, r7, 0 bl SwitchTaskToFollowupFunc _080FC7F4: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80FC6BC thumb_func_start sub_80FC804 sub_80FC804: @ 80FC804 push {r4,r5,lr} lsls r0, 24 lsrs r2, r0, 24 ldr r1, =gTasks lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r5, r0, r1 movs r1, 0x8 ldrsh r0, [r5, r1] cmp r0, 0 beq _080FC830 cmp r0, 0x1 beq _080FC858 movs r0, 0 strh r0, [r5, 0x8] adds r0, r2, 0 bl SwitchTaskToFollowupFunc b _080FC880 .pool _080FC830: bl GetMultiplayerId lsls r0, 24 cmp r0, 0 bne _080FC87A bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FC880 ldr r0, =gRngValue movs r1, 0x4 bl sub_80FC4F4 cmp r0, 0x1 bne _080FC880 b _080FC87A .pool _080FC858: movs r0, 0 bl sub_80FC530 lsls r0, 24 cmp r0, 0 beq _080FC880 ldr r0, =gRngValue ldr r4, =gBlockRecvBuffer adds r1, r4, 0 movs r2, 0x4 bl memcpy ldr r0, =gContestRngValue adds r1, r4, 0 movs r2, 0x4 bl memcpy _080FC87A: ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] _080FC880: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_80FC804 thumb_func_start sub_80FC894 sub_80FC894: @ 80FC894 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r6, r0, 24 lsls r0, r6, 2 mov r8, r0 adds r0, r6 lsls r5, r0, 3 ldr r7, =gTasks + 0x8 adds r0, r5, r7 adds r0, 0x18 bl sub_80FC670 cmp r0, 0 beq _080FC986 movs r1, 0x8 negs r1, r1 adds r1, r7 mov r9, r1 adds r4, r5, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x1 beq _080FC90C cmp r0, 0x1 bgt _080FC8D8 cmp r0, 0 beq _080FC8DE b _080FC96E .pool _080FC8D8: cmp r0, 0xA beq _080FC954 b _080FC96E _080FC8DE: ldr r1, =gBlockSendBuffer ldrh r0, [r4, 0x1A] strb r0, [r1] bl GetMultiplayerId lsls r0, 24 cmp r0, 0 bne _080FC904 bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FC986 movs r0, 0xA strh r0, [r4, 0x8] b _080FC986 .pool _080FC904: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080FC986 _080FC90C: bl sub_80FC55C lsls r0, 24 cmp r0, 0 beq _080FC986 movs r3, 0 ldr r1, =gUnknown_02039F30 ldrb r0, [r1] cmp r3, r0 bge _080FC93A ldr r4, =gBlockRecvBuffer adds r0, r7, 0x2 adds r2, r5, r0 movs r5, 0x80 lsls r5, 1 _080FC92A: ldrh r0, [r4] strh r0, [r2] adds r4, r5 adds r2, 0x2 adds r3, 0x1 ldrb r0, [r1] cmp r3, r0 blt _080FC92A _080FC93A: mov r0, r8 adds r1, r0, r6 lsls r1, 3 add r1, r9 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] b _080FC986 .pool _080FC954: ldrh r0, [r4, 0x1E] adds r0, 0x1 strh r0, [r4, 0x1E] lsls r0, 16 asrs r0, 16 cmp r0, 0xA ble _080FC986 movs r0, 0x2 bl sub_800A4D8 movs r0, 0x1 strh r0, [r4, 0x8] b _080FC986 _080FC96E: ldr r0, =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 movs r0, 0 strh r0, [r1, 0x8] strh r0, [r1, 0x1E] strh r0, [r1, 0x20] adds r0, r6, 0 bl SwitchTaskToFollowupFunc _080FC986: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80FC894 thumb_func_start sub_80FC998 sub_80FC998: @ 80FC998 push {r4,lr} lsls r0, 24 lsrs r2, r0, 24 ldr r1, =gTasks lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0 beq _080FC9C4 cmp r0, 0x1 beq _080FC9E0 movs r0, 0 strh r0, [r4, 0x8] adds r0, r2, 0 bl SwitchTaskToFollowupFunc b _080FC9F0 .pool _080FC9C4: bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FC9F0 ldr r0, =gContestPlayerMonIndex movs r1, 0x1 bl sub_80FC4F4 cmp r0, 0x1 bne _080FC9F0 b _080FC9EA .pool _080FC9E0: bl sub_80FC55C lsls r0, 24 cmp r0, 0 beq _080FC9F0 _080FC9EA: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _080FC9F0: pop {r4} pop {r0} bx r0 thumb_func_end sub_80FC998 thumb_func_start sub_80FC9F8 sub_80FC9F8: @ 80FC9F8 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r5, r0, 24 ldr r0, =gTasks mov r8, r0 lsls r7, r5, 2 adds r0, r7, r5 lsls r0, 3 mov r1, r8 adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0 beq _080FCA30 cmp r0, 0x1 beq _080FCA68 movs r0, 0 strh r0, [r4, 0x8] adds r0, r5, 0 bl SwitchTaskToFollowupFunc b _080FCAB2 .pool _080FCA30: bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FCAB2 ldr r0, =gContestResources ldr r2, [r0] ldr r0, =gContestPlayerMonIndex ldrb r0, [r0] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 ldr r0, [r2, 0x4] adds r0, r1 adds r0, 0x6 movs r1, 0x2 bl sub_80FC4F4 cmp r0, 0x1 bne _080FCAB2 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080FCAB2 .pool _080FCA68: bl sub_80FC55C lsls r0, 24 cmp r0, 0 beq _080FCAB2 movs r2, 0 ldr r6, =gUnknown_02039F30 mov r9, r8 mov r12, r7 ldrb r0, [r6] cmp r2, r0 bge _080FCAA4 ldr r1, =gContestResources mov r8, r1 ldr r4, =gBlockRecvBuffer movs r3, 0 movs r7, 0x80 lsls r7, 1 _080FCA8C: mov r1, r8 ldr r0, [r1] ldr r0, [r0, 0x4] adds r0, r3, r0 ldrh r1, [r4] strh r1, [r0, 0x6] adds r4, r7 adds r3, 0x1C adds r2, 0x1 ldrb r0, [r6] cmp r2, r0 blt _080FCA8C _080FCAA4: mov r0, r12 adds r1, r0, r5 lsls r1, 3 add r1, r9 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] _080FCAB2: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80FC9F8 thumb_func_start sub_80FCACC sub_80FCACC: @ 80FCACC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r2, r0, r1 movs r3, 0x8 ldrsh r0, [r2, r3] adds r3, r1, 0 cmp r0, 0xB bls _080FCAE8 b _080FCC78 _080FCAE8: lsls r0, 2 ldr r1, =_080FCAFC adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _080FCAFC: .4byte _080FCB2C .4byte _080FCB44 .4byte _080FCB6C .4byte _080FCB90 .4byte _080FCBA4 .4byte _080FCB6C .4byte _080FCBCC .4byte _080FCBE0 .4byte _080FCB6C .4byte _080FCC08 .4byte _080FCC38 .4byte _080FCB6C _080FCB2C: bl sub_800A520 lsls r0, 24 cmp r0, 0 bne _080FCB38 b _080FCC82 _080FCB38: ldr r0, =gUnknown_02039F08 movs r1, 0x8 b _080FCC16 .pool _080FCB44: bl sub_80FC55C lsls r0, 24 cmp r0, 0 bne _080FCB50 b _080FCC82 _080FCB50: ldr r0, =gUnknown_02039F08 ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x8 b _080FCC50 .pool _080FCB6C: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r2, r0, r3 ldrh r0, [r2, 0xA] adds r1, r0, 0x1 strh r1, [r2, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0xA bgt _080FCB84 b _080FCC82 _080FCB84: movs r0, 0 strh r0, [r2, 0xA] ldrh r0, [r2, 0x8] adds r0, 0x1 strh r0, [r2, 0x8] b _080FCC82 _080FCB90: bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FCC82 ldr r0, =gUnknown_02039F10 movs r1, 0x8 b _080FCC16 .pool _080FCBA4: bl sub_80FC55C lsls r0, 24 cmp r0, 0 beq _080FCC82 ldr r0, =gUnknown_02039F10 ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x8 b _080FCC50 .pool _080FCBCC: bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FCC82 ldr r0, =gUnknown_02039F18 movs r1, 0x8 b _080FCC16 .pool _080FCBE0: bl sub_80FC55C lsls r0, 24 cmp r0, 0 beq _080FCC82 ldr r0, =gUnknown_02039F18 ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x8 b _080FCC50 .pool _080FCC08: bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FCC82 ldr r0, =gContestFinalStandings movs r1, 0x4 _080FCC16: bl sub_80FC4F4 cmp r0, 0x1 bne _080FCC82 ldr r0, =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] b _080FCC82 .pool _080FCC38: bl sub_80FC55C lsls r0, 24 cmp r0, 0 beq _080FCC82 ldr r0, =gContestFinalStandings ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x4 _080FCC50: bl memcpy ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0x8] adds r1, 0x1 strh r1, [r0, 0x8] b _080FCC82 .pool _080FCC78: movs r0, 0 strh r0, [r2, 0x8] adds r0, r4, 0 bl SwitchTaskToFollowupFunc _080FCC82: pop {r4} pop {r0} bx r0 thumb_func_end sub_80FCACC thumb_func_start sub_80FCC88 sub_80FCC88: @ 80FCC88 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r2, r0, r1 movs r3, 0x8 ldrsh r0, [r2, r3] adds r3, r1, 0 cmp r0, 0xB bls _080FCCA4 b _080FCE38 _080FCCA4: lsls r0, 2 ldr r1, =_080FCCB8 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _080FCCB8: .4byte _080FCCE8 .4byte _080FCD04 .4byte _080FCD30 .4byte _080FCD54 .4byte _080FCD6C .4byte _080FCD30 .4byte _080FCD98 .4byte _080FCDB0 .4byte _080FCD30 .4byte _080FCDC8 .4byte _080FCDF8 .4byte _080FCD30 _080FCCE8: bl sub_800A520 lsls r0, 24 cmp r0, 0 bne _080FCCF4 b _080FCE42 _080FCCF4: ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x4] movs r1, 0x70 b _080FCDD6 .pool _080FCD04: bl sub_80FC55C lsls r0, 24 cmp r0, 0 bne _080FCD10 b _080FCE42 _080FCD10: ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x4] ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x70 b _080FCE10 .pool _080FCD30: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r2, r0, r3 ldrh r0, [r2, 0xA] adds r1, r0, 0x1 strh r1, [r2, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0xA bgt _080FCD48 b _080FCE42 _080FCD48: movs r0, 0 strh r0, [r2, 0xA] ldrh r0, [r2, 0x8] adds r0, 0x1 strh r0, [r2, 0x8] b _080FCE42 _080FCD54: bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FCE42 ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] movs r1, 0x14 b _080FCDD6 .pool _080FCD6C: bl sub_80FC55C lsls r0, 24 cmp r0, 0 beq _080FCE42 ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x8] ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x14 b _080FCE10 .pool _080FCD98: bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FCE42 ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x10] b _080FCDD4 .pool _080FCDB0: bl sub_80FC55C lsls r0, 24 cmp r0, 0 beq _080FCE42 ldr r0, =gContestResources ldr r0, [r0] ldr r0, [r0, 0x10] b _080FCE04 .pool _080FCDC8: bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FCE42 ldr r0, =gUnknown_02039F26 _080FCDD4: movs r1, 0x4 _080FCDD6: bl sub_80FC4F4 cmp r0, 0x1 bne _080FCE42 ldr r0, =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] b _080FCE42 .pool _080FCDF8: bl sub_80FC55C lsls r0, 24 cmp r0, 0 beq _080FCE42 ldr r0, =gUnknown_02039F26 _080FCE04: ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x4 _080FCE10: bl memcpy ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0x8] adds r1, 0x1 strh r1, [r0, 0x8] b _080FCE42 .pool _080FCE38: movs r0, 0 strh r0, [r2, 0x8] adds r0, r4, 0 bl SwitchTaskToFollowupFunc _080FCE42: pop {r4} pop {r0} bx r0 thumb_func_end sub_80FCC88 thumb_func_start sub_80FCE48 sub_80FCE48: @ 80FCE48 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r6, r0, 24 lsls r0, r6, 2 mov r8, r0 adds r0, r6 lsls r5, r0, 3 ldr r7, =gTasks + 0x8 adds r0, r5, r7 adds r0, 0x18 bl sub_80FC670 cmp r0, 0 beq _080FCF2E movs r1, 0x8 negs r1, r1 adds r1, r7 mov r9, r1 adds r4, r5, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x1 beq _080FCEC0 cmp r0, 0x1 bgt _080FCE8C cmp r0, 0 beq _080FCE92 b _080FCF16 .pool _080FCE8C: cmp r0, 0xA beq _080FCEFC b _080FCF16 _080FCE92: ldr r1, =gBlockSendBuffer movs r0, 0x6E strb r0, [r1] bl GetMultiplayerId lsls r0, 24 cmp r0, 0 bne _080FCEB8 bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FCF2E movs r0, 0xA strh r0, [r4, 0x8] b _080FCF2E .pool _080FCEB8: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080FCF2E _080FCEC0: bl sub_80FC55C lsls r0, 24 cmp r0, 0 beq _080FCF2E mov r1, r8 mov r8, r9 ldr r4, =gBlockRecvBuffer adds r0, r7, 0 adds r0, 0xA adds r2, r5, r0 movs r5, 0x80 lsls r5, 1 movs r3, 0x3 _080FCEDC: ldrh r0, [r4] strh r0, [r2] adds r4, r5 adds r2, 0x2 subs r3, 0x1 cmp r3, 0 bge _080FCEDC adds r1, r6 lsls r1, 3 add r1, r8 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] b _080FCF2E .pool _080FCEFC: ldrh r0, [r4, 0x1E] adds r0, 0x1 strh r0, [r4, 0x1E] lsls r0, 16 asrs r0, 16 cmp r0, 0xA ble _080FCF2E movs r0, 0x2 bl sub_800A4D8 movs r0, 0x1 strh r0, [r4, 0x8] b _080FCF2E _080FCF16: ldr r0, =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 movs r0, 0 strh r0, [r1, 0x8] strh r0, [r1, 0x1E] strh r0, [r1, 0x20] adds r0, r6, 0 bl SwitchTaskToFollowupFunc _080FCF2E: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80FCE48 thumb_func_start sub_80FCF40 sub_80FCF40: @ 80FCF40 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r4, r0, 3 ldr r6, =gTasks + 0x8 adds r0, r4, r6 adds r0, 0x18 bl sub_80FC670 cmp r0, 0 beq _080FCFBE adds r0, r6, 0 subs r0, 0x8 adds r4, r0 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0 beq _080FCF80 cmp r0, 0x1 beq _080FCF9C movs r0, 0 strh r0, [r4, 0x8] strh r0, [r4, 0x20] adds r0, r5, 0 bl SwitchTaskToFollowupFunc b _080FCFBE .pool _080FCF80: bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FCFBE ldr r0, =gContestMonConditions movs r1, 0x8 bl sub_80FC4F4 cmp r0, 0x1 bne _080FCFBE b _080FCFB8 .pool _080FCF9C: bl sub_80FC55C lsls r0, 24 cmp r0, 0 beq _080FCFBE ldr r0, =gContestMonConditions ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x8 bl memcpy _080FCFB8: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _080FCFBE: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_80FCF40 thumb_func_start sub_80FCFD0 sub_80FCFD0: @ 80FCFD0 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r4, r0, 3 ldr r6, =gTasks + 0x8 adds r0, r4, r6 adds r0, 0x18 bl sub_80FC670 cmp r0, 0 beq _080FD04E adds r0, r6, 0 subs r0, 0x8 adds r4, r0 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0 beq _080FD010 cmp r0, 0x1 beq _080FD02C movs r0, 0 strh r0, [r4, 0x8] strh r0, [r4, 0x20] adds r0, r5, 0 bl SwitchTaskToFollowupFunc b _080FD04E .pool _080FD010: bl sub_800A520 lsls r0, 24 cmp r0, 0 beq _080FD04E ldr r0, =gUnknown_02039F26 movs r1, 0x4 bl sub_80FC4F4 cmp r0, 0x1 bne _080FD04E b _080FD048 .pool _080FD02C: bl sub_80FC55C lsls r0, 24 cmp r0, 0 beq _080FD04E ldr r0, =gUnknown_02039F26 ldr r1, =gUnknown_02039F2B ldrb r1, [r1] lsls r1, 8 ldr r2, =gBlockRecvBuffer adds r1, r2 movs r2, 0x4 bl memcpy _080FD048: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _080FD04E: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_80FCFD0 .align 2, 0 @ Don't pad with nop.