summaryrefslogtreecommitdiff
path: root/asm/code_8069E0C.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/code_8069E0C.s')
-rw-r--r--asm/code_8069E0C.s6209
1 files changed, 6209 insertions, 0 deletions
diff --git a/asm/code_8069E0C.s b/asm/code_8069E0C.s
new file mode 100644
index 0000000..151cdcf
--- /dev/null
+++ b/asm/code_8069E0C.s
@@ -0,0 +1,6209 @@
+ #include "asm/constants/gba_constants.inc"
+ #include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8069E0C
+sub_8069E0C:
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ ldr r5, [r4, 0x70]
+ movs r1, 0x25
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _08069E44
+ adds r0, r4, 0
+ bl GetWeather
+ ldr r1, _08069E40
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r1
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ adds r0, 0x5C
+ movs r2, 0
+ strb r1, [r0]
+ adds r0, 0x1
+ strb r2, [r0]
+ adds r6, r5, 0
+ adds r6, 0x5E
+ b _08069E62
+ .align 2, 0
+_08069E40: .4byte gUnknown_80F520C
+_08069E44:
+ movs r4, 0
+ adds r7, r5, 0
+ adds r7, 0x5C
+ adds r6, r5, 0
+ adds r6, 0x5E
+_08069E4E:
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ adds r1, r4, 0
+ bl GetPokemonType
+ adds r1, r7, r4
+ strb r0, [r1]
+ adds r4, 0x1
+ cmp r4, 0x1
+ ble _08069E4E
+_08069E62:
+ movs r4, 0
+_08069E64:
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ adds r1, r4, 0
+ bl GetPokemonAbility
+ adds r1, r6, r4
+ strb r0, [r1]
+ adds r4, 0x1
+ cmp r4, 0x1
+ ble _08069E64
+ ldr r0, _08069E88
+ ldr r1, [r0]
+ movs r0, 0x1
+ strb r0, [r1, 0xC]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08069E88: .4byte gDungeonGlobalData
+ thumb_func_end sub_8069E0C
+
+ thumb_func_start TriggerWeatherAbilities
+TriggerWeatherAbilities:
+ push {r4-r7,lr}
+ ldr r3, _08069ED8
+ ldr r2, [r3]
+ ldrb r0, [r2, 0xC]
+ cmp r0, 0
+ beq _08069F44
+ movs r1, 0
+ strb r1, [r2, 0xC]
+ ldr r0, [r3]
+ ldr r2, _08069EDC
+ adds r0, r2
+ strb r1, [r0]
+ movs r7, 0
+ adds r5, r3, 0
+ movs r6, 0x1
+_08069EAA:
+ ldr r0, [r5]
+ lsls r1, r7, 2
+ ldr r2, _08069EE0
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08069F3E
+ adds r0, r4, 0
+ movs r1, 0x4
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _08069EE8
+ ldr r0, [r5]
+ ldr r1, _08069EE4
+ b _08069F16
+ .align 2, 0
+_08069ED8: .4byte gDungeonGlobalData
+_08069EDC: .4byte 0x0000e279
+_08069EE0: .4byte 0x000135cc
+_08069EE4: .4byte 0x0000e273
+_08069EE8:
+ adds r0, r4, 0
+ movs r1, 0x1C
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _08069F04
+ ldr r0, [r5]
+ ldr r2, _08069F00
+ adds r0, r2
+ b _08069F18
+ .align 2, 0
+_08069F00: .4byte 0x0000e271
+_08069F04:
+ adds r0, r4, 0
+ movs r1, 0x31
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _08069F1A
+ ldr r0, [r5]
+ ldr r1, _08069F4C
+_08069F16:
+ adds r0, r1
+_08069F18:
+ strb r6, [r0]
+_08069F1A:
+ adds r0, r4, 0
+ movs r1, 0x8
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ bne _08069F36
+ adds r0, r4, 0
+ movs r1, 0x2D
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _08069F3E
+_08069F36:
+ ldr r0, [r5]
+ ldr r2, _08069F50
+ adds r0, r2
+ strb r6, [r0]
+_08069F3E:
+ adds r7, 0x1
+ cmp r7, 0x13
+ ble _08069EAA
+_08069F44:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08069F4C: .4byte 0x0000e270
+_08069F50: .4byte 0x0000e279
+ thumb_func_end TriggerWeatherAbilities
+
+ thumb_func_start sub_8069F54
+sub_8069F54:
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r1, 16
+ asrs r0, r1, 16
+ ldr r2, _08069F88
+ adds r1, r2
+ lsrs r1, 16
+ cmp r1, 0x3
+ bhi _08069F94
+ adds r0, r5, 0
+ movs r1, 0x25
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _08069F90
+ ldr r4, _08069F8C
+ adds r0, r5, 0
+ bl GetWeather
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r4
+ movs r1, 0x2
+ ldrsh r0, [r0, r1]
+ b _08069F94
+ .align 2, 0
+_08069F88: .4byte 0xfe880000
+_08069F8C: .4byte gUnknown_80F520C
+_08069F90:
+ movs r0, 0xBC
+ lsls r0, 1
+_08069F94:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8069F54
+
+ thumb_func_start sub_8069F9C
+sub_8069F9C:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ mov r8, r0
+ adds r6, r1, 0
+ mov r9, r2
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _08069FB8
+ b _0806A0FA
+_08069FB8:
+ adds r0, r6, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _08069FC6
+ b _0806A0FA
+_08069FC6:
+ cmp r8, r6
+ bne _08069FCC
+ b _0806A0FA
+_08069FCC:
+ mov r0, r8
+ ldr r2, [r0, 0x70]
+ adds r3, r2, 0
+ ldr r7, [r6, 0x70]
+ movs r4, 0x1
+ negs r4, r4
+ adds r0, r7, 0
+ adds r0, 0x5E
+ ldrb r0, [r0]
+ cmp r0, 0x28
+ bne _08069FE4
+ movs r4, 0
+_08069FE4:
+ adds r0, r7, 0
+ adds r0, 0x5F
+ ldrb r0, [r0]
+ cmp r0, 0x28
+ bne _08069FF0
+ movs r4, 0x1
+_08069FF0:
+ cmp r4, 0
+ blt _0806A068
+ movs r1, 0
+ adds r0, r2, 0
+ adds r0, 0x5E
+ ldrb r2, [r0]
+ cmp r2, 0
+ beq _0806A006
+ mov r0, sp
+ strb r2, [r0]
+ movs r1, 0x1
+_0806A006:
+ adds r0, r3, 0
+ adds r0, 0x5F
+ ldrb r2, [r0]
+ cmp r2, 0
+ beq _0806A018
+ mov r3, sp
+ adds r0, r3, r1
+ strb r2, [r0]
+ adds r1, 0x1
+_0806A018:
+ cmp r1, 0
+ beq _0806A068
+ cmp r1, 0x1
+ bne _0806A024
+ movs r1, 0
+ b _0806A030
+_0806A024:
+ adds r0, r1, 0
+ bl DungeonRandomCapped
+ adds r1, r0, 0
+ cmp r1, 0
+ blt _0806A068
+_0806A030:
+ adds r0, r7, 0
+ adds r0, 0x5E
+ adds r0, r4
+ add r1, sp
+ ldrb r1, [r1]
+ strb r1, [r0]
+ ldr r0, _0806A108
+ ldr r1, [r0]
+ movs r0, 0x1
+ strb r0, [r1, 0xC]
+ ldr r0, _0806A10C
+ adds r1, r6, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _0806A110
+ ldr r2, [r0]
+ mov r0, r8
+ adds r1, r6, 0
+ bl sub_80522F4
+ adds r0, r6, 0
+ bl sub_8042900
+ mov r0, r8
+ adds r1, r6, 0
+ bl sub_806ABAC
+_0806A068:
+ movs r0, 0xAD
+ lsls r0, 1
+ adds r1, r7, r0
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0806A0FA
+ movs r0, 0
+ strb r0, [r1]
+ adds r0, r6, 0
+ movs r1, 0x3B
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806A0FA
+ mov r0, r8
+ mov r1, r9
+ bl GetMoveTypeForPokemon
+ lsls r0, 24
+ lsrs r5, r0, 24
+ mov r1, r9
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0x1F
+ bne _0806A0AA
+ mov r0, r8
+ bl GetWeather
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0806A114
+ adds r0, r1
+ ldrb r5, [r0]
+_0806A0AA:
+ cmp r5, 0
+ beq _0806A0FA
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl HasType
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _0806A0FA
+ adds r4, r7, 0
+ adds r4, 0x5C
+ strb r5, [r4]
+ adds r1, r7, 0
+ adds r1, 0x5D
+ strb r0, [r1]
+ adds r1, 0x99
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r0, _0806A10C
+ adds r1, r6, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldrb r0, [r4]
+ bl GetUnformattedTypeString
+ adds r1, r0, 0
+ ldr r0, _0806A118
+ bl strcpy
+ ldr r0, _0806A11C
+ ldr r2, [r0]
+ mov r0, r8
+ adds r1, r6, 0
+ bl sub_80522F4
+ adds r0, r6, 0
+ bl sub_8042968
+_0806A0FA:
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806A108: .4byte gDungeonGlobalData
+_0806A10C: .4byte gAvailablePokemonNames
+_0806A110: .4byte gUnknown_80FCC7C
+_0806A114: .4byte gUnknown_80F51E4
+_0806A118: .4byte gUnknown_202DE58
+_0806A11C: .4byte gUnknown_80FCCAC
+ thumb_func_end sub_8069F9C
+
+ thumb_func_start sub_806A120
+sub_806A120:
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ adds r6, r1, 0
+ adds r4, r2, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806A19C
+ adds r0, r6, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806A19C
+ cmp r7, r6
+ beq _0806A19C
+ ldr r5, [r6, 0x70]
+ adds r0, r5, 0
+ adds r0, 0xC4
+ ldrb r0, [r0]
+ cmp r0, 0xC
+ bne _0806A19C
+ adds r0, r7, 0
+ adds r1, r4, 0
+ bl GetMoveTypeForPokemon
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8092364
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _0806A19C
+ adds r0, r5, 0
+ adds r0, 0x5C
+ movs r1, 0
+ strb r4, [r0]
+ adds r0, 0x1
+ strb r1, [r0]
+ adds r0, r6, 0
+ bl sub_8041BBC
+ ldr r0, _0806A1A4
+ adds r1, r6, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r4, 0
+ bl GetUnformattedTypeString
+ adds r1, r0, 0
+ ldr r0, _0806A1A8
+ bl strcpy
+ ldr r0, _0806A1AC
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl sub_80522F4
+_0806A19C:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806A1A4: .4byte gAvailablePokemonNames
+_0806A1A8: .4byte gUnknown_202DE58
+_0806A1AC: .4byte gUnknown_80FDCC8
+ thumb_func_end sub_806A120
+
+ thumb_func_start sub_806A1B0
+sub_806A1B0:
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806A1DE
+ adds r0, r4, 0
+ movs r1, 0x2A
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806A1DE
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r4, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl sub_8076090
+_0806A1DE:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806A1B0
+
+ thumb_func_start sub_806A1E8
+sub_806A1E8:
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806A234
+ adds r0, r4, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0806A210
+ ldr r0, [r4, 0x70]
+ movs r1, 0
+ ldrb r0, [r0, 0x6]
+ cmp r0, 0
+ bne _0806A20E
+ movs r1, 0x1
+_0806A20E:
+ adds r5, r1, 0
+_0806A210:
+ ldr r0, _0806A23C
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x1]
+ cmp r0, 0
+ bne _0806A21C
+ movs r5, 0
+_0806A21C:
+ cmp r5, 0
+ beq _0806A234
+ adds r0, r4, 0
+ bl sub_8045888
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806A234
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_806A2BC
+_0806A234:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806A23C: .4byte gUnknown_203B46C
+ thumb_func_end sub_806A1E8
+
+ thumb_func_start sub_806A240
+sub_806A240:
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r6, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806A2B4
+ adds r0, r4, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0806A26A
+ ldr r0, [r4, 0x70]
+ movs r1, 0
+ ldrb r0, [r0, 0x6]
+ cmp r0, 0
+ bne _0806A268
+ movs r1, 0x1
+_0806A268:
+ adds r6, r1, 0
+_0806A26A:
+ cmp r6, 0
+ beq _0806A284
+ adds r0, r4, 0
+ bl sub_8045888
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806A284
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_806A2BC
+ b _0806A2B4
+_0806A284:
+ adds r0, r5, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0806A29C
+ ldr r0, [r5, 0x70]
+ movs r1, 0
+ ldrb r0, [r0, 0x6]
+ cmp r0, 0
+ bne _0806A29A
+ movs r1, 0x1
+_0806A29A:
+ adds r6, r1, 0
+_0806A29C:
+ cmp r6, 0
+ beq _0806A2B4
+ adds r0, r5, 0
+ bl sub_8045888
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806A2B4
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_806A2BC
+_0806A2B4:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806A240
+
+ thumb_func_start sub_806A2BC
+sub_806A2BC:
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r6, r1, 24
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806A328
+ adds r0, r4, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0806A328
+ ldr r5, _0806A2F4
+ ldr r0, [r5]
+ ldr r1, _0806A2F8
+ adds r0, r1
+ ldr r0, [r0]
+ cmp r0, r4
+ beq _0806A328
+ adds r7, r4, 0x4
+ cmp r6, 0
+ beq _0806A30C
+ movs r0, 0x1
+ bl sub_804178C
+ b _0806A302
+ .align 2, 0
+_0806A2F4: .4byte gDungeonGlobalData
+_0806A2F8: .4byte 0x000181f8
+_0806A2FC:
+ movs r0, 0x34
+ bl sub_803E46C
+_0806A302:
+ ldr r0, [r5]
+ movs r1, 0x12
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x3B
+ ble _0806A2FC
+_0806A30C:
+ movs r0, 0x4
+ movs r1, 0x44
+ bl sub_803E708
+ adds r0, r4, 0
+ bl sub_803F508
+ adds r0, r7, 0
+ bl sub_804AC20
+ ldr r0, _0806A330
+ ldr r1, [r0]
+ movs r0, 0
+ strh r0, [r1, 0x12]
+_0806A328:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806A330: .4byte gDungeonGlobalData
+ thumb_func_end sub_806A2BC
+
+ thumb_func_start nullsub_95
+nullsub_95:
+ bx lr
+ thumb_func_end nullsub_95
+
+ thumb_func_start sub_806A338
+sub_806A338:
+ push {r4-r6,lr}
+ movs r5, 0
+ ldr r6, _0806A378
+_0806A33E:
+ ldr r0, [r6]
+ lsls r1, r5, 2
+ ldr r2, _0806A37C
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806A384
+ ldr r0, [r4, 0x70]
+ adds r0, 0xC8
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0806A384
+ ldr r1, [r6]
+ ldr r2, _0806A380
+ adds r0, r1, r2
+ str r4, [r0]
+ ldr r0, [r4, 0x70]
+ adds r2, 0xC
+ adds r1, r2
+ adds r0, 0x98
+ ldr r0, [r0]
+ str r0, [r1]
+ b _0806A38A
+ .align 2, 0
+_0806A378: .4byte gDungeonGlobalData
+_0806A37C: .4byte 0x000135cc
+_0806A380: .4byte 0x00017b30
+_0806A384:
+ adds r5, 0x1
+ cmp r5, 0x13
+ ble _0806A33E
+_0806A38A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806A338
+
+ thumb_func_start sub_806A390
+sub_806A390:
+ push {r4-r7,lr}
+ ldr r0, [r0, 0x70]
+ movs r7, 0
+ movs r1, 0x8C
+ lsls r1, 1
+ adds r4, r0, r1
+ adds r5, r4, 0
+ movs r6, 0x3
+_0806A3A0:
+ ldrb r1, [r4]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0806A3C2
+ ldrb r1, [r4, 0x1]
+ movs r0, 0xF7
+ ands r0, r1
+ movs r1, 0xEF
+ ands r0, r1
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ adds r0, r5, 0
+ bl GetMoveMaxPP
+ strb r0, [r4, 0x4]
+_0806A3C2:
+ adds r4, 0x8
+ adds r5, 0x8
+ subs r6, 0x1
+ cmp r6, 0
+ bge _0806A3A0
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806A390
+
+ thumb_func_start sub_806A3D4
+sub_806A3D4:
+ push {r4-r7,lr}
+ sub sp, 0xC
+ adds r7, r0, 0
+ adds r6, r2, 0
+ lsls r1, 16
+ asrs r5, r1, 16
+ lsls r3, 24
+ cmp r3, 0
+ beq _0806A404
+ ldr r4, _0806A400
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl __divsi3
+ adds r2, r0, 0
+ lsls r2, 16
+ asrs r2, 16
+ mov r0, sp
+ adds r1, r4, 0
+ bl sprintf
+ b _0806A41C
+ .align 2, 0
+_0806A400: .4byte gUnknown_8106EA8
+_0806A404:
+ ldr r4, _0806A450
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl __divsi3
+ adds r2, r0, 0
+ lsls r2, 16
+ asrs r2, 16
+ mov r0, sp
+ adds r1, r4, 0
+ bl sprintf
+_0806A41C:
+ ldr r1, _0806A454
+ mov r0, sp
+ bl OpenFileAndGetFileDataPtr
+ adds r4, r0, 0
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl __modsi3
+ lsls r0, 16
+ ldr r1, [r4, 0x4]
+ asrs r0, 12
+ adds r0, r1
+ lsls r1, r6, 2
+ adds r0, r1
+ ldr r1, [r0]
+ adds r0, r7, 0
+ bl strcpy
+ adds r0, r4, 0
+ bl CloseFile
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806A450: .4byte gUnknown_8106EB0
+_0806A454: .4byte gDungeonFileArchive
+ thumb_func_end sub_806A3D4
+
+ thumb_func_start sub_806A458
+sub_806A458:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r6, r0, 0
+ movs r0, 0
+ mov r9, r0
+ ldr r0, [r6, 0x70]
+ ldrb r0, [r0, 0x6]
+ mov r10, r0
+ adds r0, r6, 0
+ bl sub_80696A8
+ cmp r0, 0
+ bne _0806A47C
+ movs r0, 0
+ b _0806A4CC
+_0806A47C:
+ movs r7, 0x1
+ negs r7, r7
+_0806A480:
+ movs r5, 0x1
+ negs r5, r5
+ adds r1, r7, 0x1
+ mov r8, r1
+_0806A488:
+ movs r2, 0x4
+ ldrsh r0, [r6, r2]
+ adds r0, r5
+ movs r2, 0x6
+ ldrsh r1, [r6, r2]
+ adds r1, r7
+ bl GetMapEntity
+ adds r4, r0, 0
+ ldr r0, [r4, 0x10]
+ cmp r0, 0
+ beq _0806A4B6
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0806A4B6
+ ldr r0, [r4, 0x10]
+ ldr r0, [r0, 0x70]
+ ldrb r0, [r0, 0x6]
+ cmp r0, r10
+ beq _0806A4B6
+ movs r0, 0x1
+ add r9, r0
+_0806A4B6:
+ adds r5, 0x1
+ cmp r5, 0x1
+ ble _0806A488
+ mov r7, r8
+ cmp r7, 0x1
+ ble _0806A480
+ movs r0, 0
+ mov r1, r9
+ cmp r1, 0x1
+ ble _0806A4CC
+ movs r0, 0x1
+_0806A4CC:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806A458
+
+ thumb_func_start sub_806A4DC
+sub_806A4DC:
+ push {r4,lr}
+ sub sp, 0x64
+ adds r4, r0, 0
+ ldr r1, _0806A530
+ ldr r0, [sp, 0x60]
+ ands r0, r1
+ ldr r1, _0806A534
+ ands r0, r1
+ movs r1, 0x80
+ lsls r1, 1
+ orrs r0, r1
+ str r0, [sp, 0x60]
+ movs r0, 0x2
+ ldrsh r1, [r4, r0]
+ add r0, sp, 0x60
+ str r0, [sp]
+ movs r0, 0
+ str r0, [sp, 0x4]
+ add r0, sp, 0x8
+ movs r2, 0
+ movs r3, 0
+ bl sub_808CFD0
+ add r1, sp, 0x8
+ ldrh r0, [r4, 0x2]
+ strh r0, [r1, 0x8]
+ ldrb r0, [r4, 0x9]
+ strb r0, [r1, 0x3]
+ ldrh r0, [r4, 0xC]
+ strh r0, [r1, 0x14]
+ ldrb r0, [r4, 0x14]
+ strb r0, [r1, 0x18]
+ ldrb r0, [r4, 0x16]
+ strb r0, [r1, 0x1A]
+ adds r0, r1, 0
+ bl sub_808F700
+ add sp, 0x64
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806A530: .4byte 0xffffff00
+_0806A534: .4byte 0xffff00ff
+ thumb_func_end sub_806A4DC
+
+ thumb_func_start sub_806A538
+sub_806A538:
+ push {lr}
+ lsls r0, 16
+ asrs r1, r0, 16
+ adds r2, r1, 0
+ ldr r0, _0806A554
+ cmp r1, r0
+ beq _0806A550
+ ldr r0, _0806A558
+ cmp r1, r0
+ beq _0806A550
+ cmp r2, 0
+ bge _0806A55C
+_0806A550:
+ movs r0, 0x1
+ b _0806A55E
+ .align 2, 0
+_0806A554: .4byte 0x000055aa
+_0806A558: .4byte 0x00005aa5
+_0806A55C:
+ movs r0, 0
+_0806A55E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806A538
+
+ thumb_func_start sub_806A564
+sub_806A564:
+ push {lr}
+ lsls r0, 16
+ asrs r1, r0, 16
+ ldr r0, _0806A57C
+ cmp r1, r0
+ beq _0806A584
+ ldr r0, _0806A580
+ cmp r1, r0
+ beq _0806A584
+ movs r0, 0
+ b _0806A586
+ .align 2, 0
+_0806A57C: .4byte 0x000055aa
+_0806A580: .4byte 0x00005aa5
+_0806A584:
+ movs r0, 0x1
+_0806A586:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806A564
+
+ thumb_func_start sub_806A58C
+sub_806A58C:
+ push {lr}
+ lsls r0, 16
+ movs r1, 0xCE
+ lsls r1, 17
+ cmp r0, r1
+ bls _0806A59C
+ movs r0, 0
+ b _0806A59E
+_0806A59C:
+ movs r0, 0x1
+_0806A59E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806A58C
+
+ thumb_func_start sub_806A5A4
+sub_806A5A4:
+ push {lr}
+ lsls r0, 16
+ cmp r0, 0
+ blt _0806A5B0
+ movs r0, 0
+ b _0806A5B2
+_0806A5B0:
+ movs r0, 0x1
+_0806A5B2:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806A5A4
+
+ thumb_func_start sub_806A5B8
+sub_806A5B8:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r6, r0, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806A5CE
+ b _0806A6D2
+_0806A5CE:
+ adds r0, r6, 0
+ bl GetMapEntityForDungeonEntity
+ ldrh r0, [r0]
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x2
+ bne _0806A664
+ ldr r4, [r6, 0x70]
+ ldr r1, _0806A640
+ ldr r0, _0806A644
+ ldr r0, [r0]
+ ldr r2, _0806A648
+ adds r0, r2
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0806A650
+ adds r0, r4, 0
+ adds r0, 0xB0
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0806A608
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl SendImmobilizeEndMessage
+_0806A608:
+ movs r1, 0x2
+ ldrsh r0, [r4, r1]
+ bl GetWalkableTiles
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x4
+ beq _0806A6D2
+ movs r2, 0x2
+ ldrsh r1, [r4, r2]
+ ldr r0, _0806A64C
+ cmp r1, r0
+ beq _0806A6D2
+ cmp r1, 0x92
+ beq _0806A6D2
+ adds r0, r4, 0
+ adds r0, 0xAC
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0806A6D2
+ adds r0, r6, 0
+ adds r1, r6, 0
+ movs r2, 0x1
+ movs r3, 0
+ bl sub_8076210
+ b _0806A6D2
+ .align 2, 0
+_0806A640: .4byte gDungeonWaterType
+_0806A644: .4byte gDungeonGlobalData
+_0806A648: .4byte 0x00003a0e
+_0806A64C: .4byte 0x00000113
+_0806A650:
+ adds r0, r4, 0
+ adds r0, 0xAC
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0806A6D2
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_807A290
+ b _0806A6D2
+_0806A664:
+ cmp r1, 0
+ bne _0806A6D2
+ ldr r7, [r6, 0x70]
+ ldrb r0, [r7, 0x7]
+ cmp r0, 0
+ beq _0806A6D2
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r4, r7, r0
+ ldr r5, [r4]
+ mov r0, sp
+ adds r1, r5, 0
+ movs r2, 0x5
+ bl sub_80942C0
+ ldr r0, [sp]
+ str r0, [r4]
+ movs r1, 0
+ mov r8, r1
+ adds r0, r5, 0
+ bl RoundUpFixedPoint
+ cmp r0, 0x13
+ ble _0806A6A4
+ ldr r0, [r4]
+ bl RoundUpFixedPoint
+ cmp r0, 0x13
+ bgt _0806A6A4
+ ldr r0, _0806A6E0
+ ldr r0, [r0]
+ mov r8, r0
+_0806A6A4:
+ adds r0, r5, 0
+ bl RoundUpFixedPoint
+ cmp r0, 0x9
+ ble _0806A6C4
+ movs r2, 0x9E
+ lsls r2, 1
+ adds r0, r7, r2
+ ldr r0, [r0]
+ bl RoundUpFixedPoint
+ cmp r0, 0x9
+ bgt _0806A6C4
+ ldr r0, _0806A6E4
+ ldr r0, [r0]
+ mov r8, r0
+_0806A6C4:
+ mov r0, r8
+ cmp r0, 0
+ beq _0806A6D2
+ adds r0, r6, 0
+ mov r1, r8
+ bl SendMessage
+_0806A6D2:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806A6E0: .4byte gUnknown_80FD594
+_0806A6E4: .4byte gUnknown_80FD5B8
+ thumb_func_end sub_806A5B8
+
+ thumb_func_start sub_806A6E8
+sub_806A6E8:
+ push {r4-r7,lr}
+ sub sp, 0xC
+ adds r7, r0, 0
+ ldr r6, [r7, 0x70]
+ adds r0, r6, 0
+ adds r0, 0x64
+ adds r1, r6, 0
+ adds r1, 0x62
+ ldrb r2, [r0]
+ ldrb r1, [r1]
+ cmp r2, r1
+ beq _0806A77A
+ ldrb r0, [r6, 0x7]
+ cmp r0, 0
+ bne _0806A764
+ cmp r1, 0xA
+ beq _0806A70E
+ cmp r1, 0x2B
+ bne _0806A72E
+_0806A70E:
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r5, r6, r0
+ ldr r4, [r5]
+ mov r0, sp
+ movs r1, 0xA
+ bl sub_80943A0
+ ldr r2, [sp]
+ add r0, sp, 0x4
+ adds r1, r4, 0
+ bl sub_80942C0
+ ldr r0, [sp, 0x4]
+ str r0, [r5]
+ b _0806A744
+_0806A72E:
+ cmp r1, 0x1B
+ bne _0806A744
+ add r0, sp, 0x8
+ movs r1, 0
+ bl sub_80943A0
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r1, r6, r0
+ ldr r0, [sp, 0x8]
+ str r0, [r1]
+_0806A744:
+ ldr r0, _0806A75C
+ ldr r0, [r0]
+ ldr r1, _0806A760
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806A776
+ adds r0, r7, 0
+ bl DungeonEntityUpdateStatusSprites
+ b _0806A776
+ .align 2, 0
+_0806A75C: .4byte gDungeonGlobalData
+_0806A760: .4byte 0x00000676
+_0806A764:
+ cmp r1, 0x11
+ beq _0806A76C
+ cmp r2, 0x11
+ bne _0806A776
+_0806A76C:
+ movs r0, 0x1
+ bl sub_803F580
+ bl sub_8040A84
+_0806A776:
+ bl sub_807AA30
+_0806A77A:
+ adds r0, r6, 0
+ adds r0, 0x60
+ ldrb r0, [r0]
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _0806A792
+ adds r0, r6, 0
+ adds r0, 0x62
+ ldrb r1, [r0]
+ adds r0, 0x2
+ b _0806A796
+_0806A792:
+ adds r0, r6, 0
+ adds r0, 0x64
+_0806A796:
+ strb r1, [r0]
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806A6E8
+
+ thumb_func_start sub_806A7A0
+sub_806A7A0:
+ push {r4,r5,lr}
+ movs r5, 0
+_0806A7A4:
+ ldr r0, _0806A7E0
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _0806A7E4
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806A7D2
+ ldr r2, [r4, 0x70]
+ movs r1, 0xC
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x1
+ ble _0806A7D2
+ adds r1, r0, 0
+ subs r1, 0x1
+ adds r0, r2, 0
+ bl sub_806A7E8
+_0806A7D2:
+ adds r5, 0x1
+ cmp r5, 0x3
+ ble _0806A7A4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806A7E0: .4byte gDungeonGlobalData
+_0806A7E4: .4byte 0x0001357c
+ thumb_func_end sub_806A7A0
+
+ thumb_func_start sub_806A7E8
+sub_806A7E8:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x30
+ adds r5, r0, 0
+ mov r0, sp
+ bl GetNumAvailableIQSkills
+ mov r9, r0
+ add r4, sp, 0x18
+ movs r0, 0xC
+ ldrsh r1, [r5, r0]
+ adds r0, r4, 0
+ bl GetNumAvailableIQSkills
+ adds r6, r0, 0
+ ldr r0, _0806A828
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument_2
+ movs r2, 0x1
+ mov r8, r4
+_0806A818:
+ movs r3, 0
+ movs r5, 0
+ movs r1, 0
+ adds r4, r2, 0x1
+ cmp r3, r9
+ bge _0806A83E
+ mov r0, sp
+ b _0806A836
+ .align 2, 0
+_0806A828: .4byte gAvailablePokemonNames
+_0806A82C:
+ adds r1, 0x1
+ cmp r1, r9
+ bge _0806A83E
+ mov r7, sp
+ adds r0, r7, r1
+_0806A836:
+ ldrb r0, [r0]
+ cmp r0, r2
+ bne _0806A82C
+ movs r3, 0x1
+_0806A83E:
+ movs r1, 0
+ cmp r1, r6
+ bge _0806A85C
+ mov r7, r8
+ ldrb r0, [r7]
+ b _0806A856
+_0806A84A:
+ adds r1, 0x1
+ cmp r1, r6
+ bge _0806A85C
+ mov r7, r8
+ adds r0, r7, r1
+ ldrb r0, [r0]
+_0806A856:
+ cmp r0, r2
+ bne _0806A84A
+ movs r5, 0x1
+_0806A85C:
+ cmp r3, r5
+ beq _0806A87A
+ lsls r0, r2, 24
+ lsrs r0, 24
+ bl GetIQSkillName
+ adds r1, r0, 0
+ ldr r0, _0806A890
+ bl strcpy
+ ldr r0, _0806A894
+ ldr r1, [r0]
+ movs r0, 0
+ bl sub_805239C
+_0806A87A:
+ adds r2, r4, 0
+ cmp r2, 0x17
+ ble _0806A818
+ add sp, 0x30
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806A890: .4byte gUnknown_202DE58
+_0806A894: .4byte gUnknown_80FEAC4
+ thumb_func_end sub_806A7E8
+
+ thumb_func_start sub_806A898
+sub_806A898:
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r7, r1, 24
+ lsls r2, 24
+ lsrs r1, r2, 24
+ ldr r5, [r4, 0x70]
+ ldrb r0, [r5, 0x7]
+ cmp r0, 0
+ beq _0806A8C2
+ ldrh r1, [r4, 0x4]
+ movs r2, 0xB6
+ lsls r2, 1
+ adds r0, r5, r2
+ strh r1, [r0]
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ adds r2, 0x2
+ adds r1, r5, r2
+ strh r0, [r1]
+ b _0806A8C8
+_0806A8C2:
+ adds r0, r4, 0
+ bl MoveIfPossible
+_0806A8C8:
+ movs r0, 0xB6
+ lsls r0, 1
+ adds r6, r5, r0
+ ldr r0, [r6]
+ cmp r0, 0
+ beq _0806A90E
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl CannotMove
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806A8EE
+ adds r0, r4, 0
+ bl CannotAct
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806A90E
+_0806A8EE:
+ adds r0, r4, 0x4
+ adds r1, r6, 0
+ bl CalculateFacingDir
+ adds r2, r0, 0
+ movs r1, 0x7
+ ands r0, r1
+ adds r1, r5, 0
+ adds r1, 0x46
+ strb r0, [r1]
+ cmp r7, 0
+ beq _0806A90E
+ adds r0, r4, 0
+ adds r1, r2, 0
+ bl sub_806CE68
+_0806A90E:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806A898
+
+ thumb_func_start sub_806A914
+sub_806A914:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ lsls r1, 24
+ lsrs r7, r1, 24
+ lsls r2, 24
+ lsrs r6, r2, 24
+ movs r5, 0
+_0806A92A:
+ ldr r0, _0806A96C
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _0806A970
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806A95C
+ ldr r0, [r4, 0x70]
+ cmp r7, 0
+ beq _0806A952
+ adds r0, 0xA4
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0806A95C
+_0806A952:
+ adds r0, r4, 0
+ mov r1, r8
+ adds r2, r6, 0
+ bl sub_806A898
+_0806A95C:
+ adds r5, 0x1
+ cmp r5, 0x13
+ ble _0806A92A
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806A96C: .4byte gDungeonGlobalData
+_0806A970: .4byte 0x000135cc
+ thumb_func_end sub_806A914
+
+ thumb_func_start sub_806A974
+sub_806A974:
+ push {r4,r5,lr}
+ movs r5, 0
+_0806A978:
+ ldr r0, _0806A9AC
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _0806A9B0
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806A99E
+ ldr r0, [r4, 0x70]
+ adds r0, 0x46
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl sub_806CE68
+_0806A99E:
+ adds r5, 0x1
+ cmp r5, 0x13
+ ble _0806A978
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806A9AC: .4byte gDungeonGlobalData
+_0806A9B0: .4byte 0x000135cc
+ thumb_func_end sub_806A974
+
+ thumb_func_start sub_806A9B4
+sub_806A9B4:
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806AA02
+ ldr r0, [r4, 0x70]
+ movs r1, 0x8C
+ lsls r1, 1
+ adds r0, r1
+ adds r1, r5, 0
+ bl sub_80935B8
+ cmp r0, 0
+ bne _0806A9E0
+ ldr r0, _0806A9DC
+ b _0806A9E6
+ .align 2, 0
+_0806A9DC: .4byte gPtrLinkedMovesComeApartMessage
+_0806A9E0:
+ cmp r0, 0x1
+ bne _0806A9F4
+ ldr r0, _0806A9F0
+_0806A9E6:
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl SendMessage
+ b _0806AA02
+ .align 2, 0
+_0806A9F0: .4byte gPtrLinkMoveOneUseWarningMessage
+_0806A9F4:
+ cmp r0, 0x2
+ bne _0806AA02
+ ldr r0, _0806AA08
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl SendMessage
+_0806AA02:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806AA08: .4byte gPtrLinkMoveTwoUsesWarningMessage
+ thumb_func_end sub_806A9B4
+
+ thumb_func_start sub_806AA0C
+sub_806AA0C:
+ push {r4,r5,lr}
+ lsls r0, 16
+ asrs r4, r0, 16
+ lsls r1, 24
+ lsrs r5, r1, 24
+ adds r0, r4, 0
+ bl IsExclusivePokemonUnlocked
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806AA56
+ ldr r0, _0806AA5C
+ ldr r0, [r0]
+ ldr r1, _0806AA60
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806AA40
+ adds r0, r4, 0
+ bl GetBaseSpecies
+ lsls r0, 16
+ movs r1, 0xCF
+ lsls r1, 17
+ cmp r0, r1
+ beq _0806AA56
+_0806AA40:
+ cmp r4, 0x97
+ bne _0806AA68
+ ldr r0, _0806AA5C
+ ldr r0, [r0]
+ ldr r1, _0806AA64
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806AA56
+ cmp r5, 0
+ bne _0806AA68
+_0806AA56:
+ movs r0, 0
+ b _0806AA6A
+ .align 2, 0
+_0806AA5C: .4byte gDungeonGlobalData
+_0806AA60: .4byte 0x000037fd
+_0806AA64: .4byte 0x000037ff
+_0806AA68:
+ movs r0, 0x1
+_0806AA6A:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806AA0C
+
+ thumb_func_start sub_806AA70
+sub_806AA70:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ movs r7, 0
+ ldr r0, _0806AAB4
+ mov r8, r0
+_0806AA7C:
+ mov r1, r8
+ ldr r0, [r1]
+ lsls r1, r7, 2
+ ldr r2, _0806AAB8
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806AB12
+ ldr r0, [r4, 0x70]
+ ldrb r2, [r0, 0xA]
+ ldrb r0, [r0, 0x7]
+ cmp r0, 0
+ beq _0806AAC4
+ mov r1, r8
+ ldr r0, [r1]
+ ldrb r0, [r0, 0x11]
+ cmp r0, 0x1
+ bne _0806AABC
+ adds r0, r4, 0
+ bl sub_8042B20
+ b _0806AB0A
+ .align 2, 0
+_0806AAB4: .4byte gDungeonGlobalData
+_0806AAB8: .4byte 0x0001357c
+_0806AABC:
+ adds r0, r4, 0
+ bl sub_8042B0C
+ b _0806AB0A
+_0806AAC4:
+ cmp r2, 0
+ blt _0806AB12
+ movs r6, 0
+ ldr r1, _0806AB24
+ movs r0, 0x64
+ muls r0, r2
+ ldr r2, _0806AB28
+ adds r0, r2
+ ldr r1, [r1]
+ adds r5, r1, r0
+ mov r1, r8
+ ldr r0, [r1]
+ ldrb r0, [r0, 0x11]
+ cmp r0, 0
+ bne _0806AB04
+ movs r2, 0xA
+ ldrsh r0, [r5, r2]
+ bl sub_806A564
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806AB04
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ bl sub_806A58C
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806AB00
+ movs r6, 0x1
+_0806AB00:
+ cmp r6, 0
+ beq _0806AB12
+_0806AB04:
+ adds r0, r4, 0
+ bl sub_8042B0C
+_0806AB0A:
+ adds r1, r4, 0
+ adds r1, 0x20
+ movs r0, 0
+ strb r0, [r1]
+_0806AB12:
+ adds r7, 0x1
+ cmp r7, 0x3
+ ble _0806AA7C
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806AB24: .4byte gRecruitedPokemonRef
+_0806AB28: .4byte 0x00008df8
+ thumb_func_end sub_806AA70
+
+ thumb_func_start sub_806AB2C
+sub_806AB2C:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ movs r4, 0
+ ldr r0, _0806ABA4
+ mov r9, r0
+_0806AB3A:
+ mov r1, r9
+ ldr r0, [r1]
+ lsls r1, r4, 2
+ ldr r2, _0806ABA8
+ adds r0, r2
+ adds r0, r1
+ ldr r7, [r0]
+ adds r0, r7, 0
+ bl EntityExists
+ lsls r0, 24
+ adds r4, 0x1
+ mov r8, r4
+ cmp r0, 0
+ beq _0806AB92
+ ldr r5, [r7, 0x70]
+ movs r6, 0
+_0806AB5C:
+ mov r1, r9
+ ldr r0, [r1]
+ lsls r1, r6, 2
+ ldr r2, _0806ABA8
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806AB8C
+ cmp r7, r4
+ beq _0806AB8C
+ adds r0, r5, 0
+ adds r0, 0x7C
+ ldrh r0, [r0]
+ ldrh r1, [r4, 0x26]
+ cmp r0, r1
+ bne _0806AB8C
+ adds r0, r5, 0
+ adds r0, 0x80
+ str r4, [r0]
+_0806AB8C:
+ adds r6, 0x1
+ cmp r6, 0x13
+ ble _0806AB5C
+_0806AB92:
+ mov r4, r8
+ cmp r4, 0x13
+ ble _0806AB3A
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806ABA4: .4byte gDungeonGlobalData
+_0806ABA8: .4byte 0x000135cc
+ thumb_func_end sub_806AB2C
+
+ thumb_func_start sub_806ABAC
+sub_806ABAC:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ ldr r5, [r4, 0x70]
+ adds r0, r4, 0
+ movs r1, 0x16
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806ABD4
+ adds r0, r5, 0
+ adds r0, 0xAC
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ bne _0806ABD4
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_807A290
+_0806ABD4:
+ adds r0, r4, 0
+ movs r1, 0x40
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806ABF4
+ adds r0, r5, 0
+ adds r0, 0xBC
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ bne _0806ABF4
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_807A400
+_0806ABF4:
+ adds r0, r4, 0
+ movs r1, 0x42
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806AC14
+ adds r0, r5, 0
+ adds r0, 0xAC
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0806AC14
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_807A290
+_0806AC14:
+ adds r0, r4, 0
+ movs r1, 0x29
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806AC34
+ adds r0, r5, 0
+ adds r0, 0xBC
+ ldrb r0, [r0]
+ cmp r0, 0x7
+ bne _0806AC34
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_807A400
+_0806AC34:
+ adds r0, r4, 0
+ movs r1, 0x36
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806AC50
+ adds r0, r4, 0
+ movs r1, 0x49
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806AC72
+_0806AC50:
+ adds r0, r4, 0
+ bl IsSleeping
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806AC66
+ adds r0, r5, 0
+ adds r0, 0xA8
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ bne _0806AC72
+_0806AC66:
+ adds r0, r6, 0
+ adds r1, r4, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl sub_807A124
+_0806AC72:
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806AC92
+ adds r0, r5, 0
+ adds r0, 0xB0
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0806AC92
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl SendImmobilizeEndMessage
+_0806AC92:
+ adds r0, r4, 0
+ movs r1, 0x45
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806ACB8
+ adds r0, r5, 0
+ adds r0, 0xAC
+ ldrb r0, [r0]
+ subs r0, 0x2
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _0806ACB8
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_807A290
+_0806ACB8:
+ adds r0, r4, 0
+ movs r1, 0x25
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806ACE0
+ adds r1, r5, 0
+ adds r1, 0xF6
+ movs r0, 0
+ strb r0, [r1]
+ adds r0, r5, 0
+ adds r0, 0xC4
+ ldrb r0, [r0]
+ cmp r0, 0xC
+ bne _0806ACE0
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_807A4C8
+_0806ACE0:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806ABAC
+
+ thumb_func_start sub_806ACE8
+sub_806ACE8:
+ push {r4,r5,lr}
+ adds r4, r1, 0
+ ldr r0, [r0, 0x70]
+ mov r12, r0
+ movs r5, 0xEF
+ movs r2, 0x8C
+ lsls r2, 1
+ add r2, r12
+ movs r3, 0x3
+_0806ACFA:
+ ldrb r1, [r2]
+ adds r0, r5, 0
+ ands r0, r1
+ strb r0, [r2]
+ adds r2, 0x8
+ subs r3, 0x1
+ cmp r3, 0
+ bge _0806ACFA
+ movs r2, 0x9C
+ lsls r2, 1
+ add r2, r12
+ ldrb r0, [r2]
+ movs r3, 0xEF
+ ands r3, r0
+ movs r5, 0
+ strb r3, [r2]
+ ldrh r1, [r4, 0x2]
+ movs r0, 0xB0
+ lsls r0, 1
+ cmp r1, r0
+ bne _0806AD2E
+ movs r1, 0x10
+ adds r0, r3, 0
+ orrs r0, r1
+ strb r0, [r2]
+ b _0806AD36
+_0806AD2E:
+ ldrb r0, [r4]
+ movs r1, 0x10
+ orrs r0, r1
+ strb r0, [r4]
+_0806AD36:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806ACE8
+
+ thumb_func_start sub_806AD3C
+sub_806AD3C:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ ldr r4, _0806AE1C
+ add sp, r4
+ ldr r0, _0806AE20
+ ldr r0, [r0]
+ ldr r1, _0806AE24
+ adds r4, r0, r1
+ mov r0, sp
+ movs r1, 0
+ bl sub_803D808
+ str r0, [sp, 0x200]
+ movs r7, 0
+ cmp r7, r0
+ bge _0806ADEC
+ mov r6, sp
+ adds r7, r0, 0
+_0806AD66:
+ adds r0, r6, 0
+ bl ExtractSpeciesIndex
+ strh r0, [r4]
+ adds r0, r6, 0
+ bl ExtractLevel
+ strh r0, [r4, 0x2]
+ adds r0, r4, 0x4
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x2
+ ldrsh r2, [r4, r3]
+ bl sub_8072AC8
+ ldrh r0, [r4, 0x4]
+ cmp r0, 0
+ bne _0806AD90
+ movs r0, 0xB8
+ lsls r0, 1
+ strh r0, [r4, 0x4]
+_0806AD90:
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ movs r2, 0x2
+ ldrsh r1, [r4, r2]
+ bl sub_806C444
+ strh r0, [r4, 0xC]
+ movs r5, 0
+ movs r3, 0xE
+ adds r3, r4
+ mov r9, r3
+ movs r0, 0x10
+ adds r0, r4
+ mov r8, r0
+ movs r1, 0x14
+ adds r1, r4
+ mov r10, r1
+_0806ADB2:
+ movs r2, 0
+ ldrsh r0, [r4, r2]
+ movs r3, 0x2
+ ldrsh r1, [r4, r3]
+ adds r2, r5, 0
+ bl sub_806C488
+ mov r2, r9
+ adds r1, r2, r5
+ strb r0, [r1]
+ movs r3, 0
+ ldrsh r0, [r4, r3]
+ movs r2, 0x2
+ ldrsh r1, [r4, r2]
+ adds r2, r5, 0
+ bl sub_806C4D4
+ mov r3, r8
+ adds r1, r3, r5
+ strb r0, [r1]
+ adds r5, 0x1
+ cmp r5, 0x1
+ ble _0806ADB2
+ mov r4, r10
+ adds r6, 0x8
+ subs r7, 0x1
+ cmp r7, 0
+ bne _0806AD66
+ ldr r7, [sp, 0x200]
+_0806ADEC:
+ cmp r7, 0x3F
+ bgt _0806ADFC
+ movs r0, 0
+_0806ADF2:
+ strh r0, [r4]
+ adds r4, 0x14
+ adds r7, 0x1
+ cmp r7, 0x3F
+ ble _0806ADF2
+_0806ADFC:
+ movs r7, 0
+ ldr r4, _0806AE28
+ ldr r3, _0806AE20
+ ldr r2, _0806AE2C
+ movs r1, 0
+_0806AE06:
+ ldr r0, [r3]
+ adds r0, r2
+ adds r0, r7
+ strb r1, [r0]
+ adds r7, 0x1
+ cmp r7, r4
+ ble _0806AE06
+ movs r0, 0x1
+ mov r10, r0
+ movs r7, 0
+ b _0806AE94
+ .align 2, 0
+_0806AE1C: .4byte 0xfffffdfc
+_0806AE20: .4byte gDungeonGlobalData
+_0806AE24: .4byte 0x00002f3c
+_0806AE28: .4byte 0x000001a7
+_0806AE2C: .4byte 0x0000363c
+_0806AE30:
+ movs r2, 0x1
+ negs r2, r2
+ mov r8, r2
+ mov r9, r8
+ ldr r3, [sp, 0x200]
+ cmp r3, 0
+ ble _0806AE7A
+ mov r5, sp
+ adds r6, r3, 0
+_0806AE42:
+ adds r0, r5, 0
+ bl ExtractSpeciesIndex
+ lsls r0, 16
+ asrs r4, r0, 16
+ ldr r1, _0806AECC
+ ldr r0, [r1]
+ ldr r2, _0806AED0
+ adds r0, r2
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806AE72
+ adds r0, r5, 0
+ bl ExtractLevel
+ adds r1, r0, 0
+ adds r0, r4, 0
+ bl CalculateEXPGain
+ cmp r9, r0
+ bge _0806AE72
+ mov r9, r0
+ mov r8, r4
+_0806AE72:
+ adds r5, 0x8
+ subs r6, 0x1
+ cmp r6, 0
+ bne _0806AE42
+_0806AE7A:
+ mov r3, r8
+ cmp r3, 0
+ blt _0806AE9A
+ ldr r1, _0806AECC
+ ldr r0, [r1]
+ ldr r2, _0806AED0
+ adds r0, r2
+ add r0, r8
+ mov r3, r10
+ strb r3, [r0]
+ movs r0, 0x2
+ add r10, r0
+ adds r7, 0x1
+_0806AE94:
+ ldr r1, [sp, 0x200]
+ cmp r7, r1
+ blt _0806AE30
+_0806AE9A:
+ movs r7, 0
+ ldr r5, _0806AECC
+ ldr r4, _0806AED0
+ movs r3, 0x1
+ ldr r2, _0806AED4
+_0806AEA4:
+ ldr r0, [r5]
+ adds r0, r4
+ adds r1, r0, r7
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _0806AEB2
+ strb r3, [r1]
+_0806AEB2:
+ adds r7, 0x1
+ cmp r7, r2
+ ble _0806AEA4
+ movs r3, 0x81
+ lsls r3, 2
+ add sp, r3
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806AECC: .4byte gDungeonGlobalData
+_0806AED0: .4byte 0x0000363c
+_0806AED4: .4byte 0x000001a7
+ thumb_func_end sub_806AD3C
+
+ thumb_func_start sub_806AED8
+sub_806AED8:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x18
+ mov r10, r0
+ str r1, [sp, 0x8]
+ str r2, [sp, 0xC]
+ str r3, [sp, 0x10]
+ ldr r0, [sp, 0x38]
+ ldr r1, [sp, 0x3C]
+ mov r8, r1
+ lsls r0, 16
+ asrs r7, r0, 16
+ ldr r1, _0806AF04
+ ldr r0, [r1]
+ ldr r4, _0806AF08
+ adds r6, r0, r4
+ movs r3, 0
+ b _0806AF7A
+ .align 2, 0
+_0806AF04: .4byte gDungeonGlobalData
+_0806AF08: .4byte 0x00002f3c
+_0806AF0C:
+ lsls r0, r2, 16
+ asrs r0, 16
+ cmp r0, r7
+ bne _0806AF6E
+ movs r2, 0x2
+ ldrsh r0, [r6, r2]
+ cmp r0, r8
+ bne _0806AF6E
+ movs r5, 0xE
+ adds r5, r6
+ mov r8, r5
+ movs r0, 0x10
+ adds r0, r6
+ mov r9, r0
+ mov r1, r10
+ adds r1, 0x20
+ str r1, [sp, 0x14]
+ adds r5, r6, 0x4
+ mov r4, r10
+ movs r7, 0x3
+_0806AF34:
+ ldrh r1, [r5]
+ adds r0, r4, 0
+ bl sub_8092AA8
+ adds r5, 0x2
+ adds r4, 0x8
+ subs r7, 0x1
+ cmp r7, 0
+ bge _0806AF34
+ ldrh r0, [r6, 0xC]
+ ldr r2, [sp, 0x8]
+ strh r0, [r2]
+ movs r5, 0
+ mov r3, r8
+ mov r2, r9
+_0806AF52:
+ ldr r0, [sp, 0xC]
+ adds r1, r0, r5
+ adds r0, r3, r5
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldr r0, [sp, 0x10]
+ adds r1, r0, r5
+ adds r0, r2, r5
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r5, 0x1
+ cmp r5, 0x1
+ ble _0806AF52
+ b _0806B084
+_0806AF6E:
+ adds r4, 0x14
+ adds r3, 0x1
+ cmp r3, 0x3F
+ bgt _0806AF84
+ ldr r0, [r1]
+ adds r6, r0, r4
+_0806AF7A:
+ ldrh r2, [r6]
+ movs r5, 0
+ ldrsh r0, [r6, r5]
+ cmp r0, 0
+ bne _0806AF0C
+_0806AF84:
+ cmp r3, 0x40
+ bne _0806AFE6
+ mov r0, sp
+ adds r1, r7, 0
+ mov r2, r8
+ bl sub_8072AC8
+ mov r0, r10
+ adds r0, 0x20
+ str r0, [sp, 0x14]
+ mov r5, sp
+ mov r4, r10
+ movs r6, 0x3
+_0806AF9E:
+ ldrh r1, [r5]
+ adds r0, r4, 0
+ bl sub_8092AA8
+ adds r5, 0x2
+ adds r4, 0x8
+ subs r6, 0x1
+ cmp r6, 0
+ bge _0806AF9E
+ adds r0, r7, 0
+ mov r1, r8
+ bl sub_806C444
+ ldr r1, [sp, 0x8]
+ strh r0, [r1]
+ movs r5, 0
+_0806AFBE:
+ adds r0, r7, 0
+ mov r1, r8
+ adds r2, r5, 0
+ bl sub_806C488
+ ldr r2, [sp, 0xC]
+ adds r1, r2, r5
+ strb r0, [r1]
+ adds r0, r7, 0
+ mov r1, r8
+ adds r2, r5, 0
+ bl sub_806C4D4
+ ldr r2, [sp, 0x10]
+ adds r1, r2, r5
+ strb r0, [r1]
+ adds r5, 0x1
+ cmp r5, 0x1
+ ble _0806AFBE
+ b _0806B084
+_0806AFE6:
+ strh r7, [r6]
+ mov r5, r8
+ strh r5, [r6, 0x2]
+ adds r4, r6, 0x4
+ adds r0, r4, 0
+ adds r1, r7, 0
+ mov r2, r8
+ bl sub_8072AC8
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ movs r2, 0x2
+ ldrsh r1, [r6, r2]
+ bl sub_806C444
+ strh r0, [r6, 0xC]
+ movs r5, 0
+ movs r0, 0xE
+ adds r0, r6
+ mov r8, r0
+ movs r1, 0x10
+ adds r1, r6
+ mov r9, r1
+ mov r2, r10
+ adds r2, 0x20
+ str r2, [sp, 0x14]
+_0806B01A:
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ movs r2, 0x2
+ ldrsh r1, [r6, r2]
+ adds r2, r5, 0
+ bl sub_806C488
+ mov r2, r8
+ adds r1, r2, r5
+ strb r0, [r1]
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ movs r2, 0x2
+ ldrsh r1, [r6, r2]
+ adds r2, r5, 0
+ bl sub_806C4D4
+ mov r2, r9
+ adds r1, r2, r5
+ strb r0, [r1]
+ adds r5, 0x1
+ cmp r5, 0x1
+ ble _0806B01A
+ mov r5, r10
+ movs r7, 0x3
+_0806B04C:
+ ldrh r1, [r4]
+ adds r0, r5, 0
+ bl sub_8092AA8
+ adds r4, 0x2
+ adds r5, 0x8
+ subs r7, 0x1
+ cmp r7, 0
+ bge _0806B04C
+ ldrh r0, [r6, 0xC]
+ ldr r5, [sp, 0x8]
+ strh r0, [r5]
+ movs r5, 0
+ mov r3, r8
+ mov r2, r9
+_0806B06A:
+ ldr r0, [sp, 0xC]
+ adds r1, r0, r5
+ adds r0, r3, r5
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldr r0, [sp, 0x10]
+ adds r1, r0, r5
+ adds r0, r2, r5
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r5, 0x1
+ cmp r5, 0x1
+ ble _0806B06A
+_0806B084:
+ movs r0, 0
+ ldr r1, [sp, 0x14]
+ strb r0, [r1]
+ add sp, 0x18
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806AED8
+
+ thumb_func_start sub_806B09C
+sub_806B09C:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ mov r8, r0
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp]
+ movs r7, 0
+ movs r2, 0
+ mov r6, r8
+ adds r6, 0x2
+ mov r9, r8
+_0806B0BA:
+ movs r0, 0x64
+ muls r0, r2
+ ldr r1, _0806B0E4
+ adds r0, r1
+ ldr r3, _0806B0E8
+ ldr r1, [r3]
+ adds r5, r1, r0
+ ldrh r1, [r5]
+ movs r0, 0x1
+ ands r0, r1
+ adds r2, 0x1
+ mov r10, r2
+ cmp r0, 0
+ beq _0806B124
+ lsrs r0, r1, 1
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0806B124
+ movs r4, 0
+ b _0806B0EE
+ .align 2, 0
+_0806B0E4: .4byte 0x00008df8
+_0806B0E8: .4byte gRecruitedPokemonRef
+_0806B0EC:
+ adds r4, 0x1
+_0806B0EE:
+ cmp r4, r7
+ bge _0806B106
+ lsls r0, r4, 3
+ add r0, r8
+ bl ExtractSpeciesIndex
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0xE
+ ldrsh r1, [r5, r2]
+ cmp r0, r1
+ bne _0806B0EC
+_0806B106:
+ cmp r4, r7
+ bne _0806B124
+ movs r3, 0xE
+ ldrsh r2, [r5, r3]
+ mov r0, r9
+ movs r1, 0
+ bl sub_808E9D8
+ movs r0, 0
+ strh r0, [r6]
+ strh r0, [r6, 0x2]
+ adds r6, 0x8
+ movs r0, 0x8
+ add r9, r0
+ adds r7, 0x1
+_0806B124:
+ mov r2, r10
+ cmp r2, 0x3
+ ble _0806B0BA
+ mov r0, r8
+ adds r1, r7, 0
+ bl sub_803D808
+ adds r7, r0, 0
+ ldr r1, [sp]
+ cmp r1, 0
+ beq _0806B150
+ lsls r4, r7, 3
+ add r4, r8
+ ldr r2, _0806B164
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_808E9D8
+ movs r0, 0
+ strh r0, [r4, 0x2]
+ strh r0, [r4, 0x4]
+ adds r7, 0x1
+_0806B150:
+ adds r0, r7, 0
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806B164: .4byte 0x000001a5
+ thumb_func_end sub_806B09C
+
+ thumb_func_start sub_806B168
+sub_806B168:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x3C
+ ldr r0, _0806B324
+ ldr r1, [r0]
+ ldr r2, _0806B328
+ adds r0, r1, r2
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ ldr r4, _0806B32C
+ adds r1, r4
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ bl GetMapTileAtPosition
+ ldrb r0, [r0, 0x9]
+ str r0, [sp, 0x2C]
+ movs r3, 0
+ mov r4, sp
+ adds r4, 0x1C
+ str r4, [sp, 0x30]
+ ldr r2, _0806B330
+ ldr r1, _0806B334
+_0806B19C:
+ ldr r0, [r2]
+ adds r0, r1
+ strh r3, [r0, 0xC]
+ adds r1, 0x64
+ adds r3, 0x1
+ cmp r3, 0x3
+ ble _0806B19C
+ movs r4, 0
+ movs r3, 0
+ ldr r0, _0806B324
+ mov r8, r0
+ ldr r0, _0806B330
+ ldr r7, [r0]
+ movs r5, 0x1
+ add r6, sp, 0xC
+_0806B1BA:
+ movs r0, 0x64
+ muls r0, r3
+ ldr r1, _0806B334
+ adds r0, r1
+ adds r2, r7, r0
+ ldrh r1, [r2]
+ adds r0, r5, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0806B1DA
+ lsrs r0, r1, 1
+ ands r0, r5
+ cmp r0, 0
+ beq _0806B1DA
+ stm r6!, {r2}
+ adds r4, 0x1
+_0806B1DA:
+ adds r3, 0x1
+ cmp r3, 0x3
+ ble _0806B1BA
+ cmp r4, 0x3
+ bgt _0806B1F4
+ movs r1, 0
+ lsls r0, r4, 2
+ add r0, sp
+ adds r0, 0xC
+_0806B1EC:
+ stm r0!, {r1}
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0806B1EC
+_0806B1F4:
+ movs r4, 0
+ movs r6, 0
+ add r2, sp, 0xC
+ ldr r5, [sp, 0x30]
+ movs r3, 0x3
+_0806B1FE:
+ ldr r1, [r2]
+ cmp r1, 0
+ beq _0806B210
+ ldrb r0, [r1, 0x2]
+ cmp r0, 0
+ beq _0806B210
+ str r6, [r2]
+ stm r5!, {r1}
+ adds r4, 0x1
+_0806B210:
+ adds r2, 0x4
+ subs r3, 0x1
+ cmp r3, 0
+ bge _0806B1FE
+ mov r2, r8
+ ldr r0, [r2]
+ ldr r3, _0806B338
+ adds r0, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806B24C
+ movs r6, 0
+ add r2, sp, 0xC
+ lsls r0, r4, 2
+ ldr r1, [sp, 0x30]
+ adds r5, r0, r1
+ movs r3, 0x3
+_0806B232:
+ ldr r1, [r2]
+ cmp r1, 0
+ beq _0806B244
+ ldrb r0, [r1, 0x4]
+ cmp r0, 0x41
+ bne _0806B244
+ str r6, [r2]
+ stm r5!, {r1}
+ adds r4, 0x1
+_0806B244:
+ adds r2, 0x4
+ subs r3, 0x1
+ cmp r3, 0
+ bge _0806B232
+_0806B24C:
+ movs r5, 0
+ add r2, sp, 0xC
+ lsls r0, r4, 2
+ ldr r3, [sp, 0x30]
+ adds r0, r3
+ movs r3, 0x3
+_0806B258:
+ ldr r1, [r2]
+ cmp r1, 0
+ beq _0806B264
+ str r5, [r2]
+ stm r0!, {r1}
+ adds r4, 0x1
+_0806B264:
+ adds r2, 0x4
+ subs r3, 0x1
+ cmp r3, 0
+ bge _0806B258
+ cmp r4, 0x3
+ bgt _0806B280
+ movs r1, 0
+ lsls r0, r4, 2
+ ldr r2, [sp, 0x30]
+ adds r0, r2
+_0806B278:
+ stm r0!, {r1}
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0806B278
+_0806B280:
+ movs r3, 0
+_0806B282:
+ lsls r0, r3, 2
+ ldr r4, [sp, 0x30]
+ adds r0, r4, r0
+ ldr r0, [r0]
+ mov r8, r0
+ adds r0, r3, 0x1
+ str r0, [sp, 0x34]
+ mov r1, r8
+ cmp r1, 0
+ bne _0806B298
+ b _0806B3E8
+_0806B298:
+ movs r2, 0xE
+ ldrsh r1, [r1, r2]
+ ldr r0, _0806B33C
+ cmp r1, r0
+ beq _0806B2AE
+ adds r0, 0x2
+ cmp r1, r0
+ beq _0806B2AE
+ subs r0, 0x1
+ cmp r1, r0
+ bne _0806B2B6
+_0806B2AE:
+ movs r0, 0xBC
+ lsls r0, 1
+ mov r4, r8
+ strh r0, [r4, 0xE]
+_0806B2B6:
+ ldr r0, _0806B340
+ ldr r2, [r0]
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ adds r3, 0x1
+ str r3, [sp, 0x34]
+ ldr r3, _0806B340
+ cmp r0, 0x63
+ beq _0806B350
+ ldr r4, _0806B324
+ mov r9, r4
+ ldr r0, _0806B328
+ mov r10, r0
+ adds r5, r3, 0
+_0806B2D2:
+ lsls r0, r2, 16
+ asrs r7, r0, 16
+ mov r4, r9
+ ldr r1, [r4]
+ mov r4, r10
+ adds r0, r1, r4
+ movs r4, 0
+ ldrsh r0, [r0, r4]
+ adds r0, r7, r0
+ asrs r6, r2, 16
+ ldr r2, _0806B32C
+ adds r1, r2
+ movs r4, 0
+ ldrsh r1, [r1, r4]
+ adds r1, r6, r1
+ str r3, [sp, 0x38]
+ bl GetMapTileAtPosition
+ adds r1, r0, 0
+ ldrb r0, [r1, 0x9]
+ ldr r3, [sp, 0x38]
+ ldr r2, [sp, 0x2C]
+ cmp r0, r2
+ bne _0806B344
+ mov r4, r8
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ bl sub_807034C
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r3, [sp, 0x38]
+ cmp r4, 0
+ bne _0806B344
+ mov r3, r8
+ movs r1, 0xE
+ ldrsh r0, [r3, r1]
+ mov r3, r9
+ ldr r2, [r3]
+ mov r3, r10
+ b _0806B3A8
+ .align 2, 0
+_0806B324: .4byte gDungeonGlobalData
+_0806B328: .4byte 0x0000e218
+_0806B32C: .4byte 0x0000e21a
+_0806B330: .4byte gRecruitedPokemonRef
+_0806B334: .4byte 0x00008df8
+_0806B338: .4byte 0x0000065c
+_0806B33C: .4byte 0x00000179
+_0806B340: .4byte gUnknown_80F4598
+_0806B344:
+ adds r5, 0x4
+ ldr r2, [r5]
+ movs r4, 0
+ ldrsh r0, [r5, r4]
+ cmp r0, 0x63
+ bne _0806B2D2
+_0806B350:
+ movs r0, 0
+ cmp r0, 0
+ bne _0806B3E8
+ ldr r2, [r3]
+ movs r1, 0
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x63
+ beq _0806B3E8
+ ldr r3, _0806B3CC
+ mov r9, r3
+ ldr r5, _0806B3D0
+_0806B366:
+ lsls r0, r2, 16
+ asrs r7, r0, 16
+ mov r4, r9
+ ldr r1, [r4]
+ ldr r3, _0806B3D4
+ adds r0, r1, r3
+ movs r4, 0
+ ldrsh r0, [r0, r4]
+ adds r0, r7, r0
+ asrs r6, r2, 16
+ ldr r2, _0806B3D8
+ adds r1, r2
+ movs r3, 0
+ ldrsh r1, [r1, r3]
+ adds r1, r6, r1
+ bl GetMapTileAtPosition
+ adds r1, r0, 0
+ mov r4, r8
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ bl sub_807034C
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ bne _0806B3DC
+ mov r3, r8
+ movs r1, 0xE
+ ldrsh r0, [r3, r1]
+ mov r3, r9
+ ldr r2, [r3]
+ ldr r3, _0806B3D4
+_0806B3A8:
+ adds r1, r2, r3
+ movs r3, 0
+ ldrsh r1, [r1, r3]
+ adds r1, r7, r1
+ ldr r3, _0806B3D8
+ adds r2, r3
+ movs r3, 0
+ ldrsh r2, [r2, r3]
+ adds r2, r6, r2
+ str r4, [sp]
+ movs r3, 0x1
+ str r3, [sp, 0x4]
+ str r4, [sp, 0x8]
+ mov r3, r8
+ bl sub_806B8CC
+ b _0806B3E8
+ .align 2, 0
+_0806B3CC: .4byte gDungeonGlobalData
+_0806B3D0: .4byte gUnknown_80F4598
+_0806B3D4: .4byte 0x0000e218
+_0806B3D8: .4byte 0x0000e21a
+_0806B3DC:
+ adds r5, 0x4
+ ldr r2, [r5]
+ movs r4, 0
+ ldrsh r0, [r5, r4]
+ cmp r0, 0x63
+ bne _0806B366
+_0806B3E8:
+ ldr r3, [sp, 0x34]
+ cmp r3, 0x3
+ bgt _0806B3F0
+ b _0806B282
+_0806B3F0:
+ bl sub_806B678
+ add sp, 0x3C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806B168
+
+ thumb_func_start sub_806B404
+sub_806B404:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x30
+ movs r5, 0
+ movs r2, 0
+ ldr r0, _0806B480
+ mov r9, r0
+ ldr r0, _0806B484
+ ldr r7, [r0]
+ movs r6, 0x1
+ ldr r1, _0806B488
+ mov r8, r1
+_0806B422:
+ movs r0, 0x64
+ muls r0, r2
+ ldr r3, _0806B48C
+ adds r0, r3
+ adds r3, r7, r0
+ ldrh r1, [r3]
+ adds r0, r6, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0806B446
+ lsrs r0, r1, 1
+ ands r0, r6
+ cmp r0, 0
+ beq _0806B446
+ movs r1, 0xA
+ ldrsh r0, [r3, r1]
+ cmp r0, r8
+ beq _0806B490
+_0806B446:
+ adds r2, 0x1
+ cmp r2, 0x3
+ ble _0806B422
+_0806B44C:
+ cmp r5, 0x3
+ bgt _0806B460
+ movs r1, 0
+ lsls r0, r5, 2
+ add r0, sp
+ adds r0, 0xC
+_0806B458:
+ stm r0!, {r1}
+ adds r5, 0x1
+ cmp r5, 0x3
+ ble _0806B458
+_0806B460:
+ movs r0, 0
+ mov r2, r9
+ str r0, [r2]
+ bl GetLeaderEntity
+ adds r5, r0, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806B49C
+ ldrh r0, [r5, 0x6]
+ lsls r0, 16
+ ldrh r4, [r5, 0x4]
+ b _0806B4AE
+ .align 2, 0
+_0806B480: .4byte gLeaderPokemon
+_0806B484: .4byte gRecruitedPokemonRef
+_0806B488: .4byte 0x000055aa
+_0806B48C: .4byte 0x00008df8
+_0806B490:
+ lsls r0, r5, 2
+ add r0, sp
+ adds r0, 0xC
+ str r3, [r0]
+ adds r5, 0x1
+ b _0806B44C
+_0806B49C:
+ ldr r0, _0806B560
+ ldr r0, [r0]
+ ldr r3, _0806B564
+ adds r1, r0, r3
+ ldr r2, _0806B568
+ adds r0, r2
+ ldrh r0, [r0]
+ lsls r0, 16
+ ldrh r4, [r1]
+_0806B4AE:
+ orrs r4, r0
+ lsls r5, r4, 16
+ asrs r0, r5, 16
+ asrs r4, 16
+ adds r1, r4, 0
+ bl GetMapTileAtPosition
+ ldrb r0, [r0, 0x9]
+ str r0, [sp, 0x20]
+ movs r2, 0
+ str r5, [sp, 0x24]
+ mov r10, r4
+_0806B4C6:
+ lsls r0, r2, 2
+ add r0, sp
+ adds r0, 0xC
+ ldr r6, [r0]
+ adds r2, 0x1
+ str r2, [sp, 0x28]
+ cmp r6, 0
+ bne _0806B4D8
+ b _0806B65E
+_0806B4D8:
+ ldrh r1, [r6]
+ movs r2, 0x1
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0806B4E6
+ b _0806B65E
+_0806B4E6:
+ lsrs r0, r1, 1
+ ands r0, r2
+ cmp r0, 0
+ bne _0806B4F0
+ b _0806B65E
+_0806B4F0:
+ movs r3, 0xA
+ ldrsh r1, [r6, r3]
+ ldr r0, _0806B56C
+ cmp r1, r0
+ beq _0806B4FC
+ b _0806B65E
+_0806B4FC:
+ ldr r0, _0806B570
+ strh r0, [r6, 0xA]
+ movs r7, 0
+ ldr r2, _0806B574
+ ldr r0, [r2]
+ str r0, [sp, 0x1C]
+ add r0, sp, 0x1C
+ movs r3, 0
+ ldrsh r1, [r0, r3]
+ mov r9, r2
+ adds r2, r0, 0
+ cmp r1, 0x63
+ beq _0806B58C
+ ldr r0, [sp, 0x24]
+ asrs r0, 16
+ mov r8, r0
+_0806B51C:
+ movs r1, 0
+ ldrsh r0, [r2, r1]
+ add r0, r8
+ ldr r1, [sp, 0x1C]
+ asrs r1, 16
+ mov r5, r10
+ adds r1, r5
+ str r2, [sp, 0x2C]
+ bl GetMapTileAtPosition
+ adds r1, r0, 0
+ ldrb r0, [r1, 0x9]
+ ldr r2, [sp, 0x2C]
+ ldr r3, [sp, 0x20]
+ cmp r0, r3
+ bne _0806B578
+ movs r3, 0xE
+ ldrsh r0, [r6, r3]
+ bl sub_807034C
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r2, [sp, 0x2C]
+ cmp r4, 0
+ bne _0806B578
+ movs r1, 0xE
+ ldrsh r0, [r6, r1]
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ add r1, r8
+ ldr r2, [sp, 0x1C]
+ asrs r2, 16
+ adds r2, r5
+ b _0806B642
+ .align 2, 0
+_0806B560: .4byte gDungeonGlobalData
+_0806B564: .4byte 0x0000e218
+_0806B568: .4byte 0x0000e21a
+_0806B56C: .4byte 0x000055aa
+_0806B570: .4byte 0x00005aa5
+_0806B574: .4byte gUnknown_80F4598
+_0806B578:
+ adds r7, 0x1
+ ldr r1, _0806B5E4
+ lsls r0, r7, 2
+ adds r0, r1
+ ldr r0, [r0]
+ str r0, [sp, 0x1C]
+ movs r1, 0
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x63
+ bne _0806B51C
+_0806B58C:
+ movs r3, 0
+ cmp r3, 0
+ bne _0806B65E
+ movs r7, 0
+ mov r1, r9
+ ldr r0, [r1]
+ str r0, [sp, 0x1C]
+ movs r3, 0
+ ldrsh r0, [r2, r3]
+ cmp r0, 0x63
+ beq _0806B5FC
+ ldr r0, [sp, 0x24]
+ asrs r0, 16
+ mov r8, r0
+_0806B5A8:
+ movs r1, 0
+ ldrsh r0, [r2, r1]
+ add r0, r8
+ ldr r1, [sp, 0x1C]
+ asrs r1, 16
+ mov r5, r10
+ adds r1, r5
+ str r2, [sp, 0x2C]
+ bl GetMapTileAtPosition
+ adds r1, r0, 0
+ movs r3, 0xE
+ ldrsh r0, [r6, r3]
+ bl sub_807034C
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r2, [sp, 0x2C]
+ cmp r4, 0
+ bne _0806B5E8
+ movs r1, 0xE
+ ldrsh r0, [r6, r1]
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ add r1, r8
+ ldr r2, [sp, 0x1C]
+ asrs r2, 16
+ adds r2, r5
+ b _0806B642
+ .align 2, 0
+_0806B5E4: .4byte gUnknown_80F4598
+_0806B5E8:
+ adds r7, 0x1
+ ldr r1, _0806B654
+ lsls r0, r7, 2
+ adds r0, r1
+ ldr r0, [r0]
+ str r0, [sp, 0x1C]
+ movs r1, 0
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x63
+ bne _0806B5A8
+_0806B5FC:
+ movs r3, 0
+ cmp r3, 0
+ bne _0806B65E
+ movs r7, 0
+ adds r5, r2, 0
+_0806B606:
+ adds r0, r5, 0
+ str r2, [sp, 0x2C]
+ bl sub_8083660
+ lsls r0, 24
+ ldr r2, [sp, 0x2C]
+ cmp r0, 0
+ beq _0806B658
+ movs r1, 0
+ ldrsh r0, [r2, r1]
+ movs r3, 0x2
+ ldrsh r1, [r5, r3]
+ bl GetMapTileAtPosition
+ adds r1, r0, 0
+ movs r3, 0xE
+ ldrsh r0, [r6, r3]
+ bl sub_807034C
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r2, [sp, 0x2C]
+ cmp r4, 0
+ bne _0806B658
+ movs r1, 0xE
+ ldrsh r0, [r6, r1]
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ movs r3, 0x2
+ ldrsh r2, [r5, r3]
+_0806B642:
+ str r4, [sp]
+ movs r3, 0x1
+ str r3, [sp, 0x4]
+ str r4, [sp, 0x8]
+ adds r3, r6, 0
+ bl sub_806B8CC
+ b _0806B65E
+ .align 2, 0
+_0806B654: .4byte gUnknown_80F4598
+_0806B658:
+ adds r7, 0x1
+ cmp r7, 0x63
+ ble _0806B606
+_0806B65E:
+ ldr r2, [sp, 0x28]
+ cmp r2, 0x3
+ bgt _0806B666
+ b _0806B4C6
+_0806B666:
+ add sp, 0x30
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806B404
+
+ thumb_func_start sub_806B678
+sub_806B678:
+ push {r4,r5,lr}
+ movs r5, 0
+_0806B67C:
+ ldr r0, _0806B6AC
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _0806B6B0
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806B6B8
+ ldr r0, [r4, 0x70]
+ ldrb r0, [r0, 0x7]
+ cmp r0, 0
+ beq _0806B6B8
+ adds r0, r4, 0
+ bl sub_803F4A0
+ ldr r1, _0806B6B4
+ ldr r0, [r4, 0x4]
+ str r0, [r1]
+ b _0806B6BE
+ .align 2, 0
+_0806B6AC: .4byte gDungeonGlobalData
+_0806B6B0: .4byte 0x0001357c
+_0806B6B4: .4byte gUnknown_202EE0C
+_0806B6B8:
+ adds r5, 0x1
+ cmp r5, 0x3
+ ble _0806B67C
+_0806B6BE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806B678
+
+ thumb_func_start sub_806B6C4
+sub_806B6C4:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ ldr r4, _0806B708
+ ldr r0, [r4]
+ movs r1, 0xD1
+ lsls r1, 3
+ adds r0, r1
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ negs r0, r1
+ orrs r0, r1
+ lsrs r0, 31
+ mov r8, r0
+ movs r0, 0x7A
+ bl sub_80860A8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806B710
+ movs r0, 0x97
+ bl HasRecruitedMon
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0806B710
+ ldr r0, [r4]
+ ldr r2, _0806B70C
+ adds r0, r2
+ b _0806B71A
+ .align 2, 0
+_0806B708: .4byte gDungeonGlobalData
+_0806B70C: .4byte 0x000037ff
+_0806B710:
+ ldr r0, _0806B77C
+ ldr r0, [r0]
+ ldr r1, _0806B780
+ adds r0, r1
+ movs r1, 0x1
+_0806B71A:
+ strb r1, [r0]
+ movs r0, 0x38
+ bl DungeonRandomCapped
+ adds r5, r0, 0
+ movs r0, 0x20
+ bl DungeonRandomCapped
+ adds r7, r0, 0
+ movs r0, 0
+_0806B72E:
+ adds r7, 0x1
+ cmp r7, 0x20
+ bne _0806B736
+ movs r7, 0
+_0806B736:
+ adds r0, 0x1
+ mov r10, r0
+ mov r4, sp
+ movs r2, 0x37
+ mov r9, r2
+_0806B740:
+ adds r5, 0x1
+ cmp r5, 0x38
+ bne _0806B748
+ movs r5, 0
+_0806B748:
+ adds r0, r5, 0
+ adds r1, r7, 0
+ bl GetMapTileAtPosition
+ ldrh r1, [r0, 0x4]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _0806B7C2
+ movs r6, 0
+ mov r0, r8
+ cmp r0, 0
+ beq _0806B784
+ ldr r0, _0806B77C
+ ldr r0, [r0]
+ movs r1, 0xD1
+ lsls r1, 3
+ adds r0, r1
+ ldrh r0, [r0]
+ strh r0, [r4]
+ movs r1, 0x1
+ movs r0, 0x1
+ strh r0, [r4, 0x8]
+ strb r1, [r4, 0x2]
+ movs r6, 0x1
+ b _0806B794
+ .align 2, 0
+_0806B77C: .4byte gDungeonGlobalData
+_0806B780: .4byte 0x000037ff
+_0806B784:
+ movs r0, 0
+ bl sub_803D970
+ movs r1, 0
+ strh r0, [r4]
+ mov r2, r8
+ strh r2, [r4, 0x8]
+ strb r1, [r4, 0x2]
+_0806B794:
+ movs r0, 0
+ str r0, [sp, 0x4]
+ strb r0, [r4, 0x10]
+ strh r5, [r4, 0xC]
+ strh r7, [r4, 0xE]
+ cmp r6, 0
+ bne _0806B7B2
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ movs r1, 0x1
+ bl sub_806AA0C
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806B7C2
+_0806B7B2:
+ mov r0, sp
+ movs r1, 0
+ bl sub_806B7F8
+ cmp r0, 0
+ beq _0806B7C2
+ movs r2, 0
+ mov r8, r2
+_0806B7C2:
+ movs r0, 0x1
+ negs r0, r0
+ add r9, r0
+ mov r1, r9
+ cmp r1, 0
+ bge _0806B740
+ mov r0, r10
+ cmp r0, 0x1F
+ ble _0806B72E
+ mov r2, r8
+ cmp r2, 0
+ beq _0806B7E2
+ ldr r0, _0806B7F4
+ ldr r1, [r0]
+ movs r0, 0x1
+ strb r0, [r1, 0xA]
+_0806B7E2:
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806B7F4: .4byte gDungeonGlobalData
+ thumb_func_end sub_806B6C4
+
+ thumb_func_start sub_806B7F8
+sub_806B7F8:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x8
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ movs r1, 0xC
+ ldrsh r0, [r6, r1]
+ movs r2, 0xE
+ ldrsh r1, [r6, r2]
+ bl GetMapTileAtPosition
+ adds r1, r0, 0
+ movs r3, 0
+ ldrsh r0, [r6, r3]
+ bl sub_807034C
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806B834
+ movs r4, 0
+ ldrsh r0, [r6, r4]
+ bl sub_804550C
+ adds r7, r0, 0
+ cmp r7, 0
+ bne _0806B838
+_0806B834:
+ movs r0, 0
+ b _0806B8B8
+_0806B838:
+ ldr r3, _0806B8C8
+ movs r0, 0
+ adds r1, r7, 0
+ adds r2, r6, 0
+ bl sub_806BC68
+ ldr r5, [r7, 0x70]
+ movs r0, 0x1
+ strb r0, [r5, 0x6]
+ movs r1, 0x8C
+ lsls r1, 1
+ adds r0, r5, r1
+ adds r1, r5, 0
+ adds r1, 0x10
+ adds r2, r5, 0
+ adds r2, 0x14
+ movs r3, 0x16
+ adds r3, r5
+ mov r9, r3
+ movs r3, 0x2
+ ldrsh r4, [r5, r3]
+ str r4, [sp]
+ ldrb r4, [r5, 0x9]
+ str r4, [sp, 0x4]
+ mov r3, r9
+ bl sub_806AED8
+ ldrh r0, [r5, 0x10]
+ strh r0, [r5, 0xE]
+ movs r4, 0x8A
+ lsls r4, 1
+ adds r1, r5, r4
+ ldr r0, [r6, 0x4]
+ str r0, [r1]
+ ldrb r0, [r6, 0x2]
+ cmp r0, 0
+ bne _0806B8B6
+ mov r0, r8
+ cmp r0, 0
+ bne _0806B8B6
+ ldrb r0, [r6, 0x10]
+ cmp r0, 0
+ bne _0806B8B6
+ movs r0, 0x64
+ bl DungeonRandomCapped
+ adds r4, r0, 0
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ bl GetUnk1D
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, r4
+ ble _0806B8B6
+ adds r0, r7, 0
+ movs r1, 0x7F
+ bl sub_8075BF4
+ adds r0, r7, 0
+ movs r1, 0x8
+ bl sub_806CE68
+_0806B8B6:
+ adds r0, r7, 0
+_0806B8B8:
+ add sp, 0x8
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806B8C8: .4byte gUnknown_202EE0C
+ thumb_func_end sub_806B7F8
+
+ thumb_func_start sub_806B8CC
+sub_806B8CC:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x2C
+ mov r9, r1
+ mov r10, r2
+ adds r5, r3, 0
+ ldr r1, [sp, 0x50]
+ ldr r2, [sp, 0x54]
+ lsls r0, 16
+ asrs r4, r0, 16
+ lsls r1, 24
+ lsrs r6, r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp, 0x18]
+ ldrb r1, [r5, 0x2]
+ negs r0, r1
+ orrs r0, r1
+ lsrs r0, 31
+ mov r8, r0
+ ldr r0, [sp, 0x4C]
+ cmp r0, 0
+ beq _0806B906
+ movs r0, 0
+ ldr r1, [sp, 0x4C]
+ str r0, [r1]
+_0806B906:
+ adds r0, r4, 0
+ bl GetBaseSpecies
+ lsls r0, 16
+ asrs r1, r0, 16
+ movs r0, 0xCF
+ lsls r0, 1
+ cmp r1, r0
+ bne _0806B932
+ cmp r6, 0
+ beq _0806B930
+ ldr r0, _0806B92C
+ ldr r0, [r0]
+ movs r2, 0xE0
+ lsls r2, 6
+ adds r0, r2
+ movs r3, 0
+ ldrsh r4, [r0, r3]
+ b _0806B932
+ .align 2, 0
+_0806B92C: .4byte gDungeonGlobalData
+_0806B930:
+ adds r4, r1, 0
+_0806B932:
+ mov r0, r9
+ mov r1, r10
+ bl GetMapTileAtPosition
+ adds r1, r0, 0
+ adds r0, r4, 0
+ bl sub_807034C
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0
+ bne _0806B956
+ adds r0, r4, 0
+ bl sub_80453AC
+ str r0, [sp, 0x1C]
+ cmp r0, 0
+ bne _0806B95A
+_0806B956:
+ movs r0, 0
+ b _0806BB3C
+_0806B95A:
+ mov r0, sp
+ movs r7, 0
+ mov r1, r9
+ strh r1, [r0, 0xC]
+ mov r2, r10
+ strh r2, [r0, 0xE]
+ strh r4, [r0]
+ mov r1, sp
+ ldrb r0, [r5, 0x3]
+ strh r0, [r1, 0x8]
+ mov r0, sp
+ strb r7, [r0, 0x2]
+ str r6, [sp, 0x4]
+ strb r7, [r0, 0x10]
+ ldr r4, _0806BB4C
+ ldr r3, _0806BB50
+ ldrb r0, [r3]
+ lsls r0, 2
+ adds r0, r4
+ ldrh r0, [r0]
+ add r0, r9
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r2, _0806BB54
+ ldr r1, [sp, 0x14]
+ ands r1, r2
+ orrs r1, r0
+ str r1, [sp, 0x14]
+ ldrb r0, [r3]
+ lsls r0, 2
+ adds r0, r4
+ ldrh r0, [r0, 0x2]
+ add r0, r10
+ lsls r0, 16
+ ldr r2, _0806BB58
+ ands r1, r2
+ orrs r1, r0
+ str r1, [sp, 0x14]
+ ldr r3, _0806BB5C
+ mov r0, r8
+ cmp r0, 0
+ beq _0806B9B0
+ add r3, sp, 0x14
+_0806B9B0:
+ movs r0, 0x1
+ ldr r1, [sp, 0x1C]
+ mov r2, sp
+ bl sub_806BC68
+ ldr r1, [sp, 0x1C]
+ ldr r4, [r1, 0x70]
+ strb r7, [r4, 0x6]
+ strb r7, [r4, 0x8]
+ mov r2, r8
+ strb r2, [r4, 0x7]
+ adds r0, r4, 0
+ adds r0, 0xF9
+ mov r3, sp
+ ldrb r3, [r3, 0x18]
+ strb r3, [r0]
+ ldr r0, _0806BB60
+ str r6, [r0]
+ mov r6, r8
+ cmp r6, 0
+ beq _0806B9E4
+ ldr r0, _0806BB5C
+ mov r7, r9
+ strh r7, [r0]
+ mov r1, r10
+ strh r1, [r0, 0x2]
+_0806B9E4:
+ ldrh r0, [r5, 0x10]
+ strh r0, [r4, 0xE]
+ ldrh r0, [r5, 0x12]
+ strh r0, [r4, 0x10]
+ ldr r0, [r5, 0x18]
+ str r0, [r4, 0x18]
+ movs r3, 0
+ movs r2, 0x1C
+ adds r2, r5
+ mov r8, r2
+ movs r6, 0x50
+ adds r6, r5
+ mov r10, r6
+ movs r7, 0x94
+ adds r7, r4
+ mov r9, r7
+ adds r0, r4, 0
+ adds r0, 0x8C
+ str r0, [sp, 0x20]
+ adds r1, r4, 0
+ adds r1, 0xF3
+ str r1, [sp, 0x24]
+ adds r2, r4, 0
+ adds r2, 0x64
+ str r2, [sp, 0x28]
+ movs r6, 0x14
+ adds r6, r4
+ mov r12, r6
+ adds r7, r5, 0
+ adds r7, 0x14
+ adds r6, r4, 0
+ adds r6, 0x16
+ adds r2, r5, 0
+ adds r2, 0x16
+_0806BA28:
+ mov r0, r12
+ adds r1, r0, r3
+ adds r0, r7, r3
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r1, r6, r3
+ adds r0, r2, r3
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r3, 0x1
+ cmp r3, 0x1
+ ble _0806BA28
+ movs r1, 0x8C
+ lsls r1, 1
+ adds r2, r4, r1
+ adds r1, r2, 0
+ mov r0, r8
+ ldm r0!, {r3,r6,r7}
+ stm r1!, {r3,r6,r7}
+ ldm r0!, {r3,r6,r7}
+ stm r1!, {r3,r6,r7}
+ ldm r0!, {r3,r6,r7}
+ stm r1!, {r3,r6,r7}
+ movs r0, 0x1
+ mov r8, r0
+ movs r7, 0xEF
+ movs r6, 0xDF
+ movs r3, 0x3
+_0806BA60:
+ ldrb r1, [r2]
+ mov r0, r8
+ ands r0, r1
+ cmp r0, 0
+ beq _0806BA72
+ adds r0, r7, 0
+ ands r0, r1
+ ands r0, r6
+ strb r0, [r2]
+_0806BA72:
+ adds r2, 0x8
+ subs r3, 0x1
+ cmp r3, 0
+ bge _0806BA60
+ movs r1, 0x9C
+ lsls r1, 1
+ adds r2, r4, r1
+ ldrb r1, [r2]
+ movs r0, 0xEF
+ ands r0, r1
+ movs r1, 0xDF
+ ands r0, r1
+ strb r0, [r2]
+ ldrb r0, [r5, 0x3]
+ strb r0, [r4, 0x9]
+ ldrh r0, [r5, 0x8]
+ movs r2, 0
+ strh r0, [r4, 0xC]
+ mov r3, r10
+ ldrb r0, [r3]
+ mov r6, r9
+ strb r0, [r6]
+ ldr r0, [r5, 0x4C]
+ ldr r7, [sp, 0x20]
+ str r0, [r7]
+ ldr r0, [r5, 0x54]
+ str r0, [r4, 0x3C]
+ ldr r0, [r5, 0x4]
+ str r0, [r4, 0x40]
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r1, r4, r0
+ ldr r0, [r5, 0x44]
+ str r0, [r1]
+ movs r3, 0xA0
+ lsls r3, 1
+ adds r1, r4, r3
+ ldr r0, [r5, 0x48]
+ str r0, [r1]
+ ldrh r0, [r5, 0xC]
+ strb r0, [r4, 0xA]
+ ldr r0, [r5, 0x40]
+ str r0, [r4, 0x60]
+ ldr r0, [sp, 0x24]
+ strb r2, [r0]
+ ldr r6, [sp, 0x28]
+ strb r2, [r6]
+ ldr r7, _0806BB64
+ ldr r0, [r7]
+ ldr r1, _0806BB68
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806BB24
+ bl IsBossBattle
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806BB24
+ adds r0, r4, 0
+ adds r0, 0x5E
+ ldrb r0, [r0]
+ cmp r0, 0x47
+ beq _0806BAFC
+ adds r0, r4, 0
+ adds r0, 0x5F
+ ldrb r0, [r0]
+ cmp r0, 0x47
+ bne _0806BB24
+_0806BAFC:
+ adds r4, 0x60
+ ldrb r1, [r4]
+ movs r5, 0x1
+ adds r0, r5, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0806BB24
+ movs r0, 0
+ bl sub_803D73C
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x69
+ beq _0806BB24
+ adds r0, r4, 0
+ movs r2, 0
+ bl xxx_init_itemslot_8090A8C
+ ldr r2, [sp, 0x24]
+ strb r5, [r2]
+_0806BB24:
+ ldr r0, [sp, 0x1C]
+ bl sub_806A6E8
+ ldr r0, [sp, 0x1C]
+ bl LoadIQSkills
+ ldr r3, [sp, 0x4C]
+ cmp r3, 0
+ beq _0806BB3A
+ ldr r6, [sp, 0x1C]
+ str r6, [r3]
+_0806BB3A:
+ movs r0, 0x1
+_0806BB3C:
+ add sp, 0x2C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806BB4C: .4byte gAdjacentTileOffsets
+_0806BB50: .4byte gUnknown_202F32C
+_0806BB54: .4byte 0xffff0000
+_0806BB58: .4byte 0x0000ffff
+_0806BB5C: .4byte gUnknown_202EE0C
+_0806BB60: .4byte gLeaderPokemon
+_0806BB64: .4byte gDungeonGlobalData
+_0806BB68: .4byte 0x00000644
+ thumb_func_end sub_806B8CC
+
+ thumb_func_start sub_806BB6C
+sub_806BB6C:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ adds r7, r0, 0
+ lsls r4, r1, 16
+ asrs r4, 16
+ ldr r0, [r7, 0x70]
+ mov r9, r0
+ mov r8, r9
+ adds r0, 0x98
+ ldr r0, [r0]
+ bl DeletePokemonDungeonSprite
+ add r0, sp, 0x8
+ movs r1, 0
+ mov r10, r1
+ movs r6, 0
+ lsls r5, r4, 16
+ lsrs r5, 16
+ strh r5, [r0]
+ strh r6, [r0, 0x8]
+ mov r2, r10
+ strb r2, [r0, 0x2]
+ ldr r0, [r7, 0x4]
+ str r0, [sp, 0x14]
+ str r6, [sp, 0xC]
+ movs r0, 0
+ adds r1, r4, 0
+ bl sub_8069F54
+ lsls r0, 16
+ adds r1, r7, 0
+ adds r1, 0x22
+ mov r2, r10
+ strb r2, [r1]
+ ldr r1, [r7, 0x70]
+ asrs r2, r0, 16
+ lsrs r0, 16
+ strh r0, [r1, 0x4]
+ ldr r0, [r7, 0x70]
+ strh r5, [r0, 0x2]
+ adds r0, r2, 0
+ bl sub_80687D0
+ str r0, [r7, 0x64]
+ adds r1, r7, 0
+ adds r1, 0x6A
+ movs r0, 0x7
+ strb r0, [r1]
+ adds r0, r7, 0
+ adds r0, 0x6C
+ mov r5, r10
+ strb r5, [r0]
+ adds r1, 0x1
+ movs r0, 0xFF
+ strb r0, [r1]
+ adds r1, 0x2
+ movs r0, 0x1
+ strb r0, [r1]
+ adds r1, 0x2
+ strb r0, [r1]
+ str r6, [r7, 0x1C]
+ mov r0, r9
+ adds r0, 0xB0
+ ldrb r0, [r0]
+ subs r0, 0x3
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _0806BC08
+ mov r0, r9
+ adds r0, 0x9C
+ ldr r0, [r0]
+ bl sub_8076CB4
+_0806BC08:
+ movs r1, 0
+ mov r6, r9
+ ldrb r0, [r6, 0x6]
+ cmp r0, 0
+ bne _0806BC14
+ movs r1, 0x1
+_0806BC14:
+ adds r0, r1, 0
+ adds r1, r7, 0
+ add r2, sp, 0x8
+ movs r3, 0
+ bl sub_806BC68
+ movs r0, 0x8C
+ lsls r0, 1
+ add r0, r8
+ mov r1, r8
+ adds r1, 0x10
+ mov r2, r8
+ adds r2, 0x14
+ mov r3, r8
+ adds r3, 0x16
+ mov r5, r8
+ movs r6, 0x2
+ ldrsh r4, [r5, r6]
+ str r4, [sp]
+ ldrb r4, [r5, 0x9]
+ str r4, [sp, 0x4]
+ bl sub_806AED8
+ ldrh r0, [r5, 0x10]
+ strh r0, [r5, 0xE]
+ mov r0, r10
+ strb r0, [r5, 0x8]
+ adds r0, r7, 0
+ bl sub_80429E8
+ adds r0, r7, 0
+ bl DungeonEntityUpdateStatusSprites
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806BB6C
+
+ thumb_func_start sub_806BC68
+sub_806BC68:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ adds r4, r0, 0
+ mov r8, r1
+ adds r7, r2, 0
+ mov r10, r3
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r1, _0806BD0C
+ ldr r0, [r1]
+ movs r5, 0
+ movs r2, 0x1
+ mov r9, r2
+ mov r3, r9
+ strb r3, [r0, 0xC]
+ mov r0, r8
+ ldr r6, [r0, 0x70]
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl sub_806BFC0
+ ldrb r1, [r7, 0x2]
+ adds r0, r6, 0
+ adds r0, 0xA4
+ strb r1, [r0]
+ mov r0, r8
+ adds r0, 0x20
+ mov r1, r9
+ strb r1, [r0]
+ adds r0, 0x2
+ strb r5, [r0]
+ ldr r0, _0806BD10
+ mov r2, r8
+ strh r0, [r2, 0x8]
+ movs r0, 0x1
+ negs r0, r0
+ strh r0, [r2, 0xA]
+ ldr r0, _0806BD14
+ strh r0, [r2, 0x4]
+ strh r0, [r2, 0x6]
+ movs r3, 0xC
+ ldrsh r1, [r7, r3]
+ movs r0, 0xE
+ ldrsh r2, [r7, r0]
+ mov r0, r8
+ movs r3, 0x1
+ bl sub_80694C0
+ mov r0, r8
+ movs r1, 0
+ bl sub_804535C
+ cmp r4, 0
+ bne _0806BD5E
+ movs r2, 0
+ ldrsh r1, [r7, r2]
+ movs r0, 0xBE
+ lsls r0, 1
+ cmp r1, r0
+ bne _0806BD20
+ ldr r3, _0806BD0C
+ ldr r1, [r3]
+ ldr r4, _0806BD18
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806BD20
+ ldr r2, _0806BD1C
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806BD20
+ ldrb r0, [r7, 0x2]
+ cmp r0, 0
+ bne _0806BD20
+ mov r3, r9
+ strb r3, [r6, 0x8]
+ b _0806BD24
+ .align 2, 0
+_0806BD0C: .4byte gDungeonGlobalData
+_0806BD10: .4byte 0x0000ffff
+_0806BD14: .4byte 0x0000fffe
+_0806BD18: .4byte 0x0000066e
+_0806BD1C: .4byte 0x00003a0a
+_0806BD20:
+ movs r0, 0
+ strb r0, [r6, 0x8]
+_0806BD24:
+ movs r4, 0x2
+ ldrsh r0, [r6, r4]
+ bl GetBaseSpecies
+ lsls r0, 16
+ movs r1, 0xCF
+ lsls r1, 17
+ cmp r0, r1
+ bne _0806BD42
+ ldr r0, _0806BD94
+ ldr r0, [r0]
+ ldr r1, _0806BD98
+ adds r0, r1
+ movs r1, 0x1
+ strb r1, [r0]
+_0806BD42:
+ movs r2, 0x2
+ ldrsh r0, [r6, r2]
+ bl GetBaseSpecies
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x97
+ bne _0806BD5E
+ ldr r0, _0806BD94
+ ldr r0, [r0]
+ ldr r3, _0806BD9C
+ adds r0, r3
+ movs r1, 0x1
+ strb r1, [r0]
+_0806BD5E:
+ adds r2, r6, 0
+ adds r2, 0x98
+ ldr r0, _0806BD94
+ ldr r1, [r0]
+ ldr r4, _0806BDA0
+ adds r1, r4
+ ldr r0, [r1]
+ str r0, [r2]
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ adds r1, r6, 0
+ adds r1, 0x9C
+ movs r0, 0
+ str r0, [r1]
+ ldrh r1, [r7, 0x8]
+ movs r3, 0x8
+ ldrsh r0, [r7, r3]
+ mov r9, r2
+ cmp r0, 0
+ bne _0806BDA4
+ movs r4, 0
+ ldrsh r0, [r7, r4]
+ bl sub_803DA20
+ strb r0, [r6, 0x9]
+ b _0806BDA6
+ .align 2, 0
+_0806BD94: .4byte gDungeonGlobalData
+_0806BD98: .4byte 0x000037fd
+_0806BD9C: .4byte 0x000037ff
+_0806BDA0: .4byte 0x000037f0
+_0806BDA4:
+ strb r1, [r6, 0x9]
+_0806BDA6:
+ movs r0, 0x8A
+ lsls r0, 1
+ adds r1, r6, r0
+ ldr r0, [r7, 0x4]
+ str r0, [r1]
+ movs r4, 0x1
+ strh r4, [r6, 0xC]
+ adds r0, r6, 0
+ adds r0, 0x8C
+ movs r1, 0
+ bl SetDefaultIQSkills
+ adds r0, r6, 0
+ adds r0, 0x3C
+ bl sub_808E6F4
+ strh r4, [r6, 0x10]
+ strh r4, [r6, 0xE]
+ mov r0, sp
+ movs r1, 0x64
+ bl sub_80943A0
+ movs r2, 0x9E
+ lsls r2, 1
+ adds r1, r6, r2
+ ldr r0, [sp]
+ str r0, [r1]
+ add r0, sp, 0x4
+ movs r1, 0x64
+ bl sub_80943A0
+ movs r3, 0xA0
+ lsls r3, 1
+ adds r1, r6, r3
+ ldr r0, [sp, 0x4]
+ str r0, [r1]
+ mov r4, r10
+ cmp r4, 0
+ beq _0806BE00
+ movs r0, 0xB6
+ lsls r0, 1
+ adds r1, r6, r0
+ ldr r0, [r4]
+ str r0, [r1]
+ b _0806BE12
+_0806BE00:
+ movs r1, 0xB6
+ lsls r1, 1
+ adds r0, r6, r1
+ mov r2, r10
+ strh r2, [r0]
+ movs r3, 0xB7
+ lsls r3, 1
+ adds r0, r6, r3
+ strh r2, [r0]
+_0806BE12:
+ movs r7, 0
+ movs r4, 0
+ strh r4, [r6]
+ movs r1, 0xA2
+ lsls r1, 1
+ adds r0, r6, r1
+ strb r7, [r0]
+ ldr r2, _0806BFB4
+ adds r0, r6, r2
+ strb r7, [r0]
+ movs r3, 0xFA
+ lsls r3, 1
+ adds r0, r6, r3
+ strh r4, [r0]
+ adds r1, 0xB2
+ adds r0, r6, r1
+ strh r4, [r0]
+ adds r0, r6, 0
+ adds r0, 0x78
+ strb r7, [r0]
+ adds r1, r6, 0
+ adds r1, 0x88
+ mov r2, r8
+ ldr r0, [r2, 0x4]
+ str r0, [r1]
+ adds r0, r6, 0
+ adds r0, 0x80
+ str r4, [r0]
+ adds r0, 0x4
+ str r4, [r0]
+ subs r0, 0x8
+ strh r4, [r0]
+ adds r0, 0x83
+ strb r7, [r0]
+ subs r3, 0x80
+ adds r0, r6, r3
+ str r4, [r0]
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r6, r1
+ strb r7, [r0]
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl sub_806BFC0
+ adds r0, r6, 0
+ adds r0, 0x60
+ strb r7, [r0, 0x2]
+ strb r7, [r0, 0x1]
+ strb r7, [r0]
+ adds r0, 0x4
+ strb r7, [r0]
+ movs r2, 0x80
+ lsls r2, 2
+ adds r0, r6, r2
+ str r4, [r0]
+ movs r3, 0xB2
+ lsls r3, 1
+ adds r1, r6, r3
+ movs r0, 0xFF
+ strb r0, [r1]
+ adds r0, 0x66
+ adds r1, r6, r0
+ movs r0, 0x1
+ negs r0, r0
+ strb r0, [r1]
+ movs r1, 0xFE
+ lsls r1, 1
+ adds r0, r6, r1
+ str r4, [r0]
+ subs r2, 0xB9
+ adds r0, r6, r2
+ strb r7, [r0]
+ subs r3, 0x1E
+ adds r0, r6, r3
+ strb r7, [r0]
+ subs r1, 0x96
+ adds r0, r6, r1
+ strb r7, [r0]
+ adds r2, 0xB1
+ adds r0, r6, r2
+ strh r4, [r0]
+ adds r3, 0xB4
+ adds r0, r6, r3
+ strh r4, [r0]
+ subs r1, 0x1E
+ adds r0, r6, r1
+ strb r7, [r0]
+ subs r2, 0xAF
+ adds r0, r6, r2
+ strb r7, [r0]
+ subs r3, 0x82
+ adds r0, r6, r3
+ strh r4, [r0]
+ adds r0, r6, 0
+ adds r0, 0xFA
+ strb r7, [r0]
+ adds r0, 0x2
+ strb r7, [r0]
+ adds r1, 0x3
+ adds r0, r6, r1
+ strb r7, [r0]
+ adds r2, 0x3
+ adds r0, r6, r2
+ movs r5, 0x1
+ strb r5, [r0]
+ subs r3, 0x2A
+ adds r0, r6, r3
+ strh r4, [r0]
+ adds r1, 0x5
+ adds r0, r6, r1
+ strh r4, [r0]
+ adds r2, 0x6
+ adds r0, r6, r2
+ strb r7, [r0]
+ adds r3, 0x5
+ adds r0, r6, r3
+ strb r7, [r0]
+ movs r4, 0xAA
+ lsls r4, 1
+ adds r0, r6, r4
+ strb r7, [r0]
+ adds r1, 0x5
+ adds r0, r6, r1
+ strb r7, [r0]
+ adds r2, 0x17
+ adds r0, r6, r2
+ strb r7, [r0]
+ adds r0, r6, 0
+ adds r0, 0xFD
+ strb r7, [r0]
+ adds r1, r6, 0
+ adds r1, 0xFE
+ movs r0, 0x63
+ strb r0, [r1]
+ adds r3, 0x5
+ adds r0, r6, r3
+ strb r7, [r0]
+ adds r4, 0x5
+ adds r0, r6, r4
+ strb r7, [r0]
+ movs r1, 0xAD
+ lsls r1, 1
+ adds r0, r6, r1
+ strb r7, [r0]
+ mov r0, r8
+ bl GetMovementSpeed
+ movs r2, 0xAB
+ lsls r2, 1
+ adds r1, r6, r2
+ strb r5, [r1]
+ movs r3, 0xAE
+ lsls r3, 1
+ adds r0, r6, r3
+ strb r7, [r0]
+ adds r4, 0x5
+ adds r0, r6, r4
+ strb r7, [r0]
+ adds r2, 0x7
+ adds r0, r6, r2
+ strb r7, [r0]
+ adds r3, 0x3
+ adds r0, r6, r3
+ strb r7, [r0]
+ adds r4, 0x2
+ adds r0, r6, r4
+ strb r7, [r0]
+ ldrh r0, [r6, 0x4]
+ subs r0, 0x32
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ bhi _0806BF70
+ strb r7, [r1]
+_0806BF70:
+ mov r0, r8
+ ldrh r1, [r0, 0x6]
+ lsls r1, 16
+ ldrh r0, [r0, 0x4]
+ orrs r0, r1
+ str r0, [sp, 0x8]
+ mov r1, r9
+ ldr r0, [r1]
+ movs r2, 0x4
+ ldrsh r1, [r6, r2]
+ add r2, sp, 0x8
+ ldr r3, _0806BFB8
+ ldr r3, [r3]
+ ldr r4, _0806BFBC
+ adds r3, r4
+ ldrb r3, [r3]
+ bl AddPokemonDungeonSprite
+ mov r0, r8
+ bl LoadIQSkills
+ mov r0, r8
+ movs r1, 0
+ movs r2, 0
+ bl sub_806A898
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806BFB4: .4byte 0x00000145
+_0806BFB8: .4byte gDungeonGlobalData
+_0806BFBC: .4byte 0x00018208
+ thumb_func_end sub_806BC68
+
+ thumb_func_start sub_806BFC0
+sub_806BFC0:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x3C
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp]
+ adds r1, r4, 0
+ adds r1, 0xA8
+ movs r0, 0
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x3
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x8
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r2, r4, 0
+ adds r2, 0xB4
+ movs r1, 0x22
+ str r1, [r2]
+ adds r1, r4, 0
+ adds r1, 0xBC
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x3
+ strb r0, [r1]
+ adds r1, 0x4
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x3
+ strb r0, [r1]
+ adds r1, 0x3
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x4
+ strb r0, [r1]
+ adds r1, 0x9
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x2
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x3
+ strb r0, [r1]
+ adds r1, 0x4
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x3
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x3
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x3
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ movs r0, 0xB2
+ lsls r0, 1
+ adds r1, r4, r0
+ movs r0, 0xFF
+ strb r0, [r1]
+ ldr r2, _0806C168
+ adds r1, r4, r2
+ movs r0, 0x1
+ negs r0, r0
+ strb r0, [r1]
+ movs r1, 0
+ movs r7, 0x84
+ lsls r7, 1
+ adds r0, r4, r7
+ movs r5, 0x4
+_0806C080:
+ strb r1, [r0]
+ strb r1, [r0, 0x5]
+ adds r0, 0x1
+ subs r5, 0x1
+ cmp r5, 0
+ bge _0806C080
+ movs r0, 0
+ str r0, [sp, 0x4]
+ movs r5, 0
+ adds r1, r4, 0
+ adds r1, 0x5E
+ str r1, [sp, 0x8]
+ movs r2, 0x5C
+ adds r2, r4
+ mov r10, r2
+ adds r7, r4, 0
+ adds r7, 0xFD
+ str r7, [sp, 0x20]
+ adds r0, r4, 0
+ adds r0, 0xF4
+ str r0, [sp, 0xC]
+ adds r1, 0x9D
+ str r1, [sp, 0x1C]
+ adds r2, r4, 0
+ adds r2, 0xF5
+ str r2, [sp, 0x10]
+ subs r7, 0x7
+ str r7, [sp, 0x14]
+ adds r0, 0x3
+ str r0, [sp, 0x18]
+ adds r1, 0x4
+ str r1, [sp, 0x24]
+ movs r2, 0x1
+ mov r9, r2
+ movs r3, 0xA
+ subs r7, 0xC2
+ str r7, [sp, 0x28]
+ subs r0, 0xCB
+ str r0, [sp, 0x2C]
+ adds r2, r4, 0
+ adds r2, 0x24
+ subs r1, 0xDF
+ str r1, [sp, 0x38]
+ adds r6, r4, 0
+ adds r6, 0x1C
+ movs r7, 0x80
+ lsls r7, 1
+ mov r8, r7
+_0806C0E0:
+ movs r1, 0x2
+ ldrsh r0, [r4, r1]
+ adds r1, r5, 0
+ str r2, [sp, 0x30]
+ str r3, [sp, 0x34]
+ bl GetPokemonAbility
+ ldr r7, [sp, 0x8]
+ adds r1, r7, r5
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, [sp, 0x30]
+ ldr r3, [sp, 0x34]
+ cmp r0, 0x25
+ bne _0806C104
+ movs r0, 0x1
+ str r0, [sp, 0x4]
+_0806C104:
+ ldr r1, [sp]
+ cmp r1, 0
+ beq _0806C11E
+ adds r0, r4, 0
+ adds r0, 0x14
+ adds r0, r5
+ mov r7, r9
+ strb r7, [r0]
+ adds r0, r4, 0
+ adds r0, 0x16
+ adds r0, r5
+ mov r1, r9
+ strb r1, [r0]
+_0806C11E:
+ strh r3, [r6]
+ ldr r7, [sp, 0x38]
+ strh r3, [r7]
+ strh r3, [r2]
+ ldr r1, [sp, 0x2C]
+ mov r0, r8
+ stm r1!, {r0}
+ str r1, [sp, 0x2C]
+ ldr r7, [sp, 0x28]
+ stm r7!, {r0}
+ str r7, [sp, 0x28]
+ adds r2, 0x2
+ ldr r0, [sp, 0x38]
+ adds r0, 0x2
+ str r0, [sp, 0x38]
+ adds r6, 0x2
+ adds r5, 0x1
+ cmp r5, 0x1
+ ble _0806C0E0
+ ldr r1, [sp, 0x4]
+ cmp r1, 0
+ beq _0806C170
+ movs r0, 0
+ bl GetWeather
+ ldr r1, _0806C16C
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r1
+ ldrb r0, [r0]
+ movs r1, 0
+ mov r2, r10
+ strb r0, [r2]
+ adds r0, r4, 0
+ adds r0, 0x5D
+ strb r1, [r0]
+ b _0806C188
+ .align 2, 0
+_0806C168: .4byte 0x00000165
+_0806C16C: .4byte gUnknown_80F520C
+_0806C170:
+ movs r5, 0
+_0806C172:
+ movs r7, 0x2
+ ldrsh r0, [r4, r7]
+ adds r1, r5, 0
+ bl GetPokemonType
+ mov r2, r10
+ adds r1, r2, r5
+ strb r0, [r1]
+ adds r5, 0x1
+ cmp r5, 0x1
+ ble _0806C172
+_0806C188:
+ ldr r0, _0806C1D0
+ ldr r1, [r0]
+ movs r2, 0
+ movs r0, 0x1
+ strb r0, [r1, 0xC]
+ movs r0, 0
+ strh r2, [r4, 0x28]
+ movs r7, 0x89
+ lsls r7, 1
+ adds r1, r4, r7
+ strb r0, [r1]
+ ldr r1, [sp, 0x20]
+ strb r0, [r1]
+ ldr r2, _0806C1D4
+ adds r1, r4, r2
+ strb r0, [r1]
+ ldr r7, [sp, 0xC]
+ strb r0, [r7]
+ ldr r1, [sp, 0x1C]
+ strb r0, [r1]
+ ldr r2, [sp, 0x10]
+ strb r0, [r2]
+ ldr r7, [sp, 0x14]
+ strb r0, [r7]
+ ldr r1, [sp, 0x18]
+ strb r0, [r1]
+ ldr r2, [sp, 0x24]
+ strb r0, [r2]
+ add sp, 0x3C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806C1D0: .4byte gDungeonGlobalData
+_0806C1D4: .4byte 0x00000113
+ thumb_func_end sub_806BFC0
+
+ thumb_func_start sub_806C1D8
+sub_806C1D8:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ movs r5, 0
+_0806C1E2:
+ ldr r0, _0806C258
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _0806C25C
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ adds r5, 0x1
+ mov r9, r5
+ cmp r0, 0
+ beq _0806C244
+ ldr r4, [r4, 0x70]
+ ldrb r6, [r4, 0xA]
+ cmp r6, 0
+ blt _0806C244
+ movs r5, 0
+ movs r0, 0x8C
+ lsls r0, 1
+ mov r12, r0
+ movs r2, 0x1
+ mov r8, r2
+ adds r3, r4, 0
+ movs r7, 0xFE
+_0806C218:
+ lsls r0, r5, 3
+ adds r0, r4
+ add r0, r12
+ ldrb r1, [r0]
+ mov r0, r8
+ ands r0, r1
+ cmp r0, 0
+ beq _0806C234
+ ldr r0, _0806C260
+ adds r2, r3, r0
+ ldrb r1, [r2]
+ adds r0, r7, 0
+ ands r0, r1
+ strb r0, [r2]
+_0806C234:
+ adds r3, 0x8
+ adds r5, 0x1
+ cmp r5, 0x3
+ ble _0806C218
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_806C264
+_0806C244:
+ mov r5, r9
+ cmp r5, 0x3
+ ble _0806C1E2
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806C258: .4byte gDungeonGlobalData
+_0806C25C: .4byte 0x0001357c
+_0806C260: .4byte 0x00000119
+ thumb_func_end sub_806C1D8
+
+ thumb_func_start sub_806C264
+sub_806C264:
+ push {r4,r5,lr}
+ mov r12, r1
+ ldr r2, _0806C31C
+ movs r1, 0x64
+ muls r0, r1
+ ldr r1, _0806C320
+ adds r0, r1
+ ldr r1, [r2]
+ adds r3, r1, r0
+ mov r2, r12
+ ldrh r0, [r2, 0xE]
+ strh r0, [r3, 0x10]
+ ldrh r0, [r2, 0x10]
+ strh r0, [r3, 0x12]
+ ldr r0, [r2, 0x18]
+ str r0, [r3, 0x18]
+ adds r2, 0x14
+ adds r1, r3, 0
+ adds r1, 0x14
+ movs r4, 0x1
+_0806C28C:
+ ldrb r0, [r2]
+ strb r0, [r1]
+ ldrb r0, [r2, 0x2]
+ strb r0, [r1, 0x2]
+ adds r2, 0x1
+ adds r1, 0x1
+ subs r4, 0x1
+ cmp r4, 0
+ bge _0806C28C
+ ldr r4, _0806C324
+ adds r0, r4, 0
+ mov r5, r12
+ ldrh r5, [r5, 0x4]
+ adds r0, r5
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x2
+ bhi _0806C2B6
+ movs r0, 0xBC
+ lsls r0, 1
+ strh r0, [r3, 0xE]
+_0806C2B6:
+ adds r1, r3, 0
+ adds r1, 0x1C
+ movs r0, 0x8C
+ lsls r0, 1
+ add r0, r12
+ ldm r0!, {r2,r4,r5}
+ stm r1!, {r2,r4,r5}
+ ldm r0!, {r2,r4,r5}
+ stm r1!, {r2,r4,r5}
+ ldm r0!, {r2,r4,r5}
+ stm r1!, {r2,r4,r5}
+ mov r1, r12
+ ldrb r0, [r1, 0x9]
+ strb r0, [r3, 0x3]
+ ldrh r0, [r1, 0xC]
+ strh r0, [r3, 0x8]
+ mov r0, r12
+ adds r0, 0x8C
+ ldr r0, [r0]
+ str r0, [r3, 0x4C]
+ mov r0, r12
+ adds r0, 0x94
+ ldrb r1, [r0]
+ adds r0, r3, 0
+ adds r0, 0x50
+ strb r1, [r0]
+ mov r2, r12
+ ldr r0, [r2, 0x3C]
+ str r0, [r3, 0x54]
+ movs r0, 0x9E
+ lsls r0, 1
+ add r0, r12
+ ldr r0, [r0]
+ str r0, [r3, 0x44]
+ movs r0, 0xA0
+ lsls r0, 1
+ add r0, r12
+ ldr r0, [r0]
+ str r0, [r3, 0x48]
+ ldr r0, [r2, 0x60]
+ str r0, [r3, 0x40]
+ movs r4, 0xA
+ ldrsh r1, [r3, r4]
+ ldr r0, _0806C328
+ cmp r1, r0
+ bne _0806C316
+ ldr r0, _0806C32C
+ strh r0, [r3, 0xA]
+_0806C316:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806C31C: .4byte gRecruitedPokemonRef
+_0806C320: .4byte 0x00008df8
+_0806C324: .4byte 0xfffffe87
+_0806C328: .4byte 0x000055aa
+_0806C32C: .4byte 0x00005aa5
+ thumb_func_end sub_806C264
+
+ thumb_func_start sub_806C330
+sub_806C330:
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 16
+ asrs r2, 16
+ mov r12, r2
+ lsls r3, 24
+ lsrs r7, r3, 24
+ ldr r0, _0806C370
+ ldr r0, [r0]
+ ldr r1, _0806C374
+ adds r2, r0, r1
+ movs r3, 0
+ ldr r0, [r2, 0x40]
+ cmp r3, r0
+ bge _0806C382
+ mov r1, r12
+ lsls r0, r1, 16
+ lsrs r6, r0, 16
+ adds r1, r2, 0
+_0806C358:
+ ldrb r0, [r1, 0x3]
+ cmp r0, 0
+ beq _0806C378
+ ldrb r0, [r1, 0x4]
+ cmp r0, r4
+ bne _0806C378
+ ldrb r0, [r1, 0x5]
+ cmp r0, r5
+ bne _0806C378
+ strh r6, [r1]
+ strb r7, [r1, 0x2]
+ b _0806C3B8
+ .align 2, 0
+_0806C370: .4byte gDungeonGlobalData
+_0806C374: .4byte 0x0000057c
+_0806C378:
+ adds r1, 0x8
+ adds r3, 0x1
+ ldr r0, [r2, 0x40]
+ cmp r3, r0
+ blt _0806C358
+_0806C382:
+ ldr r0, [r2, 0x40]
+ cmp r0, 0x7
+ bgt _0806C3B8
+ lsls r0, 3
+ adds r0, r2, r0
+ movs r1, 0x1
+ strb r1, [r0, 0x3]
+ ldr r0, [r2, 0x40]
+ lsls r0, 3
+ adds r0, r2, r0
+ strb r4, [r0, 0x4]
+ ldr r0, [r2, 0x40]
+ lsls r0, 3
+ adds r0, r2, r0
+ strb r5, [r0, 0x5]
+ ldr r0, [r2, 0x40]
+ lsls r0, 3
+ adds r0, r2, r0
+ mov r1, r12
+ strh r1, [r0]
+ ldr r0, [r2, 0x40]
+ lsls r0, 3
+ adds r0, r2, r0
+ strb r7, [r0, 0x2]
+ ldr r0, [r2, 0x40]
+ adds r0, 0x1
+ str r0, [r2, 0x40]
+_0806C3B8:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806C330
+
+ thumb_func_start sub_806C3C0
+sub_806C3C0:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x18
+ ldr r0, _0806C424
+ ldr r0, [r0]
+ ldr r1, _0806C428
+ adds r7, r0, r1
+ movs r6, 0
+ ldr r0, [r7, 0x40]
+ cmp r6, r0
+ bge _0806C416
+ mov r5, sp
+ movs r0, 0
+ mov r8, r0
+ movs r2, 0
+ adds r4, r7, 0
+_0806C3E2:
+ ldrb r0, [r4, 0x3]
+ cmp r0, 0
+ beq _0806C40C
+ ldrh r0, [r4]
+ strh r0, [r5]
+ strh r2, [r5, 0x8]
+ ldrb r0, [r4, 0x4]
+ strh r0, [r5, 0xC]
+ ldrb r0, [r4, 0x5]
+ strh r0, [r5, 0xE]
+ ldrb r0, [r4, 0x2]
+ strb r0, [r5, 0x2]
+ str r2, [sp, 0x4]
+ mov r1, r8
+ strb r1, [r5, 0x10]
+ mov r0, sp
+ movs r1, 0x1
+ str r2, [sp, 0x14]
+ bl sub_806B7F8
+ ldr r2, [sp, 0x14]
+_0806C40C:
+ adds r4, 0x8
+ adds r6, 0x1
+ ldr r0, [r7, 0x40]
+ cmp r6, r0
+ blt _0806C3E2
+_0806C416:
+ add sp, 0x18
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806C424: .4byte gDungeonGlobalData
+_0806C428: .4byte 0x0000057c
+ thumb_func_end sub_806C3C0
+
+ thumb_func_start sub_806C42C
+sub_806C42C:
+ ldr r0, _0806C43C
+ ldr r0, [r0]
+ ldr r1, _0806C440
+ adds r0, r1
+ movs r1, 0
+ str r1, [r0, 0x40]
+ bx lr
+ .align 2, 0
+_0806C43C: .4byte gDungeonGlobalData
+_0806C440: .4byte 0x0000057c
+ thumb_func_end sub_806C42C
+
+ thumb_func_start sub_806C444
+sub_806C444:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0xC
+ adds r7, r1, 0
+ lsls r0, 16
+ asrs r6, r0, 16
+ adds r0, r6, 0
+ bl GetBaseHP
+ adds r5, r0, 0
+ movs r4, 0x2
+ cmp r4, r7
+ bgt _0806C478
+ mov r8, sp
+_0806C462:
+ mov r0, sp
+ adds r1, r6, 0
+ adds r2, r4, 0
+ bl GetPokemonLevelData
+ mov r1, r8
+ ldrh r0, [r1, 0x4]
+ adds r5, r0
+ adds r4, 0x1
+ cmp r4, r7
+ ble _0806C462
+_0806C478:
+ adds r0, r5, 0
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806C444
+
+ thumb_func_start sub_806C488
+sub_806C488:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0xC
+ adds r7, r1, 0
+ mov r8, r2
+ lsls r0, 16
+ asrs r6, r0, 16
+ adds r0, r6, 0
+ mov r1, r8
+ bl GetPokemonAttSpatt
+ adds r5, r0, 0
+ movs r4, 0x2
+ cmp r4, r7
+ bgt _0806C4C4
+ mov r0, sp
+ adds r0, 0x6
+ add r8, r0
+_0806C4AE:
+ mov r0, sp
+ adds r1, r6, 0
+ adds r2, r4, 0
+ bl GetPokemonLevelData
+ mov r1, r8
+ ldrb r0, [r1]
+ adds r5, r0
+ adds r4, 0x1
+ cmp r4, r7
+ ble _0806C4AE
+_0806C4C4:
+ adds r0, r5, 0
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806C488
+
+ thumb_func_start sub_806C4D4
+sub_806C4D4:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0xC
+ adds r7, r1, 0
+ mov r8, r2
+ lsls r0, 16
+ asrs r6, r0, 16
+ adds r0, r6, 0
+ mov r1, r8
+ bl GetPokemonDefSpdef
+ adds r5, r0, 0
+ movs r4, 0x2
+ cmp r4, r7
+ bgt _0806C50E
+ add r0, sp, 0x8
+ add r8, r0
+_0806C4F8:
+ mov r0, sp
+ adds r1, r6, 0
+ adds r2, r4, 0
+ bl GetPokemonLevelData
+ mov r1, r8
+ ldrb r0, [r1]
+ adds r5, r0
+ adds r4, 0x1
+ cmp r4, r7
+ ble _0806C4F8
+_0806C50E:
+ adds r0, r5, 0
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806C4D4
+
+ thumb_func_start sub_806C51C
+sub_806C51C:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x50
+ adds r6, r0, 0
+ ldr r0, [r6, 0x70]
+ mov r8, r0
+ ldr r0, _0806C544
+ ldr r1, [r0]
+ ldr r2, _0806C548
+ adds r0, r1, r2
+ ldr r0, [r0]
+ cmp r0, r6
+ bne _0806C54C
+ movs r3, 0
+ str r3, [sp, 0x38]
+ b _0806C554
+ .align 2, 0
+_0806C544: .4byte gDungeonGlobalData
+_0806C548: .4byte 0x000181f8
+_0806C54C:
+ ldr r4, _0806C5AC
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ str r0, [sp, 0x38]
+_0806C554:
+ mov r0, r8
+ adds r0, 0xC8
+ ldrb r1, [r0]
+ str r0, [sp, 0x40]
+ cmp r1, 0x2
+ bne _0806C564
+ movs r7, 0x1
+ str r7, [sp, 0x38]
+_0806C564:
+ adds r0, r6, 0
+ adds r0, 0x6B
+ adds r1, r6, 0
+ adds r1, 0x6A
+ ldrb r2, [r0]
+ str r0, [sp, 0x48]
+ mov r9, r1
+ adds r5, r6, 0
+ adds r5, 0x6D
+ adds r0, 0x1
+ str r0, [sp, 0x4C]
+ adds r4, r6, 0
+ adds r4, 0x6F
+ subs r1, 0x47
+ str r1, [sp, 0x44]
+ mov r3, r9
+ ldrb r3, [r3]
+ cmp r2, r3
+ bne _0806C676
+ ldrb r0, [r5]
+ ldr r7, [sp, 0x4C]
+ ldrb r7, [r7]
+ cmp r0, r7
+ bne _0806C654
+ ldrb r0, [r4]
+ cmp r0, 0
+ bne _0806C654
+ movs r2, 0
+ ldrh r1, [r6, 0x28]
+ movs r0, 0x80
+ lsls r0, 6
+ ands r0, r1
+ cmp r0, 0
+ beq _0806C5B0
+ movs r0, 0
+ b _0806C5B2
+ .align 2, 0
+_0806C5AC: .4byte 0x00018210
+_0806C5B0:
+ lsrs r0, r1, 15
+_0806C5B2:
+ cmp r0, 0
+ bne _0806C5B8
+ movs r2, 0x1
+_0806C5B8:
+ adds r0, r6, 0
+ adds r0, 0x23
+ str r0, [sp, 0x44]
+ cmp r2, 0
+ beq _0806C654
+ adds r0, r6, 0
+ bl sub_806CEBC
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r1, r6, 0
+ adds r1, 0x21
+ movs r0, 0x1
+ strb r0, [r1]
+ mov r1, r8
+ adds r1, 0xFE
+ ldrb r0, [r1]
+ cmp r0, 0x63
+ bne _0806C620
+ ldr r1, [sp, 0x48]
+ ldrb r0, [r1]
+ cmp r0, 0xC
+ bhi _0806C61C
+ mov r0, r8
+ adds r0, 0xC0
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0806C5F4
+ movs r2, 0x2
+ b _0806C600
+_0806C5F4:
+ ldr r2, [sp, 0x44]
+ ldrb r0, [r2]
+ movs r2, 0x1
+ cmp r0, 0x2
+ bhi _0806C600
+ movs r2, 0
+_0806C600:
+ ldr r1, _0806C618
+ movs r0, 0xD
+ muls r0, r2
+ ldr r7, [sp, 0x48]
+ ldrb r7, [r7]
+ adds r0, r7
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x7
+ bne _0806C622
+ adds r0, r3, 0
+ b _0806C622
+ .align 2, 0
+_0806C618: .4byte gUnknown_8106EC8
+_0806C61C:
+ movs r0, 0x63
+ b _0806C622
+_0806C620:
+ ldrb r0, [r1]
+_0806C622:
+ cmp r0, 0x63
+ beq _0806C654
+ mov r1, r9
+ strb r0, [r1]
+ ldrb r1, [r5]
+ movs r0, 0x7
+ ands r0, r1
+ ldr r2, [sp, 0x4C]
+ strb r0, [r2]
+ movs r0, 0x1
+ strb r0, [r4]
+ mov r7, r9
+ ldrb r0, [r7]
+ cmp r0, 0x6
+ bne _0806C654
+ adds r1, r6, 0
+ adds r1, 0x6E
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x10
+ bne _0806C654
+ strb r3, [r7]
+_0806C654:
+ ldr r1, [sp, 0x48]
+ ldrb r0, [r1]
+ mov r2, r9
+ ldrb r2, [r2]
+ cmp r0, r2
+ bne _0806C676
+ ldrb r0, [r5]
+ ldr r3, [sp, 0x4C]
+ ldrb r3, [r3]
+ cmp r0, r3
+ bne _0806C676
+ ldrb r0, [r4]
+ movs r7, 0x28
+ adds r7, r6
+ mov r10, r7
+ cmp r0, 0
+ beq _0806C714
+_0806C676:
+ mov r1, r9
+ ldrb r0, [r1]
+ ldr r2, [sp, 0x48]
+ strb r0, [r2]
+ ldr r3, [sp, 0x4C]
+ mov r10, r3
+ ldrb r0, [r3]
+ strb r0, [r5]
+ movs r7, 0
+ strb r7, [r4]
+ adds r0, r6, 0
+ adds r0, 0x68
+ movs r1, 0
+ ldrsh r7, [r0, r1]
+ mov r2, r8
+ movs r3, 0x4
+ ldrsh r0, [r2, r3]
+ mov r4, r9
+ ldrb r1, [r4]
+ bl sub_808DA44
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806C6A8
+ movs r7, 0
+_0806C6A8:
+ ldr r0, [sp, 0x38]
+ cmp r0, 0
+ bne _0806C6D6
+ bl Random
+ movs r4, 0x3
+ ands r4, r0
+ adds r5, r6, 0
+ adds r5, 0x28
+ ldr r1, [r6, 0x64]
+ mov r3, r9
+ ldrb r2, [r3]
+ mov r0, r10
+ ldrb r3, [r0]
+ str r7, [sp]
+ str r4, [sp, 0x4]
+ ldr r4, [sp, 0x38]
+ str r4, [sp, 0x8]
+ adds r0, r5, 0
+ bl sub_80053AC
+ mov r10, r5
+ b _0806C704
+_0806C6D6:
+ ldr r0, _0806C774
+ bl sub_80687D0
+ adds r5, r0, 0
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ adds r4, r6, 0
+ adds r4, 0x28
+ mov r0, r9
+ ldrb r2, [r0]
+ ldr r0, [sp, 0x4C]
+ ldrb r3, [r0]
+ str r7, [sp]
+ str r1, [sp, 0x4]
+ movs r1, 0
+ str r1, [sp, 0x8]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80053AC
+ mov r10, r4
+_0806C704:
+ mov r2, r9
+ ldrb r0, [r2]
+ cmp r0, 0x6
+ beq _0806C714
+ adds r1, r6, 0
+ adds r1, 0x6E
+ movs r0, 0
+ strb r0, [r1]
+_0806C714:
+ ldr r0, _0806C778
+ ldr r1, [r0]
+ ldr r3, _0806C77C
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806C784
+ ldr r4, [sp, 0x48]
+ ldrb r0, [r4]
+ cmp r0, 0x7
+ bne _0806C73C
+ mov r7, r8
+ movs r1, 0x4
+ ldrsh r0, [r7, r1]
+ bl GetWalkableTiles
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0806C7E2
+_0806C73C:
+ movs r0, 0xAE
+ lsls r0, 1
+ add r0, r8
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806C76A
+ movs r0, 0xB0
+ lsls r0, 1
+ add r0, r8
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806C7E2
+ ldr r0, _0806C780
+ add r0, r8
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806C76A
+ mov r0, r10
+ bl sub_80054BC
+ mov r0, r10
+ bl sub_80054BC
+_0806C76A:
+ mov r0, r10
+ bl sub_80054BC
+ b _0806C7E2
+ .align 2, 0
+_0806C774: .4byte 0x000001a5
+_0806C778: .4byte gDungeonGlobalData
+_0806C77C: .4byte 0x0001356c
+_0806C780: .4byte 0x0000015f
+_0806C784:
+ mov r0, r8
+ adds r0, 0xB0
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0806C7E2
+ cmp r0, 0x6
+ beq _0806C7E2
+ ldr r2, _0806C7B4
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806C7BC
+ ldr r3, _0806C7B8
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806C7BC
+ mov r0, r10
+ bl sub_80054BC
+ mov r0, r10
+ bl sub_80054BC
+ b _0806C7DC
+ .align 2, 0
+_0806C7B4: .4byte 0x0000066c
+_0806C7B8: .4byte 0x0001c05f
+_0806C7BC:
+ ldr r4, [sp, 0x48]
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _0806C7C8
+ cmp r0, 0x7
+ bne _0806C7DC
+_0806C7C8:
+ ldr r0, [r6, 0x70]
+ movs r7, 0x82
+ lsls r7, 1
+ adds r0, r7
+ ldr r0, [r0]
+ cmp r0, 0x1
+ ble _0806C7DC
+ mov r0, r10
+ bl sub_80054BC
+_0806C7DC:
+ mov r0, r10
+ bl sub_80054BC
+_0806C7E2:
+ ldr r1, [r6, 0xC]
+ ldr r0, [r6, 0x14]
+ cmp r1, r0
+ bne _0806C800
+ ldr r1, [r6, 0x10]
+ ldr r0, [r6, 0x18]
+ cmp r1, r0
+ bne _0806C800
+ ldr r1, [sp, 0x44]
+ ldrb r0, [r1]
+ cmp r0, 0x9
+ bhi _0806C806
+ adds r0, 0x1
+ strb r0, [r1]
+ b _0806C806
+_0806C800:
+ movs r0, 0
+ ldr r2, [sp, 0x44]
+ strb r0, [r2]
+_0806C806:
+ ldr r0, [r6, 0xC]
+ str r0, [r6, 0x14]
+ ldr r2, [r6, 0x10]
+ str r2, [r6, 0x18]
+ cmp r0, 0
+ bge _0806C814
+ adds r0, 0xFF
+_0806C814:
+ asrs r1, r0, 8
+ ldr r0, _0806C88C
+ ldr r3, [r0]
+ ldr r4, _0806C890
+ adds r0, r3, r4
+ movs r7, 0
+ ldrsh r0, [r0, r7]
+ subs r1, r0
+ str r1, [sp, 0x2C]
+ ldr r0, [r6, 0x1C]
+ subs r0, r2, r0
+ movs r1, 0xBA
+ lsls r1, 1
+ add r1, r8
+ ldr r1, [r1]
+ subs r0, r1
+ cmp r0, 0
+ bge _0806C83A
+ adds r0, 0xFF
+_0806C83A:
+ asrs r1, r0, 8
+ ldr r4, _0806C894
+ adds r0, r3, r4
+ movs r7, 0
+ ldrsh r3, [r0, r7]
+ subs r1, r3
+ str r1, [sp, 0x30]
+ adds r0, r2, 0
+ cmp r0, 0
+ bge _0806C850
+ adds r0, 0xFF
+_0806C850:
+ asrs r0, 8
+ subs r0, r3
+ mov r9, r0
+ lsrs r0, 31
+ add r0, r9
+ asrs r0, 1
+ mov r9, r0
+ movs r0, 0xAB
+ lsls r0, 1
+ add r0, r8
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806C870
+ movs r0, 0x1
+ negs r0, r0
+ add r9, r0
+_0806C870:
+ movs r0, 0xAE
+ lsls r0, 1
+ add r0, r8
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806C898
+ adds r0, r6, 0
+ bl sub_8042768
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x34]
+ b _0806C8D8
+ .align 2, 0
+_0806C88C: .4byte gDungeonGlobalData
+_0806C890: .4byte 0x000181f0
+_0806C894: .4byte 0x000181f2
+_0806C898:
+ ldr r0, _0806C8B8
+ add r0, r8
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806C8C6
+ ldr r0, _0806C8BC
+ ldr r0, [r0]
+ movs r1, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _0806C8C0
+ ldr r1, [sp, 0x2C]
+ adds r1, 0x1
+ str r1, [sp, 0x2C]
+ b _0806C8C6
+ .align 2, 0
+_0806C8B8: .4byte 0x0000015d
+_0806C8BC: .4byte gUnknown_202EDCC
+_0806C8C0:
+ ldr r2, [sp, 0x2C]
+ subs r2, 0x1
+ str r2, [sp, 0x2C]
+_0806C8C6:
+ movs r1, 0
+ movs r0, 0xAF
+ lsls r0, 1
+ add r0, r8
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806C8D6
+ movs r1, 0x1
+_0806C8D6:
+ str r1, [sp, 0x34]
+_0806C8D8:
+ ldr r0, [r6, 0xC]
+ cmp r0, 0
+ bge _0806C8E0
+ adds r0, 0xFF
+_0806C8E0:
+ lsls r0, 8
+ lsrs r0, 16
+ ldr r1, _0806C998
+ ldr r2, [sp, 0x28]
+ ands r2, r1
+ orrs r2, r0
+ str r2, [sp, 0x28]
+ ldr r1, [r6, 0x10]
+ ldr r0, [r6, 0x1C]
+ subs r1, r0
+ movs r5, 0xBA
+ lsls r5, 1
+ add r5, r8
+ ldr r0, [r5]
+ subs r0, r1, r0
+ cmp r0, 0
+ bge _0806C904
+ adds r0, 0xFF
+_0806C904:
+ lsls r0, 8
+ lsrs r0, 16
+ lsls r0, 16
+ ldr r1, _0806C99C
+ ands r2, r1
+ orrs r2, r0
+ str r2, [sp, 0x28]
+ add r0, sp, 0xC
+ mov r1, r10
+ bl sub_8005700
+ mov r4, r8
+ adds r4, 0x98
+ ldr r0, [r4]
+ add r1, sp, 0x28
+ ldr r2, _0806C9A0
+ ldr r2, [r2]
+ ldr r3, _0806C9A4
+ adds r2, r3
+ ldrb r3, [r2]
+ add r2, sp, 0xC
+ bl sub_800F958
+ adds r0, r6, 0
+ bl EntityGetStatusSprites
+ adds r2, r0, 0
+ ldr r4, [r4]
+ mov r0, r8
+ movs r1, 0x4
+ ldrsh r7, [r0, r1]
+ movs r3, 0
+ ldr r0, [sp, 0x34]
+ cmp r0, 0
+ beq _0806C958
+ movs r0, 0xA6
+ lsls r0, 1
+ add r0, r8
+ ldrb r1, [r0]
+ negs r0, r1
+ orrs r0, r1
+ lsrs r3, r0, 31
+_0806C958:
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl UpdateDungeonPokemonSprite
+ adds r0, r6, 0
+ mov r1, r9
+ bl sub_8042EC8
+ movs r0, 0xAE
+ lsls r0, 1
+ add r0, r8
+ ldrb r1, [r0]
+ cmp r1, 0
+ bne _0806C9BA
+ mov r0, r8
+ adds r0, 0xFF
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0806C9AC
+ ldr r1, [r5]
+ ldr r0, _0806C9A8
+ cmp r1, r0
+ bgt _0806C9BA
+ movs r2, 0x80
+ lsls r2, 4
+ adds r0, r1, r2
+ str r0, [r5]
+ movs r1, 0xC8
+ lsls r1, 8
+ cmp r0, r1
+ ble _0806C9BA
+ b _0806C9B8
+ .align 2, 0
+_0806C998: .4byte 0xffff0000
+_0806C99C: .4byte 0x0000ffff
+_0806C9A0: .4byte gDungeonGlobalData
+_0806C9A4: .4byte 0x00018208
+_0806C9A8: .4byte 0x0000c7ff
+_0806C9AC:
+ ldr r0, [r5]
+ ldr r3, _0806CA5C
+ adds r0, r3
+ str r0, [r5]
+ cmp r0, 0
+ bge _0806C9BA
+_0806C9B8:
+ str r1, [r5]
+_0806C9BA:
+ ldr r4, [sp, 0x34]
+ cmp r4, 0
+ bne _0806C9C2
+ b _0806CBDE
+_0806C9C2:
+ movs r4, 0
+ adds r0, r6, 0
+ bl sub_806CF54
+ lsls r0, 24
+ lsrs r7, r0, 24
+ add r1, sp, 0x1C
+ ldr r2, _0806CA60
+ strh r2, [r1]
+ ldr r0, _0806CA64
+ strh r0, [r1, 0x2]
+ strh r2, [r1, 0x4]
+ strh r4, [r1, 0x6]
+ strh r4, [r1, 0x8]
+ ldr r0, _0806CA68
+ ldr r0, [r0]
+ ldr r2, _0806CA6C
+ adds r0, r2
+ ldrb r0, [r0]
+ lsls r0, 10
+ strh r0, [r1, 0xA]
+ mov r3, r8
+ ldrb r0, [r3, 0x6]
+ adds r5, r1, 0
+ cmp r0, 0
+ beq _0806CA08
+ ldr r1, _0806CA70
+ adds r0, r1, 0
+ ldrh r2, [r3, 0x4]
+ adds r0, r2
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x2
+ bhi _0806CA08
+ movs r4, 0x1
+_0806CA08:
+ mov r0, r8
+ adds r0, 0xE4
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0806CA22
+ ldr r0, _0806CA68
+ ldr r0, [r0]
+ ldr r3, _0806CA74
+ adds r0, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806CA22
+ movs r4, 0x1
+_0806CA22:
+ cmp r4, 0
+ beq _0806CA32
+ ldrh r1, [r5, 0x6]
+ movs r4, 0x80
+ lsls r4, 3
+ adds r0, r4, 0
+ orrs r0, r1
+ strh r0, [r5, 0x6]
+_0806CA32:
+ movs r0, 0
+ str r0, [sp, 0x3C]
+ mov r1, r8
+ ldrb r0, [r1, 0x6]
+ cmp r0, 0
+ beq _0806CA46
+ ldr r2, [sp, 0x40]
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0806CA4A
+_0806CA46:
+ movs r3, 0x1
+ str r3, [sp, 0x3C]
+_0806CA4A:
+ mov r0, r8
+ adds r0, 0x40
+ ldrb r0, [r0]
+ cmp r0, 0x4A
+ beq _0806CA58
+ cmp r0, 0x47
+ bne _0806CA78
+_0806CA58:
+ movs r0, 0x1
+ b _0806CA7A
+ .align 2, 0
+_0806CA5C: .4byte 0xfffff400
+_0806CA60: .4byte 0x0000f3ff
+_0806CA64: .4byte 0x0000ffff
+_0806CA68: .4byte gDungeonGlobalData
+_0806CA6C: .4byte 0x00018208
+_0806CA70: .4byte 0xfffffe5f
+_0806CA74: .4byte 0x0001820f
+_0806CA78:
+ movs r0, 0
+_0806CA7A:
+ cmp r0, 0
+ bne _0806CA88
+ mov r0, r8
+ adds r0, 0xA4
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0806CA8C
+_0806CA88:
+ movs r4, 0x1
+ str r4, [sp, 0x3C]
+_0806CA8C:
+ mov r0, r8
+ adds r0, 0xFF
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ beq _0806CB16
+ mov r0, r8
+ adds r0, 0xB0
+ ldrb r1, [r0]
+ cmp r1, 0x6
+ beq _0806CAAC
+ subs r0, 0x4
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ beq _0806CAAC
+ cmp r1, 0x2
+ bne _0806CABA
+_0806CAAC:
+ ldr r0, _0806CAC4
+ ldr r0, [r0]
+ movs r1, 0x2
+ ands r0, r1
+ ldr r1, [sp, 0x2C]
+ adds r1, r0
+ str r1, [sp, 0x2C]
+_0806CABA:
+ ldr r2, [sp, 0x38]
+ cmp r2, 0
+ beq _0806CACC
+ ldr r0, _0806CAC8
+ b _0806CAD2
+ .align 2, 0
+_0806CAC4: .4byte gUnknown_202EDCC
+_0806CAC8: .4byte 0x000001a5
+_0806CACC:
+ mov r3, r8
+ movs r4, 0x4
+ ldrsh r0, [r3, r4]
+_0806CAD2:
+ movs r1, 0
+ bl GetPokemonOverworldPalette
+ lsls r0, 24
+ lsrs r2, r0, 24
+ adds r0, r6, 0
+ adds r0, 0x22
+ ldrb r1, [r0]
+ cmp r1, 0
+ bne _0806CAF8
+ str r2, [sp]
+ str r5, [sp, 0x4]
+ mov r0, r10
+ ldr r1, [sp, 0x2C]
+ ldr r2, [sp, 0x30]
+ mov r3, r9
+ bl sub_800558C
+ b _0806CB16
+_0806CAF8:
+ cmp r1, 0x1
+ bne _0806CB16
+ ldr r0, _0806CBF0
+ ldr r0, [r0]
+ ands r0, r1
+ cmp r0, 0
+ beq _0806CB16
+ str r2, [sp]
+ str r5, [sp, 0x4]
+ mov r0, r10
+ ldr r1, [sp, 0x2C]
+ ldr r2, [sp, 0x30]
+ mov r3, r9
+ bl sub_800558C
+_0806CB16:
+ ldr r0, [r6, 0xC]
+ cmp r0, 0
+ bge _0806CB1E
+ adds r0, 0xFF
+_0806CB1E:
+ asrs r0, 8
+ ldrh r1, [r6, 0x38]
+ adds r0, r1
+ movs r1, 0xB8
+ lsls r1, 1
+ add r1, r8
+ strh r0, [r1]
+ ldr r0, [r6, 0x10]
+ cmp r0, 0
+ bge _0806CB34
+ adds r0, 0xFF
+_0806CB34:
+ asrs r0, 8
+ ldrh r2, [r6, 0x3A]
+ adds r0, r2
+ movs r3, 0xB9
+ lsls r3, 1
+ add r3, r8
+ strh r0, [r3]
+ movs r4, 0
+ ldrsh r2, [r1, r4]
+ ldr r0, _0806CBF4
+ ldr r1, [r0]
+ ldr r4, _0806CBF8
+ adds r0, r1, r4
+ movs r4, 0
+ ldrsh r0, [r0, r4]
+ subs r4, r2, r0
+ movs r0, 0
+ ldrsh r2, [r3, r0]
+ ldr r3, _0806CBFC
+ adds r1, r3
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ subs r5, r2, r0
+ movs r0, 0x20
+ negs r0, r0
+ cmp r4, r0
+ blt _0806CBDE
+ cmp r5, r0
+ blt _0806CBDE
+ ldr r0, _0806CC00
+ cmp r4, r0
+ bgt _0806CBDE
+ cmp r5, 0xBF
+ bgt _0806CBDE
+ cmp r7, 0x6
+ beq _0806CBDE
+ adds r0, r6, 0
+ adds r0, 0x22
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806CBDE
+ ldr r0, [sp, 0x3C]
+ lsls r2, r0, 3
+ adds r2, r0
+ lsls r2, 3
+ lsls r0, r7, 1
+ adds r0, r7
+ lsls r0, 2
+ ldr r1, _0806CC04
+ adds r0, r1
+ adds r3, r2, r0
+ movs r0, 0xAB
+ lsls r0, 1
+ add r0, r8
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806CBDE
+ movs r2, 0x8
+ ldrsh r1, [r3, r2]
+ adds r1, r4, r1
+ ldr r0, _0806CC08
+ ands r1, r0
+ ldrh r2, [r3, 0x2]
+ movs r0, 0xFE
+ lsls r0, 8
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r3, 0x2]
+ movs r4, 0xA
+ ldrsh r1, [r3, r4]
+ adds r1, r5, r1
+ ldr r0, _0806CC0C
+ ands r1, r0
+ lsls r1, 4
+ ldrh r2, [r3, 0x6]
+ movs r0, 0xF
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r3, 0x6]
+ adds r0, r3, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl AddSprite
+_0806CBDE:
+ add sp, 0x50
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806CBF0: .4byte gUnknown_202EDCC
+_0806CBF4: .4byte gDungeonGlobalData
+_0806CBF8: .4byte 0x000181f0
+_0806CBFC: .4byte 0x000181f2
+_0806CC00: .4byte 0x0000010f
+_0806CC04: .4byte gUnknown_202ED28
+_0806CC08: .4byte 0x000001ff
+_0806CC0C: .4byte 0x00000fff
+ thumb_func_end sub_806C51C
+
+ thumb_func_start sub_806CC10
+sub_806CC10:
+ push {r4,r5,lr}
+ movs r5, 0
+_0806CC14:
+ ldr r0, _0806CC68
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _0806CC6C
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806CC5C
+ ldr r2, [r4, 0x70]
+ movs r1, 0xB3
+ lsls r1, 1
+ adds r0, r2, r1
+ ldrb r1, [r0]
+ cmp r1, 0
+ beq _0806CC5C
+ subs r1, 0x1
+ strb r1, [r0]
+ movs r0, 0x1
+ ands r1, r0
+ cmp r1, 0
+ bne _0806CC5C
+ adds r0, r2, 0
+ adds r0, 0x46
+ ldrb r2, [r0]
+ subs r2, 0x1
+ movs r0, 0x7
+ ands r2, r0
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_806CDD4
+_0806CC5C:
+ adds r5, 0x1
+ cmp r5, 0x13
+ ble _0806CC14
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806CC68: .4byte gDungeonGlobalData
+_0806CC6C: .4byte 0x000135cc
+ thumb_func_end sub_806CC10
+
+ thumb_func_start sub_806CC70
+sub_806CC70:
+ push {r4,r5,lr}
+ movs r5, 0
+_0806CC74:
+ ldr r0, _0806CCAC
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _0806CCB0
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806CCA0
+ adds r0, r4, 0
+ bl sub_806CEBC
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_806CCB4
+_0806CCA0:
+ adds r5, 0x1
+ cmp r5, 0x13
+ ble _0806CC74
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806CCAC: .4byte gDungeonGlobalData
+_0806CCB0: .4byte 0x000135cc
+ thumb_func_end sub_806CC70
+
+ thumb_func_start sub_806CCB4
+sub_806CCB4:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0xC
+ adds r5, r0, 0
+ lsls r1, 24
+ lsrs r4, r1, 24
+ ldr r7, [r5, 0x70]
+ ldr r0, _0806CD40
+ ldr r0, [r0]
+ ldr r2, _0806CD44
+ adds r1, r0, r2
+ ldrb r6, [r1]
+ ldr r3, _0806CD48
+ adds r0, r3
+ ldr r0, [r0]
+ cmp r5, r0
+ bne _0806CCDC
+ movs r6, 0
+_0806CCDC:
+ adds r0, r5, 0
+ adds r0, 0x6B
+ movs r3, 0
+ strb r4, [r0]
+ adds r2, r5, 0
+ adds r2, 0x6A
+ strb r4, [r2]
+ adds r4, r7, 0
+ adds r4, 0x46
+ ldrb r0, [r4]
+ adds r1, r5, 0
+ adds r1, 0x6D
+ strb r0, [r1]
+ ldrb r0, [r4]
+ subs r1, 0x1
+ strb r0, [r1]
+ adds r0, r5, 0
+ adds r0, 0x6F
+ strb r3, [r0]
+ subs r0, 0x7
+ movs r3, 0
+ ldrsh r4, [r0, r3]
+ mov r9, r4
+ adds r0, r7, 0
+ adds r0, 0xC8
+ ldrb r0, [r0]
+ adds r7, r2, 0
+ mov r8, r1
+ cmp r0, 0x2
+ beq _0806CD4C
+ cmp r6, 0
+ bne _0806CD4C
+ bl Random
+ movs r4, 0x3
+ ands r4, r0
+ adds r0, r5, 0
+ adds r0, 0x28
+ ldr r1, [r5, 0x64]
+ ldrb r2, [r7]
+ mov r7, r8
+ ldrb r3, [r7]
+ mov r7, r9
+ str r7, [sp]
+ str r4, [sp, 0x4]
+ str r6, [sp, 0x8]
+ bl sub_80053AC
+ b _0806CD76
+ .align 2, 0
+_0806CD40: .4byte gDungeonGlobalData
+_0806CD44: .4byte 0x00018210
+_0806CD48: .4byte 0x000181f8
+_0806CD4C:
+ ldr r0, _0806CD8C
+ bl sub_80687D0
+ adds r4, r0, 0
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ adds r0, r5, 0
+ adds r0, 0x28
+ ldrb r2, [r7]
+ mov r6, r8
+ ldrb r3, [r6]
+ mov r7, r9
+ str r7, [sp]
+ str r1, [sp, 0x4]
+ movs r1, 0
+ str r1, [sp, 0x8]
+ adds r1, r4, 0
+ bl sub_80053AC
+_0806CD76:
+ adds r1, r5, 0
+ adds r1, 0x6E
+ movs r0, 0
+ strb r0, [r1]
+ add sp, 0xC
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806CD8C: .4byte 0x000001a5
+ thumb_func_end sub_806CCB4
+
+ .align 2,0