summaryrefslogtreecommitdiff
path: root/asm
diff options
context:
space:
mode:
Diffstat (limited to 'asm')
-rw-r--r--asm/code_8040094.s2
-rw-r--r--asm/code_8045A00.s4
-rw-r--r--asm/code_80521D0.s24
-rw-r--r--asm/code_8057144.s2
-rw-r--r--asm/code_8057824.s36
-rw-r--r--asm/code_80701A4.s2
-rw-r--r--asm/code_8073CF0.s2
-rw-r--r--asm/code_8075BA4.s1931
-rw-r--r--asm/code_807C04C.s1297
9 files changed, 1335 insertions, 1965 deletions
diff --git a/asm/code_8040094.s b/asm/code_8040094.s
index 5ea38ec..b057290 100644
--- a/asm/code_8040094.s
+++ b/asm/code_8040094.s
@@ -2501,7 +2501,7 @@ _080414A0:
_080414A4:
adds r0, r4, 0
adds r1, r5, 0
- bl sub_80570AC
+ bl IsChargeMove
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
diff --git a/asm/code_8045A00.s b/asm/code_8045A00.s
index 2792ef7..944744e 100644
--- a/asm/code_8045A00.s
+++ b/asm/code_8045A00.s
@@ -4,7 +4,7 @@
.syntax unified
.text
-
+
thumb_func_start CanSee_2
CanSee_2:
push {r4,r5,lr}
@@ -566,7 +566,7 @@ _08045DF4:
_08045E08:
adds r0, r7, 0
movs r1, 0x1
- bl ShouldAvoidEnemies_2
+ bl ShouldAvoidEnemiesAndShowEffect
lsls r0, 24
cmp r0, 0
beq _08045E40
diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s
index 648cdec..ad3024b 100644
--- a/asm/code_80521D0.s
+++ b/asm/code_80521D0.s
@@ -2505,7 +2505,7 @@ _080537B0: .4byte gUnknown_80FCD28
_080537B4:
adds r0, r7, 0
mov r1, r8
- bl GetMoveType_2
+ bl GetMoveTypeForPokemon
lsls r0, 24
lsrs r0, 24
cmp r0, 0x5
@@ -2831,7 +2831,7 @@ _08053A4C:
movs r4, 0
adds r0, r7, 0
mov r1, r8
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
bne _08053A7E
@@ -5857,7 +5857,7 @@ sub_8055640:
mov r9, r3
ldr r7, [sp, 0x44]
adds r1, r5, 0
- bl GetMoveType_2
+ bl GetMoveTypeForPokemon
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -6114,7 +6114,7 @@ sub_8055864:
adds r5, r2, 0
adds r6, r3, 0
adds r1, r5, 0
- bl GetMoveType_2
+ bl GetMoveTypeForPokemon
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
@@ -6521,7 +6521,7 @@ _08055B74:
adds r0, r5, 0
adds r1, r6, 0
str r2, [sp, 0x30]
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
lsrs r4, r0, 24
ldrb r0, [r6, 0x4]
@@ -7148,7 +7148,7 @@ _080560AE:
beq _080560CC
adds r0, r5, 0
adds r1, r7, 0
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
bne _080560CC
@@ -7165,7 +7165,7 @@ _080560CC:
bl sub_80928C0
adds r0, r5, 0
adds r1, r7, 0
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
beq _08056124
@@ -8038,7 +8038,7 @@ _080567EC:
beq _08056820
mov r0, r10
ldr r1, [sp, 0x1C]
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
bne _08056820
@@ -8740,7 +8740,7 @@ _08056D44:
bne _08056D86
adds r0, r5, 0
mov r1, r8
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
lsrs r4, r0, 24
mov r2, r8
@@ -9186,8 +9186,8 @@ _080570A6:
bx r1
thumb_func_end sub_8057088
- thumb_func_start sub_80570AC
-sub_80570AC:
+ thumb_func_start IsChargeMove
+IsChargeMove:
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
@@ -9229,6 +9229,6 @@ _080570EA:
bx r1
.align 2, 0
_080570F0: .4byte gChargeMovesToStatuses
- thumb_func_end sub_80570AC
+ thumb_func_end IsChargeMove
.align 2, 0
diff --git a/asm/code_8057144.s b/asm/code_8057144.s
index 795e7cf..fba13cd 100644
--- a/asm/code_8057144.s
+++ b/asm/code_8057144.s
@@ -932,7 +932,7 @@ _080577C8: .4byte gUnknown_80FD14C
_080577CC:
adds r0, r4, 0
adds r1, r6, 0
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
beq _080577F8
diff --git a/asm/code_8057824.s b/asm/code_8057824.s
index 2856506..6ae62c4 100644
--- a/asm/code_8057824.s
+++ b/asm/code_8057824.s
@@ -1209,7 +1209,7 @@ sub_80582EC:
adds r4, r2, 0
adds r6, r3, 0
adds r1, r4, 0
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
beq _08058328
@@ -1684,7 +1684,7 @@ sub_805867C:
adds r4, r2, 0
adds r6, r3, 0
adds r1, r4, 0
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
beq _080586B8
@@ -2255,7 +2255,7 @@ SkyAttackMoveAction:
mov r8, r0
adds r0, r4, 0
adds r1, r5, 0
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
beq _08058B14
@@ -3847,7 +3847,7 @@ sub_805968C:
beq _080596B6
adds r0, r5, 0
adds r1, r6, 0
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
beq _080596EC
@@ -3972,7 +3972,7 @@ sub_8059790:
adds r4, r2, 0
adds r6, r3, 0
adds r1, r4, 0
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
beq _080597CC
@@ -4077,7 +4077,7 @@ _0805986C: .4byte gUnknown_80FD128
_08059870:
adds r0, r4, 0
adds r1, r5, 0
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
beq _080598A4
@@ -4548,7 +4548,7 @@ _08059BE2:
beq _08059C08
adds r0, r5, 0
adds r1, r4, 0
- bl GetMoveType_2
+ bl GetMoveTypeForPokemon
lsls r0, 24
cmp r0, 0
beq _08059C08
@@ -4573,7 +4573,7 @@ _08059C08:
adds r4, r1, r0
ldr r1, [r4]
adds r0, r5, 0
- bl GetMoveType_2
+ bl GetMoveTypeForPokemon
adds r1, r7, 0
adds r1, 0x5C
movs r2, 0
@@ -4912,7 +4912,7 @@ _08059E8A:
bne _08059F1A
adds r0, r6, 0
adds r1, r7, 0
- bl GetMoveType_2
+ bl GetMoveTypeForPokemon
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -5002,7 +5002,7 @@ sub_8059F38:
mov r8, r0
adds r0, r4, 0
adds r1, r5, 0
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
beq _08059FA0
@@ -5094,7 +5094,7 @@ _08059FFE:
bne _0805A090
adds r0, r6, 0
adds r1, r7, 0
- bl GetMoveType_2
+ bl GetMoveTypeForPokemon
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -8374,7 +8374,7 @@ SkullBashMoveAction:
adds r4, r2, 0
adds r6, r3, 0
adds r1, r4, 0
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
beq _0805B8EC
@@ -12001,7 +12001,7 @@ _0805D928:
strb r5, [r1, 0x1]
bl GetLeaderEntity
movs r1, 0x1
- bl ShouldAvoidEnemies_2
+ bl ShouldAvoidEnemiesAndShowEffect
lsls r0, 24
cmp r0, 0
bne _0805D976
@@ -12327,7 +12327,7 @@ _0805DBF4: .4byte 0x00000673
_0805DBF8:
mov r0, r10
movs r1, 0x1
- bl ShouldAvoidEnemies_2
+ bl ShouldAvoidEnemiesAndShowEffect
lsls r0, 24
cmp r0, 0
beq _0805DC08
@@ -16024,7 +16024,7 @@ _0805F9A0:
bl sub_80073B8
bl GetLeaderEntity
movs r1, 0x1
- bl ShouldAvoidEnemies_2
+ bl ShouldAvoidEnemiesAndShowEffect
lsls r0, 24
cmp r0, 0
beq _0805F9CC
@@ -30935,7 +30935,7 @@ _0806721C: .4byte gUnknown_80F8BE0
_08067220:
adds r0, r6, 0
movs r1, 0x1
- bl ShouldAvoidEnemies_2
+ bl ShouldAvoidEnemiesAndShowEffect
lsls r0, 24
cmp r0, 0
beq _08067248
@@ -36863,7 +36863,7 @@ _0806A068:
beq _0806A0FA
mov r0, r8
mov r1, r9
- bl GetMoveType_2
+ bl GetMoveTypeForPokemon
lsls r0, 24
lsrs r5, r0, 24
mov r1, r9
@@ -36954,7 +36954,7 @@ sub_806A120:
bne _0806A19C
adds r0, r7, 0
adds r1, r4, 0
- bl GetMoveType_2
+ bl GetMoveTypeForPokemon
lsls r0, 24
lsrs r0, 24
bl sub_8092364
diff --git a/asm/code_80701A4.s b/asm/code_80701A4.s
index 04b317b..ac383ab 100644
--- a/asm/code_80701A4.s
+++ b/asm/code_80701A4.s
@@ -153,7 +153,7 @@ _080702B0:
beq _08070312
adds r0, r7, 0
adds r1, r4, 0
- bl sub_80570AC
+ bl IsChargeMove
lsls r0, 24
cmp r0, 0
beq _08070312
diff --git a/asm/code_8073CF0.s b/asm/code_8073CF0.s
index 7cadcc3..36da354 100644
--- a/asm/code_8073CF0.s
+++ b/asm/code_8073CF0.s
@@ -105,7 +105,7 @@ _08073D80:
_08073D98:
adds r0, r6, 0
movs r1, 0x1
- bl ShouldAvoidEnemies_2
+ bl ShouldAvoidEnemiesAndShowEffect
lsls r0, 24
cmp r0, 0
beq _08073DC8
diff --git a/asm/code_8075BA4.s b/asm/code_8075BA4.s
index 9d92ce6..def36e3 100644
--- a/asm/code_8075BA4.s
+++ b/asm/code_8075BA4.s
@@ -10245,7 +10245,7 @@ _0807AE32:
_0807AE6A:
adds r0, r5, 0
adds r1, r7, 0
- bl ShouldAvoidEnemies_2
+ bl ShouldAvoidEnemiesAndShowEffect
lsls r0, 24
cmp r0, 0
beq _0807AE80
@@ -11081,7 +11081,7 @@ _0807B4C8:
mov r10, r1
mov r0, r9
adds r1, r7, 0
- bl ShouldAvoidEnemies_2
+ bl ShouldAvoidEnemiesAndShowEffect
lsls r0, 24
cmp r0, 0
bne _0807B4E4
@@ -11972,1931 +11972,4 @@ sub_807BB78:
bx lr
thumb_func_end sub_807BB78
- thumb_func_start DecideAttack
-DecideAttack:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x5C
- mov r10, r0
- ldr r0, [r0, 0x70]
- mov r8, r0
- mov r0, r10
- movs r1, 0
- bl CannotAttack
- lsls r0, 24
- cmp r0, 0
- beq _0807BBB6
- b _0807C03A
-_0807BBB6:
- mov r0, r10
- movs r1, 0x1
- bl ShouldAvoidEnemies_2
- lsls r0, 24
- cmp r0, 0
- beq _0807BBC6
- b _0807C03A
-_0807BBC6:
- mov r0, r10
- movs r1, 0x8
- bl HasTactic
- lsls r0, 24
- cmp r0, 0
- beq _0807BBD6
- b _0807C03A
-_0807BBD6:
- mov r0, r8
- adds r0, 0xBC
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0807BBF2
- ldr r0, _0807BC70
- movs r1, 0
- ldrsh r0, [r0, r1]
- bl RollPercentChance
- lsls r0, 24
- cmp r0, 0
- beq _0807BBF2
- b _0807C03A
-_0807BBF2:
- mov r0, r8
- adds r0, 0xC0
- ldrb r1, [r0]
- str r0, [sp, 0x50]
- cmp r1, 0
- beq _0807BC7C
- movs r5, 0
- movs r4, 0x8C
- lsls r4, 1
- add r4, r8
-_0807BC06:
- ldrb r1, [r4]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0807BC74
- mov r0, r10
- adds r1, r4, 0
- bl sub_80570AC
- lsls r0, 24
- cmp r0, 0
- beq _0807BC74
- mov r0, r8
- adds r0, 0xC2
- ldrb r0, [r0]
- cmp r0, r5
- bne _0807BC74
- mov r0, r8
- adds r0, 0x44
- movs r1, 0x15
- bl SetAction
- adds r3, r5, 0
- mov r6, r8
- adds r6, 0x48
- cmp r5, 0
- bgt _0807BC3E
- b _0807C006
-_0807BC3E:
- ldrb r1, [r4]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0807BC4A
- b _0807C006
-_0807BC4A:
- movs r4, 0x2
- lsls r0, r5, 3
- movs r2, 0x8C
- lsls r2, 1
- adds r0, r2
- mov r7, r8
- adds r2, r0, r7
-_0807BC58:
- subs r2, 0x8
- subs r3, 0x1
- cmp r3, 0
- bgt _0807BC62
- b _0807C006
-_0807BC62:
- ldrb r1, [r2]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _0807BC58
- b _0807C006
- .align 2, 0
-_0807BC70: .4byte gConfusedAttackChance
-_0807BC74:
- adds r4, 0x8
- adds r5, 0x1
- cmp r5, 0x3
- ble _0807BC06
-_0807BC7C:
- movs r0, 0
- str r0, [sp, 0x44]
- movs r1, 0
- str r1, [sp, 0x40]
- movs r2, 0x8C
- lsls r2, 1
- add r2, r8
- movs r4, 0x1
- movs r3, 0x4
- movs r5, 0x3
-_0807BC90:
- ldrb r1, [r2]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _0807BCB0
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _0807BCA8
- ldr r7, [sp, 0x40]
- adds r7, 0x1
- str r7, [sp, 0x40]
-_0807BCA8:
- ldrb r0, [r2, 0x4]
- ldr r1, [sp, 0x44]
- adds r1, r0
- str r1, [sp, 0x44]
-_0807BCB0:
- adds r2, 0x8
- subs r5, 0x1
- cmp r5, 0
- bge _0807BC90
- ldr r2, [sp, 0x44]
- cmp r2, 0
- bne _0807BCF8
- add r4, sp, 0x2C
- movs r1, 0xB0
- lsls r1, 1
- adds r0, r4, 0
- bl InitPokemonMove
- mov r0, sp
- mov r1, r10
- adds r2, r4, 0
- bl FindMoveTarget
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- bne _0807BCDE
- b _0807C03A
-_0807BCDE:
- mov r0, r8
- adds r0, 0x44
- movs r1, 0x17
- bl SetAction
- mov r0, sp
- ldrb r1, [r0, 0x1]
- movs r0, 0x7
- ands r0, r1
- mov r1, r8
- adds r1, 0x46
- strb r0, [r1]
- b _0807C008
-_0807BCF8:
- mov r0, r10
- movs r1, 0xB
- bl HasIQSkill
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x48]
- mov r0, r10
- movs r1, 0x6
- bl HasIQSkill
- lsls r0, 24
- lsrs r0, 24
- negs r1, r0
- orrs r1, r0
- lsrs r1, 31
- str r1, [sp, 0x3C]
- movs r7, 0
- str r7, [sp, 0x44]
- mov r0, sp
- adds r0, 0x28
- str r0, [sp, 0x4C]
- adds r2, r0, 0
- movs r1, 0x1
- adds r0, 0x3
-_0807BD2A:
- strb r1, [r0]
- subs r0, 0x1
- cmp r0, r2
- bge _0807BD2A
- ldr r1, [sp, 0x3C]
- cmp r1, 0
- beq _0807BDC0
- movs r2, 0x63
- movs r4, 0
- movs r5, 0
- movs r3, 0x8C
- lsls r3, 1
- add r3, r8
- b _0807BD98
-_0807BD46:
- cmp r5, 0
- beq _0807BD7A
- ldrb r1, [r3]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0807BD7A
- adds r0, r4, 0x1
- adds r6, r5, 0x1
- cmp r0, r5
- bge _0807BD74
- cmp r2, 0x1
- bgt _0807BD74
- adds r1, r4, 0
- cmp r1, r5
- bge _0807BD74
- ldr r2, [sp, 0x4C]
- movs r4, 0
-_0807BD6A:
- adds r0, r2, r1
- strb r4, [r0]
- adds r1, 0x1
- cmp r1, r5
- blt _0807BD6A
-_0807BD74:
- ldrb r2, [r3, 0x4]
- adds r4, r5, 0
- b _0807BD86
-_0807BD7A:
- ldrb r1, [r3, 0x4]
- cmp r1, r2
- ble _0807BD82
- adds r1, r2, 0
-_0807BD82:
- adds r2, r1, 0
- adds r6, r5, 0x1
-_0807BD86:
- adds r5, r6, 0
- cmp r5, 0x3
- bgt _0807BDA2
- lsls r0, r5, 3
- movs r7, 0x8C
- lsls r7, 1
- adds r0, r7
- mov r1, r8
- adds r3, r1, r0
-_0807BD98:
- ldrb r1, [r3]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0807BD46
-_0807BDA2:
- adds r0, r4, 0x1
- cmp r0, r5
- bge _0807BDC0
- cmp r2, 0x1
- bgt _0807BDC0
- adds r1, r4, 0
- cmp r1, r5
- bge _0807BDC0
- ldr r2, [sp, 0x4C]
- movs r3, 0
-_0807BDB6:
- adds r0, r2, r1
- strb r3, [r0]
- adds r1, 0x1
- cmp r1, r5
- blt _0807BDB6
-_0807BDC0:
- movs r5, 0
- movs r2, 0
- str r2, [sp, 0x54]
- add r4, sp, 0x4
- movs r7, 0x8C
- lsls r7, 1
- add r7, r8
- adds r6, r7, 0
- mov r9, sp
- mov r0, sp
- str r0, [sp, 0x58]
-_0807BDD6:
- movs r2, 0
- mov r1, r9
- strb r2, [r1]
- ldrb r1, [r7]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0807BE64
- ldr r1, [sp, 0x4C]
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807BE64
- mov r0, r10
- adds r1, r5, 0
- ldr r2, [sp, 0x3C]
- bl IsMoveUsable
- lsls r0, 24
- cmp r0, 0
- beq _0807BE64
- ldrb r1, [r7]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0807BE64
- movs r0, 0x1
- mov r2, r9
- strb r0, [r2]
- ldr r1, [sp, 0x50]
- ldrb r0, [r1]
- cmp r0, 0xB
- bne _0807BE38
- ldrh r0, [r7, 0x2]
- cmp r0, 0x80
- bne _0807BE24
- movs r2, 0
- str r2, [r4]
- b _0807BE64
-_0807BE24:
- mov r0, r10
- adds r1, r6, 0
- bl GetMoveType_2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- beq _0807BE4A
- movs r0, 0x1
- b _0807BE54
-_0807BE38:
- ldr r1, [sp, 0x48]
- cmp r1, 0
- beq _0807BE4A
- ldr r0, [sp, 0x58]
- mov r1, r10
- adds r2, r6, 0
- bl FindMoveTarget
- b _0807BE54
-_0807BE4A:
- adds r0, r6, 0
- bl GetMoveWeight
- lsls r0, 24
- lsrs r0, 24
-_0807BE54:
- str r0, [r4]
- add r0, sp, 0x4
- ldr r2, [sp, 0x54]
- adds r0, r2
- ldr r0, [r0]
- ldr r1, [sp, 0x44]
- adds r1, r0
- str r1, [sp, 0x44]
-_0807BE64:
- ldr r2, [sp, 0x54]
- adds r2, 0x8
- str r2, [sp, 0x54]
- adds r4, 0x8
- adds r7, 0x8
- adds r6, 0x8
- movs r0, 0x8
- add r9, r0
- ldr r1, [sp, 0x58]
- adds r1, 0x8
- str r1, [sp, 0x58]
- adds r5, 0x1
- cmp r5, 0x3
- ble _0807BDD6
- movs r0, 0
- str r0, [sp, 0x24]
- mov r0, r10
- movs r1, 0x17
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- bne _0807BECA
- ldr r2, [sp, 0x50]
- ldrb r0, [r2]
- cmp r0, 0xB
- beq _0807BECA
- add r0, sp, 0x20
- movs r1, 0x1
- strb r1, [r0]
- ldrb r0, [r2]
- cmp r0, 0xB
- bne _0807BEAA
- str r1, [sp, 0x24]
- b _0807BEC2
-_0807BEAA:
- ldr r7, [sp, 0x48]
- cmp r7, 0
- beq _0807BEB4
- movs r0, 0x2
- b _0807BEC0
-_0807BEB4:
- ldr r0, _0807BEE8
- ldr r2, [sp, 0x40]
- lsls r1, r2, 1
- adds r1, r0
- movs r7, 0
- ldrsh r0, [r1, r7]
-_0807BEC0:
- str r0, [sp, 0x24]
-_0807BEC2:
- ldr r0, [sp, 0x24]
- ldr r1, [sp, 0x44]
- adds r1, r0
- str r1, [sp, 0x44]
-_0807BECA:
- ldr r2, [sp, 0x48]
- cmp r2, 0
- beq _0807BF2A
- movs r5, 0
- movs r7, 0
- str r7, [sp, 0x44]
- add r0, sp, 0x4
- adds r3, r0, 0
- mov r2, sp
- movs r4, 0x4
-_0807BEDE:
- ldrb r1, [r2]
- cmp r1, 0
- bne _0807BEEC
- str r1, [r3]
- b _0807BEF4
- .align 2, 0
-_0807BEE8: .4byte gUnknown_80F4E22
-_0807BEEC:
- ldr r1, [r3]
- cmp r5, r1
- bge _0807BEF4
- adds r5, r1, 0
-_0807BEF4:
- adds r3, 0x8
- adds r2, 0x8
- subs r4, 0x1
- cmp r4, 0
- bge _0807BEDE
- movs r4, 0
- movs r6, 0
- adds r1, r0, 0
- adds r3, r1, 0
- mov r2, sp
-_0807BF08:
- ldrb r0, [r2]
- cmp r0, 0
- beq _0807BF1E
- ldr r0, [r1]
- cmp r5, r0
- beq _0807BF16
- str r6, [r1]
-_0807BF16:
- ldr r0, [r3]
- ldr r7, [sp, 0x44]
- adds r7, r0
- str r7, [sp, 0x44]
-_0807BF1E:
- adds r1, 0x8
- adds r3, 0x8
- adds r2, 0x8
- adds r4, 0x1
- cmp r4, 0x4
- ble _0807BF08
-_0807BF2A:
- ldr r0, [sp, 0x44]
- cmp r0, 0
- bne _0807BF32
- b _0807C03A
-_0807BF32:
- bl DungeonRandomCapped
- str r0, [sp, 0x38]
- movs r1, 0
- mov r9, r1
- mov r0, r10
- movs r1, 0x17
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- bne _0807BF5A
- add r1, sp, 0x34
- mov r0, r10
- movs r2, 0x1
- bl TargetRegularAttack
- lsls r0, 24
- lsrs r6, r0, 24
- b _0807BF5E
-_0807BF5A:
- movs r6, 0
- str r6, [sp, 0x34]
-_0807BF5E:
- movs r5, 0
- mov r4, sp
- movs r7, 0
-_0807BF64:
- ldrb r0, [r4]
- cmp r0, 0
- beq _0807C010
- add r0, sp, 0x4
- adds r0, r7
- ldr r0, [r0]
- cmp r0, 0
- beq _0807C010
- add r9, r0
- ldr r2, [sp, 0x38]
- cmp r9, r2
- blt _0807C010
- cmp r5, 0x4
- bne _0807BF9C
- cmp r6, 0
- beq _0807C03A
- mov r0, r8
- adds r0, 0x44
- movs r1, 0x32
- bl SetAction
- ldr r0, [sp, 0x34]
- movs r1, 0x7
- ands r0, r1
- mov r1, r8
- adds r1, 0x46
- strb r0, [r1]
- b _0807C008
-_0807BF9C:
- movs r0, 0x8C
- lsls r0, 1
- mov r9, r0
- adds r2, r7, r0
- add r2, r8
- adds r0, r4, 0
- mov r1, r10
- bl FindMoveTarget
- ldrb r0, [r4]
- cmp r0, 0
- beq _0807C01A
- mov r0, r8
- adds r0, 0x44
- movs r1, 0x15
- bl SetAction
- adds r3, r5, 0
- mov r6, r8
- adds r6, 0x48
- movs r1, 0x46
- add r1, r8
- mov r12, r1
- cmp r5, 0
- ble _0807BFFC
- mov r2, r8
- adds r0, r2, r7
- add r0, r9
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0807BFFC
- movs r7, 0x2
- lsls r0, r5, 3
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r1
- adds r2, r0, r2
-_0807BFEA:
- subs r2, 0x8
- subs r3, 0x1
- cmp r3, 0
- ble _0807BFFC
- ldrb r1, [r2]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- bne _0807BFEA
-_0807BFFC:
- ldrb r1, [r4, 0x1]
- movs r0, 0x7
- ands r0, r1
- mov r2, r12
- strb r0, [r2]
-_0807C006:
- strb r3, [r6]
-_0807C008:
- mov r0, r10
- bl TargetTileInFront
- b _0807C03A
-_0807C010:
- adds r4, 0x8
- adds r7, 0x8
- adds r5, 0x1
- cmp r5, 0x4
- ble _0807BF64
-_0807C01A:
- cmp r6, 0
- beq _0807C03A
- mov r0, r8
- adds r0, 0x44
- movs r1, 0x32
- bl SetAction
- ldr r0, [sp, 0x34]
- movs r1, 0x7
- ands r0, r1
- mov r1, r8
- adds r1, 0x46
- strb r0, [r1]
- mov r0, r10
- bl TargetTileInFront
-_0807C03A:
- add sp, 0x5C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end DecideAttack
-
- thumb_func_start FindMoveTarget
-FindMoveTarget:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- str r0, [sp, 0x8]
- adds r6, r1, 0
- mov r10, r2
- movs r0, 0x1
- str r0, [sp, 0x10]
- ldr r4, [r6, 0x70]
- movs r1, 0
- mov r8, r1
- ldr r1, _0807C0C8
- movs r2, 0
- adds r0, r1, 0x7
-_0807C06E:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _0807C06E
- adds r0, r6, 0
- mov r1, r10
- movs r2, 0x1
- bl GetTargetingFlags
- lsls r0, 16
- asrs r0, 16
- str r0, [sp, 0xC]
- adds r0, r6, 0
- movs r1, 0x8
- bl HasIQSkill
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- movs r0, 0
- ldr r2, [sp, 0x8]
- strb r0, [r2]
- adds r0, r4, 0
- adds r0, 0xBC
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _0807C0B0
- mov r0, r10
- bl GetMoveDealsDirectDamage
- lsls r0, 24
- cmp r0, 0
- beq _0807C0C4
-_0807C0B0:
- ldr r3, [sp, 0x14]
- cmp r3, 0
- beq _0807C0CC
- adds r0, r6, 0
- mov r1, r10
- bl CanUseWithStatusChecker
- lsls r0, 24
- cmp r0, 0
- bne _0807C0CC
-_0807C0C4:
- movs r0, 0x1
- b _0807C48C
- .align 2, 0
-_0807C0C8: .4byte gCanAttackInDirection
-_0807C0CC:
- movs r0, 0xF0
- ldr r1, [sp, 0xC]
- ands r0, r1
- cmp r0, 0
- beq _0807C0DE
- cmp r0, 0x10
- beq _0807C0DE
- cmp r0, 0x20
- bne _0807C19C
-_0807C0DE:
- adds r0, r4, 0
- adds r0, 0xE8
- ldrb r1, [r0]
- cmp r1, 0x1
- bne _0807C128
- subs r0, 0xA2
- ldrb r7, [r0]
- ldr r0, _0807C118
- adds r0, r7, r0
- ldrb r3, [r0]
- cmp r3, 0
- beq _0807C0F8
- b _0807C3F6
-_0807C0F8:
- strb r1, [r0]
- ldr r0, _0807C11C
- add r0, r8
- strb r7, [r0]
- ldr r0, _0807C120
- mov r4, r8
- lsls r2, r4, 2
- adds r0, r2, r0
- movs r1, 0x63
- str r1, [r0]
- ldr r0, _0807C124
- adds r2, r0
- str r3, [r2]
- movs r0, 0x1
- add r8, r0
- b _0807C3F6
- .align 2, 0
-_0807C118: .4byte gCanAttackInDirection
-_0807C11C: .4byte gUnknown_202F388
-_0807C120: .4byte gPotentialTargetWeights_2
-_0807C124: .4byte gUnknown_202F3B0
-_0807C128:
- movs r7, 0
- movs r0, 0xF0
- ldr r1, [sp, 0xC]
- ands r0, r1
- lsls r5, r0, 16
-_0807C132:
- movs r2, 0x4
- ldrsh r0, [r6, r2]
- ldr r1, _0807C198
- lsls r2, r7, 2
- adds r2, r1
- movs r3, 0
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r4, 0x6
- ldrsh r1, [r6, r4]
- movs r3, 0x2
- ldrsh r2, [r2, r3]
- adds r1, r2
- bl GetMapTileAtPosition
- ldr r4, [r0, 0x10]
- cmp r4, 0
- beq _0807C18E
- adds r0, r4, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0807C18E
- asrs r0, r5, 16
- cmp r0, 0x10
- beq _0807C178
- cmp r0, 0x20
- beq _0807C178
- adds r0, r6, 0
- adds r1, r7, 0
- bl CanAttackInFront
- lsls r0, 24
- cmp r0, 0
- beq _0807C18E
-_0807C178:
- mov r0, r10
- str r0, [sp]
- ldr r1, [sp, 0x14]
- str r1, [sp, 0x4]
- mov r0, r8
- ldr r1, [sp, 0xC]
- adds r2, r6, 0
- adds r3, r4, 0
- bl WeightMoveIfUsable
- mov r8, r0
-_0807C18E:
- adds r7, 0x1
- cmp r7, 0x7
- ble _0807C132
- b _0807C3F6
- .align 2, 0
-_0807C198: .4byte gAdjacentTileOffsets
-_0807C19C:
- cmp r0, 0x30
- bne _0807C1F0
- movs r5, 0
-_0807C1A2:
- ldr r0, _0807C1E8
- ldr r0, [r0]
- lsls r1, r5, 2
- ldr r2, _0807C1EC
- adds r0, r2
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807C1E0
- adds r0, r6, 0
- adds r1, r4, 0
- bl CanSee
- lsls r0, 24
- cmp r0, 0
- beq _0807C1E0
- mov r3, r10
- str r3, [sp]
- ldr r0, [sp, 0x14]
- str r0, [sp, 0x4]
- mov r0, r8
- ldr r1, [sp, 0xC]
- adds r2, r6, 0
- adds r3, r4, 0
- bl WeightMoveIfUsable
- mov r8, r0
-_0807C1E0:
- adds r5, 0x1
- cmp r5, 0x13
- ble _0807C1A2
- b _0807C3F6
- .align 2, 0
-_0807C1E8: .4byte gDungeonGlobalData
-_0807C1EC: .4byte 0x000135cc
-_0807C1F0:
- cmp r0, 0x40
- bne _0807C2A8
- movs r7, 0
- ldr r1, _0807C2A4
- mov r9, r1
-_0807C1FA:
- movs r2, 0x4
- ldrsh r0, [r6, r2]
- mov r3, r9
- movs r4, 0
- ldrsh r1, [r3, r4]
- adds r0, r1
- movs r2, 0x6
- ldrsh r1, [r6, r2]
- movs r4, 0x2
- ldrsh r2, [r3, r4]
- adds r1, r2
- bl GetMapTileAtPosition
- adds r4, r0, 0
- adds r0, r6, 0
- adds r1, r7, 0
- bl CanAttackInFront
- lsls r0, 24
- cmp r0, 0
- beq _0807C296
- ldr r5, [r4, 0x10]
- cmp r5, 0
- beq _0807C250
- adds r0, r5, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0807C250
- mov r4, r8
- mov r0, r10
- str r0, [sp]
- ldr r1, [sp, 0x14]
- str r1, [sp, 0x4]
- adds r0, r4, 0
- ldr r1, [sp, 0xC]
- adds r2, r6, 0
- adds r3, r5, 0
- bl WeightMoveIfUsable
- mov r8, r0
- cmp r4, r8
- bne _0807C296
-_0807C250:
- movs r2, 0x4
- ldrsh r0, [r6, r2]
- mov r3, r9
- movs r4, 0
- ldrsh r1, [r3, r4]
- lsls r1, 1
- adds r0, r1
- movs r2, 0x6
- ldrsh r1, [r6, r2]
- movs r4, 0x2
- ldrsh r2, [r3, r4]
- lsls r2, 1
- adds r1, r2
- bl GetMapTileAtPosition
- adds r4, r0, 0
- ldr r5, [r4, 0x10]
- cmp r5, 0
- beq _0807C296
- adds r0, r5, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0807C296
- mov r0, r10
- str r0, [sp]
- ldr r1, [sp, 0x14]
- str r1, [sp, 0x4]
- mov r0, r8
- ldr r1, [sp, 0xC]
- adds r2, r6, 0
- adds r3, r5, 0
- bl WeightMoveIfUsable
- mov r8, r0
-_0807C296:
- movs r2, 0x4
- add r9, r2
- adds r7, 0x1
- cmp r7, 0x7
- ble _0807C1FA
- b _0807C3F6
- .align 2, 0
-_0807C2A4: .4byte gAdjacentTileOffsets
-_0807C2A8:
- cmp r0, 0x50
- beq _0807C2B0
- cmp r0, 0x80
- bne _0807C394
-_0807C2B0:
- movs r3, 0x1
- str r3, [sp, 0x18]
- cmp r0, 0x50
- bne _0807C2BC
- movs r4, 0xA
- str r4, [sp, 0x18]
-_0807C2BC:
- movs r0, 0
- mov r9, r0
-_0807C2C0:
- ldr r0, _0807C37C
- ldr r0, [r0]
- mov r2, r9
- lsls r1, r2, 2
- ldr r3, _0807C380
- adds r0, r3
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807C370
- cmp r6, r4
- beq _0807C370
- adds r1, r4, 0x4
- adds r0, r6, 0x4
- bl CalculateFacingDir
- adds r5, r0, 0
- ldr r0, _0807C384
- adds r7, r5, r0
- ldrb r0, [r7]
- cmp r0, 0
- bne _0807C370
- adds r0, r6, 0
- adds r1, r4, 0
- bl CanSee
- lsls r0, 24
- cmp r0, 0
- beq _0807C370
- adds r0, r6, 0
- adds r1, r4, 0
- ldr r2, [sp, 0x18]
- bl IsTargetInLineRange
- lsls r0, 24
- cmp r0, 0
- beq _0807C370
- ldr r0, [sp, 0x14]
- str r0, [sp]
- ldr r0, [sp, 0xC]
- adds r1, r6, 0
- adds r2, r4, 0
- mov r3, r10
- bl CanUseStatusMove
- lsls r0, 24
- cmp r0, 0
- beq _0807C370
- adds r0, r6, 0
- adds r1, r4, 0
- adds r2, r5, 0
- ldr r3, [sp, 0x18]
- bl IsTargetStraightAhead
- lsls r0, 24
- cmp r0, 0
- beq _0807C370
- movs r0, 0x1
- strb r0, [r7]
- ldr r0, _0807C388
- add r0, r8
- strb r5, [r0]
- adds r0, r6, 0
- mov r1, r10
- bl GetMoveType_2
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r6, 0
- ldr r1, [sp, 0xC]
- adds r2, r4, 0
- bl WeightMove
- ldr r1, _0807C38C
- mov r3, r8
- lsls r2, r3, 2
- adds r1, r2, r1
- str r0, [r1]
- ldr r0, _0807C390
- adds r2, r0
- str r4, [r2]
- movs r4, 0x1
- add r8, r4
-_0807C370:
- movs r0, 0x1
- add r9, r0
- mov r1, r9
- cmp r1, 0x13
- ble _0807C2C0
- b _0807C3F6
- .align 2, 0
-_0807C37C: .4byte gDungeonGlobalData
-_0807C380: .4byte 0x000135cc
-_0807C384: .4byte gCanAttackInDirection
-_0807C388: .4byte gUnknown_202F388
-_0807C38C: .4byte gPotentialTargetWeights_2
-_0807C390: .4byte gUnknown_202F3B0
-_0807C394:
- cmp r0, 0x60
- bne _0807C3DC
- movs r5, 0
-_0807C39A:
- ldr r0, _0807C3D4
- ldr r0, [r0]
- lsls r1, r5, 2
- ldr r2, _0807C3D8
- adds r0, r2
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807C3CA
- mov r3, r10
- str r3, [sp]
- ldr r0, [sp, 0x14]
- str r0, [sp, 0x4]
- mov r0, r8
- ldr r1, [sp, 0xC]
- adds r2, r6, 0
- adds r3, r4, 0
- bl WeightMoveIfUsable
- mov r8, r0
-_0807C3CA:
- adds r5, 0x1
- cmp r5, 0x13
- ble _0807C39A
- b _0807C3F6
- .align 2, 0
-_0807C3D4: .4byte gDungeonGlobalData
-_0807C3D8: .4byte 0x000135cc
-_0807C3DC:
- cmp r0, 0x70
- bne _0807C3F6
- mov r1, r10
- str r1, [sp]
- ldr r2, [sp, 0x14]
- str r2, [sp, 0x4]
- mov r0, r8
- ldr r1, [sp, 0xC]
- adds r2, r6, 0
- adds r3, r6, 0
- bl WeightMoveIfUsable
- mov r8, r0
-_0807C3F6:
- mov r3, r8
- cmp r3, 0
- bne _0807C402
- ldr r4, [sp, 0x8]
- strb r3, [r4]
- b _0807C48A
-_0807C402:
- movs r4, 0
- movs r3, 0
- mov r0, r8
- cmp r0, 0
- ble _0807C420
- ldr r2, _0807C464
- mov r1, r8
-_0807C410:
- ldr r0, [r2]
- cmp r3, r0
- bge _0807C418
- adds r3, r0, 0
-_0807C418:
- adds r2, 0x4
- subs r1, 0x1
- cmp r1, 0
- bne _0807C410
-_0807C420:
- mov r1, r8
- cmp r1, 0
- ble _0807C43A
- movs r5, 0
- ldr r2, _0807C464
-_0807C42A:
- ldr r0, [r2]
- cmp r3, r0
- beq _0807C432
- str r5, [r2]
-_0807C432:
- adds r2, 0x4
- subs r1, 0x1
- cmp r1, 0
- bne _0807C42A
-_0807C43A:
- str r3, [sp, 0x10]
- mov r2, r8
- cmp r2, 0
- ble _0807C450
- ldr r2, _0807C464
- mov r1, r8
-_0807C446:
- ldm r2!, {r0}
- adds r4, r0
- subs r1, 0x1
- cmp r1, 0
- bne _0807C446
-_0807C450:
- adds r0, r4, 0
- bl DungeonRandomCapped
- adds r2, r0, 0
- movs r1, 0
- cmp r1, r8
- bge _0807C478
- ldr r3, _0807C464
- b _0807C470
- .align 2, 0
-_0807C464: .4byte gPotentialTargetWeights_2
-_0807C468:
- adds r3, 0x4
- adds r1, 0x1
- cmp r1, r8
- bge _0807C478
-_0807C470:
- ldr r0, [r3]
- subs r2, r0
- cmp r2, 0
- bge _0807C468
-_0807C478:
- movs r0, 0x1
- ldr r3, [sp, 0x8]
- strb r0, [r3]
- ldr r0, _0807C49C
- adds r0, r1, r0
- ldrb r0, [r0]
- strb r0, [r3, 0x1]
- movs r0, 0x8
- str r0, [r3, 0x4]
-_0807C48A:
- ldr r0, [sp, 0x10]
-_0807C48C:
- 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
-_0807C49C: .4byte gUnknown_202F388
- thumb_func_end FindMoveTarget
-
- thumb_func_start IsTargetInLineRange
-IsTargetInLineRange:
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- movs r3, 0x4
- ldrsh r0, [r5, r3]
- subs r3, r1, r0
- cmp r3, 0
- bge _0807C4B6
- negs r3, r3
-_0807C4B6:
- movs r6, 0x6
- ldrsh r1, [r4, r6]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- subs r1, r0
- cmp r1, 0
- bge _0807C4C6
- negs r1, r1
-_0807C4C6:
- adds r0, r1, 0
- cmp r1, r3
- bge _0807C4CE
- adds r0, r3, 0
-_0807C4CE:
- cmp r0, 0xA
- bgt _0807C578
- cmp r0, r2
- bgt _0807C578
- movs r6, 0x1
- negs r6, r6
- cmp r3, r1
- bne _0807C516
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- movs r2, 0x4
- ldrsh r0, [r5, r2]
- ldrh r2, [r4, 0x4]
- ldrh r3, [r5, 0x4]
- cmp r1, r0
- bge _0807C4FE
- movs r6, 0x6
- ldrsh r1, [r4, r6]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- cmp r1, r0
- blt _0807C574
- cmp r1, r0
- bgt _0807C574
-_0807C4FE:
- lsls r1, r2, 16
- lsls r0, r3, 16
- movs r6, 0x7
- cmp r1, r0
- ble _0807C570
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r2, 0x6
- ldrsh r0, [r5, r2]
- cmp r1, r0
- ble _0807C570
- b _0807C574
-_0807C516:
- movs r3, 0x4
- ldrsh r1, [r4, r3]
- movs r7, 0x4
- ldrsh r0, [r5, r7]
- ldrh r2, [r4, 0x4]
- ldrh r3, [r5, 0x4]
- cmp r1, r0
- bne _0807C532
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- cmp r1, r0
- blt _0807C574
-_0807C532:
- lsls r1, r2, 16
- lsls r0, r3, 16
- cmp r1, r0
- bge _0807C546
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- cmp r1, r0
- beq _0807C574
-_0807C546:
- lsls r1, r2, 16
- lsls r0, r3, 16
- cmp r1, r0
- bne _0807C55A
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- cmp r1, r0
- bgt _0807C574
-_0807C55A:
- lsls r1, r2, 16
- lsls r0, r3, 16
- cmp r1, r0
- ble _0807C570
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r2, 0x6
- ldrsh r0, [r5, r2]
- cmp r1, r0
- bne _0807C570
- movs r6, 0x6
-_0807C570:
- cmp r6, 0
- blt _0807C578
-_0807C574:
- movs r0, 0x1
- b _0807C57A
-_0807C578:
- movs r0, 0
-_0807C57A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end IsTargetInLineRange
-
- thumb_func_start WeightMoveIfUsable
-WeightMoveIfUsable:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r6, r0, 0
- adds r5, r2, 0
- adds r7, r3, 0
- ldr r0, [sp, 0x28]
- lsls r1, 16
- asrs r1, 16
- mov r9, r1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r2, [r5, 0x70]
- ldr r1, [r5, 0x4]
- ldr r0, [r7, 0x4]
- cmp r1, r0
- beq _0807C5BC
- movs r0, 0xF0
- mov r1, r9
- ands r0, r1
- cmp r0, 0x30
- beq _0807C5BC
- cmp r0, 0x60
- beq _0807C5BC
- cmp r0, 0x70
- bne _0807C5C4
-_0807C5BC:
- adds r0, r2, 0
- adds r0, 0x46
- ldrb r4, [r0]
- b _0807C5CE
-_0807C5C4:
- adds r0, r5, 0x4
- adds r1, r7, 0x4
- bl CalculateFacingDir
- adds r4, r0, 0
-_0807C5CE:
- ldr r0, _0807C638
- adds r0, r4
- mov r8, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _0807C624
- mov r0, r10
- str r0, [sp]
- mov r0, r9
- adds r1, r5, 0
- adds r2, r7, 0
- ldr r3, [sp, 0x24]
- bl CanUseStatusMove
- lsls r0, 24
- cmp r0, 0
- beq _0807C624
- movs r0, 0x1
- mov r1, r8
- strb r0, [r1]
- ldr r0, _0807C63C
- adds r0, r6, r0
- strb r4, [r0]
- adds r0, r5, 0
- ldr r1, [sp, 0x24]
- bl GetMoveType_2
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- mov r1, r9
- adds r2, r7, 0
- bl WeightMove
- ldr r1, _0807C640
- lsls r2, r6, 2
- adds r1, r2, r1
- str r0, [r1]
- ldr r0, _0807C644
- adds r2, r0
- str r7, [r2]
- adds r6, 0x1
-_0807C624:
- adds r0, r6, 0
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0807C638: .4byte gCanAttackInDirection
-_0807C63C: .4byte gUnknown_202F388
-_0807C640: .4byte gPotentialTargetWeights_2
-_0807C644: .4byte gUnknown_202F3B0
- thumb_func_end WeightMoveIfUsable
-
- thumb_func_start CanUseStatusMove
-CanUseStatusMove:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r1, 0
- adds r4, r2, 0
- mov r8, r3
- ldr r1, [sp, 0x1C]
- lsls r0, 16
- asrs r6, r0, 16
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- movs r7, 0
- movs r0, 0xF
- ands r0, r6
- adds r1, r0, 0
- cmp r1, 0
- bne _0807C686
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl CanTarget
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807C6E0
- movs r7, 0x1
- b _0807C6E4
-_0807C686:
- cmp r1, 0x1
- beq _0807C6BE
- cmp r1, 0x2
- bne _0807C692
- ldr r1, [r4, 0x70]
- b _0807C69C
-_0807C692:
- cmp r1, 0x5
- bne _0807C6B6
- ldr r1, [r4, 0x70]
- cmp r5, r4
- beq _0807C6B2
-_0807C69C:
- movs r7, 0x1
- ldrb r0, [r1, 0x8]
- cmp r0, 0x1
- beq _0807C6B2
- adds r0, r1, 0
- adds r0, 0xA4
- ldrb r0, [r0]
- cmp r0, 0x4
- beq _0807C6B2
- cmp r0, 0x1
- bne _0807C6E0
-_0807C6B2:
- movs r0, 0
- b _0807C7A0
-_0807C6B6:
- cmp r1, 0x6
- bne _0807C6D4
- cmp r5, r4
- beq _0807C6B2
-_0807C6BE:
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl CanTarget
- lsls r0, 24
- cmp r0, 0
- bne _0807C6E0
- movs r7, 0x1
- b _0807C6E4
-_0807C6D4:
- subs r0, 0x3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _0807C6E0
- movs r7, 0x1
-_0807C6E0:
- cmp r7, 0
- beq _0807C79E
-_0807C6E4:
- mov r0, r9
- cmp r0, 0
- beq _0807C77C
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r8
- bl CanUseWithStatusChecker_2
- lsls r0, 24
- cmp r0, 0
- beq _0807C6B2
- movs r1, 0xF0
- lsls r1, 4
- ands r1, r6
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- beq _0807C78A
- movs r0, 0x80
- lsls r0, 2
- cmp r1, r0
- beq _0807C76E
- movs r0, 0xC0
- lsls r0, 2
- cmp r1, r0
- bne _0807C720
- adds r0, r4, 0
- bl HasNegativeStatus
- b _0807C774
-_0807C720:
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _0807C730
- adds r0, r4, 0
- bl IsSleeping
- b _0807C774
-_0807C730:
- movs r0, 0xC0
- lsls r0, 3
- cmp r1, r0
- bne _0807C75A
- ldr r1, [r4, 0x70]
- adds r0, r1, 0
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r0, 0xE
- beq _0807C74E
- adds r0, r1, 0
- adds r0, 0x5D
- ldrb r0, [r0]
- cmp r0, 0xE
- bne _0807C6B2
-_0807C74E:
- adds r0, r1, 0
- adds r0, 0xF5
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807C79E
- b _0807C6B2
-_0807C75A:
- movs r0, 0xA0
- lsls r0, 3
- cmp r1, r0
- bne _0807C79E
- adds r0, r4, 0
- bl HasNegativeStatus
- lsls r0, 24
- cmp r0, 0
- bne _0807C79E
-_0807C76E:
- adds r0, r4, 0
- bl HasQuarterHPOrLess
-_0807C774:
- lsls r0, 24
- cmp r0, 0
- bne _0807C79E
- b _0807C6B2
-_0807C77C:
- movs r0, 0xF0
- lsls r0, 4
- ands r0, r6
- movs r1, 0x80
- lsls r1, 1
- cmp r0, r1
- bne _0807C79E
-_0807C78A:
- mov r0, r8
- movs r1, 0x2
- bl GetMoveAccuracy
- adds r4, r0, 0
- movs r0, 0x64
- bl DungeonRandomCapped
- cmp r0, r4
- bge _0807C6B2
-_0807C79E:
- adds r0, r7, 0
-_0807C7A0:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end CanUseStatusMove
-
- thumb_func_start WeightMove
-WeightMove:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- mov r8, r2
- lsls r1, 16
- asrs r1, 16
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- movs r6, 0x1
- ldr r4, [r2, 0x70]
- adds r7, r4, 0
- ldrb r0, [r4, 0x6]
- cmp r0, 0
- beq _0807C7D6
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- beq _0807C7DA
-_0807C7D6:
- movs r0, 0x1
- b _0807C848
-_0807C7DA:
- adds r0, r5, 0
- movs r1, 0x9
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- beq _0807C804
- ldr r0, _0807C7FC
- ldr r0, [r0]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- ldr r2, _0807C800
- adds r0, r2
- adds r0, r1
- ldrb r6, [r0]
- b _0807C846
- .align 2, 0
-_0807C7FC: .4byte gDungeonGlobalData
-_0807C800: .4byte 0x0000363c
-_0807C804:
- adds r0, r5, 0
- movs r1, 0xA
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- beq _0807C828
- ldrb r1, [r7, 0xE]
- movs r2, 0xC
- negs r2, r2
- adds r0, r2, 0
- subs r0, r1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _0807C846
- movs r6, 0x1
- b _0807C846
-_0807C828:
- adds r0, r5, 0
- movs r1, 0xB
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- beq _0807C846
- adds r0, r5, 0
- mov r1, r8
- mov r2, r9
- bl WeightWeakTypePicker
- adds r0, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0807C846:
- adds r0, r6, 0
-_0807C848:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end WeightMove
-
- thumb_func_start TargetRegularAttack
-TargetRegularAttack:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x50
- adds r7, r0, 0
- str r1, [sp, 0x40]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x44]
- ldr r0, [r7, 0x70]
- movs r1, 0
- mov r8, r1
- adds r1, r0, 0
- adds r1, 0x46
- ldrb r6, [r1]
- adds r0, 0xE8
- ldrb r0, [r0]
- movs r3, 0x8
- mov r10, r3
- cmp r0, 0x1
- bne _0807C886
- movs r0, 0x1
- mov r10, r0
-_0807C886:
- movs r4, 0
- adds r0, r7, 0
- movs r1, 0x9
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- bne _0807C8A4
- adds r0, r7, 0
- movs r1, 0xA
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- beq _0807C8A6
-_0807C8A4:
- movs r4, 0x1
-_0807C8A6:
- str r4, [sp, 0x48]
- adds r0, r7, 0
- movs r1, 0x8
- bl HasIQSkill
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4C]
- movs r1, 0
- mov r9, r1
- cmp r9, r10
- bge _0807C952
-_0807C8BE:
- movs r0, 0x7
- ands r6, r0
- movs r3, 0x4
- ldrsh r0, [r7, r3]
- ldr r1, _0807C95C
- lsls r2, r6, 2
- adds r2, r1
- movs r3, 0
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r3, 0x6
- ldrsh r1, [r7, r3]
- movs r3, 0x2
- ldrsh r2, [r2, r3]
- adds r1, r2
- bl GetMapTileAtPosition
- ldr r5, [r0, 0x10]
- cmp r5, 0
- beq _0807C948
- adds r0, r5, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0807C948
- adds r0, r7, 0
- adds r1, r6, 0
- bl CanAttackInFront
- lsls r0, 24
- cmp r0, 0
- beq _0807C948
- adds r0, r7, 0
- adds r1, r5, 0
- movs r2, 0
- ldr r3, [sp, 0x44]
- bl CanTarget
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807C948
- ldr r0, [sp, 0x4C]
- cmp r0, 0
- beq _0807C922
- ldr r0, [r5, 0x70]
- adds r0, 0xB0
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0807C948
-_0807C922:
- mov r1, r8
- lsls r4, r1, 2
- mov r3, sp
- adds r0, r3, r4
- str r6, [r0]
- adds r0, r7, 0
- movs r1, 0
- adds r2, r5, 0
- movs r3, 0
- bl WeightMove
- add r1, sp, 0x20
- adds r1, r4
- str r0, [r1]
- ldr r0, [sp, 0x48]
- cmp r0, 0
- beq _0807C960
- movs r1, 0x1
- add r8, r1
-_0807C948:
- movs r3, 0x1
- add r9, r3
- adds r6, 0x1
- cmp r9, r10
- blt _0807C8BE
-_0807C952:
- mov r0, r8
- cmp r0, 0
- bne _0807C966
- movs r0, 0
- b _0807C9E8
- .align 2, 0
-_0807C95C: .4byte gAdjacentTileOffsets
-_0807C960:
- ldr r1, [sp, 0x40]
- str r6, [r1]
- b _0807C9E6
-_0807C966:
- movs r4, 0
- movs r3, 0
- mov r0, r8
- cmp r0, 0
- ble _0807C984
- add r1, sp, 0x20
- mov r2, r8
-_0807C974:
- ldr r0, [r1]
- cmp r3, r0
- bge _0807C97C
- adds r3, r0, 0
-_0807C97C:
- adds r1, 0x4
- subs r2, 0x1
- cmp r2, 0
- bne _0807C974
-_0807C984:
- mov r1, r8
- cmp r1, 0
- ble _0807C9A0
- movs r5, 0
- add r1, sp, 0x20
- mov r2, r8
-_0807C990:
- ldr r0, [r1]
- cmp r3, r0
- beq _0807C998
- str r5, [r1]
-_0807C998:
- adds r1, 0x4
- subs r2, 0x1
- cmp r2, 0
- bne _0807C990
-_0807C9A0:
- mov r3, r8
- cmp r3, 0
- ble _0807C9B4
- add r1, sp, 0x20
- mov r2, r8
-_0807C9AA:
- ldm r1!, {r0}
- adds r4, r0
- subs r2, 0x1
- cmp r2, 0
- bne _0807C9AA
-_0807C9B4:
- adds r0, r4, 0
- bl DungeonRandomCapped
- adds r1, r0, 0
- movs r2, 0
- cmp r2, r8
- bge _0807C9DC
- ldr r0, [sp, 0x20]
- subs r1, r0
- cmp r1, 0
- blt _0807C9DC
- add r3, sp, 0x20
-_0807C9CC:
- adds r3, 0x4
- adds r2, 0x1
- cmp r2, r8
- bge _0807C9DC
- ldr r0, [r3]
- subs r1, r0
- cmp r1, 0
- bge _0807C9CC
-_0807C9DC:
- lsls r0, r2, 2
- add r0, sp
- ldr r0, [r0]
- ldr r1, [sp, 0x40]
- str r0, [r1]
-_0807C9E6:
- movs r0, 0x1
-_0807C9E8:
- add sp, 0x50
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end TargetRegularAttack
-
.align 2, 0 \ No newline at end of file
diff --git a/asm/code_807C04C.s b/asm/code_807C04C.s
new file mode 100644
index 0000000..80e75af
--- /dev/null
+++ b/asm/code_807C04C.s
@@ -0,0 +1,1297 @@
+ #include "asm/constants/gba_constants.inc"
+ #include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start FindMoveTarget
+FindMoveTarget:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ str r0, [sp, 0x8]
+ adds r6, r1, 0
+ mov r10, r2
+ movs r0, 0x1
+ str r0, [sp, 0x10]
+ ldr r4, [r6, 0x70]
+ movs r1, 0
+ mov r8, r1
+ ldr r1, _0807C0C8
+ movs r2, 0
+ adds r0, r1, 0x7
+_0807C06E:
+ strb r2, [r0]
+ subs r0, 0x1
+ cmp r0, r1
+ bge _0807C06E
+ adds r0, r6, 0
+ mov r1, r10
+ movs r2, 0x1
+ bl GetTargetingFlags
+ lsls r0, 16
+ asrs r0, 16
+ str r0, [sp, 0xC]
+ adds r0, r6, 0
+ movs r1, 0x8
+ bl HasIQSkill
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x14]
+ movs r0, 0
+ ldr r2, [sp, 0x8]
+ strb r0, [r2]
+ adds r0, r4, 0
+ adds r0, 0xBC
+ ldrb r0, [r0]
+ cmp r0, 0x5
+ bne _0807C0B0
+ mov r0, r10
+ bl GetMoveDealsDirectDamage
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C0C4
+_0807C0B0:
+ ldr r3, [sp, 0x14]
+ cmp r3, 0
+ beq _0807C0CC
+ adds r0, r6, 0
+ mov r1, r10
+ bl CanUseWithStatusChecker
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807C0CC
+_0807C0C4:
+ movs r0, 0x1
+ b _0807C48C
+ .align 2, 0
+_0807C0C8: .4byte gCanAttackInDirection
+_0807C0CC:
+ movs r0, 0xF0
+ ldr r1, [sp, 0xC]
+ ands r0, r1
+ cmp r0, 0
+ beq _0807C0DE
+ cmp r0, 0x10
+ beq _0807C0DE
+ cmp r0, 0x20
+ bne _0807C19C
+_0807C0DE:
+ adds r0, r4, 0
+ adds r0, 0xE8
+ ldrb r1, [r0]
+ cmp r1, 0x1
+ bne _0807C128
+ subs r0, 0xA2
+ ldrb r7, [r0]
+ ldr r0, _0807C118
+ adds r0, r7, r0
+ ldrb r3, [r0]
+ cmp r3, 0
+ beq _0807C0F8
+ b _0807C3F6
+_0807C0F8:
+ strb r1, [r0]
+ ldr r0, _0807C11C
+ add r0, r8
+ strb r7, [r0]
+ ldr r0, _0807C120
+ mov r4, r8
+ lsls r2, r4, 2
+ adds r0, r2, r0
+ movs r1, 0x63
+ str r1, [r0]
+ ldr r0, _0807C124
+ adds r2, r0
+ str r3, [r2]
+ movs r0, 0x1
+ add r8, r0
+ b _0807C3F6
+ .align 2, 0
+_0807C118: .4byte gCanAttackInDirection
+_0807C11C: .4byte gUnknown_202F388
+_0807C120: .4byte gPotentialTargetWeights_2
+_0807C124: .4byte gUnknown_202F3B0
+_0807C128:
+ movs r7, 0
+ movs r0, 0xF0
+ ldr r1, [sp, 0xC]
+ ands r0, r1
+ lsls r5, r0, 16
+_0807C132:
+ movs r2, 0x4
+ ldrsh r0, [r6, r2]
+ ldr r1, _0807C198
+ lsls r2, r7, 2
+ adds r2, r1
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ adds r0, r1
+ movs r4, 0x6
+ ldrsh r1, [r6, r4]
+ movs r3, 0x2
+ ldrsh r2, [r2, r3]
+ adds r1, r2
+ bl GetMapTileAtPosition
+ ldr r4, [r0, 0x10]
+ cmp r4, 0
+ beq _0807C18E
+ adds r0, r4, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0807C18E
+ asrs r0, r5, 16
+ cmp r0, 0x10
+ beq _0807C178
+ cmp r0, 0x20
+ beq _0807C178
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl CanAttackInFront
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C18E
+_0807C178:
+ mov r0, r10
+ str r0, [sp]
+ ldr r1, [sp, 0x14]
+ str r1, [sp, 0x4]
+ mov r0, r8
+ ldr r1, [sp, 0xC]
+ adds r2, r6, 0
+ adds r3, r4, 0
+ bl WeightMoveIfUsable
+ mov r8, r0
+_0807C18E:
+ adds r7, 0x1
+ cmp r7, 0x7
+ ble _0807C132
+ b _0807C3F6
+ .align 2, 0
+_0807C198: .4byte gAdjacentTileOffsets
+_0807C19C:
+ cmp r0, 0x30
+ bne _0807C1F0
+ movs r5, 0
+_0807C1A2:
+ ldr r0, _0807C1E8
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _0807C1EC
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C1E0
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl CanSee
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C1E0
+ mov r3, r10
+ str r3, [sp]
+ ldr r0, [sp, 0x14]
+ str r0, [sp, 0x4]
+ mov r0, r8
+ ldr r1, [sp, 0xC]
+ adds r2, r6, 0
+ adds r3, r4, 0
+ bl WeightMoveIfUsable
+ mov r8, r0
+_0807C1E0:
+ adds r5, 0x1
+ cmp r5, 0x13
+ ble _0807C1A2
+ b _0807C3F6
+ .align 2, 0
+_0807C1E8: .4byte gDungeonGlobalData
+_0807C1EC: .4byte 0x000135cc
+_0807C1F0:
+ cmp r0, 0x40
+ bne _0807C2A8
+ movs r7, 0
+ ldr r1, _0807C2A4
+ mov r9, r1
+_0807C1FA:
+ movs r2, 0x4
+ ldrsh r0, [r6, r2]
+ mov r3, r9
+ movs r4, 0
+ ldrsh r1, [r3, r4]
+ adds r0, r1
+ movs r2, 0x6
+ ldrsh r1, [r6, r2]
+ movs r4, 0x2
+ ldrsh r2, [r3, r4]
+ adds r1, r2
+ bl GetMapTileAtPosition
+ adds r4, r0, 0
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl CanAttackInFront
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C296
+ ldr r5, [r4, 0x10]
+ cmp r5, 0
+ beq _0807C250
+ adds r0, r5, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0807C250
+ mov r4, r8
+ mov r0, r10
+ str r0, [sp]
+ ldr r1, [sp, 0x14]
+ str r1, [sp, 0x4]
+ adds r0, r4, 0
+ ldr r1, [sp, 0xC]
+ adds r2, r6, 0
+ adds r3, r5, 0
+ bl WeightMoveIfUsable
+ mov r8, r0
+ cmp r4, r8
+ bne _0807C296
+_0807C250:
+ movs r2, 0x4
+ ldrsh r0, [r6, r2]
+ mov r3, r9
+ movs r4, 0
+ ldrsh r1, [r3, r4]
+ lsls r1, 1
+ adds r0, r1
+ movs r2, 0x6
+ ldrsh r1, [r6, r2]
+ movs r4, 0x2
+ ldrsh r2, [r3, r4]
+ lsls r2, 1
+ adds r1, r2
+ bl GetMapTileAtPosition
+ adds r4, r0, 0
+ ldr r5, [r4, 0x10]
+ cmp r5, 0
+ beq _0807C296
+ adds r0, r5, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0807C296
+ mov r0, r10
+ str r0, [sp]
+ ldr r1, [sp, 0x14]
+ str r1, [sp, 0x4]
+ mov r0, r8
+ ldr r1, [sp, 0xC]
+ adds r2, r6, 0
+ adds r3, r5, 0
+ bl WeightMoveIfUsable
+ mov r8, r0
+_0807C296:
+ movs r2, 0x4
+ add r9, r2
+ adds r7, 0x1
+ cmp r7, 0x7
+ ble _0807C1FA
+ b _0807C3F6
+ .align 2, 0
+_0807C2A4: .4byte gAdjacentTileOffsets
+_0807C2A8:
+ cmp r0, 0x50
+ beq _0807C2B0
+ cmp r0, 0x80
+ bne _0807C394
+_0807C2B0:
+ movs r3, 0x1
+ str r3, [sp, 0x18]
+ cmp r0, 0x50
+ bne _0807C2BC
+ movs r4, 0xA
+ str r4, [sp, 0x18]
+_0807C2BC:
+ movs r0, 0
+ mov r9, r0
+_0807C2C0:
+ ldr r0, _0807C37C
+ ldr r0, [r0]
+ mov r2, r9
+ lsls r1, r2, 2
+ ldr r3, _0807C380
+ adds r0, r3
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C370
+ cmp r6, r4
+ beq _0807C370
+ adds r1, r4, 0x4
+ adds r0, r6, 0x4
+ bl CalculateFacingDir
+ adds r5, r0, 0
+ ldr r0, _0807C384
+ adds r7, r5, r0
+ ldrb r0, [r7]
+ cmp r0, 0
+ bne _0807C370
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl CanSee
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C370
+ adds r0, r6, 0
+ adds r1, r4, 0
+ ldr r2, [sp, 0x18]
+ bl IsTargetInLineRange
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C370
+ ldr r0, [sp, 0x14]
+ str r0, [sp]
+ ldr r0, [sp, 0xC]
+ adds r1, r6, 0
+ adds r2, r4, 0
+ mov r3, r10
+ bl CanUseStatusMove
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C370
+ adds r0, r6, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ ldr r3, [sp, 0x18]
+ bl IsTargetStraightAhead
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C370
+ movs r0, 0x1
+ strb r0, [r7]
+ ldr r0, _0807C388
+ add r0, r8
+ strb r5, [r0]
+ adds r0, r6, 0
+ mov r1, r10
+ bl GetMoveTypeForPokemon
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r6, 0
+ ldr r1, [sp, 0xC]
+ adds r2, r4, 0
+ bl WeightMove
+ ldr r1, _0807C38C
+ mov r3, r8
+ lsls r2, r3, 2
+ adds r1, r2, r1
+ str r0, [r1]
+ ldr r0, _0807C390
+ adds r2, r0
+ str r4, [r2]
+ movs r4, 0x1
+ add r8, r4
+_0807C370:
+ movs r0, 0x1
+ add r9, r0
+ mov r1, r9
+ cmp r1, 0x13
+ ble _0807C2C0
+ b _0807C3F6
+ .align 2, 0
+_0807C37C: .4byte gDungeonGlobalData
+_0807C380: .4byte 0x000135cc
+_0807C384: .4byte gCanAttackInDirection
+_0807C388: .4byte gUnknown_202F388
+_0807C38C: .4byte gPotentialTargetWeights_2
+_0807C390: .4byte gUnknown_202F3B0
+_0807C394:
+ cmp r0, 0x60
+ bne _0807C3DC
+ movs r5, 0
+_0807C39A:
+ ldr r0, _0807C3D4
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _0807C3D8
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C3CA
+ mov r3, r10
+ str r3, [sp]
+ ldr r0, [sp, 0x14]
+ str r0, [sp, 0x4]
+ mov r0, r8
+ ldr r1, [sp, 0xC]
+ adds r2, r6, 0
+ adds r3, r4, 0
+ bl WeightMoveIfUsable
+ mov r8, r0
+_0807C3CA:
+ adds r5, 0x1
+ cmp r5, 0x13
+ ble _0807C39A
+ b _0807C3F6
+ .align 2, 0
+_0807C3D4: .4byte gDungeonGlobalData
+_0807C3D8: .4byte 0x000135cc
+_0807C3DC:
+ cmp r0, 0x70
+ bne _0807C3F6
+ mov r1, r10
+ str r1, [sp]
+ ldr r2, [sp, 0x14]
+ str r2, [sp, 0x4]
+ mov r0, r8
+ ldr r1, [sp, 0xC]
+ adds r2, r6, 0
+ adds r3, r6, 0
+ bl WeightMoveIfUsable
+ mov r8, r0
+_0807C3F6:
+ mov r3, r8
+ cmp r3, 0
+ bne _0807C402
+ ldr r4, [sp, 0x8]
+ strb r3, [r4]
+ b _0807C48A
+_0807C402:
+ movs r4, 0
+ movs r3, 0
+ mov r0, r8
+ cmp r0, 0
+ ble _0807C420
+ ldr r2, _0807C464
+ mov r1, r8
+_0807C410:
+ ldr r0, [r2]
+ cmp r3, r0
+ bge _0807C418
+ adds r3, r0, 0
+_0807C418:
+ adds r2, 0x4
+ subs r1, 0x1
+ cmp r1, 0
+ bne _0807C410
+_0807C420:
+ mov r1, r8
+ cmp r1, 0
+ ble _0807C43A
+ movs r5, 0
+ ldr r2, _0807C464
+_0807C42A:
+ ldr r0, [r2]
+ cmp r3, r0
+ beq _0807C432
+ str r5, [r2]
+_0807C432:
+ adds r2, 0x4
+ subs r1, 0x1
+ cmp r1, 0
+ bne _0807C42A
+_0807C43A:
+ str r3, [sp, 0x10]
+ mov r2, r8
+ cmp r2, 0
+ ble _0807C450
+ ldr r2, _0807C464
+ mov r1, r8
+_0807C446:
+ ldm r2!, {r0}
+ adds r4, r0
+ subs r1, 0x1
+ cmp r1, 0
+ bne _0807C446
+_0807C450:
+ adds r0, r4, 0
+ bl DungeonRandomCapped
+ adds r2, r0, 0
+ movs r1, 0
+ cmp r1, r8
+ bge _0807C478
+ ldr r3, _0807C464
+ b _0807C470
+ .align 2, 0
+_0807C464: .4byte gPotentialTargetWeights_2
+_0807C468:
+ adds r3, 0x4
+ adds r1, 0x1
+ cmp r1, r8
+ bge _0807C478
+_0807C470:
+ ldr r0, [r3]
+ subs r2, r0
+ cmp r2, 0
+ bge _0807C468
+_0807C478:
+ movs r0, 0x1
+ ldr r3, [sp, 0x8]
+ strb r0, [r3]
+ ldr r0, _0807C49C
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ strb r0, [r3, 0x1]
+ movs r0, 0x8
+ str r0, [r3, 0x4]
+_0807C48A:
+ ldr r0, [sp, 0x10]
+_0807C48C:
+ 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
+_0807C49C: .4byte gUnknown_202F388
+ thumb_func_end FindMoveTarget
+
+ thumb_func_start IsTargetInLineRange
+IsTargetInLineRange:
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x4
+ ldrsh r1, [r4, r0]
+ movs r3, 0x4
+ ldrsh r0, [r5, r3]
+ subs r3, r1, r0
+ cmp r3, 0
+ bge _0807C4B6
+ negs r3, r3
+_0807C4B6:
+ movs r6, 0x6
+ ldrsh r1, [r4, r6]
+ movs r7, 0x6
+ ldrsh r0, [r5, r7]
+ subs r1, r0
+ cmp r1, 0
+ bge _0807C4C6
+ negs r1, r1
+_0807C4C6:
+ adds r0, r1, 0
+ cmp r1, r3
+ bge _0807C4CE
+ adds r0, r3, 0
+_0807C4CE:
+ cmp r0, 0xA
+ bgt _0807C578
+ cmp r0, r2
+ bgt _0807C578
+ movs r6, 0x1
+ negs r6, r6
+ cmp r3, r1
+ bne _0807C516
+ movs r0, 0x4
+ ldrsh r1, [r4, r0]
+ movs r2, 0x4
+ ldrsh r0, [r5, r2]
+ ldrh r2, [r4, 0x4]
+ ldrh r3, [r5, 0x4]
+ cmp r1, r0
+ bge _0807C4FE
+ movs r6, 0x6
+ ldrsh r1, [r4, r6]
+ movs r7, 0x6
+ ldrsh r0, [r5, r7]
+ cmp r1, r0
+ blt _0807C574
+ cmp r1, r0
+ bgt _0807C574
+_0807C4FE:
+ lsls r1, r2, 16
+ lsls r0, r3, 16
+ movs r6, 0x7
+ cmp r1, r0
+ ble _0807C570
+ movs r0, 0x6
+ ldrsh r1, [r4, r0]
+ movs r2, 0x6
+ ldrsh r0, [r5, r2]
+ cmp r1, r0
+ ble _0807C570
+ b _0807C574
+_0807C516:
+ movs r3, 0x4
+ ldrsh r1, [r4, r3]
+ movs r7, 0x4
+ ldrsh r0, [r5, r7]
+ ldrh r2, [r4, 0x4]
+ ldrh r3, [r5, 0x4]
+ cmp r1, r0
+ bne _0807C532
+ movs r0, 0x6
+ ldrsh r1, [r4, r0]
+ movs r7, 0x6
+ ldrsh r0, [r5, r7]
+ cmp r1, r0
+ blt _0807C574
+_0807C532:
+ lsls r1, r2, 16
+ lsls r0, r3, 16
+ cmp r1, r0
+ bge _0807C546
+ movs r0, 0x6
+ ldrsh r1, [r4, r0]
+ movs r7, 0x6
+ ldrsh r0, [r5, r7]
+ cmp r1, r0
+ beq _0807C574
+_0807C546:
+ lsls r1, r2, 16
+ lsls r0, r3, 16
+ cmp r1, r0
+ bne _0807C55A
+ movs r0, 0x6
+ ldrsh r1, [r4, r0]
+ movs r7, 0x6
+ ldrsh r0, [r5, r7]
+ cmp r1, r0
+ bgt _0807C574
+_0807C55A:
+ lsls r1, r2, 16
+ lsls r0, r3, 16
+ cmp r1, r0
+ ble _0807C570
+ movs r0, 0x6
+ ldrsh r1, [r4, r0]
+ movs r2, 0x6
+ ldrsh r0, [r5, r2]
+ cmp r1, r0
+ bne _0807C570
+ movs r6, 0x6
+_0807C570:
+ cmp r6, 0
+ blt _0807C578
+_0807C574:
+ movs r0, 0x1
+ b _0807C57A
+_0807C578:
+ movs r0, 0
+_0807C57A:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end IsTargetInLineRange
+
+ thumb_func_start WeightMoveIfUsable
+WeightMoveIfUsable:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ adds r6, r0, 0
+ adds r5, r2, 0
+ adds r7, r3, 0
+ ldr r0, [sp, 0x28]
+ lsls r1, 16
+ asrs r1, 16
+ mov r9, r1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldr r2, [r5, 0x70]
+ ldr r1, [r5, 0x4]
+ ldr r0, [r7, 0x4]
+ cmp r1, r0
+ beq _0807C5BC
+ movs r0, 0xF0
+ mov r1, r9
+ ands r0, r1
+ cmp r0, 0x30
+ beq _0807C5BC
+ cmp r0, 0x60
+ beq _0807C5BC
+ cmp r0, 0x70
+ bne _0807C5C4
+_0807C5BC:
+ adds r0, r2, 0
+ adds r0, 0x46
+ ldrb r4, [r0]
+ b _0807C5CE
+_0807C5C4:
+ adds r0, r5, 0x4
+ adds r1, r7, 0x4
+ bl CalculateFacingDir
+ adds r4, r0, 0
+_0807C5CE:
+ ldr r0, _0807C638
+ adds r0, r4
+ mov r8, r0
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807C624
+ mov r0, r10
+ str r0, [sp]
+ mov r0, r9
+ adds r1, r5, 0
+ adds r2, r7, 0
+ ldr r3, [sp, 0x24]
+ bl CanUseStatusMove
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C624
+ movs r0, 0x1
+ mov r1, r8
+ strb r0, [r1]
+ ldr r0, _0807C63C
+ adds r0, r6, r0
+ strb r4, [r0]
+ adds r0, r5, 0
+ ldr r1, [sp, 0x24]
+ bl GetMoveTypeForPokemon
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r5, 0
+ mov r1, r9
+ adds r2, r7, 0
+ bl WeightMove
+ ldr r1, _0807C640
+ lsls r2, r6, 2
+ adds r1, r2, r1
+ str r0, [r1]
+ ldr r0, _0807C644
+ adds r2, r0
+ str r7, [r2]
+ adds r6, 0x1
+_0807C624:
+ adds r0, r6, 0
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0807C638: .4byte gCanAttackInDirection
+_0807C63C: .4byte gUnknown_202F388
+_0807C640: .4byte gPotentialTargetWeights_2
+_0807C644: .4byte gUnknown_202F3B0
+ thumb_func_end WeightMoveIfUsable
+
+ thumb_func_start CanUseStatusMove
+CanUseStatusMove:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ mov r8, r3
+ ldr r1, [sp, 0x1C]
+ lsls r0, 16
+ asrs r6, r0, 16
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ movs r7, 0
+ movs r0, 0xF
+ ands r0, r6
+ adds r1, r0, 0
+ cmp r1, 0
+ bne _0807C686
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl CanTarget
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0807C6E0
+ movs r7, 0x1
+ b _0807C6E4
+_0807C686:
+ cmp r1, 0x1
+ beq _0807C6BE
+ cmp r1, 0x2
+ bne _0807C692
+ ldr r1, [r4, 0x70]
+ b _0807C69C
+_0807C692:
+ cmp r1, 0x5
+ bne _0807C6B6
+ ldr r1, [r4, 0x70]
+ cmp r5, r4
+ beq _0807C6B2
+_0807C69C:
+ movs r7, 0x1
+ ldrb r0, [r1, 0x8]
+ cmp r0, 0x1
+ beq _0807C6B2
+ adds r0, r1, 0
+ adds r0, 0xA4
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ beq _0807C6B2
+ cmp r0, 0x1
+ bne _0807C6E0
+_0807C6B2:
+ movs r0, 0
+ b _0807C7A0
+_0807C6B6:
+ cmp r1, 0x6
+ bne _0807C6D4
+ cmp r5, r4
+ beq _0807C6B2
+_0807C6BE:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl CanTarget
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807C6E0
+ movs r7, 0x1
+ b _0807C6E4
+_0807C6D4:
+ subs r0, 0x3
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ bhi _0807C6E0
+ movs r7, 0x1
+_0807C6E0:
+ cmp r7, 0
+ beq _0807C79E
+_0807C6E4:
+ mov r0, r9
+ cmp r0, 0
+ beq _0807C77C
+ adds r0, r5, 0
+ adds r1, r4, 0
+ mov r2, r8
+ bl CanUseWithStatusChecker_2
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C6B2
+ movs r1, 0xF0
+ lsls r1, 4
+ ands r1, r6
+ movs r0, 0x80
+ lsls r0, 1
+ cmp r1, r0
+ beq _0807C78A
+ movs r0, 0x80
+ lsls r0, 2
+ cmp r1, r0
+ beq _0807C76E
+ movs r0, 0xC0
+ lsls r0, 2
+ cmp r1, r0
+ bne _0807C720
+ adds r0, r4, 0
+ bl HasNegativeStatus
+ b _0807C774
+_0807C720:
+ movs r0, 0x80
+ lsls r0, 3
+ cmp r1, r0
+ bne _0807C730
+ adds r0, r4, 0
+ bl IsSleeping
+ b _0807C774
+_0807C730:
+ movs r0, 0xC0
+ lsls r0, 3
+ cmp r1, r0
+ bne _0807C75A
+ ldr r1, [r4, 0x70]
+ adds r0, r1, 0
+ adds r0, 0x5C
+ ldrb r0, [r0]
+ cmp r0, 0xE
+ beq _0807C74E
+ adds r0, r1, 0
+ adds r0, 0x5D
+ ldrb r0, [r0]
+ cmp r0, 0xE
+ bne _0807C6B2
+_0807C74E:
+ adds r0, r1, 0
+ adds r0, 0xF5
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807C79E
+ b _0807C6B2
+_0807C75A:
+ movs r0, 0xA0
+ lsls r0, 3
+ cmp r1, r0
+ bne _0807C79E
+ adds r0, r4, 0
+ bl HasNegativeStatus
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807C79E
+_0807C76E:
+ adds r0, r4, 0
+ bl HasQuarterHPOrLess
+_0807C774:
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807C79E
+ b _0807C6B2
+_0807C77C:
+ movs r0, 0xF0
+ lsls r0, 4
+ ands r0, r6
+ movs r1, 0x80
+ lsls r1, 1
+ cmp r0, r1
+ bne _0807C79E
+_0807C78A:
+ mov r0, r8
+ movs r1, 0x2
+ bl GetMoveAccuracy
+ adds r4, r0, 0
+ movs r0, 0x64
+ bl DungeonRandomCapped
+ cmp r0, r4
+ bge _0807C6B2
+_0807C79E:
+ adds r0, r7, 0
+_0807C7A0:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end CanUseStatusMove
+
+ thumb_func_start WeightMove
+WeightMove:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r5, r0, 0
+ mov r8, r2
+ lsls r1, 16
+ asrs r1, 16
+ lsls r3, 24
+ lsrs r3, 24
+ mov r9, r3
+ movs r6, 0x1
+ ldr r4, [r2, 0x70]
+ adds r7, r4, 0
+ ldrb r0, [r4, 0x6]
+ cmp r0, 0
+ beq _0807C7D6
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0
+ beq _0807C7DA
+_0807C7D6:
+ movs r0, 0x1
+ b _0807C848
+_0807C7DA:
+ adds r0, r5, 0
+ movs r1, 0x9
+ bl HasIQSkill
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C804
+ ldr r0, _0807C7FC
+ ldr r0, [r0]
+ movs r2, 0x2
+ ldrsh r1, [r4, r2]
+ ldr r2, _0807C800
+ adds r0, r2
+ adds r0, r1
+ ldrb r6, [r0]
+ b _0807C846
+ .align 2, 0
+_0807C7FC: .4byte gDungeonGlobalData
+_0807C800: .4byte 0x0000363c
+_0807C804:
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl HasIQSkill
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C828
+ ldrb r1, [r7, 0xE]
+ movs r2, 0xC
+ negs r2, r2
+ adds r0, r2, 0
+ subs r0, r1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0
+ bne _0807C846
+ movs r6, 0x1
+ b _0807C846
+_0807C828:
+ adds r0, r5, 0
+ movs r1, 0xB
+ bl HasIQSkill
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C846
+ adds r0, r5, 0
+ mov r1, r8
+ mov r2, r9
+ bl WeightWeakTypePicker
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+_0807C846:
+ adds r0, r6, 0
+_0807C848:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end WeightMove
+
+ thumb_func_start TargetRegularAttack
+TargetRegularAttack:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x50
+ adds r7, r0, 0
+ str r1, [sp, 0x40]
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp, 0x44]
+ ldr r0, [r7, 0x70]
+ movs r1, 0
+ mov r8, r1
+ adds r1, r0, 0
+ adds r1, 0x46
+ ldrb r6, [r1]
+ adds r0, 0xE8
+ ldrb r0, [r0]
+ movs r3, 0x8
+ mov r10, r3
+ cmp r0, 0x1
+ bne _0807C886
+ movs r0, 0x1
+ mov r10, r0
+_0807C886:
+ movs r4, 0
+ adds r0, r7, 0
+ movs r1, 0x9
+ bl HasIQSkill
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807C8A4
+ adds r0, r7, 0
+ movs r1, 0xA
+ bl HasIQSkill
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C8A6
+_0807C8A4:
+ movs r4, 0x1
+_0807C8A6:
+ str r4, [sp, 0x48]
+ adds r0, r7, 0
+ movs r1, 0x8
+ bl HasIQSkill
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x4C]
+ movs r1, 0
+ mov r9, r1
+ cmp r9, r10
+ bge _0807C952
+_0807C8BE:
+ movs r0, 0x7
+ ands r6, r0
+ movs r3, 0x4
+ ldrsh r0, [r7, r3]
+ ldr r1, _0807C95C
+ lsls r2, r6, 2
+ adds r2, r1
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ adds r0, r1
+ movs r3, 0x6
+ ldrsh r1, [r7, r3]
+ movs r3, 0x2
+ ldrsh r2, [r2, r3]
+ adds r1, r2
+ bl GetMapTileAtPosition
+ ldr r5, [r0, 0x10]
+ cmp r5, 0
+ beq _0807C948
+ adds r0, r5, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0807C948
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl CanAttackInFront
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807C948
+ adds r0, r7, 0
+ adds r1, r5, 0
+ movs r2, 0
+ ldr r3, [sp, 0x44]
+ bl CanTarget
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0807C948
+ ldr r0, [sp, 0x4C]
+ cmp r0, 0
+ beq _0807C922
+ ldr r0, [r5, 0x70]
+ adds r0, 0xB0
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0807C948
+_0807C922:
+ mov r1, r8
+ lsls r4, r1, 2
+ mov r3, sp
+ adds r0, r3, r4
+ str r6, [r0]
+ adds r0, r7, 0
+ movs r1, 0
+ adds r2, r5, 0
+ movs r3, 0
+ bl WeightMove
+ add r1, sp, 0x20
+ adds r1, r4
+ str r0, [r1]
+ ldr r0, [sp, 0x48]
+ cmp r0, 0
+ beq _0807C960
+ movs r1, 0x1
+ add r8, r1
+_0807C948:
+ movs r3, 0x1
+ add r9, r3
+ adds r6, 0x1
+ cmp r9, r10
+ blt _0807C8BE
+_0807C952:
+ mov r0, r8
+ cmp r0, 0
+ bne _0807C966
+ movs r0, 0
+ b _0807C9E8
+ .align 2, 0
+_0807C95C: .4byte gAdjacentTileOffsets
+_0807C960:
+ ldr r1, [sp, 0x40]
+ str r6, [r1]
+ b _0807C9E6
+_0807C966:
+ movs r4, 0
+ movs r3, 0
+ mov r0, r8
+ cmp r0, 0
+ ble _0807C984
+ add r1, sp, 0x20
+ mov r2, r8
+_0807C974:
+ ldr r0, [r1]
+ cmp r3, r0
+ bge _0807C97C
+ adds r3, r0, 0
+_0807C97C:
+ adds r1, 0x4
+ subs r2, 0x1
+ cmp r2, 0
+ bne _0807C974
+_0807C984:
+ mov r1, r8
+ cmp r1, 0
+ ble _0807C9A0
+ movs r5, 0
+ add r1, sp, 0x20
+ mov r2, r8
+_0807C990:
+ ldr r0, [r1]
+ cmp r3, r0
+ beq _0807C998
+ str r5, [r1]
+_0807C998:
+ adds r1, 0x4
+ subs r2, 0x1
+ cmp r2, 0
+ bne _0807C990
+_0807C9A0:
+ mov r3, r8
+ cmp r3, 0
+ ble _0807C9B4
+ add r1, sp, 0x20
+ mov r2, r8
+_0807C9AA:
+ ldm r1!, {r0}
+ adds r4, r0
+ subs r2, 0x1
+ cmp r2, 0
+ bne _0807C9AA
+_0807C9B4:
+ adds r0, r4, 0
+ bl DungeonRandomCapped
+ adds r1, r0, 0
+ movs r2, 0
+ cmp r2, r8
+ bge _0807C9DC
+ ldr r0, [sp, 0x20]
+ subs r1, r0
+ cmp r1, 0
+ blt _0807C9DC
+ add r3, sp, 0x20
+_0807C9CC:
+ adds r3, 0x4
+ adds r2, 0x1
+ cmp r2, r8
+ bge _0807C9DC
+ ldr r0, [r3]
+ subs r1, r0
+ cmp r1, 0
+ bge _0807C9CC
+_0807C9DC:
+ lsls r0, r2, 2
+ add r0, sp
+ ldr r0, [r0]
+ ldr r1, [sp, 0x40]
+ str r0, [r1]
+_0807C9E6:
+ movs r0, 0x1
+_0807C9E8:
+ add sp, 0x50
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end TargetRegularAttack
+
+ .align 2, 0 \ No newline at end of file