summaryrefslogtreecommitdiff
path: root/asm/battle_ai_switch_items.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/battle_ai_switch_items.s')
-rw-r--r--asm/battle_ai_switch_items.s2654
1 files changed, 0 insertions, 2654 deletions
diff --git a/asm/battle_ai_switch_items.s b/asm/battle_ai_switch_items.s
deleted file mode 100644
index bdc1283db..000000000
--- a/asm/battle_ai_switch_items.s
+++ /dev/null
@@ -1,2654 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start ShouldSwitchIfPerishSong
-ShouldSwitchIfPerishSong: @ 8039188
- push {lr}
- ldr r1, _080391D4 @ =gStatuses3
- ldr r0, _080391D8 @ =gActiveBattler
- ldrb r2, [r0]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080391E4
- ldr r0, _080391DC @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xF]
- lsls r0, 28
- cmp r0, 0
- bne _080391E4
- adds r0, r2, 0
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 25
- ldr r1, _080391E0 @ =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- adds r0, 0x92
- movs r1, 0x6
- strb r1, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl EmitTwoReturnValues
- movs r0, 0x1
- b _080391E6
- .align 2, 0
-_080391D4: .4byte gStatuses3
-_080391D8: .4byte gActiveBattler
-_080391DC: .4byte gDisableStructs
-_080391E0: .4byte gBattleStruct
-_080391E4:
- movs r0, 0
-_080391E6:
- pop {r1}
- bx r1
- thumb_func_end ShouldSwitchIfPerishSong
-
- thumb_func_start sub_80391EC
-sub_80391EC: @ 80391EC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _08039204 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08039234
- b _0803935C
- .align 2, 0
-_08039204: .4byte gBattleTypeFlags
-_08039208:
- ldr r0, _0803922C @ =gActiveBattler
- ldrb r0, [r0]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 25
- ldr r1, _08039230 @ =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- adds r0, 0x92
- strb r6, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl EmitTwoReturnValues
- movs r0, 0x1
- b _0803935E
- .align 2, 0
-_0803922C: .4byte gActiveBattler
-_08039230: .4byte gBattleStruct
-_08039234:
- ldr r4, _0803936C @ =gBattleMons
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x58
- muls r0, r1
- adds r0, r4
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x19
- beq _08039250
- b _0803935C
-_08039250:
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r2, r0, 24
- movs r6, 0
- adds r7, r4, 0
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r4, r0, r7
- movs r0, 0x20
- adds r0, r4
- mov r8, r0
-_0803926C:
- lsls r1, r6, 1
- ldr r0, _08039370 @ =gActiveBattler
- ldrb r0, [r0]
- muls r0, r5
- adds r1, r0
- adds r0, r7, 0
- adds r0, 0xC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _08039298
- ldrh r1, [r4]
- mov r3, r8
- ldrb r2, [r3]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- bne _0803935C
-_08039298:
- adds r6, 0x1
- cmp r6, 0x3
- ble _0803926C
- movs r6, 0
- ldr r0, _08039374 @ =gEnemyParty
- mov r9, r0
-_080392A4:
- movs r0, 0x64
- adds r5, r6, 0
- muls r5, r0
- mov r3, r9
- adds r4, r5, r3
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08039356
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08039356
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08039356
- ldr r1, _08039378 @ =gBattlerPartyIndexes
- ldr r0, _08039370 @ =gActiveBattler
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- beq _08039356
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- adds r0, r4, 0
- movs r1, 0x2E
- bl GetMonData
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r2, r0, 24
- movs r4, 0
- mov r8, r5
- ldr r1, _0803936C @ =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r5, r0, r1
- adds r7, r5, 0
- adds r7, 0x20
-_08039310:
- adds r1, r4, 0
- adds r1, 0xD
- mov r0, r8
- add r0, r9
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _08039350
- ldrh r1, [r5]
- ldrb r2, [r7]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _08039350
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _08039350
- b _08039208
-_08039350:
- adds r4, 0x1
- cmp r4, 0x3
- ble _08039310
-_08039356:
- adds r6, 0x1
- cmp r6, 0x5
- ble _080392A4
-_0803935C:
- movs r0, 0
-_0803935E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0803936C: .4byte gBattleMons
-_08039370: .4byte gActiveBattler
-_08039374: .4byte gEnemyParty
-_08039378: .4byte gBattlerPartyIndexes
- thumb_func_end sub_80391EC
-
- thumb_func_start sub_803937C
-sub_803937C: @ 803937C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r0, 0x1
- bl ai_has_super_effective_move_on_field
- lsls r0, 24
- cmp r0, 0
- beq _080393A8
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- beq _080393A8
- b _08039588
-_080393A8:
- ldr r1, _08039410 @ =gUnknown_2023DA0
- ldr r5, _08039414 @ =gActiveBattler
- ldrb r3, [r5]
- lsls r0, r3, 1
- adds r4, r0, r1
- ldrh r1, [r4]
- cmp r1, 0
- bne _080393BA
- b _08039588
-_080393BA:
- ldr r0, _08039418 @ =0x0000ffff
- cmp r1, r0
- bne _080393C2
- b _08039588
-_080393C2:
- ldr r2, _0803941C @ =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _080393D6
- b _08039588
-_080393D6:
- ldr r0, _08039420 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08039442
- mov r8, r3
- mov r0, r8
- bl GetBattlerPosition
- movs r4, 0x2
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerAtPosition
- ldr r1, _08039424 @ =gAbsentBattlerFlags
- ldrb r1, [r1]
- ldr r2, _08039428 @ =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0803942C
- ldrb r7, [r5]
- b _08039446
- .align 2, 0
-_08039410: .4byte gUnknown_2023DA0
-_08039414: .4byte gActiveBattler
-_08039418: .4byte 0x0000ffff
-_0803941C: .4byte gBattleMoves
-_08039420: .4byte gBattleTypeFlags
-_08039424: .4byte gAbsentBattlerFlags
-_08039428: .4byte gBitTable
-_0803942C:
- ldrb r0, [r5]
- bl GetBattlerPosition
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r7, r0, 24
- b _08039446
-_08039442:
- adds r7, r3, 0
- mov r8, r7
-_08039446:
- ldr r3, _08039468 @ =gBattleMoves
- ldr r1, _0803946C @ =gUnknown_2023DA0
- ldr r2, _08039470 @ =gActiveBattler
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x2]
- adds r1, r2, 0
- cmp r0, 0xA
- bne _08039474
- movs r0, 0x12
- b _08039486
- .align 2, 0
-_08039468: .4byte gBattleMoves
-_0803946C: .4byte gUnknown_2023DA0
-_08039470: .4byte gActiveBattler
-_08039474:
- cmp r0, 0xB
- bne _0803947E
- movs r2, 0xB
- mov r10, r2
- b _08039488
-_0803947E:
- cmp r0, 0xD
- beq _08039484
- b _08039588
-_08039484:
- movs r0, 0xA
-_08039486:
- mov r10, r0
-_08039488:
- ldr r2, _0803949C @ =gBattleMons
- ldrb r1, [r1]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, r10
- bne _080394CC
- b _08039588
- .align 2, 0
-_0803949C: .4byte gBattleMons
-_080394A0:
- ldr r0, _080394C4 @ =gActiveBattler
- ldrb r0, [r0]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 25
- ldr r1, _080394C8 @ =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- adds r0, 0x92
- strb r6, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl EmitTwoReturnValues
- movs r0, 0x1
- b _0803958A
- .align 2, 0
-_080394C4: .4byte gActiveBattler
-_080394C8: .4byte gBattleStruct
-_080394CC:
- movs r6, 0
- ldr r2, _08039558 @ =gBaseStats
- mov r9, r2
-_080394D2:
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- ldr r0, _0803955C @ =gEnemyParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08039582
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08039582
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08039582
- ldr r1, _08039560 @ =gBattlerPartyIndexes
- mov r2, r8
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- beq _08039582
- lsls r0, r7, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- beq _08039582
- ldr r0, _08039564 @ =gBattleStruct
- ldr r1, [r0]
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r6, r0
- beq _08039582
- adds r0, r7, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r6, r0
- beq _08039582
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r5, 0
- movs r1, 0x2E
- bl GetMonData
- cmp r0, 0
- beq _08039568
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x17]
- b _08039572
- .align 2, 0
-_08039558: .4byte gBaseStats
-_0803955C: .4byte gEnemyParty
-_08039560: .4byte gBattlerPartyIndexes
-_08039564: .4byte gBattleStruct
-_08039568:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x16]
-_08039572:
- cmp r10, r0
- bne _08039582
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- bne _080394A0
-_08039582:
- adds r6, 0x1
- cmp r6, 0x5
- ble _080394D2
-_08039588:
- movs r0, 0
-_0803958A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_803937C
-
- thumb_func_start sub_8039598
-sub_8039598: @ 8039598
- push {r4,r5,lr}
- ldr r3, _080395F0 @ =gBattleMons
- ldr r5, _080395F4 @ =gActiveBattler
- ldrb r4, [r5]
- movs r0, 0x58
- adds r2, r4, 0
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _08039660
- adds r1, r2, r3
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1E
- bne _08039660
- ldrh r0, [r1, 0x2C]
- ldrh r1, [r1, 0x28]
- lsrs r0, 1
- cmp r1, r0
- bcc _08039660
- ldr r1, _080395F8 @ =gUnknown_2023DA0
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- cmp r1, 0
- beq _080395DE
- ldr r0, _080395FC @ =0x0000ffff
- cmp r1, r0
- bne _08039600
-_080395DE:
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08039600
- ldrb r0, [r5]
- b _08039668
- .align 2, 0
-_080395F0: .4byte gBattleMons
-_080395F4: .4byte gActiveBattler
-_080395F8: .4byte gUnknown_2023DA0
-_080395FC: .4byte 0x0000ffff
-_08039600:
- ldr r2, _0803962C @ =gBattleMoves
- ldr r1, _08039630 @ =gUnknown_2023DA0
- ldr r4, _08039634 @ =gActiveBattler
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _08039638
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08039638
- ldrb r0, [r4]
- b _08039668
- .align 2, 0
-_0803962C: .4byte gBattleMoves
-_08039630: .4byte gUnknown_2023DA0
-_08039634: .4byte gActiveBattler
-_08039638:
- movs r0, 0x8
- movs r1, 0x1
- bl sub_8039828
- lsls r0, 24
- cmp r0, 0
- bne _08039686
- movs r0, 0x4
- movs r1, 0x1
- bl sub_8039828
- lsls r0, 24
- cmp r0, 0
- bne _08039686
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- bne _08039664
-_08039660:
- movs r0, 0
- b _08039688
-_08039664:
- ldr r0, _08039690 @ =gActiveBattler
- ldrb r0, [r0]
-_08039668:
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 25
- ldr r1, _08039694 @ =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- adds r0, 0x92
- movs r1, 0x6
- strb r1, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl EmitTwoReturnValues
-_08039686:
- movs r0, 0x1
-_08039688:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08039690: .4byte gActiveBattler
-_08039694: .4byte gBattleStruct
- thumb_func_end sub_8039598
-
- thumb_func_start ai_has_super_effective_move_on_field
-ai_has_super_effective_move_on_field: @ 8039698
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, _08039730 @ =gAbsentBattlerFlags
- ldrb r1, [r0]
- ldr r2, _08039734 @ =gBitTable
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08039720
- movs r4, 0
- ldr r6, _08039738 @ =gBattleMons
- movs r7, 0x58
- adds r0, r3, 0
- muls r0, r7
- adds r5, r0, r6
- movs r0, 0x20
- adds r0, r5
- mov r9, r0
-_080396D4:
- lsls r1, r4, 1
- ldr r0, _0803973C @ =gActiveBattler
- ldrb r0, [r0]
- muls r0, r7
- adds r1, r0
- adds r0, r6, 0
- adds r0, 0xC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _0803971A
- ldrh r1, [r5]
- mov r3, r9
- ldrb r2, [r3]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _0803971A
- mov r0, r8
- cmp r0, 0
- bne _08039744
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _08039744
-_0803971A:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080396D4
-_08039720:
- ldr r0, _08039740 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08039748
- b _080397C2
- .align 2, 0
-_08039730: .4byte gAbsentBattlerFlags
-_08039734: .4byte gBitTable
-_08039738: .4byte gBattleMons
-_0803973C: .4byte gActiveBattler
-_08039740: .4byte gBattleTypeFlags
-_08039744:
- movs r0, 0x1
- b _080397C4
-_08039748:
- movs r0, 0x2
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, _080397D0 @ =gAbsentBattlerFlags
- ldrb r1, [r0]
- ldr r2, _080397D4 @ =gBitTable
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _080397C2
- movs r4, 0
- ldr r6, _080397D8 @ =gBattleMons
- movs r7, 0x58
- adds r0, r3, 0
- muls r0, r7
- adds r5, r0, r6
- movs r3, 0x20
- adds r3, r5
- mov r9, r3
-_08039776:
- lsls r1, r4, 1
- ldr r0, _080397DC @ =gActiveBattler
- ldrb r0, [r0]
- muls r0, r7
- adds r1, r0
- adds r0, r6, 0
- adds r0, 0xC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _080397BC
- ldrh r1, [r5]
- mov r3, r9
- ldrb r2, [r3]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _080397BC
- mov r0, r8
- cmp r0, 0
- bne _08039744
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _08039744
-_080397BC:
- adds r4, 0x1
- cmp r4, 0x3
- ble _08039776
-_080397C2:
- movs r0, 0
-_080397C4:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080397D0: .4byte gAbsentBattlerFlags
-_080397D4: .4byte gBitTable
-_080397D8: .4byte gBattleMons
-_080397DC: .4byte gActiveBattler
- thumb_func_end ai_has_super_effective_move_on_field
-
- thumb_func_start AI_AreStatsRaised
-AI_AreStatsRaised: @ 80397E0
- push {r4,lr}
- movs r4, 0
- ldr r1, _08039820 @ =gBattleMons
- ldr r0, _08039824 @ =gActiveBattler
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x18
- adds r2, r0, r1
- movs r3, 0x7
-_080397F4:
- ldrb r1, [r2]
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, 0x6
- ble _0803980A
- subs r1, 0x6
- lsls r0, r4, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
-_0803980A:
- adds r2, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _080397F4
- movs r0, 0
- cmp r4, 0x3
- bls _0803981A
- movs r0, 0x1
-_0803981A:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08039820: .4byte gBattleMons
-_08039824: .4byte gActiveBattler
- thumb_func_end AI_AreStatsRaised
-
- thumb_func_start sub_8039828
-sub_8039828: @ 8039828
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x4]
- ldr r1, _080398B4 @ =gUnknown_2023DA0
- ldr r5, _080398B8 @ =gActiveBattler
- ldrb r3, [r5]
- lsls r0, r3, 1
- adds r4, r0, r1
- ldrh r1, [r4]
- cmp r1, 0
- bne _08039852
- b _08039A54
-_08039852:
- ldr r0, _080398BC @ =0x0000ffff
- cmp r1, r0
- bne _0803985A
- b _08039A54
-_0803985A:
- ldr r0, _080398C0 @ =gUnknown_2023DC0
- adds r0, r3, r0
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08039866
- b _08039A54
-_08039866:
- ldr r2, _080398C4 @ =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0803987A
- b _08039A54
-_0803987A:
- ldr r0, _080398C8 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08039918
- mov r9, r3
- mov r0, r9
- bl GetBattlerPosition
- movs r4, 0x2
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerAtPosition
- ldr r1, _080398CC @ =gAbsentBattlerFlags
- ldrb r1, [r1]
- ldr r2, _080398D0 @ =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _080398D4
- ldrb r5, [r5]
- mov r10, r5
- b _0803991C
- .align 2, 0
-_080398B4: .4byte gUnknown_2023DA0
-_080398B8: .4byte gActiveBattler
-_080398BC: .4byte 0x0000ffff
-_080398C0: .4byte gUnknown_2023DC0
-_080398C4: .4byte gBattleMoves
-_080398C8: .4byte gBattleTypeFlags
-_080398CC: .4byte gAbsentBattlerFlags
-_080398D0: .4byte gBitTable
-_080398D4:
- ldrb r0, [r5]
- bl GetBattlerPosition
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- b _0803991C
-_080398EC:
- ldr r0, _08039910 @ =gActiveBattler
- ldrb r0, [r0]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 25
- ldr r1, _08039914 @ =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- adds r0, 0x92
- strb r7, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl EmitTwoReturnValues
- movs r0, 0x1
- b _08039A56
- .align 2, 0
-_08039910: .4byte gActiveBattler
-_08039914: .4byte gBattleStruct
-_08039918:
- mov r9, r3
- mov r10, r9
-_0803991C:
- movs r7, 0
-_0803991E:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _080399B0 @ =gEnemyParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _08039936
- b _08039A4C
-_08039936:
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- bne _08039944
- b _08039A4C
-_08039944:
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08039A4C
- ldr r1, _080399B4 @ =gBattlerPartyIndexes
- mov r2, r9
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r7, r0
- beq _08039A4C
- mov r2, r10
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r7, r0
- beq _08039A4C
- ldr r0, _080399B8 @ =gBattleStruct
- ldr r1, [r0]
- mov r2, r9
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _08039A4C
- mov r2, r10
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _08039A4C
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r5, 0
- movs r1, 0x2E
- bl GetMonData
- cmp r0, 0
- beq _080399C0
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r1, _080399BC @ =gBaseStats
- adds r0, r1
- ldrb r2, [r0, 0x17]
- b _080399CC
- .align 2, 0
-_080399B0: .4byte gEnemyParty
-_080399B4: .4byte gBattlerPartyIndexes
-_080399B8: .4byte gBattleStruct
-_080399BC: .4byte gBaseStats
-_080399C0:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r2, _08039A68 @ =gBaseStats
- adds r0, r2
- ldrb r2, [r0, 0x16]
-_080399CC:
- ldr r1, _08039A6C @ =gUnknown_2023DA0
- ldr r5, _08039A70 @ =gActiveBattler
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- adds r1, r4, 0
- bl AI_TypeCalc
- ldr r1, [sp]
- ands r1, r0
- cmp r1, 0
- beq _08039A4C
- ldr r1, _08039A74 @ =gUnknown_2023DC0
- ldrb r0, [r5]
- adds r0, r1
- ldrb r0, [r0]
- mov r9, r0
- movs r4, 0
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- mov r8, r1
- ldr r1, _08039A78 @ =gBattleMons
- movs r0, 0x58
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- adds r5, r0, r1
- adds r6, r5, 0
- adds r6, 0x20
-_08039A0A:
- ldr r0, _08039A7C @ =gEnemyParty
- adds r1, r4, 0
- adds r1, 0xD
- add r0, r8
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _08039A46
- ldrh r1, [r5]
- ldrb r2, [r6]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _08039A46
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [sp, 0x4]
- bl __modsi3
- cmp r0, 0
- bne _08039A46
- b _080398EC
-_08039A46:
- adds r4, 0x1
- cmp r4, 0x3
- ble _08039A0A
-_08039A4C:
- adds r7, 0x1
- cmp r7, 0x5
- bgt _08039A54
- b _0803991E
-_08039A54:
- movs r0, 0
-_08039A56:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08039A68: .4byte gBaseStats
-_08039A6C: .4byte gUnknown_2023DA0
-_08039A70: .4byte gActiveBattler
-_08039A74: .4byte gUnknown_2023DC0
-_08039A78: .4byte gBattleMons
-_08039A7C: .4byte gEnemyParty
- thumb_func_end sub_8039828
-
- thumb_func_start sub_8039A80
-sub_8039A80: @ 8039A80
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r6, _08039B5C @ =gBattleMons
- ldr r4, _08039B60 @ =gActiveBattler
- ldrb r2, [r4]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r6, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08039B64 @ =0x0400e000
- ands r0, r1
- cmp r0, 0
- beq _08039AA6
- b _08039C74
-_08039AA6:
- ldr r0, _08039B68 @ =gStatuses3
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x80
- lsls r0, 3
- ands r1, r0
- cmp r1, 0
- beq _08039ABA
- b _08039C74
-_08039ABA:
- str r1, [sp]
- movs r0, 0xC
- adds r1, r2, 0
- movs r2, 0x17
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08039AD2
- b _08039C74
-_08039AD2:
- ldrb r1, [r4]
- str r0, [sp]
- movs r0, 0xC
- movs r2, 0x47
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08039AEA
- b _08039C74
-_08039AEA:
- str r0, [sp]
- movs r0, 0xE
- movs r1, 0
- movs r2, 0x2A
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08039B1C
- ldrb r0, [r4]
- muls r0, r5
- adds r1, r0, r6
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _08039B10
- b _08039C74
-_08039B10:
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _08039B1C
- b _08039C74
-_08039B1C:
- movs r0, 0
- mov r8, r0
- ldr r0, _08039B6C @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08039B8E
- ldr r4, _08039B60 @ =gActiveBattler
- ldrb r7, [r4]
- adds r0, r7, 0
- bl GetBattlerPosition
- movs r5, 0x2
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerAtPosition
- ldr r1, _08039B70 @ =gAbsentBattlerFlags
- ldrb r1, [r1]
- ldr r2, _08039B74 @ =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08039B78
- ldrb r6, [r4]
- b _08039B94
- .align 2, 0
-_08039B5C: .4byte gBattleMons
-_08039B60: .4byte gActiveBattler
-_08039B64: .4byte 0x0400e000
-_08039B68: .4byte gStatuses3
-_08039B6C: .4byte gBattleTypeFlags
-_08039B70: .4byte gAbsentBattlerFlags
-_08039B74: .4byte gBitTable
-_08039B78:
- ldrb r0, [r4]
- bl GetBattlerPosition
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r6, r0, 24
- b _08039B94
-_08039B8E:
- ldr r0, _08039C64 @ =gActiveBattler
- ldrb r6, [r0]
- adds r7, r6, 0
-_08039B94:
- movs r5, 0
-_08039B96:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08039C68 @ =gEnemyParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08039BFA
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08039BFA
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08039BFA
- ldr r1, _08039C6C @ =gBattlerPartyIndexes
- lsls r0, r7, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _08039BFA
- lsls r0, r6, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _08039BFA
- ldr r0, _08039C70 @ =gBattleStruct
- ldr r1, [r0]
- adds r0, r7, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _08039BFA
- adds r0, r6, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _08039BFA
- movs r0, 0x1
- add r8, r0
-_08039BFA:
- adds r5, 0x1
- cmp r5, 0x5
- ble _08039B96
- mov r0, r8
- cmp r0, 0
- beq _08039C74
- bl ShouldSwitchIfPerishSong
- lsls r0, 24
- cmp r0, 0
- bne _08039C60
- bl sub_80391EC
- lsls r0, 24
- cmp r0, 0
- bne _08039C60
- bl sub_803937C
- lsls r0, 24
- cmp r0, 0
- bne _08039C60
- bl sub_8039598
- lsls r0, 24
- cmp r0, 0
- bne _08039C60
- movs r0, 0
- bl ai_has_super_effective_move_on_field
- lsls r0, 24
- cmp r0, 0
- bne _08039C74
- bl AI_AreStatsRaised
- lsls r0, 24
- cmp r0, 0
- bne _08039C74
- movs r0, 0x8
- movs r1, 0x2
- bl sub_8039828
- lsls r0, 24
- cmp r0, 0
- bne _08039C60
- movs r0, 0x4
- movs r1, 0x3
- bl sub_8039828
- lsls r0, 24
- cmp r0, 0
- beq _08039C74
-_08039C60:
- movs r0, 0x1
- b _08039C76
- .align 2, 0
-_08039C64: .4byte gActiveBattler
-_08039C68: .4byte gEnemyParty
-_08039C6C: .4byte gBattlerPartyIndexes
-_08039C70: .4byte gBattleStruct
-_08039C74:
- movs r0, 0
-_08039C76:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8039A80
-
- thumb_func_start sub_8039C84
-sub_8039C84: @ 8039C84
- push {r4-r6,lr}
- ldr r5, _08039CDC @ =gBattleTypeFlags
- ldr r0, [r5]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- bne _08039C94
- b _08039D96
-_08039C94:
- bl sub_8039A80
- lsls r0, 24
- cmp r0, 0
- beq _08039D8C
- ldr r0, _08039CE0 @ =gActiveBattler
- ldrb r0, [r0]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 25
- ldr r1, _08039CE4 @ =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- adds r0, 0x92
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _08039D5A
- bl sub_8039E3C
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bne _08039D44
- ldr r0, [r5]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08039CE8
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- b _08039CFC
- .align 2, 0
-_08039CDC: .4byte gBattleTypeFlags
-_08039CE0: .4byte gActiveBattler
-_08039CE4: .4byte gBattleStruct
-_08039CE8:
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0x3
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r5, r0, 24
-_08039CFC:
- movs r4, 0
-_08039CFE:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _08039D7C @ =gEnemyParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08039D3E
- ldr r1, _08039D80 @ =gBattlerPartyIndexes
- lsls r0, r6, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- beq _08039D3E
- lsls r0, r5, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- beq _08039D3E
- ldr r0, _08039D84 @ =gBattleStruct
- ldr r1, [r0]
- adds r0, r6, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r4, r0
- beq _08039D3E
- adds r0, r5, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r4, r0
- bne _08039D44
-_08039D3E:
- adds r4, 0x1
- cmp r4, 0x5
- ble _08039CFE
-_08039D44:
- ldr r0, _08039D88 @ =gActiveBattler
- ldrb r0, [r0]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 25
- ldr r1, _08039D84 @ =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- adds r0, 0x92
- strb r4, [r0]
-_08039D5A:
- ldr r4, _08039D88 @ =gActiveBattler
- ldrb r0, [r4]
- bl GetBattlerPosition
- ldrb r2, [r4]
- ldr r1, _08039D84 @ =gBattleStruct
- ldr r1, [r1]
- adds r2, r1
- adds r2, 0x5C
- lsls r0, 24
- lsrs r0, 25
- adds r0, r1
- adds r0, 0x92
- ldrb r0, [r0]
- strb r0, [r2]
- b _08039DA8
- .align 2, 0
-_08039D7C: .4byte gEnemyParty
-_08039D80: .4byte gBattlerPartyIndexes
-_08039D84: .4byte gBattleStruct
-_08039D88: .4byte gActiveBattler
-_08039D8C:
- bl sub_803A1F4
- lsls r0, 24
- cmp r0, 0
- bne _08039DA8
-_08039D96:
- ldr r0, _08039DB0 @ =gActiveBattler
- ldrb r0, [r0]
- movs r2, 0x1
- eors r2, r0
- lsls r2, 8
- movs r0, 0x1
- movs r1, 0
- bl EmitTwoReturnValues
-_08039DA8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08039DB0: .4byte gActiveBattler
- thumb_func_end sub_8039C84
-
- thumb_func_start sub_8039DB4
-sub_8039DB4: @ 8039DB4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r6, r3, 0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- movs r7, 0
- ldr r0, _08039E38 @ =gUnknown_824F050
- mov r10, r0
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08039E26
- mov r5, r10
-_08039DE2:
- ldrb r0, [r5]
- cmp r0, 0xFE
- beq _08039E18
- ldr r1, [sp]
- cmp r0, r1
- bne _08039E18
- ldrb r4, [r5, 0x1]
- cmp r4, r9
- bne _08039E02
- ldrb r1, [r6]
- ldrb r0, [r5, 0x2]
- muls r0, r1
- movs r1, 0xA
- bl __divsi3
- strb r0, [r6]
-_08039E02:
- cmp r4, r8
- bne _08039E18
- cmp r9, r8
- beq _08039E18
- ldrb r1, [r6]
- ldrb r0, [r5, 0x2]
- muls r0, r1
- movs r1, 0xA
- bl __divsi3
- strb r0, [r6]
-_08039E18:
- adds r5, 0x3
- adds r7, 0x3
- mov r1, r10
- adds r0, r7, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08039DE2
-_08039E26:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08039E38: .4byte gUnknown_824F050
- thumb_func_end sub_8039DB4
-
- thumb_func_start sub_8039E3C
-sub_8039E3C: @ 8039E3C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r4, _08039E98 @ =gActiveBattler
- ldrb r2, [r4]
- ldr r0, _08039E9C @ =gBattleStruct
- ldr r0, [r0]
- adds r0, r2, r0
- adds r1, r0, 0
- adds r1, 0x5C
- ldrb r0, [r1]
- cmp r0, 0x6
- beq _08039E5E
- b _0803A160
-_08039E5E:
- ldr r0, _08039EA0 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08039EF8
- str r2, [sp, 0xC]
- adds r0, r2, 0
- bl GetBattlerPosition
- movs r5, 0x2
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerAtPosition
- ldr r1, _08039EA4 @ =gAbsentBattlerFlags
- ldrb r1, [r1]
- ldr r2, _08039EA8 @ =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08039EAC
- ldrb r4, [r4]
- str r4, [sp, 0x10]
- b _08039EC2
- .align 2, 0
-_08039E98: .4byte gActiveBattler
-_08039E9C: .4byte gBattleStruct
-_08039EA0: .4byte gBattleTypeFlags
-_08039EA4: .4byte gAbsentBattlerFlags
-_08039EA8: .4byte gBitTable
-_08039EAC:
- ldrb r0, [r4]
- bl GetBattlerPosition
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x10]
-_08039EC2:
- bl Random
- movs r3, 0x2
- ands r0, r3
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, _08039EF0 @ =gAbsentBattlerFlags
- ldrb r1, [r0]
- ldr r2, _08039EF4 @ =gBitTable
- mov r4, r10
- lsls r0, r4, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08039F0A
- eors r4, r3
- lsls r0, r4, 24
- lsrs r0, 24
- mov r10, r0
- b _08039F0A
- .align 2, 0
-_08039EF0: .4byte gAbsentBattlerFlags
-_08039EF4: .4byte gBitTable
-_08039EF8:
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldrb r4, [r4]
- str r4, [sp, 0x10]
- str r4, [sp, 0xC]
-_08039F0A:
- movs r0, 0
- mov r9, r0
- mov r1, sp
- str r1, [sp, 0x14]
-_08039F12:
- movs r2, 0
- str r2, [sp, 0x4]
- movs r4, 0x6
- str r4, [sp, 0x8]
- movs r7, 0
- ldr r0, _08039FD8 @ =gBitTable
- mov r8, r0
-_08039F20:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _08039FDC @ =gEnemyParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _08039FF0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08039FF0
- mov r1, r8
- ldr r0, [r1]
- mov r2, r9
- ands r0, r2
- cmp r0, 0
- bne _08039FF0
- ldr r1, _08039FE0 @ =gBattlerPartyIndexes
- ldr r4, [sp, 0xC]
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- beq _08039FF0
- ldr r2, [sp, 0x10]
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- beq _08039FF0
- ldr r0, _08039FE4 @ =gBattleStruct
- ldr r1, [r0]
- adds r0, r4, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _08039FF0
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _08039FF0
- ldr r1, _08039FE8 @ =gBaseStats
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r5, [r0, 0x6]
- ldrb r6, [r0, 0x7]
- movs r0, 0xA
- ldr r4, [sp, 0x14]
- strb r0, [r4]
- movs r0, 0x58
- mov r4, r10
- muls r4, r0
- ldr r0, _08039FEC @ =gBattleMons
- adds r4, r0
- adds r0, r4, 0
- adds r0, 0x21
- ldrb r0, [r0]
- adds r1, r5, 0
- adds r2, r6, 0
- mov r3, sp
- bl sub_8039DB4
- adds r4, 0x22
- ldrb r0, [r4]
- adds r1, r5, 0
- adds r2, r6, 0
- mov r3, sp
- bl sub_8039DB4
- ldr r2, [sp, 0x4]
- ldr r1, [sp, 0x14]
- ldrb r1, [r1]
- cmp r2, r1
- bcs _08039FFE
- ldr r2, [sp, 0x14]
- ldrb r2, [r2]
- str r2, [sp, 0x4]
- lsls r0, r7, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- b _08039FFE
- .align 2, 0
-_08039FD8: .4byte gBitTable
-_08039FDC: .4byte gEnemyParty
-_08039FE0: .4byte gBattlerPartyIndexes
-_08039FE4: .4byte gBattleStruct
-_08039FE8: .4byte gBaseStats
-_08039FEC: .4byte gBattleMons
-_08039FF0:
- mov r4, r8
- ldr r0, [r4]
- mov r1, r9
- orrs r1, r0
- lsls r0, r1, 24
- lsrs r0, 24
- mov r9, r0
-_08039FFE:
- movs r2, 0x4
- add r8, r2
- adds r7, 0x1
- cmp r7, 0x5
- ble _08039F20
- ldr r4, [sp, 0x8]
- cmp r4, 0x6
- beq _0803A06C
- movs r7, 0
- movs r0, 0x64
- adds r5, r4, 0
- muls r5, r0
- ldr r6, _0803A060 @ =gEnemyParty
-_0803A018:
- adds r1, r7, 0
- adds r1, 0xD
- adds r0, r5, r6
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _0803A03E
- ldr r0, _0803A064 @ =gActiveBattler
- ldrb r1, [r0]
- adds r0, r4, 0
- mov r2, r10
- bl TypeCalc
- movs r1, 0x2
- ands r1, r0
- cmp r1, 0
- bne _0803A044
-_0803A03E:
- adds r7, 0x1
- cmp r7, 0x3
- ble _0803A018
-_0803A044:
- cmp r7, 0x4
- beq _0803A04A
- b _0803A15E
-_0803A04A:
- ldr r1, [sp, 0x8]
- lsls r0, r1, 2
- ldr r2, _0803A068 @ =gBitTable
- adds r0, r2
- ldr r0, [r0]
- mov r4, r9
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r0, 24
- b _0803A06E
- .align 2, 0
-_0803A060: .4byte gEnemyParty
-_0803A064: .4byte gActiveBattler
-_0803A068: .4byte gBitTable
-_0803A06C:
- movs r0, 0x3F
-_0803A06E:
- mov r9, r0
- mov r1, r9
- cmp r1, 0x3F
- beq _0803A078
- b _08039F12
-_0803A078:
- ldr r0, _0803A170 @ =gDynamicBasePower
- movs r1, 0
- strh r1, [r0]
- ldr r0, _0803A174 @ =gBattleStruct
- ldr r0, [r0]
- strb r1, [r0, 0x13]
- ldr r0, _0803A178 @ =gBattleScripting
- movs r2, 0x1
- strb r2, [r0, 0xE]
- ldr r0, _0803A17C @ =gMoveResultFlags
- strb r1, [r0]
- ldr r0, _0803A180 @ =gCritMultiplier
- strb r2, [r0]
- movs r2, 0
- str r2, [sp, 0x4]
- movs r4, 0x6
- str r4, [sp, 0x8]
- movs r7, 0
-_0803A09C:
- movs r0, 0x64
- adds r6, r7, 0
- muls r6, r0
- ldr r0, _0803A184 @ =gEnemyParty
- adds r4, r6, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- adds r1, r7, 0x1
- str r1, [sp, 0x18]
- cmp r0, 0
- beq _0803A158
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0803A158
- ldr r1, _0803A188 @ =gBattlerPartyIndexes
- ldr r2, [sp, 0xC]
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- beq _0803A158
- ldr r4, [sp, 0x10]
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- beq _0803A158
- ldr r0, _0803A174 @ =gBattleStruct
- ldr r1, [r0]
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _0803A158
- adds r0, r4, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _0803A158
- movs r5, 0
- mov r9, r6
- ldr r0, _0803A18C @ =gBattleMoveDamage
- mov r8, r0
- ldr r6, _0803A190 @ =gActiveBattler
-_0803A100:
- adds r1, r5, 0
- adds r1, 0xD
- ldr r0, _0803A184 @ =gEnemyParty
- add r0, r9
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0
- mov r1, r8
- str r0, [r1]
- cmp r4, 0
- beq _0803A13C
- ldr r0, _0803A194 @ =gBattleMoves
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0x1
- beq _0803A13C
- ldrb r0, [r6]
- mov r1, r10
- bl AI_CalcDmg
- ldrb r1, [r6]
- adds r0, r4, 0
- mov r2, r10
- bl TypeCalc
-_0803A13C:
- mov r2, r8
- ldr r0, [r2]
- ldr r4, [sp, 0x4]
- cmp r4, r0
- bge _0803A152
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- lsls r0, r7, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
-_0803A152:
- adds r5, 0x1
- cmp r5, 0x3
- ble _0803A100
-_0803A158:
- ldr r7, [sp, 0x18]
- cmp r7, 0x5
- ble _0803A09C
-_0803A15E:
- ldr r0, [sp, 0x8]
-_0803A160:
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0803A170: .4byte gDynamicBasePower
-_0803A174: .4byte gBattleStruct
-_0803A178: .4byte gBattleScripting
-_0803A17C: .4byte gMoveResultFlags
-_0803A180: .4byte gCritMultiplier
-_0803A184: .4byte gEnemyParty
-_0803A188: .4byte gBattlerPartyIndexes
-_0803A18C: .4byte gBattleMoveDamage
-_0803A190: .4byte gActiveBattler
-_0803A194: .4byte gBattleMoves
- thumb_func_end sub_8039E3C
-
- thumb_func_start sub_803A198
-sub_803A198: @ 803A198
- push {r4,lr}
- adds r2, r1, 0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bne _0803A1A8
- movs r0, 0x1
- b _0803A1EE
-_0803A1A8:
- ldrb r1, [r2, 0x4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0803A1B6
- movs r0, 0x2
- b _0803A1EE
-_0803A1B6:
- ldrb r4, [r2, 0x3]
- movs r3, 0x3F
- adds r0, r3, 0
- ands r0, r4
- cmp r0, 0
- beq _0803A1C6
- movs r0, 0x3
- b _0803A1EE
-_0803A1C6:
- ldrb r1, [r2]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _0803A1DC
- ldrb r0, [r2, 0x1]
- cmp r0, 0
- bne _0803A1DC
- ldrb r0, [r2, 0x2]
- cmp r0, 0
- beq _0803A1E0
-_0803A1DC:
- movs r0, 0x4
- b _0803A1EE
-_0803A1E0:
- movs r0, 0x80
- ands r0, r4
- cmp r0, 0
- bne _0803A1EC
- movs r0, 0x6
- b _0803A1EE
-_0803A1EC:
- movs r0, 0x5
-_0803A1EE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_803A198
-
- thumb_func_start sub_803A1F4
-sub_803A1F4: @ 803A1F4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0
- mov r10, r0
- movs r7, 0
- movs r1, 0
- mov r8, r1
-_0803A20A:
- movs r0, 0x64
- mov r1, r8
- muls r1, r0
- ldr r0, _0803A2A8 @ =gEnemyParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0803A246
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _0803A246
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _0803A246
- mov r0, r10
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
-_0803A246:
- movs r2, 0x1
- add r8, r2
- mov r0, r8
- cmp r0, 0x5
- ble _0803A20A
- movs r1, 0
- mov r8, r1
-_0803A254:
- ldr r1, _0803A2AC @ =gBattleResources
- mov r2, r8
- cmp r2, 0
- beq _0803A26E
- ldr r0, [r1]
- ldr r0, [r0, 0x18]
- adds r0, 0x2C
- ldrb r0, [r0]
- subs r0, r2
- adds r0, 0x1
- cmp r10, r0
- ble _0803A26E
- b _0803A644
-_0803A26E:
- ldr r0, [r1]
- ldr r0, [r0, 0x18]
- mov r2, r8
- lsls r1, r2, 1
- adds r0, 0x24
- adds r0, r1
- ldrh r0, [r0]
- mov r9, r0
- str r1, [sp]
- cmp r0, 0
- bne _0803A286
- b _0803A644
-_0803A286:
- ldr r1, _0803A2B0 @ =gItemEffectTable
- subs r0, 0xD
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- cmp r1, 0
- bne _0803A296
- b _0803A644
-_0803A296:
- mov r0, r9
- cmp r0, 0xAF
- bne _0803A2BC
- ldr r0, _0803A2B4 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _0803A2B8 @ =0x00003108
- adds r5, r0, r1
- b _0803A2BE
- .align 2, 0
-_0803A2A8: .4byte gEnemyParty
-_0803A2AC: .4byte gBattleResources
-_0803A2B0: .4byte gItemEffectTable
-_0803A2B4: .4byte gSaveBlock1Ptr
-_0803A2B8: .4byte 0x00003108
-_0803A2BC:
- adds r5, r1, 0
-_0803A2BE:
- mov r2, r9
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r5, 0
- bl sub_803A198
- ldr r4, _0803A2F8 @ =gActiveBattler
- ldrb r1, [r4]
- lsrs r1, 1
- ldr r3, _0803A2FC @ =gBattleStruct
- ldr r2, [r3]
- adds r1, r2
- adds r1, 0xC4
- strb r0, [r1]
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC4
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0x5
- bls _0803A2EE
- b _0803A5F8
-_0803A2EE:
- lsls r0, 2
- ldr r1, _0803A300 @ =_0803A304
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0803A2F8: .4byte gActiveBattler
-_0803A2FC: .4byte gBattleStruct
-_0803A300: .4byte _0803A304
- .align 2, 0
-_0803A304:
- .4byte _0803A31C
- .4byte _0803A348
- .4byte _0803A390
- .4byte _0803A4E8
- .4byte _0803A5C8
- .4byte _0803A650
-_0803A31C:
- ldr r2, _0803A340 @ =gBattleMons
- ldr r0, _0803A344 @ =gActiveBattler
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r1, [r0, 0x2C]
- ldrh r0, [r0, 0x28]
- lsrs r1, 2
- cmp r0, r1
- bcc _0803A334
- b _0803A5F8
-_0803A334:
- cmp r0, 0
- bne _0803A33A
- b _0803A5F8
-_0803A33A:
- movs r7, 0x1
- b _0803A5FC
- .align 2, 0
-_0803A340: .4byte gBattleMons
-_0803A344: .4byte gActiveBattler
-_0803A348:
- mov r0, r9
- movs r1, 0x4
- movs r2, 0x4
- bl GetItemEffectParamOffset
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0803A35C
- b _0803A5F8
-_0803A35C:
- ldr r2, _0803A388 @ =gBattleMons
- ldr r0, _0803A38C @ =gActiveBattler
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r1, r0, r2
- ldrh r2, [r1, 0x28]
- cmp r2, 0
- bne _0803A370
- b _0803A5F8
-_0803A370:
- ldrh r3, [r1, 0x2C]
- lsrs r0, r3, 2
- cmp r2, r0
- bcc _0803A33A
- adds r0, r2, 0
- subs r0, r3, r0
- adds r1, r5, r4
- ldrb r1, [r1]
- cmp r0, r1
- bgt _0803A386
- b _0803A5F8
-_0803A386:
- b _0803A33A
- .align 2, 0
-_0803A388: .4byte gBattleMons
-_0803A38C: .4byte gActiveBattler
-_0803A390:
- ldr r3, _0803A4DC @ =gActiveBattler
- ldrb r0, [r3]
- lsrs r0, 1
- ldr r2, _0803A4E0 @ =gBattleStruct
- ldr r1, [r2]
- adds r0, r1
- adds r0, 0xC6
- movs r1, 0
- strb r1, [r0]
- ldrb r1, [r5, 0x3]
- movs r6, 0x20
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0803A3D4
- ldr r1, _0803A4E4 @ =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _0803A3D4
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_0803A3D4:
- ldrb r1, [r5, 0x3]
- movs r6, 0x10
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0803A40E
- ldr r1, _0803A4E4 @ =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0803A3FE
- movs r0, 0x80
- ands r1, r0
- cmp r1, 0
- beq _0803A40E
-_0803A3FE:
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_0803A40E:
- ldrb r1, [r5, 0x3]
- movs r6, 0x8
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0803A440
- ldr r1, _0803A4E4 @ =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0803A440
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_0803A440:
- ldrb r1, [r5, 0x3]
- movs r6, 0x4
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0803A472
- ldr r1, _0803A4E4 @ =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0803A472
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_0803A472:
- ldrb r1, [r5, 0x3]
- movs r6, 0x2
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0803A4A4
- ldr r1, _0803A4E4 @ =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0803A4A4
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_0803A4A4:
- ldrb r1, [r5, 0x3]
- movs r4, 0x1
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0803A4B2
- b _0803A5F8
-_0803A4B2:
- ldr r1, _0803A4E4 @ =gBattleMons
- ldrb r3, [r3]
- movs r0, 0x58
- muls r0, r3
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _0803A4CA
- b _0803A5F8
-_0803A4CA:
- lsrs r1, r3, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r4
- strb r0, [r1]
- b _0803A33A
- .align 2, 0
-_0803A4DC: .4byte gActiveBattler
-_0803A4E0: .4byte gBattleStruct
-_0803A4E4: .4byte gBattleMons
-_0803A4E8:
- ldr r4, _0803A5BC @ =gActiveBattler
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r3, _0803A5C0 @ =gBattleStruct
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- movs r1, 0
- strb r1, [r0]
- ldr r1, _0803A5C4 @ =gDisableStructs
- ldrb r2, [r4]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x16]
- cmp r0, 0
- beq _0803A5F8
- ldrb r1, [r5]
- movs r6, 0xF
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0803A528
- lsrs r2, 1
- ldr r0, [r3]
- adds r2, r0
- adds r2, 0xC6
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_0803A528:
- ldrb r1, [r5, 0x1]
- movs r7, 0xF0
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _0803A546
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
-_0803A546:
- ldrb r1, [r5, 0x1]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0803A562
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_0803A562:
- ldrb r1, [r5, 0x2]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0803A57E
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0]
-_0803A57E:
- ldrb r1, [r5, 0x2]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _0803A59A
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
-_0803A59A:
- ldrb r1, [r5]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0
- bne _0803A5A6
- b _0803A33A
-_0803A5A6:
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- b _0803A33A
- .align 2, 0
-_0803A5BC: .4byte gActiveBattler
-_0803A5C0: .4byte gBattleStruct
-_0803A5C4: .4byte gDisableStructs
-_0803A5C8:
- ldr r4, _0803A630 @ =gActiveBattler
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _0803A634 @ =gDisableStructs
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x16]
- cmp r0, 0
- beq _0803A5F8
- ldr r0, _0803A638 @ =gSideTimers
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- bne _0803A5F8
- b _0803A33A
-_0803A5F8:
- cmp r7, 0
- beq _0803A644
-_0803A5FC:
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl EmitTwoReturnValues
- ldr r0, _0803A630 @ =gActiveBattler
- ldrb r0, [r0]
- lsrs r0, 1
- ldr r1, _0803A63C @ =gBattleStruct
- ldr r1, [r1]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC0
- mov r1, r9
- strb r1, [r0]
- ldr r0, _0803A640 @ =gBattleResources
- ldr r0, [r0]
- ldr r0, [r0, 0x18]
- adds r0, 0x24
- ldr r2, [sp]
- adds r0, r2
- movs r1, 0
- strh r1, [r0]
- adds r0, r7, 0
- b _0803A652
- .align 2, 0
-_0803A630: .4byte gActiveBattler
-_0803A634: .4byte gDisableStructs
-_0803A638: .4byte gSideTimers
-_0803A63C: .4byte gBattleStruct
-_0803A640: .4byte gBattleResources
-_0803A644:
- movs r0, 0x1
- add r8, r0
- mov r1, r8
- cmp r1, 0x3
- bgt _0803A650
- b _0803A254
-_0803A650:
- movs r0, 0
-_0803A652:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_803A1F4
-
- .align 2, 0 @ Don't pad with nop.