Files
Pokemon-Firered/asm/link_rfu_4.s
T
2020-01-13 17:03:36 -05:00

2072 lines
33 KiB
ArmAsm

.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