pokeemerald-jp/asm/battle_util.s
2019-09-27 01:42:56 -04:00

13132 lines
219 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start GetBattlerForBattleScript
GetBattlerForBattleScript: @ 0x0803F00C
push {lr}
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
movs r0, #0
cmp r1, #0xe
bhi _0803F0BA
lsls r0, r1, #2
ldr r1, _0803F024
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803F024: .4byte 0x0803F028
_0803F028: @ jump table
.4byte _0803F064 @ case 0
.4byte _0803F070 @ case 1
.4byte _0803F07C @ case 2
.4byte _0803F098 @ case 3
.4byte _0803F0A4 @ case 4
.4byte _0803F098 @ case 5
.4byte _0803F0A4 @ case 6
.4byte _0803F088 @ case 7
.4byte _0803F0A4 @ case 8
.4byte _0803F0A4 @ case 9
.4byte _0803F08C @ case 10
.4byte _0803F0A4 @ case 11
.4byte _0803F0A8 @ case 12
.4byte _0803F0AC @ case 13
.4byte _0803F0B0 @ case 14
_0803F064:
ldr r0, _0803F06C
ldrb r0, [r0]
b _0803F0BA
.align 2, 0
_0803F06C: .4byte 0x02023EB0
_0803F070:
ldr r0, _0803F078
ldrb r0, [r0]
b _0803F0BA
.align 2, 0
_0803F078: .4byte 0x02023EAF
_0803F07C:
ldr r0, _0803F084
ldrb r0, [r0]
b _0803F0BA
.align 2, 0
_0803F084: .4byte 0x02023EB2
_0803F088:
movs r0, #0
b _0803F0BA
_0803F08C:
ldr r0, _0803F094
ldrb r0, [r0, #0x17]
b _0803F0BA
.align 2, 0
_0803F094: .4byte 0x02024118
_0803F098:
ldr r0, _0803F0A0
ldrb r0, [r0]
b _0803F0BA
.align 2, 0
_0803F0A0: .4byte 0x02023EB1
_0803F0A4:
movs r0, #0
b _0803F0B2
_0803F0A8:
movs r0, #1
b _0803F0B2
_0803F0AC:
movs r0, #2
b _0803F0B2
_0803F0B0:
movs r0, #3
_0803F0B2:
bl GetBattlerAtPosition
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
_0803F0BA:
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetBattlerForBattleScript
thumb_func_start PressurePPLose
PressurePPLose: @ 0x0803F0C0
push {r4, r5, r6, r7, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r1, #0x18
lsrs r5, r1, #0x18
lsls r2, r2, #0x10
lsrs r2, r2, #0x10
ldr r1, _0803F0F0
movs r4, #0x58
muls r0, r4, r0
adds r0, r0, r1
adds r0, #0x20
ldrb r0, [r0]
mov ip, r1
cmp r0, #0x2e
bne _0803F172
movs r3, #0
adds r0, r5, #0
muls r0, r4, r0
adds r1, #0xc
adds r1, r0, r1
b _0803F0FC
.align 2, 0
_0803F0F0: .4byte 0x02023D28
_0803F0F4:
adds r1, #2
adds r3, #1
cmp r3, #3
bgt _0803F102
_0803F0FC:
ldrh r0, [r1]
cmp r0, r2
bne _0803F0F4
_0803F102:
cmp r3, #4
beq _0803F172
movs r7, #0x58
adds r2, r5, #0
muls r2, r7, r2
adds r0, r3, r2
mov r6, ip
adds r6, #0x24
adds r1, r0, r6
ldrb r0, [r1]
cmp r0, #0
beq _0803F11E
subs r0, #1
strb r0, [r1]
_0803F11E:
mov r0, ip
adds r0, #0x50
adds r0, r2, r0
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #0xe
ands r0, r1
cmp r0, #0
bne _0803F172
ldr r1, _0803F17C
lsls r0, r5, #3
subs r0, r0, r5
lsls r0, r0, #2
adds r0, r0, r1
ldrb r1, [r0, #0x18]
lsrs r1, r1, #4
ldr r2, _0803F180
lsls r0, r3, #2
adds r0, r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, #0
bne _0803F172
ldr r4, _0803F184
strb r5, [r4]
adds r1, r3, #0
adds r1, #9
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
ldrb r0, [r4]
muls r0, r7, r0
adds r0, r0, r6
adds r0, r0, r3
str r0, [sp]
movs r0, #0
movs r2, #0
movs r3, #1
bl BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
_0803F172:
add sp, #4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0803F17C: .4byte 0x02023F60
_0803F180: .4byte 0x082FACB4
_0803F184: .4byte 0x02023D08
thumb_func_end PressurePPLose
thumb_func_start PressurePPLoseOnUsingImprison
PressurePPLoseOnUsingImprison: @ 0x0803F188
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
movs r0, #4
mov r8, r0
adds r0, r5, #0
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
movs r4, #0
ldr r0, _0803F2A8
ldrb r0, [r0]
cmp r4, r0
bge _0803F230
ldr r1, _0803F2AC
movs r0, #0x58
adds r7, r5, #0
muls r7, r0, r7
adds r1, #0xc
mov sl, r1
_0803F1BE:
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r6, r4, #1
cmp sb, r0
beq _0803F226
ldr r0, _0803F2AC
movs r3, #0x58
adds r1, r4, #0
muls r1, r3, r1
adds r1, r1, r0
adds r1, #0x20
ldrb r1, [r1]
adds r4, r0, #0
cmp r1, #0x2e
bne _0803F226
movs r2, #0
adds r0, r5, #0
muls r0, r3, r0
adds r1, r4, #0
adds r1, #0xc
adds r0, r0, r1
ldrh r0, [r0]
movs r1, #0x8f
lsls r1, r1, #1
cmp r0, r1
beq _0803F20E
adds r3, r1, #0
mov r0, sl
adds r1, r7, r0
_0803F200:
adds r1, #2
adds r2, #1
cmp r2, #3
bgt _0803F20E
ldrh r0, [r1]
cmp r0, r3
bne _0803F200
_0803F20E:
cmp r2, #4
beq _0803F226
mov r8, r2
adds r1, r2, r7
adds r0, r4, #0
adds r0, #0x24
adds r1, r1, r0
ldrb r0, [r1]
cmp r0, #0
beq _0803F226
subs r0, #1
strb r0, [r1]
_0803F226:
adds r4, r6, #0
ldr r0, _0803F2A8
ldrb r0, [r0]
cmp r4, r0
blt _0803F1BE
_0803F230:
mov r1, r8
cmp r1, #4
beq _0803F298
ldr r6, _0803F2AC
movs r3, #0x58
adds r0, r5, #0
muls r0, r3, r0
adds r1, r6, #0
adds r1, #0x50
adds r0, r0, r1
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #0xe
ands r0, r1
cmp r0, #0
bne _0803F298
ldr r1, _0803F2B0
lsls r0, r5, #3
subs r0, r0, r5
lsls r0, r0, #2
adds r0, r0, r1
ldrb r1, [r0, #0x18]
lsrs r1, r1, #4
ldr r2, _0803F2B4
mov r4, r8
lsls r0, r4, #2
adds r0, r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, #0
bne _0803F298
ldr r4, _0803F2B8
strb r5, [r4]
mov r1, r8
adds r1, #9
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
ldrb r0, [r4]
muls r0, r3, r0
adds r2, r6, #0
adds r2, #0x24
adds r0, r0, r2
add r0, r8
str r0, [sp]
movs r0, #0
movs r2, #0
movs r3, #1
bl BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
_0803F298:
add sp, #4
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0803F2A8: .4byte 0x02023D10
_0803F2AC: .4byte 0x02023D28
_0803F2B0: .4byte 0x02023F60
_0803F2B4: .4byte 0x082FACB4
_0803F2B8: .4byte 0x02023D08
thumb_func_end PressurePPLoseOnUsingImprison
thumb_func_start PressurePPLoseOnUsingPerishSong
PressurePPLoseOnUsingPerishSong: @ 0x0803F2BC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
movs r6, #4
movs r1, #0
ldr r0, _0803F3B4
mov r8, r0
ldrb r0, [r0]
cmp r1, r0
bge _0803F33E
ldr r7, _0803F3B8
movs r2, #0x58
mov ip, r2
mov r5, ip
muls r5, r3, r5
adds r0, r7, #0
adds r0, #0xc
adds r2, r5, r0
mov sl, r2
mov sb, r5
_0803F2EE:
mov r0, ip
muls r0, r1, r0
adds r0, r0, r7
adds r0, #0x20
ldrb r0, [r0]
adds r4, r1, #1
cmp r0, #0x2e
bne _0803F334
cmp r1, r3
beq _0803F334
movs r2, #0
mov r1, sl
ldrh r0, [r1]
cmp r0, #0xc3
beq _0803F31E
ldr r1, _0803F3BC
add r1, sb
_0803F310:
adds r1, #2
adds r2, #1
cmp r2, #3
bgt _0803F31E
ldrh r0, [r1]
cmp r0, #0xc3
bne _0803F310
_0803F31E:
cmp r2, #4
beq _0803F334
adds r6, r2, #0
adds r0, r6, r5
ldr r2, _0803F3C0
adds r1, r0, r2
ldrb r0, [r1]
cmp r0, #0
beq _0803F334
subs r0, #1
strb r0, [r1]
_0803F334:
adds r1, r4, #0
mov r0, r8
ldrb r0, [r0]
cmp r1, r0
blt _0803F2EE
_0803F33E:
cmp r6, #4
beq _0803F3A2
ldr r7, _0803F3B8
movs r5, #0x58
adds r0, r3, #0
muls r0, r5, r0
adds r1, r7, #0
adds r1, #0x50
adds r0, r0, r1
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #0xe
ands r0, r1
cmp r0, #0
bne _0803F3A2
ldr r1, _0803F3C4
lsls r0, r3, #3
subs r0, r0, r3
lsls r0, r0, #2
adds r0, r0, r1
ldrb r1, [r0, #0x18]
lsrs r1, r1, #4
ldr r2, _0803F3C8
lsls r0, r6, #2
adds r0, r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, #0
bne _0803F3A2
ldr r4, _0803F3CC
strb r3, [r4]
adds r1, r6, #0
adds r1, #9
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
ldrb r0, [r4]
muls r0, r5, r0
adds r2, r7, #0
adds r2, #0x24
adds r0, r0, r2
adds r0, r0, r6
str r0, [sp]
movs r0, #0
movs r2, #0
movs r3, #1
bl BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
_0803F3A2:
add sp, #4
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0803F3B4: .4byte 0x02023D10
_0803F3B8: .4byte 0x02023D28
_0803F3BC: .4byte 0x02023D34
_0803F3C0: .4byte 0x02023D4C
_0803F3C4: .4byte 0x02023F60
_0803F3C8: .4byte 0x082FACB4
_0803F3CC: .4byte 0x02023D08
thumb_func_end PressurePPLoseOnUsingPerishSong
thumb_func_start MarkAllBattlersForControllerExec
MarkAllBattlersForControllerExec: @ 0x0803F3D0
push {r4, r5, lr}
ldr r0, _0803F400
ldr r0, [r0]
movs r1, #2
ands r0, r1
cmp r0, #0
beq _0803F410
movs r2, #0
ldr r4, _0803F404
ldrb r0, [r4]
cmp r2, r0
bge _0803F42E
ldr r3, _0803F408
ldr r5, _0803F40C
_0803F3EC:
ldm r5!, {r1}
lsls r1, r1, #0x1c
ldr r0, [r3]
orrs r0, r1
str r0, [r3]
adds r2, #1
ldrb r0, [r4]
cmp r2, r0
blt _0803F3EC
b _0803F42E
.align 2, 0
_0803F400: .4byte 0x02022C90
_0803F404: .4byte 0x02023D10
_0803F408: .4byte 0x02023D0C
_0803F40C: .4byte 0x082FACB4
_0803F410:
movs r2, #0
ldr r4, _0803F434
ldrb r0, [r4]
cmp r2, r0
bge _0803F42E
ldr r3, _0803F438
ldr r5, _0803F43C
_0803F41E:
ldr r0, [r3]
ldm r5!, {r1}
orrs r0, r1
str r0, [r3]
adds r2, #1
ldrb r0, [r4]
cmp r2, r0
blt _0803F41E
_0803F42E:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0803F434: .4byte 0x02023D10
_0803F438: .4byte 0x02023D0C
_0803F43C: .4byte 0x082FACB4
thumb_func_end MarkAllBattlersForControllerExec
thumb_func_start MarkBattlerForControllerExec
MarkBattlerForControllerExec: @ 0x0803F440
push {lr}
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
ldr r0, _0803F468
ldr r0, [r0]
movs r1, #2
ands r0, r1
cmp r0, #0
beq _0803F474
ldr r2, _0803F46C
ldr r1, _0803F470
lsls r0, r3, #2
adds r0, r0, r1
ldr r1, [r0]
lsls r1, r1, #0x1c
ldr r0, [r2]
orrs r0, r1
str r0, [r2]
b _0803F484
.align 2, 0
_0803F468: .4byte 0x02022C90
_0803F46C: .4byte 0x02023D0C
_0803F470: .4byte 0x082FACB4
_0803F474:
ldr r2, _0803F488
ldr r1, _0803F48C
lsls r0, r3, #2
adds r0, r0, r1
ldr r1, [r2]
ldr r0, [r0]
orrs r1, r0
str r1, [r2]
_0803F484:
pop {r0}
bx r0
.align 2, 0
_0803F488: .4byte 0x02023D0C
_0803F48C: .4byte 0x082FACB4
thumb_func_end MarkBattlerForControllerExec
thumb_func_start sub_0803F490
sub_0803F490: @ 0x0803F490
push {r4, r5, r6, r7, lr}
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
movs r4, #0
ldr r5, _0803F4A4
ldr r1, _0803F4A8
lsls r0, r7, #2
adds r6, r0, r1
b _0803F4BA
.align 2, 0
_0803F4A4: .4byte 0x02023D0C
_0803F4A8: .4byte 0x082FACB4
_0803F4AC:
lsls r0, r4, #2
ldr r1, [r6]
lsls r1, r0
ldr r0, [r5]
orrs r0, r1
str r0, [r5]
adds r4, #1
_0803F4BA:
bl GetLinkPlayerCount
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r4, r0
blt _0803F4AC
ldr r2, _0803F4DC
movs r1, #0x80
lsls r1, r1, #0x15
lsls r1, r7
ldr r0, [r2]
bics r0, r1
str r0, [r2]
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0803F4DC: .4byte 0x02023D0C
thumb_func_end sub_0803F490
thumb_func_start CancelMultiTurnMoves
CancelMultiTurnMoves: @ 0x0803F4E0
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r1, _0803F530
movs r2, #0x58
adds r3, r0, #0
muls r3, r2, r3
adds r1, #0x50
adds r3, r3, r1
ldr r1, [r3]
ldr r2, _0803F534
ands r1, r2
ldr r2, _0803F538
ands r1, r2
movs r2, #0x71
rsbs r2, r2, #0
ands r1, r2
ldr r2, _0803F53C
ands r1, r2
str r1, [r3]
ldr r1, _0803F540
lsls r2, r0, #2
adds r2, r2, r1
ldr r1, [r2]
ldr r3, _0803F544
ands r1, r3
str r1, [r2]
ldr r2, _0803F548
lsls r1, r0, #3
subs r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
ldrb r2, [r1, #0x11]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
strb r0, [r1, #0x11]
movs r0, #0
strb r0, [r1, #0x10]
bx lr
.align 2, 0
_0803F530: .4byte 0x02023D28
_0803F534: .4byte 0xFFFFEFFF
_0803F538: .4byte 0xFFFFF3FF
_0803F53C: .4byte 0xFFFFFCFF
_0803F540: .4byte 0x02023F50
_0803F544: .4byte 0xFFFBFF3F
_0803F548: .4byte 0x02023F60
thumb_func_end CancelMultiTurnMoves
thumb_func_start WasUnableToUseMove
WasUnableToUseMove: @ 0x0803F54C
push {lr}
lsls r0, r0, #0x18
ldr r1, _0803F598
lsrs r0, r0, #0x14
adds r1, r0, r1
ldrb r0, [r1]
lsrs r0, r0, #7
cmp r0, #0
bne _0803F592
ldrb r2, [r1, #1]
lsls r0, r2, #0x1e
cmp r0, #0
blt _0803F592
lsls r0, r2, #0x1a
cmp r0, #0
blt _0803F592
lsls r0, r2, #0x19
cmp r0, #0
blt _0803F592
lsrs r0, r2, #7
cmp r0, #0
bne _0803F592
ldrb r1, [r1, #2]
lsls r0, r1, #0x1f
cmp r0, #0
bne _0803F592
lsls r0, r1, #0x1e
cmp r0, #0
blt _0803F592
lsls r0, r1, #0x1d
cmp r0, #0
blt _0803F592
lsls r0, r2, #0x1f
cmp r0, #0
beq _0803F59C
_0803F592:
movs r0, #1
b _0803F59E
.align 2, 0
_0803F598: .4byte 0x02023FE0
_0803F59C:
movs r0, #0
_0803F59E:
pop {r1}
bx r1
.align 2, 0
thumb_func_end WasUnableToUseMove
thumb_func_start PrepareStringBattle
PrepareStringBattle: @ 0x0803F5A4
push {r4, lr}
adds r2, r0, #0
lsls r2, r2, #0x10
lsrs r2, r2, #0x10
ldr r4, _0803F5C4
strb r1, [r4]
movs r0, #0
adds r1, r2, #0
bl BtlController_EmitPrintString
ldrb r0, [r4]
bl MarkBattlerForControllerExec
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0803F5C4: .4byte 0x02023D08
thumb_func_end PrepareStringBattle
thumb_func_start ResetSentPokesToOpponentValue
ResetSentPokesToOpponentValue: @ 0x0803F5C8
push {r4, r5, r6, lr}
movs r3, #0
ldr r0, _0803F61C
strb r3, [r0]
strb r3, [r0, #1]
movs r1, #0
ldr r0, _0803F620
ldrb r2, [r0]
adds r6, r0, #0
cmp r1, r2
bge _0803F5F6
ldr r5, _0803F624
adds r4, r2, #0
ldr r2, _0803F628
_0803F5E4:
ldrh r0, [r2]
lsls r0, r0, #2
adds r0, r0, r5
ldr r0, [r0]
orrs r3, r0
adds r2, #4
adds r1, #2
cmp r1, r4
blt _0803F5E4
_0803F5F6:
movs r1, #1
adds r2, r6, #0
ldrb r0, [r2]
cmp r1, r0
bge _0803F616
ldr r5, _0803F61C
movs r4, #2
_0803F604:
adds r0, r1, #0
ands r0, r4
asrs r0, r0, #1
adds r0, r0, r5
strb r3, [r0]
adds r1, #2
ldrb r0, [r2]
cmp r1, r0
blt _0803F604
_0803F616:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0803F61C: .4byte 0x020240A2
_0803F620: .4byte 0x02023D10
_0803F624: .4byte 0x082FACB4
_0803F628: .4byte 0x02023D12
thumb_func_end ResetSentPokesToOpponentValue
thumb_func_start sub_0803F62C
sub_0803F62C: @ 0x0803F62C
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
movs r4, #0
adds r0, r5, #0
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _0803F690
movs r0, #2
ands r0, r5
lsls r0, r0, #0x18
lsrs r0, r0, #0x19
mov ip, r0
ldr r1, _0803F69C
adds r0, r0, r1
strb r4, [r0]
adds r5, r4, #0
ldr r0, _0803F6A0
ldrb r2, [r0]
mov r8, r1
cmp r4, r2
bge _0803F68A
ldr r0, _0803F6A4
ldrb r7, [r0]
ldr r1, _0803F6A8
adds r6, r2, #0
ldr r3, _0803F6AC
adds r2, r1, #0
_0803F66E:
ldr r0, [r2]
ands r0, r7
cmp r0, #0
bne _0803F680
ldrh r0, [r3]
lsls r0, r0, #2
adds r0, r0, r1
ldr r0, [r0]
orrs r4, r0
_0803F680:
adds r3, #4
adds r2, #8
adds r5, #2
cmp r5, r6
blt _0803F66E
_0803F68A:
mov r0, ip
add r0, r8
strb r4, [r0]
_0803F690:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0803F69C: .4byte 0x020240A2
_0803F6A0: .4byte 0x02023D10
_0803F6A4: .4byte 0x02023EB4
_0803F6A8: .4byte 0x082FACB4
_0803F6AC: .4byte 0x02023D12
thumb_func_end sub_0803F62C
thumb_func_start sub_0803F6B0
sub_0803F6B0: @ 0x0803F6B0
push {r4, r5, r6, r7, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
adds r0, r4, #0
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _0803F6CC
adds r0, r4, #0
bl sub_0803F62C
b _0803F702
_0803F6CC:
movs r3, #1
ldr r5, _0803F708
ldrb r0, [r5]
cmp r3, r0
bge _0803F702
ldr r0, _0803F70C
mov ip, r0
movs r7, #2
ldr r6, _0803F710
ldr r1, _0803F714
lsls r0, r4, #1
adds r4, r0, r1
_0803F6E4:
adds r2, r3, #0
ands r2, r7
asrs r2, r2, #1
add r2, ip
ldrh r0, [r4]
lsls r0, r0, #2
adds r0, r0, r6
ldr r0, [r0]
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
adds r3, #1
ldrb r0, [r5]
cmp r3, r0
blt _0803F6E4
_0803F702:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0803F708: .4byte 0x02023D10
_0803F70C: .4byte 0x020240A2
_0803F710: .4byte 0x082FACB4
_0803F714: .4byte 0x02023D12
thumb_func_end sub_0803F6B0
thumb_func_start BattleScriptPush
BattleScriptPush: @ 0x0803F718
push {r4, lr}
ldr r1, _0803F738
ldr r1, [r1]
ldr r3, [r1, #8]
adds r4, r3, #0
adds r4, #0x20
ldrb r1, [r4]
adds r2, r1, #1
strb r2, [r4]
lsls r1, r1, #0x18
lsrs r1, r1, #0x16
adds r3, r3, r1
str r0, [r3]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0803F738: .4byte 0x0202414C
thumb_func_end BattleScriptPush
thumb_func_start BattleScriptPushCursor
BattleScriptPushCursor: @ 0x0803F73C
ldr r0, _0803F75C
ldr r0, [r0]
ldr r2, [r0, #8]
adds r3, r2, #0
adds r3, #0x20
ldrb r0, [r3]
adds r1, r0, #1
strb r1, [r3]
lsls r0, r0, #0x18
lsrs r0, r0, #0x16
adds r2, r2, r0
ldr r0, _0803F760
ldr r0, [r0]
str r0, [r2]
bx lr
.align 2, 0
_0803F75C: .4byte 0x0202414C
_0803F760: .4byte 0x02023EB8
thumb_func_end BattleScriptPushCursor
thumb_func_start HandleAction_RunBattleScript
HandleAction_RunBattleScript: @ 0x0803F764
ldr r3, _0803F784
ldr r0, _0803F788
ldr r0, [r0]
ldr r1, [r0, #8]
adds r2, r1, #0
adds r2, #0x20
ldrb r0, [r2]
subs r0, #1
strb r0, [r2]
lsls r0, r0, #0x18
lsrs r0, r0, #0x16
adds r1, r1, r0
ldr r0, [r1]
str r0, [r3]
bx lr
.align 2, 0
_0803F784: .4byte 0x02023EB8
_0803F788: .4byte 0x0202414C
thumb_func_end HandleAction_RunBattleScript
thumb_func_start TrySetCantSelectMoveBattleScript
TrySetCantSelectMoveBattleScript: @ 0x0803F78C
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
movs r6, #0
ldr r2, _0803F80C
ldr r1, _0803F810
ldr r3, _0803F814
ldrb r4, [r3]
lsls r0, r4, #9
adds r1, #2
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #1
movs r1, #0x58
muls r1, r4, r1
adds r0, r0, r1
adds r2, #0xc
adds r0, r0, r2
ldrh r5, [r0]
ldr r1, _0803F818
lsls r0, r4, #1
adds r0, #0xc8
ldr r1, [r1]
adds r1, r1, r0
mov r8, r1
ldr r1, _0803F81C
lsls r0, r4, #3
subs r0, r0, r4
lsls r0, r0, #2
adds r0, r0, r1
ldrh r0, [r0, #4]
adds r7, r3, #0
adds r3, r1, #0
cmp r0, r5
bne _0803F846
cmp r5, #0
beq _0803F846
ldr r0, _0803F820
strb r4, [r0, #0x17]
ldr r0, _0803F824
strh r5, [r0]
ldr r0, _0803F828
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #0xa
ands r0, r1
cmp r0, #0
beq _0803F838
ldr r1, _0803F82C
ldrb r0, [r7]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, _0803F830
str r1, [r0]
ldr r0, _0803F834
ldrb r1, [r7]
lsls r1, r1, #4
adds r1, r1, r0
ldrb r0, [r1, #2]
movs r2, #0x10
orrs r0, r2
strb r0, [r1, #2]
b _0803F846
.align 2, 0
_0803F80C: .4byte 0x02023D28
_0803F810: .4byte 0x02023508
_0803F814: .4byte 0x02023D08
_0803F818: .4byte 0x02024140
_0803F81C: .4byte 0x02023F60
_0803F820: .4byte 0x02024118
_0803F824: .4byte 0x02023E8E
_0803F828: .4byte 0x02022C90
_0803F82C: .4byte 0x02023ED4
_0803F830: .4byte 0x082893B2
_0803F834: .4byte 0x02023FE0
_0803F838:
ldr r0, _0803F89C
ldrb r1, [r7]
lsls r1, r1, #2
adds r1, r1, r0
ldr r0, _0803F8A0
str r0, [r1]
movs r6, #1
_0803F846:
ldr r1, _0803F8A4
ldrb r2, [r7]
lsls r0, r2, #1
adds r0, r0, r1
ldrh r0, [r0]
cmp r5, r0
bne _0803F8D0
cmp r5, #0xa5
beq _0803F8D0
ldr r1, _0803F8A8
movs r0, #0x58
muls r0, r2, r0
adds r1, #0x50
adds r0, r0, r1
ldr r0, [r0]
cmp r0, #0
bge _0803F8D0
adds r0, r2, #0
bl CancelMultiTurnMoves
ldr r0, _0803F8AC
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #0xa
ands r0, r1
cmp r0, #0
beq _0803F8BC
ldr r1, _0803F8B0
ldrb r0, [r7]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, _0803F8B4
str r1, [r0]
ldr r0, _0803F8B8
ldrb r1, [r7]
lsls r1, r1, #4
adds r1, r1, r0
ldrb r0, [r1, #2]
movs r2, #0x10
orrs r0, r2
strb r0, [r1, #2]
b _0803F8CE
.align 2, 0
_0803F89C: .4byte 0x02023EC4
_0803F8A0: .4byte 0x082893A7
_0803F8A4: .4byte 0x02023EEC
_0803F8A8: .4byte 0x02023D28
_0803F8AC: .4byte 0x02022C90
_0803F8B0: .4byte 0x02023ED4
_0803F8B4: .4byte 0x08289620
_0803F8B8: .4byte 0x02023FE0
_0803F8BC:
ldr r1, _0803F924
ldrb r0, [r7]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, _0803F928
str r1, [r0]
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
_0803F8CE:
ldr r3, _0803F92C
_0803F8D0:
ldrb r0, [r7]
lsls r1, r0, #3
subs r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r3
ldrb r0, [r1, #0x13]
lsls r0, r0, #0x1c
cmp r0, #0
beq _0803F95A
ldr r0, _0803F930
lsls r1, r5, #1
adds r1, r1, r5
lsls r1, r1, #2
adds r1, r1, r0
ldrb r0, [r1, #1]
cmp r0, #0
bne _0803F95A
ldr r0, _0803F934
strh r5, [r0]
ldr r0, _0803F938
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #0xa
ands r0, r1
cmp r0, #0
beq _0803F948
ldr r1, _0803F93C
ldrb r0, [r7]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, _0803F940
str r1, [r0]
ldr r0, _0803F944
ldrb r1, [r7]
lsls r1, r1, #4
adds r1, r1, r0
ldrb r0, [r1, #2]
movs r2, #0x10
orrs r0, r2
strb r0, [r1, #2]
b _0803F95A
.align 2, 0
_0803F924: .4byte 0x02023EC4
_0803F928: .4byte 0x08289611
_0803F92C: .4byte 0x02023F60
_0803F930: .4byte 0x082ED220
_0803F934: .4byte 0x02023E8E
_0803F938: .4byte 0x02022C90
_0803F93C: .4byte 0x02023ED4
_0803F940: .4byte 0x08289637
_0803F944: .4byte 0x02023FE0
_0803F948:
ldr r1, _0803F99C
ldrb r0, [r7]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, _0803F9A0
str r1, [r0]
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
_0803F95A:
ldr r4, _0803F9A4
ldrb r0, [r4]
adds r1, r5, #0
bl GetImprisonedMovesCount
lsls r0, r0, #0x18
cmp r0, #0
beq _0803F9CE
ldr r0, _0803F9A8
strh r5, [r0]
ldr r0, _0803F9AC
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #0xa
ands r0, r1
cmp r0, #0
beq _0803F9BC
ldr r1, _0803F9B0
ldrb r0, [r4]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, _0803F9B4
str r1, [r0]
ldr r0, _0803F9B8
ldrb r1, [r4]
lsls r1, r1, #4
adds r1, r1, r0
ldrb r0, [r1, #2]
movs r2, #0x10
orrs r0, r2
strb r0, [r1, #2]
b _0803F9CE
.align 2, 0
_0803F99C: .4byte 0x02023EC4
_0803F9A0: .4byte 0x08289628
_0803F9A4: .4byte 0x02023D08
_0803F9A8: .4byte 0x02023E8E
_0803F9AC: .4byte 0x02022C90
_0803F9B0: .4byte 0x02023ED4
_0803F9B4: .4byte 0x0828970D
_0803F9B8: .4byte 0x02023FE0
_0803F9BC:
ldr r1, _0803F9F0
ldrb r0, [r4]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, _0803F9F4
str r1, [r0]
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
_0803F9CE:
ldr r1, _0803F9F8
ldr r0, _0803F9FC
ldrb r2, [r0]
movs r0, #0x58
muls r0, r2, r0
adds r1, r0, r1
ldrh r0, [r1, #0x2e]
cmp r0, #0xaf
bne _0803FA04
ldr r1, _0803FA00
lsls r0, r2, #3
subs r0, r0, r2
lsls r0, r0, #2
adds r0, r0, r1
ldrb r4, [r0, #7]
b _0803FA0E
.align 2, 0
_0803F9F0: .4byte 0x02023EC4
_0803F9F4: .4byte 0x08289709
_0803F9F8: .4byte 0x02023D28
_0803F9FC: .4byte 0x02023D08
_0803FA00: .4byte 0x020240A8
_0803FA04:
ldrh r0, [r1, #0x2e]
bl sub_080D6CF8
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
_0803FA0E:
ldr r2, _0803FA68
ldr r1, _0803FA6C
ldrb r0, [r1]
strb r0, [r2]
ldr r0, _0803FA70
mov ip, r0
adds r7, r1, #0
cmp r4, #0x1d
bne _0803FA98
mov r0, r8
ldrh r1, [r0]
adds r2, r1, #0
cmp r2, #0
beq _0803FA98
ldr r0, _0803FA74
cmp r2, r0
beq _0803FA98
cmp r2, r5
beq _0803FA98
ldr r0, _0803FA78
strh r1, [r0]
ldr r2, _0803FA7C
ldrb r1, [r7]
movs r0, #0x58
muls r0, r1, r0
add r0, ip
ldrh r0, [r0, #0x2e]
strh r0, [r2]
ldr r0, _0803FA80
ldr r1, [r0]
movs r0, #0x80
lsls r0, r0, #0xa
ands r1, r0
ldrb r2, [r7]
cmp r1, #0
beq _0803FA88
ldr r0, _0803FA84
lsls r1, r2, #4
adds r1, r1, r0
ldrb r0, [r1, #2]
movs r2, #0x10
orrs r0, r2
strb r0, [r1, #2]
b _0803FA98
.align 2, 0
_0803FA68: .4byte 0x02023EB3
_0803FA6C: .4byte 0x02023D08
_0803FA70: .4byte 0x02023D28
_0803FA74: .4byte 0x0000FFFF
_0803FA78: .4byte 0x02023E8E
_0803FA7C: .4byte 0x02023EAC
_0803FA80: .4byte 0x02022C90
_0803FA84: .4byte 0x02023FE0
_0803FA88:
ldr r1, _0803FAD4
lsls r0, r2, #2
adds r0, r0, r1
ldr r1, _0803FAD8
str r1, [r0]
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
_0803FA98:
ldr r0, _0803FADC
ldrb r3, [r7]
lsls r1, r3, #9
adds r0, #2
adds r1, r1, r0
movs r0, #0x58
muls r0, r3, r0
ldrb r1, [r1]
adds r0, r0, r1
mov r1, ip
adds r1, #0x24
adds r0, r0, r1
ldrb r0, [r0]
cmp r0, #0
bne _0803FAF8
ldr r0, _0803FAE0
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #0xa
ands r0, r1
cmp r0, #0
beq _0803FAE8
ldr r0, _0803FAE4
lsls r1, r3, #4
adds r1, r1, r0
ldrb r0, [r1, #2]
movs r2, #0x10
orrs r0, r2
strb r0, [r1, #2]
b _0803FAF8
.align 2, 0
_0803FAD4: .4byte 0x02023EC4
_0803FAD8: .4byte 0x08289D9A
_0803FADC: .4byte 0x02023508
_0803FAE0: .4byte 0x02022C90
_0803FAE4: .4byte 0x02023FE0
_0803FAE8:
ldr r1, _0803FB04
lsls r0, r3, #2
adds r0, r0, r1
ldr r1, _0803FB08
str r1, [r0]
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
_0803FAF8:
adds r0, r6, #0
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_0803FB04: .4byte 0x02023EC4
_0803FB08: .4byte 0x082895FE
thumb_func_end TrySetCantSelectMoveBattleScript
thumb_func_start CheckMoveLimitations
CheckMoveLimitations: @ 0x0803FB0C
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x1c
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
lsls r1, r1, #0x18
lsrs r4, r1, #0x18
lsls r2, r2, #0x18
lsrs r3, r2, #0x18
ldr r1, _0803FB50
lsls r0, r7, #1
adds r0, #0xc8
ldr r1, [r1]
adds r1, r1, r0
str r1, [sp, #4]
ldr r1, _0803FB54
movs r0, #0x58
muls r0, r7, r0
adds r1, r0, r1
ldrh r0, [r1, #0x2e]
cmp r0, #0xaf
bne _0803FB5C
ldr r2, _0803FB58
lsls r1, r7, #3
subs r0, r1, r7
lsls r0, r0, #2
adds r0, r0, r2
ldrb r0, [r0, #7]
str r0, [sp]
b _0803FB6E
.align 2, 0
_0803FB50: .4byte 0x02024140
_0803FB54: .4byte 0x02023D28
_0803FB58: .4byte 0x020240A8
_0803FB5C:
ldrh r0, [r1, #0x2e]
str r3, [sp, #0x14]
bl sub_080D6CF8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
str r0, [sp]
lsls r1, r7, #3
ldr r3, [sp, #0x14]
_0803FB6E:
ldr r0, _0803FCE8
strb r7, [r0]
movs r0, #0
mov sb, r0
lsls r2, r7, #1
str r2, [sp, #0xc]
ldr r5, _0803FCEC
mov ip, r5
ldr r0, _0803FCF0
movs r2, #0x58
adds r6, r7, #0
muls r6, r2, r6
str r6, [sp, #8]
ldr r2, _0803FCF4
adds r5, r6, r2
movs r6, #0
str r6, [sp, #0x10]
mov sl, r0
subs r0, r1, r7
lsls r0, r0, #2
mov r8, r0
ldr r6, _0803FCF8
_0803FB9A:
ldrh r0, [r5]
cmp r0, #0
bne _0803FBB0
movs r0, #1
ands r0, r3
cmp r0, #0
beq _0803FBB0
ldr r0, [r6]
orrs r4, r0
lsls r0, r4, #0x18
lsrs r4, r0, #0x18
_0803FBB0:
ldr r0, [sp, #8]
add r0, sb
mov r1, sl
adds r1, #0x24
adds r0, r0, r1
ldrb r0, [r0]
cmp r0, #0
bne _0803FBD0
movs r0, #2
ands r0, r3
cmp r0, #0
beq _0803FBD0
ldr r0, [r6]
orrs r4, r0
lsls r0, r4, #0x18
lsrs r4, r0, #0x18
_0803FBD0:
mov r1, r8
add r1, ip
ldrh r0, [r5]
ldrh r1, [r1, #4]
cmp r0, r1
bne _0803FBEC
movs r0, #4
ands r0, r3
cmp r0, #0
beq _0803FBEC
ldr r0, [r6]
orrs r4, r0
lsls r0, r4, #0x18
lsrs r4, r0, #0x18
_0803FBEC:
movs r0, #0x58
adds r2, r7, #0
muls r2, r0, r2
ldr r1, [sp, #0x10]
adds r0, r1, r2
ldr r1, _0803FCF4
adds r0, r0, r1
mov ip, r0
ldr r1, _0803FCFC
ldr r0, [sp, #0xc]
adds r1, r0, r1
str r1, [sp, #0x18]
mov r1, ip
ldrh r1, [r1]
mov ip, r1
ldr r0, [sp, #0x18]
ldrh r0, [r0]
cmp ip, r0
bne _0803FC2E
movs r0, #8
ands r0, r3
cmp r0, #0
beq _0803FC2E
mov r0, sl
adds r0, #0x50
adds r0, r2, r0
ldr r0, [r0]
cmp r0, #0
bge _0803FC2E
ldr r0, [r6]
orrs r4, r0
lsls r0, r4, #0x18
lsrs r4, r0, #0x18
_0803FC2E:
ldr r0, _0803FCEC
add r0, r8
ldrb r0, [r0, #0x13]
lsls r0, r0, #0x1c
cmp r0, #0
beq _0803FC5C
movs r0, #0x10
ands r0, r3
cmp r0, #0
beq _0803FC5C
ldr r2, _0803FD00
ldrh r1, [r5]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrb r0, [r0, #1]
cmp r0, #0
bne _0803FC5C
ldr r0, [r6]
orrs r4, r0
lsls r0, r4, #0x18
lsrs r4, r0, #0x18
_0803FC5C:
ldrh r1, [r5]
adds r0, r7, #0
str r3, [sp, #0x14]
bl GetImprisonedMovesCount
lsls r0, r0, #0x18
ldr r3, [sp, #0x14]
cmp r0, #0
beq _0803FC7E
movs r0, #0x20
ands r0, r3
cmp r0, #0
beq _0803FC7E
ldr r0, [r6]
orrs r4, r0
lsls r0, r4, #0x18
lsrs r4, r0, #0x18
_0803FC7E:
ldr r1, _0803FCEC
mov r0, r8
adds r2, r0, r1
ldrb r0, [r2, #0xe]
lsls r0, r0, #0x1c
mov ip, r1
cmp r0, #0
beq _0803FC9E
ldrh r0, [r2, #6]
ldrh r1, [r5]
cmp r0, r1
beq _0803FC9E
ldr r0, [r6]
orrs r4, r0
lsls r0, r4, #0x18
lsrs r4, r0, #0x18
_0803FC9E:
ldr r2, [sp]
cmp r2, #0x1d
bne _0803FCC0
ldr r0, [sp, #4]
ldrh r1, [r0]
cmp r1, #0
beq _0803FCC0
ldr r0, _0803FD04
cmp r1, r0
beq _0803FCC0
ldrh r2, [r5]
cmp r1, r2
beq _0803FCC0
ldr r0, [r6]
orrs r4, r0
lsls r0, r4, #0x18
lsrs r4, r0, #0x18
_0803FCC0:
adds r6, #4
adds r5, #2
ldr r0, [sp, #0x10]
adds r0, #2
str r0, [sp, #0x10]
movs r1, #1
add sb, r1
mov r2, sb
cmp r2, #3
bgt _0803FCD6
b _0803FB9A
_0803FCD6:
adds r0, r4, #0
add sp, #0x1c
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_0803FCE8: .4byte 0x02023EB3
_0803FCEC: .4byte 0x02023F60
_0803FCF0: .4byte 0x02023D28
_0803FCF4: .4byte 0x02023D34
_0803FCF8: .4byte 0x082FACB4
_0803FCFC: .4byte 0x02023EEC
_0803FD00: .4byte 0x082ED220
_0803FD04: .4byte 0x0000FFFF
thumb_func_end CheckMoveLimitations
thumb_func_start AreAllMovesUnusable
AreAllMovesUnusable: @ 0x0803FD08
push {r4, lr}
ldr r4, _0803FD3C
ldrb r0, [r4]
movs r1, #0
movs r2, #0xff
bl CheckMoveLimitations
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #0xf
bne _0803FD4C
ldr r0, _0803FD40
ldrb r1, [r4]
lsls r1, r1, #4
adds r1, r1, r0
ldrb r0, [r1]
movs r2, #4
orrs r0, r2
strb r0, [r1]
ldr r1, _0803FD44
ldrb r0, [r4]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, _0803FD48
str r1, [r0]
b _0803FD5E
.align 2, 0
_0803FD3C: .4byte 0x02023D08
_0803FD40: .4byte 0x02023FE0
_0803FD44: .4byte 0x02023EC4
_0803FD48: .4byte 0x082895FA
_0803FD4C:
ldr r0, _0803FD6C
ldrb r1, [r4]
lsls r1, r1, #4
adds r1, r1, r0
ldrb r2, [r1]
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
strb r0, [r1]
_0803FD5E:
movs r0, #0
cmp r3, #0xf
bne _0803FD66
movs r0, #1
_0803FD66:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0803FD6C: .4byte 0x02023FE0
thumb_func_end AreAllMovesUnusable
thumb_func_start GetImprisonedMovesCount
GetImprisonedMovesCount: @ 0x0803FD70
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r1, #0x10
lsrs r5, r1, #0x10
movs r6, #0
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
movs r4, #0
ldr r0, _0803FE04
ldrb r0, [r0]
cmp r6, r0
bge _0803FDF4
ldr r7, _0803FE08
mov r8, r7
_0803FD9A:
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r3, r4, #1
cmp sb, r0
beq _0803FDEA
ldr r1, _0803FE0C
lsls r0, r4, #2
adds r0, r0, r1
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #6
ands r0, r1
cmp r0, #0
beq _0803FDEA
movs r2, #0
movs r0, #0x58
adds r1, r4, #0
muls r1, r0, r1
adds r0, r1, r7
ldrh r0, [r0]
cmp r5, r0
beq _0803FDE0
mov r4, r8
adds r0, r1, r4
_0803FDD2:
adds r0, #2
adds r2, #1
cmp r2, #3
bgt _0803FDEA
ldrh r1, [r0]
cmp r5, r1
bne _0803FDD2
_0803FDE0:
cmp r2, #3
bgt _0803FDEA
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
_0803FDEA:
adds r4, r3, #0
ldr r0, _0803FE04
ldrb r0, [r0]
cmp r4, r0
blt _0803FD9A
_0803FDF4:
adds r0, r6, #0
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_0803FE04: .4byte 0x02023D10
_0803FE08: .4byte 0x02023D34
_0803FE0C: .4byte 0x02023F50
thumb_func_end GetImprisonedMovesCount
thumb_func_start DoFieldEndTurnEffects
DoFieldEndTurnEffects: @ 0x0803FE10
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
movs r0, #0
mov sb, r0
ldr r1, _0803FEB4
mov r2, sb
strb r2, [r1]
ldr r0, _0803FEB8
ldrb r4, [r0]
adds r6, r1, #0
mov sl, r0
ldr r7, _0803FEBC
ldr r3, _0803FEC0
mov ip, r3
cmp sb, r4
bhs _0803FE64
ldr r2, _0803FEC4
ldrb r1, [r2]
ldr r5, _0803FEC8
ldr r0, [r5]
ands r1, r0
cmp r1, #0
beq _0803FE64
adds r3, r6, #0
_0803FE46:
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, r4
bhs _0803FE64
ldrb r0, [r2]
ldrb r1, [r6]
lsls r1, r1, #2
adds r1, r1, r5
ldr r1, [r1]
ands r0, r1
cmp r0, #0
bne _0803FE46
_0803FE64:
movs r0, #0
strb r0, [r7]
mov r0, sl
ldrb r4, [r0]
cmp r4, #0
beq _0803FE9E
ldr r2, _0803FEC4
ldrb r1, [r2]
ldr r5, _0803FEC8
ldr r0, [r5]
ands r1, r0
cmp r1, #0
beq _0803FE9E
adds r3, r7, #0
_0803FE80:
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, r4
bhs _0803FE9E
ldrb r0, [r2]
ldrb r1, [r7]
lsls r1, r1, #2
adds r1, r1, r5
ldr r1, [r1]
ands r0, r1
cmp r0, #0
bne _0803FE80
_0803FE9E:
mov r1, ip
ldr r0, [r1]
ldrb r0, [r0, #3]
cmp r0, #0xa
bls _0803FEAA
b _08040536
_0803FEAA:
lsls r0, r0, #2
ldr r1, _0803FECC
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803FEB4: .4byte 0x02023EAF
_0803FEB8: .4byte 0x02023D10
_0803FEBC: .4byte 0x02023EB0
_0803FEC0: .4byte 0x02024140
_0803FEC4: .4byte 0x02023EB4
_0803FEC8: .4byte 0x082FACB4
_0803FECC: .4byte 0x0803FED0
_0803FED0: @ jump table
.4byte _0803FEFC @ case 0
.4byte _0803FF82 @ case 1
.4byte _08040048 @ case 2
.4byte _08040114 @ case 3
.4byte _080401F0 @ case 4
.4byte _080402A8 @ case 5
.4byte _0804035C @ case 6
.4byte _080403E0 @ case 7
.4byte _08040450 @ case 8
.4byte _080404A8 @ case 9
.4byte _0804052C @ case 10
_0803FEFC:
movs r5, #0
ldr r1, _0803FF1C
mov sl, r1
ldrb r2, [r1]
cmp r5, r2
bge _0803FF16
ldr r2, _0803FF20
_0803FF0A:
adds r0, r5, r2
strb r5, [r0]
adds r5, #1
ldrb r3, [r1]
cmp r5, r3
blt _0803FF0A
_0803FF16:
movs r5, #0
b _0803FF64
.align 2, 0
_0803FF1C: .4byte 0x02023D10
_0803FF20: .4byte 0x02023D22
_0803FF24:
adds r4, r5, #1
adds r6, r4, #0
ldrb r1, [r1]
cmp r6, r1
bge _0803FF62
ldr r7, _08040020
ldr r0, _08040024
mov sl, r0
lsls r1, r5, #0x18
mov r8, r1
_0803FF38:
adds r0, r5, r7
ldrb r0, [r0]
adds r1, r4, r7
ldrb r1, [r1]
movs r2, #0
bl GetWhoStrikesFirst
lsls r0, r0, #0x18
cmp r0, #0
beq _0803FF58
lsls r1, r4, #0x18
lsrs r1, r1, #0x18
mov r2, r8
lsrs r0, r2, #0x18
bl SwapTurnOrder
_0803FF58:
adds r4, #1
ldr r0, _08040024
ldrb r0, [r0]
cmp r4, r0
blt _0803FF38
_0803FF62:
adds r5, r6, #0
_0803FF64:
mov r1, sl
ldrb r0, [r1]
subs r0, #1
cmp r5, r0
blt _0803FF24
ldr r2, _08040028
ldr r1, [r2]
ldrb r0, [r1, #3]
adds r0, #1
strb r0, [r1, #3]
ldr r0, [r2]
adds r0, #0xdb
movs r1, #0
strb r1, [r0]
mov ip, r2
_0803FF82:
mov r1, ip
ldr r0, [r1]
adds r0, #0xdb
ldrb r0, [r0]
cmp r0, #1
bls _0803FF90
b _0804026C
_0803FF90:
ldr r3, _0804002C
mov r8, r3
movs r7, #0
ldr r6, _08040030
ldr r5, _08040034
_0803FF9A:
ldr r0, [r1]
adds r0, #0xdb
ldrb r4, [r0]
ldr r2, _08040038
lsls r1, r4, #1
adds r0, r1, r4
lsls r0, r0, #2
adds r2, r0, r2
ldrb r0, [r2, #1]
strb r0, [r6]
mov r3, r8
strb r0, [r3]
ldr r0, _0804003C
adds r3, r1, r0
ldrh r1, [r3]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0803FFFC
ldrb r0, [r2]
subs r0, #1
strb r0, [r2]
movs r4, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _0803FFFC
ldrh r0, [r3]
ldr r2, _08040040
adds r1, r2, #0
ands r0, r1
strh r0, [r3]
ldr r0, _08040044
bl BattleScriptExecute
movs r0, #0xfd
strb r0, [r5]
movs r0, #2
strb r0, [r5, #1]
movs r0, #0x73
strb r0, [r5, #2]
strb r7, [r5, #3]
ldrb r0, [r5, #4]
orrs r0, r4
strb r0, [r5, #4]
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_0803FFFC:
ldr r2, _08040028
ldr r1, [r2]
adds r1, #0xdb
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
mov ip, r2
mov r3, sb
cmp r3, #0
beq _08040012
b _0804053E
_08040012:
mov r1, ip
ldr r0, [r1]
adds r0, #0xdb
ldrb r0, [r0]
cmp r0, #1
bls _0803FF9A
b _0804026C
.align 2, 0
_08040020: .4byte 0x02023D22
_08040024: .4byte 0x02023D10
_08040028: .4byte 0x02024140
_0804002C: .4byte 0x02023D08
_08040030: .4byte 0x02023EAF
_08040034: .4byte 0x02022C0C
_08040038: .4byte 0x02023F38
_0804003C: .4byte 0x02023F32
_08040040: .4byte 0x0000FFFE
_08040044: .4byte 0x08289282
_08040048:
mov r1, ip
ldr r0, [r1]
adds r0, #0xdb
ldrb r0, [r0]
cmp r0, #1
bls _08040056
b _080401B0
_08040056:
movs r0, #2
mov sl, r0
movs r2, #0
mov r8, r2
ldr r7, _080400F0
ldr r5, _080400F4
_08040062:
ldr r0, [r1]
adds r0, #0xdb
ldrb r4, [r0]
ldr r2, _080400F8
lsls r1, r4, #1
adds r0, r1, r4
lsls r0, r0, #2
adds r2, r0, r2
ldrb r0, [r2, #3]
strb r0, [r7]
ldr r3, _080400FC
strb r0, [r3]
ldr r0, _08040100
adds r3, r1, r0
ldrh r1, [r3]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _080400CA
ldrb r0, [r2, #2]
subs r0, #1
strb r0, [r2, #2]
movs r6, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _080400CA
ldrh r0, [r3]
ldr r2, _08040104
adds r1, r2, #0
ands r0, r1
strh r0, [r3]
ldr r0, _08040108
bl BattleScriptExecute
ldr r0, _0804010C
strb r4, [r0, #5]
movs r0, #0xfd
strb r0, [r5]
mov r3, sl
strb r3, [r5, #1]
movs r0, #0x71
strb r0, [r5, #2]
mov r0, r8
strb r0, [r5, #3]
ldrb r0, [r5, #4]
orrs r0, r6
strb r0, [r5, #4]
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_080400CA:
ldr r2, _08040110
ldr r1, [r2]
adds r1, #0xdb
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
mov ip, r2
mov r1, sb
cmp r1, #0
beq _080400E0
b _0804053E
_080400E0:
mov r1, ip
ldr r0, [r1]
adds r0, #0xdb
ldrb r0, [r0]
cmp r0, #1
bls _08040062
b _080401B0
.align 2, 0
_080400F0: .4byte 0x02023EAF
_080400F4: .4byte 0x02022C0C
_080400F8: .4byte 0x02023F38
_080400FC: .4byte 0x02023D08
_08040100: .4byte 0x02023F32
_08040104: .4byte 0x0000FFFD
_08040108: .4byte 0x08289282
_0804010C: .4byte 0x02023FD6
_08040110: .4byte 0x02024140
_08040114:
mov r1, ip
ldr r0, [r1]
adds r0, #0xdb
ldrb r0, [r0]
cmp r0, #1
bhi _080401B0
ldr r0, _080401CC
mov sl, r0
movs r2, #0
mov r8, r2
ldr r7, _080401D0
ldr r5, _080401D4
_0804012C:
ldr r0, [r1]
adds r0, #0xdb
ldrb r4, [r0]
ldr r1, _080401D8
lsls r3, r4, #1
adds r0, r3, r4
lsls r0, r0, #2
adds r1, r0, r1
ldrb r0, [r1, #5]
strb r0, [r7]
mov r2, sl
strb r0, [r2]
ldrb r0, [r1, #4]
cmp r0, #0
beq _0804018E
subs r0, #1
strb r0, [r1, #4]
movs r6, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _0804018E
ldr r2, _080401DC
adds r2, r3, r2
ldrh r0, [r2]
ldr r3, _080401E0
adds r1, r3, #0
ands r0, r1
strh r0, [r2]
ldr r0, _080401E4
bl BattleScriptExecute
ldr r0, _080401E8
strb r4, [r0, #5]
movs r0, #0xfd
strb r0, [r5]
movs r0, #2
strb r0, [r5, #1]
movs r0, #0x36
strb r0, [r5, #2]
mov r0, r8
strb r0, [r5, #3]
ldrb r0, [r5, #4]
orrs r0, r6
strb r0, [r5, #4]
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_0804018E:
ldr r2, _080401EC
ldr r1, [r2]
adds r1, #0xdb
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
mov ip, r2
mov r1, sb
cmp r1, #0
beq _080401A4
b _0804053E
_080401A4:
mov r1, ip
ldr r0, [r1]
adds r0, #0xdb
ldrb r0, [r0]
cmp r0, #1
bls _0804012C
_080401B0:
mov r2, sb
cmp r2, #0
beq _080401B8
b _0804053E
_080401B8:
mov r3, ip
ldr r0, [r3]
ldrb r1, [r0, #3]
adds r1, #1
strb r1, [r0, #3]
ldr r0, [r3]
adds r0, #0xdb
strb r2, [r0]
b _08040536
.align 2, 0
_080401CC: .4byte 0x02023D08
_080401D0: .4byte 0x02023EAF
_080401D4: .4byte 0x02022C0C
_080401D8: .4byte 0x02023F38
_080401DC: .4byte 0x02023F32
_080401E0: .4byte 0x0000FEFF
_080401E4: .4byte 0x08289282
_080401E8: .4byte 0x02023FD6
_080401EC: .4byte 0x02024140
_080401F0:
mov r1, ip
ldr r0, [r1]
adds r0, #0xdb
ldrb r0, [r0]
cmp r0, #1
bhi _0804026C
ldr r6, _0804028C
ldr r5, _08040290
_08040200:
ldr r0, [r1]
adds r0, #0xdb
ldrb r4, [r0]
ldr r2, _08040294
lsls r1, r4, #1
adds r0, r1, r4
lsls r0, r0, #2
adds r2, r0, r2
ldrb r0, [r2, #7]
strb r0, [r5]
strb r0, [r6]
ldr r0, _08040298
adds r3, r1, r0
ldrh r1, [r3]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _0804024A
ldrb r0, [r2, #6]
subs r0, #1
strb r0, [r2, #6]
lsls r0, r0, #0x18
cmp r0, #0
bne _0804024A
ldrh r0, [r3]
ldr r2, _0804029C
adds r1, r2, #0
ands r0, r1
strh r0, [r3]
ldr r0, _080402A0
bl BattleScriptExecute
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_0804024A:
ldr r2, _080402A4
ldr r1, [r2]
adds r1, #0xdb
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
mov ip, r2
mov r3, sb
cmp r3, #0
beq _08040260
b _0804053E
_08040260:
mov r1, ip
ldr r0, [r1]
adds r0, #0xdb
ldrb r0, [r0]
cmp r0, #1
bls _08040200
_0804026C:
mov r0, sb
cmp r0, #0
beq _08040274
b _0804053E
_08040274:
mov r1, ip
ldr r0, [r1]
ldrb r1, [r0, #3]
adds r1, #1
strb r1, [r0, #3]
mov r2, ip
ldr r0, [r2]
adds r0, #0xdb
mov r3, sb
strb r3, [r0]
b _08040536
.align 2, 0
_0804028C: .4byte 0x02023D08
_08040290: .4byte 0x02023EAF
_08040294: .4byte 0x02023F38
_08040298: .4byte 0x02023F32
_0804029C: .4byte 0x0000FFDF
_080402A0: .4byte 0x08289293
_080402A4: .4byte 0x02024140
_080402A8:
mov r2, ip
ldr r0, [r2]
adds r0, #0xdb
ldr r1, _0804033C
ldrb r0, [r0]
ldrb r1, [r1]
cmp r0, r1
bhs _08040328
ldr r4, _08040340
ldr r5, _08040344
_080402BC:
ldr r0, [r2]
adds r0, #0xdb
ldrb r0, [r0]
adds r0, r0, r5
ldrb r0, [r0]
strb r0, [r4]
ldr r0, _08040348
adds r0, #0x20
ldrb r2, [r4]
adds r1, r0, r2
ldrb r0, [r1]
cmp r0, #0
beq _08040304
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _08040304
ldr r1, _0804034C
ldrb r2, [r4]
movs r0, #0x58
muls r0, r2, r0
adds r0, r0, r1
ldrh r0, [r0, #0x28]
cmp r0, #0
beq _08040304
ldr r0, _08040350
strb r2, [r0]
ldr r0, _08040354
bl BattleScriptExecute
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08040304:
ldr r2, _08040358
ldr r1, [r2]
adds r1, #0xdb
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
mov ip, r2
mov r3, sb
cmp r3, #0
beq _0804031A
b _0804053E
_0804031A:
ldr r0, [r2]
adds r0, #0xdb
ldr r1, _0804033C
ldrb r0, [r0]
ldrb r1, [r1]
cmp r0, r1
blo _080402BC
_08040328:
mov r0, sb
cmp r0, #0
beq _08040330
b _0804053E
_08040330:
mov r2, ip
ldr r1, [r2]
ldrb r0, [r1, #3]
adds r0, #1
strb r0, [r1, #3]
b _08040536
.align 2, 0
_0804033C: .4byte 0x02023D10
_08040340: .4byte 0x02023D08
_08040344: .4byte 0x02023D22
_08040348: .4byte 0x02024074
_0804034C: .4byte 0x02023D28
_08040350: .4byte 0x02023EB0
_08040354: .4byte 0x0828963F
_08040358: .4byte 0x02024140
_0804035C:
ldr r3, _08040394
ldrh r2, [r3]
movs r0, #7
ands r0, r2
cmp r0, #0
bne _0804036A
b _08040508
_0804036A:
movs r0, #4
ands r0, r2
cmp r0, #0
bne _080403B6
ldr r1, _08040398
adds r1, #0x28
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _080403A8
ldr r0, _0804039C
ands r0, r2
ldr r1, _080403A0
ands r0, r1
strh r0, [r3]
ldr r1, _080403A4
movs r0, #2
strb r0, [r1, #5]
b _080403D4
.align 2, 0
_08040394: .4byte 0x02024070
_08040398: .4byte 0x02024074
_0804039C: .4byte 0x0000FFFE
_080403A0: .4byte 0x0000FFFD
_080403A4: .4byte 0x02023FD6
_080403A8:
movs r0, #2
ands r0, r2
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
cmp r1, #0
bne _080403C2
b _080403D0
_080403B6:
movs r0, #2
ands r0, r2
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
cmp r1, #0
beq _080403D0
_080403C2:
ldr r1, _080403CC
movs r0, #1
strb r0, [r1, #5]
b _080403D4
.align 2, 0
_080403CC: .4byte 0x02023FD6
_080403D0:
ldr r0, _080403D8
strb r1, [r0, #5]
_080403D4:
ldr r0, _080403DC
b _080404FA
.align 2, 0
_080403D8: .4byte 0x02023FD6
_080403DC: .4byte 0x082891B4
_080403E0:
ldr r3, _08040414
ldrh r2, [r3]
movs r0, #0x18
ands r0, r2
cmp r0, #0
bne _080403EE
b _08040508
_080403EE:
movs r0, #0x10
ands r0, r2
cmp r0, #0
bne _08040428
ldr r1, _08040418
adds r1, #0x28
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _08040428
ldr r0, _0804041C
ands r0, r2
strh r0, [r3]
ldr r1, _08040420
ldr r0, _08040424
b _0804042C
.align 2, 0
_08040414: .4byte 0x02024070
_08040418: .4byte 0x02024074
_0804041C: .4byte 0x0000FFF7
_08040420: .4byte 0x02023EB8
_08040424: .4byte 0x08289251
_08040428:
ldr r1, _08040440
ldr r0, _08040444
_0804042C:
str r0, [r1]
adds r3, r1, #0
ldr r1, _08040448
movs r2, #0
movs r0, #0xc
strb r0, [r1, #0x10]
ldr r0, _0804044C
strb r2, [r0, #5]
b _080404F8
.align 2, 0
_08040440: .4byte 0x02023EB8
_08040444: .4byte 0x082891CF
_08040448: .4byte 0x02024118
_0804044C: .4byte 0x02023FD6
_08040450:
ldr r3, _08040480
ldrh r2, [r3]
movs r0, #0x60
ands r0, r2
cmp r0, #0
beq _08040508
movs r0, #0x40
ands r0, r2
cmp r0, #0
bne _08040494
ldr r1, _08040484
adds r1, #0x28
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _08040494
ldr r0, _08040488
ands r0, r2
strh r0, [r3]
ldr r1, _0804048C
ldr r0, _08040490
b _08040498
.align 2, 0
_08040480: .4byte 0x02024070
_08040484: .4byte 0x02024074
_08040488: .4byte 0x0000FFDF
_0804048C: .4byte 0x02023EB8
_08040490: .4byte 0x08289268
_08040494:
ldr r1, _080404A0
ldr r0, _080404A4
_08040498:
str r0, [r1]
adds r3, r1, #0
b _080404F8
.align 2, 0
_080404A0: .4byte 0x02023EB8
_080404A4: .4byte 0x0828925A
_080404A8:
ldr r3, _080404D0
ldrh r2, [r3]
movs r0, #0x80
ands r0, r2
cmp r0, #0
beq _08040508
ldr r1, _080404D4
adds r1, #0x28
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _080404E4
ldr r0, _080404D8
ands r0, r2
strh r0, [r3]
ldr r1, _080404DC
ldr r0, _080404E0
b _080404E8
.align 2, 0
_080404D0: .4byte 0x02024070
_080404D4: .4byte 0x02024074
_080404D8: .4byte 0x0000FF7F
_080404DC: .4byte 0x02023EB8
_080404E0: .4byte 0x08289251
_080404E4:
ldr r1, _08040518
ldr r0, _0804051C
_080404E8:
str r0, [r1]
adds r3, r1, #0
ldr r1, _08040520
movs r0, #0xd
strb r0, [r1, #0x10]
ldr r1, _08040524
movs r0, #1
strb r0, [r1, #5]
_080404F8:
ldr r0, [r3]
_080404FA:
bl BattleScriptExecute
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08040508:
ldr r2, _08040528
ldr r1, [r2]
ldrb r0, [r1, #3]
adds r0, #1
strb r0, [r1, #3]
mov ip, r2
b _08040536
.align 2, 0
_08040518: .4byte 0x02023EB8
_0804051C: .4byte 0x082891CF
_08040520: .4byte 0x02024118
_08040524: .4byte 0x02023FD6
_08040528: .4byte 0x02024140
_0804052C:
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08040536:
mov r3, sb
cmp r3, #0
bne _0804053E
b _0803FE9E
_0804053E:
ldr r0, _0804055C
ldr r1, [r0]
ldr r0, _08040560
eors r1, r0
rsbs r0, r1, #0
orrs r0, r1
lsrs r0, r0, #0x1f
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_0804055C: .4byte 0x03005A64
_08040560: .4byte 0x0803B601
thumb_func_end DoFieldEndTurnEffects
thumb_func_start BattleScriptPop
BattleScriptPop: @ 0x08040564
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #8
movs r0, #0
mov sb, r0
ldr r2, _08040598
ldr r0, [r2]
ldr r1, _0804059C
orrs r0, r1
str r0, [r2]
ldr r5, _080405A0
ldr r2, [r5]
ldr r0, _080405A4
ldrb r1, [r2, #1]
adds r7, r5, #0
mov r8, r0
ldrb r3, [r0]
cmp r1, r3
blo _08040594
bl _08040F78
_08040594:
bl _08040F6E
.align 2, 0
_08040598: .4byte 0x02023F24
_0804059C: .4byte 0x01000020
_080405A0: .4byte 0x02024140
_080405A4: .4byte 0x02023D10
thumb_func_end BattleScriptPop
thumb_func_start DoBattlerEndTurnEffects
DoBattlerEndTurnEffects: @ 0x080405A8
ldr r3, _080405DC
ldr r4, _080405E0
ldr r1, _080405E4
ldr r5, [r5]
ldrb r0, [r5, #1]
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r4]
strb r0, [r3]
ldr r0, _080405E8
ldrb r1, [r0]
ldr r2, _080405EC
ldrb r0, [r3]
lsls r0, r0, #2
adds r0, r0, r2
ldr r0, [r0]
ands r1, r0
adds r6, r3, #0
cmp r1, #0
beq _080405F0
ldrb r0, [r5, #1]
adds r0, #1
strb r0, [r5, #1]
bl _08040F5C
.align 2, 0
_080405DC: .4byte 0x02023D08
_080405E0: .4byte 0x02023EAF
_080405E4: .4byte 0x02023D22
_080405E8: .4byte 0x02023EB4
_080405EC: .4byte 0x082FACB4
_080405F0:
ldrb r0, [r5]
cmp r0, #0x13
bls _080405FA
bl _08040F52
_080405FA:
lsls r0, r0, #2
ldr r1, _08040604
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08040604: .4byte 0x08040608
_08040608: @ jump table
.4byte _08040658 @ case 0
.4byte _080406B8 @ case 1
.4byte _080406D6 @ case 2
.4byte _08040706 @ case 3
.4byte _08040784 @ case 4
.4byte _080407CC @ case 5
.4byte _0804084C @ case 6
.4byte _08040894 @ case 7
.4byte _080408F8 @ case 8
.4byte _08040940 @ case 9
.4byte _08040AA0 @ case 10
.4byte _08040BBC @ case 11
.4byte _08040C64 @ case 12
.4byte _08040D28 @ case 13
.4byte _08040DDC @ case 14
.4byte _08040DFC @ case 15
.4byte _08040E48 @ case 16
.4byte _08040E78 @ case 17
.4byte _080406EE @ case 18
.4byte _08040F44 @ case 19
_08040658:
ldr r1, _080406A8
ldrb r3, [r6]
lsls r0, r3, #2
adds r0, r0, r1
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #3
ands r0, r1
cmp r0, #0
bne _08040670
bl _08040F1E
_08040670:
ldr r0, _080406AC
movs r1, #0x58
muls r1, r3, r1
adds r0, r1, r0
ldrh r2, [r0, #0x28]
ldrh r5, [r0, #0x2c]
cmp r2, r5
bne _08040684
bl _08040F1E
_08040684:
cmp r2, #0
bne _0804068C
bl _08040F1E
_0804068C:
ldr r1, _080406B0
ldrh r0, [r0, #0x2c]
lsrs r0, r0, #4
str r0, [r1]
cmp r0, #0
bne _0804069C
movs r0, #1
str r0, [r1]
_0804069C:
ldr r0, [r1]
rsbs r0, r0, #0
str r0, [r1]
ldr r0, _080406B4
bl _08040F10
.align 2, 0
_080406A8: .4byte 0x02023F50
_080406AC: .4byte 0x02023D28
_080406B0: .4byte 0x02023E94
_080406B4: .4byte 0x08289676
_080406B8:
ldrb r1, [r6]
movs r0, #0
str r0, [sp]
movs r0, #1
movs r2, #0
movs r3, #0
bl AbilityBattleEffects
lsls r0, r0, #0x18
cmp r0, #0
bne _080406D2
bl _08040F1E
_080406D2:
bl _08040F14
_080406D6:
ldrb r1, [r6]
movs r0, #1
movs r2, #0
bl ItemBattleEffects
lsls r0, r0, #0x18
cmp r0, #0
bne _080406EA
bl _08040F1E
_080406EA:
bl _08040F14
_080406EE:
ldrb r1, [r6]
movs r0, #1
movs r2, #1
bl ItemBattleEffects
lsls r0, r0, #0x18
cmp r0, #0
bne _08040702
bl _08040F1E
_08040702:
bl _08040F14
_08040706:
ldr r0, _0804076C
ldrb r2, [r6]
lsls r1, r2, #2
adds r1, r1, r0
ldr r1, [r1]
movs r0, #4
ands r0, r1
cmp r0, #0
bne _0804071C
bl _08040F1E
_0804071C:
ldr r3, _08040770
movs r5, #3
ands r5, r1
movs r1, #0x58
adds r0, r5, #0
muls r0, r1, r0
adds r0, r0, r3
ldrh r0, [r0, #0x28]
cmp r0, #0
bne _08040734
bl _08040F1E
_08040734:
adds r0, r2, #0
muls r0, r1, r0
adds r0, r0, r3
ldrh r0, [r0, #0x28]
cmp r0, #0
bne _08040744
bl _08040F1E
_08040744:
ldr r0, _08040774
strb r5, [r0]
ldr r2, _08040778
ldrb r0, [r6]
muls r0, r1, r0
adds r0, r0, r3
ldrh r0, [r0, #0x2c]
lsrs r0, r0, #3
str r0, [r2]
cmp r0, #0
bne _0804075E
movs r0, #1
str r0, [r2]
_0804075E:
ldr r1, _0804077C
strb r5, [r1, #0x10]
ldrb r0, [r4]
strb r0, [r1, #0x11]
ldr r0, _08040780
b _08040F10
.align 2, 0
_0804076C: .4byte 0x02023F50
_08040770: .4byte 0x02023D28
_08040774: .4byte 0x02023EB0
_08040778: .4byte 0x02023E94
_0804077C: .4byte 0x02024118
_08040780: .4byte 0x0828929D
_08040784:
ldr r2, _080407C0
ldrb r1, [r6]
movs r0, #0x58
adds r3, r1, #0
muls r3, r0, r3
adds r0, r2, #0
adds r0, #0x4c
adds r0, r3, r0
ldr r0, [r0]
movs r1, #8
ands r0, r1
cmp r0, #0
bne _080407A0
b _08040F1E
_080407A0:
adds r1, r3, r2
ldrh r0, [r1, #0x28]
cmp r0, #0
bne _080407AA
b _08040F1E
_080407AA:
ldr r2, _080407C4
ldrh r0, [r1, #0x2c]
lsrs r0, r0, #3
str r0, [r2]
cmp r0, #0
bne _080407BA
movs r0, #1
str r0, [r2]
_080407BA:
ldr r0, _080407C8
b _08040F10
.align 2, 0
_080407C0: .4byte 0x02023D28
_080407C4: .4byte 0x02023E94
_080407C8: .4byte 0x082897C5
_080407CC:
ldr r4, _08040840
ldrb r0, [r6]
movs r7, #0x58
mov r8, r7
mov r2, r8
muls r2, r0, r2
adds r3, r4, #0
adds r3, #0x4c
adds r0, r2, r3
ldr r0, [r0]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _080407EA
b _08040F1E
_080407EA:
adds r1, r2, r4
ldrh r0, [r1, #0x28]
cmp r0, #0
bne _080407F4
b _08040F1E
_080407F4:
ldr r5, _08040844
ldrh r0, [r1, #0x2c]
lsrs r0, r0, #4
str r0, [r5]
cmp r0, #0
bne _08040804
movs r0, #1
str r0, [r5]
_08040804:
ldrb r0, [r6]
mov r1, r8
muls r1, r0, r1
adds r0, r1, #0
adds r2, r0, r3
ldr r1, [r2]
movs r4, #0xf0
lsls r4, r4, #4
adds r0, r1, #0
ands r0, r4
cmp r0, r4
beq _08040824
movs r7, #0x80
lsls r7, r7, #1
adds r0, r1, r7
str r0, [r2]
_08040824:
ldrb r0, [r6]
mov r1, r8
muls r1, r0, r1
adds r0, r1, #0
adds r0, r0, r3
ldr r0, [r0]
ands r0, r4
lsrs r0, r0, #8
ldr r1, [r5]
muls r0, r1, r0
str r0, [r5]
ldr r0, _08040848
b _08040F10
.align 2, 0
_08040840: .4byte 0x02023D28
_08040844: .4byte 0x02023E94
_08040848: .4byte 0x082897C5
_0804084C:
ldr r2, _08040888
ldrb r1, [r6]
movs r0, #0x58
adds r3, r1, #0
muls r3, r0, r3
adds r0, r2, #0
adds r0, #0x4c
adds r0, r3, r0
ldr r0, [r0]
movs r1, #0x10
ands r0, r1
cmp r0, #0
bne _08040868
b _08040F1E
_08040868:
adds r1, r3, r2
ldrh r0, [r1, #0x28]
cmp r0, #0
bne _08040872
b _08040F1E
_08040872:
ldr r2, _0804088C
ldrh r0, [r1, #0x2c]
lsrs r0, r0, #3
str r0, [r2]
cmp r0, #0
bne _08040882
movs r0, #1
str r0, [r2]
_08040882:
ldr r0, _08040890
b _08040F10
.align 2, 0
_08040888: .4byte 0x02023D28
_0804088C: .4byte 0x02023E94
_08040890: .4byte 0x082897E7
_08040894:
ldr r4, _080408E0
ldrb r1, [r6]
movs r0, #0x58
muls r1, r0, r1
adds r0, r4, #0
adds r0, #0x50
adds r5, r1, r0
ldr r2, [r5]
movs r0, #0x80
lsls r0, r0, #0x14
ands r0, r2
cmp r0, #0
bne _080408B0
b _08040F1E
_080408B0:
adds r3, r1, r4
ldrh r0, [r3, #0x28]
cmp r0, #0
bne _080408BA
b _08040F1E
_080408BA:
adds r0, r4, #0
adds r0, #0x4c
adds r0, r1, r0
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
beq _080408EC
ldr r1, _080408E4
ldrh r0, [r3, #0x2c]
lsrs r0, r0, #2
str r0, [r1]
cmp r0, #0
bne _080408DA
movs r0, #1
str r0, [r1]
_080408DA:
ldr r0, _080408E8
b _08040F10
.align 2, 0
_080408E0: .4byte 0x02023D28
_080408E4: .4byte 0x02023E94
_080408E8: .4byte 0x082898C7
_080408EC:
ldr r0, _080408F4
ands r2, r0
str r2, [r5]
b _08040F1E
.align 2, 0
_080408F4: .4byte 0xF7FFFFFF
_080408F8:
ldr r2, _08040934
ldrb r1, [r6]
movs r0, #0x58
adds r3, r1, #0
muls r3, r0, r3
adds r0, r2, #0
adds r0, #0x50
adds r0, r3, r0
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #0x15
ands r0, r1
cmp r0, #0
bne _08040916
b _08040F1E
_08040916:
adds r1, r3, r2
ldrh r0, [r1, #0x28]
cmp r0, #0
bne _08040920
b _08040F1E
_08040920:
ldr r2, _08040938
ldrh r0, [r1, #0x2c]
lsrs r0, r0, #2
str r0, [r2]
cmp r0, #0
bne _08040930
movs r0, #1
str r0, [r2]
_08040930:
ldr r0, _0804093C
b _08040F10
.align 2, 0
_08040934: .4byte 0x02023D28
_08040938: .4byte 0x02023E94
_0804093C: .4byte 0x082898D8
_08040940:
ldr r3, _080409E0
mov r8, r3
ldrb r0, [r6]
movs r3, #0x58
adds r1, r0, #0
muls r1, r3, r1
movs r5, #0x50
add r5, r8
mov sl, r5
adds r4, r1, r5
ldr r2, [r4]
movs r5, #0xe0
lsls r5, r5, #8
adds r0, r2, #0
ands r0, r5
cmp r0, #0
bne _08040964
b _08040F1E
_08040964:
mov r7, r8
adds r0, r1, r7
ldrh r0, [r0, #0x28]
cmp r0, #0
bne _08040970
b _08040F1E
_08040970:
ldr r1, _080409E4
adds r0, r2, r1
str r0, [r4]
ldrb r4, [r6]
adds r0, r4, #0
muls r0, r3, r0
add r0, sl
ldr r0, [r0]
ands r0, r5
cmp r0, #0
beq _08040A00
ldr r1, _080409E8
ldr r0, _080409EC
ldr r2, [r0]
lsls r0, r4, #1
adds r0, r0, r2
ldrb r0, [r0, #4]
strb r0, [r1, #0x10]
ldrb r0, [r6]
lsls r0, r0, #1
adds r0, r0, r2
ldrb r0, [r0, #5]
strb r0, [r1, #0x11]
ldr r1, _080409F0
movs r0, #0xfd
strb r0, [r1]
movs r0, #2
strb r0, [r1, #1]
ldrb r0, [r6]
lsls r0, r0, #1
adds r0, r0, r2
ldrb r0, [r0, #4]
strb r0, [r1, #2]
ldrb r0, [r6]
lsls r0, r0, #1
adds r0, r0, r2
ldrb r0, [r0, #5]
strb r0, [r1, #3]
movs r0, #0xff
strb r0, [r1, #4]
ldr r1, _080409F4
ldr r0, _080409F8
str r0, [r1]
ldr r2, _080409FC
ldrb r0, [r6]
muls r0, r3, r0
add r0, r8
ldrh r0, [r0, #0x2c]
lsrs r0, r0, #4
str r0, [r2]
cmp r0, #0
bne _08040A2C
movs r0, #1
str r0, [r2]
b _08040A2C
.align 2, 0
_080409E0: .4byte 0x02023D28
_080409E4: .4byte 0xFFFFE000
_080409E8: .4byte 0x02024118
_080409EC: .4byte 0x02024140
_080409F0: .4byte 0x02022C0C
_080409F4: .4byte 0x02023EB8
_080409F8: .4byte 0x08289896
_080409FC: .4byte 0x02023E94
_08040A00:
ldr r2, _08040A30
movs r0, #0xfd
strb r0, [r2]
movs r0, #2
strb r0, [r2, #1]
ldrb r1, [r6]
ldr r0, _08040A34
ldr r3, [r0]
lsls r1, r1, #1
adds r1, r1, r3
ldrb r0, [r1, #4]
strb r0, [r2, #2]
ldrb r0, [r6]
lsls r0, r0, #1
adds r0, r0, r3
ldrb r0, [r0, #5]
strb r0, [r2, #3]
movs r0, #0xff
strb r0, [r2, #4]
ldr r1, _08040A38
ldr r0, _08040A3C
str r0, [r1]
_08040A2C:
ldr r0, [r1]
b _08040F10
.align 2, 0
_08040A30: .4byte 0x02022C0C
_08040A34: .4byte 0x02024140
_08040A38: .4byte 0x02023EB8
_08040A3C: .4byte 0x082898A8
_08040A40:
movs r0, #8
rsbs r0, r0, #0
ands r3, r0
str r3, [r2]
ldrb r0, [r6]
mov r2, r8
muls r2, r0, r2
mov r0, sl
adds r0, #0x50
adds r2, r2, r0
ldr r0, [r2]
ldr r1, _08040A90
ands r0, r1
str r0, [r2]
ldr r1, _08040A94
movs r0, #1
strb r0, [r1, #5]
ldr r0, _08040A98
bl BattleScriptExecute
ldr r4, _08040A9C
ldrb r0, [r6]
strb r0, [r4]
ldrb r0, [r4]
mov r3, r8
muls r3, r0, r3
adds r0, r3, #0
add r0, sb
str r0, [sp]
movs r0, #0
movs r1, #0x28
movs r2, #0
movs r3, #4
bl BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
b _08040B08
.align 2, 0
_08040A90: .4byte 0xF7FFFFFF
_08040A94: .4byte 0x02023FD6
_08040A98: .4byte 0x082897BC
_08040A9C: .4byte 0x02023D08
_08040AA0:
ldr r2, _08040B1C
ldrb r1, [r6]
movs r0, #0x58
muls r0, r1, r0
adds r1, r2, #0
adds r1, #0x50
adds r0, r0, r1
ldr r1, [r0]
movs r0, #0x70
ands r1, r0
adds r7, r2, #0
cmp r1, #0
beq _08040BAA
movs r0, #0
strb r0, [r4]
mov r5, r8
ldrb r0, [r5]
cmp r0, #0
beq _08040B08
mov sl, r7
adds r6, r4, #0
movs r1, #0x58
mov r8, r1
movs r3, #0x4c
adds r3, r3, r7
mov sb, r3
str r0, [sp, #4]
movs r5, #7
mov ip, r5
_08040ADA:
ldrb r4, [r6]
mov r1, r8
muls r1, r4, r1
mov r0, sb
adds r2, r1, r0
ldr r3, [r2]
adds r0, r3, #0
mov r5, ip
ands r0, r5
cmp r0, #0
beq _08040AFA
adds r0, r1, r7
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #0x2b
bne _08040A40
_08040AFA:
adds r0, r4, #1
strb r0, [r6]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r1, [sp, #4]
cmp r0, r1
blo _08040ADA
_08040B08:
ldr r2, _08040B20
ldr r1, _08040B24
ldrb r0, [r2]
ldrb r1, [r1]
cmp r0, r1
beq _08040B28
movs r3, #2
mov sb, r3
b _08040F58
.align 2, 0
_08040B1C: .4byte 0x02023D28
_08040B20: .4byte 0x02023EAF
_08040B24: .4byte 0x02023D10
_08040B28:
ldr r5, _08040B60
ldrb r0, [r5]
strb r0, [r2]
ldr r2, _08040B64
ldrb r0, [r5]
movs r7, #0x58
adds r1, r0, #0
muls r1, r7, r1
adds r6, r2, #0
adds r6, #0x50
adds r1, r1, r6
ldr r0, [r1]
subs r0, #0x10
str r0, [r1]
ldrb r0, [r5]
bl WasUnableToUseMove
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0
beq _08040B6C
ldrb r0, [r5]
bl CancelMultiTurnMoves
ldr r1, _08040B68
movs r0, #1
strb r0, [r1, #5]
b _08040BA0
.align 2, 0
_08040B60: .4byte 0x02023D08
_08040B64: .4byte 0x02023D28
_08040B68: .4byte 0x02023FD6
_08040B6C:
ldrb r3, [r5]
adds r0, r3, #0
muls r0, r7, r0
adds r2, r0, r6
ldr r0, [r2]
movs r1, #0x70
ands r0, r1
cmp r0, #0
beq _08040B94
ldr r0, _08040B90
strb r4, [r0, #5]
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #5
orrs r0, r1
str r0, [r2]
b _08040BA0
.align 2, 0
_08040B90: .4byte 0x02023FD6
_08040B94:
ldr r1, _08040BB4
movs r0, #1
strb r0, [r1, #5]
adds r0, r3, #0
bl CancelMultiTurnMoves
_08040BA0:
ldr r0, _08040BB8
bl BattleScriptExecute
movs r5, #1
mov sb, r5
_08040BAA:
mov r7, sb
cmp r7, #2
bne _08040BB2
b _08040F52
_08040BB2:
b _08040F1E
.align 2, 0
_08040BB4: .4byte 0x02023FD6
_08040BB8: .4byte 0x0828982E
_08040BBC:
ldr r1, _08040BF4
ldrb r0, [r6]
movs r7, #0x58
muls r0, r7, r0
adds r5, r1, #0
adds r5, #0x50
adds r2, r0, r5
ldr r1, [r2]
movs r4, #0xc0
lsls r4, r4, #4
adds r0, r1, #0
ands r0, r4
cmp r0, #0
bne _08040BDA
b _08040F1E
_08040BDA:
ldr r3, _08040BF8
adds r0, r1, r3
str r0, [r2]
ldrb r0, [r6]
bl WasUnableToUseMove
lsls r0, r0, #0x18
cmp r0, #0
beq _08040BFC
ldrb r0, [r6]
bl CancelMultiTurnMoves
b _08040F1E
.align 2, 0
_08040BF4: .4byte 0x02023D28
_08040BF8: .4byte 0xFFFFFC00
_08040BFC:
ldrb r0, [r6]
muls r0, r7, r0
adds r2, r0, r5
ldr r1, [r2]
adds r0, r1, #0
ands r0, r4
cmp r0, #0
beq _08040C0E
b _08040F1E
_08040C0E:
movs r0, #0x80
lsls r0, r0, #5
ands r0, r1
cmp r0, #0
bne _08040C1A
b _08040F1E
_08040C1A:
ldr r0, _08040C58
ands r1, r0
str r1, [r2]
ldrb r0, [r6]
muls r0, r7, r0
adds r0, r0, r5
ldr r0, [r0]
movs r4, #7
ands r0, r4
cmp r0, #0
beq _08040C32
b _08040F1E
_08040C32:
ldr r1, _08040C5C
movs r0, #0x47
strb r0, [r1, #3]
movs r0, #1
movs r1, #0
bl SetMoveEffect
ldrb r0, [r6]
muls r0, r7, r0
adds r0, r0, r5
ldr r0, [r0]
ands r0, r4
cmp r0, #0
bne _08040C50
b _08040F14
_08040C50:
ldr r0, _08040C60
bl BattleScriptExecute
b _08040F14
.align 2, 0
_08040C58: .4byte 0xFFFFEFFF
_08040C5C: .4byte 0x02023FD6
_08040C60: .4byte 0x08289837
_08040C64:
ldr r0, _08040CE4
ldrb r3, [r6]
lsls r1, r3, #3
subs r1, r1, r3
lsls r1, r1, #2
adds r5, r1, r0
ldrb r1, [r5, #0xb]
lsls r1, r1, #0x1c
adds r7, r0, #0
cmp r1, #0
bne _08040C7C
b _08040F1E
_08040C7C:
movs r4, #0
ldr r2, _08040CE8
movs r0, #0x58
adds r1, r3, #0
muls r1, r0, r1
adds r2, #0xc
adds r1, r1, r2
ldrh r0, [r5, #4]
ldrh r1, [r1]
cmp r0, r1
beq _08040CBA
mov ip, r7
mov r8, r2
adds r5, r6, #0
movs r3, #0x58
_08040C9A:
adds r4, #1
cmp r4, #3
bgt _08040CBA
ldrb r2, [r5]
lsls r1, r2, #3
subs r1, r1, r2
lsls r1, r1, #2
add r1, ip
lsls r0, r4, #1
muls r2, r3, r2
adds r0, r0, r2
add r0, r8
ldrh r1, [r1, #4]
ldrh r0, [r0]
cmp r1, r0
bne _08040C9A
_08040CBA:
cmp r4, #4
bne _08040CEC
ldrb r1, [r6]
lsls r0, r1, #3
subs r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r7
movs r1, #0
strh r1, [r0, #4]
ldrb r0, [r6]
lsls r1, r0, #3
subs r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r7
ldrb r2, [r1, #0xb]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
strb r0, [r1, #0xb]
b _08040F1E
.align 2, 0
_08040CE4: .4byte 0x02023F60
_08040CE8: .4byte 0x02023D28
_08040CEC:
ldrb r0, [r6]
lsls r2, r0, #3
subs r2, r2, r0
lsls r2, r2, #2
adds r2, r2, r7
ldrb r3, [r2, #0xb]
lsls r1, r3, #0x1c
lsrs r1, r1, #0x1c
subs r1, #1
movs r0, #0xf
ands r1, r0
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r3
orrs r0, r1
strb r0, [r2, #0xb]
adds r2, r1, #0
cmp r2, #0
beq _08040D14
b _08040F1E
_08040D14:
ldrb r1, [r6]
lsls r0, r1, #3
subs r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r7
strh r2, [r0, #4]
ldr r0, _08040D24
b _08040F10
.align 2, 0
_08040D24: .4byte 0x082893AB
_08040D28:
ldr r3, _08040D74
ldrb r1, [r6]
lsls r0, r1, #3
subs r0, r0, r1
lsls r0, r0, #2
adds r2, r0, r3
ldrb r5, [r2, #0xe]
lsls r4, r5, #0x1c
cmp r4, #0
bne _08040D3E
b _08040F1E
_08040D3E:
ldr r7, _08040D78
mov r8, r7
ldrb r0, [r2, #0xc]
lsls r0, r0, #1
movs r7, #0x58
muls r1, r7, r1
adds r0, r0, r1
mov r1, r8
adds r1, #0xc
adds r0, r0, r1
ldrh r0, [r0]
ldrh r1, [r2, #6]
cmp r0, r1
beq _08040D7C
movs r0, #0
strh r0, [r2, #6]
ldrb r0, [r6]
lsls r1, r0, #3
subs r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r3
ldrb r2, [r1, #0xe]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
strb r0, [r1, #0xe]
b _08040F1E
.align 2, 0
_08040D74: .4byte 0x02023F60
_08040D78: .4byte 0x02023D28
_08040D7C:
lsrs r1, r4, #0x1c
subs r1, #1
movs r0, #0xf
ands r1, r0
movs r4, #0x10
rsbs r4, r4, #0
adds r0, r4, #0
ands r0, r5
orrs r0, r1
strb r0, [r2, #0xe]
cmp r1, #0
beq _08040DB2
ldrb r1, [r6]
lsls r0, r1, #3
subs r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r3
muls r1, r7, r1
ldrb r0, [r0, #0xc]
adds r1, r1, r0
mov r0, r8
adds r0, #0x24
adds r1, r1, r0
ldrb r0, [r1]
cmp r0, #0
beq _08040DB2
b _08040F1E
_08040DB2:
ldrb r1, [r6]
lsls r0, r1, #3
subs r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r3
movs r1, #0
strh r1, [r0, #6]
ldrb r0, [r6]
lsls r1, r0, #3
subs r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r3
ldrb r2, [r1, #0xe]
adds r0, r4, #0
ands r0, r2
strb r0, [r1, #0xe]
ldr r0, _08040DD8
b _08040F10
.align 2, 0
_08040DD8: .4byte 0x082893BF
_08040DDC:
ldr r0, _08040DF8
ldrb r1, [r6]
lsls r1, r1, #2
adds r1, r1, r0
ldr r2, [r1]
movs r0, #0x18
ands r0, r2
cmp r0, #0
beq _08040DF4
adds r0, r2, #0
subs r0, #8
str r0, [r1]
_08040DF4:
ldr r1, [r7]
b _08040F22
.align 2, 0
_08040DF8: .4byte 0x02023F50
_08040DFC:
ldr r2, _08040E3C
ldrb r1, [r6]
lsls r0, r1, #3
subs r0, r0, r1
lsls r0, r0, #2
adds r3, r0, r2
ldrb r2, [r3, #0x12]
lsls r1, r2, #0x1c
cmp r1, #0
beq _08040E36
lsrs r1, r1, #0x1c
subs r1, #1
movs r0, #0xf
ands r1, r0
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x12]
cmp r1, #0
bne _08040E36
ldr r0, _08040E40
ldrb r2, [r6]
lsls r2, r2, #2
adds r2, r2, r0
ldr r0, [r2]
ldr r1, _08040E44
ands r0, r1
str r0, [r2]
_08040E36:
ldr r1, [r7]
b _08040F22
.align 2, 0
_08040E3C: .4byte 0x02023F60
_08040E40: .4byte 0x02023F50
_08040E44: .4byte 0xFFFFFDFF
_08040E48:
ldr r2, _08040E74
ldrb r1, [r6]
lsls r0, r1, #3
subs r0, r0, r1
lsls r0, r0, #2
adds r3, r0, r2
ldrb r2, [r3, #0x13]
lsls r1, r2, #0x1c
cmp r1, #0
beq _08040E6E
lsrs r1, r1, #0x1c
subs r1, #1
movs r0, #0xf
ands r1, r0
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x13]
_08040E6E:
ldr r1, [r7]
b _08040F22
.align 2, 0
_08040E74: .4byte 0x02023F60
_08040E78:
ldr r4, _08040F2C
ldrb r0, [r6]
lsls r0, r0, #2
adds r2, r0, r4
ldr r1, [r2]
movs r3, #0xc0
lsls r3, r3, #5
adds r0, r1, #0
ands r0, r3
cmp r0, #0
beq _08040F1E
ldr r5, _08040F30
adds r0, r1, r5
str r0, [r2]
ldrb r2, [r6]
lsls r0, r2, #2
adds r0, r0, r4
ldr r0, [r0]
ands r0, r3
cmp r0, #0
bne _08040F1E
ldr r3, _08040F34
movs r5, #0x58
adds r1, r2, #0
muls r1, r5, r1
adds r4, r3, #0
adds r4, #0x4c
adds r0, r1, r4
ldrb r0, [r0]
cmp r0, #0
bne _08040F1E
adds r0, r1, r3
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #0x48
beq _08040F1E
cmp r0, #0xf
beq _08040F1E
adds r0, r2, #0
bl UproarWakeUpCheck
lsls r0, r0, #0x18
cmp r0, #0
bne _08040F1E
ldrb r0, [r6]
bl CancelMultiTurnMoves
bl Random
ldrb r1, [r6]
adds r2, r1, #0
muls r2, r5, r2
adds r2, r2, r4
movs r1, #3
ands r1, r0
adds r1, #2
ldr r0, [r2]
orrs r0, r1
str r0, [r2]
ldrb r0, [r6]
muls r0, r5, r0
adds r0, r0, r4
str r0, [sp]
movs r0, #0
movs r1, #0x28
movs r2, #0
movs r3, #4
bl BtlController_EmitSetMonData
ldrb r0, [r6]
bl MarkBattlerForControllerExec
ldr r1, _08040F38
ldrb r0, [r6]
strb r0, [r1]
ldr r0, _08040F3C
_08040F10:
bl BattleScriptExecute
_08040F14:
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08040F1E:
ldr r0, _08040F40
ldr r1, [r0]
_08040F22:
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
b _08040F52
.align 2, 0
_08040F2C: .4byte 0x02023F50
_08040F30: .4byte 0xFFFFF800
_08040F34: .4byte 0x02023D28
_08040F38: .4byte 0x02023EB2
_08040F3C: .4byte 0x08289900
_08040F40: .4byte 0x02024140
_08040F44:
ldr r1, [r7]
movs r0, #0
strb r0, [r1]
ldr r1, [r7]
ldrb r0, [r1, #1]
adds r0, #1
strb r0, [r1, #1]
_08040F52:
mov r7, sb
cmp r7, #0
beq _08040F5C
_08040F58:
mov r0, sb
b _08040F84
_08040F5C:
ldr r5, _08040F94
ldr r2, [r5]
ldr r0, _08040F98
ldrb r1, [r2, #1]
adds r7, r5, #0
mov r8, r0
ldrb r0, [r0]
cmp r1, r0
bhs _08040F78
_08040F6E:
ldrb r0, [r2]
cmp r0, #0x13
bhi _08040F78
bl DoBattlerEndTurnEffects
_08040F78:
ldr r0, _08040F9C
ldr r1, [r0]
ldr r2, _08040FA0
ands r1, r2
str r1, [r0]
movs r0, #0
_08040F84:
add sp, #8
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_08040F94: .4byte 0x02024140
_08040F98: .4byte 0x02023D10
_08040F9C: .4byte 0x02023F24
_08040FA0: .4byte 0xFEFFFFDF
thumb_func_end DoBattlerEndTurnEffects
thumb_func_start HandleWishPerishSongOnTurnEnd
HandleWishPerishSongOnTurnEnd: @ 0x08040FA4
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
ldr r2, _08040FD8
ldr r0, [r2]
ldr r1, _08040FDC
orrs r0, r1
str r0, [r2]
ldr r1, _08040FE0
ldr r3, [r1]
movs r4, #0xd0
lsls r4, r4, #1
adds r0, r3, r4
ldrb r0, [r0]
mov sl, r2
adds r6, r1, #0
cmp r0, #1
bne _08040FCE
b _08041188
_08040FCE:
cmp r0, #1
bgt _08040FE4
cmp r0, #0
beq _08040FEC
b _08041348
.align 2, 0
_08040FD8: .4byte 0x02023F24
_08040FDC: .4byte 0x01000020
_08040FE0: .4byte 0x02024140
_08040FE4:
cmp r0, #2
bne _08040FEA
b _080412DA
_08040FEA:
b _08041348
_08040FEC:
ldr r2, _08041030
adds r0, r3, r2
ldr r1, _08041034
ldrb r0, [r0]
mov r8, r1
ldrb r7, [r1]
cmp r0, r7
blo _08040FFE
b _08041172
_08040FFE:
ldr r4, _08041038
ldr r5, _0804103C
ldr r7, _08041040
movs r0, #0x18
adds r0, r0, r7
mov ip, r0
_0804100A:
ldr r0, [r6]
adds r3, r0, r2
ldrb r0, [r3]
strb r0, [r4]
ldr r0, _08041044
ldrb r1, [r0]
ldr r2, _08041048
ldrb r0, [r4]
lsls r0, r0, #2
adds r0, r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, #0
beq _0804104C
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
b _08041160
.align 2, 0
_08041030: .4byte 0x000001A1
_08041034: .4byte 0x02023D10
_08041038: .4byte 0x02023D08
_0804103C: .4byte 0x02022C0C
_08041040: .4byte 0x02024074
_08041044: .4byte 0x02023EB4
_08041048: .4byte 0x082FACB4
_0804104C:
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
ldr r1, _08041090
ldrb r0, [r4]
adds r2, r0, r1
ldrb r0, [r2]
mov sb, r1
cmp r0, #0
bne _08041062
b _08041160
_08041062:
subs r0, #1
strb r0, [r2]
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #0
bne _08041160
ldr r1, _08041094
ldrb r2, [r4]
movs r0, #0x58
muls r0, r2, r0
adds r0, r0, r1
ldrh r0, [r0, #0x28]
cmp r0, #0
beq _08041160
lsls r0, r2, #1
add r0, ip
ldrh r0, [r0]
cmp r0, #0xf8
bne _0804109C
ldr r0, _08041098
strb r3, [r0, #5]
b _080410A2
.align 2, 0
_08041090: .4byte 0x02024074
_08041094: .4byte 0x02023D28
_08041098: .4byte 0x02023FD6
_0804109C:
ldr r1, _0804113C
movs r0, #1
strb r0, [r1, #5]
_080410A2:
movs r0, #0xfd
strb r0, [r5]
movs r6, #2
movs r0, #2
strb r0, [r5, #1]
ldrb r0, [r4]
lsls r0, r0, #1
add r0, ip
ldrh r0, [r0]
strb r0, [r5, #2]
ldrb r0, [r4]
lsls r0, r0, #1
add r0, ip
ldrh r0, [r0]
lsrs r0, r0, #8
strb r0, [r5, #3]
movs r0, #0xff
strb r0, [r5, #4]
ldr r5, _08041140
ldrb r0, [r4]
strb r0, [r5]
ldr r1, _08041144
adds r0, r7, #4
ldrb r2, [r4]
adds r0, r0, r2
ldrb r0, [r0]
strb r0, [r1]
ldr r2, _08041148
ldrb r0, [r4]
lsls r0, r0, #2
adds r1, r7, #0
adds r1, #8
adds r0, r0, r1
ldr r0, [r0]
str r0, [r2]
ldr r2, _0804114C
ldrb r1, [r5]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
adds r2, #4
adds r0, r0, r2
ldr r1, _08041150
str r1, [r0]
ldr r0, _08041154
bl BattleScriptExecute
ldrb r1, [r4]
adds r0, r1, r7
ldrb r0, [r0]
cmp r0, #0
beq _0804110C
b _080412A4
_0804110C:
eors r1, r6
mov r3, sb
adds r0, r1, r3
ldrb r0, [r0]
cmp r0, #0
beq _0804111A
b _080412A4
_0804111A:
ldrb r0, [r5]
bl GetBattlerPosition
ldr r2, _08041158
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r1, #1
ands r0, r1
lsls r0, r0, #1
adds r0, r0, r2
ldrh r1, [r0]
ldr r4, _0804115C
adds r2, r4, #0
ands r1, r2
strh r1, [r0]
b _080412A4
.align 2, 0
_0804113C: .4byte 0x02023FD6
_08041140: .4byte 0x02023EB0
_08041144: .4byte 0x02023EAF
_08041148: .4byte 0x02023E94
_0804114C: .4byte 0x02024020
_08041150: .4byte 0x0000FFFF
_08041154: .4byte 0x0828956C
_08041158: .4byte 0x02023F32
_0804115C: .4byte 0x0000FFBF
_08041160:
ldr r0, [r6]
ldr r2, _080411D8
adds r0, r0, r2
ldrb r0, [r0]
mov r1, r8
ldrb r1, [r1]
cmp r0, r1
bhs _08041172
b _0804100A
_08041172:
ldr r0, [r6]
movs r2, #0xd0
lsls r2, r2, #1
adds r0, r0, r2
movs r1, #1
strb r1, [r0]
ldr r0, [r6]
ldr r3, _080411D8
adds r1, r0, r3
movs r0, #0
strb r0, [r1]
_08041188:
adds r3, r6, #0
ldr r0, [r6]
ldr r2, _080411D8
adds r0, r0, r2
ldr r1, _080411DC
ldrb r0, [r0]
mov r8, r1
ldrb r4, [r1]
cmp r0, r4
blo _0804119E
b _080412C4
_0804119E:
ldr r5, _080411E0
ldr r4, _080411E4
ldr r7, _080411E8
mov ip, r7
ldr r0, _080411EC
mov sb, r0
_080411AA:
ldr r1, _080411F0
ldr r0, [r3]
adds r3, r0, r2
ldrb r0, [r3]
adds r0, r0, r1
ldrb r0, [r0]
mov r1, sb
strb r0, [r1]
strb r0, [r5]
ldr r0, _080411F4
ldrb r1, [r0]
ldr r2, _080411F8
ldrb r0, [r5]
lsls r0, r0, #2
adds r0, r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, #0
beq _080411FC
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
b _080412B0
.align 2, 0
_080411D8: .4byte 0x000001A1
_080411DC: .4byte 0x02023D10
_080411E0: .4byte 0x02023D08
_080411E4: .4byte 0x02022C0C
_080411E8: .4byte 0x02023F60
_080411EC: .4byte 0x02023EAF
_080411F0: .4byte 0x02023D22
_080411F4: .4byte 0x02023EB4
_080411F8: .4byte 0x082FACB4
_080411FC:
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
ldr r7, _08041270
ldrb r0, [r5]
lsls r0, r0, #2
adds r0, r0, r7
ldr r0, [r0]
movs r1, #0x20
ands r0, r1
cmp r0, #0
beq _080412B0
movs r0, #0xfd
strb r0, [r4]
movs r0, #1
strb r0, [r4, #1]
strb r0, [r4, #2]
strb r0, [r4, #3]
ldrb r1, [r5]
lsls r0, r1, #3
subs r0, r0, r1
lsls r0, r0, #2
add r0, ip
ldrb r0, [r0, #0xf]
lsls r0, r0, #0x1c
lsrs r0, r0, #0x1c
strb r0, [r4, #4]
movs r0, #0xff
strb r0, [r4, #5]
ldrb r2, [r5]
lsls r0, r2, #3
subs r0, r0, r2
lsls r0, r0, #2
mov r3, ip
adds r4, r0, r3
ldrb r3, [r4, #0xf]
lsls r1, r3, #0x1c
cmp r1, #0
bne _08041284
lsls r2, r2, #2
adds r2, r2, r7
ldr r0, [r2]
movs r1, #0x21
rsbs r1, r1, #0
ands r0, r1
str r0, [r2]
ldr r3, _08041274
ldr r2, _08041278
ldrb r1, [r5]
movs r0, #0x58
muls r0, r1, r0
adds r0, r0, r2
ldrh r0, [r0, #0x28]
str r0, [r3]
ldr r1, _0804127C
ldr r0, _08041280
b _0804129C
.align 2, 0
_08041270: .4byte 0x02023F50
_08041274: .4byte 0x02023E94
_08041278: .4byte 0x02023D28
_0804127C: .4byte 0x02023EB8
_08041280: .4byte 0x0828948D
_08041284:
lsrs r1, r1, #0x1c
subs r1, #1
movs r0, #0xf
ands r1, r0
movs r7, #0x10
rsbs r7, r7, #0
adds r0, r7, #0
ands r0, r3
orrs r0, r1
strb r0, [r4, #0xf]
ldr r1, _080412A8
ldr r0, _080412AC
_0804129C:
str r0, [r1]
ldr r0, [r1]
bl BattleScriptExecute
_080412A4:
movs r0, #1
b _08041354
.align 2, 0
_080412A8: .4byte 0x02023EB8
_080412AC: .4byte 0x082894A8
_080412B0:
adds r3, r6, #0
ldr r0, [r6]
ldr r2, _08041330
adds r0, r0, r2
ldrb r0, [r0]
mov r1, r8
ldrb r1, [r1]
cmp r0, r1
bhs _080412C4
b _080411AA
_080412C4:
ldr r0, [r6]
movs r2, #0xd0
lsls r2, r2, #1
adds r0, r0, r2
movs r1, #2
strb r1, [r0]
ldr r0, [r6]
ldr r3, _08041330
adds r1, r0, r3
movs r0, #0
strb r0, [r1]
_080412DA:
ldr r0, _08041334
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #0xb
ands r0, r1
cmp r0, #0
beq _08041348
ldr r0, [r6]
adds r0, #0xda
ldrb r0, [r0]
cmp r0, #2
bne _08041348
ldr r1, _08041338
ldrh r0, [r1, #0x28]
cmp r0, #0
beq _08041348
adds r0, r1, #0
adds r0, #0x80
ldrh r0, [r0]
cmp r0, #0
beq _08041348
movs r4, #0
_08041306:
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
bl CancelMultiTurnMoves
adds r4, #1
cmp r4, #1
ble _08041306
ldr r1, _0804133C
ldr r0, _08041340
str r0, [r1]
bl BattleScriptExecute
ldr r0, _08041344
ldr r1, [r0]
movs r4, #0xd0
lsls r4, r4, #1
adds r1, r1, r4
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
b _080412A4
.align 2, 0
_08041330: .4byte 0x000001A1
_08041334: .4byte 0x02022C90
_08041338: .4byte 0x02023D28
_0804133C: .4byte 0x02023EB8
_08041340: .4byte 0x08289E7B
_08041344: .4byte 0x02024140
_08041348:
mov r7, sl
ldr r0, [r7]
ldr r1, _08041364
ands r0, r1
str r0, [r7]
movs r0, #0
_08041354:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_08041364: .4byte 0xFEFFFFDF
thumb_func_end HandleWishPerishSongOnTurnEnd
thumb_func_start HandleFaintedMonActions
HandleFaintedMonActions: @ 0x08041368
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #4
ldr r0, _08041380
ldr r0, [r0]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _080413B0
b _0804164A
.align 2, 0
_08041380: .4byte 0x02022C90
_08041384:
ldr r0, _08041394
bl BattleScriptExecute
ldr r0, [r5]
adds r0, #0x4d
movs r1, #2
b _080413A4
.align 2, 0
_08041394: .4byte 0x08288D4C
_08041398:
ldr r0, _080413AC
bl BattleScriptExecute
ldr r0, [r5]
adds r0, #0x4d
movs r1, #5
_080413A4:
strb r1, [r0]
_080413A6:
movs r0, #1
b _0804164C
.align 2, 0
_080413AC: .4byte 0x08288D55
_080413B0:
ldr r0, _080413CC
mov r8, r0
_080413B4:
mov r1, r8
ldr r0, [r1]
adds r0, #0x4d
ldrb r0, [r0]
cmp r0, #7
bls _080413C2
b _0804163C
_080413C2:
lsls r0, r0, #2
ldr r1, _080413D0
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080413CC: .4byte 0x02024140
_080413D0: .4byte 0x080413D4
_080413D4: @ jump table
.4byte _080413F4 @ case 0
.4byte _08041446 @ case 1
.4byte _080414E0 @ case 2
.4byte _08041522 @ case 3
.4byte _08041536 @ case 4
.4byte _080415A0 @ case 5
.4byte _080415D4 @ case 6
.4byte _0804163C @ case 7
_080413F4:
mov r4, r8
ldr r0, [r4]
adds r0, #0x4e
movs r1, #0
strb r1, [r0]
ldr r1, [r4]
adds r1, #0x4d
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
movs r5, #0
ldr r0, _080414C0
ldrb r0, [r0]
cmp r5, r0
bge _08041446
ldr r6, _080414C4
_08041414:
ldrb r0, [r6]
ldr r2, _080414C8
lsls r1, r5, #2
adds r1, r1, r2
ldr r4, [r1]
ands r0, r4
cmp r0, #0
beq _0804143C
lsls r0, r5, #0x18
lsrs r0, r0, #0x18
movs r1, #6
movs r2, #6
bl HasNoMonsToSwitch
lsls r0, r0, #0x18
cmp r0, #0
bne _0804143C
ldrb r0, [r6]
bics r0, r4
strb r0, [r6]
_0804143C:
adds r5, #1
ldr r0, _080414C0
ldrb r0, [r0]
cmp r5, r0
blt _08041414
_08041446:
ldr r0, _080414CC
mov r8, r0
ldr r1, _080414D0
mov ip, r1
ldr r2, _080414D4
mov r5, r8
ldr r7, _080414D8
ldr r6, _080414DC
_08041456:
ldr r3, [r5]
adds r1, r3, #0
adds r1, #0x4e
ldrb r0, [r1]
strb r0, [r2]
mov r4, ip
strb r0, [r4]
ldrb r4, [r1]
movs r0, #0x58
muls r0, r4, r0
adds r0, r0, r7
ldrh r0, [r0, #0x28]
cmp r0, #0
bne _0804149E
adds r0, r3, #0
adds r0, #0xdf
ldrb r1, [r0]
ldr r3, _080414C8
lsls r0, r4, #1
adds r0, r0, r6
ldrh r0, [r0]
lsls r0, r0, #2
adds r0, r0, r3
ldr r0, [r0]
ands r1, r0
cmp r1, #0
bne _0804149E
ldr r0, _080414C4
ldrb r1, [r0]
lsls r0, r4, #2
adds r0, r0, r3
ldr r0, [r0]
ands r1, r0
cmp r1, #0
bne _0804149E
b _08041384
_0804149E:
ldr r0, [r5]
adds r0, #0x4e
ldrb r1, [r0]
adds r1, #1
strb r1, [r0]
ldr r0, _080414C0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
ldrb r0, [r0]
cmp r1, r0
bne _08041456
mov r1, r8
ldr r0, [r1]
adds r0, #0x4d
movs r1, #3
strb r1, [r0]
b _0804163C
.align 2, 0
_080414C0: .4byte 0x02023D10
_080414C4: .4byte 0x02023EB4
_080414C8: .4byte 0x082FACB4
_080414CC: .4byte 0x02024140
_080414D0: .4byte 0x02023EB1
_080414D4: .4byte 0x02023EB0
_080414D8: .4byte 0x02023D28
_080414DC: .4byte 0x02023D12
_080414E0:
ldr r0, _0804150C
ldrb r0, [r0]
bl sub_0803F62C
ldr r2, _08041510
ldr r1, [r2]
adds r1, #0x4e
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ldr r1, _08041514
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrb r1, [r1]
cmp r0, r1
bne _08041518
ldr r0, [r2]
adds r0, #0x4d
movs r1, #3
strb r1, [r0]
b _0804163A
.align 2, 0
_0804150C: .4byte 0x02023EB1
_08041510: .4byte 0x02024140
_08041514: .4byte 0x02023D10
_08041518:
ldr r0, [r2]
adds r0, #0x4d
movs r1, #1
strb r1, [r0]
b _0804163A
_08041522:
mov r4, r8
ldr r0, [r4]
adds r0, #0x4e
movs r1, #0
strb r1, [r0]
ldr r1, [r4]
adds r1, #0x4d
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
_08041536:
ldr r0, _08041584
mov ip, r0
ldr r7, _08041588
ldr r5, _0804158C
ldr r2, _08041590
ldr r6, _08041594
_08041542:
ldr r0, [r5]
adds r4, r0, #0
adds r4, #0x4e
ldrb r0, [r4]
strb r0, [r7]
mov r1, ip
strb r0, [r1]
ldrb r3, [r4]
movs r0, #0x58
muls r0, r3, r0
adds r0, r0, r2
ldrh r0, [r0, #0x28]
cmp r0, #0
bne _08041570
ldr r0, _08041598
ldrb r1, [r0]
lsls r0, r3, #2
adds r0, r0, r6
ldr r0, [r0]
ands r1, r0
cmp r1, #0
bne _08041570
b _08041398
_08041570:
adds r0, r3, #1
strb r0, [r4]
ldr r1, _0804159C
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrb r1, [r1]
cmp r0, r1
bne _08041542
b _080415B8
.align 2, 0
_08041584: .4byte 0x02023EB1
_08041588: .4byte 0x02023EB0
_0804158C: .4byte 0x02024140
_08041590: .4byte 0x02023D28
_08041594: .4byte 0x082FACB4
_08041598: .4byte 0x02023EB4
_0804159C: .4byte 0x02023D10
_080415A0:
mov r1, r8
ldr r0, [r1]
adds r0, #0x4e
ldrb r1, [r0]
adds r1, #1
strb r1, [r0]
ldr r0, _080415C4
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
ldrb r0, [r0]
cmp r1, r0
bne _080415C8
_080415B8:
mov r4, r8
ldr r0, [r4]
adds r0, #0x4d
movs r1, #6
strb r1, [r0]
b _0804163C
.align 2, 0
_080415C4: .4byte 0x02023D10
_080415C8:
mov r1, r8
ldr r0, [r1]
adds r0, #0x4d
movs r1, #4
strb r1, [r0]
b _0804163C
_080415D4:
movs r0, #0
str r0, [sp]
movs r0, #9
movs r1, #0
movs r2, #0
movs r3, #0
bl AbilityBattleEffects
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
beq _080415EE
b _080413A6
_080415EE:
str r0, [sp]
movs r0, #0xb
movs r1, #0
movs r2, #0
movs r3, #0
bl AbilityBattleEffects
lsls r0, r0, #0x18
cmp r0, #0
beq _08041604
b _080413A6
_08041604:
movs r0, #1
movs r1, #0
movs r2, #1
bl ItemBattleEffects
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
beq _08041618
b _080413A6
_08041618:
str r0, [sp]
movs r0, #6
movs r1, #0
movs r2, #0
movs r3, #0
bl AbilityBattleEffects
lsls r0, r0, #0x18
cmp r0, #0
beq _0804162E
b _080413A6
_0804162E:
ldr r2, _08041658
ldr r1, [r2]
adds r1, #0x4d
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
_0804163A:
mov r8, r2
_0804163C:
mov r4, r8
ldr r0, [r4]
adds r0, #0x4d
ldrb r0, [r0]
cmp r0, #7
beq _0804164A
b _080413B4
_0804164A:
movs r0, #0
_0804164C:
add sp, #4
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_08041658: .4byte 0x02024140
thumb_func_end HandleFaintedMonActions
thumb_func_start TryClearRageStatuses
TryClearRageStatuses: @ 0x0804165C
push {r4, r5, r6, lr}
movs r3, #0
ldr r0, _0804169C
adds r5, r0, #0
ldrb r0, [r5]
cmp r3, r0
bge _08041694
ldr r4, _080416A0
movs r6, #0x80
lsls r6, r6, #0x10
ldr r2, _080416A4
_08041672:
ldr r1, [r2]
adds r0, r1, #0
ands r0, r6
cmp r0, #0
beq _08041688
ldrh r0, [r4]
cmp r0, #0x63
beq _08041688
ldr r0, _080416A8
ands r1, r0
str r1, [r2]
_08041688:
adds r4, #2
adds r2, #0x58
adds r3, #1
ldrb r0, [r5]
cmp r3, r0
blt _08041672
_08041694:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0804169C: .4byte 0x02023D10
_080416A0: .4byte 0x02023F18
_080416A4: .4byte 0x02023D78
_080416A8: .4byte 0xFF7FFFFF
thumb_func_end TryClearRageStatuses
thumb_func_start sub_080416AC
sub_080416AC: @ 0x080416AC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x10
movs r0, #0
mov sb, r0
ldr r1, _080416C8
mov sl, r1
ldr r2, _080416CC
mov r8, r2
b _080416DA
.align 2, 0
_080416C8: .4byte 0x0202411C
_080416CC: .4byte 0x02024140
thumb_func_end sub_080416AC
thumb_func_start AtkCanceller_UnableToUseMove
AtkCanceller_UnableToUseMove: @ 0x080416D0
mov r3, sb
cmp r3, #0
beq _080416DA
bl _08041FC8
_080416DA:
mov r4, r8
ldr r0, [r4]
ldr r7, _080416F8
adds r0, r0, r7
ldrb r0, [r0]
cmp r0, #0xe
bls _080416EC
bl _08041FB6
_080416EC:
lsls r0, r0, #2
ldr r1, _080416FC
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080416F8: .4byte 0x000001A3
_080416FC: .4byte 0x08041700
_08041700: @ jump table
.4byte _0804173C @ case 0
.4byte _08041788 @ case 1
.4byte _080418D0 @ case 2
.4byte _08041990 @ case 3
.4byte _08041A04 @ case 4
.4byte _08041A80 @ case 5
.4byte _08041AF8 @ case 6
.4byte _08041B78 @ case 7
.4byte _08041C00 @ case 8
.4byte _08041C68 @ case 9
.4byte _08041D54 @ case 10
.4byte _08041DD4 @ case 11
.4byte _08041E74 @ case 12
.4byte _08041F5C @ case 13
.4byte _08041FB6 @ case 14
_0804173C:
ldr r1, _08041770
ldr r3, _08041774
ldrb r2, [r3]
movs r0, #0x58
muls r2, r0, r2
adds r1, #0x50
adds r2, r2, r1
ldr r0, [r2]
ldr r1, _08041778
ands r0, r1
str r0, [r2]
ldr r0, _0804177C
ldrb r2, [r3]
lsls r2, r2, #2
adds r2, r2, r0
ldr r0, [r2]
ldr r1, _08041780
ands r0, r1
str r0, [r2]
mov r1, r8
ldr r0, [r1]
ldr r2, _08041784
adds r1, r0, r2
bl _08041FB0
.align 2, 0
_08041770: .4byte 0x02023D28
_08041774: .4byte 0x02023EAF
_08041778: .4byte 0xFDFFFFFF
_0804177C: .4byte 0x02023F50
_08041780: .4byte 0xFFFFBFFF
_08041784: .4byte 0x000001A3
_08041788:
ldr r7, _080417F0
ldr r4, _080417F4
ldrb r1, [r4]
movs r5, #0x58
adds r0, r1, #0
muls r0, r5, r0
adds r6, r7, #0
adds r6, #0x4c
adds r0, r0, r6
ldr r0, [r0]
movs r3, #7
mov r8, r3
ands r0, r3
cmp r0, #0
bne _080417A8
b _080418AE
_080417A8:
adds r0, r1, #0
bl UproarWakeUpCheck
lsls r0, r0, #0x18
cmp r0, #0
beq _08041808
ldrb r0, [r4]
adds r2, r0, #0
muls r2, r5, r2
adds r2, r2, r6
ldr r0, [r2]
movs r1, #8
rsbs r1, r1, #0
ands r0, r1
str r0, [r2]
ldrb r0, [r4]
adds r2, r0, #0
muls r2, r5, r2
adds r0, r7, #0
adds r0, #0x50
adds r2, r2, r0
ldr r0, [r2]
ldr r1, _080417F8
ands r0, r1
str r0, [r2]
bl BattleScriptPushCursor
ldr r1, _080417FC
movs r0, #1
strb r0, [r1, #5]
ldr r1, _08041800
ldr r0, _08041804
str r0, [r1]
movs r4, #2
mov sb, r4
b _080418AE
.align 2, 0
_080417F0: .4byte 0x02023D28
_080417F4: .4byte 0x02023EAF
_080417F8: .4byte 0xF7FFFFFF
_080417FC: .4byte 0x02023FD6
_08041800: .4byte 0x02023EB8
_08041804: .4byte 0x082897A8
_08041808:
ldrb r0, [r4]
adds r1, r0, #0
muls r1, r5, r1
adds r0, r1, r7
adds r0, #0x20
ldrb r0, [r0]
movs r3, #1
cmp r0, #0x30
bne _0804181C
movs r3, #2
_0804181C:
adds r2, r1, r6
ldr r1, [r2]
adds r0, r1, #0
mov r7, r8
ands r0, r7
cmp r0, r3
bhs _08041834
movs r0, #8
rsbs r0, r0, #0
ands r1, r0
str r1, [r2]
b _08041838
_08041834:
subs r0, r1, r3
str r0, [r2]
_08041838:
ldr r2, _08041878
ldr r0, _0804187C
ldrb r1, [r0]
movs r0, #0x58
muls r1, r0, r1
adds r0, r2, #0
adds r0, #0x4c
adds r0, r1, r0
ldr r4, [r0]
movs r0, #7
ands r4, r0
cmp r4, #0
beq _08041890
ldr r0, _08041880
ldrh r0, [r0]
cmp r0, #0xad
beq _080418AE
cmp r0, #0xd6
beq _080418AE
ldr r1, _08041884
ldr r0, _08041888
str r0, [r1]
ldr r2, _0804188C
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #0xc
orrs r0, r1
str r0, [r2]
movs r0, #2
mov sb, r0
b _080418AE
.align 2, 0
_08041878: .4byte 0x02023D28
_0804187C: .4byte 0x02023EAF
_08041880: .4byte 0x02023E8E
_08041884: .4byte 0x02023EB8
_08041888: .4byte 0x0828979B
_0804188C: .4byte 0x02023F24
_08041890:
adds r2, #0x50
adds r2, r1, r2
ldr r0, [r2]
ldr r1, _080418B8
ands r0, r1
str r0, [r2]
bl BattleScriptPushCursor
ldr r0, _080418BC
strb r4, [r0, #5]
ldr r1, _080418C0
ldr r0, _080418C4
str r0, [r1]
movs r1, #2
mov sb, r1
_080418AE:
ldr r1, _080418C8
ldr r0, [r1]
ldr r3, _080418CC
adds r2, r0, r3
b _08041DAA
.align 2, 0
_080418B8: .4byte 0xF7FFFFFF
_080418BC: .4byte 0x02023FD6
_080418C0: .4byte 0x02023EB8
_080418C4: .4byte 0x082897A8
_080418C8: .4byte 0x02024140
_080418CC: .4byte 0x000001A3
_080418D0:
ldr r1, _0804192C
ldr r7, _08041930
ldrb r0, [r7]
movs r6, #0x58
muls r0, r6, r0
adds r5, r1, #0
adds r5, #0x4c
adds r0, r0, r5
ldr r0, [r0]
movs r1, #0x20
ands r0, r1
cmp r0, #0
beq _08041970
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #5
bl __umodsi3
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
cmp r4, #0
beq _08041948
ldr r2, _08041934
ldr r0, _08041938
ldrh r1, [r0]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrb r0, [r0]
cmp r0, #0x7d
bne _08041916
b _08041DA2
_08041916:
ldr r1, _0804193C
ldr r0, _08041940
str r0, [r1]
ldr r2, _08041944
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #2
orrs r0, r1
str r0, [r2]
b _08041968
.align 2, 0
_0804192C: .4byte 0x02023D28
_08041930: .4byte 0x02023EAF
_08041934: .4byte 0x082ED220
_08041938: .4byte 0x02023E8E
_0804193C: .4byte 0x02023EB8
_08041940: .4byte 0x082897F2
_08041944: .4byte 0x02023F24
_08041948:
ldrb r0, [r7]
adds r2, r0, #0
muls r2, r6, r2
adds r2, r2, r5
ldr r0, [r2]
movs r1, #0x21
rsbs r1, r1, #0
ands r0, r1
str r0, [r2]
bl BattleScriptPushCursor
ldr r1, _0804197C
ldr r0, _08041980
str r0, [r1]
ldr r0, _08041984
strb r4, [r0, #5]
_08041968:
movs r7, #2
mov sb, r7
ldr r0, _08041988
mov r8, r0
_08041970:
mov r1, r8
ldr r0, [r1]
ldr r2, _0804198C
adds r1, r0, r2
b _08041FB0
.align 2, 0
_0804197C: .4byte 0x02023EB8
_08041980: .4byte 0x082897FF
_08041984: .4byte 0x02023FD6
_08041988: .4byte 0x02024140
_0804198C: .4byte 0x000001A3
_08041990:
ldr r1, _080419E4
ldr r0, _080419E8
ldrb r2, [r0]
movs r0, #0x58
muls r0, r2, r0
adds r0, r0, r1
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #0x36
beq _080419A6
b _08041DA2
_080419A6:
ldr r0, _080419EC
lsls r1, r2, #3
subs r1, r1, r2
lsls r1, r1, #2
adds r1, r1, r0
ldrb r0, [r1, #0x18]
lsls r0, r0, #0x1f
cmp r0, #0
bne _080419BA
b _08041DA2
_080419BA:
adds r0, r2, #0
bl CancelMultiTurnMoves
ldr r2, _080419F0
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #0xc
orrs r0, r1
str r0, [r2]
ldr r1, _080419F4
movs r0, #0
strb r0, [r1, #5]
ldr r1, _080419F8
ldr r0, _080419FC
str r0, [r1]
ldr r2, _08041A00
ldrb r0, [r2]
movs r1, #1
orrs r0, r1
strb r0, [r2]
b _08041D9E
.align 2, 0
_080419E4: .4byte 0x02023D28
_080419E8: .4byte 0x02023EAF
_080419EC: .4byte 0x02023F60
_080419F0: .4byte 0x02023F24
_080419F4: .4byte 0x02023FD6
_080419F8: .4byte 0x02023EB8
_080419FC: .4byte 0x08289C35
_08041A00: .4byte 0x02023F20
_08041A04:
ldr r1, _08041A5C
ldr r3, _08041A60
ldrb r2, [r3]
movs r0, #0x58
muls r0, r2, r0
adds r1, #0x50
adds r2, r0, r1
ldr r1, [r2]
movs r0, #0x80
lsls r0, r0, #0xf
ands r0, r1
cmp r0, #0
beq _08041A50
ldr r0, _08041A64
ands r1, r0
str r1, [r2]
ldr r2, _08041A68
ldrb r1, [r3]
lsls r0, r1, #3
subs r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
movs r1, #0
strb r1, [r0, #0x19]
ldrb r0, [r3]
bl CancelMultiTurnMoves
ldr r1, _08041A6C
ldr r0, _08041A70
str r0, [r1]
ldr r2, _08041A74
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #0xc
orrs r0, r1
str r0, [r2]
movs r7, #1
mov sb, r7
_08041A50:
ldr r1, _08041A78
ldr r0, [r1]
ldr r3, _08041A7C
adds r2, r0, r3
b _08041DAA
.align 2, 0
_08041A5C: .4byte 0x02023D28
_08041A60: .4byte 0x02023EAF
_08041A64: .4byte 0xFFBFFFFF
_08041A68: .4byte 0x02023F60
_08041A6C: .4byte 0x02023EB8
_08041A70: .4byte 0x082879EA
_08041A74: .4byte 0x02023F24
_08041A78: .4byte 0x02024140
_08041A7C: .4byte 0x000001A3
_08041A80:
ldr r1, _08041AD8
ldr r3, _08041ADC
ldrb r2, [r3]
movs r0, #0x58
muls r0, r2, r0
adds r1, #0x50
adds r2, r0, r1
ldr r1, [r2]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _08041ACC
movs r0, #9
rsbs r0, r0, #0
ands r1, r0
str r1, [r2]
ldr r0, _08041AE0
ldrb r2, [r3]
lsls r2, r2, #4
adds r2, r2, r0
ldrb r0, [r2, #2]
movs r1, #4
orrs r0, r1
strb r0, [r2, #2]
ldrb r0, [r3]
bl CancelMultiTurnMoves
ldr r1, _08041AE4
ldr r0, _08041AE8
str r0, [r1]
ldr r2, _08041AEC
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #0xc
orrs r0, r1
str r0, [r2]
movs r4, #1
mov sb, r4
_08041ACC:
ldr r1, _08041AF0
ldr r0, [r1]
ldr r7, _08041AF4
adds r2, r0, r7
b _08041DAA
.align 2, 0
_08041AD8: .4byte 0x02023D28
_08041ADC: .4byte 0x02023EAF
_08041AE0: .4byte 0x02023FE0
_08041AE4: .4byte 0x02023EB8
_08041AE8: .4byte 0x08289823
_08041AEC: .4byte 0x02023F24
_08041AF0: .4byte 0x02024140
_08041AF4: .4byte 0x000001A3
_08041AF8:
ldr r0, _08041B50
ldr r3, _08041B54
ldrb r2, [r3]
lsls r1, r2, #3
subs r1, r1, r2
lsls r1, r1, #2
adds r1, r1, r0
ldr r0, _08041B58
ldrh r1, [r1, #4]
ldrh r0, [r0]
cmp r1, r0
bne _08041B44
cmp r1, #0
beq _08041B44
ldr r0, _08041B5C
lsls r2, r2, #4
adds r2, r2, r0
ldrb r0, [r2, #1]
movs r1, #0x80
orrs r0, r1
strb r0, [r2, #1]
ldr r1, _08041B60
ldrb r0, [r3]
strb r0, [r1, #0x17]
ldrb r0, [r3]
bl CancelMultiTurnMoves
ldr r1, _08041B64
ldr r0, _08041B68
str r0, [r1]
ldr r2, _08041B6C
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #0xc
orrs r0, r1
str r0, [r2]
movs r0, #1
mov sb, r0
_08041B44:
ldr r1, _08041B70
ldr r0, [r1]
ldr r3, _08041B74
adds r2, r0, r3
b _08041DAA
.align 2, 0
_08041B50: .4byte 0x02023F60
_08041B54: .4byte 0x02023EAF
_08041B58: .4byte 0x02023E8E
_08041B5C: .4byte 0x02023FE0
_08041B60: .4byte 0x02024118
_08041B64: .4byte 0x02023EB8
_08041B68: .4byte 0x0828939C
_08041B6C: .4byte 0x02023F24
_08041B70: .4byte 0x02024140
_08041B74: .4byte 0x000001A3
_08041B78:
ldr r0, _08041BD8
ldr r4, _08041BDC
ldrb r3, [r4]
lsls r1, r3, #3
subs r1, r1, r3
lsls r1, r1, #2
adds r1, r1, r0
ldrb r0, [r1, #0x13]
lsls r0, r0, #0x1c
cmp r0, #0
beq _08041BCC
ldr r2, _08041BE0
ldr r0, _08041BE4
ldrh r1, [r0]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrb r0, [r0, #1]
cmp r0, #0
bne _08041BCC
ldr r0, _08041BE8
lsls r2, r3, #4
adds r2, r2, r0
ldrb r0, [r2, #2]
movs r1, #1
orrs r0, r1
strb r0, [r2, #2]
ldrb r0, [r4]
bl CancelMultiTurnMoves
ldr r1, _08041BEC
ldr r0, _08041BF0
str r0, [r1]
ldr r2, _08041BF4
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #0xc
orrs r0, r1
str r0, [r2]
movs r4, #1
mov sb, r4
_08041BCC:
ldr r1, _08041BF8
ldr r0, [r1]
ldr r7, _08041BFC
adds r2, r0, r7
b _08041DAA
.align 2, 0
_08041BD8: .4byte 0x02023F60
_08041BDC: .4byte 0x02023EAF
_08041BE0: .4byte 0x082ED220
_08041BE4: .4byte 0x02023E8E
_08041BE8: .4byte 0x02023FE0
_08041BEC: .4byte 0x02023EB8
_08041BF0: .4byte 0x0828962C
_08041BF4: .4byte 0x02023F24
_08041BF8: .4byte 0x02024140
_08041BFC: .4byte 0x000001A3
_08041C00:
ldr r4, _08041C48
ldrb r0, [r4]
ldr r1, _08041C4C
ldrh r1, [r1]
bl GetImprisonedMovesCount
lsls r0, r0, #0x18
cmp r0, #0
beq _08041C3E
ldr r0, _08041C50
ldrb r2, [r4]
lsls r2, r2, #4
adds r2, r2, r0
ldrb r0, [r2, #1]
movs r1, #0x20
orrs r0, r1
strb r0, [r2, #1]
ldrb r0, [r4]
bl CancelMultiTurnMoves
ldr r1, _08041C54
ldr r0, _08041C58
str r0, [r1]
ldr r2, _08041C5C
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #0xc
orrs r0, r1
str r0, [r2]
movs r0, #1
mov sb, r0
_08041C3E:
ldr r1, _08041C60
ldr r0, [r1]
ldr r3, _08041C64
adds r2, r0, r3
b _08041DAA
.align 2, 0
_08041C48: .4byte 0x02023EAF
_08041C4C: .4byte 0x02023E8E
_08041C50: .4byte 0x02023FE0
_08041C54: .4byte 0x02023EB8
_08041C58: .4byte 0x082896FE
_08041C5C: .4byte 0x02023F24
_08041C60: .4byte 0x02024140
_08041C64: .4byte 0x000001A3
_08041C68:
ldr r7, _08041CB0
ldr r5, _08041CB4
ldrb r0, [r5]
movs r6, #0x58
muls r0, r6, r0
adds r4, r7, #0
adds r4, #0x50
adds r2, r0, r4
ldr r1, [r2]
movs r3, #7
adds r0, r1, #0
ands r0, r3
cmp r0, #0
beq _08041D3A
subs r0, r1, #1
str r0, [r2]
ldrb r0, [r5]
muls r0, r6, r0
adds r0, r0, r4
ldr r0, [r0]
ands r0, r3
cmp r0, #0
beq _08041D28
bl Random
movs r1, #1
movs r2, #1
ands r2, r0
cmp r2, #0
beq _08041CBC
ldr r1, _08041CB8
movs r0, #0
strb r0, [r1, #5]
bl BattleScriptPushCursor
b _08041D06
.align 2, 0
_08041CB0: .4byte 0x02023D28
_08041CB4: .4byte 0x02023EAF
_08041CB8: .4byte 0x02023FD6
_08041CBC:
ldr r0, _08041D0C
movs r4, #1
strb r1, [r0, #5]
ldr r1, _08041D10
ldrb r0, [r5]
strb r0, [r1]
ldrb r0, [r5]
adds r1, r0, #0
muls r1, r6, r1
adds r1, r1, r7
movs r0, #0x28
str r0, [sp]
str r2, [sp, #4]
ldrb r0, [r5]
str r0, [sp, #8]
ldrb r0, [r5]
str r0, [sp, #0xc]
adds r0, r1, #0
movs r2, #1
movs r3, #0
bl CalculateBaseDamage
ldr r1, _08041D14
str r0, [r1]
ldr r0, _08041D18
ldrb r1, [r5]
lsls r1, r1, #4
adds r1, r1, r0
ldrb r0, [r1, #1]
orrs r0, r4
strb r0, [r1, #1]
ldr r2, _08041D1C
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #0xc
orrs r0, r1
str r0, [r2]
_08041D06:
ldr r1, _08041D20
ldr r0, _08041D24
b _08041D30
.align 2, 0
_08041D0C: .4byte 0x02023FD6
_08041D10: .4byte 0x02023EB0
_08041D14: .4byte 0x02023E94
_08041D18: .4byte 0x02023FE0
_08041D1C: .4byte 0x02023F24
_08041D20: .4byte 0x02023EB8
_08041D24: .4byte 0x08289845
_08041D28:
bl BattleScriptPushCursor
ldr r1, _08041D44
ldr r0, _08041D48
_08041D30:
str r0, [r1]
movs r4, #1
mov sb, r4
ldr r7, _08041D4C
mov r8, r7
_08041D3A:
mov r1, r8
ldr r0, [r1]
ldr r2, _08041D50
adds r1, r0, r2
b _08041FB0
.align 2, 0
_08041D44: .4byte 0x02023EB8
_08041D48: .4byte 0x08289888
_08041D4C: .4byte 0x02024140
_08041D50: .4byte 0x000001A3
_08041D54:
ldr r1, _08041DB4
ldr r4, _08041DB8
ldrb r2, [r4]
movs r0, #0x58
muls r0, r2, r0
adds r1, #0x4c
adds r0, r0, r1
ldr r0, [r0]
movs r1, #0x40
ands r0, r1
cmp r0, #0
beq _08041DA2
bl Random
lsls r0, r0, #0x10
movs r1, #0xc0
lsls r1, r1, #0xa
ands r1, r0
cmp r1, #0
bne _08041DA2
ldr r0, _08041DBC
ldrb r2, [r4]
lsls r2, r2, #4
adds r2, r2, r0
ldrb r0, [r2]
movs r1, #0x80
orrs r0, r1
strb r0, [r2]
ldr r1, _08041DC0
ldr r0, _08041DC4
str r0, [r1]
ldr r2, _08041DC8
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #0xc
orrs r0, r1
str r0, [r2]
_08041D9E:
movs r3, #1
mov sb, r3
_08041DA2:
ldr r1, _08041DCC
ldr r0, [r1]
ldr r4, _08041DD0
adds r2, r0, r4
_08041DAA:
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
mov r8, r1
b _08041FB6
.align 2, 0
_08041DB4: .4byte 0x02023D28
_08041DB8: .4byte 0x02023EAF
_08041DBC: .4byte 0x02023FE0
_08041DC0: .4byte 0x02023EB8
_08041DC4: .4byte 0x08289813
_08041DC8: .4byte 0x02023F24
_08041DCC: .4byte 0x02024140
_08041DD0: .4byte 0x000001A3
_08041DD4:
ldr r1, _08041E0C
ldr r4, _08041E10
ldrb r2, [r4]
movs r0, #0x58
muls r0, r2, r0
adds r1, #0x50
adds r0, r0, r1
ldr r1, [r0]
movs r0, #0xf0
lsls r0, r0, #0xc
ands r1, r0
cmp r1, #0
beq _08041E4E
lsrs r0, r1, #0x10
bl CountTrailingZeroBits
ldr r1, _08041E14
strb r0, [r1, #0x17]
bl Random
movs r1, #1
ands r1, r0
cmp r1, #0
beq _08041E18
bl BattleScriptPushCursor
b _08041E40
.align 2, 0
_08041E0C: .4byte 0x02023D28
_08041E10: .4byte 0x02023EAF
_08041E14: .4byte 0x02024118
_08041E18:
ldr r0, _08041E58
bl BattleScriptPush
ldr r2, _08041E5C
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #0xc
orrs r0, r1
str r0, [r2]
ldr r0, _08041E60
ldrb r2, [r4]
lsls r2, r2, #4
adds r2, r2, r0
ldrb r0, [r2, #1]
movs r1, #0x40
orrs r0, r1
strb r0, [r2, #1]
ldrb r0, [r4]
bl CancelMultiTurnMoves
_08041E40:
ldr r1, _08041E64
ldr r0, _08041E68
str r0, [r1]
movs r7, #1
mov sb, r7
ldr r0, _08041E6C
mov r8, r0
_08041E4E:
mov r1, r8
ldr r0, [r1]
ldr r2, _08041E70
adds r1, r0, r2
b _08041FB0
.align 2, 0
_08041E58: .4byte 0x082898BC
_08041E5C: .4byte 0x02023F24
_08041E60: .4byte 0x02023FE0
_08041E64: .4byte 0x02023EB8
_08041E68: .4byte 0x082898AF
_08041E6C: .4byte 0x02024140
_08041E70: .4byte 0x000001A3
_08041E74:
ldr r1, _08041EAC
ldr r6, _08041EB0
ldrb r0, [r6]
movs r5, #0x58
muls r0, r5, r0
adds r1, #0x50
adds r3, r0, r1
ldr r2, [r3]
movs r4, #0xc0
lsls r4, r4, #2
adds r0, r2, #0
ands r0, r4
cmp r0, #0
beq _08041F46
ldr r7, _08041EB4
adds r0, r2, r7
str r0, [r3]
ldrb r2, [r6]
adds r0, r2, #0
muls r0, r5, r0
adds r0, r0, r1
ldr r0, [r0]
ands r0, r4
cmp r0, #0
beq _08041EC0
ldr r1, _08041EB8
ldr r0, _08041EBC
b _08041F40
.align 2, 0
_08041EAC: .4byte 0x02023D28
_08041EB0: .4byte 0x02023EAF
_08041EB4: .4byte 0xFFFFFF00
_08041EB8: .4byte 0x02023EB8
_08041EBC: .4byte 0x082892F9
_08041EC0:
ldr r3, _08041F18
lsls r0, r2, #2
adds r0, r0, r3
ldr r0, [r0]
cmp r0, #0
beq _08041F3C
ldr r1, _08041F1C
movs r0, #0x75
strh r0, [r1]
ldrb r0, [r6]
lsls r0, r0, #2
adds r0, r0, r3
ldr r0, [r0]
lsls r0, r0, #1
mov r1, sl
str r0, [r1]
ldr r4, _08041F20
ldr r1, _08041F24
ldrb r0, [r6]
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r4]
ldr r0, _08041F28
ldrb r1, [r0]
ldr r2, _08041F2C
ldrb r0, [r4]
lsls r0, r0, #2
adds r0, r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, #0
beq _08041F0A
movs r0, #0x75
movs r1, #1
bl GetMoveTarget
strb r0, [r4]
_08041F0A:
ldr r1, _08041F30
ldr r0, _08041F34
str r0, [r1]
ldr r2, _08041F38
mov r8, r2
b _08041F42
.align 2, 0
_08041F18: .4byte 0x02023E9C
_08041F1C: .4byte 0x02023E8E
_08041F20: .4byte 0x02023EB0
_08041F24: .4byte 0x02023F2C
_08041F28: .4byte 0x02023EB4
_08041F2C: .4byte 0x082FACB4
_08041F30: .4byte 0x02023EB8
_08041F34: .4byte 0x08289304
_08041F38: .4byte 0x02024140
_08041F3C:
ldr r1, _08041F50
ldr r0, _08041F54
_08041F40:
str r0, [r1]
_08041F42:
movs r3, #1
mov sb, r3
_08041F46:
mov r4, r8
ldr r0, [r4]
ldr r7, _08041F58
adds r1, r0, r7
b _08041FB0
.align 2, 0
_08041F50: .4byte 0x02023EB8
_08041F54: .4byte 0x0828934C
_08041F58: .4byte 0x000001A3
_08041F5C:
ldr r1, _08042008
ldr r0, _0804200C
ldrb r2, [r0]
movs r0, #0x58
muls r0, r2, r0
adds r1, #0x4c
adds r4, r0, r1
ldr r3, [r4]
movs r0, #0x20
ands r0, r3
cmp r0, #0
beq _08041FA8
ldr r2, _08042010
ldr r0, _08042014
ldrh r1, [r0]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrb r0, [r0]
cmp r0, #0x7d
bne _08041FA0
movs r0, #0x21
rsbs r0, r0, #0
ands r3, r0
str r3, [r4]
bl BattleScriptPushCursor
ldr r1, _08042018
ldr r0, _0804201C
str r0, [r1]
ldr r1, _08042020
movs r0, #1
strb r0, [r1, #5]
_08041FA0:
movs r0, #2
mov sb, r0
ldr r1, _08042024
mov r8, r1
_08041FA8:
mov r2, r8
ldr r0, [r2]
ldr r3, _08042028
adds r1, r0, r3
_08041FB0:
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
_08041FB6:
mov r4, r8
ldr r0, [r4]
ldr r7, _08042028
adds r0, r0, r7
ldrb r0, [r0]
cmp r0, #0xe
beq _08041FC8
bl AtkCanceller_UnableToUseMove
_08041FC8:
mov r0, sb
cmp r0, #2
bne _08041FF4
ldr r4, _0804202C
ldr r0, _0804200C
ldrb r0, [r0]
strb r0, [r4]
ldrb r1, [r4]
movs r0, #0x58
muls r0, r1, r0
ldr r1, _08042030
adds r0, r0, r1
str r0, [sp]
movs r0, #0
movs r1, #0x28
movs r2, #0
movs r3, #4
bl BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
_08041FF4:
mov r0, sb
add sp, #0x10
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_08042008: .4byte 0x02023D28
_0804200C: .4byte 0x02023EAF
_08042010: .4byte 0x082ED220
_08042014: .4byte 0x02023E8E
_08042018: .4byte 0x02023EB8
_0804201C: .4byte 0x082897FF
_08042020: .4byte 0x02023FD6
_08042024: .4byte 0x02024140
_08042028: .4byte 0x000001A3
_0804202C: .4byte 0x02023D08
_08042030: .4byte 0x02023D74
thumb_func_end AtkCanceller_UnableToUseMove
thumb_func_start HasNoMonsToSwitch
HasNoMonsToSwitch: @ 0x08042034
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
mov sl, r1
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
mov sb, r2
ldr r0, _08042060
ldr r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _08042064
movs r0, #0
b _080422E0
.align 2, 0
_08042060: .4byte 0x02022C90
_08042064:
movs r0, #0x80
lsls r0, r0, #0xf
ands r0, r1
cmp r0, #0
beq _080420DC
adds r0, r4, #0
bl GetBattlerSide
lsls r0, r0, #0x18
ldr r1, _080420D4
mov r8, r1
cmp r0, #0
bne _08042082
ldr r2, _080420D8
mov r8, r2
_08042082:
movs r0, #2
ands r0, r4
lsls r0, r0, #0x18
lsrs r6, r0, #0x19
lsls r0, r6, #1
adds r4, r0, r6
adds r0, r4, #3
cmp r4, r0
bge _080420CC
adds r7, r0, #0
_08042096:
movs r0, #0x64
muls r0, r4, r0
mov r1, r8
adds r5, r1, r0
adds r0, r5, #0
movs r1, #0x39
bl GetMonData
cmp r0, #0
beq _080420C6
adds r0, r5, #0
movs r1, #0x41
bl GetMonData
cmp r0, #0
beq _080420C6
adds r0, r5, #0
movs r1, #0x41
bl GetMonData
movs r1, #0xce
lsls r1, r1, #1
cmp r0, r1
bne _080420CC
_080420C6:
adds r4, #1
cmp r4, r7
blt _08042096
_080420CC:
movs r1, #0
lsls r0, r6, #1
adds r0, r0, r6
b _08042196
.align 2, 0
_080420D4: .4byte 0x020243E8
_080420D8: .4byte 0x02024190
_080420DC:
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _080421AC
movs r0, #0x80
lsls r0, r0, #0x10
ands r1, r0
cmp r1, #0
beq _08042124
adds r0, r4, #0
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _08042110
ldr r2, _0804210C
mov r8, r2
adds r0, r4, #0
bl GetBattlerMultiplayerId
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
b _08042142
.align 2, 0
_0804210C: .4byte 0x02024190
_08042110:
ldr r0, _08042120
mov r8, r0
movs r1, #1
eors r1, r4
rsbs r0, r1, #0
orrs r0, r1
lsrs r6, r0, #0x1f
b _0804214C
.align 2, 0
_08042120: .4byte 0x020243E8
_08042124:
adds r0, r4, #0
bl GetBattlerMultiplayerId
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
adds r0, r4, #0
bl GetBattlerSide
lsls r0, r0, #0x18
ldr r1, _080421A4
mov r8, r1
cmp r0, #0
bne _08042142
ldr r2, _080421A8
mov r8, r2
_08042142:
adds r0, r7, #0
bl GetLinkTrainerFlankId
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
_0804214C:
lsls r0, r6, #1
adds r4, r0, r6
adds r1, r4, #3
mov sb, r0
cmp r4, r1
bge _08042190
adds r7, r1, #0
_0804215A:
movs r0, #0x64
muls r0, r4, r0
mov r1, r8
adds r5, r1, r0
adds r0, r5, #0
movs r1, #0x39
bl GetMonData
cmp r0, #0
beq _0804218A
adds r0, r5, #0
movs r1, #0x41
bl GetMonData
cmp r0, #0
beq _0804218A
adds r0, r5, #0
movs r1, #0x41
bl GetMonData
movs r1, #0xce
lsls r1, r1, #1
cmp r0, r1
bne _08042190
_0804218A:
adds r4, #1
cmp r4, r7
blt _0804215A
_08042190:
movs r1, #0
mov r2, sb
adds r0, r2, r6
_08042196:
adds r0, #3
cmp r4, r0
bne _0804219E
movs r1, #1
_0804219E:
adds r0, r1, #0
b _080422E0
.align 2, 0
_080421A4: .4byte 0x020243E8
_080421A8: .4byte 0x02024190
_080421AC:
movs r0, #0x80
lsls r0, r0, #8
ands r1, r0
cmp r1, #0
beq _0804221A
adds r0, r4, #0
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _0804221A
ldr r0, _080421D8
mov r8, r0
movs r6, #3
cmp r4, #1
bne _080421D0
movs r6, #0
_080421D0:
adds r4, r6, #0
adds r6, r4, #3
b _080421DE
.align 2, 0
_080421D8: .4byte 0x020243E8
_080421DC:
adds r4, #1
_080421DE:
cmp r4, r6
bge _08042212
movs r0, #0x64
muls r0, r4, r0
mov r1, r8
adds r5, r1, r0
adds r0, r5, #0
movs r1, #0x39
bl GetMonData
cmp r0, #0
beq _080421DC
adds r0, r5, #0
movs r1, #0x41
bl GetMonData
cmp r0, #0
beq _080421DC
adds r0, r5, #0
movs r1, #0x41
bl GetMonData
movs r1, #0xce
lsls r1, r1, #1
cmp r0, r1
beq _080421DC
_08042212:
movs r0, #0
cmp r4, r6
bne _080422E0
b _080422DE
_0804221A:
adds r0, r4, #0
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08042248
movs r0, #1
bl GetBattlerAtPosition
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
movs r0, #3
bl GetBattlerAtPosition
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldr r2, _08042244
mov r8, r2
b _08042260
.align 2, 0
_08042244: .4byte 0x020243E8
_08042248:
movs r0, #0
bl GetBattlerAtPosition
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
movs r0, #2
bl GetBattlerAtPosition
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldr r0, _080422F0
mov r8, r0
_08042260:
mov r1, sl
cmp r1, #6
bne _08042270
ldr r1, _080422F4
lsls r0, r7, #1
adds r0, r0, r1
ldrb r0, [r0]
mov sl, r0
_08042270:
mov r2, sb
cmp r2, #6
bne _08042280
ldr r1, _080422F4
lsls r0, r6, #1
adds r0, r0, r1
ldrb r0, [r0]
mov sb, r0
_08042280:
movs r4, #0
_08042282:
movs r0, #0x64
muls r0, r4, r0
mov r1, r8
adds r5, r1, r0
adds r0, r5, #0
movs r1, #0x39
bl GetMonData
cmp r0, #0
beq _080422D2
adds r0, r5, #0
movs r1, #0x41
bl GetMonData
cmp r0, #0
beq _080422D2
adds r0, r5, #0
movs r1, #0x41
bl GetMonData
movs r1, #0xce
lsls r1, r1, #1
cmp r0, r1
beq _080422D2
cmp r4, sl
beq _080422D2
cmp r4, sb
beq _080422D2
ldr r0, _080422F8
ldr r1, [r0]
adds r0, r7, r1
adds r0, #0x5c
ldrb r0, [r0]
cmp r4, r0
beq _080422D2
adds r0, r6, r1
adds r0, #0x5c
ldrb r0, [r0]
cmp r4, r0
bne _080422D8
_080422D2:
adds r4, #1
cmp r4, #5
ble _08042282
_080422D8:
movs r0, #0
cmp r4, #6
bne _080422E0
_080422DE:
movs r0, #1
_080422E0:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_080422F0: .4byte 0x02024190
_080422F4: .4byte 0x02023D12
_080422F8: .4byte 0x02024140
thumb_func_end HasNoMonsToSwitch
thumb_func_start CastformDataTypeChange
CastformDataTypeChange: @ 0x080422FC
push {r4, r5, r6, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
movs r5, #0
ldr r1, _0804236C
movs r0, #0x58
muls r0, r6, r0
adds r4, r0, r1
ldrh r1, [r4]
ldr r0, _08042370
cmp r1, r0
bne _080423A0
adds r0, r4, #0
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #0x3b
bne _080423A0
ldrh r0, [r4, #0x28]
cmp r0, #0
beq _080423A0
str r5, [sp]
movs r0, #0x13
movs r1, #0
movs r2, #0xd
movs r3, #0
bl AbilityBattleEffects
lsls r0, r0, #0x18
cmp r0, #0
bne _0804234E
str r5, [sp]
movs r0, #0x13
movs r1, #0
movs r2, #0x4d
movs r3, #0
bl AbilityBattleEffects
lsls r0, r0, #0x18
cmp r0, #0
beq _08042374
_0804234E:
adds r2, r4, #0
adds r2, #0x21
ldrb r0, [r2]
cmp r0, #0
beq _08042374
adds r1, r4, #0
adds r1, #0x22
ldrb r0, [r1]
cmp r0, #0
beq _08042374
strb r5, [r2]
strb r5, [r1]
movs r0, #1
b _08042458
.align 2, 0
_0804236C: .4byte 0x02023D28
_08042370: .4byte 0x00000181
_08042374:
movs r0, #0
str r0, [sp]
movs r0, #0x13
movs r1, #0
movs r2, #0xd
movs r3, #0
bl AbilityBattleEffects
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _080423A0
str r0, [sp]
movs r0, #0x13
movs r1, #0
movs r2, #0x4d
movs r3, #0
bl AbilityBattleEffects
lsls r0, r0, #0x18
cmp r0, #0
beq _080423A4
_080423A0:
movs r0, #0
b _08042458
_080423A4:
ldr r1, _08042460
ldrh r0, [r1]
movs r2, #0xe7
ands r2, r0
adds r4, r1, #0
cmp r2, #0
bne _080423D2
ldr r1, _08042464
movs r0, #0x58
muls r0, r6, r0
adds r1, r0, r1
adds r3, r1, #0
adds r3, #0x21
ldrb r0, [r3]
cmp r0, #0
beq _080423D2
adds r1, #0x22
ldrb r0, [r1]
cmp r0, #0
beq _080423D2
strb r2, [r3]
strb r2, [r1]
movs r5, #1
_080423D2:
ldrh r1, [r4]
movs r0, #0x60
ands r0, r1
cmp r0, #0
beq _080423FE
ldr r1, _08042464
movs r0, #0x58
muls r0, r6, r0
adds r1, r0, r1
adds r2, r1, #0
adds r2, #0x21
ldrb r0, [r2]
cmp r0, #0xa
beq _080423FE
adds r1, #0x22
ldrb r0, [r1]
cmp r0, #0xa
beq _080423FE
movs r0, #0xa
strb r0, [r2]
strb r0, [r1]
movs r5, #2
_080423FE:
ldrh r1, [r4]
movs r0, #7
ands r0, r1
cmp r0, #0
beq _0804242A
ldr r1, _08042464
movs r0, #0x58
muls r0, r6, r0
adds r1, r0, r1
adds r2, r1, #0
adds r2, #0x21
ldrb r0, [r2]
cmp r0, #0xb
beq _0804242A
adds r1, #0x22
ldrb r0, [r1]
cmp r0, #0xb
beq _0804242A
movs r0, #0xb
strb r0, [r2]
strb r0, [r1]
movs r5, #3
_0804242A:
ldrh r1, [r4]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08042456
ldr r1, _08042464
movs r0, #0x58
muls r0, r6, r0
adds r1, r0, r1
adds r2, r1, #0
adds r2, #0x21
ldrb r0, [r2]
cmp r0, #0xf
beq _08042456
adds r1, #0x22
ldrb r0, [r1]
cmp r0, #0xf
beq _08042456
movs r0, #0xf
strb r0, [r2]
strb r0, [r1]
movs r5, #4
_08042456:
adds r0, r5, #0
_08042458:
add sp, #4
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
_08042460: .4byte 0x02024070
_08042464: .4byte 0x02023D28
thumb_func_end CastformDataTypeChange
thumb_func_start AbilityBattleEffects
AbilityBattleEffects: @ 0x08042468
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x28
ldr r4, [sp, #0x48]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
str r0, [sp, #4]
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
mov sl, r1
lsls r2, r2, #0x18
lsrs r6, r2, #0x18
lsls r3, r3, #0x18
lsrs r3, r3, #0x18
mov r8, r3
lsls r4, r4, #0x10
lsrs r4, r4, #0x10
movs r0, #0
mov sb, r0
ldr r5, _080424C4
ldr r1, _080424C8
ldrb r0, [r5]
ldrb r1, [r1]
cmp r0, r1
blo _080424A4
mov r1, sl
strb r1, [r5]
_080424A4:
ldrb r0, [r5]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _080424D4
ldr r1, _080424CC
ldrb r0, [r5]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
movs r0, #0x64
muls r1, r0, r1
ldr r0, _080424D0
b _080424E4
.align 2, 0
_080424C4: .4byte 0x02023EAF
_080424C8: .4byte 0x02023D10
_080424CC: .4byte 0x02023D12
_080424D0: .4byte 0x02024190
_080424D4:
ldr r1, _08042514
ldrb r0, [r5]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
movs r0, #0x64
muls r1, r0, r1
ldr r0, _08042518
_080424E4:
adds r7, r1, r0
ldr r5, _0804251C
ldr r1, _08042520
ldrb r0, [r5]
ldrb r1, [r1]
cmp r0, r1
blo _080424F6
mov r2, sl
strb r2, [r5]
_080424F6:
ldrb r0, [r5]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _08042528
ldr r1, _08042514
ldrb r0, [r5]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
movs r0, #0x64
muls r1, r0, r1
ldr r0, _08042524
b _08042538
.align 2, 0
_08042514: .4byte 0x02023D12
_08042518: .4byte 0x020243E8
_0804251C: .4byte 0x02023EB0
_08042520: .4byte 0x02023D10
_08042524: .4byte 0x02024190
_08042528:
ldr r1, _08042588
ldrb r0, [r5]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
movs r0, #0x64
muls r1, r0, r1
ldr r0, _0804258C
_08042538:
adds r5, r1, r0
adds r0, r7, #0
movs r1, #0xb
bl GetMonData
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
str r0, [sp, #8]
adds r0, r7, #0
movs r1, #0
bl GetMonData
str r0, [sp, #0x10]
adds r0, r5, #0
movs r1, #0xb
bl GetMonData
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
str r0, [sp, #0xc]
adds r0, r5, #0
movs r1, #0
bl GetMonData
str r0, [sp, #0x14]
ldr r0, _08042590
ldr r0, [r0]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _0804257A
bl _0804407A
_0804257A:
mov r3, r8
cmp r3, #0
beq _08042598
ldr r0, _08042594
strb r3, [r0]
adds r7, r0, #0
b _080425AE
.align 2, 0
_08042588: .4byte 0x02023D12
_0804258C: .4byte 0x020243E8
_08042590: .4byte 0x02022C90
_08042594: .4byte 0x02023EAE
_08042598:
ldr r2, _080425B8
ldr r1, _080425BC
movs r0, #0x58
mov r5, sl
muls r5, r0, r5
adds r0, r5, #0
adds r0, r0, r1
adds r0, #0x20
ldrb r0, [r0]
strb r0, [r2]
adds r7, r2, #0
_080425AE:
cmp r4, #0
beq _080425C0
adds r5, r4, #0
b _080425C4
.align 2, 0
_080425B8: .4byte 0x02023EAE
_080425BC: .4byte 0x02023D28
_080425C0:
ldr r0, _080425D8
ldrh r5, [r0]
_080425C4:
ldr r1, _080425DC
ldr r0, [r1]
ldrb r0, [r0, #0x13]
mov r8, r1
cmp r0, #0
beq _080425E0
movs r3, #0x3f
ands r3, r0
b _080425EC
.align 2, 0
_080425D8: .4byte 0x02023E8E
_080425DC: .4byte 0x02024140
_080425E0:
ldr r1, _08042600
lsls r0, r5, #1
adds r0, r0, r5
lsls r0, r0, #2
adds r0, r0, r1
ldrb r3, [r0, #2]
_080425EC:
ldr r0, [sp, #4]
cmp r0, #0x13
bls _080425F6
bl _0804405E
_080425F6:
lsls r0, r0, #2
ldr r1, _08042604
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08042600: .4byte 0x082ED220
_08042604: .4byte 0x08042608
_08042608: @ jump table
.4byte _08042658 @ case 0
.4byte _0804291C @ case 1
.4byte _08042B38 @ case 2
.4byte _08042BCC @ case 3
.4byte _08042DEC @ case 4
.4byte _08043548 @ case 5
.4byte _080438AC @ case 6
.4byte _080438FC @ case 7
.4byte _08043980 @ case 8
.4byte _08043A04 @ case 9
.4byte _08043C24 @ case 10
.4byte _08043A48 @ case 11
.4byte _08043C68 @ case 12
.4byte _08043CC4 @ case 13
.4byte _08043D20 @ case 14
.4byte _08043E1C @ case 15
.4byte _08043E60 @ case 16
.4byte _08043EBC @ case 17
.4byte _0804402C @ case 18
.4byte _08043DD6 @ case 19
_08042658:
ldr r2, _0804268C
ldr r0, _08042690
ldrb r1, [r2]
adds r5, r0, #0
ldrb r3, [r5]
cmp r1, r3
blo _0804266A
mov r0, sl
strb r0, [r2]
_0804266A:
ldrb r0, [r7]
cmp r0, #0x2d
bne _08042672
b _080427E8
_08042672:
cmp r0, #0x2d
bgt _080426A4
cmp r0, #0xd
bne _0804267C
b _080428E4
_0804267C:
cmp r0, #0xd
bgt _08042694
cmp r0, #2
bne _08042686
b _080427B8
_08042686:
bl _0804405E
.align 2, 0
_0804268C: .4byte 0x02023EAF
_08042690: .4byte 0x02023D10
_08042694:
cmp r0, #0x16
bne _0804269A
b _08042848
_0804269A:
cmp r0, #0x24
bne _080426A0
b _080428A8
_080426A0:
bl _0804405E
_080426A4:
cmp r0, #0x46
bne _080426AA
b _08042818
_080426AA:
cmp r0, #0x46
bgt _080426B8
cmp r0, #0x3b
bne _080426B4
b _0804287C
_080426B4:
bl _0804405E
_080426B8:
cmp r0, #0x4d
bne _080426BE
b _080428E4
_080426BE:
cmp r0, #0xff
beq _080426C6
bl _0804405E
_080426C6:
ldr r0, _080426EC
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #0x11
ands r0, r1
cmp r0, #0
bne _0804278C
bl GetCurrentWeather
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
subs r0, #3
cmp r0, #0xa
bhi _0804278C
lsls r0, r0, #2
ldr r1, _080426F0
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080426EC: .4byte 0x02022C90
_080426F0: .4byte 0x080426F4
_080426F4: @ jump table
.4byte _08042720 @ case 0
.4byte _0804278C @ case 1
.4byte _08042720 @ case 2
.4byte _0804278C @ case 3
.4byte _0804278C @ case 4
.4byte _08042744 @ case 5
.4byte _0804278C @ case 6
.4byte _0804278C @ case 7
.4byte _0804278C @ case 8
.4byte _08042768 @ case 9
.4byte _08042720 @ case 10
_08042720:
ldr r2, _0804273C
ldrh r1, [r2]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _0804278C
movs r0, #5
strh r0, [r2]
ldr r1, _08042740
movs r0, #0xa
strb r0, [r1, #0x10]
mov r2, sl
strb r2, [r1, #0x17]
b _08042782
.align 2, 0
_0804273C: .4byte 0x02024070
_08042740: .4byte 0x02024118
_08042744:
ldr r3, _08042760
ldrh r1, [r3]
movs r2, #0x18
adds r0, r2, #0
ands r0, r1
cmp r0, #0
bne _0804278C
strh r2, [r3]
ldr r1, _08042764
movs r0, #0xc
strb r0, [r1, #0x10]
mov r3, sl
strb r3, [r1, #0x17]
b _08042782
.align 2, 0
_08042760: .4byte 0x02024070
_08042764: .4byte 0x02024118
_08042768:
ldr r3, _080427A8
ldrh r1, [r3]
movs r2, #0x60
adds r0, r2, #0
ands r0, r1
cmp r0, #0
bne _0804278C
strh r2, [r3]
ldr r1, _080427AC
movs r0, #0xb
strb r0, [r1, #0x10]
mov r5, sl
strb r5, [r1, #0x17]
_08042782:
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_0804278C:
mov r0, sb
cmp r0, #0
bne _08042796
bl _0804407A
_08042796:
bl GetCurrentWeather
ldr r1, _080427B0
strb r0, [r1, #5]
ldr r0, _080427B4
bl BattleScriptPushCursorAndCallback
bl _0804405E
.align 2, 0
_080427A8: .4byte 0x02024070
_080427AC: .4byte 0x02024118
_080427B0: .4byte 0x02023FD6
_080427B4: .4byte 0x0828926F
_080427B8:
ldr r2, _080427DC
ldrh r1, [r2]
movs r0, #4
ands r0, r1
cmp r0, #0
beq _080427C8
bl _0804405E
_080427C8:
movs r0, #5
strh r0, [r2]
ldr r0, _080427E0
bl BattleScriptPushCursorAndCallback
ldr r0, _080427E4
mov r1, sl
strb r1, [r0, #0x17]
bl _08044010
.align 2, 0
_080427DC: .4byte 0x02024070
_080427E0: .4byte 0x082899B8
_080427E4: .4byte 0x02024118
_080427E8:
ldr r2, _0804280C
ldrh r1, [r2]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _080427F8
bl _0804405E
_080427F8:
movs r0, #0x18
strh r0, [r2]
ldr r0, _08042810
bl BattleScriptPushCursorAndCallback
ldr r0, _08042814
mov r2, sl
strb r2, [r0, #0x17]
bl _08044010
.align 2, 0
_0804280C: .4byte 0x02024070
_08042810: .4byte 0x082899F8
_08042814: .4byte 0x02024118
_08042818:
ldr r2, _0804283C
ldrh r1, [r2]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _08042828
bl _0804405E
_08042828:
movs r0, #0x60
strh r0, [r2]
ldr r0, _08042840
bl BattleScriptPushCursorAndCallback
ldr r0, _08042844
mov r3, sl
strb r3, [r0, #0x17]
bl _08044010
.align 2, 0
_0804283C: .4byte 0x02024070
_08042840: .4byte 0x08289AB2
_08042844: .4byte 0x02024118
_08042848:
ldr r0, _08042874
mov r5, sl
lsls r2, r5, #2
adds r1, r2, r5
lsls r1, r1, #2
adds r3, r1, r0
ldrb r0, [r3]
lsls r0, r0, #0x1c
cmp r0, #0
bge _08042860
bl _0804405E
_08042860:
ldr r1, _08042878
adds r1, r2, r1
ldr r0, [r1]
movs r2, #0x80
lsls r2, r2, #0xc
orrs r0, r2
str r0, [r1]
ldrb r0, [r3]
movs r1, #8
b _080428D2
.align 2, 0
_08042874: .4byte 0x02024020
_08042878: .4byte 0x02023F50
_0804287C:
mov r0, sl
bl CastformDataTypeChange
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
cmp r0, #0
bne _08042890
bl _0804407A
_08042890:
ldr r0, _080428A0
bl BattleScriptPushCursorAndCallback
ldr r0, _080428A4
mov r1, sl
strb r1, [r0, #0x17]
bl _08043F22
.align 2, 0
_080428A0: .4byte 0x08289A31
_080428A4: .4byte 0x02024118
_080428A8:
ldr r0, _080428DC
mov r3, sl
lsls r2, r3, #2
adds r1, r2, r3
lsls r1, r1, #2
adds r3, r1, r0
ldrb r0, [r3]
lsls r0, r0, #0x1b
cmp r0, #0
bge _080428C0
bl _0804405E
_080428C0:
ldr r1, _080428E0
adds r1, r2, r1
ldr r0, [r1]
movs r2, #0x80
lsls r2, r2, #0xd
orrs r0, r2
str r0, [r1]
ldrb r0, [r3]
movs r1, #0x10
_080428D2:
orrs r0, r1
strb r0, [r3]
bl _0804405E
.align 2, 0
_080428DC: .4byte 0x02024020
_080428E0: .4byte 0x02023F50
_080428E4:
movs r6, #0
ldrb r5, [r5]
cmp r6, r5
blo _080428F0
bl _0804405E
_080428F0:
adds r0, r6, #0
bl CastformDataTypeChange
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
cmp r0, #0
beq _08042904
bl sub_08043F18
_08042904:
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldr r0, _08042918
ldrb r0, [r0]
cmp r6, r0
blo _080428F0
bl _0804405E
.align 2, 0
_08042918: .4byte 0x02023D10
_0804291C:
ldr r5, _0804294C
mov r8, r5
movs r0, #0x58
mov r6, sl
muls r6, r0, r6
adds r4, r6, r5
ldrh r0, [r4, #0x28]
cmp r0, #0
bne _08042932
bl _0804405E
_08042932:
ldr r0, _08042950
mov r1, sl
strb r1, [r0]
ldrb r5, [r7]
cmp r5, #0x2c
beq _08042962
cmp r5, #0x2c
bgt _08042954
cmp r5, #3
bne _08042948
b _08042AC4
_08042948:
bl _0804405E
.align 2, 0
_0804294C: .4byte 0x02023D28
_08042950: .4byte 0x02023EAF
_08042954:
cmp r5, #0x36
bne _0804295A
b _08042B10
_0804295A:
cmp r5, #0x3d
beq _080429E0
bl _0804405E
_08042962:
movs r0, #0
str r0, [sp]
movs r0, #0x13
movs r1, #0
movs r2, #0xd
movs r3, #0
bl AbilityBattleEffects
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
beq _0804297E
bl _0804405E
_0804297E:
str r0, [sp]
movs r0, #0x13
movs r1, #0
movs r2, #0x4d
movs r3, #0
bl AbilityBattleEffects
lsls r0, r0, #0x18
cmp r0, #0
beq _08042996
bl _0804405E
_08042996:
ldr r0, _080429D4
ldrh r1, [r0]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _080429A6
bl _0804405E
_080429A6:
ldrh r0, [r4, #0x2c]
ldrh r2, [r4, #0x28]
cmp r0, r2
bhi _080429B2
bl _0804405E
_080429B2:
strb r5, [r7]
ldr r0, _080429D8
bl BattleScriptPushCursorAndCallback
ldr r1, _080429DC
ldrh r0, [r4, #0x2c]
lsrs r0, r0, #4
str r0, [r1]
cmp r0, #0
bne _080429CA
movs r0, #1
str r0, [r1]
_080429CA:
ldr r0, [r1]
rsbs r0, r0, #0
str r0, [r1]
bl _08044010
.align 2, 0
_080429D4: .4byte 0x02024070
_080429D8: .4byte 0x082899E4
_080429DC: .4byte 0x02023E94
_080429E0:
mov r0, r8
adds r0, #0x4c
adds r5, r6, r0
ldrb r0, [r5]
cmp r0, #0
bne _080429F0
bl _0804405E
_080429F0:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #3
bl __umodsi3
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
cmp r4, #0
beq _08042A0A
bl _0804405E
_08042A0A:
ldr r0, [r5]
movs r1, #0x88
ands r0, r1
cmp r0, #0
beq _08042A1C
ldr r0, _08042A9C
ldr r1, _08042AA0
bl StringCopy
_08042A1C:
ldr r0, [r5]
movs r1, #7
ands r0, r1
cmp r0, #0
beq _08042A2E
ldr r0, _08042A9C
ldr r1, _08042AA4
bl StringCopy
_08042A2E:
ldr r0, [r5]
movs r1, #0x40
ands r0, r1
cmp r0, #0
beq _08042A40
ldr r0, _08042A9C
ldr r1, _08042AA8
bl StringCopy
_08042A40:
ldr r0, [r5]
movs r1, #0x10
ands r0, r1
cmp r0, #0
beq _08042A52
ldr r0, _08042A9C
ldr r1, _08042AAC
bl StringCopy
_08042A52:
ldr r0, [r5]
movs r1, #0x20
ands r0, r1
cmp r0, #0
beq _08042A64
ldr r0, _08042A9C
ldr r1, _08042AB0
bl StringCopy
_08042A64:
str r4, [r5]
mov r1, r8
adds r1, #0x50
adds r1, r6, r1
ldr r0, [r1]
ldr r2, _08042AB4
ands r0, r2
str r0, [r1]
ldr r0, _08042AB8
ldr r4, _08042ABC
mov r3, sl
strb r3, [r4]
strb r3, [r0, #0x17]
ldr r0, _08042AC0
bl BattleScriptPushCursorAndCallback
str r5, [sp]
movs r0, #0
movs r1, #0x28
movs r2, #0
movs r3, #4
bl BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
bl _08044010
.align 2, 0
_08042A9C: .4byte 0x02022C0C
_08042AA0: .4byte 0x085ABC54
_08042AA4: .4byte 0x085ABC50
_08042AA8: .4byte 0x085ABC5B
_08042AAC: .4byte 0x085ABC57
_08042AB0: .4byte 0x085ABC5E
_08042AB4: .4byte 0xF7FFFFFF
_08042AB8: .4byte 0x02024118
_08042ABC: .4byte 0x02023D08
_08042AC0: .4byte 0x08289A0C
_08042AC4:
ldrb r2, [r4, #0x1b]
movs r0, #0x1b
ldrsb r0, [r4, r0]
cmp r0, #0xb
ble _08042AD2
bl _0804405E
_08042AD2:
ldr r0, _08042B04
mov r5, sl
lsls r1, r5, #3
subs r1, r1, r5
lsls r1, r1, #2
adds r1, r1, r0
ldrb r0, [r1, #0x16]
cmp r0, #2
bne _08042AE8
bl _0804405E
_08042AE8:
adds r0, r2, #1
movs r1, #0
strb r0, [r4, #0x1b]
ldr r4, _08042B08
movs r0, #0x11
strb r0, [r4, #0x10]
strb r1, [r4, #0x11]
ldr r0, _08042B0C
bl BattleScriptPushCursorAndCallback
strb r5, [r4, #0x17]
bl _08044010
.align 2, 0
_08042B04: .4byte 0x02023F60
_08042B08: .4byte 0x02024118
_08042B0C: .4byte 0x082899CC
_08042B10:
ldr r2, _08042B34
ldrb r0, [r0]
lsls r1, r0, #3
subs r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
ldrb r3, [r1, #0x18]
lsls r0, r3, #0x1f
lsrs r0, r0, #0x1f
movs r2, #1
eors r2, r0
movs r0, #2
rsbs r0, r0, #0
ands r0, r3
orrs r0, r2
strb r0, [r1, #0x18]
bl _0804405E
.align 2, 0
_08042B34: .4byte 0x02023F60
_08042B38:
ldrb r0, [r7]
cmp r0, #0x2b
beq _08042B42
bl _0804405E
_08042B42:
movs r4, #0
ldr r0, _08042BB0
ldrh r2, [r0]
ldr r3, _08042BB4
adds r1, r0, #0
cmp r2, r3
bne _08042B54
bl _0804405E
_08042B54:
cmp r2, r5
beq _08042B6C
adds r2, r1, #0
_08042B5A:
adds r2, #2
adds r4, #1
ldrh r0, [r2]
cmp r0, r3
bne _08042B68
bl _0804405E
_08042B68:
cmp r0, r5
bne _08042B5A
_08042B6C:
lsls r0, r4, #1
adds r0, r0, r1
ldrh r1, [r0]
ldr r0, _08042BB4
cmp r1, r0
bne _08042B7C
bl _0804405E
_08042B7C:
ldr r1, _08042BB8
ldr r0, _08042BBC
ldrb r2, [r0]
movs r0, #0x58
muls r0, r2, r0
adds r1, #0x50
adds r0, r0, r1
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #5
ands r0, r1
cmp r0, #0
beq _08042BA2
ldr r0, _08042BC0
ldr r1, [r0]
movs r2, #0x80
lsls r2, r2, #4
orrs r1, r2
str r1, [r0]
_08042BA2:
ldr r1, _08042BC4
ldr r0, _08042BC8
str r0, [r1]
movs r0, #1
mov sb, r0
bl _08044064
.align 2, 0
_08042BB0: .4byte 0x082EC67C
_08042BB4: .4byte 0x0000FFFF
_08042BB8: .4byte 0x02023D28
_08042BBC: .4byte 0x02023EAF
_08042BC0: .4byte 0x02023F24
_08042BC4: .4byte 0x02023EB8
_08042BC8: .4byte 0x08289BA7
_08042BCC:
cmp r5, #0
bne _08042BD4
bl _0804405E
_08042BD4:
ldrb r0, [r7]
cmp r0, #0xb
beq _08042C44
cmp r0, #0xb
bgt _08042BE4
cmp r0, #0xa
beq _08042BEA
b _08042D66
_08042BE4:
cmp r0, #0x12
beq _08042C9C
b _08042D66
_08042BEA:
cmp r3, #0xd
beq _08042BF0
b _08042D66
_08042BF0:
ldr r0, _08042C1C
lsls r1, r5, #1
adds r1, r1, r5
lsls r1, r1, #2
adds r1, r1, r0
ldrb r0, [r1, #1]
cmp r0, #0
bne _08042C02
b _08042D66
_08042C02:
ldr r1, _08042C20
ldr r0, _08042C24
ldrb r0, [r0]
lsls r0, r0, #4
adds r0, r0, r1
ldrb r0, [r0, #2]
lsls r0, r0, #0x1c
cmp r0, #0
bge _08042C30
ldr r1, _08042C28
ldr r0, _08042C2C
b _08042C34
.align 2, 0
_08042C1C: .4byte 0x082ED220
_08042C20: .4byte 0x02023FE0
_08042C24: .4byte 0x02023EAF
_08042C28: .4byte 0x02023EB8
_08042C2C: .4byte 0x08289AF7
_08042C30:
ldr r1, _08042C3C
ldr r0, _08042C40
_08042C34:
str r0, [r1]
movs r1, #1
b _08042D64
.align 2, 0
_08042C3C: .4byte 0x02023EB8
_08042C40: .4byte 0x08289AF6
_08042C44:
cmp r3, #0xb
beq _08042C4A
b _08042D66
_08042C4A:
ldr r0, _08042C74
lsls r1, r5, #1
adds r1, r1, r5
lsls r1, r1, #2
adds r1, r1, r0
ldrb r0, [r1, #1]
cmp r0, #0
bne _08042C5C
b _08042D66
_08042C5C:
ldr r1, _08042C78
ldr r0, _08042C7C
ldrb r0, [r0]
lsls r0, r0, #4
adds r0, r0, r1
ldrb r0, [r0, #2]
lsls r0, r0, #0x1c
cmp r0, #0
bge _08042C88
ldr r1, _08042C80
ldr r0, _08042C84
b _08042C8C
.align 2, 0
_08042C74: .4byte 0x082ED220
_08042C78: .4byte 0x02023FE0
_08042C7C: .4byte 0x02023EAF
_08042C80: .4byte 0x02023EB8
_08042C84: .4byte 0x08289AF7
_08042C88:
ldr r1, _08042C94
ldr r0, _08042C98
_08042C8C:
str r0, [r1]
movs r2, #1
mov sb, r2
b _08042D66
.align 2, 0
_08042C94: .4byte 0x02023EB8
_08042C98: .4byte 0x08289AF6
_08042C9C:
cmp r3, #0xa
bne _08042D66
ldr r1, _08042CEC
movs r0, #0x58
mov r3, sl
muls r3, r0, r3
adds r0, r3, #0
adds r1, #0x4c
adds r0, r0, r1
ldr r0, [r0]
movs r1, #0x20
ands r0, r1
cmp r0, #0
bne _08042D66
ldr r2, _08042CF0
ldr r0, [r2]
ldr r0, [r0, #4]
mov r5, sl
lsls r1, r5, #2
adds r0, r0, r1
ldr r3, [r0]
movs r4, #1
ands r3, r4
adds r5, r1, #0
cmp r3, #0
bne _08042D2C
ldr r0, _08042CF4
strb r3, [r0, #5]
ldr r1, _08042CF8
ldr r0, _08042CFC
ldrb r0, [r0]
lsls r0, r0, #4
adds r0, r0, r1
ldrb r0, [r0, #2]
lsls r0, r0, #0x1c
cmp r0, #0
bge _08042D08
ldr r1, _08042D00
ldr r0, _08042D04
b _08042D0C
.align 2, 0
_08042CEC: .4byte 0x02023D28
_08042CF0: .4byte 0x0202414C
_08042CF4: .4byte 0x02023FD6
_08042CF8: .4byte 0x02023FE0
_08042CFC: .4byte 0x02023EAF
_08042D00: .4byte 0x02023EB8
_08042D04: .4byte 0x08289B30
_08042D08:
ldr r1, _08042D24
ldr r0, _08042D28
_08042D0C:
str r0, [r1]
ldr r0, [r2]
ldr r1, [r0, #4]
adds r1, r1, r5
ldr r0, [r1]
movs r2, #1
orrs r0, r2
str r0, [r1]
movs r0, #2
mov sb, r0
b _08042D66
.align 2, 0
_08042D24: .4byte 0x02023EB8
_08042D28: .4byte 0x08289B2F
_08042D2C:
ldr r0, _08042D48
strb r4, [r0, #5]
ldr r1, _08042D4C
ldr r0, _08042D50
ldrb r0, [r0]
lsls r0, r0, #4
adds r0, r0, r1
ldrb r0, [r0, #2]
lsls r0, r0, #0x1c
cmp r0, #0
bge _08042D5C
ldr r1, _08042D54
ldr r0, _08042D58
b _08042D60
.align 2, 0
_08042D48: .4byte 0x02023FD6
_08042D4C: .4byte 0x02023FE0
_08042D50: .4byte 0x02023EAF
_08042D54: .4byte 0x02023EB8
_08042D58: .4byte 0x08289B30
_08042D5C:
ldr r1, _08042DA0
ldr r0, _08042DA4
_08042D60:
str r0, [r1]
movs r1, #2
_08042D64:
mov sb, r1
_08042D66:
mov r2, sb
cmp r2, #1
beq _08042D70
bl _0804405E
_08042D70:
ldr r1, _08042DA8
movs r0, #0x58
mov r3, sl
muls r3, r0, r3
adds r0, r3, #0
adds r1, r0, r1
ldrh r0, [r1, #0x2c]
ldrh r5, [r1, #0x28]
cmp r0, r5
bne _08042DCC
ldr r1, _08042DAC
ldr r0, _08042DB0
ldrb r0, [r0]
lsls r0, r0, #4
adds r0, r0, r1
ldrb r0, [r0, #2]
lsls r0, r0, #0x1c
cmp r0, #0
bge _08042DB8
ldr r1, _08042DA0
ldr r0, _08042DB4
str r0, [r1]
bl _0804405E
.align 2, 0
_08042DA0: .4byte 0x02023EB8
_08042DA4: .4byte 0x08289B2F
_08042DA8: .4byte 0x02023D28
_08042DAC: .4byte 0x02023FE0
_08042DB0: .4byte 0x02023EAF
_08042DB4: .4byte 0x08289B1A
_08042DB8:
ldr r1, _08042DC4
ldr r0, _08042DC8
str r0, [r1]
bl _0804405E
.align 2, 0
_08042DC4: .4byte 0x02023EB8
_08042DC8: .4byte 0x08289B19
_08042DCC:
ldr r2, _08042DE8
ldrh r0, [r1, #0x2c]
lsrs r0, r0, #2
str r0, [r2]
cmp r0, #0
bne _08042DDC
mov r0, sb
str r0, [r2]
_08042DDC:
ldr r0, [r2]
rsbs r0, r0, #0
str r0, [r2]
bl _0804405E
.align 2, 0
_08042DE8: .4byte 0x02023E94
_08042DEC:
ldrb r0, [r7]
subs r0, #9
cmp r0, #0x2f
bls _08042DF8
bl _0804405E
_08042DF8:
lsls r0, r0, #2
ldr r1, _08042E04
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08042E04: .4byte 0x08042E08
_08042E08: @ jump table
.4byte _08043224 @ case 0
.4byte _0804405E @ case 1
.4byte _0804405E @ case 2
.4byte _0804405E @ case 3
.4byte _0804405E @ case 4
.4byte _0804405E @ case 5
.4byte _0804405E @ case 6
.4byte _08042EC8 @ case 7
.4byte _0804405E @ case 8
.4byte _0804405E @ case 9
.4byte _0804405E @ case 10
.4byte _0804405E @ case 11
.4byte _0804405E @ case 12
.4byte _0804405E @ case 13
.4byte _0804405E @ case 14
.4byte _08042F90 @ case 15
.4byte _0804405E @ case 16
.4byte _0804405E @ case 17
.4byte _08043050 @ case 18
.4byte _0804405E @ case 19
.4byte _0804405E @ case 20
.4byte _0804405E @ case 21
.4byte _0804405E @ case 22
.4byte _0804405E @ case 23
.4byte _0804405E @ case 24
.4byte _0804405E @ case 25
.4byte _0804405E @ case 26
.4byte _0804405E @ case 27
.4byte _0804405E @ case 28
.4byte _08043148 @ case 29
.4byte _0804405E @ case 30
.4byte _0804405E @ case 31
.4byte _0804405E @ case 32
.4byte _0804405E @ case 33
.4byte _0804405E @ case 34
.4byte _0804405E @ case 35
.4byte _0804405E @ case 36
.4byte _0804405E @ case 37
.4byte _0804405E @ case 38
.4byte _0804405E @ case 39
.4byte _08043300 @ case 40
.4byte _0804405E @ case 41
.4byte _0804405E @ case 42
.4byte _0804405E @ case 43
.4byte _0804405E @ case 44
.4byte _0804405E @ case 45
.4byte _0804405E @ case 46
.4byte _080433DC @ case 47
_08042EC8:
ldr r0, _08042F70
ldrb r1, [r0]
movs r0, #0x29
ands r0, r1
cmp r0, #0
beq _08042ED8
bl _0804405E
_08042ED8:
cmp r5, #0xa5
bne _08042EE0
bl _0804405E
_08042EE0:
ldr r0, _08042F74
lsls r1, r5, #1
adds r1, r1, r5
lsls r1, r1, #2
adds r1, r1, r0
ldrb r0, [r1, #1]
cmp r0, #0
bne _08042EF4
bl _0804405E
_08042EF4:
ldr r2, _08042F78
ldr r0, _08042F7C
ldrb r1, [r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r1, r0, #2
adds r0, r2, #0
adds r0, #8
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _08042F1C
adds r0, r2, #0
adds r0, #0xc
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _08042F1C
bl _0804405E
_08042F1C:
ldr r1, _08042F80
movs r0, #0x58
mov r2, sl
muls r2, r0, r2
adds r0, r2, #0
adds r1, r0, r1
adds r4, r1, #0
adds r4, #0x21
ldrb r0, [r4]
cmp r0, r3
bne _08042F36
bl _0804405E
_08042F36:
adds r2, r1, #0
adds r2, #0x22
ldrb r0, [r2]
cmp r0, r3
bne _08042F44
bl _0804405E
_08042F44:
ldrh r0, [r1, #0x28]
cmp r0, #0
bne _08042F4E
bl _0804405E
_08042F4E:
strb r3, [r4]
strb r3, [r2]
ldr r1, _08042F84
movs r0, #0xfd
strb r0, [r1]
movs r0, #3
strb r0, [r1, #1]
strb r3, [r1, #2]
movs r0, #0xff
strb r0, [r1, #3]
bl BattleScriptPushCursor
ldr r1, _08042F88
ldr r0, _08042F8C
str r0, [r1]
bl _08044010
.align 2, 0
_08042F70: .4byte 0x02023F20
_08042F74: .4byte 0x082ED220
_08042F78: .4byte 0x02024020
_08042F7C: .4byte 0x02023EB0
_08042F80: .4byte 0x02023D28
_08042F84: .4byte 0x02022C0C
_08042F88: .4byte 0x02023EB8
_08042F8C: .4byte 0x08289BD5
_08042F90:
ldr r0, _08043028
ldrb r1, [r0]
movs r0, #0x29
ands r0, r1
cmp r0, #0
beq _08042FA0
bl _0804405E
_08042FA0:
ldr r1, _0804302C
ldr r0, _08043030
ldrb r2, [r0]
movs r0, #0x58
muls r0, r2, r0
adds r3, r0, r1
ldrh r0, [r3, #0x28]
cmp r0, #0
bne _08042FB6
bl _0804405E
_08042FB6:
ldr r0, _08043034
lsls r1, r2, #4
adds r1, r1, r0
ldrb r0, [r1, #1]
lsls r0, r0, #0x1f
cmp r0, #0
beq _08042FC8
bl _0804405E
_08042FC8:
ldr r2, _08043038
ldr r0, _0804303C
ldrb r1, [r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r1, r0, #2
adds r0, r2, #0
adds r0, #8
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _08042FF0
adds r0, r2, #0
adds r0, #0xc
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _08042FF0
bl _0804405E
_08042FF0:
ldr r1, _08043040
lsls r0, r5, #1
adds r0, r0, r5
lsls r0, r0, #2
adds r0, r0, r1
ldrb r1, [r0, #8]
movs r2, #1
adds r0, r2, #0
ands r0, r1
cmp r0, #0
bne _0804300A
bl _0804405E
_0804300A:
ldr r1, _08043044
ldrh r0, [r3, #0x2c]
lsrs r0, r0, #4
str r0, [r1]
cmp r0, #0
bne _08043018
str r2, [r1]
_08043018:
bl BattleScriptPushCursor
ldr r1, _08043048
ldr r0, _0804304C
str r0, [r1]
bl _08044010
.align 2, 0
_08043028: .4byte 0x02023F20
_0804302C: .4byte 0x02023D28
_08043030: .4byte 0x02023EAF
_08043034: .4byte 0x02023FE0
_08043038: .4byte 0x02024020
_0804303C: .4byte 0x02023EB0
_08043040: .4byte 0x082ED220
_08043044: .4byte 0x02023E94
_08043048: .4byte 0x02023EB8
_0804304C: .4byte 0x08289BDC
_08043050:
ldr r0, _0804311C
ldrb r1, [r0]
movs r0, #0x29
ands r0, r1
cmp r0, #0
beq _08043060
bl _0804405E
_08043060:
ldr r1, _08043120
ldr r0, _08043124
ldrb r2, [r0]
movs r0, #0x58
muls r0, r2, r0
adds r0, r0, r1
ldrh r0, [r0, #0x28]
cmp r0, #0
bne _08043076
bl _0804405E
_08043076:
ldr r0, _08043128
lsls r1, r2, #4
adds r1, r1, r0
ldrb r0, [r1, #1]
lsls r0, r0, #0x1f
cmp r0, #0
beq _08043088
bl _0804405E
_08043088:
ldr r2, _0804312C
ldr r0, _08043130
ldrb r1, [r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r1, r0, #2
adds r0, r2, #0
adds r0, #8
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _080430B0
adds r0, r2, #0
adds r0, #0xc
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _080430B0
bl _0804405E
_080430B0:
ldr r1, _08043134
lsls r0, r5, #1
adds r0, r0, r5
lsls r0, r0, #2
adds r0, r0, r1
ldrb r1, [r0, #8]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _080430C8
bl _0804405E
_080430C8:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #0xa
bl __umodsi3
lsls r0, r0, #0x10
cmp r0, #0
beq _080430E0
bl _0804405E
_080430E0:
ldr r5, _08043138
movs r4, #3
_080430E4:
bl Random
ands r0, r4
strb r0, [r5, #3]
cmp r0, #0
beq _080430E4
ldr r1, _08043138
ldrb r0, [r1, #3]
cmp r0, #3
bne _080430FC
adds r0, #2
strb r0, [r1, #3]
_080430FC:
ldrb r0, [r1, #3]
adds r0, #0x40
strb r0, [r1, #3]
bl BattleScriptPushCursor
ldr r1, _0804313C
ldr r0, _08043140
str r0, [r1]
ldr r2, _08043144
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #6
orrs r0, r1
str r0, [r2]
bl _08044010
.align 2, 0
_0804311C: .4byte 0x02023F20
_08043120: .4byte 0x02023D28
_08043124: .4byte 0x02023EAF
_08043128: .4byte 0x02023FE0
_0804312C: .4byte 0x02024020
_08043130: .4byte 0x02023EB0
_08043134: .4byte 0x082ED220
_08043138: .4byte 0x02023FD6
_0804313C: .4byte 0x02023EB8
_08043140: .4byte 0x08289C04
_08043144: .4byte 0x02023F24
_08043148:
ldr r0, _080431F8
ldrb r1, [r0]
movs r0, #0x29
ands r0, r1
cmp r0, #0
beq _08043158
bl _0804405E
_08043158:
ldr r1, _080431FC
ldr r0, _08043200
ldrb r2, [r0]
movs r0, #0x58
muls r0, r2, r0
adds r0, r0, r1
ldrh r0, [r0, #0x28]
cmp r0, #0
bne _0804316E
bl _0804405E
_0804316E:
ldr r0, _08043204
lsls r1, r2, #4
adds r1, r1, r0
ldrb r0, [r1, #1]
lsls r0, r0, #0x1f
cmp r0, #0
beq _08043180
bl _0804405E
_08043180:
ldr r2, _08043208
ldr r0, _0804320C
ldrb r1, [r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r1, r0, #2
adds r0, r2, #0
adds r0, #8
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _080431A8
adds r0, r2, #0
adds r0, #0xc
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _080431A8
bl _0804405E
_080431A8:
ldr r1, _08043210
lsls r0, r5, #1
adds r0, r0, r5
lsls r0, r0, #2
adds r0, r0, r1
ldrb r1, [r0, #8]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _080431C0
bl _0804405E
_080431C0:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #3
bl __umodsi3
lsls r0, r0, #0x10
cmp r0, #0
beq _080431D8
bl _0804405E
_080431D8:
ldr r1, _08043214
movs r0, #0x42
strb r0, [r1, #3]
bl BattleScriptPushCursor
ldr r1, _08043218
ldr r0, _0804321C
str r0, [r1]
ldr r2, _08043220
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #6
orrs r0, r1
str r0, [r2]
bl _08044010
.align 2, 0
_080431F8: .4byte 0x02023F20
_080431FC: .4byte 0x02023D28
_08043200: .4byte 0x02023EAF
_08043204: .4byte 0x02023FE0
_08043208: .4byte 0x02024020
_0804320C: .4byte 0x02023EB0
_08043210: .4byte 0x082ED220
_08043214: .4byte 0x02023FD6
_08043218: .4byte 0x02023EB8
_0804321C: .4byte 0x08289C04
_08043220: .4byte 0x02023F24
_08043224:
ldr r0, _080432D4
ldrb r1, [r0]
movs r0, #0x29
ands r0, r1
cmp r0, #0
beq _08043234
bl _0804405E
_08043234:
ldr r1, _080432D8
ldr r0, _080432DC
ldrb r2, [r0]
movs r0, #0x58
muls r0, r2, r0
adds r0, r0, r1
ldrh r0, [r0, #0x28]
cmp r0, #0
bne _0804324A
bl _0804405E
_0804324A:
ldr r0, _080432E0
lsls r1, r2, #4
adds r1, r1, r0
ldrb r0, [r1, #1]
lsls r0, r0, #0x1f
cmp r0, #0
beq _0804325C
bl _0804405E
_0804325C:
ldr r2, _080432E4
ldr r0, _080432E8
ldrb r1, [r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r1, r0, #2
adds r0, r2, #0
adds r0, #8
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _08043284
adds r0, r2, #0
adds r0, #0xc
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _08043284
bl _0804405E
_08043284:
ldr r1, _080432EC
lsls r0, r5, #1
adds r0, r0, r5
lsls r0, r0, #2
adds r0, r0, r1
ldrb r1, [r0, #8]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _0804329C
bl _0804405E
_0804329C:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #3
bl __umodsi3
lsls r0, r0, #0x10
cmp r0, #0
beq _080432B4
bl _0804405E
_080432B4:
ldr r1, _080432F0
movs r0, #0x45
strb r0, [r1, #3]
bl BattleScriptPushCursor
ldr r1, _080432F4
ldr r0, _080432F8
str r0, [r1]
ldr r2, _080432FC
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #6
orrs r0, r1
str r0, [r2]
bl _08044010
.align 2, 0
_080432D4: .4byte 0x02023F20
_080432D8: .4byte 0x02023D28
_080432DC: .4byte 0x02023EAF
_080432E0: .4byte 0x02023FE0
_080432E4: .4byte 0x02024020
_080432E8: .4byte 0x02023EB0
_080432EC: .4byte 0x082ED220
_080432F0: .4byte 0x02023FD6
_080432F4: .4byte 0x02023EB8
_080432F8: .4byte 0x08289C04
_080432FC: .4byte 0x02023F24
_08043300:
ldr r0, _080433B0
ldrb r1, [r0]
movs r0, #0x29
ands r0, r1
cmp r0, #0
beq _08043310
bl _0804405E
_08043310:
ldr r1, _080433B4
ldr r0, _080433B8
ldrb r2, [r0]
movs r0, #0x58
muls r0, r2, r0
adds r0, r0, r1
ldrh r0, [r0, #0x28]
cmp r0, #0
bne _08043326
bl _0804405E
_08043326:
ldr r0, _080433BC
lsls r1, r2, #4
adds r1, r1, r0
ldrb r0, [r1, #1]
lsls r0, r0, #0x1f
cmp r0, #0
beq _08043338
bl _0804405E
_08043338:
ldr r1, _080433C0
lsls r0, r5, #1
adds r0, r0, r5
lsls r0, r0, #2
adds r0, r0, r1
ldrb r1, [r0, #8]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _08043350
bl _0804405E
_08043350:
ldr r2, _080433C4
ldr r0, _080433C8
ldrb r1, [r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r1, r0, #2
adds r0, r2, #0
adds r0, #8
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _08043378
adds r0, r2, #0
adds r0, #0xc
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _08043378
bl _0804405E
_08043378:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #3
bl __umodsi3
lsls r0, r0, #0x10
cmp r0, #0
beq _08043390
bl _0804405E
_08043390:
ldr r1, _080433CC
movs r0, #0x43
strb r0, [r1, #3]
bl BattleScriptPushCursor
ldr r1, _080433D0
ldr r0, _080433D4
str r0, [r1]
ldr r2, _080433D8
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #6
orrs r0, r1
str r0, [r2]
bl _08044010
.align 2, 0
_080433B0: .4byte 0x02023F20
_080433B4: .4byte 0x02023D28
_080433B8: .4byte 0x02023EAF
_080433BC: .4byte 0x02023FE0
_080433C0: .4byte 0x082ED220
_080433C4: .4byte 0x02024020
_080433C8: .4byte 0x02023EB0
_080433CC: .4byte 0x02023FD6
_080433D0: .4byte 0x02023EB8
_080433D4: .4byte 0x08289C04
_080433D8: .4byte 0x02023F24
_080433DC:
ldr r0, _08043520
ldrb r1, [r0]
movs r0, #0x29
ands r0, r1
cmp r0, #0
beq _080433EC
bl _0804405E
_080433EC:
ldr r6, _08043524
ldr r3, _08043528
mov r8, r3
ldrb r1, [r3]
movs r7, #0x58
adds r0, r1, #0
muls r0, r7, r0
adds r0, r0, r6
ldrh r0, [r0, #0x28]
cmp r0, #0
bne _08043406
bl _0804405E
_08043406:
ldr r0, _0804352C
lsls r1, r1, #4
adds r1, r1, r0
ldrb r0, [r1, #1]
lsls r0, r0, #0x1f
cmp r0, #0
beq _08043418
bl _0804405E
_08043418:
ldr r1, _08043530
lsls r0, r5, #1
adds r0, r0, r5
lsls r0, r0, #2
adds r0, r0, r1
ldrb r1, [r0, #8]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _08043430
bl _0804405E
_08043430:
ldr r3, _08043534
ldr r5, _08043538
ldrb r1, [r5]
lsls r0, r1, #2
adds r0, r0, r1
lsls r2, r0, #2
adds r0, r3, #0
adds r0, #8
adds r0, r2, r0
ldr r0, [r0]
cmp r0, #0
bne _08043458
adds r0, r3, #0
adds r0, #0xc
adds r0, r2, r0
ldr r0, [r0]
cmp r0, #0
bne _08043458
bl _0804405E
_08043458:
adds r0, r1, #0
muls r0, r7, r0
adds r0, r0, r6
ldrh r0, [r0, #0x28]
cmp r0, #0
bne _08043468
bl _0804405E
_08043468:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #3
bl __umodsi3
lsls r0, r0, #0x10
cmp r0, #0
beq _08043480
bl _0804405E
_08043480:
mov r1, r8
ldrb r0, [r1]
muls r0, r7, r0
adds r0, r0, r6
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #0xc
bne _08043494
bl _0804405E
_08043494:
ldr r0, [sp, #8]
ldr r1, [sp, #0x10]
bl GetGenderFromSpeciesAndPersonality
adds r4, r0, #0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x14]
bl GetGenderFromSpeciesAndPersonality
lsls r4, r4, #0x18
lsls r0, r0, #0x18
cmp r4, r0
bne _080434B2
bl _0804405E
_080434B2:
mov r2, r8
ldrb r0, [r2]
muls r0, r7, r0
adds r4, r6, #0
adds r4, #0x50
adds r0, r0, r4
ldr r0, [r0]
movs r1, #0xf0
lsls r1, r1, #0xc
ands r0, r1
cmp r0, #0
beq _080434CE
bl _0804405E
_080434CE:
ldr r0, [sp, #8]
ldr r1, [sp, #0x10]
bl GetGenderFromSpeciesAndPersonality
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
bne _080434E2
bl _0804405E
_080434E2:
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x14]
bl GetGenderFromSpeciesAndPersonality
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
bne _080434F6
bl _0804405E
_080434F6:
mov r3, r8
ldrb r0, [r3]
adds r2, r0, #0
muls r2, r7, r2
adds r2, r2, r4
ldr r1, _0804353C
ldrb r0, [r5]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
lsls r1, r1, #0x10
ldr r0, [r2]
orrs r0, r1
str r0, [r2]
bl BattleScriptPushCursor
ldr r1, _08043540
ldr r0, _08043544
str r0, [r1]
bl _08044010
.align 2, 0
_08043520: .4byte 0x02023F20
_08043524: .4byte 0x02023D28
_08043528: .4byte 0x02023EAF
_0804352C: .4byte 0x02023FE0
_08043530: .4byte 0x082ED220
_08043534: .4byte 0x02024020
_08043538: .4byte 0x02023EB0
_0804353C: .4byte 0x082FACB4
_08043540: .4byte 0x02023EB8
_08043544: .4byte 0x08289BF7
_08043548:
movs r5, #0
mov sl, r5
ldr r0, _0804357C
ldrb r0, [r0]
cmp sl, r0
blo _08043558
bl _0804405E
_08043558:
ldr r1, _08043580
movs r0, #0x58
mov r2, sl
muls r2, r0, r2
adds r0, r2, #0
adds r0, r0, r1
adds r0, #0x20
ldrb r0, [r0]
subs r0, #7
adds r2, r1, #0
cmp r0, #0x41
bls _08043572
b _080437D6
_08043572:
lsls r0, r0, #2
ldr r1, _08043584
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0804357C: .4byte 0x02023D10
_08043580: .4byte 0x02023D28
_08043584: .4byte 0x08043588
_08043588: @ jump table
.4byte _080436EC @ case 0
.4byte _080437D6 @ case 1
.4byte _080437D6 @ case 2
.4byte _080437D6 @ case 3
.4byte _080437D6 @ case 4
.4byte _080437B0 @ case 5
.4byte _080437D6 @ case 6
.4byte _080437D6 @ case 7
.4byte _08043714 @ case 8
.4byte _080437D6 @ case 9
.4byte _08043690 @ case 10
.4byte _080437D6 @ case 11
.4byte _080437D6 @ case 12
.4byte _080436BC @ case 13
.4byte _080437D6 @ case 14
.4byte _080437D6 @ case 15
.4byte _080437D6 @ case 16
.4byte _080437D6 @ case 17
.4byte _080437D6 @ case 18
.4byte _080437D6 @ case 19
.4byte _080437D6 @ case 20
.4byte _080437D6 @ case 21
.4byte _080437D6 @ case 22
.4byte _080437D6 @ case 23
.4byte _080437D6 @ case 24
.4byte _080437D6 @ case 25
.4byte _080437D6 @ case 26
.4byte _080437D6 @ case 27
.4byte _080437D6 @ case 28
.4byte _080437D6 @ case 29
.4byte _080437D6 @ case 30
.4byte _080437D6 @ case 31
.4byte _080437D6 @ case 32
.4byte _08043780 @ case 33
.4byte _08043750 @ case 34
.4byte _080437D6 @ case 35
.4byte _080437D6 @ case 36
.4byte _080437D6 @ case 37
.4byte _080437D6 @ case 38
.4byte _080437D6 @ case 39
.4byte _080437D6 @ case 40
.4byte _080437D6 @ case 41
.4byte _080437D6 @ case 42
.4byte _080437D6 @ case 43
.4byte _080437D6 @ case 44
.4byte _080437D6 @ case 45
.4byte _080437D6 @ case 46
.4byte _080437D6 @ case 47
.4byte _080437D6 @ case 48
.4byte _080437D6 @ case 49
.4byte _080437D6 @ case 50
.4byte _080437D6 @ case 51
.4byte _080437D6 @ case 52
.4byte _080437D6 @ case 53
.4byte _080437D6 @ case 54
.4byte _080437D6 @ case 55
.4byte _080437D6 @ case 56
.4byte _080437D6 @ case 57
.4byte _080437D6 @ case 58
.4byte _080437D6 @ case 59
.4byte _080437D6 @ case 60
.4byte _080437D6 @ case 61
.4byte _080437D6 @ case 62
.4byte _080437D6 @ case 63
.4byte _080437D6 @ case 64
.4byte _08043714 @ case 65
_08043690:
movs r0, #0x58
mov r3, sl
muls r3, r0, r3
adds r0, r3, #0
adds r1, r2, #0
adds r1, #0x4c
adds r0, r0, r1
ldr r0, [r0]
ldr r1, _080436B0
ands r0, r1
cmp r0, #0
bne _080436AA
b _080437D6
_080436AA:
ldr r0, _080436B4
ldr r1, _080436B8
b _0804379C
.align 2, 0
_080436B0: .4byte 0x00000F88
_080436B4: .4byte 0x02022C0C
_080436B8: .4byte 0x085ABC54
_080436BC:
movs r0, #0x58
mov r1, sl
muls r1, r0, r1
adds r0, r1, #0
adds r1, r2, #0
adds r1, #0x50
adds r0, r0, r1
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _080436D6
b _080437D6
_080436D6:
ldr r0, _080436E4
ldr r1, _080436E8
bl StringCopy
movs r2, #2
mov sb, r2
b _080437DC
.align 2, 0
_080436E4: .4byte 0x02022C0C
_080436E8: .4byte 0x085ABC62
_080436EC:
movs r0, #0x58
mov r3, sl
muls r3, r0, r3
adds r0, r3, #0
adds r1, r2, #0
adds r1, #0x4c
adds r0, r0, r1
ldr r0, [r0]
movs r1, #0x40
ands r0, r1
cmp r0, #0
beq _080437D6
ldr r0, _0804370C
ldr r1, _08043710
b _0804379C
.align 2, 0
_0804370C: .4byte 0x02022C0C
_08043710: .4byte 0x085ABC5B
_08043714:
movs r0, #0x58
mov r3, sl
muls r3, r0, r3
adds r0, r2, #0
adds r0, #0x4c
adds r0, r3, r0
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
beq _080437D6
adds r2, #0x50
adds r2, r3, r2
ldr r0, [r2]
ldr r1, _08043744
ands r0, r1
str r0, [r2]
ldr r0, _08043748
ldr r1, _0804374C
bl StringCopy
movs r0, #1
mov sb, r0
b _080437DC
.align 2, 0
_08043744: .4byte 0xF7FFFFFF
_08043748: .4byte 0x02022C0C
_0804374C: .4byte 0x085ABC50
_08043750:
movs r0, #0x58
mov r1, sl
muls r1, r0, r1
adds r0, r1, #0
adds r1, r2, #0
adds r1, #0x4c
adds r0, r0, r1
ldr r0, [r0]
movs r1, #0x10
ands r0, r1
cmp r0, #0
beq _080437D6
ldr r0, _08043778
ldr r1, _0804377C
bl StringCopy
movs r2, #1
mov sb, r2
b _080437DC
.align 2, 0
_08043778: .4byte 0x02022C0C
_0804377C: .4byte 0x085ABC57
_08043780:
movs r0, #0x58
mov r3, sl
muls r3, r0, r3
adds r0, r3, #0
adds r1, r2, #0
adds r1, #0x4c
adds r0, r0, r1
ldr r0, [r0]
movs r1, #0x20
ands r0, r1
cmp r0, #0
beq _080437D6
ldr r0, _080437A8
ldr r1, _080437AC
_0804379C:
bl StringCopy
movs r5, #1
mov sb, r5
b _080437DC
.align 2, 0
_080437A8: .4byte 0x02022C0C
_080437AC: .4byte 0x085ABC5E
_080437B0:
movs r0, #0x58
mov r1, sl
muls r1, r0, r1
adds r0, r1, #0
adds r1, r2, #0
adds r1, #0x50
adds r0, r0, r1
ldr r0, [r0]
movs r1, #0xf0
lsls r1, r1, #0xc
ands r0, r1
cmp r0, #0
beq _080437D6
ldr r0, _080437EC
ldr r1, _080437F0
bl StringCopy
movs r2, #3
mov sb, r2
_080437D6:
mov r3, sb
cmp r3, #0
beq _08043890
_080437DC:
mov r5, sb
cmp r5, #2
beq _08043810
cmp r5, #2
bgt _080437F4
cmp r5, #1
beq _080437FC
b _0804383C
.align 2, 0
_080437EC: .4byte 0x02022C0C
_080437F0: .4byte 0x085ABC67
_080437F4:
mov r0, sb
cmp r0, #3
beq _08043828
b _0804383C
_080437FC:
ldr r1, _0804380C
movs r0, #0x58
mov r2, sl
muls r2, r0, r2
adds r1, #0x4c
adds r2, r2, r1
movs r0, #0
b _0804383A
.align 2, 0
_0804380C: .4byte 0x02023D28
_08043810:
ldr r1, _08043824
movs r0, #0x58
mov r2, sl
muls r2, r0, r2
adds r1, #0x50
adds r2, r2, r1
ldr r0, [r2]
movs r1, #8
rsbs r1, r1, #0
b _08043838
.align 2, 0
_08043824: .4byte 0x02023D28
_08043828:
ldr r1, _08043874
movs r0, #0x58
mov r2, sl
muls r2, r0, r2
adds r1, #0x50
adds r2, r2, r1
ldr r0, [r2]
ldr r1, _08043878
_08043838:
ands r0, r1
_0804383A:
str r0, [r2]
_0804383C:
bl BattleScriptPushCursor
ldr r1, _0804387C
ldr r0, _08043880
str r0, [r1]
ldr r0, _08043884
mov r1, sl
strb r1, [r0, #0x17]
ldr r4, _08043888
strb r1, [r4]
ldrb r1, [r4]
movs r0, #0x58
muls r0, r1, r0
ldr r1, _0804388C
adds r0, r0, r1
str r0, [sp]
movs r0, #0
movs r1, #0x28
movs r2, #0
movs r3, #4
bl BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
bl _0804407A
.align 2, 0
_08043874: .4byte 0x02023D28
_08043878: .4byte 0xFFF0FFFF
_0804387C: .4byte 0x02023EB8
_08043880: .4byte 0x08289C14
_08043884: .4byte 0x02024118
_08043888: .4byte 0x02023D08
_0804388C: .4byte 0x02023D74
_08043890:
mov r0, sl
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sl, r0
ldr r0, _080438A8
ldrb r0, [r0]
cmp sl, r0
bhs _080438A4
b _08043558
_080438A4:
bl _0804405E
.align 2, 0
_080438A8: .4byte 0x02023D10
_080438AC:
movs r2, #0
mov sl, r2
ldr r0, _080438F4
ldrb r0, [r0]
cmp sl, r0
blo _080438BA
b _0804405E
_080438BA:
ldr r4, _080438F8
_080438BC:
movs r0, #0x58
mov r3, sl
muls r3, r0, r3
adds r0, r3, #0
adds r0, r0, r4
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #0x3b
bne _080438E0
mov r0, sl
bl CastformDataTypeChange
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
cmp r0, #0
beq _080438E0
b _08043F3C
_080438E0:
mov r0, sl
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sl, r0
ldr r0, _080438F4
ldrb r0, [r0]
cmp sl, r0
blo _080438BC
b _0804405E
.align 2, 0
_080438F4: .4byte 0x02023D10
_080438F8: .4byte 0x02023D28
_080438FC:
ldrb r0, [r7]
cmp r0, #0x1c
beq _08043904
b _0804405E
_08043904:
ldr r4, _08043964
ldr r1, [r4]
movs r0, #0x80
lsls r0, r0, #7
ands r0, r1
cmp r0, #0
bne _08043914
b _0804405E
_08043914:
ldr r0, _08043968
ands r1, r0
str r1, [r4]
mov r5, r8
ldr r1, [r5]
adds r1, #0xb2
ldrb r2, [r1]
movs r0, #0x3f
ands r0, r2
strb r0, [r1]
ldr r0, [r5]
adds r1, r0, #0
adds r1, #0xb2
ldrb r0, [r1]
cmp r0, #6
bne _08043938
movs r0, #2
strb r0, [r1]
_08043938:
ldr r1, _0804396C
mov r2, r8
ldr r0, [r2]
adds r0, #0xb2
ldrb r0, [r0]
adds r0, #0x40
strb r0, [r1, #3]
ldr r1, _08043970
ldr r0, _08043974
ldrb r0, [r0]
strb r0, [r1, #0x17]
bl BattleScriptPushCursor
ldr r1, _08043978
ldr r0, _0804397C
str r0, [r1]
ldr r0, [r4]
movs r1, #0x80
lsls r1, r1, #6
orrs r0, r1
str r0, [r4]
b _08044010
.align 2, 0
_08043964: .4byte 0x02023F24
_08043968: .4byte 0xFFFFBFFF
_0804396C: .4byte 0x02023FD6
_08043970: .4byte 0x02024118
_08043974: .4byte 0x02023EB0
_08043978: .4byte 0x02023EB8
_0804397C: .4byte 0x08289C07
_08043980:
ldrb r0, [r7]
cmp r0, #0x1c
beq _08043988
b _0804405E
_08043988:
ldr r4, _080439E8
ldr r1, [r4]
movs r0, #0x80
lsls r0, r0, #7
ands r0, r1
cmp r0, #0
bne _08043998
b _0804405E
_08043998:
ldr r0, _080439EC
ands r1, r0
str r1, [r4]
mov r3, r8
ldr r1, [r3]
adds r1, #0xb2
ldrb r2, [r1]
movs r0, #0x3f
ands r0, r2
strb r0, [r1]
ldr r0, [r3]
adds r1, r0, #0
adds r1, #0xb2
ldrb r0, [r1]
cmp r0, #6
bne _080439BC
movs r0, #2
strb r0, [r1]
_080439BC:
ldr r1, _080439F0
mov r3, r8
ldr r0, [r3]
adds r0, #0xb2
ldrb r0, [r0]
strb r0, [r1, #3]
ldr r1, _080439F4
ldr r0, _080439F8
ldrb r0, [r0]
strb r0, [r1, #0x17]
bl BattleScriptPushCursor
ldr r1, _080439FC
ldr r0, _08043A00
str r0, [r1]
ldr r0, [r4]
movs r1, #0x80
lsls r1, r1, #6
orrs r0, r1
str r0, [r4]
b _08044010
.align 2, 0
_080439E8: .4byte 0x02023F24
_080439EC: .4byte 0xFFFFBFFF
_080439F0: .4byte 0x02023FD6
_080439F4: .4byte 0x02024118
_080439F8: .4byte 0x02023EAF
_080439FC: .4byte 0x02023EB8
_08043A00: .4byte 0x08289C07
_08043A04:
movs r4, #0
ldr r0, _08043A3C
ldrb r1, [r0]
cmp r4, r1
blt _08043A10
b _0804405E
_08043A10:
ldr r0, _08043A40
adds r5, r1, #0
ldr r2, _08043A44
adds r3, r0, #0
adds r3, #0x20
movs r6, #0x80
lsls r6, r6, #0xc
_08043A1E:
ldrb r1, [r3]
cmp r1, #0x16
bne _08043A2E
ldr r0, [r2]
ands r0, r6
cmp r0, #0
beq _08043A2E
b _08043F64
_08043A2E:
adds r2, #4
adds r3, #0x58
adds r4, #1
cmp r4, r5
blt _08043A1E
b _0804405E
.align 2, 0
_08043A3C: .4byte 0x02023D10
_08043A40: .4byte 0x02023D28
_08043A44: .4byte 0x02023F50
_08043A48:
movs r4, #0
ldr r0, _08043B24
ldrb r0, [r0]
cmp r4, r0
blt _08043A54
b _0804405E
_08043A54:
ldr r5, _08043B28
mov r8, r5
ldr r0, _08043B2C
adds r0, #0x20
str r0, [sp, #0x1c]
movs r1, #0
str r1, [sp, #0x20]
_08043A62:
ldr r2, [sp, #0x1c]
ldrb r0, [r2]
cmp r0, #0x24
beq _08043A6C
b _08043BFE
_08043A6C:
ldr r0, _08043B30
ldr r3, [sp, #0x20]
adds r0, r3, r0
ldr r1, [r0]
movs r0, #0x80
lsls r0, r0, #0xd
ands r1, r0
str r3, [sp, #0x18]
cmp r1, #0
bne _08043A82
b _08043BFE
_08043A82:
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
bl GetBattlerPosition
movs r1, #1
adds r5, r0, #0
eors r5, r1
ands r5, r1
adds r0, r5, #0
bl GetBattlerAtPosition
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
adds r0, r5, #2
bl GetBattlerAtPosition
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
ldr r0, _08043B34
ldr r0, [r0]
movs r2, #1
ands r0, r2
cmp r0, #0
bne _08043AB4
b _08043BC4
_08043AB4:
movs r1, #0x58
adds r0, r6, #0
muls r0, r1, r0
ldr r3, _08043B2C
adds r1, r0, r3
adds r0, r1, #0
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #0
beq _08043B80
ldrh r0, [r1, #0x28]
cmp r0, #0
beq _08043B3C
movs r1, #0x58
adds r0, r7, #0
muls r0, r1, r0
adds r1, r0, r3
adds r0, r1, #0
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #0
beq _08043B3C
ldrh r0, [r1, #0x28]
cmp r0, #0
beq _08043B3C
str r2, [sp, #0x24]
bl Random
ldr r2, [sp, #0x24]
adds r1, r2, #0
ands r1, r0
lsls r1, r1, #1
orrs r5, r1
adds r0, r5, #0
bl GetBattlerAtPosition
mov r2, r8
strb r0, [r2]
ldrb r0, [r2]
movs r3, #0x58
muls r0, r3, r0
ldr r5, _08043B2C
adds r0, r0, r5
adds r0, #0x20
ldrb r0, [r0]
ldr r1, [sp, #0x1c]
strb r0, [r1]
ldrb r0, [r2]
muls r0, r3, r0
adds r0, r0, r5
adds r0, #0x20
ldrb r0, [r0]
ldr r2, _08043B38
strb r0, [r2]
b _08043BEC
.align 2, 0
_08043B24: .4byte 0x02023D10
_08043B28: .4byte 0x02023D08
_08043B2C: .4byte 0x02023D28
_08043B30: .4byte 0x02023F50
_08043B34: .4byte 0x02022C90
_08043B38: .4byte 0x02023EAE
_08043B3C:
ldr r3, _08043B7C
movs r2, #0x58
adds r0, r6, #0
muls r0, r2, r0
adds r1, r0, r3
adds r0, r1, #0
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #0
beq _08043B80
ldrh r0, [r1, #0x28]
cmp r0, #0
beq _08043B80
mov r5, r8
strb r6, [r5]
adds r1, r4, #0
muls r1, r2, r1
adds r1, r1, r3
ldrb r0, [r5]
muls r0, r2, r0
adds r0, r0, r3
adds r0, #0x20
ldrb r0, [r0]
adds r1, #0x20
strb r0, [r1]
ldrb r0, [r5]
muls r0, r2, r0
adds r0, r0, r3
adds r0, #0x20
ldrb r0, [r0]
b _08043BE8
.align 2, 0
_08043B7C: .4byte 0x02023D28
_08043B80:
ldr r3, _08043BC0
movs r2, #0x58
adds r0, r7, #0
muls r0, r2, r0
adds r1, r0, r3
adds r0, r1, #0
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #0
beq _08043BF6
ldrh r0, [r1, #0x28]
cmp r0, #0
beq _08043BF6
mov r5, r8
strb r7, [r5]
adds r1, r4, #0
muls r1, r2, r1
adds r1, r1, r3
ldrb r0, [r5]
muls r0, r2, r0
adds r0, r0, r3
adds r0, #0x20
ldrb r0, [r0]
adds r1, #0x20
strb r0, [r1]
ldrb r0, [r5]
muls r0, r2, r0
adds r0, r0, r3
adds r0, #0x20
ldrb r0, [r0]
b _08043BE8
.align 2, 0
_08043BC0: .4byte 0x02023D28
_08043BC4:
mov r2, r8
strb r6, [r2]
movs r3, #0x58
adds r0, r6, #0
muls r0, r3, r0
ldr r5, _08043C18
adds r0, r0, r5
adds r2, r0, #0
adds r2, #0x20
ldrb r1, [r2]
cmp r1, #0
beq _08043BF6
ldrh r0, [r0, #0x28]
cmp r0, #0
beq _08043BF6
ldr r0, [sp, #0x1c]
strb r1, [r0]
ldrb r0, [r2]
_08043BE8:
ldr r1, _08043C1C
strb r0, [r1]
_08043BEC:
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08043BF6:
mov r2, sb
cmp r2, #0
beq _08043BFE
b _08043F80
_08043BFE:
ldr r3, [sp, #0x1c]
adds r3, #0x58
str r3, [sp, #0x1c]
ldr r5, [sp, #0x20]
adds r5, #4
str r5, [sp, #0x20]
adds r4, #1
ldr r0, _08043C20
ldrb r0, [r0]
cmp r4, r0
bge _08043C16
b _08043A62
_08043C16:
b _0804405E
.align 2, 0
_08043C18: .4byte 0x02023D28
_08043C1C: .4byte 0x02023EAE
_08043C20: .4byte 0x02023D10
_08043C24:
movs r4, #0
ldr r0, _08043C5C
ldrb r1, [r0]
cmp r4, r1
blt _08043C30
b _0804405E
_08043C30:
ldr r0, _08043C60
adds r5, r1, #0
ldr r2, _08043C64
adds r3, r0, #0
adds r3, #0x20
movs r6, #0x80
lsls r6, r6, #0xc
_08043C3E:
ldrb r1, [r3]
cmp r1, #0x16
bne _08043C4E
ldr r0, [r2]
ands r0, r6
cmp r0, #0
beq _08043C4E
b _08043FF4
_08043C4E:
adds r2, #4
adds r3, #0x58
adds r4, #1
cmp r4, r5
blt _08043C3E
b _0804405E
.align 2, 0
_08043C5C: .4byte 0x02023D10
_08043C60: .4byte 0x02023D28
_08043C64: .4byte 0x02023F50
_08043C68:
mov r0, sl
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
movs r4, #0
ldr r0, _08043CB8
ldrb r0, [r0]
cmp r4, r0
blt _08043C7E
b _0804405E
_08043C7E:
ldr r7, _08043CBC
_08043C80:
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r3, r4, #1
cmp r0, r5
beq _08043CAA
movs r0, #0x58
muls r0, r4, r0
adds r0, r0, r7
adds r0, #0x20
ldrb r0, [r0]
cmp r0, r6
bne _08043CAA
ldr r0, _08043CC0
strb r6, [r0]
lsls r0, r3, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08043CAA:
adds r4, r3, #0
ldr r0, _08043CB8
ldrb r0, [r0]
cmp r4, r0
blt _08043C80
b _0804405E
.align 2, 0
_08043CB8: .4byte 0x02023D10
_08043CBC: .4byte 0x02023D28
_08043CC0: .4byte 0x02023EAE
_08043CC4:
mov r0, sl
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
movs r4, #0
ldr r0, _08043D14
ldrb r0, [r0]
cmp r4, r0
blt _08043CDA
b _0804405E
_08043CDA:
ldr r7, _08043D18
_08043CDC:
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r3, r4, #1
cmp r0, r5
bne _08043D06
movs r0, #0x58
muls r0, r4, r0
adds r0, r0, r7
adds r0, #0x20
ldrb r0, [r0]
cmp r0, r6
bne _08043D06
ldr r0, _08043D1C
strb r6, [r0]
lsls r0, r3, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08043D06:
adds r4, r3, #0
ldr r0, _08043D14
ldrb r0, [r0]
cmp r4, r0
blt _08043CDC
b _0804405E
.align 2, 0
_08043D14: .4byte 0x02023D10
_08043D18: .4byte 0x02023D28
_08043D1C: .4byte 0x02023EAE
_08043D20:
ldrb r0, [r7]
cmp r0, #0xfd
beq _08043D44
cmp r0, #0xfe
beq _08043D7C
movs r4, #0
ldr r0, _08043D3C
adds r5, r0, #0
ldrb r0, [r5]
cmp r4, r0
blt _08043D38
b _0804405E
_08043D38:
ldr r2, _08043D40
b _08043DB4
.align 2, 0
_08043D3C: .4byte 0x02023D10
_08043D40: .4byte 0x02023D28
_08043D44:
movs r4, #0
ldr r0, _08043D74
ldrb r0, [r0]
cmp r4, r0
blt _08043D50
b _0804405E
_08043D50:
ldr r5, _08043D78
movs r2, #0x80
lsls r2, r2, #9
adds r1, r0, #0
_08043D58:
lsls r0, r4, #2
adds r0, r0, r5
ldr r0, [r0]
ands r0, r2
adds r3, r4, #1
cmp r0, #0
beq _08043D6C
lsls r0, r3, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08043D6C:
adds r4, r3, #0
cmp r4, r1
blt _08043D58
b _0804405E
.align 2, 0
_08043D74: .4byte 0x02023D10
_08043D78: .4byte 0x02023F50
_08043D7C:
movs r4, #0
ldr r0, _08043DAC
ldrb r0, [r0]
cmp r4, r0
blt _08043D88
b _0804405E
_08043D88:
ldr r5, _08043DB0
movs r2, #0x80
lsls r2, r2, #0xa
adds r1, r0, #0
_08043D90:
lsls r0, r4, #2
adds r0, r0, r5
ldr r0, [r0]
ands r0, r2
adds r3, r4, #1
cmp r0, #0
beq _08043DA4
lsls r0, r3, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08043DA4:
adds r4, r3, #0
cmp r4, r1
blt _08043D90
b _0804405E
.align 2, 0
_08043DAC: .4byte 0x02023D10
_08043DB0: .4byte 0x02023F50
_08043DB4:
movs r0, #0x58
muls r0, r4, r0
adds r0, r0, r2
adds r0, #0x20
ldrb r0, [r0]
adds r3, r4, #1
cmp r0, r6
bne _08043DCC
strb r6, [r7]
lsls r0, r3, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08043DCC:
adds r4, r3, #0
ldrb r1, [r5]
cmp r4, r1
blt _08043DB4
b _0804405E
_08043DD6:
movs r4, #0
ldr r0, _08043E14
ldrb r0, [r0]
cmp r4, r0
blt _08043DE2
b _0804405E
_08043DE2:
ldr r2, _08043E18
mov r8, r2
adds r2, r0, #0
movs r5, #0x58
_08043DEA:
adds r0, r4, #0
muls r0, r5, r0
mov r3, r8
adds r1, r0, r3
adds r0, r1, #0
adds r0, #0x20
ldrb r0, [r0]
adds r3, r4, #1
cmp r0, r6
bne _08043E0C
ldrh r0, [r1, #0x28]
cmp r0, #0
beq _08043E0C
strb r6, [r7]
lsls r0, r3, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08043E0C:
adds r4, r3, #0
cmp r4, r2
blt _08043DEA
b _0804405E
.align 2, 0
_08043E14: .4byte 0x02023D10
_08043E18: .4byte 0x02023D28
_08043E1C:
movs r4, #0
ldr r0, _08043E54
ldrb r0, [r0]
cmp r4, r0
blt _08043E28
b _0804405E
_08043E28:
ldr r7, _08043E58
adds r1, r0, #0
movs r5, #0x58
ldr r2, _08043E5C
_08043E30:
adds r0, r4, #0
muls r0, r5, r0
adds r0, r0, r7
adds r0, #0x20
ldrb r0, [r0]
adds r3, r4, #1
cmp r0, r6
bne _08043E4C
cmp r4, sl
beq _08043E4C
strb r6, [r2]
lsls r0, r3, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08043E4C:
adds r4, r3, #0
cmp r4, r1
blt _08043E30
b _0804405E
.align 2, 0
_08043E54: .4byte 0x02023D10
_08043E58: .4byte 0x02023D28
_08043E5C: .4byte 0x02023EAE
_08043E60:
mov r0, sl
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
movs r4, #0
ldr r0, _08043EB0
ldrb r0, [r0]
cmp r4, r0
blt _08043E76
b _0804405E
_08043E76:
ldr r7, _08043EB4
_08043E78:
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, r5
beq _08043EA4
movs r0, #0x58
muls r0, r4, r0
adds r0, r0, r7
adds r0, #0x20
ldrb r0, [r0]
cmp r0, r6
bne _08043EA4
ldr r0, _08043EB8
strb r6, [r0]
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08043EA4:
adds r4, #1
ldr r0, _08043EB0
ldrb r0, [r0]
cmp r4, r0
blt _08043E78
b _0804405E
.align 2, 0
_08043EB0: .4byte 0x02023D10
_08043EB4: .4byte 0x02023D28
_08043EB8: .4byte 0x02023EAE
_08043EBC:
mov r0, sl
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
movs r4, #0
ldr r0, _08043F0C
ldrb r0, [r0]
cmp r4, r0
blt _08043ED2
b _0804405E
_08043ED2:
ldr r7, _08043F10
_08043ED4:
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, r5
bne _08043F00
movs r0, #0x58
muls r0, r4, r0
adds r0, r0, r7
adds r0, #0x20
ldrb r0, [r0]
cmp r0, r6
bne _08043F00
ldr r0, _08043F14
strb r6, [r0]
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08043F00:
adds r4, #1
ldr r0, _08043F0C
ldrb r0, [r0]
cmp r4, r0
blt _08043ED4
b _0804405E
.align 2, 0
_08043F0C: .4byte 0x02023D10
_08043F10: .4byte 0x02023D28
_08043F14: .4byte 0x02023EAE
thumb_func_end AbilityBattleEffects
thumb_func_start sub_08043F18
sub_08043F18: @ 0x08043F18
ldr r0, _08043F30
bl BattleScriptPushCursorAndCallback
ldr r0, _08043F34
strb r6, [r0, #0x17]
_08043F22:
ldr r0, _08043F38
ldr r0, [r0]
adds r0, #0x7f
mov r1, sb
subs r1, #1
strb r1, [r0]
b _0804405E
.align 2, 0
_08043F30: .4byte 0x08289A31
_08043F34: .4byte 0x02024118
_08043F38: .4byte 0x02024140
_08043F3C:
ldr r0, _08043F58
bl BattleScriptPushCursorAndCallback
ldr r0, _08043F5C
mov r5, sl
strb r5, [r0, #0x17]
ldr r0, _08043F60
ldr r0, [r0]
adds r0, #0x7f
mov r1, sb
subs r1, #1
strb r1, [r0]
b _0804407A
.align 2, 0
_08043F58: .4byte 0x08289A31
_08043F5C: .4byte 0x02024118
_08043F60: .4byte 0x02024140
_08043F64:
strb r1, [r7]
ldr r0, [r2]
ldr r1, _08043F78
ands r0, r1
str r0, [r2]
ldr r0, _08043F7C
bl BattleScriptPushCursorAndCallback
b _08044008
.align 2, 0
_08043F78: .4byte 0xFFF7FFFF
_08043F7C: .4byte 0x08289A40
_08043F80:
ldr r0, _08043FD0
bl BattleScriptPushCursorAndCallback
ldr r1, _08043FD4
ldr r0, [sp, #0x18]
adds r1, r0, r1
ldr r0, [r1]
ldr r2, _08043FD8
ands r0, r2
str r0, [r1]
ldr r0, _08043FDC
strb r4, [r0, #0x17]
ldr r1, _08043FE0
movs r4, #0xfd
strb r4, [r1]
movs r0, #4
strb r0, [r1, #1]
ldr r2, _08043FE4
ldrb r0, [r2]
strb r0, [r1, #2]
ldr r3, _08043FE8
ldrb r0, [r2]
lsls r0, r0, #1
adds r0, r0, r3
ldrh r0, [r0]
strb r0, [r1, #3]
movs r0, #0xff
strb r0, [r1, #4]
ldr r1, _08043FEC
strb r4, [r1]
movs r0, #9
strb r0, [r1, #1]
ldr r0, _08043FF0
ldrb r0, [r0]
strb r0, [r1, #2]
movs r0, #1
rsbs r0, r0, #0
strb r0, [r1, #3]
b _0804405E
.align 2, 0
_08043FD0: .4byte 0x082899DA
_08043FD4: .4byte 0x02023F50
_08043FD8: .4byte 0xFFEFFFFF
_08043FDC: .4byte 0x02024118
_08043FE0: .4byte 0x02022C0C
_08043FE4: .4byte 0x02023D08
_08043FE8: .4byte 0x02023D12
_08043FEC: .4byte 0x02022C1C
_08043FF0: .4byte 0x02023EAE
_08043FF4:
strb r1, [r7]
ldr r0, [r2]
ldr r1, _0804401C
ands r0, r1
str r0, [r2]
bl BattleScriptPushCursor
ldr r1, _08044020
ldr r0, _08044024
str r0, [r1]
_08044008:
ldr r0, _08044028
ldr r0, [r0]
adds r0, #0xd8
strb r4, [r0]
_08044010:
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
b _0804405E
.align 2, 0
_0804401C: .4byte 0xFFF7FFFF
_08044020: .4byte 0x02023EB8
_08044024: .4byte 0x08289A49
_08044028: .4byte 0x02024140
_0804402C:
movs r4, #0
ldr r0, _0804408C
ldrb r1, [r0]
cmp r4, r1
bge _0804405E
ldr r0, _08044090
adds r2, r1, #0
adds r1, r0, #0
adds r1, #0x20
ldr r3, _08044094
_08044040:
ldrb r0, [r1]
cmp r0, r6
bne _08044056
cmp r4, sl
beq _08044056
strb r6, [r3]
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
_08044056:
adds r1, #0x58
adds r4, #1
cmp r4, r2
blt _08044040
_0804405E:
mov r1, sb
cmp r1, #0
beq _0804407A
_08044064:
ldr r2, [sp, #4]
cmp r2, #0xb
bhi _0804407A
ldr r1, _08044094
ldrb r0, [r1]
cmp r0, #0xff
beq _0804407A
adds r1, r0, #0
mov r0, sl
bl RecordAbilityBattle
_0804407A:
mov r0, sb
add sp, #0x28
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_0804408C: .4byte 0x02023D10
_08044090: .4byte 0x02023D28
_08044094: .4byte 0x02023EAE
thumb_func_end sub_08043F18
thumb_func_start BattleScriptExecute
BattleScriptExecute: @ 0x08044098
ldr r1, _080440C4
str r0, [r1]
ldr r0, _080440C8
ldr r0, [r0]
ldr r2, [r0, #0xc]
adds r3, r2, #0
adds r3, #0x20
ldrb r0, [r3]
adds r1, r0, #1
strb r1, [r3]
lsls r0, r0, #0x18
lsrs r0, r0, #0x16
adds r2, r2, r0
ldr r1, _080440CC
ldr r0, [r1]
str r0, [r2]
ldr r0, _080440D0
str r0, [r1]
ldr r1, _080440D4
movs r0, #0
strb r0, [r1]
bx lr
.align 2, 0
_080440C4: .4byte 0x02023EB8
_080440C8: .4byte 0x0202414C
_080440CC: .4byte 0x03005A64
_080440D0: .4byte 0x0803DC59
_080440D4: .4byte 0x02023D27
thumb_func_end BattleScriptExecute
thumb_func_start BattleScriptPushCursorAndCallback
BattleScriptPushCursorAndCallback: @ 0x080440D8
push {r4, lr}
adds r4, r0, #0
bl BattleScriptPushCursor
ldr r0, _0804410C
str r4, [r0]
ldr r0, _08044110
ldr r0, [r0]
ldr r2, [r0, #0xc]
adds r3, r2, #0
adds r3, #0x20
ldrb r0, [r3]
adds r1, r0, #1
strb r1, [r3]
lsls r0, r0, #0x18
lsrs r0, r0, #0x16
adds r2, r2, r0
ldr r1, _08044114
ldr r0, [r1]
str r0, [r2]
ldr r0, _08044118
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0804410C: .4byte 0x02023EB8
_08044110: .4byte 0x0202414C
_08044114: .4byte 0x03005A64
_08044118: .4byte 0x0803DCCD
thumb_func_end BattleScriptPushCursorAndCallback
thumb_func_start ItemBattleEffects
ItemBattleEffects: @ 0x0804411C
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x2c
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
str r0, [sp, #8]
lsls r1, r1, #0x18
lsrs r7, r1, #0x18
lsls r2, r2, #0x18
lsrs r6, r2, #0x18
movs r0, #0
mov sl, r0
movs r1, #0
str r1, [sp, #0xc]
add r0, sp, #4
strb r1, [r0]
ldr r4, _08044168
ldr r1, _0804416C
movs r0, #0x58
muls r0, r7, r0
adds r0, r0, r1
ldrh r0, [r0, #0x2e]
strh r0, [r4]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0xaf
bne _08044174
ldr r1, _08044170
lsls r0, r7, #3
subs r0, r0, r7
lsls r0, r0, #2
adds r0, r0, r1
ldrb r5, [r0, #7]
ldrb r0, [r0, #0x1a]
b _08044188
.align 2, 0
_08044168: .4byte 0x02023EAC
_0804416C: .4byte 0x02023D28
_08044170: .4byte 0x020240A8
_08044174:
ldrh r0, [r4]
bl sub_080D6CF8
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
ldrh r0, [r4]
bl sub_080D6D1C
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
_08044188:
mov sb, r0
ldr r1, _080441B0
ldr r0, _080441B4
ldrb r2, [r0]
movs r0, #0x58
muls r0, r2, r0
adds r0, r0, r1
ldrh r0, [r0, #0x2e]
str r0, [sp, #0x14]
cmp r0, #0xaf
bne _080441BC
ldr r1, _080441B8
lsls r0, r2, #3
subs r0, r0, r2
lsls r0, r0, #2
adds r0, r0, r1
ldrb r3, [r0, #7]
mov r8, r3
ldrb r0, [r0, #0x1a]
b _080441D2
.align 2, 0
_080441B0: .4byte 0x02023D28
_080441B4: .4byte 0x02023EAF
_080441B8: .4byte 0x020240A8
_080441BC:
ldr r0, [sp, #0x14]
bl sub_080D6CF8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r8, r0
ldr r0, [sp, #0x14]
bl sub_080D6D1C
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
_080441D2:
str r0, [sp, #0x10]
ldr r2, _08044208
ldr r0, _0804420C
ldrb r1, [r0]
movs r0, #0x58
muls r0, r1, r0
adds r0, r0, r2
ldrh r4, [r0, #0x2e]
cmp r4, #0xaf
beq _080441F2
adds r0, r4, #0
bl sub_080D6CF8
adds r0, r4, #0
bl sub_080D6D1C
_080441F2:
ldr r0, [sp, #8]
cmp r0, #4
bls _080441FC
bl _0804546A
_080441FC:
lsls r0, r0, #2
ldr r1, _08044210
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08044208: .4byte 0x02023D28
_0804420C: .4byte 0x02023EB0
_08044210: .4byte 0x08044214
_08044214: @ jump table
.4byte _08044228 @ case 0
.4byte _080442C8 @ case 1
.4byte _0804546A @ case 2
.4byte _08044EC0 @ case 3
.4byte _08045310 @ case 4
_08044228:
cmp r5, #0x17
beq _08044258
cmp r5, #0x20
beq _08044234
bl _0804546A
_08044234:
adds r0, r7, #0
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _08044244
bl _0804546A
_08044244:
ldr r0, _08044254
ldr r0, [r0]
adds r0, #0x4a
movs r1, #2
strb r1, [r0]
bl _0804546A
.align 2, 0
_08044254: .4byte 0x02024140
_08044258:
ldr r1, _080442B0
mov r8, r1
movs r0, #0x58
adds r1, r7, #0
muls r1, r0, r1
mov r0, r8
adds r0, #0x18
adds r1, r1, r0
movs r2, #6
movs r3, #7
mov sl, r3
_0804426E:
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #5
bgt _0804427C
strb r2, [r1]
movs r5, #5
str r5, [sp, #0xc]
_0804427C:
adds r1, #1
movs r0, #1
rsbs r0, r0, #0
add sl, r0
mov r3, sl
cmp r3, #0
bge _0804426E
ldr r5, [sp, #0xc]
cmp r5, #0
bne _08044294
bl _0804546A
_08044294:
ldr r0, _080442B4
strb r7, [r0, #0x17]
ldr r0, _080442B8
strb r7, [r0]
ldr r1, _080442BC
ldr r0, _080442C0
strb r7, [r0]
strb r7, [r1]
ldr r0, _080442C4
bl BattleScriptExecute
bl _0804546A
.align 2, 0
_080442B0: .4byte 0x02023D28
_080442B4: .4byte 0x02024118
_080442B8: .4byte 0x02023EB3
_080442BC: .4byte 0x02023D08
_080442C0: .4byte 0x02023EAF
_080442C4: .4byte 0x08289D36
_080442C8:
ldr r1, _080442F0
movs r0, #0x58
muls r0, r7, r0
adds r0, r0, r1
ldrh r0, [r0, #0x28]
mov r8, r1
cmp r0, #0
bne _080442DC
bl _0804546A
_080442DC:
subs r0, r5, #1
cmp r0, #0x2a
bls _080442E6
bl _08044E16
_080442E6:
lsls r0, r0, #2
ldr r1, _080442F4
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080442F0: .4byte 0x02023D28
_080442F4: .4byte 0x080442F8
_080442F8: @ jump table
.4byte _080443A4 @ case 0
.4byte _08044B84 @ case 1
.4byte _08044C48 @ case 2
.4byte _08044BB4 @ case 3
.4byte _08044BE8 @ case 4
.4byte _08044C18 @ case 5
.4byte _080443F0 @ case 6
.4byte _08044C84 @ case 7
.4byte _08044CB4 @ case 8
.4byte _080445BC @ case 9
.4byte _0804463C @ case 10
.4byte _080446B8 @ case 11
.4byte _0804474C @ case 12
.4byte _080447E0 @ case 13
.4byte _08044874 @ case 14
.4byte _080448DC @ case 15
.4byte _08044930 @ case 16
.4byte _08044984 @ case 17
.4byte _080449EC @ case 18
.4byte _08044A50 @ case 19
.4byte _08044A9C @ case 20
.4byte _08044E16 @ case 21
.4byte _080444F0 @ case 22
.4byte _08044E16 @ case 23
.4byte _08044E16 @ case 24
.4byte _08044E16 @ case 25
.4byte _08044E16 @ case 26
.4byte _08044DE0 @ case 27
.4byte _08044E16 @ case 28
.4byte _08044E16 @ case 29
.4byte _08044E16 @ case 30
.4byte _08044E16 @ case 31
.4byte _08044E16 @ case 32
.4byte _08044E16 @ case 33
.4byte _08044E16 @ case 34
.4byte _08044E16 @ case 35
.4byte _08044E16 @ case 36
.4byte _08044E16 @ case 37
.4byte _08044E16 @ case 38
.4byte _08044E16 @ case 39
.4byte _08044E16 @ case 40
.4byte _08044E16 @ case 41
.4byte _0804455C @ case 42
_080443A4:
movs r0, #0x58
muls r0, r7, r0
mov r1, r8
adds r2, r0, r1
ldrh r0, [r2, #0x2c]
ldrh r1, [r2, #0x28]
lsrs r0, r0, #1
cmp r1, r0
bls _080443BA
bl _08044E16
_080443BA:
cmp r6, #0
beq _080443C2
bl _08044E16
_080443C2:
ldr r4, _080443E8
mov r3, sb
str r3, [r4]
ldrh r3, [r2, #0x28]
mov r5, sb
adds r0, r3, r5
ldrh r1, [r2, #0x2c]
cmp r0, r1
ble _080443D8
subs r0, r1, r3
str r0, [r4]
_080443D8:
ldr r0, [r4]
rsbs r0, r0, #0
str r0, [r4]
ldr r0, _080443EC
bl BattleScriptExecute
b _08044742
.align 2, 0
_080443E8: .4byte 0x02023E94
_080443EC: .4byte 0x08289D4C
_080443F0:
cmp r6, #0
beq _080443F8
bl _08044E16
_080443F8:
adds r0, r7, #0
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _0804441C
ldr r1, _08044414
lsls r0, r7, #1
adds r0, r0, r1
ldrh r1, [r0]
movs r0, #0x64
muls r1, r0, r1
ldr r0, _08044418
b _0804442A
.align 2, 0
_08044414: .4byte 0x02023D12
_08044418: .4byte 0x02024190
_0804441C:
ldr r1, _08044498
lsls r0, r7, #1
adds r0, r0, r1
ldrh r1, [r0]
movs r0, #0x64
muls r1, r0, r1
ldr r0, _0804449C
_0804442A:
adds r4, r1, r0
movs r1, #0
mov sl, r1
add r5, sp, #4
_08044432:
mov r1, sl
adds r1, #0xd
adds r0, r4, #0
bl GetMonData
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
mov r1, sl
adds r1, #0x11
adds r0, r4, #0
bl GetMonData
strb r0, [r5]
adds r0, r4, #0
movs r1, #0x15
bl GetMonData
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r6, #0
beq _08044462
ldrb r0, [r5]
cmp r0, #0
beq _0804446C
_08044462:
movs r2, #1
add sl, r2
mov r3, sl
cmp r3, #3
ble _08044432
_0804446C:
mov r5, sl
cmp r5, #4
bne _08044476
bl _08044E16
_08044476:
lsls r2, r5, #0x18
lsrs r2, r2, #0x18
adds r0, r6, #0
bl CalculatePPWithBonus
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
add r0, sp, #4
ldrb r0, [r0]
mov r3, sb
adds r1, r0, r3
cmp r1, r2
ble _080444A0
add r0, sp, #4
strb r2, [r0]
b _080444A4
.align 2, 0
_08044498: .4byte 0x02023D12
_0804449C: .4byte 0x020243E8
_080444A0:
add r0, sp, #4
strb r1, [r0]
_080444A4:
ldr r1, _080444E4
movs r0, #0xfd
strb r0, [r1]
movs r0, #2
strb r0, [r1, #1]
strb r6, [r1, #2]
lsrs r0, r6, #8
strb r0, [r1, #3]
movs r0, #0xff
strb r0, [r1, #4]
ldr r0, _080444E8
bl BattleScriptExecute
mov r1, sl
adds r1, #9
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
add r5, sp, #4
str r5, [sp]
movs r0, #0
movs r2, #0
movs r3, #1
bl BtlController_EmitSetMonData
ldr r0, _080444EC
ldrb r0, [r0]
bl MarkBattlerForControllerExec
movs r0, #3
str r0, [sp, #0xc]
bl _08044E1E
.align 2, 0
_080444E4: .4byte 0x02022C0C
_080444E8: .4byte 0x08289D69
_080444EC: .4byte 0x02023D08
_080444F0:
ldr r0, _08044544
movs r1, #0x58
muls r1, r7, r1
adds r0, #0x18
adds r1, r1, r0
movs r2, #6
movs r3, #7
mov sl, r3
_08044500:
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #5
bgt _0804450E
strb r2, [r1]
movs r5, #5
str r5, [sp, #0xc]
_0804450E:
adds r1, #1
movs r0, #1
rsbs r0, r0, #0
add sl, r0
mov r3, sl
cmp r3, #0
bge _08044500
movs r5, #8
mov sl, r5
ldr r0, [sp, #0xc]
cmp r0, #0
bne _0804452A
bl _0804546A
_0804452A:
ldr r0, _08044548
strb r7, [r0, #0x17]
ldr r0, _0804454C
strb r7, [r0]
ldr r1, _08044550
ldr r0, _08044554
strb r7, [r0]
strb r7, [r1]
ldr r0, _08044558
bl BattleScriptExecute
bl _08044E16
.align 2, 0
_08044544: .4byte 0x02023D28
_08044548: .4byte 0x02024118
_0804454C: .4byte 0x02023EB3
_08044550: .4byte 0x02023D08
_08044554: .4byte 0x02023EAF
_08044558: .4byte 0x08289D36
_0804455C:
movs r0, #0x58
muls r0, r7, r0
mov r2, r8
adds r1, r0, r2
ldrh r0, [r1, #0x28]
ldrh r3, [r1, #0x2c]
cmp r0, r3
blo _08044570
bl _08044E16
_08044570:
cmp r6, #0
beq _08044578
bl _08044E16
_08044578:
ldr r3, _080445B4
ldrh r0, [r1, #0x2c]
lsrs r0, r0, #4
str r0, [r3]
cmp r0, #0
bne _08044588
movs r0, #1
str r0, [r3]
_08044588:
ldrh r2, [r1, #0x28]
ldr r0, [r3]
adds r0, r2, r0
ldrh r1, [r1, #0x2c]
cmp r0, r1
ble _08044598
subs r0, r1, r2
str r0, [r3]
_08044598:
ldr r0, [r3]
rsbs r0, r0, #0
str r0, [r3]
ldr r0, _080445B8
bl BattleScriptExecute
movs r0, #4
str r0, [sp, #0xc]
adds r0, r7, #0
adds r1, r5, #0
bl RecordItemEffectBattle
bl _08044E16
.align 2, 0
_080445B4: .4byte 0x02023E94
_080445B8: .4byte 0x08289D79
_080445BC:
movs r0, #0x58
adds r1, r7, #0
muls r1, r0, r1
str r1, [sp, #0x18]
adds r4, r1, #0
add r4, r8
ldrh r0, [r4, #0x2c]
ldrh r1, [r4, #0x28]
lsrs r0, r0, #1
cmp r1, r0
bls _080445D6
bl _08044E16
_080445D6:
cmp r6, #0
beq _080445DE
bl _08044E16
_080445DE:
ldr r1, _08044634
movs r0, #0xfd
strb r0, [r1]
movs r0, #8
strb r0, [r1, #1]
strb r6, [r1, #2]
movs r0, #0xff
strb r0, [r1, #3]
ldr r5, _08044638
ldrh r0, [r4, #0x2c]
mov r1, sb
bl __divsi3
str r0, [r5]
cmp r0, #0
bne _08044602
movs r0, #1
str r0, [r5]
_08044602:
ldrh r2, [r4, #0x28]
ldr r0, [r5]
adds r0, r2, r0
ldrh r1, [r4, #0x2c]
cmp r0, r1
ble _08044612
subs r0, r1, r2
str r0, [r5]
_08044612:
ldr r0, [r5]
rsbs r0, r0, #0
str r0, [r5]
mov r0, r8
adds r0, #0x48
ldr r2, [sp, #0x18]
adds r0, r2, r0
ldr r0, [r0]
movs r1, #0
bl sub_0806E30C
lsls r0, r0, #0x18
cmp r0, #0
bge _08044630
b _080447BC
_08044630:
b _080447D0
.align 2, 0
_08044634: .4byte 0x02022C0C
_08044638: .4byte 0x02023E94
_0804463C:
movs r0, #0x58
adds r5, r7, #0
muls r5, r0, r5
str r5, [sp, #0x1c]
add r5, r8
ldrh r0, [r5, #0x2c]
ldrh r1, [r5, #0x28]
lsrs r0, r0, #1
cmp r1, r0
bls _08044654
bl _08044E16
_08044654:
cmp r6, #0
beq _0804465C
bl _08044E16
_0804465C:
ldr r1, _080446B0
movs r0, #0xfd
strb r0, [r1]
movs r0, #8
strb r0, [r1, #1]
movs r6, #1
strb r6, [r1, #2]
movs r0, #0xff
strb r0, [r1, #3]
ldr r4, _080446B4
ldrh r0, [r5, #0x2c]
mov r1, sb
bl __divsi3
str r0, [r4]
cmp r0, #0
bne _08044680
str r6, [r4]
_08044680:
ldrh r2, [r5, #0x28]
ldr r0, [r4]
adds r0, r2, r0
ldrh r1, [r5, #0x2c]
cmp r0, r1
ble _08044690
subs r0, r1, r2
str r0, [r4]
_08044690:
ldr r0, [r4]
rsbs r0, r0, #0
str r0, [r4]
mov r0, r8
adds r0, #0x48
ldr r1, [sp, #0x1c]
adds r0, r1, r0
ldr r0, [r0]
movs r1, #1
bl sub_0806E30C
lsls r0, r0, #0x18
cmp r0, #0
bge _080446AE
b _0804484E
_080446AE:
b _08044864
.align 2, 0
_080446B0: .4byte 0x02022C0C
_080446B4: .4byte 0x02023E94
_080446B8:
movs r0, #0x58
adds r3, r7, #0
muls r3, r0, r3
str r3, [sp, #0x20]
adds r5, r3, #0
add r5, r8
ldrh r0, [r5, #0x2c]
ldrh r1, [r5, #0x28]
lsrs r0, r0, #1
cmp r1, r0
bls _080446D0
b _08044E16
_080446D0:
cmp r6, #0
beq _080446D6
b _08044E16
_080446D6:
ldr r1, _08044730
movs r0, #0xfd
strb r0, [r1]
movs r0, #8
strb r0, [r1, #1]
movs r0, #2
strb r0, [r1, #2]
movs r0, #0xff
strb r0, [r1, #3]
ldr r4, _08044734
ldrh r0, [r5, #0x2c]
mov r1, sb
bl __divsi3
str r0, [r4]
cmp r0, #0
bne _080446FC
movs r0, #1
str r0, [r4]
_080446FC:
ldrh r2, [r5, #0x28]
ldr r0, [r4]
adds r0, r2, r0
ldrh r1, [r5, #0x2c]
cmp r0, r1
ble _0804470C
subs r0, r1, r2
str r0, [r4]
_0804470C:
ldr r0, [r4]
rsbs r0, r0, #0
str r0, [r4]
mov r0, r8
adds r0, #0x48
ldr r5, [sp, #0x20]
adds r0, r5, r0
ldr r0, [r0]
movs r1, #2
bl sub_0806E30C
lsls r0, r0, #0x18
cmp r0, #0
bge _0804473C
ldr r0, _08044738
bl BattleScriptExecute
b _08044742
.align 2, 0
_08044730: .4byte 0x02022C0C
_08044734: .4byte 0x02023E94
_08044738: .4byte 0x08289DAC
_0804473C:
ldr r0, _08044748
bl BattleScriptExecute
_08044742:
movs r0, #4
str r0, [sp, #0xc]
b _08044E1E
.align 2, 0
_08044748: .4byte 0x08289D4C
_0804474C:
movs r0, #0x58
adds r1, r7, #0
muls r1, r0, r1
str r1, [sp, #0x24]
adds r5, r1, #0
add r5, r8
ldrh r0, [r5, #0x2c]
ldrh r1, [r5, #0x28]
lsrs r0, r0, #1
cmp r1, r0
bls _08044764
b _08044E16
_08044764:
cmp r6, #0
beq _0804476A
b _08044E16
_0804476A:
ldr r1, _080447C4
movs r0, #0xfd
strb r0, [r1]
movs r0, #8
strb r0, [r1, #1]
movs r0, #3
strb r0, [r1, #2]
movs r0, #0xff
strb r0, [r1, #3]
ldr r4, _080447C8
ldrh r0, [r5, #0x2c]
mov r1, sb
bl __divsi3
str r0, [r4]
cmp r0, #0
bne _08044790
movs r0, #1
str r0, [r4]
_08044790:
ldrh r2, [r5, #0x28]
ldr r0, [r4]
adds r0, r2, r0
ldrh r1, [r5, #0x2c]
cmp r0, r1
ble _080447A0
subs r0, r1, r2
str r0, [r4]
_080447A0:
ldr r0, [r4]
rsbs r0, r0, #0
str r0, [r4]
mov r0, r8
adds r0, #0x48
ldr r2, [sp, #0x24]
adds r0, r2, r0
ldr r0, [r0]
movs r1, #3
bl sub_0806E30C
lsls r0, r0, #0x18
cmp r0, #0
bge _080447D0
_080447BC:
ldr r0, _080447CC
bl BattleScriptExecute
b _080447D6
.align 2, 0
_080447C4: .4byte 0x02022C0C
_080447C8: .4byte 0x02023E94
_080447CC: .4byte 0x08289DAC
_080447D0:
ldr r0, _080447DC
bl BattleScriptExecute
_080447D6:
movs r3, #4
str r3, [sp, #0xc]
b _08044E1E
.align 2, 0
_080447DC: .4byte 0x08289D4C
_080447E0:
movs r0, #0x58
adds r5, r7, #0
muls r5, r0, r5
str r5, [sp, #0x28]
add r5, r8
ldrh r0, [r5, #0x2c]
ldrh r1, [r5, #0x28]
lsrs r0, r0, #1
cmp r1, r0
bls _080447F6
b _08044E16
_080447F6:
cmp r6, #0
beq _080447FC
b _08044E16
_080447FC:
ldr r1, _08044858
movs r0, #0xfd
strb r0, [r1]
movs r0, #8
strb r0, [r1, #1]
movs r0, #4
strb r0, [r1, #2]
movs r0, #0xff
strb r0, [r1, #3]
ldr r4, _0804485C
ldrh r0, [r5, #0x2c]
mov r1, sb
bl __divsi3
str r0, [r4]
cmp r0, #0
bne _08044822
movs r0, #1
str r0, [r4]
_08044822:
ldrh r2, [r5, #0x28]
ldr r0, [r4]
adds r0, r2, r0
ldrh r1, [r5, #0x2c]
cmp r0, r1
ble _08044832
subs r0, r1, r2
str r0, [r4]
_08044832:
ldr r0, [r4]
rsbs r0, r0, #0
str r0, [r4]
mov r0, r8
adds r0, #0x48
ldr r1, [sp, #0x28]
adds r0, r1, r0
ldr r0, [r0]
movs r1, #4
bl sub_0806E30C
lsls r0, r0, #0x18
cmp r0, #0
bge _08044864
_0804484E:
ldr r0, _08044860
bl BattleScriptExecute
b _0804486A
.align 2, 0
_08044858: .4byte 0x02022C0C
_0804485C: .4byte 0x02023E94
_08044860: .4byte 0x08289DAC
_08044864:
ldr r0, _08044870
bl BattleScriptExecute
_0804486A:
movs r2, #4
str r2, [sp, #0xc]
b _08044E1E
.align 2, 0
_08044870: .4byte 0x08289D4C
_08044874:
movs r0, #0x58
muls r0, r7, r0
mov r3, r8
adds r5, r0, r3
ldrh r4, [r5, #0x28]
ldrh r0, [r5, #0x2c]
mov r1, sb
bl __divsi3
cmp r4, r0
ble _0804488C
b _08044E16
_0804488C:
cmp r6, #0
beq _08044892
b _08044E16
_08044892:
movs r0, #0x19
ldrsb r0, [r5, r0]
cmp r0, #0xb
ble _0804489C
b _08044E16
_0804489C:
ldr r1, _080448CC
movs r2, #0xfd
strb r2, [r1]
movs r0, #5
strb r0, [r1, #1]
movs r0, #1
strb r0, [r1, #2]
movs r0, #0xff
strb r0, [r1, #3]
ldr r1, _080448D0
strb r2, [r1]
strb r6, [r1, #1]
movs r0, #0xd2
strb r0, [r1, #2]
strb r6, [r1, #3]
subs r0, #0xd3
strb r0, [r1, #4]
ldr r0, _080448D4
strb r7, [r0]
ldr r1, _080448D8
movs r0, #0x11
strb r0, [r1, #0x1a]
movs r0, #0xf
b _08044A30
.align 2, 0
_080448CC: .4byte 0x02022C0C
_080448D0: .4byte 0x02022C1C
_080448D4: .4byte 0x02023EB2
_080448D8: .4byte 0x02024118
_080448DC:
movs r0, #0x58
muls r0, r7, r0
mov r1, r8
adds r5, r0, r1
ldrh r4, [r5, #0x28]
ldrh r0, [r5, #0x2c]
mov r1, sb
bl __divsi3
cmp r4, r0
ble _080448F4
b _08044E16
_080448F4:
cmp r6, #0
beq _080448FA
b _08044E16
_080448FA:
movs r0, #0x1a
ldrsb r0, [r5, r0]
cmp r0, #0xb
ble _08044904
b _08044E16
_08044904:
ldr r1, _08044924
movs r0, #0xfd
strb r0, [r1]
movs r0, #5
strb r0, [r1, #1]
movs r0, #2
strb r0, [r1, #2]
movs r0, #0xff
strb r0, [r1, #3]
ldr r0, _08044928
strb r7, [r0]
ldr r1, _0804492C
movs r0, #0x12
strb r0, [r1, #0x1a]
movs r0, #0x10
b _080449CA
.align 2, 0
_08044924: .4byte 0x02022C0C
_08044928: .4byte 0x02023EB2
_0804492C: .4byte 0x02024118
_08044930:
movs r0, #0x58
muls r0, r7, r0
mov r3, r8
adds r5, r0, r3
ldrh r4, [r5, #0x28]
ldrh r0, [r5, #0x2c]
mov r1, sb
bl __divsi3
cmp r4, r0
ble _08044948
b _08044E16
_08044948:
cmp r6, #0
beq _0804494E
b _08044E16
_0804494E:
movs r0, #0x1b
ldrsb r0, [r5, r0]
cmp r0, #0xb
ble _08044958
b _08044E16
_08044958:
ldr r1, _08044978
movs r0, #0xfd
strb r0, [r1]
movs r0, #5
strb r0, [r1, #1]
movs r0, #3
strb r0, [r1, #2]
movs r0, #0xff
strb r0, [r1, #3]
ldr r0, _0804497C
strb r7, [r0]
ldr r1, _08044980
movs r0, #0x13
strb r0, [r1, #0x1a]
movs r0, #0x11
b _08044A30
.align 2, 0
_08044978: .4byte 0x02022C0C
_0804497C: .4byte 0x02023EB2
_08044980: .4byte 0x02024118
_08044984:
movs r0, #0x58
muls r0, r7, r0
mov r1, r8
adds r5, r0, r1
ldrh r4, [r5, #0x28]
ldrh r0, [r5, #0x2c]
mov r1, sb
bl __divsi3
cmp r4, r0
ble _0804499C
b _08044E16
_0804499C:
cmp r6, #0
beq _080449A2
b _08044E16
_080449A2:
movs r0, #0x1c
ldrsb r0, [r5, r0]
cmp r0, #0xb
ble _080449AC
b _08044E16
_080449AC:
ldr r1, _080449DC
movs r0, #0xfd
strb r0, [r1]
movs r0, #5
strb r0, [r1, #1]
movs r0, #4
strb r0, [r1, #2]
movs r0, #0xff
strb r0, [r1, #3]
ldr r0, _080449E0
strb r7, [r0]
ldr r1, _080449E4
movs r0, #0x14
strb r0, [r1, #0x1a]
movs r0, #0x12
_080449CA:
strb r0, [r1, #0x10]
strb r6, [r1, #0x11]
ldr r0, _080449E8
bl BattleScriptExecute
movs r2, #5
str r2, [sp, #0xc]
b _08044E1E
.align 2, 0
_080449DC: .4byte 0x02022C0C
_080449E0: .4byte 0x02023EB2
_080449E4: .4byte 0x02024118
_080449E8: .4byte 0x08289DD6
_080449EC:
movs r0, #0x58
muls r0, r7, r0
mov r3, r8
adds r5, r0, r3
ldrh r4, [r5, #0x28]
ldrh r0, [r5, #0x2c]
mov r1, sb
bl __divsi3
cmp r4, r0
ble _08044A04
b _08044E16
_08044A04:
cmp r6, #0
beq _08044A0A
b _08044E16
_08044A0A:
movs r0, #0x1d
ldrsb r0, [r5, r0]
cmp r0, #0xb
ble _08044A14
b _08044E16
_08044A14:
ldr r1, _08044A40
movs r0, #0xfd
strb r0, [r1]
movs r0, #5
strb r0, [r1, #1]
strb r0, [r1, #2]
movs r0, #0xff
strb r0, [r1, #3]
ldr r0, _08044A44
strb r7, [r0]
ldr r1, _08044A48
movs r0, #0x15
strb r0, [r1, #0x1a]
movs r0, #0x13
_08044A30:
strb r0, [r1, #0x10]
strb r6, [r1, #0x11]
ldr r0, _08044A4C
bl BattleScriptExecute
movs r5, #5
str r5, [sp, #0xc]
b _08044E1E
.align 2, 0
_08044A40: .4byte 0x02022C0C
_08044A44: .4byte 0x02023EB2
_08044A48: .4byte 0x02024118
_08044A4C: .4byte 0x08289DD6
_08044A50:
movs r0, #0x58
adds r5, r7, #0
muls r5, r0, r5
mov r1, r8
adds r0, r5, r1
ldrh r4, [r0, #0x28]
ldrh r0, [r0, #0x2c]
mov r1, sb
bl __divsi3
cmp r4, r0
ble _08044A6A
b _08044E16
_08044A6A:
cmp r6, #0
beq _08044A70
b _08044E16
_08044A70:
mov r0, r8
adds r0, #0x50
adds r1, r5, r0
ldr r2, [r1]
movs r3, #0x80
lsls r3, r3, #0xd
adds r0, r2, #0
ands r0, r3
cmp r0, #0
beq _08044A86
b _08044E16
_08044A86:
orrs r2, r3
str r2, [r1]
ldr r0, _08044A98
bl BattleScriptExecute
movs r2, #2
str r2, [sp, #0xc]
b _08044E1E
.align 2, 0
_08044A98: .4byte 0x08289DF1
_08044A9C:
cmp r6, #0
beq _08044AA2
b _08044E16
_08044AA2:
movs r0, #0x58
adds r5, r7, #0
muls r5, r0, r5
mov r3, r8
adds r0, r5, r3
ldrh r4, [r0, #0x28]
ldrh r0, [r0, #0x2c]
mov r1, sb
bl __divsi3
cmp r4, r0
ble _08044ABC
b _08044E16
_08044ABC:
movs r0, #0
mov sl, r0
adds r0, r5, #1
mov r1, r8
adds r1, #0x18
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0xb
ble _08044AEC
mov r0, r8
adds r0, #0x19
adds r1, r5, r0
_08044AD8:
adds r1, #1
movs r2, #1
add sl, r2
mov r3, sl
cmp r3, #4
bgt _08044AEC
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0xb
bgt _08044AD8
_08044AEC:
mov r5, sl
cmp r5, #5
bne _08044AF4
b _08044E16
_08044AF4:
movs r0, #0x58
muls r0, r7, r0
adds r4, r0, #1
ldr r5, _08044B6C
_08044AFC:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #5
bl __umodsi3
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov sl, r0
adds r0, r0, r4
adds r0, r0, r5
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0xc
beq _08044AFC
ldr r1, _08044B70
movs r2, #0
movs r3, #0xfd
strb r3, [r1]
movs r0, #5
strb r0, [r1, #1]
mov r0, sl
adds r0, #1
strb r0, [r1, #2]
movs r0, #0xff
strb r0, [r1, #3]
ldr r0, _08044B74
strb r3, [r0]
strb r2, [r0, #1]
movs r1, #0xd1
strb r1, [r0, #2]
strb r2, [r0, #3]
strb r2, [r0, #4]
movs r1, #0xd2
strb r1, [r0, #5]
strb r2, [r0, #6]
subs r1, #0xd3
strb r1, [r0, #7]
ldr r0, _08044B78
strb r7, [r0]
ldr r1, _08044B7C
mov r0, sl
adds r0, #0x21
strb r0, [r1, #0x1a]
adds r0, #6
strb r0, [r1, #0x10]
strb r2, [r1, #0x11]
ldr r0, _08044B80
bl BattleScriptExecute
movs r0, #5
str r0, [sp, #0xc]
b _08044E1E
.align 2, 0
_08044B6C: .4byte 0x02023D40
_08044B70: .4byte 0x02022C0C
_08044B74: .4byte 0x02022C1C
_08044B78: .4byte 0x02023EB2
_08044B7C: .4byte 0x02024118
_08044B80: .4byte 0x08289DD6
_08044B84:
movs r0, #0x58
adds r1, r7, #0
muls r1, r0, r1
mov r0, r8
adds r0, #0x4c
adds r1, r1, r0
ldr r2, [r1]
movs r0, #0x40
ands r0, r2
cmp r0, #0
bne _08044B9C
b _08044E16
_08044B9C:
movs r0, #0x41
rsbs r0, r0, #0
ands r2, r0
str r2, [r1]
ldr r0, _08044BB0
bl BattleScriptExecute
movs r1, #1
str r1, [sp, #0xc]
b _08044E1E
.align 2, 0
_08044BB0: .4byte 0x08289C8E
_08044BB4:
movs r0, #0x58
adds r1, r7, #0
muls r1, r0, r1
mov r0, r8
adds r0, #0x4c
adds r1, r1, r0
ldr r2, [r1]
movs r0, #0x88
ands r0, r2
cmp r0, #0
bne _08044BCC
b _08044E16
_08044BCC:
ldr r0, _08044BE0
ands r2, r0
str r2, [r1]
ldr r0, _08044BE4
bl BattleScriptExecute
movs r2, #1
str r2, [sp, #0xc]
b _08044E1E
.align 2, 0
_08044BE0: .4byte 0xFFFFF077
_08044BE4: .4byte 0x08289CA6
_08044BE8:
movs r0, #0x58
adds r1, r7, #0
muls r1, r0, r1
mov r0, r8
adds r0, #0x4c
adds r1, r1, r0
ldr r2, [r1]
movs r0, #0x10
ands r0, r2
cmp r0, #0
bne _08044C00
b _08044E16
_08044C00:
movs r0, #0x11
rsbs r0, r0, #0
ands r2, r0
str r2, [r1]
ldr r0, _08044C14
bl BattleScriptExecute
movs r3, #1
str r3, [sp, #0xc]
b _08044E1E
.align 2, 0
_08044C14: .4byte 0x08289CBE
_08044C18:
movs r0, #0x58
adds r1, r7, #0
muls r1, r0, r1
mov r0, r8
adds r0, #0x4c
adds r1, r1, r0
ldr r2, [r1]
movs r0, #0x20
ands r0, r2
cmp r0, #0
bne _08044C30
b _08044E16
_08044C30:
movs r0, #0x21
rsbs r0, r0, #0
ands r2, r0
str r2, [r1]
ldr r0, _08044C44
bl BattleScriptExecute
movs r5, #1
str r5, [sp, #0xc]
b _08044E1E
.align 2, 0
_08044C44: .4byte 0x08289CD6
_08044C48:
movs r0, #0x58
adds r3, r7, #0
muls r3, r0, r3
mov r0, r8
adds r0, #0x4c
adds r2, r3, r0
ldr r1, [r2]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _08044C60
b _08044E16
_08044C60:
movs r0, #8
rsbs r0, r0, #0
ands r1, r0
str r1, [r2]
mov r1, r8
adds r1, #0x50
adds r1, r3, r1
ldr r0, [r1]
ldr r2, _08044C7C
ands r0, r2
str r0, [r1]
ldr r0, _08044C80
b _08044DCA
.align 2, 0
_08044C7C: .4byte 0xF7FFFFFF
_08044C80: .4byte 0x08289CEE
_08044C84:
movs r0, #0x58
adds r1, r7, #0
muls r1, r0, r1
mov r0, r8
adds r0, #0x50
adds r1, r1, r0
ldr r2, [r1]
movs r0, #7
ands r0, r2
cmp r0, #0
bne _08044C9C
b _08044E16
_08044C9C:
movs r0, #8
rsbs r0, r0, #0
ands r2, r0
str r2, [r1]
ldr r0, _08044CB0
bl BattleScriptExecute
movs r1, #2
str r1, [sp, #0xc]
b _08044E1E
.align 2, 0
_08044CB0: .4byte 0x08289D06
_08044CB4:
movs r0, #0x58
adds r5, r7, #0
muls r5, r0, r5
mov r0, r8
adds r0, #0x4c
adds r4, r5, r0
ldr r2, [r4]
ldrb r0, [r4]
cmp r0, #0
bne _08044CDA
mov r0, r8
adds r0, #0x50
adds r0, r5, r0
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _08044CDA
b _08044E16
_08044CDA:
movs r3, #0
mov sl, r3
movs r0, #0x88
ands r2, r0
cmp r2, #0
beq _08044CF2
ldr r0, _08044D80
ldr r1, _08044D84
bl StringCopy
movs r0, #1
mov sl, r0
_08044CF2:
ldr r0, [r4]
movs r1, #7
mov sb, r1
ands r0, r1
mov r6, r8
adds r6, #0x50
cmp r0, #0
beq _08044D18
adds r2, r5, r6
ldr r0, [r2]
ldr r1, _08044D88
ands r0, r1
str r0, [r2]
ldr r0, _08044D80
ldr r1, _08044D8C
bl StringCopy
movs r2, #1
add sl, r2
_08044D18:
ldr r0, [r4]
movs r1, #0x40
ands r0, r1
cmp r0, #0
beq _08044D2E
ldr r0, _08044D80
ldr r1, _08044D90
bl StringCopy
movs r3, #1
add sl, r3
_08044D2E:
ldr r0, [r4]
movs r1, #0x10
ands r0, r1
cmp r0, #0
beq _08044D44
ldr r0, _08044D80
ldr r1, _08044D94
bl StringCopy
movs r0, #1
add sl, r0
_08044D44:
ldr r0, [r4]
movs r1, #0x20
ands r0, r1
cmp r0, #0
beq _08044D5A
ldr r0, _08044D80
ldr r1, _08044D98
bl StringCopy
movs r1, #1
add sl, r1
_08044D5A:
adds r0, r5, r6
ldr r0, [r0]
mov r2, sb
ands r0, r2
cmp r0, #0
beq _08044D72
ldr r0, _08044D80
ldr r1, _08044D9C
bl StringCopy
movs r3, #1
add sl, r3
_08044D72:
mov r5, sl
cmp r5, #1
bgt _08044DA4
ldr r1, _08044DA0
movs r0, #0
b _08044DA8
.align 2, 0
_08044D80: .4byte 0x02022C0C
_08044D84: .4byte 0x085ABC54
_08044D88: .4byte 0xF7FFFFFF
_08044D8C: .4byte 0x085ABC50
_08044D90: .4byte 0x085ABC5B
_08044D94: .4byte 0x085ABC57
_08044D98: .4byte 0x085ABC5E
_08044D9C: .4byte 0x085ABC62
_08044DA0: .4byte 0x02023FD6
_08044DA4:
ldr r1, _08044DD4
movs r0, #1
_08044DA8:
strb r0, [r1, #5]
ldr r2, _08044DD8
movs r0, #0x58
adds r3, r7, #0
muls r3, r0, r3
adds r0, r2, #0
adds r0, #0x4c
adds r0, r3, r0
movs r1, #0
str r1, [r0]
adds r2, #0x50
adds r3, r3, r2
ldr r0, [r3]
subs r1, #8
ands r0, r1
str r0, [r3]
ldr r0, _08044DDC
_08044DCA:
bl BattleScriptExecute
movs r0, #1
str r0, [sp, #0xc]
b _08044E1E
.align 2, 0
_08044DD4: .4byte 0x02023FD6
_08044DD8: .4byte 0x02023D28
_08044DDC: .4byte 0x08289D1C
_08044DE0:
movs r0, #0x58
adds r1, r7, #0
muls r1, r0, r1
mov r0, r8
adds r0, #0x50
adds r1, r1, r0
ldr r2, [r1]
movs r0, #0xf0
lsls r0, r0, #0xc
ands r0, r2
cmp r0, #0
beq _08044E16
ldr r0, _08044E3C
ands r2, r0
str r2, [r1]
ldr r0, _08044E40
ldr r1, _08044E44
bl StringCopy
ldr r0, _08044E48
bl BattleScriptExecute
ldr r1, _08044E4C
movs r0, #0
strb r0, [r1, #5]
movs r1, #2
str r1, [sp, #0xc]
_08044E16:
ldr r2, [sp, #0xc]
cmp r2, #0
bne _08044E1E
b _0804546A
_08044E1E:
ldr r0, _08044E50
strb r7, [r0, #0x17]
ldr r0, _08044E54
strb r7, [r0]
ldr r4, _08044E58
ldr r0, _08044E5C
strb r7, [r0]
strb r7, [r4]
ldr r3, [sp, #0xc]
cmp r3, #1
beq _08044E60
cmp r3, #3
beq _08044E66
b _0804546A
.align 2, 0
_08044E3C: .4byte 0xFFF0FFFF
_08044E40: .4byte 0x02022C0C
_08044E44: .4byte 0x085ABC67
_08044E48: .4byte 0x08289D1C
_08044E4C: .4byte 0x02023FD6
_08044E50: .4byte 0x02024118
_08044E54: .4byte 0x02023EB3
_08044E58: .4byte 0x02023D08
_08044E5C: .4byte 0x02023EAF
_08044E60:
movs r0, #0x58
muls r0, r7, r0
b _080452CC
_08044E66:
ldr r4, _08044EB4
movs r0, #0x58
adds r3, r7, #0
muls r3, r0, r3
adds r0, r4, #0
adds r0, #0x50
adds r0, r3, r0
ldr r0, [r0]
movs r1, #0x80
lsls r1, r1, #0xe
ands r0, r1
cmp r0, #0
beq _08044E82
b _0804546A
_08044E82:
ldr r1, _08044EB8
lsls r0, r7, #3
subs r0, r0, r7
lsls r0, r0, #2
adds r0, r0, r1
ldrb r1, [r0, #0x18]
lsrs r1, r1, #4
ldr r2, _08044EBC
mov r5, sl
lsls r0, r5, #2
adds r0, r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, #0
beq _08044EA2
b _0804546A
_08044EA2:
adds r1, r5, r3
adds r0, r4, #0
adds r0, #0x24
adds r1, r1, r0
add r0, sp, #4
ldrb r0, [r0]
strb r0, [r1]
b _0804546A
.align 2, 0
_08044EB4: .4byte 0x02023D28
_08044EB8: .4byte 0x02023F60
_08044EBC: .4byte 0x082FACB4
_08044EC0:
movs r7, #0
ldr r0, _08044EF0
ldrb r0, [r0]
cmp r7, r0
blo _08044ECC
b _0804546A
_08044ECC:
ldr r4, _08044EF4
ldr r1, _08044EF8
movs r0, #0x58
muls r0, r7, r0
adds r0, r0, r1
ldrh r0, [r0, #0x2e]
strh r0, [r4]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0xaf
bne _08044F00
ldr r1, _08044EFC
lsls r0, r7, #3
subs r0, r0, r7
lsls r0, r0, #2
adds r0, r0, r1
ldrb r5, [r0, #7]
b _08044F10
.align 2, 0
_08044EF0: .4byte 0x02023D10
_08044EF4: .4byte 0x02023EAC
_08044EF8: .4byte 0x02023D28
_08044EFC: .4byte 0x020240A8
_08044F00:
ldrh r0, [r4]
bl sub_080D6CF8
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
ldrh r0, [r4]
bl sub_080D6D1C
_08044F10:
subs r0, r5, #2
cmp r0, #0x1a
bls _08044F18
b _080452B4
_08044F18:
lsls r0, r0, #2
ldr r1, _08044F24
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08044F24: .4byte 0x08044F28
_08044F28: @ jump table
.4byte _08044F94 @ case 0
.4byte _08045084 @ case 1
.4byte _08044FD0 @ case 2
.4byte _0804500C @ case 3
.4byte _08045048 @ case 4
.4byte _080452B4 @ case 5
.4byte _080450CC @ case 6
.4byte _08045160 @ case 7
.4byte _080452B4 @ case 8
.4byte _080452B4 @ case 9
.4byte _080452B4 @ case 10
.4byte _080452B4 @ case 11
.4byte _080452B4 @ case 12
.4byte _080452B4 @ case 13
.4byte _080452B4 @ case 14
.4byte _080452B4 @ case 15
.4byte _080452B4 @ case 16
.4byte _080452B4 @ case 17
.4byte _080452B4 @ case 18
.4byte _080452B4 @ case 19
.4byte _080452B4 @ case 20
.4byte _08045254 @ case 21
.4byte _080452B4 @ case 22
.4byte _080452B4 @ case 23
.4byte _080452B4 @ case 24
.4byte _080452B4 @ case 25
.4byte _08045108 @ case 26
_08044F94:
ldr r1, _08044FC4
movs r0, #0x58
muls r0, r7, r0
adds r1, #0x4c
adds r2, r0, r1
ldr r1, [r2]
movs r0, #0x40
ands r0, r1
cmp r0, #0
bne _08044FAA
b _080452B4
_08044FAA:
movs r0, #0x41
rsbs r0, r0, #0
ands r1, r0
str r1, [r2]
bl BattleScriptPushCursor
ldr r1, _08044FC8
ldr r0, _08044FCC
str r0, [r1]
movs r0, #1
str r0, [sp, #0xc]
b _080452BA
.align 2, 0
_08044FC4: .4byte 0x02023D28
_08044FC8: .4byte 0x02023EB8
_08044FCC: .4byte 0x08289C94
_08044FD0:
ldr r1, _08044FFC
movs r0, #0x58
muls r0, r7, r0
adds r1, #0x4c
adds r2, r0, r1
ldr r1, [r2]
movs r0, #0x88
ands r0, r1
cmp r0, #0
bne _08044FE6
b _080452B4
_08044FE6:
ldr r0, _08045000
ands r1, r0
str r1, [r2]
bl BattleScriptPushCursor
ldr r1, _08045004
ldr r0, _08045008
str r0, [r1]
movs r1, #1
str r1, [sp, #0xc]
b _080452BA
.align 2, 0
_08044FFC: .4byte 0x02023D28
_08045000: .4byte 0xFFFFF077
_08045004: .4byte 0x02023EB8
_08045008: .4byte 0x08289CAC
_0804500C:
ldr r1, _0804503C
movs r0, #0x58
muls r0, r7, r0
adds r1, #0x4c
adds r2, r0, r1
ldr r1, [r2]
movs r0, #0x10
ands r0, r1
cmp r0, #0
bne _08045022
b _080452B4
_08045022:
movs r0, #0x11
rsbs r0, r0, #0
ands r1, r0
str r1, [r2]
bl BattleScriptPushCursor
ldr r1, _08045040
ldr r0, _08045044
str r0, [r1]
movs r2, #1
str r2, [sp, #0xc]
b _080452BA
.align 2, 0
_0804503C: .4byte 0x02023D28
_08045040: .4byte 0x02023EB8
_08045044: .4byte 0x08289CC4
_08045048:
ldr r1, _08045078
movs r0, #0x58
muls r0, r7, r0
adds r1, #0x4c
adds r2, r0, r1
ldr r1, [r2]
movs r0, #0x20
ands r0, r1
cmp r0, #0
bne _0804505E
b _080452B4
_0804505E:
movs r0, #0x21
rsbs r0, r0, #0
ands r1, r0
str r1, [r2]
bl BattleScriptPushCursor
ldr r1, _0804507C
ldr r0, _08045080
str r0, [r1]
movs r3, #1
str r3, [sp, #0xc]
b _080452BA
.align 2, 0
_08045078: .4byte 0x02023D28
_0804507C: .4byte 0x02023EB8
_08045080: .4byte 0x08289CDC
_08045084:
ldr r2, _080450BC
movs r0, #0x58
adds r4, r7, #0
muls r4, r0, r4
adds r0, r2, #0
adds r0, #0x4c
adds r3, r4, r0
ldr r1, [r3]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _0804509E
b _080452B4
_0804509E:
movs r0, #8
rsbs r0, r0, #0
ands r1, r0
str r1, [r3]
adds r2, #0x50
adds r2, r4, r2
ldr r0, [r2]
ldr r1, _080450C0
ands r0, r1
str r0, [r2]
bl BattleScriptPushCursor
ldr r1, _080450C4
ldr r0, _080450C8
b _0804521C
.align 2, 0
_080450BC: .4byte 0x02023D28
_080450C0: .4byte 0xF7FFFFFF
_080450C4: .4byte 0x02023EB8
_080450C8: .4byte 0x08289CF4
_080450CC:
ldr r1, _080450FC
movs r0, #0x58
muls r0, r7, r0
adds r1, #0x50
adds r2, r0, r1
ldr r1, [r2]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _080450E2
b _080452B4
_080450E2:
movs r0, #8
rsbs r0, r0, #0
ands r1, r0
str r1, [r2]
bl BattleScriptPushCursor
ldr r1, _08045100
ldr r0, _08045104
str r0, [r1]
movs r0, #2
str r0, [sp, #0xc]
b _080452BA
.align 2, 0
_080450FC: .4byte 0x02023D28
_08045100: .4byte 0x02023EB8
_08045104: .4byte 0x08289D0C
_08045108:
ldr r1, _08045144
movs r0, #0x58
muls r0, r7, r0
adds r1, #0x50
adds r2, r0, r1
ldr r1, [r2]
movs r0, #0xf0
lsls r0, r0, #0xc
ands r0, r1
cmp r0, #0
bne _08045120
b _080452B4
_08045120:
ldr r0, _08045148
ands r1, r0
str r1, [r2]
ldr r0, _0804514C
ldr r1, _08045150
bl StringCopy
bl BattleScriptPushCursor
ldr r1, _08045154
movs r0, #0
strb r0, [r1, #5]
ldr r1, _08045158
ldr r0, _0804515C
str r0, [r1]
movs r1, #2
str r1, [sp, #0xc]
b _080452BA
.align 2, 0
_08045144: .4byte 0x02023D28
_08045148: .4byte 0xFFF0FFFF
_0804514C: .4byte 0x02022C0C
_08045150: .4byte 0x085ABC67
_08045154: .4byte 0x02023FD6
_08045158: .4byte 0x02023EB8
_0804515C: .4byte 0x08289D22
_08045160:
ldr r4, _08045224
movs r0, #0x58
adds r5, r7, #0
muls r5, r0, r5
adds r0, r4, #0
adds r0, #0x4c
adds r6, r5, r0
ldr r2, [r6]
ldrb r0, [r6]
cmp r0, #0
bne _08045188
adds r0, r4, #0
adds r0, #0x50
adds r0, r5, r0
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _08045188
b _080452B4
_08045188:
movs r0, #0x88
ands r2, r0
cmp r2, #0
beq _08045198
ldr r0, _08045228
ldr r1, _0804522C
bl StringCopy
_08045198:
ldr r0, [r6]
movs r2, #7
mov r8, r2
ands r0, r2
adds r4, #0x50
cmp r0, #0
beq _080451B8
adds r2, r5, r4
ldr r0, [r2]
ldr r1, _08045230
ands r0, r1
str r0, [r2]
ldr r0, _08045228
ldr r1, _08045234
bl StringCopy
_080451B8:
ldr r0, [r6]
movs r1, #0x40
ands r0, r1
cmp r0, #0
beq _080451CA
ldr r0, _08045228
ldr r1, _08045238
bl StringCopy
_080451CA:
ldr r0, [r6]
movs r1, #0x10
ands r0, r1
cmp r0, #0
beq _080451DC
ldr r0, _08045228
ldr r1, _0804523C
bl StringCopy
_080451DC:
ldr r0, [r6]
movs r1, #0x20
ands r0, r1
cmp r0, #0
beq _080451EE
ldr r0, _08045228
ldr r1, _08045240
bl StringCopy
_080451EE:
adds r5, r5, r4
ldr r0, [r5]
mov r3, r8
ands r0, r3
cmp r0, #0
beq _08045202
ldr r0, _08045228
ldr r1, _08045244
bl StringCopy
_08045202:
movs r4, #0
str r4, [r6]
ldr r0, [r5]
movs r1, #8
rsbs r1, r1, #0
ands r0, r1
str r0, [r5]
bl BattleScriptPushCursor
ldr r0, _08045248
strb r4, [r0, #5]
ldr r1, _0804524C
ldr r0, _08045250
_0804521C:
str r0, [r1]
movs r5, #1
str r5, [sp, #0xc]
b _080452BA
.align 2, 0
_08045224: .4byte 0x02023D28
_08045228: .4byte 0x02022C0C
_0804522C: .4byte 0x085ABC54
_08045230: .4byte 0xF7FFFFFF
_08045234: .4byte 0x085ABC50
_08045238: .4byte 0x085ABC5B
_0804523C: .4byte 0x085ABC57
_08045240: .4byte 0x085ABC5E
_08045244: .4byte 0x085ABC62
_08045248: .4byte 0x02023FD6
_0804524C: .4byte 0x02023EB8
_08045250: .4byte 0x08289D22
_08045254:
ldr r0, _080452A0
mov r8, r0
movs r0, #0x58
adds r1, r7, #0
muls r1, r0, r1
mov r0, r8
adds r0, #0x18
adds r1, r1, r0
movs r2, #6
movs r3, #7
mov sl, r3
_0804526A:
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #5
bgt _08045278
strb r2, [r1]
movs r5, #5
str r5, [sp, #0xc]
_08045278:
adds r1, #1
movs r0, #1
rsbs r0, r0, #0
add sl, r0
mov r3, sl
cmp r3, #0
bge _0804526A
ldr r5, [sp, #0xc]
cmp r5, #0
beq _080452F8
ldr r0, _080452A4
strb r7, [r0, #0x17]
ldr r0, _080452A8
strb r7, [r0]
bl BattleScriptPushCursor
ldr r1, _080452AC
ldr r0, _080452B0
str r0, [r1]
b _0804546A
.align 2, 0
_080452A0: .4byte 0x02023D28
_080452A4: .4byte 0x02024118
_080452A8: .4byte 0x02023EB3
_080452AC: .4byte 0x02023EB8
_080452B0: .4byte 0x08289D3C
_080452B4:
ldr r0, [sp, #0xc]
cmp r0, #0
beq _080452F8
_080452BA:
ldr r0, _080452E8
strb r7, [r0, #0x17]
ldr r0, _080452EC
strb r7, [r0]
ldr r4, _080452F0
strb r7, [r4]
ldrb r1, [r4]
movs r0, #0x58
muls r0, r1, r0
_080452CC:
ldr r1, _080452F4
adds r0, r0, r1
str r0, [sp]
movs r0, #0
movs r1, #0x28
movs r2, #0
movs r3, #4
bl BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
b _0804546A
.align 2, 0
_080452E8: .4byte 0x02024118
_080452EC: .4byte 0x02023EB3
_080452F0: .4byte 0x02023D08
_080452F4: .4byte 0x02023D74
_080452F8:
adds r0, r7, #1
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
ldr r0, _0804530C
ldrb r0, [r0]
cmp r7, r0
bhs _08045308
b _08044ECC
_08045308:
b _0804546A
.align 2, 0
_0804530C: .4byte 0x02023D10
_08045310:
ldr r7, _08045328
ldr r0, [r7]
cmp r0, #0
bne _0804531A
b _0804546A
_0804531A:
mov r1, r8
cmp r1, #0x1e
beq _0804532C
cmp r1, #0x3e
beq _080453D4
b _0804546A
.align 2, 0
_08045328: .4byte 0x02023E94
_0804532C:
ldr r0, _080453B8
ldrb r1, [r0]
movs r0, #0x29
ands r0, r1
cmp r0, #0
beq _0804533A
b _0804546A
_0804533A:
ldr r2, _080453BC
ldr r4, _080453C0
ldrb r1, [r4]
lsls r0, r1, #2
adds r0, r0, r1
lsls r1, r0, #2
adds r0, r2, #0
adds r0, #8
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _08045360
adds r0, r2, #0
adds r0, #0xc
adds r0, r1, r0
ldr r0, [r0]
cmp r0, #0
bne _08045360
b _0804546A
_08045360:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #0x64
bl __umodsi3
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r2, [sp, #0x10]
cmp r0, r2
bhs _0804546A
ldr r2, _080453C4
ldr r0, _080453C8
ldrh r1, [r0]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrb r1, [r0, #8]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _0804546A
ldr r2, _080453CC
ldrb r1, [r4]
movs r0, #0x58
muls r0, r1, r0
adds r0, r0, r2
ldrh r0, [r0, #0x28]
cmp r0, #0
beq _0804546A
ldr r1, _080453D0
movs r0, #8
strb r0, [r1, #3]
bl BattleScriptPushCursor
movs r0, #0
movs r1, #0
bl SetMoveEffect
bl HandleAction_RunBattleScript
b _0804546A
.align 2, 0
_080453B8: .4byte 0x02023F20
_080453BC: .4byte 0x02024020
_080453C0: .4byte 0x02023EB0
_080453C4: .4byte 0x082ED220
_080453C8: .4byte 0x02023E8E
_080453CC: .4byte 0x02023D28
_080453D0: .4byte 0x02023FD6
_080453D4:
ldr r0, _0804547C
ldrb r0, [r0]
movs r5, #0x29
ands r5, r0
cmp r5, #0
bne _0804546A
ldr r1, _08045480
ldr r4, _08045484
ldrb r2, [r4]
lsls r0, r2, #2
adds r0, r0, r2
lsls r0, r0, #2
adds r6, r1, #4
adds r0, r0, r6
ldr r1, [r0]
cmp r1, #0
beq _0804546A
ldr r0, _08045488
cmp r1, r0
beq _0804546A
ldr r0, _0804548C
ldrb r3, [r0]
cmp r3, r2
beq _0804546A
ldr r2, _08045490
ldrb r1, [r0]
movs r0, #0x58
muls r0, r1, r0
adds r0, r0, r2
ldrh r1, [r0, #0x28]
ldrh r0, [r0, #0x2c]
cmp r1, r0
beq _0804546A
cmp r1, #0
beq _0804546A
ldr r0, _08045494
mov r1, sp
ldrh r1, [r1, #0x14]
strh r1, [r0]
ldr r0, _08045498
strb r3, [r0]
ldr r0, _0804549C
strb r3, [r0, #0x17]
ldrb r1, [r4]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r6
ldr r0, [r0]
ldr r1, [sp, #0x10]
bl __divsi3
rsbs r0, r0, #0
str r0, [r7]
ldrb r1, [r4]
cmp r0, #0
bne _0804544C
movs r0, #1
rsbs r0, r0, #0
str r0, [r7]
_0804544C:
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r6
str r5, [r0]
bl BattleScriptPushCursor
ldr r1, _080454A0
ldr r0, _080454A4
str r0, [r1]
ldr r0, [sp, #0xc]
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
str r0, [sp, #0xc]
_0804546A:
ldr r0, [sp, #0xc]
add sp, #0x2c
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_0804547C: .4byte 0x02023F20
_08045480: .4byte 0x02024020
_08045484: .4byte 0x02023EB0
_08045488: .4byte 0x0000FFFF
_0804548C: .4byte 0x02023EAF
_08045490: .4byte 0x02023D28
_08045494: .4byte 0x02023EAC
_08045498: .4byte 0x02023EB3
_0804549C: .4byte 0x02024118
_080454A0: .4byte 0x02023EB8
_080454A4: .4byte 0x08289D7F
thumb_func_end ItemBattleEffects
thumb_func_start ClearFuryCutterDestinyBondGrudge
ClearFuryCutterDestinyBondGrudge: @ 0x080454A8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r2, _080454E0
lsls r1, r0, #3
subs r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
movs r2, #0
strb r2, [r1, #0x10]
ldr r1, _080454E4
movs r2, #0x58
adds r3, r0, #0
muls r3, r2, r3
adds r1, #0x50
adds r3, r3, r1
ldr r1, [r3]
ldr r2, _080454E8
ands r1, r2
str r1, [r3]
ldr r1, _080454EC
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
ldr r2, _080454F0
ands r1, r2
str r1, [r0]
bx lr
.align 2, 0
_080454E0: .4byte 0x02023F60
_080454E4: .4byte 0x02023D28
_080454E8: .4byte 0xFDFFFFFF
_080454EC: .4byte 0x02023F50
_080454F0: .4byte 0xFFFFBFFF
thumb_func_end ClearFuryCutterDestinyBondGrudge
thumb_func_start sub_080454F4
sub_080454F4: @ 0x080454F4
push {lr}
ldr r0, _08045514
ldr r0, [r0]
cmp r0, #0
bne _08045510
ldr r1, _08045518
ldr r0, _0804551C
ldr r0, [r0]
ldrb r0, [r0]
lsls r0, r0, #2
adds r0, r0, r1
ldr r0, [r0]
bl _call_via_r0
_08045510:
pop {r0}
bx r0
.align 2, 0
_08045514: .4byte 0x02023D0C
_08045518: .4byte 0x082EC694
_0804551C: .4byte 0x02023EB8
thumb_func_end sub_080454F4
thumb_func_start GetMoveTarget
GetMoveTarget: @ 0x08045520
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #4
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
lsls r1, r1, #0x18
lsrs r0, r1, #0x18
movs r5, #0
cmp r0, #0
beq _0804553E
subs r0, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
b _0804554A
_0804553E:
ldr r1, _0804555C
lsls r0, r7, #1
adds r0, r0, r7
lsls r0, r0, #2
adds r0, r0, r1
ldrb r6, [r0, #6]
_0804554A:
cmp r6, #0x40
bls _08045550
b _08045860
_08045550:
lsls r0, r6, #2
ldr r1, _08045560
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0804555C: .4byte 0x082ED220
_08045560: .4byte 0x08045564
_08045564: @ jump table
.4byte _08045668 @ case 0
.4byte _08045768 @ case 1
.4byte _0804585C @ case 2
.4byte _08045860 @ case 3
.4byte _08045780 @ case 4
.4byte _08045860 @ case 5
.4byte _08045860 @ case 6
.4byte _08045860 @ case 7
.4byte _08045768 @ case 8
.4byte _08045860 @ case 9
.4byte _08045860 @ case 10
.4byte _08045860 @ case 11
.4byte _08045860 @ case 12
.4byte _08045860 @ case 13
.4byte _08045860 @ case 14
.4byte _08045860 @ case 15
.4byte _0804585C @ case 16
.4byte _08045860 @ case 17
.4byte _08045860 @ case 18
.4byte _08045860 @ case 19
.4byte _08045860 @ case 20
.4byte _08045860 @ case 21
.4byte _08045860 @ case 22
.4byte _08045860 @ case 23
.4byte _08045860 @ case 24
.4byte _08045860 @ case 25
.4byte _08045860 @ case 26
.4byte _08045860 @ case 27
.4byte _08045860 @ case 28
.4byte _08045860 @ case 29
.4byte _08045860 @ case 30
.4byte _08045860 @ case 31
.4byte _08045768 @ case 32
.4byte _08045860 @ case 33
.4byte _08045860 @ case 34
.4byte _08045860 @ case 35
.4byte _08045860 @ case 36
.4byte _08045860 @ case 37
.4byte _08045860 @ case 38
.4byte _08045860 @ case 39
.4byte _08045860 @ case 40
.4byte _08045860 @ case 41
.4byte _08045860 @ case 42
.4byte _08045860 @ case 43
.4byte _08045860 @ case 44
.4byte _08045860 @ case 45
.4byte _08045860 @ case 46
.4byte _08045860 @ case 47
.4byte _08045860 @ case 48
.4byte _08045860 @ case 49
.4byte _08045860 @ case 50
.4byte _08045860 @ case 51
.4byte _08045860 @ case 52
.4byte _08045860 @ case 53
.4byte _08045860 @ case 54
.4byte _08045860 @ case 55
.4byte _08045860 @ case 56
.4byte _08045860 @ case 57
.4byte _08045860 @ case 58
.4byte _08045860 @ case 59
.4byte _08045860 @ case 60
.4byte _08045860 @ case 61
.4byte _08045860 @ case 62
.4byte _08045860 @ case 63
.4byte _08045768 @ case 64
_08045668:
ldr r0, _08045748
ldrb r0, [r0]
bl GetBattlerSide
movs r1, #1
eors r0, r1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r1, _0804574C
lsls r0, r4, #1
adds r0, r0, r4
lsls r0, r0, #2
adds r2, r0, r1
ldrb r0, [r2, #8]
cmp r0, #0
beq _0804569A
ldr r1, _08045750
ldrb r4, [r2, #9]
movs r0, #0x58
muls r0, r4, r0
adds r0, r0, r1
ldrh r0, [r0, #0x28]
cmp r0, #0
beq _0804569A
b _080457B0
_0804569A:
ldr r0, _08045748
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
lsls r0, r7, #1
mov r8, r0
_080456AA:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r1, _08045754
ldrb r1, [r1]
bl __modsi3
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
ldr r6, _08045748
ldrb r3, [r6]
cmp r5, r3
beq _080456AA
adds r0, r5, #0
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r4, r0
beq _080456AA
ldr r0, _08045758
ldrb r2, [r0]
ldr r1, _0804575C
lsls r0, r5, #2
adds r0, r0, r1
ldr r0, [r0]
ands r2, r0
cmp r2, #0
bne _080456AA
ldr r0, _08045760
mov r3, r8
adds r1, r3, r7
lsls r1, r1, #2
adds r1, r1, r0
ldrb r0, [r1, #2]
cmp r0, #0xd
beq _080456F8
b _08045860
_080456F8:
ldrb r1, [r6]
str r2, [sp]
movs r0, #0x10
movs r2, #0x1f
movs r3, #0
bl AbilityBattleEffects
lsls r0, r0, #0x18
cmp r0, #0
bne _0804570E
b _08045860
_0804570E:
ldr r2, _08045750
movs r1, #0x58
adds r0, r5, #0
muls r0, r1, r0
adds r0, r0, r2
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #0x1f
bne _08045722
b _08045860
_08045722:
movs r4, #2
eors r5, r4
adds r0, r5, #0
muls r0, r1, r0
adds r0, r0, r2
adds r0, #0x20
ldrb r1, [r0]
adds r0, r5, #0
bl RecordAbilityBattle
ldr r1, _08045764
lsls r0, r5, #2
adds r0, r0, r5
lsls r0, r0, #2
adds r0, r0, r1
ldrb r1, [r0]
orrs r1, r4
strb r1, [r0]
b _08045860
.align 2, 0
_08045748: .4byte 0x02023EAF
_0804574C: .4byte 0x02023F38
_08045750: .4byte 0x02023D28
_08045754: .4byte 0x02023D10
_08045758: .4byte 0x02023EB4
_0804575C: .4byte 0x082FACB4
_08045760: .4byte 0x082ED220
_08045764: .4byte 0x02024020
_08045768:
ldr r0, _0804577C
ldrb r0, [r0]
bl GetBattlerPosition
adds r1, r0, #0
movs r2, #1
movs r0, #1
ands r0, r1
eors r0, r2
b _08045812
.align 2, 0
_0804577C: .4byte 0x02023EAF
_08045780:
ldr r0, _080457B4
ldrb r0, [r0]
bl GetBattlerSide
movs r1, #1
eors r0, r1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r1, _080457B8
lsls r0, r4, #1
adds r0, r0, r4
lsls r0, r0, #2
adds r2, r0, r1
ldrb r0, [r2, #8]
cmp r0, #0
beq _080457C0
ldr r1, _080457BC
ldrb r4, [r2, #9]
movs r0, #0x58
muls r0, r4, r0
adds r0, r0, r1
ldrh r0, [r0, #0x28]
cmp r0, #0
beq _080457C0
_080457B0:
adds r5, r4, #0
b _08045860
.align 2, 0
_080457B4: .4byte 0x02023EAF
_080457B8: .4byte 0x02023F38
_080457BC: .4byte 0x02023D28
_080457C0:
ldr r0, _080457F4
ldr r0, [r0]
movs r4, #1
ands r0, r4
cmp r0, #0
beq _0804583C
movs r0, #4
ands r6, r0
cmp r6, #0
beq _0804583C
ldr r0, _080457F8
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _08045800
bl Random
adds r1, r4, #0
ands r1, r0
cmp r1, #0
beq _080457FC
movs r0, #1
b _08045812
.align 2, 0
_080457F4: .4byte 0x02022C90
_080457F8: .4byte 0x02023EAF
_080457FC:
movs r0, #3
b _08045812
_08045800:
bl Random
adds r1, r4, #0
ands r1, r0
cmp r1, #0
beq _08045810
movs r0, #0
b _08045812
_08045810:
movs r0, #2
_08045812:
bl GetBattlerAtPosition
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
ldr r0, _08045834
ldrb r1, [r0]
ldr r2, _08045838
lsls r0, r5, #2
adds r0, r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, #0
beq _08045860
movs r0, #2
eors r5, r0
b _08045860
.align 2, 0
_08045834: .4byte 0x02023EB4
_08045838: .4byte 0x082FACB4
_0804583C:
ldr r0, _08045858
ldrb r0, [r0]
bl GetBattlerPosition
adds r1, r0, #0
movs r2, #1
movs r0, #1
ands r0, r1
eors r0, r2
bl GetBattlerAtPosition
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
b _08045860
.align 2, 0
_08045858: .4byte 0x02023EAF
_0804585C:
ldr r0, _0804587C
ldrb r5, [r0]
_08045860:
ldr r0, _0804587C
ldrb r0, [r0]
ldr r1, _08045880
ldr r1, [r1]
adds r0, r0, r1
strb r5, [r0, #0xc]
adds r0, r5, #0
add sp, #4
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_0804587C: .4byte 0x02023EAF
_08045880: .4byte 0x02024140
thumb_func_end GetMoveTarget
thumb_func_start HasObedientBitSet
HasObedientBitSet: @ 0x08045884
push {r4, r5, r6, r7, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
adds r0, r4, #0
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _080458CA
ldr r0, _080458D0
lsls r4, r4, #1
adds r5, r4, r0
ldrh r0, [r5]
movs r7, #0x64
muls r0, r7, r0
ldr r6, _080458D4
adds r0, r0, r6
movs r1, #0xb
movs r2, #0
bl GetMonData
movs r1, #0xcd
lsls r1, r1, #1
cmp r0, r1
beq _080458D8
ldrh r0, [r5]
muls r0, r7, r0
adds r0, r0, r6
movs r1, #0xb
movs r2, #0
bl GetMonData
cmp r0, #0x97
beq _080458D8
_080458CA:
movs r0, #1
b _080458EE
.align 2, 0
_080458D0: .4byte 0x02023D12
_080458D4: .4byte 0x02024190
_080458D8:
ldr r0, _080458F4
adds r0, r4, r0
ldrh r1, [r0]
movs r0, #0x64
muls r0, r1, r0
ldr r1, _080458F8
adds r0, r0, r1
movs r1, #0x50
movs r2, #0
bl GetMonData
_080458EE:
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_080458F4: .4byte 0x02023D12
_080458F8: .4byte 0x02024190
thumb_func_end HasObedientBitSet
thumb_func_start IsMonDisobedient
IsMonDisobedient: @ 0x080458FC
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #0x10
movs r6, #0
ldr r5, _080459F0
ldr r0, [r5]
ldr r1, _080459F4
ands r0, r1
cmp r0, #0
bne _080459EC
ldr r4, _080459F8
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _080459EC
ldrb r0, [r4]
bl HasObedientBitSet
cmp r0, #0
beq _080459B6
ldr r0, [r5]
movs r1, #0x80
lsls r1, r1, #0xf
ands r0, r1
cmp r0, #0
beq _08045948
ldrb r0, [r4]
bl GetBattlerPosition
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #2
beq _080459EC
_08045948:
ldr r0, _080459F0
ldr r1, [r0]
ldr r0, _080459FC
ands r0, r1
cmp r0, #0
bne _080459EC
movs r0, #0x80
lsls r0, r0, #0x11
ands r1, r0
cmp r1, #0
bne _080459EC
ldr r2, _08045A00
ldr r0, _080459F8
ldrb r1, [r0]
movs r0, #0x58
muls r1, r0, r1
adds r0, r2, #0
adds r0, #0x54
adds r0, r1, r0
ldr r0, [r0]
adds r2, #0x3c
adds r1, r1, r2
bl IsOtherTrainer
lsls r0, r0, #0x18
cmp r0, #0
beq _080459EC
ldr r0, _08045A04
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
bne _080459EC
movs r6, #0xa
ldr r0, _08045A08
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
beq _0804599A
movs r6, #0x1e
_0804599A:
ldr r0, _08045A0C
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
beq _080459A8
movs r6, #0x32
_080459A8:
ldr r0, _08045A10
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
beq _080459B6
movs r6, #0x46
_080459B6:
ldr r5, _08045A00
ldr r0, _080459F8
mov r8, r0
ldrb r0, [r0]
movs r7, #0x58
muls r0, r7, r0
adds r0, r0, r5
adds r0, #0x2a
ldrb r0, [r0]
cmp r0, r6
bls _080459EC
bl Random
movs r1, #0xff
ands r1, r0
mov r2, r8
ldrb r0, [r2]
adds r2, r0, #0
muls r2, r7, r2
adds r0, r2, r5
adds r0, #0x2a
ldrb r0, [r0]
adds r0, r0, r6
muls r0, r1, r0
asrs r4, r0, #8
cmp r4, r6
bge _08045A14
_080459EC:
movs r0, #0
b _08045C10
.align 2, 0
_080459F0: .4byte 0x02022C90
_080459F4: .4byte 0x02000002
_080459F8: .4byte 0x02023EAF
_080459FC: .4byte 0x003F0100
_08045A00: .4byte 0x02023D28
_08045A04: .4byte 0x0000086E
_08045A08: .4byte 0x00000868
_08045A0C: .4byte 0x0000086A
_08045A10: .4byte 0x0000086C
_08045A14:
ldr r3, _08045A50
ldrh r0, [r3]
cmp r0, #0x63
bne _08045A2A
adds r0, r5, #0
adds r0, #0x50
adds r0, r2, r0
ldr r1, [r0]
ldr r2, _08045A54
ands r1, r2
str r1, [r0]
_08045A2A:
mov r1, r8
ldrb r0, [r1]
muls r0, r7, r0
adds r1, r5, #0
adds r1, #0x4c
adds r0, r0, r1
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
beq _08045A60
ldrh r0, [r3]
cmp r0, #0xad
beq _08045A4A
cmp r0, #0xd6
bne _08045A60
_08045A4A:
ldr r1, _08045A58
ldr r0, _08045A5C
b _08045BBA
.align 2, 0
_08045A50: .4byte 0x02023E8E
_08045A54: .4byte 0xFF7FFFFF
_08045A58: .4byte 0x02023EB8
_08045A5C: .4byte 0x08289C1D
_08045A60:
bl Random
movs r5, #0xff
adds r1, r5, #0
ands r1, r0
ldr r7, _08045B00
ldr r2, _08045B04
mov sb, r2
ldrb r3, [r2]
movs r0, #0x58
mov r8, r0
mov r0, r8
muls r0, r3, r0
adds r0, r0, r7
adds r0, #0x2a
ldrb r2, [r0]
adds r0, r2, r6
muls r0, r1, r0
asrs r4, r0, #8
cmp r4, r6
bge _08045B28
ldr r6, _08045B08
ldr r5, _08045B0C
ldrb r0, [r5]
lsls r0, r0, #2
adds r0, r0, r6
ldrb r1, [r0]
adds r0, r3, #0
movs r2, #0xff
bl CheckMoveLimitations
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0xf
bne _08045AA8
b _08045BAA
_08045AA8:
ldr r1, _08045B10
mov r8, r1
movs r7, #3
_08045AAE:
bl Random
ands r0, r7
mov r2, r8
strb r0, [r2]
strb r0, [r5]
ldrb r0, [r5]
lsls r0, r0, #2
adds r0, r0, r6
ldr r0, [r0]
ands r0, r4
cmp r0, #0
bne _08045AAE
ldr r4, _08045B14
ldr r3, _08045B00
ldr r0, _08045B0C
ldrb r0, [r0]
lsls r0, r0, #1
ldr r1, _08045B04
ldrb r2, [r1]
movs r1, #0x58
muls r1, r2, r1
adds r0, r0, r1
adds r3, #0xc
adds r0, r0, r3
ldrh r0, [r0]
strh r0, [r4]
ldr r1, _08045B18
ldr r0, _08045B1C
str r0, [r1]
ldrh r0, [r4]
movs r1, #0
bl GetMoveTarget
ldr r1, _08045B20
strb r0, [r1]
ldr r2, _08045B24
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #0xe
b _08045C0A
.align 2, 0
_08045B00: .4byte 0x02023D28
_08045B04: .4byte 0x02023EAF
_08045B08: .4byte 0x082FACB4
_08045B0C: .4byte 0x02023E8C
_08045B10: .4byte 0x02023E8D
_08045B14: .4byte 0x02023E92
_08045B18: .4byte 0x02023EB8
_08045B1C: .4byte 0x08289C2D
_08045B20: .4byte 0x02023EB0
_08045B24: .4byte 0x02023F24
_08045B28:
subs r0, r2, r6
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
bl Random
adds r4, r5, #0
ands r4, r0
cmp r4, r6
bge _08045BA4
mov r1, sb
ldrb r0, [r1]
mov r1, r8
muls r1, r0, r1
adds r0, r7, #0
adds r0, #0x4c
adds r0, r1, r0
ldr r0, [r0]
ands r0, r5
cmp r0, #0
bne _08045BA4
adds r0, r1, r7
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #0x48
beq _08045BA4
cmp r0, #0xf
beq _08045BA4
movs r2, #0
ldr r0, _08045B98
ldrb r3, [r0]
mov r8, r0
cmp r2, r3
bge _08045B8A
ldr r0, [r7, #0x50]
movs r1, #0x70
ands r0, r1
cmp r0, #0
bne _08045B8A
adds r1, r7, #0
adds r1, #0x50
movs r5, #0x70
_08045B7A:
adds r1, #0x58
adds r2, #1
cmp r2, r3
bge _08045B8A
ldr r0, [r1]
ands r0, r5
cmp r0, #0
beq _08045B7A
_08045B8A:
mov r0, r8
ldrb r0, [r0]
cmp r2, r0
bne _08045BA4
ldr r1, _08045B9C
ldr r0, _08045BA0
b _08045BBA
.align 2, 0
_08045B98: .4byte 0x02023D10
_08045B9C: .4byte 0x02023EB8
_08045BA0: .4byte 0x08289C61
_08045BA4:
subs r4, r4, r6
cmp r4, r6
blt _08045BCC
_08045BAA:
bl Random
ldr r2, _08045BC0
movs r1, #3
ands r1, r0
strb r1, [r2, #5]
ldr r1, _08045BC4
ldr r0, _08045BC8
_08045BBA:
str r0, [r1]
movs r0, #1
b _08045C10
.align 2, 0
_08045BC0: .4byte 0x02023FD6
_08045BC4: .4byte 0x02023EB8
_08045BC8: .4byte 0x08289C35
_08045BCC:
ldr r4, _08045C20
ldrb r1, [r4]
movs r0, #0x58
muls r1, r0, r1
ldr r0, _08045C24
adds r1, r1, r0
movs r0, #0x28
str r0, [sp]
movs r0, #0
str r0, [sp, #4]
ldrb r0, [r4]
str r0, [sp, #8]
ldrb r0, [r4]
str r0, [sp, #0xc]
adds r0, r1, #0
movs r2, #1
movs r3, #0
bl CalculateBaseDamage
ldr r1, _08045C28
str r0, [r1]
ldr r1, _08045C2C
ldrb r0, [r4]
strb r0, [r1]
ldr r1, _08045C30
ldr r0, _08045C34
str r0, [r1]
ldr r2, _08045C38
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #0xc
_08045C0A:
orrs r0, r1
str r0, [r2]
movs r0, #2
_08045C10:
add sp, #0x10
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_08045C20: .4byte 0x02023EAF
_08045C24: .4byte 0x02023D28
_08045C28: .4byte 0x02023E94
_08045C2C: .4byte 0x02023EB0
_08045C30: .4byte 0x02023EB8
_08045C34: .4byte 0x08289C78
_08045C38: .4byte 0x02023F24
thumb_func_end IsMonDisobedient