diff options
Diffstat (limited to 'asm/code_8069E0C.s')
-rw-r--r-- | asm/code_8069E0C.s | 6209 |
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 |