mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 19:54:21 +01:00
1046 lines
15 KiB
ArmAsm
1046 lines
15 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_806957C
|
|
sub_806957C: @ 806957C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x30
|
|
adds r6, r0, 0
|
|
str r1, [sp, 0x4]
|
|
str r2, [sp, 0x8]
|
|
ldr r0, [sp, 0x50]
|
|
ldr r1, [sp, 0x54]
|
|
ldr r2, [sp, 0x58]
|
|
ldr r4, [sp, 0x5C]
|
|
lsls r3, 16
|
|
lsrs r3, 16
|
|
str r3, [sp, 0xC]
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
lsls r1, 24
|
|
lsrs r7, r1, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
str r2, [sp, 0x10]
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
str r4, [sp, 0x14]
|
|
movs r5, 0
|
|
cmp r3, 0
|
|
bne _080695D4
|
|
ldr r2, =gBattleMovePower
|
|
ldr r1, =gBattleMoves
|
|
ldr r3, [sp, 0x8]
|
|
lsls r0, r3, 1
|
|
adds r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x1]
|
|
strh r0, [r2]
|
|
b _080695D8
|
|
.pool
|
|
_080695D4:
|
|
ldr r0, =gBattleMovePower
|
|
strh r3, [r0]
|
|
_080695D8:
|
|
cmp r7, 0
|
|
bne _080695F8
|
|
ldr r1, =gBattleMoves
|
|
ldr r7, [sp, 0x8]
|
|
lsls r0, r7, 1
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x2]
|
|
mov r10, r0
|
|
b _08069602
|
|
.pool
|
|
_080695F8:
|
|
movs r0, 0x3F
|
|
mov r10, r0
|
|
mov r1, r10
|
|
ands r1, r7
|
|
mov r10, r1
|
|
_08069602:
|
|
ldrh r7, [r6, 0x2]
|
|
ldr r2, [sp, 0x4]
|
|
ldrh r2, [r2, 0x4]
|
|
str r2, [sp, 0x18]
|
|
ldrh r3, [r6, 0x8]
|
|
mov r8, r3
|
|
ldr r0, [sp, 0x4]
|
|
ldrh r0, [r0, 0xA]
|
|
str r0, [sp, 0x1C]
|
|
ldrh r0, [r6, 0x2E]
|
|
cmp r0, 0xAF
|
|
bne _08069634
|
|
ldr r1, =gEnigmaBerries
|
|
ldr r2, [sp, 0x10]
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r3, [r0, 0x7]
|
|
mov r9, r3
|
|
ldrb r0, [r0, 0x1A]
|
|
b _0806964A
|
|
.pool
|
|
_08069634:
|
|
ldrh r0, [r6, 0x2E]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
ldrh r0, [r6, 0x2E]
|
|
bl ItemId_GetHoldEffectParam
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_0806964A:
|
|
str r0, [sp, 0x24]
|
|
ldr r1, [sp, 0x4]
|
|
ldrh r0, [r1, 0x2E]
|
|
cmp r0, 0xAF
|
|
bne _0806967E
|
|
ldr r1, =gEnigmaBerries
|
|
ldr r2, [sp, 0x14]
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x7]
|
|
str r0, [sp, 0x20]
|
|
b _08069694
|
|
.pool
|
|
_0806966C:
|
|
ldr r0, [sp, 0x24]
|
|
adds r0, 0x64
|
|
muls r0, r7
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
b _0806977C
|
|
_0806967E:
|
|
ldr r3, [sp, 0x4]
|
|
ldrh r0, [r3, 0x2E]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x20]
|
|
ldr r1, [sp, 0x4]
|
|
ldrh r0, [r1, 0x2E]
|
|
bl ItemId_GetHoldEffectParam
|
|
_08069694:
|
|
adds r0, r6, 0
|
|
adds r0, 0x20
|
|
ldrb r1, [r0]
|
|
str r0, [sp, 0x28]
|
|
cmp r1, 0x25
|
|
beq _080696A4
|
|
cmp r1, 0x4A
|
|
bne _080696A8
|
|
_080696A4:
|
|
lsls r0, r7, 17
|
|
lsrs r7, r0, 16
|
|
_080696A8:
|
|
ldr r0, =0x00000867
|
|
ldr r1, [sp, 0x10]
|
|
bl sub_8069ED8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080696C4
|
|
movs r0, 0x6E
|
|
muls r0, r7
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
_080696C4:
|
|
ldr r0, =0x0000086b
|
|
ldr r1, [sp, 0x14]
|
|
bl sub_8069ED8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080696E4
|
|
movs r0, 0x6E
|
|
ldr r2, [sp, 0x18]
|
|
muls r0, r2
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x18]
|
|
_080696E4:
|
|
ldr r4, =0x0000086d
|
|
adds r0, r4, 0
|
|
ldr r1, [sp, 0x10]
|
|
bl sub_8069ED8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08069708
|
|
movs r0, 0x6E
|
|
mov r3, r8
|
|
muls r3, r0
|
|
adds r0, r3, 0
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
_08069708:
|
|
adds r0, r4, 0
|
|
ldr r1, [sp, 0x14]
|
|
bl sub_8069ED8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08069728
|
|
movs r0, 0x6E
|
|
ldr r1, [sp, 0x1C]
|
|
muls r0, r1
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x1C]
|
|
_08069728:
|
|
movs r2, 0
|
|
ldr r4, =gHoldEffectToType
|
|
ldr r3, [sp, 0x4]
|
|
adds r3, 0x20
|
|
str r3, [sp, 0x2C]
|
|
adds r3, r4, 0
|
|
_08069734:
|
|
lsls r1, r2, 1
|
|
ldrb r0, [r3]
|
|
cmp r9, r0
|
|
bne _08069774
|
|
adds r0, r4, 0x1
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
cmp r10, r0
|
|
bne _08069774
|
|
mov r1, r10
|
|
cmp r1, 0x8
|
|
bls _0806966C
|
|
ldr r0, [sp, 0x24]
|
|
adds r0, 0x64
|
|
mov r2, r8
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
b _0806977C
|
|
.pool
|
|
_08069774:
|
|
adds r3, 0x2
|
|
adds r2, 0x1
|
|
cmp r2, 0x10
|
|
bls _08069734
|
|
_0806977C:
|
|
mov r3, r9
|
|
cmp r3, 0x1D
|
|
bne _08069790
|
|
movs r0, 0x96
|
|
muls r0, r7
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
_08069790:
|
|
mov r0, r9
|
|
cmp r0, 0x22
|
|
bne _080697C6
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, =0x003f0100
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080697C6
|
|
ldr r1, =0xfffffe69
|
|
adds r0, r1, 0
|
|
ldrh r2, [r6]
|
|
adds r0, r2
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
bhi _080697C6
|
|
movs r0, 0x96
|
|
mov r3, r8
|
|
muls r3, r0
|
|
adds r0, r3, 0
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
_080697C6:
|
|
ldr r0, [sp, 0x20]
|
|
cmp r0, 0x22
|
|
bne _080697FC
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, =0x003f0100
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080697FC
|
|
ldr r1, =0xfffffe69
|
|
adds r0, r1, 0
|
|
ldr r2, [sp, 0x4]
|
|
ldrh r2, [r2]
|
|
adds r0, r2
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
bhi _080697FC
|
|
movs r0, 0x96
|
|
ldr r3, [sp, 0x1C]
|
|
muls r0, r3
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x1C]
|
|
_080697FC:
|
|
mov r0, r9
|
|
cmp r0, 0x23
|
|
bne _08069812
|
|
ldrh r1, [r6]
|
|
ldr r0, =0x00000175
|
|
cmp r1, r0
|
|
bne _08069812
|
|
mov r1, r8
|
|
lsls r0, r1, 17
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
_08069812:
|
|
ldr r2, [sp, 0x20]
|
|
cmp r2, 0x24
|
|
bne _0806982A
|
|
ldr r3, [sp, 0x4]
|
|
ldrh r1, [r3]
|
|
ldr r0, =0x00000175
|
|
cmp r1, r0
|
|
bne _0806982A
|
|
ldr r1, [sp, 0x1C]
|
|
lsls r0, r1, 17
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x1C]
|
|
_0806982A:
|
|
mov r2, r9
|
|
cmp r2, 0x2D
|
|
bne _0806983E
|
|
ldrh r0, [r6]
|
|
cmp r0, 0x19
|
|
bne _0806983E
|
|
mov r3, r8
|
|
lsls r0, r3, 17
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
_0806983E:
|
|
ldr r0, [sp, 0x20]
|
|
cmp r0, 0x40
|
|
bne _08069854
|
|
ldr r1, [sp, 0x4]
|
|
ldrh r0, [r1]
|
|
cmp r0, 0x84
|
|
bne _08069854
|
|
ldr r2, [sp, 0x18]
|
|
lsls r0, r2, 17
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x18]
|
|
_08069854:
|
|
mov r3, r9
|
|
cmp r3, 0x41
|
|
bne _0806986A
|
|
ldrh r0, [r6]
|
|
subs r0, 0x68
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
bhi _0806986A
|
|
lsls r0, r7, 17
|
|
lsrs r7, r0, 16
|
|
_0806986A:
|
|
ldr r1, [sp, 0x2C]
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x2F
|
|
bne _08069882
|
|
mov r2, r10
|
|
cmp r2, 0xA
|
|
beq _0806987C
|
|
cmp r2, 0xF
|
|
bne _08069882
|
|
_0806987C:
|
|
mov r3, r8
|
|
lsrs r3, 1
|
|
mov r8, r3
|
|
_08069882:
|
|
ldr r0, [sp, 0x28]
|
|
ldrb r4, [r0]
|
|
cmp r4, 0x37
|
|
bne _08069898
|
|
movs r0, 0x96
|
|
muls r0, r7
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
_08069898:
|
|
cmp r4, 0x39
|
|
bne _080698C6
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xE
|
|
movs r1, 0
|
|
movs r2, 0x3A
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080698C6
|
|
movs r0, 0x96
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
_080698C6:
|
|
ldr r2, [sp, 0x28]
|
|
ldrb r0, [r2]
|
|
cmp r0, 0x3A
|
|
bne _080698F8
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xE
|
|
movs r1, 0
|
|
movs r2, 0x39
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080698F8
|
|
movs r0, 0x96
|
|
mov r3, r8
|
|
muls r3, r0
|
|
adds r0, r3, 0
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
_080698F8:
|
|
ldr r1, [sp, 0x28]
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x3E
|
|
bne _08069914
|
|
ldr r0, [r6, 0x4C]
|
|
cmp r0, 0
|
|
beq _08069914
|
|
movs r0, 0x96
|
|
muls r0, r7
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
_08069914:
|
|
ldr r2, [sp, 0x2C]
|
|
ldrb r0, [r2]
|
|
cmp r0, 0x3F
|
|
bne _08069936
|
|
ldr r3, [sp, 0x4]
|
|
ldr r0, [r3, 0x4C]
|
|
cmp r0, 0
|
|
beq _08069936
|
|
movs r0, 0x96
|
|
ldr r1, [sp, 0x18]
|
|
muls r0, r1
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x18]
|
|
_08069936:
|
|
mov r2, r10
|
|
cmp r2, 0xD
|
|
bne _0806995A
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xE
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0xFD
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806995A
|
|
ldr r1, =gBattleMovePower
|
|
ldrh r0, [r1]
|
|
lsrs r0, 1
|
|
strh r0, [r1]
|
|
_0806995A:
|
|
mov r3, r10
|
|
cmp r3, 0xA
|
|
bne _0806997E
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xE
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0xFE
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806997E
|
|
ldr r1, =gBattleMovePower
|
|
ldrh r0, [r1]
|
|
lsrs r0, 1
|
|
strh r0, [r1]
|
|
_0806997E:
|
|
mov r0, r10
|
|
cmp r0, 0xC
|
|
bne _080699AE
|
|
ldr r1, [sp, 0x28]
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x41
|
|
bne _080699AE
|
|
ldrh r0, [r6, 0x2C]
|
|
movs r1, 0x3
|
|
bl __udivsi3
|
|
ldrh r1, [r6, 0x28]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r1, r0
|
|
bhi _080699AE
|
|
ldr r4, =gBattleMovePower
|
|
ldrh r1, [r4]
|
|
movs r0, 0x96
|
|
muls r0, r1
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
strh r0, [r4]
|
|
_080699AE:
|
|
mov r2, r10
|
|
cmp r2, 0xA
|
|
bne _080699DE
|
|
ldr r3, [sp, 0x28]
|
|
ldrb r0, [r3]
|
|
cmp r0, 0x42
|
|
bne _080699DE
|
|
ldrh r0, [r6, 0x2C]
|
|
movs r1, 0x3
|
|
bl __udivsi3
|
|
ldrh r1, [r6, 0x28]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r1, r0
|
|
bhi _080699DE
|
|
ldr r4, =gBattleMovePower
|
|
ldrh r1, [r4]
|
|
movs r0, 0x96
|
|
muls r0, r1
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
strh r0, [r4]
|
|
_080699DE:
|
|
mov r0, r10
|
|
cmp r0, 0xB
|
|
bne _08069A0E
|
|
ldr r1, [sp, 0x28]
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x43
|
|
bne _08069A0E
|
|
ldrh r0, [r6, 0x2C]
|
|
movs r1, 0x3
|
|
bl __udivsi3
|
|
ldrh r1, [r6, 0x28]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r1, r0
|
|
bhi _08069A0E
|
|
ldr r4, =gBattleMovePower
|
|
ldrh r1, [r4]
|
|
movs r0, 0x96
|
|
muls r0, r1
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
strh r0, [r4]
|
|
_08069A0E:
|
|
mov r2, r10
|
|
cmp r2, 0x6
|
|
bne _08069A3E
|
|
ldr r3, [sp, 0x28]
|
|
ldrb r0, [r3]
|
|
cmp r0, 0x44
|
|
bne _08069A3E
|
|
ldrh r0, [r6, 0x2C]
|
|
movs r1, 0x3
|
|
bl __udivsi3
|
|
ldrh r1, [r6, 0x28]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r1, r0
|
|
bhi _08069A3E
|
|
ldr r4, =gBattleMovePower
|
|
ldrh r1, [r4]
|
|
movs r0, 0x96
|
|
muls r0, r1
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
strh r0, [r4]
|
|
_08069A3E:
|
|
ldr r2, =gBattleMoves
|
|
ldr r0, =gCurrentMove
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x7
|
|
bne _08069A58
|
|
ldr r0, [sp, 0x18]
|
|
lsrs r0, 1
|
|
str r0, [sp, 0x18]
|
|
_08069A58:
|
|
mov r1, r10
|
|
cmp r1, 0x8
|
|
bls _08069A60
|
|
b _08069BC2
|
|
_08069A60:
|
|
ldr r0, =gCritMultiplier
|
|
ldrb r1, [r0]
|
|
adds r4, r0, 0
|
|
cmp r1, 0x2
|
|
bne _08069AA0
|
|
movs r0, 0x19
|
|
ldrsb r0, [r6, r0]
|
|
cmp r0, 0x6
|
|
ble _08069A9C
|
|
ldr r2, =gUnknown_08329D2E
|
|
b _08069AA6
|
|
.pool
|
|
_08069A9C:
|
|
adds r5, r7, 0
|
|
b _08069ABE
|
|
_08069AA0:
|
|
ldr r2, =gUnknown_08329D2E
|
|
movs r0, 0x19
|
|
ldrsb r0, [r6, r0]
|
|
_08069AA6:
|
|
lsls r0, 1
|
|
adds r1, r0, r2
|
|
ldrb r1, [r1]
|
|
adds r5, r7, 0
|
|
muls r5, r1
|
|
adds r2, 0x1
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
adds r0, r5, 0
|
|
bl __divsi3
|
|
adds r5, r0, 0
|
|
_08069ABE:
|
|
ldr r0, =gBattleMovePower
|
|
ldrh r0, [r0]
|
|
muls r5, r0
|
|
adds r0, r6, 0
|
|
adds r0, 0x2A
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
movs r1, 0x5
|
|
bl __divsi3
|
|
adds r0, 0x2
|
|
muls r5, r0
|
|
ldrb r0, [r4]
|
|
cmp r0, 0x2
|
|
bne _08069AFC
|
|
ldr r2, [sp, 0x4]
|
|
movs r0, 0x1A
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, 0x5
|
|
bgt _08069AF8
|
|
ldr r2, =gUnknown_08329D2E
|
|
ldr r3, [sp, 0x4]
|
|
movs r0, 0x1A
|
|
ldrsb r0, [r3, r0]
|
|
b _08069B04
|
|
.pool
|
|
_08069AF8:
|
|
ldr r3, [sp, 0x18]
|
|
b _08069B1E
|
|
_08069AFC:
|
|
ldr r2, =gUnknown_08329D2E
|
|
ldr r1, [sp, 0x4]
|
|
movs r0, 0x1A
|
|
ldrsb r0, [r1, r0]
|
|
_08069B04:
|
|
lsls r0, 1
|
|
adds r1, r0, r2
|
|
ldrb r1, [r1]
|
|
ldr r7, [sp, 0x18]
|
|
adds r3, r7, 0
|
|
muls r3, r1
|
|
adds r2, 0x1
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
adds r0, r3, 0
|
|
bl __divsi3
|
|
adds r3, r0, 0
|
|
_08069B1E:
|
|
adds r0, r5, 0
|
|
adds r1, r3, 0
|
|
bl __divsi3
|
|
adds r5, r0, 0
|
|
movs r1, 0x32
|
|
bl __divsi3
|
|
adds r5, r0, 0
|
|
ldr r0, [r6, 0x4C]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08069B48
|
|
ldr r1, [sp, 0x28]
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x3E
|
|
beq _08069B48
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_08069B48:
|
|
movs r0, 0x1
|
|
ldr r2, [sp, 0xC]
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _08069B8A
|
|
ldrb r1, [r4]
|
|
cmp r1, 0x1
|
|
bne _08069B8A
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08069B84
|
|
movs r0, 0x2
|
|
bl sub_8069DEC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _08069B84
|
|
adds r0, r5, 0
|
|
movs r1, 0x3
|
|
bl __divsi3
|
|
lsls r5, r0, 1
|
|
b _08069B8A
|
|
.pool
|
|
_08069B84:
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_08069B8A:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08069BBC
|
|
ldr r0, =gBattleMoves
|
|
ldr r3, [sp, 0x8]
|
|
lsls r1, r3, 1
|
|
adds r1, r3
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x6]
|
|
cmp r0, 0x8
|
|
bne _08069BBC
|
|
movs r0, 0x2
|
|
bl sub_8069DEC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _08069BBC
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_08069BBC:
|
|
cmp r5, 0
|
|
bne _08069BC2
|
|
movs r5, 0x1
|
|
_08069BC2:
|
|
mov r7, r10
|
|
cmp r7, 0x9
|
|
bne _08069BCA
|
|
movs r5, 0
|
|
_08069BCA:
|
|
mov r0, r10
|
|
cmp r0, 0x9
|
|
bhi _08069BD2
|
|
b _08069DD4
|
|
_08069BD2:
|
|
ldr r0, =gCritMultiplier
|
|
ldrb r1, [r0]
|
|
adds r4, r0, 0
|
|
cmp r1, 0x2
|
|
bne _08069BFC
|
|
movs r0, 0x1C
|
|
ldrsb r0, [r6, r0]
|
|
cmp r0, 0x6
|
|
ble _08069BF8
|
|
ldr r2, =gUnknown_08329D2E
|
|
b _08069C02
|
|
.pool
|
|
_08069BF8:
|
|
mov r5, r8
|
|
b _08069C1A
|
|
_08069BFC:
|
|
ldr r2, =gUnknown_08329D2E
|
|
movs r0, 0x1C
|
|
ldrsb r0, [r6, r0]
|
|
_08069C02:
|
|
lsls r0, 1
|
|
adds r1, r0, r2
|
|
ldrb r1, [r1]
|
|
mov r5, r8
|
|
muls r5, r1
|
|
adds r2, 0x1
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
adds r0, r5, 0
|
|
bl __divsi3
|
|
adds r5, r0, 0
|
|
_08069C1A:
|
|
ldr r0, =gBattleMovePower
|
|
ldrh r0, [r0]
|
|
muls r5, r0
|
|
adds r0, r6, 0
|
|
adds r0, 0x2A
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
movs r1, 0x5
|
|
bl __divsi3
|
|
adds r0, 0x2
|
|
muls r5, r0
|
|
ldrb r0, [r4]
|
|
cmp r0, 0x2
|
|
bne _08069C54
|
|
ldr r1, [sp, 0x4]
|
|
movs r0, 0x1D
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, 0x5
|
|
bgt _08069C50
|
|
ldr r2, =gUnknown_08329D2E
|
|
b _08069C5C
|
|
.pool
|
|
_08069C50:
|
|
ldr r3, [sp, 0x1C]
|
|
b _08069C76
|
|
_08069C54:
|
|
ldr r2, =gUnknown_08329D2E
|
|
ldr r7, [sp, 0x4]
|
|
movs r0, 0x1D
|
|
ldrsb r0, [r7, r0]
|
|
_08069C5C:
|
|
lsls r0, 1
|
|
adds r1, r0, r2
|
|
ldrb r1, [r1]
|
|
ldr r6, [sp, 0x1C]
|
|
adds r3, r6, 0
|
|
muls r3, r1
|
|
adds r2, 0x1
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
adds r0, r3, 0
|
|
bl __divsi3
|
|
adds r3, r0, 0
|
|
_08069C76:
|
|
adds r0, r5, 0
|
|
adds r1, r3, 0
|
|
bl __divsi3
|
|
adds r5, r0, 0
|
|
movs r1, 0x32
|
|
bl __divsi3
|
|
adds r5, r0, 0
|
|
movs r0, 0x2
|
|
ldr r7, [sp, 0xC]
|
|
ands r0, r7
|
|
cmp r0, 0
|
|
beq _08069CCA
|
|
ldrb r1, [r4]
|
|
cmp r1, 0x1
|
|
bne _08069CCA
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08069CC4
|
|
movs r0, 0x2
|
|
bl sub_8069DEC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _08069CC4
|
|
adds r0, r5, 0
|
|
movs r1, 0x3
|
|
bl __divsi3
|
|
lsls r5, r0, 1
|
|
b _08069CCA
|
|
.pool
|
|
_08069CC4:
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_08069CCA:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08069CFC
|
|
ldr r0, =gBattleMoves
|
|
ldr r2, [sp, 0x8]
|
|
lsls r1, r2, 1
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x6]
|
|
cmp r0, 0x8
|
|
bne _08069CFC
|
|
movs r0, 0x2
|
|
bl sub_8069DEC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _08069CFC
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_08069CFC:
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xE
|
|
movs r1, 0
|
|
movs r2, 0xD
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _08069DAC
|
|
str r0, [sp]
|
|
movs r0, 0xE
|
|
movs r1, 0
|
|
movs r2, 0x4D
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08069DAC
|
|
ldr r2, =gBattleWeather
|
|
ldrh r1, [r2]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
adds r4, r2, 0
|
|
cmp r0, 0
|
|
beq _08069D64
|
|
mov r3, r10
|
|
cmp r3, 0xA
|
|
beq _08069D50
|
|
cmp r3, 0xB
|
|
beq _08069D58
|
|
b _08069D64
|
|
.pool
|
|
_08069D50:
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
b _08069D64
|
|
_08069D58:
|
|
lsls r0, r5, 4
|
|
subs r0, r5
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
adds r5, r0, 0
|
|
_08069D64:
|
|
ldrh r1, [r4]
|
|
movs r0, 0x9F
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08069D7C
|
|
ldr r0, =gCurrentMove
|
|
ldrh r0, [r0]
|
|
cmp r0, 0x4C
|
|
bne _08069D7C
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_08069D7C:
|
|
ldrh r1, [r4]
|
|
movs r0, 0x60
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08069DAC
|
|
mov r6, r10
|
|
cmp r6, 0xA
|
|
beq _08069D98
|
|
cmp r6, 0xB
|
|
beq _08069DA6
|
|
b _08069DAC
|
|
.pool
|
|
_08069D98:
|
|
lsls r0, r5, 4
|
|
subs r0, r5
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
adds r5, r0, 0
|
|
b _08069DAC
|
|
_08069DA6:
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_08069DAC:
|
|
ldr r0, =gBattleResources
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, 0x4]
|
|
ldr r7, [sp, 0x10]
|
|
lsls r1, r7, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08069DD4
|
|
mov r0, r10
|
|
cmp r0, 0xA
|
|
bne _08069DD4
|
|
lsls r0, r5, 4
|
|
subs r0, r5
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
adds r5, r0, 0
|
|
_08069DD4:
|
|
adds r0, r5, 0x2
|
|
add sp, 0x30
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_806957C
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|