mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-18 19:05:09 -05:00
1124 lines
18 KiB
ArmAsm
1124 lines
18 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_803ECEC
|
|
sub_803ECEC: @ 803ECEC
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x2C
|
|
adds r6, r0, 0
|
|
str r1, [sp, 0x4]
|
|
str r2, [sp, 0x8]
|
|
ldr r0, [sp, 0x4C]
|
|
ldr r1, [sp, 0x50]
|
|
ldr r2, [sp, 0x54]
|
|
ldr r4, [sp, 0x58]
|
|
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
|
|
movs r5, 0
|
|
cmp r3, 0
|
|
bne _0803ED40
|
|
ldr r2, _0803ED38 @ =gUnknown_2024020
|
|
ldr r1, _0803ED3C @ =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 _0803ED44
|
|
.align 2, 0
|
|
_0803ED38: .4byte gUnknown_2024020
|
|
_0803ED3C: .4byte gBattleMoves
|
|
_0803ED40:
|
|
ldr r0, _0803ED5C @ =gUnknown_2024020
|
|
strh r3, [r0]
|
|
_0803ED44:
|
|
cmp r7, 0
|
|
bne _0803ED64
|
|
ldr r1, _0803ED60 @ =gBattleMoves
|
|
ldr r7, [sp, 0x8]
|
|
lsls r0, r7, 1
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x2]
|
|
mov r9, r0
|
|
b _0803ED6E
|
|
.align 2, 0
|
|
_0803ED5C: .4byte gUnknown_2024020
|
|
_0803ED60: .4byte gBattleMoves
|
|
_0803ED64:
|
|
movs r0, 0x3F
|
|
mov r9, r0
|
|
mov r1, r9
|
|
ands r1, r7
|
|
mov r9, r1
|
|
_0803ED6E:
|
|
ldrh r7, [r6, 0x2]
|
|
ldr r2, [sp, 0x4]
|
|
ldrh r2, [r2, 0x4]
|
|
str r2, [sp, 0x14]
|
|
ldrh r3, [r6, 0x8]
|
|
mov r8, r3
|
|
ldr r0, [sp, 0x4]
|
|
ldrh r0, [r0, 0xA]
|
|
str r0, [sp, 0x18]
|
|
ldrh r0, [r6, 0x2E]
|
|
cmp r0, 0xAF
|
|
bne _0803EDA0
|
|
ldr r1, _0803ED9C @ =gUnknown_2023F54
|
|
ldr r2, [sp, 0x10]
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r3, [r0, 0x7]
|
|
mov r10, r3
|
|
ldrb r0, [r0, 0x1A]
|
|
b _0803EDB6
|
|
.align 2, 0
|
|
_0803ED9C: .4byte gUnknown_2023F54
|
|
_0803EDA0:
|
|
ldrh r0, [r6, 0x2E]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
ldrh r0, [r6, 0x2E]
|
|
bl ItemId_GetHoldEffectParam
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_0803EDB6:
|
|
str r0, [sp, 0x20]
|
|
ldr r1, [sp, 0x4]
|
|
ldrh r0, [r1, 0x2E]
|
|
cmp r0, 0xAF
|
|
bne _0803EDE6
|
|
ldr r1, _0803EDD0 @ =gUnknown_2023F54
|
|
lsls r0, r4, 3
|
|
subs r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x7]
|
|
str r0, [sp, 0x1C]
|
|
b _0803EDFC
|
|
.align 2, 0
|
|
_0803EDD0: .4byte gUnknown_2023F54
|
|
_0803EDD4:
|
|
ldr r0, [sp, 0x20]
|
|
adds r0, 0x64
|
|
muls r0, r7
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
b _0803EF44
|
|
_0803EDE6:
|
|
ldr r2, [sp, 0x4]
|
|
ldrh r0, [r2, 0x2E]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x1C]
|
|
ldr r3, [sp, 0x4]
|
|
ldrh r0, [r3, 0x2E]
|
|
bl ItemId_GetHoldEffectParam
|
|
_0803EDFC:
|
|
adds r0, r6, 0
|
|
adds r0, 0x20
|
|
ldrb r1, [r0]
|
|
str r0, [sp, 0x24]
|
|
cmp r1, 0x25
|
|
beq _0803EE0C
|
|
cmp r1, 0x4A
|
|
bne _0803EE10
|
|
_0803EE0C:
|
|
lsls r0, r7, 17
|
|
lsrs r7, r0, 16
|
|
_0803EE10:
|
|
ldr r0, _0803EF28 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, _0803EF2C @ =0x00000802
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803EEE8
|
|
movs r0, 0x82
|
|
lsls r0, 4
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803EE44
|
|
ldr r0, [sp, 0x10]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803EE44
|
|
movs r0, 0x6E
|
|
muls r0, r7
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
_0803EE44:
|
|
ldr r0, _0803EF28 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, _0803EF2C @ =0x00000802
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803EEE8
|
|
ldr r0, _0803EF30 @ =0x00000824
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803EE7A
|
|
adds r0, r4, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803EE7A
|
|
movs r0, 0x6E
|
|
ldr r1, [sp, 0x14]
|
|
muls r0, r1
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x14]
|
|
_0803EE7A:
|
|
ldr r0, _0803EF28 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, _0803EF2C @ =0x00000802
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803EEE8
|
|
ldr r0, _0803EF34 @ =0x00000826
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803EEB2
|
|
ldr r0, [sp, 0x10]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803EEB2
|
|
movs r0, 0x6E
|
|
mov r2, r8
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
_0803EEB2:
|
|
ldr r0, _0803EF28 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, _0803EF2C @ =0x00000802
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803EEE8
|
|
ldr r0, _0803EF34 @ =0x00000826
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803EEE8
|
|
adds r0, r4, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803EEE8
|
|
movs r0, 0x6E
|
|
ldr r3, [sp, 0x18]
|
|
muls r0, r3
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x18]
|
|
_0803EEE8:
|
|
movs r2, 0
|
|
ldr r4, _0803EF38 @ =gUnknown_825DECC
|
|
ldr r0, [sp, 0x4]
|
|
adds r0, 0x20
|
|
str r0, [sp, 0x28]
|
|
adds r3, r4, 0
|
|
_0803EEF4:
|
|
lsls r1, r2, 1
|
|
ldrb r0, [r3]
|
|
cmp r10, r0
|
|
bne _0803EF3C
|
|
adds r0, r4, 0x1
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
cmp r9, r0
|
|
bne _0803EF3C
|
|
mov r1, r9
|
|
cmp r1, 0x8
|
|
bhi _0803EF0E
|
|
b _0803EDD4
|
|
_0803EF0E:
|
|
ldr r0, [sp, 0x20]
|
|
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 _0803EF44
|
|
.align 2, 0
|
|
_0803EF28: .4byte gBattleTypeFlags
|
|
_0803EF2C: .4byte 0x00000802
|
|
_0803EF30: .4byte 0x00000824
|
|
_0803EF34: .4byte 0x00000826
|
|
_0803EF38: .4byte gUnknown_825DECC
|
|
_0803EF3C:
|
|
adds r3, 0x2
|
|
adds r2, 0x1
|
|
cmp r2, 0x10
|
|
bls _0803EEF4
|
|
_0803EF44:
|
|
mov r3, r10
|
|
cmp r3, 0x1D
|
|
bne _0803EF58
|
|
movs r0, 0x96
|
|
muls r0, r7
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
_0803EF58:
|
|
mov r0, r10
|
|
cmp r0, 0x22
|
|
bne _0803EF90
|
|
ldr r0, _0803F244 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803EF90
|
|
ldr r1, _0803F248 @ =0xfffffe69
|
|
adds r0, r1, 0
|
|
ldrh r2, [r6]
|
|
adds r0, r2
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
bhi _0803EF90
|
|
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
|
|
_0803EF90:
|
|
ldr r0, [sp, 0x1C]
|
|
cmp r0, 0x22
|
|
bne _0803EFC8
|
|
ldr r0, _0803F244 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803EFC8
|
|
ldr r1, _0803F248 @ =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 _0803EFC8
|
|
movs r0, 0x96
|
|
ldr r3, [sp, 0x18]
|
|
muls r0, r3
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x18]
|
|
_0803EFC8:
|
|
mov r0, r10
|
|
cmp r0, 0x23
|
|
bne _0803EFDE
|
|
ldrh r1, [r6]
|
|
ldr r0, _0803F24C @ =0x00000175
|
|
cmp r1, r0
|
|
bne _0803EFDE
|
|
mov r1, r8
|
|
lsls r0, r1, 17
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
_0803EFDE:
|
|
ldr r2, [sp, 0x1C]
|
|
cmp r2, 0x24
|
|
bne _0803EFF6
|
|
ldr r3, [sp, 0x4]
|
|
ldrh r1, [r3]
|
|
ldr r0, _0803F24C @ =0x00000175
|
|
cmp r1, r0
|
|
bne _0803EFF6
|
|
ldr r1, [sp, 0x18]
|
|
lsls r0, r1, 17
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x18]
|
|
_0803EFF6:
|
|
mov r2, r10
|
|
cmp r2, 0x2D
|
|
bne _0803F00A
|
|
ldrh r0, [r6]
|
|
cmp r0, 0x19
|
|
bne _0803F00A
|
|
mov r3, r8
|
|
lsls r0, r3, 17
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
_0803F00A:
|
|
ldr r0, [sp, 0x1C]
|
|
cmp r0, 0x40
|
|
bne _0803F020
|
|
ldr r1, [sp, 0x4]
|
|
ldrh r0, [r1]
|
|
cmp r0, 0x84
|
|
bne _0803F020
|
|
ldr r2, [sp, 0x14]
|
|
lsls r0, r2, 17
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x14]
|
|
_0803F020:
|
|
mov r3, r10
|
|
cmp r3, 0x41
|
|
bne _0803F036
|
|
ldrh r0, [r6]
|
|
subs r0, 0x68
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
bhi _0803F036
|
|
lsls r0, r7, 17
|
|
lsrs r7, r0, 16
|
|
_0803F036:
|
|
ldr r1, [sp, 0x28]
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x2F
|
|
bne _0803F04E
|
|
mov r2, r9
|
|
cmp r2, 0xA
|
|
beq _0803F048
|
|
cmp r2, 0xF
|
|
bne _0803F04E
|
|
_0803F048:
|
|
mov r3, r8
|
|
lsrs r3, 1
|
|
mov r8, r3
|
|
_0803F04E:
|
|
ldr r0, [sp, 0x24]
|
|
ldrb r4, [r0]
|
|
cmp r4, 0x37
|
|
bne _0803F064
|
|
movs r0, 0x96
|
|
muls r0, r7
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
_0803F064:
|
|
cmp r4, 0x39
|
|
bne _0803F092
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xE
|
|
movs r1, 0
|
|
movs r2, 0x3A
|
|
movs r3, 0
|
|
bl sub_8019F18
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803F092
|
|
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
|
|
_0803F092:
|
|
ldr r2, [sp, 0x24]
|
|
ldrb r0, [r2]
|
|
cmp r0, 0x3A
|
|
bne _0803F0C4
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xE
|
|
movs r1, 0
|
|
movs r2, 0x39
|
|
movs r3, 0
|
|
bl sub_8019F18
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803F0C4
|
|
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
|
|
_0803F0C4:
|
|
ldr r1, [sp, 0x24]
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x3E
|
|
bne _0803F0E0
|
|
ldr r0, [r6, 0x4C]
|
|
cmp r0, 0
|
|
beq _0803F0E0
|
|
movs r0, 0x96
|
|
muls r0, r7
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
_0803F0E0:
|
|
ldr r2, [sp, 0x28]
|
|
ldrb r0, [r2]
|
|
cmp r0, 0x3F
|
|
bne _0803F102
|
|
ldr r3, [sp, 0x4]
|
|
ldr r0, [r3, 0x4C]
|
|
cmp r0, 0
|
|
beq _0803F102
|
|
movs r0, 0x96
|
|
ldr r1, [sp, 0x14]
|
|
muls r0, r1
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x14]
|
|
_0803F102:
|
|
mov r2, r9
|
|
cmp r2, 0xD
|
|
bne _0803F126
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xE
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0xFD
|
|
bl sub_8019F18
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803F126
|
|
ldr r1, _0803F250 @ =gUnknown_2024020
|
|
ldrh r0, [r1]
|
|
lsrs r0, 1
|
|
strh r0, [r1]
|
|
_0803F126:
|
|
mov r3, r9
|
|
cmp r3, 0xA
|
|
bne _0803F14A
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xE
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0xFE
|
|
bl sub_8019F18
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803F14A
|
|
ldr r1, _0803F250 @ =gUnknown_2024020
|
|
ldrh r0, [r1]
|
|
lsrs r0, 1
|
|
strh r0, [r1]
|
|
_0803F14A:
|
|
mov r0, r9
|
|
cmp r0, 0xC
|
|
bne _0803F17A
|
|
ldr r1, [sp, 0x24]
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x41
|
|
bne _0803F17A
|
|
ldrh r0, [r6, 0x2C]
|
|
movs r1, 0x3
|
|
bl __udivsi3
|
|
ldrh r1, [r6, 0x28]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r1, r0
|
|
bhi _0803F17A
|
|
ldr r4, _0803F250 @ =gUnknown_2024020
|
|
ldrh r1, [r4]
|
|
movs r0, 0x96
|
|
muls r0, r1
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
strh r0, [r4]
|
|
_0803F17A:
|
|
mov r2, r9
|
|
cmp r2, 0xA
|
|
bne _0803F1AA
|
|
ldr r3, [sp, 0x24]
|
|
ldrb r0, [r3]
|
|
cmp r0, 0x42
|
|
bne _0803F1AA
|
|
ldrh r0, [r6, 0x2C]
|
|
movs r1, 0x3
|
|
bl __udivsi3
|
|
ldrh r1, [r6, 0x28]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r1, r0
|
|
bhi _0803F1AA
|
|
ldr r4, _0803F250 @ =gUnknown_2024020
|
|
ldrh r1, [r4]
|
|
movs r0, 0x96
|
|
muls r0, r1
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
strh r0, [r4]
|
|
_0803F1AA:
|
|
mov r0, r9
|
|
cmp r0, 0xB
|
|
bne _0803F1DA
|
|
ldr r1, [sp, 0x24]
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x43
|
|
bne _0803F1DA
|
|
ldrh r0, [r6, 0x2C]
|
|
movs r1, 0x3
|
|
bl __udivsi3
|
|
ldrh r1, [r6, 0x28]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r1, r0
|
|
bhi _0803F1DA
|
|
ldr r4, _0803F250 @ =gUnknown_2024020
|
|
ldrh r1, [r4]
|
|
movs r0, 0x96
|
|
muls r0, r1
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
strh r0, [r4]
|
|
_0803F1DA:
|
|
mov r2, r9
|
|
cmp r2, 0x6
|
|
bne _0803F20A
|
|
ldr r3, [sp, 0x24]
|
|
ldrb r0, [r3]
|
|
cmp r0, 0x44
|
|
bne _0803F20A
|
|
ldrh r0, [r6, 0x2C]
|
|
movs r1, 0x3
|
|
bl __udivsi3
|
|
ldrh r1, [r6, 0x28]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r1, r0
|
|
bhi _0803F20A
|
|
ldr r4, _0803F250 @ =gUnknown_2024020
|
|
ldrh r1, [r4]
|
|
movs r0, 0x96
|
|
muls r0, r1
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
strh r0, [r4]
|
|
_0803F20A:
|
|
ldr r2, _0803F254 @ =gBattleMoves
|
|
ldr r0, _0803F258 @ =gCurrentMove
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x7
|
|
bne _0803F224
|
|
ldr r0, [sp, 0x14]
|
|
lsrs r0, 1
|
|
str r0, [sp, 0x14]
|
|
_0803F224:
|
|
mov r1, r9
|
|
cmp r1, 0x8
|
|
bls _0803F22C
|
|
b _0803F38A
|
|
_0803F22C:
|
|
ldr r0, _0803F25C @ =gCritMultiplier
|
|
ldrb r1, [r0]
|
|
adds r4, r0, 0
|
|
cmp r1, 0x2
|
|
bne _0803F268
|
|
movs r0, 0x19
|
|
ldrsb r0, [r6, r0]
|
|
cmp r0, 0x6
|
|
ble _0803F264
|
|
ldr r2, _0803F260 @ =gUnknown_825DEAD
|
|
b _0803F26E
|
|
.align 2, 0
|
|
_0803F244: .4byte gBattleTypeFlags
|
|
_0803F248: .4byte 0xfffffe69
|
|
_0803F24C: .4byte 0x00000175
|
|
_0803F250: .4byte gUnknown_2024020
|
|
_0803F254: .4byte gBattleMoves
|
|
_0803F258: .4byte gCurrentMove
|
|
_0803F25C: .4byte gCritMultiplier
|
|
_0803F260: .4byte gUnknown_825DEAD
|
|
_0803F264:
|
|
adds r5, r7, 0
|
|
b _0803F286
|
|
_0803F268:
|
|
ldr r2, _0803F2B8 @ =gUnknown_825DEAD
|
|
movs r0, 0x19
|
|
ldrsb r0, [r6, r0]
|
|
_0803F26E:
|
|
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
|
|
_0803F286:
|
|
ldr r0, _0803F2BC @ =gUnknown_2024020
|
|
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 _0803F2C4
|
|
ldr r2, [sp, 0x4]
|
|
movs r0, 0x1A
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, 0x5
|
|
bgt _0803F2C0
|
|
ldr r2, _0803F2B8 @ =gUnknown_825DEAD
|
|
ldr r3, [sp, 0x4]
|
|
movs r0, 0x1A
|
|
ldrsb r0, [r3, r0]
|
|
b _0803F2CC
|
|
.align 2, 0
|
|
_0803F2B8: .4byte gUnknown_825DEAD
|
|
_0803F2BC: .4byte gUnknown_2024020
|
|
_0803F2C0:
|
|
ldr r3, [sp, 0x14]
|
|
b _0803F2E6
|
|
_0803F2C4:
|
|
ldr r2, _0803F344 @ =gUnknown_825DEAD
|
|
ldr r1, [sp, 0x4]
|
|
movs r0, 0x1A
|
|
ldrsb r0, [r1, r0]
|
|
_0803F2CC:
|
|
lsls r0, 1
|
|
adds r1, r0, r2
|
|
ldrb r1, [r1]
|
|
ldr r7, [sp, 0x14]
|
|
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
|
|
_0803F2E6:
|
|
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 _0803F310
|
|
ldr r1, [sp, 0x24]
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x3E
|
|
beq _0803F310
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_0803F310:
|
|
movs r0, 0x1
|
|
ldr r2, [sp, 0xC]
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803F352
|
|
ldrb r1, [r4]
|
|
cmp r1, 0x1
|
|
bne _0803F352
|
|
ldr r0, _0803F348 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803F34C
|
|
movs r0, 0x2
|
|
bl sub_803F5B4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _0803F34C
|
|
adds r0, r5, 0
|
|
movs r1, 0x3
|
|
bl __divsi3
|
|
lsls r5, r0, 1
|
|
b _0803F352
|
|
.align 2, 0
|
|
_0803F344: .4byte gUnknown_825DEAD
|
|
_0803F348: .4byte gBattleTypeFlags
|
|
_0803F34C:
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_0803F352:
|
|
ldr r0, _0803F3B0 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803F384
|
|
ldr r0, _0803F3B4 @ =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 _0803F384
|
|
movs r0, 0x2
|
|
bl sub_803F5B4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _0803F384
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_0803F384:
|
|
cmp r5, 0
|
|
bne _0803F38A
|
|
movs r5, 0x1
|
|
_0803F38A:
|
|
mov r7, r9
|
|
cmp r7, 0x9
|
|
bne _0803F392
|
|
movs r5, 0
|
|
_0803F392:
|
|
mov r0, r9
|
|
cmp r0, 0x9
|
|
bhi _0803F39A
|
|
b _0803F59C
|
|
_0803F39A:
|
|
ldr r0, _0803F3B8 @ =gCritMultiplier
|
|
ldrb r1, [r0]
|
|
adds r4, r0, 0
|
|
cmp r1, 0x2
|
|
bne _0803F3C4
|
|
movs r0, 0x1C
|
|
ldrsb r0, [r6, r0]
|
|
cmp r0, 0x6
|
|
ble _0803F3C0
|
|
ldr r2, _0803F3BC @ =gUnknown_825DEAD
|
|
b _0803F3CA
|
|
.align 2, 0
|
|
_0803F3B0: .4byte gBattleTypeFlags
|
|
_0803F3B4: .4byte gBattleMoves
|
|
_0803F3B8: .4byte gCritMultiplier
|
|
_0803F3BC: .4byte gUnknown_825DEAD
|
|
_0803F3C0:
|
|
mov r5, r8
|
|
b _0803F3E2
|
|
_0803F3C4:
|
|
ldr r2, _0803F410 @ =gUnknown_825DEAD
|
|
movs r0, 0x1C
|
|
ldrsb r0, [r6, r0]
|
|
_0803F3CA:
|
|
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
|
|
_0803F3E2:
|
|
ldr r0, _0803F414 @ =gUnknown_2024020
|
|
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 _0803F41C
|
|
ldr r1, [sp, 0x4]
|
|
movs r0, 0x1D
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, 0x5
|
|
bgt _0803F418
|
|
ldr r2, _0803F410 @ =gUnknown_825DEAD
|
|
b _0803F424
|
|
.align 2, 0
|
|
_0803F410: .4byte gUnknown_825DEAD
|
|
_0803F414: .4byte gUnknown_2024020
|
|
_0803F418:
|
|
ldr r3, [sp, 0x18]
|
|
b _0803F43E
|
|
_0803F41C:
|
|
ldr r2, _0803F484 @ =gUnknown_825DEAD
|
|
ldr r7, [sp, 0x4]
|
|
movs r0, 0x1D
|
|
ldrsb r0, [r7, r0]
|
|
_0803F424:
|
|
lsls r0, 1
|
|
adds r1, r0, r2
|
|
ldrb r1, [r1]
|
|
ldr r6, [sp, 0x18]
|
|
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
|
|
_0803F43E:
|
|
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 _0803F492
|
|
ldrb r1, [r4]
|
|
cmp r1, 0x1
|
|
bne _0803F492
|
|
ldr r0, _0803F488 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803F48C
|
|
movs r0, 0x2
|
|
bl sub_803F5B4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _0803F48C
|
|
adds r0, r5, 0
|
|
movs r1, 0x3
|
|
bl __divsi3
|
|
lsls r5, r0, 1
|
|
b _0803F492
|
|
.align 2, 0
|
|
_0803F484: .4byte gUnknown_825DEAD
|
|
_0803F488: .4byte gBattleTypeFlags
|
|
_0803F48C:
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_0803F492:
|
|
ldr r0, _0803F50C @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803F4C4
|
|
ldr r0, _0803F510 @ =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 _0803F4C4
|
|
movs r0, 0x2
|
|
bl sub_803F5B4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _0803F4C4
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_0803F4C4:
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xE
|
|
movs r1, 0
|
|
movs r2, 0xD
|
|
movs r3, 0
|
|
bl sub_8019F18
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _0803F574
|
|
str r0, [sp]
|
|
movs r0, 0xE
|
|
movs r1, 0
|
|
movs r2, 0x4D
|
|
movs r3, 0
|
|
bl sub_8019F18
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803F574
|
|
ldr r2, _0803F514 @ =gBattleWeather
|
|
ldrh r1, [r2]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
adds r4, r2, 0
|
|
cmp r0, 0
|
|
beq _0803F52C
|
|
mov r3, r9
|
|
cmp r3, 0xA
|
|
beq _0803F518
|
|
cmp r3, 0xB
|
|
beq _0803F520
|
|
b _0803F52C
|
|
.align 2, 0
|
|
_0803F50C: .4byte gBattleTypeFlags
|
|
_0803F510: .4byte gBattleMoves
|
|
_0803F514: .4byte gBattleWeather
|
|
_0803F518:
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
b _0803F52C
|
|
_0803F520:
|
|
lsls r0, r5, 4
|
|
subs r0, r5
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
adds r5, r0, 0
|
|
_0803F52C:
|
|
ldrh r1, [r4]
|
|
movs r0, 0x9F
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803F544
|
|
ldr r0, _0803F55C @ =gCurrentMove
|
|
ldrh r0, [r0]
|
|
cmp r0, 0x4C
|
|
bne _0803F544
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_0803F544:
|
|
ldrh r1, [r4]
|
|
movs r0, 0x60
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803F574
|
|
mov r6, r9
|
|
cmp r6, 0xA
|
|
beq _0803F560
|
|
cmp r6, 0xB
|
|
beq _0803F56E
|
|
b _0803F574
|
|
.align 2, 0
|
|
_0803F55C: .4byte gCurrentMove
|
|
_0803F560:
|
|
lsls r0, r5, 4
|
|
subs r0, r5
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
adds r5, r0, 0
|
|
b _0803F574
|
|
_0803F56E:
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_0803F574:
|
|
ldr r0, _0803F5B0 @ =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 _0803F59C
|
|
mov r0, r9
|
|
cmp r0, 0xA
|
|
bne _0803F59C
|
|
lsls r0, r5, 4
|
|
subs r0, r5
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
adds r5, r0, 0
|
|
_0803F59C:
|
|
adds r0, r5, 0x2
|
|
add sp, 0x2C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0803F5B0: .4byte gBattleResources
|
|
thumb_func_end sub_803ECEC
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|