diff options
Diffstat (limited to 'asm/link_rfu_4.s')
-rw-r--r-- | asm/link_rfu_4.s | 2071 |
1 files changed, 2071 insertions, 0 deletions
diff --git a/asm/link_rfu_4.s b/asm/link_rfu_4.s new file mode 100644 index 000000000..7d3d3ca7a --- /dev/null +++ b/asm/link_rfu_4.s @@ -0,0 +1,2071 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80FC478 +sub_80FC478: @ 80FC478 + push {r4,r5,lr} + adds r3, r0, 0 + movs r0, 0 + movs r4, 0 + movs r5, 0x46 +_080FC482: + adds r2, r0, 0x1 + movs r1, 0x45 + muls r0, r5 + adds r0, r3 + adds r0, 0x45 +_080FC48C: + strb r4, [r0] + subs r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _080FC48C + adds r0, r2, 0 + cmp r0, 0x13 + ble _080FC482 + movs r1, 0 + ldr r2, _080FC4C8 @ =0x00000579 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + movs r2, 0xAF + lsls r2, 3 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _080FC4CC @ =0x0000057a + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _080FC4D0 @ =0x0000057b + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FC4C8: .4byte 0x00000579 +_080FC4CC: .4byte 0x0000057a +_080FC4D0: .4byte 0x0000057b + thumb_func_end sub_80FC478 + + thumb_func_start sub_80FC4D4 +sub_80FC4D4: @ 80FC4D4 + push {r4,lr} + adds r3, r0, 0 + movs r1, 0 + movs r4, 0 +_080FC4DC: + lsls r0, r1, 3 + adds r2, r1, 0x1 + subs r0, r1 + movs r1, 0xD + lsls r0, 1 + adds r0, r3 + adds r0, 0xD +_080FC4EA: + strb r4, [r0] + subs r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _080FC4EA + adds r1, r2, 0 + cmp r1, 0x27 + ble _080FC4DC + movs r1, 0 + ldr r2, _080FC524 @ =0x00000231 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + movs r2, 0x8C + lsls r2, 2 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _080FC528 @ =0x00000232 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _080FC52C @ =0x00000233 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FC524: .4byte 0x00000231 +_080FC528: .4byte 0x00000232 +_080FC52C: .4byte 0x00000233 + thumb_func_end sub_80FC4D4 + + thumb_func_start sub_80FC530 +sub_80FC530: @ 80FC530 + push {r4,lr} + adds r3, r0, 0 + movs r1, 0 + movs r4, 0 +_080FC538: + lsls r0, r1, 8 + adds r2, r1, 0x1 + movs r1, 0xFF + adds r0, r3 + adds r0, 0xFF +_080FC542: + strb r4, [r0] + subs r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _080FC542 + adds r1, r2, 0 + cmp r1, 0x1 + ble _080FC538 + movs r1, 0 + ldr r2, _080FC57C @ =0x00000201 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + movs r2, 0x80 + lsls r2, 2 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _080FC580 @ =0x00000202 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _080FC584 @ =0x00000203 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FC57C: .4byte 0x00000201 +_080FC580: .4byte 0x00000202 +_080FC584: .4byte 0x00000203 + thumb_func_end sub_80FC530 + + thumb_func_start sub_80FC588 +sub_80FC588: @ 80FC588 + push {r4-r7,lr} + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, _080FC620 @ =0x0000057a + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0x13 + bhi _080FC628 + ldr r0, _080FC624 @ =0x04000208 + ldrh r1, [r0] + adds r7, r1, 0 + movs r1, 0 + strh r1, [r0] + movs r3, 0 + movs r2, 0 +_080FC5A6: + adds r1, r6, r2 + ldrb r0, [r1] + cmp r0, 0 + bne _080FC5BA + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _080FC5BA + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 +_080FC5BA: + adds r2, 0xE + cmp r2, 0x45 + ble _080FC5A6 + cmp r3, 0x5 + beq _080FC618 + movs r2, 0 + movs r0, 0xAF + lsls r0, 3 + adds r3, r5, r0 + movs r4, 0x46 +_080FC5CE: + ldrb r0, [r3] + adds r1, r0, 0 + muls r1, r4 + adds r1, r2, r1 + adds r1, r5, r1 + adds r0, r6, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r2, 0x1 + cmp r2, 0x45 + ble _080FC5CE + movs r1, 0xAF + lsls r1, 3 + adds r4, r5, r1 + ldrb r0, [r4] + adds r0, 0x1 + ldrb r1, [r4] + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0x14 + bl __umodsi3 + ldrb r1, [r4] + strb r0, [r4] + ldr r0, _080FC620 @ =0x0000057a + adds r1, r5, r0 + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r1, 0 + adds r0, r6, 0 + adds r0, 0x45 +_080FC610: + strb r1, [r0] + subs r0, 0x1 + cmp r0, r6 + bge _080FC610 +_080FC618: + ldr r0, _080FC624 @ =0x04000208 + strh r7, [r0] + b _080FC632 + .align 2, 0 +_080FC620: .4byte 0x0000057a +_080FC624: .4byte 0x04000208 +_080FC628: + ldr r1, _080FC638 @ =0x0000057b + adds r0, r5, r1 + ldrb r1, [r0] + movs r1, 0x1 + strb r1, [r0] +_080FC632: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FC638: .4byte 0x0000057b + thumb_func_end sub_80FC588 + + thumb_func_start sub_80FC63C +sub_80FC63C: @ 80FC63C + push {r4-r7,lr} + adds r6, r0, 0 + adds r5, r1, 0 + ldr r1, _080FC6CC @ =0x00000232 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, 0x27 + bhi _080FC6D4 + ldr r1, _080FC6D0 @ =0x04000208 + ldrh r0, [r1] + adds r7, r0, 0 + movs r0, 0 + strh r0, [r1] + movs r2, 0 + ldrb r0, [r5] + cmp r0, 0 + bne _080FC66C +_080FC65E: + adds r2, 0x1 + cmp r2, 0xD + bgt _080FC66C + adds r0, r5, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _080FC65E +_080FC66C: + cmp r2, 0xE + beq _080FC6C4 + movs r2, 0 + movs r0, 0x8C + lsls r0, 2 + adds r3, r6, r0 +_080FC678: + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, r2, r0 + adds r0, r6, r0 + adds r1, r5, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0xD + ble _080FC678 + movs r1, 0x8C + lsls r1, 2 + adds r4, r6, r1 + ldrb r0, [r4] + adds r0, 0x1 + ldrb r1, [r4] + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0x28 + bl __umodsi3 + ldrb r1, [r4] + strb r0, [r4] + ldr r0, _080FC6CC @ =0x00000232 + adds r1, r6, r0 + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r1, 0 + adds r0, r5, 0 + adds r0, 0xD +_080FC6BC: + strb r1, [r0] + subs r0, 0x1 + cmp r0, r5 + bge _080FC6BC +_080FC6C4: + ldr r0, _080FC6D0 @ =0x04000208 + strh r7, [r0] + b _080FC6DE + .align 2, 0 +_080FC6CC: .4byte 0x00000232 +_080FC6D0: .4byte 0x04000208 +_080FC6D4: + ldr r1, _080FC6E4 @ =0x00000233 + adds r0, r6, r1 + ldrb r1, [r0] + movs r1, 0x1 + strb r1, [r0] +_080FC6DE: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FC6E4: .4byte 0x00000233 + thumb_func_end sub_80FC63C + + thumb_func_start sub_80FC6E8 +sub_80FC6E8: @ 80FC6E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + adds r3, r1, 0 + ldr r1, _080FC730 @ =0x04000208 + ldrh r0, [r1] + mov r8, r0 + movs r0, 0 + strh r0, [r1] + movs r1, 0xAF + lsls r1, 3 + adds r0, r5, r1 + ldr r7, _080FC734 @ =0x00000579 + adds r4, r5, r7 + ldrb r1, [r0] + ldrb r0, [r4] + cmp r1, r0 + beq _080FC718 + ldr r1, _080FC738 @ =0x0000057b + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080FC73C +_080FC718: + movs r1, 0 + adds r0, r3, 0 + adds r0, 0x45 +_080FC71E: + strb r1, [r0] + subs r0, 0x1 + cmp r0, r3 + bge _080FC71E + ldr r0, _080FC730 @ =0x04000208 + mov r7, r8 + strh r7, [r0] + movs r0, 0 + b _080FC784 + .align 2, 0 +_080FC730: .4byte 0x04000208 +_080FC734: .4byte 0x00000579 +_080FC738: .4byte 0x0000057b +_080FC73C: + movs r2, 0 + movs r6, 0x46 +_080FC740: + adds r1, r3, r2 + ldrb r0, [r4] + adds r7, r0, 0 + muls r7, r6 + adds r0, r7, 0 + adds r0, r2, r0 + adds r0, r5, r0 + ldrb r0, [r0] + strb r0, [r1] + adds r2, 0x1 + cmp r2, 0x45 + ble _080FC740 + ldr r0, _080FC790 @ =0x00000579 + adds r4, r5, r0 + ldrb r0, [r4] + adds r0, 0x1 + ldrb r1, [r4] + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0x14 + bl __umodsi3 + ldrb r1, [r4] + strb r0, [r4] + ldr r7, _080FC794 @ =0x0000057a + adds r1, r5, r7 + ldrb r0, [r1] + subs r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + ldr r0, _080FC798 @ =0x04000208 + mov r1, r8 + strh r1, [r0] + movs r0, 0x1 +_080FC784: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080FC790: .4byte 0x00000579 +_080FC794: .4byte 0x0000057a +_080FC798: .4byte 0x04000208 + thumb_func_end sub_80FC6E8 + + thumb_func_start sub_80FC79C +sub_80FC79C: @ 80FC79C + push {r4-r7,lr} + adds r5, r0, 0 + adds r6, r1, 0 + movs r1, 0x8C + lsls r1, 2 + adds r0, r5, r1 + adds r1, 0x1 + adds r4, r5, r1 + ldrb r1, [r0] + ldrb r0, [r4] + cmp r1, r0 + beq _080FC7C0 + ldr r1, _080FC7C4 @ =0x00000233 + adds r0, r5, r1 + ldrb r0, [r0] + adds r2, r0, 0 + cmp r2, 0 + beq _080FC7C8 +_080FC7C0: + movs r0, 0 + b _080FC814 + .align 2, 0 +_080FC7C4: .4byte 0x00000233 +_080FC7C8: + ldr r1, _080FC81C @ =0x04000208 + ldrh r0, [r1] + adds r7, r0, 0 + strh r2, [r1] + movs r3, 0 +_080FC7D2: + adds r2, r6, r3 + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, r3, r0 + adds r0, r5, r0 + ldrb r0, [r0] + strb r0, [r2] + adds r3, 0x1 + cmp r3, 0xD + ble _080FC7D2 + ldr r0, _080FC820 @ =0x00000231 + adds r4, r5, r0 + ldrb r0, [r4] + adds r0, 0x1 + ldrb r1, [r4] + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0x28 + bl __umodsi3 + ldrb r1, [r4] + strb r0, [r4] + ldr r0, _080FC824 @ =0x00000232 + adds r1, r5, r0 + ldrb r0, [r1] + subs r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + ldr r0, _080FC81C @ =0x04000208 + strh r7, [r0] + movs r0, 0x1 +_080FC814: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080FC81C: .4byte 0x04000208 +_080FC820: .4byte 0x00000231 +_080FC824: .4byte 0x00000232 + thumb_func_end sub_80FC79C + + thumb_func_start sub_80FC828 +sub_80FC828: @ 80FC828 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _080FC83E + adds r0, r2, 0 + movs r1, 0 + bl sub_80FC888 + b _080FC880 +_080FC83E: + movs r3, 0 +_080FC840: + ldrb r1, [r2, 0x1C] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, r3, r0 + adds r0, r2, r0 + adds r1, r4, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r3, 0x1 + cmp r3, 0xD + ble _080FC840 + ldrb r0, [r2, 0x1C] + adds r0, 0x1 + ldrb r1, [r2, 0x1C] + strb r0, [r2, 0x1C] + ldrb r1, [r2, 0x1C] + movs r0, 0x1 + ands r0, r1 + ldrb r1, [r2, 0x1C] + strb r0, [r2, 0x1C] + ldrb r0, [r2, 0x1E] + cmp r0, 0x1 + bhi _080FC87A + ldrb r0, [r2, 0x1E] + adds r0, 0x1 + ldrb r1, [r2, 0x1E] + strb r0, [r2, 0x1E] + b _080FC880 +_080FC87A: + ldrb r0, [r2, 0x1C] + ldrb r1, [r2, 0x1D] + strb r0, [r2, 0x1D] +_080FC880: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FC828 + + thumb_func_start sub_80FC888 +sub_80FC888: @ 80FC888 + push {r4,r5,lr} + adds r3, r0, 0 + adds r5, r1, 0 + ldrb r0, [r3, 0x1E] + cmp r0, 0 + bne _080FC898 + movs r0, 0 + b _080FC8D2 +_080FC898: + cmp r5, 0 + beq _080FC8B6 + movs r4, 0 +_080FC89E: + adds r2, r5, r4 + ldrb r1, [r3, 0x1D] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, r4, r0 + adds r0, r3, r0 + ldrb r0, [r0] + strb r0, [r2] + adds r4, 0x1 + cmp r4, 0xD + ble _080FC89E +_080FC8B6: + ldrb r0, [r3, 0x1D] + adds r0, 0x1 + ldrb r1, [r3, 0x1D] + strb r0, [r3, 0x1D] + ldrb r1, [r3, 0x1D] + movs r0, 0x1 + ands r0, r1 + ldrb r1, [r3, 0x1D] + strb r0, [r3, 0x1D] + ldrb r0, [r3, 0x1E] + subs r0, 0x1 + ldrb r1, [r3, 0x1E] + strb r0, [r3, 0x1E] + movs r0, 0x1 +_080FC8D2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80FC888 + + thumb_func_start sub_80FC8D8 +sub_80FC8D8: @ 80FC8D8 + push {r4,r5,lr} + adds r3, r0, 0 + adds r5, r1, 0 + ldr r1, _080FC92C @ =0x00000202 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bhi _080FC930 + movs r2, 0 + movs r0, 0x80 + lsls r0, 2 + adds r4, r3, r0 +_080FC8F0: + ldrb r0, [r4] + lsls r0, 8 + adds r0, r2, r0 + adds r0, r3, r0 + adds r1, r5, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0xFF + ble _080FC8F0 + movs r0, 0x80 + lsls r0, 2 + adds r1, r3, r0 + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + ldrb r2, [r1] + movs r0, 0x1 + ands r0, r2 + ldrb r2, [r1] + strb r0, [r1] + ldr r0, _080FC92C @ =0x00000202 + adds r1, r3, r0 + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + b _080FC93A + .align 2, 0 +_080FC92C: .4byte 0x00000202 +_080FC930: + ldr r1, _080FC940 @ =0x00000203 + adds r0, r3, r1 + ldrb r1, [r0] + movs r1, 0x1 + strb r1, [r0] +_080FC93A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FC940: .4byte 0x00000203 + thumb_func_end sub_80FC8D8 + + thumb_func_start sub_80FC944 +sub_80FC944: @ 80FC944 + push {r4,r5,lr} + adds r3, r0, 0 + adds r5, r1, 0 + movs r1, 0x80 + lsls r1, 2 + adds r0, r3, r1 + adds r1, 0x1 + adds r4, r3, r1 + ldrb r1, [r0] + ldrb r0, [r4] + cmp r1, r0 + beq _080FC966 + ldr r1, _080FC96C @ =0x00000203 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080FC970 +_080FC966: + movs r0, 0 + b _080FC9AA + .align 2, 0 +_080FC96C: .4byte 0x00000203 +_080FC970: + movs r2, 0 +_080FC972: + adds r0, r5, r2 + ldrb r1, [r4] + lsls r1, 8 + adds r1, r2, r1 + adds r1, r3, r1 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0xFF + ble _080FC972 + ldr r0, _080FC9B0 @ =0x00000201 + adds r1, r3, r0 + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + ldrb r2, [r1] + movs r0, 0x1 + ands r0, r2 + ldrb r2, [r1] + strb r0, [r1] + ldr r0, _080FC9B4 @ =0x00000202 + adds r1, r3, r0 + ldrb r0, [r1] + subs r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, 0x1 +_080FC9AA: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080FC9B0: .4byte 0x00000201 +_080FC9B4: .4byte 0x00000202 + thumb_func_end sub_80FC944 + + thumb_func_start sub_80FC9B8 +sub_80FC9B8: @ 80FC9B8 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r1, 0 + movs r5, 0 + cmp r1, 0x1 + beq _080FC9F6 + cmp r1, 0x1 + bgt _080FC9D2 + cmp r1, 0 + beq _080FC9DC + b _080FCA6A +_080FC9D2: + cmp r0, 0x2 + beq _080FCA16 + cmp r0, 0x3 + beq _080FCA36 + b _080FCA6A +_080FC9DC: + movs r4, 0 +_080FC9DE: + adds r0, r6, r4 + adds r1, r4, 0x1 + strb r1, [r0] + lsls r0, r5, 16 + asrs r0, 16 + adds r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 + adds r4, r1, 0 + cmp r4, 0xC7 + ble _080FC9DE + b _080FCA30 +_080FC9F6: + movs r4, 0 + adds r2, r6, 0 + adds r2, 0xC8 +_080FC9FC: + adds r0, r6, r4 + adds r1, r4, 0x1 + strb r1, [r0] + lsls r0, r5, 16 + asrs r0, 16 + adds r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 + adds r4, r1, 0 + cmp r4, 0x63 + ble _080FC9FC + strh r5, [r2] + b _080FCA6A +_080FCA16: + movs r4, 0 +_080FCA18: + bl Random + lsls r0, 24 + lsrs r0, 24 + adds r1, r6, r4 + strb r0, [r1] + adds r0, r5, r0 + lsls r0, 16 + lsrs r5, r0, 16 + adds r4, 0x1 + cmp r4, 0xC7 + ble _080FCA18 +_080FCA30: + adds r0, r6, r4 + strh r5, [r0] + b _080FCA6A +_080FCA36: + movs r4, 0 + ldr r3, _080FCA70 @ =gUnknown_3002018 + ldrb r1, [r3] + ldrb r0, [r3] + adds r7, r0, 0x1 + adds r2, r1, 0x1 + movs r0, 0xFF + mov r12, r0 +_080FCA46: + adds r0, r6, r4 + adds r1, r4, 0x1 + strb r2, [r0] + adds r0, r4, r7 + mov r4, r12 + ands r0, r4 + adds r0, r5, r0 + lsls r0, 16 + lsrs r5, r0, 16 + adds r2, 0x1 + adds r4, r1, 0 + cmp r1, 0xC7 + ble _080FCA46 + adds r0, r6, r1 + strh r5, [r0] + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] +_080FCA6A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FCA70: .4byte gUnknown_3002018 + thumb_func_end sub_80FC9B8 + + thumb_func_start sub_80FCA74 +sub_80FCA74: @ 80FCA74 + push {r4,r5,lr} + adds r4, r0, 0 + movs r3, 0 + ldrb r0, [r1] + cmp r0, 0xFF + beq _080FCA98 + ldr r5, _080FCAA4 @ =gUnknown_843F104 + adds r2, r1, 0 +_080FCA84: + adds r1, r4, r3 + ldrb r0, [r2] + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r2, 0x1 + adds r3, 0x1 + ldrb r0, [r2] + cmp r0, 0xFF + bne _080FCA84 +_080FCA98: + adds r1, r4, r3 + movs r0, 0 + strb r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FCAA4: .4byte gUnknown_843F104 + thumb_func_end sub_80FCA74 + + thumb_func_start sub_80FCAA8 +sub_80FCAA8: @ 80FCAA8 + push {r4,r5,lr} + adds r4, r0, 0 + movs r3, 0 + ldrb r0, [r1] + cmp r0, 0 + beq _080FCACC + ldr r5, _080FCAD8 @ =gUnknown_843F004 + adds r2, r1, 0 +_080FCAB8: + adds r1, r4, r3 + ldrb r0, [r2] + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r2, 0x1 + adds r3, 0x1 + ldrb r0, [r2] + cmp r0, 0 + bne _080FCAB8 +_080FCACC: + adds r1, r4, r3 + movs r0, 0xFF + strb r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FCAD8: .4byte gUnknown_843F004 + thumb_func_end sub_80FCAA8 + + thumb_func_start sub_80FCADC +sub_80FCADC: @ 80FCADC + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + ldr r0, _080FCB04 @ =gRfuLinkStatus + ldr r4, [r0] + ldrb r2, [r4, 0x2] + ldrb r1, [r4] + adds r7, r0, 0 + cmp r1, 0x1 + bne _080FCB32 + movs r3, 0 + ands r1, r2 + cmp r1, 0 + beq _080FCB0E + cmp r5, 0x1 + bne _080FCB08 + ldrb r0, [r4, 0xA] + b _080FCB4C + .align 2, 0 +_080FCB04: .4byte gRfuLinkStatus +_080FCB08: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_080FCB0E: + lsrs r2, 1 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bhi _080FCB4A + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + beq _080FCB0E + adds r0, r6, 0x1 + cmp r5, r0 + bne _080FCB08 +_080FCB28: + ldr r0, [r7] + adds r0, 0xA + adds r0, r3 + ldrb r0, [r0] + b _080FCB4C +_080FCB32: + movs r3, 0 + movs r1, 0x1 +_080FCB36: + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080FCB28 + lsrs r2, 1 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _080FCB36 +_080FCB4A: + movs r0, 0 +_080FCB4C: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80FCADC + + thumb_func_start sub_80FCB54 +sub_80FCB54: @ 80FCB54 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + movs r4, 0 + ldr r0, _080FCC30 @ =gSaveBlock2Ptr + mov r8, r0 + adds r6, r7, 0x2 + ldr r0, [r0] + adds r5, r0, 0 + adds r5, 0xA +_080FCB72: + adds r0, r6, r4 + adds r1, r5, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0x1 + ble _080FCB72 + movs r4, 0 + lsls r2, 7 + mov r12, r2 + adds r1, r7, 0x4 +_080FCB88: + adds r0, r1, r4 + strb r3, [r0] + asrs r3, 8 + adds r4, 0x1 + cmp r4, 0x3 + ble _080FCB88 + mov r1, r8 + ldr r0, [r1] + ldrb r0, [r0, 0x8] + movs r6, 0x1 + movs r1, 0x1 + ands r1, r0 + ldrb r2, [r7, 0xB] + movs r5, 0x2 + negs r5, r5 + adds r0, r5, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, 0xB] + movs r4, 0x7F + mov r1, r9 + ands r1, r4 + ldrb r2, [r7, 0xA] + movs r0, 0x80 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + ands r0, r4 + mov r1, r12 + orrs r0, r1 + strb r0, [r7, 0xA] + ldrb r0, [r7] + movs r1, 0x10 + negs r1, r1 + ands r1, r0 + movs r0, 0x2 + orrs r1, r0 + ldrb r2, [r7, 0x1] + movs r0, 0x3D + negs r0, r0 + ands r0, r2 + .ifdef FIRERED + movs r2, 0x10 @ VERSION_FIRE_RED << 2 + .else + .ifdef LEAFGREEN + movs r2, 0x14 @ VERSION_LEAF_GREEN << 2 + .endif + .endif + orrs r0, r2 + strb r0, [r7, 0x1] + movs r0, 0x11 + negs r0, r0 + ands r1, r0 + subs r0, 0x10 + ands r1, r0 + subs r0, 0x20 + ands r1, r0 + strb r1, [r7] + ldr r0, _080FCC34 @ =0x00000844 + bl FlagGet + lsls r0, 7 + ldrb r1, [r7] + ands r4, r1 + orrs r4, r0 + strb r4, [r7] + bl IsNationalPokedexEnabled + ands r0, r6 + ldrb r1, [r7, 0x1] + ands r5, r1 + orrs r5, r0 + strb r5, [r7, 0x1] + ldr r0, _080FCC38 @ =0x0000082c + bl FlagGet + ands r6, r0 + lsls r6, 1 + ldrb r1, [r7, 0x1] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + orrs r0, r6 + strb r0, [r7, 0x1] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FCC30: .4byte gSaveBlock2Ptr +_080FCC34: .4byte 0x00000844 +_080FCC38: .4byte 0x0000082c + thumb_func_end sub_80FCB54 + + thumb_func_start sub_80FCC3C +sub_80FCC3C: @ 80FCC3C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + mov r8, r1 + lsls r2, 24 + lsrs r5, r2, 24 + ldr r0, _080FCC90 @ =gUnknown_3005E10 + ldrb r0, [r0, 0x6] + cmp r0, 0x1 + bne _080FCC98 + movs r0, 0x1 + mov r9, r0 + ldr r6, _080FCC94 @ =gRfuLinkStatus + ldr r0, [r6] + lsls r4, r5, 5 + adds r0, r4 + ldrh r0, [r0, 0x18] + bl sub_80FA44C + cmp r0, 0 + beq _080FCC78 + ldr r1, [r6] + ldrb r0, [r1, 0x7] + asrs r0, r5 + mov r2, r9 + ands r0, r2 + cmp r0, 0 + bne _080FCCB0 +_080FCC78: + adds r0, r7, 0 + movs r1, 0 + movs r2, 0xD + bl memset + mov r0, r8 + movs r1, 0 + movs r2, 0x8 + bl memset + b _080FCCE4 + .align 2, 0 +_080FCC90: .4byte gUnknown_3005E10 +_080FCC94: .4byte gRfuLinkStatus +_080FCC98: + movs r0, 0 + mov r9, r0 + ldr r6, _080FCCCC @ =gRfuLinkStatus + ldr r0, [r6] + lsls r4, r5, 5 + adds r0, r4 + ldrh r0, [r0, 0x18] + bl sub_80FA44C + cmp r0, 0 + beq _080FCCD0 + ldr r1, [r6] +_080FCCB0: + adds r1, r4, r1 + adds r1, 0x1A + adds r0, r7, 0 + movs r2, 0xD + bl memcpy + ldr r1, [r6] + adds r1, r4, r1 + adds r1, 0x29 + mov r0, r8 + movs r2, 0x8 + bl memcpy + b _080FCCE4 + .align 2, 0 +_080FCCCC: .4byte gRfuLinkStatus +_080FCCD0: + adds r0, r7, 0 + movs r1, 0 + movs r2, 0xD + bl memset + mov r0, r8 + movs r1, 0 + movs r2, 0x8 + bl memset +_080FCCE4: + mov r0, r9 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80FCC3C + + thumb_func_start sub_80FCCF4 +sub_80FCCF4: @ 80FCCF4 + push {r4-r7,lr} + adds r3, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + movs r7, 0 + ldr r6, _080FCD2C @ =gRfuLinkStatus + ldr r0, [r6] + lsrs r4, r2, 19 + adds r2, r0, r4 + ldrh r1, [r2, 0x18] + ldr r0, _080FCD30 @ =0x00007f7d + cmp r1, r0 + bne _080FCD34 + adds r1, r2, 0 + adds r1, 0x1A + adds r0, r3, 0 + movs r2, 0xD + bl memcpy + ldr r1, [r6] + adds r1, r4, r1 + adds r1, 0x29 + adds r0, r5, 0 + movs r2, 0x8 + bl memcpy + movs r7, 0x1 + b _080FCD48 + .align 2, 0 +_080FCD2C: .4byte gRfuLinkStatus +_080FCD30: .4byte 0x00007f7d +_080FCD34: + adds r0, r3, 0 + movs r1, 0 + movs r2, 0xD + bl memset + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x8 + bl memset +_080FCD48: + adds r0, r7, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80FCCF4 + + thumb_func_start sub_80FCD50 +sub_80FCD50: @ 80FCD50 + push {r4,lr} + adds r4, r1, 0 + ldr r1, _080FCD6C @ =gUnknown_3005440 + movs r2, 0xD + bl memcpy + ldr r1, _080FCD70 @ =gUnknown_3005E00 + adds r0, r4, 0 + movs r2, 0x8 + bl memcpy + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FCD6C: .4byte gUnknown_3005440 +_080FCD70: .4byte gUnknown_3005E00 + thumb_func_end sub_80FCD50 + + thumb_func_start CreateWirelessStatusIndicatorSprite +CreateWirelessStatusIndicatorSprite: @ 80FCD74 + push {r4,r5,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 24 + lsrs r2, r1, 24 + cmp r3, 0 + bne _080FCD8A + cmp r2, 0 + bne _080FCD8A + movs r3, 0xE7 + movs r2, 0x8 +_080FCD8A: + ldr r0, _080FCDCC @ =gRfuLinkStatus + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x1 + bne _080FCDE4 + ldr r0, _080FCDD0 @ =gUnknown_843F284 + adds r1, r3, 0 + movs r3, 0 + bl CreateSprite + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080FCDD4 @ =gSprites + lsls r4, r5, 4 + adds r4, r5 + lsls r4, 2 + adds r4, r0 + ldr r0, _080FCDD8 @ =0x00001234 + strh r0, [r4, 0x3C] + ldr r0, _080FCDDC @ =gUnknown_843F274 + ldrh r0, [r0, 0x6] + bl GetSpriteTileStartByTag + strh r0, [r4, 0x3A] + adds r4, 0x3E + ldrb r0, [r4] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + ldr r0, _080FCDE0 @ =gUnknown_203ACE4 + strb r5, [r0] + b _080FCE2A + .align 2, 0 +_080FCDCC: .4byte gRfuLinkStatus +_080FCDD0: .4byte gUnknown_843F284 +_080FCDD4: .4byte gSprites +_080FCDD8: .4byte 0x00001234 +_080FCDDC: .4byte gUnknown_843F274 +_080FCDE0: .4byte gUnknown_203ACE4 +_080FCDE4: + ldr r0, _080FCE30 @ =gUnknown_843F284 + adds r1, r3, 0 + movs r3, 0 + bl CreateSprite + ldr r4, _080FCE34 @ =gUnknown_203ACE4 + strb r0, [r4] + ldr r5, _080FCE38 @ =gSprites + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080FCE3C @ =0x00001234 + strh r1, [r0, 0x3C] + ldr r0, _080FCE40 @ =gUnknown_843F274 + ldrh r0, [r0, 0x6] + bl GetSpriteTileStartByTag + ldrb r2, [r4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + strh r0, [r1, 0x3A] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_080FCE2A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FCE30: .4byte gUnknown_843F284 +_080FCE34: .4byte gUnknown_203ACE4 +_080FCE38: .4byte gSprites +_080FCE3C: .4byte 0x00001234 +_080FCE40: .4byte gUnknown_843F274 + thumb_func_end CreateWirelessStatusIndicatorSprite + + thumb_func_start DestroyWirelessStatusIndicatorSprite +DestroyWirelessStatusIndicatorSprite: @ 80FCE44 + push {r4,lr} + ldr r4, _080FCE90 @ =gSprites + ldr r3, _080FCE94 @ =gUnknown_203ACE4 + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r4 + movs r0, 0x3C + ldrsh r1, [r2, r0] + ldr r0, _080FCE98 @ =0x00001234 + cmp r1, r0 + bne _080FCE8A + movs r0, 0 + strh r0, [r2, 0x3C] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl DestroySprite + ldr r3, _080FCE9C @ =gMain + movs r0, 0x84 + lsls r0, 3 + adds r3, r0 + ldr r0, _080FCEA0 @ =gDummyOamData + ldr r1, [r0] + ldr r2, [r0, 0x4] + str r1, [r3] + str r2, [r3, 0x4] + ldr r1, _080FCEA4 @ =0x070003e8 + movs r2, 0x4 + bl CpuSet +_080FCE8A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FCE90: .4byte gSprites +_080FCE94: .4byte gUnknown_203ACE4 +_080FCE98: .4byte 0x00001234 +_080FCE9C: .4byte gMain +_080FCEA0: .4byte gDummyOamData +_080FCEA4: .4byte 0x070003e8 + thumb_func_end DestroyWirelessStatusIndicatorSprite + + thumb_func_start LoadWirelessStatusIndicatorSpriteGfx +LoadWirelessStatusIndicatorSpriteGfx: @ 80FCEA8 + push {r4,lr} + ldr r4, _080FCED4 @ =gUnknown_843F274 + ldrh r0, [r4, 0x6] + bl GetSpriteTileStartByTag + lsls r0, 16 + ldr r1, _080FCED8 @ =0xffff0000 + cmp r0, r1 + bne _080FCEC0 + adds r0, r4, 0 + bl LoadCompressedSpriteSheet +_080FCEC0: + ldr r0, _080FCEDC @ =gUnknown_843F27C + bl LoadSpritePalette + ldr r1, _080FCEE0 @ =gUnknown_203ACE4 + movs r0, 0xFF + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FCED4: .4byte gUnknown_843F274 +_080FCED8: .4byte 0xffff0000 +_080FCEDC: .4byte gUnknown_843F27C +_080FCEE0: .4byte gUnknown_203ACE4 + thumb_func_end LoadWirelessStatusIndicatorSpriteGfx + + thumb_func_start sub_80FCEE4 +sub_80FCEE4: @ 80FCEE4 + push {r4,lr} + ldr r1, _080FCF04 @ =gRfuLinkStatus + ldr r0, [r1] + ldrb r2, [r0, 0x2] + movs r3, 0 + movs r4, 0x1 +_080FCEF0: + adds r0, r2, 0 + ands r0, r4 + cmp r0, 0 + beq _080FCF08 + ldr r0, [r1] + adds r0, 0xA + adds r0, r3 + ldrb r0, [r0] + b _080FCF16 + .align 2, 0 +_080FCF04: .4byte gRfuLinkStatus +_080FCF08: + lsrs r2, 1 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _080FCEF0 + movs r0, 0 +_080FCF16: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80FCEE4 + + thumb_func_start sub_80FCF1C +sub_80FCF1C: @ 80FCF1C + push {lr} + adds r2, r0, 0 + movs r3, 0x32 + ldrsh r0, [r2, r3] + cmp r0, r1 + beq _080FCF30 + movs r0, 0 + strh r1, [r2, 0x32] + strh r0, [r2, 0x34] + strh r0, [r2, 0x36] +_080FCF30: + pop {r0} + bx r0 + thumb_func_end sub_80FCF1C + + thumb_func_start sub_80FCF34 +sub_80FCF34: @ 80FCF34 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r1, _080FCF78 @ =gUnknown_203ACE4 + ldrb r0, [r1] + cmp r0, 0xFF + bne _080FCF44 + b _080FD106 +_080FCF44: + ldr r2, _080FCF7C @ =gSprites + adds r1, r0, 0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r2 + movs r0, 0x3C + ldrsh r1, [r2, r0] + ldr r0, _080FCF80 @ =0x00001234 + cmp r1, r0 + beq _080FCF5C + b _080FD106 +_080FCF5C: + adds r6, r2, 0 + movs r5, 0xFF + movs r4, 0 + ldr r0, _080FCF84 @ =gRfuLinkStatus + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x1 + bne _080FCFB6 + adds r7, r6, 0 + adds r7, 0x28 + movs r1, 0x29 + adds r1, r6 + mov r8, r1 + b _080FCFA6 + .align 2, 0 +_080FCF78: .4byte gUnknown_203ACE4 +_080FCF7C: .4byte gSprites +_080FCF80: .4byte 0x00001234 +_080FCF84: .4byte gRfuLinkStatus +_080FCF88: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80FCADC + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + bcc _080FCFA6 + adds r0, r4, 0 + bl sub_80FCADC + lsls r0, 24 + lsrs r5, r0, 24 +_080FCFA6: + bl GetLinkPlayerCount + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r4, r0 + blt _080FCF88 + b _080FCFC8 +_080FCFB6: + bl sub_80FCEE4 + lsls r0, 24 + lsrs r5, r0, 24 + adds r7, r6, 0 + adds r7, 0x28 + movs r2, 0x29 + adds r2, r6 + mov r8, r2 +_080FCFC8: + bl sub_80FC1B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080FCFD8 + movs r0, 0x4 + b _080FD006 +_080FCFD8: + cmp r5, 0x18 + bhi _080FCFE0 + movs r0, 0x3 + b _080FD006 +_080FCFE0: + adds r0, r5, 0 + subs r0, 0x19 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x65 + bhi _080FCFF0 + movs r0, 0x2 + b _080FD006 +_080FCFF0: + adds r0, r5, 0 + subs r0, 0x7F + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x65 + bhi _080FD000 + movs r0, 0x1 + b _080FD006 +_080FD000: + cmp r5, 0xE4 + bls _080FD008 + movs r0, 0 +_080FD006: + strh r0, [r6, 0x2E] +_080FD008: + movs r3, 0x2E + ldrsh r1, [r6, r3] + movs r2, 0x30 + ldrsh r0, [r6, r2] + cmp r1, r0 + beq _080FD01E + adds r0, r6, 0 + bl sub_80FCF1C + ldrh r0, [r6, 0x2E] + strh r0, [r6, 0x30] +_080FD01E: + movs r0, 0x32 + ldrsh r1, [r6, r0] + ldr r2, [r6, 0x8] + lsls r1, 2 + adds r1, r2 + movs r3, 0x36 + ldrsh r0, [r6, r3] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r0, 10 + lsrs r0, 26 + movs r3, 0x34 + ldrsh r1, [r6, r3] + cmp r0, r1 + bge _080FD06C + ldrh r0, [r6, 0x36] + adds r0, 0x1 + movs r3, 0 + strh r0, [r6, 0x36] + strh r3, [r6, 0x34] + movs r1, 0x32 + ldrsh r0, [r6, r1] + lsls r0, 2 + adds r0, r2 + movs r2, 0x36 + ldrsh r1, [r6, r2] + ldr r0, [r0] + lsls r1, 2 + adds r1, r0 + movs r0, 0 + ldrsh r1, [r1, r0] + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + bne _080FD072 + strh r3, [r6, 0x36] + b _080FD072 +_080FD06C: + ldrh r0, [r6, 0x34] + adds r0, 0x1 + strh r0, [r6, 0x34] +_080FD072: + ldr r4, _080FD110 @ =gMain + movs r1, 0x84 + lsls r1, 3 + adds r0, r4, r1 + ldr r1, _080FD114 @ =gUnknown_843F204 + ldr r2, [r1, 0x4] + ldr r1, [r1] + str r1, [r0] + str r2, [r0, 0x4] + movs r3, 0x20 + ldrsh r2, [r6, r3] + movs r1, 0 + ldrsb r1, [r7, r1] + adds r2, r1 + ldr r1, _080FD118 @ =0x00000422 + adds r5, r4, r1 + ldr r3, _080FD11C @ =0x000001ff + adds r1, r3, 0 + ands r2, r1 + ldrh r3, [r5] + ldr r1, _080FD120 @ =0xfffffe00 + ands r1, r3 + orrs r1, r2 + strh r1, [r5] + ldrh r1, [r6, 0x22] + mov r2, r8 + ldrb r2, [r2] + adds r1, r2 + strb r1, [r0] + ldrb r2, [r6, 0x5] + ldr r3, _080FD124 @ =0x00000425 + adds r5, r4, r3 + lsrs r2, 4 + lsls r2, 4 + ldrb r3, [r5] + movs r1, 0xF + ands r1, r3 + orrs r1, r2 + strb r1, [r5] + movs r1, 0x32 + ldrsh r2, [r6, r1] + ldr r1, [r6, 0x8] + lsls r2, 2 + adds r2, r1 + movs r3, 0x36 + ldrsh r1, [r6, r3] + ldr r2, [r2] + lsls r1, 2 + adds r1, r2 + ldrh r2, [r1] + ldrh r6, [r6, 0x3A] + adds r2, r6 + ldr r1, _080FD128 @ =0x00000424 + adds r4, r1 + ldr r3, _080FD12C @ =0x000003ff + adds r1, r3, 0 + ands r2, r1 + ldrh r3, [r4] + ldr r1, _080FD130 @ =0xfffffc00 + ands r1, r3 + orrs r1, r2 + strh r1, [r4] + ldr r1, _080FD134 @ =0x070003e8 + movs r2, 0x4 + bl CpuSet + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080FD106 + bl DestroyWirelessStatusIndicatorSprite +_080FD106: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FD110: .4byte gMain +_080FD114: .4byte gUnknown_843F204 +_080FD118: .4byte 0x00000422 +_080FD11C: .4byte 0x000001ff +_080FD120: .4byte 0xfffffe00 +_080FD124: .4byte 0x00000425 +_080FD128: .4byte 0x00000424 +_080FD12C: .4byte 0x000003ff +_080FD130: .4byte 0xfffffc00 +_080FD134: .4byte 0x070003e8 + thumb_func_end sub_80FCF34 + + thumb_func_start sub_80FD138 +sub_80FD138: @ 80FD138 + push {r4,r5,lr} + adds r4, r0, 0 + str r1, [r4] + movs r3, 0 + ldrb r0, [r2] + cmp r0, 0xFF + beq _080FD15C + adds r5, r4, 0x4 +_080FD148: + adds r1, r5, r3 + ldrb r0, [r2] + strb r0, [r1] + adds r2, 0x1 + adds r3, 0x1 + cmp r3, 0x6 + bgt _080FD15C + ldrb r0, [r2] + cmp r0, 0xFF + bne _080FD148 +_080FD15C: + adds r0, r4, 0x4 + adds r0, r3 + movs r1, 0xFF + strb r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80FD138 + + thumb_func_start sub_80FD16C +sub_80FD16C: @ 80FD16C + push {lr} + movs r2, 0 + movs r1, 0x7 +_080FD172: + strb r2, [r0] + adds r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _080FD172 + pop {r0} + bx r0 + thumb_func_end sub_80FD16C + + thumb_func_start sub_80FD180 +sub_80FD180: @ 80FD180 + push {lr} + adds r1, r0, 0 + movs r2, 0 +_080FD186: + ldrb r0, [r1] + adds r1, 0x1 + cmp r0, 0 + beq _080FD192 + movs r0, 0 + b _080FD19A +_080FD192: + adds r2, 0x1 + cmp r2, 0x7 + ble _080FD186 + movs r0, 0x1 +_080FD19A: + pop {r1} + bx r1 + thumb_func_end sub_80FD180 + + thumb_func_start sub_80FD1A0 +sub_80FD1A0: @ 80FD1A0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + ldr r0, _080FD1C4 @ =gWirelessCommType + ldrb r0, [r0] + cmp r0, 0 + bne _080FD1B6 + b _080FD318 +_080FD1B6: + movs r0, 0xF0 + bl AllocZeroed + str r0, [sp, 0x14] + movs r4, 0 + b _080FD22C + .align 2, 0 +_080FD1C4: .4byte gWirelessCommType +_080FD1C8: + lsls r2, r4, 2 + mov r0, sp + adds r1, r0, r2 + movs r0, 0x1 + negs r0, r0 + str r0, [r1] + movs r5, 0 + mov r8, r2 + lsls r0, r4, 3 + adds r1, r4, 0x1 + mov r9, r1 + subs r0, r4 + lsls r0, 2 + str r0, [sp, 0x1C] + ldr r2, _080FD24C @ =gLinkPlayers + 8 + mov r10, r2 + ldr r6, _080FD250 @ =0x00003ba8 + movs r4, 0 + mov r0, r10 + subs r0, 0x4 + ldr r7, [sp, 0x1C] + adds r3, r7, r0 +_080FD1F4: + ldrh r1, [r3] + ldr r0, _080FD254 @ =gSaveBlock1Ptr + ldr r2, [r0] + ldr r7, _080FD250 @ =0x00003ba8 + adds r0, r2, r7 + adds r0, r4 + ldr r0, [r0] + cmp r1, r0 + bne _080FD220 + adds r1, r2, r6 + adds r1, 0x4 + ldr r0, [sp, 0x1C] + add r0, r10 + str r3, [sp, 0x18] + bl StringCompare + ldr r3, [sp, 0x18] + cmp r0, 0 + bne _080FD220 + mov r0, sp + add r0, r8 + str r5, [r0] +_080FD220: + adds r6, 0xC + adds r4, 0xC + adds r5, 0x1 + cmp r5, 0x13 + ble _080FD1F4 + mov r4, r9 +_080FD22C: + bl GetLinkPlayerCount + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + blt _080FD1C8 + movs r0, 0 + mov r8, r0 + movs r4, 0 + ldr r1, _080FD254 @ =gSaveBlock1Ptr + mov r9, r1 + mov r7, sp + movs r5, 0 + ldr r6, [sp, 0x14] + b _080FD2A4 + .align 2, 0 +_080FD24C: .4byte gLinkPlayers + 8 +_080FD250: .4byte 0x00003ba8 +_080FD254: .4byte gSaveBlock1Ptr +_080FD258: + bl GetMultiplayerId + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + beq _080FD29E + ldr r2, _080FD328 @ =gLinkPlayers + adds r0, r5, r2 + ldrh r0, [r0, 0x1A] + cmp r0, 0x1 + beq _080FD29E + adds r0, r2, 0x4 + adds r0, r5, r0 + ldrh r1, [r0] + adds r2, 0x8 + adds r2, r5, r2 + adds r0, r6, 0 + bl sub_80FD138 + ldr r1, [r7] + cmp r1, 0 + blt _080FD298 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + mov r2, r9 + ldr r1, [r2] + adds r0, r1 + ldr r1, _080FD32C @ =0x00003bac + adds r0, r1 + bl sub_80FD16C +_080FD298: + adds r6, 0xC + movs r2, 0x1 + add r8, r2 +_080FD29E: + adds r7, 0x4 + adds r5, 0x1C + adds r4, 0x1 +_080FD2A4: + bl GetLinkPlayerCount + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + blt _080FD258 + movs r4, 0 + ldr r7, _080FD330 @ =gSaveBlock1Ptr + mov r9, r7 + ldr r6, _080FD334 @ =0x00003ba8 + movs r7, 0 + mov r1, r8 + lsls r0, r1, 1 + add r0, r8 + lsls r0, 2 + ldr r2, [sp, 0x14] + adds r5, r0, r2 +_080FD2C6: + mov r1, r9 + ldr r0, [r1] + adds r0, r6 + adds r0, 0x4 + bl sub_80FD180 + cmp r0, 0 + bne _080FD2F8 + mov r0, r9 + ldr r2, [r0] + ldr r1, _080FD334 @ =0x00003ba8 + adds r0, r2, r1 + adds r0, r7 + ldr r1, [r0] + adds r2, r6 + adds r2, 0x4 + adds r0, r5, 0 + bl sub_80FD138 + adds r5, 0xC + movs r2, 0x1 + add r8, r2 + mov r0, r8 + cmp r0, 0x13 + bgt _080FD302 +_080FD2F8: + adds r6, 0xC + adds r7, 0xC + adds r4, 0x1 + cmp r4, 0x13 + ble _080FD2C6 +_080FD302: + ldr r0, _080FD330 @ =gSaveBlock1Ptr + ldr r0, [r0] + ldr r1, _080FD334 @ =0x00003ba8 + adds r0, r1 + ldr r1, [sp, 0x14] + movs r2, 0xF0 + bl memcpy + ldr r0, [sp, 0x14] + bl Free +_080FD318: + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FD328: .4byte gLinkPlayers +_080FD32C: .4byte 0x00003bac +_080FD330: .4byte gSaveBlock1Ptr +_080FD334: .4byte 0x00003ba8 + thumb_func_end sub_80FD1A0 + + thumb_func_start sub_80FD338 +sub_80FD338: @ 80FD338 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r1 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + movs r7, 0 + ldr r6, _080FD374 @ =gSaveBlock1Ptr + ldr r4, _080FD378 @ =0x00003ba8 + movs r5, 0 +_080FD350: + ldr r0, [r6] + adds r0, r4 + adds r0, 0x4 + mov r1, r9 + movs r2, 0x7 + bl StringCompareN + cmp r0, 0 + bne _080FD37C + ldr r0, [r6] + ldr r1, _080FD378 @ =0x00003ba8 + adds r0, r1 + adds r0, r5 + ldr r0, [r0] + cmp r0, r8 + bne _080FD37C + movs r0, 0x1 + b _080FD396 + .align 2, 0 +_080FD374: .4byte gSaveBlock1Ptr +_080FD378: .4byte 0x00003ba8 +_080FD37C: + ldr r0, [r6] + adds r0, r4 + adds r0, 0x4 + bl sub_80FD180 + cmp r0, 0 + bne _080FD394 + adds r4, 0xC + adds r5, 0xC + adds r7, 0x1 + cmp r7, 0x13 + ble _080FD350 +_080FD394: + movs r0, 0 +_080FD396: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80FD338 + + .align 2, 0 @ Don't pad with nop |