diff options
Diffstat (limited to 'asm/code_806CD90.s')
-rw-r--r-- | asm/code_806CD90.s | 6234 |
1 files changed, 6234 insertions, 0 deletions
diff --git a/asm/code_806CD90.s b/asm/code_806CD90.s new file mode 100644 index 0000000..50f101b --- /dev/null +++ b/asm/code_806CD90.s @@ -0,0 +1,6234 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_806CEBC +sub_806CEBC: + push {lr} + ldr r0, [r0, 0x70] + adds r1, r0, 0 + adds r0, 0xA8 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0806CED2 + cmp r0, 0x5 + beq _0806CED2 + cmp r0, 0x3 + bne _0806CEE8 +_0806CED2: + movs r2, 0x4 + ldrsh r0, [r1, r2] + cmp r0, 0xB9 + bne _0806CEE4 + adds r0, r1, 0 + adds r0, 0xA9 + ldrb r0, [r0] + cmp r0, 0x7F + beq _0806CEF2 +_0806CEE4: + movs r0, 0x5 + b _0806CEF8 +_0806CEE8: + adds r0, r1, 0 + adds r0, 0xC0 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0806CEF6 +_0806CEF2: + movs r0, 0x7 + b _0806CEF8 +_0806CEF6: + movs r0, 0xB +_0806CEF8: + pop {r1} + bx r1 + thumb_func_end sub_806CEBC + + thumb_func_start sub_806CEFC +sub_806CEFC: + push {r4,lr} + adds r4, r1, 0 + ldr r2, [r0, 0x70] + movs r3, 0x7 + ands r1, r3 + adds r2, 0x46 + strb r1, [r2] + movs r1, 0x7 + ands r1, r4 + bl sub_806CE68 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_806CEFC + + thumb_func_start sub_806CF18 +sub_806CF18: + push {r4-r6,lr} + adds r4, r0, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0806CF4C + ldr r6, [r4, 0x70] + movs r5, 0 + b _0806CF2E +_0806CF2C: + adds r5, 0x1 +_0806CF2E: + cmp r5, 0x63 + bgt _0806CF4C + movs r0, 0x21 + bl sub_803E46C + movs r1, 0x4 + ldrsh r0, [r6, r1] + adds r1, r4, 0 + adds r1, 0x6B + ldrb r1, [r1] + bl sub_808DA44 + lsls r0, 24 + cmp r0, 0 + bne _0806CF2C +_0806CF4C: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_806CF18 + + thumb_func_start sub_806CF54 +sub_806CF54: + ldr r0, [r0, 0x70] + movs r1, 0x81 + lsls r1, 2 + adds r0, r1 + ldrb r0, [r0] + bx lr + thumb_func_end sub_806CF54 + + thumb_func_start sub_806CF60 +sub_806CF60: + push {r4,r5,lr} + movs r5, 0 +_0806CF64: + ldr r0, _0806CF90 + ldr r0, [r0] + lsls r1, r5, 2 + ldr r2, _0806CF94 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0806CF84 + adds r0, r4, 0 + bl sub_806CF98 +_0806CF84: + adds r5, 0x1 + cmp r5, 0x13 + ble _0806CF64 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806CF90: .4byte gDungeonGlobalData +_0806CF94: .4byte 0x000135cc + thumb_func_end sub_806CF60 + + thumb_func_start sub_806CF98 +sub_806CF98: + push {r4-r7,lr} + adds r4, r0, 0 + bl sub_8045128 + ldrh r0, [r0] + movs r5, 0x3 + ands r5, r0 + adds r6, r5, 0 + ldr r7, [r4, 0x70] + movs r1, 0x4 + ldrsh r0, [r7, r1] + bl GetShadowSize + lsls r0, 24 + lsrs r4, r0, 24 + cmp r5, 0x3 + bne _0806CFBE + movs r0, 0x6 + b _0806CFF8 +_0806CFBE: + cmp r5, 0x1 + bne _0806CFCE + bl IsWaterTileset + lsls r0, 24 + cmp r0, 0 + beq _0806CFEE + b _0806CFE8 +_0806CFCE: + cmp r6, 0x2 + bne _0806CFEE + ldr r1, _0806D000 + ldr r0, _0806D004 + ldr r0, [r0] + ldr r2, _0806D008 + adds r0, r2 + movs r2, 0 + ldrsh r0, [r0, r2] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0806CFEE +_0806CFE8: + ldr r0, _0806D00C + adds r0, r4, r0 + ldrb r4, [r0] +_0806CFEE: + movs r1, 0x81 + lsls r1, 2 + adds r0, r7, r1 + strb r4, [r0] + adds r0, r4, 0 +_0806CFF8: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0806D000: .4byte gDungeonWaterType +_0806D004: .4byte gDungeonGlobalData +_0806D008: .4byte 0x00003a0e +_0806D00C: .4byte gUnknown_8106EEF + thumb_func_end sub_806CF98 + + thumb_func_start sub_806D010 +sub_806D010: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + adds r6, r0, 0 + adds r5, r1, 0 + mov r8, r2 + ldr r0, [sp, 0x40] + lsls r0, 16 + asrs r0, 16 + mov r10, r0 + movs r7, 0 + ldr r0, [sp, 0x3C] + str r0, [sp] + mov r1, r10 + str r1, [sp, 0x4] + ldr r2, [sp, 0x48] + str r2, [sp, 0x8] + adds r0, r6, 0 + adds r1, r5, 0 + mov r2, r8 + bl sub_806D528 + lsls r0, 24 + cmp r0, 0 + beq _0806D04A + b _0806D514 +_0806D04A: + mov r3, r8 + ldrb r0, [r3, 0xF] + cmp r0, 0 + beq _0806D054 + b _0806D514 +_0806D054: + adds r0, r6, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0806D062 + b _0806D514 +_0806D062: + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0806D070 + b _0806D514 +_0806D070: + adds r0, r6, 0 + bl GetEntityType + cmp r0, 0x1 + beq _0806D07C + b _0806D514 +_0806D07C: + adds r0, r5, 0 + bl GetEntityType + cmp r0, 0x1 + beq _0806D088 + b _0806D514 +_0806D088: + ldr r0, [sp, 0x44] + mov r9, r0 + adds r0, r5, 0 + bl CannotAct + lsls r0, 24 + cmp r0, 0 + bne _0806D0A2 + ldr r0, [r5, 0x70] + adds r0, 0xC0 + ldrb r0, [r0] + cmp r0, 0 + beq _0806D0A6 +_0806D0A2: + movs r1, 0 + mov r9, r1 +_0806D0A6: + mov r2, r9 + cmp r2, 0 + beq _0806D100 + movs r3, 0x4 + ldrsh r1, [r6, r3] + movs r2, 0x4 + ldrsh r0, [r5, r2] + subs r1, r0 + cmp r1, 0 + bge _0806D0BC + negs r1, r1 +_0806D0BC: + cmp r1, 0x1 + bgt _0806D100 + movs r3, 0x6 + ldrsh r1, [r6, r3] + movs r2, 0x6 + ldrsh r0, [r5, r2] + subs r1, r0 + cmp r1, 0 + bge _0806D0D0 + negs r1, r1 +_0806D0D0: + cmp r1, 0x1 + bgt _0806D100 + cmp r6, r5 + beq _0806D100 + mov r3, r8 + ldrb r0, [r3, 0xC] + bl sub_8092354 + lsls r0, 24 + cmp r0, 0 + beq _0806D100 + ldr r0, [r5, 0x70] + adds r0, 0xC4 + ldrb r0, [r0] + cmp r0, 0xD + bne _0806D100 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8042730 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_807F43C +_0806D100: + ldr r0, [r5, 0x70] + adds r0, 0xC0 + ldrb r0, [r0] + cmp r0, 0xC + bne _0806D118 + ldr r0, _0806D3BC + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + movs r3, 0x1 + bl sub_8077084 +_0806D118: + adds r0, r6, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0806D126 + b _0806D514 +_0806D126: + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0806D134 + b _0806D514 +_0806D134: + mov r0, r9 + cmp r0, 0 + beq _0806D216 + cmp r6, r5 + beq _0806D216 + movs r2, 0x4 + ldrsh r1, [r6, r2] + movs r3, 0x4 + ldrsh r0, [r5, r3] + subs r1, r0 + cmp r1, 0 + bge _0806D14E + negs r1, r1 +_0806D14E: + cmp r1, 0x1 + bgt _0806D216 + movs r0, 0x6 + ldrsh r1, [r6, r0] + movs r2, 0x6 + ldrsh r0, [r5, r2] + subs r1, r0 + cmp r1, 0 + bge _0806D162 + negs r1, r1 +_0806D162: + cmp r1, 0x1 + bgt _0806D216 + mov r3, r8 + ldrb r0, [r3, 0xC] + bl sub_8092354 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, [r5, 0x70] + adds r0, 0xC4 + ldrb r0, [r0] + cmp r0, 0x4 + bne _0806D188 + cmp r4, 0 + beq _0806D188 + adds r0, r5, 0 + bl sub_8041B18 + adds r7, 0x4 +_0806D188: + ldr r0, [r5, 0x70] + adds r0, 0xC4 + ldrb r0, [r0] + cmp r0, 0xA + bne _0806D19E + cmp r4, 0 + beq _0806D19E + adds r0, r5, 0 + bl sub_8041B18 + adds r7, 0x1 +_0806D19E: + ldr r0, [r5, 0x70] + adds r0, 0xC4 + ldrb r0, [r0] + cmp r0, 0x8 + bne _0806D1B4 + cmp r4, 0 + bne _0806D1B4 + adds r0, r5, 0 + bl sub_8041B90 + adds r7, 0x4 +_0806D1B4: + adds r0, r5, 0 + movs r1, 0x12 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806D1C4 + adds r7, 0x2 +_0806D1C4: + cmp r7, 0 + beq _0806D216 + ldr r0, _0806D3C0 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80522F4 + mov r1, r8 + ldr r0, [r1] + muls r0, r7 + cmp r0, 0 + bge _0806D1E0 + adds r0, 0x3 +_0806D1E0: + asrs r0, 2 + str r0, [sp, 0xC] + add r2, sp, 0xC + mov r3, r8 + ldrb r0, [r3, 0xC] + movs r1, 0 + strb r0, [r2, 0xC] + movs r0, 0x6 + str r0, [sp, 0x10] + movs r0, 0x2 + str r0, [sp, 0x14] + adds r0, r2, 0 + strb r1, [r0, 0xD] + strb r1, [r0, 0xE] + strb r1, [r0, 0xF] + ldr r0, [sp, 0x3C] + str r0, [sp] + mov r1, r10 + str r1, [sp, 0x4] + ldr r2, [sp, 0x48] + str r2, [sp, 0x8] + adds r0, r5, 0 + adds r1, r6, 0 + add r2, sp, 0xC + movs r3, 0 + bl sub_806D528 +_0806D216: + adds r0, r6, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0806D224 + b _0806D514 +_0806D224: + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0806D232 + b _0806D514 +_0806D232: + mov r3, r9 + cmp r3, 0 + bne _0806D23A + b _0806D48A +_0806D23A: + cmp r6, r5 + bne _0806D240 + b _0806D48A +_0806D240: + movs r0, 0x4 + ldrsh r1, [r6, r0] + movs r2, 0x4 + ldrsh r0, [r5, r2] + subs r1, r0 + cmp r1, 0 + bge _0806D250 + negs r1, r1 +_0806D250: + cmp r1, 0x1 + ble _0806D256 + b _0806D48A +_0806D256: + movs r3, 0x6 + ldrsh r1, [r6, r3] + movs r2, 0x6 + ldrsh r0, [r5, r2] + subs r1, r0 + cmp r1, 0 + bge _0806D266 + negs r1, r1 +_0806D266: + cmp r1, 0x1 + ble _0806D26C + b _0806D48A +_0806D26C: + mov r3, r8 + ldrb r0, [r3, 0xC] + bl sub_8092354 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r4, [r6, 0x70] + adds r0, r5, 0 + movs r1, 0x5 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806D2C2 + adds r0, r6, 0 + movs r1, 0xA + bl HasType + lsls r0, 24 + cmp r0, 0 + bne _0806D2C2 + adds r0, r6, 0 + movs r1, 0x37 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + bne _0806D2C2 + movs r0, 0x64 + bl DungeonRandomCapped + ldr r1, _0806D3C4 + movs r2, 0 + ldrsh r1, [r1, r2] + cmp r0, r1 + bge _0806D2C2 + movs r3, 0xBC + lsls r3, 1 + adds r2, r4, r3 + ldrh r1, [r2] + movs r0, 0x1 + orrs r0, r1 + strh r0, [r2] +_0806D2C2: + adds r0, r5, 0 + movs r1, 0xA + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806D2EE + movs r0, 0x64 + bl DungeonRandomCapped + ldr r1, _0806D3C8 + movs r2, 0 + ldrsh r1, [r1, r2] + cmp r0, r1 + bge _0806D2EE + movs r3, 0xBC + lsls r3, 1 + adds r2, r4, r3 + ldrh r1, [r2] + movs r0, 0x2 + orrs r0, r1 + strh r0, [r2] +_0806D2EE: + adds r0, r5, 0 + movs r1, 0x17 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806D328 + adds r0, r6, 0 + movs r1, 0x11 + bl HasType + lsls r0, 24 + cmp r0, 0 + beq _0806D328 + movs r0, 0x64 + bl DungeonRandomCapped + ldr r1, _0806D3CC + movs r2, 0 + ldrsh r1, [r1, r2] + cmp r0, r1 + bge _0806D328 + movs r3, 0xBC + lsls r3, 1 + adds r2, r4, r3 + ldrh r1, [r2] + movs r0, 0x4 + orrs r0, r1 + strh r0, [r2] +_0806D328: + adds r0, r5, 0 + movs r1, 0x20 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806D358 + cmp r7, 0 + beq _0806D358 + movs r0, 0x64 + bl DungeonRandomCapped + ldr r1, _0806D3D0 + movs r2, 0 + ldrsh r1, [r1, r2] + cmp r0, r1 + bge _0806D358 + movs r3, 0xBC + lsls r3, 1 + adds r2, r4, r3 + ldrh r1, [r2] + movs r0, 0x8 + orrs r0, r1 + strh r0, [r2] +_0806D358: + adds r0, r5, 0 + movs r1, 0x27 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806D384 + movs r0, 0x64 + bl DungeonRandomCapped + ldr r1, _0806D3D4 + movs r2, 0 + ldrsh r1, [r1, r2] + cmp r0, r1 + bge _0806D384 + movs r3, 0xBC + lsls r3, 1 + adds r2, r4, r3 + ldrh r1, [r2] + movs r0, 0x20 + orrs r0, r1 + strh r0, [r2] +_0806D384: + adds r0, r5, 0 + movs r1, 0x3D + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806D3FA + cmp r7, 0 + beq _0806D3FA + movs r0, 0x64 + bl DungeonRandomCapped + ldr r1, _0806D3D8 + movs r2, 0 + ldrsh r1, [r1, r2] + cmp r0, r1 + bge _0806D3FA + movs r0, 0x3 + bl DungeonRandomCapped + cmp r0, 0 + bgt _0806D3DC + movs r3, 0xBC + lsls r3, 1 + adds r2, r4, r3 + ldrh r1, [r2] + movs r0, 0x40 + b _0806D3F6 + .align 2, 0 +_0806D3BC: .4byte gUnknown_8106A4C +_0806D3C0: .4byte gUnknown_80FCFA4 +_0806D3C4: .4byte gUnknown_80F4E10 +_0806D3C8: .4byte gUnknown_80F4E12 +_0806D3CC: .4byte gUnknown_80F4E14 +_0806D3D0: .4byte gUnknown_80F4E16 +_0806D3D4: .4byte gUnknown_80F4E18 +_0806D3D8: .4byte gUnknown_80F4E1A +_0806D3DC: + cmp r0, 0x1 + bgt _0806D3EC + movs r0, 0xBC + lsls r0, 1 + adds r2, r4, r0 + ldrh r1, [r2] + movs r0, 0x10 + b _0806D3F6 +_0806D3EC: + movs r1, 0xBC + lsls r1, 1 + adds r2, r4, r1 + ldrh r1, [r2] + movs r0, 0x80 +_0806D3F6: + orrs r0, r1 + strh r0, [r2] +_0806D3FA: + adds r0, r5, 0 + movs r1, 0x3E + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806D428 + movs r0, 0x64 + bl DungeonRandomCapped + ldr r1, _0806D4D4 + movs r2, 0 + ldrsh r1, [r1, r2] + cmp r0, r1 + bge _0806D428 + movs r3, 0xBC + lsls r3, 1 + adds r2, r4, r3 + ldrh r1, [r2] + subs r3, 0x78 + adds r0, r3, 0 + orrs r0, r1 + strh r0, [r2] +_0806D428: + adds r0, r5, 0 + movs r1, 0x44 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806D45A + cmp r7, 0 + beq _0806D45A + movs r0, 0x64 + bl DungeonRandomCapped + ldr r1, _0806D4D8 + movs r2, 0 + ldrsh r1, [r1, r2] + cmp r0, r1 + bge _0806D45A + movs r3, 0xBC + lsls r3, 1 + adds r2, r4, r3 + ldrh r1, [r2] + adds r3, 0x88 + adds r0, r3, 0 + orrs r0, r1 + strh r0, [r2] +_0806D45A: + adds r0, r5, 0 + movs r1, 0x1 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806D48A + movs r0, 0x64 + bl DungeonRandomCapped + ldr r1, _0806D4DC + movs r2, 0 + ldrsh r1, [r1, r2] + cmp r0, r1 + bge _0806D48A + movs r3, 0xBC + lsls r3, 1 + adds r2, r4, r3 + ldrh r1, [r2] + movs r3, 0x80 + lsls r3, 3 + adds r0, r3, 0 + orrs r0, r1 + strh r0, [r2] +_0806D48A: + adds r0, r6, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0806D514 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0806D514 + mov r0, r9 + cmp r0, 0 + beq _0806D514 + ldr r2, [r5, 0x70] + adds r6, r2, 0 + adds r3, r2, 0 + adds r3, 0xD0 + ldrb r0, [r3] + cmp r0, 0x2 + bne _0806D514 + ldr r0, _0806D4E0 + ldr r1, [r0] + adds r0, r2, 0 + adds r0, 0xD8 + ldrb r0, [r0] + lsls r0, 2 + ldr r2, _0806D4E4 + adds r1, r2 + adds r1, r0 + ldr r4, [r1] + cmp r4, 0 + bne _0806D4E8 + strb r4, [r3] + b _0806D514 + .align 2, 0 +_0806D4D4: .4byte gUnknown_80F4E1C +_0806D4D8: .4byte gUnknown_80F4E1E +_0806D4DC: .4byte gUnknown_80F4E20 +_0806D4E0: .4byte gDungeonGlobalData +_0806D4E4: .4byte 0x000135cc +_0806D4E8: + ldr r0, [r4, 0x70] + adds r0, 0x98 + adds r1, r6, 0 + adds r1, 0xD4 + ldr r2, [r0] + ldr r0, [r1] + cmp r2, r0 + beq _0806D4FE + movs r0, 0 + strb r0, [r3] + b _0806D514 +_0806D4FE: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8041D00 + mov r3, r8 + ldr r1, [r3] + ldr r3, _0806D524 + adds r0, r4, 0 + movs r2, 0xC + bl sub_806F324 +_0806D514: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806D524: .4byte 0x000001f9 + thumb_func_end sub_806D010 + + thumb_func_start sub_806D528 +sub_806D528: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x58 + mov r9, r0 + adds r7, r1, 0 + adds r5, r2, 0 + str r3, [sp, 0x4C] + ldr r0, [sp, 0x7C] + lsls r0, 16 + asrs r0, 16 + str r0, [sp, 0x50] + movs r0, 0 + str r0, [sp, 0x54] + mov r10, r0 + mov r8, r0 + mov r1, r10 + strb r1, [r5, 0xF] + adds r0, r7, 0 + bl GetEntityType + cmp r0, 0x1 + beq _0806D55C + b _0806D754 +_0806D55C: + ldr r6, [r7, 0x70] + mov r0, r9 + adds r1, r7, 0 + bl sub_807A96C + mov r0, r9 + adds r1, r7, 0 + bl SetShopkeeperAggression + mov r0, r9 + bl GetEntityType + cmp r0, 0x1 + bne _0806D592 + mov r2, r9 + ldr r0, [r2, 0x70] + adds r0, 0xDC + ldrb r0, [r0] + cmp r0, 0x3 + bne _0806D592 + ldrb r0, [r5, 0xE] + cmp r0, 0 + bne _0806D592 + ldr r0, _0806D5C8 + movs r3, 0 + ldrsh r0, [r0, r3] + str r0, [r5] +_0806D592: + ldr r0, _0806D5CC + ldr r1, [sp, 0x50] + cmp r1, r0 + beq _0806D5DC + adds r0, r7, 0 + movs r1, 0xD + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806D5DC + ldr r1, [r5] + ldr r0, _0806D5D0 + cmp r1, r0 + bne _0806D5DC + ldr r0, _0806D5D4 + adds r1, r7, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _0806D5D8 + ldr r2, [r0] + mov r0, r9 + adds r1, r7, 0 + bl sub_80522F4 + b _0806D71E + .align 2, 0 +_0806D5C8: .4byte gUnknown_80F4F8C +_0806D5CC: .4byte 0x0000020e +_0806D5D0: .4byte 0x0000270f +_0806D5D4: .4byte gUnknown_202DFE8 +_0806D5D8: .4byte gUnknown_80FCA90 +_0806D5DC: + adds r0, r6, 0 + adds r0, 0xB0 + ldrb r4, [r0] + mov r10, r0 + cmp r4, 0x1 + bne _0806D618 + ldr r0, _0806D610 + adds r1, r7, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _0806D614 + ldr r2, [r0] + mov r0, r9 + adds r1, r7, 0 + bl sub_80522F4 + mov r0, r9 + adds r1, r7, 0 + bl sub_8042238 + strb r4, [r5, 0xF] +_0806D608: + movs r0, 0 + bl _0806E0F0 + .align 2, 0 +_0806D610: .4byte gUnknown_202DFE8 +_0806D614: .4byte gUnknown_80F9600 +_0806D618: + adds r0, r6, 0 + adds r0, 0xA8 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0806D62A + cmp r0, 0x5 + beq _0806D62A + cmp r0, 0x3 + bne _0806D63A +_0806D62A: + adds r0, r6, 0 + adds r0, 0xA9 + ldrb r0, [r0] + cmp r0, 0x7F + bne _0806D63A + adds r0, r7, 0 + bl sub_807A9B0 +_0806D63A: + adds r0, r7, 0 + movs r1, 0x23 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806D660 + ldrb r0, [r5, 0xC] + cmp r0, 0x5 + bne _0806D660 +_0806D64E: + ldr r2, [r5] + movs r0, 0 + str r0, [sp] + mov r0, r9 + adds r1, r7, 0 + movs r3, 0 + bl HealTargetHP + b _0806D754 +_0806D660: + adds r0, r7, 0 + movs r1, 0x24 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806D674 + ldrb r0, [r5, 0xC] + cmp r0, 0x3 + beq _0806D64E +_0806D674: + movs r2, 0xA9 + lsls r2, 1 + adds r0, r6, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0806D6D0 + ldrb r0, [r5, 0xD] + cmp r0, 0 + beq _0806D692 + ldr r0, _0806D6A4 + ldr r2, [r0] + mov r0, r9 + adds r1, r7, 0 + bl sub_80522F4 +_0806D692: + ldr r0, [r5, 0x8] + cmp r0, 0x1 + beq _0806D6B0 + cmp r0, 0x1 + bcc _0806D6A8 + cmp r0, 0x3 + beq _0806D6C4 + b _0806D6D0 + .align 2, 0 +_0806D6A4: .4byte gUnknown_80F9614 +_0806D6A8: + ldr r0, _0806D6AC + b _0806D6B2 + .align 2, 0 +_0806D6AC: .4byte gUnknown_80F9630 +_0806D6B0: + ldr r0, _0806D6C0 +_0806D6B2: + ldr r2, [r0] + mov r0, r9 + adds r1, r7, 0 + bl sub_80522F4 + b _0806D6D0 + .align 2, 0 +_0806D6C0: .4byte gUnknown_80F9654 +_0806D6C4: + ldr r0, _0806D728 + ldr r2, [r0] + mov r0, r9 + adds r1, r7, 0 + bl sub_80522F4 +_0806D6D0: + ldr r4, _0806D72C + adds r0, r4, 0 + mov r1, r9 + movs r2, 0 + bl SetMessageArgument + adds r4, 0x50 + adds r0, r4, 0 + adds r1, r7, 0 + movs r2, 0 + bl SetMessageArgument + ldr r1, [r5] + cmp r1, 0 + bne _0806D760 + mov r0, r9 + bl sub_8045888 + lsls r0, 24 + cmp r0, 0 + beq _0806D734 + adds r0, r7, 0 + bl sub_8045888 + lsls r0, 24 + cmp r0, 0 + beq _0806D734 + movs r3, 0xA9 + lsls r3, 1 + adds r0, r6, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _0806D71E + ldr r0, _0806D730 + ldr r2, [r0] + mov r0, r9 + adds r1, r7, 0 + bl sub_80522F4 +_0806D71E: + mov r0, r9 + adds r1, r7, 0 + bl sub_8042238 + b _0806D754 + .align 2, 0 +_0806D728: .4byte gUnknown_80F9670 +_0806D72C: .4byte gAvailablePokemonNames +_0806D730: .4byte gUnknown_80F9688 +_0806D734: + movs r1, 0xA9 + lsls r1, 1 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0806D74C + ldr r0, _0806D75C + ldr r2, [r0] + mov r0, r9 + adds r1, r7, 0 + bl sub_80522F4 +_0806D74C: + movs r0, 0x1E + movs r1, 0x18 + bl sub_803E708 +_0806D754: + movs r0, 0x1 + strb r0, [r5, 0xF] + b _0806D608 + .align 2, 0 +_0806D75C: .4byte gUnknown_80F9688 +_0806D760: + ldr r0, _0806D7B8 + cmp r1, r0 + bne _0806D7C4 + ldr r0, [sp, 0x80] + cmp r0, 0 + beq _0806D796 + adds r0, r7, 0 + bl sub_8045888 + lsls r0, 24 + cmp r0, 0 + beq _0806D796 + adds r0, r7, 0 + bl sub_8045128 + mov r8, r0 + movs r0, 0x14 + movs r1, 0x18 + bl sub_803E708 + mov r2, r8 + ldrh r1, [r2, 0x4] + movs r0, 0x4 + orrs r0, r1 + strh r0, [r2, 0x4] + bl sub_8049ED4 +_0806D796: + movs r3, 0xA9 + lsls r3, 1 + adds r0, r6, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _0806D7AE + ldr r0, _0806D7BC + ldr r2, [r0] + mov r0, r9 + adds r1, r7, 0 + bl sub_80522F4 +_0806D7AE: + adds r1, r6, 0 + adds r1, 0xA0 + ldr r0, _0806D7C0 + str r0, [r1] + b _0806D84A + .align 2, 0 +_0806D7B8: .4byte 0x0000270f +_0806D7BC: .4byte gUnknown_80F96A8 +_0806D7C0: .4byte 0x000003e7 +_0806D7C4: + ldr r0, _0806D824 + str r1, [r0] + ldr r1, _0806D828 + ldr r0, [r5, 0x4] + lsls r0, 2 + adds r0, r1 + ldr r4, [r0] + adds r2, r6, 0 + adds r2, 0xA0 + ldr r0, [r2] + ldr r1, [r5] + adds r0, r1 + str r0, [r2] + ldr r1, _0806D82C + cmp r0, r1 + ble _0806D7E6 + str r1, [r2] +_0806D7E6: + adds r0, r7, 0 + bl sub_8045888 + lsls r0, 24 + cmp r0, 0 + beq _0806D830 + ldr r0, [r5, 0x4] + cmp r0, 0xE + beq _0806D808 + ldr r0, [r5] + negs r0, r0 + movs r3, 0x1 + negs r3, r3 + adds r1, r7, 0 + movs r2, 0x1 + bl sub_803ED30 +_0806D808: + movs r1, 0xA9 + lsls r1, 1 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0806D84A + cmp r4, 0 + beq _0806D84A + mov r0, r9 + adds r1, r7, 0 + adds r2, r4, 0 + bl sub_80522F4 + b _0806D84A + .align 2, 0 +_0806D824: .4byte gUnknown_202DE30 +_0806D828: .4byte gUnknown_80F9764 +_0806D82C: .4byte 0x000003e7 +_0806D830: + movs r2, 0xA9 + lsls r2, 1 + adds r0, r6, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0806D84A + cmp r4, 0 + beq _0806D84A + mov r0, r9 + adds r1, r7, 0 + adds r2, r4, 0 + bl sub_80522F4 +_0806D84A: + ldr r0, [r5, 0x4] + cmp r0, 0xE + bne _0806D858 + movs r3, 0xE + ldrsh r0, [r6, r3] + cmp r0, 0x1 + bgt _0806D900 +_0806D858: + mov r0, r8 + cmp r0, 0 + bne _0806D900 + adds r0, r7, 0 + bl sub_8045888 + lsls r0, 24 + cmp r0, 0 + beq _0806D900 + mov r2, r9 + ldr r1, [r2, 0x4] + ldr r0, [r7, 0x4] + cmp r1, r0 + beq _0806D8E6 + mov r0, r9 + bl GetEntityType + cmp r0, 0x1 + bne _0806D8E6 + movs r4, 0 + ldrb r0, [r6, 0x7] + cmp r0, 0 + beq _0806D8B4 + ldr r0, _0806D8B0 + ldr r0, [r0] + ldrb r0, [r0, 0x2] + cmp r0, 0 + beq _0806D8B6 + adds r0, r7, 0 + bl sub_806A458 + lsls r0, 24 + cmp r0, 0 + bne _0806D8B6 + adds r0, r7, 0 + mov r1, r9 + bl CanSee + lsls r0, 24 + lsrs r0, 24 + negs r1, r0 + orrs r1, r0 + lsrs r4, r1, 31 + b _0806D8B6 + .align 2, 0 +_0806D8B0: .4byte gUnknown_203B46C +_0806D8B4: + movs r4, 0 +_0806D8B6: + adds r0, r6, 0 + adds r0, 0xE8 + ldrb r0, [r0] + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0806D8C8 + movs r4, 0 +_0806D8C8: + cmp r4, 0 + beq _0806D8E0 + ldr r4, [r7, 0x70] + adds r0, r7, 0x4 + mov r1, r9 + adds r1, 0x4 + bl CalculateFacingDir + movs r1, 0x7 + ands r0, r1 + adds r4, 0x46 + strb r0, [r4] +_0806D8E0: + adds r0, r7, 0 + bl TargetTileInFront +_0806D8E6: + ldr r0, [r7, 0x70] + adds r0, 0x46 + ldrb r2, [r0] + adds r0, r7, 0 + movs r1, 0x6 + bl sub_806CDD4 + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_80420E8 + movs r3, 0x1 + str r3, [sp, 0x54] +_0806D900: + movs r0, 0xE + ldrsh r4, [r6, r0] + ldr r1, [r5] + cmp r4, r1 + ble _0806D910 + ldrh r0, [r6, 0xE] + subs r0, r1 + b _0806D912 +_0806D910: + movs r0, 0 +_0806D912: + strh r0, [r6, 0xE] + adds r0, r6, 0 + adds r0, 0xC4 + ldrb r0, [r0] + cmp r0, 0x9 + bne _0806D93C + movs r1, 0xE + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _0806D958 + movs r0, 0x1 + strh r0, [r6, 0xE] + ldr r0, _0806D938 + ldr r2, [r0] + mov r0, r9 + adds r1, r7, 0 + bl sub_80522F4 + b _0806D958 + .align 2, 0 +_0806D938: .4byte gUnknown_8100548 +_0806D93C: + ldr r2, [sp, 0x4C] + cmp r2, 0x1 + bne _0806D958 + movs r3, 0xE + ldrsh r0, [r6, r3] + cmp r0, 0 + bne _0806D958 + strh r2, [r6, 0xE] + ldr r0, _0806D9C8 + ldr r2, [r0] + mov r0, r9 + adds r1, r7, 0 + bl sub_80522F4 +_0806D958: + movs r1, 0xE + ldrsh r0, [r6, r1] + subs r4, r0 + cmp r4, 0 + bge _0806D964 + movs r4, 0 +_0806D964: + ldr r2, [sp, 0x54] + cmp r2, 0 + bne _0806D970 + mov r3, r8 + cmp r3, 0 + beq _0806D978 +_0806D970: + movs r0, 0xA + movs r1, 0x18 + bl sub_803E708 +_0806D978: + movs r1, 0xE + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _0806D9D4 + ldr r2, [sp, 0x54] + cmp r2, 0 + beq _0806D98E + adds r0, r7, 0 + movs r1, 0x8 + bl sub_806CE68 +_0806D98E: + adds r0, r7, 0 + movs r1, 0x10 + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806D9B2 + cmp r4, 0 + ble _0806D9B2 + ldr r1, [r5] + ldr r0, _0806D9CC + cmp r1, r0 + beq _0806D9B2 + mov r0, r9 + adds r1, r7, 0 + adds r2, r4, 0 + bl sub_8071D4C +_0806D9B2: + mov r3, r8 + cmp r3, 0 + bne _0806D9BA + b _0806D608 +_0806D9BA: + ldrh r1, [r3, 0x4] + ldr r0, _0806D9D0 + ands r0, r1 + strh r0, [r3, 0x4] + bl sub_8049ED4 + b _0806D608 + .align 2, 0 +_0806D9C8: .4byte gUnknown_810056C +_0806D9CC: .4byte 0x0000270f +_0806D9D0: .4byte 0x0000fffb +_0806D9D4: + adds r0, r6, 0 + adds r0, 0xE4 + ldrb r0, [r0] + cmp r0, 0x2 + bne _0806D9E6 + mov r0, r9 + adds r1, r7, 0 + bl sub_807A7C8 +_0806D9E6: + mov r0, r8 + cmp r0, 0 + beq _0806DA18 + movs r0, 0x14 + movs r1, 0x18 + bl sub_803E708 + adds r1, r7, 0 + adds r1, 0x22 + movs r0, 0x2 + strb r0, [r1] + movs r0, 0xA + movs r1, 0x18 + bl sub_803E708 + mov r2, r8 + ldrh r1, [r2, 0x4] + ldr r0, _0806DA14 + ands r0, r1 + strh r0, [r2, 0x4] + bl sub_8049ED4 + b _0806DA2E + .align 2, 0 +_0806DA14: .4byte 0x0000fffb +_0806DA18: + ldr r3, [sp, 0x54] + cmp r3, 0 + beq _0806DA2E + adds r1, r7, 0 + adds r1, 0x22 + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x1E + movs r1, 0x18 + bl sub_803E708 +_0806DA2E: + movs r0, 0x1 + mov r8, r0 + mov r0, r9 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0806DA50 + mov r0, r9 + bl GetEntityType + cmp r0, 0x1 + bne _0806DA50 + cmp r9, r7 + beq _0806DA50 + movs r1, 0 + mov r8, r1 +_0806DA50: + movs r2, 0xA6 + lsls r2, 1 + adds r1, r6, r2 + movs r0, 0 + strb r0, [r1] + ldr r4, _0806DA88 + adds r0, r4, 0 + mov r1, r9 + movs r2, 0 + bl SetMessageArgument + adds r4, 0x50 + adds r0, r4, 0 + adds r1, r7, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, [r5, 0x4] + subs r0, 0x13 + cmp r0, 0x1 + bhi _0806DA9C + ldrb r0, [r6, 0x6] + cmp r0, 0 + beq _0806DA90 + ldr r0, _0806DA8C + ldr r2, [r0] + b _0806DAC2 + .align 2, 0 +_0806DA88: .4byte gAvailablePokemonNames +_0806DA8C: .4byte gUnknown_80F9E44 +_0806DA90: + ldr r0, _0806DA98 + ldr r1, [r0] + b _0806DB86 + .align 2, 0 +_0806DA98: .4byte gUnknown_80F9E44 +_0806DA9C: + ldrb r0, [r6, 0x6] + cmp r0, 0 + beq _0806DAD0 + adds r0, r6, 0 + adds r0, 0xA4 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0806DAB8 + ldr r0, _0806DAB4 + mov r3, r8 + lsls r1, r3, 2 + b _0806DB82 + .align 2, 0 +_0806DAB4: .4byte gUnknown_80F9DF0 +_0806DAB8: + ldr r0, _0806DACC + mov r2, r8 + lsls r1, r2, 2 + adds r1, r0 + ldr r2, [r1] +_0806DAC2: + mov r0, r9 + adds r1, r7, 0 + bl sub_80522F4 + b _0806DBA4 + .align 2, 0 +_0806DACC: .4byte gUnknown_80F9CC0 +_0806DAD0: + ldr r2, _0806DB04 + ldrb r1, [r6, 0xA] + movs r0, 0x64 + muls r0, r1 + ldr r3, _0806DB08 + adds r0, r3 + ldr r1, [r2] + adds r3, r1, r0 + ldrb r0, [r6, 0x7] + cmp r0, 0 + bne _0806DB00 + adds r0, r6, 0 + adds r0, 0x40 + ldrb r1, [r0] + adds r2, r0, 0 + cmp r1, 0x41 + bne _0806DB18 + ldr r0, _0806DB0C + ldr r0, [r0] + ldr r1, _0806DB10 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0806DB18 +_0806DB00: + ldr r0, _0806DB14 + b _0806DB7E + .align 2, 0 +_0806DB04: .4byte gRecruitedPokemonRef +_0806DB08: .4byte 0x00008df8 +_0806DB0C: .4byte gDungeonGlobalData +_0806DB10: .4byte 0x0000065c +_0806DB14: .4byte gUnknown_80F9CEC +_0806DB18: + ldrb r0, [r2] + cmp r0, 0x4A + beq _0806DB22 + cmp r0, 0x47 + bne _0806DB26 +_0806DB22: + movs r0, 0x1 + b _0806DB28 +_0806DB26: + movs r0, 0 +_0806DB28: + cmp r0, 0 + beq _0806DB38 + ldr r0, _0806DB34 + mov r3, r8 + lsls r1, r3, 2 + b _0806DB82 + .align 2, 0 +_0806DB34: .4byte gUnknown_80F9DAC +_0806DB38: + adds r0, r6, 0 + adds r0, 0xA4 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0806DB4C + ldr r0, _0806DB48 + b _0806DB7E + .align 2, 0 +_0806DB48: .4byte gUnknown_80F9DF0 +_0806DB4C: + movs r1, 0xA + ldrsh r0, [r3, r1] + bl sub_806A58C + lsls r0, 24 + cmp r0, 0 + beq _0806DB94 + ldr r0, _0806DB70 + ldr r0, [r0] + ldr r2, _0806DB74 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0806DB7C + ldr r0, _0806DB78 + mov r3, r8 + lsls r1, r3, 2 + b _0806DB82 + .align 2, 0 +_0806DB70: .4byte gDungeonGlobalData +_0806DB74: .4byte 0x0000065d +_0806DB78: .4byte gUnknown_80F9D8C +_0806DB7C: + ldr r0, _0806DB90 +_0806DB7E: + mov r2, r8 + lsls r1, r2, 2 +_0806DB82: + adds r1, r0 + ldr r1, [r1] +_0806DB86: + mov r0, r9 + bl sub_805239C + b _0806DBA4 + .align 2, 0 +_0806DB90: .4byte gUnknown_80F9D84 +_0806DB94: + ldr r0, _0806DC4C + mov r3, r8 + lsls r1, r3, 2 + adds r1, r0 + ldr r1, [r1] + mov r0, r9 + bl sub_805239C +_0806DBA4: + mov r1, r10 + ldrb r0, [r1] + subs r0, 0x3 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0806DBBC + adds r0, r6, 0 + adds r0, 0x9C + ldr r0, [r0] + bl sub_8076CB4 +_0806DBBC: + adds r1, r6, 0 + adds r1, 0x60 + ldrb r3, [r1] + movs r2, 0x1 + mov r8, r2 + mov r0, r8 + ands r0, r3 + adds r5, r1, 0 + cmp r0, 0 + beq _0806DC5C + movs r0, 0x8 + ands r0, r3 + cmp r0, 0 + bne _0806DC5C + movs r0, 0x2 + ands r0, r3 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0806DC5C + ldrb r0, [r5, 0x2] + cmp r0, 0xD2 + bne _0806DC5C + adds r0, r7, 0 + bl sub_8042148 + adds r0, r7, 0 + adds r0, 0x22 + strb r4, [r0] + ldrh r0, [r6, 0x10] + movs r2, 0 + strh r0, [r6, 0xE] + movs r3, 0xAC + lsls r3, 1 + adds r0, r6, r3 + strb r2, [r0] + movs r1, 0xA6 + lsls r1, 1 + adds r0, r6, r1 + mov r3, r8 + strb r3, [r0] + movs r0, 0x9E + lsls r0, 1 + adds r1, r6, r0 + movs r3, 0xA0 + lsls r3, 1 + adds r0, r6, r3 + ldr r0, [r0] + str r0, [r1] + ldrb r0, [r6, 0x7] + cmp r0, 0 + beq _0806DC36 + ldr r0, _0806DC50 + ldr r1, [r0] + ldr r3, _0806DC54 + adds r1, r3 + strb r2, [r1] + ldr r0, [r0] + ldr r1, _0806DC58 + adds r0, r1 + strb r2, [r0] +_0806DC36: + strb r2, [r5, 0x2] + strb r2, [r5, 0x1] + strb r2, [r5] + adds r0, r6, 0 + adds r0, 0xC8 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0806DC48 + b _0806DEC8 +_0806DC48: + b _0806DEE4 + .align 2, 0 +_0806DC4C: .4byte gUnknown_80F9D28 +_0806DC50: .4byte gDungeonGlobalData +_0806DC54: .4byte 0x00000679 +_0806DC58: .4byte 0x00000676 +_0806DC5C: + ldrb r0, [r6, 0x7] + cmp r0, 0 + bne _0806DC64 + b _0806DDFC +_0806DC64: + mov r10, r5 + ldrb r1, [r5] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0806DC72 + b _0806DDFC +_0806DC72: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0806DC7C + b _0806DDFC +_0806DC7C: + ldrb r0, [r5, 0x2] + cmp r0, 0xD8 + beq _0806DC84 + b _0806DDFC +_0806DC84: + movs r4, 0 +_0806DC86: + ldr r0, _0806DD80 + ldr r0, [r0] + lsls r1, r4, 2 + ldr r2, _0806DD84 + adds r0, r2 + adds r0, r1 + ldr r0, [r0] + mov r8, r0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0806DCDE + cmp r8, r7 + beq _0806DCDE + adds r0, r7, 0 + mov r1, r8 + bl CanSee + lsls r0, 24 + cmp r0, 0 + beq _0806DCDE + mov r3, r8 + movs r0, 0x4 + ldrsh r1, [r3, r0] + movs r2, 0x4 + ldrsh r0, [r7, r2] + subs r1, r0 + cmp r1, 0 + bge _0806DCC4 + negs r1, r1 +_0806DCC4: + cmp r1, 0x1 + bgt _0806DCDE + mov r3, r8 + movs r0, 0x6 + ldrsh r1, [r3, r0] + movs r2, 0x6 + ldrsh r0, [r7, r2] + subs r1, r0 + cmp r1, 0 + bge _0806DCDA + negs r1, r1 +_0806DCDA: + cmp r1, 0x1 + ble _0806DCE4 +_0806DCDE: + adds r4, 0x1 + cmp r4, 0x3 + ble _0806DC86 +_0806DCE4: + cmp r4, 0x4 + bne _0806DCEA + b _0806DDFC +_0806DCEA: + adds r0, r7, 0 + bl sub_8042148 + mov r3, r8 + ldr r4, [r3, 0x4] + ldr r1, _0806DD88 + mov r0, r8 + adds r2, r7, 0 + bl sub_8068FE0 + lsls r1, r4, 16 + asrs r1, 16 + asrs r4, 16 + adds r0, r7, 0 + adds r2, r4, 0 + movs r3, 0x1 + bl sub_80694C0 + adds r0, r7, 0 + movs r1, 0 + bl sub_804535C + adds r1, r7, 0 + adds r1, 0x22 + movs r0, 0 + strb r0, [r1] + ldrh r0, [r6, 0x10] + movs r4, 0 + strh r0, [r6, 0xE] + adds r0, r7, 0 + bl sub_8042A24 + movs r1, 0xAC + lsls r1, 1 + adds r0, r6, r1 + strb r4, [r0] + movs r2, 0xA6 + lsls r2, 1 + adds r1, r6, r2 + movs r0, 0x1 + strb r0, [r1] + movs r3, 0x9E + lsls r3, 1 + adds r1, r6, r3 + subs r2, 0xC + adds r0, r6, r2 + ldr r0, [r0] + str r0, [r1] + ldrb r0, [r6, 0x7] + cmp r0, 0 + beq _0806DD62 + ldr r0, _0806DD80 + ldr r1, [r0] + ldr r3, _0806DD8C + adds r1, r3 + strb r4, [r1] + ldr r0, [r0] + ldr r1, _0806DD90 + adds r0, r1 + strb r4, [r0] +_0806DD62: + mov r2, r10 + strb r4, [r2, 0x2] + strb r4, [r2, 0x1] + strb r4, [r2] + adds r0, r6, 0 + adds r0, 0xC8 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0806DD94 + mov r0, r9 + adds r1, r7, 0 + movs r2, 0x3 + bl sub_807A5D0 + b _0806DDA2 + .align 2, 0 +_0806DD80: .4byte gDungeonGlobalData +_0806DD84: .4byte 0x0001357c +_0806DD88: .4byte 0x00000221 +_0806DD8C: .4byte 0x00000679 +_0806DD90: .4byte 0x00000676 +_0806DD94: + cmp r0, 0x2 + bne _0806DDA2 + mov r0, r9 + adds r1, r7, 0 + movs r2, 0x2 + bl sub_807A5D0 +_0806DDA2: + adds r0, r7, 0 + bl sub_8078084 + adds r0, r6, 0 + movs r1, 0 + bl sub_806BFC0 + bl sub_800DBBC + adds r0, r7, 0 + bl sub_806A390 + adds r0, r7, 0 + bl sub_806CEBC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r7, 0 + bl sub_806CCB4 + adds r0, r7, 0 + bl sub_80418D4 + ldr r4, _0806DDF0 + adds r0, r4, 0 + adds r1, r7, 0 + movs r2, 0 + bl SetMessageArgument + adds r4, 0x50 + adds r0, r4, 0 + mov r1, r8 + movs r2, 0 + bl SetMessageArgument + ldr r0, _0806DDF4 + b _0806DF2E + .align 2, 0 +_0806DDF0: .4byte gAvailablePokemonNames +_0806DDF4: .4byte gUnknown_80FD484 +_0806DDF8: + mov r4, r8 + b _0806DE64 +_0806DDFC: + adds r0, r7, 0 + movs r1, 0x16 + bl HasIQSkill + lsls r0, 24 + cmp r0, 0 + bne _0806DE0C + b _0806DF48 +_0806DE0C: + movs r4, 0 + ldrb r1, [r5] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806DE28 + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _0806DE28 + ldrb r0, [r5, 0x2] + cmp r0, 0x3A + bne _0806DE28 + adds r4, r5, 0 +_0806DE28: + cmp r4, 0 + bne _0806DE68 + ldrb r0, [r6, 0x6] + cmp r0, 0 + bne _0806DE64 + movs r3, 0 + ldr r0, _0806DED4 + ldr r2, [r0] + mov r12, r2 + movs r0, 0x1 + mov r10, r0 +_0806DE3E: + lsls r0, r3, 2 + add r0, r12 + mov r8, r0 + ldrb r1, [r2] + mov r0, r10 + ands r0, r1 + cmp r0, 0 + beq _0806DE5C + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _0806DE5C + ldrb r0, [r2, 0x2] + cmp r0, 0x3A + beq _0806DDF8 +_0806DE5C: + adds r2, 0x4 + adds r3, 0x1 + cmp r3, 0x13 + ble _0806DE3E +_0806DE64: + cmp r4, 0 + beq _0806DF48 +_0806DE68: + adds r0, r7, 0 + bl sub_8042148 + adds r0, r4, 0 + movs r1, 0x46 + movs r2, 0x2 + bl sub_8045C28 + adds r1, r7, 0 + adds r1, 0x22 + movs r0, 0 + strb r0, [r1] + ldrh r0, [r6, 0x10] + movs r2, 0 + strh r0, [r6, 0xE] + movs r1, 0xAC + lsls r1, 1 + adds r0, r6, r1 + strb r2, [r0] + movs r3, 0xA6 + lsls r3, 1 + adds r1, r6, r3 + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x9E + lsls r0, 1 + adds r1, r6, r0 + subs r3, 0xC + adds r0, r6, r3 + ldr r0, [r0] + str r0, [r1] + ldrb r0, [r6, 0x7] + cmp r0, 0 + beq _0806DEBE + ldr r0, _0806DED8 + ldr r1, [r0] + ldr r3, _0806DEDC + adds r1, r3 + strb r2, [r1] + ldr r0, [r0] + ldr r1, _0806DEE0 + adds r0, r1 + strb r2, [r0] +_0806DEBE: + adds r0, r6, 0 + adds r0, 0xC8 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0806DEE4 +_0806DEC8: + mov r0, r9 + adds r1, r7, 0 + movs r2, 0x3 + bl sub_807A5D0 + b _0806DEF2 + .align 2, 0 +_0806DED4: .4byte gTeamInventory_203B460 +_0806DED8: .4byte gDungeonGlobalData +_0806DEDC: .4byte 0x00000679 +_0806DEE0: .4byte 0x00000676 +_0806DEE4: + cmp r0, 0x2 + bne _0806DEF2 + mov r0, r9 + adds r1, r7, 0 + movs r2, 0x2 + bl sub_807A5D0 +_0806DEF2: + adds r0, r7, 0 + bl sub_8078084 + adds r0, r6, 0 + movs r1, 0 + bl sub_806BFC0 + bl sub_800DBBC + adds r0, r7, 0 + bl sub_806A390 + adds r0, r7, 0 + bl sub_806CEBC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r7, 0 + bl sub_806CCB4 + adds r0, r7, 0 + bl sub_80418D4 + ldr r0, _0806DF40 + adds r1, r7, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _0806DF44 +_0806DF2E: + ldr r1, [r0] + mov r0, r9 + bl sub_805239C + adds r0, r7, 0 + bl sub_806F63C + bl _0806D608 + .align 2, 0 +_0806DF40: .4byte gUnknown_202DFE8 +_0806DF44: .4byte gUnknown_80FD46C +_0806DF48: + ldrb r4, [r6, 0x7] + cmp r4, 0 + bne _0806DF68 + ldrb r1, [r5] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806DF68 + adds r1, r7, 0x4 + adds r0, r7, 0 + adds r2, r5, 0 + bl sub_80464C8 + strb r4, [r5, 0x2] + strb r4, [r5, 0x1] + strb r4, [r5] +_0806DF68: + adds r0, r6, 0 + adds r0, 0xF7 + ldrb r0, [r0] + cmp r0, 0 + beq _0806DF7E + ldr r0, _0806E02C + ldr r0, [r0] + ldr r2, _0806E030 + adds r0, r2 + ldr r1, _0806E034 + strh r1, [r0] +_0806DF7E: + movs r3, 0 + mov r10, r3 + mov r0, r9 + bl GetEntityType + cmp r0, 0x1 + bne _0806E066 + mov r0, r9 + ldr r4, [r0, 0x70] + movs r1, 0x2 + ldrsh r0, [r6, r1] + ldrb r1, [r6, 0x9] + bl CalculateEXPGain + adds r5, r0, 0 + adds r0, r6, 0 + adds r0, 0xFB + ldrb r0, [r0] + cmp r0, 0 + beq _0806DFAE + cmp r0, 0x2 + bne _0806DFB4 + lsls r0, r5, 1 + adds r5, r0, r5 +_0806DFAE: + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0806DFB4: + cmp r5, 0 + bne _0806DFBA + movs r5, 0x1 +_0806DFBA: + ldrb r0, [r4, 0x7] + cmp r0, 0 + beq _0806DFC8 + movs r2, 0x2 + ldrsh r0, [r6, r2] + bl sub_80980B4 +_0806DFC8: + adds r0, r6, 0 + adds r0, 0xF4 + ldrb r0, [r0] + cmp r0, 0 + beq _0806DFDA + ldr r3, _0806E038 + adds r1, r4, r3 + movs r0, 0x1 + strb r0, [r1] +_0806DFDA: + ldr r0, [sp, 0x78] + cmp r0, 0x1 + bne _0806E066 + ldrb r0, [r4, 0x6] + cmp r0, 0 + bne _0806E040 + ldrb r0, [r6, 0x6] + cmp r0, 0 + beq _0806E066 + mov r0, r9 + mov r1, r9 + adds r2, r5, 0 + bl sub_8071D4C + movs r6, 0 +_0806DFF8: + ldr r0, _0806E02C + ldr r0, [r0] + lsls r1, r6, 2 + ldr r2, _0806E03C + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0806E020 + cmp r4, r9 + beq _0806E020 + mov r0, r9 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8071D4C +_0806E020: + adds r6, 0x1 + cmp r6, 0x3 + ble _0806DFF8 + movs r3, 0x1 + mov r10, r3 + b _0806E066 + .align 2, 0 +_0806E02C: .4byte gDungeonGlobalData +_0806E030: .4byte 0x0000066a +_0806E034: .4byte 0x000003e7 +_0806E038: .4byte 0x0000014b +_0806E03C: .4byte 0x0001357c +_0806E040: + ldr r5, _0806E0BC + ldr r0, [r5] + ldr r1, _0806E0C0 + adds r0, r1 + ldrb r0, [r0] + bl sub_809033C + lsls r0, 24 + cmp r0, 0 + beq _0806E066 + ldr r2, _0806E0C4 + adds r0, r4, r2 + add r3, sp, 0x78 + ldrb r3, [r3] + strb r3, [r0] + ldr r0, [r5] + add r1, sp, 0x78 + ldrb r1, [r1] + strb r1, [r0, 0xD] +_0806E066: + mov r0, r9 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0806E08A + mov r0, r9 + bl GetEntityType + cmp r0, 0x1 + bne _0806E08A + mov r2, r9 + ldr r0, [r2, 0x70] + ldrb r0, [r0, 0x7] + cmp r0, 0 + bne _0806E08A + movs r3, 0 + mov r10, r3 +_0806E08A: + mov r0, r10 + cmp r0, 0 + beq _0806E0E4 + add r0, sp, 0x4 + adds r1, r7, 0 + bl sub_8069D4C + mov r0, r9 + adds r1, r7, 0 + bl sub_806F660 + lsls r0, 24 + cmp r0, 0 + beq _0806E0D8 + mov r0, r9 + adds r1, r7, 0 + add r2, sp, 0x4 + bl sub_806FA5C + lsls r0, 24 + cmp r0, 0 + bne _0806E0CC + ldr r1, _0806E0C8 + adds r0, r7, 0 + b _0806E0DC + .align 2, 0 +_0806E0BC: .4byte gDungeonGlobalData +_0806E0C0: .4byte 0x00000644 +_0806E0C4: .4byte 0x00000149 +_0806E0C8: .4byte 0x000001f5 +_0806E0CC: + ldr r1, _0806E0D4 + movs r0, 0x1 + strb r0, [r1] + b _0806E0EE + .align 2, 0 +_0806E0D4: .4byte gUnknown_202F221 +_0806E0D8: + adds r0, r7, 0 + ldr r1, [sp, 0x50] +_0806E0DC: + mov r2, r9 + bl sub_8068FE0 + b _0806E0EE +_0806E0E4: + adds r0, r7, 0 + ldr r1, [sp, 0x50] + mov r2, r9 + bl sub_8068FE0 +_0806E0EE: + movs r0, 0x1 +_0806E0F0: + add sp, 0x58 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806D528 + + thumb_func_start sub_806E100 +sub_806E100: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + adds r6, r0, 0 + mov r8, r1 + str r2, [sp, 0x18] + lsls r3, 24 + lsrs r7, r3, 24 + movs r0, 0 + mov r9, r0 + movs r1, 0 + str r1, [sp, 0x20] + mov r2, r8 + ldr r2, [r2, 0x70] + str r2, [sp, 0x24] + ldr r3, [sp, 0x18] + ldr r3, [r3, 0x70] + mov r10, r3 + adds r0, r6, 0 + movs r1, 0x1 + bl sub_800A020 + mov r0, r9 + ldr r4, [sp, 0x48] + strb r0, [r4, 0xD] + strb r0, [r4, 0xE] + movs r1, 0 + str r1, [sp, 0x1C] + ldr r0, [sp, 0x18] + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0806E14E + movs r0, 0x1 + b _0806E61A +_0806E14E: + cmp r7, 0x1 + beq _0806E156 + cmp r7, 0x7 + bne _0806E15A +_0806E156: + movs r2, 0x1 + str r2, [sp, 0x20] +_0806E15A: + ldr r0, [sp, 0x18] + movs r1, 0x35 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E170 + cmp r7, 0 + beq _0806E170 + movs r3, 0x1 + str r3, [sp, 0x1C] +_0806E170: + movs r0, 0x2 + ldr r4, [sp, 0x48] + str r0, [r4, 0x8] + movs r5, 0 + add r0, sp, 0x10 + mov r9, r0 + b _0806E1F2 +_0806E17E: + mov r1, r10 + adds r1, 0x5C + ldr r2, [sp, 0x20] + cmp r2, 0 + beq _0806E1B4 + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, 0xE + bne _0806E1B4 + mov r0, r10 + adds r0, 0xF5 + ldrb r0, [r0] + cmp r0, 0 + bne _0806E1B4 + movs r4, 0 + ldr r0, _0806E1AC + ldr r0, [r0] + ldr r3, _0806E1B0 + adds r1, r0, r3 + movs r0, 0x1 + strb r0, [r1] + b _0806E1CA + .align 2, 0 +_0806E1AC: .4byte gDungeonGlobalData +_0806E1B0: .4byte 0x00000179 +_0806E1B4: + ldr r2, _0806E4E4 + adds r0, r1, r5 + ldrb r1, [r0] + lsls r1, 1 + lsls r0, r7, 3 + adds r0, r7 + lsls r0, 2 + adds r1, r0 + adds r1, r2 + movs r0, 0 + ldrsh r4, [r1, r0] +_0806E1CA: + cmp r4, 0x2 + beq _0806E1DC + lsls r0, r4, 2 + add r0, sp + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C +_0806E1DC: + lsls r0, r5, 2 + add r0, r9 + str r4, [r0] + ldr r0, _0806E4E8 + ldr r0, [r0] + movs r1, 0x9E + lsls r1, 1 + adds r0, r1 + adds r0, r5 + strb r4, [r0] + adds r5, 0x1 +_0806E1F2: + cmp r5, 0x1 + bgt _0806E20E + mov r1, sp + ldr r0, _0806E4EC + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r0] + str r0, [r1] + adds r0, r6, 0 + bl sub_800A2A0 + lsls r0, 24 + cmp r0, 0 + beq _0806E17E +_0806E20E: + ldr r2, _0806E4F0 + mov r1, r9 + ldr r0, [r1, 0x4] + lsls r0, 2 + ldr r1, [sp, 0x10] + lsls r1, 4 + adds r0, r1 + adds r0, r2 + ldr r0, [r0] + ldr r2, [sp, 0x48] + str r0, [r2, 0x8] + movs r3, 0x1 + mov r9, r3 + cmp r0, 0x3 + beq _0806E240 + movs r4, 0 + mov r9, r4 + ldr r0, [sp, 0x1C] + cmp r0, 0 + beq _0806E240 + ldr r0, _0806E4F4 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r6] + str r1, [r6, 0x4] +_0806E240: + cmp r7, 0x2 + beq _0806E248 + cmp r7, 0x6 + bne _0806E26C +_0806E248: + ldr r0, [sp, 0x18] + movs r1, 0x2 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E26C + ldr r0, _0806E4E8 + ldr r0, [r0] + ldr r2, _0806E4F8 + adds r1, r0, r2 + movs r0, 0x1 + strb r0, [r1] + ldr r2, _0806E4FC + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C +_0806E26C: + cmp r7, 0x2 + bne _0806E2A0 + ldr r0, [sp, 0x18] + bl GetFlashFireStatus + lsls r0, 24 + cmp r0, 0 + beq _0806E2A0 + ldr r0, _0806E4E8 + ldr r0, [r0] + movs r3, 0xB7 + lsls r3, 1 + adds r0, r3 + movs r4, 0 + movs r5, 0x1 + strb r5, [r0] + adds r0, r6, 0 + movs r1, 0 + bl sub_800A020 + ldr r0, [sp, 0x48] + str r4, [r0, 0x8] + strb r4, [r0, 0xD] + strb r5, [r0, 0xE] + movs r1, 0 + mov r9, r1 +_0806E2A0: + cmp r7, 0x9 + bne _0806E2D2 + ldr r0, [sp, 0x18] + movs r1, 0x37 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E2D2 + ldr r0, _0806E4E8 + ldr r0, [r0] + ldr r2, _0806E500 + adds r0, r2 + movs r4, 0 + movs r5, 0x1 + strb r5, [r0] + adds r0, r6, 0 + movs r1, 0 + bl sub_800A020 + ldr r3, [sp, 0x48] + str r4, [r3, 0x8] + strb r4, [r3, 0xD] + strb r5, [r3, 0xE] + mov r9, r4 +_0806E2D2: + cmp r7, 0x3 + bne _0806E340 + mov r0, r8 + movs r1, 0x10 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E340 + movs r4, 0 + ldr r0, [sp, 0x24] + movs r2, 0x10 + ldrsh r1, [r0, r2] + cmp r1, 0 + bge _0806E2F2 + adds r1, 0x3 +_0806E2F2: + asrs r1, 2 + ldr r3, [sp, 0x24] + movs r2, 0xE + ldrsh r0, [r3, r2] + cmp r1, r0 + blt _0806E300 + movs r4, 0x1 +_0806E300: + ldr r0, [sp, 0x24] + movs r1, 0x80 + adds r2, r4, 0 + bl SetVisualFlags + lsls r0, 24 + lsrs r5, r0, 24 + cmp r4, 0 + beq _0806E32A + ldr r0, _0806E4E8 + ldr r0, [r0] + movs r3, 0xB8 + lsls r3, 1 + adds r0, r3 + movs r1, 0x1 + strb r1, [r0] + ldr r2, _0806E504 + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C +_0806E32A: + cmp r5, 0 + beq _0806E340 + mov r0, r8 + bl sub_80428EC + ldr r0, _0806E508 + ldr r2, [r0] + mov r0, r8 + ldr r1, [sp, 0x18] + bl sub_80522F4 +_0806E340: + cmp r7, 0x4 + bne _0806E3AC + mov r0, r8 + movs r1, 0x1A + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E3AC + movs r4, 0 + ldr r0, [sp, 0x24] + movs r2, 0x10 + ldrsh r1, [r0, r2] + cmp r1, 0 + bge _0806E360 + adds r1, 0x3 +_0806E360: + asrs r1, 2 + ldr r3, [sp, 0x24] + movs r2, 0xE + ldrsh r0, [r3, r2] + cmp r1, r0 + blt _0806E36E + movs r4, 0x1 +_0806E36E: + ldr r0, [sp, 0x24] + movs r1, 0x2 + adds r2, r4, 0 + bl SetVisualFlags + lsls r0, 24 + lsrs r5, r0, 24 + cmp r4, 0 + beq _0806E396 + ldr r0, _0806E4E8 + ldr r0, [r0] + ldr r3, _0806E50C + adds r1, r0, r3 + movs r0, 0x1 + strb r0, [r1] + ldr r2, _0806E504 + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C +_0806E396: + cmp r5, 0 + beq _0806E3AC + mov r0, r8 + bl sub_80428D8 + ldr r0, _0806E510 + ldr r2, [r0] + mov r0, r8 + ldr r1, [sp, 0x18] + bl sub_80522F4 +_0806E3AC: + cmp r7, 0xC + bne _0806E41A + mov r0, r8 + movs r1, 0x43 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E41A + movs r4, 0 + ldr r0, [sp, 0x24] + movs r2, 0x10 + ldrsh r1, [r0, r2] + cmp r1, 0 + bge _0806E3CC + adds r1, 0x3 +_0806E3CC: + asrs r1, 2 + ldr r3, [sp, 0x24] + movs r2, 0xE + ldrsh r0, [r3, r2] + cmp r1, r0 + blt _0806E3DA + movs r4, 0x1 +_0806E3DA: + ldr r0, [sp, 0x24] + movs r1, 0x10 + adds r2, r4, 0 + bl SetVisualFlags + lsls r0, 24 + lsrs r5, r0, 24 + cmp r4, 0 + beq _0806E404 + ldr r0, _0806E4E8 + ldr r0, [r0] + movs r3, 0xB9 + lsls r3, 1 + adds r1, r0, r3 + movs r0, 0x1 + strb r0, [r1] + ldr r2, _0806E504 + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C +_0806E404: + cmp r5, 0 + beq _0806E41A + mov r0, r8 + bl sub_8042978 + ldr r0, _0806E514 + ldr r2, [r0] + mov r0, r8 + ldr r1, [sp, 0x18] + bl sub_80522F4 +_0806E41A: + cmp r7, 0x2 + bne _0806E486 + mov r0, r8 + movs r1, 0x46 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E486 + movs r4, 0 + ldr r0, [sp, 0x24] + movs r2, 0x10 + ldrsh r1, [r0, r2] + cmp r1, 0 + bge _0806E43A + adds r1, 0x3 +_0806E43A: + asrs r1, 2 + ldr r3, [sp, 0x24] + movs r2, 0xE + ldrsh r0, [r3, r2] + cmp r1, r0 + blt _0806E448 + movs r4, 0x1 +_0806E448: + ldr r0, [sp, 0x24] + movs r1, 0x20 + adds r2, r4, 0 + bl SetVisualFlags + lsls r0, 24 + lsrs r5, r0, 24 + cmp r4, 0 + beq _0806E470 + ldr r0, _0806E4E8 + ldr r0, [r0] + ldr r3, _0806E518 + adds r1, r0, r3 + movs r0, 0x1 + strb r0, [r1] + ldr r2, _0806E504 + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C +_0806E470: + cmp r5, 0 + beq _0806E486 + mov r0, r8 + bl sub_804298C + ldr r0, _0806E51C + ldr r2, [r0] + mov r0, r8 + ldr r1, [sp, 0x18] + bl sub_80522F4 +_0806E486: + adds r0, r6, 0 + bl sub_800A2A0 + lsls r0, 24 + cmp r0, 0 + bne _0806E4B8 + mov r0, r8 + adds r1, r7, 0 + bl HasType + lsls r0, 24 + cmp r0, 0 + beq _0806E4B8 + ldr r0, _0806E4E8 + ldr r0, [r0] + movs r4, 0xBA + lsls r4, 1 + adds r0, r4 + movs r1, 0x1 + strb r1, [r0] + ldr r2, _0806E520 + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C +_0806E4B8: + mov r0, r8 + bl GetWeather + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bne _0806E53E + cmp r7, 0x2 + bne _0806E524 + ldr r0, _0806E4E8 + ldr r0, [r0] + movs r1, 0xB6 + lsls r1, 1 + adds r0, r1 + strb r4, [r0] + ldr r2, _0806E520 + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C + b _0806E53E + .align 2, 0 +_0806E4E4: .4byte gTypeEffectivenessChart +_0806E4E8: .4byte gDungeonGlobalData +_0806E4EC: .4byte gUnknown_8106F54 +_0806E4F0: .4byte gUnknown_80F54B4 +_0806E4F4: .4byte gUnknown_8106EFC +_0806E4F8: .4byte 0x0000016d +_0806E4FC: .4byte gUnknown_8106F1C +_0806E500: .4byte 0x0000016f +_0806E504: .4byte gUnknown_8106F0C +_0806E508: .4byte gUnknown_80FEDA8 +_0806E50C: .4byte 0x00000171 +_0806E510: .4byte gUnknown_80FED88 +_0806E514: .4byte gUnknown_80FEDC8 +_0806E518: .4byte 0x00000173 +_0806E51C: .4byte gUnknown_80FEDE8 +_0806E520: .4byte gUnknown_8106F14 +_0806E524: + cmp r7, 0x3 + bne _0806E53E + ldr r0, _0806E560 + ldr r0, [r0] + movs r2, 0xB6 + lsls r2, 1 + adds r0, r2 + strb r4, [r0] + ldr r2, _0806E564 + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C +_0806E53E: + cmp r4, 0x4 + bne _0806E586 + cmp r7, 0x2 + bne _0806E56C + ldr r0, _0806E560 + ldr r0, [r0] + ldr r3, _0806E568 + adds r1, r0, r3 + movs r0, 0x1 + strb r0, [r1] + ldr r2, _0806E564 + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C + b _0806E586 + .align 2, 0 +_0806E560: .4byte gDungeonGlobalData +_0806E564: .4byte gUnknown_8106F1C +_0806E568: .4byte 0x0000016b +_0806E56C: + cmp r7, 0x3 + bne _0806E586 + ldr r0, _0806E62C + ldr r0, [r0] + ldr r2, _0806E630 + adds r1, r0, r2 + movs r0, 0x1 + strb r0, [r1] + ldr r2, _0806E634 + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C +_0806E586: + cmp r4, 0x3 + bne _0806E5A6 + cmp r7, 0x1 + beq _0806E5A6 + ldr r2, _0806E638 + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C + ldr r0, _0806E62C + ldr r0, [r0] + movs r3, 0xB5 + lsls r3, 1 + adds r1, r0, r3 + movs r0, 0x1 + strb r0, [r1] +_0806E5A6: + ldr r0, _0806E62C + ldr r1, [r0] + ldr r2, _0806E63C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0806E5B8 + cmp r4, 0x6 + bne _0806E5CE +_0806E5B8: + cmp r7, 0x5 + bne _0806E5CE + ldr r3, _0806E640 + adds r1, r3 + movs r0, 0x1 + strb r0, [r1] + ldr r2, _0806E644 + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C +_0806E5CE: + ldr r0, _0806E62C + ldr r1, [r0] + ldr r4, _0806E648 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _0806E5F4 + cmp r7, 0x2 + bne _0806E5F4 + movs r0, 0xBB + lsls r0, 1 + adds r1, r0 + movs r0, 0x1 + strb r0, [r1] + ldr r2, _0806E644 + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C +_0806E5F4: + cmp r7, 0x5 + bne _0806E618 + ldr r0, [sp, 0x24] + adds r0, 0xC0 + ldrb r0, [r0] + cmp r0, 0xB + bne _0806E618 + ldr r0, _0806E62C + ldr r0, [r0] + ldr r2, _0806E64C + adds r1, r0, r2 + movs r0, 0x1 + strb r0, [r1] + ldr r2, _0806E650 + adds r0, r6, 0 + adds r1, r6, 0 + bl sub_800A34C +_0806E618: + mov r0, r9 +_0806E61A: + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0806E62C: .4byte gDungeonGlobalData +_0806E630: .4byte 0x0000016b +_0806E634: .4byte gUnknown_8106F14 +_0806E638: .4byte gUnknown_8106F64 +_0806E63C: .4byte 0x0000e277 +_0806E640: .4byte 0x00000175 +_0806E644: .4byte gUnknown_8106F1C +_0806E648: .4byte 0x0000e278 +_0806E64C: .4byte 0x00000177 +_0806E650: .4byte gUnknown_8106F0C + thumb_func_end sub_806E100 + + thumb_func_start WeightWeakTypePicker +WeightWeakTypePicker: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + mov r9, r0 + str r1, [sp, 0x14] + lsls r2, 24 + lsrs r4, r2, 24 + movs r5, 0x1 + movs r0, 0 + str r0, [sp, 0x10] + adds r0, r1, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0806E6DC + cmp r4, 0x1 + beq _0806E682 + cmp r4, 0x7 + bne _0806E686 +_0806E682: + movs r1, 0x1 + str r1, [sp, 0x10] +_0806E686: + mov r2, r9 + ldr r2, [r2, 0x70] + mov r8, r2 + ldr r3, [sp, 0x14] + ldr r3, [r3, 0x70] + mov r10, r3 + cmp r4, 0x2 + bne _0806E6A2 + ldr r0, [sp, 0x14] + bl GetFlashFireStatus + lsls r0, 24 + cmp r0, 0 + bne _0806E6C6 +_0806E6A2: + cmp r4, 0x5 + bne _0806E6B4 + ldr r0, [sp, 0x14] + movs r1, 0x23 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + bne _0806E6C6 +_0806E6B4: + cmp r4, 0x3 + bne _0806E6CA + ldr r0, [sp, 0x14] + movs r1, 0x24 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E6CA +_0806E6C6: + movs r0, 0 + b _0806E894 +_0806E6CA: + cmp r4, 0x9 + bne _0806E6E0 + ldr r0, [sp, 0x14] + movs r1, 0x37 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E6E0 +_0806E6DC: + movs r0, 0x1 + b _0806E894 +_0806E6E0: + mov r6, r10 + adds r6, 0x5C + str r6, [sp, 0x18] + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + mov r12, r0 + adds r2, r6, 0 +_0806E6F0: + mov r0, sp + ldr r1, _0806E724 + ldm r1!, {r3,r6,r7} + stm r0!, {r3,r6,r7} + ldr r1, [r1] + str r1, [r0] + ldr r7, [sp, 0x10] + cmp r7, 0 + beq _0806E730 + ldrb r0, [r2] + cmp r0, 0xE + bne _0806E730 + mov r0, r10 + adds r0, 0xF5 + ldrb r0, [r0] + cmp r0, 0 + bne _0806E730 + movs r3, 0 + ldr r0, _0806E728 + ldr r0, [r0] + ldr r6, _0806E72C + adds r1, r0, r6 + movs r0, 0x1 + strb r0, [r1] + b _0806E73E + .align 2, 0 +_0806E724: .4byte gTypeEffectivenessMultipliers +_0806E728: .4byte gDungeonGlobalData +_0806E72C: .4byte 0x00000179 +_0806E730: + ldrb r0, [r2] + lsls r0, 1 + add r0, r12 + ldr r7, _0806E854 + adds r0, r7 + movs r1, 0 + ldrsh r3, [r0, r1] +_0806E73E: + cmp r5, 0 + beq _0806E75E + lsls r0, r3, 2 + add r0, sp + ldr r0, [r0] + muls r5, r0 + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 + cmp r5, 0 + beq _0806E84E + adds r2, 0x1 + ldr r0, [sp, 0x18] + adds r0, 0x1 + cmp r2, r0 + ble _0806E6F0 +_0806E75E: + cmp r4, 0x2 + beq _0806E766 + cmp r4, 0x6 + bne _0806E774 +_0806E766: + ldr r0, [sp, 0x14] + movs r1, 0x2 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + bne _0806E84E +_0806E774: + cmp r4, 0x3 + bne _0806E7A0 + mov r0, r9 + movs r1, 0x10 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E7A0 + mov r2, r8 + movs r3, 0x10 + ldrsh r1, [r2, r3] + cmp r1, 0 + bge _0806E792 + adds r1, 0x3 +_0806E792: + asrs r1, 2 + mov r6, r8 + movs r7, 0xE + ldrsh r0, [r6, r7] + cmp r1, r0 + blt _0806E7A0 + lsls r5, 1 +_0806E7A0: + cmp r4, 0x4 + bne _0806E7CC + mov r0, r9 + movs r1, 0x1A + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E7CC + mov r0, r8 + movs r2, 0x10 + ldrsh r1, [r0, r2] + cmp r1, 0 + bge _0806E7BE + adds r1, 0x3 +_0806E7BE: + asrs r1, 2 + mov r3, r8 + movs r6, 0xE + ldrsh r0, [r3, r6] + cmp r1, r0 + blt _0806E7CC + lsls r5, 1 +_0806E7CC: + cmp r4, 0xC + bne _0806E7F8 + mov r0, r9 + movs r1, 0x43 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E7F8 + mov r7, r8 + movs r0, 0x10 + ldrsh r1, [r7, r0] + cmp r1, 0 + bge _0806E7EA + adds r1, 0x3 +_0806E7EA: + asrs r1, 2 + mov r2, r8 + movs r3, 0xE + ldrsh r0, [r2, r3] + cmp r1, r0 + blt _0806E7F8 + lsls r5, 1 +_0806E7F8: + cmp r4, 0x2 + bne _0806E824 + mov r0, r9 + movs r1, 0x46 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E824 + mov r6, r8 + movs r7, 0x10 + ldrsh r1, [r6, r7] + cmp r1, 0 + bge _0806E816 + adds r1, 0x3 +_0806E816: + asrs r1, 2 + mov r2, r8 + movs r3, 0xE + ldrsh r0, [r2, r3] + cmp r1, r0 + blt _0806E824 + lsls r5, 1 +_0806E824: + cmp r5, 0 + beq _0806E84E + mov r0, r9 + adds r1, r4, 0 + bl HasType + lsls r0, 24 + cmp r0, 0 + beq _0806E838 + lsls r5, 1 +_0806E838: + mov r0, r9 + bl GetWeather + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806E85A + cmp r4, 0x2 + beq _0806E858 + cmp r4, 0x3 + bne _0806E85A +_0806E84E: + movs r0, 0x2 + b _0806E894 + .align 2, 0 +_0806E854: .4byte gTypeEffectivenessChart +_0806E858: + lsls r5, 1 +_0806E85A: + ldr r0, _0806E8A4 + ldr r1, [r0] + ldr r6, _0806E8A8 + adds r1, r6 + ldrb r1, [r1] + cmp r1, 0 + beq _0806E86C + cmp r4, 0x5 + beq _0806E84E +_0806E86C: + ldr r0, [r0] + ldr r7, _0806E8AC + adds r0, r7 + ldrb r0, [r0] + cmp r0, 0 + beq _0806E87C + cmp r4, 0x2 + beq _0806E84E +_0806E87C: + cmp r4, 0x5 + bne _0806E88C + mov r0, r8 + adds r0, 0xC0 + ldrb r0, [r0] + cmp r0, 0xB + bne _0806E88C + lsls r5, 1 +_0806E88C: + cmp r5, 0x2 + ble _0806E892 + movs r5, 0x3 +_0806E892: + adds r0, r5, 0x2 +_0806E894: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0806E8A4: .4byte gDungeonGlobalData +_0806E8A8: .4byte 0x0000e277 +_0806E8AC: .4byte 0x0000e278 + thumb_func_end WeightWeakTypePicker + + thumb_func_start sub_806E8B0 +sub_806E8B0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r6, r0, 0 + mov r9, r1 + adds r0, r2, 0 + str r3, [sp] + lsls r0, 24 + lsrs r0, 24 + movs r7, 0x1 + movs r1, 0x1 + mov r8, r1 + movs r2, 0x1 + str r2, [sp, 0x4] + str r1, [sp, 0x8] + bl sub_8092354 + movs r2, 0 + mov r10, r2 + lsls r0, 24 + cmp r0, 0 + bne _0806E8E6 + movs r0, 0x1 + mov r10, r0 +_0806E8E6: + adds r0, r6, 0 + movs r1, 0x11 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E92C + ldr r5, [r6, 0x70] + adds r0, r6, 0 + bl HasNegativeStatus + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0x1 + adds r2, r4, 0 + bl SetVisualFlags + lsls r0, 24 + lsrs r0, 24 + cmp r4, 0 + beq _0806E916 + movs r7, 0x2 +_0806E916: + cmp r0, 0 + beq _0806E92C + adds r0, r6, 0 + bl sub_80428B0 + ldr r0, _0806EADC + ldr r2, [r0] + adds r0, r6, 0 + mov r1, r9 + bl sub_80522F4 +_0806E92C: + adds r0, r6, 0 + movs r1, 0x22 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + bne _0806E948 + adds r0, r6, 0 + movs r1, 0x4B + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E98E +_0806E948: + ldr r2, [r6, 0x70] + movs r4, 0 + ldr r0, [sp, 0x30] + cmp r0, 0x20 + bgt _0806E95A + mov r1, r10 + cmp r1, 0 + bne _0806E95A + movs r4, 0x1 +_0806E95A: + movs r1, 0x80 + lsls r1, 1 + adds r0, r2, 0 + adds r2, r4, 0 + bl SetVisualFlags + lsls r0, 24 + lsrs r1, r0, 24 + cmp r4, 0 + beq _0806E978 + lsls r0, r7, 1 + adds r7, r0, r7 + mov r2, r8 + lsls r2, 1 + mov r8, r2 +_0806E978: + cmp r1, 0 + beq _0806E98E + adds r0, r6, 0 + bl sub_80428C4 + ldr r0, _0806EAE0 + ldr r2, [r0] + adds r0, r6, 0 + mov r1, r9 + bl sub_80522F4 +_0806E98E: + adds r0, r6, 0 + movs r1, 0x30 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E9AC + mov r0, r10 + cmp r0, 0 + bne _0806E9AC + lsls r0, r7, 1 + adds r7, r0, r7 + mov r1, r8 + lsls r1, 1 + mov r8, r1 +_0806E9AC: + ldr r0, [r6, 0x70] + ldrb r0, [r0, 0x6] + movs r4, 0x1 + cmp r0, 0 + beq _0806E9B8 + movs r4, 0 +_0806E9B8: + adds r0, r6, 0 + movs r1, 0x38 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E9EA + mov r2, r10 + cmp r2, 0x1 + bne _0806E9EA + ldr r0, _0806EAE4 + ldr r0, [r0] + ldr r1, _0806EAE8 + adds r0, r1 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _0806E9EA + lsls r0, r7, 4 + subs r7, r0, r7 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 1 + mov r8, r0 +_0806E9EA: + adds r0, r6, 0 + movs r1, 0x3F + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806EA1C + mov r0, r10 + cmp r0, 0x1 + bne _0806EA1C + ldr r0, _0806EAE4 + ldr r0, [r0] + ldr r1, _0806EAEC + adds r0, r1 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _0806EA1C + lsls r0, r7, 4 + subs r7, r0, r7 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 1 + mov r8, r0 +_0806EA1C: + mov r0, r9 + movs r1, 0x6 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806EA38 + mov r0, r10 + cmp r0, 0 + bne _0806EA38 + lsls r7, 2 + mov r1, r8 + lsls r0, r1, 2 + add r8, r0 +_0806EA38: + mov r0, r9 + movs r1, 0x34 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806EA90 + mov r2, r10 + cmp r2, 0 + bne _0806EA90 + mov r0, r9 + ldr r5, [r0, 0x70] + bl HasNegativeStatus + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0x8 + adds r2, r4, 0 + bl SetVisualFlags + lsls r0, 24 + lsrs r1, r0, 24 + cmp r4, 0 + beq _0806EA7A + ldr r2, [sp, 0x4] + lsls r0, r2, 1 + adds r2, r0, r2 + str r2, [sp, 0x4] + ldr r0, [sp, 0x8] + lsls r0, 1 + str r0, [sp, 0x8] +_0806EA7A: + cmp r1, 0 + beq _0806EA90 + mov r0, r9 + bl sub_8042940 + ldr r0, _0806EAF0 + ldr r2, [r0] + adds r0, r6, 0 + mov r1, r9 + bl sub_80522F4 +_0806EA90: + ldr r1, [sp] + ldr r0, [r1] + muls r0, r7 + str r0, [r1] + ldr r2, [sp, 0x2C] + ldr r0, [r2] + ldr r1, [sp, 0x4] + muls r0, r1 + str r0, [r2] + mov r2, r8 + cmp r2, 0x1 + beq _0806EAB6 + ldr r1, [sp] + ldr r0, [r1] + mov r1, r8 + bl __divsi3 + ldr r2, [sp] + str r0, [r2] +_0806EAB6: + ldr r0, [sp, 0x8] + cmp r0, 0x1 + beq _0806EACA + ldr r1, [sp, 0x2C] + ldr r0, [r1] + ldr r1, [sp, 0x8] + bl __divsi3 + ldr r2, [sp, 0x2C] + str r0, [r2] +_0806EACA: + 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 +_0806EADC: .4byte gUnknown_80FEE04 +_0806EAE0: .4byte gUnknown_80FEE2C +_0806EAE4: .4byte gDungeonGlobalData +_0806EAE8: .4byte 0x000037fa +_0806EAEC: .4byte 0x000037f8 +_0806EAF0: .4byte gUnknown_80FEE54 + thumb_func_end sub_806E8B0 + + thumb_func_start sub_806EAF4 +sub_806EAF4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8C + str r0, [sp, 0x70] + mov r9, r1 + adds r7, r3, 0 + ldr r0, [sp, 0xB8] + ldr r1, [sp, 0xBC] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x74] + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x78] + ldr r0, [sp, 0x70] + ldr r0, [r0, 0x70] + mov r10, r0 + mov r1, r9 + ldr r1, [r1, 0x70] + str r1, [sp, 0x7C] + adds r0, r2, 0 + bl sub_8092354 + movs r2, 0 + str r2, [sp, 0x80] + lsls r0, 24 + cmp r0, 0 + bne _0806EB3A + movs r3, 0x1 + str r3, [sp, 0x80] +_0806EB3A: + bl sub_806F500 + mov r6, r10 + ldrb r0, [r6, 0x7] + cmp r0, 0 + bne _0806EB72 + movs r0, 0x9E + lsls r0, 1 + add r0, r10 + ldr r0, [r0] + bl GetBellyRoundedUp + adds r1, r0, 0 + cmp r1, 0 + bne _0806EB72 + movs r0, 0x1 + ldr r2, [sp, 0xB0] + str r0, [r2] + str r1, [r2, 0x4] + movs r0, 0x2 + str r0, [r2, 0x8] + add r3, sp, 0x74 + ldrb r3, [r3] + strb r3, [r2, 0xC] + strb r1, [r2, 0xD] + strb r1, [r2, 0xE] + strb r1, [r2, 0xF] + b _0806F294 +_0806EB72: + ldr r0, _0806EBA4 + cmp r4, r0 + bne _0806EBA8 + mov r0, r9 + movs r1, 0x35 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806EBA8 + movs r0, 0x1 + ldr r6, [sp, 0xB0] + str r0, [r6] + movs r1, 0 + str r1, [r6, 0x4] + movs r0, 0x2 + str r0, [r6, 0x8] + add r0, sp, 0x74 + ldrb r0, [r0] + strb r0, [r6, 0xC] + strb r1, [r6, 0xD] + strb r1, [r6, 0xE] + strb r1, [r6, 0xF] + b _0806F294 + .align 2, 0 +_0806EBA4: .4byte 0x00000163 +_0806EBA8: + add r1, sp, 0x74 + ldrb r2, [r1] + ldr r1, [sp, 0xB0] + strb r2, [r1, 0xC] + ldr r1, _0806EDA4 + ldr r0, [r1] + movs r2, 0x9A + lsls r2, 1 + adds r0, r2 + add r3, sp, 0x74 + ldrb r3, [r3] + strb r3, [r0] + ldr r2, [r1] + movs r6, 0x9C + lsls r6, 1 + adds r0, r2, r6 + ldr r1, [sp, 0x80] + str r1, [r0] + lsls r1, 1 + mov r0, r10 + adds r0, 0x1C + adds r0, r1 + movs r3, 0 + ldrsh r4, [r0, r3] + mov r8, r1 + ldr r6, [sp, 0x78] + cmp r6, 0 + beq _0806EBF8 + ldr r0, [sp, 0x74] + cmp r0, 0x2 + bne _0806EBF8 + mov r1, r10 + movs r3, 0x28 + ldrsh r0, [r1, r3] + adds r4, r0 + ldrh r1, [r1, 0x28] + movs r6, 0xA2 + lsls r6, 1 + adds r0, r2, r6 + strh r1, [r0] +_0806EBF8: + mov r0, r10 + movs r2, 0x4 + ldrsh r1, [r0, r2] + ldr r0, _0806EDA8 + cmp r1, r0 + bne _0806EC06 + adds r4, 0x2 +_0806EC06: + movs r0, 0xD1 + lsls r0, 1 + cmp r1, r0 + bne _0806EC10 + subs r4, 0x2 +_0806EC10: + ldr r0, _0806EDAC + cmp r1, r0 + bne _0806EC18 + subs r4, 0x2 +_0806EC18: + cmp r4, 0 + bge _0806EC1E + movs r4, 0 +_0806EC1E: + cmp r4, 0x14 + ble _0806EC24 + movs r4, 0x14 +_0806EC24: + ldr r6, _0806EDA4 + ldr r0, [r6] + movs r3, 0x9F + lsls r3, 1 + adds r0, r3 + strb r4, [r0] + ldr r1, [r6] + mov r5, r10 + adds r5, 0x14 + ldr r0, [sp, 0x80] + adds r2, r5, r0 + ldrb r0, [r2] + adds r0, r7 + adds r3, 0x2 + adds r1, r3 + strh r0, [r1] + ldrb r0, [r2] + adds r0, r7 + lsls r0, 8 + ldr r2, _0806EDB0 + lsls r1, r4, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8009DA4 + adds r2, r0, 0 + ldr r0, [sp, 0x80] + lsls r4, r0, 2 + mov r0, r10 + adds r0, 0x2C + adds r0, r4 + ldr r1, [r0] + adds r0, r2, 0 + bl sub_8009DA4 + adds r2, r0, 0 + str r5, [sp, 0x88] + cmp r2, 0 + bge _0806EC74 + adds r0, 0xFF +_0806EC74: + asrs r0, 8 + str r0, [sp, 0x8] + ldr r0, [sp, 0x7C] + adds r0, 0x20 + add r0, r8 + movs r1, 0 + ldrsh r3, [r0, r1] + ldr r2, [sp, 0x80] + cmp r2, 0 + bne _0806ECA0 + ldr r0, [sp, 0x7C] + adds r0, 0xC0 + ldrb r0, [r0] + cmp r0, 0x6 + bne _0806ECA0 + ldr r0, [r6] + movs r6, 0xBD + lsls r6, 1 + adds r1, r0, r6 + movs r0, 0x1 + strb r0, [r1] + adds r3, 0x1 +_0806ECA0: + ldr r0, [sp, 0x7C] + movs r2, 0x4 + ldrsh r1, [r0, r2] + ldr r0, _0806EDA8 + cmp r1, r0 + bne _0806ECAE + subs r3, 0x2 +_0806ECAE: + movs r0, 0xD1 + lsls r0, 1 + cmp r1, r0 + bne _0806ECB8 + adds r3, 0x2 +_0806ECB8: + ldr r0, _0806EDAC + cmp r1, r0 + bne _0806ECC0 + subs r3, 0x2 +_0806ECC0: + cmp r3, 0 + bge _0806ECC6 + movs r3, 0 +_0806ECC6: + cmp r3, 0x14 + ble _0806ECCC + movs r3, 0x14 +_0806ECCC: + ldr r5, _0806EDA4 + ldr r0, [r5] + ldr r6, _0806EDB4 + adds r0, r6 + strb r3, [r0] + ldr r2, [r5] + ldr r0, [sp, 0x7C] + adds r0, 0x16 + ldr r1, [sp, 0x80] + adds r0, r1 + ldrb r1, [r0] + adds r6, 0x3 + adds r2, r6 + strh r1, [r2] + ldrb r0, [r0] + lsls r0, 8 + ldr r2, _0806EDB8 + lsls r1, r3, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8009DA4 + adds r2, r0, 0 + ldr r0, [sp, 0x7C] + adds r0, 0x34 + adds r0, r4 + ldr r1, [r0] + adds r0, r2, 0 + bl sub_8009DA4 + cmp r0, 0 + bge _0806ED0E + adds r0, 0xFF +_0806ED0E: + asrs r0, 8 + str r0, [sp, 0xC] + movs r0, 0x64 + bl DungeonRandomCapped + str r0, [sp, 0x84] + ldr r0, [sp, 0x80] + cmp r0, 0 + bne _0806EDC8 + ldr r0, [sp, 0x70] + movs r1, 0x13 + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806ED4A + ldr r2, _0806EDBC + movs r3, 0 + ldrsh r1, [r2, r3] + ldr r0, [sp, 0x8] + adds r0, r1 + str r0, [sp, 0x8] + ldr r1, [r5] + movs r6, 0xB0 + lsls r6, 1 + adds r1, r6 + ldrb r0, [r2] + ldrb r2, [r1] + adds r0, r2 + strb r0, [r1] +_0806ED4A: + ldr r0, [sp, 0x70] + movs r1, 0x2B + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806ED74 + ldr r2, _0806EDC0 + movs r3, 0 + ldrsh r1, [r2, r3] + ldr r0, [sp, 0x8] + adds r0, r1 + str r0, [sp, 0x8] + ldr r1, [r5] + movs r6, 0xB0 + lsls r6, 1 + adds r1, r6 + ldrb r0, [r2] + ldrb r2, [r1] + adds r0, r2 + strb r0, [r1] +_0806ED74: + ldr r3, [sp, 0x78] + cmp r3, 0 + beq _0806EE4A + mov r0, r9 + movs r1, 0x1E + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806EE4A + ldr r2, _0806EDC4 + movs r6, 0 + ldrsh r1, [r2, r6] + ldr r0, [sp, 0xC] + adds r0, r1 + str r0, [sp, 0xC] + ldr r0, [r5] + movs r3, 0xB1 + lsls r3, 1 + adds r1, r0, r3 + ldrb r0, [r2] + ldrb r6, [r1] + adds r0, r6 + b _0806EE48 + .align 2, 0 +_0806EDA4: .4byte gDungeonGlobalData +_0806EDA8: .4byte 0x000001a1 +_0806EDAC: .4byte 0x000001a3 +_0806EDB0: .4byte gUnknown_80F504C +_0806EDB4: .4byte 0x0000013f +_0806EDB8: .4byte gUnknown_80F50A0 +_0806EDBC: .4byte gUnknown_810AC60 +_0806EDC0: .4byte gUnknown_810AC68 +_0806EDC4: .4byte gUnknown_810AC64 +_0806EDC8: + ldr r0, [sp, 0x78] + cmp r0, 0 + beq _0806EDF6 + mov r0, r9 + movs r1, 0x22 + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806EDF6 + ldr r2, _0806EEF8 + movs r3, 0 + ldrsh r1, [r2, r3] + ldr r0, [sp, 0xC] + adds r0, r1 + str r0, [sp, 0xC] + ldr r0, [r5] + ldr r6, _0806EEFC + adds r1, r0, r6 + ldrb r0, [r2] + ldrb r2, [r1] + adds r0, r2 + strb r0, [r1] +_0806EDF6: + ldr r0, [sp, 0x70] + movs r1, 0x21 + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806EE20 + ldr r2, _0806EF00 + movs r3, 0 + ldrsh r1, [r2, r3] + ldr r0, [sp, 0x8] + adds r0, r1 + str r0, [sp, 0x8] + ldr r0, _0806EF04 + ldr r0, [r0] + ldr r6, _0806EF08 + adds r1, r0, r6 + ldrb r0, [r2] + ldrb r2, [r1] + adds r0, r2 + strb r0, [r1] +_0806EE20: + ldr r0, [sp, 0x70] + movs r1, 0x2B + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806EE4A + ldr r2, _0806EF0C + movs r3, 0 + ldrsh r1, [r2, r3] + ldr r0, [sp, 0x8] + adds r0, r1 + str r0, [sp, 0x8] + ldr r0, _0806EF04 + ldr r0, [r0] + ldr r6, _0806EF08 + adds r1, r0, r6 + ldrb r0, [r2] + ldrb r2, [r1] + adds r0, r2 +_0806EE48: + strb r0, [r1] +_0806EE4A: + ldr r0, _0806EF04 + ldr r2, [r0] + movs r3, 0xA3 + lsls r3, 1 + adds r1, r2, r3 + add r0, sp, 0x8 + ldrh r0, [r0] + strh r0, [r1] + movs r6, 0xA4 + lsls r6, 1 + adds r1, r2, r6 + add r4, sp, 0xC + ldrh r0, [r4] + strh r0, [r1] + ldr r0, [sp, 0x8] + cmp r0, 0 + bge _0806EE70 + movs r0, 0 + str r0, [sp, 0x8] +_0806EE70: + ldr r1, _0806EF10 + ldr r0, [sp, 0x8] + cmp r0, r1 + ble _0806EE7C + ldr r0, _0806EF14 + str r0, [sp, 0x8] +_0806EE7C: + movs r3, 0xA8 + lsls r3, 1 + add r3, r10 + ldrh r2, [r3] + ldr r1, _0806EF18 + adds r0, r1, 0 + ands r0, r2 + strh r0, [r3] + movs r2, 0xA7 + lsls r2, 1 + add r2, r10 + ldrh r0, [r2] + ands r1, r0 + strh r1, [r2] + str r4, [sp] + ldr r0, [sp, 0x84] + str r0, [sp, 0x4] + ldr r0, [sp, 0x70] + mov r1, r9 + ldr r2, [sp, 0x74] + add r3, sp, 0x8 + bl sub_806E8B0 + add r5, sp, 0x10 + ldr r1, [sp, 0x8] + ldr r0, [sp, 0xC] + subs r1, r0 + adds r0, r5, 0 + bl sub_800A020 + add r4, sp, 0x18 + adds r0, r4, 0 + movs r1, 0x8 + bl sub_800A020 + adds r0, r5, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_800A3F0 + mov r1, r10 + ldrb r6, [r1, 0x6] + mov r8, r5 + adds r7, r4, 0 + cmp r6, 0 + bne _0806EF20 + ldrb r1, [r1, 0x9] + adds r0, r7, 0 + bl sub_800A020 + str r6, [sp, 0x20] + ldr r0, _0806EF1C + add r2, sp, 0x20 + str r0, [r2, 0x4] + adds r0, r7, 0 + adds r1, r7, 0 + bl sub_800A34C + mov r2, r10 + ldrb r0, [r2, 0x9] + lsls r0, 1 + b _0806EF60 + .align 2, 0 +_0806EEF8: .4byte gUnknown_810AC66 +_0806EEFC: .4byte 0x00000163 +_0806EF00: .4byte gUnknown_810AC62 +_0806EF04: .4byte gDungeonGlobalData +_0806EF08: .4byte 0x00000161 +_0806EF0C: .4byte gUnknown_810AC68 +_0806EF10: .4byte 0x000003e6 +_0806EF14: .4byte 0x000003e7 +_0806EF18: .4byte 0x0000feff +_0806EF1C: .4byte 0x0000aaaa +_0806EF20: + ldr r3, [sp, 0x88] + ldr r6, [sp, 0x80] + adds r0, r3, r6 + ldrb r0, [r0] + str r0, [sp, 0x28] + movs r0, 0x1 + str r0, [sp, 0x2C] + add r3, sp, 0x28 + add r0, sp, 0x2C + str r0, [sp] + ldr r0, [sp, 0x84] + str r0, [sp, 0x4] + ldr r0, [sp, 0x70] + mov r1, r9 + ldr r2, [sp, 0x74] + bl sub_806E8B0 + ldr r1, [sp, 0x28] + adds r0, r7, 0 + bl sub_800A020 + add r4, sp, 0x20 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_800A020 + adds r0, r7, 0 + adds r1, r7, 0 + adds r2, r4, 0 + bl sub_800A3F0 + ldr r0, [sp, 0x28] +_0806EF60: + movs r1, 0x3 + bl __divsi3 + adds r6, r0, 0 + add r5, sp, 0x30 + adds r0, r5, 0 + mov r1, r8 + adds r2, r7, 0 + bl sub_800A6D0 + ldr r4, _0806F098 + ldr r0, [r4] + movs r1, 0xA5 + lsls r1, 1 + adds r0, r1 + movs r2, 0 + mov r8, r2 + strh r6, [r0] + adds r0, r5, 0 + bl sub_800A048 + ldr r1, [r4] + movs r3, 0xA6 + lsls r3, 1 + adds r1, r3 + strh r0, [r1] + ldr r0, [sp, 0x30] + ldr r1, [sp, 0x34] + str r0, [sp, 0x38] + str r1, [sp, 0x3C] + str r0, [sp, 0x48] + str r1, [sp, 0x4C] + add r6, sp, 0x38 + adds r0, r6, 0 + adds r1, r6, 0 + adds r2, r6, 0 + bl sub_800A34C + mov r0, r8 + str r0, [sp, 0x40] + ldr r0, _0806F09C + add r5, sp, 0x40 + str r0, [r5, 0x4] + adds r0, r6, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_800A34C + adds r0, r5, 0 + movs r1, 0x2 + bl sub_800A020 + add r4, sp, 0x48 + adds r0, r4, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_800A34C + ldr r1, [sp, 0xC] + adds r0, r5, 0 + bl sub_800A020 + adds r0, r4, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_800A6F0 + adds r0, r5, 0 + movs r1, 0xA + bl sub_800A020 + adds r0, r4, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_800A6D0 + add r5, sp, 0x50 + adds r0, r5, 0 + adds r1, r6, 0 + adds r2, r4, 0 + bl sub_800A6D0 + ldr r4, _0806F0A0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_800A2F0 + lsls r0, 24 + mov r8, r5 + cmp r0, 0 + beq _0806F01E + ldr r0, [r4] + ldr r1, [r4, 0x4] + str r0, [sp, 0x50] + str r1, [sp, 0x54] +_0806F01E: + ldr r4, _0806F0A4 + mov r0, r8 + adds r1, r4, 0 + bl sub_800A2F0 + lsls r0, 24 + cmp r0, 0 + beq _0806F036 + ldr r0, [r4] + ldr r1, [r4, 0x4] + str r0, [sp, 0x50] + str r1, [sp, 0x54] +_0806F036: + add r4, sp, 0x58 + ldr r1, [sp, 0xB0] + str r1, [sp] + adds r0, r4, 0 + ldr r1, [sp, 0x70] + mov r2, r9 + ldr r3, [sp, 0x74] + bl sub_806E100 + lsls r0, 24 + lsrs r5, r0, 24 + adds r7, r4, 0 + ldr r2, [sp, 0x74] + cmp r2, 0x2 + bne _0806F0BC + mov r0, r9 + bl GetFlashFireStatus + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _0806F0BC + ldr r3, [sp, 0x7C] + movs r6, 0xA9 + lsls r6, 1 + adds r1, r3, r6 + ldrb r0, [r1] + cmp r0, 0 + bne _0806F0BC + ldr r0, [sp, 0x78] + cmp r0, 0 + beq _0806F118 + movs r0, 0x1 + strb r0, [r1] + ldr r0, _0806F0A8 + mov r1, r9 + movs r2, 0 + bl SetMessageArgument + cmp r4, 0x1 + bne _0806F0B0 + ldr r0, _0806F0AC + ldr r2, [r0] + ldr r0, [sp, 0x70] + mov r1, r9 + bl sub_80522F4 + b _0806F0BC + .align 2, 0 +_0806F098: .4byte gDungeonGlobalData +_0806F09C: .4byte 0x00000ccc +_0806F0A0: .4byte gUnknown_8106F24 +_0806F0A4: .4byte gUnknown_8106F04 +_0806F0A8: .4byte gUnknown_202DFE8 +_0806F0AC: .4byte gUnknown_80FAE00 +_0806F0B0: + ldr r0, _0806F15C + ldr r2, [r0] + ldr r0, [sp, 0x70] + mov r1, r9 + bl sub_80522F4 +_0806F0BC: + ldr r1, [sp, 0x78] + cmp r1, 0 + beq _0806F118 + ldr r2, [sp, 0x80] + cmp r2, 0 + bne _0806F0EE + ldr r0, [sp, 0x7C] + adds r0, 0xC4 + ldrb r4, [r0] + cmp r4, 0x1 + bne _0806F0EE + mov r0, r9 + bl sub_8041B74 + ldr r2, _0806F160 + adds r0, r7, 0 + adds r1, r7, 0 + bl sub_800A34C + ldr r0, _0806F164 + ldr r0, [r0] + movs r3, 0xB3 + lsls r3, 1 + adds r0, r3 + strb r4, [r0] +_0806F0EE: + ldr r6, [sp, 0x80] + cmp r6, 0x1 + bne _0806F118 + ldr r0, [sp, 0x7C] + adds r0, 0xC4 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0806F118 + mov r0, r9 + bl sub_8041B5C + ldr r2, _0806F160 + adds r0, r7, 0 + adds r1, r7, 0 + bl sub_800A34C + ldr r0, _0806F164 + ldr r0, [r0] + ldr r1, _0806F168 + adds r0, r1 + strb r6, [r0] +_0806F118: + mov r0, r9 + movs r1, 0xC + bl HasAbility + lsls r0, 24 + cmp r0, 0 + bne _0806F1F4 + mov r0, r9 + movs r1, 0x13 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + bne _0806F1F4 + mov r3, r10 + ldrb r0, [r3, 0x6] + ldr r4, [sp, 0xAC] + cmp r0, 0 + beq _0806F140 + movs r4, 0 +_0806F140: + mov r0, r10 + adds r0, 0xDC + ldrb r0, [r0] + cmp r0, 0x4 + bne _0806F170 + ldr r4, _0806F16C + ldr r0, _0806F164 + ldr r0, [r0] + movs r6, 0xB4 + lsls r6, 1 + adds r0, r6 + movs r1, 0x1 + strb r1, [r0] + b _0806F1DA + .align 2, 0 +_0806F15C: .4byte gUnknown_80FADD8 +_0806F160: .4byte gUnknown_8106F1C +_0806F164: .4byte gDungeonGlobalData +_0806F168: .4byte 0x00000167 +_0806F16C: .4byte 0x000003e7 +_0806F170: + ldr r0, [sp, 0x70] + movs r1, 0xC + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806F194 + ldr r0, _0806F2A4 + movs r1, 0 + ldrsh r0, [r0, r1] + adds r4, r0 + ldr r0, _0806F2A8 + ldr r0, [r0] + movs r2, 0xB2 + lsls r2, 1 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0] +_0806F194: + mov r0, r9 + movs r1, 0xD + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806F1B6 + ldr r0, _0806F2A4 + movs r3, 0 + ldrsh r0, [r0, r3] + adds r4, r0 + ldr r0, _0806F2A8 + ldr r0, [r0] + ldr r6, _0806F2AC + adds r1, r0, r6 + movs r0, 0x1 + strb r0, [r1] +_0806F1B6: + cmp r5, 0 + beq _0806F1DA + ldr r0, [sp, 0x70] + movs r1, 0x1 + bl HasIQSkill + lsls r0, 24 + cmp r0, 0 + beq _0806F1DA + ldr r0, _0806F2B0 + movs r1, 0 + ldrsh r4, [r0, r1] + ldr r0, _0806F2A8 + ldr r0, [r0] + ldr r2, _0806F2B4 + adds r1, r0, r2 + movs r0, 0x1 + strb r0, [r1] +_0806F1DA: + movs r0, 0x64 + bl DungeonRandomCapped + cmp r0, r4 + bge _0806F1F4 + ldr r2, _0806F2B8 + adds r0, r7, 0 + adds r1, r7, 0 + bl sub_800A34C + movs r0, 0x1 + ldr r3, [sp, 0xB0] + strb r0, [r3, 0xD] +_0806F1F4: + mov r0, r8 + bl sub_800A048 + ldr r5, _0806F2A8 + ldr r1, [r5] + movs r6, 0xAA + lsls r6, 1 + adds r1, r6 + str r0, [r1] + mov r0, r8 + mov r1, r8 + adds r2, r7, 0 + bl sub_800A34C + ldr r0, [r5] + movs r1, 0xAE + lsls r1, 1 + adds r0, r1 + ldr r2, [sp, 0xB4] + str r2, [r0] + add r4, sp, 0x60 + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_800A088 + mov r0, r8 + mov r1, r8 + adds r2, r4, 0 + bl sub_800A34C + mov r0, r8 + bl sub_800A048 + ldr r1, [r5] + movs r3, 0xA8 + lsls r3, 1 + adds r1, r3 + str r0, [r1] + movs r0, 0x80 + lsls r0, 7 + bl DungeonRandomCapped + movs r6, 0 + str r6, [sp, 0x58] + movs r1, 0xE0 + lsls r1, 8 + adds r0, r1 + str r0, [r7, 0x4] + mov r0, r8 + mov r1, r8 + adds r2, r7, 0 + bl sub_800A34C + add r4, sp, 0x68 + adds r0, r4, 0 + movs r1, 0x64 + bl sub_800A020 + adds r0, r7, 0 + adds r1, r4, 0 + adds r2, r7, 0 + bl sub_800A34C + adds r0, r7, 0 + bl sub_800A048 + ldr r1, [r5] + movs r2, 0xAC + lsls r2, 1 + adds r1, r2 + str r0, [r1] + mov r0, r8 + bl sub_800A048 + ldr r3, [sp, 0xB0] + str r0, [r3] + str r6, [r3, 0x4] + cmp r0, 0 + bne _0806F294 + strb r0, [r3, 0xD] +_0806F294: + add sp, 0x8C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806F2A4: .4byte gUnknown_80F4DAE +_0806F2A8: .4byte gDungeonGlobalData +_0806F2AC: .4byte 0x00000165 +_0806F2B0: .4byte gUnknown_80F4DB0 +_0806F2B4: .4byte 0x00000169 +_0806F2B8: .4byte gUnknown_8106F14 + thumb_func_end sub_806EAF4 + + thumb_func_start sub_806F2BC +sub_806F2BC: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r5, r0, 0 + mov r12, r1 + ldr r7, [sp, 0x2C] + lsls r2, 24 + lsrs r4, r2, 24 + adds r6, r3, 0 + cmp r6, 0 + bgt _0806F2D6 + movs r6, 0x1 +_0806F2D6: + ldr r0, _0806F320 + cmp r6, r0 + ble _0806F2DE + adds r6, r0, 0 +_0806F2DE: + movs r0, 0 + mov r8, r0 + strb r4, [r7, 0xC] + str r7, [sp] + add r0, sp, 0x4 + adds r1, r5, 0 + mov r2, r12 + adds r3, r4, 0 + bl sub_806E100 + add r4, sp, 0xC + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_800A020 + adds r0, r4, 0 + adds r1, r4, 0 + add r2, sp, 0x4 + bl sub_800A34C + adds r0, r4, 0 + bl sub_800A048 + str r0, [r7] + mov r0, r8 + str r0, [r7, 0x4] + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806F320: .4byte 0x000003e7 + thumb_func_end sub_806F2BC + + thumb_func_start sub_806F324 +sub_806F324: + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x94 + mov r8, r0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r4, r3, 16 + asrs r4, 16 + add r0, sp, 0x10 + bl sub_80457DC + add r2, sp, 0x84 + str r5, [sp, 0x84] + movs r0, 0x2 + str r0, [r2, 0x8] + movs r0, 0 + strb r0, [r2, 0xC] + str r6, [r2, 0x4] + strb r0, [r2, 0xD] + strb r0, [r2, 0xE] + strb r0, [r2, 0xF] + str r0, [sp] + str r4, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + add r0, sp, 0x10 + mov r1, r8 + movs r3, 0 + bl sub_806D010 + add sp, 0x94 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_806F324 + + thumb_func_start sub_806F370 +sub_806F370: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + mov r10, r0 + adds r7, r1, 0 + mov r9, r3 + ldr r0, [sp, 0x50] + ldr r1, [sp, 0x54] + ldr r3, [sp, 0x58] + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + asrs r1, 16 + mov r8, r1 + adds r5, r2, 0 + movs r0, 0x2 + str r0, [sp, 0x18] + str r3, [sp, 0x14] + add r0, sp, 0x10 + movs r1, 0 + strb r4, [r0, 0xC] + strb r1, [r0, 0xD] + strb r1, [r0, 0xE] + cmp r4, 0 + beq _0806F3FC + ldr r1, [r7, 0x70] + movs r2, 0 + lsls r0, r4, 3 + mov r3, sp + adds r3, 0x20 + str r3, [sp, 0x28] + ldr r6, _0806F408 + mov r12, r6 + adds r1, 0x5C + adds r0, r4 + lsls r3, r0, 2 + ldr r4, [sp, 0x28] +_0806F3C0: + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r3 + add r0, r12 + movs r6, 0 + ldrsh r0, [r0, r6] + stm r4!, {r0} + adds r2, 0x1 + cmp r2, 0x1 + ble _0806F3C0 + adds r0, r7, 0 + movs r1, 0x35 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806F3FC + ldr r2, _0806F40C + ldr r1, [sp, 0x28] + ldr r0, [r1, 0x4] + lsls r0, 2 + ldr r1, [sp, 0x20] + lsls r1, 4 + adds r0, r1 + adds r0, r2 + ldr r0, [r0] + cmp r0, 0x3 + beq _0806F3FC + movs r5, 0 +_0806F3FC: + str r5, [sp, 0x10] + cmp r5, 0 + bne _0806F410 + add r1, sp, 0x10 + movs r0, 0x1 + b _0806F414 + .align 2, 0 +_0806F408: .4byte gTypeEffectivenessChart +_0806F40C: .4byte gUnknown_80F54B4 +_0806F410: + add r1, sp, 0x10 + movs r0, 0 +_0806F414: + strb r0, [r1, 0xF] + mov r3, r9 + str r3, [sp] + mov r6, r8 + str r6, [sp, 0x4] + ldr r0, [sp, 0x5C] + str r0, [sp, 0x8] + ldr r0, [sp, 0x60] + str r0, [sp, 0xC] + mov r0, r10 + adds r1, r7, 0 + add r2, sp, 0x10 + movs r3, 0 + bl sub_806D010 + ldr r0, [sp, 0x4C] + cmp r0, 0 + beq _0806F440 + add r0, sp, 0x10 + ldrb r0, [r0, 0xF] + ldr r1, [sp, 0x4C] + strb r0, [r1] +_0806F440: + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_806F370 + + thumb_func_start SetShopkeeperAggression +SetShopkeeperAggression: + push {r4-r6,lr} + adds r5, r0, 0 + ldr r4, [r1, 0x70] + adds r6, r4, 0 + ldrb r0, [r4, 0x8] + cmp r0, 0 + beq _0806F47A + adds r0, r5, 0 + bl GetEntityType + cmp r0, 0x1 + bne _0806F47A + ldr r0, [r5, 0x70] + ldrb r0, [r0, 0x6] + cmp r0, 0 + beq _0806F476 + movs r0, 0x2 + strb r0, [r4, 0x8] + b _0806F47A +_0806F476: + movs r0, 0x3 + strb r0, [r6, 0x8] +_0806F47A: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end SetShopkeeperAggression + + thumb_func_start sub_806F480 +sub_806F480: + push {lr} + lsls r1, 24 + lsrs r1, 24 + ldr r2, [r0, 0x70] + adds r3, r2, 0 + ldrb r0, [r2, 0x8] + cmp r0, 0 + beq _0806F49E + cmp r1, 0 + beq _0806F49A + movs r0, 0x2 + strb r0, [r2, 0x8] + b _0806F49E +_0806F49A: + movs r0, 0x3 + strb r0, [r3, 0x8] +_0806F49E: + pop {r0} + bx r0 + thumb_func_end sub_806F480 + + thumb_func_start sub_806F4A4 +sub_806F4A4: + push {r4-r6,lr} + lsls r1, 24 + lsrs r4, r1, 24 + ldr r5, [r0, 0x70] + movs r1, 0xE + bl HasType + lsls r0, 24 + cmp r0, 0 + beq _0806F4CE + cmp r4, 0x1 + beq _0806F4C0 + cmp r4, 0x7 + bne _0806F4CE +_0806F4C0: + adds r0, r5, 0 + adds r0, 0xF5 + ldrb r0, [r0] + cmp r0, 0 + bne _0806F4CE +_0806F4CA: + movs r0, 0 + b _0806F4F6 +_0806F4CE: + movs r2, 0 + lsls r0, r4, 3 + ldr r6, _0806F4FC + adds r3, r5, 0 + adds r3, 0x5C + adds r0, r4 + lsls r1, r0, 2 +_0806F4DC: + adds r0, r3, r2 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + adds r0, r6 + movs r4, 0 + ldrsh r0, [r0, r4] + cmp r0, 0 + beq _0806F4CA + adds r2, 0x1 + cmp r2, 0x1 + ble _0806F4DC + movs r0, 0x1 +_0806F4F6: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0806F4FC: .4byte gTypeEffectivenessChart + thumb_func_end sub_806F4A4 + + thumb_func_start sub_806F500 +sub_806F500: + ldr r0, _0806F5F4 + ldr r0, [r0] + mov r12, r0 + movs r0, 0x9A + lsls r0, 1 + add r0, r12 + movs r1, 0 + strb r1, [r0] + str r1, [r0, 0x4] + strb r1, [r0, 0x8] + strb r1, [r0, 0x9] + movs r2, 0xA + strb r2, [r0, 0xA] + strb r2, [r0, 0xB] + movs r2, 0 + movs r3, 0x1 + strh r3, [r0, 0xC] + strh r3, [r0, 0xE] + strh r1, [r0, 0x10] + strh r1, [r0, 0x14] + strh r1, [r0, 0x12] + strh r1, [r0, 0x16] + strh r1, [r0, 0x18] + str r1, [r0, 0x1C] + str r1, [r0, 0x24] + str r1, [r0, 0x28] + movs r0, 0xB0 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F5F8 + add r0, r12 + strb r2, [r0] + movs r0, 0xB1 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F5FC + add r0, r12 + strb r2, [r0] + movs r0, 0xB2 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F600 + add r0, r12 + strb r2, [r0] + movs r0, 0xB3 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F604 + add r0, r12 + strb r2, [r0] + movs r0, 0xB4 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F608 + add r0, r12 + strb r2, [r0] + movs r0, 0xB5 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + movs r0, 0xB6 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F60C + add r0, r12 + strb r2, [r0] + ldr r0, _0806F610 + add r0, r12 + strb r2, [r0] + movs r0, 0xB7 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F614 + add r0, r12 + strb r2, [r0] + movs r0, 0xB8 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F618 + add r0, r12 + strb r2, [r0] + movs r0, 0xB9 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F61C + add r0, r12 + strb r2, [r0] + movs r0, 0xBA + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F620 + add r0, r12 + strb r2, [r0] + movs r0, 0xBB + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F624 + add r0, r12 + strb r2, [r0] + movs r0, 0xBC + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F628 + add r0, r12 + strb r2, [r0] + movs r0, 0xBD + lsls r0, 1 + add r0, r12 + strb r2, [r0] + bx lr + .align 2, 0 +_0806F5F4: .4byte gDungeonGlobalData +_0806F5F8: .4byte 0x00000161 +_0806F5FC: .4byte 0x00000163 +_0806F600: .4byte 0x00000165 +_0806F604: .4byte 0x00000167 +_0806F608: .4byte 0x00000169 +_0806F60C: .4byte 0x0000016b +_0806F610: .4byte 0x0000016d +_0806F614: .4byte 0x0000016f +_0806F618: .4byte 0x00000171 +_0806F61C: .4byte 0x00000173 +_0806F620: .4byte 0x00000175 +_0806F624: .4byte 0x00000177 +_0806F628: .4byte 0x00000179 + thumb_func_end sub_806F500 + + thumb_func_start sub_806F62C +sub_806F62C: + ldr r1, _0806F638 + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_0806F638: .4byte gUnknown_8106F7C + thumb_func_end sub_806F62C + + thumb_func_start sub_806F63C +sub_806F63C: + push {lr} + ldr r1, _0806F658 + ldr r1, [r1] + ldr r2, _0806F65C + adds r1, r2 + ldr r1, [r1, 0x10] + cmp r1, r0 + bne _0806F652 + adds r0, r1, 0 + bl sub_803F508 +_0806F652: + pop {r0} + bx r0 + .align 2, 0 +_0806F658: .4byte gDungeonGlobalData +_0806F65C: .4byte 0x000181e8 + thumb_func_end sub_806F63C + + thumb_func_start sub_806F660 +sub_806F660: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r6, r0, 0 + mov r8, r1 + ldr r0, [r6, 0x70] + mov r10, r0 + ldr r4, [r1, 0x70] + movs r1, 0x1 + negs r1, r1 + mov r9, r1 + movs r2, 0x4 + ldrsh r0, [r4, r2] + bl GetPokemonSize + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0806F6C0 + ldr r3, [r0] + ldr r1, _0806F6C4 + adds r0, r3, r1 + ldrh r2, [r0] + subs r0, r2, 0x4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bls _0806F702 + lsls r0, r2, 16 + asrs r1, r0, 16 + cmp r1, 0x9 + beq _0806F702 + cmp r1, 0xF + beq _0806F702 + adds r0, r2, 0 + subs r0, 0x2C + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bhi _0806F6CC + ldr r2, _0806F6C8 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0806F702 + b _0806F8FC + .align 2, 0 +_0806F6C0: .4byte gDungeonGlobalData +_0806F6C4: .4byte 0x00003a14 +_0806F6C8: .4byte 0x0000065c +_0806F6CC: + cmp r1, 0x31 + bne _0806F6F0 + ldr r1, _0806F6EC + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0806F6DC + b _0806F8FC +_0806F6DC: + movs r0, 0xCF + lsls r0, 1 + bl sub_8097900 + lsls r0, 24 + cmp r0, 0 + bne _0806F702 + b _0806F8FC + .align 2, 0 +_0806F6EC: .4byte 0x00000659 +_0806F6F0: + ldr r2, _0806F834 + adds r0, r3, r2 + ldrb r0, [r0] + bl GetRecruitable + lsls r0, 24 + cmp r0, 0 + bne _0806F702 + b _0806F8FC +_0806F702: + ldr r0, _0806F838 + ldr r0, [r0] + ldr r3, _0806F83C + adds r0, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _0806F712 + b _0806F8FC +_0806F712: + ldrh r1, [r4, 0x2] + adds r0, r1, 0 + subs r0, 0x90 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bls _0806F766 + lsls r0, r1, 16 + asrs r1, r0, 16 + ldr r0, _0806F840 + cmp r1, r0 + beq _0806F766 + subs r0, 0x1 + cmp r1, r0 + beq _0806F766 + adds r0, 0x2 + cmp r1, r0 + beq _0806F766 + adds r0, 0x8A + cmp r1, r0 + beq _0806F766 + adds r0, 0x1 + cmp r1, r0 + beq _0806F766 + adds r0, 0x4 + cmp r1, r0 + beq _0806F766 + subs r0, 0x1 + cmp r1, r0 + beq _0806F766 + adds r0, 0x2 + cmp r1, r0 + beq _0806F766 + subs r0, 0x9 + cmp r1, r0 + beq _0806F766 + adds r0, 0x1 + cmp r1, r0 + beq _0806F766 + adds r0, 0x1 + cmp r1, r0 + bne _0806F776 +_0806F766: + movs r1, 0x2 + ldrsh r0, [r4, r1] + bl HasRecruitedMon + lsls r0, 24 + cmp r0, 0 + beq _0806F776 + b _0806F8FC +_0806F776: + movs r2, 0x2 + ldrsh r0, [r4, r2] + bl sub_806F9BC + lsls r0, 24 + cmp r0, 0 + bne _0806F786 + b _0806F8FC +_0806F786: + movs r3, 0x4 + ldrsh r1, [r6, r3] + mov r2, r8 + movs r3, 0x4 + ldrsh r0, [r2, r3] + subs r1, r0 + cmp r1, 0 + bge _0806F798 + negs r1, r1 +_0806F798: + cmp r1, 0x1 + ble _0806F79E + b _0806F8FC +_0806F79E: + movs r0, 0x6 + ldrsh r1, [r6, r0] + mov r2, r8 + movs r3, 0x6 + ldrsh r0, [r2, r3] + subs r1, r0 + cmp r1, 0 + bge _0806F7B0 + negs r1, r1 +_0806F7B0: + cmp r1, 0x1 + ble _0806F7B6 + b _0806F8FC +_0806F7B6: + adds r0, r4, 0 + adds r0, 0x40 + ldrb r0, [r0] + cmp r0, 0x4A + bne _0806F7C2 + b _0806F8FC +_0806F7C2: + adds r0, r4, 0 + adds r0, 0xA4 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0806F7CE + b _0806F8FC +_0806F7CE: + mov r0, r8 + adds r1, r6, 0 + bl CanSee + lsls r0, 24 + cmp r0, 0 + bne _0806F7DE + b _0806F8FC +_0806F7DE: + bl sub_806F910 + movs r0, 0xFA + lsls r0, 2 + bl DungeonRandomCapped + adds r7, r0, 0 + movs r1, 0x2 + ldrsh r0, [r4, r1] + bl GetBaseRecruit + lsls r0, 16 + asrs r4, r0, 16 + ldr r0, _0806F844 + cmp r4, r0 + bne _0806F800 + b _0806F8FC +_0806F800: + adds r0, r6, 0 + movs r1, 0x2E + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806F816 + ldr r0, _0806F848 + movs r2, 0 + ldrsh r0, [r0, r2] + adds r4, r0 +_0806F816: + ldr r0, _0806F84C + mov r3, r10 + ldrb r1, [r3, 0x9] + lsls r1, 1 + adds r1, r0 + movs r2, 0 + ldrsh r0, [r1, r2] + adds r4, r0 + cmp r7, r4 + bge _0806F8FC + movs r4, 0 + movs r0, 0x6 + subs r3, r0, r5 + ldr r7, _0806F850 + b _0806F856 + .align 2, 0 +_0806F834: .4byte 0x00000644 +_0806F838: .4byte gDungeonGlobalData +_0806F83C: .4byte 0x0000065d +_0806F840: .4byte 0x0000010d +_0806F844: .4byte 0xfffffc19 +_0806F848: .4byte gUnknown_80F5008 +_0806F84C: .4byte gUnknown_80F5700 +_0806F850: .4byte gUnknown_202EE70 +_0806F854: + adds r4, 0x1 +_0806F856: + cmp r4, r3 + bgt _0806F878 + movs r2, 0 + cmp r2, r5 + bge _0806F872 + adds r1, r4, r7 + b _0806F86C +_0806F864: + adds r1, 0x1 + adds r2, 0x1 + cmp r2, r5 + bge _0806F872 +_0806F86C: + ldrb r0, [r1] + cmp r0, 0 + beq _0806F864 +_0806F872: + cmp r2, r5 + bne _0806F854 + mov r9, r4 +_0806F878: + movs r0, 0x1 + negs r0, r0 + cmp r9, r0 + beq _0806F8F4 + movs r4, 0 + ldr r3, _0806F8BC + ldr r0, [r3] + ldr r2, _0806F8C0 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806F8B4 + adds r7, r3, 0 + adds r5, r2, 0 + movs r2, 0 + movs r3, 0x1 +_0806F89C: + adds r2, 0x64 + adds r4, 0x1 + cmp r4, 0x3 + bgt _0806F8B4 + ldr r0, [r7] + adds r0, r2, r0 + adds r0, r5 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0806F89C +_0806F8B4: + cmp r4, 0x4 + beq _0806F8F4 + movs r4, 0 + b _0806F8C6 + .align 2, 0 +_0806F8BC: .4byte gRecruitedPokemonRef +_0806F8C0: .4byte 0x00008df8 +_0806F8C4: + adds r4, 0x1 +_0806F8C6: + cmp r4, 0x3 + bgt _0806F8E2 + ldr r0, _0806F8EC + ldr r0, [r0] + lsls r1, r4, 2 + ldr r3, _0806F8F0 + adds r0, r3 + adds r0, r1 + ldr r0, [r0] + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0806F8C4 +_0806F8E2: + cmp r4, 0x4 + beq _0806F8F4 + movs r0, 0x1 + b _0806F8FE + .align 2, 0 +_0806F8EC: .4byte gDungeonGlobalData +_0806F8F0: .4byte 0x0001357c +_0806F8F4: + adds r0, r6, 0 + mov r1, r8 + bl nullsub_96 +_0806F8FC: + movs r0, 0 +_0806F8FE: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806F660 + + thumb_func_start nullsub_96 +nullsub_96: + bx lr + thumb_func_end nullsub_96 + + thumb_func_start sub_806F910 +sub_806F910: + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r5, 0 + movs r6, 0 + movs r7, 0x40 +_0806F91C: + ldr r0, _0806F9AC + ldr r0, [r0] + lsls r1, r6, 2 + ldr r2, _0806F9B0 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + adds r1, r6, 0x1 + mov r8, r1 + cmp r0, 0 + beq _0806F98A + ldr r0, [r4, 0x70] + movs r2, 0x4 + ldrsh r0, [r0, r2] + bl GetPokemonSize + lsls r0, 24 + lsrs r1, r0, 24 + adds r0, r4, 0 + adds r0, 0x68 + strh r7, [r0] + ldr r0, [r4, 0x70] + ldr r2, _0806F9B4 + adds r0, r2 + strb r6, [r0] + ldr r0, [r4, 0x70] + adds r2, 0x1 + adds r0, r2 + strb r1, [r0] + cmp r1, 0 + beq _0806F978 + ldr r3, _0806F9B8 + movs r2, 0x1 +_0806F966: + cmp r5, 0x5 + bgt _0806F972 + adds r0, r5, r3 + strb r2, [r0] + adds r7, 0x10 + adds r5, 0x1 +_0806F972: + subs r1, 0x1 + cmp r1, 0 + bne _0806F966 +_0806F978: + adds r0, r4, 0 + bl sub_806CEBC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_806CCB4 +_0806F98A: + mov r6, r8 + cmp r6, 0x3 + ble _0806F91C + cmp r5, 0x5 + bgt _0806F9A2 + ldr r2, _0806F9B8 + movs r1, 0 +_0806F998: + adds r0, r5, r2 + strb r1, [r0] + adds r5, 0x1 + cmp r5, 0x5 + ble _0806F998 +_0806F9A2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806F9AC: .4byte gDungeonGlobalData +_0806F9B0: .4byte 0x0001357c +_0806F9B4: .4byte 0x00000167 +_0806F9B8: .4byte gUnknown_202EE70 + thumb_func_end sub_806F910 + + thumb_func_start sub_806F9BC +sub_806F9BC: + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 16 + asrs r4, r0, 16 + ldr r5, _0806FA40 + ldr r0, [r5] + movs r1, 0xCB + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0806FA3C + adds r0, r4, 0 + bl sub_808529C + lsls r0, 24 + cmp r0, 0 + beq _0806FA3C + cmp r4, 0x97 + bne _0806F9F2 + ldr r0, [r5] + movs r1, 0xCF + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0806FA3C +_0806F9F2: + movs r0, 0xCC + lsls r0, 1 + cmp r4, r0 + beq _0806FA3C + ldr r0, _0806FA44 + cmp r4, r0 + beq _0806FA3C + ldr r0, _0806FA48 + cmp r4, r0 + beq _0806FA3C + movs r0, 0xD1 + lsls r0, 1 + cmp r4, r0 + beq _0806FA3C + ldr r0, _0806FA4C + cmp r4, r0 + beq _0806FA3C + adds r0, r4, 0 + bl GetUnk12 + lsls r0, 24 + cmp r0, 0 + bne _0806FA50 + adds r0, r4, 0 + bl GetFriendArea + lsls r0, 24 + lsrs r0, 24 + mov r1, sp + movs r2, 0 + movs r3, 0 + bl sub_8092638 + mov r0, sp + ldrb r0, [r0, 0x4] + cmp r0, 0 + bne _0806FA50 +_0806FA3C: + movs r0, 0 + b _0806FA52 + .align 2, 0 +_0806FA40: .4byte gDungeonGlobalData +_0806FA44: .4byte 0x00000199 +_0806FA48: .4byte 0x000001a1 +_0806FA4C: .4byte 0x000001a3 +_0806FA50: + movs r0, 0x1 +_0806FA52: + add sp, 0xC + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806F9BC + + thumb_func_start sub_806FA5C +sub_806FA5C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + mov r8, r0 + adds r5, r1, 0 + adds r6, r2, 0 + adds r0, r5, 0x4 + mov r1, r8 + adds r1, 0x4 + bl CalculateFacingDir + adds r4, r0, 0 + movs r0, 0 + mov r10, r0 + movs r1, 0 + ldrsh r0, [r6, r1] + bl GetFriendArea + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + adds r0, r5, 0 + adds r0, 0x22 + mov r2, r10 + strb r2, [r0] + mov r0, r8 + adds r1, r5, 0 + bl sub_807A0CC + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_806CE68 + ldr r0, _0806FAD4 + movs r3, 0 + ldrsh r1, [r6, r3] + bl CopyCyanSpeciesNametoBuffer + ldr r0, _0806FAD8 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl sub_8052B8C + cmp r0, 0 + bne _0806FAE4 + movs r4, 0 + ldrsh r1, [r6, r4] + ldr r0, _0806FADC + cmp r1, r0 + beq _0806FB28 + ldr r0, _0806FAE0 + ldr r1, [r0] + mov r0, r8 + bl SendMessage + b _0806FB28 + .align 2, 0 +_0806FAD4: .4byte gAvailablePokemonNames +_0806FAD8: .4byte gUnknown_80F9FE8 +_0806FADC: .4byte 0x0000019d +_0806FAE0: .4byte gUnknown_80FA004 +_0806FAE4: + movs r7, 0 + ldr r3, _0806FB2C + ldr r0, [r3] + ldr r2, _0806FB30 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806FB1A + mov r12, r3 + adds r4, r2, 0 + movs r2, 0 + movs r3, 0x1 +_0806FB00: + adds r2, 0x64 + adds r7, 0x1 + cmp r7, 0x3 + bgt _0806FB1A + mov r1, r12 + ldr r0, [r1] + adds r0, r2, r0 + adds r0, r4 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0806FB00 +_0806FB1A: + cmp r7, 0x4 + bne _0806FB38 + ldr r0, _0806FB34 + ldr r1, [r0] + mov r0, r8 + bl SendMessage +_0806FB28: + movs r0, 0 + b _0806FCF0 + .align 2, 0 +_0806FB2C: .4byte gRecruitedPokemonRef +_0806FB30: .4byte 0x00008df8 +_0806FB34: .4byte gUnknown_80FA030 +_0806FB38: + mov r0, r9 + bl GetFriendAreaStatus + lsls r0, 24 + cmp r0, 0 + bne _0806FB4E + mov r0, r9 + bl UnlockFriendArea + movs r2, 0x1 + mov r10, r2 +_0806FB4E: + movs r1, 0xFA + lsls r1, 1 + adds r0, r5, 0 + mov r2, r8 + bl sub_8068FE0 + ldr r1, _0806FC40 + movs r0, 0x64 + muls r0, r7 + ldr r3, _0806FC44 + adds r0, r3 + ldr r1, [r1] + adds r5, r1, r0 + movs r4, 0 + movs r0, 0x3 + strh r0, [r5] + strb r4, [r5, 0x2] + ldrh r0, [r6, 0xE] + strb r0, [r5, 0x3] + movs r0, 0x1 + strh r0, [r5, 0x8] + adds r0, r5, 0 + adds r0, 0x4C + movs r1, 0 + bl SetDefaultIQSkills + ldr r0, [r6, 0x44] + str r0, [r5, 0x54] + adds r0, r5, 0 + adds r0, 0x50 + strb r4, [r0] + ldr r0, _0806FC48 + strh r0, [r5, 0xA] + strh r7, [r5, 0xC] + ldrh r0, [r6] + strh r0, [r5, 0xE] + ldr r0, _0806FC4C + ldr r0, [r0] + ldr r4, _0806FC50 + adds r0, r4 + ldr r0, [r0] + str r0, [r5, 0x4] + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x10] + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x12] + ldr r0, [r6, 0x14] + str r0, [r5, 0x44] + ldr r0, [r6, 0x18] + str r0, [r5, 0x48] + movs r2, 0 + adds r7, r6, 0 + adds r7, 0x20 + adds r4, r6, 0 + adds r4, 0xA + adds r3, r6, 0 + adds r3, 0xC + adds r1, r5, 0 + adds r1, 0x14 +_0806FBC4: + adds r0, r4, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1, 0x2] + adds r1, 0x1 + adds r2, 0x1 + cmp r2, 0x1 + ble _0806FBC4 + ldr r0, [r6, 0x10] + str r0, [r5, 0x18] + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r7, 0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r6, 0x1C] + str r0, [r5, 0x40] + adds r4, r5, 0 + adds r4, 0x58 + movs r1, 0 + ldrsh r0, [r6, r1] + bl GetMonSpecies + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0xA + bl BoundedCopyStringtoBuffer + bl sub_8097848 + movs r2, 0 + ldrsh r0, [r6, r2] + movs r3, 0x4 + ldrsh r1, [r6, r3] + movs r3, 0x6 + ldrsh r2, [r6, r3] + add r3, sp, 0xC + str r3, [sp] + movs r3, 0 + str r3, [sp, 0x4] + movs r3, 0x1 + str r3, [sp, 0x8] + adds r3, r5, 0 + bl sub_806B8CC + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0 + bne _0806FC58 + ldr r0, _0806FC54 + ldr r1, [r0] + mov r0, r8 + bl SendMessage + strh r7, [r5] + b _0806FCEE + .align 2, 0 +_0806FC40: .4byte gRecruitedPokemonRef +_0806FC44: .4byte 0x00008df8 +_0806FC48: .4byte 0x0000ffff +_0806FC4C: .4byte gDungeonGlobalData +_0806FC50: .4byte 0x00000644 +_0806FC54: .4byte gUnknown_80FA058 +_0806FC58: + bl sub_8083D88 + movs r0, 0xA0 + movs r1, 0x46 + bl sub_803E708 + ldr r0, _0806FC78 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl sub_8052B8C + cmp r0, 0x1 + bne _0806FC94 + b _0806FC88 + .align 2, 0 +_0806FC78: .4byte gUnknown_80FA090 +_0806FC7C: + ldr r0, _0806FD00 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl PrintFieldMessage +_0806FC88: + adds r0, r4, 0 + bl sub_805FBE8 + lsls r0, 24 + cmp r0, 0 + beq _0806FC7C +_0806FC94: + ldr r4, _0806FD04 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_808D9DC + ldr r0, _0806FD08 + ldr r1, [r0] + mov r0, r8 + bl SendMessage + mov r0, r10 + cmp r0, 0 + beq _0806FCD8 + bl xxx_call_GetLeaderEntity + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _0806FD0C + mov r1, r9 + bl sub_8092558 + movs r0, 0xCE + bl PlaySound + ldr r0, _0806FD10 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl PrintFieldMessage +_0806FCD8: + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x97 + bne _0806FCEE + ldr r2, _0806FD14 + ldr r1, [r2] + movs r0, 0x1 + strb r0, [r1, 0x4] + ldr r1, [r2] + movs r0, 0x3 + strb r0, [r1, 0x11] +_0806FCEE: + movs r0, 0x1 +_0806FCF0: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0806FD00: .4byte gUnknown_80FA0C8 +_0806FD04: .4byte gAvailablePokemonNames +_0806FD08: .4byte gUnknown_80FA0F0 +_0806FD0C: .4byte gUnknown_202E628 +_0806FD10: .4byte gUnknown_80FA120 +_0806FD14: .4byte gDungeonGlobalData + thumb_func_end sub_806FA5C + + thumb_func_start sub_806FD18 +sub_806FD18: + push {r4-r7,lr} + ldr r4, [r0, 0x70] + movs r6, 0x1 + negs r6, r6 + movs r1, 0x4 + ldrsh r0, [r4, r1] + bl GetPokemonSize + lsls r0, 24 + lsrs r5, r0, 24 + movs r2, 0x2 + ldrsh r0, [r4, r2] + bl sub_806F9BC + lsls r0, 24 + cmp r0, 0 + beq _0806FDEC + bl sub_806F910 + movs r4, 0 + movs r0, 0x6 + subs r3, r0, r5 + ldr r7, _0806FD48 + b _0806FD4E + .align 2, 0 +_0806FD48: .4byte gUnknown_202EE70 +_0806FD4C: + adds r4, 0x1 +_0806FD4E: + cmp r4, r3 + bgt _0806FD70 + movs r2, 0 + cmp r2, r5 + bge _0806FD6A + adds r1, r4, r7 + b _0806FD64 +_0806FD5C: + adds r1, 0x1 + adds r2, 0x1 + cmp r2, r5 + bge _0806FD6A +_0806FD64: + ldrb r0, [r1] + cmp r0, 0 + beq _0806FD5C +_0806FD6A: + cmp r2, r5 + bne _0806FD4C + adds r6, r4, 0 +_0806FD70: + movs r0, 0x1 + negs r0, r0 + cmp r6, r0 + beq _0806FDEC + movs r4, 0 + ldr r3, _0806FDB4 + ldr r0, [r3] + ldr r2, _0806FDB8 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806FDAC + adds r6, r3, 0 + adds r5, r2, 0 + movs r2, 0 + movs r3, 0x1 +_0806FD94: + adds r2, 0x64 + adds r4, 0x1 + cmp r4, 0x3 + bgt _0806FDAC + ldr r0, [r6] + adds r0, r2, r0 + adds r0, r5 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0806FD94 +_0806FDAC: + cmp r4, 0x4 + beq _0806FDEC + movs r4, 0 + b _0806FDBE + .align 2, 0 +_0806FDB4: .4byte gRecruitedPokemonRef +_0806FDB8: .4byte 0x00008df8 +_0806FDBC: + adds r4, 0x1 +_0806FDBE: + cmp r4, 0x3 + bgt _0806FDDA + ldr r0, _0806FDE4 + ldr r0, [r0] + lsls r1, r4, 2 + ldr r2, _0806FDE8 + adds r0, r2 + adds r0, r1 + ldr r0, [r0] + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0806FDBC +_0806FDDA: + cmp r4, 0x4 + beq _0806FDEC + movs r0, 0x1 + b _0806FDEE + .align 2, 0 +_0806FDE4: .4byte gDungeonGlobalData +_0806FDE8: .4byte 0x0001357c +_0806FDEC: + movs r0, 0 +_0806FDEE: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806FD18 + + thumb_func_start sub_806FDF4 +sub_806FDF4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x60 + str r0, [sp, 0x58] + mov r10, r1 + str r2, [sp, 0x5C] + movs r0, 0 + mov r9, r0 + str r0, [r2] + add r0, sp, 0xC + bl sub_8069D4C + movs r6, 0 + ldr r3, _0806FE50 + ldr r0, [r3] + ldr r2, _0806FE54 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806FE46 + adds r5, r3, 0 + adds r4, r2, 0 + movs r2, 0 + movs r3, 0x1 +_0806FE2E: + adds r2, 0x64 + adds r6, 0x1 + cmp r6, 0x3 + bgt _0806FE46 + ldr r0, [r5] + adds r0, r2, r0 + adds r0, r4 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0806FE2E +_0806FE46: + cmp r6, 0x4 + bne _0806FE58 + movs r0, 0 + b _0806FFF8 + .align 2, 0 +_0806FE50: .4byte gRecruitedPokemonRef +_0806FE54: .4byte 0x00008df8 +_0806FE58: + add r0, sp, 0xC + movs r1, 0 + ldrsh r0, [r0, r1] + bl GetFriendArea + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _0806FF74 + movs r0, 0x64 + muls r0, r6 + ldr r2, _0806FF78 + adds r0, r2 + ldr r1, [r1] + adds r5, r1, r0 + movs r4, 0 + movs r0, 0x3 + strh r0, [r5] + strb r4, [r5, 0x2] + add r0, sp, 0xC + ldrh r0, [r0, 0xE] + strb r0, [r5, 0x3] + movs r0, 0x1 + strh r0, [r5, 0x8] + adds r0, r5, 0 + adds r0, 0x4C + movs r1, 0 + bl SetDefaultIQSkills + ldr r0, [sp, 0x50] + str r0, [r5, 0x54] + adds r0, r5, 0 + adds r0, 0x50 + strb r4, [r0] + ldr r0, _0806FF7C + strh r0, [r5, 0xA] + strh r6, [r5, 0xC] + add r0, sp, 0xC + ldrh r0, [r0] + strh r0, [r5, 0xE] + ldr r0, _0806FF80 + ldr r0, [r0] + ldr r3, _0806FF84 + adds r0, r3 + ldr r0, [r0] + str r0, [r5, 0x4] + add r0, sp, 0xC + ldrh r0, [r0, 0x8] + strh r0, [r5, 0x10] + add r0, sp, 0xC + ldrh r0, [r0, 0x8] + strh r0, [r5, 0x12] + ldr r0, [sp, 0x20] + str r0, [r5, 0x44] + ldr r0, [sp, 0x24] + str r0, [r5, 0x48] + movs r2, 0 + add r6, sp, 0x2C + add r4, sp, 0x54 + mov r8, r4 + mov r4, sp + adds r4, 0x16 + add r3, sp, 0x18 + adds r1, r5, 0 + adds r1, 0x14 +_0806FED8: + adds r0, r4, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1, 0x2] + adds r1, 0x1 + adds r2, 0x1 + cmp r2, 0x1 + ble _0806FED8 + ldr r0, [sp, 0x1C] + str r0, [r5, 0x18] + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r6, 0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [sp, 0x28] + str r0, [r5, 0x40] + adds r4, r5, 0 + adds r4, 0x58 + add r0, sp, 0xC + movs r1, 0 + ldrsh r0, [r0, r1] + bl GetMonSpecies + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0xA + bl BoundedCopyStringtoBuffer + adds r0, r7, 0 + bl GetFriendAreaStatus + lsls r0, 24 + cmp r0, 0 + bne _0806FF34 + adds r0, r7, 0 + bl UnlockFriendArea + movs r2, 0x1 + mov r9, r2 +_0806FF34: + bl sub_8097848 + movs r1, 0xFA + lsls r1, 1 + mov r0, r10 + ldr r2, [sp, 0x58] + bl sub_8068FE0 + add r0, sp, 0xC + movs r3, 0 + ldrsh r0, [r0, r3] + add r1, sp, 0xC + movs r2, 0x4 + ldrsh r1, [r1, r2] + add r2, sp, 0xC + movs r3, 0x6 + ldrsh r2, [r2, r3] + mov r3, r8 + str r3, [sp] + movs r3, 0 + str r3, [sp, 0x4] + str r3, [sp, 0x8] + adds r3, r5, 0 + bl sub_806B8CC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0806FF88 + strh r0, [r5] + b _0806FFF6 + .align 2, 0 +_0806FF74: .4byte gRecruitedPokemonRef +_0806FF78: .4byte 0x00008df8 +_0806FF7C: .4byte 0x0000ffff +_0806FF80: .4byte gDungeonGlobalData +_0806FF84: .4byte 0x00000644 +_0806FF88: + ldr r0, _0806FF9C + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl sub_8052B8C + cmp r0, 0x1 + bne _0806FFB8 + b _0806FFAC + .align 2, 0 +_0806FF9C: .4byte gUnknown_80FA090 +_0806FFA0: + ldr r0, _08070008 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl PrintFieldMessage +_0806FFAC: + adds r0, r4, 0 + bl sub_805FBE8 + lsls r0, 24 + cmp r0, 0 + beq _0806FFA0 +_0806FFB8: + mov r4, r9 + cmp r4, 0 + beq _0806FFE6 + bl xxx_call_GetLeaderEntity + adds r1, r0, 0 + ldr r0, _0807000C + movs r2, 0 + bl SetMessageArgument + ldr r0, _08070010 + adds r1, r7, 0 + bl sub_8092558 + movs r0, 0xCE + bl PlaySound + ldr r0, _08070014 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl PrintFieldMessage +_0806FFE6: + ldr r0, _08070018 + adds r1, r5, 0 + movs r2, 0 + bl sub_808D9DC + ldr r0, [sp, 0x54] + ldr r1, [sp, 0x5C] + str r0, [r1] +_0806FFF6: + movs r0, 0x1 +_0806FFF8: + add sp, 0x60 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08070008: .4byte gUnknown_80FA0C8 +_0807000C: .4byte gAvailablePokemonNames +_08070010: .4byte gUnknown_202E628 +_08070014: .4byte gUnknown_80FA120 +_08070018: .4byte gUnknown_202E088 + thumb_func_end sub_806FDF4 + + .align 2,0 |