diff options
Diffstat (limited to 'asm/code_80495E4.s')
-rw-r--r-- | asm/code_80495E4.s | 3330 |
1 files changed, 3330 insertions, 0 deletions
diff --git a/asm/code_80495E4.s b/asm/code_80495E4.s new file mode 100644 index 0000000..58b1087 --- /dev/null +++ b/asm/code_80495E4.s @@ -0,0 +1,3330 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80495E4 +sub_80495E4: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r2, 0 + ldr r0, _08049658 + mov r9, r0 + mov r12, r9 + ldr r7, _0804965C + ldr r1, _08049660 + mov r8, r1 +_080495FA: + lsls r1, r2, 3 + lsls r0, r2, 2 + adds r6, r2, 0x1 + subs r1, r2 + adds r0, r2 + lsls r0, 2 + adds r0, r2 + lsls r0, 6 + movs r4, 0 + lsls r2, r1, 5 + mov r3, r8 + adds r5, r0, r3 + movs r3, 0x37 +_08049614: + mov r1, r12 + ldr r0, [r1] + adds r1, r0, r7 + adds r1, r2 + adds r0, r5 + adds r0, r4 + str r0, [r1] + adds r4, 0x18 + adds r2, 0x4 + subs r3, 0x1 + cmp r3, 0 + bge _08049614 + adds r2, r6, 0 + cmp r2, 0x1F + ble _080495FA + movs r2, 0 + mov r3, r9 + ldr r1, [r3] + ldr r4, _08049664 + adds r0, r1, r4 + movs r3, 0 + strh r2, [r0] + adds r4, 0x2 + adds r0, r1, r4 + strh r2, [r0] + ldr r0, _08049668 + adds r1, r0 + strb r3, [r1] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08049658: .4byte gDungeonGlobalData +_0804965C: .4byte 0x0000e8c0 +_08049660: .4byte 0x00003a18 +_08049664: .4byte 0x00003a0e +_08049668: .4byte 0x00013570 + thumb_func_end sub_80495E4 + + thumb_func_start sub_804966C +sub_804966C: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + ldr r1, _08049734 + ldr r0, _08049738 + mov r8, r0 + ldr r6, _0804973C + ldr r0, [r6] + ldr r5, _08049740 + adds r0, r5 + movs r2, 0 + ldrsh r0, [r0, r2] + add r0, r8 + ldrb r2, [r0] + mov r0, sp + bl sprintf + ldr r7, _08049744 + mov r0, sp + adds r1, r7, 0 + bl OpenFileAndGetFileDataPtr + adds r4, r0, 0 + ldr r0, _08049748 + movs r1, 0 + adds r2, r4, 0 + bl DecompressATGlobalFile + adds r0, r4, 0 + bl CloseFile + ldr r1, _0804974C + ldr r0, [r6] + adds r0, r5 + movs r3, 0 + ldrsh r2, [r0, r3] + mov r0, sp + bl sprintf + mov r0, sp + adds r1, r7, 0 + bl OpenFileAndGetFileDataPtr + ldr r1, _08049750 + str r0, [r1] + ldr r1, _08049754 + ldr r0, [r6] + adds r0, r5 + movs r4, 0 + ldrsh r0, [r0, r4] + add r0, r8 + ldrb r2, [r0] + mov r0, sp + bl sprintf + mov r0, sp + adds r1, r7, 0 + bl OpenFileAndGetFileDataPtr + adds r4, r0, 0 + ldr r0, [r6] + ldr r1, _08049758 + adds r0, r1 + ldr r1, _0804975C + adds r2, r4, 0 + bl DecompressATFile + adds r0, r4, 0 + bl CloseFile + ldr r0, [r6] + adds r2, r0, r5 + movs r3, 0 + ldrsh r0, [r2, r3] + cmp r0, 0x3F + bgt _08049768 + ldr r1, _08049760 + add r0, r8 + ldrb r2, [r0] + mov r0, sp + bl sprintf + mov r0, sp + adds r1, r7, 0 + bl OpenFileAndGetFileDataPtr + adds r4, r0, 0 + ldr r0, [r6] + ldr r1, _08049764 + adds r0, r1 + movs r1, 0x93 + lsls r1, 4 + adds r2, r4, 0 + bl DecompressATFile + adds r0, r4, 0 + bl CloseFile + b _08049794 + .align 2, 0 +_08049734: .4byte gUnknown_80F6A04 +_08049738: .4byte gUnknown_8108EC0 +_0804973C: .4byte gDungeonGlobalData +_08049740: .4byte 0x00003a0e +_08049744: .4byte gDungeonFileArchive +_08049748: .4byte 0x06008000 +_0804974C: .4byte gUnknown_80F6A10 +_08049750: .4byte gUnknown_202EE88 +_08049754: .4byte gUnknown_80F6A1C +_08049758: .4byte 0x00011884 +_0804975C: .4byte 0x00001194 +_08049760: .4byte gUnknown_80F6A28 +_08049764: .4byte 0x00012c24 +_08049768: + ldr r1, _080497E8 + movs r3, 0 + ldrsh r2, [r2, r3] + mov r0, sp + bl sprintf + mov r0, sp + adds r1, r7, 0 + bl OpenFileAndGetFileDataPtr + adds r4, r0, 0 + ldr r0, [r6] + ldr r1, _080497EC + adds r0, r1 + movs r1, 0x90 + lsls r1, 2 + adds r2, r4, 0 + bl DecompressATFile + adds r0, r4, 0 + bl CloseFile +_08049794: + ldr r1, _080497F0 + ldr r5, _080497F4 + ldr r0, [r5] + ldr r4, _080497F8 + adds r0, r4 + movs r3, 0 + ldrsh r2, [r0, r3] + mov r0, sp + bl sprintf + ldr r1, _080497FC + mov r0, sp + bl OpenFileAndGetFileDataPtr + adds r1, r0, 0 + ldr r0, _08049800 + str r1, [r0] + ldr r0, _08049804 + movs r2, 0x20 + bl sub_8004AA4 + ldr r2, _08049808 + movs r6, 0 + strb r6, [r2] + movs r3, 0x1 + strb r3, [r2, 0x1] + movs r0, 0x2 + strb r0, [r2, 0x2] + movs r0, 0x3 + strb r0, [r2, 0x3] + ldr r1, _0804980C + ldr r0, [r5] + adds r0, r4 + movs r4, 0 + ldrsh r0, [r0, r4] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08049810 + strb r3, [r2, 0x4] + strb r6, [r2, 0x5] + b _08049814 + .align 2, 0 +_080497E8: .4byte gUnknown_80F6A34 +_080497EC: .4byte 0x00012c24 +_080497F0: .4byte gUnknown_80F6A40 +_080497F4: .4byte gDungeonGlobalData +_080497F8: .4byte 0x00003a0e +_080497FC: .4byte gDungeonFileArchive +_08049800: .4byte gUnknown_202F18C +_08049804: .4byte gUnknown_202EE8C +_08049808: .4byte gWalkableTileToCrossableTerrain +_0804980C: .4byte gDungeonWaterType +_08049810: + strb r6, [r2, 0x4] + strb r3, [r2, 0x5] +_08049814: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804966C + + thumb_func_start sub_8049820 +sub_8049820: + push {lr} + ldr r0, _08049838 + ldr r0, [r0] + bl CloseFile + ldr r0, _0804983C + ldr r0, [r0] + bl CloseFile + pop {r0} + bx r0 + .align 2, 0 +_08049838: .4byte gUnknown_202F18C +_0804983C: .4byte gUnknown_202EE88 + thumb_func_end sub_8049820 + + thumb_func_start sub_8049840 +sub_8049840: + push {lr} + ldr r0, _08049860 + ldr r0, [r0] + ldr r1, _08049864 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + bl sub_8043CE4 + lsls r0, 24 + cmp r0, 0 + beq _08049870 + ldr r1, _08049868 + ldr r0, _0804986C + b _08049874 + .align 2, 0 +_08049860: .4byte gDungeonGlobalData +_08049864: .4byte 0x00003a0e +_08049868: .4byte gUnknown_203B430 +_0804986C: .4byte gUnknown_80F69EC +_08049870: + ldr r1, _0804987C + ldr r0, _08049880 +_08049874: + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0804987C: .4byte gUnknown_203B430 +_08049880: .4byte gUnknown_80F69D4 + thumb_func_end sub_8049840 + + thumb_func_start sub_8049884 +sub_8049884: + push {r4-r6,lr} + movs r5, 0 +_08049888: + movs r4, 0 + adds r6, r5, 0x1 +_0804988C: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80498A8 + adds r4, 0x1 + cmp r4, 0x37 + ble _0804988C + adds r5, r6, 0 + cmp r5, 0x1F + ble _08049888 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8049884 + + thumb_func_start sub_80498A8 +sub_80498A8: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + mov r10, r0 + mov r9, r1 + cmp r0, 0 + bge _080498BE + b _08049B72 +_080498BE: + cmp r1, 0 + bge _080498C4 + b _08049B72 +_080498C4: + cmp r0, 0x37 + ble _080498CA + b _08049B72 +_080498CA: + cmp r1, 0x1F + ble _080498D0 + b _08049B72 +_080498D0: + movs r7, 0 + bl GetMapTile_1 + ldrh r0, [r0] + movs r1, 0x3 + mov r8, r1 + mov r6, r8 + ands r6, r0 + str r6, [sp, 0x20] + ldr r4, _08049914 + ldr r0, [r4] + ldr r3, _08049918 + adds r0, r3 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x3F + ble _08049928 + mov r3, r10 + cmp r3, 0x17 + bgt _0804991C + mov r0, r9 + cmp r0, 0x17 + bgt _0804991C + mov r0, r10 + mov r1, r9 + bl GetMapTile_2 + ldr r2, [r4] + mov r3, r9 + lsls r1, r3, 1 + add r1, r9 + lsls r1, 3 + add r1, r10 + b _08049B68 + .align 2, 0 +_08049914: .4byte gDungeonGlobalData +_08049918: .4byte 0x00003a0e +_0804991C: + mov r0, r10 + mov r1, r9 + bl GetMapTile_2 + movs r1, 0 + b _08049B70 +_08049928: + mov r0, r9 + adds r0, 0x1 + str r0, [sp, 0x24] + mov r0, r10 + ldr r1, [sp, 0x24] + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + str r0, [sp] + mov r4, r10 + adds r4, 0x1 + adds r0, r4, 0 + ldr r1, [sp, 0x24] + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + str r0, [sp, 0x4] + adds r0, r4, 0 + mov r1, r9 + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + str r0, [sp, 0x8] + mov r5, r9 + subs r5, 0x1 + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + str r0, [sp, 0xC] + mov r0, r10 + adds r1, r5, 0 + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + str r0, [sp, 0x10] + subs r4, 0x2 + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + str r0, [sp, 0x14] + adds r0, r4, 0 + mov r1, r9 + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + str r0, [sp, 0x18] + adds r0, r4, 0 + ldr r1, [sp, 0x24] + bl GetMapTile_1 + ldrh r0, [r0] + mov r1, r8 + ands r1, r0 + str r1, [sp, 0x1C] + cmp r6, 0x1 + bne _08049A1E + movs r7, 0xFF + ldr r0, [sp] + cmp r0, 0 + bne _080499C6 + movs r7, 0xFE +_080499C6: + ldr r0, [sp, 0x4] + cmp r0, 0 + bne _080499D2 + movs r0, 0x3 + negs r0, r0 + ands r7, r0 +_080499D2: + ldr r0, [sp, 0x8] + cmp r0, 0 + bne _080499DE + movs r0, 0x5 + negs r0, r0 + ands r7, r0 +_080499DE: + ldr r0, [sp, 0xC] + cmp r0, 0 + bne _080499EA + movs r0, 0x9 + negs r0, r0 + ands r7, r0 +_080499EA: + ldr r0, [sp, 0x10] + cmp r0, 0 + bne _080499F6 + movs r0, 0x11 + negs r0, r0 + ands r7, r0 +_080499F6: + ldr r0, [sp, 0x14] + cmp r0, 0 + bne _08049A02 + movs r0, 0x21 + negs r0, r0 + ands r7, r0 +_08049A02: + ldr r0, [sp, 0x18] + cmp r0, 0 + bne _08049A0E + movs r0, 0x41 + negs r0, r0 + ands r7, r0 +_08049A0E: + cmp r1, 0 + bne _08049A18 + movs r0, 0x81 + negs r0, r0 + ands r7, r0 +_08049A18: + movs r0, 0x80 + lsls r0, 2 + b _08049B3A +_08049A1E: + cmp r6, 0x2 + bne _08049A84 + movs r7, 0xFF + ldr r0, [sp] + cmp r0, 0x2 + beq _08049A2C + movs r7, 0xFE +_08049A2C: + ldr r0, [sp, 0x4] + cmp r0, 0x2 + beq _08049A38 + movs r0, 0x3 + negs r0, r0 + ands r7, r0 +_08049A38: + ldr r0, [sp, 0x8] + cmp r0, 0x2 + beq _08049A44 + movs r0, 0x5 + negs r0, r0 + ands r7, r0 +_08049A44: + ldr r0, [sp, 0xC] + cmp r0, 0x2 + beq _08049A50 + movs r0, 0x9 + negs r0, r0 + ands r7, r0 +_08049A50: + ldr r0, [sp, 0x10] + cmp r0, 0x2 + beq _08049A5C + movs r0, 0x11 + negs r0, r0 + ands r7, r0 +_08049A5C: + ldr r0, [sp, 0x14] + cmp r0, 0x2 + beq _08049A68 + movs r0, 0x21 + negs r0, r0 + ands r7, r0 +_08049A68: + ldr r0, [sp, 0x18] + cmp r0, 0x2 + beq _08049A74 + movs r0, 0x41 + negs r0, r0 + ands r7, r0 +_08049A74: + cmp r1, 0x2 + beq _08049A7E + movs r0, 0x81 + negs r0, r0 + ands r7, r0 +_08049A7E: + movs r0, 0x80 + lsls r0, 1 + b _08049B3A +_08049A84: + ldr r1, [sp, 0x20] + cmp r1, 0x3 + bne _08049AEE + movs r7, 0xFF + ldr r0, [sp] + cmp r0, 0x3 + beq _08049A94 + movs r7, 0xFE +_08049A94: + ldr r0, [sp, 0x4] + cmp r0, 0x3 + beq _08049AA0 + movs r0, 0x3 + negs r0, r0 + ands r7, r0 +_08049AA0: + ldr r0, [sp, 0x8] + cmp r0, 0x3 + beq _08049AAC + movs r0, 0x5 + negs r0, r0 + ands r7, r0 +_08049AAC: + ldr r0, [sp, 0xC] + cmp r0, 0x3 + beq _08049AB8 + movs r0, 0x9 + negs r0, r0 + ands r7, r0 +_08049AB8: + ldr r0, [sp, 0x10] + cmp r0, 0x3 + beq _08049AC4 + movs r0, 0x11 + negs r0, r0 + ands r7, r0 +_08049AC4: + ldr r0, [sp, 0x14] + cmp r0, 0x3 + beq _08049AD0 + movs r0, 0x21 + negs r0, r0 + ands r7, r0 +_08049AD0: + ldr r0, [sp, 0x18] + cmp r0, 0x3 + beq _08049ADC + movs r0, 0x41 + negs r0, r0 + ands r7, r0 +_08049ADC: + ldr r0, [sp, 0x1C] + cmp r0, 0x3 + beq _08049AE8 + movs r0, 0x81 + negs r0, r0 + ands r7, r0 +_08049AE8: + movs r0, 0x80 + lsls r0, 1 + b _08049B3A +_08049AEE: + ldr r0, [sp] + cmp r0, 0 + bne _08049AF6 + movs r7, 0x1 +_08049AF6: + ldr r0, [sp, 0x4] + cmp r0, 0 + bne _08049B00 + movs r0, 0x2 + orrs r7, r0 +_08049B00: + ldr r0, [sp, 0x8] + cmp r0, 0 + bne _08049B0A + movs r0, 0x4 + orrs r7, r0 +_08049B0A: + ldr r0, [sp, 0xC] + cmp r0, 0 + bne _08049B14 + movs r0, 0x8 + orrs r7, r0 +_08049B14: + ldr r0, [sp, 0x10] + cmp r0, 0 + bne _08049B1E + movs r0, 0x10 + orrs r7, r0 +_08049B1E: + ldr r0, [sp, 0x14] + cmp r0, 0 + bne _08049B28 + movs r0, 0x20 + orrs r7, r0 +_08049B28: + ldr r0, [sp, 0x18] + cmp r0, 0 + bne _08049B32 + movs r0, 0x40 + orrs r7, r0 +_08049B32: + ldr r0, [sp, 0x1C] + cmp r0, 0 + bne _08049B3C + movs r0, 0x80 +_08049B3A: + orrs r7, r0 +_08049B3C: + movs r0, 0x4 + bl RandomCapped + adds r4, r0, 0 + cmp r4, 0x3 + bne _08049B4A + movs r4, 0 +_08049B4A: + bl IsBossBattle + lsls r0, 24 + cmp r0, 0 + beq _08049B56 + movs r4, 0 +_08049B56: + mov r0, r10 + mov r1, r9 + bl GetMapTile_2 + ldr r1, _08049B84 + ldr r2, [r1] + lsls r1, r7, 1 + adds r1, r7 + adds r1, r4, r1 +_08049B68: + ldr r3, _08049B88 + adds r2, r3 + adds r2, r1 + ldrb r1, [r2] +_08049B70: + strb r1, [r0, 0x8] +_08049B72: + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08049B84: .4byte gDungeonGlobalData +_08049B88: .4byte 0x00012c24 + thumb_func_end sub_80498A8 + + thumb_func_start sub_8049B8C +sub_8049B8C: + push {r4-r6,lr} + movs r5, 0 +_08049B90: + movs r4, 0 + adds r6, r5, 0x1 +_08049B94: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8049BB0 + adds r4, 0x1 + cmp r4, 0x37 + ble _08049B94 + adds r5, r6, 0 + cmp r5, 0x1F + ble _08049B90 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8049B8C + + thumb_func_start sub_8049BB0 +sub_8049BB0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x44 + mov r10, r0 + str r1, [sp, 0x40] + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + adds r0, r1, 0 + adds r0, 0x1 + mov r9, r0 + mov r0, r10 + mov r1, r9 + bl GetMapTile_1 + ldrh r1, [r0] + movs r4, 0x3 + adds r0, r4, 0 + ands r0, r1 + add r6, sp, 0x18 + str r0, [sp, 0x18] + mov r5, r10 + adds r5, 0x1 + adds r0, r5, 0 + mov r1, r9 + bl GetMapTile_1 + ldrh r1, [r0] + adds r0, r4, 0 + ands r0, r1 + str r0, [r6, 0x4] + adds r0, r5, 0 + ldr r1, [sp, 0x40] + bl GetMapTile_1 + ldrh r1, [r0] + adds r0, r4, 0 + ands r0, r1 + str r0, [r6, 0x8] + ldr r0, [sp, 0x40] + subs r0, 0x1 + mov r8, r0 + adds r0, r5, 0 + mov r1, r8 + bl GetMapTile_1 + ldrh r1, [r0] + adds r0, r4, 0 + ands r0, r1 + str r0, [r6, 0xC] + mov r0, r10 + mov r1, r8 + bl GetMapTile_1 + ldrh r1, [r0] + adds r0, r4, 0 + ands r0, r1 + str r0, [r6, 0x10] + subs r5, 0x2 + adds r0, r5, 0 + mov r1, r8 + bl GetMapTile_1 + ldrh r1, [r0] + adds r0, r4, 0 + ands r0, r1 + str r0, [r6, 0x14] + adds r0, r5, 0 + ldr r1, [sp, 0x40] + bl GetMapTile_1 + ldrh r1, [r0] + adds r0, r4, 0 + ands r0, r1 + str r0, [r6, 0x18] + adds r0, r5, 0 + mov r1, r9 + bl GetMapTile_1 + ldrh r0, [r0] + ands r4, r0 + str r4, [r6, 0x1C] + ldr r1, [sp, 0x18] + cmp r1, 0x1 + bne _08049C6A + ldr r0, [sp] + orrs r0, r1 + str r0, [sp] +_08049C6A: + ldr r0, [r6, 0x8] + cmp r0, 0x1 + bne _08049C78 + ldr r0, [sp] + movs r1, 0x4 + orrs r0, r1 + str r0, [sp] +_08049C78: + ldr r0, [r6, 0x10] + cmp r0, 0x1 + bne _08049C86 + ldr r0, [sp] + movs r1, 0x10 + orrs r0, r1 + str r0, [sp] +_08049C86: + ldr r0, [r6, 0x18] + cmp r0, 0x1 + bne _08049C94 + ldr r0, [sp] + movs r1, 0x40 + orrs r0, r1 + str r0, [sp] +_08049C94: + ldr r2, [sp, 0x18] + cmp r2, 0 + beq _08049CAE + ldr r0, [r6, 0x4] + cmp r0, 0x1 + bne _08049CAE + ldr r0, [r6, 0x8] + cmp r0, 0 + beq _08049CC8 + ldr r0, [sp] + movs r1, 0x2 + orrs r0, r1 + str r0, [sp] +_08049CAE: + ldr r0, [r6, 0x8] + cmp r0, 0 + beq _08049CC8 + ldr r0, [r6, 0xC] + cmp r0, 0x1 + bne _08049CC8 + ldr r0, [r6, 0x10] + cmp r0, 0 + beq _08049CE2 + ldr r0, [sp] + movs r1, 0x8 + orrs r0, r1 + str r0, [sp] +_08049CC8: + ldr r0, [r6, 0x10] + cmp r0, 0 + beq _08049CE2 + ldr r0, [r6, 0x14] + cmp r0, 0x1 + bne _08049CE2 + ldr r0, [r6, 0x18] + cmp r0, 0 + beq _08049CFA + ldr r0, [sp] + movs r1, 0x20 + orrs r0, r1 + str r0, [sp] +_08049CE2: + ldr r0, [r6, 0x18] + cmp r0, 0 + beq _08049CFA + ldr r0, [r6, 0x1C] + cmp r0, 0x1 + bne _08049CFA + cmp r2, 0 + beq _08049CFA + ldr r0, [sp] + movs r1, 0x80 + orrs r0, r1 + str r0, [sp] +_08049CFA: + add r4, sp, 0x38 + movs r7, 0x1 + adds r2, r4, 0 + adds r1, r6, 0 + movs r5, 0 + movs r3, 0x7 +_08049D06: + ldr r0, [r1] + subs r0, 0x1 + cmp r0, 0x1 + bhi _08049D12 + strb r7, [r2] + b _08049D14 +_08049D12: + strb r5, [r2] +_08049D14: + adds r2, 0x1 + adds r1, 0x4 + subs r3, 0x1 + cmp r3, 0 + bge _08049D06 + ldrb r0, [r4] + cmp r0, 0 + beq _08049D2C + ldr r0, [sp, 0x4] + movs r1, 0x1 + orrs r0, r1 + str r0, [sp, 0x4] +_08049D2C: + ldrb r0, [r4, 0x2] + cmp r0, 0 + beq _08049D3A + ldr r0, [sp, 0x4] + movs r1, 0x4 + orrs r0, r1 + str r0, [sp, 0x4] +_08049D3A: + ldrb r0, [r4, 0x4] + cmp r0, 0 + beq _08049D48 + ldr r0, [sp, 0x4] + movs r1, 0x10 + orrs r0, r1 + str r0, [sp, 0x4] +_08049D48: + ldrb r0, [r4, 0x6] + cmp r0, 0 + beq _08049D56 + ldr r0, [sp, 0x4] + movs r1, 0x40 + orrs r0, r1 + str r0, [sp, 0x4] +_08049D56: + ldr r2, [sp, 0x18] + cmp r2, 0 + beq _08049D70 + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _08049D70 + ldr r0, [r6, 0x8] + cmp r0, 0 + beq _08049D8A + ldr r0, [sp, 0x4] + movs r1, 0x2 + orrs r0, r1 + str r0, [sp, 0x4] +_08049D70: + ldr r0, [r6, 0x8] + cmp r0, 0 + beq _08049D8A + ldrb r0, [r4, 0x3] + cmp r0, 0 + beq _08049D8A + ldr r0, [r6, 0x10] + cmp r0, 0 + beq _08049DA4 + ldr r0, [sp, 0x4] + movs r1, 0x8 + orrs r0, r1 + str r0, [sp, 0x4] +_08049D8A: + ldr r0, [r6, 0x10] + cmp r0, 0 + beq _08049DA4 + ldrb r0, [r4, 0x5] + cmp r0, 0 + beq _08049DA4 + ldr r0, [r6, 0x18] + cmp r0, 0 + beq _08049DBC + ldr r0, [sp, 0x4] + movs r1, 0x20 + orrs r0, r1 + str r0, [sp, 0x4] +_08049DA4: + ldr r0, [r6, 0x18] + cmp r0, 0 + beq _08049DBC + ldrb r0, [r4, 0x7] + cmp r0, 0 + beq _08049DBC + cmp r2, 0 + beq _08049DC8 + ldr r0, [sp, 0x4] + movs r1, 0x80 + orrs r0, r1 + str r0, [sp, 0x4] +_08049DBC: + cmp r2, 0 + beq _08049DC8 + ldr r0, [sp, 0x8] + movs r1, 0x1 + orrs r0, r1 + str r0, [sp, 0x8] +_08049DC8: + ldr r0, [r6, 0x8] + cmp r0, 0 + beq _08049DD6 + ldr r0, [sp, 0x8] + movs r1, 0x4 + orrs r0, r1 + str r0, [sp, 0x8] +_08049DD6: + ldr r0, [r6, 0x10] + cmp r0, 0 + beq _08049DE4 + ldr r0, [sp, 0x8] + movs r1, 0x10 + orrs r0, r1 + str r0, [sp, 0x8] +_08049DE4: + ldr r0, [r6, 0x18] + cmp r0, 0 + beq _08049DF2 + ldr r0, [sp, 0x8] + movs r1, 0x40 + orrs r0, r1 + str r0, [sp, 0x8] +_08049DF2: + cmp r2, 0 + beq _08049E0A + ldr r0, [r6, 0x4] + cmp r0, 0 + beq _08049E0A + ldr r0, [r6, 0x8] + cmp r0, 0 + beq _08049E24 + ldr r0, [sp, 0x8] + movs r1, 0x2 + orrs r0, r1 + str r0, [sp, 0x8] +_08049E0A: + ldr r0, [r6, 0x8] + cmp r0, 0 + beq _08049E24 + ldr r0, [r6, 0xC] + cmp r0, 0 + beq _08049E24 + ldr r0, [r6, 0x10] + cmp r0, 0 + beq _08049E3E + ldr r0, [sp, 0x8] + movs r1, 0x8 + orrs r0, r1 + str r0, [sp, 0x8] +_08049E24: + ldr r0, [r6, 0x10] + cmp r0, 0 + beq _08049E3E + ldr r0, [r6, 0x14] + cmp r0, 0 + beq _08049E3E + ldr r0, [r6, 0x18] + cmp r0, 0 + beq _08049E56 + ldr r0, [sp, 0x8] + movs r1, 0x20 + orrs r0, r1 + str r0, [sp, 0x8] +_08049E3E: + ldr r0, [r6, 0x18] + cmp r0, 0 + beq _08049E56 + ldr r0, [r6, 0x1C] + cmp r0, 0 + beq _08049E56 + cmp r2, 0 + beq _08049E56 + ldr r0, [sp, 0x8] + movs r1, 0x80 + orrs r0, r1 + str r0, [sp, 0x8] +_08049E56: + movs r0, 0xFF + str r0, [sp, 0xC] + mov r0, r10 + cmp r0, 0x1 + bgt _08049E64 + movs r0, 0x1F + str r0, [sp, 0xC] +_08049E64: + ldr r0, [sp, 0x40] + cmp r0, 0x1 + bgt _08049E74 + ldr r0, [sp, 0xC] + movs r1, 0x39 + negs r1, r1 + ands r0, r1 + str r0, [sp, 0xC] +_08049E74: + mov r0, r10 + cmp r0, 0x35 + ble _08049E84 + ldr r0, [sp, 0xC] + movs r1, 0xF + negs r1, r1 + ands r0, r1 + str r0, [sp, 0xC] +_08049E84: + ldr r0, [sp, 0x40] + cmp r0, 0x1D + ble _08049E94 + ldr r0, [sp, 0xC] + movs r1, 0x84 + negs r1, r1 + ands r0, r1 + str r0, [sp, 0xC] +_08049E94: + mov r0, r10 + ldr r1, [sp, 0x40] + bl GetMapTile_2 + ldr r1, [sp] + strb r1, [r0, 0xA] + mov r0, r10 + ldr r1, [sp, 0x40] + bl GetMapTile_2 + ldr r1, [sp, 0x4] + strb r1, [r0, 0xB] + mov r0, r10 + ldr r1, [sp, 0x40] + bl GetMapTile_2 + ldr r1, [sp, 0x8] + strb r1, [r0, 0xC] + mov r0, r10 + ldr r1, [sp, 0x40] + bl GetMapTile_2 + ldr r1, [sp, 0xC] + strb r1, [r0, 0xD] + add sp, 0x44 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8049BB0 + + thumb_func_start sub_8049ED4 +sub_8049ED4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x38 + ldr r0, _08049F78 + ldr r6, [r0] + ldr r1, _08049F7C + adds r0, r6, r1 + ldrb r0, [r0] + str r0, [sp] + ldr r2, _08049F80 + adds r0, r6, r2 + ldrb r0, [r0] + str r0, [sp, 0x4] + ldr r4, _08049F84 + adds r0, r6, r4 + ldrh r0, [r0] + lsls r0, 16 + asrs r3, r0, 19 + ldr r1, _08049F88 + adds r0, r3, 0 + adds r0, 0x1E + lsls r0, 1 + adds r1, r0, r1 + movs r4, 0 + ldrsh r2, [r1, r4] + mov r10, r2 + ldr r1, _08049F8C + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + str r1, [sp, 0x10] + movs r4, 0 + str r4, [sp, 0x8] +_08049F1C: + ldr r1, _08049F90 + adds r0, r6, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 19 + subs r2, r0, 0x1 + mov r9, r2 + movs r1, 0x1F + ands r3, r1 + ldr r1, _08049F88 + adds r0, 0x1D + lsls r0, 1 + adds r1, r0, r1 + movs r2, 0 + ldrsh r4, [r1, r2] + mov r8, r4 + ldr r1, _08049F8C + adds r0, r1 + movs r1, 0 + ldrsh r4, [r0, r1] + str r4, [sp, 0x14] + mov r2, r8 + lsls r0, r2, 1 + add r0, r8 + mov r4, r10 + adds r7, r4, r0 + ldr r0, [sp, 0x10] + ldr r1, [sp, 0x14] + str r3, [sp, 0x34] + bl GetMapTile_1 + adds r5, r0, 0 + ldrh r2, [r5] + movs r1, 0x80 + lsls r1, 5 + adds r0, r1, 0 + ands r0, r2 + ldr r3, [sp, 0x34] + cmp r0, 0 + beq _08049F98 + lsls r0, r7, 1 + ldr r2, _08049F94 + adds r0, r2 + adds r2, r6, r0 + b _0804A06A + .align 2, 0 +_08049F78: .4byte gDungeonGlobalData +_08049F7C: .4byte 0x00018210 +_08049F80: .4byte 0x0001820f +_08049F84: .4byte 0x000181f0 +_08049F88: .4byte gUnknown_80F6A4A +_08049F8C: .4byte gUnknown_80F6C06 +_08049F90: .4byte 0x000181f2 +_08049F94: .4byte 0x00012bec +_08049F98: + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + beq _08049FAC + lsls r0, r7, 1 + ldr r4, _08049FA8 + b _08049FD2 + .align 2, 0 +_08049FA8: .4byte 0x00012bda +_08049FAC: + ldr r0, [sp] + cmp r0, 0 + beq _08049FC4 + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r2, _08049FC0 + adds r1, r2 + b _0804A064 + .align 2, 0 +_08049FC0: .4byte 0x00011884 +_08049FC4: + ldrh r1, [r5, 0x4] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08049FDC + lsls r0, r7, 1 + ldr r4, _08049FD8 +_08049FD2: + adds r0, r4 + adds r2, r6, r0 + b _0804A06A + .align 2, 0 +_08049FD8: .4byte 0x00012bfe +_08049FDC: + ldr r4, [r5, 0x14] + cmp r4, 0 + beq _0804A028 + adds r0, r4, 0 + str r3, [sp, 0x34] + bl GetEntityType + ldr r3, [sp, 0x34] + cmp r0, 0x2 + bne _0804A014 + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + bne _0804A000 + ldr r0, [sp, 0x4] + cmp r0, 0 + beq _0804A014 +_0804A000: + ldr r0, [r4, 0x70] + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r1, _0804A010 + adds r0, r1 + b _0804A046 + .align 2, 0 +_0804A010: .4byte 0x00012a18 +_0804A014: + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r2, _0804A024 + adds r1, r2 + b _0804A064 + .align 2, 0 +_0804A024: .4byte 0x00011884 +_0804A028: + movs r4, 0x80 + lsls r4, 2 + adds r0, r4, 0 + ands r0, r2 + cmp r0, 0 + beq _0804A058 + ldr r1, _0804A050 + adds r0, r6, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r4, _0804A054 + adds r0, r4 +_0804A046: + adds r0, r6, r0 + lsls r1, r7, 1 + adds r2, r0, r1 + b _0804A06A + .align 2, 0 +_0804A050: .4byte 0x00003a12 +_0804A054: .4byte 0x00012a18 +_0804A058: + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r0, _0804A0E8 + adds r1, r0 +_0804A064: + adds r1, r6, r1 + lsls r0, r7, 1 + adds r2, r1, r0 +_0804A06A: + lsls r1, r3, 1 + str r1, [sp, 0x30] + adds r3, 0x1 + str r3, [sp, 0x2C] + mov r4, r10 + adds r4, 0x1 + str r4, [sp, 0x28] + ldr r0, [sp, 0x8] + adds r0, 0x1 + str r0, [sp, 0x24] + mov r1, r10 + lsls r3, r1, 1 + ldr r4, _0804A0EC + adds r4, r3, r4 + str r4, [sp, 0x18] + ldr r0, _0804A0F0 + adds r0, r3, r0 + str r0, [sp, 0x1C] + ldr r1, _0804A0F4 + adds r1, r3, r1 + str r1, [sp, 0x20] + movs r4, 0x16 + str r4, [sp, 0xC] +_0804A098: + movs r0, 0x1F + mov r1, r9 + ands r1, r0 + mov r9, r1 + lsls r0, r1, 6 + ldr r4, [sp, 0x30] + adds r0, r4, r0 + ldr r1, _0804A0F8 + adds r0, r1 + ldrh r1, [r2] + strh r1, [r0] + adds r2, 0x6 + movs r4, 0x1 + add r9, r4 + add r8, r4 + mov r0, r8 + cmp r0, 0x3 + bne _0804A1AC + movs r1, 0 + mov r8, r1 + ldr r2, [sp, 0x14] + adds r2, 0x1 + str r2, [sp, 0x14] + mov r7, r10 + ldr r0, [sp, 0x10] + adds r1, r2, 0 + str r3, [sp, 0x34] + bl GetMapTile_1 + adds r5, r0, 0 + ldrh r2, [r5] + movs r0, 0x20 + ands r0, r2 + ldr r3, [sp, 0x34] + cmp r0, 0 + beq _0804A0FC + ldr r4, [sp, 0x18] + adds r2, r6, r4 + b _0804A1AC + .align 2, 0 +_0804A0E8: .4byte 0x00011884 +_0804A0EC: .4byte 0x00012bda +_0804A0F0: .4byte 0x00012bec +_0804A0F4: .4byte 0x00012bfe +_0804A0F8: .4byte gUnknown_202C838 +_0804A0FC: + movs r1, 0x80 + lsls r1, 5 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _0804A10E + ldr r4, [sp, 0x1C] + adds r2, r6, r4 + b _0804A1AC +_0804A10E: + ldr r0, [sp] + cmp r0, 0 + bne _0804A19C + ldrh r1, [r5, 0x4] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0804A124 + ldr r4, [sp, 0x20] + adds r2, r6, r4 + b _0804A1AC +_0804A124: + ldr r4, [r5, 0x14] + cmp r4, 0 + beq _0804A174 + adds r0, r4, 0 + str r3, [sp, 0x34] + bl GetEntityType + ldr r3, [sp, 0x34] + cmp r0, 0x2 + bne _0804A15C + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + bne _0804A148 + ldr r0, [sp, 0x4] + cmp r0, 0 + beq _0804A15C +_0804A148: + ldr r0, [r4, 0x70] + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r1, _0804A158 + b _0804A1A6 + .align 2, 0 +_0804A158: .4byte 0x00012a18 +_0804A15C: + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r2, _0804A170 + adds r1, r2 + adds r1, r6, r1 + lsls r0, r7, 1 + adds r2, r1, r0 + b _0804A1AC + .align 2, 0 +_0804A170: .4byte 0x00011884 +_0804A174: + movs r4, 0x80 + lsls r4, 2 + adds r0, r4, 0 + ands r0, r2 + cmp r0, 0 + beq _0804A19C + ldr r1, _0804A194 + adds r0, r6, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r4, _0804A198 + adds r0, r4 + b _0804A1A8 + .align 2, 0 +_0804A194: .4byte 0x00003a12 +_0804A198: .4byte 0x00012a18 +_0804A19C: + ldrb r1, [r5, 0x8] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r1, _0804A1EC +_0804A1A6: + adds r0, r1 +_0804A1A8: + adds r0, r6, r0 + adds r2, r0, r3 +_0804A1AC: + ldr r4, [sp, 0xC] + subs r4, 0x1 + str r4, [sp, 0xC] + cmp r4, 0 + blt _0804A1B8 + b _0804A098 +_0804A1B8: + ldr r3, [sp, 0x2C] + ldr r0, [sp, 0x28] + mov r10, r0 + cmp r0, 0x3 + bne _0804A1CC + movs r1, 0 + mov r10, r1 + ldr r2, [sp, 0x10] + adds r2, 0x1 + str r2, [sp, 0x10] +_0804A1CC: + ldr r4, [sp, 0x24] + str r4, [sp, 0x8] + cmp r4, 0x1E + bgt _0804A1D6 + b _08049F1C +_0804A1D6: + movs r0, 0x3 + bl sub_80098F8 + add sp, 0x38 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804A1EC: .4byte 0x00011884 + thumb_func_end sub_8049ED4 + + thumb_func_start sub_804A1F0 +sub_804A1F0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + ldr r2, _0804A284 + ldr r7, [r2] + ldr r3, _0804A288 + adds r2, r7, r3 + ldrb r2, [r2] + str r2, [sp] + ldr r4, _0804A28C + adds r2, r7, r4 + ldrb r2, [r2] + str r2, [sp, 0x4] + ldr r5, _0804A290 + adds r2, r7, r5 + movs r3, 0 + ldrsh r2, [r2, r3] + adds r2, r0 + subs r4, 0x1D + adds r0, r7, r4 + movs r5, 0 + ldrsh r0, [r0, r5] + adds r0, r1 + asrs r0, 3 + asrs r2, 3 + str r2, [sp, 0x14] + subs r1, r0, 0x1 + mov r9, r1 + ldr r3, _0804A294 + adds r1, r2, 0 + adds r1, 0x1E + lsls r1, 1 + adds r2, r1, r3 + movs r5, 0 + ldrsh r4, [r2, r5] + str r4, [sp, 0x10] + ldr r2, _0804A298 + adds r1, r2 + movs r5, 0 + ldrsh r4, [r1, r5] + str r4, [sp, 0xC] + adds r0, 0x1D + lsls r0, 1 + adds r3, r0, r3 + movs r4, 0 + ldrsh r1, [r3, r4] + mov r8, r1 + adds r0, r2 + movs r1, 0 + ldrsh r5, [r0, r1] + mov r10, r5 + mov r2, r8 + lsls r0, r2, 1 + add r0, r8 + ldr r3, [sp, 0x10] + adds r6, r3, r0 + ldr r0, [sp, 0xC] + mov r1, r10 + bl GetMapTile_1 + adds r5, r0, 0 + ldrh r1, [r5] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0804A2A0 + lsls r0, r6, 1 + ldr r4, _0804A29C + adds r0, r4 + adds r2, r7, r0 + b _0804A356 + .align 2, 0 +_0804A284: .4byte gDungeonGlobalData +_0804A288: .4byte 0x00018210 +_0804A28C: .4byte 0x0001820f +_0804A290: .4byte 0x000181f0 +_0804A294: .4byte gUnknown_80F6A4A +_0804A298: .4byte gUnknown_80F6C06 +_0804A29C: .4byte 0x00012bda +_0804A2A0: + movs r0, 0x80 + lsls r0, 5 + ands r0, r1 + cmp r0, 0 + beq _0804A2B8 + lsls r0, r6, 1 + ldr r5, _0804A2B4 + adds r0, r5 + adds r2, r7, r0 + b _0804A356 + .align 2, 0 +_0804A2B4: .4byte 0x00012bec +_0804A2B8: + ldr r0, [sp] + cmp r0, 0 + beq _0804A2D0 + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r2, _0804A2CC + adds r1, r2 + b _0804A350 + .align 2, 0 +_0804A2CC: .4byte 0x00011884 +_0804A2D0: + ldr r4, [r5, 0x14] + cmp r4, 0 + beq _0804A318 + adds r0, r4, 0 + bl GetEntityType + cmp r0, 0x2 + bne _0804A304 + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + bne _0804A2F0 + ldr r3, [sp, 0x4] + cmp r3, 0 + beq _0804A304 +_0804A2F0: + ldr r0, [r4, 0x70] + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r4, _0804A300 + adds r0, r4 + b _0804A334 + .align 2, 0 +_0804A300: .4byte 0x00012a18 +_0804A304: + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r5, _0804A314 + adds r1, r5 + b _0804A350 + .align 2, 0 +_0804A314: .4byte 0x00011884 +_0804A318: + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _0804A344 + ldr r1, _0804A33C + adds r0, r7, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r3, _0804A340 + adds r0, r3 +_0804A334: + adds r0, r7, r0 + lsls r1, r6, 1 + adds r2, r0, r1 + b _0804A356 + .align 2, 0 +_0804A33C: .4byte 0x00003a12 +_0804A340: .4byte 0x00012a18 +_0804A344: + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r4, _0804A3AC + adds r1, r4 +_0804A350: + adds r1, r7, r1 + lsls r0, r6, 1 + adds r2, r1, r0 +_0804A356: + movs r5, 0x16 + str r5, [sp, 0x8] +_0804A35A: + movs r0, 0x1F + ldr r1, [sp, 0x14] + ands r1, r0 + str r1, [sp, 0x14] + mov r3, r9 + ands r3, r0 + mov r9, r3 + lsls r1, 1 + lsls r0, r3, 6 + adds r1, r0 + ldr r4, _0804A3B0 + adds r1, r4 + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x6 + movs r5, 0x1 + add r9, r5 + add r8, r5 + mov r0, r8 + cmp r0, 0x3 + beq _0804A386 + b _0804A476 +_0804A386: + movs r1, 0 + mov r8, r1 + add r10, r5 + ldr r6, [sp, 0x10] + ldr r0, [sp, 0xC] + mov r1, r10 + bl GetMapTile_1 + adds r5, r0, 0 + ldrh r1, [r5] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0804A3B8 + lsls r0, r6, 1 + ldr r2, _0804A3B4 + adds r0, r2 + adds r2, r7, r0 + b _0804A476 + .align 2, 0 +_0804A3AC: .4byte 0x00011884 +_0804A3B0: .4byte gUnknown_202C838 +_0804A3B4: .4byte 0x00012bda +_0804A3B8: + movs r3, 0x80 + lsls r3, 5 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _0804A3D4 + lsls r0, r6, 1 + ldr r4, _0804A3D0 + adds r0, r4 + adds r2, r7, r0 + b _0804A476 + .align 2, 0 +_0804A3D0: .4byte 0x00012bec +_0804A3D4: + ldr r0, [sp] + cmp r0, 0 + beq _0804A3EC + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r2, _0804A3E8 + adds r1, r2 + b _0804A470 + .align 2, 0 +_0804A3E8: .4byte 0x00011884 +_0804A3EC: + ldr r4, [r5, 0x14] + cmp r4, 0 + beq _0804A434 + adds r0, r4, 0 + bl GetEntityType + cmp r0, 0x2 + bne _0804A420 + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + bne _0804A40C + ldr r3, [sp, 0x4] + cmp r3, 0 + beq _0804A420 +_0804A40C: + ldr r0, [r4, 0x70] + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r4, _0804A41C + adds r0, r4 + b _0804A452 + .align 2, 0 +_0804A41C: .4byte 0x00012a18 +_0804A420: + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r5, _0804A430 + adds r1, r5 + b _0804A470 + .align 2, 0 +_0804A430: .4byte 0x00011884 +_0804A434: + movs r2, 0x80 + lsls r2, 2 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _0804A464 + ldr r3, _0804A45C + adds r0, r7, r3 + movs r4, 0 + ldrsh r1, [r0, r4] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r5, _0804A460 + adds r0, r5 +_0804A452: + adds r0, r7, r0 + lsls r1, r6, 1 + adds r2, r0, r1 + b _0804A476 + .align 2, 0 +_0804A45C: .4byte 0x00003a12 +_0804A460: .4byte 0x00012a18 +_0804A464: + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r0, _0804A498 + adds r1, r0 +_0804A470: + adds r1, r7, r1 + lsls r0, r6, 1 + adds r2, r1, r0 +_0804A476: + ldr r1, [sp, 0x8] + subs r1, 0x1 + str r1, [sp, 0x8] + cmp r1, 0 + blt _0804A482 + b _0804A35A +_0804A482: + movs r0, 0x3 + bl sub_80098F8 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804A498: .4byte 0x00011884 + thumb_func_end sub_804A1F0 + + thumb_func_start sub_804A49C +sub_804A49C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + ldr r2, _0804A52C + ldr r7, [r2] + ldr r3, _0804A530 + adds r2, r7, r3 + ldrb r2, [r2] + str r2, [sp] + ldr r4, _0804A534 + adds r2, r7, r4 + ldrb r2, [r2] + str r2, [sp, 0x4] + subs r3, 0x20 + adds r2, r7, r3 + movs r4, 0 + ldrsh r2, [r2, r4] + adds r2, r0 + adds r3, 0x2 + adds r0, r7, r3 + movs r4, 0 + ldrsh r0, [r0, r4] + adds r0, r1 + asrs r2, 3 + mov r8, r2 + asrs r0, 3 + str r0, [sp, 0x14] + ldr r2, _0804A538 + mov r0, r8 + adds r0, 0x1E + lsls r0, 1 + adds r1, r0, r2 + movs r4, 0 + ldrsh r3, [r1, r4] + mov r9, r3 + ldr r1, _0804A53C + adds r0, r1 + movs r4, 0 + ldrsh r3, [r0, r4] + mov r10, r3 + ldr r0, [sp, 0x14] + adds r0, 0x1E + lsls r0, 1 + adds r2, r0, r2 + movs r4, 0 + ldrsh r3, [r2, r4] + str r3, [sp, 0x10] + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + str r1, [sp, 0xC] + lsls r0, r3, 1 + adds r0, r3 + mov r3, r9 + adds r6, r3, r0 + mov r0, r10 + bl GetMapTile_1 + adds r5, r0, 0 + ldrh r1, [r5] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0804A544 + lsls r0, r6, 1 + ldr r4, _0804A540 + adds r0, r4 + adds r2, r7, r0 + b _0804A5DA + .align 2, 0 +_0804A52C: .4byte gDungeonGlobalData +_0804A530: .4byte 0x00018210 +_0804A534: .4byte 0x0001820f +_0804A538: .4byte gUnknown_80F6A4A +_0804A53C: .4byte gUnknown_80F6C06 +_0804A540: .4byte 0x00012bda +_0804A544: + movs r0, 0x80 + lsls r0, 5 + ands r0, r1 + cmp r0, 0 + beq _0804A55C + lsls r0, r6, 1 + ldr r1, _0804A558 + adds r0, r1 + adds r2, r7, r0 + b _0804A5DA + .align 2, 0 +_0804A558: .4byte 0x00012bec +_0804A55C: + ldr r2, [sp] + cmp r2, 0 + beq _0804A574 + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r3, _0804A570 + adds r1, r3 + b _0804A5D4 + .align 2, 0 +_0804A570: .4byte 0x00011884 +_0804A574: + ldr r4, [r5, 0x14] + cmp r4, 0 + beq _0804A59A + adds r0, r4, 0 + bl GetEntityType + cmp r0, 0x2 + bne _0804A5C8 + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + bne _0804A594 + ldr r0, [sp, 0x4] + cmp r0, 0 + beq _0804A5C8 +_0804A594: + ldr r0, [r4, 0x70] + ldrb r1, [r0] + b _0804A5AC +_0804A59A: + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _0804A5C8 + ldr r3, _0804A5C0 + adds r0, r7, r3 + movs r4, 0 + ldrsh r1, [r0, r4] +_0804A5AC: + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r1, _0804A5C4 + adds r0, r1 + adds r0, r7, r0 + lsls r1, r6, 1 + adds r2, r0, r1 + b _0804A5DA + .align 2, 0 +_0804A5C0: .4byte 0x00003a12 +_0804A5C4: .4byte 0x00012a18 +_0804A5C8: + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r2, _0804A638 + adds r1, r2 +_0804A5D4: + adds r1, r7, r1 + lsls r0, r6, 1 + adds r2, r1, r0 +_0804A5DA: + movs r3, 0x1E + str r3, [sp, 0x8] +_0804A5DE: + movs r0, 0x1F + mov r4, r8 + ands r4, r0 + mov r8, r4 + ldr r1, [sp, 0x14] + ands r1, r0 + str r1, [sp, 0x14] + lsls r1, r4, 1 + ldr r3, [sp, 0x14] + lsls r0, r3, 6 + adds r1, r0 + ldr r4, _0804A63C + adds r1, r4 + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + movs r0, 0x1 + add r8, r0 + add r9, r0 + mov r1, r9 + cmp r1, 0x3 + beq _0804A60C + b _0804A702 +_0804A60C: + movs r2, 0 + mov r9, r2 + add r10, r0 + ldr r3, [sp, 0x10] + lsls r0, r3, 1 + adds r6, r0, r3 + mov r0, r10 + ldr r1, [sp, 0xC] + bl GetMapTile_1 + adds r5, r0, 0 + ldrh r1, [r5] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0804A644 + lsls r0, r6, 1 + ldr r4, _0804A640 + adds r0, r4 + adds r2, r7, r0 + b _0804A702 + .align 2, 0 +_0804A638: .4byte 0x00011884 +_0804A63C: .4byte gUnknown_202C838 +_0804A640: .4byte 0x00012bda +_0804A644: + movs r2, 0x80 + lsls r2, 5 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _0804A660 + lsls r0, r6, 1 + ldr r3, _0804A65C + adds r0, r3 + adds r2, r7, r0 + b _0804A702 + .align 2, 0 +_0804A65C: .4byte 0x00012bec +_0804A660: + ldr r4, [sp] + cmp r4, 0 + beq _0804A678 + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r0, _0804A674 + adds r1, r0 + b _0804A6FC + .align 2, 0 +_0804A674: .4byte 0x00011884 +_0804A678: + ldr r4, [r5, 0x14] + cmp r4, 0 + beq _0804A6C0 + adds r0, r4, 0 + bl GetEntityType + cmp r0, 0x2 + bne _0804A6AC + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + bne _0804A698 + ldr r1, [sp, 0x4] + cmp r1, 0 + beq _0804A6AC +_0804A698: + ldr r0, [r4, 0x70] + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r2, _0804A6A8 + adds r0, r2 + b _0804A6DE + .align 2, 0 +_0804A6A8: .4byte 0x00012a18 +_0804A6AC: + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r3, _0804A6BC + adds r1, r3 + b _0804A6FC + .align 2, 0 +_0804A6BC: .4byte 0x00011884 +_0804A6C0: + movs r4, 0x80 + lsls r4, 2 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _0804A6F0 + ldr r1, _0804A6E8 + adds r0, r7, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + ldr r3, _0804A6EC + adds r0, r3 +_0804A6DE: + adds r0, r7, r0 + lsls r1, r6, 1 + adds r2, r0, r1 + b _0804A702 + .align 2, 0 +_0804A6E8: .4byte 0x00003a12 +_0804A6EC: .4byte 0x00012a18 +_0804A6F0: + ldrb r0, [r5, 0x8] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 1 + ldr r4, _0804A724 + adds r1, r4 +_0804A6FC: + adds r1, r7, r1 + lsls r0, r6, 1 + adds r2, r1, r0 +_0804A702: + ldr r0, [sp, 0x8] + subs r0, 0x1 + str r0, [sp, 0x8] + cmp r0, 0 + blt _0804A70E + b _0804A5DE +_0804A70E: + movs r0, 0x3 + bl sub_80098F8 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804A724: .4byte 0x00011884 + thumb_func_end sub_804A49C + + thumb_func_start sub_804A728 +sub_804A728: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x40 + str r0, [sp, 0x1C] + adds r5, r1, 0 + adds r4, r3, 0 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x20] + lsls r4, 24 + lsrs r4, 24 + ldr r6, _0804A814 + ldr r0, [r6] + mov r8, r0 + bl GetLeaderEntity + str r0, [sp, 0x24] + ldr r0, _0804A818 + add r0, r8 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 19 + str r0, [sp, 0x30] + adds r1, r0, 0 + ldr r0, [r6] + ldr r2, _0804A81C + adds r0, r2 + strb r4, [r0] + ldr r3, [sp, 0x1C] + movs r4, 0 + ldrsh r7, [r3, r4] + movs r0, 0x2 + ldrsh r6, [r3, r0] + ldr r0, _0804A820 + lsls r5, 2 + adds r5, r0 + movs r2, 0 + ldrsh r4, [r5, r2] + movs r0, 0x2 + ldrsh r3, [r5, r0] + mov r0, sp + movs r2, 0x5 +_0804A782: + strh r7, [r0] + strh r6, [r0, 0x2] + adds r7, r4 + adds r6, r3 + adds r0, 0x4 + subs r2, 0x1 + cmp r2, 0 + bge _0804A782 + ldr r0, _0804A824 + adds r1, 0x1E + lsls r1, 1 + adds r0, r1, r0 + movs r3, 0 + ldrsh r2, [r0, r3] + str r2, [sp, 0x28] + ldr r0, _0804A828 + adds r1, r0 + movs r0, 0 + ldrsh r4, [r1, r0] + mov r10, r4 + movs r7, 0 +_0804A7AC: + ldr r0, _0804A82C + add r0, r8 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 19 + str r0, [sp, 0x34] + ldr r0, _0804A824 + ldr r1, [sp, 0x34] + adds r1, 0x1E + lsls r1, 1 + adds r0, r1, r0 + movs r3, 0 + ldrsh r2, [r0, r3] + str r2, [sp, 0x2C] + ldr r0, _0804A828 + adds r1, r0 + movs r0, 0 + ldrsh r4, [r1, r0] + mov r9, r4 + lsls r0, r2, 1 + adds r0, r2 + ldr r1, [sp, 0x28] + adds r5, r1, r0 + mov r2, r10 + lsls r0, r2, 16 + lsls r1, r4, 16 + lsrs r0, 16 + orrs r0, r1 + str r0, [sp, 0x18] + ldr r3, [sp, 0x20] + cmp r3, 0 + beq _0804A850 + ldr r4, [sp, 0x1C] + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r10, r0 + bne _0804A834 + movs r2, 0x2 + ldrsh r0, [r4, r2] + cmp r9, r0 + bne _0804A834 + lsls r0, r5, 1 + ldr r3, _0804A830 + adds r0, r3 + mov r4, r8 + adds r2, r4, r0 + ldr r0, [sp, 0x28] + adds r0, 0x1 + str r0, [sp, 0x3C] + adds r1, r7, 0x1 + str r1, [sp, 0x38] + b _0804A8FC + .align 2, 0 +_0804A814: .4byte gDungeonGlobalData +_0804A818: .4byte 0x000181f0 +_0804A81C: .4byte 0x0001821a +_0804A820: .4byte gAdjacentTileOffsets +_0804A824: .4byte gUnknown_80F6A4A +_0804A828: .4byte gUnknown_80F6C06 +_0804A82C: .4byte 0x000181f2 +_0804A830: .4byte 0x00012b92 +_0804A834: + lsls r0, r5, 1 + ldr r2, _0804A84C + adds r0, r2 + mov r3, r8 + adds r2, r3, r0 + ldr r4, [sp, 0x28] + adds r4, 0x1 + str r4, [sp, 0x3C] + adds r0, r7, 0x1 + str r0, [sp, 0x38] + b _0804A8FC + .align 2, 0 +_0804A84C: .4byte 0x00013554 +_0804A850: + add r4, sp, 0x18 + ldr r0, [sp, 0x24] + adds r1, r4, 0 + bl sub_807049C + lsls r0, 24 + cmp r0, 0 + bne _0804A8E8 + ldr r0, [sp, 0x24] + adds r1, r4, 0 + bl sub_8045AAC + lsls r0, 24 + cmp r0, 0 + beq _0804A8E8 + movs r2, 0 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + lsls r3, r5, 1 + ldr r4, [sp, 0x28] + adds r4, 0x1 + str r4, [sp, 0x3C] + adds r1, r7, 0x1 + str r1, [sp, 0x38] + cmp r0, r10 + bne _0804A890 + mov r0, sp + movs r4, 0x2 + ldrsh r0, [r0, r4] + cmp r0, r9 + beq _0804A8AC +_0804A890: + adds r2, 0x1 + cmp r2, 0x5 + bgt _0804A8AC + lsls r0, r2, 2 + mov r4, sp + adds r1, r4, r0 + movs r4, 0 + ldrsh r0, [r1, r4] + cmp r0, r10 + bne _0804A890 + movs r4, 0x2 + ldrsh r0, [r1, r4] + cmp r0, r9 + bne _0804A890 +_0804A8AC: + cmp r2, 0x6 + bne _0804A8D8 + ldr r0, _0804A8C0 + ldr r0, [r0] + ldrb r0, [r0, 0x3] + cmp r0, 0 + beq _0804A8C8 + ldr r1, _0804A8C4 + adds r0, r3, r1 + b _0804A8DC + .align 2, 0 +_0804A8C0: .4byte gUnknown_203B46C +_0804A8C4: .4byte 0x00012b80 +_0804A8C8: + ldr r4, _0804A8D4 + adds r0, r3, r4 + mov r1, r8 + adds r2, r1, r0 + b _0804A8FC + .align 2, 0 +_0804A8D4: .4byte 0x00013554 +_0804A8D8: + ldr r2, _0804A8E4 + adds r0, r3, r2 +_0804A8DC: + mov r3, r8 + adds r2, r3, r0 + b _0804A8FC + .align 2, 0 +_0804A8E4: .4byte 0x00012b92 +_0804A8E8: + lsls r0, r5, 1 + ldr r4, _0804A968 + adds r0, r4 + mov r1, r8 + adds r2, r1, r0 + ldr r3, [sp, 0x28] + adds r3, 0x1 + str r3, [sp, 0x3C] + adds r4, r7, 0x1 + str r4, [sp, 0x38] +_0804A8FC: + movs r6, 0 +_0804A8FE: + movs r0, 0x1F + ldr r1, [sp, 0x30] + ands r1, r0 + str r1, [sp, 0x30] + ldr r3, [sp, 0x34] + ands r3, r0 + lsls r0, r1, 1 + lsls r1, r3, 6 + adds r0, r1 + ldr r4, _0804A96C + adds r0, r4 + ldrh r1, [r2] + strh r1, [r0] + adds r2, 0x6 + adds r3, 0x1 + str r3, [sp, 0x34] + ldr r0, [sp, 0x2C] + adds r0, 0x1 + str r0, [sp, 0x2C] + adds r7, r6, 0x1 + cmp r0, 0x3 + beq _0804A92C + b _0804AA20 +_0804A92C: + movs r1, 0 + str r1, [sp, 0x2C] + movs r2, 0x1 + add r9, r2 + ldr r5, [sp, 0x28] + add r4, sp, 0x18 + mov r3, r10 + strh r3, [r4] + adds r0, r4, 0 + mov r1, r9 + strh r1, [r0, 0x2] + ldr r2, [sp, 0x20] + cmp r2, 0 + beq _0804A984 + ldr r3, [sp, 0x1C] + movs r4, 0 + ldrsh r0, [r3, r4] + cmp r10, r0 + bne _0804A974 + movs r1, 0x2 + ldrsh r0, [r3, r1] + cmp r9, r0 + bne _0804A974 + ldr r2, [sp, 0x28] + lsls r0, r2, 1 + ldr r3, _0804A970 + adds r0, r3 + mov r4, r8 + adds r2, r4, r0 + b _0804AA20 + .align 2, 0 +_0804A968: .4byte 0x00013554 +_0804A96C: .4byte gUnknown_202C038 +_0804A970: .4byte 0x00012b92 +_0804A974: + lsls r0, r5, 1 + ldr r1, _0804A980 + adds r0, r1 + mov r3, r8 + adds r2, r3, r0 + b _0804AA1E + .align 2, 0 +_0804A980: .4byte 0x00013554 +_0804A984: + ldr r0, [sp, 0x24] + adds r1, r4, 0 + bl sub_807049C + lsls r0, 24 + cmp r0, 0 + bne _0804AA14 + ldr r0, [sp, 0x24] + adds r1, r4, 0 + bl sub_8045AAC + lsls r0, 24 + cmp r0, 0 + beq _0804AA14 + movs r2, 0 + mov r0, sp + movs r4, 0 + ldrsh r0, [r0, r4] + ldr r1, [sp, 0x28] + lsls r3, r1, 1 + cmp r0, r10 + bne _0804A9BA + mov r0, sp + movs r4, 0x2 + ldrsh r0, [r0, r4] + cmp r0, r9 + beq _0804A9D6 +_0804A9BA: + adds r2, 0x1 + cmp r2, 0x5 + bgt _0804A9D6 + lsls r0, r2, 2 + mov r4, sp + adds r1, r4, r0 + movs r4, 0 + ldrsh r0, [r1, r4] + cmp r0, r10 + bne _0804A9BA + movs r4, 0x2 + ldrsh r0, [r1, r4] + cmp r0, r9 + bne _0804A9BA +_0804A9D6: + cmp r2, 0x6 + bne _0804AA04 + ldr r0, _0804A9EC + ldr r0, [r0] + ldrb r0, [r0, 0x3] + cmp r0, 0 + beq _0804A9F4 + ldr r1, _0804A9F0 + adds r0, r3, r1 + b _0804AA08 + .align 2, 0 +_0804A9EC: .4byte gUnknown_203B46C +_0804A9F0: .4byte 0x00012b80 +_0804A9F4: + ldr r4, _0804AA00 + adds r0, r3, r4 + mov r1, r8 + adds r2, r1, r0 + b _0804AA20 + .align 2, 0 +_0804AA00: .4byte 0x00013554 +_0804AA04: + ldr r2, _0804AA10 + adds r0, r3, r2 +_0804AA08: + mov r3, r8 + adds r2, r3, r0 + b _0804AA20 + .align 2, 0 +_0804AA10: .4byte 0x00012b92 +_0804AA14: + lsls r0, r5, 1 + ldr r4, _0804AA5C + adds r0, r4 + mov r1, r8 + adds r2, r1, r0 +_0804AA1E: + adds r7, r6, 0x1 +_0804AA20: + adds r6, r7, 0 + cmp r6, 0x14 + bgt _0804AA28 + b _0804A8FE +_0804AA28: + ldr r2, [sp, 0x30] + adds r2, 0x1 + str r2, [sp, 0x30] + ldr r3, [sp, 0x3C] + str r3, [sp, 0x28] + cmp r3, 0x3 + bne _0804AA3E + movs r4, 0 + str r4, [sp, 0x28] + movs r0, 0x1 + add r10, r0 +_0804AA3E: + ldr r7, [sp, 0x38] + cmp r7, 0x1E + bgt _0804AA46 + b _0804A7AC +_0804AA46: + movs r0, 0x2 + bl sub_80098F8 + add sp, 0x40 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804AA5C: .4byte 0x00013554 + thumb_func_end sub_804A728 + + thumb_func_start sub_804AA60 +sub_804AA60: + push {r4,lr} + movs r1, 0 + ldr r0, _0804AAA0 + movs r3, 0 + movs r2, 0x80 + lsls r2, 5 + adds r4, r0, r2 +_0804AA6E: + lsls r0, r1, 6 + adds r2, r1, 0x1 + movs r1, 0x1F + adds r0, r4 + adds r0, 0x3E +_0804AA78: + strh r3, [r0] + subs r0, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _0804AA78 + adds r1, r2, 0 + cmp r1, 0x1F + ble _0804AA6E + movs r4, 0 + movs r0, 0x2 + bl sub_80098F8 + ldr r0, _0804AAA4 + ldr r0, [r0] + ldr r1, _0804AAA8 + adds r0, r1 + strb r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804AAA0: .4byte gUnknown_202B038 +_0804AAA4: .4byte gDungeonGlobalData +_0804AAA8: .4byte 0x0001821a + thumb_func_end sub_804AA60 + + thumb_func_start sub_804AAAC +sub_804AAAC: + push {r4-r7,lr} + movs r5, 0 + movs r7, 0 +_0804AAB2: + movs r4, 0 + adds r6, r5, 0x1 +_0804AAB6: + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_2 + strh r7, [r0, 0x4] + adds r4, 0x1 + cmp r4, 0x37 + ble _0804AAB6 + adds r5, r6, 0 + cmp r5, 0x1F + ble _0804AAB2 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804AAAC + + thumb_func_start sub_804AAD4 +sub_804AAD4: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r4, _0804AC04 + movs r0, 0 + mov r8, r0 + ldr r6, _0804AC08 + ldr r5, _0804AC0C + movs r2, 0 + movs r3, 0x1F +_0804AAEA: + ldr r0, [r4] + adds r0, r2 + ldr r1, _0804AC10 + adds r0, r1 + mov r7, r8 + strb r7, [r0] + ldr r0, [r4] + adds r0, r2 + adds r1, 0x1 + adds r0, r1 + strb r7, [r0] + ldr r0, [r4] + adds r0, r2 + ldr r7, _0804AC14 + adds r1, r0, r7 + strh r6, [r1] + adds r7, 0x2 + adds r1, r0, r7 + strh r6, [r1] + adds r7, 0x2 + adds r1, r0, r7 + strh r5, [r1] + ldr r1, _0804AC18 + adds r0, r1 + strh r5, [r0] + adds r2, 0x1C + subs r3, 0x1 + cmp r3, 0 + bge _0804AAEA + movs r4, 0 + mov r9, r4 + movs r6, 0 + ldr r7, _0804AC04 + mov r8, r7 +_0804AB2E: + movs r4, 0 + adds r5, r6, 0x1 +_0804AB32: + adds r0, r4, 0 + adds r1, r6, 0 + bl GetMapTile_1 + ldrb r2, [r0, 0x9] + adds r3, r4, 0x1 + cmp r2, 0xFF + beq _0804AB84 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + ldr r1, _0804AC10 + adds r0, r1 + mov r7, r8 + ldr r1, [r7] + adds r1, r0 + movs r0, 0x1 + strb r0, [r1] + movs r7, 0x2 + ldrsh r0, [r1, r7] + cmp r0, r4 + ble _0804AB60 + strh r4, [r1, 0x2] +_0804AB60: + movs r4, 0x4 + ldrsh r0, [r1, r4] + cmp r0, r6 + ble _0804AB6A + strh r6, [r1, 0x4] +_0804AB6A: + movs r7, 0x6 + ldrsh r0, [r1, r7] + cmp r0, r3 + bge _0804AB74 + strh r3, [r1, 0x6] +_0804AB74: + movs r4, 0x8 + ldrsh r0, [r1, r4] + cmp r0, r5 + bge _0804AB7E + strh r5, [r1, 0x8] +_0804AB7E: + cmp r9, r2 + bge _0804AB84 + mov r9, r2 +_0804AB84: + adds r4, r3, 0 + cmp r4, 0x37 + ble _0804AB32 + adds r6, r5, 0 + cmp r6, 0x1F + ble _0804AB2E + ldr r7, _0804AC04 + mov r8, r7 + mov r5, r9 + adds r5, 0x1 + mov r6, r8 + movs r4, 0 + movs r3, 0x1F +_0804AB9E: + ldr r1, _0804AC10 + adds r0, r4, r1 + ldr r1, [r6] + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, 0 + beq _0804ABE4 + movs r7, 0x2 + ldrsh r1, [r2, r7] + subs r1, 0x1 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + str r0, [r2, 0xC] + movs r0, 0x4 + ldrsh r1, [r2, r0] + subs r1, 0x1 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + str r0, [r2, 0x10] + movs r7, 0x6 + ldrsh r1, [r2, r7] + adds r1, 0x1 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + str r0, [r2, 0x14] + movs r0, 0x8 + ldrsh r1, [r2, r0] + adds r1, 0x1 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + str r0, [r2, 0x18] +_0804ABE4: + adds r4, 0x1C + subs r3, 0x1 + cmp r3, 0 + bge _0804AB9E + mov r1, r8 + ldr r0, [r1] + ldr r4, _0804AC1C + adds r0, r4 + strb r5, [r0] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804AC04: .4byte gDungeonGlobalData +_0804AC08: .4byte 0x0000270f +_0804AC0C: .4byte 0x0000d8f1 +_0804AC10: .4byte 0x000104c4 +_0804AC14: .4byte 0x000104c6 +_0804AC18: .4byte 0x000104cc +_0804AC1C: .4byte 0x000104c0 + thumb_func_end sub_804AAD4 + + thumb_func_start sub_804AC20 +sub_804AC20: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r4, r0, 0 + movs r1, 0 + ldrsh r0, [r4, r1] + movs r2, 0x2 + ldrsh r1, [r4, r2] + bl GetMapTile_1 + ldrb r1, [r0, 0x9] + ldr r0, _0804AC6C + ldr r3, [r0] + ldr r5, _0804AC70 + adds r0, r3, r5 + ldrb r2, [r0] + adds r5, 0x1 + adds r0, r3, r5 + ldrb r0, [r0] + cmp r0, 0 + bne _0804ACD4 + cmp r2, 0 + bne _0804AC52 + movs r2, 0x2 +_0804AC52: + cmp r1, 0xFF + bne _0804AC74 + movs r0, 0 + ldrsh r1, [r4, r0] + subs r3, r1, r2 + mov r9, r3 + movs r5, 0x2 + ldrsh r0, [r4, r5] + subs r3, r0, r2 + adds r6, r1, r2 + adds r0, r2 + mov r8, r0 + b _0804ACA2 + .align 2, 0 +_0804AC6C: .4byte gDungeonGlobalData +_0804AC70: .4byte 0x00018209 +_0804AC74: + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r1, _0804ACE0 + adds r0, r1 + adds r2, r3, r0 + ldrb r0, [r2, 0x1] + cmp r0, 0 + bne _0804ACD4 + movs r0, 0x1 + strb r0, [r2, 0x1] + movs r3, 0x2 + ldrsh r0, [r2, r3] + subs r0, 0x1 + mov r9, r0 + movs r5, 0x4 + ldrsh r0, [r2, r5] + subs r3, r0, 0x1 + movs r0, 0x6 + ldrsh r6, [r2, r0] + movs r5, 0x8 + ldrsh r1, [r2, r5] + mov r8, r1 +_0804ACA2: + adds r5, r3, 0 + cmp r5, r8 + bgt _0804ACD4 +_0804ACA8: + mov r4, r9 + adds r7, r5, 0x1 + cmp r4, r6 + bgt _0804ACCE +_0804ACB0: + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_2 + ldrh r2, [r0, 0x4] + movs r1, 0x3 + orrs r1, r2 + strh r1, [r0, 0x4] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80402AC + adds r4, 0x1 + cmp r4, r6 + ble _0804ACB0 +_0804ACCE: + adds r5, r7, 0 + cmp r5, r8 + ble _0804ACA8 +_0804ACD4: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804ACE0: .4byte 0x000104c4 + thumb_func_end sub_804AC20 + + thumb_func_start sub_804ACE4 +sub_804ACE4: + push {lr} + movs r1, 0 + ldrsh r2, [r0, r1] + movs r3, 0x2 + ldrsh r1, [r0, r3] + adds r0, r2, 0 + bl GetMapTile_1 + ldr r0, [r0, 0x14] + cmp r0, 0 + beq _0804AD06 + bl GetEntityType + cmp r0, 0x3 + bne _0804AD06 + movs r0, 0x1 + b _0804AD08 +_0804AD06: + movs r0, 0 +_0804AD08: + pop {r1} + bx r1 + thumb_func_end sub_804ACE4 + + thumb_func_start sub_804AD0C +sub_804AD0C: + push {lr} + movs r1, 0 + ldrsh r2, [r0, r1] + movs r3, 0x2 + ldrsh r1, [r0, r3] + adds r0, r2, 0 + bl GetMapTile_1 + ldr r1, [r0, 0x10] + cmp r1, 0 + beq _0804AD2C + ldr r0, [r1] + cmp r0, 0x1 + bne _0804AD2C + adds r0, r1, 0 + b _0804AD2E +_0804AD2C: + movs r0, 0 +_0804AD2E: + pop {r1} + bx r1 + thumb_func_end sub_804AD0C + + thumb_func_start sub_804AD34 +sub_804AD34: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + movs r0, 0 + mov r8, r0 + movs r1, 0 + ldrsh r0, [r6, r1] + movs r2, 0x2 + ldrsh r1, [r6, r2] + bl GetMapTile_2 + adds r2, r0, 0 + ldrh r1, [r2] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _0804ADB6 + movs r0, 0x88 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + bne _0804ADB6 + movs r0, 0x1 + mov r8, r0 + ldr r0, _0804ADFC + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + movs r5, 0x1 + negs r5, r5 +_0804AD74: + movs r4, 0x1 + negs r4, r4 + adds r7, r5, 0x1 +_0804AD7A: + movs r1, 0 + ldrsh r0, [r6, r1] + adds r0, r4, r0 + movs r2, 0x2 + ldrsh r1, [r6, r2] + adds r1, r5, r1 + bl sub_80498A8 + movs r1, 0 + ldrsh r0, [r6, r1] + adds r0, r4, r0 + movs r2, 0x2 + ldrsh r1, [r6, r2] + adds r1, r5, r1 + bl sub_8049BB0 + movs r1, 0 + ldrsh r0, [r6, r1] + adds r0, r4, r0 + movs r2, 0x2 + ldrsh r1, [r6, r2] + adds r1, r5, r1 + bl sub_80402AC + adds r4, 0x1 + cmp r4, 0x1 + ble _0804AD7A + adds r5, r7, 0 + cmp r5, 0x1 + ble _0804AD74 +_0804ADB6: + mov r0, r8 + cmp r0, 0 + beq _0804ADEE + movs r5, 0 +_0804ADBE: + ldr r0, _0804AE00 + ldr r0, [r0] + lsls r1, r5, 2 + ldr r2, _0804AE04 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0804ADDE + adds r0, r4, 0 + bl sub_806CF98 +_0804ADDE: + adds r5, 0x1 + cmp r5, 0x13 + ble _0804ADBE + bl sub_8049ED4 + adds r0, r6, 0 + bl sub_8042A14 +_0804ADEE: + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0804ADFC: .4byte 0x0000fffc +_0804AE00: .4byte gDungeonGlobalData +_0804AE04: .4byte 0x000135cc + thumb_func_end sub_804AD34 + + thumb_func_start sub_804AE08 +sub_804AE08: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + movs r0, 0 + mov r8, r0 + movs r1, 0 + ldrsh r0, [r7, r1] + movs r2, 0x2 + ldrsh r1, [r7, r2] + bl GetMapTile_2 + adds r2, r0, 0 + ldrh r1, [r2] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _0804AE72 + movs r0, 0x88 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + bne _0804AE72 + movs r0, 0x1 + mov r8, r0 + ldr r0, _0804AE80 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + ldrh r1, [r2, 0x4] + movs r0, 0x10 + orrs r0, r1 + strh r0, [r2, 0x4] + movs r5, 0x1 + negs r5, r5 +_0804AE50: + movs r4, 0x1 + negs r4, r4 + adds r6, r5, 0x1 +_0804AE56: + movs r1, 0 + ldrsh r0, [r7, r1] + adds r0, r4, r0 + movs r2, 0x2 + ldrsh r1, [r7, r2] + adds r1, r5, r1 + bl sub_8049BB0 + adds r4, 0x1 + cmp r4, 0x1 + ble _0804AE56 + adds r5, r6, 0 + cmp r5, 0x1 + ble _0804AE50 +_0804AE72: + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0804AE80: .4byte 0x0000fffc + thumb_func_end sub_804AE08 + + thumb_func_start sub_804AE84 +sub_804AE84: + push {r4-r7,lr} + adds r5, r0, 0 + movs r1, 0 + ldrsh r0, [r5, r1] + movs r2, 0x2 + ldrsh r1, [r5, r2] + bl GetMapTile_2 + adds r2, r0, 0 + ldrh r1, [r2, 0x4] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0804AF0E + ldr r0, _0804AF14 + ands r0, r1 + strh r0, [r2, 0x4] + movs r6, 0x1 + negs r6, r6 +_0804AEAA: + movs r4, 0x1 + negs r4, r4 + adds r7, r6, 0x1 +_0804AEB0: + movs r1, 0 + ldrsh r0, [r5, r1] + adds r0, r4, r0 + movs r2, 0x2 + ldrsh r1, [r5, r2] + adds r1, r6, r1 + bl sub_80498A8 + movs r1, 0 + ldrsh r0, [r5, r1] + adds r0, r4, r0 + movs r2, 0x2 + ldrsh r1, [r5, r2] + adds r1, r6, r1 + bl sub_80402AC + adds r4, 0x1 + cmp r4, 0x1 + ble _0804AEB0 + adds r6, r7, 0 + cmp r6, 0x1 + ble _0804AEAA + movs r6, 0 +_0804AEDE: + ldr r0, _0804AF18 + ldr r0, [r0] + lsls r1, r6, 2 + ldr r2, _0804AF1C + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0804AEFE + adds r0, r4, 0 + bl sub_806CF98 +_0804AEFE: + adds r6, 0x1 + cmp r6, 0x13 + ble _0804AEDE + bl sub_8049ED4 + adds r0, r5, 0 + bl sub_8042A14 +_0804AF0E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804AF14: .4byte 0x0000ffef +_0804AF18: .4byte gDungeonGlobalData +_0804AF1C: .4byte 0x000135cc + thumb_func_end sub_804AE84 + + .align 2, 0
\ No newline at end of file |