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

	.syntax unified

	.text

    
	thumb_func_start AllocateBattleResrouces
AllocateBattleResrouces: @ 8056F28
	push {r4-r6,lr}
	ldr r5, =gBattleResources
	ldr r6, =gBattleTypeFlags
	ldr r0, [r6]
	movs r1, 0x80
	lsls r1, 19
	ands r0, r1
	cmp r0, 0
	beq _08056F3E
	bl sub_81D55D0
_08056F3E:
	ldr r4, =gBattleStruct
	movs r0, 0xA9
	lsls r0, 2
	bl AllocZeroed
	str r0, [r4]
	movs r0, 0x20
	bl AllocZeroed
	str r0, [r5]
	movs r0, 0xA0
	bl AllocZeroed
	ldr r1, [r5]
	str r0, [r1]
	movs r0, 0x10
	bl AllocZeroed
	ldr r1, [r5]
	str r0, [r1, 0x4]
	movs r0, 0x24
	bl AllocZeroed
	ldr r1, [r5]
	str r0, [r1, 0x8]
	movs r0, 0x24
	bl AllocZeroed
	ldr r1, [r5]
	str r0, [r1, 0xC]
	movs r0, 0xC
	bl AllocZeroed
	ldr r1, [r5]
	str r0, [r1, 0x10]
	movs r0, 0x1C
	bl AllocZeroed
	ldr r1, [r5]
	str r0, [r1, 0x14]
	movs r0, 0x54
	bl AllocZeroed
	ldr r1, [r5]
	str r0, [r1, 0x18]
	movs r0, 0x24
	bl AllocZeroed
	ldr r1, [r5]
	str r0, [r1, 0x1C]
	ldr r4, =gLinkBattleSendBuffer
	movs r5, 0x80
	lsls r5, 5
	adds r0, r5, 0
	bl AllocZeroed
	str r0, [r4]
	ldr r4, =gLinkBattleRecvBuffer
	adds r0, r5, 0
	bl AllocZeroed
	str r0, [r4]
	ldr r4, =gUnknown_0202305C
	movs r0, 0x80
	lsls r0, 6
	bl AllocZeroed
	str r0, [r4]
	ldr r4, =gUnknown_02023060
	adds r0, r5, 0
	bl AllocZeroed
	str r0, [r4]
	ldr r0, [r6]
	movs r1, 0x80
	lsls r1, 20
	ands r0, r1
	cmp r0, 0
	beq _08056FFA
	ldr r0, =0x00004054
	bl VarGet
	lsls r0, 16
	lsrs r0, 16
	ldr r2, =gSaveBlock1Ptr
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 5
	ldr r0, =0x00001a9c
	adds r1, r0
	ldr r0, [r2]
	adds r0, r1
	bl CreateSecretBaseEnemyParty
_08056FFA:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end AllocateBattleResrouces

	thumb_func_start FreeBattleResources
FreeBattleResources: @ 8057028
	push {r4-r6,lr}
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x80
	lsls r1, 19
	ands r0, r1
	cmp r0, 0
	beq _0805703C
	bl sub_81D5694
_0805703C:
	ldr r6, =gBattleResources
	ldr r0, [r6]
	cmp r0, 0
	beq _080570D0
	ldr r4, =gBattleStruct
	ldr r0, [r4]
	bl Free
	movs r5, 0
	str r5, [r4]
	ldr r0, [r6]
	ldr r0, [r0]
	bl Free
	ldr r0, [r6]
	str r5, [r0]
	ldr r0, [r0, 0x4]
	bl Free
	ldr r0, [r6]
	str r5, [r0, 0x4]
	ldr r0, [r0, 0x8]
	bl Free
	ldr r0, [r6]
	str r5, [r0, 0x8]
	ldr r0, [r0, 0xC]
	bl Free
	ldr r0, [r6]
	str r5, [r0, 0xC]
	ldr r0, [r0, 0x10]
	bl Free
	ldr r0, [r6]
	str r5, [r0, 0x10]
	ldr r0, [r0, 0x14]
	bl Free
	ldr r0, [r6]
	str r5, [r0, 0x14]
	ldr r0, [r0, 0x18]
	bl Free
	ldr r0, [r6]
	str r5, [r0, 0x18]
	ldr r0, [r0, 0x1C]
	bl Free
	ldr r0, [r6]
	str r5, [r0, 0x1C]
	bl Free
	str r5, [r6]
	ldr r4, =gLinkBattleSendBuffer
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gLinkBattleRecvBuffer
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_0202305C
	ldr r0, [r4]
	bl Free
	str r5, [r4]
	ldr r4, =gUnknown_02023060
	ldr r0, [r4]
	bl Free
	str r5, [r4]
_080570D0:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end FreeBattleResources

	thumb_func_start AdjustFriendshipOnBattleFaint
AdjustFriendshipOnBattleFaint: @ 80570F4
	push {r4,r5,lr}
	lsls r0, 24
	lsrs r5, r0, 24
	ldr r0, =gBattleTypeFlags
	ldr r0, [r0]
	movs r1, 0x1
	ands r0, r1
	cmp r0, 0
	beq _08057140
	movs r0, 0x1
	bl GetBankByIdentity
	lsls r0, 24
	lsrs r4, r0, 24
	movs r0, 0x3
	bl GetBankByIdentity
	lsls r0, 24
	lsrs r3, r0, 24
	ldr r2, =gBattleMons
	movs r0, 0x58
	adds r1, r3, 0
	muls r1, r0
	adds r1, r2
	adds r1, 0x2A
	muls r0, r4
	adds r0, r2
	adds r0, 0x2A
	ldrb r1, [r1]
	ldrb r0, [r0]
	cmp r1, r0
	bls _0805714A
	adds r4, r3, 0
	b _0805714A
	.pool
_08057140:
	movs r0, 0x1
	bl GetBankByIdentity
	lsls r0, 24
	lsrs r4, r0, 24
_0805714A:
	ldr r2, =gBattleMons
	movs r1, 0x58
	adds r0, r4, 0
	muls r0, r1
	adds r0, r2
	adds r3, r0, 0
	adds r3, 0x2A
	adds r0, r5, 0
	muls r0, r1
	adds r0, r2
	adds r1, r0, 0
	adds r1, 0x2A
	ldrb r0, [r3]
	ldrb r2, [r1]
	cmp r0, r2
	bls _080571B8
	ldrb r1, [r1]
	subs r0, r1
	cmp r0, 0x1D
	ble _08057198
	ldr r1, =gBattlePartyID
	lsls r0, r5, 1
	adds r0, r1
	ldrh r1, [r0]
	movs r0, 0x64
	muls r0, r1
	ldr r1, =gPlayerParty
	adds r0, r1
	movs r1, 0x8
	bl AdjustFriendship
	b _080571CE
	.pool
_08057198:
	ldr r1, =gBattlePartyID
	lsls r0, r5, 1
	adds r0, r1
	ldrh r1, [r0]
	movs r0, 0x64
	muls r0, r1
	ldr r1, =gPlayerParty
	adds r0, r1
	movs r1, 0x6
	bl AdjustFriendship
	b _080571CE
	.pool
_080571B8:
	ldr r1, =gBattlePartyID
	lsls r0, r5, 1
	adds r0, r1
	ldrh r1, [r0]
	movs r0, 0x64
	muls r0, r1
	ldr r1, =gPlayerParty
	adds r0, r1
	movs r1, 0x6
	bl AdjustFriendship
_080571CE:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end AdjustFriendshipOnBattleFaint

	thumb_func_start sub_80571DC
sub_80571DC: @ 80571DC
	push {r4-r7,lr}
	lsls r0, 24
	lsrs r4, r0, 24
	lsls r1, 24
	lsrs r7, r1, 24
	adds r0, r4, 0
	bl GetBankSide
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _08057248
	movs r2, 0
	ldr r6, =gBattlePartyID
	lsls r3, r4, 1
	ldr r5, =gUnknown_0203CF00
	ldr r4, =gBattleStruct
_080571FE:
	adds r0, r2, r5
	ldr r1, [r4]
	adds r1, r2, r1
	adds r1, 0x60
	ldrb r1, [r1]
	strb r1, [r0]
	adds r2, 0x1
	cmp r2, 0x2
	ble _080571FE
	adds r0, r3, r6
	ldrb r0, [r0]
	bl pokemon_order_func
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	adds r0, r7, 0
	bl pokemon_order_func
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl sub_81B8FB0
	movs r2, 0
	ldr r4, =gBattleStruct
	ldr r3, =gUnknown_0203CF00
_08057236:
	ldr r0, [r4]
	adds r0, r2, r0
	adds r0, 0x60
	adds r1, r2, r3
	ldrb r1, [r1]
	strb r1, [r0]
	adds r2, 0x1
	cmp r2, 0x2
	ble _08057236
_08057248:
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80571DC

	thumb_func_start sub_805725C
sub_805725C: @ 805725C
	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
	mov r9, r0
	movs r0, 0
	mov r8, r0
	ldr r1, =gBattleCommunication
	mov r10, r1
	b _08057284
	.pool
_0805727C:
	mov r2, r8
	cmp r2, 0
	beq _08057284
	b _08057406
_08057284:
	mov r1, r10
	ldrb r0, [r1]
	cmp r0, 0x1
	bne _0805728E
	b _08057390
_0805728E:
	cmp r0, 0x1
	ble _08057294
	b _080573FC
_08057294:
	cmp r0, 0
	beq _0805729A
	b _080573FC
_0805729A:
	ldr r6, =gBattleMons
	movs r0, 0x58
	mov r5, r9
	muls r5, r0
	adds r0, r6, 0
	adds r0, 0x4C
	adds r4, r5, r0
	ldr r0, [r4]
	movs r7, 0x7
	ands r0, r7
	cmp r0, 0
	beq _08057372
	mov r0, r9
	bl UproarWakeUpCheck
	lsls r0, 24
	cmp r0, 0
	beq _080572FC
	ldr r0, [r4]
	movs r1, 0x8
	negs r1, r1
	ands r0, r1
	str r0, [r4]
	adds r2, r6, 0
	adds r2, 0x50
	adds r2, r5, r2
	ldr r0, [r2]
	ldr r1, =0xf7ffffff
	ands r0, r1
	str r0, [r2]
	bl BattleScriptPushCursor
	movs r0, 0x1
	mov r2, r10
	strb r0, [r2, 0x5]
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =BattleScript_MoveUsedWokeUp
	str r0, [r1]
	movs r0, 0x2
	mov r8, r0
	b _08057372
	.pool
_080572FC:
	adds r0, r5, r6
	adds r0, 0x20
	ldrb r0, [r0]
	movs r2, 0x1
	cmp r0, 0x30
	bne _0805730A
	movs r2, 0x2
_0805730A:
	ldr r1, [r4]
	adds r0, r1, 0
	ands r0, r7
	cmp r0, r2
	bcs _0805731E
	movs r0, 0x8
	negs r0, r0
	ands r1, r0
	str r1, [r4]
	b _08057322
_0805731E:
	subs r0, r1, r2
	str r0, [r4]
_08057322:
	ldr r2, =gBattleMons
	movs r0, 0x58
	mov r1, r9
	muls r1, r0
	adds r0, r2, 0
	adds r0, 0x4C
	adds r0, r1, r0
	ldr r4, [r0]
	movs r0, 0x7
	ands r4, r0
	cmp r4, 0
	beq _08057354
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =BattleScript_MoveUsedIsAsleep
	str r0, [r1]
	movs r1, 0x2
	mov r8, r1
	b _08057372
	.pool
_08057354:
	adds r2, 0x50
	adds r2, r1, r2
	ldr r0, [r2]
	ldr r1, =0xf7ffffff
	ands r0, r1
	str r0, [r2]
	bl BattleScriptPushCursor
	ldr r0, =gBattleCommunication
	strb r4, [r0, 0x5]
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =BattleScript_MoveUsedWokeUp
	str r0, [r1]
	movs r2, 0x2
	mov r8, r2
_08057372:
	ldr r1, =gBattleCommunication
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	mov r10, r1
	b _080573FC
	.pool
_08057390:
	ldr r1, =gBattleMons
	movs r0, 0x58
	mov r2, r9
	muls r2, r0
	adds r0, r2, 0
	adds r1, 0x4C
	adds r4, r0, r1
	ldr r0, [r4]
	movs r1, 0x20
	ands r0, r1
	cmp r0, 0
	beq _080573F4
	bl Random
	lsls r0, 16
	lsrs r0, 16
	movs r1, 0x5
	bl __umodsi3
	lsls r0, 16
	lsrs r5, r0, 16
	cmp r5, 0
	beq _080573D4
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =BattleScript_MoveUsedIsFrozen
	str r0, [r1]
	b _080573EC
	.pool
_080573D4:
	ldr r0, [r4]
	movs r1, 0x21
	negs r1, r1
	ands r0, r1
	str r0, [r4]
	bl BattleScriptPushCursor
	ldr r1, =gBattlescriptCurrInstr
	ldr r0, =BattleScript_MoveUsedUnfroze
	str r0, [r1]
	mov r0, r10
	strb r5, [r0, 0x5]
_080573EC:
	movs r1, 0x2
	mov r8, r1
	ldr r2, =gBattleCommunication
	mov r10, r2
_080573F4:
	mov r1, r10
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
_080573FC:
	mov r2, r10
	ldrb r0, [r2]
	cmp r0, 0x2
	beq _08057406
	b _0805727C
_08057406:
	mov r0, r8
	cmp r0, 0x2
	bne _08057430
	ldr r4, =gActiveBank
	mov r1, r9
	strb r1, [r4]
	ldrb r1, [r4]
	movs r0, 0x58
	muls r0, r1
	ldr r1, =gBattleMons + 0x4C
	adds r0, r1
	str r0, [sp]
	movs r0, 0
	movs r1, 0x28
	movs r2, 0
	movs r3, 0x4
	bl EmitSetMonData
	ldrb r0, [r4]
	bl MarkBufferBankForExecution
_08057430:
	mov r0, r8
	add sp, 0x4
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_805725C

    
	.align 2, 0 @ Don't pad with nop.