summaryrefslogtreecommitdiff
path: root/asm/calculate_base_damage.s
diff options
context:
space:
mode:
authorDiegoisawesome <diego@domoreaweso.me>2016-11-01 12:20:17 -0500
committerDiegoisawesome <diego@domoreaweso.me>2016-11-01 12:20:17 -0500
commitb4a39100c0e052bdab3cfa2da707072c2ee18115 (patch)
treedcea69ec49430f004c17ff71b77587cafd78c69a /asm/calculate_base_damage.s
parentf09f9cef752c37e3cc0686573c1fdb29da842772 (diff)
parent6f0e42a91aeeedd64725ce57e3dad6a38421d8e9 (diff)
Merge https://github.com/pret/pokeemerald
Diffstat (limited to 'asm/calculate_base_damage.s')
-rw-r--r--asm/calculate_base_damage.s1045
1 files changed, 1045 insertions, 0 deletions
diff --git a/asm/calculate_base_damage.s b/asm/calculate_base_damage.s
new file mode 100644
index 000000000..d82db8d09
--- /dev/null
+++ b/asm/calculate_base_damage.s
@@ -0,0 +1,1045 @@
+ .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, =0x020244e0
+ 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, =0x020244e0
+ 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, =0x02024404
+ 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_get_x12
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldrh r0, [r6, 0x2E]
+ bl itemid_get_quality
+ 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, =0x02024404
+ 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_get_x12
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x20]
+ ldr r1, [sp, 0x4]
+ ldrh r0, [r1, 0x2E]
+ bl itemid_get_quality
+_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, =gUnknown_08329D74
+ 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, =0x02022fec
+ 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, =0x02022fec
+ 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 ability_something
+ 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 ability_something
+ 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 ability_something
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806995A
+ ldr r1, =0x020244e0
+ 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 ability_something
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806997E
+ ldr r1, =0x020244e0
+ 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, =0x020244e0
+ 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, =0x020244e0
+ 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, =0x020244e0
+ 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, =0x020244e0
+ ldrh r1, [r4]
+ movs r0, 0x96
+ muls r0, r1
+ movs r1, 0x64
+ bl __divsi3
+ strh r0, [r4]
+_08069A3E:
+ ldr r2, =gBattleMoves
+ ldr r0, =0x020241ea
+ 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, =0x02024211
+ 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, =0x020244e0
+ 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, =0x02022fec
+ 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, =0x02022fec
+ 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, =0x02024211
+ 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, =0x020244e0
+ 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, =0x02022fec
+ 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, =0x02022fec
+ 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 ability_something
+ 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 ability_something
+ lsls r0, 24
+ cmp r0, 0
+ bne _08069DAC
+ ldr r2, =0x020243cc
+ 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, =0x020241ea
+ 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, =0x020244a8
+ 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.