	.include "asm/macros.inc"
	.include "constants/constants.inc"

	.syntax unified

	.text
    
    
	thumb_func_start sub_8036760
sub_8036760: @ 8036760
	push {lr}
	bl MoveSaveBlocks_ResetHeap
	bl sub_8056F28
	bl dp11_init
	bl init_uns_table_pokemon_copy
	bl sub_8185F84
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r0, 0x40
	ands r0, r1
	cmp r0, 0
	beq _080367CC
	movs r0, 0x80
	lsls r0, 17
	ands r0, r1
	cmp r0, 0
	beq _08036798
	bl InitBattle
	b _080367BA
	.pool
_08036798:
	movs r0, 0x80
	lsls r0, 15
	ands r1, r0
	cmp r1, 0
	bne _080367B4
	bl battle_wireless_setup_if_required_maybe
	ldr r0, =sub_8037ADC
	bl SetMainCallback2
	b _080367BA
	.pool
_080367B4:
	ldr r0, =intro_end
	bl SetMainCallback2
_080367BA:
	ldr r1, =gBattleCommunication
	movs r0, 0
	strb r0, [r1]
	b _080367D0
	.pool
_080367CC:
	bl InitBattle
_080367D0:
	pop {r0}
	bx r0
	thumb_func_end sub_8036760

	thumb_func_start InitBattle
InitBattle: @ 80367D4
	push {r4,r5,lr}
	sub sp, 0x4
	movs r0, 0
	bl SetHBlankCallback
	movs r0, 0
	bl SetVBlankCallback
	movs r0, 0
	str r0, [sp]
	movs r1, 0xC0
	lsls r1, 19
	ldr r2, =0x05006000
	mov r0, sp
	bl CpuSet
	movs r0, 0x4C
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x40
	movs r1, 0xF0
	bl SetGpuReg
	ldr r1, =0x00005051
	movs r0, 0x44
	bl SetGpuReg
	movs r0, 0x48
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x4A
	movs r1, 0
	bl SetGpuReg
	ldr r0, =gUnknown_02022E24
	movs r2, 0xF0
	strh r2, [r0]
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 15
	ands r0, r1
	cmp r0, 0
	beq _08036870
	ldr r0, =gPartnerTrainerId
	ldrh r1, [r0]
	ldr r0, =0x00000c03
	cmp r1, r0
	beq _08036870
	ldr r1, =gUnknown_02022E26
	movs r0, 0x9F
	strh r0, [r1]
	ldr r0, =gUnknown_02022E28
	strh r2, [r0]
	ldr r1, =gUnknown_02022E2A
	movs r0, 0x20
	strh r0, [r1]
	b _080368BE
	.pool
_08036870:
	ldr r0, =gUnknown_02022E26
	ldr r2, =0x00005051
	adds r1, r2, 0
	strh r1, [r0]
	bl dp12_8087EA4
	ldr r0, =gUnknown_02038C28
	movs r3, 0xF0
	movs r5, 0xF0
	lsls r5, 3
	adds r2, r0, r5
	movs r1, 0x4F
_08036888:
	strh r3, [r0]
	strh r3, [r2]
	adds r2, 0x2
	adds r0, 0x2
	subs r1, 0x1
	cmp r1, 0
	bge _08036888
	movs r1, 0x50
	ldr r4, =gUnknown_0831AC70
	ldr r0, =gUnknown_02038C28
	ldr r3, =0x0000ff10
	movs r5, 0x82
	lsls r5, 4
	adds r2, r0, r5
	adds r0, 0xA0
_080368A6:
	strh r3, [r0]
	strh r3, [r2]
	adds r2, 0x2
	adds r0, 0x2
	adds r1, 0x1
	cmp r1, 0x9F
	ble _080368A6
	ldr r0, [r4]
	ldr r1, [r4, 0x4]
	ldr r2, [r4, 0x8]
	bl sub_80BA038
_080368BE:
	bl ResetPaletteFade
	ldr r0, =gUnknown_02022E14
	movs r1, 0
	strh r1, [r0]
	ldr r0, =gUnknown_02022E16
	strh r1, [r0]
	ldr r0, =gUnknown_02022E18
	strh r1, [r0]
	ldr r0, =gUnknown_02022E1A
	strh r1, [r0]
	ldr r0, =gUnknown_02022E1C
	strh r1, [r0]
	ldr r0, =gUnknown_02022E1E
	strh r1, [r0]
	ldr r0, =gUnknown_02022E20
	strh r1, [r0]
	ldr r0, =gUnknown_02022E22
	strh r1, [r0]
	bl sub_80B0BD0
	ldr r2, =gUnknown_02022FF0
	strb r0, [r2]
	ldr r4, =gBattleTypeFlags
	ldr r0, [r4]
	movs r1, 0x80
	lsls r1, 17
	ands r0, r1
	cmp r0, 0
	beq _080368FE
	movs r0, 0x8
	strb r0, [r2]
_080368FE:
	bl c2_berry_program_update_menu
	bl sub_8035AA4
	bl ResetSpriteData
	bl ResetTasks
	bl sub_8036154
	bl FreeAllSpritePalettes
	ldr r1, =gReservedSpritePaletteCount
	movs r0, 0x4
	strb r0, [r1]
	ldr r0, =vblank_cb_08078BB4
	bl SetVBlankCallback
	bl sub_803269C
	ldr r2, [r4]
	movs r1, 0xA0
	lsls r1, 1
	adds r0, r2, 0
	ands r0, r1
	cmp r0, r1
	beq _0803693E
	ldr r1, =0x00400040
	adds r0, r2, 0
	ands r0, r1
	cmp r0, r1
	bne _08036994
_0803693E:
	ldr r0, =sub_8037458
	bl SetMainCallback2
	b _080369AE
	.pool
_08036994:
	movs r0, 0x40
	ands r2, r0
	cmp r2, 0
	beq _080369A8
	ldr r0, =sub_8037DF4
	bl SetMainCallback2
	b _080369AE
	.pool
_080369A8:
	ldr r0, =sub_8036FAC
	bl SetMainCallback2
_080369AE:
	ldr r5, =gBattleTypeFlags
	ldr r0, [r5]
	ldr r1, =0x01000002
	ands r0, r1
	cmp r0, 0
	bne _080369E8
	ldr r4, =gEnemyParty
	ldr r0, =gTrainerBattleOpponent_A
	ldrh r1, [r0]
	adds r0, r4, 0
	movs r2, 0x1
	bl CreateNPCTrainerParty
	ldr r0, [r5]
	movs r1, 0x80
	lsls r1, 8
	ands r0, r1
	cmp r0, 0
	beq _080369E4
	movs r1, 0x96
	lsls r1, 1
	adds r0, r4, r1
	ldr r1, =gTrainerBattleOpponent_B
	ldrh r1, [r1]
	movs r2, 0
	bl CreateNPCTrainerParty
_080369E4:
	bl SetWildMonHeldItem
_080369E8:
	ldr r1, =gMain
	ldr r2, =0x00000439
	adds r1, r2
	ldrb r0, [r1]
	movs r2, 0x2
	orrs r0, r2
	strb r0, [r1]
	ldr r0, =gSaveBlock2Ptr
	ldr r1, [r0]
	ldr r5, =0x00000ca9
	adds r1, r5
	ldrb r2, [r1]
	movs r0, 0x9
	negs r0, r0
	ands r0, r2
	strb r0, [r1]
	ldr r4, =gPlayerParty
	movs r0, 0xFA
	lsls r0, 1
	adds r5, r4, r0
_08036A10:
	adds r0, r4, 0
	movs r1, 0x3
	bl AdjustFriendship
	adds r4, 0x64
	cmp r4, r5
	ble _08036A10
	movs r1, 0
	ldr r0, =gBattleCommunication
	strb r1, [r0]
	add sp, 0x4
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end InitBattle

	thumb_func_start sub_8036A5C
sub_8036A5C: @ 8036A5C
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	movs r6, 0
	mov r9, r6
	movs r0, 0xCE
	lsls r0, 1
	mov r10, r0
	mov r8, r6
_08036A72:
	movs r0, 0x64
	mov r4, r9
	muls r4, r0
	ldr r0, =gPlayerParty
	adds r4, r0
	adds r0, r4, 0
	movs r1, 0x41
	bl GetMonData
	lsls r0, 16
	lsrs r5, r0, 16
	adds r0, r4, 0
	movs r1, 0x39
	bl GetMonData
	lsls r0, 16
	lsrs r7, r0, 16
	adds r0, r4, 0
	movs r1, 0x37
	bl GetMonData
	adds r1, r0, 0
	cmp r5, 0
	beq _08036AEE
	cmp r5, r10
	beq _08036ABA
	cmp r7, 0
	beq _08036ABA
	cmp r1, 0
	bne _08036ABA
	movs r0, 0x1
	mov r2, r8
	lsls r0, r2
	orrs r6, r0
	lsls r0, r6, 16
	lsrs r6, r0, 16
_08036ABA:
	cmp r5, 0
	beq _08036AEE
	cmp r7, 0
	beq _08036AD6
	cmp r5, r10
	beq _08036ACA
	cmp r1, 0
	beq _08036AD6
_08036ACA:
	movs r0, 0x2
	mov r1, r8
	lsls r0, r1
	orrs r6, r0
	lsls r0, r6, 16
	lsrs r6, r0, 16
_08036AD6:
	cmp r5, 0
	beq _08036AEE
	cmp r5, r10
	beq _08036AEE
	cmp r7, 0
	bne _08036AEE
	movs r0, 0x3
	mov r2, r8
	lsls r0, r2
	orrs r6, r0
	lsls r0, r6, 16
	lsrs r6, r0, 16
_08036AEE:
	movs r0, 0x2
	add r8, r0
	movs r1, 0x1
	add r9, r1
	mov r2, r9
	cmp r2, 0x5
	ble _08036A72
	ldr r4, =gBattleStruct
	ldr r0, [r4]
	movs r1, 0xC1
	lsls r1, 1
	adds r0, r1
	strb r6, [r0]
	ldr r0, [r4]
	ldr r5, =0x00000183
	adds r0, r5
	lsrs r1, r6, 8
	strb r1, [r0]
	ldr r0, =0x000008d2
	bl FlagGet
	ldr r1, [r4]
	adds r1, r5
	lsls r0, 7
	ldrb r2, [r1]
	orrs r0, r2
	strb r0, [r1]
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8036A5C

	thumb_func_start sub_8036B44
sub_8036B44: @ 8036B44
	push {r4-r7,lr}
	ldr r0, =gBattleStruct
	ldr r5, [r0]
	movs r0, 0xC2
	lsls r0, 1
	adds r4, r5, r0
	bl IsEnigmaBerryValid
	cmp r0, 0x1
	bne _08036BC0
	movs r2, 0
	ldr r7, =gSaveBlock1Ptr
	movs r1, 0xC6
	lsls r1, 1
	adds r5, r1
	adds r6, r7, 0
	ldr r3, =0x000031f8
_08036B66:
	adds r0, r4, r2
	ldr r1, [r6]
	adds r1, r3
	adds r1, r2
	ldrb r1, [r1]
	strb r1, [r0]
	adds r2, 0x1
	cmp r2, 0x5
	ble _08036B66
	adds r1, r4, r2
	movs r0, 0xFF
	strb r0, [r1]
	movs r2, 0
	adds r3, r5, 0
	ldr r6, =gSaveBlock1Ptr
	ldr r5, =0x00003214
_08036B86:
	adds r0, r3, r2
	ldr r1, [r6]
	adds r1, r5
	adds r1, r2
	ldrb r1, [r1]
	strb r1, [r0]
	adds r2, 0x1
	cmp r2, 0x11
	ble _08036B86
	ldr r0, [r7]
	ldr r1, =0x00003226
	adds r0, r1
	ldrb r0, [r0]
	strb r0, [r4, 0x7]
	ldr r0, [r7]
	adds r1, 0x1
	adds r0, r1
	ldrb r0, [r0]
	b _08036C00
	.pool
_08036BC0:
	movs r0, 0xAF
	bl ItemIdToBerryType
	lsls r0, 24
	lsrs r0, 24
	bl GetBerryInfo
	adds r3, r0, 0
	movs r2, 0
	movs r0, 0xC6
	lsls r0, 1
	adds r5, r0
_08036BD8:
	adds r0, r4, r2
	adds r1, r3, r2
	ldrb r1, [r1]
	strb r1, [r0]
	adds r2, 0x1
	cmp r2, 0x5
	ble _08036BD8
	adds r1, r4, r2
	movs r0, 0xFF
	strb r0, [r1]
	adds r0, r5, 0
	movs r2, 0
	adds r1, r0, 0
	adds r1, 0x11
_08036BF4:
	strb r2, [r1]
	subs r1, 0x1
	cmp r1, r0
	bge _08036BF4
	movs r0, 0
	strb r0, [r4, 0x7]
_08036C00:
	strb r0, [r4, 0x1A]
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_8036B44

	thumb_func_start berry_801017C
berry_801017C: @ 8036C08
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r0, 0x2
	ands r0, r1
	cmp r0, 0
	beq _08036C20
	b _08036D4C
_08036C20:
	bl IsEnigmaBerryValid
	cmp r0, 0x1
	bne _08036CDC
	movs r5, 0
	ldr r3, =gEnigmaBerries
	ldr r0, =gSaveBlock1Ptr
	mov r8, r0
	adds r6, r3, 0
	mov r4, r8
	ldr r2, =0x000031f8
	adds r7, r3, 0
	adds r7, 0x38
_08036C3A:
	adds r1, r5, r6
	ldr r0, [r4]
	adds r0, r2
	adds r0, r5
	ldrb r0, [r0]
	strb r0, [r1]
	adds r1, r5, r7
	ldr r0, [r4]
	adds r0, r2
	adds r0, r5
	ldrb r0, [r0]
	strb r0, [r1]
	adds r5, 0x1
	cmp r5, 0x5
	ble _08036C3A
	adds r1, r5, r3
	movs r0, 0xFF
	strb r0, [r1]
	adds r0, r3, 0
	adds r0, 0x38
	adds r0, r5, r0
	movs r1, 0x1
	negs r1, r1
	strb r1, [r0]
	movs r5, 0
	adds r7, r3, 0
	adds r7, 0x8
	ldr r4, =gSaveBlock1Ptr
	ldr r2, =0x00003214
	adds r6, r3, 0
	adds r6, 0x40
_08036C78:
	adds r1, r5, r7
	ldr r0, [r4]
	adds r0, r2
	adds r0, r5
	ldrb r0, [r0]
	strb r0, [r1]
	adds r1, r5, r6
	ldr r0, [r4]
	adds r0, r2
	adds r0, r5
	ldrb r0, [r0]
	strb r0, [r1]
	adds r5, 0x1
	cmp r5, 0x11
	ble _08036C78
	mov r1, r8
	ldr r0, [r1]
	ldr r2, =0x00003226
	adds r0, r2
	ldrb r1, [r0]
	strb r1, [r3, 0x7]
	ldrb r0, [r0]
	adds r1, r3, 0
	adds r1, 0x3F
	strb r0, [r1]
	mov r4, r8
	ldr r0, [r4]
	ldr r1, =0x00003227
	adds r0, r1
	ldrb r1, [r0]
	strb r1, [r3, 0x1A]
	ldrb r1, [r0]
	adds r0, r3, 0
	adds r0, 0x52
	strb r1, [r0]
	b _08036EA0
	.pool
_08036CDC:
	movs r0, 0xAF
	bl ItemIdToBerryType
	lsls r0, 24
	lsrs r0, 24
	bl GetBerryInfo
	adds r6, r0, 0
	movs r5, 0
	ldr r4, =gEnigmaBerries
	adds r7, r4, 0
	adds r7, 0x38
	adds r3, r4, 0
_08036CF6:
	adds r1, r5, r4
	adds r2, r6, r5
	ldrb r0, [r2]
	strb r0, [r1]
	adds r1, r5, r7
	ldrb r0, [r2]
	strb r0, [r1]
	adds r5, 0x1
	cmp r5, 0x5
	ble _08036CF6
	adds r1, r5, r3
	movs r0, 0xFF
	strb r0, [r1]
	adds r0, r3, 0
	adds r0, 0x38
	adds r0, r5, r0
	movs r1, 0x1
	negs r1, r1
	strb r1, [r0]
	movs r5, 0
	adds r4, r3, 0
	adds r4, 0x8
	movs r1, 0
	adds r2, r3, 0
	adds r2, 0x40
_08036D28:
	adds r0, r5, r4
	strb r1, [r0]
	adds r0, r5, r2
	strb r1, [r0]
	adds r5, 0x1
	cmp r5, 0x11
	ble _08036D28
	movs r1, 0
	strb r1, [r3, 0x7]
	adds r0, r3, 0
	adds r0, 0x3F
	strb r1, [r0]
	strb r1, [r3, 0x1A]
	adds r0, 0x13
	strb r1, [r0]
	b _08036EA0
	.pool
_08036D4C:
	movs r0, 0x40
	ands r0, r1
	cmp r0, 0
	beq _08036DF0
	movs r0, 0x80
	lsls r0, 1
	ands r1, r0
	movs r2, 0x4
	mov r8, r2
	cmp r1, 0
	beq _08036D66
	movs r4, 0x2
	mov r8, r4
_08036D66:
	movs r5, 0
	cmp r5, r8
	blt _08036D6E
	b _08036EA0
_08036D6E:
	ldr r0, =gLinkPlayers
	mov r12, r0
	ldr r3, =gEnigmaBerries
	adds r6, r3, 0
	movs r1, 0x8
	adds r1, r6
	mov r9, r1
_08036D7C:
	lsls r1, r5, 8
	ldr r0, =gUnknown_020223C8
	adds r7, r1, r0
	lsls r0, r5, 3
	subs r0, r5
	lsls r0, 2
	add r0, r12
	ldrb r3, [r0, 0x18]
	movs r4, 0
	adds r5, 0x1
	mov r10, r5
	lsls r1, r3, 3
	subs r0, r1, r3
	adds r5, r1, 0
	lsls r0, 2
	adds r1, r0, r6
_08036D9C:
	adds r0, r7, r4
	ldrb r0, [r0]
	strb r0, [r1]
	adds r1, 0x1
	adds r4, 0x1
	cmp r4, 0x5
	ble _08036D9C
	subs r0, r5, r3
	lsls r0, 2
	adds r1, r4, r0
	adds r1, r6
	movs r2, 0xFF
	strb r2, [r1]
	movs r4, 0
	mov r2, r9
	adds r1, r0, r2
	adds r2, r7, 0
	adds r2, 0x8
_08036DC0:
	adds r0, r2, r4
	ldrb r0, [r0]
	strb r0, [r1]
	adds r1, 0x1
	adds r4, 0x1
	cmp r4, 0x11
	ble _08036DC0
	subs r0, r5, r3
	lsls r0, 2
	adds r0, r6
	ldrb r1, [r7, 0x7]
	strb r1, [r0, 0x7]
	ldrb r1, [r7, 0x1A]
	strb r1, [r0, 0x1A]
	mov r5, r10
	cmp r5, r8
	blt _08036D7C
	b _08036EA0
	.pool
_08036DF0:
	movs r5, 0
	ldr r4, =gEnigmaBerries
	mov r9, r4
_08036DF6:
	lsls r0, r5, 8
	ldr r1, =gUnknown_020223C8
	adds r7, r0, r1
	movs r4, 0
	adds r2, r5, 0x1
	mov r10, r2
	lsls r0, r5, 3
	mov r8, r0
	adds r1, r5, 0x2
	mov r12, r1
	subs r1, r0, r5
	mov r2, r12
	lsls r0, r2, 3
	subs r0, r2
	lsls r0, 2
	mov r2, r9
	adds r3, r0, r2
	lsls r1, 2
	adds r2, r1, r2
_08036E1C:
	adds r0, r7, r4
	ldrb r1, [r0]
	strb r1, [r2]
	ldrb r0, [r0]
	strb r0, [r3]
	adds r3, 0x1
	adds r2, 0x1
	adds r4, 0x1
	cmp r4, 0x5
	ble _08036E1C
	mov r0, r8
	subs r3, r0, r5
	lsls r3, 2
	adds r1, r4, r3
	add r1, r9
	ldrb r0, [r1]
	movs r2, 0xFF
	orrs r0, r2
	strb r0, [r1]
	mov r0, r12
	lsls r2, r0, 3
	subs r2, r0
	lsls r2, 2
	adds r1, r4, r2
	add r1, r9
	ldrb r0, [r1]
	movs r4, 0xFF
	orrs r0, r4
	strb r0, [r1]
	movs r4, 0
	ldr r0, =gEnigmaBerries
	adds r0, 0x8
	adds r2, r0
	adds r3, r0
	adds r6, r7, 0
	adds r6, 0x8
_08036E64:
	adds r0, r6, r4
	ldrb r1, [r0]
	strb r1, [r3]
	ldrb r0, [r0]
	strb r0, [r2]
	adds r2, 0x1
	adds r3, 0x1
	adds r4, 0x1
	cmp r4, 0x11
	ble _08036E64
	mov r0, r8
	subs r2, r0, r5
	lsls r2, 2
	add r2, r9
	ldrb r0, [r7, 0x7]
	strb r0, [r2, 0x7]
	mov r1, r12
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	add r0, r9
	ldrb r1, [r7, 0x7]
	strb r1, [r0, 0x7]
	ldrb r1, [r7, 0x1A]
	strb r1, [r2, 0x1A]
	ldrb r1, [r7, 0x1A]
	strb r1, [r0, 0x1A]
	mov r5, r10
	cmp r5, 0x1
	ble _08036DF6
_08036EA0:
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end berry_801017C

	thumb_func_start sub_8036EB8
sub_8036EB8: @ 8036EB8
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	lsls r0, 24
	lsrs r4, r0, 24
	lsls r1, 24
	lsrs r3, r1, 24
	movs r6, 0
	ldr r0, =gUnknown_020223C4
	ldrh r2, [r0]
	movs r1, 0x80
	lsls r1, 1
	mov r12, r0
	cmp r2, r1
	bne _08036EFC
	cmp r3, 0
	bne _08036EEC
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r2, 0xC
	b _08036EF2
	.pool
_08036EEC:
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r2, 0x8
_08036EF2:
	orrs r1, r2
	str r1, [r0]
	adds r0, r6, 0x1
	lsls r0, 24
	lsrs r6, r0, 24
_08036EFC:
	cmp r6, 0
	bne _08036FA0
	movs r2, 0
	cmp r2, r4
	bge _08036F20
	ldr r1, =gUnknown_020223C4
	mov r8, r1
	movs r5, 0x80
	lsls r5, 1
_08036F0E:
	adds r1, r5
	adds r2, 0x1
	cmp r2, r4
	bge _08036F20
	mov r7, r8
	ldrh r0, [r7]
	ldrh r7, [r1]
	cmp r0, r7
	beq _08036F0E
_08036F20:
	cmp r2, r4
	bne _08036F48
	cmp r3, 0
	bne _08036F38
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r2, 0xC
	b _08036F3E
	.pool
_08036F38:
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r2, 0x8
_08036F3E:
	orrs r1, r2
	str r1, [r0]
	adds r0, r6, 0x1
	lsls r0, 24
	lsrs r6, r0, 24
_08036F48:
	cmp r6, 0
	bne _08036FA0
	movs r2, 0
	ldr r5, =gBattleTypeFlags
	cmp r2, r4
	bge _08036F8A
	mov r0, r12
	ldrh r1, [r0]
	movs r0, 0xC0
	lsls r0, 2
	cmp r1, r0
	beq _08036F82
_08036F60:
	lsls r0, r2, 8
	add r0, r12
	ldrh r0, [r0]
	movs r1, 0xC0
	lsls r1, 2
	cmp r0, r1
	bls _08036F72
	cmp r2, r3
	bne _08036F8A
_08036F72:
	adds r2, 0x1
	cmp r2, r4
	bge _08036F8A
	lsls r0, r2, 8
	add r0, r12
	ldrh r0, [r0]
	cmp r0, r1
	bne _08036F60
_08036F82:
	cmp r2, r3
	beq _08036F60
	cmp r2, r3
	bge _08036F60
_08036F8A:
	cmp r2, r4
	bne _08036F98
	ldr r0, [r5]
	movs r1, 0xC
	b _08036F9C
	.pool
_08036F98:
	ldr r0, [r5]
	movs r1, 0x8
_08036F9C:
	orrs r0, r1
	str r0, [r5]
_08036FA0:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_8036EB8

	thumb_func_start sub_8036FAC
sub_8036FAC: @ 8036FAC
	push {r4-r6,lr}
	bl RunTasks
	bl AnimateSprites
	bl BuildOamBuffer
	bl GetMultiplayerId
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r0, =gBattleScripting
	adds r0, 0x25
	strb r6, [r0]
	movs r0, 0x1
	adds r5, r6, 0
	eors r5, r0
	ldr r0, =gBattleCommunication
	ldrb r0, [r0]
	cmp r0, 0x12
	bls _08036FD8
	b _0803744C
_08036FD8:
	lsls r0, 2
	ldr r1, =_08036FF0
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_08036FF0:
	.4byte _0803703C
	.4byte _08037080
	.4byte _08037144
	.4byte _080371D8
	.4byte _08037200
	.4byte _0803742C
	.4byte _08037438
	.4byte _08037230
	.4byte _08037258
	.4byte _0803742C
	.4byte _08037438
	.4byte _08037288
	.4byte _080372B0
	.4byte _0803742C
	.4byte _08037438
	.4byte _08037318
	.4byte _08037378
	.4byte _080373A0
	.4byte _080373E0
_0803703C:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	cmp r0, 0
	bne _08037068
	movs r0, 0
	bl ShowBg
	movs r0, 0x1
	bl ShowBg
	movs r0, 0x2
	bl ShowBg
	movs r0, 0x3
	bl ShowBg
	bl sub_805EF14
	ldr r1, =gBattleCommunication
	movs r0, 0x1
	strb r0, [r1]
_08037068:
	ldr r0, =gLinkVSyncDisabled
	ldrb r0, [r0]
	cmp r0, 0
	bne _08037072
	b _0803744C
_08037072:
	bl sub_800E0E8
	b _0803744C
	.pool
_08037080:
	ldr r2, =gBattleTypeFlags
	ldr r1, [r2]
	movs r6, 0x2
	adds r0, r1, 0
	ands r0, r6
	cmp r0, 0
	beq _08037124
	ldr r0, =gUnknown_03003124
	ldrb r0, [r0]
	cmp r0, 0
	bne _08037098
	b _0803744C
_08037098:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	beq _080370EE
	ldr r4, =gBattleStruct
	ldr r0, [r4]
	movs r5, 0xC0
	lsls r5, 1
	adds r0, r5
	movs r1, 0
	strb r1, [r0]
	ldr r0, [r4]
	ldr r2, =0x00000181
	adds r1, r0, r2
	movs r0, 0x3
	strb r0, [r1]
	bl sub_8036A5C
	bl sub_8036B44
	ldr r0, =gTrainerBattleOpponent_A
	ldrh r1, [r0]
	movs r0, 0xC0
	lsls r0, 4
	cmp r1, r0
	bne _080370D8
	ldr r0, =gLinkPlayers
	movs r1, 0
	strh r1, [r0, 0x18]
	movs r1, 0x1
	strh r1, [r0, 0x34]
_080370D8:
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, [r4]
	adds r1, r5
	movs r2, 0x20
	bl link_0800A448
	ldr r0, =gBattleCommunication
	strb r6, [r0]
_080370EE:
	ldr r0, =gLinkVSyncDisabled
	ldrb r0, [r0]
	cmp r0, 0
	bne _080370F8
	b _0803744C
_080370F8:
	movs r0, 0
	movs r1, 0
	bl sub_800DFB4
	b _0803744C
	.pool
_08037124:
	movs r0, 0x80
	lsls r0, 17
	ands r0, r1
	cmp r0, 0
	bne _08037134
	movs r0, 0x4
	orrs r1, r0
	str r1, [r2]
_08037134:
	ldr r1, =gBattleCommunication
	movs r0, 0xF
	strb r0, [r1]
	bl berry_801017C
	b _0803744C
	.pool
_08037144:
	bl sub_800A550
	movs r1, 0x3
	ands r1, r0
	cmp r1, 0x3
	beq _08037152
	b _0803744C
_08037152:
	bl sub_800A5B4
	movs r0, 0x2
	adds r1, r6, 0
	bl sub_8036EB8
	bl berry_801017C
	ldr r0, =task00_0800F6FC
	movs r1, 0
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gTasks
	lsls r2, r0, 2
	adds r2, r0
	lsls r2, 3
	adds r2, r1
	movs r1, 0
	movs r0, 0x87
	lsls r0, 1
	strh r0, [r2, 0xA]
	movs r0, 0x5A
	strh r0, [r2, 0xC]
	strh r1, [r2, 0x12]
	ldr r0, =gBattleStruct
	ldr r3, [r0]
	movs r4, 0xC1
	lsls r4, 1
	adds r0, r3, r4
	ldrb r1, [r0]
	adds r4, 0x1
	adds r0, r3, r4
	ldrb r0, [r0]
	lsls r0, 8
	orrs r1, r0
	strh r1, [r2, 0xE]
	ldr r1, =gUnknown_020223C4
	lsls r4, r5, 8
	adds r1, 0x2
	adds r4, r1
	ldrh r0, [r4]
	strh r0, [r2, 0x10]
	lsls r0, r6, 8
	adds r0, r1
	ldrh r0, [r0]
	bl sub_8185F90
	ldrh r0, [r4]
	bl sub_8185F90
	bl sub_8068AA4
	ldr r1, =gBattleCommunication
	b _08037446
	.pool
_080371D8:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	bne _080371E4
	b _0803744C
_080371E4:
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gPlayerParty
	movs r2, 0xC8
	bl link_0800A448
	ldr r1, =gBattleCommunication
	b _08037446
	.pool
_08037200:
	bl sub_800A550
	movs r1, 0x3
	ands r1, r0
	cmp r1, 0x3
	beq _0803720E
	b _0803744C
_0803720E:
	bl sub_800A5B4
	ldr r0, =gEnemyParty
	lsls r1, r5, 8
	ldr r2, =gUnknown_020223C4
	adds r1, r2
	movs r2, 0xC8
	bl memcpy
	ldr r1, =gBattleCommunication
	b _08037446
	.pool
_08037230:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	bne _0803723C
	b _0803744C
_0803723C:
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gPlayerParty + 200
	movs r2, 0xC8
	bl link_0800A448
	ldr r1, =gBattleCommunication
	b _08037446
	.pool
_08037258:
	bl sub_800A550
	movs r1, 0x3
	ands r1, r0
	cmp r1, 0x3
	beq _08037266
	b _0803744C
_08037266:
	bl sub_800A5B4
	ldr r0, =gEnemyParty + 200
	lsls r1, r5, 8
	ldr r2, =gUnknown_020223C4
	adds r1, r2
	movs r2, 0xC8
	bl memcpy
	ldr r1, =gBattleCommunication
	b _08037446
	.pool
_08037288:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	bne _08037294
	b _0803744C
_08037294:
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gPlayerParty + 400
	movs r2, 0xC8
	bl link_0800A448
	ldr r1, =gBattleCommunication
	b _08037446
	.pool
_080372B0:
	bl sub_800A550
	movs r1, 0x3
	ands r1, r0
	cmp r1, 0x3
	beq _080372BE
	b _0803744C
_080372BE:
	bl sub_800A5B4
	ldr r4, =gEnemyParty + 400
	lsls r1, r5, 8
	ldr r0, =gUnknown_020223C4
	adds r1, r0
	adds r0, r4, 0
	movs r2, 0xC8
	bl memcpy
	ldr r1, =0xfffffe70
	adds r0, r4, r1
	bl shedinja_something
	ldr r2, =0xfffffed4
	adds r0, r4, r2
	bl shedinja_something
	adds r0, r4, 0
	subs r0, 0xC8
	bl shedinja_something
	adds r0, r4, 0
	subs r0, 0x64
	bl shedinja_something
	adds r0, r4, 0
	bl shedinja_something
	adds r0, r4, 0
	adds r0, 0x64
	bl shedinja_something
	ldr r1, =gBattleCommunication
	b _08037446
	.pool
_08037318:
	bl sub_8032768
	bl sub_8184E58
	ldr r2, =gBattleCommunication
	movs r0, 0
	strb r0, [r2, 0x1]
	strb r0, [r2, 0x2]
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x2
	ands r0, r1
	cmp r0, 0
	beq _08037372
	movs r3, 0
	ldr r1, =gLinkPlayers
	ldrb r0, [r1]
	adds r5, r2, 0
	cmp r0, 0x3
	bne _08037356
	movs r4, 0xFF
	adds r2, r1, 0
_08037344:
	adds r2, 0x1C
	adds r3, 0x1
	cmp r3, 0x1
	bgt _08037356
	ldrh r1, [r2]
	adds r0, r4, 0
	ands r0, r1
	cmp r0, 0x3
	beq _08037344
_08037356:
	cmp r3, 0x2
	bne _0803736C
	movs r0, 0x10
	strb r0, [r5]
	b _0803744C
	.pool
_0803736C:
	movs r0, 0x12
	strb r0, [r5]
	b _0803744C
_08037372:
	movs r0, 0x12
	strb r0, [r2]
	b _0803744C
_08037378:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	beq _0803744C
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gUnknown_0203BD2C
	movs r2, 0x4
	bl link_0800A448
	ldr r1, =gBattleCommunication
	b _08037446
	.pool
_080373A0:
	bl sub_800A550
	movs r1, 0x3
	ands r1, r0
	cmp r1, 0x3
	bne _0803744C
	bl sub_800A5B4
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x4
	ands r0, r1
	cmp r0, 0
	bne _080373CA
	ldr r0, =gUnknown_0203BD2C
	lsls r1, r5, 8
	ldr r2, =gUnknown_020223C4
	adds r1, r2
	movs r2, 0x4
	bl memcpy
_080373CA:
	ldr r1, =gBattleCommunication
	b _08037446
	.pool
_080373E0:
	ldr r0, =gUnknown_02024333
	adds r1, r0, 0x1
	bl battle_load_something
	lsls r0, 24
	cmp r0, 0
	beq _0803744C
	ldr r2, =gUnknown_03005D00
	ldr r1, =gMain
	ldr r0, [r1]
	str r0, [r2]
	ldr r0, =sub_8039EF0
	str r0, [r1]
	ldr r0, =sub_8038420
	bl SetMainCallback2
	ldr r2, =gBattleTypeFlags
	ldr r1, [r2]
	movs r0, 0x2
	ands r0, r1
	cmp r0, 0
	beq _0803744C
	movs r0, 0x20
	orrs r1, r0
	str r1, [r2]
	b _0803744C
	.pool
_0803742C:
	ldr r0, =gBattleCommunication
	ldrb r1, [r0]
	adds r1, 0x1
	strb r1, [r0]
	movs r1, 0x1
	strb r1, [r0, 0x1]
_08037438:
	ldr r1, =gBattleCommunication
	ldrb r0, [r1, 0x1]
	subs r0, 0x1
	strb r0, [r1, 0x1]
	lsls r0, 24
	cmp r0, 0
	bne _0803744C
_08037446:
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
_0803744C:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8036FAC

	thumb_func_start sub_8037458
sub_8037458: @ 8037458
	push {r4-r7,lr}
	sub sp, 0x4
	bl RunTasks
	bl AnimateSprites
	bl BuildOamBuffer
	bl GetMultiplayerId
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r0, =gBattleScripting
	adds r0, 0x25
	strb r6, [r0]
	movs r0, 0x1
	adds r7, r6, 0
	eors r7, r0
	ldr r0, =gBattleCommunication
	ldrb r0, [r0]
	cmp r0, 0x10
	bls _08037486
	b _080379D6
_08037486:
	lsls r0, 2
	ldr r1, =_0803749C
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_0803749C:
	.4byte _080374E0
	.4byte _08037518
	.4byte _0803761C
	.4byte _08037670
	.4byte _08037694
	.4byte _08037710
	.4byte _08037734
	.4byte _080377B0
	.4byte _080377CC
	.4byte _080377FC
	.4byte _08037818
	.4byte _08037848
	.4byte _08037864
	.4byte _08037908
	.4byte _0803793A
	.4byte _0803795C
	.4byte _080379A0
_080374E0:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	cmp r0, 0
	bne _0803750C
	movs r0, 0
	bl ShowBg
	movs r0, 0x1
	bl ShowBg
	movs r0, 0x2
	bl ShowBg
	movs r0, 0x3
	bl ShowBg
	bl sub_805EF14
	ldr r1, =gBattleCommunication
	movs r0, 0x1
	strb r0, [r1]
_0803750C:
	ldr r0, =gLinkVSyncDisabled
	ldrb r0, [r0]
	cmp r0, 0
	beq _08037518
	bl sub_800E0E8
_08037518:
	ldr r2, =gBattleTypeFlags
	ldr r1, [r2]
	movs r3, 0x2
	adds r0, r1, 0
	ands r0, r3
	cmp r0, 0
	beq _080375FC
	ldr r0, =gUnknown_03003124
	ldrb r0, [r0]
	cmp r0, 0
	bne _08037530
	b _080379D6
_08037530:
	ldr r6, =gLinkPlayers
	movs r0, 0
	strh r0, [r6, 0x18]
	strh r3, [r6, 0x34]
	adds r1, r6, 0
	adds r1, 0x50
	movs r0, 0x1
	strh r0, [r1]
	adds r1, 0x1C
	movs r0, 0x3
	strh r0, [r1]
	adds r0, r6, 0
	adds r0, 0x40
	ldr r4, =gTrainerBattleOpponent_A
	ldrh r1, [r4]
	bl GetFrontierTrainerName
	adds r0, r6, 0
	adds r0, 0x5C
	ldr r5, =gTrainerBattleOpponent_B
	ldrh r1, [r5]
	bl GetFrontierTrainerName
	ldrh r1, [r4]
	mov r0, sp
	bl sub_8165B88
	mov r0, sp
	ldrb r0, [r0]
	adds r1, r6, 0
	adds r1, 0x52
	strh r0, [r1]
	ldrh r1, [r5]
	mov r0, sp
	bl sub_8165B88
	mov r0, sp
	ldrb r1, [r0]
	adds r0, r6, 0
	adds r0, 0x6E
	strh r1, [r0]
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	beq _080375C4
	ldr r4, =gBattleStruct
	ldr r0, [r4]
	movs r5, 0xC0
	lsls r5, 1
	adds r0, r5
	movs r1, 0
	strb r1, [r0]
	ldr r0, [r4]
	ldr r2, =0x00000181
	adds r1, r0, r2
	movs r0, 0x3
	strb r0, [r1]
	bl sub_8036A5C
	bl sub_8036B44
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, [r4]
	adds r1, r5
	movs r2, 0x20
	bl link_0800A448
	ldr r1, =gBattleCommunication
	movs r0, 0x2
	strb r0, [r1]
_080375C4:
	ldr r0, =gLinkVSyncDisabled
	ldrb r0, [r0]
	cmp r0, 0
	bne _080375CE
	b _080379D6
_080375CE:
	movs r0, 0
	movs r1, 0
	bl sub_800DFB4
	b _080379D6
	.pool
_080375FC:
	movs r0, 0x80
	lsls r0, 17
	ands r0, r1
	cmp r0, 0
	bne _0803760C
	movs r0, 0x4
	orrs r1, r0
	str r1, [r2]
_0803760C:
	ldr r1, =gBattleCommunication
	movs r0, 0xD
	strb r0, [r1]
	bl berry_801017C
	b _080379D6
	.pool
_0803761C:
	bl sub_800A550
	movs r1, 0x3
	ands r1, r0
	cmp r1, 0x3
	beq _0803762A
	b _080379D6
_0803762A:
	bl sub_800A5B4
	movs r0, 0x2
	adds r1, r6, 0
	bl sub_8036EB8
	bl berry_801017C
	ldr r0, =task00_0800F6FC
	movs r1, 0
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	ldr r2, =gTasks
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	adds r1, r2
	movs r2, 0
	movs r0, 0x87
	lsls r0, 1
	strh r0, [r1, 0xA]
	movs r0, 0x5A
	strh r0, [r1, 0xC]
	strh r2, [r1, 0x12]
	adds r0, 0xEB
	strh r0, [r1, 0xE]
	strh r0, [r1, 0x10]
	b _08037986
	.pool
_08037670:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	bne _0803767C
	b _080379D6
_0803767C:
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gPlayerParty
_08037686:
	movs r2, 0xC8
	bl link_0800A448
	b _08037986
	.pool
_08037694:
	bl sub_800A550
	movs r1, 0x3
	ands r1, r0
	cmp r1, 0x3
	beq _080376A2
	b _080379D6
_080376A2:
	bl sub_800A5B4
	ldr r0, =gLinkPlayers
	lsls r1, r6, 3
	subs r1, r6
	lsls r1, 2
	adds r1, r0
	ldrh r0, [r1, 0x18]
	cmp r0, 0
	beq _080376E8
	ldr r4, =gPlayerParty
	lsls r1, r7, 8
	ldr r5, =gUnknown_020223C4
	adds r1, r5
	adds r0, r4, 0
	movs r2, 0xC8
	bl memcpy
	movs r0, 0x96
	lsls r0, 1
	adds r4, r0
	lsls r1, r6, 8
	adds r1, r5
	adds r0, r4, 0
	movs r2, 0xC8
	bl memcpy
	b _08037986
	.pool
_080376E8:
	ldr r4, =gPlayerParty
	lsls r1, r6, 8
	ldr r5, =gUnknown_020223C4
	adds r1, r5
	adds r0, r4, 0
	movs r2, 0xC8
	bl memcpy
	movs r1, 0x96
	lsls r1, 1
	adds r4, r1
	lsls r1, r7, 8
	adds r1, r5
	adds r0, r4, 0
	movs r2, 0xC8
	b _08037982
	.pool
_08037710:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	bne _0803771C
	b _080379D6
_0803771C:
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gPlayerParty + 200
	movs r2, 0x64
	bl link_0800A448
	b _08037986
	.pool
_08037734:
	bl sub_800A550
	movs r1, 0x3
	ands r1, r0
	cmp r1, 0x3
	beq _08037742
	b _080379D6
_08037742:
	bl sub_800A5B4
	ldr r0, =gLinkPlayers
	lsls r1, r6, 3
	subs r1, r6
	lsls r1, 2
	adds r1, r0
	ldrh r0, [r1, 0x18]
	cmp r0, 0
	beq _08037788
	ldr r4, =gPlayerParty + 200
	lsls r1, r7, 8
	ldr r5, =gUnknown_020223C4
	adds r1, r5
	adds r0, r4, 0
	movs r2, 0x64
	bl memcpy
	movs r2, 0x96
	lsls r2, 1
	adds r4, r2
	lsls r1, r6, 8
	adds r1, r5
	adds r0, r4, 0
	movs r2, 0x64
	bl memcpy
	b _08037986
	.pool
_08037788:
	ldr r4, =gPlayerParty + 200
	lsls r1, r6, 8
	ldr r5, =gUnknown_020223C4
	adds r1, r5
	adds r0, r4, 0
	movs r2, 0x64
	bl memcpy
	movs r0, 0x96
	lsls r0, 1
	adds r4, r0
	lsls r1, r7, 8
	adds r1, r5
	adds r0, r4, 0
	movs r2, 0x64
	b _08037982
	.pool
_080377B0:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	bne _080377BC
	b _080379D6
_080377BC:
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gEnemyParty
	b _08037686
	.pool
_080377CC:
	bl sub_800A550
	movs r1, 0x3
	ands r1, r0
	cmp r1, 0x3
	beq _080377DA
	b _080379D6
_080377DA:
	bl sub_800A5B4
	bl GetMultiplayerId
	lsls r0, 24
	cmp r0, 0
	bne _080377EA
	b _08037986
_080377EA:
	ldr r0, =gEnemyParty
	ldr r1, =gUnknown_020223C4
	movs r2, 0xC8
	b _08037982
	.pool
_080377FC:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	bne _08037808
	b _080379D6
_08037808:
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gEnemyParty + 200
	b _08037686
	.pool
_08037818:
	bl sub_800A550
	movs r1, 0x3
	ands r1, r0
	cmp r1, 0x3
	beq _08037826
	b _080379D6
_08037826:
	bl sub_800A5B4
	bl GetMultiplayerId
	lsls r0, 24
	cmp r0, 0
	bne _08037836
	b _08037986
_08037836:
	ldr r0, =gEnemyParty + 200
	ldr r1, =gUnknown_020223C4
	movs r2, 0xC8
	b _08037982
	.pool
_08037848:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	bne _08037854
	b _080379D6
_08037854:
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gEnemyParty + 400
	b _08037686
	.pool
_08037864:
	bl sub_800A550
	movs r1, 0x3
	ands r1, r0
	cmp r1, 0x3
	beq _08037872
	b _080379D6
_08037872:
	bl sub_800A5B4
	bl GetMultiplayerId
	lsls r0, 24
	cmp r0, 0
	beq _0803788A
	ldr r0, =gEnemyParty + 400
	ldr r1, =gUnknown_020223C4
	movs r2, 0xC8
	bl memcpy
_0803788A:
	ldr r4, =gPlayerParty
	adds r0, r4, 0
	bl shedinja_something
	adds r0, r4, 0
	adds r0, 0x64
	bl shedinja_something
	adds r0, r4, 0
	adds r0, 0xC8
	bl shedinja_something
	movs r1, 0x96
	lsls r1, 1
	adds r0, r4, r1
	bl shedinja_something
	movs r2, 0xC8
	lsls r2, 1
	adds r0, r4, r2
	bl shedinja_something
	movs r1, 0xFA
	lsls r1, 1
	adds r0, r4, r1
	bl shedinja_something
	ldr r4, =gEnemyParty
	adds r0, r4, 0
	bl shedinja_something
	adds r0, r4, 0
	adds r0, 0x64
	bl shedinja_something
	adds r0, r4, 0
	adds r0, 0xC8
	bl shedinja_something
	movs r2, 0x96
	lsls r2, 1
	adds r0, r4, r2
	bl shedinja_something
	movs r1, 0xC8
	lsls r1, 1
	adds r0, r4, r1
	bl shedinja_something
	movs r2, 0xFA
	lsls r2, 1
	adds r0, r4, r2
	bl shedinja_something
	b _08037986
	.pool
_08037908:
	bl sub_8032768
	bl sub_8184E58
	ldr r2, =gBattleCommunication
	movs r0, 0
	strb r0, [r2, 0x1]
	strb r0, [r2, 0x2]
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x2
	ands r0, r1
	cmp r0, 0
	beq _08037934
	movs r0, 0xE
	strb r0, [r2]
	b _080379D6
	.pool
_08037934:
	movs r0, 0x10
	strb r0, [r2]
	b _080379D6
_0803793A:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	beq _080379D6
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gUnknown_0203BD2C
	movs r2, 0x4
	bl link_0800A448
	b _08037986
	.pool
_0803795C:
	bl sub_800A550
	movs r1, 0x3
	ands r1, r0
	cmp r1, 0x3
	bne _080379D6
	bl sub_800A5B4
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x4
	ands r0, r1
	cmp r0, 0
	bne _08037986
	ldr r0, =gUnknown_0203BD2C
	lsls r1, r7, 8
	ldr r2, =gUnknown_020223C4
	adds r1, r2
	movs r2, 0x4
_08037982:
	bl memcpy
_08037986:
	ldr r1, =gBattleCommunication
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	b _080379D6
	.pool
_080379A0:
	ldr r0, =gUnknown_02024333
	adds r1, r0, 0x1
	bl battle_load_something
	lsls r0, 24
	cmp r0, 0
	beq _080379D6
	bl sub_8166188
	ldr r2, =gUnknown_03005D00
	ldr r1, =gMain
	ldr r0, [r1]
	str r0, [r2]
	ldr r0, =sub_8039EF0
	str r0, [r1]
	ldr r0, =sub_8038420
	bl SetMainCallback2
	ldr r2, =gBattleTypeFlags
	ldr r1, [r2]
	movs r0, 0x2
	ands r0, r1
	cmp r0, 0
	beq _080379D6
	movs r0, 0x20
	orrs r1, r0
	str r1, [r2]
_080379D6:
	add sp, 0x4
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8037458

	thumb_func_start sub_80379F8
sub_80379F8: @ 80379F8
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	str r0, [sp]
	movs r0, 0
	mov r8, r0
	ldr r6, =gUnknown_02022FF8
	mov r10, r6
_08037A12:
	ldr r1, [sp]
	add r1, r8
	movs r0, 0x64
	adds r4, r1, 0
	muls r4, r0
	ldr r0, =gPlayerParty
	adds r4, r0
	adds r0, r4, 0
	movs r1, 0xB
	bl GetMonData
	mov r1, r8
	lsls r5, r1, 5
	strh r0, [r6]
	adds r0, r4, 0
	movs r1, 0xC
	bl GetMonData
	strh r0, [r6, 0x2]
	movs r0, 0x4
	add r0, r10
	mov r9, r0
	adds r7, r5, r0
	adds r0, r4, 0
	movs r1, 0x2
	adds r2, r7, 0
	bl GetMonData
	adds r0, r4, 0
	movs r1, 0x38
	bl GetMonData
	strb r0, [r6, 0xF]
	adds r0, r4, 0
	movs r1, 0x39
	bl GetMonData
	strh r0, [r6, 0x10]
	adds r0, r4, 0
	movs r1, 0x3A
	bl GetMonData
	strh r0, [r6, 0x12]
	adds r0, r4, 0
	movs r1, 0x37
	bl GetMonData
	mov r1, r10
	adds r1, 0x14
	adds r5, r1
	str r0, [r5]
	adds r0, r4, 0
	movs r1, 0
	bl GetMonData
	str r0, [r6, 0x18]
	adds r0, r4, 0
	bl GetMonGender
	strb r0, [r6, 0x1C]
	adds r0, r7, 0
	bl StripExtCtrlCodes
	adds r0, r4, 0
	movs r1, 0x3
	bl GetMonData
	cmp r0, 0x1
	beq _08037AA4
	adds r0, r7, 0
	movs r1, 0
	bl sub_81DB4DC
_08037AA4:
	adds r6, 0x20
	movs r1, 0x1
	add r8, r1
	mov r0, r8
	cmp r0, 0x2
	ble _08037A12
	ldr r0, =gUnknown_02023058
	ldr r0, [r0]
	mov r1, r9
	subs r1, 0x4
	movs r2, 0x60
	bl memcpy
	add sp, 0x4
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80379F8

	thumb_func_start sub_8037ADC
sub_8037ADC: @ 8037ADC
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x4
	movs r0, 0x4
	mov r9, r0
	movs r4, 0xF
	ldr r6, =gBattleTypeFlags
	ldr r0, [r6]
	movs r1, 0x80
	lsls r1, 1
	ands r0, r1
	cmp r0, 0
	beq _08037B02
	movs r1, 0x2
	mov r9, r1
	movs r4, 0x3
_08037B02:
	bl GetMultiplayerId
	lsls r0, 24
	lsrs r7, r0, 24
	ldr r0, =gBattleScripting
	adds r0, 0x25
	movs r2, 0
	mov r8, r2
	strb r7, [r0]
	ldr r0, =gBattleStruct
	ldr r0, [r0]
	adds r1, r0, 0
	adds r1, 0xB4
	str r1, [sp]
	adds r0, 0xAC
	mov r10, r0
	bl RunTasks
	bl AnimateSprites
	bl BuildOamBuffer
	ldr r5, =gBattleCommunication
	ldrb r0, [r5]
	cmp r0, 0x1
	beq _08037BA4
	cmp r0, 0x1
	bgt _08037B50
	cmp r0, 0
	beq _08037B5E
	b _08037D0A
	.pool
_08037B50:
	cmp r0, 0x2
	bne _08037B56
	b _08037C64
_08037B56:
	cmp r0, 0x3
	bne _08037B5C
	b _08037C9E
_08037B5C:
	b _08037D0A
_08037B5E:
	ldr r0, =gUnknown_03003124
	ldrb r0, [r0]
	cmp r0, 0
	bne _08037B68
	b _08037D0A
_08037B68:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	bne _08037B74
	b _08037D0A
_08037B74:
	ldr r4, =gUnknown_02023058
	movs r0, 0x60
	bl Alloc
	str r0, [r4]
	movs r0, 0
	bl sub_80379F8
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, [r4]
	movs r2, 0x60
	bl link_0800A448
	ldrb r0, [r5]
	adds r0, 0x1
	strb r0, [r5]
	b _08037D0A
	.pool
_08037BA4:
	bl sub_800A550
	adds r1, r4, 0
	ands r1, r0
	cmp r1, r4
	beq _08037BB2
	b _08037D0A
_08037BB2:
	bl sub_800A5B4
	movs r5, 0
	cmp r8, r9
	bge _08037C2E
	lsls r0, r7, 3
	subs r0, r7
	lsls r6, r0, 2
	mov r8, r5
	ldr r4, =gUnknown_020223C4
_08037BC6:
	cmp r5, r7
	beq _08037C1E
	mov r2, r9
	cmp r2, 0x4
	bne _08037C14
	ldr r2, =gLinkPlayers
	mov r1, r8
	adds r0, r1, r2
	ldrh r1, [r0, 0x18]
	movs r3, 0x1
	adds r0, r3, 0
	ands r0, r1
	cmp r0, 0
	bne _08037BF8
	adds r0, r6, r2
	ldrh r1, [r0, 0x18]
	adds r0, r3, 0
	ands r0, r1
	cmp r0, 0
	beq _08037C04
	b _08037C1E
	.pool
_08037BF8:
	adds r0, r6, r2
	ldrh r1, [r0, 0x18]
	adds r0, r3, 0
	ands r0, r1
	cmp r0, 0
	beq _08037C1E
_08037C04:
	ldr r0, =gUnknown_02022FF8
	adds r1, r4, 0
	movs r2, 0x60
	bl memcpy
	b _08037C1E
	.pool
_08037C14:
	ldr r0, =gUnknown_02022FF8
	adds r1, r4, 0
	movs r2, 0x60
	bl memcpy
_08037C1E:
	movs r2, 0x80
	lsls r2, 1
	adds r4, r2
	movs r0, 0x1C
	add r8, r0
	adds r5, 0x1
	cmp r5, r9
	blt _08037BC6
_08037C2E:
	ldr r1, =gBattleCommunication
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	ldr r1, =gMain
	ldr r0, [r1, 0x8]
	ldr r2, [sp]
	str r0, [r2]
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	mov r2, r10
	str r0, [r2]
	ldr r0, =sub_8037ADC
	str r0, [r1, 0x8]
	bl sub_81B9150
	b _08037D0A
	.pool
_08037C64:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	beq _08037D0A
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _08037D0A
	ldrb r0, [r5]
	adds r0, 0x1
	strb r0, [r5]
	ldr r0, =gLinkVSyncDisabled
	ldrb r0, [r0]
	cmp r0, 0
	beq _08037C98
	bl sub_800ADF8
	b _08037D0A
	.pool
_08037C98:
	bl sub_800AC34
	b _08037D0A
_08037C9E:
	ldr r0, =gLinkVSyncDisabled
	ldrb r0, [r0]
	cmp r0, 0
	beq _08037CE4
	bl sub_8010500
	lsls r0, 24
	cmp r0, 0
	beq _08037D0A
	mov r1, r10
	ldr r0, [r1]
	str r0, [r6]
	ldr r1, =gMain
	ldr r2, [sp]
	ldr r0, [r2]
	str r0, [r1, 0x8]
	ldr r0, =InitBattle
	bl SetMainCallback2
	ldr r4, =gUnknown_02023058
	ldr r0, [r4]
	bl Free
	mov r0, r8
	str r0, [r4]
	b _08037D0A
	.pool
_08037CE4:
	ldr r0, =gUnknown_03003124
	ldrb r5, [r0]
	cmp r5, 0
	bne _08037D0A
	mov r1, r10
	ldr r0, [r1]
	str r0, [r6]
	ldr r1, =gMain
	ldr r2, [sp]
	ldr r0, [r2]
	str r0, [r1, 0x8]
	ldr r0, =InitBattle
	bl SetMainCallback2
	ldr r4, =gUnknown_02023058
	ldr r0, [r4]
	bl Free
	str r5, [r4]
_08037D0A:
	add sp, 0x4
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8037ADC

	thumb_func_start intro_end
intro_end: @ 8037D2C
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	ldr r0, =gBattleStruct
	ldr r0, [r0]
	movs r1, 0xB4
	adds r1, r0
	mov r8, r1
	adds r7, r0, 0
	adds r7, 0xAC
	bl RunTasks
	bl AnimateSprites
	bl BuildOamBuffer
	ldr r5, =gBattleCommunication
	ldrb r0, [r5]
	cmp r0, 0
	beq _08037D64
	cmp r0, 0x1
	beq _08037DA4
	b _08037DD6
	.pool
_08037D64:
	ldr r4, =gUnknown_02023058
	movs r0, 0x60
	bl Alloc
	str r0, [r4]
	movs r0, 0x3
	bl sub_80379F8
	ldrb r0, [r5]
	adds r0, 0x1
	strb r0, [r5]
	ldr r1, =gMain
	ldr r0, [r1, 0x8]
	mov r2, r8
	str r0, [r2]
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	str r0, [r7]
	ldr r0, =intro_end
	str r0, [r1, 0x8]
	bl sub_81B9150
	b _08037DD6
	.pool
_08037DA4:
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	lsls r0, 24
	lsrs r6, r0, 24
	cmp r6, 0
	bne _08037DD6
	movs r0, 0x2
	strb r0, [r5]
	ldr r1, =gBattleTypeFlags
	ldr r0, [r7]
	str r0, [r1]
	ldr r1, =gMain
	mov r2, r8
	ldr r0, [r2]
	str r0, [r1, 0x8]
	ldr r0, =InitBattle
	bl SetMainCallback2
	ldr r4, =gUnknown_02023058
	ldr r0, [r4]
	bl Free
	str r6, [r4]
_08037DD6:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end intro_end

	thumb_func_start sub_8037DF4
sub_8037DF4: @ 8037DF4
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x4
	bl GetMultiplayerId
	lsls r0, 24
	lsrs r7, r0, 24
	ldr r0, =gBattleScripting
	adds r0, 0x25
	strb r7, [r0]
	bl RunTasks
	bl AnimateSprites
	bl BuildOamBuffer
	ldr r0, =gBattleCommunication
	ldrb r0, [r0]
	cmp r0, 0xA
	bls _08037E20
	b _080383F8
_08037E20:
	lsls r0, 2
	ldr r1, =_08037E38
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_08037E38:
	.4byte _08037E64
	.4byte _08037EA8
	.4byte _08037F50
	.4byte _08038026
	.4byte _0803804C
	.4byte _08038140
	.4byte _08038164
	.4byte _080382CC
	.4byte _0803832C
	.4byte _0803836C
	.4byte _080383BC
_08037E64:
	bl IsDma3ManagerBusyWithBgCopy
	lsls r0, 24
	cmp r0, 0
	bne _08037E90
	movs r0, 0
	bl ShowBg
	movs r0, 0x1
	bl ShowBg
	movs r0, 0x2
	bl ShowBg
	movs r0, 0x3
	bl ShowBg
	bl sub_805EF14
	ldr r1, =gBattleCommunication
	movs r0, 0x1
	strb r0, [r1]
_08037E90:
	ldr r0, =gLinkVSyncDisabled
	ldrb r0, [r0]
	cmp r0, 0
	bne _08037E9A
	b _080383F8
_08037E9A:
	bl sub_800E0E8
	b _080383F8
	.pool
_08037EA8:
	ldr r2, =gBattleTypeFlags
	ldr r1, [r2]
	movs r0, 0x2
	ands r0, r1
	cmp r0, 0
	beq _08037F30
	ldr r0, =gUnknown_03003124
	ldrb r0, [r0]
	cmp r0, 0
	bne _08037EBE
	b _080383F8
_08037EBE:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	beq _08037F02
	ldr r4, =gBattleStruct
	ldr r0, [r4]
	movs r5, 0xC0
	lsls r5, 1
	adds r0, r5
	movs r1, 0
	strb r1, [r0]
	ldr r0, [r4]
	ldr r2, =0x00000181
	adds r1, r0, r2
	movs r0, 0x3
	strb r0, [r1]
	bl sub_8036A5C
	bl sub_8036B44
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, [r4]
	adds r1, r5
	movs r2, 0x20
	bl link_0800A448
	ldr r1, =gBattleCommunication
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
_08037F02:
	ldr r0, =gLinkVSyncDisabled
	ldrb r0, [r0]
	cmp r0, 0
	bne _08037F0C
	b _080383F8
_08037F0C:
	movs r0, 0
	movs r1, 0
	bl sub_800DFB4
	b _080383F8
	.pool
_08037F30:
	movs r0, 0x80
	lsls r0, 17
	ands r0, r1
	cmp r0, 0
	bne _08037F40
	movs r0, 0x4
	orrs r1, r0
	str r1, [r2]
_08037F40:
	ldr r1, =gBattleCommunication
	movs r0, 0x7
	strb r0, [r1]
	bl berry_801017C
	b _080383F8
	.pool
_08037F50:
	bl sub_800A550
	movs r1, 0xF
	ands r1, r0
	cmp r1, 0xF
	beq _08037F5E
	b _080383F8
_08037F5E:
	bl sub_800A5B4
	movs r0, 0x4
	adds r1, r7, 0
	bl sub_8036EB8
	bl berry_801017C
	bl sub_8068AA4
	ldr r0, =task00_0800F6FC
	movs r1, 0
	bl CreateTask
	lsls r0, 24
	lsrs r2, r0, 24
	ldr r1, =gTasks
	lsls r0, r2, 2
	adds r0, r2
	lsls r0, 3
	adds r0, r1
	movs r2, 0
	movs r1, 0x87
	lsls r1, 1
	strh r1, [r0, 0xA]
	movs r1, 0x5A
	strh r1, [r0, 0xC]
	strh r2, [r0, 0x12]
	strh r2, [r0, 0xE]
	strh r2, [r0, 0x10]
	ldr r1, =gUnknown_020223C4
	adds r4, r0, 0
	adds r5, r1, 0x2
	movs r7, 0x3F
	movs r6, 0x3
_08037FA4:
	ldrh r0, [r5]
	str r2, [sp]
	bl sub_8185F90
	ldr r0, =gLinkPlayers
	ldr r2, [sp]
	adds r0, r2, r0
	ldrh r0, [r0, 0x18]
	cmp r0, 0x1
	beq _08037FE6
	cmp r0, 0x1
	bgt _08037FD4
	cmp r0, 0
	beq _08037FDE
	b _0803800C
	.pool
_08037FD4:
	cmp r0, 0x2
	beq _08037FEE
	cmp r0, 0x3
	beq _08037FFE
	b _0803800C
_08037FDE:
	ldrh r0, [r5]
	adds r1, r7, 0
	ands r1, r0
	b _08037FF6
_08037FE6:
	ldrh r0, [r5]
	adds r1, r7, 0
	ands r1, r0
	b _08038006
_08037FEE:
	ldrh r0, [r5]
	adds r1, r7, 0
	ands r1, r0
	lsls r1, 6
_08037FF6:
	ldrh r0, [r4, 0xE]
	orrs r1, r0
	strh r1, [r4, 0xE]
	b _0803800C
_08037FFE:
	ldrh r0, [r5]
	adds r1, r7, 0
	ands r1, r0
	lsls r1, 6
_08038006:
	ldrh r0, [r4, 0x10]
	orrs r1, r0
	strh r1, [r4, 0x10]
_0803800C:
	movs r0, 0x80
	lsls r0, 1
	adds r5, r0
	adds r2, 0x1C
	subs r6, 0x1
	cmp r6, 0
	bge _08037FA4
	bl ZeroEnemyPartyMons
	ldr r1, =gBattleCommunication
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
_08038026:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	bne _08038032
	b _080383F8
_08038032:
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gPlayerParty
	movs r2, 0xC8
	bl link_0800A448
	b _080383A6
	.pool
_0803804C:
	bl sub_800A550
	movs r1, 0xF
	ands r1, r0
	cmp r1, 0xF
	beq _0803805A
	b _080383F8
_0803805A:
	bl sub_800A5B4
	movs r6, 0
	lsls r0, r7, 3
	subs r0, r7
	lsls r0, 2
	mov r8, r0
	ldr r4, =gUnknown_020223C4
	movs r5, 0
_0803806C:
	cmp r6, r7
	bne _080380A0
	ldr r0, =gLinkPlayers
	adds r0, r5, r0
	ldrh r0, [r0, 0x18]
	cmp r0, 0x2
	bgt _0803808C
	cmp r0, 0x1
	bge _08038098
	cmp r0, 0
	beq _08038090
	b _0803812A
	.pool
_0803808C:
	cmp r0, 0x3
	bne _0803812A
_08038090:
	ldr r0, =gPlayerParty
	b _08038110
	.pool
_08038098:
	ldr r0, =gPlayerParty + 300
	b _08038110
	.pool
_080380A0:
	ldr r2, =gLinkPlayers
	adds r0, r5, r2
	ldrh r1, [r0, 0x18]
	movs r3, 0x1
	adds r0, r3, 0
	ands r0, r1
	cmp r0, 0
	bne _080380C4
	mov r1, r8
	adds r0, r1, r2
	ldrh r1, [r0, 0x18]
	adds r0, r3, 0
	ands r0, r1
	cmp r0, 0
	beq _080380D2
	b _080380F8
	.pool
_080380C4:
	mov r1, r8
	adds r0, r1, r2
	ldrh r1, [r0, 0x18]
	adds r0, r3, 0
	ands r0, r1
	cmp r0, 0
	beq _080380F8
_080380D2:
	adds r0, r5, r2
	ldrh r0, [r0, 0x18]
	cmp r0, 0x2
	bgt _080380E4
	cmp r0, 0x1
	bge _080380F0
	cmp r0, 0
	beq _080380E8
	b _0803812A
_080380E4:
	cmp r0, 0x3
	bne _0803812A
_080380E8:
	ldr r0, =gPlayerParty
	b _08038110
	.pool
_080380F0:
	ldr r0, =gPlayerParty + 300
	b _08038110
	.pool
_080380F8:
	adds r0, r5, r2
	ldrh r0, [r0, 0x18]
	cmp r0, 0x2
	bgt _0803810A
	cmp r0, 0x1
	bge _08038120
	cmp r0, 0
	beq _0803810E
	b _0803812A
_0803810A:
	cmp r0, 0x3
	bne _0803812A
_0803810E:
	ldr r0, =gEnemyParty
_08038110:
	adds r1, r4, 0
	movs r2, 0xC8
	bl memcpy
	b _0803812A
	.pool
_08038120:
	ldr r0, =gEnemyParty + 300
	adds r1, r4, 0
	movs r2, 0xC8
	bl memcpy
_0803812A:
	movs r2, 0x80
	lsls r2, 1
	adds r4, r2
	adds r5, 0x1C
	adds r6, 0x1
	cmp r6, 0x3
	ble _0803806C
	b _080383A6
	.pool
_08038140:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	bne _0803814C
	b _080383F8
_0803814C:
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gPlayerParty + 200
	movs r2, 0x64
	bl link_0800A448
	b _080383A6
	.pool
_08038164:
	bl sub_800A550
	movs r1, 0xF
	ands r1, r0
	cmp r1, 0xF
	beq _08038172
	b _080383F8
_08038172:
	bl sub_800A5B4
	movs r6, 0
	lsls r0, r7, 3
	subs r0, r7
	lsls r0, 2
	mov r8, r0
	ldr r4, =gUnknown_020223C4
	movs r5, 0
_08038184:
	cmp r6, r7
	bne _080381B8
	ldr r0, =gLinkPlayers
	adds r0, r5, r0
	ldrh r0, [r0, 0x18]
	cmp r0, 0x2
	bgt _080381A4
	cmp r0, 0x1
	bge _080381B0
	cmp r0, 0
	beq _080381A8
	b _08038242
	.pool
_080381A4:
	cmp r0, 0x3
	bne _08038242
_080381A8:
	ldr r0, =gPlayerParty + 200
	b _08038228
	.pool
_080381B0:
	ldr r0, =gPlayerParty + 500
	b _08038228
	.pool
_080381B8:
	ldr r2, =gLinkPlayers
	adds r0, r5, r2
	ldrh r1, [r0, 0x18]
	movs r3, 0x1
	adds r0, r3, 0
	ands r0, r1
	cmp r0, 0
	bne _080381DC
	mov r1, r8
	adds r0, r1, r2
	ldrh r1, [r0, 0x18]
	adds r0, r3, 0
	ands r0, r1
	cmp r0, 0
	beq _080381EA
	b _08038210
	.pool
_080381DC:
	mov r1, r8
	adds r0, r1, r2
	ldrh r1, [r0, 0x18]
	adds r0, r3, 0
	ands r0, r1
	cmp r0, 0
	beq _08038210
_080381EA:
	adds r0, r5, r2
	ldrh r0, [r0, 0x18]
	cmp r0, 0x2
	bgt _080381FC
	cmp r0, 0x1
	bge _08038208
	cmp r0, 0
	beq _08038200
	b _08038242
_080381FC:
	cmp r0, 0x3
	bne _08038242
_08038200:
	ldr r0, =gPlayerParty + 200
	b _08038228
	.pool
_08038208:
	ldr r0, =gPlayerParty + 500
	b _08038228
	.pool
_08038210:
	adds r0, r5, r2
	ldrh r0, [r0, 0x18]
	cmp r0, 0x2
	bgt _08038222
	cmp r0, 0x1
	bge _08038238
	cmp r0, 0
	beq _08038226
	b _08038242
_08038222:
	cmp r0, 0x3
	bne _08038242
_08038226:
	ldr r0, =gEnemyParty + 200
_08038228:
	adds r1, r4, 0
	movs r2, 0x64
	bl memcpy
	b _08038242
	.pool
_08038238:
	ldr r0, =gEnemyParty + 500
	adds r1, r4, 0
	movs r2, 0x64
	bl memcpy
_08038242:
	movs r2, 0x80
	lsls r2, 1
	adds r4, r2
	adds r5, 0x1C
	adds r6, 0x1
	cmp r6, 0x3
	ble _08038184
	ldr r4, =gPlayerParty
	adds r0, r4, 0
	bl shedinja_something
	adds r0, r4, 0
	adds r0, 0x64
	bl shedinja_something
	adds r0, r4, 0
	adds r0, 0xC8
	bl shedinja_something
	movs r1, 0x96
	lsls r1, 1
	adds r0, r4, r1
	bl shedinja_something
	movs r2, 0xC8
	lsls r2, 1
	adds r0, r4, r2
	bl shedinja_something
	movs r1, 0xFA
	lsls r1, 1
	adds r0, r4, r1
	bl shedinja_something
	ldr r4, =gEnemyParty
	adds r0, r4, 0
	bl shedinja_something
	adds r0, r4, 0
	adds r0, 0x64
	bl shedinja_something
	adds r0, r4, 0
	adds r0, 0xC8
	bl shedinja_something
	movs r2, 0x96
	lsls r2, 1
	adds r0, r4, r2
	bl shedinja_something
	movs r1, 0xC8
	lsls r1, 1
	adds r0, r4, r1
	bl shedinja_something
	movs r2, 0xFA
	lsls r2, 1
	adds r0, r4, r2
	bl shedinja_something
	b _080383A6
	.pool
_080382CC:
	bl sub_8032768
	bl sub_8184E58
	ldr r3, =gBattleCommunication
	movs r0, 0
	strb r0, [r3, 0x1]
	strb r0, [r3, 0x2]
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x2
	ands r0, r1
	cmp r0, 0
	beq _08038326
	movs r6, 0
	ldr r0, =gLinkPlayers
	ldrb r1, [r0]
	adds r4, r3, 0
	adds r2, r0, 0
	cmp r1, 0x3
	bne _0803830A
	movs r3, 0xFF
_080382F8:
	adds r2, 0x1C
	adds r6, 0x1
	cmp r6, 0x3
	bgt _0803830A
	ldrh r1, [r2]
	adds r0, r3, 0
	ands r0, r1
	cmp r0, 0x3
	beq _080382F8
_0803830A:
	cmp r6, 0x4
	bne _08038320
	movs r0, 0x8
	strb r0, [r4]
	b _080383F8
	.pool
_08038320:
	movs r0, 0xA
	strb r0, [r4]
	b _080383F8
_08038326:
	movs r0, 0xA
	strb r0, [r3]
	b _080383F8
_0803832C:
	bl sub_800A520
	lsls r0, 24
	cmp r0, 0
	beq _080383F8
	ldr r0, =gBattleStruct
	ldr r4, [r0]
	movs r0, 0xC0
	lsls r0, 1
	adds r4, r0
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	str r0, [r4]
	ldr r0, =gUnknown_0203BD2C
	ldr r0, [r0]
	str r0, [r4, 0x4]
	bl bitmask_all_link_players_but_self
	lsls r0, 24
	lsrs r0, 24
	adds r1, r4, 0
	movs r2, 0x8
	bl link_0800A448
	b _080383A6
	.pool
_0803836C:
	bl sub_800A550
	movs r1, 0xF
	ands r1, r0
	cmp r1, 0xF
	bne _080383F8
	bl sub_800A5B4
	movs r2, 0
	b _08038386
_08038380:
	adds r0, r2, 0x1
	lsls r0, 24
	lsrs r2, r0, 24
_08038386:
	cmp r2, 0x3
	bhi _080383A6
	ldr r4, =gUnknown_020223C4
	lsls r3, r2, 8
	adds r0, r3, r4
	ldrh r0, [r0]
	movs r1, 0x4
	ands r0, r1
	cmp r0, 0
	beq _08038380
	adds r1, r4, 0x4
	adds r1, r3, r1
	ldr r0, =gUnknown_0203BD2C
	movs r2, 0x4
	bl memcpy
_080383A6:
	ldr r1, =gBattleCommunication
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	b _080383F8
	.pool
_080383BC:
	ldr r0, =gUnknown_02024333
	adds r1, r0, 0x1
	bl battle_load_something
	lsls r0, 24
	cmp r0, 0
	beq _080383F8
	ldr r2, =gUnknown_03005D00
	ldr r1, =gMain
	ldr r0, [r1]
	str r0, [r2]
	ldr r0, =sub_8039EF0
	str r0, [r1]
	ldr r0, =sub_8038420
	bl SetMainCallback2
	ldr r3, =gBattleTypeFlags
	ldr r2, [r3]
	movs r0, 0x2
	ands r0, r2
	cmp r0, 0
	beq _080383F8
	ldr r0, =gTrainerBattleOpponent_A
	movs r4, 0x80
	lsls r4, 4
	adds r1, r4, 0
	strh r1, [r0]
	movs r0, 0x20
	orrs r2, r0
	str r2, [r3]
_080383F8:
	add sp, 0x4
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8037DF4

	thumb_func_start sub_8038420
sub_8038420: @ 8038420
	push {lr}
	sub sp, 0x4
	bl AnimateSprites
	bl BuildOamBuffer
	bl RunTextPrinters
	bl UpdatePaletteFade
	bl RunTasks
	ldr r0, =gMain
	ldrh r1, [r0, 0x2C]
	movs r0, 0x2
	ands r0, r1
	cmp r0, 0
	beq _08038482
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 17
	ands r0, r1
	cmp r0, 0
	beq _08038482
	bl rfu_lacks_rfufunc
	lsls r0, 24
	cmp r0, 0
	beq _08038482
	ldr r2, =gScriptResult
	ldr r1, =gBattleOutcome
	movs r0, 0x5
	strb r0, [r1]
	movs r0, 0x5
	strh r0, [r2]
	bl ResetPaletteFadeControl
	movs r0, 0x1
	negs r0, r0
	movs r1, 0
	str r1, [sp]
	movs r2, 0
	movs r3, 0x10
	bl BeginNormalPaletteFade
	ldr r0, =sub_80384E4
	bl SetMainCallback2
_08038482:
	add sp, 0x4
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8038420

	thumb_func_start sub_803849C
sub_803849C: @ 803849C
	push {lr}
	ldr r1, =gMain
	ldr r0, =gUnknown_03005D00
	ldr r0, [r0]
	str r0, [r1]
	ldr r2, =gUnknown_02039B28
	movs r0, 0x3
	strb r0, [r2, 0x15]
	ldr r0, =0x00000439
	adds r1, r0
	ldrb r2, [r1]
	movs r0, 0x3
	negs r0, r0
	ands r0, r2
	strb r0, [r1]
	bl ZeroEnemyPartyMons
	movs r0, 0x5A
	bl m4aSongNumStop
	bl sub_805F094
	bl dp11_free
	bl sub_8057028
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803849C

	thumb_func_start sub_80384E4
sub_80384E4: @ 80384E4
	push {lr}
	bl UpdatePaletteFade
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _08038512
	ldr r0, =gMPlay_SE1
	bl m4aMPlayStop
	ldr r0, =gMPlay_SE2
	bl m4aMPlayStop
	bl sub_803849C
	bl FreeAllWindowBuffers
	ldr r0, =gMain
	ldr r0, [r0, 0x8]
	bl SetMainCallback2
_08038512:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80384E4

	thumb_func_start sub_8038528
sub_8038528: @ 8038528
	movs r1, 0
	strh r1, [r0, 0x2E]
	ldr r1, =sub_8038538
	str r1, [r0, 0x1C]
	bx lr
	.pool
	thumb_func_end sub_8038528

	thumb_func_start sub_8038538
sub_8038538: @ 8038538
	push {r4,r5,lr}
	adds r3, r0, 0
	ldr r5, =0x0201c000
	movs r0, 0x2E
	ldrsh r1, [r3, r0]
	cmp r1, 0x1
	beq _0803856C
	cmp r1, 0x1
	bgt _08038554
	cmp r1, 0
	beq _0803855A
	b _080385DC
	.pool
_08038554:
	cmp r1, 0x2
	beq _080385C8
	b _080385DC
_0803855A:
	ldrh r0, [r3, 0x2E]
	adds r0, 0x1
	strh r0, [r3, 0x2E]
	strh r1, [r3, 0x30]
	ldr r0, =0x00000281
	strh r0, [r3, 0x32]
	strh r1, [r3, 0x34]
	movs r0, 0x1
	strh r0, [r3, 0x36]
_0803856C:
	ldrh r0, [r3, 0x36]
	subs r0, 0x1
	strh r0, [r3, 0x36]
	lsls r0, 16
	cmp r0, 0
	bne _080385DC
	movs r0, 0x2
	strh r0, [r3, 0x36]
	movs r4, 0x30
	ldrsh r2, [r3, r4]
	movs r0, 0x34
	ldrsh r1, [r3, r0]
	lsls r1, 5
	adds r2, r1
	movs r4, 0x32
	ldrsh r0, [r3, r4]
	subs r0, r1
	movs r4, 0x3D
	lsls r0, 1
	adds r0, r5
	lsls r2, 1
	adds r2, r5
	movs r1, 0x1C
_0803859A:
	strh r4, [r2]
	strh r4, [r0]
	adds r0, 0x4
	adds r2, 0x4
	subs r1, 0x2
	cmp r1, 0
	bge _0803859A
	ldrh r0, [r3, 0x34]
	adds r0, 0x1
	strh r0, [r3, 0x34]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x15
	bne _080385DC
	ldrh r0, [r3, 0x2E]
	adds r0, 0x1
	strh r0, [r3, 0x2E]
	movs r0, 0x20
	strh r0, [r3, 0x30]
	b _080385DC
	.pool
_080385C8:
	ldrh r0, [r3, 0x30]
	subs r0, 0x1
	strh r0, [r3, 0x30]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x14
	bne _080385DC
	ldr r0, =sub_8036760
	bl SetMainCallback2
_080385DC:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8038538

	thumb_func_start CreateNPCTrainerParty
CreateNPCTrainerParty: @ 80385E8
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x28
	str r0, [sp, 0x10]
	lsls r1, 16
	lsrs r1, 16
	str r1, [sp, 0x14]
	lsls r2, 24
	lsrs r2, 24
	movs r0, 0
	mov r9, r0
	movs r0, 0x80
	lsls r0, 3
	cmp r1, r0
	bne _08038610
	movs r0, 0
	b _080389E2
_08038610:
	ldr r4, =gBattleTypeFlags
	ldr r0, [r4]
	ldr r1, =0x043f0908
	ands r0, r1
	ldr r1, [sp, 0x14]
	lsls r1, 2
	str r1, [sp, 0x20]
	cmp r0, 0x8
	beq _08038624
	b _080389D2
_08038624:
	cmp r2, 0x1
	bne _0803862C
	bl ZeroEnemyPartyMons
_0803862C:
	ldr r0, [r4]
	movs r1, 0x80
	lsls r1, 8
	ands r0, r1
	cmp r0, 0
	beq _08038668
	ldr r0, =gTrainers
	ldr r2, [sp, 0x20]
	ldr r3, [sp, 0x14]
	adds r1, r2, r3
	lsls r1, 3
	adds r1, r0
	adds r2, r1, 0
	adds r2, 0x20
	ldrb r1, [r2]
	movs r4, 0x3
	str r4, [sp, 0x1C]
	adds r4, r0, 0
	cmp r1, 0x3
	bhi _0803867C
	adds r2, r1, 0
	str r2, [sp, 0x1C]
	b _0803867C
	.pool
_08038668:
	ldr r1, =gTrainers
	ldr r2, [sp, 0x20]
	ldr r3, [sp, 0x14]
	adds r0, r2, r3
	lsls r0, 3
	adds r0, r1
	adds r0, 0x20
	ldrb r0, [r0]
	str r0, [sp, 0x1C]
	adds r4, r1, 0
_0803867C:
	movs r0, 0
	str r0, [sp, 0x18]
	b _080389B4
	.pool
_08038688:
	ldr r2, [sp, 0x20]
	ldr r3, [sp, 0x14]
	adds r0, r2, r3
	lsls r0, 3
	adds r1, r0, r4
	ldrb r0, [r1, 0x18]
	cmp r0, 0x1
	bne _0803869E
	movs r0, 0x80
	mov r10, r0
	b _080386B0
_0803869E:
	ldrb r1, [r1, 0x2]
	movs r0, 0x80
	ands r0, r1
	movs r1, 0x88
	mov r10, r1
	cmp r0, 0
	beq _080386B0
	movs r2, 0x78
	mov r10, r2
_080386B0:
	movs r6, 0
	ldr r2, [sp, 0x20]
	ldr r3, [sp, 0x14]
	adds r0, r2, r3
	lsls r0, 3
	adds r1, r4, 0x4
	adds r0, r1
	ldrb r0, [r0]
	ldr r3, [sp, 0x18]
	adds r3, 0x1
	str r3, [sp, 0x24]
	cmp r0, 0xFF
	beq _080386E6
	adds r3, r1, 0
_080386CC:
	ldr r0, [sp, 0x14]
	adds r1, r2, r0
	lsls r1, 3
	adds r0, r6, r1
	adds r0, r3
	ldrb r0, [r0]
	add r9, r0
	adds r6, 0x1
	adds r1, r6, r1
	adds r1, r3
	ldrb r0, [r1]
	cmp r0, 0xFF
	bne _080386CC
_080386E6:
	ldr r1, [sp, 0x20]
	ldr r2, [sp, 0x14]
	adds r0, r1, r2
	lsls r1, r0, 3
	adds r0, r1, r4
	ldrb r0, [r0]
	cmp r0, 0x1
	beq _08038794
	cmp r0, 0x1
	bgt _08038700
	cmp r0, 0
	beq _0803870E
	b _080389AC
_08038700:
	cmp r0, 0x2
	bne _08038706
	b _08038854
_08038706:
	cmp r0, 0x3
	bne _0803870C
	b _080388E8
_0803870C:
	b _080389AC
_0803870E:
	adds r0, r4, 0
	adds r0, 0x24
	adds r0, r1, r0
	ldr r4, [r0]
	movs r6, 0
	ldr r3, [sp, 0x18]
	lsls r2, r3, 3
	adds r0, r2, r4
	ldrh r1, [r0, 0x4]
	movs r0, 0xB
	muls r0, r1
	ldr r1, =gSpeciesNames
	adds r0, r1
	ldrb r0, [r0]
	adds r5, r2, 0
	cmp r0, 0xFF
	beq _08038750
	adds r3, r1, 0
	movs r7, 0xB
_08038734:
	adds r0, r2, r4
	ldrh r0, [r0, 0x4]
	adds r1, r0, 0
	muls r1, r7
	adds r0, r6, r1
	adds r0, r3
	ldrb r0, [r0]
	add r9, r0
	adds r6, 0x1
	adds r1, r6, r1
	adds r1, r3
	ldrb r0, [r1]
	cmp r0, 0xFF
	bne _08038734
_08038750:
	mov r2, r9
	lsls r0, r2, 8
	add r10, r0
	adds r4, r5, r4
	ldrh r1, [r4]
	lsls r0, r1, 5
	subs r0, r1
	movs r1, 0xFF
	bl __divsi3
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r3, [sp, 0x18]
	movs r1, 0x64
	adds r0, r3, 0
	muls r0, r1
	ldr r2, [sp, 0x10]
	adds r0, r2, r0
	ldrh r1, [r4, 0x4]
	ldrb r2, [r4, 0x2]
	movs r3, 0x1
	str r3, [sp]
	mov r3, r10
	str r3, [sp, 0x4]
	movs r3, 0x2
	str r3, [sp, 0x8]
	movs r3, 0
	str r3, [sp, 0xC]
	adds r3, r6, 0
	bl CreateMon
	b _080389AC
	.pool
_08038794:
	adds r0, r4, 0
	adds r0, 0x24
	adds r0, r1, r0
	ldr r7, [r0]
	movs r6, 0
	ldr r4, [sp, 0x18]
	lsls r2, r4, 4
	adds r0, r2, r7
	ldrh r1, [r0, 0x4]
	movs r0, 0xB
	muls r0, r1
	ldr r1, =gSpeciesNames
	adds r0, r1
	ldrb r0, [r0]
	mov r8, r2
	cmp r0, 0xFF
	beq _080387D6
	adds r3, r1, 0
	movs r4, 0xB
_080387BA:
	adds r0, r2, r7
	ldrh r0, [r0, 0x4]
	adds r1, r0, 0
	muls r1, r4
	adds r0, r6, r1
	adds r0, r3
	ldrb r0, [r0]
	add r9, r0
	adds r6, 0x1
	adds r1, r6, r1
	adds r1, r3
	ldrb r0, [r1]
	cmp r0, 0xFF
	bne _080387BA
_080387D6:
	mov r2, r9
	lsls r0, r2, 8
	add r10, r0
	mov r3, r8
	adds r4, r3, r7
	ldrh r1, [r4]
	lsls r0, r1, 5
	subs r0, r1
	movs r1, 0xFF
	bl __divsi3
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r0, [sp, 0x18]
	movs r1, 0x64
	adds r5, r0, 0
	muls r5, r1
	ldr r2, [sp, 0x10]
	adds r5, r2, r5
	ldrh r1, [r4, 0x4]
	ldrb r2, [r4, 0x2]
	movs r0, 0x1
	str r0, [sp]
	mov r3, r10
	str r3, [sp, 0x4]
	movs r0, 0x2
	str r0, [sp, 0x8]
	movs r0, 0
	str r0, [sp, 0xC]
	adds r0, r5, 0
	adds r3, r6, 0
	bl CreateMon
	movs r6, 0
	mov r0, r8
	adds r0, 0x6
	adds r4, r7, r0
_08038820:
	adds r1, r6, 0
	adds r1, 0xD
	adds r0, r5, 0
	adds r2, r4, 0
	bl SetMonData
	adds r1, r6, 0
	adds r1, 0x11
	ldrh r0, [r4]
	lsls r2, r0, 1
	adds r2, r0
	lsls r2, 2
	ldr r0, =gBattleMoves + 0x4 @ PP offset
	adds r2, r0
	adds r0, r5, 0
	bl SetMonData
	adds r4, 0x2
	adds r6, 0x1
	cmp r6, 0x3
	ble _08038820
	b _080389AC
	.pool
_08038854:
	adds r0, r4, 0
	adds r0, 0x24
	adds r0, r1, r0
	ldr r4, [r0]
	movs r6, 0
	ldr r0, [sp, 0x18]
	lsls r2, r0, 3
	adds r0, r2, r4
	ldrh r1, [r0, 0x4]
	movs r0, 0xB
	muls r0, r1
	ldr r1, =gSpeciesNames
	adds r0, r1
	ldrb r0, [r0]
	adds r5, r2, 0
	cmp r0, 0xFF
	beq _08038896
	adds r3, r1, 0
	movs r7, 0xB
_0803887A:
	adds r0, r2, r4
	ldrh r0, [r0, 0x4]
	adds r1, r0, 0
	muls r1, r7
	adds r0, r6, r1
	adds r0, r3
	ldrb r0, [r0]
	add r9, r0
	adds r6, 0x1
	adds r1, r6, r1
	adds r1, r3
	ldrb r0, [r1]
	cmp r0, 0xFF
	bne _0803887A
_08038896:
	mov r2, r9
	lsls r0, r2, 8
	add r10, r0
	adds r5, r4
	ldrh r1, [r5]
	lsls r0, r1, 5
	subs r0, r1
	movs r1, 0xFF
	bl __divsi3
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r3, [sp, 0x18]
	movs r0, 0x64
	adds r4, r3, 0
	muls r4, r0
	ldr r1, [sp, 0x10]
	adds r4, r1, r4
	ldrh r1, [r5, 0x4]
	ldrb r2, [r5, 0x2]
	movs r0, 0x1
	str r0, [sp]
	mov r3, r10
	str r3, [sp, 0x4]
	movs r0, 0x2
	str r0, [sp, 0x8]
	movs r0, 0
	str r0, [sp, 0xC]
	adds r0, r4, 0
	adds r3, r6, 0
	bl CreateMon
	adds r5, 0x6
	adds r0, r4, 0
	movs r1, 0xC
	adds r2, r5, 0
	bl SetMonData
	b _080389AC
	.pool
_080388E8:
	adds r0, r4, 0
	adds r0, 0x24
	adds r0, r1, r0
	ldr r7, [r0]
	movs r6, 0
	ldr r4, [sp, 0x18]
	lsls r2, r4, 4
	adds r0, r2, r7
	ldrh r1, [r0, 0x4]
	movs r0, 0xB
	muls r0, r1
	ldr r1, =gSpeciesNames
	adds r0, r1
	ldrb r0, [r0]
	mov r8, r2
	cmp r0, 0xFF
	beq _0803892A
	adds r3, r1, 0
	movs r4, 0xB
_0803890E:
	adds r0, r2, r7
	ldrh r0, [r0, 0x4]
	adds r1, r0, 0
	muls r1, r4
	adds r0, r6, r1
	adds r0, r3
	ldrb r0, [r0]
	add r9, r0
	adds r6, 0x1
	adds r1, r6, r1
	adds r1, r3
	ldrb r0, [r1]
	cmp r0, 0xFF
	bne _0803890E
_0803892A:
	mov r2, r9
	lsls r0, r2, 8
	add r10, r0
	mov r3, r8
	adds r5, r3, r7
	ldrh r1, [r5]
	lsls r0, r1, 5
	subs r0, r1
	movs r1, 0xFF
	bl __divsi3
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r0, [sp, 0x18]
	movs r1, 0x64
	adds r4, r0, 0
	muls r4, r1
	ldr r2, [sp, 0x10]
	adds r4, r2, r4
	ldrh r1, [r5, 0x4]
	ldrb r2, [r5, 0x2]
	movs r0, 0x1
	str r0, [sp]
	mov r3, r10
	str r3, [sp, 0x4]
	movs r0, 0x2
	str r0, [sp, 0x8]
	movs r0, 0
	str r0, [sp, 0xC]
	adds r0, r4, 0
	adds r3, r6, 0
	bl CreateMon
	adds r5, 0x6
	adds r0, r4, 0
	movs r1, 0xC
	adds r2, r5, 0
	bl SetMonData
	movs r6, 0
	adds r5, r4, 0
	mov r0, r8
	adds r0, 0x8
	adds r4, r7, r0
_08038982:
	adds r1, r6, 0
	adds r1, 0xD
	adds r0, r5, 0
	adds r2, r4, 0
	bl SetMonData
	adds r1, r6, 0
	adds r1, 0x11
	ldrh r0, [r4]
	lsls r2, r0, 1
	adds r2, r0
	lsls r2, 2
	ldr r0, =gBattleMoves + 0x4 @ PP offset
	adds r2, r0
	adds r0, r5, 0
	bl SetMonData
	adds r4, 0x2
	adds r6, 0x1
	cmp r6, 0x3
	ble _08038982
_080389AC:
	ldr r4, [sp, 0x24]
	str r4, [sp, 0x18]
	ldr r4, =gTrainers
	ldr r0, [sp, 0x18]
_080389B4:
	ldr r1, [sp, 0x1C]
	cmp r0, r1
	bge _080389BC
	b _08038688
_080389BC:
	ldr r2, =gBattleTypeFlags
	ldr r1, =gTrainers
	ldr r3, [sp, 0x20]
	ldr r4, [sp, 0x14]
	adds r0, r3, r4
	lsls r0, 3
	adds r0, r1
	ldrb r1, [r0, 0x18]
	ldr r0, [r2]
	orrs r0, r1
	str r0, [r2]
_080389D2:
	ldr r0, =gTrainers
	ldr r2, [sp, 0x20]
	ldr r3, [sp, 0x14]
	adds r1, r2, r3
	lsls r1, 3
	adds r1, r0
	adds r1, 0x20
	ldrb r0, [r1]
_080389E2:
	add sp, 0x28
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r1}
	bx r1
	.pool
	thumb_func_end CreateNPCTrainerParty

	thumb_func_start sub_8038A04
sub_8038A04: @ 8038A04
	push {lr}
	ldr r0, =0x04000006
	ldrh r0, [r0]
	subs r0, 0x6F
	lsls r0, 16
	lsrs r0, 16
	cmp r0, 0x30
	bhi _08038A1E
	movs r1, 0x98
	lsls r1, 8
	movs r0, 0x8
	bl SetGpuReg
_08038A1E:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8038A04

	thumb_func_start vblank_cb_08078BB4
vblank_cb_08078BB4: @ 8038A28
	push {lr}
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	ldr r1, =0x013f0102
	ands r0, r1
	cmp r0, 0
	bne _08038A3A
	bl Random
_08038A3A:
	ldr r0, =gUnknown_02022E14
	ldrh r1, [r0]
	movs r0, 0x10
	bl SetGpuReg
	ldr r0, =gUnknown_02022E16
	ldrh r1, [r0]
	movs r0, 0x12
	bl SetGpuReg
	ldr r0, =gUnknown_02022E18
	ldrh r1, [r0]
	movs r0, 0x14
	bl SetGpuReg
	ldr r0, =gUnknown_02022E1A
	ldrh r1, [r0]
	movs r0, 0x16
	bl SetGpuReg
	ldr r0, =gUnknown_02022E1C
	ldrh r1, [r0]
	movs r0, 0x18
	bl SetGpuReg
	ldr r0, =gUnknown_02022E1E
	ldrh r1, [r0]
	movs r0, 0x1A
	bl SetGpuReg
	ldr r0, =gUnknown_02022E20
	ldrh r1, [r0]
	movs r0, 0x1C
	bl SetGpuReg
	ldr r0, =gUnknown_02022E22
	ldrh r1, [r0]
	movs r0, 0x1E
	bl SetGpuReg
	ldr r0, =gUnknown_02022E24
	ldrh r1, [r0]
	movs r0, 0x40
	bl SetGpuReg
	ldr r0, =gUnknown_02022E26
	ldrh r1, [r0]
	movs r0, 0x44
	bl SetGpuReg
	ldr r0, =gUnknown_02022E28
	ldrh r1, [r0]
	movs r0, 0x42
	bl SetGpuReg
	ldr r0, =gUnknown_02022E2A
	ldrh r1, [r0]
	movs r0, 0x46
	bl SetGpuReg
	bl LoadOam
	bl ProcessSpriteCopyRequests
	bl TransferPlttBuffer
	bl sub_80BA0A8
	pop {r0}
	bx r0
	.pool
	thumb_func_end vblank_cb_08078BB4

	thumb_func_start nullsub_17
nullsub_17: @ 8038B00
	bx lr
	thumb_func_end nullsub_17

	thumb_func_start sub_8038B04
sub_8038B04: @ 8038B04
	push {r4,r5,lr}
	adds r5, r0, 0
	movs r1, 0x2E
	ldrsh r0, [r5, r1]
	cmp r0, 0
	beq _08038B24
	movs r1, 0x32
	ldrsh r0, [r5, r1]
	movs r1, 0xFF
	lsls r1, 8
	ands r0, r1
	lsrs r0, 8
	ldrh r1, [r5, 0x30]
	adds r0, r1
	strh r0, [r5, 0x20]
	b _08038B36
_08038B24:
	movs r1, 0x32
	ldrsh r0, [r5, r1]
	movs r1, 0xFF
	lsls r1, 8
	ands r0, r1
	asrs r0, 8
	ldrh r1, [r5, 0x30]
	subs r1, r0
	strh r1, [r5, 0x20]
_08038B36:
	movs r1, 0xC0
	lsls r1, 1
	adds r0, r1, 0
	ldrh r1, [r5, 0x32]
	adds r0, r1
	strh r0, [r5, 0x32]
	adds r0, r5, 0
	adds r0, 0x3F
	ldrb r1, [r0]
	movs r0, 0x20
	ands r0, r1
	cmp r0, 0
	beq _08038B6A
	ldr r4, =0x00002710
	adds r0, r4, 0
	bl FreeSpriteTilesByTag
	adds r0, r4, 0
	bl FreeSpritePaletteByTag
	adds r0, r5, 0
	bl FreeSpriteOamMatrix
	adds r0, r5, 0
	bl DestroySprite
_08038B6A:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8038B04

	thumb_func_start sub_8038B74
sub_8038B74: @ 8038B74
	push {r4,lr}
	adds r4, r0, 0
	movs r1, 0x1
	bl StartSpriteAffineAnim
	ldr r0, =sub_8038B04
	str r0, [r4, 0x1C]
	movs r0, 0x68
	bl PlaySE
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8038B74

	thumb_func_start sub_8038B94
sub_8038B94: @ 8038B94
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x10
	lsls r0, 24
	lsrs r0, 24
	str r0, [sp]
	movs r0, 0
	str r0, [sp, 0x4]
	movs r1, 0
	str r1, [sp, 0x8]
	ldr r0, =gBattleScripting
	adds r0, 0x25
	ldrb r2, [r0]
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x40
	ands r0, r1
	cmp r0, 0
	beq _08038C04
	ldr r1, =gLinkPlayers
	lsls r0, r2, 3
	subs r0, r2
	lsls r0, 2
	adds r0, r1
	ldrh r0, [r0, 0x18]
	cmp r0, 0x1
	beq _08038BF0
	cmp r0, 0x1
	bgt _08038BE8
	cmp r0, 0
	beq _08038C04
	b _08038C0C
	.pool
_08038BE8:
	cmp r0, 0x2
	beq _08038C04
	cmp r0, 0x3
	bne _08038C0C
_08038BF0:
	ldr r0, =gEnemyParty
	str r0, [sp, 0x4]
	ldr r1, =gPlayerParty
	str r1, [sp, 0x8]
	b _08038C0C
	.pool
_08038C04:
	ldr r2, =gPlayerParty
	str r2, [sp, 0x4]
	ldr r3, =gEnemyParty
	str r3, [sp, 0x8]
_08038C0C:
	movs r7, 0
	movs r0, 0
	mov r8, r0
	ldr r1, [sp]
	lsls r1, 2
	str r1, [sp, 0xC]
	movs r2, 0xCE
	lsls r2, 1
	mov r10, r2
	mov r9, r0
_08038C20:
	movs r0, 0x64
	mov r4, r8
	muls r4, r0
	ldr r3, [sp, 0x4]
	adds r4, r3, r4
	adds r0, r4, 0
	movs r1, 0x41
	bl GetMonData
	lsls r0, 16
	lsrs r5, r0, 16
	adds r0, r4, 0
	movs r1, 0x39
	bl GetMonData
	lsls r0, 16
	lsrs r6, r0, 16
	adds r0, r4, 0
	movs r1, 0x37
	bl GetMonData
	adds r1, r0, 0
	cmp r5, 0
	beq _08038C90
	cmp r5, r10
	beq _08038C64
	cmp r6, 0
	beq _08038C64
	cmp r1, 0
	bne _08038C64
	movs r0, 0x1
	mov r2, r9
	lsls r0, r2
	orrs r7, r0
_08038C64:
	cmp r5, 0
	beq _08038C90
	cmp r6, 0
	beq _08038C7C
	cmp r5, r10
	beq _08038C74
	cmp r1, 0
	beq _08038C7C
_08038C74:
	movs r0, 0x2
	mov r3, r9
	lsls r0, r3
	orrs r7, r0
_08038C7C:
	cmp r5, 0
	beq _08038C90
	cmp r5, r10
	beq _08038C90
	cmp r6, 0
	bne _08038C90
	movs r0, 0x3
	mov r1, r9
	lsls r0, r1
	orrs r7, r0
_08038C90:
	movs r2, 0x2
	add r9, r2
	movs r3, 0x1
	add r8, r3
	mov r0, r8
	cmp r0, 0x5
	ble _08038C20
	ldr r1, =gTasks
	ldr r2, [sp, 0xC]
	ldr r3, [sp]
	adds r0, r2, r3
	lsls r0, 3
	adds r0, r1
	strh r7, [r0, 0xE]
	movs r7, 0
	movs r0, 0
	mov r8, r0
	movs r1, 0xCE
	lsls r1, 1
	mov r10, r1
	mov r9, r0
_08038CBA:
	movs r0, 0x64
	mov r4, r8
	muls r4, r0
	ldr r2, [sp, 0x8]
	adds r4, r2, r4
	adds r0, r4, 0
	movs r1, 0x41
	bl GetMonData
	lsls r0, 16
	lsrs r5, r0, 16
	adds r0, r4, 0
	movs r1, 0x39
	bl GetMonData
	lsls r0, 16
	lsrs r6, r0, 16
	adds r0, r4, 0
	movs r1, 0x37
	bl GetMonData
	adds r1, r0, 0
	cmp r5, 0
	beq _08038D2A
	cmp r5, r10
	beq _08038CFE
	cmp r6, 0
	beq _08038CFE
	cmp r1, 0
	bne _08038CFE
	movs r0, 0x1
	mov r3, r9
	lsls r0, r3
	orrs r7, r0
_08038CFE:
	cmp r5, 0
	beq _08038D2A
	cmp r6, 0
	beq _08038D16
	cmp r5, r10
	beq _08038D0E
	cmp r1, 0
	beq _08038D16
_08038D0E:
	movs r0, 0x2
	mov r1, r9
	lsls r0, r1
	orrs r7, r0
_08038D16:
	cmp r5, 0
	beq _08038D2A
	cmp r5, r10
	beq _08038D2A
	cmp r6, 0
	bne _08038D2A
	movs r0, 0x3
	mov r2, r9
	lsls r0, r2
	orrs r7, r0
_08038D2A:
	movs r3, 0x2
	add r9, r3
	movs r0, 0x1
	add r8, r0
	mov r1, r8
	cmp r1, 0x5
	ble _08038CBA
	ldr r1, =gTasks
	ldr r2, [sp, 0xC]
	ldr r3, [sp]
	adds r0, r2, r3
	lsls r0, 3
	adds r0, r1
	strh r7, [r0, 0x10]
	add sp, 0x10
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8038B94

	thumb_func_start sub_8038D64
sub_8038D64: @ 8038D64
	push {r4,lr}
	sub sp, 0x4
	movs r0, 0
	bl SetHBlankCallback
	movs r0, 0
	bl SetVBlankCallback
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r2, 0x21
	negs r2, r2
	ands r1, r2
	str r1, [r0]
	ldr r0, =0x003f0100
	ands r0, r1
	cmp r0, 0
	beq _08038DAC
	ldr r0, =gMain
	ldr r0, [r0, 0x8]
	bl SetMainCallback2
	bl sub_8057028
	bl dp11_free
	bl sub_805F094
	b _08038EB6
	.pool
_08038DAC:
	str r0, [sp]
	movs r1, 0xC0
	lsls r1, 19
	ldr r2, =0x05006000
	mov r0, sp
	bl CpuSet
	movs r0, 0x4C
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x40
	movs r1, 0xF0
	bl SetGpuReg
	ldr r4, =0x00005051
	movs r0, 0x44
	adds r1, r4, 0
	bl SetGpuReg
	movs r0, 0x48
	movs r1, 0
	bl SetGpuReg
	movs r0, 0x4A
	movs r1, 0
	bl SetGpuReg
	ldr r1, =gUnknown_02022E24
	movs r0, 0xF0
	strh r0, [r1]
	ldr r0, =gUnknown_02022E26
	strh r4, [r0]
	bl dp12_8087EA4
	ldr r0, =gUnknown_02038C28
	movs r3, 0xF0
	movs r1, 0xF0
	lsls r1, 3
	adds r2, r0, r1
	movs r1, 0x4F
_08038DFE:
	strh r3, [r0]
	strh r3, [r2]
	adds r2, 0x2
	adds r0, 0x2
	subs r1, 0x1
	cmp r1, 0
	bge _08038DFE
	movs r1, 0x50
	ldr r0, =gUnknown_02038C28
	ldr r3, =0x0000ff10
	movs r4, 0x82
	lsls r4, 4
	adds r2, r0, r4
	adds r0, 0xA0
_08038E1A:
	strh r3, [r0]
	strh r3, [r2]
	adds r2, 0x2
	adds r0, 0x2
	adds r1, 0x1
	cmp r1, 0x9F
	ble _08038E1A
	bl ResetPaletteFade
	ldr r0, =gUnknown_02022E14
	movs r4, 0
	strh r4, [r0]
	ldr r0, =gUnknown_02022E16
	strh r4, [r0]
	ldr r0, =gUnknown_02022E18
	strh r4, [r0]
	ldr r0, =gUnknown_02022E1A
	strh r4, [r0]
	ldr r0, =gUnknown_02022E1C
	strh r4, [r0]
	ldr r0, =gUnknown_02022E1E
	strh r4, [r0]
	ldr r0, =gUnknown_02022E20
	strh r4, [r0]
	ldr r0, =gUnknown_02022E22
	strh r4, [r0]
	bl c2_berry_program_update_menu
	ldr r0, =gUnknown_08C004E0
	movs r1, 0
	movs r2, 0x40
	bl LoadCompressedPalette
	bl sub_803570C
	bl ResetSpriteData
	bl ResetTasks
	bl sub_8036154
	movs r0, 0x4A
	movs r1, 0x37
	bl SetGpuReg
	bl FreeAllSpritePalettes
	ldr r1, =gReservedSpritePaletteCount
	movs r0, 0x4
	strb r0, [r1]
	ldr r0, =vblank_cb_08078BB4
	bl SetVBlankCallback
	ldr r0, =task00_0800F6FC
	movs r1, 0
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	ldr r2, =gTasks
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	adds r1, r2
	movs r2, 0x87
	lsls r2, 1
	strh r2, [r1, 0xA]
	movs r2, 0x5A
	strh r2, [r1, 0xC]
	movs r2, 0x1
	strh r2, [r1, 0x12]
	bl sub_8038B94
	ldr r0, =sub_8038F14
	bl SetMainCallback2
	ldr r0, =gBattleCommunication
	strb r4, [r0]
_08038EB6:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8038D64

	thumb_func_start sub_8038F14
sub_8038F14: @ 8038F14
	push {lr}
	bl sub_8038F34
	bl AnimateSprites
	bl BuildOamBuffer
	bl RunTextPrinters
	bl UpdatePaletteFade
	bl RunTasks
	pop {r0}
	bx r0
	thumb_func_end sub_8038F14

	thumb_func_start sub_8038F34
sub_8038F34: @ 8038F34
	push {r4-r6,lr}
	sub sp, 0x8
	ldr r0, =gBattleCommunication
	ldrb r1, [r0]
	adds r4, r0, 0
	cmp r1, 0x9
	bls _08038F44
	b _080391C6
_08038F44:
	lsls r0, r1, 2
	ldr r1, =_08038F58
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_08038F58:
	.4byte _08038F80
	.4byte _08038FA0
	.4byte _08038FC2
	.4byte _080390C8
	.4byte _08039100
	.4byte _08039118
	.4byte _0803912C
	.4byte _0803914C
	.4byte _08039166
	.4byte _08039184
_08038F80:
	movs r0, 0
	bl ShowBg
	movs r0, 0x1
	bl ShowBg
	movs r0, 0x2
	bl ShowBg
	ldr r1, =gBattleCommunication
	movs r0, 0xFF
	strb r0, [r1, 0x1]
	b _08039174
	.pool
_08038FA0:
	ldrb r0, [r4, 0x1]
	subs r0, 0x1
	strb r0, [r4, 0x1]
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	beq _08038FB0
	b _080391C6
_08038FB0:
	movs r0, 0x1
	negs r0, r0
	str r1, [sp]
	movs r1, 0
	movs r2, 0
	movs r3, 0x10
	bl BeginNormalPaletteFade
	b _0803910C
_08038FC2:
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _08038FD0
	b _080391C6
_08038FD0:
	bl sub_8185FAC
	ldr r2, =gMain
	ldr r1, =0x00000439
	adds r2, r1
	movs r1, 0x1
	ands r1, r0
	lsls r1, 2
	ldrb r3, [r2]
	movs r0, 0x5
	negs r0, r0
	ands r0, r3
	orrs r0, r1
	strb r0, [r2]
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x40
	ands r0, r1
	movs r3, 0x2
	cmp r0, 0
	beq _08038FFC
	movs r3, 0x4
_08038FFC:
	movs r4, 0
	ldr r6, =gSaveBlock2Ptr
	cmp r4, r3
	bge _08039022
	ldr r1, =gLinkPlayers
	ldrb r0, [r1]
	cmp r0, 0x3
	bne _08039022
	movs r5, 0xFF
	adds r2, r1, 0
_08039010:
	adds r2, 0x1C
	adds r4, 0x1
	cmp r4, r3
	bge _08039022
	ldrh r1, [r2]
	adds r0, r5, 0
	ands r0, r1
	cmp r0, 0x3
	beq _08039010
_08039022:
	ldr r0, [r6]
	ldr r1, =0x00000ca9
	adds r0, r1
	ldrb r1, [r0]
	movs r0, 0x8
	ands r0, r1
	cmp r0, 0
	bne _080390AC
	cmp r4, r3
	bne _080390AC
	ldr r0, =0x000008d2
	bl FlagGet
	lsls r0, 24
	cmp r0, 0
	beq _08039074
	bl FreeAllWindowBuffers
	ldr r0, =sub_80392A8
	bl SetMainCallback2
	b _080391C6
	.pool
_08039074:
	ldr r2, =gMain
	ldr r1, =0x00000439
	adds r0, r2, r1
	ldrb r1, [r0]
	movs r0, 0x4
	ands r0, r1
	cmp r0, 0
	bne _08039090
	ldr r0, [r2, 0x8]
	b _080390B0
	.pool
_08039090:
	ldr r0, =gUnknown_03003124
	ldrb r0, [r0]
	cmp r0, 0
	bne _08039172
	ldr r0, =sub_80B3AF8
	movs r1, 0x5
	bl CreateTask
	b _08039172
	.pool
_080390AC:
	ldr r0, =gMain
	ldr r0, [r0, 0x8]
_080390B0:
	bl SetMainCallback2
	bl sub_8057028
	bl dp11_free
	bl sub_805F094
	b _080391C6
	.pool
_080390C8:
	movs r0, 0
	str r0, [sp, 0x4]
	movs r1, 0xC0
	lsls r1, 19
	ldr r2, =0x05006000
	add r0, sp, 0x4
	bl CpuSet
	movs r4, 0
_080390DA:
	lsls r0, r4, 24
	lsrs r0, 24
	bl sub_80363C4
	adds r4, 0x1
	cmp r4, 0x1
	ble _080390DA
	movs r0, 0x1
	negs r0, r0
	movs r1, 0
	str r1, [sp]
	movs r2, 0x10
	movs r3, 0
	bl BeginNormalPaletteFade
	b _08039172
	.pool
_08039100:
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _080391C6
_0803910C:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	b _080391C6
	.pool
_08039118:
	ldr r0, =sub_80B3AF8
	bl FuncIsActiveTask
	lsls r0, 24
	cmp r0, 0
	bne _080391C6
	b _08039172
	.pool
_0803912C:
	bl sub_800A520
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _080391C6
	bl sub_800ADF8
	ldr r0, =gUnknown_0824978D
	movs r1, 0
	bl battle_show_message_maybe
	b _08039172
	.pool
_0803914C:
	movs r0, 0
	bl IsTextPrinterActive
	lsls r0, 16
	cmp r0, 0
	bne _080391C6
	bl sub_800A520
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _080391C6
	b _08039172
_08039166:
	ldr r0, =gLinkVSyncDisabled
	ldrb r0, [r0]
	cmp r0, 0
	bne _08039172
	bl sub_800AC34
_08039172:
	ldr r1, =gBattleCommunication
_08039174:
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	b _080391C6
	.pool
_08039184:
	ldr r2, =gMain
	ldr r1, =0x00000439
	adds r0, r2, r1
	ldrb r1, [r0]
	movs r0, 0x4
	ands r0, r1
	adds r3, r2, 0
	cmp r0, 0
	beq _080391A6
	ldr r0, =gLinkVSyncDisabled
	ldrb r0, [r0]
	cmp r0, 0
	bne _080391A6
	ldr r0, =gUnknown_03003124
	ldrb r0, [r0]
	cmp r0, 0x1
	beq _080391C6
_080391A6:
	ldr r0, =0x00000439
	adds r2, r3, r0
	ldrb r1, [r2]
	movs r0, 0x5
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	ldr r0, [r3, 0x8]
	bl SetMainCallback2
	bl sub_8057028
	bl dp11_free
	bl sub_805F094
_080391C6:
	add sp, 0x8
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8038F34

	thumb_func_start sub_80391E0
sub_80391E0: @ 80391E0
	push {lr}
	lsls r0, 24
	lsrs r2, r0, 24
	lsls r1, 24
	lsrs r1, 24
	movs r0, 0
	cmp r1, 0x6
	bhi _080392A0
	lsls r0, r1, 2
	ldr r1, =_08039200
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_08039200:
	.4byte _0803921C
	.4byte _08039230
	.4byte _08039244
	.4byte _08039258
	.4byte _0803926C
	.4byte _08039280
	.4byte _08039294
_0803921C:
	ldr r0, =gUnknown_0831AA08
	lsls r1, r2, 2
	adds r1, r0
	ldrb r0, [r1]
	lsls r0, 30
	lsrs r0, 30
	b _080392A0
	.pool
_08039230:
	ldr r0, =gUnknown_0831AA08
	lsls r1, r2, 2
	adds r1, r0
	ldrb r0, [r1]
	lsls r0, 28
	lsrs r0, 30
	b _080392A0
	.pool
_08039244:
	ldr r0, =gUnknown_0831AA08
	lsls r1, r2, 2
	adds r1, r0
	ldrh r0, [r1]
	lsls r0, 23
	lsrs r0, 27
	b _080392A0
	.pool
_08039258:
	ldr r0, =gUnknown_0831AA08
	lsls r1, r2, 2
	adds r1, r0
	ldrb r0, [r1, 0x1]
	lsls r0, 29
	lsrs r0, 30
	b _080392A0
	.pool
_0803926C:
	ldr r0, =gUnknown_0831AA08
	lsls r1, r2, 2
	adds r1, r0
	ldrb r0, [r1, 0x1]
	lsls r0, 28
	lsrs r0, 31
	b _080392A0
	.pool
_08039280:
	ldr r0, =gUnknown_0831AA08
	lsls r1, r2, 2
	adds r1, r0
	ldrb r0, [r1, 0x1]
	lsls r0, 26
	lsrs r0, 30
	b _080392A0
	.pool
_08039294:
	ldr r0, =gUnknown_0831AA08
	lsls r1, r2, 2
	adds r1, r0
	ldr r0, [r1]
	lsls r0, 8
	lsrs r0, 22
_080392A0:
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80391E0

	thumb_func_start sub_80392A8
sub_80392A8: @ 80392A8
	push {r4,lr}
	sub sp, 0x8
	movs r0, 0
	bl SetHBlankCallback
	movs r0, 0
	bl SetVBlankCallback
	movs r4, 0
	str r4, [sp, 0x4]
	movs r1, 0xC0
	lsls r1, 19
	ldr r2, =0x05006000
	add r0, sp, 0x4
	bl CpuSet
	bl ResetPaletteFade
	ldr r0, =gUnknown_02022E14
	strh r4, [r0]
	ldr r0, =gUnknown_02022E16
	strh r4, [r0]
	ldr r0, =gUnknown_02022E18
	strh r4, [r0]
	ldr r0, =gUnknown_02022E1A
	strh r4, [r0]
	ldr r0, =gUnknown_02022E1C
	strh r4, [r0]
	ldr r0, =gUnknown_02022E1E
	strh r4, [r0]
	ldr r0, =gUnknown_02022E20
	strh r4, [r0]
	ldr r0, =gUnknown_02022E22
	strh r4, [r0]
	bl c2_berry_program_update_menu
	movs r1, 0x82
	lsls r1, 5
	movs r0, 0
	bl SetGpuReg
	bl sub_803570C
_080392FE:
	lsls r0, r4, 24
	lsrs r0, 24
	bl sub_80363C4
	adds r4, 0x1
	cmp r4, 0x1
	ble _080392FE
	bl ResetSpriteData
	bl ResetTasks
	bl FreeAllSpritePalettes
	ldr r1, =gReservedSpritePaletteCount
	movs r0, 0x4
	strb r0, [r1]
	ldr r0, =vblank_cb_08078BB4
	bl SetVBlankCallback
	ldr r0, =sub_803937C
	bl SetMainCallback2
	movs r0, 0x1
	negs r0, r0
	movs r4, 0
	str r4, [sp]
	movs r1, 0
	movs r2, 0x10
	movs r3, 0
	bl BeginNormalPaletteFade
	ldr r0, =gBattleCommunication
	strb r4, [r0]
	add sp, 0x8
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80392A8

	thumb_func_start sub_803937C
sub_803937C: @ 803937C
	push {lr}
	bl sub_803939C
	bl AnimateSprites
	bl BuildOamBuffer
	bl RunTextPrinters
	bl UpdatePaletteFade
	bl RunTasks
	pop {r0}
	bx r0
	thumb_func_end sub_803937C

	thumb_func_start sub_803939C
sub_803939C: @ 803939C
	push {r4,r5,lr}
	sub sp, 0x4
	ldr r0, =gBattleCommunication
	ldrb r1, [r0]
	adds r4, r0, 0
	cmp r1, 0xC
	bls _080393AC
	b _0803975E
_080393AC:
	lsls r0, r1, 2
	ldr r1, =_080393C0
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_080393C0:
	.4byte _080393F4
	.4byte _08039414
	.4byte _08039450
	.4byte _08039470
	.4byte _0803949C
	.4byte _080394D8
	.4byte _0803957C
	.4byte _08039704
	.4byte _080395CC
	.4byte _08039610
	.4byte _08039678
	.4byte _080396A8
	.4byte _08039704
_080393F4:
	movs r0, 0
	bl ShowBg
	movs r0, 0x1
	bl ShowBg
	movs r0, 0x2
	bl ShowBg
	ldr r1, =gBattleCommunication
	ldrb r0, [r1]
	adds r0, 0x1
	b _0803975C
	.pool
_08039414:
	ldr r0, =gMain
	ldr r1, =0x00000439
	adds r0, r1
	ldrb r1, [r0]
	movs r0, 0x4
	ands r0, r1
	cmp r0, 0
	beq _08039434
	ldr r0, =gUnknown_03003124
	ldrb r0, [r0]
	cmp r0, 0
	bne _08039434
	ldr r0, =sub_80B3AF8
	movs r1, 0x5
	bl CreateTask
_08039434:
	ldr r1, =gBattleCommunication
	ldrb r0, [r1]
	adds r0, 0x1
	b _0803975C
	.pool
_08039450:
	ldr r0, =sub_80B3AF8
	bl FuncIsActiveTask
	lsls r0, 24
	cmp r0, 0
	beq _0803945E
	b _0803975E
_0803945E:
	ldr r1, =gBattleCommunication
	ldrb r0, [r1]
	adds r0, 0x1
	b _0803975C
	.pool
_08039470:
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0803947E
	b _0803975E
_0803947E:
	ldr r0, =gUnknown_085CD28F
	movs r1, 0
	bl battle_show_message_maybe
	ldr r1, =gBattleCommunication
	ldrb r0, [r1]
	adds r0, 0x1
	b _0803975C
	.pool
_0803949C:
	movs r0, 0
	bl IsTextPrinterActive
	lsls r0, 16
	lsrs r0, 16
	cmp r0, 0
	beq _080394AC
	b _0803975E
_080394AC:
	str r0, [sp]
	movs r0, 0x18
	movs r1, 0x8
	movs r2, 0x1D
	movs r3, 0xD
	bl sub_8056A3C
	ldr r0, =gUnknown_085CCABB
	movs r1, 0xC
	bl battle_show_message_maybe
	ldr r4, =gBattleCommunication
	movs r0, 0x1
	strb r0, [r4, 0x1]
	bl sub_8056B74
	b _080396EA
	.pool
_080394D8:
	ldr r0, =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0x40
	ands r0, r1
	cmp r0, 0
	beq _08039500
	ldrb r0, [r4, 0x1]
	cmp r0, 0
	bne _080394EC
	b _0803975E
_080394EC:
	movs r0, 0x5
	bl PlaySE
	ldrb r0, [r4, 0x1]
	bl sub_8056BAC
	movs r0, 0
	b _0803951E
	.pool
_08039500:
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _08039526
	ldrb r0, [r4, 0x1]
	cmp r0, 0
	beq _08039510
	b _0803975E
_08039510:
	movs r0, 0x5
	bl PlaySE
	ldrb r0, [r4, 0x1]
	bl sub_8056BAC
	movs r0, 0x1
_0803951E:
	strb r0, [r4, 0x1]
	bl sub_8056B74
	b _0803975E
_08039526:
	movs r5, 0x1
	adds r0, r5, 0
	ands r0, r1
	cmp r0, 0
	beq _08039560
	movs r0, 0x5
	bl PlaySE
	ldr r4, =gBattleCommunication
	ldrb r0, [r4, 0x1]
	cmp r0, 0
	beq _08039540
	b _080396EA
_08039540:
	str r5, [sp]
	movs r0, 0x18
	movs r1, 0x8
	movs r2, 0x1D
	movs r3, 0xD
	bl sub_8056A3C
	bl sub_8185338
	strb r0, [r4, 0x1]
	movs r0, 0xA
	strb r0, [r4]
	b _0803975E
	.pool
_08039560:
	movs r0, 0x2
	ands r0, r1
	cmp r0, 0
	bne _0803956A
	b _0803975E
_0803956A:
	movs r0, 0x5
	bl PlaySE
	ldr r1, =gBattleCommunication
	ldrb r0, [r1]
	adds r0, 0x1
	b _0803975C
	.pool
_0803957C:
	bl sub_800A520
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _0803958A
	b _0803975E
_0803958A:
	str r0, [sp]
	movs r0, 0x18
	movs r1, 0x8
	movs r2, 0x1D
	movs r3, 0xD
	bl sub_8056A3C
	ldr r0, =gMain
	ldr r1, =0x00000439
	adds r0, r1
	ldrb r1, [r0]
	movs r0, 0x4
	ands r0, r1
	cmp r0, 0
	beq _080395B4
	bl sub_800ADF8
	ldr r0, =gUnknown_0824978D
	movs r1, 0
	bl battle_show_message_maybe
_080395B4:
	ldr r1, =gBattleCommunication
	ldrb r0, [r1]
	adds r0, 0x1
	b _0803975C
	.pool
_080395CC:
	ldrb r0, [r4, 0x1]
	subs r0, 0x1
	strb r0, [r4, 0x1]
	lsls r0, 24
	cmp r0, 0
	beq _080395DA
	b _0803975E
_080395DA:
	ldr r0, =gMain
	ldr r1, =0x00000439
	adds r0, r1
	ldrb r1, [r0]
	movs r0, 0x4
	ands r0, r1
	cmp r0, 0
	beq _080395F6
	ldr r0, =gLinkVSyncDisabled
	ldrb r0, [r0]
	cmp r0, 0
	bne _080395F6
	bl sub_800AC34
_080395F6:
	ldr r1, =gBattleCommunication
	ldrb r0, [r1]
	adds r0, 0x1
	b _0803975C
	.pool
_08039610:
	ldr r2, =gMain
	ldr r1, =0x00000439
	adds r0, r2, r1
	ldrb r1, [r0]
	movs r0, 0x4
	ands r0, r1
	adds r3, r2, 0
	cmp r0, 0
	beq _08039634
	ldr r0, =gLinkVSyncDisabled
	ldrb r0, [r0]
	cmp r0, 0
	bne _08039634
	ldr r0, =gUnknown_03003124
	ldrb r0, [r0]
	cmp r0, 0x1
	bne _08039634
	b _0803975E
_08039634:
	ldr r0, =0x00000439
	adds r2, r3, r0
	ldrb r1, [r2]
	movs r0, 0x5
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _08039650
	b _0803975E
_08039650:
	ldr r0, [r3, 0x8]
	bl SetMainCallback2
	bl sub_8057028
	bl dp11_free
	bl sub_805F094
	b _0803975E
	.pool
_08039678:
	ldrb r0, [r4, 0x1]
	cmp r0, 0x1
	bne _080396A0
	movs r0, 0x37
	bl PlaySE
	ldr r0, =gUnknown_085CD2CB
_08039686:
	bl StrCpyDecodeToDisplayedStringBattle
	ldr r0, =gDisplayedStringBattle
	movs r1, 0
	bl battle_show_message_maybe
	movs r0, 0x80
	strb r0, [r4, 0x1]
	b _080396EA
	.pool
_080396A0:
	ldr r0, =gUnknown_08242481
	b _08039686
	.pool
_080396A8:
	bl sub_800A520
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0803975E
	movs r0, 0
	bl IsTextPrinterActive
	lsls r0, 16
	cmp r0, 0
	bne _0803975E
	ldr r4, =gBattleCommunication
	ldrb r0, [r4, 0x1]
	subs r0, 0x1
	strb r0, [r4, 0x1]
	lsls r0, 24
	cmp r0, 0
	bne _0803975E
	ldr r0, =gMain
	ldr r1, =0x00000439
	adds r0, r1
	ldrb r1, [r0]
	movs r0, 0x4
	ands r0, r1
	cmp r0, 0
	beq _080396EA
	bl sub_800ADF8
	ldr r0, =gUnknown_0824978D
	movs r1, 0
	bl battle_show_message_maybe
_080396EA:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	b _0803975E
	.pool
_08039704:
	movs r0, 0
	bl IsTextPrinterActive
	lsls r0, 16
	lsrs r4, r0, 16
	cmp r4, 0
	bne _0803975E
	ldr r0, =gMain
	ldr r1, =0x00000439
	adds r0, r1
	ldrb r1, [r0]
	movs r0, 0x4
	ands r0, r1
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	beq _08039744
	bl sub_800A520
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0803975E
	movs r0, 0x1
	negs r0, r0
	str r4, [sp]
	b _0803974A
	.pool
_08039744:
	movs r0, 0x1
	negs r0, r0
	str r1, [sp]
_0803974A:
	movs r1, 0
	movs r2, 0
	movs r3, 0x10
	bl BeginNormalPaletteFade
	ldr r1, =gBattleCommunication
	movs r0, 0x20
	strb r0, [r1, 0x1]
	movs r0, 0x8
_0803975C:
	strb r0, [r1]
_0803975E:
	add sp, 0x4
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803939C

	thumb_func_start shedinja_something
shedinja_something: @ 803976C
	push {r4,r5,lr}
	sub sp, 0x10
	adds r4, r0, 0
	add r5, sp, 0xC
	movs r0, 0x1
	strb r0, [r5]
	adds r0, r4, 0
	movs r1, 0xB
	bl GetMonData
	ldr r1, =0x0000012f
	cmp r0, r1
	bne _080397B4
	adds r0, r4, 0
	movs r1, 0x3
	bl GetMonData
	ldrb r1, [r5]
	cmp r0, r1
	beq _080397B4
	adds r0, r4, 0
	movs r1, 0x2
	mov r2, sp
	bl GetMonData
	ldr r1, =gUnknown_0831ACA0
	mov r0, sp
	bl StringCompareWithoutExtCtrlCodes
	cmp r0, 0
	bne _080397B4
	adds r0, r4, 0
	movs r1, 0x3
	adds r2, r5, 0
	bl SetMonData
_080397B4:
	add sp, 0x10
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end shedinja_something

	thumb_func_start sub_80397C4
sub_80397C4: @ 80397C4
	ldr r2, =gUnknown_0831ABA0
	lsls r0, 2
	adds r0, r2
	ldr r0, [r0]
	lsls r1, 3
	adds r1, r0
	ldrb r0, [r1, 0x3]
	lsls r0, 3
	bx lr
	.pool
	thumb_func_end sub_80397C4

	thumb_func_start oac_poke_opponent
oac_poke_opponent: @ 80397DC
	push {lr}
	sub sp, 0x4
	ldr r1, =sub_803980C
	str r1, [r0, 0x1C]
	movs r1, 0
	bl StartSpriteAnimIfDifferent
	movs r0, 0x80
	lsls r0, 10
	ldr r1, =0x00002108
	str r1, [sp]
	movs r1, 0
	movs r2, 0xA
	movs r3, 0xA
	bl BeginNormalPaletteFade
	add sp, 0x4
	pop {r0}
	bx r0
	.pool
	thumb_func_end oac_poke_opponent

	thumb_func_start sub_803980C
sub_803980C: @ 803980C
	push {lr}
	adds r2, r0, 0
	ldr r0, =gUnknown_020243FC
	ldrh r1, [r0]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	bne _0803982C
	ldrh r0, [r2, 0x24]
	adds r0, 0x2
	strh r0, [r2, 0x24]
	lsls r0, 16
	cmp r0, 0
	bne _0803982C
	ldr r0, =sub_8039838
	str r0, [r2, 0x1C]
_0803982C:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803980C

	thumb_func_start sub_8039838
sub_8039838: @ 8039838
	push {r4,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r0, 0x3F
	ldrb r1, [r0]
	movs r0, 0x10
	ands r0, r1
	cmp r0, 0
	beq _08039880
	ldrh r0, [r4, 0x2E]
	lsls r0, 24
	lsrs r0, 24
	bl sub_8076918
	ldr r1, =gHealthBoxesIds
	movs r2, 0x2E
	ldrsh r0, [r4, r2]
	adds r0, r1
	ldrb r0, [r0]
	bl sub_80729D0
	ldr r0, =sub_8039894
	str r0, [r4, 0x1C]
	adds r0, r4, 0
	movs r1, 0
	bl StartSpriteAnimIfDifferent
	movs r0, 0x80
	lsls r0, 10
	ldr r1, =0x00002108
	str r1, [sp]
	movs r1, 0
	movs r2, 0xA
	movs r3, 0
	bl BeginNormalPaletteFade
_08039880:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8039838

	thumb_func_start sub_8039894
sub_8039894: @ 8039894
	push {lr}
	adds r2, r0, 0
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _080398B0
	ldrh r1, [r2, 0x32]
	adds r0, r2, 0
	movs r2, 0
	movs r3, 0x1
	bl BattleAnimateFrontSprite
_080398B0:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8039894

	thumb_func_start SpriteCallbackDummy_2
SpriteCallbackDummy_2: @ 80398B8
	bx lr
	thumb_func_end SpriteCallbackDummy_2

	thumb_func_start sub_80398BC
sub_80398BC: @ 80398BC
	movs r1, 0x6
	strh r1, [r0, 0x34]
	movs r1, 0x1
	strh r1, [r0, 0x36]
	ldr r1, =sub_80398D0
	str r1, [r0, 0x1C]
	bx lr
	.pool
	thumb_func_end sub_80398BC

	thumb_func_start sub_80398D0
sub_80398D0: @ 80398D0
	push {r4,lr}
	adds r3, r0, 0
	ldrh r0, [r3, 0x36]
	subs r0, 0x1
	strh r0, [r3, 0x36]
	lsls r0, 16
	cmp r0, 0
	bne _08039924
	movs r0, 0x8
	strh r0, [r3, 0x36]
	movs r0, 0x3E
	adds r0, r3
	mov r12, r0
	ldrb r2, [r0]
	lsls r0, r2, 29
	lsrs r0, 31
	movs r1, 0x1
	eors r1, r0
	lsls r1, 2
	movs r4, 0x5
	negs r4, r4
	adds r0, r4, 0
	ands r0, r2
	orrs r0, r1
	mov r1, r12
	strb r0, [r1]
	ldrh r0, [r3, 0x34]
	subs r0, 0x1
	strh r0, [r3, 0x34]
	lsls r0, 16
	asrs r2, r0, 16
	cmp r2, 0
	bne _08039924
	ldrb r1, [r1]
	adds r0, r4, 0
	ands r0, r1
	mov r1, r12
	strb r0, [r1]
	ldr r0, =SpriteCallbackDummy_2
	str r0, [r3, 0x1C]
	ldr r0, =gUnknown_02022F88
	str r2, [r0]
_08039924:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80398D0

	thumb_func_start sub_8039934
sub_8039934: @ 8039934
	push {r4-r7,lr}
	mov r7, r9
	mov r6, r8
	push {r6,r7}
	mov r9, r0
	ldrh r0, [r0, 0x2E]
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r0, =gUnknown_020244D0
	ldr r0, [r0]
	ldr r1, [r0]
	lsls r0, r6, 2
	adds r1, r0, r1
	ldrh r0, [r1, 0x2]
	cmp r0, 0
	beq _0803995C
	adds r4, r0, 0
	b _08039960
	.pool
_0803995C:
	mov r0, r9
	ldrh r4, [r0, 0x32]
_08039960:
	ldr r1, =gBattlePartyID
	lsls r0, r6, 1
	adds r5, r0, r1
	ldrh r0, [r5]
	movs r1, 0x64
	mov r8, r1
	mov r1, r8
	muls r1, r0
	adds r0, r1, 0
	ldr r7, =gEnemyParty
	adds r0, r7
	movs r1, 0
	bl GetMonData
	cmp r4, 0xC9
	bne _080399E4
	ldrh r0, [r5]
	mov r1, r8
	muls r1, r0
	adds r0, r1, 0
	adds r0, r7
	movs r1, 0
	bl GetMonData
	adds r2, r0, 0
	movs r0, 0xC0
	lsls r0, 18
	ands r0, r2
	lsrs r0, 18
	movs r1, 0xC0
	lsls r1, 10
	ands r1, r2
	lsrs r1, 12
	orrs r0, r1
	movs r1, 0xC0
	lsls r1, 2
	ands r1, r2
	lsrs r1, 6
	orrs r0, r1
	movs r1, 0x3
	ands r1, r2
	orrs r0, r1
	movs r1, 0x1C
	bl __umodsi3
	lsls r0, 16
	lsrs r0, 16
	cmp r0, 0
	bne _080399D0
	movs r0, 0xC9
	b _080399DA
	.pool
_080399D0:
	movs r1, 0xCE
	lsls r1, 1
	adds r0, r1
	lsls r0, 16
	lsrs r0, 16
_080399DA:
	ldr r1, =gUnknown_08300D38
	lsls r0, 2
	b _08039A1C
	.pool
_080399E4:
	ldr r0, =0x00000181
	cmp r4, r0
	bne _08039A08
	ldr r0, =gUnknown_08525F78
	ldr r1, =gBattleMonForms
	adds r1, r6, r1
	ldrb r1, [r1]
	lsls r1, 2
	adds r1, r0
	ldrb r0, [r1, 0x1]
	b _08039A20
	.pool
_08039A08:
	movs r0, 0xCE
	lsls r0, 1
	cmp r4, r0
	bls _08039A18
	ldr r0, =gUnknown_08300D38
	b _08039A1E
	.pool
_08039A18:
	ldr r1, =gUnknown_08300D38
	lsls r0, r4, 2
_08039A1C:
	adds r0, r1
_08039A1E:
	ldrb r0, [r0, 0x1]
_08039A20:
	lsrs r1, r0, 3
	movs r0, 0x8
	subs r0, r1
	mov r1, r9
	strh r0, [r1, 0x34]
	movs r0, 0x1
	strh r0, [r1, 0x36]
	ldr r0, =sub_8039A48
	str r0, [r1, 0x1C]
	pop {r3,r4}
	mov r8, r3
	mov r9, r4
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8039934

	thumb_func_start sub_8039A48
sub_8039A48: @ 8039A48
	push {r4,lr}
	adds r4, r0, 0
	ldrh r0, [r4, 0x36]
	subs r0, 0x1
	strh r0, [r4, 0x36]
	lsls r0, 16
	cmp r0, 0
	bne _08039AC8
	movs r0, 0x2
	strh r0, [r4, 0x36]
	ldrh r0, [r4, 0x26]
	adds r0, 0x8
	strh r0, [r4, 0x26]
	ldrh r0, [r4, 0x34]
	subs r0, 0x1
	strh r0, [r4, 0x34]
	lsls r0, 16
	cmp r0, 0
	bge _08039A7C
	adds r0, r4, 0
	bl FreeSpriteOamMatrix
	adds r0, r4, 0
	bl DestroySprite
	b _08039AC8
_08039A7C:
	ldrh r0, [r4, 0x2E]
	lsls r0, 24
	lsrs r0, 24
	bl GetBankIdentity
	ldr r1, =gBattleSpritesGfx
	ldr r1, [r1]
	lsls r0, 24
	lsrs r0, 22
	adds r1, 0x4
	adds r1, r0
	ldr r2, =gBattleMonForms
	movs r3, 0x2E
	ldrsh r0, [r4, r3]
	adds r0, r2
	ldrb r0, [r0]
	lsls r0, 11
	ldr r1, [r1]
	adds r1, r0
	movs r2, 0x34
	ldrsh r0, [r4, r2]
	lsls r0, 8
	adds r1, r0
	movs r2, 0
	movs r0, 0xFF
_08039AAE:
	strb r2, [r1]
	adds r1, 0x1
	subs r0, 0x1
	cmp r0, 0
	bge _08039AAE
	ldr r0, =gBattleMonForms
	movs r3, 0x2E
	ldrsh r1, [r4, r3]
	adds r1, r0
	ldrb r1, [r1]
	adds r0, r4, 0
	bl StartSpriteAnim
_08039AC8:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8039A48

	thumb_func_start sub_8039AD8
sub_8039AD8: @ 8039AD8
	movs r1, 0x8
	strh r1, [r0, 0x34]
	adds r1, r0, 0
	adds r1, 0x3E
	ldrb r1, [r1]
	lsls r1, 29
	lsrs r1, 31
	strh r1, [r0, 0x36]
	ldr r1, =sub_8039AF4
	str r1, [r0, 0x1C]
	bx lr
	.pool
	thumb_func_end sub_8039AD8

	thumb_func_start sub_8039AF4
sub_8039AF4: @ 8039AF4
	push {lr}
	adds r3, r0, 0
	ldrh r0, [r3, 0x34]
	subs r0, 0x1
	strh r0, [r3, 0x34]
	lsls r0, 16
	cmp r0, 0
	bne _08039B26
	movs r0, 0x3E
	adds r0, r3
	mov r12, r0
	ldrb r2, [r0]
	lsls r0, r2, 29
	lsrs r0, 31
	movs r1, 0x1
	eors r1, r0
	lsls r1, 2
	movs r0, 0x5
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	mov r1, r12
	strb r0, [r1]
	movs r0, 0x8
	strh r0, [r3, 0x34]
_08039B26:
	pop {r0}
	bx r0
	thumb_func_end sub_8039AF4

	thumb_func_start sub_8039B2C
sub_8039B2C: @ 8039B2C
	movs r1, 0x3E
	adds r1, r0
	mov r12, r1
	movs r1, 0x1
	ldrh r2, [r0, 0x36]
	ands r2, r1
	lsls r2, 2
	mov r1, r12
	ldrb r3, [r1]
	movs r1, 0x5
	negs r1, r1
	ands r1, r3
	orrs r1, r2
	mov r2, r12
	strb r1, [r2]
	movs r1, 0
	strh r1, [r0, 0x36]
	ldr r1, =SpriteCallbackDummy_2
	str r1, [r0, 0x1C]
	bx lr
	.pool
	thumb_func_end sub_8039B2C

	thumb_func_start sub_8039B58
sub_8039B58: @ 8039B58
	push {r4,lr}
	adds r4, r0, 0
	adds r0, 0x3F
	ldrb r1, [r0]
	movs r0, 0x20
	ands r0, r1
	cmp r0, 0
	beq _08039BA0
	ldr r0, =gHitMarker
	ldr r0, [r0]
	movs r1, 0x80
	ands r0, r1
	cmp r0, 0
	beq _08039B80
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	ldr r1, =0x02000002
	ands r0, r1
	cmp r0, 0
	beq _08039B94
_08039B80:
	ldrh r0, [r4, 0x32]
	bl HasTwoFramesAnimation
	lsls r0, 24
	cmp r0, 0
	beq _08039B94
	adds r0, r4, 0
	movs r1, 0x1
	bl StartSpriteAnim
_08039B94:
	ldrh r1, [r4, 0x32]
	adds r0, r4, 0
	movs r2, 0x1
	movs r3, 0x1
	bl BattleAnimateFrontSprite
_08039BA0:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8039B58

	thumb_func_start sub_8039BB4
sub_8039BB4: @ 8039BB4
	ldr r1, =oac_poke_ally_
	str r1, [r0, 0x1C]
	bx lr
	.pool
	thumb_func_end sub_8039BB4

	thumb_func_start oac_poke_ally_
oac_poke_ally_: @ 8039BC0
	push {lr}
	adds r2, r0, 0
	ldr r0, =gUnknown_020243FC
	ldrh r1, [r0]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	bne _08039BE4
	ldrh r0, [r2, 0x24]
	subs r0, 0x2
	strh r0, [r2, 0x24]
	lsls r0, 16
	asrs r1, r0, 16
	cmp r1, 0
	bne _08039BE4
	ldr r0, =nullsub_19
	str r0, [r2, 0x1C]
	strh r1, [r2, 0x30]
_08039BE4:
	pop {r0}
	bx r0
	.pool
	thumb_func_end oac_poke_ally_

	thumb_func_start sub_8039BF0
sub_8039BF0: @ 8039BF0
	ldr r1, =nullsub_19
	str r1, [r0, 0x1C]
	bx lr
	.pool
	thumb_func_end sub_8039BF0

	thumb_func_start nullsub_19
nullsub_19: @ 8039BFC
	bx lr
	thumb_func_end nullsub_19

	thumb_func_start sub_8039C00
sub_8039C00: @ 8039C00
	push {lr}
	adds r2, r0, 0
	ldr r0, =gUnknown_020243FC
	ldrh r1, [r0]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	bne _08039C20
	ldrh r0, [r2, 0x30]
	ldrh r1, [r2, 0x24]
	adds r0, r1
	strh r0, [r2, 0x24]
	ldrh r0, [r2, 0x32]
	ldrh r1, [r2, 0x26]
	adds r0, r1
	strh r0, [r2, 0x26]
_08039C20:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8039C00

	thumb_func_start dp11b_obj_instanciate
dp11b_obj_instanciate: @ 8039C28
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	lsls r0, 24
	lsrs r4, r0, 24
	lsls r1, 24
	lsrs r1, 24
	mov r8, r1
	lsls r2, 24
	lsrs r2, 24
	mov r9, r2
	lsls r3, 24
	lsrs r3, 24
	mov r10, r3
	cmp r1, 0
	beq _08039C64
	ldr r0, =gUnknown_020244D0
	ldr r0, [r0]
	ldr r1, [r0, 0x4]
	lsls r2, r4, 1
	adds r0, r2, r4
	lsls r0, 2
	adds r0, r1
	ldrb r1, [r0]
	movs r0, 0x2
	b _08039C76
	.pool
_08039C64:
	ldr r0, =gUnknown_020244D0
	ldr r0, [r0]
	ldr r1, [r0, 0x4]
	lsls r2, r4, 1
	adds r0, r2, r4
	lsls r0, 2
	adds r0, r1
	ldrb r1, [r0]
	movs r0, 0x4
_08039C76:
	ands r0, r1
	adds r6, r2, 0
	cmp r0, 0
	bne _08039D2C
	ldr r0, =objc_dp11b_pingpong
	bl CreateInvisibleSpriteWithCallback
	lsls r0, 24
	lsrs r5, r0, 24
	mov r0, r8
	cmp r0, 0x1
	bne _08039CD0
	ldr r0, =gHealthBoxesIds
	adds r0, r4, r0
	ldrb r7, [r0]
	ldr r2, =gUnknown_020244D0
	ldr r0, [r2]
	ldr r0, [r0, 0x4]
	adds r1, r6, r4
	lsls r1, 2
	adds r0, r1, r0
	strb r5, [r0, 0x2]
	ldr r0, [r2]
	ldr r0, [r0, 0x4]
	adds r1, r0
	ldrb r0, [r1]
	movs r2, 0x2
	orrs r0, r2
	strb r0, [r1]
	ldr r2, =gSprites
	lsls r3, r5, 4
	adds r0, r3, r5
	lsls r0, 2
	adds r0, r2
	movs r1, 0x80
	b _08039CFE
	.pool
_08039CD0:
	ldr r0, =gBankSpriteIds
	adds r0, r4, r0
	ldrb r7, [r0]
	ldr r2, =gUnknown_020244D0
	ldr r0, [r2]
	ldr r0, [r0, 0x4]
	adds r1, r6, r4
	lsls r1, 2
	adds r0, r1, r0
	strb r5, [r0, 0x3]
	ldr r0, [r2]
	ldr r0, [r0, 0x4]
	adds r1, r0
	ldrb r0, [r1]
	movs r2, 0x4
	orrs r0, r2
	strb r0, [r1]
	ldr r2, =gSprites
	lsls r3, r5, 4
	adds r0, r3, r5
	lsls r0, 2
	adds r0, r2
	movs r1, 0xC0
_08039CFE:
	strh r1, [r0, 0x2E]
	adds r4, r2, 0
	adds r1, r3, r5
	lsls r1, 2
	adds r1, r4
	mov r2, r9
	lsls r0, r2, 24
	asrs r0, 24
	movs r2, 0
	strh r0, [r1, 0x30]
	mov r3, r10
	lsls r0, r3, 24
	asrs r0, 24
	strh r0, [r1, 0x32]
	strh r7, [r1, 0x34]
	mov r0, r8
	strh r0, [r1, 0x36]
	lsls r0, r7, 4
	adds r0, r7
	lsls r0, 2
	adds r0, r4
	strh r2, [r0, 0x24]
	strh r2, [r0, 0x26]
_08039D2C:
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end dp11b_obj_instanciate

	thumb_func_start dp11b_obj_free
dp11b_obj_free: @ 8039D48
	push {r4-r6,lr}
	lsls r0, 24
	lsrs r2, r0, 24
	lsls r1, 24
	lsrs r1, 24
	cmp r1, 0x1
	bne _08039D9C
	ldr r6, =gUnknown_020244D0
	ldr r0, [r6]
	ldr r1, [r0, 0x4]
	lsls r0, r2, 1
	adds r0, r2
	lsls r5, r0, 2
	adds r3, r5, r1
	ldrb r1, [r3]
	movs r0, 0x2
	ands r0, r1
	cmp r0, 0
	beq _08039DEA
	ldr r2, =gSprites
	ldrb r1, [r3, 0x2]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrh r1, [r0, 0x34]
	lsls r1, 24
	lsrs r4, r1, 24
	bl DestroySprite
	ldr r0, [r6]
	ldr r1, [r0, 0x4]
	adds r1, r5, r1
	ldrb r2, [r1]
	movs r0, 0x3
	negs r0, r0
	b _08039DD6
	.pool
_08039D9C:
	ldr r6, =gUnknown_020244D0
	ldr r0, [r6]
	ldr r1, [r0, 0x4]
	lsls r0, r2, 1
	adds r0, r2
	lsls r5, r0, 2
	adds r3, r5, r1
	ldrb r1, [r3]
	movs r0, 0x4
	ands r0, r1
	cmp r0, 0
	beq _08039DEA
	ldr r2, =gSprites
	ldrb r1, [r3, 0x3]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrh r1, [r0, 0x34]
	lsls r1, 24
	lsrs r4, r1, 24
	bl DestroySprite
	ldr r0, [r6]
	ldr r1, [r0, 0x4]
	adds r1, r5, r1
	ldrb r2, [r1]
	movs r0, 0x5
	negs r0, r0
_08039DD6:
	ands r0, r2
	strb r0, [r1]
	ldr r0, =gSprites
	lsls r1, r4, 4
	adds r1, r4
	lsls r1, 2
	adds r1, r0
	movs r0, 0
	strh r0, [r1, 0x24]
	strh r0, [r1, 0x26]
_08039DEA:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end dp11b_obj_free

	thumb_func_start objc_dp11b_pingpong
objc_dp11b_pingpong: @ 8039DF8
	push {r4,r5,lr}
	adds r4, r0, 0
	ldrh r0, [r4, 0x34]
	lsls r0, 24
	lsrs r5, r0, 24
	movs r1, 0x36
	ldrsh r0, [r4, r1]
	cmp r0, 0x1
	bne _08039E10
	movs r2, 0x2E
	ldrsh r0, [r4, r2]
	b _08039E14
_08039E10:
	movs r1, 0x2E
	ldrsh r0, [r4, r1]
_08039E14:
	movs r2, 0x32
	ldrsh r1, [r4, r2]
	bl Sin
	ldr r2, =gSprites
	lsls r1, r5, 4
	adds r1, r5
	lsls r1, 2
	adds r1, r2
	ldrh r2, [r4, 0x32]
	adds r0, r2
	strh r0, [r1, 0x26]
	ldrh r0, [r4, 0x30]
	ldrh r1, [r4, 0x2E]
	adds r0, r1
	movs r1, 0xFF
	ands r0, r1
	strh r0, [r4, 0x2E]
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end objc_dp11b_pingpong

	thumb_func_start sub_8039E44
sub_8039E44: @ 8039E44
	push {lr}
	adds r2, r0, 0
	adds r0, 0x3F
	ldrb r1, [r0]
	movs r0, 0x20
	ands r0, r1
	cmp r0, 0
	beq _08039E5C
	ldrh r1, [r2, 0x32]
	adds r0, r2, 0
	bl BattleAnimateBackSprite
_08039E5C:
	pop {r0}
	bx r0
	thumb_func_end sub_8039E44

	thumb_func_start sub_8039E60
sub_8039E60: @ 8039E60
	push {r4,lr}
	adds r4, r0, 0
	bl sub_8039E9C
	adds r0, r4, 0
	adds r0, 0x3F
	ldrb r1, [r0]
	movs r0, 0x10
	ands r0, r1
	cmp r0, 0
	beq _08039E7A
	ldr r0, =nullsub_19
	str r0, [r4, 0x1C]
_08039E7A:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8039E60

	thumb_func_start sub_8039E84
sub_8039E84: @ 8039E84
	push {r4,lr}
	adds r4, r0, 0
	movs r1, 0x1
	bl StartSpriteAnim
	ldr r0, =sub_8039E60
	str r0, [r4, 0x1C]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8039E84

	thumb_func_start sub_8039E9C
sub_8039E9C: @ 8039E9C
	push {lr}
	adds r2, r0, 0
	adds r0, 0x2C
	ldrb r1, [r0]
	movs r0, 0x3F
	ands r0, r1
	cmp r0, 0
	bne _08039EBE
	ldr r1, =gUnknown_0831ACE0
	adds r0, r2, 0
	adds r0, 0x2B
	ldrb r0, [r0]
	adds r0, r1
	ldrb r1, [r0]
	adds r0, r2, 0
	adds r0, 0x28
	strb r1, [r0]
_08039EBE:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8039E9C

	thumb_func_start nullsub_20
nullsub_20: @ 8039EC8
	bx lr
	thumb_func_end nullsub_20

	thumb_func_start sub_8039ECC
sub_8039ECC: @ 8039ECC
	push {lr}
	bl sub_8039F40
	ldr r1, =gBattleCommunication
	movs r0, 0
	strb r0, [r1, 0x1]
	ldr r1, =gBattleMainFunc
	ldr r0, =bc_8012FAC
	str r0, [r1]
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8039ECC

	thumb_func_start sub_8039EF0
sub_8039EF0: @ 8039EF0
	push {r4,r5,lr}
	ldr r0, =gBattleMainFunc
	ldr r0, [r0]
	bl _call_via_r0
	ldr r1, =gActiveBank
	movs r0, 0
	strb r0, [r1]
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r0, 0
	beq _08039F2A
	ldr r5, =gBattleBankFunc
	adds r4, r1, 0
_08039F0C:
	ldrb r0, [r4]
	lsls r0, 2
	adds r0, r5
	ldr r0, [r0]
	bl _call_via_r0
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	ldr r1, =gNoOfAllBanks
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r1]
	cmp r0, r1
	bcc _08039F0C
_08039F2A:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8039EF0

	thumb_func_start sub_8039F40
sub_8039F40: @ 8039F40
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	movs r0, 0
	bl sub_803D580
	bl sub_803D6A0
	movs r2, 0
	movs r3, 0
	ldr r0, =gUnknown_02024260
	mov r10, r0
	ldr r1, =gUnknown_02024258
	mov r9, r1
	ldr r0, =gUnknown_02024250
	mov r8, r0
	ldr r1, =gLastUsedMovesByBanks
	mov r12, r1
	ldr r5, =gDisableStructs
	movs r4, 0
	ldr r7, =gUnknown_02024240
	ldr r6, =gUnknown_02024268
_08039F70:
	ldr r0, =gStatuses3
	adds r0, r4, r0
	str r3, [r0]
	movs r1, 0
_08039F78:
	adds r0, r5, r1
	strb r3, [r0]
	adds r1, 0x1
	cmp r1, 0x1B
	bls _08039F78
	movs r0, 0x2
	strb r0, [r5, 0x16]
	ldr r1, =gUnknown_02024284
	adds r0, r2, r1
	strb r3, [r0]
	mov r0, r12
	strh r3, [r0]
	mov r1, r8
	strh r3, [r1]
	mov r0, r9
	strh r3, [r0]
	mov r1, r10
	strh r3, [r1]
	ldr r0, =gUnknown_02024270
	adds r1, r2, r0
	movs r0, 0xFF
	strb r0, [r1]
	strh r3, [r6]
	strh r3, [r7]
	ldr r1, =gBattleResources
	ldr r0, [r1]
	ldr r0, [r0, 0x4]
	adds r0, r4
	str r3, [r0]
	ldr r1, =gUnknown_02024230
	adds r0, r4, r1
	str r3, [r0]
	movs r0, 0x2
	add r10, r0
	add r9, r0
	add r8, r0
	add r12, r0
	adds r5, 0x1C
	adds r4, 0x4
	adds r7, 0x2
	adds r6, 0x2
	adds r2, 0x1
	cmp r2, 0x3
	ble _08039F70
	movs r5, 0
	ldr r3, =gSideTimers
	ldr r4, =gSideAffecting
	movs r2, 0x1
_08039FD8:
	strh r5, [r4]
	movs r1, 0
_08039FDC:
	adds r0, r3, r1
	strb r5, [r0]
	adds r1, 0x1
	cmp r1, 0xB
	bls _08039FDC
	adds r3, 0xC
	adds r4, 0x2
	subs r2, 0x1
	cmp r2, 0
	bge _08039FD8
	movs r1, 0
	ldr r2, =gBankAttacker
	strb r1, [r2]
	ldr r0, =gBankTarget
	strb r1, [r0]
	ldr r2, =gBattleWeather
	strh r1, [r2]
	ldr r1, =gWishFutureKnock
	movs r2, 0
	movs r3, 0
_0803A004:
	adds r0, r1, r2
	strb r3, [r0]
	adds r2, 0x1
	cmp r2, 0x2B
	bls _0803A004
	ldr r2, =gHitMarker
	movs r0, 0
	str r0, [r2]
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r0, 0x80
	lsls r0, 17
	ands r0, r1
	cmp r0, 0
	bne _0803A090
	movs r0, 0x2
	ands r1, r0
	cmp r1, 0
	bne _0803A0AE
	ldr r0, =gSaveBlock2Ptr
	ldr r0, [r0]
	ldrb r1, [r0, 0x15]
	movs r0, 0x4
	ands r0, r1
	cmp r0, 0
	beq _0803A0AE
	movs r0, 0x80
	b _0803A0AC
	.pool
_0803A090:
	ldr r0, =0x02000002
	ands r1, r0
	cmp r1, 0
	bne _0803A0AE
	bl sub_8185FB8
	lsls r0, 24
	cmp r0, 0
	beq _0803A0AE
	ldr r1, =gHitMarker
	ldr r0, [r1]
	movs r1, 0x80
	orrs r0, r1
	ldr r2, =gHitMarker
_0803A0AC:
	str r0, [r2]
_0803A0AE:
	ldr r3, =gBattleScripting
	ldr r0, =gSaveBlock2Ptr
	ldr r0, [r0]
	ldrb r0, [r0, 0x15]
	lsls r0, 30
	lsrs r0, 31
	movs r1, 0
	strb r0, [r3, 0x1D]
	ldr r0, =gUnknown_02024212
	strb r1, [r0]
	ldr r0, =gBattleOutcome
	strb r1, [r0]
	ldr r0, =gBattleExecBuffer
	str r1, [r0]
	ldr r0, =gUnknown_0202432E
	movs r2, 0
	strh r1, [r0]
	ldr r1, =gBattleResources
	ldr r0, [r1]
	ldr r0, [r0, 0x8]
	adds r0, 0x20
	strb r2, [r0]
	ldr r0, [r1]
	ldr r0, [r0, 0xC]
	adds r0, 0x20
	strb r2, [r0]
	ldr r5, =gUnknown_0202432C
	ldr r6, =gBattleMoveDamage
	ldr r7, =gUnknown_020243FC
	ldr r0, =gUnknown_03005D54
	mov r8, r0
	ldr r1, =gAbsentBankFlags
	mov r9, r1
	ldr r2, =gEnemyParty
	mov r10, r2
	ldr r1, =gBattleCommunication
	movs r2, 0
	adds r0, r1, 0x7
_0803A0FA:
	strb r2, [r0]
	subs r0, 0x1
	cmp r0, r1
	bge _0803A0FA
	movs r4, 0
	strh r4, [r5]
	movs r0, 0
	str r0, [r6]
	strh r0, [r7]
	strb r4, [r3, 0x18]
	strb r4, [r3, 0x19]
	mov r0, r8
	strb r4, [r0]
	mov r1, r9
	strb r4, [r1]
	ldr r5, =gBattleStruct
	ldr r0, [r5]
	adds r0, 0x6C
	strb r4, [r0]
	ldr r0, [r5]
	adds r0, 0x79
	strb r4, [r0]
	ldr r0, [r5]
	adds r0, 0x7A
	strb r4, [r0]
	mov r0, r10
	movs r1, 0xB
	bl GetMonData
	ldr r6, [r5]
	adds r6, 0x7C
	ldr r2, =gBaseStats
	lsls r1, r0, 3
	subs r1, r0
	lsls r1, 2
	adds r1, r2
	ldrb r1, [r1, 0x8]
	movs r0, 0x64
	muls r0, r1
	ldr r1, =0x000004fb
	bl __divsi3
	strb r0, [r6]
	ldr r0, [r5]
	adds r0, 0x7B
	movs r1, 0x3
	strb r1, [r0]
	ldr r0, [r5]
	strb r4, [r0, 0x12]
	ldr r0, [r5]
	adds r0, 0x4A
	movs r1, 0x1
	strb r1, [r0]
	movs r2, 0
	movs r1, 0
	adds r6, r5, 0
_0803A16A:
	ldr r0, [r5]
	adds r0, r2, r0
	adds r0, 0x98
	strb r1, [r0]
	ldr r0, [r5]
	adds r0, r2, r0
	adds r0, 0xB8
	strb r1, [r0]
	ldr r0, [r5]
	adds r0, r2, r0
	adds r0, 0xC8
	strb r1, [r0]
	ldr r0, [r5]
	adds r0, r2, r0
	adds r0, 0xD0
	strb r1, [r0]
	ldr r0, [r5]
	adds r0, r2, r0
	adds r0, 0xE0
	strb r1, [r0]
	ldr r0, [r5]
	adds r0, r2, r0
	adds r0, 0xE8
	strb r1, [r0]
	ldr r0, [r5]
	adds r0, r2, r0
	adds r0, 0xF0
	strb r1, [r0]
	ldr r0, [r5]
	adds r0, r2, r0
	adds r0, 0xF8
	strb r1, [r0]
	adds r2, 0x1
	cmp r2, 0x7
	ble _0803A16A
	movs r2, 0
	ldr r4, =gBattleStruct
	movs r3, 0xA5
	lsls r3, 2
	movs r1, 0x6
_0803A1BA:
	ldr r0, [r4]
	adds r0, r2, r0
	adds r0, r3
	strb r1, [r0]
	adds r2, 0x1
	cmp r2, 0x3
	ble _0803A1BA
	ldr r0, [r6]
	adds r0, 0xDF
	movs r1, 0
	strb r1, [r0]
	ldr r0, [r6]
	adds r0, 0x92
	strb r1, [r0]
	bl Random
	ldr r1, =gUnknown_02024330
	strh r0, [r1]
	ldr r1, =gBattleResults
	movs r2, 0
	movs r3, 0
_0803A1E4:
	adds r0, r1, r2
	strb r3, [r0]
	adds r2, 0x1
	cmp r2, 0x43
	bls _0803A1E4
	ldr r0, =gEnemyParty
	bl IsMonShiny
	ldr r3, =gBattleResults
	movs r1, 0x1
	ands r1, r0
	lsls r1, 6
	ldrb r2, [r3, 0x5]
	movs r0, 0x41
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	strb r0, [r3, 0x5]
	ldr r2, =gBattleStruct
	ldr r0, [r2]
	movs r1, 0xA8
	lsls r1, 2
	adds r0, r1
	movs r1, 0
	strb r1, [r0]
	ldr r0, [r2]
	ldr r2, =0x000002a1
	adds r0, r2
	strb r1, [r0]
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_8039F40

	thumb_func_start sub_803A284
sub_803A284: @ 803A284
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x20
	ldr r4, =gDisableStructs
	ldr r5, =gActiveBank
	ldrb r1, [r5]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	mov r1, sp
	adds r0, r4
	ldm r0!, {r2,r3,r6}
	stm r1!, {r2,r3,r6}
	ldm r0!, {r2,r3,r7}
	stm r1!, {r2,r3,r7}
	ldr r0, [r0]
	str r0, [r1]
	ldr r2, =gBattleMoves
	ldr r3, =gCurrentMove
	ldrh r1, [r3]
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r0, [r0]
	mov r12, r4
	mov r9, r5
	ldr r6, =gStatuses3
	mov r10, r6
	cmp r0, 0x7F
	beq _0803A35C
	movs r5, 0
	mov r6, r9
	movs r4, 0x58
	ldr r2, =gBattleMons
	adds r2, 0x18
	movs r1, 0x6
_0803A2D4:
	ldrb r0, [r6]
	muls r0, r4
	adds r0, r5, r0
	adds r0, r2
	strb r1, [r0]
	adds r5, 0x1
	cmp r5, 0x7
	ble _0803A2D4
	movs r5, 0
	ldr r7, =gNoOfAllBanks
	ldrb r7, [r7]
	cmp r5, r7
	bge _0803A348
	ldr r0, =gBattleMons + 0x50
	mov r8, r0
	ldr r4, =gDisableStructs
	ldr r3, =gStatuses3
_0803A2F6:
	movs r0, 0x58
	muls r0, r5
	mov r1, r8
	adds r2, r0, r1
	ldr r1, [r2]
	movs r0, 0x80
	lsls r0, 19
	ands r0, r1
	cmp r0, 0
	beq _0803A31A
	ldrb r0, [r4, 0x14]
	ldr r6, =gActiveBank
	ldrb r6, [r6]
	cmp r0, r6
	bne _0803A31A
	ldr r0, =0xfbffffff
	ands r1, r0
	str r1, [r2]
_0803A31A:
	ldr r1, [r3]
	movs r0, 0x18
	ands r0, r1
	cmp r0, 0
	beq _0803A33A
	ldrb r0, [r4, 0x15]
	ldr r7, =gActiveBank
	ldrb r7, [r7]
	cmp r0, r7
	bne _0803A33A
	movs r0, 0x19
	negs r0, r0
	ands r1, r0
	str r1, [r3]
	movs r0, 0
	strb r0, [r4, 0x15]
_0803A33A:
	adds r4, 0x1C
	adds r3, 0x4
	adds r5, 0x1
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r5, r0
	blt _0803A2F6
_0803A348:
	ldr r1, =gCurrentMove
	ldrh r0, [r1]
	lsls r1, r0, 1
	adds r1, r0
	lsls r1, 2
	ldr r2, =gBattleMoves
	adds r1, r2
	ldrb r0, [r1]
	cmp r0, 0x7F
	bne _0803A414
_0803A35C:
	mov r3, r9
	ldrb r1, [r3]
	movs r0, 0x58
	adds r2, r1, 0
	muls r2, r0
	ldr r0, =gBattleMons
	adds r0, 0x50
	adds r2, r0
	ldr r0, [r2]
	ldr r1, =0x15100007
	ands r0, r1
	str r0, [r2]
	ldrb r1, [r3]
	lsls r1, 2
	add r1, r10
	ldr r0, [r1]
	ldr r2, =0x0003043f
	ands r0, r2
	str r0, [r1]
	movs r5, 0
	ldr r6, =gNoOfAllBanks
	ldrb r6, [r6]
	cmp r5, r6
	bge _0803A430
	mov r7, r9
	movs r6, 0
_0803A390:
	ldrb r0, [r7]
	bl GetBankSide
	adds r4, r0, 0
	lsls r0, r5, 24
	lsrs r0, 24
	bl GetBankSide
	lsls r4, 24
	lsls r0, 24
	cmp r4, r0
	beq _0803A3D0
	ldr r1, =gStatuses3
	lsls r0, r5, 2
	adds r2, r0, r1
	ldr r1, [r2]
	movs r0, 0x18
	ands r0, r1
	cmp r0, 0
	beq _0803A3D0
	ldr r0, =gDisableStructs
	adds r0, r6, r0
	ldrb r0, [r0, 0x15]
	ldrb r3, [r7]
	cmp r0, r3
	bne _0803A3D0
	movs r0, 0x19
	negs r0, r0
	ands r1, r0
	movs r0, 0x10
	orrs r1, r0
	str r1, [r2]
_0803A3D0:
	adds r6, 0x1C
	adds r5, 0x1
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r5, r0
	blt _0803A390
	ldr r6, =gDisableStructs
	mov r12, r6
	ldr r7, =gActiveBank
	mov r9, r7
	b _0803A430
	.pool
_0803A414:
	mov r0, r9
	ldrb r1, [r0]
	movs r0, 0x58
	muls r0, r1
	ldr r1, =gBattleMons
	adds r1, 0x50
	adds r0, r1
	movs r1, 0
	str r1, [r0]
	mov r2, r9
	ldrb r0, [r2]
	lsls r0, 2
	add r0, r10
	str r1, [r0]
_0803A430:
	movs r5, 0
	ldr r3, =gBattleStruct
	mov r8, r3
	ldr r6, =gUnknown_020244AC
	mov r10, r6
	ldr r7, =gNoOfAllBanks
	ldrb r7, [r7]
	cmp r5, r7
	bge _0803A490
	ldr r3, =gBattleMons + 0x50
	ldr r7, =gBitTable
	ldr r6, =gActiveBank
_0803A448:
	movs r0, 0x58
	muls r0, r5
	adds r4, r0, r3
	ldrb r0, [r6]
	lsls r0, 2
	adds r0, r7
	ldr r0, [r0]
	lsls r2, r0, 16
	ldr r1, [r4]
	adds r0, r1, 0
	ands r0, r2
	cmp r0, 0
	beq _0803A466
	bics r1, r2
	str r1, [r4]
_0803A466:
	ldr r1, [r4]
	movs r0, 0xE0
	lsls r0, 8
	ands r0, r1
	cmp r0, 0
	beq _0803A486
	mov r2, r8
	ldr r0, [r2]
	adds r0, r5, r0
	ldrb r0, [r0, 0x14]
	ldrb r2, [r6]
	cmp r0, r2
	bne _0803A486
	ldr r0, =0xffff1fff
	ands r1, r0
	str r1, [r4]
_0803A486:
	adds r5, 0x1
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r5, r0
	blt _0803A448
_0803A490:
	mov r1, r9
	ldrb r0, [r1]
	add r0, r10
	movs r1, 0
	strb r1, [r0]
	mov r2, r9
	ldrb r0, [r2]
	ldr r3, =gUnknown_020244B0
	adds r0, r3
	strb r1, [r0]
	ldrb r1, [r2]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	mov r6, r12
	adds r1, r0, r6
	movs r5, 0
	movs r2, 0
_0803A4B4:
	adds r0, r1, r5
	strb r2, [r0]
	adds r5, 0x1
	cmp r5, 0x1B
	bls _0803A4B4
	ldr r7, =gCurrentMove
	ldrh r0, [r7]
	lsls r1, r0, 1
	adds r1, r0
	lsls r1, 2
	ldr r0, =gBattleMoves
	adds r1, r0
	ldrb r0, [r1]
	cmp r0, 0x7F
	bne _0803A540
	mov r2, r9
	ldrb r1, [r2]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	add r0, r12
	mov r1, sp
	ldrb r1, [r1, 0xA]
	strb r1, [r0, 0xA]
	ldrb r1, [r2]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	add r0, r12
	mov r1, sp
	ldrb r1, [r1, 0x15]
	strb r1, [r0, 0x15]
	ldrb r0, [r2]
	lsls r1, r0, 3
	subs r1, r0
	lsls r1, 2
	add r1, r12
	mov r0, sp
	ldrb r2, [r0, 0xF]
	lsls r2, 28
	movs r4, 0xF
	lsrs r2, 28
	ldrb r3, [r1, 0xF]
	movs r0, 0x10
	negs r0, r0
	ands r0, r3
	orrs r0, r2
	strb r0, [r1, 0xF]
	mov r3, r9
	ldrb r1, [r3]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	add r0, r12
	mov r1, sp
	ldrb r1, [r1, 0xF]
	lsrs r1, 4
	lsls r1, 4
	ldrb r2, [r0, 0xF]
	ands r4, r2
	orrs r4, r1
	strb r4, [r0, 0xF]
	ldrb r1, [r3]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	add r0, r12
	mov r1, sp
	ldrb r1, [r1, 0x14]
	strb r1, [r0, 0x14]
_0803A540:
	movs r0, 0
	ldr r6, =gBattleMoveFlags
	strb r0, [r6]
	mov r7, r9
	ldrb r1, [r7]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	add r0, r12
	movs r4, 0
	movs r1, 0x2
	strb r1, [r0, 0x16]
	ldrb r0, [r7]
	lsls r1, r0, 3
	subs r1, r0
	lsls r1, 2
	add r1, r12
	mov r0, sp
	ldrb r0, [r0, 0x18]
	movs r2, 0x2
	ands r2, r0
	ldrb r3, [r1, 0x18]
	movs r0, 0x3
	negs r0, r0
	ands r0, r3
	orrs r0, r2
	strb r0, [r1, 0x18]
	ldrb r0, [r7]
	lsls r0, 1
	ldr r1, =gLastUsedMovesByBanks
	adds r0, r1
	movs r2, 0
	strh r4, [r0]
	ldrb r0, [r7]
	lsls r0, 1
	ldr r3, =gUnknown_02024250
	adds r0, r3
	strh r4, [r0]
	ldrb r0, [r7]
	lsls r0, 1
	ldr r6, =gUnknown_02024258
	adds r0, r6
	strh r4, [r0]
	ldrb r0, [r7]
	lsls r0, 1
	ldr r7, =gUnknown_02024260
	adds r0, r7
	strh r4, [r0]
	mov r1, r9
	ldrb r0, [r1]
	lsls r0, 1
	ldr r3, =gUnknown_02024240
	adds r0, r3
	strh r4, [r0]
	ldrb r0, [r1]
	ldr r6, =gUnknown_02024270
	adds r0, r6
	movs r1, 0xFF
	strb r1, [r0]
	mov r7, r9
	ldrb r0, [r7]
	mov r3, r8
	ldr r1, [r3]
	lsls r0, 1
	adds r0, r1
	adds r0, 0x98
	strb r2, [r0]
	ldrb r0, [r7]
	ldr r1, [r3]
	lsls r0, 1
	adds r0, r1
	adds r0, 0x99
	strb r2, [r0]
	ldrb r0, [r7]
	ldr r1, [r3]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE0
	strb r2, [r0]
	ldrb r0, [r7]
	ldr r1, [r3]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE1
	strb r2, [r0]
	ldrb r0, [r7]
	ldr r1, [r3]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE2
	strb r2, [r0]
	ldrb r0, [r7]
	ldr r1, [r3]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE3
	strb r2, [r0]
	ldrb r0, [r7]
	ldr r1, [r3]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE4
	strb r2, [r0]
	ldrb r0, [r7]
	ldr r1, [r3]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE5
	strb r2, [r0]
	ldrb r0, [r7]
	ldr r1, [r3]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE6
	strb r2, [r0]
	ldrb r0, [r7]
	ldr r1, [r3]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE7
	strb r2, [r0]
	ldr r1, [r3]
	adds r1, 0x92
	ldrb r0, [r7]
	lsls r0, 2
	ldr r6, =gBitTable
	adds r0, r6
	ldr r2, [r0]
	ldrb r0, [r1]
	bics r0, r2
	strb r0, [r1]
	movs r5, 0
	ldr r7, =gNoOfAllBanks
	ldrb r7, [r7]
	cmp r5, r7
	bge _0803A6B4
	mov r3, r9
	mov r7, r8
	movs r6, 0
_0803A656:
	ldrb r0, [r3]
	cmp r5, r0
	beq _0803A68C
	lsls r0, r5, 24
	lsrs r0, 24
	str r3, [sp, 0x1C]
	bl GetBankSide
	adds r4, r0, 0
	ldr r3, [sp, 0x1C]
	ldrb r0, [r3]
	bl GetBankSide
	lsls r4, 24
	lsls r0, 24
	ldr r3, [sp, 0x1C]
	cmp r4, r0
	beq _0803A68C
	ldr r0, [r7]
	lsls r1, r5, 1
	adds r0, r1, r0
	adds r0, 0x98
	strb r6, [r0]
	ldr r0, [r7]
	adds r1, r0
	adds r1, 0x99
	strb r6, [r1]
_0803A68C:
	ldrb r0, [r3]
	ldr r1, [r7]
	lsls r0, 1
	lsls r2, r5, 3
	adds r0, r2
	adds r0, r1
	adds r0, 0xE0
	strb r6, [r0]
	ldrb r0, [r3]
	ldr r1, [r7]
	lsls r0, 1
	adds r0, r2
	adds r0, r1
	adds r0, 0xE1
	strb r6, [r0]
	adds r5, 0x1
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r5, r0
	blt _0803A656
_0803A6B4:
	mov r1, r9
	ldrb r0, [r1]
	mov r2, r8
	ldr r1, [r2]
	lsls r0, 1
	adds r0, r1
	adds r0, 0xC8
	movs r2, 0
	strb r2, [r0]
	mov r3, r9
	ldrb r0, [r3]
	mov r6, r8
	ldr r1, [r6]
	lsls r0, 1
	adds r0, r1
	adds r0, 0xC9
	strb r2, [r0]
	ldr r0, =gBattleResources
	ldr r0, [r0]
	ldr r1, [r0, 0x4]
	ldrb r0, [r3]
	lsls r0, 2
	adds r1, r0
	movs r2, 0
	str r2, [r1]
	ldr r0, =gCurrentMove
	strh r2, [r0]
	ldr r0, [r6]
	adds r0, 0xDA
	movs r1, 0xFF
	strb r1, [r0]
	ldrb r0, [r3]
	bl ClearBankMoveHistory
	mov r7, r9
	ldrb r0, [r7]
	bl ClearBankAbilityHistory
	add sp, 0x20
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803A284

	thumb_func_start sub_803A75C
sub_803A75C: @ 803A75C
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x4
	movs r5, 0
	ldr r6, =gBattleMons
	ldr r0, =gStatuses3
	mov r8, r0
	ldr r1, =gBattleStruct
	mov r12, r1
	ldr r2, =gUnknown_020244AC
	mov r9, r2
	ldr r3, =gUnknown_020244B0
	mov r10, r3
	ldr r7, =gProtectStructs
	ldr r4, =gActiveBank
	movs r3, 0x58
	adds r2, r6, 0
	adds r2, 0x18
	movs r1, 0x6
_0803A788:
	ldrb r0, [r4]
	muls r0, r3
	adds r0, r5, r0
	adds r0, r2
	strb r1, [r0]
	adds r5, 0x1
	cmp r5, 0x7
	ble _0803A788
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	movs r0, 0x58
	muls r0, r1
	adds r2, r6, 0
	adds r2, 0x50
	adds r0, r2
	movs r1, 0
	str r1, [r0]
	ldr r3, =gActiveBank
	ldrb r0, [r3]
	lsls r0, 2
	add r0, r8
	str r1, [r0]
	movs r5, 0
	ldr r6, =gNoOfAllBanks
	ldrb r6, [r6]
	cmp r5, r6
	bge _0803A830
	adds r3, r2, 0
	movs r4, 0
	ldr r0, =gBitTable
	mov r8, r0
_0803A7C6:
	ldr r1, [r3]
	movs r0, 0x80
	lsls r0, 19
	ands r0, r1
	cmp r0, 0
	beq _0803A7E6
	ldr r2, =gDisableStructs
	adds r0, r4, r2
	ldrb r0, [r0, 0x14]
	ldr r6, =gActiveBank
	ldrb r6, [r6]
	cmp r0, r6
	bne _0803A7E6
	ldr r0, =0xfbffffff
	ands r1, r0
	str r1, [r3]
_0803A7E6:
	ldr r1, =gActiveBank
	ldrb r0, [r1]
	lsls r0, 2
	add r0, r8
	ldr r0, [r0]
	lsls r2, r0, 16
	ldr r1, [r3]
	adds r0, r1, 0
	ands r0, r2
	cmp r0, 0
	beq _0803A800
	bics r1, r2
	str r1, [r3]
_0803A800:
	ldr r1, [r3]
	movs r0, 0xE0
	lsls r0, 8
	ands r0, r1
	cmp r0, 0
	beq _0803A822
	mov r2, r12
	ldr r0, [r2]
	adds r0, r5, r0
	ldrb r0, [r0, 0x14]
	ldr r6, =gActiveBank
	ldrb r6, [r6]
	cmp r0, r6
	bne _0803A822
	ldr r0, =0xffff1fff
	ands r1, r0
	str r1, [r3]
_0803A822:
	adds r3, 0x58
	adds r4, 0x1C
	adds r5, 0x1
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r5, r0
	blt _0803A7C6
_0803A830:
	ldr r1, =gActiveBank
	ldrb r0, [r1]
	add r0, r9
	movs r1, 0
	strb r1, [r0]
	ldr r2, =gActiveBank
	ldrb r0, [r2]
	add r0, r10
	strb r1, [r0]
	ldrb r1, [r2]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	ldr r3, =gDisableStructs
	adds r1, r0, r3
	movs r5, 0
	movs r2, 0
_0803A852:
	adds r0, r1, r5
	strb r2, [r0]
	adds r5, 0x1
	cmp r5, 0x1B
	bls _0803A852
	ldr r6, =gActiveBank
	ldrb r1, [r6]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1]
	movs r0, 0x2
	negs r0, r0
	mov r9, r0
	ands r0, r2
	strb r0, [r1]
	ldrb r1, [r6]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1]
	movs r3, 0x3
	negs r3, r3
	mov r8, r3
	mov r0, r8
	ands r0, r2
	strb r0, [r1]
	ldrb r1, [r6]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1]
	movs r6, 0x5
	negs r6, r6
	adds r0, r6, 0
	ands r0, r2
	strb r0, [r1]
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1]
	subs r3, 0x6
	mov r10, r3
	mov r0, r10
	ands r0, r2
	strb r0, [r1]
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1]
	movs r0, 0x11
	negs r0, r0
	ands r0, r2
	strb r0, [r1]
	ldr r2, =gActiveBank
	ldrb r1, [r2]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1]
	movs r5, 0x21
	negs r5, r5
	adds r0, r5, 0
	ands r0, r2
	strb r0, [r1]
	ldr r3, =gActiveBank
	ldrb r1, [r3]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1]
	movs r4, 0x41
	negs r4, r4
	adds r0, r4, 0
	ands r0, r2
	strb r0, [r1]
	ldrb r1, [r3]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1]
	movs r3, 0x7F
	adds r0, r3, 0
	ands r0, r2
	strb r0, [r1]
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1, 0x1]
	mov r0, r9
	ands r0, r2
	strb r0, [r1, 0x1]
	ldr r2, =gActiveBank
	ldrb r1, [r2]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1, 0x1]
	mov r0, r8
	ands r0, r2
	strb r0, [r1, 0x1]
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1, 0x1]
	adds r0, r6, 0
	ands r0, r2
	strb r0, [r1, 0x1]
	ldr r2, =gActiveBank
	ldrb r1, [r2]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1, 0x1]
	movs r0, 0x19
	negs r0, r0
	ands r0, r2
	strb r0, [r1, 0x1]
	ldr r1, =gActiveBank
	ldrb r0, [r1]
	lsls r0, 4
	adds r0, r7
	ldrb r1, [r0, 0x1]
	ands r5, r1
	strb r5, [r0, 0x1]
	ldr r2, =gActiveBank
	ldrb r0, [r2]
	lsls r0, 4
	adds r0, r7
	ldrb r1, [r0, 0x1]
	ands r4, r1
	strb r4, [r0, 0x1]
	ldrb r0, [r2]
	lsls r0, 4
	adds r0, r7
	ldrb r1, [r0, 0x1]
	ands r3, r1
	strb r3, [r0, 0x1]
	ldrb r0, [r2]
	lsls r0, 4
	adds r0, r7
	ldrb r1, [r0, 0x2]
	mov r3, r9
	ands r3, r1
	strb r3, [r0, 0x2]
	ldrb r0, [r2]
	lsls r0, 4
	adds r0, r7
	ldrb r1, [r0, 0x2]
	mov r2, r8
	ands r2, r1
	strb r2, [r0, 0x2]
	ldr r3, =gActiveBank
	ldrb r0, [r3]
	lsls r0, 4
	adds r0, r7
	ldrb r1, [r0, 0x2]
	ands r6, r1
	strb r6, [r0, 0x2]
	ldrb r0, [r3]
	lsls r0, 4
	adds r0, r7
	ldrb r1, [r0, 0x2]
	mov r6, r10
	ands r6, r1
	strb r6, [r0, 0x2]
	ldrb r1, [r3]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	ldr r1, =gDisableStructs
	adds r0, r1
	movs r2, 0
	movs r1, 0x2
	strb r1, [r0, 0x16]
	ldrb r0, [r3]
	lsls r0, 1
	ldr r3, =gLastUsedMovesByBanks
	adds r0, r3
	movs r3, 0
	strh r2, [r0]
	ldr r6, =gActiveBank
	ldrb r0, [r6]
	lsls r0, 1
	ldr r1, =gUnknown_02024250
	adds r0, r1
	strh r2, [r0]
	ldrb r0, [r6]
	lsls r0, 1
	ldr r6, =gUnknown_02024258
	adds r0, r6
	strh r2, [r0]
	ldr r1, =gActiveBank
	ldrb r0, [r1]
	lsls r0, 1
	ldr r6, =gUnknown_02024260
	adds r0, r6
	strh r2, [r0]
	ldrb r0, [r1]
	lsls r0, 1
	ldr r1, =gUnknown_02024240
	adds r0, r1
	strh r2, [r0]
	ldr r2, =gActiveBank
	ldrb r0, [r2]
	ldr r6, =gUnknown_02024270
	adds r0, r6
	movs r1, 0xFF
	strb r1, [r0]
	ldrb r0, [r2]
	mov r2, r12
	ldr r1, [r2]
	lsls r0, 1
	adds r0, r1
	adds r0, 0xC8
	strb r3, [r0]
	ldr r6, =gActiveBank
	ldrb r0, [r6]
	ldr r1, [r2]
	lsls r0, 1
	adds r0, r1
	adds r0, 0xC9
	strb r3, [r0]
	ldrb r0, [r6]
	ldr r1, [r2]
	lsls r0, 1
	adds r0, r1
	adds r0, 0x98
	strb r3, [r0]
	ldrb r0, [r6]
	ldr r1, [r2]
	lsls r0, 1
	adds r0, r1
	adds r0, 0x99
	strb r3, [r0]
	ldrb r0, [r6]
	ldr r1, [r2]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE0
	strb r3, [r0]
	ldrb r0, [r6]
	ldr r1, [r2]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE1
	strb r3, [r0]
	ldrb r0, [r6]
	ldr r1, [r2]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE2
	strb r3, [r0]
	ldrb r0, [r6]
	ldr r1, [r2]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE3
	strb r3, [r0]
	ldrb r0, [r6]
	ldr r1, [r2]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE4
	strb r3, [r0]
	ldrb r0, [r6]
	ldr r1, [r2]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE5
	strb r3, [r0]
	ldrb r0, [r6]
	ldr r1, [r2]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE6
	strb r3, [r0]
	ldrb r0, [r6]
	ldr r1, [r2]
	lsls r0, 3
	adds r0, r1
	adds r0, 0xE7
	strb r3, [r0]
	ldr r1, [r2]
	adds r1, 0x92
	ldrb r0, [r6]
	lsls r0, 2
	ldr r2, =gBitTable
	adds r0, r2
	ldr r2, [r0]
	ldrb r0, [r1]
	bics r0, r2
	strb r0, [r1]
	movs r5, 0
	ldr r3, =gNoOfAllBanks
	ldrb r3, [r3]
	cmp r5, r3
	bge _0803AB02
	adds r3, r6, 0
	mov r7, r12
	movs r6, 0
_0803AAA4:
	ldrb r0, [r3]
	cmp r5, r0
	beq _0803AADA
	lsls r0, r5, 24
	lsrs r0, 24
	str r3, [sp]
	bl GetBankSide
	adds r4, r0, 0
	ldr r3, [sp]
	ldrb r0, [r3]
	bl GetBankSide
	lsls r4, 24
	lsls r0, 24
	ldr r3, [sp]
	cmp r4, r0
	beq _0803AADA
	ldr r0, [r7]
	lsls r1, r5, 1
	adds r0, r1, r0
	adds r0, 0x98
	strb r6, [r0]
	ldr r0, [r7]
	adds r1, r0
	adds r1, 0x99
	strb r6, [r1]
_0803AADA:
	ldrb r0, [r3]
	ldr r1, [r7]
	lsls r0, 1
	lsls r2, r5, 3
	adds r0, r2
	adds r0, r1
	adds r0, 0xE0
	strb r6, [r0]
	ldrb r0, [r3]
	ldr r1, [r7]
	lsls r0, 1
	adds r0, r2
	adds r0, r1
	adds r0, 0xE1
	strb r6, [r0]
	adds r5, 0x1
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r5, r0
	blt _0803AAA4
_0803AB02:
	ldr r0, =gBattleResources
	ldr r0, [r0]
	ldr r1, [r0, 0x4]
	ldr r2, =gActiveBank
	ldrb r0, [r2]
	lsls r0, 2
	adds r1, r0
	movs r0, 0
	str r0, [r1]
	ldr r4, =gBattleMons
	ldrb r0, [r2]
	movs r3, 0x58
	adds r2, r0, 0
	muls r2, r3
	b _0803AB6C
	.pool
_0803AB6C:
	adds r2, r4
	ldr r5, =gBaseStats
	ldrh r1, [r2]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	adds r0, r5
	ldrb r0, [r0, 0x6]
	adds r2, 0x21
	strb r0, [r2]
	ldr r6, =gActiveBank
	ldrb r0, [r6]
	adds r1, r0, 0
	muls r1, r3
	adds r1, r4
	ldrh r2, [r1]
	lsls r0, r2, 3
	subs r0, r2
	lsls r0, 2
	adds r0, r5
	ldrb r0, [r0, 0x7]
	adds r1, 0x22
	strb r0, [r1]
	ldrb r0, [r6]
	bl ClearBankMoveHistory
	ldrb r0, [r6]
	bl ClearBankAbilityHistory
	add sp, 0x4
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803A75C

	thumb_func_start bc_8012FAC
bc_8012FAC: @ 803ABC0
	push {r4,r5,lr}
	ldr r5, =gBattleCommunication
	ldrb r0, [r5]
	cmp r0, 0
	beq _0803ABD4
	cmp r0, 0x1
	beq _0803ABF8
	b _0803AC2E
	.pool
_0803ABD4:
	ldr r4, =gActiveBank
	ldrb r0, [r5, 0x1]
	strb r0, [r4]
	movs r0, 0
	movs r1, 0
	movs r2, 0
	bl dp01_build_cmdbuf_x00_a_b_0
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
	ldrb r0, [r5]
	adds r0, 0x1
	strb r0, [r5]
	b _0803AC2E
	.pool
_0803ABF8:
	ldr r0, =gBattleExecBuffer
	ldr r2, [r0]
	cmp r2, 0
	bne _0803AC2E
	ldrb r0, [r5, 0x1]
	adds r0, 0x1
	strb r0, [r5, 0x1]
	ldr r1, =gNoOfAllBanks
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r1]
	cmp r0, r1
	bne _0803AC2C
	ldr r1, =gBattleMainFunc
	ldr r0, =bc_load_battlefield
	str r0, [r1]
	b _0803AC2E
	.pool
_0803AC2C:
	strb r2, [r5]
_0803AC2E:
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end bc_8012FAC

	thumb_func_start bc_load_battlefield
bc_load_battlefield: @ 803AC34
	push {r4,r5,lr}
	ldr r0, =gBattleExecBuffer
	ldr r5, [r0]
	cmp r5, 0
	bne _0803AC64
	movs r0, 0
	bl GetBankByPlayerAI
	ldr r4, =gActiveBank
	strb r0, [r4]
	ldr r0, =gUnknown_02022FF0
	ldrb r1, [r0]
	movs r0, 0
	bl dp01_build_cmdbuf_x2E_a
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803AC84
	str r0, [r1]
	ldr r0, =gBattleCommunication
	strb r5, [r0]
	strb r5, [r0, 0x1]
_0803AC64:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end bc_load_battlefield

	thumb_func_start sub_803AC84
sub_803AC84: @ 803AC84
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	ldr r0, =gBattleExecBuffer
	ldr r1, [r0]
	cmp r1, 0
	beq _0803AC98
	b _0803AF4E
_0803AC98:
	ldr r2, =gActiveBank
	strb r1, [r2]
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r1, r0
	bcc _0803ACA6
	b _0803AF48
_0803ACA6:
	movs r7, 0x58
	ldr r0, =gBattleMons
	mov r8, r0
	mov r9, r2
	movs r1, 0x48
	add r1, r8
	mov r10, r1
_0803ACB4:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0803ACFC
	ldr r4, =gActiveBank
	ldrb r0, [r4]
	bl GetBankSide
	lsls r0, 24
	cmp r0, 0
	bne _0803ACFC
	ldrb r0, [r4]
	muls r0, r7
	mov r2, r8
	adds r3, r0, r2
	movs r2, 0
	movs r1, 0
_0803ACDA:
	adds r0, r3, r2
	strb r1, [r0]
	adds r2, 0x1
	cmp r2, 0x57
	bls _0803ACDA
	b _0803ADCA
	.pool
_0803ACFC:
	mov r1, r9
	ldrb r0, [r1]
	muls r0, r7
	mov r2, r8
	adds r3, r0, r2
	movs r2, 0
	ldr r6, =gBaseStats
	ldr r5, =gBattleBufferB
	ldr r4, =gActiveBank
_0803AD0E:
	adds r0, r3, r2
	ldrb r1, [r4]
	lsls r1, 9
	adds r1, 0x4
	adds r1, r2, r1
	adds r1, r5
	ldrb r1, [r1]
	strb r1, [r0]
	adds r2, 0x1
	cmp r2, 0x57
	bls _0803AD0E
	mov r1, r9
	ldrb r0, [r1]
	adds r2, r0, 0
	muls r2, r7
	add r2, r8
	ldrh r1, [r2]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	adds r0, r6
	ldrb r0, [r0, 0x6]
	adds r2, 0x21
	strb r0, [r2]
	mov r2, r9
	ldrb r0, [r2]
	adds r2, r0, 0
	muls r2, r7
	add r2, r8
	ldrh r1, [r2]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	adds r0, r6
	ldrb r0, [r0, 0x7]
	adds r2, 0x22
	strb r0, [r2]
	mov r1, r9
	ldrb r0, [r1]
	adds r1, r0, 0
	muls r1, r7
	add r1, r8
	ldrh r0, [r1]
	ldrb r1, [r1, 0x17]
	lsrs r1, 7
	bl GetAbilityBySpecies
	mov r2, r9
	ldrb r1, [r2]
	muls r1, r7
	add r1, r8
	adds r1, 0x20
	strb r0, [r1]
	ldrb r0, [r2]
	bl GetBankSide
	ldr r1, =gBattleStruct
	lsls r0, 24
	lsrs r0, 23
	adds r0, 0xA8
	ldr r1, [r1]
	adds r1, r0
	mov r2, r9
	ldrb r0, [r2]
	muls r0, r7
	add r0, r8
	ldrh r0, [r0, 0x28]
	strh r0, [r1]
	movs r2, 0
	ldr r4, =gActiveBank
	movs r5, 0x58
	ldr r1, =gBattleMons + 0x18
	adds r6, r4, 0
	movs r0, 0x18
	negs r0, r0
	adds r0, r1
	mov r12, r0
	movs r3, 0x6
_0803ADAA:
	ldrb r0, [r4]
	muls r0, r5
	adds r0, r2, r0
	adds r0, r1
	strb r3, [r0]
	adds r2, 0x1
	cmp r2, 0x7
	ble _0803ADAA
	ldrb r0, [r6]
	adds r1, r0, 0
	muls r1, r7
	mov r0, r12
	adds r0, 0x50
	adds r1, r0
	movs r0, 0
	str r0, [r1]
_0803ADCA:
	ldr r4, =gActiveBank
	ldrb r0, [r4]
	bl GetBankIdentity
	lsls r0, 24
	cmp r0, 0
	bne _0803ADE4
	movs r0, 0
	bl dp01_build_cmdbuf_x07_7_7_7
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
_0803ADE4:
	ldr r5, =gBattleTypeFlags
	ldr r0, [r5]
	movs r1, 0x8
	ands r0, r1
	cmp r0, 0
	beq _0803AE60
	ldrb r0, [r4]
	bl GetBankIdentity
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0803AE0A
	movs r0, 0
	bl dp01_build_cmdbuf_x07_7_7_7
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
_0803AE0A:
	ldrb r0, [r4]
	bl GetBankSide
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0803AEC0
	ldr r0, [r5]
	ldr r1, =0x063f0902
	ands r0, r1
	cmp r0, 0
	bne _0803AEC0
	ldrb r0, [r4]
	muls r0, r7
	add r0, r8
	ldrh r0, [r0]
	bl SpeciesToNationalPokedexNum
	lsls r0, 16
	lsrs r0, 16
	ldrb r1, [r4]
	muls r1, r7
	add r1, r10
	ldr r2, [r1]
	movs r1, 0x2
	bl HandleSetPokedexFlag
	b _0803AEC0
	.pool
_0803AE60:
	ldrb r0, [r4]
	bl GetBankSide
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0803AEC0
	ldr r0, [r5]
	ldr r1, =0x063f0902
	ands r0, r1
	cmp r0, 0
	bne _0803AE96
	ldrb r0, [r4]
	muls r0, r7
	add r0, r8
	ldrh r0, [r0]
	bl SpeciesToNationalPokedexNum
	lsls r0, 16
	lsrs r0, 16
	ldrb r1, [r4]
	muls r1, r7
	add r1, r10
	ldr r2, [r1]
	movs r1, 0x2
	bl HandleSetPokedexFlag
_0803AE96:
	movs r0, 0
	bl dp01_build_cmdbuf_x04_4_4_4
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
	ldr r1, =gBattlePartyID
	ldrb r0, [r4]
	lsls r0, 1
	adds r0, r1
	ldrh r1, [r0]
	movs r0, 0x64
	muls r0, r1
	ldr r1, =gEnemyParty
	adds r0, r1
	movs r1, 0xB
	movs r2, 0
	bl GetMonData
	ldr r1, =gBattleResults
	strh r0, [r1, 0x20]
_0803AEC0:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x40
	ands r0, r1
	cmp r0, 0
	beq _0803AEF6
	ldr r4, =gActiveBank
	ldrb r0, [r4]
	bl GetBankIdentity
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x2
	beq _0803AEEA
	ldrb r0, [r4]
	bl GetBankIdentity
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x3
	bne _0803AEF6
_0803AEEA:
	movs r0, 0
	bl dp01_build_cmdbuf_x07_7_7_7
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
_0803AEF6:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 8
	ands r0, r1
	cmp r0, 0
	beq _0803AF20
	ldr r4, =gActiveBank
	ldrb r0, [r4]
	bl GetBankIdentity
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x3
	bne _0803AF20
	movs r0, 0
	bl dp01_build_cmdbuf_x07_7_7_7
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
_0803AF20:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 11
	ands r0, r1
	cmp r0, 0
	beq _0803AF32
	bl sub_81A56B4
_0803AF32:
	mov r1, r9
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	ldr r1, =gNoOfAllBanks
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r1]
	cmp r0, r1
	bcs _0803AF48
	b _0803ACB4
_0803AF48:
	ldr r1, =gBattleMainFunc
	ldr r0, =bc_801333C
	str r0, [r1]
_0803AF4E:
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803AC84

	thumb_func_start bc_801333C
bc_801333C: @ 803AF80
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x30
	ldr r0, =gBattleExecBuffer
	ldr r0, [r0]
	cmp r0, 0
	beq _0803AF92
	b _0803B10C
_0803AF92:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x8
	ands r0, r1
	cmp r0, 0
	bne _0803AFA0
	b _0803B0AC
_0803AFA0:
	movs r7, 0
	add r0, sp, 0x4
	mov r8, r0
	mov r6, r8
	mov r5, sp
_0803AFAA:
	movs r0, 0x64
	adds r1, r7, 0
	muls r1, r0
	ldr r0, =gEnemyParty
	adds r4, r1, r0
	adds r0, r4, 0
	movs r1, 0x41
	bl GetMonData
	cmp r0, 0
	beq _0803AFD0
	adds r0, r4, 0
	movs r1, 0x41
	bl GetMonData
	movs r1, 0xCE
	lsls r1, 1
	cmp r0, r1
	bne _0803AFE8
_0803AFD0:
	ldr r0, =0x0000ffff
	strh r0, [r5]
	movs r0, 0
	b _0803AFFA
	.pool
_0803AFE8:
	adds r0, r4, 0
	movs r1, 0x39
	bl GetMonData
	strh r0, [r5]
	adds r0, r4, 0
	movs r1, 0x37
	bl GetMonData
_0803AFFA:
	str r0, [r6]
	adds r6, 0x8
	adds r5, 0x8
	adds r7, 0x1
	cmp r7, 0x5
	ble _0803AFAA
	movs r0, 0x1
	bl GetBankByPlayerAI
	ldr r4, =gActiveBank
	strb r0, [r4]
	movs r0, 0
	mov r1, sp
	movs r2, 0x80
	bl dp01_build_cmdbuf_x30_TODO
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
	movs r7, 0
	mov r6, r8
	mov r5, sp
_0803B026:
	movs r0, 0x64
	adds r1, r7, 0
	muls r1, r0
	ldr r0, =gPlayerParty
	adds r4, r1, r0
	adds r0, r4, 0
	movs r1, 0x41
	bl GetMonData
	cmp r0, 0
	beq _0803B04C
	adds r0, r4, 0
	movs r1, 0x41
	bl GetMonData
	movs r1, 0xCE
	lsls r1, 1
	cmp r0, r1
	bne _0803B060
_0803B04C:
	ldr r0, =0x0000ffff
	strh r0, [r5]
	movs r0, 0
	b _0803B072
	.pool
_0803B060:
	adds r0, r4, 0
	movs r1, 0x39
	bl GetMonData
	strh r0, [r5]
	adds r0, r4, 0
	movs r1, 0x37
	bl GetMonData
_0803B072:
	str r0, [r6]
	adds r6, 0x8
	adds r5, 0x8
	adds r7, 0x1
	cmp r7, 0x5
	ble _0803B026
	movs r0, 0
	bl GetBankByPlayerAI
	ldr r4, =gActiveBank
	strb r0, [r4]
	movs r0, 0
	mov r1, sp
	movs r2, 0x80
	bl dp01_build_cmdbuf_x30_TODO
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
	ldr r1, =gBattleMainFunc
	ldr r0, =bc_battle_begin_message
	b _0803B10A
	.pool
_0803B0AC:
	movs r7, 0
	add r6, sp, 0x4
	mov r5, sp
_0803B0B2:
	movs r0, 0x64
	adds r1, r7, 0
	muls r1, r0
	ldr r0, =gPlayerParty
	adds r4, r1, r0
	adds r0, r4, 0
	movs r1, 0x41
	bl GetMonData
	cmp r0, 0
	beq _0803B0D8
	adds r0, r4, 0
	movs r1, 0x41
	bl GetMonData
	movs r1, 0xCE
	lsls r1, 1
	cmp r0, r1
	bne _0803B0E8
_0803B0D8:
	ldr r0, =0x0000ffff
	strh r0, [r5]
	movs r0, 0
	b _0803B0FA
	.pool
_0803B0E8:
	adds r0, r4, 0
	movs r1, 0x39
	bl GetMonData
	strh r0, [r5]
	adds r0, r4, 0
	movs r1, 0x37
	bl GetMonData
_0803B0FA:
	str r0, [r6]
	adds r6, 0x8
	adds r5, 0x8
	adds r7, 0x1
	cmp r7, 0x5
	ble _0803B0B2
	ldr r1, =gBattleMainFunc
	ldr r0, =bc_8013568
_0803B10A:
	str r0, [r1]
_0803B10C:
	add sp, 0x30
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end bc_801333C

	thumb_func_start bc_battle_begin_message
bc_battle_begin_message: @ 803B120
	push {lr}
	ldr r0, =gBattleExecBuffer
	ldr r0, [r0]
	cmp r0, 0
	bne _0803B142
	movs r0, 0x1
	bl GetBankByPlayerAI
	ldr r1, =gActiveBank
	strb r0, [r1]
	ldrb r1, [r1]
	movs r0, 0
	bl b_std_message
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803B180
	str r0, [r1]
_0803B142:
	pop {r0}
	bx r0
	.pool
	thumb_func_end bc_battle_begin_message

	thumb_func_start bc_8013568
bc_8013568: @ 803B158
	push {lr}
	ldr r0, =gBattleExecBuffer
	ldr r0, [r0]
	cmp r0, 0
	bne _0803B170
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803B3CC
	str r0, [r1]
	movs r0, 0
	movs r1, 0
	bl b_std_message
_0803B170:
	pop {r0}
	bx r0
	.pool
	thumb_func_end bc_8013568

	thumb_func_start sub_803B180
sub_803B180: @ 803B180
	push {lr}
	ldr r0, =gBattleExecBuffer
	ldr r0, [r0]
	cmp r0, 0
	bne _0803B1D0
	ldr r0, =gBattleTypeFlags
	ldr r2, [r0]
	movs r0, 0x80
	lsls r0, 17
	ands r0, r2
	cmp r0, 0
	beq _0803B1B8
	movs r0, 0x80
	lsls r0, 18
	ands r0, r2
	cmp r0, 0
	beq _0803B1B8
	movs r1, 0x80
	lsls r1, 24
	ands r1, r2
	negs r0, r1
	orrs r0, r1
	lsrs r0, 31
	b _0803B1BA
	.pool
_0803B1B8:
	movs r0, 0x1
_0803B1BA:
	bl GetBankByPlayerAI
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	movs r0, 0x1
	bl b_std_message
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803B25C
	str r0, [r1]
_0803B1D0:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803B180

	thumb_func_start sub_803B1DC
sub_803B1DC: @ 803B1DC
	push {r4,r5,lr}
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r0, 0x80
	lsls r0, 17
	ands r0, r1
	cmp r0, 0
	beq _0803B1FC
	movs r0, 0x80
	lsls r0, 18
	ands r0, r1
	cmp r0, 0
	beq _0803B1FC
	movs r5, 0x2
	cmp r1, 0
	bge _0803B1FE
_0803B1FC:
	movs r5, 0x3
_0803B1FE:
	ldr r1, =gActiveBank
	movs r0, 0
	strb r0, [r1]
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r0, 0
	beq _0803B23A
	adds r4, r1, 0
_0803B20E:
	ldrb r0, [r4]
	bl GetBankIdentity
	lsls r0, 24
	lsrs r0, 24
	cmp r0, r5
	bne _0803B228
	movs r0, 0
	bl dp01_build_cmdbuf_x2F_2F_2F_2F
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
_0803B228:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	ldr r1, =gNoOfAllBanks
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803B20E
_0803B23A:
	ldr r1, =gBattleMainFunc
	ldr r0, =bc_801362C
	str r0, [r1]
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803B1DC

	thumb_func_start sub_803B25C
sub_803B25C: @ 803B25C
	push {r4-r6,lr}
	ldr r0, =gBattleTypeFlags
	ldr r2, [r0]
	movs r0, 0x80
	lsls r0, 17
	ands r0, r2
	cmp r0, 0
	beq _0803B298
	movs r0, 0x80
	lsls r0, 18
	ands r0, r2
	cmp r0, 0
	beq _0803B298
	movs r1, 0x80
	lsls r1, 24
	ands r1, r2
	negs r0, r1
	orrs r0, r1
	lsrs r5, r0, 31
	b _0803B29A
	.pool
_0803B288:
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803B1DC
	b _0803B2F0
	.pool
_0803B298:
	movs r5, 0x1
_0803B29A:
	ldr r0, =gBattleExecBuffer
	ldr r2, [r0]
	cmp r2, 0
	bne _0803B2F2
	ldr r0, =gActiveBank
	strb r2, [r0]
	ldr r1, =gNoOfAllBanks
	adds r4, r0, 0
	ldrb r1, [r1]
	cmp r2, r1
	bcs _0803B2EC
	adds r6, r4, 0
_0803B2B2:
	ldrb r0, [r4]
	bl GetBankIdentity
	lsls r0, 24
	lsrs r0, 24
	cmp r0, r5
	bne _0803B2D8
	movs r0, 0
	bl dp01_build_cmdbuf_x2F_2F_2F_2F
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	ldr r1, =0x00008040
	ands r0, r1
	cmp r0, 0
	bne _0803B288
_0803B2D8:
	ldrb r0, [r6]
	adds r0, 0x1
	strb r0, [r6]
	ldr r1, =gNoOfAllBanks
	lsls r0, 24
	lsrs r0, 24
	ldr r4, =gActiveBank
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803B2B2
_0803B2EC:
	ldr r1, =gBattleMainFunc
	ldr r0, =bc_801362C
_0803B2F0:
	str r0, [r1]
_0803B2F2:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803B25C

	thumb_func_start bc_801362C
bc_801362C: @ 803B314
	push {r4-r7,lr}
	ldr r0, =gBattleExecBuffer
	ldr r1, [r0]
	cmp r1, 0
	bne _0803B384
	ldr r2, =gActiveBank
	strb r1, [r2]
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r1, r0
	bcs _0803B37E
	adds r4, r2, 0
	ldr r6, =gBattleMons
	movs r5, 0x58
	adds r7, r6, 0
	adds r7, 0x48
_0803B334:
	ldrb r0, [r4]
	bl GetBankSide
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0803B36C
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	ldr r1, =0x063f0902
	ands r0, r1
	cmp r0, 0
	bne _0803B36C
	ldrb r0, [r4]
	muls r0, r5
	adds r0, r6
	ldrh r0, [r0]
	bl SpeciesToNationalPokedexNum
	lsls r0, 16
	lsrs r0, 16
	ldrb r1, [r4]
	muls r1, r5
	adds r1, r7
	ldr r2, [r1]
	movs r1, 0x2
	bl HandleSetPokedexFlag
_0803B36C:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	ldr r1, =gNoOfAllBanks
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803B334
_0803B37E:
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803B3CC
	str r0, [r1]
_0803B384:
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end bc_801362C

	thumb_func_start sub_803B3AC
sub_803B3AC: @ 803B3AC
	push {lr}
	ldr r0, =gBattleExecBuffer
	ldr r0, [r0]
	cmp r0, 0
	bne _0803B3BC
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803B3CC
	str r0, [r1]
_0803B3BC:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803B3AC

	thumb_func_start sub_803B3CC
sub_803B3CC: @ 803B3CC
	push {lr}
	ldr r0, =gBattleExecBuffer
	ldr r0, [r0]
	cmp r0, 0
	bne _0803B418
	ldr r1, =gBattleTypeFlags
	ldr r2, [r1]
	movs r0, 0x80
	lsls r0, 17
	ands r0, r2
	cmp r0, 0
	beq _0803B3F4
	movs r0, 0x80
	lsls r0, 18
	ands r0, r2
	cmp r0, 0
	beq _0803B3F4
	movs r3, 0x1
	cmp r2, 0
	bge _0803B3F6
_0803B3F4:
	movs r3, 0
_0803B3F6:
	ldr r0, [r1]
	movs r1, 0x80
	ands r0, r1
	cmp r0, 0
	bne _0803B412
	adds r0, r3, 0
	bl GetBankByPlayerAI
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	movs r0, 0x1
	bl b_std_message
_0803B412:
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803B4C8
	str r0, [r1]
_0803B418:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803B3CC

	thumb_func_start sub_803B42C
sub_803B42C: @ 803B42C
	push {r4,r5,lr}
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r0, 0x80
	lsls r0, 17
	ands r0, r1
	cmp r0, 0
	beq _0803B44C
	movs r0, 0x80
	lsls r0, 18
	ands r0, r1
	cmp r0, 0
	beq _0803B44C
	movs r5, 0x3
	cmp r1, 0
	bge _0803B44E
_0803B44C:
	movs r5, 0x2
_0803B44E:
	ldr r1, =gActiveBank
	movs r0, 0
	strb r0, [r1]
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r0, 0
	beq _0803B48A
	adds r4, r1, 0
_0803B45E:
	ldrb r0, [r4]
	bl GetBankIdentity
	lsls r0, 24
	lsrs r0, 24
	cmp r0, r5
	bne _0803B478
	movs r0, 0
	bl dp01_build_cmdbuf_x2F_2F_2F_2F
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
_0803B478:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	ldr r1, =gNoOfAllBanks
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803B45E
_0803B48A:
	ldr r2, =gBattleStruct
	ldr r0, [r2]
	adds r0, 0x4C
	movs r1, 0
	strb r1, [r0]
	ldr r0, [r2]
	adds r0, 0xD9
	strb r1, [r0]
	ldr r0, [r2]
	movs r2, 0xD1
	lsls r2, 1
	adds r0, r2
	strb r1, [r0]
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803B628
	str r0, [r1]
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803B42C

	thumb_func_start sub_803B4C8
sub_803B4C8: @ 803B4C8
	push {r4-r6,lr}
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r0, 0x80
	lsls r0, 17
	ands r0, r1
	cmp r0, 0
	beq _0803B500
	movs r0, 0x80
	lsls r0, 18
	ands r0, r1
	cmp r0, 0
	beq _0803B500
	movs r6, 0x1
	cmp r1, 0
	bge _0803B502
	b _0803B500
	.pool
_0803B4F0:
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803B42C
	b _0803B572
	.pool
_0803B500:
	movs r6, 0
_0803B502:
	ldr r0, =gBattleExecBuffer
	ldr r2, [r0]
	cmp r2, 0
	bne _0803B574
	ldr r0, =gActiveBank
	strb r2, [r0]
	ldr r1, =gNoOfAllBanks
	adds r4, r0, 0
	ldrb r1, [r1]
	cmp r2, r1
	bcs _0803B554
	adds r5, r4, 0
_0803B51A:
	ldrb r0, [r4]
	bl GetBankIdentity
	lsls r0, 24
	lsrs r0, 24
	cmp r0, r6
	bne _0803B540
	movs r0, 0
	bl dp01_build_cmdbuf_x2F_2F_2F_2F
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x40
	ands r0, r1
	cmp r0, 0
	bne _0803B4F0
_0803B540:
	ldrb r0, [r5]
	adds r0, 0x1
	strb r0, [r5]
	ldr r1, =gNoOfAllBanks
	lsls r0, 24
	lsrs r0, 24
	ldr r4, =gActiveBank
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803B51A
_0803B554:
	ldr r2, =gBattleStruct
	ldr r0, [r2]
	adds r0, 0x4C
	movs r1, 0
	strb r1, [r0]
	ldr r0, [r2]
	adds r0, 0xD9
	strb r1, [r0]
	ldr r0, [r2]
	movs r2, 0xD1
	lsls r2, 1
	adds r0, r2
	strb r1, [r0]
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803B628
_0803B572:
	str r0, [r1]
_0803B574:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803B4C8

	thumb_func_start sub_803B598
sub_803B598: @ 803B598
	push {r4,r5,lr}
	ldr r0, =gBattleExecBuffer
	ldr r1, [r0]
	cmp r1, 0
	bne _0803B606
	ldr r2, =gActiveBank
	strb r1, [r2]
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r1, r0
	bcs _0803B5E6
	adds r4, r2, 0
	ldr r5, =gBattlePartyID
_0803B5B2:
	ldrb r0, [r4]
	bl GetBankSide
	lsls r0, 24
	cmp r0, 0
	bne _0803B5D4
	ldrb r0, [r4]
	lsls r0, 1
	adds r0, r5
	ldrb r1, [r0]
	movs r0, 0
	movs r2, 0
	bl dp01_build_cmdbuf_x05_a_b_c
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
_0803B5D4:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	ldr r1, =gNoOfAllBanks
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803B5B2
_0803B5E6:
	ldr r2, =gBattleStruct
	ldr r0, [r2]
	adds r0, 0x4C
	movs r1, 0
	strb r1, [r0]
	ldr r0, [r2]
	adds r0, 0xD9
	strb r1, [r0]
	ldr r0, [r2]
	movs r2, 0xD1
	lsls r2, 1
	adds r0, r2
	strb r1, [r0]
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803B628
	str r0, [r1]
_0803B606:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803B598

	thumb_func_start sub_803B628
sub_803B628: @ 803B628
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x4
	movs r0, 0
	mov r9, r0
	ldr r0, =gBattleExecBuffer
	ldr r0, [r0]
	cmp r0, 0
	beq _0803B642
	b _0803B8B2
_0803B642:
	ldr r0, =gBattleStruct
	ldr r0, [r0]
	adds r0, 0x4C
	ldrb r0, [r0]
	cmp r0, 0
	bne _0803B6C2
	movs r5, 0
	ldr r1, =gNoOfAllBanks
	mov r10, r1
	ldrb r3, [r1]
	cmp r5, r3
	bge _0803B668
	ldr r2, =gTurnOrder
_0803B65C:
	adds r0, r5, r2
	strb r5, [r0]
	adds r5, 0x1
	ldrb r0, [r1]
	cmp r5, r0
	blt _0803B65C
_0803B668:
	movs r5, 0
	b _0803B6B8
	.pool
_0803B67C:
	adds r4, r5, 0x1
	mov r8, r4
	ldrb r1, [r1]
	cmp r8, r1
	bge _0803B6B6
	ldr r6, =gTurnOrder
	ldr r1, =gNoOfAllBanks
	mov r10, r1
	lsls r7, r5, 24
_0803B68E:
	adds r0, r5, r6
	ldrb r0, [r0]
	adds r1, r4, r6
	ldrb r1, [r1]
	movs r2, 0x1
	bl b_first_side
	lsls r0, 24
	cmp r0, 0
	beq _0803B6AC
	lsls r1, r4, 24
	lsrs r1, 24
	lsrs r0, r7, 24
	bl sub_803CEDC
_0803B6AC:
	adds r4, 0x1
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r4, r0
	blt _0803B68E
_0803B6B6:
	mov r5, r8
_0803B6B8:
	mov r1, r10
	ldrb r0, [r1]
	subs r0, 0x1
	cmp r5, r0
	blt _0803B67C
_0803B6C2:
	ldr r5, =gBattleStruct
	ldr r0, [r5]
	movs r4, 0xD1
	lsls r4, 1
	adds r0, r4
	ldrb r0, [r0]
	cmp r0, 0
	bne _0803B6FC
	str r0, [sp]
	movs r0, 0
	movs r1, 0
	movs r2, 0
	movs r3, 0xFF
	bl AbilityBattleEffects
	lsls r0, 24
	cmp r0, 0
	beq _0803B6FC
	ldr r0, [r5]
	adds r0, r4
	movs r1, 0x1
	strb r1, [r0]
	b _0803B8B2
	.pool
_0803B6FC:
	ldr r2, =gBattleStruct
	ldr r0, [r2]
	adds r0, 0x4C
	ldr r1, =gNoOfAllBanks
	ldrb r0, [r0]
	ldrb r1, [r1]
	cmp r0, r1
	bcs _0803B756
	ldr r5, =gTurnOrder
	adds r4, r2, 0
_0803B710:
	ldr r0, [r4]
	adds r0, 0x4C
	ldrb r0, [r0]
	adds r0, r5
	ldrb r1, [r0]
	movs r0, 0
	str r0, [sp]
	movs r2, 0
	movs r3, 0
	bl AbilityBattleEffects
	lsls r0, 24
	cmp r0, 0
	beq _0803B736
	mov r0, r9
	adds r0, 0x1
	lsls r0, 24
	lsrs r0, 24
	mov r9, r0
_0803B736:
	ldr r1, [r4]
	adds r1, 0x4C
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	mov r3, r9
	cmp r3, 0
	beq _0803B748
	b _0803B8B2
_0803B748:
	ldr r0, [r4]
	adds r0, 0x4C
	ldr r1, =gNoOfAllBanks
	ldrb r0, [r0]
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803B710
_0803B756:
	movs r0, 0
	str r0, [sp]
	movs r0, 0x9
	movs r1, 0
	movs r2, 0
	movs r3, 0
	bl AbilityBattleEffects
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0
	beq _0803B770
	b _0803B8B2
_0803B770:
	str r0, [sp]
	movs r0, 0xB
	movs r1, 0
	movs r2, 0
	movs r3, 0
	bl AbilityBattleEffects
	lsls r0, 24
	cmp r0, 0
	beq _0803B786
	b _0803B8B2
_0803B786:
	ldr r2, =gBattleStruct
	ldr r0, [r2]
	adds r0, 0xD9
	ldr r1, =gNoOfAllBanks
	ldrb r0, [r0]
	ldrb r1, [r1]
	cmp r0, r1
	bcs _0803B7DA
	ldr r5, =gTurnOrder
	adds r4, r2, 0
_0803B79A:
	ldr r0, [r4]
	adds r0, 0xD9
	ldrb r0, [r0]
	adds r0, r5
	ldrb r1, [r0]
	movs r0, 0
	movs r2, 0
	bl ItemBattleEffects
	lsls r0, 24
	cmp r0, 0
	beq _0803B7BC
	mov r0, r9
	adds r0, 0x1
	lsls r0, 24
	lsrs r0, 24
	mov r9, r0
_0803B7BC:
	ldr r1, [r4]
	adds r1, 0xD9
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	mov r0, r9
	cmp r0, 0
	bne _0803B8B2
	ldr r0, [r4]
	adds r0, 0xD9
	ldr r1, =gNoOfAllBanks
	ldrb r0, [r0]
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803B79A
_0803B7DA:
	movs r5, 0
	ldr r1, =gBattleStruct
	mov r8, r1
	movs r7, 0x6
	ldr r6, =gUnknown_0202421C
	ldr r2, =gChosenMovesByBanks
	movs r4, 0xFF
	movs r3, 0
_0803B7EA:
	mov r1, r8
	ldr r0, [r1]
	adds r0, r5, r0
	adds r0, 0x5C
	strb r7, [r0]
	adds r1, r5, r6
	ldrb r0, [r1]
	orrs r0, r4
	strb r0, [r1]
	strh r3, [r2]
	adds r2, 0x2
	adds r5, 0x1
	cmp r5, 0x3
	ble _0803B7EA
	movs r0, 0
	bl sub_803D580
	bl sub_803D6A0
	ldr r0, =gBattleStruct
	ldr r0, [r0]
	adds r0, 0x91
	ldr r1, =gAbsentBankFlags
	ldrb r1, [r1]
	strb r1, [r0]
	ldr r0, =gUnknown_085CC23E
	movs r1, 0
	bl battle_show_message_maybe
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803BE74
	str r0, [r1]
	bl sub_803F988
	ldr r1, =gBattleCommunication
	movs r2, 0
	adds r0, r1, 0x7
_0803B834:
	strb r2, [r0]
	subs r0, 0x1
	cmp r0, r1
	bge _0803B834
	movs r5, 0
	ldr r3, =gNoOfAllBanks
	ldr r2, =gBattleStruct
	ldr r6, =gBattleScripting
	ldr r7, =gBattleMoveFlags
	ldrb r0, [r3]
	cmp r5, r0
	bge _0803B866
	ldr r0, =gBattleMons
	movs r4, 0x9
	negs r4, r4
	adds r1, r0, 0
	adds r1, 0x50
_0803B856:
	ldr r0, [r1]
	ands r0, r4
	str r0, [r1]
	adds r1, 0x58
	adds r5, 0x1
	ldrb r0, [r3]
	cmp r5, r0
	blt _0803B856
_0803B866:
	ldr r0, [r2]
	movs r1, 0
	strb r1, [r0]
	ldr r0, [r2]
	strb r1, [r0, 0x1]
	ldr r0, [r2]
	movs r3, 0xD0
	lsls r3, 1
	adds r0, r3
	strb r1, [r0]
	ldr r0, [r2]
	adds r3, 0x1
	adds r0, r3
	strb r1, [r0]
	movs r1, 0
	strb r1, [r6, 0x14]
	ldr r0, [r2]
	adds r0, 0x4D
	strb r1, [r0]
	ldr r0, [r2]
	strb r1, [r0, 0x3]
	strb r1, [r7]
	bl Random
	ldr r1, =gUnknown_02024330
	strh r0, [r1]
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 11
	ands r0, r1
	cmp r0, 0
	beq _0803B8B2
	bl StopCryAndClearCrySongs
	ldr r0, =gUnknown_082DB8BE
	bl b_call_bc_move_exec
_0803B8B2:
	add sp, 0x4
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803B628

	thumb_func_start bc_8013B1C
bc_8013B1C: @ 803B904
	push {r4-r6,lr}
	ldr r0, =gBattleExecBuffer
	ldr r0, [r0]
	cmp r0, 0
	bne _0803B994
	ldr r1, =gBattleMainFunc
	ldr r0, =BattleTurnPassed
	str r0, [r1]
	ldr r3, =gNoOfAllBanks
	ldr r1, =gBattleCommunication
	movs r2, 0
	adds r0, r1, 0x7
_0803B91C:
	strb r2, [r0]
	subs r0, 0x1
	cmp r0, r1
	bge _0803B91C
	movs r4, 0
	ldrb r3, [r3]
	cmp r4, r3
	bge _0803B96E
	ldr r5, =gBattleMons
	adds r6, r5, 0
	adds r6, 0x4C
_0803B932:
	movs r0, 0x58
	adds r2, r4, 0
	muls r2, r0
	adds r1, r5, 0
	adds r1, 0x50
	adds r1, r2, r1
	ldr r3, [r1]
	subs r0, 0x61
	ands r3, r0
	str r3, [r1]
	adds r2, r6
	ldr r0, [r2]
	movs r1, 0x7
	ands r0, r1
	cmp r0, 0
	beq _0803B964
	movs r0, 0x80
	lsls r0, 5
	ands r3, r0
	cmp r3, 0
	beq _0803B964
	lsls r0, r4, 24
	lsrs r0, 24
	bl CancelMultiTurnMoves
_0803B964:
	adds r4, 0x1
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r4, r0
	blt _0803B932
_0803B96E:
	ldr r2, =gBattleStruct
	ldr r0, [r2]
	movs r1, 0
	strb r1, [r0]
	ldr r0, [r2]
	strb r1, [r0, 0x1]
	ldr r0, [r2]
	movs r3, 0xD0
	lsls r3, 1
	adds r0, r3
	strb r1, [r0]
	ldr r0, [r2]
	adds r3, 0x1
	adds r0, r3
	strb r1, [r0]
	ldr r0, [r2]
	strb r1, [r0, 0x3]
	ldr r0, =gBattleMoveFlags
	strb r1, [r0]
_0803B994:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end bc_8013B1C

	thumb_func_start BattleTurnPassed
BattleTurnPassed: @ 803B9BC
	push {r4-r7,lr}
	mov r7, r9
	mov r6, r8
	push {r6,r7}
	movs r0, 0x1
	bl sub_803D580
	ldr r0, =gBattleOutcome
	ldrb r0, [r0]
	cmp r0, 0
	bne _0803B9EA
	bl UpdateTurnCounters
	lsls r0, 24
	cmp r0, 0
	beq _0803B9DE
	b _0803BB78
_0803B9DE:
	bl TurnBasedEffects
	lsls r0, 24
	cmp r0, 0
	beq _0803B9EA
	b _0803BB78
_0803B9EA:
	bl sub_8041728
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	beq _0803B9F8
	b _0803BB78
_0803B9F8:
	ldr r0, =gBattleStruct
	ldr r0, [r0]
	adds r0, 0x4D
	strb r1, [r0]
	bl sub_8041364
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0
	beq _0803BA0E
	b _0803BB78
_0803BA0E:
	movs r0, 0
	bl sub_803D580
	ldr r2, =gHitMarker
	ldr r0, [r2]
	ldr r1, =0xfffffdff
	ands r0, r1
	ldr r1, =0xfff7ffff
	ands r0, r1
	ldr r1, =0xffbfffff
	ands r0, r1
	ldr r1, =0xffefffff
	ands r0, r1
	str r0, [r2]
	ldr r0, =gBattleScripting
	strb r4, [r0, 0x18]
	strb r4, [r0, 0x19]
	strb r4, [r0, 0x14]
	ldr r0, =gBattleMoveDamage
	str r4, [r0]
	ldr r0, =gBattleMoveFlags
	strb r4, [r0]
	ldr r1, =gBattleCommunication
	movs r2, 0
	adds r0, r1, 0x4
_0803BA40:
	strb r2, [r0]
	subs r0, 0x1
	cmp r0, r1
	bge _0803BA40
	ldr r0, =gBattleOutcome
	ldrb r0, [r0]
	cmp r0, 0
	beq _0803BA98
	ldr r1, =gFightStateTracker
	movs r0, 0xC
	strb r0, [r1]
	ldr r1, =gBattleMainFunc
	ldr r0, =bc_bs_exec
	str r0, [r1]
	b _0803BB78
	.pool
_0803BA98:
	ldr r1, =gBattleResults
	ldrb r0, [r1, 0x13]
	ldr r2, =gBattleStruct
	mov r8, r2
	cmp r0, 0xFE
	bhi _0803BAB2
	adds r0, 0x1
	strb r0, [r1, 0x13]
	ldr r1, [r2]
	adds r1, 0xDA
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
_0803BAB2:
	movs r2, 0
	ldr r4, =gNoOfAllBanks
	ldr r0, =gAbsentBankFlags
	mov r12, r0
	ldr r1, =gUnknown_085CC23E
	mov r9, r1
	ldrb r0, [r4]
	cmp r2, r0
	bge _0803BAE0
	ldr r7, =gUnknown_0202421C
	movs r6, 0xFF
	movs r5, 0
	ldr r3, =gChosenMovesByBanks
_0803BACC:
	adds r1, r2, r7
	ldrb r0, [r1]
	orrs r0, r6
	strb r0, [r1]
	strh r5, [r3]
	adds r3, 0x2
	adds r2, 0x1
	ldrb r1, [r4]
	cmp r2, r1
	blt _0803BACC
_0803BAE0:
	movs r2, 0
	ldr r3, =gBattleStruct
	movs r1, 0x6
_0803BAE6:
	ldr r0, [r3]
	adds r0, r2, r0
	adds r0, 0x5C
	strb r1, [r0]
	adds r2, 0x1
	cmp r2, 0x3
	ble _0803BAE6
	mov r2, r8
	ldr r0, [r2]
	adds r0, 0x91
	mov r2, r12
	ldrb r1, [r2]
	strb r1, [r0]
	mov r0, r9
	movs r1, 0
	bl battle_show_message_maybe
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803BE74
	str r0, [r1]
	bl Random
	ldr r1, =gUnknown_02024330
	strh r0, [r1]
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r0, 0x80
	lsls r0, 10
	ands r0, r1
	cmp r0, 0
	beq _0803BB5C
	ldr r0, =gUnknown_082DB881
	bl b_call_bc_move_exec
	b _0803BB78
	.pool
_0803BB5C:
	movs r0, 0x80
	lsls r0, 11
	ands r1, r0
	cmp r1, 0
	beq _0803BB78
	mov r1, r8
	ldr r0, [r1]
	adds r0, 0xDA
	ldrb r0, [r0]
	cmp r0, 0
	bne _0803BB78
	ldr r0, =gUnknown_082DB8BE
	bl b_call_bc_move_exec
_0803BB78:
	pop {r3,r4}
	mov r8, r3
	mov r9, r4
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end BattleTurnPassed

	thumb_func_start sub_803BB88
sub_803BB88: @ 803BB88
	push {r4-r7,lr}
	sub sp, 0x4
	ldr r1, =gBattleMons
	ldr r0, =gActiveBank
	ldrb r2, [r0]
	movs r0, 0x58
	muls r0, r2
	adds r1, r0, r1
	ldrh r0, [r1, 0x2E]
	cmp r0, 0xAF
	bne _0803BBB8
	ldr r1, =gEnigmaBerries
	lsls r0, r2, 3
	subs r0, r2
	lsls r0, 2
	adds r0, r1
	ldrb r2, [r0, 0x7]
	b _0803BBC2
	.pool
_0803BBB8:
	ldrh r0, [r1, 0x2E]
	bl ItemId_GetHoldEffect
	lsls r0, 24
	lsrs r2, r0, 24
_0803BBC2:
	ldr r1, =gStringBank
	ldr r3, =gActiveBank
	ldrb r0, [r3]
	strb r0, [r1]
	cmp r2, 0x25
	bne _0803BBD0
	b _0803BD4C
_0803BBD0:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x2
	ands r0, r1
	cmp r0, 0
	beq _0803BBDE
	b _0803BD4C
_0803BBDE:
	ldr r1, =gBattleMons
	ldrb r2, [r3]
	movs r0, 0x58
	muls r0, r2
	adds r0, r1
	adds r0, 0x20
	ldrb r0, [r0]
	cmp r0, 0x32
	bne _0803BBF2
	b _0803BD4C
_0803BBF2:
	adds r0, r2, 0
	bl GetBankSide
	lsls r0, 24
	lsrs r6, r0, 24
	movs r5, 0
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r5, r0
	bge _0803BC86
	movs r7, 0
_0803BC08:
	lsrs r4, r7, 24
	adds r0, r4, 0
	bl GetBankSide
	lsls r0, 24
	lsrs r0, 24
	cmp r6, r0
	beq _0803BC2C
	ldr r1, =gBattleMons
	movs r0, 0x58
	muls r0, r5
	adds r0, r1
	adds r2, r0, 0
	adds r2, 0x20
	ldrb r0, [r2]
	cmp r0, 0x17
	bne _0803BC2C
	b _0803BD54
_0803BC2C:
	adds r0, r4, 0
	bl GetBankSide
	lsls r0, 24
	lsrs r0, 24
	cmp r6, r0
	beq _0803BC76
	ldr r3, =gBattleMons
	ldr r0, =gActiveBank
	ldrb r0, [r0]
	movs r2, 0x58
	muls r0, r2
	adds r1, r0, r3
	adds r0, r1, 0
	adds r0, 0x20
	ldrb r0, [r0]
	cmp r0, 0x1A
	beq _0803BC76
	adds r0, r1, 0
	adds r0, 0x21
	ldrb r0, [r0]
	cmp r0, 0x2
	beq _0803BC76
	adds r0, r1, 0
	adds r0, 0x22
	ldrb r0, [r0]
	cmp r0, 0x2
	beq _0803BC76
	adds r0, r5, 0
	muls r0, r2
	adds r0, r3
	adds r2, r0, 0
	adds r2, 0x20
	ldrb r0, [r2]
	cmp r0, 0x47
	bne _0803BC76
	b _0803BD70
_0803BC76:
	movs r0, 0x80
	lsls r0, 17
	adds r7, r0
	adds r5, 0x1
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r5, r0
	blt _0803BC08
_0803BC86:
	ldr r4, =gActiveBank
	ldrb r1, [r4]
	movs r0, 0
	str r0, [sp]
	movs r0, 0xF
	movs r2, 0x2A
	movs r3, 0
	bl AbilityBattleEffects
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0
	beq _0803BCF8
	ldr r6, =gBattleMons
	ldrb r0, [r4]
	movs r3, 0x58
	muls r0, r3
	adds r1, r0, r6
	adds r0, r1, 0
	adds r0, 0x21
	ldrb r0, [r0]
	cmp r0, 0x8
	beq _0803BCBE
	adds r0, r1, 0
	adds r0, 0x22
	ldrb r0, [r0]
	cmp r0, 0x8
	bne _0803BCF8
_0803BCBE:
	ldr r0, =gBattleScripting
	subs r1, r5, 0x1
	strb r1, [r0, 0x17]
	ldr r2, =gLastUsedAbility
	adds r0, r1, 0
	muls r0, r3
	adds r0, r6
	adds r0, 0x20
	ldrb r0, [r0]
	strb r0, [r2]
	ldr r1, =gBattleCommunication
	movs r0, 0x2
	b _0803BD90
	.pool
_0803BCF8:
	ldr r1, =gBattleMons
	ldr r0, =gActiveBank
	ldrb r2, [r0]
	movs r0, 0x58
	muls r0, r2
	adds r1, 0x50
	adds r0, r1
	ldr r0, [r0]
	ldr r1, =0x0400e000
	ands r0, r1
	cmp r0, 0
	bne _0803BD22
	ldr r1, =gStatuses3
	lsls r0, r2, 2
	adds r0, r1
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 3
	ands r0, r1
	cmp r0, 0
	beq _0803BD40
_0803BD22:
	ldr r1, =gBattleCommunication
	movs r0, 0
	strb r0, [r1, 0x5]
	movs r0, 0x1
	b _0803BD92
	.pool
_0803BD40:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x10
	ands r0, r1
	cmp r0, 0
	bne _0803BD8C
_0803BD4C:
	movs r0, 0
	b _0803BD92
	.pool
_0803BD54:
	ldr r0, =gBattleScripting
	strb r5, [r0, 0x17]
	ldr r1, =gLastUsedAbility
	ldrb r0, [r2]
	strb r0, [r1]
	ldr r1, =gBattleCommunication
	movs r0, 0x2
	b _0803BD90
	.pool
_0803BD70:
	ldr r0, =gBattleScripting
	strb r5, [r0, 0x17]
	ldr r1, =gLastUsedAbility
	ldrb r0, [r2]
	strb r0, [r1]
	ldr r1, =gBattleCommunication
	movs r0, 0x2
	b _0803BD90
	.pool
_0803BD8C:
	ldr r1, =gBattleCommunication
	movs r0, 0x1
_0803BD90:
	strb r0, [r1, 0x5]
_0803BD92:
	add sp, 0x4
	pop {r4-r7}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_803BB88

	thumb_func_start sub_803BDA0
sub_803BDA0: @ 803BDA0
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	lsls r0, 24
	lsrs r5, r0, 24
	movs r3, 0
	ldr r0, =gBattlePartyID
	mov r8, r0
	ldr r1, =gUnknown_0203CF00
	mov r12, r1
	ldr r7, =gBattleStruct
	lsls r0, r5, 1
	adds r4, r0, r5
	adds r6, r0, 0
_0803BDBC:
	mov r0, r12
	adds r2, r3, r0
	ldr r1, [r7]
	adds r0, r4, r3
	adds r0, r1
	adds r0, 0x60
	ldrb r0, [r0]
	strb r0, [r2]
	adds r3, 0x1
	cmp r3, 0x2
	ble _0803BDBC
	mov r1, r8
	adds r0, r6, r1
	ldrb r0, [r0]
	bl pokemon_order_func
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	ldr r7, =gBattleStruct
	ldr r0, [r7]
	adds r0, r5, r0
	adds r0, 0x5C
	ldrb r0, [r0]
	bl pokemon_order_func
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl sub_81B8FB0
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x1
	ands r0, r1
	cmp r0, 0
	beq _0803BE4C
	movs r3, 0
	adds r4, r7, 0
	adds r6, r5
	movs r0, 0x2
	adds r1, r5, 0
	eors r1, r0
	ldr r7, =gUnknown_0203CF00
	lsls r0, r1, 1
	adds r5, r0, r1
_0803BE1A:
	ldr r0, [r4]
	adds r1, r6, r3
	adds r1, r0
	adds r1, 0x60
	adds r2, r3, r7
	ldrb r0, [r2]
	strb r0, [r1]
	ldr r1, [r4]
	adds r0, r5, r3
	adds r0, r1
	adds r0, 0x60
	ldrb r1, [r2]
	strb r1, [r0]
	adds r3, 0x1
	cmp r3, 0x2
	ble _0803BE1A
	b _0803BE66
	.pool
_0803BE4C:
	movs r3, 0
	adds r2, r6, r5
	ldr r4, =gUnknown_0203CF00
_0803BE52:
	ldr r0, [r7]
	adds r1, r2, r3
	adds r1, r0
	adds r1, 0x60
	adds r0, r3, r4
	ldrb r0, [r0]
	strb r0, [r1]
	adds r3, 0x1
	cmp r3, 0x2
	ble _0803BE52
_0803BE66:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803BDA0

	thumb_func_start sub_803BE74
sub_803BE74: @ 803BE74
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x1C
	ldr r0, =gBattleCommunication
	movs r1, 0
	strb r1, [r0, 0x4]
	ldr r0, =gActiveBank
	strb r1, [r0]
	ldr r0, =gNoOfAllBanks
	bl _0803CD12
	.pool
_0803BE9C:
	ldr r4, =gActiveBank
	ldrb r0, [r4]
	bl GetBankIdentity
	lsls r0, 24
	lsrs r5, r0, 24
	ldr r1, =gBattleCommunication
	ldrb r0, [r4]
	adds r0, r1
	ldrb r0, [r0]
	cmp r0, 0x8
	bls _0803BEB8
	bl _0803CD04
_0803BEB8:
	lsls r0, 2
	ldr r1, =_0803BED0
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_0803BED0:
	.4byte _0803BEF4
	.4byte _0803BF0C
	.4byte _0803C02C
	.4byte _0803C7D8
	.4byte _0803CAD0
	.4byte _0803CB84
	.4byte _0803CBC8
	.4byte _0803CBF4
	.4byte _0803CC38
_0803BEF4:
	bl sub_8185FD0
	ldr r1, =gBattleCommunication
	ldr r0, =gActiveBank
	ldrb r0, [r0]
	adds r0, r1
	bl _0803CC20
	.pool
_0803BF0C:
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	ldr r4, =gBattleStruct
	ldr r0, [r4]
	adds r1, r0
	adds r1, 0x5C
	movs r0, 0x6
	strb r0, [r1]
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x40
	ands r0, r1
	cmp r0, 0
	bne _0803BF68
	movs r1, 0x2
	movs r0, 0x2
	ands r0, r5
	cmp r0, 0
	beq _0803BF68
	eors r5, r1
	adds r0, r5, 0
	bl GetBankByPlayerAI
	ldr r1, [r4]
	adds r1, 0x91
	ldrb r1, [r1]
	ldr r2, =gBitTable
	lsls r0, 24
	lsrs r0, 22
	adds r0, r2
	ldr r0, [r0]
	ands r1, r0
	cmp r1, 0
	bne _0803BF68
	ldr r4, =gBattleCommunication
	adds r0, r5, 0
	bl GetBankByPlayerAI
	lsls r0, 24
	lsrs r0, 24
	adds r0, r4
	ldrb r0, [r0]
	cmp r0, 0x5
	beq _0803BF68
	bl _0803CD04
_0803BF68:
	ldr r0, =gBattleStruct
	ldr r0, [r0]
	adds r0, 0x91
	ldrb r3, [r0]
	ldr r1, =gBitTable
	ldr r4, =gActiveBank
	ldrb r2, [r4]
	lsls r0, r2, 2
	adds r0, r1
	ldr r0, [r0]
	ands r3, r0
	cmp r3, 0
	beq _0803BFD0
	ldr r0, =gUnknown_0202421C
	adds r0, r2, r0
	movs r1, 0xD
	strb r1, [r0]
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x40
	ands r0, r1
	cmp r0, 0
	bne _0803BFBC
	ldr r0, =gBattleCommunication
	ldrb r1, [r4]
	adds r1, r0
	movs r0, 0x5
	strb r0, [r1]
	bl _0803CD04
	.pool
_0803BFBC:
	ldr r0, =gBattleCommunication
	ldrb r1, [r4]
	adds r1, r0
	movs r0, 0x4
	strb r0, [r1]
	bl _0803CD04
	.pool
_0803BFD0:
	ldr r1, =gBattleMons
	movs r0, 0x58
	muls r0, r2
	adds r1, 0x50
	adds r0, r1
	ldr r1, [r0]
	movs r0, 0x80
	lsls r0, 5
	ands r0, r1
	cmp r0, 0
	bne _0803BFF0
	movs r0, 0x80
	lsls r0, 15
	ands r1, r0
	cmp r1, 0
	beq _0803C00C
_0803BFF0:
	ldr r0, =gUnknown_0202421C
	adds r0, r2, r0
	strb r3, [r0]
	ldr r1, =gBattleCommunication
	ldrb r0, [r4]
	bl _0803CC72
	.pool
_0803C00C:
	ldr r0, =gUnknown_0202421C
	ldrb r1, [r0]
	ldr r0, =gBattleBufferB
	ldrb r2, [r0, 0x1]
	ldrb r0, [r0, 0x2]
	lsls r0, 8
	orrs r2, r0
	movs r0, 0
	bl dp01_build_cmdbuf_x12_a_bb
	bl _0803CB68
	.pool
_0803C02C:
	ldr r3, =gBattleExecBuffer
	ldr r1, =gBitTable
	ldr r6, =gActiveBank
	ldrb r5, [r6]
	lsls r0, r5, 2
	adds r0, r1
	ldr r2, [r0]
	lsls r1, r2, 4
	movs r0, 0xF0
	lsls r0, 24
	orrs r1, r0
	orrs r1, r2
	lsls r0, r2, 8
	orrs r1, r0
	lsls r2, 12
	orrs r1, r2
	ldr r0, [r3]
	ands r0, r1
	cmp r0, 0
	beq _0803C058
	bl _0803CD04
_0803C058:
	ldr r4, =gBattleBufferB
	lsls r0, r5, 9
	adds r4, 0x1
	adds r0, r4
	ldrb r1, [r0]
	adds r0, r5, 0
	bl sub_8184FBC
	ldr r1, =gUnknown_0202421C
	ldrb r0, [r6]
	adds r1, r0, r1
	lsls r0, 9
	adds r0, r4
	ldrb r0, [r0]
	strb r0, [r1]
	ldrb r0, [r6]
	lsls r0, 9
	adds r0, r4
	ldrb r0, [r0]
	cmp r0, 0xC
	bls _0803C084
	b _0803C6C4
_0803C084:
	lsls r0, 2
	ldr r1, =_0803C0A8
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_0803C0A8:
	.4byte _0803C0DC
	.4byte _0803C230
	.4byte _0803C268
	.4byte _0803C6C4
	.4byte _0803C6C4
	.4byte _0803C440
	.4byte _0803C48C
	.4byte _0803C6C4
	.4byte _0803C6C4
	.4byte _0803C6C4
	.4byte _0803C6C4
	.4byte _0803C6C4
	.4byte _0803C4B4
_0803C0DC:
	bl AreAllMovesUnusable
	lsls r0, 24
	cmp r0, 0
	beq _0803C134
	ldr r0, =gBattleCommunication
	ldr r3, =gActiveBank
	ldrb r1, [r3]
	adds r1, r0
	movs r4, 0
	movs r0, 0x6
	strb r0, [r1]
	ldrb r1, [r3]
	ldr r2, =gBattleStruct
	ldr r0, [r2]
	adds r1, r0
	adds r1, 0x54
	strb r4, [r1]
	ldrb r1, [r3]
	ldr r0, [r2]
	adds r1, r0
	adds r1, 0x84
	movs r0, 0x4
	strb r0, [r1]
	ldrb r1, [r3]
	ldr r2, [r2]
	adds r2, r1, r2
	ldr r0, =gBattleBufferB
	lsls r1, 9
	adds r0, 0x3
	adds r1, r0
	ldrb r0, [r1]
	strb r0, [r2, 0xC]
	bl _0803CD70
	.pool
_0803C134:
	ldr r3, =gDisableStructs
	ldr r5, =gActiveBank
	ldrb r4, [r5]
	lsls r0, r4, 3
	subs r0, r4
	lsls r0, 2
	adds r0, r3
	ldrh r2, [r0, 0x6]
	cmp r2, 0
	beq _0803C188
	ldr r1, =gChosenMovesByBanks
	lsls r0, r4, 1
	adds r0, r1
	strh r2, [r0]
	ldrb r2, [r5]
	ldr r0, =gBattleStruct
	ldr r1, [r0]
	adds r1, r2, r1
	adds r1, 0x80
	lsls r0, r2, 3
	subs r0, r2
	lsls r0, 2
	adds r0, r3
	ldrb r0, [r0, 0xC]
	strb r0, [r1]
	ldr r1, =gBattleCommunication
	ldrb r0, [r5]
	adds r0, r1
	movs r1, 0x4
	strb r1, [r0]
	bl _0803CD70
	.pool
_0803C188:
	add r2, sp, 0x4
	ldr r3, =gBattleMons
	movs r1, 0x58
	adds r0, r4, 0
	muls r0, r1
	adds r0, r3
	ldrh r0, [r0]
	strh r0, [r2, 0x10]
	ldrb r0, [r5]
	muls r0, r1
	adds r0, r3
	adds r0, 0x21
	ldrb r0, [r0]
	strb r0, [r2, 0x12]
	ldrb r0, [r5]
	muls r0, r1
	adds r0, r3
	adds r0, 0x22
	ldrb r0, [r0]
	strb r0, [r2, 0x13]
	movs r4, 0
	mov r1, sp
	adds r1, 0xC
	str r1, [sp, 0x18]
	add r2, sp, 0x10
	mov r10, r2
	mov r8, r3
	adds r7, r5, 0
	movs r6, 0x58
	movs r0, 0xC
	add r0, r8
	mov r9, r0
	add r5, sp, 0x4
_0803C1CA:
	lsls r2, r4, 1
	ldrb r0, [r7]
	muls r0, r6
	adds r0, r2, r0
	add r0, r9
	ldrh r0, [r0]
	strh r0, [r5]
	ldr r1, [sp, 0x18]
	adds r3, r1, r4
	ldrb r0, [r7]
	muls r0, r6
	adds r0, r4, r0
	mov r1, r8
	adds r1, 0x24
	adds r0, r1
	ldrb r0, [r0]
	strb r0, [r3]
	ldrb r0, [r7]
	adds r1, r0, 0
	muls r1, r6
	adds r2, r1
	add r2, r9
	ldrh r0, [r2]
	add r1, r8
	adds r1, 0x3B
	ldrb r1, [r1]
	lsls r2, r4, 24
	lsrs r2, 24
	bl CalculatePPWithBonus
	mov r2, r10
	adds r1, r2, r4
	strb r0, [r1]
	adds r5, 0x2
	adds r4, 0x1
	cmp r4, 0x3
	ble _0803C1CA
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r0, 0x1
	ands r1, r0
	movs r0, 0
	movs r2, 0
	add r3, sp, 0x4
	bl sub_8033E30
	b _0803C42E
	.pool
_0803C230:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	ldr r1, =0x021f0902
	ands r0, r1
	cmp r0, 0
	bne _0803C23E
	b _0803C48C
_0803C23E:
	ldr r4, =gActiveBank
	ldrb r0, [r4]
	movs r1, 0x1
	bl sub_8185008
	ldr r1, =gUnknown_02024220
	ldrb r0, [r4]
	lsls r0, 2
	adds r0, r1
	ldr r1, =gUnknown_082DB879
	b _0803C784
	.pool
_0803C268:
	ldr r5, =gActiveBank
	ldrb r0, [r5]
	ldr r3, =gBattleStruct
	ldr r1, [r3]
	adds r1, r0, r1
	adds r1, 0x58
	ldr r2, =gBattlePartyID
	lsls r0, 1
	adds r0, r2
	ldrh r0, [r0]
	strb r0, [r1]
	ldr r7, =gBattleMons
	ldrb r2, [r5]
	movs r6, 0x58
	adds r0, r2, 0
	muls r0, r6
	adds r1, r7, 0
	adds r1, 0x50
	adds r0, r1
	ldr r1, [r0]
	ldr r0, =0x0400e000
	ands r1, r0
	cmp r1, 0
	bne _0803C2B8
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 11
	ands r0, r1
	cmp r0, 0
	bne _0803C2B8
	ldr r0, =gStatuses3
	lsls r1, r2, 2
	adds r1, r0
	ldr r1, [r1]
	movs r0, 0x80
	lsls r0, 3
	ands r1, r0
	cmp r1, 0
	beq _0803C2EC
_0803C2B8:
	ldr r0, =gActiveBank
	ldrb r0, [r0]
	lsls r1, r0, 1
	adds r1, r0
	adds r1, 0x60
	ldr r0, [r3]
	adds r0, r1
	str r0, [sp]
	movs r0, 0
	movs r1, 0x2
	movs r2, 0x6
	b _0803C400
	.pool
_0803C2EC:
	str r1, [sp]
	movs r0, 0xC
	adds r1, r2, 0
	movs r2, 0x17
	movs r3, 0
	bl AbilityBattleEffects
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0
	bne _0803C374
	ldrb r1, [r5]
	str r4, [sp]
	movs r0, 0xC
	movs r2, 0x47
	movs r3, 0
	bl AbilityBattleEffects
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0
	beq _0803C33C
	ldrb r0, [r5]
	muls r0, r6
	adds r1, r0, r7
	adds r0, r1, 0
	adds r0, 0x21
	ldrb r0, [r0]
	cmp r0, 0x2
	beq _0803C33C
	adds r0, r1, 0
	adds r0, 0x22
	ldrb r0, [r0]
	cmp r0, 0x2
	beq _0803C33C
	adds r0, r1, 0
	adds r0, 0x20
	ldrb r0, [r0]
	cmp r0, 0x1A
	bne _0803C374
_0803C33C:
	ldr r5, =gActiveBank
	ldrb r1, [r5]
	movs r0, 0
	str r0, [sp]
	movs r0, 0xF
	movs r2, 0x2A
	movs r3, 0
	bl AbilityBattleEffects
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0
	beq _0803C3B0
	ldr r2, =gBattleMons
	ldrb r1, [r5]
	movs r0, 0x58
	muls r0, r1
	adds r1, r0, r2
	adds r0, r1, 0
	adds r0, 0x21
	ldrb r0, [r0]
	cmp r0, 0x8
	beq _0803C374
	adds r0, r1, 0
	adds r0, 0x22
	ldrb r0, [r0]
	cmp r0, 0x8
	bne _0803C3B0
_0803C374:
	subs r1, r4, 0x1
	lsls r1, 4
	movs r0, 0x4
	orrs r1, r0
	lsls r1, 24
	lsrs r1, 24
	ldr r0, =gLastUsedAbility
	ldrb r3, [r0]
	ldr r4, =gBattleStruct
	ldr r0, =gActiveBank
	ldrb r0, [r0]
	lsls r2, r0, 1
	adds r2, r0
	adds r2, 0x60
	ldr r0, [r4]
	adds r0, r2
	str r0, [sp]
	movs r0, 0
	movs r2, 0x6
	bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
	b _0803C42E
	.pool
_0803C3B0:
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	adds r4, r0, 0
	cmp r1, 0x2
	bne _0803C3D8
	ldr r0, =gUnknown_0202421C
	ldrb r0, [r0]
	cmp r0, 0x2
	bne _0803C3D8
	ldr r0, =gBattleStruct
	ldr r3, [r0]
	adds r0, r3, 0
	adds r0, 0x5C
	b _0803C3EE
	.pool
_0803C3D8:
	ldrb r0, [r4]
	cmp r0, 0x3
	bne _0803C410
	ldr r0, =gUnknown_0202421C
	ldrb r0, [r0, 0x1]
	cmp r0, 0x2
	bne _0803C410
	ldr r0, =gBattleStruct
	ldr r3, [r0]
	adds r0, r3, 0
	adds r0, 0x5D
_0803C3EE:
	ldrb r2, [r0]
	ldrb r1, [r4]
	lsls r0, r1, 1
	adds r0, r1
	adds r0, 0x60
	adds r3, r0
	str r3, [sp]
	movs r0, 0
	movs r1, 0
_0803C400:
	movs r3, 0
	bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
	b _0803C42E
	.pool
_0803C410:
	ldr r2, =gBattleStruct
	ldr r0, =gActiveBank
	ldrb r0, [r0]
	lsls r1, r0, 1
	adds r1, r0
	adds r1, 0x60
	ldr r0, [r2]
	adds r0, r1
	str r0, [sp]
	movs r0, 0
	movs r1, 0
	movs r2, 0x6
	movs r3, 0
	bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
_0803C42E:
	ldr r0, =gActiveBank
	ldrb r0, [r0]
	bl MarkBufferBankForExecution
	b _0803C6C4
	.pool
_0803C440:
	bl IsPlayerPartyAndPokemonStorageFull
	lsls r0, 24
	cmp r0, 0
	bne _0803C44C
	b _0803C6C4
_0803C44C:
	ldr r1, =gUnknown_02024220
	ldr r3, =gActiveBank
	ldrb r0, [r3]
	lsls r0, 2
	adds r0, r1
	ldr r1, =gUnknown_082DAB11
	str r1, [r0]
	ldr r0, =gBattleCommunication
	ldrb r1, [r3]
	adds r1, r0
	movs r4, 0
	movs r0, 0x6
	strb r0, [r1]
	ldrb r1, [r3]
	ldr r2, =gBattleStruct
	ldr r0, [r2]
	adds r1, r0
	adds r1, 0x54
	strb r4, [r1]
	ldrb r1, [r3]
	b _0803C7A0
	.pool
_0803C48C:
	ldr r2, =gBattleStruct
	ldr r4, =gActiveBank
	ldrb r1, [r4]
	lsls r0, r1, 1
	adds r0, r1
	adds r0, 0x60
	ldr r1, [r2]
	adds r1, r0
	movs r0, 0
	bl sub_8033E6C
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
	b _0803C6C4
	.pool
_0803C4B4:
	ldr r4, =gBattleCommunication
	ldr r5, =gActiveBank
	ldrb r0, [r5]
	adds r0, r4
	movs r1, 0x7
	strb r1, [r0]
	ldrb r0, [r5]
	bl GetBankIdentity
	movs r6, 0x2
	eors r0, r6
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	lsls r0, 24
	lsrs r0, 24
	adds r0, r4
	movs r1, 0x1
	strb r1, [r0]
	ldrb r0, [r5]
	bl sub_8185008
	ldrb r0, [r5]
	bl GetBankIdentity
	eors r0, r6
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	ldr r1, =gBattleMons
	lsls r0, 24
	lsrs r0, 24
	movs r7, 0x58
	muls r0, r7
	adds r4, r1, 0
	adds r4, 0x50
	adds r0, r4
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 5
	ands r0, r1
	cmp r0, 0
	bne _0803C532
	ldrb r0, [r5]
	bl GetBankIdentity
	eors r0, r6
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	lsls r0, 24
	lsrs r0, 24
	muls r0, r7
	adds r0, r4
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 15
	ands r0, r1
	cmp r0, 0
	beq _0803C550
_0803C532:
	movs r0, 0
	bl dp01_build_cmdbuf_x32_32_32_32
	ldrb r0, [r5]
	bl MarkBufferBankForExecution
	bl _0803CD70
	.pool
_0803C550:
	ldr r4, =gUnknown_0202421C
	ldrb r0, [r5]
	bl GetBankIdentity
	eors r0, r6
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	lsls r0, 24
	lsrs r0, 24
	adds r0, r4
	ldrb r0, [r0]
	cmp r0, 0x2
	bne _0803C590
	ldrb r0, [r5]
	bl GetBankIdentity
	eors r0, r6
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	lsls r0, 24
	lsrs r0, 24
	movs r1, 0x2
	bl sub_8185008
	b _0803C6AE
	.pool
_0803C590:
	ldrb r0, [r5]
	bl GetBankIdentity
	eors r0, r6
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	lsls r0, 24
	lsrs r0, 24
	adds r0, r4
	ldrb r0, [r0]
	cmp r0, 0x3
	bne _0803C5B6
	ldrb r0, [r5]
	bl GetBankIdentity
	eors r0, r6
	b _0803C668
_0803C5B6:
	ldrb r0, [r5]
	bl GetBankIdentity
	eors r0, r6
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	lsls r0, 24
	lsrs r0, 24
	adds r0, r4
	ldrb r0, [r0]
	cmp r0, 0
	bne _0803C628
	ldr r4, =gProtectStructs
	ldrb r0, [r5]
	bl GetBankIdentity
	eors r0, r6
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	lsls r0, 24
	lsrs r0, 20
	adds r0, r4
	ldrb r0, [r0]
	lsls r0, 29
	cmp r0, 0
	blt _0803C616
	ldr r4, =gDisableStructs
	ldrb r0, [r5]
	bl GetBankIdentity
	eors r0, r6
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	lsls r0, 24
	lsrs r0, 24
	lsls r1, r0, 3
	subs r1, r0
	lsls r1, 2
	adds r1, r4
	ldrh r0, [r1, 0x6]
	cmp r0, 0
	beq _0803C628
_0803C616:
	ldrb r0, [r5]
	bl GetBankIdentity
	eors r0, r6
	b _0803C668
	.pool
_0803C628:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 10
	ands r0, r1
	cmp r0, 0
	beq _0803C690
	ldr r4, =gUnknown_0202421C
	ldr r6, =gActiveBank
	ldrb r0, [r6]
	bl GetBankIdentity
	movs r5, 0x2
	eors r0, r5
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	lsls r0, 24
	lsrs r0, 24
	adds r0, r4
	ldrb r0, [r0]
	cmp r0, 0
	bne _0803C690
	ldr r1, =gRngValue
	ldr r0, =gUnknown_0203BD30
	ldr r0, [r0]
	str r0, [r1]
	ldrb r0, [r6]
	bl GetBankIdentity
	eors r0, r5
_0803C668:
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	lsls r0, 24
	lsrs r0, 24
	movs r1, 0x1
	bl sub_8185008
	b _0803C6AE
	.pool
_0803C690:
	ldr r0, =gActiveBank
	ldrb r0, [r0]
	bl GetBankIdentity
	movs r1, 0x2
	eors r0, r1
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	lsls r0, 24
	lsrs r0, 24
	movs r1, 0x3
	bl sub_8185008
_0803C6AE:
	movs r0, 0
	bl dp01_build_cmdbuf_x32_32_32_32
	ldr r0, =gActiveBank
	ldrb r0, [r0]
	bl MarkBufferBankForExecution
	b _0803CD70
	.pool
_0803C6C4:
	ldr r1, =gBattleTypeFlags
	ldr r2, [r1]
	movs r5, 0x8
	adds r0, r2, 0
	ands r0, r5
	adds r3, r1, 0
	cmp r0, 0
	beq _0803C720
	ldr r0, =0x043f0100
	ands r2, r0
	cmp r2, 0
	beq _0803C720
	ldr r0, =gBattleBufferB
	ldr r4, =gActiveBank
	ldrb r2, [r4]
	lsls r1, r2, 9
	adds r0, 0x1
	adds r1, r0
	ldrb r0, [r1]
	cmp r0, 0x3
	bne _0803C720
	ldr r1, =gUnknown_02024220
	lsls r0, r2, 2
	adds r0, r1
	ldr r1, =gUnknown_082DB9BA
	str r1, [r0]
	ldr r1, =gBattleCommunication
	ldrb r0, [r4]
	adds r0, r1
	movs r3, 0
	strb r5, [r0]
	b _0803C792
	.pool
_0803C720:
	ldr r0, [r3]
	ldr r1, =0x0200000a
	ands r0, r1
	cmp r0, 0x8
	bne _0803C760
	ldr r0, =gBattleBufferB
	ldr r4, =gActiveBank
	ldrb r1, [r4]
	lsls r1, 9
	adds r0, 0x1
	adds r1, r0
	ldrb r0, [r1]
	cmp r0, 0x3
	bne _0803C760
	ldr r0, =gUnknown_082DAAFE
	bl b_call_bc_move_exec
	ldr r1, =gBattleCommunication
	ldrb r0, [r4]
	adds r0, r1
	b _0803CC20
	.pool
_0803C760:
	bl sub_803BB88
	lsls r0, 24
	cmp r0, 0
	beq _0803C7C4
	ldr r0, =gBattleBufferB
	ldr r4, =gActiveBank
	ldrb r2, [r4]
	lsls r1, r2, 9
	adds r0, 0x1
	adds r1, r0
	ldrb r0, [r1]
	cmp r0, 0x3
	bne _0803C7C4
	ldr r1, =gUnknown_02024220
	lsls r0, r2, 2
	adds r0, r1
	ldr r1, =gUnknown_082DAB0B
_0803C784:
	str r1, [r0]
	ldr r0, =gBattleCommunication
	ldrb r1, [r4]
	adds r1, r0
	movs r3, 0
	movs r0, 0x6
	strb r0, [r1]
_0803C792:
	ldrb r1, [r4]
	ldr r2, =gBattleStruct
	ldr r0, [r2]
	adds r1, r0
	adds r1, 0x54
	strb r3, [r1]
	ldrb r1, [r4]
_0803C7A0:
	ldr r0, [r2]
	adds r1, r0
	adds r1, 0x84
	movs r0, 0x1
	strb r0, [r1]
	b _0803CD70
	.pool
_0803C7C4:
	ldr r2, =gBattleCommunication
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	adds r1, r2
	b _0803CB74
	.pool
_0803C7D8:
	ldr r4, =gBattleExecBuffer
	ldr r1, =gBitTable
	ldr r3, =gActiveBank
	ldrb r5, [r3]
	lsls r0, r5, 2
	adds r0, r1
	ldr r2, [r0]
	lsls r0, r2, 4
	movs r1, 0xF0
	lsls r1, 24
	orrs r0, r1
	orrs r0, r2
	lsls r1, r2, 8
	orrs r0, r1
	lsls r2, 12
	orrs r0, r2
	ldr r1, [r4]
	ands r1, r0
	adds r4, r3, 0
	cmp r1, 0
	beq _0803C804
	b _0803CD04
_0803C804:
	ldr r1, =gUnknown_0202421C
	adds r0, r5, r1
	ldrb r0, [r0]
	adds r2, r1, 0
	cmp r0, 0x9
	bls _0803C812
	b _0803CD04
_0803C812:
	lsls r0, 2
	ldr r1, =_0803C830
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_0803C830:
	.4byte _0803C858
	.4byte _0803C99C
	.4byte _0803C9D4
	.4byte _0803CA0A
	.4byte _0803CA2C
	.4byte _0803CA40
	.4byte _0803CA54
	.4byte _0803CA84
	.4byte _0803CA98
	.4byte _0803CABC
_0803C858:
	ldr r1, =gBattleBufferB
	ldrb r3, [r4]
	lsls r0, r3, 9
	adds r1, 0x1
	adds r0, r1
	ldrb r1, [r0]
	cmp r1, 0x3
	blt _0803C88A
	cmp r1, 0x9
	ble _0803C878
	cmp r1, 0xF
	beq _0803C87E
	b _0803C88A
	.pool
_0803C878:
	adds r0, r3, r2
	strb r1, [r0]
	b _0803CD70
_0803C87E:
	adds r1, r3, r2
	movs r0, 0x2
	strb r0, [r1]
	bl sub_803CDF8
	b _0803CD70
_0803C88A:
	movs r0, 0x2
	bl sub_818603C
	ldr r4, =gBattleBufferB
	ldr r6, =gActiveBank
	ldrb r3, [r6]
	lsls r1, r3, 9
	adds r5, r4, 0x2
	adds r0, r1, r5
	ldrb r2, [r0]
	adds r7, r4, 0x3
	adds r1, r7
	ldrb r0, [r1]
	lsls r0, 8
	orrs r2, r0
	ldr r0, =0x0000ffff
	cmp r2, r0
	bne _0803C8D0
	ldr r0, =gBattleCommunication
	adds r0, r3, r0
	movs r1, 0x1
	strb r1, [r0]
	ldrb r0, [r6]
	bl sub_8185008
	b _0803CD04
	.pool
_0803C8D0:
	bl sub_803FB4C
	lsls r0, 24
	cmp r0, 0
	beq _0803C91C
	ldrb r0, [r6]
	movs r1, 0x1
	bl sub_8185008
	ldr r0, =gBattleCommunication
	ldrb r1, [r6]
	adds r1, r0
	movs r3, 0
	movs r0, 0x6
	strb r0, [r1]
	ldrb r1, [r6]
	ldr r2, =gBattleStruct
	ldr r0, [r2]
	adds r1, r0
	adds r1, 0x54
	strb r3, [r1]
	ldrb r0, [r6]
	lsls r0, 9
	adds r1, r4, 0x1
	adds r0, r1
	strb r3, [r0]
	ldrb r1, [r6]
	ldr r0, [r2]
	adds r1, r0
	adds r1, 0x84
	movs r0, 0x2
	strb r0, [r1]
	b _0803CD70
	.pool
_0803C91C:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 10
	ands r0, r1
	cmp r0, 0
	bne _0803C942
	ldrb r0, [r6]
	lsls r1, r0, 9
	adds r1, r5
	ldrb r1, [r1]
	bl sub_8184FBC
	ldrb r0, [r6]
	lsls r1, r0, 9
	adds r1, r7
	ldrb r1, [r1]
	bl sub_8184FBC
_0803C942:
	ldrb r0, [r6]
	ldr r4, =gBattleStruct
	ldr r1, [r4]
	adds r1, r0, r1
	adds r1, 0x80
	lsls r0, 9
	adds r0, r5
	ldrb r0, [r0]
	strb r0, [r1]
	ldr r0, =gChosenMovesByBanks
	ldrb r2, [r6]
	lsls r5, r2, 1
	adds r5, r0
	ldr r3, =gBattleMons
	ldr r4, [r4]
	adds r0, r2, r4
	adds r0, 0x80
	ldrb r0, [r0]
	lsls r0, 1
	movs r1, 0x58
	muls r1, r2
	adds r0, r1
	adds r3, 0xC
	adds r0, r3
	ldrh r0, [r0]
	strh r0, [r5]
	ldrb r0, [r6]
	adds r4, r0, r4
	lsls r0, 9
	adds r0, r7
	ldrb r0, [r0]
	strb r0, [r4, 0xC]
	ldr r0, =gBattleCommunication
	ldrb r1, [r6]
	b _0803CB72
	.pool
_0803C99C:
	ldr r2, =gBattleBufferB
	ldr r5, =gActiveBank
	ldrb r4, [r5]
	lsls r1, r4, 9
	adds r0, r2, 0x1
	adds r0, r1, r0
	ldrb r3, [r0]
	adds r2, 0x2
	adds r1, r2
	ldrb r0, [r1]
	lsls r0, 8
	orrs r3, r0
	cmp r3, 0
	bne _0803C9BA
	b _0803CC1C
_0803C9BA:
	ldr r0, =gLastUsedItem
	strh r3, [r0]
	ldr r0, =gBattleCommunication
	ldrb r1, [r5]
	b _0803CB72
	.pool
_0803C9D4:
	ldr r0, =gBattleBufferB
	ldr r4, =gActiveBank
	ldrb r2, [r4]
	lsls r1, r2, 9
	adds r0, 0x1
	adds r1, r0
	ldrb r0, [r1]
	cmp r0, 0x6
	bne _0803CA04
	ldr r0, =gBattleCommunication
	adds r0, r2, r0
	movs r1, 0x1
	strb r1, [r0]
	ldrb r0, [r4]
	bl sub_8185008
	b _0803CD04
	.pool
_0803CA04:
	bl sub_803CDF8
	b _0803CB6E
_0803CA0A:
	ldr r2, =gHitMarker
	ldr r0, [r2]
	movs r1, 0x80
	lsls r1, 8
	orrs r0, r1
	str r0, [r2]
	ldr r2, =gBattleCommunication
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	adds r1, r2
	b _0803CB74
	.pool
_0803CA2C:
	ldr r2, =gBattleCommunication
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	adds r1, r2
	b _0803CB74
	.pool
_0803CA40:
	ldr r2, =gBattleCommunication
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	adds r1, r2
	b _0803CB74
	.pool
_0803CA54:
	ldr r3, =gBattleBufferB
	ldr r0, =gActiveBank
	ldrb r4, [r0]
	lsls r1, r4, 9
	adds r0, r3, 0x1
	adds r0, r1, r0
	ldrb r2, [r0]
	adds r3, 0x2
	adds r1, r3
	ldrb r0, [r1]
	lsls r0, 8
	orrs r2, r0
	cmp r2, 0
	bne _0803CA72
	b _0803CC1C
_0803CA72:
	ldr r1, =gBattleCommunication
	adds r1, r4, r1
	b _0803CB74
	.pool
_0803CA84:
	ldr r2, =gBattleCommunication
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	adds r1, r2
	b _0803CB74
	.pool
_0803CA98:
	ldr r2, =gHitMarker
	ldr r0, [r2]
	movs r1, 0x80
	lsls r1, 8
	orrs r0, r1
	str r0, [r2]
	ldr r2, =gBattleCommunication
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	adds r1, r2
	b _0803CB74
	.pool
_0803CABC:
	ldr r2, =gBattleCommunication
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	adds r1, r2
	b _0803CB74
	.pool
_0803CAD0:
	ldr r3, =gBattleExecBuffer
	ldr r6, =gBitTable
	ldr r0, =gActiveBank
	ldrb r0, [r0]
	lsls r0, 2
	adds r0, r6
	ldr r2, [r0]
	lsls r1, r2, 4
	movs r0, 0xF0
	lsls r0, 24
	orrs r1, r0
	orrs r1, r2
	lsls r0, r2, 8
	orrs r1, r0
	lsls r2, 12
	orrs r1, r2
	ldr r0, [r3]
	ands r0, r1
	cmp r0, 0
	beq _0803CAFA
	b _0803CD04
_0803CAFA:
	bl sub_803CDB8
	lsls r0, 24
	lsrs r0, 24
	negs r1, r0
	orrs r1, r0
	lsrs r4, r1, 31
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x41
	ands r0, r1
	cmp r0, 0x1
	bne _0803CB3C
	movs r1, 0x2
	movs r0, 0x2
	ands r0, r5
	cmp r0, 0
	bne _0803CB3C
	adds r0, r5, 0
	eors r0, r1
	bl GetBankByPlayerAI
	ldr r1, =gBattleStruct
	ldr r1, [r1]
	adds r1, 0x91
	ldrb r1, [r1]
	lsls r0, 24
	lsrs r0, 22
	adds r0, r6
	ldr r0, [r0]
	ands r1, r0
	cmp r1, 0
	beq _0803CB5C
_0803CB3C:
	movs r0, 0
	movs r1, 0
	adds r2, r4, 0
	bl sub_8034464
	b _0803CB66
	.pool
_0803CB5C:
	movs r0, 0
	movs r1, 0x1
	adds r2, r4, 0
	bl sub_8034464
_0803CB66:
	ldr r4, =gActiveBank
_0803CB68:
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
_0803CB6E:
	ldr r0, =gBattleCommunication
	ldrb r1, [r4]
_0803CB72:
	adds r1, r0
_0803CB74:
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	b _0803CD04
	.pool
_0803CB84:
	ldr r3, =gBattleExecBuffer
	ldr r1, =gBitTable
	ldr r0, =gActiveBank
	ldrb r0, [r0]
	lsls r0, 2
	adds r0, r1
	ldr r2, [r0]
	lsls r1, r2, 4
	movs r0, 0xF0
	lsls r0, 24
	orrs r1, r0
	orrs r1, r2
	lsls r0, r2, 8
	orrs r1, r0
	lsls r2, 12
	orrs r1, r2
	ldr r0, [r3]
	ands r0, r1
	cmp r0, 0
	beq _0803CBAE
	b _0803CD04
_0803CBAE:
	ldr r1, =gBattleCommunication
	ldrb r0, [r1, 0x4]
	adds r0, 0x1
	strb r0, [r1, 0x4]
	b _0803CD04
	.pool
_0803CBC8:
	ldr r5, =gActiveBank
	ldrb r2, [r5]
	ldr r0, =gBattleStruct
	ldr r0, [r0]
	adds r1, r2, r0
	adds r0, r1, 0
	adds r0, 0x54
	ldrb r0, [r0]
	cmp r0, 0
	beq _0803CCB4
	ldr r0, =gBattleCommunication
	adds r0, r2, r0
	adds r1, 0x84
	ldrb r1, [r1]
	strb r1, [r0]
	b _0803CD04
	.pool
_0803CBF4:
	ldr r3, =gBattleExecBuffer
	ldr r1, =gBitTable
	ldr r0, =gActiveBank
	ldrb r4, [r0]
	lsls r0, r4, 2
	adds r0, r1
	ldr r2, [r0]
	lsls r1, r2, 4
	movs r0, 0xF0
	lsls r0, 24
	orrs r1, r0
	orrs r1, r2
	lsls r0, r2, 8
	orrs r1, r0
	lsls r2, 12
	orrs r1, r2
	ldr r0, [r3]
	ands r0, r1
	cmp r0, 0
	bne _0803CD04
_0803CC1C:
	ldr r0, =gBattleCommunication
	adds r0, r4, r0
_0803CC20:
	movs r1, 0x1
	strb r1, [r0]
	b _0803CD04
	.pool
_0803CC38:
	ldr r5, =gActiveBank
	ldrb r2, [r5]
	ldr r4, =gBattleStruct
	ldr r0, [r4]
	adds r0, r2, r0
	adds r0, 0x54
	ldrb r0, [r0]
	cmp r0, 0
	beq _0803CCB4
	ldr r0, =gBattleBufferB
	lsls r1, r2, 9
	adds r0, 0x1
	adds r1, r0
	ldrb r0, [r1]
	cmp r0, 0xD
	bne _0803CC94
	ldr r2, =gHitMarker
	ldr r0, [r2]
	movs r1, 0x80
	lsls r1, 8
	orrs r0, r1
	str r0, [r2]
	ldr r1, =gUnknown_0202421C
	ldrb r0, [r5]
	adds r0, r1
	movs r1, 0x3
	strb r1, [r0]
	ldr r1, =gBattleCommunication
	ldrb r0, [r5]
_0803CC72:
	adds r0, r1
	movs r1, 0x4
	strb r1, [r0]
	b _0803CD04
	.pool
_0803CC94:
	adds r0, r2, 0
	movs r1, 0x1
	bl sub_8185008
	ldr r2, =gBattleCommunication
	ldrb r0, [r5]
	adds r2, r0, r2
	ldr r1, [r4]
	adds r0, r1
	adds r0, 0x84
	ldrb r0, [r0]
	strb r0, [r2]
	b _0803CD04
	.pool
_0803CCB4:
	ldr r0, =gBankAttacker
	strb r2, [r0]
	ldr r7, =gBattlescriptCurrInstr
	ldr r6, =gUnknown_02024220
	ldrb r0, [r5]
	lsls r0, 2
	adds r0, r6
	ldr r4, [r0]
	str r4, [r7]
	ldr r3, =gBattleExecBuffer
	ldr r1, =gBitTable
	ldrb r0, [r5]
	lsls r0, 2
	adds r0, r1
	ldr r2, [r0]
	lsls r1, r2, 4
	movs r0, 0xF0
	lsls r0, 24
	orrs r1, r0
	orrs r1, r2
	lsls r0, r2, 8
	orrs r1, r0
	lsls r2, 12
	orrs r1, r2
	ldr r0, [r3]
	ands r0, r1
	cmp r0, 0
	bne _0803CCFA
	ldr r0, =gBattleScriptingCommandsTable
	ldrb r1, [r4]
	lsls r1, 2
	adds r1, r0
	ldr r0, [r1]
	bl _call_via_r0
_0803CCFA:
	ldrb r0, [r5]
	lsls r0, 2
	adds r0, r6
	ldr r1, [r7]
	str r1, [r0]
_0803CD04:
	ldr r0, =gActiveBank
	ldrb r1, [r0]
	adds r1, 0x1
	strb r1, [r0]
	ldr r0, =gNoOfAllBanks
	lsls r1, 24
	lsrs r1, 24
_0803CD12:
	adds r5, r0, 0
	ldrb r0, [r5]
	cmp r1, r0
	bcs _0803CD1E
	bl _0803BE9C
_0803CD1E:
	ldr r0, =gBattleCommunication
	ldrb r0, [r0, 0x4]
	ldrb r1, [r5]
	cmp r0, r1
	bne _0803CD70
	movs r0, 0x1
	bl sub_818603C
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803D2E8
	str r0, [r1]
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 15
	ands r0, r1
	cmp r0, 0
	beq _0803CD70
	movs r4, 0
	ldrb r5, [r5]
	cmp r4, r5
	bge _0803CD70
_0803CD4A:
	ldr r0, =gUnknown_0202421C
	adds r0, r4, r0
	ldrb r0, [r0]
	cmp r0, 0x2
	bne _0803CD66
	lsls r0, r4, 24
	lsrs r0, 24
	ldr r1, =gBattleStruct
	ldr r1, [r1]
	adds r1, r4, r1
	adds r1, 0x5C
	ldrb r1, [r1]
	bl sub_80571DC
_0803CD66:
	adds r4, 0x1
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r4, r0
	blt _0803CD4A
_0803CD70:
	add sp, 0x1C
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803BE74

	thumb_func_start sub_803CDB8
sub_803CDB8: @ 803CDB8
	push {r4,r5,lr}
	movs r3, 0
	movs r1, 0
	ldr r0, =gNoOfAllBanks
	ldrb r2, [r0]
	adds r5, r0, 0
	cmp r3, r2
	bge _0803CDDA
	ldr r4, =gBattleCommunication
_0803CDCA:
	adds r0, r1, r4
	ldrb r0, [r0]
	cmp r0, 0x5
	bne _0803CDD4
	adds r3, 0x1
_0803CDD4:
	adds r1, 0x1
	cmp r1, r2
	blt _0803CDCA
_0803CDDA:
	adds r0, r3, 0x1
	ldrb r5, [r5]
	cmp r0, r5
	beq _0803CDF0
	movs r0, 0
	b _0803CDF2
	.pool
_0803CDF0:
	movs r0, 0x1
_0803CDF2:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_803CDB8

	thumb_func_start sub_803CDF8
sub_803CDF8: @ 803CDF8
	push {r4-r7,lr}
	ldr r7, =gActiveBank
	ldrb r0, [r7]
	ldr r6, =gBattleStruct
	ldr r1, [r6]
	adds r1, r0, r1
	adds r1, 0x5C
	ldr r4, =gBattleBufferB
	lsls r0, 9
	adds r2, r4, 0x1
	adds r0, r2
	ldrb r0, [r0]
	strb r0, [r1]
	ldrb r0, [r7]
	lsls r1, r0, 9
	adds r1, r2
	ldrb r1, [r1]
	bl sub_8184FBC
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x42
	ands r0, r1
	cmp r0, 0x42
	bne _0803CEC6
	ldrb r0, [r7]
	ldr r2, [r6]
	lsls r1, r0, 1
	adds r1, r0
	adds r1, r2
	adds r1, 0x60
	ldrb r2, [r1]
	movs r0, 0xF
	ands r0, r2
	strb r0, [r1]
	ldrb r0, [r7]
	ldr r2, [r6]
	lsls r1, r0, 1
	adds r1, r0
	adds r1, r2
	adds r1, 0x60
	lsls r0, 9
	adds r5, r4, 0x2
	adds r0, r5
	ldrb r2, [r0]
	movs r3, 0xF0
	adds r0, r3, 0
	ands r0, r2
	ldrb r2, [r1]
	orrs r0, r2
	strb r0, [r1]
	ldrb r1, [r7]
	ldr r2, [r6]
	lsls r0, r1, 1
	adds r0, r1
	adds r0, r2
	adds r0, 0x61
	lsls r1, 9
	adds r4, 0x3
	mov r12, r4
	add r1, r12
	ldrb r1, [r1]
	strb r1, [r0]
	ldrb r0, [r7]
	movs r4, 0x2
	eors r0, r4
	ldr r2, [r6]
	lsls r1, r0, 1
	adds r1, r0
	adds r1, r2
	adds r1, 0x60
	ldrb r2, [r1]
	adds r0, r3, 0
	ands r0, r2
	strb r0, [r1]
	ldrb r0, [r7]
	eors r0, r4
	ldr r2, [r6]
	lsls r1, r0, 1
	adds r1, r0
	adds r1, r2
	adds r1, 0x60
	ldrb r0, [r7]
	lsls r0, 9
	adds r0, r5
	ldrb r0, [r0]
	ands r3, r0
	lsrs r3, 4
	ldrb r0, [r1]
	orrs r3, r0
	strb r3, [r1]
	ldrb r0, [r7]
	eors r4, r0
	ldr r0, [r6]
	lsls r1, r4, 1
	adds r1, r4
	adds r1, r0
	adds r1, 0x62
	ldrb r0, [r7]
	lsls r0, 9
	add r0, r12
	ldrb r0, [r0]
	strb r0, [r1]
_0803CEC6:
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803CDF8

	thumb_func_start sub_803CEDC
sub_803CEDC: @ 803CEDC
	push {r4,r5,lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	ldr r2, =gUnknown_0202407A
	adds r4, r0, r2
	ldrb r5, [r4]
	adds r2, r1, r2
	ldrb r3, [r2]
	strb r3, [r4]
	strb r5, [r2]
	ldr r2, =gTurnOrder
	adds r0, r2
	ldrb r5, [r0]
	adds r1, r2
	ldrb r2, [r1]
	strb r2, [r0]
	strb r5, [r1]
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803CEDC

	thumb_func_start b_first_side
b_first_side: @ 803CF10
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0xC
	lsls r0, 24
	lsrs r0, 24
	mov r9, r0
	lsls r1, 24
	lsrs r1, 24
	mov r10, r1
	lsls r2, 24
	lsrs r2, 24
	str r2, [sp, 0x4]
	movs r0, 0
	str r0, [sp, 0x8]
	str r0, [sp]
	movs r0, 0x13
	movs r1, 0
	movs r2, 0xD
	movs r3, 0
	bl AbilityBattleEffects
	lsls r0, 24
	cmp r0, 0
	bne _0803CFD8
	ldr r1, [sp, 0x8]
	str r1, [sp]
	movs r0, 0x13
	movs r1, 0
	movs r2, 0x4D
	movs r3, 0
	bl AbilityBattleEffects
	lsls r0, 24
	cmp r0, 0
	bne _0803CFD8
	ldr r1, =gBattleMons
	movs r0, 0x58
	mov r2, r9
	muls r2, r0
	adds r0, r2, 0
	adds r0, r1
	adds r0, 0x20
	ldrb r3, [r0]
	cmp r3, 0x21
	bne _0803CF7C
	ldr r0, =gBattleWeather
	ldrh r1, [r0]
	movs r0, 0x7
	ands r0, r1
	cmp r0, 0
	bne _0803CF8C
_0803CF7C:
	cmp r3, 0x22
	bne _0803CF98
	ldr r0, =gBattleWeather
	ldrh r1, [r0]
	movs r0, 0x60
	ands r0, r1
	cmp r0, 0
	beq _0803CF98
_0803CF8C:
	movs r3, 0x2
	b _0803CF9A
	.pool
_0803CF98:
	movs r3, 0x1
_0803CF9A:
	movs r0, 0x58
	mov r1, r10
	muls r1, r0
	adds r0, r1, 0
	ldr r2, =gBattleMons
	adds r0, r2
	adds r0, 0x20
	ldrb r2, [r0]
	cmp r2, 0x21
	bne _0803CFBA
	ldr r0, =gBattleWeather
	ldrh r1, [r0]
	movs r0, 0x7
	ands r0, r1
	cmp r0, 0
	bne _0803CFCA
_0803CFBA:
	cmp r2, 0x22
	bne _0803CFDA
	ldr r0, =gBattleWeather
	ldrh r1, [r0]
	movs r0, 0x60
	ands r0, r1
	cmp r0, 0
	beq _0803CFDA
_0803CFCA:
	movs r7, 0x2
	b _0803CFDC
	.pool
_0803CFD8:
	movs r3, 0x1
_0803CFDA:
	movs r7, 0x1
_0803CFDC:
	ldr r1, =gBattleMons
	movs r0, 0x58
	mov r2, r9
	muls r2, r0
	adds r0, r2, 0
	adds r4, r0, r1
	ldrh r0, [r4, 0x6]
	muls r3, r0
	ldr r2, =gStatStageRatios
	movs r1, 0x1B
	ldrsb r1, [r4, r1]
	lsls r1, 1
	adds r0, r1, r2
	ldrb r0, [r0]
	muls r0, r3
	adds r2, 0x1
	adds r1, r2
	ldrb r1, [r1]
	bl __divsi3
	mov r8, r0
	ldrh r0, [r4, 0x2E]
	cmp r0, 0xAF
	bne _0803D02C
	ldr r1, =gEnigmaBerries
	mov r3, r9
	lsls r0, r3, 3
	subs r0, r3
	lsls r0, 2
	adds r0, r1
	ldrb r6, [r0, 0x7]
	ldrb r5, [r0, 0x1A]
	b _0803D040
	.pool
_0803D02C:
	ldrh r0, [r4, 0x2E]
	bl ItemId_GetHoldEffect
	lsls r0, 24
	lsrs r6, r0, 24
	ldrh r0, [r4, 0x2E]
	bl ItemId_GetHoldEffectParam
	lsls r0, 24
	lsrs r5, r0, 24
_0803D040:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	ldr r1, =0x023f0102
	ands r0, r1
	cmp r0, 0
	bne _0803D074
	ldr r0, =0x00000869
	bl FlagGet
	lsls r0, 24
	cmp r0, 0
	beq _0803D074
	mov r0, r9
	bl GetBankSide
	lsls r0, 24
	cmp r0, 0
	bne _0803D074
	movs r0, 0x6E
	mov r1, r8
	muls r1, r0
	adds r0, r1, 0
	movs r1, 0x64
	bl __udivsi3
	mov r8, r0
_0803D074:
	cmp r6, 0x18
	bne _0803D07E
	mov r2, r8
	lsrs r2, 1
	mov r8, r2
_0803D07E:
	ldr r1, =gBattleMons
	movs r0, 0x58
	mov r3, r9
	muls r3, r0
	adds r0, r3, 0
	adds r1, 0x4C
	adds r0, r1
	ldr r0, [r0]
	movs r1, 0x40
	ands r0, r1
	cmp r0, 0
	beq _0803D09C
	mov r0, r8
	lsrs r0, 2
	mov r8, r0
_0803D09C:
	cmp r6, 0x1A
	bne _0803D0B8
	ldr r0, =gUnknown_02024330
	ldrh r4, [r0]
	lsls r0, r5, 16
	subs r0, r5
	movs r1, 0x64
	bl __divsi3
	cmp r4, r0
	bge _0803D0B8
	movs r1, 0x1
	negs r1, r1
	mov r8, r1
_0803D0B8:
	ldr r1, =gBattleMons
	movs r0, 0x58
	mov r2, r10
	muls r2, r0
	adds r0, r2, 0
	adds r4, r0, r1
	ldrh r0, [r4, 0x6]
	adds r3, r0, 0
	muls r3, r7
	ldr r2, =gStatStageRatios
	movs r1, 0x1B
	ldrsb r1, [r4, r1]
	lsls r1, 1
	adds r0, r1, r2
	ldrb r0, [r0]
	muls r0, r3
	adds r2, 0x1
	adds r1, r2
	ldrb r1, [r1]
	bl __divsi3
	adds r7, r0, 0
	ldrh r0, [r4, 0x2E]
	cmp r0, 0xAF
	bne _0803D118
	ldr r1, =gEnigmaBerries
	mov r3, r10
	lsls r0, r3, 3
	subs r0, r3
	lsls r0, 2
	adds r0, r1
	ldrb r6, [r0, 0x7]
	ldrb r5, [r0, 0x1A]
	b _0803D12C
	.pool
_0803D118:
	ldrh r0, [r4, 0x2E]
	bl ItemId_GetHoldEffect
	lsls r0, 24
	lsrs r6, r0, 24
	ldrh r0, [r4, 0x2E]
	bl ItemId_GetHoldEffectParam
	lsls r0, 24
	lsrs r5, r0, 24
_0803D12C:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	ldr r1, =0x023f0102
	ands r0, r1
	cmp r0, 0
	bne _0803D15C
	ldr r0, =0x00000869
	bl FlagGet
	lsls r0, 24
	cmp r0, 0
	beq _0803D15C
	mov r0, r10
	bl GetBankSide
	lsls r0, 24
	cmp r0, 0
	bne _0803D15C
	movs r0, 0x6E
	muls r0, r7
	movs r1, 0x64
	bl __udivsi3
	adds r7, r0, 0
_0803D15C:
	cmp r6, 0x18
	bne _0803D162
	lsrs r7, 1
_0803D162:
	ldr r2, =gBattleMons
	movs r0, 0x58
	mov r1, r10
	muls r1, r0
	adds r0, r1, 0
	adds r1, r2, 0
	adds r1, 0x4C
	adds r0, r1
	ldr r0, [r0]
	movs r1, 0x40
	ands r0, r1
	cmp r0, 0
	beq _0803D17E
	lsrs r7, 2
_0803D17E:
	cmp r6, 0x1A
	bne _0803D198
	ldr r0, =gUnknown_02024330
	ldrh r4, [r0]
	lsls r0, r5, 16
	subs r0, r5
	movs r1, 0x64
	bl __divsi3
	cmp r4, r0
	bge _0803D198
	movs r7, 0x1
	negs r7, r7
_0803D198:
	ldr r2, [sp, 0x4]
	cmp r2, 0
	beq _0803D1B8
	movs r3, 0
	b _0803D254
	.pool
_0803D1B8:
	ldr r0, =gUnknown_0202421C
	mov r3, r9
	adds r1, r3, r0
	ldrb r1, [r1]
	adds r2, r0, 0
	cmp r1, 0
	bne _0803D208
	ldr r0, =gProtectStructs
	lsls r1, r3, 4
	adds r1, r0
	ldrb r0, [r1]
	lsls r0, 29
	cmp r0, 0
	bge _0803D1E0
	movs r3, 0xA5
	b _0803D20A
	.pool
_0803D1E0:
	ldr r0, =gBattleStruct
	ldr r0, [r0]
	add r0, r9
	adds r0, 0x80
	ldrb r0, [r0]
	lsls r0, 1
	movs r1, 0x58
	mov r3, r9
	muls r3, r1
	adds r1, r3, 0
	adds r0, r1
	ldr r1, =gBattleMons
	adds r1, 0xC
	adds r0, r1
	ldrh r3, [r0]
	b _0803D20A
	.pool
_0803D208:
	movs r3, 0
_0803D20A:
	mov r1, r10
	adds r0, r1, r2
	ldrb r0, [r0]
	cmp r0, 0
	bne _0803D254
	ldr r0, =gProtectStructs
	lsls r1, 4
	adds r1, r0
	ldrb r0, [r1]
	lsls r0, 29
	cmp r0, 0
	bge _0803D22C
	movs r2, 0xA5
	b _0803D256
	.pool
_0803D22C:
	ldr r0, =gBattleStruct
	ldr r0, [r0]
	add r0, r10
	adds r0, 0x80
	ldrb r0, [r0]
	lsls r0, 1
	movs r1, 0x58
	mov r2, r10
	muls r2, r1
	adds r1, r2, 0
	adds r0, r1
	ldr r1, =gBattleMons
	adds r1, 0xC
	adds r0, r1
	ldrh r2, [r0]
	b _0803D256
	.pool
_0803D254:
	movs r2, 0
_0803D256:
	ldr r4, =gBattleMoves
	lsls r0, r3, 1
	adds r0, r3
	lsls r0, 2
	adds r0, r4
	movs r1, 0x7
	ldrsb r1, [r0, r1]
	lsls r3, r2, 1
	cmp r1, 0
	bne _0803D27A
	adds r0, r3, r2
	lsls r0, 2
	adds r0, r4
	ldrb r0, [r0, 0x7]
	lsls r0, 24
	asrs r0, 24
	cmp r0, 0
	beq _0803D2B8
_0803D27A:
	adds r0, r3, r2
	lsls r0, 2
	adds r0, r4
	ldrb r0, [r0, 0x7]
	lsls r0, 24
	asrs r0, 24
	cmp r1, r0
	bne _0803D2AE
	cmp r8, r7
	bne _0803D2A4
	bl Random
	movs r1, 0x1
	ands r1, r0
	cmp r1, 0
	beq _0803D2A4
	movs r3, 0x2
	b _0803D2D4
	.pool
_0803D2A4:
	cmp r8, r7
	bcs _0803D2D6
	movs r0, 0x1
	str r0, [sp, 0x8]
	b _0803D2D6
_0803D2AE:
	cmp r1, r0
	bge _0803D2D6
	movs r1, 0x1
	str r1, [sp, 0x8]
	b _0803D2D6
_0803D2B8:
	cmp r8, r7
	bne _0803D2CE
	bl Random
	movs r1, 0x1
	ands r1, r0
	cmp r1, 0
	beq _0803D2CE
	movs r2, 0x2
	str r2, [sp, 0x8]
	b _0803D2D6
_0803D2CE:
	cmp r8, r7
	bcs _0803D2D6
	movs r3, 0x1
_0803D2D4:
	str r3, [sp, 0x8]
_0803D2D6:
	ldr r0, [sp, 0x8]
	add sp, 0xC
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end b_first_side

	thumb_func_start sub_803D2E8
sub_803D2E8: @ 803D2E8
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	movs r3, 0
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0803D354
	ldr r0, =gActiveBank
	strb r3, [r0]
	ldr r4, =gNoOfAllBanks
	mov r8, r0
	ldrb r0, [r4]
	cmp r3, r0
	bcc _0803D310
	b _0803D54A
_0803D310:
	ldr r7, =gUnknown_0202407A
	ldr r6, =gUnknown_0202421C
	mov r2, r8
	ldr r5, =gTurnOrder
_0803D318:
	adds r1, r3, r7
	ldrb r0, [r2]
	adds r0, r6
	ldrb r0, [r0]
	strb r0, [r1]
	adds r1, r3, r5
	ldrb r0, [r2]
	strb r0, [r1]
	adds r3, 0x1
	ldrb r0, [r2]
	adds r0, 0x1
	strb r0, [r2]
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r4]
	cmp r0, r1
	bcc _0803D318
	b _0803D54A
	.pool
_0803D354:
	movs r2, 0x2
	ands r1, r2
	cmp r1, 0
	beq _0803D3A4
	ldr r0, =gActiveBank
	strb r3, [r0]
	ldr r1, =gNoOfAllBanks
	mov r8, r0
	adds r2, r1, 0
	ldrb r2, [r2]
	cmp r3, r2
	bcs _0803D3C0
	ldr r0, =gUnknown_0202421C
	ldrb r1, [r0]
	adds r4, r0, 0
	cmp r1, 0x3
	beq _0803D3BE
_0803D376:
	mov r7, r8
	ldrb r0, [r7]
	adds r0, 0x1
	strb r0, [r7]
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gNoOfAllBanks
	ldrb r1, [r1]
	cmp r0, r1
	bcs _0803D3C0
	ldrb r0, [r7]
	adds r0, r4
	ldrb r0, [r0]
	cmp r0, 0x3
	bne _0803D376
	b _0803D3BE
	.pool
_0803D3A4:
	ldr r1, =gUnknown_0202421C
	ldrb r0, [r1]
	ldr r4, =gActiveBank
	mov r8, r4
	cmp r0, 0x3
	bne _0803D3B4
	strb r3, [r4]
	movs r3, 0x5
_0803D3B4:
	ldrb r0, [r1, 0x2]
	cmp r0, 0x3
	bne _0803D3C0
	mov r7, r8
	strb r2, [r7]
_0803D3BE:
	movs r3, 0x5
_0803D3C0:
	cmp r3, 0x5
	bne _0803D448
	ldr r6, =gUnknown_0202407A
	ldr r1, =gUnknown_0202421C
	mov r2, r8
	ldrb r0, [r2]
	adds r0, r1
	ldrb r0, [r0]
	strb r0, [r6]
	ldr r2, =gTurnOrder
	mov r3, r8
	ldrb r0, [r3]
	strb r0, [r2]
	movs r3, 0x1
	movs r5, 0
	adds r4, r1, 0
	ldr r7, =gBattleMainFunc
	mov r10, r7
	ldr r0, =bc_80154A0
	mov r12, r0
	ldr r1, =gBattleStruct
	mov r9, r1
	ldr r7, =gNoOfAllBanks
	ldrb r7, [r7]
	cmp r5, r7
	bge _0803D41A
	adds r7, r6, 0
	adds r6, r4, 0
	adds r4, r2, 0
	ldr r2, =gNoOfAllBanks
_0803D3FC:
	mov r0, r8
	ldrb r0, [r0]
	cmp r5, r0
	beq _0803D412
	adds r1, r3, r7
	adds r0, r5, r6
	ldrb r0, [r0]
	strb r0, [r1]
	adds r0, r3, r4
	strb r5, [r0]
	adds r3, 0x1
_0803D412:
	adds r5, 0x1
	ldrb r1, [r2]
	cmp r5, r1
	blt _0803D3FC
_0803D41A:
	mov r2, r12
	mov r3, r10
	str r2, [r3]
	mov r4, r9
	ldr r0, [r4]
	b _0803D554
	.pool
_0803D448:
	movs r0, 0
	mov r7, r8
	strb r0, [r7]
	ldr r1, =gNoOfAllBanks
	ldrb r0, [r1]
	cmp r0, 0
	beq _0803D48E
	ldr r6, =gUnknown_0202421C
	mov r2, r8
	ldr r5, =gUnknown_0202407A
	ldr r4, =gTurnOrder
_0803D45E:
	ldrb r0, [r2]
	adds r0, r6
	ldrb r1, [r0]
	subs r0, r1, 0x1
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bhi _0803D47C
	adds r0, r3, r5
	strb r1, [r0]
	adds r1, r3, r4
	mov r7, r8
	ldrb r0, [r7]
	strb r0, [r1]
	adds r3, 0x1
_0803D47C:
	ldrb r0, [r2]
	adds r0, 0x1
	strb r0, [r2]
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gNoOfAllBanks
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803D45E
_0803D48E:
	movs r0, 0
	mov r2, r8
	strb r0, [r2]
	ldr r4, =gNoOfAllBanks
	ldrb r0, [r4]
	cmp r0, 0
	beq _0803D4D2
	ldr r6, =gUnknown_0202421C
	ldr r5, =gUnknown_0202407A
	ldr r4, =gTurnOrder
_0803D4A2:
	ldrb r0, [r2]
	adds r0, r6
	ldrb r1, [r0]
	subs r0, r1, 0x1
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bls _0803D4C0
	adds r0, r3, r5
	strb r1, [r0]
	adds r1, r3, r4
	mov r7, r8
	ldrb r0, [r7]
	strb r0, [r1]
	adds r3, 0x1
_0803D4C0:
	ldrb r0, [r2]
	adds r0, 0x1
	strb r0, [r2]
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gNoOfAllBanks
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803D4A2
_0803D4D2:
	movs r5, 0
	b _0803D540
	.pool
_0803D4E8:
	adds r4, r5, 0x1
	adds r7, r4, 0
	ldrb r1, [r1]
	cmp r7, r1
	bge _0803D53E
	ldr r6, =gUnknown_0202407A
	lsls r2, r5, 24
	mov r8, r2
_0803D4F8:
	ldr r0, =gTurnOrder
	adds r1, r5, r0
	ldrb r3, [r1]
	adds r0, r4, r0
	ldrb r1, [r0]
	adds r0, r5, r6
	ldrb r2, [r0]
	cmp r2, 0x1
	beq _0803D534
	adds r0, r4, r6
	ldrb r0, [r0]
	cmp r0, 0x1
	beq _0803D534
	cmp r2, 0x2
	beq _0803D534
	cmp r0, 0x2
	beq _0803D534
	adds r0, r3, 0
	movs r2, 0
	bl b_first_side
	lsls r0, 24
	cmp r0, 0
	beq _0803D534
	lsls r1, r4, 24
	lsrs r1, 24
	mov r3, r8
	lsrs r0, r3, 24
	bl sub_803CEDC
_0803D534:
	adds r4, 0x1
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r4, r0
	blt _0803D4F8
_0803D53E:
	adds r5, r7, 0
_0803D540:
	ldr r1, =gNoOfAllBanks
	ldrb r0, [r1]
	subs r0, 0x1
	cmp r5, r0
	blt _0803D4E8
_0803D54A:
	ldr r1, =gBattleMainFunc
	ldr r0, =bc_80154A0
	str r0, [r1]
	ldr r0, =gBattleStruct
	ldr r0, [r0]
_0803D554:
	adds r0, 0x48
	movs r1, 0
	strb r1, [r0]
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803D2E8

	thumb_func_start sub_803D580
sub_803D580: @ 803D580
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	lsls r0, 24
	lsrs r0, 24
	mov r9, r0
	ldr r1, =gActiveBank
	movs r0, 0
	strb r0, [r1]
	ldr r0, =gNoOfAllBanks
	ldrb r2, [r0]
	adds r5, r1, 0
	cmp r2, 0
	beq _0803D678
	ldr r7, =gProtectStructs
	adds r6, r5, 0
	ldr r0, =gBattleMons + 0x50
	mov r12, r0
	ldr r1, =gDisableStructs
	mov r8, r1
	mov r10, r8
_0803D5AE:
	mov r2, r9
	cmp r2, 0
	beq _0803D5EC
	ldrb r1, [r6]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1]
	movs r0, 0x2
	negs r0, r0
	ands r0, r2
	strb r0, [r1]
	ldrb r1, [r6]
	lsls r1, 4
	adds r1, r7
	ldrb r2, [r1]
	movs r0, 0x3
	negs r0, r0
	ands r0, r2
	strb r0, [r1]
	b _0803D648
	.pool
_0803D5EC:
	ldrb r0, [r6]
	lsls r0, 4
	adds r2, r0, r7
	movs r1, 0
	mov r4, r10
	movs r3, 0
_0803D5F8:
	adds r0, r2, r1
	strb r3, [r0]
	adds r1, 0x1
	cmp r1, 0xF
	bls _0803D5F8
	ldrb r1, [r5]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	adds r1, r0, r4
	ldrb r0, [r1, 0x16]
	cmp r0, 0
	beq _0803D616
	subs r0, 0x1
	strb r0, [r1, 0x16]
_0803D616:
	ldrb r1, [r5]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	adds r1, r0, r4
	ldrb r0, [r1, 0x19]
	cmp r0, 0
	beq _0803D648
	subs r0, 0x1
	strb r0, [r1, 0x19]
	ldrb r2, [r5]
	lsls r0, r2, 3
	subs r0, r2
	lsls r0, 2
	adds r0, r4
	ldrb r0, [r0, 0x19]
	cmp r0, 0
	bne _0803D648
	movs r0, 0x58
	muls r2, r0
	add r2, r12
	ldr r0, [r2]
	ldr r1, =0xffbfffff
	ands r0, r1
	str r0, [r2]
_0803D648:
	ldrb r2, [r5]
	lsls r0, r2, 3
	subs r0, r2
	lsls r0, 2
	add r0, r8
	ldrb r0, [r0, 0xA]
	cmp r0, 0
	bne _0803D666
	movs r0, 0x58
	muls r2, r0
	add r2, r12
	ldr r0, [r2]
	ldr r1, =0xfeffffff
	ands r0, r1
	str r0, [r2]
_0803D666:
	ldrb r0, [r5]
	adds r0, 0x1
	strb r0, [r5]
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gNoOfAllBanks
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803D5AE
_0803D678:
	movs r0, 0
	ldr r2, =gSideTimers
	strb r0, [r2, 0x8]
	strb r0, [r2, 0x14]
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803D580

	thumb_func_start sub_803D6A0
sub_803D6A0: @ 803D6A0
	push {r4-r6,lr}
	ldr r2, =gActiveBank
	movs r0, 0
	strb r0, [r2]
	ldr r0, =gNoOfAllBanks
	ldrb r1, [r0]
	adds r6, r0, 0
	cmp r1, 0
	beq _0803D6DE
	adds r3, r2, 0
	movs r4, 0
	ldr r5, =gSpecialStatuses
_0803D6B8:
	ldrb r1, [r3]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 2
	adds r2, r0, r5
	movs r1, 0
_0803D6C4:
	adds r0, r2, r1
	strb r4, [r0]
	adds r1, 0x1
	cmp r1, 0x13
	bls _0803D6C4
	ldrb r0, [r3]
	adds r0, 0x1
	strb r0, [r3]
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r6]
	cmp r0, r1
	bcc _0803D6B8
_0803D6DE:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803D6A0

	thumb_func_start bc_80154A0
bc_80154A0: @ 803D6F0
	push {r4-r7,lr}
	ldr r0, =gHitMarker
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 8
	ands r0, r1
	cmp r0, 0
	bne _0803D7AE
	ldr r2, =gBattleStruct
	ldr r0, [r2]
	adds r0, 0x48
	ldr r1, =gNoOfAllBanks
	ldrb r0, [r0]
	mov r12, r2
	adds r6, r1, 0
	ldrb r1, [r6]
	cmp r0, r1
	bcs _0803D7AE
	ldr r5, =gActiveBank
	ldr r4, =gBankAttacker
	movs r7, 0x84
	lsls r7, 1
_0803D71C:
	ldr r1, [r2]
	adds r1, 0x48
	ldrb r0, [r1]
	strb r0, [r4]
	strb r0, [r5]
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	ldr r1, =gChosenMovesByBanks
	ldrb r3, [r5]
	lsls r0, r3, 1
	adds r0, r1
	ldrh r0, [r0]
	cmp r0, r7
	bne _0803D7A0
	ldr r1, =gBattleMons
	movs r0, 0x58
	muls r0, r3
	adds r1, 0x4C
	adds r0, r1
	ldr r0, [r0]
	movs r1, 0x7
	ands r0, r1
	cmp r0, 0
	bne _0803D7A0
	ldr r2, =gDisableStructs
	ldrb r1, [r4]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r0, [r0, 0x18]
	lsls r0, 31
	cmp r0, 0
	bne _0803D7A0
	ldr r0, =gProtectStructs
	lsls r1, r3, 4
	adds r1, r0
	ldrb r0, [r1]
	lsls r0, 29
	cmp r0, 0
	blt _0803D7A0
	ldr r0, =gUnknown_082DB1FF
	bl b_call_bc_move_exec
	b _0803D7E8
	.pool
_0803D7A0:
	mov r2, r12
	ldr r0, [r2]
	adds r0, 0x48
	ldrb r0, [r0]
	ldrb r1, [r6]
	cmp r0, r1
	bcc _0803D71C
_0803D7AE:
	bl b_clear_atk_up_if_hit_flag_unless_enraged
	ldr r1, =gUnknown_02024082
	movs r0, 0
	strb r0, [r1]
	ldr r1, =gFightStateTracker
	ldr r0, =gUnknown_0202407A
	movs r3, 0
	ldrb r0, [r0]
	strb r0, [r1]
	ldr r0, =gDynamicBasePower
	movs r2, 0
	strh r3, [r0]
	ldr r0, =gBattleStruct
	ldr r0, [r0]
	strb r2, [r0, 0x13]
	ldr r1, =gBattleMainFunc
	ldr r0, =bc_bs_exec
	str r0, [r1]
	ldr r0, =gBattleCommunication
	strb r2, [r0, 0x3]
	strb r2, [r0, 0x4]
	ldr r0, =gBattleScripting
	strb r2, [r0, 0x16]
	ldr r0, =gBattleResources
	ldr r0, [r0]
	ldr r0, [r0, 0x8]
	adds r0, 0x20
	strb r2, [r0]
_0803D7E8:
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end bc_80154A0

	thumb_func_start bc_bs_exec
bc_bs_exec: @ 803D818
	push {r4-r6,lr}
	ldr r6, =gBattleOutcome
	ldrb r0, [r6]
	ldr r2, =gFightStateTracker
	cmp r0, 0
	beq _0803D828
	movs r0, 0xC
	strb r0, [r2]
_0803D828:
	ldr r5, =gBattleStruct
	ldr r0, [r5]
	adds r0, 0x4B
	ldr r4, =gUnknown_02024082
	ldrb r1, [r4]
	strb r1, [r0]
	ldr r1, =gUnknown_0831BC0C
	ldrb r0, [r2]
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	bl _call_via_r0
	ldr r0, =gNoOfAllBanks
	ldrb r1, [r4]
	ldrb r0, [r0]
	cmp r1, r0
	bcc _0803D894
	ldr r2, =gHitMarker
	ldr r0, [r2]
	ldr r1, =0xffefffff
	ands r0, r1
	str r0, [r2]
	ldr r3, =gBattleMainFunc
	ldr r2, =gUnknown_0831BC44
	ldrb r1, [r6]
	movs r0, 0x7F
	ands r0, r1
	lsls r0, 2
	adds r0, r2
	ldr r0, [r0]
	str r0, [r3]
	b _0803D8AC
	.pool
_0803D894:
	ldr r0, [r5]
	adds r0, 0x4B
	ldrb r0, [r0]
	cmp r0, r1
	beq _0803D8AC
	ldr r2, =gHitMarker
	ldr r0, [r2]
	ldr r1, =0xfffffdff
	ands r0, r1
	ldr r1, =0xfff7ffff
	ands r0, r1
	str r0, [r2]
_0803D8AC:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end bc_bs_exec

	thumb_func_start sub_803D8C0
sub_803D8C0: @ 803D8C0
	push {r4,lr}
	ldr r1, =gFightStateTracker
	movs r0, 0
	strb r0, [r1]
	ldr r1, =gBattleTypeFlags
	ldr r2, [r1]
	ldr r0, =0x02000002
	ands r0, r2
	cmp r0, 0
	beq _0803D920
	ldr r1, =gScriptResult
	ldr r4, =gBattleOutcome
	ldrb r0, [r4]
	strh r0, [r1]
	ldr r1, =gBattleTextBuff1
	ldrb r0, [r4]
	strb r0, [r1]
	movs r0, 0
	bl GetBankByPlayerAI
	ldr r1, =gBankAttacker
	strb r0, [r1]
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DAA35
	str r0, [r1]
	ldrb r1, [r4]
	movs r0, 0x7F
	ands r0, r1
	strb r0, [r4]
	b _0803DAA4
	.pool
_0803D920:
	movs r0, 0x8
	ands r0, r2
	cmp r0, 0
	beq _0803D95C
	ldr r0, =0x043f0900
	ands r2, r0
	cmp r2, 0
	beq _0803D95C
	bl sub_805EA60
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DAA87
	str r0, [r1]
	ldr r0, =gTrainerBattleOpponent_A
	ldrh r1, [r0]
	ldr r0, =0x000003fe
	cmp r1, r0
	bne _0803D946
	b _0803DA8A
_0803D946:
	b _0803DA94
	.pool
_0803D95C:
	ldr r0, [r1]
	movs r1, 0xA
	ands r0, r1
	cmp r0, 0x8
	beq _0803D968
	b _0803DA9E
_0803D968:
	bl sub_805EA60
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DA92D
	str r0, [r1]
	ldr r2, =gTrainers
	ldr r0, =gTrainerBattleOpponent_A
	ldrh r1, [r0]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	adds r0, r2
	ldrb r0, [r0, 0x1]
	subs r0, 0x3
	cmp r0, 0x32
	bls _0803D98A
	b _0803DA94
_0803D98A:
	lsls r0, 2
	ldr r1, =_0803D9A8
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_0803D9A8:
	.4byte _0803DA80
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA80
	.4byte _0803DA94
	.4byte _0803DA80
	.4byte _0803DA94
	.4byte _0803DA80
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA74
	.4byte _0803DA8A
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA74
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA80
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA94
	.4byte _0803DA80
_0803DA74:
	ldr r0, =0x00000163
	bl PlayBGM
	b _0803DAA4
	.pool
_0803DA80:
	movs r0, 0xD4
	lsls r0, 1
	bl PlayBGM
	b _0803DAA4
_0803DA8A:
	movs r0, 0xB1
	lsls r0, 1
	bl PlayBGM
	b _0803DAA4
_0803DA94:
	movs r0, 0xCE
	lsls r0, 1
	bl PlayBGM
	b _0803DAA4
_0803DA9E:
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DA96A
	str r0, [r1]
_0803DAA4:
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803DCD8
	str r0, [r1]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803D8C0

	thumb_func_start sub_803DAC0
sub_803DAC0: @ 803DAC0
	push {r4,lr}
	ldr r1, =gFightStateTracker
	movs r0, 0
	strb r0, [r1]
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	ldr r0, =0x02000002
	ands r0, r1
	cmp r0, 0
	beq _0803DB7C
	ldr r0, =0x003f0100
	ands r1, r0
	cmp r1, 0
	beq _0803DB44
	ldr r3, =gBattleOutcome
	ldrb r2, [r3]
	movs r0, 0x80
	ands r0, r2
	cmp r0, 0
	beq _0803DB2C
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DB9C8
	str r0, [r1]
	movs r0, 0x7F
	ands r0, r2
	strb r0, [r3]
	ldr r0, =gSaveBlock2Ptr
	ldr r1, [r0]
	ldr r0, =0x00000ca9
	adds r1, r0
	ldrb r0, [r1]
	movs r2, 0x8
	orrs r0, r2
	strb r0, [r1]
	b _0803DB82
	.pool
_0803DB2C:
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DAA0B
	str r0, [r1]
	movs r0, 0x7F
	ands r0, r2
	strb r0, [r3]
	b _0803DB82
	.pool
_0803DB44:
	ldr r1, =gBattleTextBuff1
	ldr r4, =gBattleOutcome
	ldrb r0, [r4]
	strb r0, [r1]
	movs r0, 0
	bl GetBankByPlayerAI
	ldr r1, =gBankAttacker
	strb r0, [r1]
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DAA35
	str r0, [r1]
	ldrb r1, [r4]
	movs r0, 0x7F
	ands r0, r1
	strb r0, [r4]
	b _0803DB82
	.pool
_0803DB7C:
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DA96D
	str r0, [r1]
_0803DB82:
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803DCD8
	str r0, [r1]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803DAC0

	thumb_func_start sub_803DBA0
sub_803DBA0: @ 803DBA0
	push {lr}
	ldr r1, =gFightStateTracker
	movs r0, 0
	strb r0, [r1]
	ldr r1, =gBattleTypeFlags
	ldr r2, [r1]
	ldr r0, =0x003f0100
	ands r0, r2
	cmp r0, 0
	beq _0803DBFC
	movs r0, 0x8
	ands r2, r0
	cmp r2, 0
	beq _0803DBFC
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DB9C1
	str r0, [r1]
	ldr r1, =gBattleOutcome
	movs r0, 0x9
	strb r0, [r1]
	ldr r0, =gSaveBlock2Ptr
	ldr r1, [r0]
	ldr r0, =0x00000ca9
	adds r1, r0
	ldrb r0, [r1]
	movs r2, 0x8
	orrs r0, r2
	strb r0, [r1]
	b _0803DC6A
	.pool
_0803DBFC:
	ldr r0, [r1]
	movs r1, 0x80
	lsls r1, 19
	ands r0, r1
	cmp r0, 0
	beq _0803DC24
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DB9C1
	str r0, [r1]
	ldr r1, =gBattleOutcome
	movs r0, 0x9
	strb r0, [r1]
	b _0803DC6A
	.pool
_0803DC24:
	ldr r1, =gProtectStructs
	ldr r0, =gBankAttacker
	ldrb r0, [r0]
	lsls r0, 4
	adds r0, r1
	ldrb r0, [r0, 0x1]
	lsls r0, 27
	lsrs r0, 30
	cmp r0, 0x1
	beq _0803DC54
	cmp r0, 0x2
	beq _0803DC64
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DAAF0
	b _0803DC68
	.pool
_0803DC54:
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DAADB
	b _0803DC68
	.pool
_0803DC64:
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DAAE9
_0803DC68:
	str r0, [r1]
_0803DC6A:
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803DCD8
	str r0, [r1]
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803DBA0

	thumb_func_start bc_80158BC
bc_80158BC: @ 803DC84
	ldr r1, =gFightStateTracker
	movs r0, 0
	strb r0, [r1]
	ldr r1, =gBattleTextBuff1
	movs r0, 0xFD
	strb r0, [r1]
	movs r0, 0x7
	strb r0, [r1, 0x1]
	ldr r2, =gBankAttacker
	ldrb r0, [r2]
	strb r0, [r1, 0x2]
	ldr r3, =gBattlePartyID
	ldrb r0, [r2]
	lsls r0, 1
	adds r0, r3
	ldrh r0, [r0]
	strb r0, [r1, 0x3]
	movs r0, 0xFF
	strb r0, [r1, 0x4]
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DAAF7
	str r0, [r1]
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803DCD8
	str r0, [r1]
	bx lr
	.pool
	thumb_func_end bc_80158BC

	thumb_func_start sub_803DCD8
sub_803DCD8: @ 803DCD8
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	ldr r0, =gFightStateTracker
	ldrb r0, [r0]
	subs r0, 0xB
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bls _0803DCEE
	b _0803DE10
_0803DCEE:
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	ldr r0, =0x023f0b92
	ands r1, r0
	cmp r1, 0
	bne _0803DDB6
	ldr r2, =gActiveBank
	strb r1, [r2]
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r1, r0
	bcs _0803DDB2
	adds r5, r2, 0
	ldr r0, =gBattlePartyID
	mov r8, r0
	movs r7, 0x64
	ldr r6, =gPlayerParty
_0803DD10:
	ldrb r0, [r5]
	bl GetBankSide
	lsls r0, 24
	cmp r0, 0
	bne _0803DDA0
	ldr r4, =gBattleResults
	ldrh r0, [r4, 0x6]
	cmp r0, 0
	bne _0803DD74
	ldrb r0, [r5]
	lsls r0, 1
	add r0, r8
	ldrh r0, [r0]
	muls r0, r7
	adds r0, r6
	movs r1, 0xB
	movs r2, 0
	bl GetMonData
	strh r0, [r4, 0x6]
	ldrb r0, [r5]
	lsls r0, 1
	add r0, r8
	ldrh r0, [r0]
	muls r0, r7
	adds r0, r6
	movs r1, 0x2
	adds r2, r4, 0
	adds r2, 0x8
	bl GetMonData
	b _0803DDA0
	.pool
_0803DD74:
	ldrb r0, [r5]
	lsls r0, 1
	add r0, r8
	ldrh r0, [r0]
	muls r0, r7
	adds r0, r6
	movs r1, 0xB
	movs r2, 0
	bl GetMonData
	strh r0, [r4, 0x26]
	ldrb r0, [r5]
	lsls r0, 1
	add r0, r8
	ldrh r0, [r0]
	muls r0, r7
	adds r0, r6
	movs r1, 0x2
	adds r2, r4, 0
	adds r2, 0x14
	bl GetMonData
_0803DDA0:
	ldrb r0, [r5]
	adds r0, 0x1
	strb r0, [r5]
	ldr r1, =gNoOfAllBanks
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803DD10
_0803DDB2:
	bl sub_80EC728
_0803DDB6:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	ldr r1, =0x023f0b9a
	ands r0, r1
	cmp r0, 0
	bne _0803DDD2
	ldr r0, =gBattleResults
	ldrb r1, [r0, 0x5]
	movs r0, 0x40
	ands r0, r1
	cmp r0, 0
	beq _0803DDD2
	bl sub_80EE184
_0803DDD2:
	bl sub_8186444
	movs r0, 0x3
	bl BeginFastPaletteFade
	movs r0, 0x5
	bl FadeOutMapMusic
	ldr r1, =gBattleMainFunc
	ldr r0, =sub_803DE40
	str r0, [r1]
	ldr r1, =gUnknown_030061E8
	ldr r0, =sub_8038420
	str r0, [r1]
	b _0803DE2A
	.pool
_0803DE10:
	ldr r0, =gBattleExecBuffer
	ldr r0, [r0]
	cmp r0, 0
	bne _0803DE2A
	ldr r1, =gBattleScriptingCommandsTable
	ldr r0, =gBattlescriptCurrInstr
	ldr r0, [r0]
	ldrb r0, [r0]
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	bl _call_via_r0
_0803DE2A:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803DCD8

	thumb_func_start sub_803DE40
sub_803DE40: @ 803DE40
	push {lr}
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _0803DE86
	bl ResetSpriteData
	ldr r0, =gUnknown_03005D54
	ldrb r0, [r0]
	cmp r0, 0
	beq _0803DE62
	ldr r0, =gBattleOutcome
	ldrb r0, [r0]
	cmp r0, 0x1
	beq _0803DE80
_0803DE62:
	ldr r1, =gBattleMainFunc
	ldr r0, =c4_overworld
	str r0, [r1]
	b _0803DEA2
	.pool
_0803DE80:
	ldr r1, =gBattleMainFunc
	ldr r0, =bc_evolution_cutscene
	str r0, [r1]
_0803DE86:
	bl FreeAllWindowBuffers
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x2
	ands r0, r1
	cmp r0, 0
	bne _0803DEA2
	bl sub_805F094
	bl sub_8057028
	bl dp11_free
_0803DEA2:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803DE40

	thumb_func_start bc_evolution_cutscene
bc_evolution_cutscene: @ 803DEB4
	push {r4-r6,lr}
	ldr r0, =gUnknown_03005D54
	ldrb r1, [r0]
	adds r3, r0, 0
	cmp r1, 0
	beq _0803DF2E
_0803DEC0:
	movs r6, 0
_0803DEC2:
	ldrb r2, [r3]
	ldr r0, =gBitTable
	lsls r1, r6, 2
	adds r1, r0
	ldr r1, [r1]
	adds r0, r2, 0
	ands r0, r1
	cmp r0, 0
	beq _0803DF20
	bics r2, r1
	strb r2, [r3]
	movs r0, 0x64
	adds r1, r6, 0
	muls r1, r0
	ldr r0, =gPlayerParty
	adds r5, r1, r0
	adds r0, r5, 0
	movs r1, 0
	bl GetEvolutionTargetSpecies
	lsls r0, 16
	lsrs r4, r0, 16
	cmp r4, 0
	beq _0803DF20
	bl FreeAllWindowBuffers
	ldr r0, =gBattleMainFunc
	ldr r1, =sub_803DF48
	str r1, [r0]
	lsls r3, r6, 24
	lsrs r3, 24
	adds r0, r5, 0
	adds r1, r4, 0
	movs r2, 0x1
	bl evolution_cutscene
	b _0803DF34
	.pool
_0803DF20:
	adds r6, 0x1
	ldr r3, =gUnknown_03005D54
	cmp r6, 0x5
	ble _0803DEC2
	ldrb r0, [r3]
	cmp r0, 0
	bne _0803DEC0
_0803DF2E:
	ldr r1, =gBattleMainFunc
	ldr r0, =c4_overworld
	str r0, [r1]
_0803DF34:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end bc_evolution_cutscene

	thumb_func_start sub_803DF48
sub_803DF48: @ 803DF48
	push {lr}
	ldr r0, =gMain
	ldr r1, [r0, 0x4]
	ldr r0, =sub_8038420
	cmp r1, r0
	bne _0803DF5A
	ldr r1, =gBattleMainFunc
	ldr r0, =bc_evolution_cutscene
	str r0, [r1]
_0803DF5A:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803DF48

	thumb_func_start c4_overworld
c4_overworld: @ 803DF70
	push {r4-r6,lr}
	ldr r6, =gBattleTypeFlags
	ldr r0, [r6]
	movs r5, 0x2
	ands r0, r5
	cmp r0, 0
	bne _0803DF8C
	ldr r4, =gPlayerParty
	adds r0, r4, 0
	bl RandomlyGivePartyPokerus
	adds r0, r4, 0
	bl PartySpreadPokerus
_0803DF8C:
	ldr r4, [r6]
	adds r0, r4, 0
	ands r0, r5
	cmp r0, 0
	beq _0803DF9E
	ldr r0, =gUnknown_03003124
	ldrb r0, [r0]
	cmp r0, 0
	bne _0803DFEC
_0803DF9E:
	ldr r1, =gScriptResult
	ldr r5, =gBattleOutcome
	ldrb r0, [r5]
	strh r0, [r1]
	ldr r3, =gMain
	ldr r0, =0x00000439
	adds r2, r3, r0
	ldrb r1, [r2]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	ldr r0, =gUnknown_03005D00
	ldr r0, [r0]
	str r0, [r3]
	movs r0, 0x80
	lsls r0, 3
	ands r4, r0
	cmp r4, 0
	beq _0803DFDE
	ldr r0, =gEnemyParty
	bl UpdateRoamerHPStatus
	ldrb r1, [r5]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	bne _0803DFDA
	cmp r1, 0x7
	bne _0803DFDE
_0803DFDA:
	bl SetRoamerInactive
_0803DFDE:
	movs r0, 0x5A
	bl m4aSongNumStop
	ldr r0, =gMain
	ldr r0, [r0, 0x8]
	bl SetMainCallback2
_0803DFEC:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end c4_overworld

	thumb_func_start bc_move_exec_returning
bc_move_exec_returning: @ 803E018
	push {lr}
	ldr r0, =gFightStateTracker
	ldrb r0, [r0]
	subs r0, 0xB
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bhi _0803E060
	ldr r3, =gBattleResources
	ldr r0, [r3]
	ldr r0, [r0, 0xC]
	adds r1, r0, 0
	adds r1, 0x20
	ldrb r0, [r1]
	cmp r0, 0
	beq _0803E03C
	subs r0, 0x1
	strb r0, [r1]
_0803E03C:
	ldr r2, =gBattleMainFunc
	ldr r0, [r3]
	ldr r1, [r0, 0xC]
	adds r0, r1, 0
	adds r0, 0x20
	ldrb r0, [r0]
	lsls r0, 2
	adds r1, r0
	ldr r0, [r1]
	str r0, [r2]
	b _0803E07A
	.pool
_0803E060:
	ldr r0, =gBattleExecBuffer
	ldr r0, [r0]
	cmp r0, 0
	bne _0803E07A
	ldr r1, =gBattleScriptingCommandsTable
	ldr r0, =gBattlescriptCurrInstr
	ldr r0, [r0]
	ldrb r0, [r0]
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	bl _call_via_r0
_0803E07A:
	pop {r0}
	bx r0
	.pool
	thumb_func_end bc_move_exec_returning

	thumb_func_start sub_803E08C
sub_803E08C: @ 803E08C
	push {lr}
	ldr r0, =gBattleExecBuffer
	ldr r0, [r0]
	cmp r0, 0
	bne _0803E0A8
	ldr r1, =gBattleScriptingCommandsTable
	ldr r0, =gBattlescriptCurrInstr
	ldr r0, [r0]
	ldrb r0, [r0]
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	bl _call_via_r0
_0803E0A8:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803E08C

	thumb_func_start sub_803E0B8
sub_803E0B8: @ 803E0B8
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x4
	movs r0, 0x4
	str r0, [sp]
	ldr r6, =gBankAttacker
	ldr r1, =gTurnOrder
	ldr r0, =gUnknown_02024082
	ldrb r0, [r0]
	adds r0, r1
	ldrb r0, [r0]
	strb r0, [r6]
	ldr r1, =gBattleStruct
	ldr r3, [r1]
	adds r0, r3, 0
	adds r0, 0x91
	ldrb r2, [r0]
	ldr r1, =gBitTable
	ldrb r0, [r6]
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	ands r2, r0
	cmp r2, 0
	beq _0803E110
	ldr r1, =gFightStateTracker
	movs r0, 0xC
	b _0803E83C
	.pool
_0803E110:
	ldr r1, =gCritMultiplier
	movs r0, 0x1
	strb r0, [r1]
	ldr r1, =gBattleScripting
	movs r0, 0x1
	strb r0, [r1, 0xE]
	ldr r5, =0x000001a3
	adds r0, r3, r5
	strb r2, [r0]
	ldr r0, =gBattleMoveFlags
	strb r2, [r0]
	ldr r0, =gUnknown_02024212
	strb r2, [r0]
	ldr r0, =gBattleCommunication
	strb r2, [r0, 0x6]
	ldr r2, =gCurrMovePos
	ldr r0, =gUnknown_020241E9
	mov r9, r0
	ldrb r0, [r6]
	ldr r3, =gBattleStruct
	ldr r1, [r3]
	adds r0, r1
	adds r0, 0x80
	ldrb r0, [r0]
	mov r5, r9
	strb r0, [r5]
	strb r0, [r2]
	ldr r1, =gProtectStructs
	ldrb r4, [r6]
	lsls r0, r4, 4
	adds r3, r0, r1
	ldrb r1, [r3]
	lsls r0, r1, 29
	mov r8, r2
	cmp r0, 0
	bge _0803E1BC
	movs r0, 0x5
	negs r0, r0
	ands r0, r1
	strb r0, [r3]
	ldr r2, =gCurrentMove
	ldr r1, =gUnknown_020241EC
	movs r0, 0xA5
	strh r0, [r1]
	strh r0, [r2]
	ldr r2, =gHitMarker
	ldr r0, [r2]
	movs r1, 0x80
	lsls r1, 4
	orrs r0, r1
	str r0, [r2]
	movs r0, 0xA5
	movs r1, 0
	bl GetMoveTarget
	ldrb r1, [r6]
	ldr r3, =gBattleStruct
	ldr r2, [r3]
	b _0803E316
	.pool
_0803E1BC:
	ldr r5, =gBattleMons
	mov r10, r5
	movs r0, 0x58
	adds r5, r4, 0
	muls r5, r0
	mov r0, r10
	adds r0, 0x50
	adds r0, r5, r0
	ldr r1, [r0]
	movs r0, 0x80
	lsls r0, 5
	ands r0, r1
	cmp r0, 0
	bne _0803E1E2
	movs r7, 0x80
	lsls r7, 15
	ands r7, r1
	cmp r7, 0
	beq _0803E204
_0803E1E2:
	ldr r3, =gCurrentMove
	ldr r2, =gUnknown_020241EC
	ldr r1, =gUnknown_02024268
	lsls r0, r4, 1
	adds r0, r1
	ldrh r0, [r0]
	strh r0, [r2]
	strh r0, [r3]
	b _0803E33C
	.pool
_0803E204:
	ldr r1, =gDisableStructs
	mov r12, r1
	lsls r0, r4, 3
	subs r0, r4
	lsls r0, 2
	add r0, r12
	ldrh r3, [r0, 0x6]
	adds r1, r3, 0
	cmp r1, 0
	beq _0803E2DC
	ldrb r2, [r0, 0xC]
	lsls r0, r2, 1
	adds r0, r5
	mov r4, r10
	adds r4, 0xC
	adds r0, r4
	ldrh r0, [r0]
	cmp r1, r0
	bne _0803E268
	ldr r2, =gCurrentMove
	ldr r0, =gUnknown_020241EC
	strh r3, [r0]
	strh r3, [r2]
	ldrb r1, [r6]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	add r0, r12
	ldrb r0, [r0, 0xC]
	mov r3, r9
	strb r0, [r3]
	mov r5, r8
	strb r0, [r5]
	ldrh r0, [r2]
	movs r1, 0
	bl GetMoveTarget
	ldrb r1, [r6]
	ldr r3, =gBattleStruct
	ldr r2, [r3]
	b _0803E316
	.pool
_0803E268:
	cmp r1, 0
	beq _0803E2DC
	cmp r1, r0
	beq _0803E2DC
	mov r5, r9
	strb r2, [r5]
	mov r0, r8
	strb r2, [r0]
	ldr r3, =gCurrentMove
	ldr r2, =gUnknown_020241EC
	ldrb r0, [r0]
	lsls r0, 1
	ldrb r1, [r6]
	movs r5, 0x58
	muls r1, r5
	adds r0, r1
	adds r0, r4
	ldrh r0, [r0]
	strh r0, [r2]
	strh r0, [r3]
	ldrb r1, [r6]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	add r0, r12
	movs r2, 0
	strh r7, [r0, 0x6]
	ldrb r1, [r6]
	lsls r0, r1, 3
	subs r0, r1
	lsls r0, 2
	add r0, r12
	strb r2, [r0, 0xC]
	ldrb r0, [r6]
	lsls r1, r0, 3
	subs r1, r0
	lsls r1, 2
	add r1, r12
	ldrb r2, [r1, 0xE]
	movs r0, 0x10
	negs r0, r0
	ands r0, r2
	strb r0, [r1, 0xE]
	ldrh r0, [r3]
	movs r1, 0
	bl GetMoveTarget
	ldrb r1, [r6]
	ldr r3, =gBattleStruct
	ldr r2, [r3]
	b _0803E316
	.pool
_0803E2DC:
	ldr r3, =gBattleMons
	mov r5, r8
	ldrb r0, [r5]
	lsls r0, 1
	ldr r4, =gBankAttacker
	ldrb r2, [r4]
	movs r1, 0x58
	muls r1, r2
	adds r0, r1
	adds r3, 0xC
	adds r0, r3
	ldr r1, =gChosenMovesByBanks
	lsls r2, 1
	adds r2, r1
	ldrh r3, [r0]
	ldrh r2, [r2]
	cmp r3, r2
	beq _0803E334
	ldr r1, =gCurrentMove
	ldr r0, =gUnknown_020241EC
	strh r3, [r0]
	strh r3, [r1]
	ldrh r0, [r1]
	movs r1, 0
	bl GetMoveTarget
	ldrb r1, [r4]
	ldr r2, =gBattleStruct
	ldr r2, [r2]
_0803E316:
	adds r1, r2
	strb r0, [r1, 0xC]
	b _0803E33C
	.pool
_0803E334:
	ldr r1, =gCurrentMove
	ldr r0, =gUnknown_020241EC
	strh r3, [r0]
	strh r3, [r1]
_0803E33C:
	ldr r2, =gBattleMons
	ldr r1, =gBankAttacker
	ldrb r3, [r1]
	movs r0, 0x58
	muls r0, r3
	adds r0, r2
	ldrh r0, [r0, 0x28]
	mov r8, r1
	cmp r0, 0
	beq _0803E384
	adds r0, r3, 0
	bl GetBankSide
	lsls r0, 24
	cmp r0, 0
	bne _0803E37C
	ldr r0, =gBattleResults
	ldr r1, =gCurrentMove
	ldrh r1, [r1]
	strh r1, [r0, 0x22]
	b _0803E384
	.pool
_0803E37C:
	ldr r0, =gBattleResults
	ldr r1, =gCurrentMove
	ldrh r1, [r1]
	strh r1, [r0, 0x24]
_0803E384:
	mov r1, r8
	ldrb r0, [r1]
	bl GetBankSide
	movs r1, 0x1
	eors r0, r1
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r1, =gSideTimers
	lsls r0, r6, 1
	adds r0, r6
	lsls r0, 2
	adds r5, r0, r1
	ldrb r0, [r5, 0x8]
	cmp r0, 0
	beq _0803E400
	ldr r2, =gBattleMoves
	ldr r0, =gCurrentMove
	ldrh r1, [r0]
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r0, [r0, 0x6]
	cmp r0, 0
	bne _0803E400
	mov r3, r8
	ldrb r0, [r3]
	bl GetBankSide
	adds r4, r0, 0
	ldrb r0, [r5, 0x9]
	bl GetBankSide
	lsls r4, 24
	lsls r0, 24
	cmp r4, r0
	beq _0803E400
	ldr r1, =gBattleMons
	ldrb r2, [r5, 0x9]
	movs r0, 0x58
	muls r0, r2
	adds r0, r1
	ldrh r0, [r0, 0x28]
	cmp r0, 0
	beq _0803E400
	ldr r0, =gBankTarget
	strb r2, [r0]
	b _0803E76A
	.pool
_0803E400:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x1
	ands r0, r1
	ldr r5, =gBankAttacker
	mov r8, r5
	cmp r0, 0
	bne _0803E412
	b _0803E6E0
_0803E412:
	ldr r1, =gSideTimers
	lsls r0, r6, 1
	adds r0, r6
	lsls r0, 2
	adds r0, r1
	ldrb r5, [r0, 0x8]
	cmp r5, 0
	beq _0803E424
	b _0803E630
_0803E424:
	ldr r2, =gBattleMoves
	ldr r0, =gCurrentMove
	ldrh r1, [r0]
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 2
	adds r4, r0, r2
	ldrb r0, [r4, 0x1]
	cmp r0, 0
	bne _0803E440
	ldrb r0, [r4, 0x6]
	cmp r0, 0x10
	bne _0803E440
	b _0803E630
_0803E440:
	ldr r3, =gBattleMons
	ldr r2, =gBankAttacker
	ldrb r6, [r2]
	ldr r0, =gBattleStruct
	ldr r0, [r0]
	adds r0, r6, r0
	ldrb r1, [r0, 0xC]
	movs r0, 0x58
	muls r0, r1
	adds r0, r3
	adds r0, 0x20
	ldrb r0, [r0]
	mov r8, r2
	cmp r0, 0x1F
	bne _0803E460
	b _0803E630
_0803E460:
	ldrb r0, [r4, 0x2]
	cmp r0, 0xD
	beq _0803E468
	b _0803E630
_0803E468:
	adds r0, r6, 0
	bl GetBankSide
	lsls r0, 24
	lsrs r6, r0, 24
	ldr r1, =gActiveBank
	strb r5, [r1]
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r5, r0
	bcs _0803E4E0
	adds r4, r1, 0
_0803E480:
	ldrb r0, [r4]
	bl GetBankSide
	lsls r0, 24
	lsrs r0, 24
	cmp r6, r0
	beq _0803E4CE
	ldr r0, =gBankAttacker
	ldrb r1, [r0]
	ldr r0, =gBattleStruct
	ldr r0, [r0]
	adds r1, r0
	ldrb r0, [r1, 0xC]
	ldrb r1, [r4]
	cmp r0, r1
	beq _0803E4CE
	ldr r1, =gBattleMons
	ldrb r2, [r4]
	movs r0, 0x58
	muls r0, r2
	adds r0, r1
	adds r0, 0x20
	ldrb r0, [r0]
	cmp r0, 0x1F
	bne _0803E4CE
	adds r0, r2, 0
	bl sub_8048728
	lsls r0, 24
	lsrs r0, 24
	ldr r3, [sp]
	cmp r0, r3
	bcs _0803E4CE
	ldrb r0, [r4]
	bl sub_8048728
	lsls r0, 24
	lsrs r0, 24
	str r0, [sp]
_0803E4CE:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	ldr r1, =gNoOfAllBanks
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803E480
_0803E4E0:
	ldr r5, [sp]
	cmp r5, 0x4
	beq _0803E4E8
	b _0803E5E2
_0803E4E8:
	ldr r2, =gBattleMoves
	ldr r0, =gUnknown_020241EC
	ldrh r1, [r0]
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r0, [r0, 0x6]
	ands r5, r0
	cmp r5, 0
	beq _0803E568
	ldr r0, =gBankAttacker
	ldrb r0, [r0]
	bl GetBankSide
	lsls r0, 24
	cmp r0, 0
	bne _0803E548
	bl Random
	movs r1, 0x1
	ands r1, r0
	cmp r1, 0
	beq _0803E544
	movs r0, 0x1
	b _0803E55A
	.pool
_0803E544:
	movs r0, 0x3
	b _0803E55A
_0803E548:
	bl Random
	movs r1, 0x1
	ands r1, r0
	cmp r1, 0
	beq _0803E558
	movs r0, 0
	b _0803E55A
_0803E558:
	movs r0, 0x2
_0803E55A:
	bl GetBankByPlayerAI
	ldr r1, =gBankTarget
	strb r0, [r1]
	b _0803E578
	.pool
_0803E568:
	ldr r2, =gBankTarget
	ldr r0, =gBankAttacker
	ldrb r0, [r0]
	ldr r1, =gBattleStruct
	ldr r1, [r1]
	adds r0, r1
	ldrb r0, [r0, 0xC]
	strb r0, [r2]
_0803E578:
	ldr r7, =gAbsentBankFlags
	ldrb r0, [r7]
	ldr r1, =gBitTable
	mov r8, r1
	ldr r5, =gBankTarget
	ldrb r1, [r5]
	lsls r1, 2
	add r1, r8
	ldr r1, [r1]
	ands r0, r1
	cmp r0, 0
	bne _0803E592
	b _0803E76A
_0803E592:
	ldr r6, =gBankAttacker
	ldrb r0, [r6]
	bl GetBankSide
	adds r4, r0, 0
	ldrb r0, [r5]
	bl GetBankSide
	lsls r4, 24
	lsls r0, 24
	cmp r4, r0
	beq _0803E5C4
	ldrb r0, [r5]
	b _0803E758
	.pool
_0803E5C4:
	ldrb r0, [r6]
	bl GetBankIdentity
	movs r1, 0x1
	eors r0, r1
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	strb r0, [r5]
	ldrb r1, [r7]
	ldrb r2, [r5]
	lsls r0, r2, 2
	add r0, r8
	b _0803E74E
_0803E5E2:
	ldr r4, =gActiveBank
	ldr r0, =gTurnOrder
	ldr r3, [sp]
	adds r0, r3, r0
	ldrb r0, [r0]
	strb r0, [r4]
	ldrb r0, [r4]
	ldr r2, =gBattleMons
	movs r1, 0x58
	muls r1, r0
	adds r1, r2
	adds r1, 0x20
	ldrb r1, [r1]
	bl RecordAbilityBattle
	ldr r2, =gSpecialStatuses
	ldrb r1, [r4]
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r1, [r0]
	movs r2, 0x2
	orrs r1, r2
	strb r1, [r0]
	ldr r1, =gBankTarget
	ldrb r0, [r4]
	strb r0, [r1]
	b _0803E76A
	.pool
_0803E630:
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r4, 0x1
	ands r0, r4
	cmp r0, 0
	beq _0803E6E0
	ldr r2, =gBattleMoves
	ldr r0, =gUnknown_020241EC
	ldrh r1, [r0]
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r1, [r0, 0x6]
	movs r0, 0x4
	ands r0, r1
	cmp r0, 0
	beq _0803E6E0
	mov r5, r8
	ldrb r0, [r5]
	bl GetBankSide
	lsls r0, 24
	cmp r0, 0
	bne _0803E684
	bl Random
	adds r1, r4, 0
	ands r1, r0
	cmp r1, 0
	beq _0803E680
	movs r0, 0x1
	b _0803E696
	.pool
_0803E680:
	movs r0, 0x3
	b _0803E696
_0803E684:
	bl Random
	adds r1, r4, 0
	ands r1, r0
	cmp r1, 0
	beq _0803E694
	movs r0, 0
	b _0803E696
_0803E694:
	movs r0, 0x2
_0803E696:
	bl GetBankByPlayerAI
	ldr r1, =gBankTarget
	strb r0, [r1]
	ldr r0, =gAbsentBankFlags
	ldrb r1, [r0]
	ldr r2, =gBitTable
	ldr r5, =gBankTarget
	ldrb r0, [r5]
	lsls r0, 2
	adds r0, r2
	ldr r0, [r0]
	ands r1, r0
	cmp r1, 0
	beq _0803E76A
	ldr r0, =gBankAttacker
	ldrb r0, [r0]
	bl GetBankSide
	adds r4, r0, 0
	ldrb r0, [r5]
	bl GetBankSide
	lsls r4, 24
	lsls r0, 24
	cmp r4, r0
	beq _0803E76A
	ldrb r0, [r5]
	b _0803E758
	.pool
_0803E6E0:
	ldr r5, =gBankTarget
	mov r2, r8
	ldrb r0, [r2]
	ldr r1, =gBattleStruct
	ldr r1, [r1]
	adds r0, r1
	ldrb r0, [r0, 0xC]
	strb r0, [r5]
	ldr r6, =gAbsentBankFlags
	ldrb r1, [r6]
	ldr r7, =gBitTable
	ldrb r0, [r5]
	lsls r0, 2
	adds r0, r7
	ldr r0, [r0]
	ands r1, r0
	cmp r1, 0
	beq _0803E76A
	ldrb r0, [r2]
	bl GetBankSide
	adds r4, r0, 0
	ldrb r0, [r5]
	bl GetBankSide
	lsls r4, 24
	lsls r0, 24
	cmp r4, r0
	beq _0803E730
	ldrb r0, [r5]
	b _0803E758
	.pool
_0803E730:
	mov r1, r8
	ldrb r0, [r1]
	bl GetBankIdentity
	movs r1, 0x1
	eors r0, r1
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	strb r0, [r5]
	ldrb r1, [r6]
	ldrb r2, [r5]
	lsls r0, r2, 2
	adds r0, r7
_0803E74E:
	ldr r0, [r0]
	ands r1, r0
	cmp r1, 0
	beq _0803E76A
	adds r0, r2, 0
_0803E758:
	bl GetBankIdentity
	movs r1, 0x2
	eors r0, r1
	lsls r0, 24
	lsrs r0, 24
	bl GetBankByPlayerAI
	strb r0, [r5]
_0803E76A:
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r2, 0x80
	lsls r2, 10
	ands r1, r2
	adds r5, r0, 0
	cmp r1, 0
	beq _0803E808
	ldr r0, =gProtectStructs
	ldr r4, =gBankAttacker
	ldrb r2, [r4]
	lsls r1, r2, 4
	adds r1, r0
	ldrb r0, [r1, 0x2]
	lsls r0, 27
	cmp r0, 0
	bge _0803E808
	ldr r1, =gBattleMons
	movs r0, 0x58
	muls r0, r2
	adds r0, r1
	ldrh r0, [r0, 0x28]
	cmp r0, 0
	bne _0803E7B4
	ldr r1, =gFightStateTracker
	movs r0, 0xC
	b _0803E83C
	.pool
_0803E7B4:
	ldr r3, =gUnknown_02024230
	lsls r0, r2, 2
	adds r0, r3
	ldr r0, [r0]
	cmp r0, 0
	beq _0803E7EC
	ldr r1, =gBattleCommunication
	movs r2, 0
	movs r0, 0x4
	strb r0, [r1, 0x5]
	ldr r1, =gBattlescriptCurrInstr
	ldrb r0, [r4]
	lsls r0, 2
	adds r0, r3
	ldr r0, [r0]
	str r0, [r1]
	ldrb r0, [r4]
	lsls r0, 2
	adds r0, r3
	str r2, [r0]
	b _0803E824
	.pool
_0803E7EC:
	ldr r1, =gBattleCommunication
	movs r0, 0x4
	strb r0, [r1, 0x5]
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =BattleScript_MoveUsedLoafingAround
	str r0, [r1]
	b _0803E824
	.pool
_0803E808:
	ldr r4, =gBattlescriptCurrInstr
	ldr r3, =gUnknown_082D86A8
	ldr r2, =gBattleMoves
	ldr r0, =gCurrentMove
	ldrh r1, [r0]
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r0, [r0]
	lsls r0, 2
	adds r0, r3
	ldr r0, [r0]
	str r0, [r4]
_0803E824:
	ldr r0, [r5]
	movs r1, 0x80
	lsls r1, 11
	ands r0, r1
	cmp r0, 0
	beq _0803E838
	ldr r0, =gBankAttacker
	ldrb r0, [r0]
	bl sub_81A56E8
_0803E838:
	ldr r1, =gFightStateTracker
	movs r0, 0xA
_0803E83C:
	strb r0, [r1]
	add sp, 0x4
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803E0B8

	thumb_func_start bs2_8016374
bs2_8016374: @ 803E868
	push {r4,lr}
	ldr r3, =gBankAttacker
	ldr r1, =gTurnOrder
	ldr r0, =gUnknown_02024082
	ldrb r0, [r0]
	adds r0, r1
	ldrb r0, [r0]
	strb r0, [r3]
	ldr r0, =gUnknown_02022E14
	movs r2, 0
	strh r2, [r0]
	ldr r0, =gUnknown_02022E16
	strh r2, [r0]
	ldr r1, =gUnknown_020244AC
	ldrb r0, [r3]
	adds r0, r1
	strb r2, [r0]
	ldr r1, =gUnknown_020244B0
	ldrb r0, [r3]
	adds r0, r1
	strb r2, [r0]
	ldr r2, =gBattleTextBuff1
	movs r0, 0xFD
	strb r0, [r2]
	movs r0, 0x7
	strb r0, [r2, 0x1]
	ldrb r4, [r3]
	strb r4, [r2, 0x2]
	ldrb r0, [r3]
	ldr r1, =gBattleStruct
	ldr r1, [r1]
	adds r0, r1
	adds r0, 0x58
	ldrb r0, [r0]
	strb r0, [r2, 0x3]
	movs r0, 0xFF
	strb r0, [r2, 0x4]
	ldr r0, =gBattleScripting
	strb r4, [r0, 0x17]
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DAB15
	str r0, [r1]
	ldr r1, =gFightStateTracker
	movs r0, 0xA
	strb r0, [r1]
	ldr r1, =gBattleResults
	ldrb r0, [r1, 0x2]
	cmp r0, 0xFE
	bhi _0803E8CE
	adds r0, 0x1
	strb r0, [r1, 0x2]
_0803E8CE:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end bs2_8016374

	thumb_func_start sub_803E90C
sub_803E90C: @ 803E90C
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	ldr r4, =gBankAttacker
	ldr r2, =gBankTarget
	ldr r1, =gTurnOrder
	ldr r0, =gUnknown_02024082
	ldrb r0, [r0]
	adds r0, r1
	ldrb r0, [r0]
	strb r0, [r2]
	strb r0, [r4]
	ldr r0, =gUnknown_02022E14
	movs r1, 0
	strh r1, [r0]
	ldr r0, =gUnknown_02022E16
	strh r1, [r0]
	ldrb r0, [r4]
	bl sub_8045868
	ldr r5, =gLastUsedItem
	ldr r2, =gBattleBufferB
	ldrb r1, [r4]
	lsls r1, 9
	adds r0, r2, 0x1
	adds r0, r1, r0
	ldrb r3, [r0]
	adds r2, 0x2
	adds r1, r2
	ldrb r0, [r1]
	lsls r0, 8
	orrs r3, r0
	strh r3, [r5]
	cmp r3, 0xC
	bhi _0803E998
	ldr r2, =gBattlescriptCurrInstr
	ldr r1, =gUnknown_082DBD08
	ldrh r0, [r5]
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	str r0, [r2]
	ldr r0, =gFightStateTracker
	mov r10, r0
	b _0803EBF6
	.pool
_0803E998:
	adds r0, r3, 0
	subs r0, 0x50
	lsls r0, 16
	lsrs r0, 16
	cmp r0, 0x1
	bhi _0803E9C0
	ldr r0, =gBattlescriptCurrInstr
	ldr r1, =gUnknown_082DBD54
	ldr r1, [r1]
	str r1, [r0]
	ldr r1, =gFightStateTracker
	mov r10, r1
	b _0803EBF6
	.pool
_0803E9C0:
	ldrb r0, [r4]
	bl GetBankSide
	lsls r0, 24
	cmp r0, 0
	bne _0803E9E8
	ldr r0, =gBattlescriptCurrInstr
	ldr r1, =gUnknown_082DBD3C
	ldr r1, [r1]
	str r1, [r0]
	ldr r2, =gFightStateTracker
	mov r10, r2
	b _0803EBF6
	.pool
_0803E9E8:
	ldr r3, =gBattleScripting
	ldrb r0, [r4]
	strb r0, [r3, 0x17]
	lsls r0, 24
	lsrs r0, 25
	ldr r2, =gBattleStruct
	ldr r1, [r2]
	adds r0, r1
	adds r0, 0xC4
	ldrb r0, [r0]
	subs r0, 0x1
	mov r8, r4
	ldr r1, =gBattlescriptCurrInstr
	mov r9, r1
	ldr r6, =gUnknown_082DBD3C
	mov r12, r3
	adds r7, r2, 0
	ldr r2, =gFightStateTracker
	mov r10, r2
	cmp r0, 0x4
	bls _0803EA14
	b _0803EBDE
_0803EA14:
	lsls r0, 2
	ldr r1, =_0803EA38
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_0803EA38:
	.4byte _0803EBDE
	.4byte _0803EBDE
	.4byte _0803EA4C
	.4byte _0803EAE0
	.4byte _0803EBB0
_0803EA4C:
	ldr r5, =gBattleCommunication
	movs r0, 0
	strb r0, [r5, 0x5]
	ldr r2, =gBankAttacker
	ldrb r0, [r2]
	lsrs r0, 1
	ldr r1, [r7]
	adds r0, r1
	adds r0, 0xC6
	ldrb r1, [r0]
	movs r0, 0x1
	ands r0, r1
	mov r8, r2
	cmp r0, 0
	beq _0803EA98
	movs r0, 0x3E
	ands r0, r1
	ldr r1, =gBattlescriptCurrInstr
	mov r9, r1
	ldr r6, =gUnknown_082DBD3C
	ldr r2, =gFightStateTracker
	mov r10, r2
	cmp r0, 0
	bne _0803EA7E
	b _0803EBDE
_0803EA7E:
	movs r0, 0x5
	strb r0, [r5, 0x5]
	b _0803EBDE
	.pool
_0803EA98:
	ldr r0, =gBattlescriptCurrInstr
	mov r9, r0
	ldr r6, =gUnknown_082DBD3C
	ldr r1, =gFightStateTracker
	mov r10, r1
	mov r4, r8
	adds r3, r7, 0
	adds r2, r5, 0
_0803EAA8:
	ldrb r1, [r4]
	lsrs r1, 1
	ldr r0, [r3]
	adds r1, r0
	adds r1, 0xC6
	ldrb r0, [r1]
	lsrs r0, 1
	strb r0, [r1]
	ldrb r0, [r2, 0x5]
	adds r0, 0x1
	strb r0, [r2, 0x5]
	ldrb r0, [r4]
	lsrs r0, 1
	ldr r1, [r3]
	adds r0, r1
	adds r0, 0xC6
	ldrb r1, [r0]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	beq _0803EAA8
	b _0803EBDE
	.pool
_0803EAE0:
	ldr r3, =gBattleCommunication
	movs r0, 0x4
	strb r0, [r3, 0x5]
	ldr r2, =gBankAttacker
	ldrb r0, [r2]
	lsrs r0, 1
	ldr r1, [r7]
	adds r0, r1
	adds r6, r0, 0
	adds r6, 0xC6
	ldrb r1, [r6]
	movs r0, 0x80
	ands r0, r1
	lsls r0, 24
	lsrs r5, r0, 24
	mov r8, r2
	cmp r5, 0
	beq _0803EB28
	movs r0, 0x5
	strb r0, [r3, 0x5]
	ldr r2, =gBattlescriptCurrInstr
	mov r9, r2
	ldr r6, =gUnknown_082DBD3C
	ldr r0, =gFightStateTracker
	mov r10, r0
	b _0803EBDE
	.pool
_0803EB28:
	ldr r3, =gBattleTextBuff1
	movs r4, 0xFD
	strb r4, [r3]
	movs r0, 0x5
	strb r0, [r3, 0x1]
	movs r2, 0x1
	strb r2, [r3, 0x2]
	movs r0, 0xFF
	strb r0, [r3, 0x3]
	ldr r1, =gBattleTextBuff2
	strb r4, [r1]
	strb r5, [r1, 0x1]
	movs r0, 0xD2
	strb r0, [r1, 0x2]
	strb r5, [r1, 0x3]
	subs r0, 0xD3
	strb r0, [r1, 0x4]
	ldrb r0, [r6]
	ands r2, r0
	ldr r1, =gBattlescriptCurrInstr
	mov r9, r1
	ldr r6, =gUnknown_082DBD3C
	ldr r0, =gFightStateTracker
	mov r10, r0
	cmp r2, 0
	bne _0803EB8C
	mov r5, r8
	adds r4, r7, 0
	adds r2, r3, 0
_0803EB62:
	ldrb r1, [r5]
	lsrs r1, 1
	ldr r0, [r4]
	adds r1, r0
	adds r1, 0xC6
	ldrb r0, [r1]
	lsrs r0, 1
	strb r0, [r1]
	ldrb r0, [r2, 0x2]
	adds r0, 0x1
	strb r0, [r2, 0x2]
	ldrb r0, [r5]
	lsrs r0, 1
	ldr r1, [r4]
	adds r0, r1
	adds r0, 0xC6
	ldrb r1, [r0]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	beq _0803EB62
_0803EB8C:
	ldrb r0, [r3, 0x2]
	adds r0, 0xE
	movs r1, 0
	mov r2, r12
	strb r0, [r2, 0x10]
	strb r1, [r2, 0x11]
	b _0803EBDE
	.pool
_0803EBB0:
	ldr r0, =gBattleTypeFlags
	ldr r1, [r0]
	movs r0, 0x1
	ands r1, r0
	cmp r1, 0
	beq _0803EBCC
	ldr r1, =gBattleCommunication
	movs r0, 0x2
	strb r0, [r1, 0x5]
	b _0803EBD0
	.pool
_0803EBCC:
	ldr r0, =gBattleCommunication
	strb r1, [r0, 0x5]
_0803EBD0:
	ldr r0, =gBankAttacker
	mov r8, r0
	ldr r1, =gBattlescriptCurrInstr
	mov r9, r1
	ldr r6, =gUnknown_082DBD3C
	ldr r2, =gFightStateTracker
	mov r10, r2
_0803EBDE:
	mov r1, r8
	ldrb r0, [r1]
	lsrs r0, 1
	ldr r1, [r7]
	adds r0, r1
	adds r0, 0xC4
	ldrb r0, [r0]
	lsls r0, 2
	adds r0, r6
	ldr r0, [r0]
	mov r2, r9
	str r0, [r2]
_0803EBF6:
	movs r0, 0xA
	mov r1, r10
	strb r0, [r1]
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803E90C

	thumb_func_start sub_803EC20
sub_803EC20: @ 803EC20
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	lsls r0, 24
	lsrs r5, r0, 24
	movs r7, 0
	ldr r1, =gBattleMons
	movs r0, 0x58
	muls r0, r5
	adds r1, r0, r1
	ldrh r0, [r1, 0x2E]
	cmp r0, 0xAF
	bne _0803EC54
	ldr r1, =gEnigmaBerries
	lsls r0, r5, 3
	subs r0, r5
	lsls r0, 2
	adds r0, r1
	ldrb r1, [r0, 0x7]
	b _0803EC5E
	.pool
_0803EC54:
	ldrh r0, [r1, 0x2E]
	bl ItemId_GetHoldEffect
	lsls r0, 24
	lsrs r1, r0, 24
_0803EC5E:
	ldr r0, =gStringBank
	strb r5, [r0]
	cmp r1, 0x25
	bne _0803EC9C
	ldr r2, =gLastUsedItem
	ldr r1, =gBattleMons
	movs r0, 0x58
	muls r0, r5
	adds r0, r1
	ldrh r0, [r0, 0x2E]
	strh r0, [r2]
	ldr r0, =gProtectStructs
	lsls r2, r5, 4
	adds r2, r0
	ldrb r1, [r2, 0x1]
	movs r0, 0x19
	negs r0, r0
	ands r0, r1
	movs r1, 0x8
	orrs r0, r1
	strb r0, [r2, 0x1]
	b _0803ED70
	.pool
_0803EC9C:
	ldr r0, =gBattleMons
	mov r10, r0
	movs r2, 0x58
	mov r9, r2
	mov r0, r9
	muls r0, r5
	add r0, r10
	mov r8, r0
	adds r0, 0x20
	ldrb r6, [r0]
	cmp r6, 0x32
	bne _0803ED5C
	bl InBattlePyramid
	lsls r0, 24
	cmp r0, 0
	beq _0803ED38
	ldr r4, =gBattleStruct
	ldr r1, [r4]
	adds r1, 0x6C
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	bl sub_81A9E28
	lsls r0, 24
	lsrs r1, r0, 24
	mov r2, r8
	ldrh r0, [r2, 0x6]
	muls r0, r1
	movs r2, 0x1
	adds r1, r5, 0
	eors r1, r2
	mov r2, r9
	muls r2, r1
	adds r1, r2, 0
	add r1, r10
	ldrh r1, [r1, 0x6]
	bl __divsi3
	ldr r1, [r4]
	adds r1, 0x6C
	ldrb r2, [r1]
	lsls r1, r2, 4
	subs r1, r2
	lsls r1, 1
	adds r0, r1
	lsls r0, 24
	lsrs r4, r0, 24
	bl Random
	movs r1, 0xFF
	ands r1, r0
	cmp r4, r1
	bhi _0803ED0C
	b _0803EE12
_0803ED0C:
	ldr r0, =gLastUsedAbility
	strb r6, [r0]
	ldr r0, =gProtectStructs
	lsls r2, r5, 4
	adds r2, r0
	ldrb r1, [r2, 0x1]
	movs r0, 0x19
	negs r0, r0
	ands r0, r1
	movs r1, 0x10
	orrs r0, r1
	strb r0, [r2, 0x1]
	b _0803ED70
	.pool
_0803ED38:
	ldr r0, =gLastUsedAbility
	strb r6, [r0]
	ldr r0, =gProtectStructs
	lsls r2, r5, 4
	adds r2, r0
	ldrb r1, [r2, 0x1]
	movs r0, 0x19
	negs r0, r0
	ands r0, r1
	movs r1, 0x10
	orrs r0, r1
	strb r0, [r2, 0x1]
	b _0803ED70
	.pool
_0803ED5C:
	ldr r1, =gBattleTypeFlags
	ldr r2, [r1]
	ldr r0, =0x043f0100
	ands r0, r2
	cmp r0, 0
	beq _0803ED80
	movs r0, 0x8
	ands r2, r0
	cmp r2, 0
	beq _0803ED80
_0803ED70:
	adds r0, r7, 0x1
	lsls r0, 24
	lsrs r7, r0, 24
	b _0803EE12
	.pool
_0803ED80:
	ldr r0, [r1]
	movs r1, 0x1
	ands r0, r1
	cmp r0, 0
	bne _0803EE06
	bl InBattlePyramid
	lsls r0, 24
	cmp r0, 0
	beq _0803EDBC
	bl sub_81A9E28
	lsls r0, 24
	lsrs r1, r0, 24
	ldr r4, =gBattleMons
	movs r3, 0x58
	adds r0, r5, 0
	muls r0, r3
	adds r0, r4
	ldrh r0, [r0, 0x6]
	muls r0, r1
	movs r2, 0x1
	adds r1, r5, 0
	eors r1, r2
	muls r1, r3
	adds r1, r4
	b _0803EDDA
	.pool
_0803EDBC:
	ldr r3, =gBattleMons
	movs r2, 0x58
	adds r0, r5, 0
	muls r0, r2
	adds r4, r0, r3
	movs r1, 0x1
	adds r0, r5, 0
	eors r0, r1
	muls r0, r2
	adds r1, r0, r3
	ldrh r0, [r4, 0x6]
	ldrh r2, [r1, 0x6]
	cmp r0, r2
	bcs _0803EE00
	lsls r0, 7
_0803EDDA:
	ldrh r1, [r1, 0x6]
	bl __divsi3
	ldr r1, =gBattleStruct
	ldr r1, [r1]
	adds r1, 0x6C
	ldrb r2, [r1]
	lsls r1, r2, 4
	subs r1, r2
	lsls r1, 1
	adds r0, r1
	lsls r0, 24
	lsrs r4, r0, 24
	bl Random
	movs r1, 0xFF
	ands r1, r0
	cmp r4, r1
	bls _0803EE06
_0803EE00:
	adds r0, r7, 0x1
	lsls r0, 24
	lsrs r7, r0, 24
_0803EE06:
	ldr r0, =gBattleStruct
	ldr r1, [r0]
	adds r1, 0x6C
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
_0803EE12:
	cmp r7, 0
	beq _0803EE24
	ldr r1, =gUnknown_02024082
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	strb r0, [r1]
	ldr r1, =gBattleOutcome
	movs r0, 0x4
	strb r0, [r1]
_0803EE24:
	adds r0, r7, 0
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_803EC20

	thumb_func_start sub_803EE48
sub_803EE48: @ 803EE48
	push {r4-r6,lr}
	ldr r4, =gBankAttacker
	ldr r1, =gTurnOrder
	ldr r5, =gUnknown_02024082
	ldrb r0, [r5]
	adds r0, r1
	ldrb r0, [r0]
	strb r0, [r4]
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	ldr r1, =0x02000002
	ands r0, r1
	cmp r0, 0
	beq _0803EF0C
	ldr r0, =gNoOfAllBanks
	ldrb r1, [r0]
	strb r1, [r5]
	ldr r2, =gActiveBank
	movs r0, 0
	strb r0, [r2]
	lsls r1, 24
	cmp r1, 0
	beq _0803EEE0
	adds r4, r2, 0
	ldr r6, =gUnknown_0202421C
	ldr r5, =gBattleOutcome
_0803EE7C:
	ldrb r0, [r4]
	bl GetBankSide
	lsls r0, 24
	cmp r0, 0
	bne _0803EEBC
	ldrb r0, [r4]
	adds r0, r6
	ldrb r0, [r0]
	cmp r0, 0x3
	bne _0803EECE
	ldrb r0, [r5]
	movs r1, 0x2
	b _0803EECA
	.pool
_0803EEBC:
	ldrb r0, [r4]
	adds r0, r6
	ldrb r0, [r0]
	cmp r0, 0x3
	bne _0803EECE
	ldrb r0, [r5]
	movs r1, 0x1
_0803EECA:
	orrs r0, r1
	strb r0, [r5]
_0803EECE:
	ldrb r0, [r4]
	adds r0, 0x1
	strb r0, [r4]
	ldr r1, =gNoOfAllBanks
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r1]
	cmp r0, r1
	bcc _0803EE7C
_0803EEE0:
	ldr r2, =gBattleOutcome
	ldrb r0, [r2]
	movs r1, 0x80
	orrs r0, r1
	strb r0, [r2]
	ldr r0, =gSaveBlock2Ptr
	ldr r1, [r0]
	ldr r0, =0x00000ca9
	adds r1, r0
	ldrb r0, [r1]
	movs r2, 0x8
	orrs r0, r2
	b _0803EF96
	.pool
_0803EF0C:
	ldrb r0, [r4]
	bl GetBankSide
	lsls r0, 24
	cmp r0, 0
	bne _0803EF4C
	ldrb r0, [r4]
	bl sub_803EC20
	lsls r0, 24
	cmp r0, 0
	bne _0803EF98
	ldrb r0, [r4]
	bl sub_8045868
	ldr r1, =gBattleCommunication
	movs r0, 0x3
	strb r0, [r1, 0x5]
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DAB02
	str r0, [r1]
	ldr r1, =gFightStateTracker
	movs r0, 0xA
	b _0803EF96
	.pool
_0803EF4C:
	ldr r1, =gBattleMons
	ldrb r2, [r4]
	movs r0, 0x58
	muls r0, r2
	adds r1, 0x50
	adds r0, r1
	ldr r0, [r0]
	ldr r1, =0x0400e000
	ands r0, r1
	cmp r0, 0
	beq _0803EF8C
	ldr r1, =gBattleCommunication
	movs r0, 0x4
	strb r0, [r1, 0x5]
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DAB02
	str r0, [r1]
	ldr r1, =gFightStateTracker
	movs r0, 0xA
	b _0803EF96
	.pool
_0803EF8C:
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	strb r0, [r5]
	ldr r1, =gBattleOutcome
	movs r0, 0x6
_0803EF96:
	strb r0, [r1]
_0803EF98:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803EE48

	thumb_func_start sub_803EFA8
sub_803EFA8: @ 803EFA8
	ldr r2, =gBankAttacker
	ldr r1, =gTurnOrder
	ldr r0, =gUnknown_02024082
	ldrb r0, [r0]
	adds r0, r1
	ldrb r0, [r0]
	strb r0, [r2]
	ldr r0, =gUnknown_02022E14
	movs r1, 0
	strh r1, [r0]
	ldr r0, =gUnknown_02022E16
	strh r1, [r0]
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DBD58
	ldr r0, [r0]
	str r0, [r1]
	ldr r1, =gFightStateTracker
	movs r0, 0xA
	strb r0, [r1]
	bx lr
	.pool
	thumb_func_end sub_803EFA8

	thumb_func_start bs5_8016AC0
bs5_8016AC0: @ 803EFF0
	ldr r2, =gBankAttacker
	ldr r1, =gTurnOrder
	ldr r0, =gUnknown_02024082
	ldrb r0, [r0]
	adds r0, r1
	ldrb r0, [r0]
	strb r0, [r2]
	ldr r0, =gUnknown_02022E14
	movs r1, 0
	strh r1, [r0]
	ldr r0, =gUnknown_02022E16
	strh r1, [r0]
	ldr r1, =gNumSafariBalls
	ldrb r0, [r1]
	subs r0, 0x1
	strb r0, [r1]
	ldr r1, =gLastUsedItem
	movs r0, 0x5
	strh r0, [r1]
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DBD08
	ldr r0, [r0, 0x14]
	str r0, [r1]
	ldr r1, =gFightStateTracker
	movs r0, 0xA
	strb r0, [r1]
	bx lr
	.pool
	thumb_func_end bs5_8016AC0

	thumb_func_start sub_803F050
sub_803F050: @ 803F050
	push {r4-r6,lr}
	ldr r3, =gBankAttacker
	ldr r1, =gTurnOrder
	ldr r0, =gUnknown_02024082
	ldrb r0, [r0]
	adds r0, r1
	ldrb r0, [r0]
	strb r0, [r3]
	ldr r0, =gUnknown_02022E14
	movs r1, 0
	strh r1, [r0]
	ldr r0, =gUnknown_02022E16
	strh r1, [r0]
	ldr r6, =gBattleCommunication
	ldr r2, =gBattleBufferB
	ldrb r0, [r3]
	lsls r0, 9
	adds r1, r2, 0x1
	adds r0, r1
	ldrb r0, [r0]
	subs r0, 0x1
	strb r0, [r6, 0x5]
	ldr r1, =gLastUsedItem
	ldrb r0, [r3]
	lsls r0, 9
	adds r2, 0x2
	adds r0, r2
	ldrb r0, [r0]
	strh r0, [r1]
	ldr r1, =gBattleResults
	ldrb r0, [r1, 0x1F]
	cmp r0, 0xFE
	bhi _0803F096
	adds r0, 0x1
	strb r0, [r1, 0x1F]
_0803F096:
	ldr r2, =gBattleStruct
	ldr r0, [r2]
	adds r1, r0, 0
	adds r1, 0x7A
	ldrb r0, [r1]
	cmp r0, 0x2
	bhi _0803F0A8
	adds r0, 0x1
	strb r0, [r1]
_0803F0A8:
	ldr r0, [r2]
	adds r3, r0, 0
	adds r3, 0x7B
	ldrb r5, [r3]
	adds r4, r5, 0
	cmp r4, 0x1
	bls _0803F100
	ldr r2, =gUnknown_0831BCE0
	adds r0, 0x7A
	ldrb r1, [r0]
	lsls r0, r1, 1
	adds r0, r1
	ldrb r6, [r6, 0x5]
	adds r0, r6
	adds r0, r2
	ldrb r0, [r0]
	cmp r4, r0
	bcs _0803F0FC
	movs r0, 0x1
	b _0803F0FE
	.pool
_0803F0FC:
	subs r0, r5, r0
_0803F0FE:
	strb r0, [r3]
_0803F100:
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DBD58
	ldr r0, [r0, 0x8]
	str r0, [r1]
	ldr r1, =gFightStateTracker
	movs r0, 0xA
	strb r0, [r1]
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803F050

	thumb_func_start sub_803F120
sub_803F120: @ 803F120
	push {r4,lr}
	ldr r2, =gBankAttacker
	ldr r1, =gTurnOrder
	ldr r0, =gUnknown_02024082
	ldrb r0, [r0]
	adds r0, r1
	ldrb r0, [r0]
	strb r0, [r2]
	ldr r0, =gUnknown_02022E14
	movs r4, 0
	strh r4, [r0]
	ldr r0, =gUnknown_02022E16
	strh r4, [r0]
	ldr r3, =gBattleStruct
	ldr r0, [r3]
	adds r2, r0, 0
	adds r2, 0x7C
	ldr r1, =gUnknown_0831BCEF
	adds r0, 0x79
	ldrb r0, [r0]
	adds r0, r1
	ldrb r0, [r0]
	ldrb r1, [r2]
	adds r0, r1
	strb r0, [r2]
	ldr r0, [r3]
	adds r1, r0, 0
	adds r1, 0x7C
	ldrb r0, [r1]
	cmp r0, 0x14
	bls _0803F162
	movs r0, 0x14
	strb r0, [r1]
_0803F162:
	ldr r0, [r3]
	adds r2, r0, 0
	adds r2, 0x7B
	ldr r1, =gUnknown_0831BCF3
	adds r0, 0x79
	ldrb r0, [r0]
	adds r0, r1
	ldrb r0, [r0]
	ldrb r1, [r2]
	adds r0, r1
	strb r0, [r2]
	ldr r0, [r3]
	adds r1, r0, 0
	adds r1, 0x7B
	ldrb r0, [r1]
	cmp r0, 0x14
	bls _0803F188
	movs r0, 0x14
	strb r0, [r1]
_0803F188:
	ldr r0, [r3]
	adds r1, r0, 0
	adds r1, 0x79
	ldrb r0, [r1]
	cmp r0, 0x2
	bhi _0803F1C4
	adds r0, 0x1
	strb r0, [r1]
	ldr r0, =gBattleCommunication
	strb r4, [r0, 0x5]
	b _0803F1CA
	.pool
_0803F1C4:
	ldr r1, =gBattleCommunication
	movs r0, 0x1
	strb r0, [r1, 0x5]
_0803F1CA:
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DBD58
	ldr r0, [r0, 0x4]
	str r0, [r1]
	ldr r1, =gFightStateTracker
	movs r0, 0xA
	strb r0, [r1]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803F120

	thumb_func_start bs8_exit_by_flight
bs8_exit_by_flight: @ 803F1F0
	push {r4,lr}
	ldr r2, =gBankAttacker
	ldr r1, =gTurnOrder
	ldr r4, =gUnknown_02024082
	ldrb r0, [r4]
	adds r0, r1
	ldrb r0, [r0]
	strb r0, [r2]
	movs r0, 0x11
	bl PlaySE
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	strb r0, [r4]
	ldr r1, =gBattleOutcome
	movs r0, 0x4
	strb r0, [r1]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end bs8_exit_by_flight

	thumb_func_start bs9_8016C9C
bs9_8016C9C: @ 803F22C
	ldr r3, =gBankAttacker
	ldr r1, =gTurnOrder
	ldr r0, =gUnknown_02024082
	ldrb r0, [r0]
	adds r0, r1
	ldrb r2, [r0]
	strb r2, [r3]
	ldr r0, =gUnknown_02022E14
	movs r1, 0
	strh r1, [r0]
	ldr r0, =gUnknown_02022E16
	strh r1, [r0]
	ldr r1, =gBattleTextBuff1
	movs r0, 0xFD
	strb r0, [r1]
	movs r0, 0x7
	strb r0, [r1, 0x1]
	strb r2, [r1, 0x2]
	ldr r2, =gBattlePartyID
	ldrb r0, [r3]
	lsls r0, 1
	adds r0, r2
	ldrh r0, [r0]
	strb r0, [r1, 0x3]
	movs r0, 0xFF
	strb r0, [r1, 0x4]
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =gUnknown_082DBD58
	ldr r0, [r0, 0xC]
	str r0, [r1]
	ldr r1, =gFightStateTracker
	movs r0, 0xA
	strb r0, [r1]
	ldr r1, =gUnknown_0202407A
	movs r0, 0xC
	strb r0, [r1, 0x1]
	bx lr
	.pool
	thumb_func_end bs9_8016C9C

	thumb_func_start bsB_exit_by_move
bsB_exit_by_move: @ 803F2A4
	push {lr}
	bl sub_8041728
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _0803F2C0
	ldr r0, =gBattleStruct
	ldr r0, [r0]
	adds r0, 0x4D
	strb r1, [r0]
	ldr r1, =gFightStateTracker
	movs r0, 0xC
	strb r0, [r1]
_0803F2C0:
	pop {r0}
	bx r0
	.pool
	thumb_func_end bsB_exit_by_move

	thumb_func_start bsD_proceed
bsD_proceed: @ 803F2CC
	ldr r1, =gUnknown_02024082
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	ldr r3, =gFightStateTracker
	ldr r2, =gUnknown_0202407A
	ldrb r0, [r1]
	adds r0, r2
	ldrb r0, [r0]
	strb r0, [r3]
	ldr r2, =gHitMarker
	ldr r0, [r2]
	ldr r1, =0xf1e892af
	ands r0, r1
	str r0, [r2]
	bx lr
	.pool
	thumb_func_end bsD_proceed

	thumb_func_start bsC_8016D70
bsC_8016D70: @ 803F300
	push {r4-r6,lr}
	ldr r1, =gTurnOrder
	ldr r2, =gUnknown_02024082
	ldrb r0, [r2]
	adds r0, r1
	ldrb r0, [r0]
	ldr r6, =gBattleStruct
	ldr r1, [r6]
	adds r0, r1
	adds r0, 0x5C
	movs r1, 0x6
	strb r1, [r0]
	ldrb r0, [r2]
	adds r0, 0x1
	strb r0, [r2]
	ldr r3, =gFightStateTracker
	ldr r1, =gUnknown_0202407A
	ldrb r0, [r2]
	adds r0, r1
	ldrb r0, [r0]
	strb r0, [r3]
	bl sub_803D6A0
	ldr r2, =gHitMarker
	ldr r0, [r2]
	ldr r1, =0xf1e892af
	ands r0, r1
	str r0, [r2]
	ldr r0, =gCurrentMove
	movs r1, 0
	strh r1, [r0]
	ldr r0, =gBattleMoveDamage
	movs r4, 0
	str r4, [r0]
	ldr r0, =gBattleMoveFlags
	strb r1, [r0]
	ldr r5, =gBattleScripting
	strb r1, [r5, 0x18]
	strb r1, [r5, 0x19]
	ldr r2, =gUnknown_02024250
	ldr r3, =gBankAttacker
	ldrb r0, [r3]
	lsls r0, 1
	adds r0, r2
	strh r4, [r0]
	ldr r2, =gUnknown_02024258
	ldrb r0, [r3]
	lsls r0, 1
	adds r0, r2
	strh r4, [r0]
	ldr r0, [r6]
	strb r1, [r0, 0x13]
	ldr r0, =gDynamicBasePower
	strh r4, [r0]
	strb r1, [r5, 0x14]
	ldr r0, =gBattleCommunication
	strb r1, [r0, 0x3]
	strb r1, [r0, 0x4]
	strb r1, [r5, 0x16]
	ldr r0, =gBattleResources
	ldr r0, [r0]
	ldr r0, [r0, 0x8]
	adds r0, 0x20
	strb r1, [r0]
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end bsC_8016D70

	thumb_func_start get_battle_side_of_something
get_battle_side_of_something: @ 803F3CC
	push {lr}
	lsls r0, 24
	lsrs r1, r0, 24
	movs r0, 0
	cmp r1, 0xE
	bhi _0803F47A
	lsls r0, r1, 2
	ldr r1, =_0803F3E8
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_0803F3E8:
	.4byte _0803F424
	.4byte _0803F430
	.4byte _0803F43C
	.4byte _0803F458
	.4byte _0803F464
	.4byte _0803F458
	.4byte _0803F464
	.4byte _0803F448
	.4byte _0803F464
	.4byte _0803F464
	.4byte _0803F44C
	.4byte _0803F464
	.4byte _0803F468
	.4byte _0803F46C
	.4byte _0803F470
_0803F424:
	ldr r0, =gBankTarget
	ldrb r0, [r0]
	b _0803F47A
	.pool
_0803F430:
	ldr r0, =gBankAttacker
	ldrb r0, [r0]
	b _0803F47A
	.pool
_0803F43C:
	ldr r0, =gEffectBank
	ldrb r0, [r0]
	b _0803F47A
	.pool
_0803F448:
	movs r0, 0
	b _0803F47A
_0803F44C:
	ldr r0, =gBattleScripting
	ldrb r0, [r0, 0x17]
	b _0803F47A
	.pool
_0803F458:
	ldr r0, =gBank1
	ldrb r0, [r0]
	b _0803F47A
	.pool
_0803F464:
	movs r0, 0
	b _0803F472
_0803F468:
	movs r0, 0x1
	b _0803F472
_0803F46C:
	movs r0, 0x2
	b _0803F472
_0803F470:
	movs r0, 0x3
_0803F472:
	bl GetBankByPlayerAI
	lsls r0, 24
	lsrs r0, 24
_0803F47A:
	pop {r1}
	bx r1
	thumb_func_end get_battle_side_of_something

	thumb_func_start sub_803F480
sub_803F480: @ 803F480
	push {r4-r7,lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r5, r1, 24
	lsls r2, 16
	lsrs r2, 16
	ldr r1, =gBattleMons
	movs r4, 0x58
	muls r0, r4
	adds r0, r1
	adds r0, 0x20
	ldrb r0, [r0]
	mov r12, r1
	cmp r0, 0x2E
	bne _0803F532
	movs r3, 0
	adds r0, r5, 0
	muls r0, r4
	adds r1, 0xC
	adds r1, r0, r1
	b _0803F4BC
	.pool
_0803F4B4:
	adds r1, 0x2
	adds r3, 0x1
	cmp r3, 0x3
	bgt _0803F4C2
_0803F4BC:
	ldrh r0, [r1]
	cmp r0, r2
	bne _0803F4B4
_0803F4C2:
	cmp r3, 0x4
	beq _0803F532
	movs r7, 0x58
	adds r2, r5, 0
	muls r2, r7
	adds r0, r3, r2
	mov r6, r12
	adds r6, 0x24
	adds r1, r0, r6
	ldrb r0, [r1]
	cmp r0, 0
	beq _0803F4DE
	subs r0, 0x1
	strb r0, [r1]
_0803F4DE:
	mov r0, r12
	adds r0, 0x50
	adds r0, r2, r0
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 14
	ands r0, r1
	cmp r0, 0
	bne _0803F532
	ldr r1, =gDisableStructs
	lsls r0, r5, 3
	subs r0, r5
	lsls r0, 2
	adds r0, r1
	ldrb r1, [r0, 0x18]
	lsrs r1, 4
	ldr r2, =gBitTable
	lsls r0, r3, 2
	adds r0, r2
	ldr r0, [r0]
	ands r1, r0
	cmp r1, 0
	bne _0803F532
	ldr r4, =gActiveBank
	strb r5, [r4]
	adds r1, r3, 0
	adds r1, 0x9
	lsls r1, 24
	lsrs r1, 24
	ldrb r0, [r4]
	muls r0, r7
	adds r0, r6
	adds r0, r3
	str r0, [sp]
	movs r0, 0
	movs r2, 0
	movs r3, 0x1
	bl EmitSetAttributes
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
_0803F532:
	add sp, 0x4
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803F480

	thumb_func_start sub_803F548
sub_803F548: @ 803F548
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x4
	lsls r0, 24
	lsrs r5, r0, 24
	movs r0, 0x4
	mov r8, r0
	adds r0, r5, 0
	bl GetBankSide
	lsls r0, 24
	lsrs r0, 24
	mov r9, r0
	movs r4, 0
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r4, r0
	bge _0803F5F0
	ldr r1, =gBattleMons
	movs r0, 0x58
	adds r7, r5, 0
	muls r7, r0
	adds r1, 0xC
	mov r10, r1
_0803F57E:
	lsls r0, r4, 24
	lsrs r0, 24
	bl GetBankSide
	lsls r0, 24
	lsrs r0, 24
	adds r6, r4, 0x1
	cmp r9, r0
	beq _0803F5E6
	ldr r0, =gBattleMons
	movs r3, 0x58
	adds r1, r4, 0
	muls r1, r3
	adds r1, r0
	adds r1, 0x20
	ldrb r1, [r1]
	adds r4, r0, 0
	cmp r1, 0x2E
	bne _0803F5E6
	movs r2, 0
	adds r0, r5, 0
	muls r0, r3
	adds r1, r4, 0
	adds r1, 0xC
	adds r0, r1
	ldrh r0, [r0]
	movs r1, 0x8F
	lsls r1, 1
	cmp r0, r1
	beq _0803F5CE
	adds r3, r1, 0
	mov r0, r10
	adds r1, r7, r0
_0803F5C0:
	adds r1, 0x2
	adds r2, 0x1
	cmp r2, 0x3
	bgt _0803F5CE
	ldrh r0, [r1]
	cmp r0, r3
	bne _0803F5C0
_0803F5CE:
	cmp r2, 0x4
	beq _0803F5E6
	mov r8, r2
	adds r1, r2, r7
	adds r0, r4, 0
	adds r0, 0x24
	adds r1, r0
	ldrb r0, [r1]
	cmp r0, 0
	beq _0803F5E6
	subs r0, 0x1
	strb r0, [r1]
_0803F5E6:
	adds r4, r6, 0
	ldr r0, =gNoOfAllBanks
	ldrb r0, [r0]
	cmp r4, r0
	blt _0803F57E
_0803F5F0:
	mov r1, r8
	cmp r1, 0x4
	beq _0803F658
	ldr r6, =gBattleMons
	movs r3, 0x58
	adds r0, r5, 0
	muls r0, r3
	adds r1, r6, 0
	adds r1, 0x50
	adds r0, r1
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 14
	ands r0, r1
	cmp r0, 0
	bne _0803F658
	ldr r1, =gDisableStructs
	lsls r0, r5, 3
	subs r0, r5
	lsls r0, 2
	adds r0, r1
	ldrb r1, [r0, 0x18]
	lsrs r1, 4
	ldr r2, =gBitTable
	mov r4, r8
	lsls r0, r4, 2
	adds r0, r2
	ldr r0, [r0]
	ands r1, r0
	cmp r1, 0
	bne _0803F658
	ldr r4, =gActiveBank
	strb r5, [r4]
	mov r1, r8
	adds r1, 0x9
	lsls r1, 24
	lsrs r1, 24
	ldrb r0, [r4]
	muls r0, r3
	adds r2, r6, 0
	adds r2, 0x24
	adds r0, r2
	add r0, r8
	str r0, [sp]
	movs r0, 0
	movs r2, 0
	movs r3, 0x1
	bl EmitSetAttributes
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
_0803F658:
	add sp, 0x4
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803F548

	thumb_func_start sub_803F67C
sub_803F67C: @ 803F67C
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x4
	lsls r0, 24
	lsrs r3, r0, 24
	movs r6, 0x4
	movs r1, 0
	ldr r0, =gNoOfAllBanks
	mov r8, r0
	ldrb r0, [r0]
	cmp r1, r0
	bge _0803F6FE
	ldr r7, =gBattleMons
	movs r2, 0x58
	mov r12, r2
	mov r5, r12
	muls r5, r3
	adds r0, r7, 0
	adds r0, 0xC
	adds r2, r5, r0
	mov r10, r2
	mov r9, r5
_0803F6AE:
	mov r0, r12
	muls r0, r1
	adds r0, r7
	adds r0, 0x20
	ldrb r0, [r0]
	adds r4, r1, 0x1
	cmp r0, 0x2E
	bne _0803F6F4
	cmp r1, r3
	beq _0803F6F4
	movs r2, 0
	mov r1, r10
	ldrh r0, [r1]
	cmp r0, 0xC3
	beq _0803F6DE
	ldr r1, =gBattleMons + 0xC
	add r1, r9
_0803F6D0:
	adds r1, 0x2
	adds r2, 0x1
	cmp r2, 0x3
	bgt _0803F6DE
	ldrh r0, [r1]
	cmp r0, 0xC3
	bne _0803F6D0
_0803F6DE:
	cmp r2, 0x4
	beq _0803F6F4
	adds r6, r2, 0
	adds r0, r6, r5
	ldr r2, =gBattleMons + 0x24
	adds r1, r0, r2
	ldrb r0, [r1]
	cmp r0, 0
	beq _0803F6F4
	subs r0, 0x1
	strb r0, [r1]
_0803F6F4:
	adds r1, r4, 0
	mov r0, r8
	ldrb r0, [r0]
	cmp r1, r0
	blt _0803F6AE
_0803F6FE:
	cmp r6, 0x4
	beq _0803F762
	ldr r7, =gBattleMons
	movs r5, 0x58
	adds r0, r3, 0
	muls r0, r5
	adds r1, r7, 0
	adds r1, 0x50
	adds r0, r1
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 14
	ands r0, r1
	cmp r0, 0
	bne _0803F762
	ldr r1, =gDisableStructs
	lsls r0, r3, 3
	subs r0, r3
	lsls r0, 2
	adds r0, r1
	ldrb r1, [r0, 0x18]
	lsrs r1, 4
	ldr r2, =gBitTable
	lsls r0, r6, 2
	adds r0, r2
	ldr r0, [r0]
	ands r1, r0
	cmp r1, 0
	bne _0803F762
	ldr r4, =gActiveBank
	strb r3, [r4]
	adds r1, r6, 0
	adds r1, 0x9
	lsls r1, 24
	lsrs r1, 24
	ldrb r0, [r4]
	muls r0, r5
	adds r2, r7, 0
	adds r2, 0x24
	adds r0, r2
	adds r0, r6
	str r0, [sp]
	movs r0, 0
	movs r2, 0
	movs r3, 0x1
	bl EmitSetAttributes
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
_0803F762:
	add sp, 0x4
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803F67C

	thumb_func_start sub_803F790
sub_803F790: @ 803F790
	push {r4,r5,lr}
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x2
	ands r0, r1
	cmp r0, 0
	beq _0803F7D0
	movs r2, 0
	ldr r4, =gNoOfAllBanks
	ldrb r0, [r4]
	cmp r2, r0
	bge _0803F7EE
	ldr r3, =gBattleExecBuffer
	ldr r5, =gBitTable
_0803F7AC:
	ldm r5!, {r1}
	lsls r1, 28
	ldr r0, [r3]
	orrs r0, r1
	str r0, [r3]
	adds r2, 0x1
	ldrb r0, [r4]
	cmp r2, r0
	blt _0803F7AC
	b _0803F7EE
	.pool
_0803F7D0:
	movs r2, 0
	ldr r4, =gNoOfAllBanks
	ldrb r0, [r4]
	cmp r2, r0
	bge _0803F7EE
	ldr r3, =gBattleExecBuffer
	ldr r5, =gBitTable
_0803F7DE:
	ldr r0, [r3]
	ldm r5!, {r1}
	orrs r0, r1
	str r0, [r3]
	adds r2, 0x1
	ldrb r0, [r4]
	cmp r2, r0
	blt _0803F7DE
_0803F7EE:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803F790

	thumb_func_start MarkBufferBankForExecution
MarkBufferBankForExecution: @ 803F800
	push {lr}
	lsls r0, 24
	lsrs r3, r0, 24
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x2
	ands r0, r1
	cmp r0, 0
	beq _0803F834
	ldr r2, =gBattleExecBuffer
	ldr r1, =gBitTable
	lsls r0, r3, 2
	adds r0, r1
	ldr r1, [r0]
	lsls r1, 28
	ldr r0, [r2]
	orrs r0, r1
	str r0, [r2]
	b _0803F844
	.pool
_0803F834:
	ldr r2, =gBattleExecBuffer
	ldr r1, =gBitTable
	lsls r0, r3, 2
	adds r0, r1
	ldr r1, [r2]
	ldr r0, [r0]
	orrs r1, r0
	str r1, [r2]
_0803F844:
	pop {r0}
	bx r0
	.pool
	thumb_func_end MarkBufferBankForExecution

	thumb_func_start sub_803F850
sub_803F850: @ 803F850
	push {r4-r7,lr}
	lsls r0, 24
	lsrs r7, r0, 24
	movs r4, 0
	ldr r5, =gBattleExecBuffer
	ldr r1, =gBitTable
	lsls r0, r7, 2
	adds r6, r0, r1
	b _0803F87A
	.pool
_0803F86C:
	lsls r0, r4, 2
	ldr r1, [r6]
	lsls r1, r0
	ldr r0, [r5]
	orrs r0, r1
	str r0, [r5]
	adds r4, 0x1
_0803F87A:
	bl sub_8009FCC
	lsls r0, 24
	lsrs r0, 24
	cmp r4, r0
	blt _0803F86C
	ldr r2, =gBattleExecBuffer
	movs r1, 0x80
	lsls r1, 21
	lsls r1, r7
	ldr r0, [r2]
	bics r0, r1
	str r0, [r2]
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803F850

	thumb_func_start CancelMultiTurnMoves
CancelMultiTurnMoves: @ 803F8A0
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gBattleMons
	movs r2, 0x58
	adds r3, r0, 0
	muls r3, r2
	adds r1, 0x50
	adds r3, r1
	ldr r1, [r3]
	ldr r2, =0xffffefff
	ands r1, r2
	ldr r2, =0xfffff3ff
	ands r1, r2
	movs r2, 0x71
	negs r2, r2
	ands r1, r2
	ldr r2, =0xfffffcff
	ands r1, r2
	str r1, [r3]
	ldr r1, =gStatuses3
	lsls r2, r0, 2
	adds r2, r1
	ldr r1, [r2]
	ldr r3, =0xfffbff3f
	ands r1, r3
	str r1, [r2]
	ldr r2, =gDisableStructs
	lsls r1, r0, 3
	subs r1, r0
	lsls r1, 2
	adds r1, r2
	ldrb r2, [r1, 0x11]
	movs r0, 0x10
	negs r0, r0
	ands r0, r2
	strb r0, [r1, 0x11]
	movs r0, 0
	strb r0, [r1, 0x10]
	bx lr
	.pool
	thumb_func_end CancelMultiTurnMoves

	thumb_func_start sub_803F90C
sub_803F90C: @ 803F90C
	push {lr}
	lsls r0, 24
	ldr r1, =gProtectStructs
	lsrs r0, 20
	adds r1, r0, r1
	ldrb r0, [r1]
	lsrs r0, 7
	cmp r0, 0
	bne _0803F952
	ldrb r2, [r1, 0x1]
	lsls r0, r2, 30
	cmp r0, 0
	blt _0803F952
	lsls r0, r2, 26
	cmp r0, 0
	blt _0803F952
	lsls r0, r2, 25
	cmp r0, 0
	blt _0803F952
	lsrs r0, r2, 7
	cmp r0, 0
	bne _0803F952
	ldrb r1, [r1, 0x2]
	lsls r0, r1, 31
	cmp r0, 0
	bne _0803F952
	lsls r0, r1, 30
	cmp r0, 0
	blt _0803F952
	lsls r0, r1, 29
	cmp r0, 0
	blt _0803F952
	lsls r0, r2, 31
	cmp r0, 0
	beq _0803F95C
_0803F952:
	movs r0, 0x1
	b _0803F95E
	.pool
_0803F95C:
	movs r0, 0
_0803F95E:
	pop {r1}
	bx r1
	thumb_func_end sub_803F90C

	thumb_func_start b_std_message
b_std_message: @ 803F964
	push {r4,lr}
	adds r2, r0, 0
	lsls r2, 16
	lsrs r2, 16
	ldr r4, =gActiveBank
	strb r1, [r4]
	movs r0, 0
	adds r1, r2, 0
	bl dp01_build_cmdbuf_x10_TODO
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end b_std_message

	thumb_func_start sub_803F988
sub_803F988: @ 803F988
	push {r4-r6,lr}
	movs r3, 0
	ldr r0, =gUnknown_020243FE
	strb r3, [r0]
	strb r3, [r0, 0x1]
	movs r1, 0
	ldr r0, =gNoOfAllBanks
	ldrb r2, [r0]
	adds r6, r0, 0
	cmp r1, r2
	bge _0803F9B6
	ldr r5, =gBitTable
	adds r4, r2, 0
	ldr r2, =gBattlePartyID
_0803F9A4:
	ldrh r0, [r2]
	lsls r0, 2
	adds r0, r5
	ldr r0, [r0]
	orrs r3, r0
	adds r2, 0x4
	adds r1, 0x2
	cmp r1, r4
	blt _0803F9A4
_0803F9B6:
	movs r1, 0x1
	adds r2, r6, 0
	ldrb r0, [r2]
	cmp r1, r0
	bge _0803F9D6
	ldr r5, =gUnknown_020243FE
	movs r4, 0x2
_0803F9C4:
	adds r0, r1, 0
	ands r0, r4
	asrs r0, 1
	adds r0, r5
	strb r3, [r0]
	adds r1, 0x2
	ldrb r0, [r2]
	cmp r1, r0
	blt _0803F9C4
_0803F9D6:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803F988

	thumb_func_start sub_803F9EC
sub_803F9EC: @ 803F9EC
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	lsls r0, 24
	lsrs r5, r0, 24
	movs r4, 0
	adds r0, r5, 0
	bl GetBankSide
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0803FA50
	movs r0, 0x2
	ands r0, r5
	lsls r0, 24
	lsrs r0, 25
	mov r12, r0
	ldr r1, =gUnknown_020243FE
	adds r0, r1
	strb r4, [r0]
	adds r5, r4, 0
	ldr r0, =gNoOfAllBanks
	ldrb r2, [r0]
	mov r8, r1
	cmp r4, r2
	bge _0803FA4A
	ldr r0, =gAbsentBankFlags
	ldrb r7, [r0]
	ldr r1, =gBitTable
	adds r6, r2, 0
	ldr r3, =gBattlePartyID
	adds r2, r1, 0
_0803FA2E:
	ldr r0, [r2]
	ands r0, r7
	cmp r0, 0
	bne _0803FA40
	ldrh r0, [r3]
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	orrs r4, r0
_0803FA40:
	adds r3, 0x4
	adds r2, 0x8
	adds r5, 0x2
	cmp r5, r6
	blt _0803FA2E
_0803FA4A:
	mov r0, r12
	add r0, r8
	strb r4, [r0]
_0803FA50:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803F9EC

	thumb_func_start sub_803FA70
sub_803FA70: @ 803FA70
	push {r4-r7,lr}
	lsls r0, 24
	lsrs r4, r0, 24
	adds r0, r4, 0
	bl GetBankSide
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0803FA8C
	adds r0, r4, 0
	bl sub_803F9EC
	b _0803FAC2
_0803FA8C:
	movs r3, 0x1
	ldr r5, =gNoOfAllBanks
	ldrb r0, [r5]
	cmp r3, r0
	bge _0803FAC2
	ldr r0, =gUnknown_020243FE
	mov r12, r0
	movs r7, 0x2
	ldr r6, =gBitTable
	ldr r1, =gBattlePartyID
	lsls r0, r4, 1
	adds r4, r0, r1
_0803FAA4:
	adds r2, r3, 0
	ands r2, r7
	asrs r2, 1
	add r2, r12
	ldrh r0, [r4]
	lsls r0, 2
	adds r0, r6
	ldr r0, [r0]
	ldrb r1, [r2]
	orrs r0, r1
	strb r0, [r2]
	adds r3, 0x1
	ldrb r0, [r5]
	cmp r3, r0
	blt _0803FAA4
_0803FAC2:
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_803FA70
    
    .align 2, 0 @ Don't pad with nop.
    