summaryrefslogtreecommitdiff
path: root/asm/script_pokemon_util_80F99CC.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/script_pokemon_util_80F99CC.s')
-rw-r--r--asm/script_pokemon_util_80F99CC.s978
1 files changed, 978 insertions, 0 deletions
diff --git a/asm/script_pokemon_util_80F99CC.s b/asm/script_pokemon_util_80F99CC.s
new file mode 100644
index 000000000..24d690d1a
--- /dev/null
+++ b/asm/script_pokemon_util_80F99CC.s
@@ -0,0 +1,978 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80F99CC
+sub_80F99CC: @ 80F99CC
+ push {lr}
+ sub sp, 0x4
+ bl ScriptContext2_Enable
+ ldr r0, _080F9A04 @ =sub_80F9A8C
+ movs r1, 0xA
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080F9A08 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ movs r2, 0
+ movs r0, 0x2
+ strh r0, [r1, 0x8]
+ subs r0, 0x3
+ str r2, [sp]
+ movs r1, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F9A04: .4byte sub_80F9A8C
+_080F9A08: .4byte gTasks
+ thumb_func_end sub_80F99CC
+
+ thumb_func_start sub_80F9A0C
+sub_80F9A0C: @ 80F9A0C
+ push {lr}
+ sub sp, 0x4
+ bl ScriptContext2_Enable
+ ldr r0, _080F9A44 @ =sub_80F9A8C
+ movs r1, 0xA
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080F9A48 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ movs r2, 0
+ movs r0, 0x3
+ strh r0, [r1, 0x8]
+ subs r0, 0x4
+ str r2, [sp]
+ movs r1, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F9A44: .4byte sub_80F9A8C
+_080F9A48: .4byte gTasks
+ thumb_func_end sub_80F9A0C
+
+ thumb_func_start sub_80F9A4C
+sub_80F9A4C: @ 80F9A4C
+ push {lr}
+ sub sp, 0x4
+ bl ScriptContext2_Enable
+ ldr r0, _080F9A84 @ =sub_80F9A8C
+ movs r1, 0xA
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080F9A88 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ movs r2, 0
+ movs r0, 0x7
+ strh r0, [r1, 0x8]
+ subs r0, 0x8
+ str r2, [sp]
+ movs r1, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F9A84: .4byte sub_80F9A8C
+_080F9A88: .4byte gTasks
+ thumb_func_end sub_80F9A4C
+
+ thumb_func_start sub_80F9A8C
+sub_80F9A8C: @ 80F9A8C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r2, _080F9AC4 @ =gPaletteFade
+ ldrb r1, [r2, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080F9ABE
+ ldrb r0, [r2, 0x8]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2, 0x8]
+ ldr r1, _080F9AC8 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldrb r0, [r0, 0x8]
+ movs r1, 0
+ bl OpenPartyMenu
+ adds r0, r4, 0
+ bl DestroyTask
+_080F9ABE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F9AC4: .4byte gPaletteFade
+_080F9AC8: .4byte gTasks
+ thumb_func_end sub_80F9A8C
+
+ thumb_func_start sub_80F9ACC
+sub_80F9ACC: @ 80F9ACC
+ push {r4,r5,lr}
+ ldr r1, _080F9AEC @ =0x0201b000
+ movs r2, 0x99
+ lsls r2, 2
+ adds r0, r1, r2
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ adds r4, r1, 0
+ cmp r0, 0x7
+ bls _080F9AE2
+ b _080F9BF6
+_080F9AE2:
+ lsls r0, 2
+ ldr r1, _080F9AF0 @ =_080F9AF4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080F9AEC: .4byte 0x0201b000
+_080F9AF0: .4byte _080F9AF4
+ .align 2, 0
+_080F9AF4:
+ .4byte _080F9B14
+ .4byte _080F9B54
+ .4byte _080F9B5A
+ .4byte _080F9B6E
+ .4byte _080F9B98
+ .4byte _080F9B9E
+ .4byte _080F9BB0
+ .4byte _080F9BC8
+_080F9B14:
+ ldr r0, _080F9B3C @ =0x00000266
+ adds r5, r4, r0
+ movs r1, 0
+ ldrsh r3, [r5, r1]
+ ldr r0, _080F9B40 @ =gPlayerPartyCount
+ ldrb r0, [r0]
+ cmp r3, r0
+ bge _080F9B48
+ movs r2, 0x98
+ lsls r2, 2
+ adds r0, r4, r2
+ ldrb r0, [r0]
+ ldrb r1, [r5]
+ movs r2, 0x64
+ muls r2, r3
+ ldr r3, _080F9B44 @ =gPlayerParty
+ adds r2, r3
+ bl sub_806D90C
+ b _080F9BF0
+ .align 2, 0
+_080F9B3C: .4byte 0x00000266
+_080F9B40: .4byte gPlayerPartyCount
+_080F9B44: .4byte gPlayerParty
+_080F9B48:
+ movs r0, 0
+ strh r0, [r5]
+ movs r0, 0x99
+ lsls r0, 2
+ adds r1, r4, r0
+ b _080F9BBC
+_080F9B54:
+ bl sub_806DA98
+ b _080F9BB4
+_080F9B5A:
+ movs r1, 0x98
+ lsls r1, 2
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ bl sub_806DC34
+ movs r2, 0x99
+ lsls r2, 2
+ adds r1, r4, r2
+ b _080F9BBC
+_080F9B6E:
+ movs r1, 0x98
+ lsls r1, 2
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ ldr r2, _080F9B94 @ =0x00000266
+ adds r5, r4, r2
+ ldrb r1, [r5]
+ bl sub_806BD58
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080F9BF0
+ movs r0, 0
+ strh r0, [r5]
+ movs r0, 0x99
+ lsls r0, 2
+ adds r1, r4, r0
+ b _080F9BBC
+ .align 2, 0
+_080F9B94: .4byte 0x00000266
+_080F9B98:
+ bl sub_806E334
+ b _080F9BB4
+_080F9B9E:
+ bl sub_806E0C4
+ ldr r1, _080F9BAC @ =0x0201b000
+ movs r0, 0x99
+ lsls r0, 2
+ adds r1, r0
+ b _080F9BBC
+ .align 2, 0
+_080F9BAC: .4byte 0x0201b000
+_080F9BB0:
+ bl sub_80F9C00
+_080F9BB4:
+ ldr r1, _080F9BC4 @ =0x0201b000
+ movs r2, 0x99
+ lsls r2, 2
+ adds r1, r2
+_080F9BBC:
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ b _080F9BF6
+ .align 2, 0
+_080F9BC4: .4byte 0x0201b000
+_080F9BC8:
+ ldr r0, _080F9BEC @ =0x00000266
+ adds r5, r4, r0
+ ldrb r0, [r5]
+ bl sub_806B58C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080F9BF0
+ movs r1, 0
+ strh r1, [r5]
+ movs r2, 0x99
+ lsls r2, 2
+ adds r0, r4, r2
+ strh r1, [r0]
+ movs r0, 0x1
+ b _080F9BF8
+ .align 2, 0
+_080F9BEC: .4byte 0x00000266
+_080F9BF0:
+ ldrh r0, [r5]
+ adds r0, 0x1
+ strh r0, [r5]
+_080F9BF6:
+ movs r0, 0
+_080F9BF8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80F9ACC
+
+ thumb_func_start sub_80F9C00
+sub_80F9C00: @ 80F9C00
+ push {r4,lr}
+ movs r4, 0
+ b _080F9C58
+_080F9C06:
+ movs r0, 0x64
+ muls r0, r4
+ ldr r1, _080F9C24 @ =gPlayerParty
+ adds r0, r1
+ bl sub_80AE47C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x4
+ bhi _080F9C52
+ lsls r0, 2
+ ldr r1, _080F9C28 @ =_080F9C2C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080F9C24: .4byte gPlayerParty
+_080F9C28: .4byte _080F9C2C
+ .align 2, 0
+_080F9C2C:
+ .4byte _080F9C40
+ .4byte _080F9C4A
+ .4byte _080F9C4A
+ .4byte _080F9C40
+ .4byte _080F9C40
+_080F9C40:
+ adds r0, r4, 0
+ movs r1, 0x7E
+ bl sub_806BC3C
+ b _080F9C52
+_080F9C4A:
+ adds r0, r4, 0
+ movs r1, 0x70
+ bl sub_806BC3C
+_080F9C52:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+_080F9C58:
+ ldr r0, _080F9C68 @ =gPlayerPartyCount
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcc _080F9C06
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F9C68: .4byte gPlayerPartyCount
+ thumb_func_end sub_80F9C00
+
+ thumb_func_start sub_80F9C6C
+sub_80F9C6C: @ 80F9C6C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080F9C94 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080F9CD8
+ adds r0, r4, 0
+ bl sub_806BD80
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ beq _080F9C98
+ cmp r0, 0x2
+ beq _080F9CC0
+ b _080F9CD8
+ .align 2, 0
+_080F9C94: .4byte gPaletteFade
+_080F9C98:
+ movs r0, 0x5
+ bl PlaySE
+ adds r0, r4, 0
+ bl sub_806CA38
+ ldr r1, _080F9CB8 @ =gUnknown_02038694
+ strb r0, [r1]
+ ldr r2, _080F9CBC @ =gUnknown_0202E8CC
+ ldrb r0, [r1]
+ strh r0, [r2]
+ adds r0, r4, 0
+ bl sub_8123138
+ b _080F9CD8
+ .align 2, 0
+_080F9CB8: .4byte gUnknown_02038694
+_080F9CBC: .4byte gUnknown_0202E8CC
+_080F9CC0:
+ movs r0, 0x5
+ bl PlaySE
+ ldr r1, _080F9CE0 @ =gUnknown_02038694
+ movs r0, 0xFF
+ strb r0, [r1]
+ ldr r1, _080F9CE4 @ =gUnknown_0202E8CC
+ movs r0, 0xFF
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl sub_8123138
+_080F9CD8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F9CE0: .4byte gUnknown_02038694
+_080F9CE4: .4byte gUnknown_0202E8CC
+ thumb_func_end sub_80F9C6C
+
+ thumb_func_start sub_80F9CE8
+sub_80F9CE8: @ 80F9CE8
+ push {r4,r5,lr}
+ ldr r1, _080F9D08 @ =0x0201b000
+ movs r2, 0x99
+ lsls r2, 2
+ adds r0, r1, r2
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ adds r4, r1, 0
+ cmp r0, 0x7
+ bls _080F9CFE
+ b _080F9E12
+_080F9CFE:
+ lsls r0, 2
+ ldr r1, _080F9D0C @ =_080F9D10
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080F9D08: .4byte 0x0201b000
+_080F9D0C: .4byte _080F9D10
+ .align 2, 0
+_080F9D10:
+ .4byte _080F9D30
+ .4byte _080F9D70
+ .4byte _080F9D76
+ .4byte _080F9D8A
+ .4byte _080F9DB4
+ .4byte _080F9DBA
+ .4byte _080F9DCC
+ .4byte _080F9DE4
+_080F9D30:
+ ldr r0, _080F9D58 @ =0x00000266
+ adds r5, r4, r0
+ movs r1, 0
+ ldrsh r3, [r5, r1]
+ ldr r0, _080F9D5C @ =gPlayerPartyCount
+ ldrb r0, [r0]
+ cmp r3, r0
+ bge _080F9D64
+ movs r2, 0x98
+ lsls r2, 2
+ adds r0, r4, r2
+ ldrb r0, [r0]
+ ldrb r1, [r5]
+ movs r2, 0x64
+ muls r2, r3
+ ldr r3, _080F9D60 @ =gPlayerParty
+ adds r2, r3
+ bl sub_806D90C
+ b _080F9E0C
+ .align 2, 0
+_080F9D58: .4byte 0x00000266
+_080F9D5C: .4byte gPlayerPartyCount
+_080F9D60: .4byte gPlayerParty
+_080F9D64:
+ movs r0, 0
+ strh r0, [r5]
+ movs r0, 0x99
+ lsls r0, 2
+ adds r1, r4, r0
+ b _080F9DD8
+_080F9D70:
+ bl sub_806DA98
+ b _080F9DD0
+_080F9D76:
+ movs r1, 0x98
+ lsls r1, 2
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ bl sub_806DC34
+ movs r2, 0x99
+ lsls r2, 2
+ adds r1, r4, r2
+ b _080F9DD8
+_080F9D8A:
+ movs r1, 0x98
+ lsls r1, 2
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ ldr r2, _080F9DB0 @ =0x00000266
+ adds r5, r4, r2
+ ldrb r1, [r5]
+ bl sub_806BD58
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080F9E0C
+ movs r0, 0
+ strh r0, [r5]
+ movs r0, 0x99
+ lsls r0, 2
+ adds r1, r4, r0
+ b _080F9DD8
+ .align 2, 0
+_080F9DB0: .4byte 0x00000266
+_080F9DB4:
+ bl sub_806E334
+ b _080F9DD0
+_080F9DBA:
+ bl sub_806E0C4
+ ldr r1, _080F9DC8 @ =0x0201b000
+ movs r0, 0x99
+ lsls r0, 2
+ adds r1, r0
+ b _080F9DD8
+ .align 2, 0
+_080F9DC8: .4byte 0x0201b000
+_080F9DCC:
+ bl sub_80F9E1C
+_080F9DD0:
+ ldr r1, _080F9DE0 @ =0x0201b000
+ movs r2, 0x99
+ lsls r2, 2
+ adds r1, r2
+_080F9DD8:
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ b _080F9E12
+ .align 2, 0
+_080F9DE0: .4byte 0x0201b000
+_080F9DE4:
+ ldr r0, _080F9E08 @ =0x00000266
+ adds r5, r4, r0
+ ldrb r0, [r5]
+ bl sub_806B58C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080F9E0C
+ movs r1, 0
+ strh r1, [r5]
+ movs r2, 0x99
+ lsls r2, 2
+ adds r0, r4, r2
+ strh r1, [r0]
+ movs r0, 0x1
+ b _080F9E14
+ .align 2, 0
+_080F9E08: .4byte 0x00000266
+_080F9E0C:
+ ldrh r0, [r5]
+ adds r0, 0x1
+ strh r0, [r5]
+_080F9E12:
+ movs r0, 0
+_080F9E14:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80F9CE8
+
+ thumb_func_start sub_80F9E1C
+sub_80F9E1C: @ 80F9E1C
+ push {r4,lr}
+ movs r4, 0
+ b _080F9E52
+_080F9E22:
+ movs r0, 0x64
+ muls r0, r4
+ ldr r1, _080F9E40 @ =gPlayerParty
+ adds r0, r1
+ bl sub_8040574
+ lsls r0, 24
+ cmp r0, 0
+ bne _080F9E44
+ adds r0, r4, 0
+ movs r1, 0x9A
+ bl sub_806BC3C
+ b _080F9E4C
+ .align 2, 0
+_080F9E40: .4byte gPlayerParty
+_080F9E44:
+ adds r0, r4, 0
+ movs r1, 0x8C
+ bl sub_806BC3C
+_080F9E4C:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+_080F9E52:
+ ldr r0, _080F9E60 @ =gPlayerPartyCount
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcc _080F9E22
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F9E60: .4byte gPlayerPartyCount
+ thumb_func_end sub_80F9E1C
+
+ thumb_func_start sub_80F9E64
+sub_80F9E64: @ 80F9E64
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, _080F9E8C @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080F9EE2
+ adds r0, r6, 0
+ bl sub_806BD80
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ beq _080F9E90
+ cmp r0, 0x2
+ beq _080F9ED0
+ b _080F9EE2
+ .align 2, 0
+_080F9E8C: .4byte gPaletteFade
+_080F9E90:
+ movs r0, 0x5
+ bl PlaySE
+ ldr r4, _080F9EC4 @ =gUnknown_0202E8CC
+ adds r0, r6, 0
+ bl sub_806CA38
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4]
+ ldr r5, _080F9EC8 @ =gUnknown_0202E8CE
+ ldrh r1, [r4]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080F9ECC @ =gPlayerParty
+ adds r0, r1
+ bl sub_8040574
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5]
+ adds r0, r6, 0
+ bl sub_8123138
+ b _080F9EE2
+ .align 2, 0
+_080F9EC4: .4byte gUnknown_0202E8CC
+_080F9EC8: .4byte gUnknown_0202E8CE
+_080F9ECC: .4byte gPlayerParty
+_080F9ED0:
+ movs r0, 0x5
+ bl PlaySE
+ ldr r1, _080F9EE8 @ =gUnknown_0202E8CC
+ movs r0, 0xFF
+ strh r0, [r1]
+ adds r0, r6, 0
+ bl sub_8123138
+_080F9EE2:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F9EE8: .4byte gUnknown_0202E8CC
+ thumb_func_end sub_80F9E64
+
+ thumb_func_start sub_80F9EEC
+sub_80F9EEC: @ 80F9EEC
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r0, _080F9F20 @ =gPlayerParty
+ ldr r1, _080F9F24 @ =gUnknown_0202E8CC
+ ldrb r1, [r1]
+ ldr r2, _080F9F28 @ =gPlayerPartyCount
+ ldrb r2, [r2]
+ subs r2, 0x1
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r3, _080F9F2C @ =c2_exit_to_overworld_2_switch
+ movs r4, 0
+ str r4, [sp]
+ bl sub_809D9F0
+ ldr r1, _080F9F30 @ =0x02018000
+ movs r0, 0x3
+ strb r0, [r1, 0x8]
+ ldr r1, _080F9F34 @ =gUnknown_0300485C
+ ldr r0, _080F9F38 @ =sub_8080990
+ str r0, [r1]
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F9F20: .4byte gPlayerParty
+_080F9F24: .4byte gUnknown_0202E8CC
+_080F9F28: .4byte gPlayerPartyCount
+_080F9F2C: .4byte c2_exit_to_overworld_2_switch
+_080F9F30: .4byte 0x02018000
+_080F9F34: .4byte gUnknown_0300485C
+_080F9F38: .4byte sub_8080990
+ thumb_func_end sub_80F9EEC
+
+ thumb_func_start sub_80F9F3C
+sub_80F9F3C: @ 80F9F3C
+ push {r4,r5,lr}
+ ldr r1, _080F9F78 @ =gScriptResult
+ movs r0, 0
+ strh r0, [r1]
+ movs r4, 0
+ adds r5, r1, 0
+_080F9F48:
+ ldr r0, _080F9F7C @ =gUnknown_0202E8CC
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080F9F80 @ =gPlayerParty
+ adds r0, r1
+ adds r1, r4, 0
+ adds r1, 0xD
+ bl GetMonData
+ cmp r0, 0
+ beq _080F9F66
+ ldrh r0, [r5]
+ adds r0, 0x1
+ strh r0, [r5]
+_080F9F66:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x3
+ bls _080F9F48
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F9F78: .4byte gScriptResult
+_080F9F7C: .4byte gUnknown_0202E8CC
+_080F9F80: .4byte gPlayerParty
+ thumb_func_end sub_80F9F3C
+
+ thumb_func_start sub_80F9F84
+sub_80F9F84: @ 80F9F84
+ push {r4,r5,lr}
+ ldr r0, _080F9FC4 @ =gUnknown_0202E8CC
+ ldrh r1, [r0]
+ movs r0, 0x64
+ adds r5, r1, 0
+ muls r5, r0
+ ldr r0, _080F9FC8 @ =gPlayerParty
+ adds r5, r0
+ ldr r0, _080F9FCC @ =gUnknown_0202E8CE
+ ldrh r1, [r0]
+ adds r1, 0xD
+ adds r0, r5, 0
+ bl GetMonData
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ ldr r1, _080F9FD0 @ =gStringVar1
+ adds r0, r5, 0
+ bl GetMonNickname
+ ldr r0, _080F9FD4 @ =gStringVar2
+ movs r1, 0xD
+ muls r1, r4
+ ldr r2, _080F9FD8 @ =gMoveNames
+ adds r1, r2
+ bl StringCopy
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F9FC4: .4byte gUnknown_0202E8CC
+_080F9FC8: .4byte gPlayerParty
+_080F9FCC: .4byte gUnknown_0202E8CE
+_080F9FD0: .4byte gStringVar1
+_080F9FD4: .4byte gStringVar2
+_080F9FD8: .4byte gMoveNames
+ thumb_func_end sub_80F9F84
+
+ thumb_func_start sub_80F9FDC
+sub_80F9FDC: @ 80F9FDC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x20
+ mov r8, r0
+ adds r5, r1, 0
+ adds r4, r2, 0
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r5, 0
+ adds r0, 0xD
+ str r0, [sp, 0x8]
+ mov r0, r8
+ ldr r1, [sp, 0x8]
+ bl GetMonData
+ mov r1, sp
+ adds r1, 0x2
+ str r1, [sp, 0x14]
+ strh r0, [r1]
+ adds r3, r4, 0
+ adds r3, 0xD
+ str r3, [sp, 0xC]
+ mov r0, r8
+ adds r1, r3, 0
+ bl GetMonData
+ mov r1, sp
+ strh r0, [r1]
+ adds r7, r5, 0
+ adds r7, 0x11
+ str r7, [sp, 0x10]
+ mov r0, r8
+ adds r1, r7, 0
+ bl GetMonData
+ mov r1, sp
+ adds r1, 0x5
+ str r1, [sp, 0x18]
+ strb r0, [r1]
+ adds r3, r4, 0
+ adds r3, 0x11
+ str r3, [sp, 0x1C]
+ mov r0, r8
+ adds r1, r3, 0
+ bl GetMonData
+ add r7, sp, 0x4
+ mov r10, r7
+ strb r0, [r7]
+ mov r0, r8
+ movs r1, 0x15
+ bl GetMonData
+ mov r6, sp
+ adds r6, 0x6
+ strb r0, [r6]
+ ldr r1, _080FA0D8 @ =gUnknown_08208238
+ adds r0, r5, r1
+ ldrb r0, [r0]
+ mov r9, r0
+ ldrb r0, [r6]
+ adds r2, r0, 0
+ mov r3, r9
+ ands r2, r3
+ lsls r5, 1
+ asrs r2, r5
+ lsls r2, 24
+ lsrs r2, 24
+ adds r1, r4, r1
+ ldrb r3, [r1]
+ adds r1, r0, 0
+ ands r1, r3
+ lsls r4, 1
+ asrs r1, r4
+ lsls r1, 24
+ lsrs r1, 24
+ mov r7, r9
+ bics r0, r7
+ strb r0, [r6]
+ ldrb r0, [r6]
+ bics r0, r3
+ strb r0, [r6]
+ lsls r2, r4
+ lsls r1, r5
+ adds r2, r1
+ ldrb r0, [r6]
+ orrs r0, r2
+ strb r0, [r6]
+ mov r0, r8
+ ldr r1, [sp, 0x8]
+ mov r2, sp
+ bl SetMonData
+ mov r0, r8
+ ldr r1, [sp, 0xC]
+ ldr r2, [sp, 0x14]
+ bl SetMonData
+ mov r0, r8
+ ldr r1, [sp, 0x10]
+ mov r2, r10
+ bl SetMonData
+ mov r0, r8
+ ldr r1, [sp, 0x1C]
+ ldr r2, [sp, 0x18]
+ bl SetMonData
+ mov r0, r8
+ movs r1, 0x15
+ adds r2, r6, 0
+ bl SetMonData
+ 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
+_080FA0D8: .4byte gUnknown_08208238
+ thumb_func_end sub_80F9FDC
+
+ thumb_func_start sub_80FA0DC
+sub_80FA0DC: @ 80FA0DC
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ ldr r0, _080FA13C @ =gUnknown_0202E8CC
+ mov r8, r0
+ ldrh r0, [r0]
+ movs r6, 0x64
+ muls r0, r6
+ ldr r5, _080FA140 @ =gPlayerParty
+ adds r0, r5
+ ldr r4, _080FA144 @ =gUnknown_0202E8CE
+ ldrb r2, [r4]
+ movs r1, 0
+ bl SetMonMoveSlot
+ mov r1, r8
+ ldrh r0, [r1]
+ muls r0, r6
+ adds r0, r5
+ ldrb r1, [r4]
+ bl RemoveMonPPBonus
+ ldrh r4, [r4]
+ cmp r4, 0x2
+ bhi _080FA130
+_080FA10E:
+ ldr r0, _080FA13C @ =gUnknown_0202E8CC
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080FA140 @ =gPlayerParty
+ adds r0, r1
+ lsls r1, r4, 24
+ lsrs r1, 24
+ adds r4, 0x1
+ lsls r2, r4, 24
+ lsrs r2, 24
+ bl sub_80F9FDC
+ lsls r4, 16
+ lsrs r4, 16
+ cmp r4, 0x2
+ bls _080FA10E
+_080FA130:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080FA13C: .4byte gUnknown_0202E8CC
+_080FA140: .4byte gPlayerParty
+_080FA144: .4byte gUnknown_0202E8CE
+ thumb_func_end sub_80FA0DC
+
+ thumb_func_start sub_80FA148
+sub_80FA148: @ 80FA148
+ push {r4,lr}
+ ldr r0, _080FA170 @ =gUnknown_0202E8CC
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080FA174 @ =gPlayerParty
+ adds r0, r1
+ ldr r4, _080FA178 @ =gScriptResult
+ movs r1, 0
+ strh r1, [r4]
+ movs r1, 0x2D
+ bl GetMonData
+ cmp r0, 0
+ beq _080FA16A
+ movs r0, 0x1
+ strh r0, [r4]
+_080FA16A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080FA170: .4byte gUnknown_0202E8CC
+_080FA174: .4byte gPlayerParty
+_080FA178: .4byte gScriptResult
+ thumb_func_end sub_80FA148
+
+ .align 2, 0 @ Don't pad with nop.