diff options
Diffstat (limited to 'asm/code_804AF74.s')
-rw-r--r-- | asm/code_804AF74.s | 15059 |
1 files changed, 15059 insertions, 0 deletions
diff --git a/asm/code_804AF74.s b/asm/code_804AF74.s new file mode 100644 index 0000000..12fa236 --- /dev/null +++ b/asm/code_804AF74.s @@ -0,0 +1,15059 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start IsWaterTileset +IsWaterTileset: + push {lr} + ldr r0, _0804AF9C + ldr r0, [r0] + ldr r1, _0804AFA0 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _0804AF96 + cmp r0, 0x31 + beq _0804AF96 + cmp r0, 0x20 + beq _0804AF96 + cmp r0, 0x21 + beq _0804AF96 + cmp r0, 0x36 + bne _0804AFA4 +_0804AF96: + movs r0, 0x1 + b _0804AFA6 + .align 2, 0 +_0804AF9C: .4byte gDungeonGlobalData +_0804AFA0: .4byte 0x00003a0e +_0804AFA4: + movs r0, 0 +_0804AFA6: + pop {r1} + bx r1 + thumb_func_end IsWaterTileset + + thumb_func_start sub_804AFAC +sub_804AFAC: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x44 + movs r0, 0 + mov r10, r0 + ldr r4, _0804B0E8 + ldr r0, [r4] + ldr r1, _0804B0EC + adds r1, r0 + mov r8, r1 + ldr r0, _0804B0F0 + ldr r1, _0804B0F4 + bl OpenFileAndGetFileDataPtr + ldr r2, [r4] + ldr r3, _0804B0F8 + adds r1, r2, r3 + str r0, [r1] + ldr r0, _0804B0FC + mov r6, r10 + strb r6, [r0] + ldr r0, _0804B100 + strb r6, [r0] + ldr r0, _0804B104 + strb r6, [r0] + ldr r5, _0804B108 + movs r3, 0 + ldr r1, _0804B10C + ldr r0, _0804B110 + adds r2, r0 + movs r6, 0 + ldrsh r0, [r2, r6] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x2 + bne _0804AFFC + movs r3, 0x1 +_0804AFFC: + strb r3, [r5] + ldr r1, _0804B114 + movs r0, 0xFF + strb r0, [r1] + ldr r0, _0804B118 + mov r1, r10 + strb r1, [r0] + ldr r1, _0804B11C + mov r2, r8 + ldrb r0, [r2, 0x7] + strh r0, [r1] + ldr r1, _0804B120 + ldrb r0, [r2, 0x8] + strh r0, [r1] + ldr r1, _0804B124 + movs r0, 0x1 + strb r0, [r1] + ldr r1, _0804B128 + movs r0, 0x1 + negs r0, r0 + str r0, [r1] + str r0, [r1, 0x8] + str r0, [r1, 0x4] + str r0, [r1, 0xC] + bl sub_804FD30 + ldr r3, [r4] + mov r6, r8 + ldrb r2, [r6, 0x6] + ldr r1, _0804B12C + adds r0, r3, r1 + movs r1, 0 + strh r2, [r0] + ldr r2, _0804B130 + adds r0, r3, r2 + strb r1, [r0] + ldr r0, [r4] + ldr r3, _0804B134 + adds r0, r3 + strb r1, [r0] + ldr r1, _0804B138 + mov r6, r8 + ldrb r0, [r6, 0xC] + str r0, [r1] + movs r0, 0 + str r0, [sp, 0x40] +_0804B058: + ldr r0, _0804B0E8 + ldr r2, [r0] + ldr r3, _0804B13C + adds r1, r2, r3 + ldr r0, _0804B140 + strh r0, [r1] + ldr r6, _0804B144 + adds r1, r2, r6 + movs r0, 0x1 + negs r0, r0 + strh r0, [r1] + ldr r0, _0804B148 + adds r1, r2, r0 + movs r0, 0x1 + negs r0, r0 + strh r0, [r1] + ldr r1, _0804B14C + adds r2, r1 + strh r0, [r2] + movs r2, 0 + mov r9, r2 +_0804B082: + ldr r4, _0804B0E8 + ldr r0, [r4] + ldr r3, _0804B150 + adds r0, r3 + movs r5, 0 + movs r1, 0 + mov r6, r9 + strh r6, [r0] + mov r0, r9 + cmp r0, 0 + ble _0804B09C + ldr r0, _0804B138 + str r1, [r0] +_0804B09C: + ldr r0, _0804B154 + strb r5, [r0] + ldr r1, _0804B158 + ldr r0, _0804B140 + strh r0, [r1] + movs r0, 0x1 + negs r0, r0 + strh r0, [r1, 0x2] + bl sub_804FD30 + ldr r1, [r4] + ldr r3, _0804B13C + adds r2, r1, r3 + movs r0, 0x1 + negs r0, r0 + strh r0, [r2] + ldr r6, _0804B144 + adds r2, r1, r6 + strh r0, [r2] + ldr r0, _0804B15C + adds r1, r0 + strb r5, [r1] + ldr r0, [r4] + ldr r2, _0804B160 + adds r1, r0, r2 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _0804B164 + mov r1, r8 + bl sub_804C70C + lsls r0, 24 + cmp r0, 0 + beq _0804B0E4 + b _0804B376 +_0804B0E4: + b _0804B2F6 + .align 2, 0 +_0804B0E8: .4byte gDungeonGlobalData +_0804B0EC: .4byte 0x0001c574 +_0804B0F0: .4byte gUnknown_80F6DCC +_0804B0F4: .4byte gDungeonFileArchive +_0804B0F8: .4byte 0x00013568 +_0804B0FC: .4byte gUnknown_202F1AA +_0804B100: .4byte gUnknown_202F1AB +_0804B104: .4byte gUnknown_202F1AC +_0804B108: .4byte gUnknown_202F1A8 +_0804B10C: .4byte gDungeonWaterType +_0804B110: .4byte 0x00003a0e +_0804B114: .4byte gUnknown_202F1B4 +_0804B118: .4byte gUnknown_202F1AE +_0804B11C: .4byte gUnknown_202F1B0 +_0804B120: .4byte gUnknown_202F1B2 +_0804B124: .4byte gUnknown_202F1AD +_0804B128: .4byte gUnknown_202F1B8 +_0804B12C: .4byte 0x00000664 +_0804B130: .4byte 0x00003a09 +_0804B134: .4byte 0x00003a0a +_0804B138: .4byte gUnknown_202F1C8 +_0804B13C: .4byte 0x0000e218 +_0804B140: .4byte 0x0000ffff +_0804B144: .4byte 0x0000e21a +_0804B148: .4byte 0x0000e21c +_0804B14C: .4byte 0x0000e21e +_0804B150: .4byte 0x00003a16 +_0804B154: .4byte gUnknown_202F1A9 +_0804B158: .4byte gUnknown_202F1D8 +_0804B15C: .4byte 0x00003a08 +_0804B160: .4byte 0x00003a14 +_0804B164: + mov r0, r8 + ldrb r7, [r0] + movs r6, 0x20 +_0804B16A: + cmp r7, 0x8 + beq _0804B17E + movs r0, 0x2 + movs r1, 0x9 + bl sub_808411C + adds r5, r0, 0 + movs r0, 0x2 + movs r1, 0x8 + b _0804B18C +_0804B17E: + movs r0, 0x2 + movs r1, 0x5 + bl sub_808411C + adds r5, r0, 0 + movs r0, 0x2 + movs r1, 0x4 +_0804B18C: + bl sub_808411C + adds r4, r0, 0 + cmp r5, 0x6 + bgt _0804B19A + cmp r4, 0x4 + ble _0804B1A4 +_0804B19A: + subs r6, 0x1 + cmp r6, 0 + bne _0804B16A + movs r5, 0x4 + movs r4, 0x4 +_0804B1A4: + movs r0, 0x38 + adds r1, r5, 0 + bl __divsi3 + cmp r0, 0x7 + bgt _0804B1B2 + movs r5, 0x1 +_0804B1B2: + movs r0, 0x20 + adds r1, r4, 0 + bl __divsi3 + cmp r0, 0x7 + bgt _0804B1C0 + movs r4, 0x1 +_0804B1C0: + ldr r2, _0804B1EC + ldr r0, [r2] + ldr r1, _0804B1F0 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + ldr r2, _0804B1F4 + adds r0, r2 + movs r1, 0xFF + strb r1, [r0] + ldr r0, _0804B1F8 + str r7, [r0] + movs r0, 0xF + ands r0, r7 + cmp r0, 0xB + bhi _0804B274 + lsls r0, 2 + ldr r1, _0804B1FC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804B1EC: .4byte gDungeonGlobalData +_0804B1F0: .4byte 0x00003a08 +_0804B1F4: .4byte 0x00003a0c +_0804B1F8: .4byte gUnknown_202F1D0 +_0804B1FC: .4byte _0804B200 + .align 2, 0 +_0804B200: + .4byte _0804B274 + .4byte _0804B230 + .4byte _0804B280 + .4byte _0804B298 + .4byte _0804B2A4 + .4byte _0804B2B0 + .4byte _0804B2CC + .4byte _0804B2D8 + .4byte _0804B274 + .4byte _0804B2E0 + .4byte _0804B2E8 + .4byte _0804B250 +_0804B230: + movs r0, 0x2 + bl DungeonRandomCapped + adds r4, r0, 0x2 + ldr r1, _0804B24C + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x4 + adds r1, r4, 0 + mov r2, r8 + bl sub_804B634 + b _0804B2AA + .align 2, 0 +_0804B24C: .4byte gUnknown_202F1AE +_0804B250: + movs r0, 0x2 + bl DungeonRandomCapped + adds r4, r0, 0x2 + ldr r1, _0804B270 + movs r0, 0x2 + strb r0, [r1] + movs r0, 0x4 + adds r1, r4, 0 + mov r2, r8 + bl sub_804B634 + movs r6, 0x1 + mov r10, r6 + b _0804B2F6 + .align 2, 0 +_0804B270: .4byte gUnknown_202F1AE +_0804B274: + adds r0, r5, 0 + adds r1, r4, 0 + mov r2, r8 + bl sub_804B634 + b _0804B2D2 +_0804B280: + bl sub_804C918 + ldr r0, _0804B290 + ldr r0, [r0] + ldr r1, _0804B294 + adds r0, r1 + b _0804B2BC + .align 2, 0 +_0804B290: .4byte gDungeonGlobalData +_0804B294: .4byte 0x00003a08 +_0804B298: + mov r0, r8 + bl sub_804B72C + movs r2, 0x1 + mov r10, r2 + b _0804B2F6 +_0804B2A4: + mov r0, r8 + bl sub_804BC80 +_0804B2AA: + movs r3, 0x1 + mov r10, r3 + b _0804B2F6 +_0804B2B0: + bl sub_804C9D0 + ldr r0, _0804B2C4 + ldr r0, [r0] + ldr r6, _0804B2C8 + adds r0, r6 +_0804B2BC: + movs r1, 0x1 + strb r1, [r0] + b _0804B2F6 + .align 2, 0 +_0804B2C4: .4byte gDungeonGlobalData +_0804B2C8: .4byte 0x00003a08 +_0804B2CC: + mov r0, r8 + bl sub_804C0A8 +_0804B2D2: + movs r0, 0x1 + mov r10, r0 + b _0804B2F6 +_0804B2D8: + mov r0, r8 + bl sub_804C190 + b _0804B2F6 +_0804B2E0: + mov r0, r8 + bl sub_804C2F4 + b _0804B2F6 +_0804B2E8: + adds r0, r5, 0 + adds r1, r4, 0 + mov r2, r8 + bl sub_804C53C + movs r1, 0x1 + mov r10, r1 +_0804B2F6: + bl sub_80518F0 + bl sub_804FCCC + ldr r0, _0804B4B4 + ldrb r0, [r0] + cmp r0, 0 + bne _0804B36A + movs r7, 0 + movs r1, 0 + mov r0, sp + adds r0, 0x3F +_0804B30E: + strb r1, [r0] + subs r0, 0x1 + cmp r0, sp + bge _0804B30E + movs r5, 0 +_0804B318: + movs r4, 0 + adds r6, r5, 0x1 +_0804B31C: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + adds r1, r0, 0 + ldrh r0, [r1] + movs r2, 0x3 + ands r2, r0 + cmp r2, 0x1 + bne _0804B340 + ldrb r0, [r1, 0x9] + cmp r0, 0xF0 + bhi _0804B340 + adds r7, 0x1 + cmp r0, 0x3F + bhi _0804B340 + add r0, sp + strb r2, [r0] +_0804B340: + adds r4, 0x1 + cmp r4, 0x1F + ble _0804B31C + adds r5, r6, 0 + cmp r5, 0x37 + ble _0804B318 + movs r1, 0 + movs r4, 0 +_0804B350: + mov r2, sp + adds r0, r2, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _0804B35C + adds r1, 0x1 +_0804B35C: + adds r4, 0x1 + cmp r4, 0x3F + ble _0804B350 + cmp r7, 0x1D + ble _0804B36A + cmp r1, 0x1 + bgt _0804B376 +_0804B36A: + movs r3, 0x1 + add r9, r3 + mov r6, r9 + cmp r6, 0x9 + bgt _0804B376 + b _0804B082 +_0804B376: + mov r0, r9 + cmp r0, 0xA + bne _0804B398 + ldr r1, _0804B4B8 + ldr r0, _0804B4BC + strh r0, [r1] + movs r0, 0x1 + negs r0, r0 + strh r0, [r1, 0x2] + bl sub_804C918 + ldr r0, _0804B4C0 + ldr r0, [r0] + ldr r1, _0804B4C4 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] +_0804B398: + bl sub_804E9DC + mov r2, r10 + cmp r2, 0 + beq _0804B3AA + movs r0, 0x1 + mov r1, r8 + bl sub_80506F0 +_0804B3AA: + movs r0, 0x64 + bl DungeonRandomCapped + movs r4, 0 + mov r3, r8 + ldrb r3, [r3, 0x19] + cmp r0, r3 + bge _0804B3BC + movs r4, 0x1 +_0804B3BC: + mov r0, r8 + adds r1, r4, 0 + bl sub_804FF08 + mov r0, r8 + adds r1, r4, 0 + bl sub_8050438 + bl sub_804FBE8 + ldr r5, _0804B4C0 + ldr r1, [r5] + ldr r6, _0804B4C8 + adds r0, r1, r6 + movs r2, 0 + ldrsh r0, [r0, r2] + movs r4, 0x1 + negs r4, r4 + cmp r0, r4 + beq _0804B42A + ldr r3, _0804B4CC + adds r0, r1, r3 + movs r6, 0 + ldrsh r0, [r0, r6] + cmp r0, r4 + beq _0804B42A + bl sub_8043D10 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0804B436 + ldr r1, [r5] + ldr r0, _0804B4D0 + adds r2, r1, r0 + movs r3, 0 + ldrsh r0, [r2, r3] + cmp r0, r4 + beq _0804B42A + ldr r6, _0804B4D4 + adds r1, r6 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, r4 + beq _0804B42A + movs r6, 0 + ldrsh r0, [r2, r6] + movs r2, 0 + ldrsh r1, [r1, r2] + movs r2, 0 + bl sub_8050C30 + lsls r0, 24 + cmp r0, 0 + bne _0804B436 +_0804B42A: + ldr r3, [sp, 0x40] + adds r3, 0x1 + str r3, [sp, 0x40] + cmp r3, 0x9 + bgt _0804B436 + b _0804B058 +_0804B436: + ldr r6, [sp, 0x40] + cmp r6, 0xA + bne _0804B474 + ldr r1, _0804B4B8 + ldr r0, _0804B4BC + strh r0, [r1] + movs r0, 0x1 + negs r0, r0 + strh r0, [r1, 0x2] + bl sub_804FD30 + bl sub_804C918 + ldr r0, _0804B4C0 + ldr r0, [r0] + ldr r1, _0804B4C4 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + bl sub_804E9DC + mov r0, r8 + movs r1, 0 + bl sub_804FF08 + mov r0, r8 + movs r1, 0 + bl sub_8050438 + bl sub_804FBE8 +_0804B474: + ldr r1, _0804B4B8 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + blt _0804B498 + movs r3, 0x2 + ldrsh r0, [r1, r3] + cmp r0, 0 + blt _0804B498 + movs r6, 0 + ldrsh r0, [r1, r6] + movs r2, 0x2 + ldrsh r1, [r1, r2] + movs r2, 0xBE + lsls r2, 1 + movs r3, 0 + bl sub_806C330 +_0804B498: + ldr r0, _0804B4D8 + ldr r0, [r0] + cmp r0, 0 + blt _0804B4E0 + mov r0, r8 + bl sub_8051654 + ldr r0, _0804B4C0 + ldr r0, [r0] + ldr r3, _0804B4DC + adds r0, r3 + movs r1, 0x1 + b _0804B4EA + .align 2, 0 +_0804B4B4: .4byte gUnknown_202F1A9 +_0804B4B8: .4byte gUnknown_202F1D8 +_0804B4BC: .4byte 0x0000ffff +_0804B4C0: .4byte gDungeonGlobalData +_0804B4C4: .4byte 0x00003a08 +_0804B4C8: .4byte 0x0000e218 +_0804B4CC: .4byte 0x0000e21a +_0804B4D0: .4byte 0x0000e21c +_0804B4D4: .4byte 0x0000e21e +_0804B4D8: .4byte gUnknown_202F1B8 +_0804B4DC: .4byte 0x00003a0a +_0804B4E0: + ldr r0, _0804B524 + ldr r0, [r0] + ldr r6, _0804B528 + adds r0, r6 + movs r1, 0 +_0804B4EA: + strb r1, [r0] + movs r0, 0 + movs r1, 0 + movs r2, 0x38 + movs r3, 0x20 + bl sub_804B534 + ldr r0, _0804B52C + ldrb r0, [r0] + cmp r0, 0 + beq _0804B504 + bl sub_804FC74 +_0804B504: + ldr r0, _0804B524 + ldr r0, [r0] + ldr r1, _0804B530 + adds r0, r1 + ldr r0, [r0] + bl CloseFile + add sp, 0x44 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804B524: .4byte gDungeonGlobalData +_0804B528: .4byte 0x00003a0a +_0804B52C: .4byte gUnknown_202F1A8 +_0804B530: .4byte 0x00013568 + thumb_func_end sub_804AFAC + + thumb_func_start sub_804B534 +sub_804B534: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + str r1, [sp] + str r2, [sp, 0x4] + mov r10, r3 + adds r5, r0, 0 + cmp r5, r2 + bge _0804B620 +_0804B54C: + ldr r4, [sp] + adds r0, r5, 0x1 + mov r9, r0 + cmp r4, r10 + bge _0804B618 + movs r6, 0x3 + mov r8, r6 +_0804B55A: + movs r3, 0 + adds r0, r5, 0 + adds r1, r4, 0 + str r3, [sp, 0xC] + bl GetMapTile_2 + adds r2, r0, 0 + ldrh r0, [r2] + ldr r6, _0804B630 + adds r1, r6, 0 + ands r1, r0 + strh r1, [r2] + ldrb r0, [r2, 0x9] + adds r6, r4, 0x1 + ldr r3, [sp, 0xC] + cmp r0, 0xFF + bne _0804B612 + movs r7, 0x3 + adds r0, r1, 0 + ands r0, r7 + cmp r0, 0x1 + bne _0804B612 + cmp r5, 0 + ble _0804B5A4 + subs r0, r5, 0x1 + adds r1, r4, 0 + str r2, [sp, 0x8] + bl GetMapTile_1 + ldrh r1, [r0] + adds r0, r7, 0 + ands r0, r1 + ldr r2, [sp, 0x8] + ldr r3, [sp, 0xC] + cmp r0, 0x1 + bne _0804B5A4 + movs r3, 0x1 +_0804B5A4: + cmp r4, 0 + ble _0804B5C4 + subs r1, r4, 0x1 + adds r0, r5, 0 + str r2, [sp, 0x8] + str r3, [sp, 0xC] + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r2, [sp, 0x8] + ldr r3, [sp, 0xC] + cmp r0, 0x1 + bne _0804B5C4 + adds r3, 0x1 +_0804B5C4: + cmp r5, 0x35 + bgt _0804B5E4 + mov r0, r9 + adds r1, r4, 0 + str r2, [sp, 0x8] + str r3, [sp, 0xC] + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r2, [sp, 0x8] + ldr r3, [sp, 0xC] + cmp r0, 0x1 + bne _0804B5E4 + adds r3, 0x1 +_0804B5E4: + adds r6, r4, 0x1 + cmp r5, 0x1D + bgt _0804B606 + adds r0, r5, 0 + adds r1, r6, 0 + str r2, [sp, 0x8] + str r3, [sp, 0xC] + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r2, [sp, 0x8] + ldr r3, [sp, 0xC] + cmp r0, 0x1 + bne _0804B606 + adds r3, 0x1 +_0804B606: + cmp r3, 0x2 + ble _0804B612 + ldrh r1, [r2] + movs r0, 0x8 + orrs r0, r1 + strh r0, [r2] +_0804B612: + adds r4, r6, 0 + cmp r4, r10 + blt _0804B55A +_0804B618: + mov r5, r9 + ldr r0, [sp, 0x4] + cmp r5, r0 + blt _0804B54C +_0804B620: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804B630: .4byte 0x0000fffb + thumb_func_end sub_804B534 + + thumb_func_start sub_804B634 +sub_804B634: + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + ldr r4, _0804B718 + add sp, r4 + adds r4, r0, 0 + adds r5, r1, 0 + mov r9, r2 + ldr r0, _0804B71C + add r0, sp + mov r8, r0 + ldr r6, _0804B720 + add r6, sp + adds r1, r6, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_804D024 + add r0, sp, 0x8 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_804D084 + mov r1, r9 + movs r3, 0x1 + ldrsb r3, [r1, r3] + add r0, sp, 0x8 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_804D154 + str r6, [sp] + mov r1, r9 + ldrb r0, [r1, 0xD] + str r0, [sp, 0x4] + add r0, sp, 0x8 + adds r1, r4, 0 + adds r2, r5, 0 + mov r3, r8 + bl sub_804D2D0 + add r0, sp, 0x8 + adds r1, r4, 0 + adds r2, r5, 0 + mov r3, r9 + bl sub_804D5B0 + str r6, [sp] + movs r0, 0 + str r0, [sp, 0x4] + add r0, sp, 0x8 + adds r1, r4, 0 + adds r2, r5, 0 + mov r3, r8 + bl sub_804D8C8 + str r6, [sp] + add r0, sp, 0x8 + adds r1, r4, 0 + adds r2, r5, 0 + mov r3, r8 + bl sub_804E590 + mov r0, r9 + ldrb r3, [r0, 0x9] + add r0, sp, 0x8 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_804F0D0 + ldr r0, _0804B724 + movs r1, 0 + ldrsh r3, [r0, r1] + add r0, sp, 0x8 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_804EBC8 + ldr r0, _0804B728 + movs r1, 0 + ldrsh r3, [r0, r1] + add r0, sp, 0x8 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_804EEE4 + mov r0, r9 + ldrb r3, [r0, 0x13] + add r0, sp, 0x8 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_804CBEC + add r0, sp, 0x8 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_804E03C + add r0, sp, 0x8 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_804D534 + movs r3, 0xE5 + lsls r3, 5 + add sp, r3 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804B718: .4byte 0xffffe360 +_0804B71C: .4byte 0x00001c28 +_0804B720: .4byte 0x00001c64 +_0804B724: .4byte gUnknown_202F1B0 +_0804B728: .4byte gUnknown_202F1B2 + thumb_func_end sub_804B634 + + thumb_func_start sub_804B72C +sub_804B72C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _0804B9AC + add sp, r4 + movs r1, 0xE5 + lsls r1, 5 + add r1, sp + str r0, [r1] + movs r5, 0 + movs r6, 0x1 + ldr r1, _0804B9B0 + add r1, sp + str r5, [r1] + movs r0, 0x5 + str r0, [r1, 0x4] + movs r0, 0x1C + str r0, [r1, 0xC] + movs r0, 0x33 + str r0, [r1, 0x14] + movs r0, 0x38 + str r0, [r1, 0x18] + movs r2, 0x10 + str r2, [r1, 0x8] + movs r0, 0x27 + str r0, [r1, 0x10] + ldr r1, _0804B9B4 + add r1, sp + movs r0, 0x2 + str r0, [r1] + movs r0, 0x7 + str r0, [r1, 0x4] + str r2, [r1, 0x8] + movs r0, 0x19 + str r0, [r1, 0xC] + movs r0, 0x1E + str r0, [r1, 0x10] + add r0, sp, 0x8 + movs r1, 0x6 + movs r2, 0x4 + bl sub_804D084 + mov r2, sp + adds r2, 0x3B + ldr r3, _0804B9B8 + add r3, sp + str r2, [r3] + mov r4, sp + adds r4, 0x3C + ldr r0, _0804B9BC + add r0, sp + str r4, [r0] + mov r1, sp + adds r1, 0x5B + ldr r2, _0804B9C0 + add r2, sp + str r1, [r2] + mov r3, sp + adds r3, 0x5C + movs r4, 0xE6 + lsls r4, 5 + add r4, sp + str r3, [r4] + mov r0, sp + adds r0, 0x7B + ldr r1, _0804B9C4 + add r1, sp + str r0, [r1] + mov r2, sp + adds r2, 0x7E + ldr r3, _0804B9C8 + add r3, sp + str r2, [r3] + add r1, sp, 0x68 + add r0, sp, 0x8 + movs r2, 0xF0 + lsls r2, 1 + movs r4, 0x6 +_0804B7CC: + strb r5, [r0, 0xA] + strb r5, [r1, 0xA] + adds r1, r2 + adds r0, r2 + subs r4, 0x1 + cmp r4, 0 + bne _0804B7CC + movs r2, 0x6 + subs r2, 0x1 + movs r4, 0x4 + cmp r4, 0 + beq _0804B80C + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 5 + add r0, sp + adds r0, 0x8 + add r1, sp, 0x8 + ldr r3, _0804B9CC + add r3, sp + str r4, [r3] +_0804B7F6: + strb r5, [r1, 0xA] + strb r5, [r0, 0xA] + adds r0, 0x20 + adds r1, 0x20 + ldr r3, _0804B9CC + add r3, sp + ldr r4, [r3] + subs r4, 0x1 + str r4, [r3] + cmp r4, 0 + bne _0804B7F6 +_0804B80C: + movs r4, 0x1 + cmp r4, r2 + bge _0804B848 + movs r1, 0x3 +_0804B814: + adds r5, r4, 0x1 + mov r8, r5 + cmp r1, 0x1 + ble _0804B842 + lsls r0, r4, 4 + subs r0, r4 + lsls r0, 5 + add r0, sp + adds r0, 0x8 + adds r0, 0x20 + subs r3, r1, 0x1 + ldr r4, _0804B9CC + add r4, sp + str r3, [r4] +_0804B830: + strb r6, [r0, 0xA] + adds r0, 0x20 + ldr r3, _0804B9CC + add r3, sp + ldr r5, [r3] + subs r5, 0x1 + str r5, [r3] + cmp r5, 0 + bne _0804B830 +_0804B842: + mov r4, r8 + cmp r4, r2 + blt _0804B814 +_0804B848: + movs r4, 0 + ldr r5, _0804B9D0 + add r5, sp + str r4, [r5] + ldr r0, _0804B9CC + add r0, sp + str r4, [r0] + cmp r4, 0x4 + blt _0804B85C + b _0804BA8C +_0804B85C: + movs r4, 0 + ldr r2, _0804B9CC + add r2, sp + ldr r1, [r2] + adds r1, 0x1 + ldr r2, _0804B9D4 + add r2, sp + str r1, [r2] + cmp r4, 0x6 + blt _0804B872 + b _0804BA7A +_0804B872: + ldr r3, _0804B9B0 + add r3, sp + ldr r5, _0804B9D8 + add r5, sp + str r3, [r5] + ldr r0, _0804B9B4 + add r0, sp + ldr r1, _0804B9DC + add r1, sp + str r0, [r1] + ldr r2, _0804B9CC + add r2, sp + ldr r2, [r2] + lsls r0, r2, 2 + ldr r3, [r1] + adds r0, r3, r0 + ldr r3, _0804B9E0 + add r3, sp + str r0, [r3] +_0804B898: + lsls r0, r4, 4 + subs r0, r4 + ldr r5, _0804B9CC + add r5, sp + ldr r5, [r5] + adds r0, r5 + lsls r0, 5 + mov r7, sp + adds r7, r0 + adds r7, 0x8 + ldrb r0, [r7, 0xA] + cmp r0, 0 + bne _0804B8B4 + b _0804B9F4 +_0804B8B4: + lsls r0, r4, 2 + ldr r1, _0804B9D8 + add r1, sp + ldr r1, [r1] + adds r0, r1, r0 + ldr r1, [r0] + adds r2, r1, 0x2 + mov r10, r2 + ldr r3, _0804B9E0 + add r3, sp + ldr r3, [r3] + ldr r2, [r3] + adds r5, r2, 0x2 + ldr r0, _0804B9E4 + add r0, sp + str r5, [r0] + adds r4, 0x1 + mov r9, r4 + lsls r0, r4, 2 + ldr r3, _0804B9D8 + add r3, sp + ldr r3, [r3] + adds r0, r3, r0 + ldr r4, [r0] + subs r4, r1 + subs r4, 0x3 + ldr r5, _0804B9D4 + add r5, sp + ldr r5, [r5] + lsls r0, r5, 2 + ldr r1, _0804B9DC + add r1, sp + ldr r1, [r1] + adds r0, r1, r0 + ldr r5, [r0] + subs r5, r2 + subs r5, 0x3 + movs r0, 0x5 + adds r1, r4, 0 + bl sub_808411C + mov r8, r0 + movs r0, 0x4 + adds r1, r5, 0 + bl sub_808411C + adds r6, r0, 0 + mov r2, r8 + subs r4, r2 + adds r0, r4, 0 + bl DungeonRandomCapped + adds r4, r0, 0 + add r4, r10 + subs r5, r6 + adds r0, r5, 0 + bl DungeonRandomCapped + ldr r5, _0804B9E4 + add r5, sp + ldr r3, [r5] + adds r3, r0 + mov r10, r3 + mov r0, r8 + adds r3, r4, r0 + add r6, r10 + strh r4, [r7] + strh r3, [r7, 0x4] + mov r1, r10 + strh r1, [r7, 0x2] + strh r6, [r7, 0x6] + mov r8, r9 + ldr r5, _0804B9D0 + add r5, sp + ldr r2, [r5] + adds r2, 0x1 + ldr r5, _0804B9E8 + add r5, sp + str r2, [r5] + cmp r4, r3 + bge _0804B99E +_0804B956: + mov r5, r10 + adds r7, r4, 0x1 + cmp r5, r6 + bge _0804B998 + ldr r0, _0804B9EC + mov r9, r0 +_0804B962: + adds r0, r4, 0 + adds r1, r5, 0 + ldr r2, _0804B9F0 + add r2, sp + str r3, [r2] + bl GetMapTile_2 + ldrh r1, [r0] + mov r2, r9 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_2 + ldr r1, _0804B9D0 + add r1, sp + ldrb r1, [r1] + strb r1, [r0, 0x9] + adds r5, 0x1 + ldr r2, _0804B9F0 + add r2, sp + ldr r3, [r2] + cmp r5, r6 + blt _0804B962 +_0804B998: + adds r4, r7, 0 + cmp r4, r3 + blt _0804B956 +_0804B99E: + ldr r3, _0804B9E8 + add r3, sp + ldr r3, [r3] + ldr r4, _0804B9D0 + add r4, sp + str r3, [r4] + b _0804BA72 + .align 2, 0 +_0804B9AC: .4byte 0xffffe320 +_0804B9B0: .4byte 0x00001c28 +_0804B9B4: .4byte 0x00001c64 +_0804B9B8: .4byte 0x00001cd4 +_0804B9BC: .4byte 0x00001cd8 +_0804B9C0: .4byte 0x00001cbc +_0804B9C4: .4byte 0x00001cc4 +_0804B9C8: .4byte 0x00001cc8 +_0804B9CC: .4byte 0x00001ca4 +_0804B9D0: .4byte 0x00001ca8 +_0804B9D4: .4byte 0x00001ccc +_0804B9D8: .4byte 0x00001cac +_0804B9DC: .4byte 0x00001cb4 +_0804B9E0: .4byte 0x00001cb8 +_0804B9E4: .4byte 0x00001cb0 +_0804B9E8: .4byte 0x00001cd0 +_0804B9EC: .4byte 0x0000fffc +_0804B9F0: .4byte 0x00001cdc +_0804B9F4: + lsls r0, r4, 2 + ldr r5, _0804BBE8 + add r5, sp + ldr r5, [r5] + adds r0, r5, r0 + ldr r2, [r0] + adds r0, r2, 0x1 + ldr r1, _0804BBEC + add r1, sp + ldr r1, [r1] + ldr r3, [r1] + adds r6, r3, 0x1 + adds r4, 0x1 + mov r8, r4 + lsls r1, r4, 2 + adds r1, r5, r1 + ldr r1, [r1] + subs r1, r2 + subs r1, 0x3 + ldr r5, _0804BBF0 + add r5, sp + ldr r5, [r5] + lsls r2, r5, 2 + ldr r4, _0804BBF4 + add r4, sp + ldr r4, [r4] + adds r2, r4, r2 + ldr r4, [r2] + subs r4, r3 + subs r4, 0x3 + adds r1, r0, r1 + bl sub_808411C + adds r5, r0, 0 + adds r4, r6, r4 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_808411C + adds r4, r0, 0 + strh r5, [r7] + adds r0, r5, 0x1 + strh r0, [r7, 0x4] + strh r4, [r7, 0x2] + adds r0, r4, 0x1 + strh r0, [r7, 0x6] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r1, [r0] + ldr r3, _0804BBF8 + adds r2, r3, 0 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0xFF + strb r1, [r0, 0x9] +_0804BA72: + mov r4, r8 + cmp r4, 0x6 + bge _0804BA7A + b _0804B898 +_0804BA7A: + ldr r4, _0804BBF0 + add r4, sp + ldr r4, [r4] + ldr r5, _0804BBFC + add r5, sp + str r4, [r5] + cmp r4, 0x4 + bge _0804BA8C + b _0804B85C +_0804BA8C: + add r1, sp, 0x8 + movs r6, 0 + movs r0, 0x1 + strb r0, [r1, 0x16] + ldr r1, _0804BC00 + add r1, sp + strb r0, [r1] + movs r1, 0xFF + lsls r1, 1 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC04 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC08 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC0C + add r1, sp + strb r0, [r1] + ldr r1, _0804BC10 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC14 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC18 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC1C + add r1, sp + strb r0, [r1] + add r1, sp, 0x8 + strb r0, [r1, 0x14] + ldr r5, _0804BC20 + add r5, sp + ldr r5, [r5] + strb r0, [r5] + ldr r1, _0804BC24 + add r1, sp + ldr r1, [r1] + strb r0, [r1] + ldr r2, _0804BC28 + add r2, sp + ldr r2, [r2] + strb r0, [r2] + movs r3, 0xE6 + lsls r3, 5 + add r3, sp + ldr r3, [r3] + strb r0, [r3] + ldr r4, _0804BC2C + add r4, sp + ldr r4, [r4] + strb r0, [r4] + ldr r5, _0804BC30 + add r5, sp + ldr r5, [r5] + strb r0, [r5] + ldr r1, _0804BC34 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC38 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC3C + add r1, sp + strb r0, [r1] + ldr r1, _0804BC40 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC44 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC48 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC4C + add r1, sp + strb r0, [r1] + ldr r1, _0804BC50 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC54 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC58 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC5C + add r1, sp + strb r0, [r1] + ldr r1, _0804BC60 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC64 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC68 + add r1, sp + strb r0, [r1] + ldr r1, _0804BC6C + add r1, sp + strb r0, [r1] + add r0, sp, 0x8 + movs r1, 0x6 + movs r2, 0x4 + movs r4, 0xE5 + lsls r4, 5 + add r4, sp + ldr r3, [r4] + bl sub_804D5B0 + ldr r5, _0804BC70 + add r5, sp + ldr r4, _0804BC74 + add r4, sp + str r4, [sp] + str r6, [sp, 0x4] + add r0, sp, 0x8 + movs r1, 0x6 + movs r2, 0x4 + adds r3, r5, 0 + bl sub_804D8C8 + str r4, [sp] + add r0, sp, 0x8 + movs r1, 0x6 + movs r2, 0x4 + adds r3, r5, 0 + bl sub_804E590 + ldr r0, _0804BC78 + movs r5, 0 + ldrsh r3, [r0, r5] + add r0, sp, 0x8 + movs r1, 0x6 + movs r2, 0x4 + bl sub_804EBC8 + ldr r0, _0804BC7C + movs r1, 0 + ldrsh r3, [r0, r1] + add r0, sp, 0x8 + movs r1, 0x6 + movs r2, 0x4 + bl sub_804EEE4 + movs r2, 0xE5 + lsls r2, 5 + add r2, sp + ldr r2, [r2] + ldrb r3, [r2, 0x13] + add r0, sp, 0x8 + movs r1, 0x6 + movs r2, 0x4 + bl sub_804CBEC + add r0, sp, 0x8 + movs r1, 0x6 + movs r2, 0x4 + bl sub_804E03C + movs r3, 0xE7 + lsls r3, 5 + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804BBE8: .4byte 0x00001cac +_0804BBEC: .4byte 0x00001cb8 +_0804BBF0: .4byte 0x00001ccc +_0804BBF4: .4byte 0x00001cb4 +_0804BBF8: .4byte 0x0000fffc +_0804BBFC: .4byte 0x00001ca4 +_0804BC00: .4byte 0x000001fd +_0804BC04: .4byte 0x000003dd +_0804BC08: .4byte 0x000003de +_0804BC0C: .4byte 0x000005bd +_0804BC10: .4byte 0x000005be +_0804BC14: .4byte 0x0000079d +_0804BC18: .4byte 0x0000079e +_0804BC1C: .4byte 0x0000097d +_0804BC20: .4byte 0x00001cd4 +_0804BC24: .4byte 0x00001cd8 +_0804BC28: .4byte 0x00001cbc +_0804BC2C: .4byte 0x00001cc4 +_0804BC30: .4byte 0x00001cc8 +_0804BC34: .4byte 0x0000025d +_0804BC38: .4byte 0x0000025e +_0804BC3C: .4byte 0x0000043d +_0804BC40: .4byte 0x0000043e +_0804BC44: .4byte 0x0000061d +_0804BC48: .4byte 0x0000061e +_0804BC4C: .4byte 0x000007fd +_0804BC50: .4byte 0x000007fe +_0804BC54: .4byte 0x000009dd +_0804BC58: .4byte 0x0000097c +_0804BC5C: .4byte 0x0000099b +_0804BC60: .4byte 0x0000099c +_0804BC64: .4byte 0x000009bb +_0804BC68: .4byte 0x000009bc +_0804BC6C: .4byte 0x000009db +_0804BC70: .4byte 0x00001c28 +_0804BC74: .4byte 0x00001c64 +_0804BC78: .4byte gUnknown_202F1B0 +_0804BC7C: .4byte gUnknown_202F1B2 + thumb_func_end sub_804B72C + + thumb_func_start sub_804BC80 +sub_804BC80: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _0804BED0 + add sp, r4 + movs r1, 0xE5 + lsls r1, 5 + add r1, sp + str r0, [r1] + movs r4, 0x1 + movs r5, 0 + ldr r1, _0804BED4 + add r1, sp + str r5, [r1] + movs r0, 0xB + str r0, [r1, 0x4] + movs r0, 0x16 + str r0, [r1, 0x8] + movs r0, 0x21 + str r0, [r1, 0xC] + movs r0, 0x2C + str r0, [r1, 0x10] + movs r0, 0x38 + str r0, [r1, 0x14] + ldr r1, _0804BED8 + add r1, sp + str r4, [r1] + movs r0, 0x9 + str r0, [r1, 0x4] + movs r0, 0x10 + str r0, [r1, 0x8] + movs r0, 0x17 + str r0, [r1, 0xC] + movs r0, 0x1F + str r0, [r1, 0x10] + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x4 + bl sub_804D084 + add r6, sp, 0x70 + add r1, sp, 0x68 + add r0, sp, 0x8 + movs r3, 0xF0 + lsls r3, 1 + movs r2, 0x5 +_0804BCE0: + strb r4, [r0, 0xA] + strb r4, [r1, 0xA] + adds r1, r3 + adds r0, r3 + subs r2, 0x1 + cmp r2, 0 + bne _0804BCE0 + movs r3, 0x5 + subs r3, 0x1 + movs r2, 0x4 + cmp r2, 0 + beq _0804BD1A + lsls r0, r3, 4 + subs r0, r3 + lsls r0, 5 + add r0, sp + adds r0, 0x8 + add r1, sp, 0x8 + mov r10, r2 +_0804BD06: + strb r4, [r1, 0xA] + strb r4, [r0, 0xA] + adds r0, 0x20 + adds r1, 0x20 + movs r2, 0x1 + negs r2, r2 + add r10, r2 + mov r2, r10 + cmp r2, 0 + bne _0804BD06 +_0804BD1A: + movs r2, 0x1 + cmp r2, r3 + bge _0804BD58 + movs r1, 0x3 +_0804BD22: + adds r4, r2, 0x1 + ldr r0, _0804BEDC + add r0, sp + str r4, [r0] + cmp r1, 0x1 + ble _0804BD4E + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 5 + add r0, sp + adds r0, 0x8 + adds r0, 0x20 + subs r2, r1, 0x1 + mov r10, r2 +_0804BD3E: + strb r5, [r0, 0xA] + adds r0, 0x20 + movs r4, 0x1 + negs r4, r4 + add r10, r4 + mov r2, r10 + cmp r2, 0 + bne _0804BD3E +_0804BD4E: + ldr r4, _0804BEDC + add r4, sp + ldr r2, [r4] + cmp r2, r3 + blt _0804BD22 +_0804BD58: + add r0, sp, 0x8 + movs r1, 0x1 + strb r1, [r0, 0x8] + movs r0, 0xF2 + lsls r0, 3 + add r0, sp + strb r1, [r0] + strb r1, [r6] + movs r0, 0xFE + lsls r0, 3 + add r0, sp + strb r1, [r0] + movs r5, 0 + ldr r6, _0804BEE0 + add r6, sp + str r5, [r6] + mov r10, r5 + cmp r5, 0x4 + blt _0804BD80 + b _0804BFAC +_0804BD80: + movs r0, 0x4 + movs r1, 0xE6 + lsls r1, 5 + add r1, sp + str r0, [r1] +_0804BD8A: + movs r2, 0 + cmp r2, 0x5 + blt _0804BD92 + b _0804BF94 +_0804BD92: + ldr r3, _0804BED4 + add r3, sp + ldr r4, _0804BEE4 + add r4, sp + str r3, [r4] + ldr r5, _0804BED8 + add r5, sp + ldr r6, _0804BEE8 + add r6, sp + str r5, [r6] + mov r1, r10 + lsls r0, r1, 2 + adds r0, r5, r0 + ldr r3, _0804BEEC + add r3, sp + str r0, [r3] +_0804BDB2: + lsls r0, r2, 4 + subs r0, r2 + add r0, r10 + lsls r0, 5 + mov r7, sp + adds r7, r0 + adds r7, 0x8 + ldrb r0, [r7, 0x8] + adds r4, r2, 0x1 + ldr r5, _0804BEDC + add r5, sp + str r4, [r5] + cmp r0, 0 + beq _0804BDD0 + b _0804BF88 +_0804BDD0: + ldrb r0, [r7, 0xA] + cmp r0, 0 + bne _0804BDD8 + b _0804BF00 +_0804BDD8: + lsls r0, r2, 2 + ldr r6, _0804BEE4 + add r6, sp + ldr r6, [r6] + adds r0, r6, r0 + ldr r1, [r0] + adds r0, r1, 0x2 + mov r9, r0 + ldr r3, _0804BEEC + add r3, sp + ldr r3, [r3] + ldr r2, [r3] + adds r4, r2, 0x2 + ldr r5, _0804BEF0 + add r5, sp + str r4, [r5] + ldr r6, _0804BEDC + add r6, sp + ldr r6, [r6] + lsls r0, r6, 2 + ldr r3, _0804BEE4 + add r3, sp + ldr r3, [r3] + adds r0, r3, r0 + ldr r4, [r0] + subs r4, r1 + subs r4, 0x3 + ldr r5, _0804BEE8 + add r5, sp + ldr r5, [r5] + movs r6, 0xE6 + lsls r6, 5 + add r6, sp + ldr r6, [r6] + adds r0, r5, r6 + ldr r5, [r0] + subs r5, r2 + subs r5, 0x3 + movs r0, 0x5 + adds r1, r4, 0 + bl sub_808411C + mov r8, r0 + movs r0, 0x4 + adds r1, r5, 0 + bl sub_808411C + adds r6, r0, 0 + mov r0, r8 + subs r4, r0 + adds r0, r4, 0 + bl DungeonRandomCapped + adds r4, r0, 0 + add r4, r9 + subs r5, r6 + adds r0, r5, 0 + bl DungeonRandomCapped + ldr r2, _0804BEF0 + add r2, sp + ldr r1, [r2] + adds r1, r0 + mov r9, r1 + mov r5, r8 + adds r3, r4, r5 + add r6, r9 + strh r4, [r7] + strh r3, [r7, 0x4] + strh r1, [r7, 0x2] + strh r6, [r7, 0x6] + ldr r1, _0804BEE0 + add r1, sp + ldr r0, [r1] + adds r0, 0x1 + ldr r1, _0804BEF4 + add r1, sp + str r0, [r1] + cmp r4, r3 + bge _0804BEC0 +_0804BE78: + mov r5, r9 + adds r7, r4, 0x1 + cmp r5, r6 + bge _0804BEBA + ldr r2, _0804BEF8 + mov r8, r2 +_0804BE84: + adds r0, r4, 0 + adds r1, r5, 0 + ldr r2, _0804BEFC + add r2, sp + str r3, [r2] + bl GetMapTile_2 + ldrh r1, [r0] + mov r2, r8 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_2 + ldr r1, _0804BEE0 + add r1, sp + ldrb r1, [r1] + strb r1, [r0, 0x9] + adds r5, 0x1 + ldr r2, _0804BEFC + add r2, sp + ldr r3, [r2] + cmp r5, r6 + blt _0804BE84 +_0804BEBA: + adds r4, r7, 0 + cmp r4, r3 + blt _0804BE78 +_0804BEC0: + ldr r3, _0804BEF4 + add r3, sp + ldr r3, [r3] + ldr r4, _0804BEE0 + add r4, sp + str r3, [r4] + b _0804BF88 + .align 2, 0 +_0804BED0: .4byte 0xffffe338 +_0804BED4: .4byte 0x00001c28 +_0804BED8: .4byte 0x00001c64 +_0804BEDC: .4byte 0x00001cb8 +_0804BEE0: .4byte 0x00001ca4 +_0804BEE4: .4byte 0x00001ca8 +_0804BEE8: .4byte 0x00001cb0 +_0804BEEC: .4byte 0x00001cb4 +_0804BEF0: .4byte 0x00001cac +_0804BEF4: .4byte 0x00001cbc +_0804BEF8: .4byte 0x0000fffc +_0804BEFC: .4byte 0x00001cc4 +_0804BF00: + lsls r0, r2, 2 + ldr r4, _0804C080 + add r4, sp + ldr r4, [r4] + adds r0, r4, r0 + ldr r2, [r0] + adds r0, r2, 0x1 + ldr r5, _0804C084 + add r5, sp + ldr r5, [r5] + ldr r3, [r5] + adds r6, r3, 0x1 + mov r8, r6 + ldr r4, _0804C088 + add r4, sp + ldr r4, [r4] + lsls r1, r4, 2 + ldr r5, _0804C080 + add r5, sp + ldr r5, [r5] + adds r1, r5, r1 + ldr r1, [r1] + subs r1, r2 + subs r1, 0x3 + ldr r6, _0804C08C + add r6, sp + ldr r6, [r6] + movs r4, 0xE6 + lsls r4, 5 + add r4, sp + ldr r4, [r4] + adds r2, r6, r4 + ldr r4, [r2] + subs r4, r3 + subs r4, 0x3 + adds r1, r0, r1 + bl sub_808411C + adds r5, r0, 0 + add r4, r8 + mov r0, r8 + adds r1, r4, 0 + bl sub_808411C + adds r4, r0, 0 + strh r5, [r7] + adds r0, r5, 0x1 + strh r0, [r7, 0x4] + strh r4, [r7, 0x2] + adds r0, r4, 0x1 + strh r0, [r7, 0x6] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r1, [r0] + ldr r6, _0804C090 + adds r2, r6, 0 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0xFF + strb r1, [r0, 0x9] +_0804BF88: + ldr r0, _0804C088 + add r0, sp + ldr r2, [r0] + cmp r2, 0x5 + bge _0804BF94 + b _0804BDB2 +_0804BF94: + movs r2, 0xE6 + lsls r2, 5 + add r2, sp + ldr r1, [r2] + adds r1, 0x4 + str r1, [r2] + movs r3, 0x1 + add r10, r3 + mov r4, r10 + cmp r4, 0x4 + bge _0804BFAC + b _0804BD8A +_0804BFAC: + movs r2, 0x1 + movs r1, 0x1 + movs r3, 0xF + add r4, sp, 0x1C +_0804BFB4: + movs r5, 0 + mov r10, r5 + lsls r0, r3, 5 + adds r0, r4 +_0804BFBC: + strb r1, [r0] + strb r1, [r0, 0x1F] + adds r0, 0x20 + movs r6, 0x1 + add r10, r6 + mov r5, r10 + cmp r5, 0x2 + ble _0804BFBC + movs r0, 0xF0 + lsls r0, 1 + adds r3, 0xF + adds r2, 0x1 + cmp r2, 0x3 + ble _0804BFB4 + mov r10, r6 + movs r5, 0x1 + adds r4, r0, 0 + mov r6, sp + adds r6, r4 + adds r6, 0x8 +_0804BFE4: + movs r2, 0 + mov r1, r10 + lsls r0, r1, 5 + mov r3, r10 + adds r3, 0x1 + adds r1, r0, r6 + add r0, sp + adds r0, 0x8 +_0804BFF4: + strb r5, [r0, 0x16] + strb r5, [r1, 0x15] + adds r1, r4 + adds r0, r4 + adds r2, 0x1 + cmp r2, 0x3 + ble _0804BFF4 + mov r10, r3 + cmp r3, 0x2 + ble _0804BFE4 + ldr r5, _0804C094 + add r5, sp + ldr r4, _0804C098 + add r4, sp + str r4, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x4 + adds r3, r5, 0 + bl sub_804D8C8 + str r4, [sp] + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x4 + adds r3, r5, 0 + bl sub_804E590 + ldr r0, _0804C09C + movs r2, 0 + ldrsh r3, [r0, r2] + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x4 + bl sub_804EBC8 + ldr r0, _0804C0A0 + movs r4, 0 + ldrsh r3, [r0, r4] + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x4 + bl sub_804EEE4 + movs r5, 0xE5 + lsls r5, 5 + add r5, sp + ldr r5, [r5] + ldrb r3, [r5, 0x13] + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x4 + bl sub_804CBEC + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x4 + bl sub_804E03C + ldr r3, _0804C0A4 + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C080: .4byte 0x00001ca8 +_0804C084: .4byte 0x00001cb4 +_0804C088: .4byte 0x00001cb8 +_0804C08C: .4byte 0x00001cb0 +_0804C090: .4byte 0x0000fffc +_0804C094: .4byte 0x00001c28 +_0804C098: .4byte 0x00001c64 +_0804C09C: .4byte gUnknown_202F1B0 +_0804C0A0: .4byte gUnknown_202F1B2 +_0804C0A4: .4byte 0x00001cc8 + thumb_func_end sub_804BC80 + + thumb_func_start sub_804C0A8 +sub_804C0A8: + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r4, _0804C17C + add sp, r4 + adds r6, r0, 0 + ldr r4, _0804C180 + add r4, sp + movs r0, 0 + str r0, [r4] + movs r0, 0xB + str r0, [r4, 0x4] + movs r0, 0x16 + str r0, [r4, 0x8] + movs r0, 0x21 + str r0, [r4, 0xC] + movs r0, 0x2C + str r0, [r4, 0x10] + movs r0, 0x38 + str r0, [r4, 0x14] + ldr r5, _0804C184 + add r5, sp + movs r0, 0x4 + str r0, [r5] + movs r0, 0xF + str r0, [r5, 0x4] + movs r0, 0x1 + mov r8, r0 + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x1 + bl sub_804D084 + movs r3, 0x1 + ldrsb r3, [r6, r3] + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x1 + bl sub_804D154 + str r5, [sp] + ldrb r0, [r6, 0xD] + str r0, [sp, 0x4] + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x1 + adds r3, r4, 0 + bl sub_804D2D0 + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x1 + adds r3, r6, 0 + bl sub_804D5B0 + str r5, [sp] + mov r1, r8 + str r1, [sp, 0x4] + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x1 + adds r3, r4, 0 + bl sub_804D8C8 + str r5, [sp] + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x1 + adds r3, r4, 0 + bl sub_804E590 + ldr r0, _0804C188 + movs r1, 0 + ldrsh r3, [r0, r1] + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x1 + bl sub_804EBC8 + ldr r0, _0804C18C + movs r1, 0 + ldrsh r3, [r0, r1] + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x1 + bl sub_804EEE4 + ldrb r3, [r6, 0x13] + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x1 + bl sub_804CBEC + add r0, sp, 0x8 + movs r1, 0x5 + movs r2, 0x1 + bl sub_804E03C + movs r3, 0xE5 + lsls r3, 5 + add sp, r3 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804C17C: .4byte 0xffffe360 +_0804C180: .4byte 0x00001c28 +_0804C184: .4byte 0x00001c64 +_0804C188: .4byte gUnknown_202F1B0 +_0804C18C: .4byte gUnknown_202F1B2 + thumb_func_end sub_804C0A8 + + thumb_func_start sub_804C190 +sub_804C190: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _0804C2CC + add sp, r4 + mov r10, r0 + ldr r1, _0804C2D0 + add r1, sp + movs r2, 0xB + str r2, [r1] + movs r0, 0x16 + str r0, [r1, 0x4] + movs r0, 0x21 + str r0, [r1, 0x8] + movs r0, 0x2C + str r0, [r1, 0xC] + ldr r1, _0804C2D4 + add r1, sp + movs r0, 0x2 + str r0, [r1] + str r2, [r1, 0x4] + movs r0, 0x14 + str r0, [r1, 0x8] + movs r0, 0x1E + str r0, [r1, 0xC] + movs r0, 0x3 + mov r8, r0 + movs r7, 0x3 + add r0, sp, 0x8 + movs r1, 0x3 + movs r2, 0x3 + bl sub_804D084 + movs r1, 0 + add r5, sp, 0x50 + movs r0, 0x3E + add r0, sp + mov r9, r0 + mov r0, r10 + ldrb r0, [r0, 0xD] + mov r12, r0 +_0804C1E6: + adds r3, r1, 0x1 + cmp r7, 0 + beq _0804C204 + lsls r0, r1, 4 + subs r0, r1 + movs r2, 0x1 + lsls r0, 5 + add r0, sp + adds r0, 0x8 + adds r1, r7, 0 +_0804C1FA: + strb r2, [r0, 0xA] + adds r0, 0x20 + subs r1, 0x1 + cmp r1, 0 + bne _0804C1FA +_0804C204: + adds r1, r3, 0 + cmp r1, r8 + blt _0804C1E6 + add r0, sp, 0x8 + movs r4, 0x1 + strb r4, [r0, 0x8] + add r0, sp, 0x3D0 + strb r4, [r0] + strb r4, [r5] + movs r0, 0x82 + lsls r0, 3 + add r0, sp + strb r4, [r0] + ldr r6, _0804C2D0 + add r6, sp + ldr r5, _0804C2D4 + add r5, sp + str r5, [sp] + mov r1, r12 + str r1, [sp, 0x4] + add r0, sp, 0x8 + mov r1, r8 + adds r2, r7, 0 + adds r3, r6, 0 + bl sub_804D2D0 + mov r0, r9 + strb r4, [r0] + ldr r0, _0804C2D8 + add r0, sp + strb r4, [r0] + ldr r0, _0804C2DC + add r0, sp + strb r4, [r0] + ldr r0, _0804C2E0 + add r0, sp + strb r4, [r0] + add r0, sp, 0x1FC + strb r4, [r0] + ldr r0, _0804C2E4 + add r0, sp + strb r4, [r0] + add r0, sp, 0x21C + strb r4, [r0] + ldr r0, _0804C2E8 + add r0, sp + strb r4, [r0] + str r5, [sp] + str r4, [sp, 0x4] + add r0, sp, 0x8 + mov r1, r8 + adds r2, r7, 0 + adds r3, r6, 0 + bl sub_804D8C8 + str r5, [sp] + add r0, sp, 0x8 + mov r1, r8 + adds r2, r7, 0 + adds r3, r6, 0 + bl sub_804E590 + ldr r0, _0804C2EC + movs r1, 0 + ldrsh r3, [r0, r1] + add r0, sp, 0x8 + mov r1, r8 + adds r2, r7, 0 + bl sub_804EBC8 + ldr r0, _0804C2F0 + movs r1, 0 + ldrsh r3, [r0, r1] + add r0, sp, 0x8 + mov r1, r8 + adds r2, r7, 0 + bl sub_804EEE4 + mov r0, r10 + ldrb r3, [r0, 0x13] + add r0, sp, 0x8 + mov r1, r8 + adds r2, r7, 0 + bl sub_804CBEC + add r0, sp, 0x8 + mov r1, r8 + adds r2, r7, 0 + bl sub_804E03C + movs r3, 0xE5 + lsls r3, 5 + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C2CC: .4byte 0xffffe360 +_0804C2D0: .4byte 0x00001c28 +_0804C2D4: .4byte 0x00001c64 +_0804C2D8: .4byte 0x0000021d +_0804C2DC: .4byte 0x0000021e +_0804C2E0: .4byte 0x000003fd +_0804C2E4: .4byte 0x0000021b +_0804C2E8: .4byte 0x0000023b +_0804C2EC: .4byte gUnknown_202F1B0 +_0804C2F0: .4byte gUnknown_202F1B2 + thumb_func_end sub_804C190 + + thumb_func_start sub_804C2F4 +sub_804C2F4: + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, _0804C420 + add sp, r4 + mov r8, r0 + ldr r1, _0804C424 + add r1, sp + movs r0, 0x5 + str r0, [r1] + movs r0, 0xF + str r0, [r1, 0x4] + movs r0, 0x23 + str r0, [r1, 0x8] + movs r0, 0x32 + str r0, [r1, 0xC] + ldr r1, _0804C428 + add r1, sp + movs r0, 0x2 + str r0, [r1] + movs r0, 0xB + str r0, [r1, 0x4] + movs r0, 0x14 + str r0, [r1, 0x8] + movs r0, 0x1E + str r0, [r1, 0xC] + movs r7, 0x3 + movs r6, 0x3 + add r0, sp, 0x8 + movs r1, 0x3 + movs r2, 0x3 + bl sub_804D084 + movs r1, 0 + mov r0, r8 + ldrb r4, [r0, 0xD] +_0804C33C: + adds r3, r1, 0x1 + cmp r6, 0 + beq _0804C35A + lsls r0, r1, 4 + subs r0, r1 + movs r2, 0x1 + lsls r0, 5 + add r0, sp + adds r0, 0x8 + adds r1, r6, 0 +_0804C350: + strb r2, [r0, 0xA] + adds r0, 0x20 + subs r1, 0x1 + cmp r1, 0 + bne _0804C350 +_0804C35A: + adds r1, r3, 0 + cmp r1, r7 + blt _0804C33C + ldr r3, _0804C424 + add r3, sp + ldr r0, _0804C428 + add r0, sp + str r0, [sp] + str r4, [sp, 0x4] + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804D2D0 + movs r4, 0x1 + ldr r3, _0804C42C + add r3, sp + ldr r0, _0804C430 + add r0, sp + add r2, sp, 0x8 + movs r1, 0x2 +_0804C384: + strb r4, [r2, 0x16] + strb r4, [r0] + strb r4, [r0, 0x1] + strb r4, [r3] + adds r3, 0x20 + adds r0, 0x20 + adds r2, 0x20 + subs r1, 0x1 + cmp r1, 0 + bge _0804C384 + ldr r5, _0804C424 + add r5, sp + ldr r4, _0804C428 + add r4, sp + str r4, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + adds r3, r5, 0 + bl sub_804D8C8 + movs r0, 0x1 + movs r1, 0 + movs r2, 0x1 + add r3, sp, 0x8 + bl sub_804C43C + movs r0, 0x1 + movs r1, 0 + movs r2, 0x2 + add r3, sp, 0x8 + bl sub_804C43C + str r4, [sp] + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + adds r3, r5, 0 + bl sub_804E590 + ldr r0, _0804C434 + movs r1, 0 + ldrsh r3, [r0, r1] + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804EBC8 + ldr r0, _0804C438 + movs r1, 0 + ldrsh r3, [r0, r1] + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804EEE4 + mov r0, r8 + ldrb r3, [r0, 0x13] + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804CBEC + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804E03C + movs r3, 0xE5 + lsls r3, 5 + add sp, r3 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C420: .4byte 0xffffe360 +_0804C424: .4byte 0x00001c28 +_0804C428: .4byte 0x00001c64 +_0804C42C: .4byte 0x000003dd +_0804C430: .4byte 0x000001fd +_0804C434: .4byte gUnknown_202F1B0 +_0804C438: .4byte gUnknown_202F1B2 + thumb_func_end sub_804C2F4 + + thumb_func_start sub_804C43C +sub_804C43C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + str r0, [sp] + str r3, [sp, 0x4] + lsls r7, r1, 5 + lsls r0, 4 + str r0, [sp, 0xC] + ldr r3, [sp] + subs r0, r3 + lsls r0, 5 + ldr r4, [sp, 0x4] + adds r0, r4 + adds r3, r7, r0 + adds r6, r1, r2 + lsls r1, r6, 5 + adds r2, r1, r0 + movs r5, 0 + ldrsh r1, [r2, r5] + adds r4, r1, 0 + ldrh r0, [r3] + mov r8, r0 + movs r5, 0 + ldrsh r0, [r3, r5] + cmp r1, r0 + ble _0804C478 + mov r4, r8 +_0804C478: + lsls r0, r4, 16 + asrs r0, 16 + str r0, [sp, 0x8] + movs r1, 0x2 + ldrsh r0, [r3, r1] + mov r10, r0 + movs r4, 0x4 + ldrsh r1, [r2, r4] + adds r4, r1, 0 + ldrh r5, [r3, 0x4] + mov r8, r5 + movs r5, 0x4 + ldrsh r0, [r3, r5] + cmp r1, r0 + bge _0804C498 + mov r4, r8 +_0804C498: + lsls r0, r4, 16 + asrs r0, 16 + str r0, [sp, 0x10] + movs r1, 0x6 + ldrsh r0, [r2, r1] + mov r8, r0 + movs r2, 0 + ldrsh r0, [r3, r2] + mov r1, r10 + bl GetMapTile_1 + ldrb r0, [r0, 0x9] + mov r9, r0 + ldr r5, [sp, 0x8] + str r7, [sp, 0x1C] + ldr r3, [sp, 0xC] + str r3, [sp, 0x18] + str r6, [sp, 0x14] + ldr r4, [sp, 0x10] + cmp r5, r4 + bge _0804C4F2 +_0804C4C2: + mov r4, r10 + adds r6, r5, 0x1 + cmp r10, r8 + bge _0804C4EA + ldr r0, _0804C538 + adds r7, r0, 0 +_0804C4CE: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r1, [r0] + ands r1, r7 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + mov r1, r9 + strb r1, [r0, 0x9] + adds r4, 0x1 + cmp r4, r8 + blt _0804C4CE +_0804C4EA: + adds r5, r6, 0 + ldr r2, [sp, 0x10] + cmp r5, r2 + blt _0804C4C2 +_0804C4F2: + ldr r3, [sp, 0x18] + ldr r4, [sp] + subs r1, r3, r4 + lsls r1, 5 + ldr r5, [sp, 0x4] + adds r1, r5 + ldr r0, [sp, 0x1C] + adds r2, r0, r1 + movs r3, 0 + mov r4, sp + ldrh r4, [r4, 0x8] + strh r4, [r2] + mov r5, sp + ldrh r5, [r5, 0x10] + strh r5, [r2, 0x4] + mov r0, r10 + strh r0, [r2, 0x2] + mov r4, r8 + strh r4, [r2, 0x6] + ldr r5, [sp, 0x14] + lsls r0, r5, 5 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0, 0x12] + strb r1, [r2, 0x12] + strb r3, [r0, 0xB] + strb r1, [r0, 0x11] + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C538: .4byte 0x0000fffc + thumb_func_end sub_804C43C + + thumb_func_start sub_804C53C +sub_804C53C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _0804C6F8 + add sp, r4 + mov r10, r2 + adds r7, r0, 0 + adds r6, r1, 0 + ldr r0, _0804C6FC + add r0, sp + ldr r1, _0804C700 + add r1, sp + adds r2, r7, 0 + adds r3, r6, 0 + bl sub_804D024 + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804D084 + movs r2, 0 + cmp r2, r7 + bge _0804C594 +_0804C570: + adds r3, r2, 0x1 + cmp r6, 0 + ble _0804C58E + lsls r0, r2, 4 + subs r0, r2 + movs r2, 0x1 + lsls r0, 5 + add r0, sp + adds r0, 0x8 + adds r1, r6, 0 +_0804C584: + strb r2, [r0, 0xA] + adds r0, 0x20 + subs r1, 0x1 + cmp r1, 0 + bne _0804C584 +_0804C58E: + adds r2, r3, 0 + cmp r2, r7 + blt _0804C570 +_0804C594: + movs r2, 0x1 + subs r0, r7, 0x1 + mov r8, r0 + subs r1, r6, 0x1 + mov r9, r1 + mov r0, r10 + ldrb r0, [r0, 0xD] + mov r12, r0 + cmp r2, r8 + bge _0804C5D2 + mov r4, r9 + mov r5, r8 +_0804C5AC: + adds r3, r2, 0x1 + cmp r4, 0x1 + ble _0804C5CC + lsls r0, r2, 4 + subs r0, r2 + movs r2, 0x1 + lsls r0, 5 + add r0, sp + adds r0, 0x8 + adds r0, 0x20 + subs r1, r4, 0x1 +_0804C5C2: + strb r2, [r0, 0x8] + adds r0, 0x20 + subs r1, 0x1 + cmp r1, 0 + bne _0804C5C2 +_0804C5CC: + adds r2, r3, 0 + cmp r2, r5 + blt _0804C5AC +_0804C5D2: + ldr r3, _0804C6FC + add r3, sp + ldr r0, _0804C700 + add r0, sp + str r0, [sp] + mov r1, r12 + str r1, [sp, 0x4] + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804D2D0 + movs r2, 0 + cmp r2, r8 + bge _0804C636 + movs r4, 0x1 + mov r0, r9 + lsls r5, r0, 5 + subs r1, r7, 0x2 + mov r12, r1 +_0804C5FA: + cmp r2, 0 + beq _0804C614 + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 5 + mov r1, sp + adds r1, r0 + adds r1, 0x8 + strb r4, [r1, 0x16] + adds r0, r5, r0 + add r0, sp + adds r0, 0x8 + strb r4, [r0, 0x16] +_0804C614: + adds r3, r2, 0x1 + cmp r2, r12 + bge _0804C630 + lsls r0, r3, 4 + subs r0, r3 + lsls r0, 5 + mov r1, sp + adds r1, r0 + adds r1, 0x8 + strb r4, [r1, 0x15] + adds r0, r5, r0 + add r0, sp + adds r0, 0x8 + strb r4, [r0, 0x15] +_0804C630: + adds r2, r3, 0 + cmp r2, r8 + blt _0804C5FA +_0804C636: + movs r1, 0 + cmp r1, r9 + bge _0804C66A + movs r3, 0x1 + mov r2, r8 + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 5 + add r0, sp + adds r0, 0x8 + add r2, sp, 0x8 + subs r5, r6, 0x2 + mov r4, r9 +_0804C650: + cmp r1, 0 + beq _0804C658 + strb r3, [r2, 0x13] + strb r3, [r0, 0x13] +_0804C658: + cmp r1, r5 + bge _0804C660 + strb r3, [r2, 0x14] + strb r3, [r0, 0x14] +_0804C660: + adds r0, 0x20 + adds r2, 0x20 + adds r1, 0x1 + cmp r1, r4 + blt _0804C650 +_0804C66A: + ldr r5, _0804C6FC + add r5, sp + ldr r4, _0804C700 + add r4, sp + str r4, [sp] + movs r0, 0 + str r0, [sp, 0x4] + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + adds r3, r5, 0 + bl sub_804D8C8 + str r4, [sp] + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + adds r3, r5, 0 + bl sub_804E590 + mov r0, r10 + ldrb r3, [r0, 0x9] + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804F0D0 + ldr r0, _0804C704 + movs r1, 0 + ldrsh r3, [r0, r1] + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804EBC8 + ldr r0, _0804C708 + movs r2, 0 + ldrsh r3, [r0, r2] + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804EEE4 + mov r0, r10 + ldrb r3, [r0, 0x13] + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804CBEC + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804E03C + add r0, sp, 0x8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804D534 + movs r3, 0xE5 + lsls r3, 5 + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C6F8: .4byte 0xffffe360 +_0804C6FC: .4byte 0x00001c28 +_0804C700: .4byte 0x00001c64 +_0804C704: .4byte gUnknown_202F1B0 +_0804C708: .4byte gUnknown_202F1B2 + thumb_func_end sub_804C53C + + thumb_func_start sub_804C70C +sub_804C70C: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r7, r0, 0 + mov r8, r1 + ldr r0, _0804C73C + ldr r0, [r0] + ldr r1, _0804C740 + adds r0, r1 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r7, 2 + adds r0, r1 + ldr r0, [r0] + ldrb r5, [r0] + ldrb r6, [r0, 0x1] + cmp r5, 0 + beq _0804C736 + cmp r6, 0 + bne _0804C744 +_0804C736: + bl sub_804C918 + b _0804C782 + .align 2, 0 +_0804C73C: .4byte gDungeonGlobalData +_0804C740: .4byte 0x00013568 +_0804C744: + cmp r7, 0x31 + bgt _0804C752 + adds r0, r7, 0 + bl sub_8051288 + movs r0, 0x1 + b _0804C784 +_0804C752: + adds r1, r5, 0x4 + movs r0, 0x38 + bl __divsi3 + adds r4, r0, 0 + cmp r4, 0x1 + bgt _0804C762 + movs r4, 0x1 +_0804C762: + adds r1, r6, 0x4 + movs r0, 0x20 + bl __divsi3 + adds r1, r0, 0 + cmp r1, 0x1 + bgt _0804C772 + movs r1, 0x1 +_0804C772: + str r7, [sp] + mov r0, r8 + str r0, [sp, 0x4] + adds r0, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_804C790 +_0804C782: + movs r0, 0 +_0804C784: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_804C70C + + thumb_func_start sub_804C790 +sub_804C790: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _0804C81C + add sp, r4 + adds r5, r0, 0 + adds r4, r1, 0 + ldr r0, _0804C820 + add r0, sp + str r2, [r0] + ldr r1, _0804C824 + add r1, sp + str r3, [r1] + movs r2, 0 + mov r10, r2 + mov r8, r2 + ldr r0, _0804C828 + add r0, sp + ldr r1, _0804C82C + add r1, sp + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_804D024 + add r0, sp, 0x10 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_804D084 + ldr r0, _0804C830 + add r0, sp + ldr r0, [r0] + movs r3, 0x1 + ldrsb r3, [r0, r3] + add r0, sp, 0x10 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_804D154 + mov r6, r8 + cmp r8, r5 + bge _0804C818 +_0804C7E8: + movs r1, 0 + mov r8, r1 + adds r2, r6, 0x1 + cmp r8, r4 + bge _0804C812 + lsls r0, r6, 4 + subs r0, r6 + movs r1, 0x1 + lsls r0, 5 + add r0, sp + adds r0, 0x10 + mov r8, r4 +_0804C800: + strb r1, [r0, 0x1B] + adds r0, 0x20 + movs r3, 0x1 + negs r3, r3 + add r8, r3 + mov r3, r8 + cmp r3, 0 + bne _0804C800 + mov r8, r4 +_0804C812: + adds r6, r2, 0 + cmp r6, r5 + blt _0804C7E8 +_0804C818: + movs r7, 0 + b _0804C836 + .align 2, 0 +_0804C81C: .4byte 0xffffe350 +_0804C820: .4byte 0x00001ca8 +_0804C824: .4byte 0x00001cac +_0804C828: .4byte 0x00001c30 +_0804C82C: .4byte 0x00001c6c +_0804C830: .4byte 0x00001cd4 +_0804C834: + adds r7, 0x1 +_0804C836: + cmp r7, 0x3F + bgt _0804C864 + adds r0, r5, 0 + bl DungeonRandomCapped + adds r6, r0, 0 + adds r0, r4, 0 + bl DungeonRandomCapped + mov r8, r0 + mov r0, r8 + muls r0, r5 + adds r0, r6 + mov r10, r0 + lsls r0, r6, 4 + subs r0, r6 + add r0, r8 + lsls r0, 5 + add r0, sp + adds r0, 0x10 + ldrb r0, [r0, 0xA] + cmp r0, 0 + beq _0804C834 +_0804C864: + ldr r0, _0804C8FC + add r0, sp + mov r9, r0 + ldr r7, _0804C900 + add r7, sp + str r7, [sp] + mov r1, r10 + str r1, [sp, 0x4] + ldr r2, _0804C904 + add r2, sp + ldr r2, [r2] + str r2, [sp, 0x8] + ldr r3, _0804C908 + add r3, sp + ldr r3, [r3] + str r3, [sp, 0xC] + add r0, sp, 0x10 + adds r1, r5, 0 + adds r2, r4, 0 + mov r3, r9 + bl sub_8050F90 + cmp r5, 0x1 + bne _0804C898 + cmp r4, 0x1 + beq _0804C8D0 +_0804C898: + mov r0, r8 + str r0, [sp] + ldr r1, _0804C90C + add r1, sp + ldr r1, [r1] + str r1, [sp, 0x4] + add r0, sp, 0x10 + adds r1, r5, 0 + adds r2, r4, 0 + adds r3, r6, 0 + bl sub_804D5F0 + str r7, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + add r0, sp, 0x10 + adds r1, r5, 0 + adds r2, r4, 0 + mov r3, r9 + bl sub_804D8C8 + str r7, [sp] + add r0, sp, 0x10 + adds r1, r5, 0 + adds r2, r4, 0 + mov r3, r9 + bl sub_804E590 +_0804C8D0: + lsls r0, r6, 4 + subs r0, r6 + lsls r0, 5 + add r0, sp + adds r0, 0x10 + mov r2, r8 + lsls r1, r2, 5 + adds r0, r1 + ldr r3, _0804C910 + add r3, sp + ldr r1, [r3] + bl sub_8051438 + ldr r3, _0804C914 + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C8FC: .4byte 0x00001c30 +_0804C900: .4byte 0x00001c6c +_0804C904: .4byte 0x00001ca8 +_0804C908: .4byte 0x00001cac +_0804C90C: .4byte 0x00001cd4 +_0804C910: .4byte 0x00001cd0 +_0804C914: .4byte 0x00001cb0 + thumb_func_end sub_804C790 + + thumb_func_start sub_804C918 +sub_804C918: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r4, _0804C9C4 + add sp, r4 + mov r0, sp + movs r1, 0x1 + movs r2, 0x1 + bl sub_804D084 + mov r0, sp + movs r3, 0 + movs r2, 0x2 + strh r2, [r0] + mov r1, sp + movs r0, 0x36 + strh r0, [r1, 0x4] + mov r0, sp + strh r2, [r0, 0x2] + movs r0, 0x1E + strh r0, [r1, 0x6] + mov r0, sp + movs r1, 0x1 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + strb r3, [r0, 0x8] + movs r1, 0 + ldrsh r5, [r0, r1] + movs r2, 0x4 + ldrsh r0, [r0, r2] + cmp r5, r0 + bge _0804C9A6 + mov r6, sp +_0804C95C: + movs r0, 0x2 + ldrsh r4, [r6, r0] + movs r1, 0x6 + ldrsh r0, [r6, r1] + adds r7, r5, 0x1 + cmp r4, r0 + bge _0804C99C + movs r2, 0 + mov r9, r2 + ldr r0, _0804C9C8 + mov r8, r0 +_0804C972: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r1, [r0] + mov r2, r8 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + mov r1, r9 + strb r1, [r0, 0x9] + adds r4, 0x1 + movs r2, 0x6 + ldrsh r0, [r6, r2] + cmp r4, r0 + blt _0804C972 +_0804C99C: + adds r5, r7, 0 + movs r1, 0x4 + ldrsh r0, [r6, r1] + cmp r5, r0 + blt _0804C95C +_0804C9A6: + ldr r3, _0804C9CC + mov r0, sp + movs r1, 0x1 + movs r2, 0x1 + bl sub_804EEE4 + movs r3, 0xE1 + lsls r3, 5 + add sp, r3 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C9C4: .4byte 0xffffe3e0 +_0804C9C8: .4byte 0x0000fffc +_0804C9CC: .4byte 0x000003e7 + thumb_func_end sub_804C918 + + thumb_func_start sub_804C9D0 +sub_804C9D0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _0804CBB4 + add sp, r4 + movs r0, 0 + movs r1, 0xE5 + lsls r1, 5 + add r1, sp + str r0, [r1] + ldr r1, _0804CBB8 + add r1, sp + movs r2, 0x2 + str r2, [r1] + movs r0, 0x1C + str r0, [r1, 0x4] + movs r0, 0x36 + str r0, [r1, 0x8] + ldr r1, _0804CBBC + add r1, sp + str r2, [r1] + movs r0, 0x1E + str r0, [r1, 0x4] + add r0, sp, 0x8 + movs r1, 0x2 + movs r2, 0x1 + bl sub_804D084 + movs r0, 0 + ldr r2, _0804CBB8 + add r2, sp + ldr r3, _0804CBC0 + add r3, sp + str r2, [r3] + ldr r4, _0804CBBC + add r4, sp + ldr r1, _0804CBC4 + add r1, sp + str r4, [r1] +_0804CA22: + movs r7, 0 + lsls r2, r0, 2 + ldr r3, _0804CBC8 + add r3, sp + str r2, [r3] + adds r4, r0, 0x1 + ldr r1, _0804CBCC + add r1, sp + str r4, [r1] + lsls r0, 5 + ldr r2, _0804CBD0 + add r2, sp + str r0, [r2] +_0804CA3C: + lsls r0, r7, 2 + ldr r3, _0804CBC0 + add r3, sp + ldr r3, [r3] + adds r0, r3, r0 + ldr r1, [r0] + adds r4, r1, 0x1 + mov r10, r4 + ldr r2, _0804CBC4 + add r2, sp + ldr r2, [r2] + ldr r3, _0804CBC8 + add r3, sp + ldr r3, [r3] + adds r0, r2, r3 + ldr r2, [r0] + adds r4, r2, 0x1 + ldr r0, _0804CBD4 + add r0, sp + str r4, [r0] + adds r3, r7, 0x1 + mov r9, r3 + lsls r0, r3, 2 + ldr r4, _0804CBC0 + add r4, sp + ldr r4, [r4] + adds r0, r4, r0 + ldr r4, [r0] + subs r4, r1 + subs r4, 0x3 + ldr r1, _0804CBCC + add r1, sp + ldr r1, [r1] + lsls r0, r1, 2 + ldr r3, _0804CBC4 + add r3, sp + ldr r3, [r3] + adds r0, r3, r0 + ldr r5, [r0] + subs r5, r2 + subs r5, 0x3 + movs r0, 0xA + adds r1, r4, 0 + bl sub_808411C + mov r8, r0 + movs r0, 0x10 + adds r1, r5, 0 + bl sub_808411C + adds r6, r0, 0 + mov r0, r8 + subs r4, r0 + adds r0, r4, 0 + bl DungeonRandomCapped + adds r4, r0, 0 + add r4, r10 + subs r5, r6 + adds r0, r5, 0 + bl DungeonRandomCapped + ldr r2, _0804CBD4 + add r2, sp + ldr r1, [r2] + adds r1, r0 + mov r10, r1 + mov r0, r8 + adds r3, r4, r0 + add r6, r10 + lsls r0, r7, 4 + subs r0, r7 + lsls r0, 5 + ldr r1, _0804CBD0 + add r1, sp + ldr r1, [r1] + adds r0, r1, r0 + add r0, sp + adds r0, 0x8 + movs r1, 0x1 + strb r1, [r0, 0xA] + strh r4, [r0] + strh r3, [r0, 0x4] + mov r2, r10 + strh r2, [r0, 0x2] + strh r6, [r0, 0x6] + mov r0, r9 + ldr r1, _0804CBD8 + add r1, sp + str r0, [r1] + movs r0, 0xE5 + lsls r0, 5 + add r0, sp + ldr r2, [r0] + adds r2, 0x1 + mov r9, r2 + cmp r4, r3 + bge _0804CB4E +_0804CB00: + mov r5, r10 + adds r7, r4, 0x1 + cmp r5, r6 + bge _0804CB48 + ldr r1, _0804CBDC + mov r8, r1 +_0804CB0C: + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0xE6 + lsls r2, 5 + add r2, sp + str r3, [r2] + bl GetMapTile_2 + ldrh r1, [r0] + mov r2, r8 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_2 + movs r1, 0xE5 + lsls r1, 5 + add r1, sp + ldrb r1, [r1] + strb r1, [r0, 0x9] + adds r5, 0x1 + movs r2, 0xE6 + lsls r2, 5 + add r2, sp + ldr r3, [r2] + cmp r5, r6 + blt _0804CB0C +_0804CB48: + adds r4, r7, 0 + cmp r4, r3 + blt _0804CB00 +_0804CB4E: + mov r3, r9 + movs r4, 0xE5 + lsls r4, 5 + add r4, sp + str r3, [r4] + ldr r0, _0804CBD8 + add r0, sp + ldr r7, [r0] + cmp r7, 0x1 + bgt _0804CB64 + b _0804CA3C +_0804CB64: + ldr r1, _0804CBCC + add r1, sp + ldr r0, [r1] + cmp r0, 0 + bgt _0804CB70 + b _0804CA22 +_0804CB70: + add r0, sp, 0x8 + movs r2, 0 + movs r1, 0x1 + strb r1, [r0, 0x16] + ldr r0, _0804CBE0 + add r0, sp + strb r1, [r0] + ldr r3, _0804CBB8 + add r3, sp + ldr r0, _0804CBBC + add r0, sp + str r0, [sp] + str r2, [sp, 0x4] + add r0, sp, 0x8 + movs r1, 0x2 + movs r2, 0x1 + bl sub_804D8C8 + ldr r3, _0804CBE4 + add r0, sp, 0x8 + movs r1, 0x2 + movs r2, 0x1 + bl sub_804EEE4 + ldr r3, _0804CBE8 + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804CBB4: .4byte 0xffffe33c +_0804CBB8: .4byte 0x00001c28 +_0804CBBC: .4byte 0x00001c64 +_0804CBC0: .4byte 0x00001ca4 +_0804CBC4: .4byte 0x00001cac +_0804CBC8: .4byte 0x00001cb0 +_0804CBCC: .4byte 0x00001cbc +_0804CBD0: .4byte 0x00001cb4 +_0804CBD4: .4byte 0x00001ca8 +_0804CBD8: .4byte 0x00001cb8 +_0804CBDC: .4byte 0x0000fffc +_0804CBE0: .4byte 0x000001fd +_0804CBE4: .4byte 0x000003e7 +_0804CBE8: .4byte 0x00001cc4 + thumb_func_end sub_804C9D0 + + thumb_func_start sub_804CBEC +sub_804CBEC: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + str r0, [sp] + str r1, [sp, 0x4] + str r2, [sp, 0x8] + str r3, [sp, 0xC] + cmp r3, 0 + bne _0804CC06 + b _0804D006 +_0804CC06: + movs r5, 0 + cmp r5, r3 + blt _0804CC0E + b _0804D006 +_0804CC0E: + ldr r0, [sp, 0x4] + bl DungeonRandomCapped + mov r9, r0 + ldr r0, [sp, 0x8] + bl DungeonRandomCapped + mov r10, r0 + lsls r0, 5 + mov r2, r9 + lsls r1, r2, 4 + subs r1, r2 + lsls r1, 5 + ldr r3, [sp] + adds r1, r3 + adds r4, r0, r1 + ldrb r0, [r4, 0xA] + adds r5, 0x1 + str r5, [sp, 0x18] + cmp r0, 0 + bne _0804CC3A + b _0804CFFC +_0804CC3A: + ldrb r0, [r4, 0xB] + cmp r0, 0 + bne _0804CC42 + b _0804CFFC +_0804CC42: + ldrb r0, [r4, 0x8] + cmp r0, 0 + beq _0804CC4A + b _0804CFFC +_0804CC4A: + ldrb r0, [r4, 0x10] + cmp r0, 0 + beq _0804CC52 + b _0804CFFC +_0804CC52: + movs r1, 0 + ldrsh r0, [r4, r1] + movs r2, 0x4 + ldrsh r1, [r4, r2] + bl sub_808411C + adds r7, r0, 0 + movs r3, 0x2 + ldrsh r0, [r4, r3] + movs r2, 0x6 + ldrsh r1, [r4, r2] + bl sub_808411C + adds r6, r0, 0 + movs r0, 0x4 + bl DungeonRandomCapped + lsls r0, 1 + mov r8, r0 + ldr r1, [sp, 0x8] + subs r1, 0x1 + movs r3, 0x2 + str r3, [sp, 0x10] + ldr r0, [sp, 0x4] + subs r0, 0x1 +_0804CC84: + mov r2, r8 + cmp r2, 0 + bne _0804CC92 + cmp r10, r1 + blt _0804CC92 + movs r3, 0x2 + mov r8, r3 +_0804CC92: + mov r2, r8 + cmp r2, 0x2 + bne _0804CCA0 + cmp r9, r0 + blt _0804CCA0 + movs r3, 0x4 + mov r8, r3 +_0804CCA0: + mov r2, r8 + cmp r2, 0x4 + bne _0804CCB0 + mov r3, r10 + cmp r3, 0 + bgt _0804CCB0 + movs r2, 0x6 + mov r8, r2 +_0804CCB0: + mov r3, r8 + cmp r3, 0x6 + bne _0804CCC0 + mov r2, r9 + cmp r2, 0 + bgt _0804CCC0 + movs r3, 0 + mov r8, r3 +_0804CCC0: + ldr r2, [sp, 0x10] + subs r2, 0x1 + str r2, [sp, 0x10] + cmp r2, 0 + bge _0804CC84 + adds r0, r7, 0 + adds r1, r6, 0 + bl GetMapTile_1 + ldrb r5, [r0, 0x9] + ldr r1, _0804CCE0 + mov r3, r8 + lsls r0, r3, 2 + adds r4, r0, r1 + b _0804CCF0 + .align 2, 0 +_0804CCE0: .4byte gAdjacentTileOffsets +_0804CCE4: + movs r1, 0 + ldrsh r0, [r4, r1] + adds r7, r0 + movs r2, 0x2 + ldrsh r0, [r4, r2] + adds r6, r0 +_0804CCF0: + adds r0, r7, 0 + adds r1, r6, 0 + bl GetMapTile_1 + ldrb r0, [r0, 0x9] + cmp r5, r0 + beq _0804CCE4 + ldr r1, _0804CD08 + mov r3, r8 + lsls r0, r3, 2 + adds r4, r0, r1 + b _0804CD18 + .align 2, 0 +_0804CD08: .4byte gAdjacentTileOffsets +_0804CD0C: + movs r1, 0 + ldrsh r0, [r4, r1] + adds r7, r0 + movs r2, 0x2 + ldrsh r0, [r4, r2] + adds r6, r0 +_0804CD18: + adds r0, r7, 0 + adds r1, r6, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r5, 0x3 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0x1 + beq _0804CD0C + adds r0, r7, 0 + adds r1, r6, 0 + bl GetMapTile_1 + ldrh r1, [r0] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0x2 + bne _0804CD40 + b _0804CFFC +_0804CD40: + movs r3, 0 + subs r2, r7, 0x2 + adds r4, r7, 0x2 + b _0804CD4A +_0804CD48: + adds r2, 0x1 +_0804CD4A: + cmp r2, r4 + bgt _0804CD6C + subs r0, r6, 0x2 + adds r1, r6, 0x2 + b _0804CD56 +_0804CD54: + adds r0, 0x1 +_0804CD56: + cmp r0, r1 + bgt _0804CD68 + cmp r2, 0x37 + bhi _0804CD66 + cmp r0, 0 + blt _0804CD66 + cmp r0, 0x1F + ble _0804CD54 +_0804CD66: + movs r3, 0x1 +_0804CD68: + cmp r3, 0 + beq _0804CD48 +_0804CD6C: + cmp r3, 0 + beq _0804CD72 + b _0804CFFC +_0804CD72: + ldr r2, _0804CDD4 + mov r1, r8 + adds r1, 0x2 + movs r4, 0x6 + ands r1, r4 + lsls r1, 2 + adds r1, r2 + movs r3, 0 + ldrsh r0, [r1, r3] + movs r3, 0x2 + ldrsh r1, [r1, r3] + adds r0, r7, r0 + adds r1, r6, r1 + str r2, [sp, 0x1C] + bl GetMapTile_1 + ldrh r1, [r0] + movs r5, 0x3 + adds r0, r5, 0 + ands r0, r1 + ldr r2, [sp, 0x1C] + cmp r0, 0x1 + bne _0804CDA2 + b _0804CFFC +_0804CDA2: + mov r1, r8 + subs r1, 0x2 + ands r1, r4 + lsls r1, 2 + adds r1, r2 + movs r2, 0 + ldrsh r0, [r1, r2] + movs r3, 0x2 + ldrsh r1, [r1, r3] + adds r0, r7, r0 + adds r1, r6, r1 + bl GetMapTile_1 + ldrh r1, [r0] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0x1 + bne _0804CDC8 + b _0804CFFC +_0804CDC8: + movs r0, 0x3 + bl DungeonRandomCapped + adds r0, 0x3 + str r0, [sp, 0x10] + b _0804CFD4 + .align 2, 0 +_0804CDD4: .4byte gAdjacentTileOffsets +_0804CDD8: + adds r0, r7, 0 + adds r1, r6, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0804CDEC + b _0804CFFC +_0804CDEC: + movs r0, 0x1 + str r0, [sp, 0x14] + adds r4, r7, 0x1 + adds r0, r4, 0 + adds r1, r6, 0 + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r10 + ands r0, r1 + mov r9, r4 + cmp r0, 0x1 + bne _0804CE32 + adds r5, r6, 0x1 + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_1 + ldrh r0, [r0] + mov r4, r10 + ands r4, r0 + cmp r4, 0x1 + bne _0804CE32 + adds r0, r7, 0 + adds r1, r5, 0 + bl GetMapTile_1 + ldrh r0, [r0] + mov r1, r10 + ands r0, r1 + eors r0, r4 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + str r1, [sp, 0x14] +_0804CE32: + mov r0, r9 + adds r1, r6, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r5, 0x3 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0x1 + bne _0804CE70 + subs r4, r6, 0x1 + mov r0, r9 + adds r1, r4, 0 + bl GetMapTile_1 + ldrh r1, [r0] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0x1 + bne _0804CE70 + adds r0, r7, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrh r1, [r0] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0x1 + bne _0804CE70 + movs r2, 0 + str r2, [sp, 0x14] +_0804CE70: + subs r4, r7, 0x1 + adds r0, r4, 0 + adds r1, r6, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r2, 0x3 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x1 + bne _0804CEB6 + adds r5, r6, 0x1 + adds r0, r4, 0 + adds r1, r5, 0 + str r2, [sp, 0x1C] + bl GetMapTile_1 + ldrh r1, [r0] + ldr r2, [sp, 0x1C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x1 + bne _0804CEB6 + adds r0, r7, 0 + adds r1, r5, 0 + bl GetMapTile_1 + ldrh r1, [r0] + ldr r2, [sp, 0x1C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x1 + bne _0804CEB6 + movs r3, 0 + str r3, [sp, 0x14] +_0804CEB6: + adds r0, r4, 0 + adds r1, r6, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r2, 0x3 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x1 + bne _0804CEFA + subs r5, r6, 0x1 + adds r0, r4, 0 + adds r1, r5, 0 + str r2, [sp, 0x1C] + bl GetMapTile_1 + ldrh r1, [r0] + ldr r2, [sp, 0x1C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x1 + bne _0804CEFA + adds r0, r7, 0 + adds r1, r5, 0 + bl GetMapTile_1 + ldrh r1, [r0] + ldr r2, [sp, 0x1C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x1 + bne _0804CEFA + movs r0, 0 + str r0, [sp, 0x14] +_0804CEFA: + ldr r1, [sp, 0x14] + cmp r1, 0 + beq _0804CF16 + adds r0, r7, 0 + adds r1, r6, 0 + bl GetMapTile_2 + ldrh r1, [r0] + ldr r3, _0804D018 + adds r2, r3, 0 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] +_0804CF16: + ldr r2, _0804D01C + movs r0, 0x2 + add r0, r8 + mov r9, r0 + movs r1, 0x6 + mov r10, r1 + mov r1, r9 + mov r3, r10 + ands r1, r3 + lsls r1, 2 + adds r1, r2 + movs r3, 0 + ldrsh r0, [r1, r3] + movs r3, 0x2 + ldrsh r1, [r1, r3] + adds r0, r7, r0 + adds r1, r6, r1 + str r2, [sp, 0x1C] + bl GetMapTile_1 + ldrh r1, [r0] + movs r5, 0x3 + adds r0, r5, 0 + ands r0, r1 + ldr r2, [sp, 0x1C] + cmp r0, 0x1 + beq _0804CFFC + mov r4, r8 + subs r4, 0x2 + adds r1, r4, 0 + mov r0, r10 + ands r1, r0 + lsls r1, 2 + adds r1, r2 + movs r2, 0 + ldrsh r0, [r1, r2] + movs r3, 0x2 + ldrsh r1, [r1, r3] + adds r0, r7, r0 + adds r1, r6, r1 + bl GetMapTile_1 + ldrh r1, [r0] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0x1 + beq _0804CFFC + ldr r0, [sp, 0x10] + subs r0, 0x1 + str r0, [sp, 0x10] + cmp r0, 0 + bne _0804CFC0 + movs r0, 0x3 + bl DungeonRandomCapped + adds r0, 0x3 + str r0, [sp, 0x10] + movs r0, 0x64 + bl DungeonRandomCapped + mov r8, r4 + cmp r0, 0x31 + bgt _0804CF96 + mov r8, r9 +_0804CF96: + mov r1, r8 + mov r2, r10 + ands r1, r2 + mov r8, r1 + cmp r7, 0x1F + ble _0804CFAE + ldr r0, _0804D020 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0804CFAE + cmp r1, 0x2 + beq _0804CFFC +_0804CFAE: + cmp r7, 0x2F + ble _0804CFC0 + ldr r0, _0804D020 + ldrb r0, [r0] + cmp r0, 0x2 + bne _0804CFC0 + mov r3, r8 + cmp r3, 0x2 + beq _0804CFFC +_0804CFC0: + ldr r0, _0804D01C + mov r2, r8 + lsls r1, r2, 2 + adds r1, r0 + movs r3, 0 + ldrsh r0, [r1, r3] + adds r7, r0 + movs r2, 0x2 + ldrsh r0, [r1, r2] + adds r6, r0 +_0804CFD4: + cmp r7, 0x1 + ble _0804CFFC + cmp r6, 0x1 + ble _0804CFFC + cmp r7, 0x36 + bgt _0804CFFC + cmp r6, 0x1E + bgt _0804CFFC + adds r0, r7, 0 + adds r1, r6, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r3, 0x3 + mov r10, r3 + mov r0, r10 + ands r0, r1 + cmp r0, 0x1 + beq _0804CFFC + b _0804CDD8 +_0804CFFC: + ldr r5, [sp, 0x18] + ldr r0, [sp, 0xC] + cmp r5, r0 + bge _0804D006 + b _0804CC0E +_0804D006: + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804D018: .4byte 0x0000fffc +_0804D01C: .4byte gAdjacentTileOffsets +_0804D020: .4byte gUnknown_202F1AE + thumb_func_end sub_804CBEC + + thumb_func_start sub_804D024 +sub_804D024: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + mov r8, r1 + adds r5, r2, 0 + adds r6, r3, 0 + movs r4, 0 + cmp r4, r5 + bge _0804D04E + movs r0, 0x38 + adds r1, r5, 0 + bl __divsi3 + adds r2, r7, 0 + adds r1, r5, 0 +_0804D044: + stm r2!, {r4} + adds r4, r0 + subs r1, 0x1 + cmp r1, 0 + bne _0804D044 +_0804D04E: + lsls r0, r5, 2 + adds r0, r7 + str r4, [r0] + movs r4, 0 + lsls r5, r6, 2 + cmp r4, r6 + bge _0804D072 + movs r0, 0x20 + adds r1, r6, 0 + bl __divsi3 + mov r2, r8 + adds r1, r6, 0 +_0804D068: + stm r2!, {r4} + adds r4, r0 + subs r1, 0x1 + cmp r1, 0 + bne _0804D068 +_0804D072: + mov r1, r8 + adds r0, r5, r1 + str r4, [r0] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804D024 + + thumb_func_start sub_804D084 +sub_804D084: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r8, r0 + adds r5, r1, 0 + mov r9, r2 + movs r2, 0 + cmp r2, r5 + bge _0804D144 + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r0, 1 + str r0, [sp] + movs r3, 0 +_0804D0A6: + adds r0, r2, 0x1 + mov r10, r0 + mov r4, r9 + cmp r4, 0 + ble _0804D13E + ldr r6, _0804D0D8 + ldrb r6, [r6] + str r6, [sp, 0x4] + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 5 + mov r4, r8 + adds r1, r0, r4 + movs r7, 0 + movs r6, 0x1 + mov r12, r6 + mov r4, r9 +_0804D0C8: + ldr r0, [sp, 0x4] + cmp r0, 0x1 + bne _0804D0DC + ldr r6, [sp] + cmp r2, r6 + blt _0804D0DC + strb r0, [r1, 0x8] + b _0804D102 + .align 2, 0 +_0804D0D8: .4byte gUnknown_202F1AE +_0804D0DC: + ldr r6, _0804D0FC + ldrb r0, [r6] + cmp r0, 0x2 + bne _0804D100 + lsls r0, r5, 1 + adds r0, r5 + cmp r0, 0 + bge _0804D0EE + adds r0, 0x3 +_0804D0EE: + asrs r0, 2 + cmp r2, r0 + blt _0804D100 + mov r0, r12 + strb r0, [r1, 0x8] + b _0804D102 + .align 2, 0 +_0804D0FC: .4byte gUnknown_202F1AE +_0804D100: + strb r3, [r1, 0x8] +_0804D102: + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 5 + add r0, r8 + adds r0, r7, r0 + mov r6, r12 + strb r6, [r0, 0xA] + strb r3, [r0, 0xB] + strb r3, [r0, 0xF] + strb r3, [r0, 0xE] + strb r3, [r0, 0xC] + strb r3, [r0, 0x16] + strb r3, [r0, 0x15] + strb r3, [r0, 0x14] + strb r3, [r0, 0x13] + strb r3, [r0, 0x1A] + strb r3, [r0, 0x19] + strb r3, [r0, 0x18] + strb r3, [r0, 0x17] + strb r3, [r0, 0x9] + strb r3, [r0, 0x11] + strb r3, [r0, 0x10] + strb r3, [r0, 0x12] + strb r3, [r0, 0x1C] + strb r3, [r0, 0x1D] + adds r1, 0x20 + adds r7, 0x20 + subs r4, 0x1 + cmp r4, 0 + bne _0804D0C8 +_0804D13E: + mov r2, r10 + cmp r2, r5 + blt _0804D0A6 +_0804D144: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804D084 + + thumb_func_start sub_804D154 +sub_804D154: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x114 + str r0, [sp, 0x100] + mov r9, r1 + mov r8, r2 + adds r4, r3, 0 + movs r0, 0x3 + bl DungeonRandomCapped + adds r3, r0, 0 + cmp r4, 0 + bge _0804D17E + negs r4, r4 + b _0804D180 +_0804D178: + movs r0, 0x1 + strb r0, [r4, 0xA] + b _0804D2B6 +_0804D17E: + adds r4, r3 +_0804D180: + movs r3, 0 + mov r0, r8 + mov r2, r9 + muls r2, r0 + cmp r3, r4 + bge _0804D19A + movs r1, 0x1 +_0804D18E: + mov r5, sp + adds r0, r5, r3 + strb r1, [r0] + adds r3, 0x1 + cmp r3, r4 + blt _0804D18E +_0804D19A: + cmp r3, 0xFF + bgt _0804D1AC + movs r1, 0 +_0804D1A0: + mov r6, sp + adds r0, r6, r3 + strb r1, [r0] + adds r3, 0x1 + cmp r3, 0xFF + ble _0804D1A0 +_0804D1AC: + adds r5, r2, 0 + movs r6, 0x3F +_0804D1B0: + adds r0, r5, 0 + bl DungeonRandomCapped + adds r4, r0, 0 + adds r0, r5, 0 + bl DungeonRandomCapped + mov r1, sp + adds r2, r1, r4 + ldrb r3, [r2] + adds r1, r0 + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] + subs r6, 0x1 + cmp r6, 0 + bge _0804D1B0 + movs r3, 0 + ldr r0, _0804D24C + str r3, [r0] + movs r7, 0 + mov r12, r0 + cmp r7, r9 + bge _0804D262 +_0804D1E0: + movs r5, 0 + adds r4, r7, 0x1 + str r4, [sp, 0x104] + cmp r5, r8 + bge _0804D25C + lsls r2, r7, 4 + subs r2, r7 + lsls r2, 5 + ldr r6, [sp, 0x100] + adds r0, r2, r6 + mov r1, r9 + movs r4, 0x1 + ands r1, r4 + str r1, [sp, 0x110] + mov r1, r9 + subs r1, 0x1 + adds r0, 0x20 + mov r10, r0 + adds r0, r6, 0 + adds r0, 0x8 + adds r2, r0 + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 +_0804D210: + ldrb r4, [r2] + cmp r4, 0 + bne _0804D254 + mov r6, r12 + ldr r0, [r6] + cmp r0, 0x1F + ble _0804D220 + strb r4, [r2, 0x2] +_0804D220: + mov r6, sp + adds r0, r6, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _0804D250 + movs r0, 0x1 + strb r0, [r2, 0x2] + mov r6, r12 + ldr r0, [r6] + adds r0, 0x1 + str r0, [r6] + ldr r0, [sp, 0x110] + cmp r0, 0 + beq _0804D252 + cmp r7, r1 + bne _0804D252 + cmp r5, 0x1 + bne _0804D252 + mov r6, r10 + strb r4, [r6, 0xA] + b _0804D252 + .align 2, 0 +_0804D24C: .4byte gUnknown_202F1CC +_0804D250: + strb r0, [r2, 0x2] +_0804D252: + adds r3, 0x1 +_0804D254: + adds r2, 0x20 + adds r5, 0x1 + cmp r5, r8 + blt _0804D210 +_0804D25C: + ldr r7, [sp, 0x104] + cmp r7, r9 + blt _0804D1E0 +_0804D262: + mov r1, r12 + ldr r0, [r1] + cmp r0, 0x1 + bgt _0804D2BC + movs r1, 0 + movs r2, 0 +_0804D26E: + movs r7, 0 + cmp r2, r9 + bge _0804D2AC + movs r6, 0 +_0804D276: + movs r5, 0 + cmp r5, r8 + bge _0804D2A4 + lsls r0, r6, 5 + ldr r3, [sp, 0x100] + adds r4, r0, r3 +_0804D282: + ldrb r0, [r4, 0x8] + cmp r0, 0 + bne _0804D29C + movs r0, 0x64 + str r1, [sp, 0x108] + str r2, [sp, 0x10C] + bl DungeonRandomCapped + ldr r1, [sp, 0x108] + ldr r2, [sp, 0x10C] + cmp r0, 0x3B + bgt _0804D29C + b _0804D178 +_0804D29C: + adds r4, 0x20 + adds r5, 0x1 + cmp r5, r8 + blt _0804D282 +_0804D2A4: + adds r6, 0xF + adds r7, 0x1 + cmp r7, r9 + blt _0804D276 +_0804D2AC: + cmp r2, 0 + bne _0804D2B6 + adds r1, 0x1 + cmp r1, 0xC7 + ble _0804D26E +_0804D2B6: + ldr r1, _0804D2CC + movs r0, 0 + strb r0, [r1] +_0804D2BC: + add sp, 0x114 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804D2CC: .4byte gUnknown_202F1AD + thumb_func_end sub_804D154 + + thumb_func_start sub_804D2D0 +sub_804D2D0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x38 + str r0, [sp] + str r1, [sp, 0x4] + str r2, [sp, 0x8] + str r3, [sp, 0xC] + movs r0, 0 + str r0, [sp, 0x10] + movs r1, 0 + str r1, [sp, 0x14] + cmp r1, r2 + blt _0804D2F2 + b _0804D520 +_0804D2F2: + movs r2, 0 + mov r10, r2 + ldr r3, [sp, 0x14] + adds r3, 0x1 + str r3, [sp, 0x28] + ldr r4, [sp, 0x4] + cmp r10, r4 + blt _0804D304 + b _0804D514 +_0804D304: + ldr r5, [sp, 0x14] + lsls r5, 5 + str r5, [sp, 0x1C] +_0804D30A: + mov r1, r10 + lsls r0, r1, 2 + ldr r2, [sp, 0xC] + adds r0, r2 + ldr r3, [r0] + adds r4, r3, 0x2 + mov r9, r4 + ldr r5, [sp, 0x14] + lsls r1, r5, 2 + ldr r2, [sp, 0x58] + adds r1, r2 + ldr r2, [r1] + adds r4, r2, 0x2 + str r4, [sp, 0x18] + ldr r0, [r0, 0x4] + subs r0, r3 + subs r4, r0, 0x4 + ldr r0, [r1, 0x4] + subs r0, r2 + subs r0, 0x3 + mov r8, r0 + mov r5, r10 + lsls r1, r5, 4 + subs r0, r1, r5 + lsls r0, 5 + ldr r2, [sp] + adds r0, r2 + ldr r3, [sp, 0x1C] + adds r7, r3, r0 + ldrb r0, [r7, 0x8] + str r1, [sp, 0x2C] + adds r5, 0x1 + str r5, [sp, 0x24] + cmp r0, 0 + beq _0804D352 + b _0804D508 +_0804D352: + ldrb r0, [r7, 0xA] + cmp r0, 0 + bne _0804D35A + b _0804D48C +_0804D35A: + movs r0, 0x5 + adds r1, r4, 0 + bl sub_808411C + adds r6, r0, 0 + movs r0, 0x4 + mov r1, r8 + bl sub_808411C + adds r5, r0, 0 + movs r1, 0x1 + adds r0, r6, 0 + orrs r0, r1 + cmp r0, r4 + bge _0804D37A + adds r6, r0, 0 +_0804D37A: + adds r0, r5, 0 + orrs r0, r1 + cmp r0, r8 + bge _0804D384 + adds r5, r0, 0 +_0804D384: + lsls r0, r5, 1 + adds r0, r5 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + cmp r6, r0 + ble _0804D394 + adds r6, r0, 0 +_0804D394: + lsls r0, r6, 1 + adds r0, r6 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + cmp r5, r0 + ble _0804D3A4 + adds r5, r0, 0 +_0804D3A4: + subs r0, r4, r6 + bl DungeonRandomCapped + adds r4, r0, 0 + add r4, r9 + mov r1, r8 + subs r0, r1, r5 + bl DungeonRandomCapped + ldr r2, [sp, 0x18] + adds r0, r2 + mov r8, r0 + adds r3, r4, r6 + adds r6, r0, r5 + strh r4, [r7] + strh r3, [r7, 0x4] + mov r5, r8 + strh r5, [r7, 0x2] + strh r6, [r7, 0x6] + ldr r0, [sp, 0x10] + adds r0, 0x1 + str r0, [sp, 0x20] + cmp r4, r3 + bge _0804D412 +_0804D3D4: + mov r5, r8 + adds r7, r4, 0x1 + cmp r5, r6 + bge _0804D40C + ldr r1, _0804D484 + mov r9, r1 +_0804D3E0: + adds r0, r4, 0 + adds r1, r5, 0 + str r3, [sp, 0x34] + bl GetMapTile_2 + ldrh r1, [r0] + mov r2, r9 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_2 + mov r1, sp + ldrb r1, [r1, 0x10] + strb r1, [r0, 0x9] + adds r5, 0x1 + ldr r3, [sp, 0x34] + cmp r5, r6 + blt _0804D3E0 +_0804D40C: + adds r4, r7, 0 + cmp r4, r3 + blt _0804D3D4 +_0804D412: + movs r5, 0x1 + movs r0, 0x64 + bl DungeonRandomCapped + movs r1, 0 + cmp r0, 0x4F + bgt _0804D422 + movs r1, 0x1 +_0804D422: + adds r4, r1, 0 + ldr r0, _0804D488 + ldr r0, [r0] + cmp r0, 0 + bne _0804D42E + movs r4, 0 +_0804D42E: + movs r0, 0x4 + ldr r2, [sp, 0x5C] + ands r0, r2 + cmp r0, 0 + bne _0804D43A + movs r5, 0 +_0804D43A: + cmp r5, 0 + beq _0804D466 + cmp r4, 0 + beq _0804D44E + movs r0, 0x64 + bl DungeonRandomCapped + cmp r0, 0x31 + ble _0804D466 + movs r4, 0 +_0804D44E: + cmp r5, 0 + beq _0804D466 + ldr r3, [sp, 0x2C] + mov r5, r10 + subs r0, r3, r5 + lsls r0, 5 + ldr r1, [sp] + adds r0, r1 + ldr r2, [sp, 0x1C] + adds r0, r2, r0 + movs r1, 0x1 + strb r1, [r0, 0x1C] +_0804D466: + cmp r4, 0 + beq _0804D47E + ldr r3, [sp, 0x2C] + mov r4, r10 + subs r0, r3, r4 + lsls r0, 5 + ldr r5, [sp] + adds r0, r5 + ldr r1, [sp, 0x1C] + adds r0, r1, r0 + movs r1, 0x1 + strb r1, [r0, 0x1D] +_0804D47E: + ldr r2, [sp, 0x20] + str r2, [sp, 0x10] + b _0804D508 + .align 2, 0 +_0804D484: .4byte 0x0000fffc +_0804D488: .4byte gUnknown_202F1C8 +_0804D48C: + movs r1, 0x2 + movs r3, 0x4 + movs r6, 0x2 + movs r2, 0x4 + mov r5, r10 + cmp r5, 0 + bne _0804D49C + movs r1, 0x1 +_0804D49C: + ldr r0, [sp, 0x14] + cmp r0, 0 + bne _0804D4A4 + movs r6, 0x1 +_0804D4A4: + ldr r0, [sp, 0x4] + subs r0, 0x1 + cmp r10, r0 + bne _0804D4AE + movs r3, 0x2 +_0804D4AE: + ldr r0, [sp, 0x8] + subs r0, 0x1 + ldr r5, [sp, 0x14] + cmp r5, r0 + bne _0804D4BA + movs r2, 0x2 +_0804D4BA: + mov r5, r9 + adds r0, r5, r1 + adds r1, r5, r4 + subs r1, r3 + str r2, [sp, 0x30] + bl sub_808411C + adds r5, r0, 0 + ldr r1, [sp, 0x18] + adds r0, r1, r6 + add r1, r8 + ldr r2, [sp, 0x30] + subs r1, r2 + bl sub_808411C + adds r4, r0, 0 + strh r5, [r7] + adds r0, r5, 0x1 + strh r0, [r7, 0x4] + strh r4, [r7, 0x2] + adds r0, r4, 0x1 + strh r0, [r7, 0x6] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r1, [r0] + ldr r3, _0804D530 + adds r2, r3, 0 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0xFE + strb r1, [r0, 0x9] +_0804D508: + ldr r4, [sp, 0x24] + mov r10, r4 + ldr r5, [sp, 0x4] + cmp r10, r5 + bge _0804D514 + b _0804D30A +_0804D514: + ldr r0, [sp, 0x28] + str r0, [sp, 0x14] + ldr r1, [sp, 0x8] + cmp r0, r1 + bge _0804D520 + b _0804D2F2 +_0804D520: + 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 +_0804D530: .4byte 0x0000fffc + thumb_func_end sub_804D2D0 + + thumb_func_start sub_804D534 +sub_804D534: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r3, r0, 0 + adds r7, r1, 0 + mov r9, r2 + movs r1, 0 + cmp r1, r9 + bge _0804D5A0 +_0804D54A: + adds r0, r1, 0x1 + mov r8, r0 + cmp r7, 0 + ble _0804D59A + lsls r1, 5 + adds r0, r1, 0 + adds r0, 0x8 + adds r4, r3, r0 + adds r5, r3, r1 + adds r6, r7, 0 +_0804D55E: + ldrb r0, [r4] + cmp r0, 0 + bne _0804D58C + ldrb r0, [r4, 0x6] + cmp r0, 0 + bne _0804D58C + ldrb r0, [r4, 0xA] + cmp r0, 0 + bne _0804D58C + ldrb r0, [r4, 0x2] + cmp r0, 0 + beq _0804D58C + ldrb r0, [r4, 0x14] + cmp r0, 0 + bne _0804D58C + ldrb r0, [r4, 0x15] + cmp r0, 0 + beq _0804D58C + adds r0, r5, 0 + str r3, [sp] + bl sub_804F694 + ldr r3, [sp] +_0804D58C: + movs r0, 0xF0 + lsls r0, 1 + adds r4, r0 + adds r5, r0 + subs r6, 0x1 + cmp r6, 0 + bne _0804D55E +_0804D59A: + mov r1, r8 + cmp r1, r9 + blt _0804D54A +_0804D5A0: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804D534 + + thumb_func_start sub_804D5B0 +sub_804D5B0: + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x8 + mov r9, r0 + adds r4, r1, 0 + adds r5, r2, 0 + adds r6, r3, 0 + adds r0, r4, 0 + bl DungeonRandomCapped + mov r8, r0 + adds r0, r5, 0 + bl DungeonRandomCapped + str r0, [sp] + str r6, [sp, 0x4] + mov r0, r9 + adds r1, r4, 0 + adds r2, r5, 0 + mov r3, r8 + bl sub_804D5F0 + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_804D5B0 + + thumb_func_start sub_804D5F0 +sub_804D5F0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + str r0, [sp] + str r1, [sp, 0x4] + str r2, [sp, 0x8] + adds r7, r3, 0 + ldr r6, [sp, 0x40] + ldr r0, [sp, 0x44] + ldrb r0, [r0, 0x5] + str r0, [sp, 0xC] + movs r0, 0x4 + bl DungeonRandomCapped + adds r5, r0, 0 + movs r1, 0 + mov r10, r1 + ldr r2, [sp, 0xC] + cmp r10, r2 + blt _0804D620 + b _0804D726 +_0804D620: + lsls r4, r6, 5 + mov r9, r4 + lsls r0, r7, 4 + subs r0, r7 + lsls r0, 5 + ldr r1, [sp] + adds r0, r1 + mov r8, r0 +_0804D630: + movs r0, 0x8 + bl DungeonRandomCapped + adds r4, r0, 0 + movs r0, 0x4 + bl DungeonRandomCapped + cmp r4, 0x3 + bgt _0804D644 + adds r5, r0, 0 +_0804D644: + mov r4, r10 + adds r4, 0x1 +_0804D648: + movs r1, 0 + movs r0, 0x3 + ands r0, r5 + cmp r0, 0x1 + beq _0804D670 + cmp r0, 0x1 + bgt _0804D65C + cmp r0, 0 + beq _0804D666 + b _0804D686 +_0804D65C: + cmp r0, 0x2 + beq _0804D676 + cmp r0, 0x3 + beq _0804D67C + b _0804D686 +_0804D666: + ldr r0, [sp, 0x4] + subs r0, 0x1 + cmp r7, r0 + blt _0804D68A + b _0804D684 +_0804D670: + cmp r6, 0 + bgt _0804D68A + b _0804D684 +_0804D676: + cmp r7, 0 + bgt _0804D68A + b _0804D684 +_0804D67C: + ldr r0, [sp, 0x8] + subs r0, 0x1 + cmp r6, r0 + blt _0804D68A +_0804D684: + adds r5, 0x1 +_0804D686: + cmp r1, 0 + beq _0804D648 +_0804D68A: + movs r1, 0x3 + ands r1, r5 + cmp r1, 0x1 + beq _0804D6C6 + cmp r1, 0x1 + bgt _0804D69C + cmp r1, 0 + beq _0804D6A6 + b _0804D71E +_0804D69C: + cmp r1, 0x2 + beq _0804D6E2 + cmp r1, 0x3 + beq _0804D704 + b _0804D71E +_0804D6A6: + mov r1, r9 + add r1, r8 + movs r0, 0xF0 + lsls r0, 1 + adds r2, r1, r0 + ldrb r0, [r2, 0x8] + cmp r0, 0 + bne _0804D71E + movs r0, 0x1 + strb r0, [r1, 0x16] + strb r0, [r2, 0x15] + movs r1, 0xF0 + lsls r1, 1 + add r8, r1 + adds r7, 0x1 + b _0804D71E +_0804D6C6: + mov r2, r9 + add r2, r8 + adds r3, r2, 0 + subs r3, 0x20 + ldrb r0, [r3, 0x8] + cmp r0, 0 + bne _0804D71E + strb r1, [r2, 0x13] + strb r1, [r3, 0x14] + movs r2, 0x20 + negs r2, r2 + add r9, r2 + subs r6, 0x1 + b _0804D71E +_0804D6E2: + mov r1, r9 + add r1, r8 + ldr r0, _0804D700 + adds r2, r1, r0 + ldrb r0, [r2, 0x8] + cmp r0, 0 + bne _0804D71E + movs r0, 0x1 + strb r0, [r1, 0x15] + strb r0, [r2, 0x16] + ldr r1, _0804D700 + add r8, r1 + subs r7, 0x1 + b _0804D71E + .align 2, 0 +_0804D700: .4byte 0xfffffe20 +_0804D704: + mov r1, r9 + add r1, r8 + adds r2, r1, 0 + adds r2, 0x20 + ldrb r0, [r2, 0x8] + cmp r0, 0 + bne _0804D71E + movs r0, 0x1 + strb r0, [r1, 0x14] + strb r0, [r2, 0x13] + movs r1, 0x20 + add r9, r1 + adds r6, 0x1 +_0804D71E: + mov r10, r4 + ldr r2, [sp, 0xC] + cmp r10, r2 + blt _0804D630 +_0804D726: + ldr r4, [sp, 0x44] + ldrb r0, [r4, 0xB] + cmp r0, 0 + beq _0804D730 + b _0804D8B8 +_0804D730: + movs r0, 0 + mov r9, r0 + movs r7, 0 + ldr r1, [sp, 0x4] + cmp r9, r1 + blt _0804D73E + b _0804D8B0 +_0804D73E: + movs r2, 0x1 + mov r8, r2 +_0804D742: + movs r6, 0 + adds r4, r7, 0x1 + str r4, [sp, 0x14] + ldr r0, [sp, 0x8] + cmp r6, r0 + blt _0804D750 + b _0804D8A6 +_0804D750: + lsls r1, r7, 4 + str r1, [sp, 0x10] + subs r0, r1, r7 + lsls r0, 5 + ldr r2, [sp] + adds r3, r0, r2 +_0804D75C: + lsls r0, r6, 5 + adds r2, r0, r3 + ldrb r1, [r2, 0x8] + adds r4, r0, 0 + adds r0, r6, 0x1 + str r0, [sp, 0x18] + cmp r1, 0 + beq _0804D76E + b _0804D89C +_0804D76E: + ldrb r0, [r2, 0xA] + cmp r0, 0 + beq _0804D776 + b _0804D89C +_0804D776: + ldrb r0, [r2, 0x13] + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + ldrb r0, [r2, 0x14] + cmp r0, 0 + beq _0804D786 + adds r1, 0x1 +_0804D786: + ldrb r0, [r2, 0x15] + cmp r0, 0 + beq _0804D78E + adds r1, 0x1 +_0804D78E: + ldrb r0, [r2, 0x16] + cmp r0, 0 + beq _0804D796 + adds r1, 0x1 +_0804D796: + cmp r1, 0x1 + beq _0804D79C + b _0804D89C +_0804D79C: + movs r0, 0x4 + str r3, [sp, 0x1C] + bl DungeonRandomCapped + adds r5, r0, 0 + movs r2, 0 + mov r10, r2 + ldr r1, [sp, 0x10] + subs r0, r1, r7 + lsls r0, 5 + ldr r1, [sp] + adds r0, r1 + adds r1, r4, r0 + ldr r3, [sp, 0x1C] +_0804D7B8: + movs r0, 0x3 + ands r0, r5 + cmp r0, 0x1 + beq _0804D7E0 + cmp r0, 0x1 + bgt _0804D7CA + cmp r0, 0 + beq _0804D7D4 + b _0804D800 +_0804D7CA: + cmp r0, 0x2 + beq _0804D7E8 + cmp r0, 0x3 + beq _0804D7F0 + b _0804D800 +_0804D7D4: + ldr r0, [sp, 0x4] + subs r0, 0x1 + cmp r7, r0 + bge _0804D7FE + ldrb r0, [r1, 0x16] + b _0804D7FA +_0804D7E0: + cmp r6, 0 + ble _0804D7FE + ldrb r0, [r1, 0x13] + b _0804D7FA +_0804D7E8: + cmp r7, 0 + ble _0804D7FE + ldrb r0, [r1, 0x15] + b _0804D7FA +_0804D7F0: + ldr r0, [sp, 0x8] + subs r0, 0x1 + cmp r6, r0 + bge _0804D7FE + ldrb r0, [r1, 0x14] +_0804D7FA: + cmp r0, 0 + beq _0804D80E +_0804D7FE: + adds r5, 0x1 +_0804D800: + mov r0, r10 + cmp r0, 0 + bne _0804D80E + adds r2, 0x1 + cmp r2, 0x7 + ble _0804D7B8 + b _0804D89C +_0804D80E: + movs r2, 0x3 + ands r2, r5 + cmp r2, 0x1 + beq _0804D844 + cmp r2, 0x1 + bgt _0804D820 + cmp r2, 0 + beq _0804D82A + b _0804D89C +_0804D820: + cmp r2, 0x2 + beq _0804D85C + cmp r2, 0x3 + beq _0804D880 + b _0804D89C +_0804D82A: + adds r1, r4, r3 + movs r4, 0xF0 + lsls r4, 1 + adds r2, r1, r4 + ldrb r0, [r2, 0x8] + cmp r0, 0 + bne _0804D89C + mov r0, r8 + strb r0, [r1, 0x16] + strb r0, [r2, 0x15] + movs r1, 0x1 + mov r9, r1 + b _0804D89C +_0804D844: + adds r1, r4, r3 + movs r4, 0xF0 + lsls r4, 1 + adds r0, r1, r4 + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _0804D89C + strb r2, [r1, 0x13] + adds r0, r1, 0 + subs r0, 0x20 + strb r2, [r0, 0x14] + b _0804D898 +_0804D85C: + adds r1, r4, r3 + movs r2, 0xF0 + lsls r2, 1 + adds r0, r1, r2 + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _0804D89C + mov r4, r8 + strb r4, [r1, 0x15] + ldr r2, _0804D87C + adds r0, r1, r2 + strb r4, [r0, 0x16] + movs r4, 0x1 + mov r9, r4 + b _0804D89C + .align 2, 0 +_0804D87C: .4byte 0xfffffe20 +_0804D880: + adds r1, r4, r3 + movs r2, 0xF0 + lsls r2, 1 + adds r0, r1, r2 + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _0804D89C + mov r4, r8 + strb r4, [r1, 0x14] + adds r0, r1, 0 + adds r0, 0x20 + strb r4, [r0, 0x13] +_0804D898: + movs r0, 0x1 + mov r9, r0 +_0804D89C: + ldr r6, [sp, 0x18] + ldr r1, [sp, 0x8] + cmp r6, r1 + bge _0804D8A6 + b _0804D75C +_0804D8A6: + ldr r7, [sp, 0x14] + ldr r2, [sp, 0x4] + cmp r7, r2 + bge _0804D8B0 + b _0804D742 +_0804D8B0: + mov r4, r9 + cmp r4, 0 + beq _0804D8B8 + b _0804D730 +_0804D8B8: + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804D5F0 + + thumb_func_start sub_804D8C8 +sub_804D8C8: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x58 + str r0, [sp, 0xC] + str r1, [sp, 0x10] + str r2, [sp, 0x14] + str r3, [sp, 0x18] + ldr r0, [sp, 0x7C] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x1C] + movs r0, 0 + str r0, [sp, 0x20] + cmp r0, r1 + bge _0804D968 +_0804D8EC: + movs r1, 0 + mov r10, r1 + ldr r2, [sp, 0x20] + adds r2, 0x1 + str r2, [sp, 0x38] + ldr r3, [sp, 0x14] + cmp r10, r3 + bge _0804D95E + ldr r4, [sp, 0x20] + lsls r1, r4, 4 + subs r1, r4 + movs r3, 0 + lsls r1, 5 + ldr r0, [sp, 0xC] + adds r0, 0x8 + adds r1, r0 +_0804D90C: + ldrb r2, [r1] + cmp r2, 0 + beq _0804D91C + strb r3, [r1, 0xF] + strb r3, [r1, 0x10] + strb r3, [r1, 0x11] + strb r3, [r1, 0x12] + b _0804D952 +_0804D91C: + ldr r5, [sp, 0x20] + cmp r5, 0 + bgt _0804D924 + strb r2, [r1, 0xD] +_0804D924: + mov r6, r10 + cmp r6, 0 + bgt _0804D92C + strb r2, [r1, 0xB] +_0804D92C: + ldr r0, [sp, 0x10] + subs r0, 0x1 + ldr r7, [sp, 0x20] + cmp r7, r0 + blt _0804D938 + strb r2, [r1, 0xE] +_0804D938: + ldr r0, [sp, 0x14] + subs r0, 0x1 + cmp r10, r0 + blt _0804D942 + strb r2, [r1, 0xC] +_0804D942: + ldrb r0, [r1, 0xB] + strb r0, [r1, 0xF] + ldrb r0, [r1, 0xC] + strb r0, [r1, 0x10] + ldrb r0, [r1, 0xD] + strb r0, [r1, 0x11] + ldrb r0, [r1, 0xE] + strb r0, [r1, 0x12] +_0804D952: + adds r1, 0x20 + movs r0, 0x1 + add r10, r0 + ldr r2, [sp, 0x14] + cmp r10, r2 + blt _0804D90C +_0804D95E: + ldr r3, [sp, 0x38] + str r3, [sp, 0x20] + ldr r4, [sp, 0x10] + cmp r3, r4 + blt _0804D8EC +_0804D968: + movs r5, 0 + str r5, [sp, 0x20] + ldr r6, [sp, 0x10] + cmp r5, r6 + blt _0804D974 + b _0804DBC6 +_0804D974: + movs r7, 0 + mov r10, r7 + ldr r0, [sp, 0x20] + adds r0, 0x1 + str r0, [sp, 0x38] + ldr r1, [sp, 0x14] + cmp r10, r1 + blt _0804D986 + b _0804DBBA +_0804D986: + ldr r2, [sp, 0x20] + lsls r2, 4 + str r2, [sp, 0x40] + ldr r3, [sp, 0x20] + subs r1, r2, r3 + lsls r1, 5 + movs r4, 0 + str r4, [sp, 0x48] + ldr r5, [sp, 0xC] + movs r6, 0xF0 + lsls r6, 1 + adds r0, r5, r6 + adds r0, r1 + mov r8, r0 + adds r5, r1, r5 + ldr r7, [sp, 0xC] + ldr r2, _0804DA0C + adds r0, r7, r2 + adds r7, r1, r0 + ldr r3, [sp, 0x78] + str r3, [sp, 0x4C] + ldr r0, [sp, 0xC] + adds r0, 0x20 + adds r0, r1, r0 + str r0, [sp, 0x50] + ldr r0, [sp, 0xC] + subs r0, 0x20 + adds r6, r1, r0 + ldr r4, [sp, 0x20] + lsls r0, r4, 2 + ldr r1, [sp, 0x18] + adds r0, r1 + str r0, [sp, 0x24] +_0804D9C8: + ldr r2, [sp, 0x20] + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 5 + ldr r3, [sp, 0xC] + adds r0, r3 + ldr r1, [sp, 0x48] + adds r4, r1, r0 + ldrb r0, [r4, 0x8] + cmp r0, 0 + beq _0804D9E0 + b _0804DB92 +_0804D9E0: + ldrb r0, [r4, 0xA] + cmp r0, 0 + beq _0804DA10 + movs r2, 0 + ldrsh r0, [r4, r2] + adds r0, 0x1 + movs r3, 0x4 + ldrsh r1, [r4, r3] + subs r1, 0x1 + bl sub_808411C + mov r9, r0 + movs r1, 0x2 + ldrsh r0, [r4, r1] + adds r0, 0x1 + movs r2, 0x6 + ldrsh r1, [r4, r2] + subs r1, 0x1 + bl sub_808411C + adds r4, r0, 0 + b _0804DA1A + .align 2, 0 +_0804DA0C: .4byte 0xfffffe20 +_0804DA10: + movs r0, 0 + ldrsh r3, [r4, r0] + mov r9, r3 + movs r1, 0x2 + ldrsh r4, [r4, r1] +_0804DA1A: + ldrb r0, [r5, 0x17] + cmp r0, 0 + beq _0804DA74 + ldrb r0, [r6, 0x8] + cmp r0, 0 + bne _0804DA68 + ldrb r0, [r6, 0xA] + cmp r0, 0 + beq _0804DA40 + movs r2, 0 + ldrsh r0, [r6, r2] + adds r0, 0x1 + movs r3, 0x4 + ldrsh r1, [r6, r3] + subs r1, 0x1 + bl sub_808411C + adds r2, r0, 0 + b _0804DA44 +_0804DA40: + movs r0, 0 + ldrsh r2, [r6, r0] +_0804DA44: + movs r3, 0x2 + ldrsh r1, [r5, r3] + movs r0, 0x6 + ldrsh r3, [r6, r0] + subs r3, 0x1 + mov r12, r3 + movs r3, 0x1 + str r3, [sp] + ldr r3, [sp, 0x24] + ldr r0, [r3] + str r0, [sp, 0x4] + ldr r3, [sp, 0x4C] + ldr r0, [r3] + str r0, [sp, 0x8] + mov r0, r9 + mov r3, r12 + bl sub_804E328 +_0804DA68: + movs r0, 0 + strb r0, [r5, 0x17] + strb r0, [r6, 0x18] + movs r1, 0x1 + strb r1, [r5, 0xB] + strb r1, [r6, 0xB] +_0804DA74: + ldrb r0, [r5, 0x18] + cmp r0, 0 + beq _0804DAD4 + ldr r2, [sp, 0x50] + ldrb r0, [r2, 0x8] + cmp r0, 0 + bne _0804DAC6 + ldrb r0, [r2, 0xA] + cmp r0, 0 + beq _0804DA9C + movs r3, 0x20 + ldrsh r0, [r5, r3] + adds r0, 0x1 + movs r2, 0x24 + ldrsh r1, [r5, r2] + subs r1, 0x1 + bl sub_808411C + adds r2, r0, 0 + b _0804DAA0 +_0804DA9C: + movs r3, 0x20 + ldrsh r2, [r5, r3] +_0804DAA0: + movs r0, 0x6 + ldrsh r1, [r5, r0] + subs r1, 0x1 + movs r0, 0x22 + ldrsh r3, [r5, r0] + mov r12, r3 + movs r3, 0x1 + str r3, [sp] + ldr r3, [sp, 0x24] + ldr r0, [r3] + str r0, [sp, 0x4] + ldr r3, [sp, 0x4C] + ldr r0, [r3, 0x4] + subs r0, 0x1 + str r0, [sp, 0x8] + mov r0, r9 + mov r3, r12 + bl sub_804E328 +_0804DAC6: + movs r0, 0 + strb r0, [r5, 0x18] + ldr r1, [sp, 0x50] + strb r0, [r1, 0x17] + movs r2, 0x1 + strb r2, [r5, 0xB] + strb r2, [r1, 0xB] +_0804DAD4: + ldrb r0, [r5, 0x19] + cmp r0, 0 + beq _0804DB2E + ldrb r0, [r7, 0x8] + cmp r0, 0 + bne _0804DB22 + ldrb r0, [r7, 0xA] + cmp r0, 0 + beq _0804DAFA + movs r3, 0x2 + ldrsh r0, [r7, r3] + adds r0, 0x1 + movs r2, 0x6 + ldrsh r1, [r7, r2] + subs r1, 0x1 + bl sub_808411C + adds r3, r0, 0 + b _0804DAFE +_0804DAFA: + movs r0, 0x2 + ldrsh r3, [r7, r0] +_0804DAFE: + movs r1, 0 + ldrsh r0, [r5, r1] + movs r1, 0 + ldrsh r2, [r7, r1] + subs r2, 0x1 + mov r9, r2 + movs r2, 0 + str r2, [sp] + ldr r2, [sp, 0x24] + ldr r1, [r2] + str r1, [sp, 0x4] + ldr r2, [sp, 0x4C] + ldr r1, [r2] + str r1, [sp, 0x8] + adds r1, r4, 0 + mov r2, r9 + bl sub_804E328 +_0804DB22: + movs r3, 0 + strb r3, [r5, 0x19] + strb r3, [r7, 0x1A] + movs r0, 0x1 + strb r0, [r5, 0xB] + strb r0, [r7, 0xB] +_0804DB2E: + ldrb r0, [r5, 0x1A] + cmp r0, 0 + beq _0804DB92 + mov r1, r8 + ldrb r0, [r1, 0x8] + cmp r0, 0 + bne _0804DB84 + ldrb r0, [r1, 0xA] + cmp r0, 0 + beq _0804DB56 + movs r2, 0x2 + ldrsh r0, [r1, r2] + adds r0, 0x1 + movs r3, 0x6 + ldrsh r1, [r1, r3] + subs r1, 0x1 + bl sub_808411C + adds r3, r0, 0 + b _0804DB5C +_0804DB56: + mov r0, r8 + movs r1, 0x2 + ldrsh r3, [r0, r1] +_0804DB5C: + movs r2, 0x4 + ldrsh r0, [r5, r2] + subs r0, 0x1 + mov r1, r8 + movs r2, 0 + ldrsh r1, [r1, r2] + mov r9, r1 + movs r1, 0 + str r1, [sp] + ldr r2, [sp, 0x24] + ldr r1, [r2, 0x4] + subs r1, 0x1 + str r1, [sp, 0x4] + ldr r2, [sp, 0x4C] + ldr r1, [r2] + str r1, [sp, 0x8] + adds r1, r4, 0 + mov r2, r9 + bl sub_804E328 +_0804DB84: + movs r3, 0 + strb r3, [r5, 0x1A] + mov r4, r8 + strb r3, [r4, 0x19] + movs r0, 0x1 + strb r0, [r5, 0xB] + strb r0, [r4, 0xB] +_0804DB92: + ldr r1, [sp, 0x48] + adds r1, 0x20 + str r1, [sp, 0x48] + movs r2, 0x20 + add r8, r2 + adds r5, 0x20 + adds r7, 0x20 + ldr r3, [sp, 0x4C] + adds r3, 0x4 + str r3, [sp, 0x4C] + ldr r4, [sp, 0x50] + adds r4, 0x20 + str r4, [sp, 0x50] + adds r6, 0x20 + movs r0, 0x1 + add r10, r0 + ldr r1, [sp, 0x14] + cmp r10, r1 + bge _0804DBBA + b _0804D9C8 +_0804DBBA: + ldr r2, [sp, 0x38] + str r2, [sp, 0x20] + ldr r3, [sp, 0x10] + cmp r2, r3 + bge _0804DBC6 + b _0804D974 +_0804DBC6: + ldr r4, [sp, 0x1C] + cmp r4, 0 + beq _0804DBCE + b _0804E026 +_0804DBCE: + movs r5, 0 + str r5, [sp, 0x20] + ldr r6, [sp, 0x10] + cmp r5, r6 + blt _0804DBDA + b _0804E026 +_0804DBDA: + movs r7, 0 + mov r10, r7 + ldr r0, [sp, 0x20] + adds r0, 0x1 + str r0, [sp, 0x38] + ldr r1, [sp, 0x14] + cmp r10, r1 + blt _0804DBEC + b _0804E018 +_0804DBEC: + movs r0, 0x64 + bl DungeonRandomCapped + mov r2, r10 + adds r2, 0x1 + str r2, [sp, 0x3C] + cmp r0, 0x4 + ble _0804DBFE + b _0804E00C +_0804DBFE: + mov r3, r10 + lsls r1, r3, 5 + ldr r4, [sp, 0x20] + lsls r2, r4, 4 + subs r0, r2, r4 + lsls r0, 5 + ldr r5, [sp, 0xC] + adds r0, r5 + adds r4, r1, r0 + ldrb r0, [r4, 0x8] + str r1, [sp, 0x44] + str r2, [sp, 0x40] + cmp r0, 0 + beq _0804DC1C + b _0804E00C +_0804DC1C: + ldrb r0, [r4, 0xB] + cmp r0, 0 + bne _0804DC24 + b _0804E00C +_0804DC24: + ldrb r0, [r4, 0x12] + cmp r0, 0 + beq _0804DC2C + b _0804E00C +_0804DC2C: + ldrb r0, [r4, 0x9] + cmp r0, 0 + beq _0804DC34 + b _0804E00C +_0804DC34: + ldrb r0, [r4, 0xA] + cmp r0, 0 + bne _0804DC3C + b _0804E00C +_0804DC3C: + movs r0, 0x4 + bl DungeonRandomCapped + cmp r0, 0x1 + bne _0804DC48 + b _0804DD50 +_0804DC48: + cmp r0, 0x1 + bgt _0804DC52 + cmp r0, 0 + beq _0804DC60 + b _0804E00C +_0804DC52: + cmp r0, 0x2 + bne _0804DC58 + b _0804DE3C +_0804DC58: + cmp r0, 0x3 + bne _0804DC5E + b _0804DF30 +_0804DC5E: + b _0804E00C +_0804DC60: + ldr r6, [sp, 0x20] + cmp r6, 0 + bgt _0804DC68 + b _0804E00C +_0804DC68: + ldr r7, _0804DD48 + adds r2, r4, r7 + ldrb r0, [r2, 0xB] + cmp r0, 0 + bne _0804DC74 + b _0804E00C +_0804DC74: + ldrb r0, [r2, 0x8] + cmp r0, 0 + beq _0804DC7C + b _0804E00C +_0804DC7C: + ldrb r0, [r2, 0xA] + cmp r0, 0 + bne _0804DC84 + b _0804E00C +_0804DC84: + ldrb r0, [r2, 0x9] + cmp r0, 0 + beq _0804DC8C + b _0804E00C +_0804DC8C: + ldrb r0, [r2, 0x12] + cmp r0, 0 + beq _0804DC94 + b _0804E00C +_0804DC94: + movs r1, 0 + ldrsh r0, [r2, r1] + str r0, [sp, 0x28] + ldrh r3, [r4, 0x2] + movs r5, 0x2 + ldrsh r1, [r4, r5] + ldrh r5, [r2, 0x2] + movs r6, 0x2 + ldrsh r0, [r2, r6] + cmp r1, r0 + ble _0804DCAC + adds r3, r5, 0 +_0804DCAC: + lsls r0, r3, 16 + asrs r0, 16 + mov r9, r0 + movs r0, 0x4 + ldrsh r7, [r4, r0] + mov r10, r7 + ldrh r3, [r4, 0x6] + movs r5, 0x6 + ldrsh r1, [r4, r5] + ldrh r5, [r2, 0x6] + movs r6, 0x6 + ldrsh r0, [r2, r6] + cmp r1, r0 + bge _0804DCCA + adds r3, r5, 0 +_0804DCCA: + lsls r0, r3, 16 + asrs r7, r0, 16 + movs r1, 0 + ldrsh r0, [r4, r1] + movs r2, 0x2 + ldrsh r1, [r4, r2] + bl GetMapTile_1 + ldrb r0, [r0, 0x9] + mov r8, r0 + ldr r5, [sp, 0x28] + cmp r5, r10 + bge _0804DD16 +_0804DCE4: + mov r4, r9 + adds r6, r5, 0x1 + cmp r9, r7 + bge _0804DD10 + ldr r0, _0804DD4C + adds r3, r0, 0 +_0804DCF0: + adds r0, r5, 0 + adds r1, r4, 0 + str r3, [sp, 0x54] + bl GetMapTile_2 + ldrh r1, [r0] + ldr r3, [sp, 0x54] + ands r1, r3 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + mov r1, r8 + strb r1, [r0, 0x9] + adds r4, 0x1 + cmp r4, r7 + blt _0804DCF0 +_0804DD10: + adds r5, r6, 0 + cmp r5, r10 + blt _0804DCE4 +_0804DD16: + ldr r2, [sp, 0x40] + ldr r3, [sp, 0x20] + subs r0, r2, r3 + lsls r0, 5 + ldr r4, [sp, 0xC] + adds r0, r4 + ldr r5, [sp, 0x44] + adds r0, r5, r0 + ldr r6, _0804DD48 + adds r3, r0, r6 + mov r1, sp + ldrh r1, [r1, 0x28] + strh r1, [r3] + mov r2, r10 + strh r2, [r3, 0x4] + mov r4, r9 + strh r4, [r3, 0x2] + strh r7, [r3, 0x6] + movs r5, 0x1 + strb r5, [r0, 0x12] + strb r5, [r3, 0x12] + movs r6, 0 + strb r6, [r0, 0xB] + strb r5, [r0, 0x11] + b _0804E00C + .align 2, 0 +_0804DD48: .4byte 0xfffffe20 +_0804DD4C: .4byte 0x0000fffc +_0804DD50: + mov r7, r10 + cmp r7, 0 + bgt _0804DD58 + b _0804E00C +_0804DD58: + adds r2, r4, 0 + subs r2, 0x20 + ldrb r0, [r2, 0xB] + cmp r0, 0 + bne _0804DD64 + b _0804E00C +_0804DD64: + ldrb r0, [r2, 0x8] + cmp r0, 0 + beq _0804DD6C + b _0804E00C +_0804DD6C: + ldrb r0, [r2, 0xA] + cmp r0, 0 + bne _0804DD74 + b _0804E00C +_0804DD74: + ldrb r0, [r2, 0x9] + cmp r0, 0 + beq _0804DD7C + b _0804E00C +_0804DD7C: + ldrb r0, [r2, 0x12] + cmp r0, 0 + beq _0804DD84 + b _0804E00C +_0804DD84: + ldrh r3, [r4] + movs r0, 0 + ldrsh r1, [r4, r0] + ldrh r5, [r2] + movs r6, 0 + ldrsh r0, [r2, r6] + cmp r1, r0 + ble _0804DD96 + adds r3, r5, 0 +_0804DD96: + lsls r0, r3, 16 + asrs r0, 16 + str r0, [sp, 0x2C] + movs r0, 0x2 + ldrsh r7, [r2, r0] + mov r10, r7 + ldrh r3, [r4, 0x4] + movs r5, 0x4 + ldrsh r1, [r4, r5] + ldrh r5, [r2, 0x4] + movs r6, 0x4 + ldrsh r0, [r2, r6] + cmp r1, r0 + bge _0804DDB4 + adds r3, r5, 0 +_0804DDB4: + lsls r0, r3, 16 + asrs r0, 16 + mov r8, r0 + movs r0, 0x6 + ldrsh r7, [r4, r0] + movs r1, 0 + ldrsh r0, [r4, r1] + movs r2, 0x2 + ldrsh r1, [r4, r2] + bl GetMapTile_1 + ldrb r0, [r0, 0x9] + mov r9, r0 + ldr r5, [sp, 0x2C] + cmp r5, r8 + bge _0804DE06 +_0804DDD4: + mov r4, r10 + adds r6, r5, 0x1 + cmp r10, r7 + bge _0804DE00 + ldr r0, _0804DE38 + adds r3, r0, 0 +_0804DDE0: + adds r0, r5, 0 + adds r1, r4, 0 + str r3, [sp, 0x54] + bl GetMapTile_2 + ldrh r1, [r0] + ldr r3, [sp, 0x54] + ands r1, r3 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + mov r1, r9 + strb r1, [r0, 0x9] + adds r4, 0x1 + cmp r4, r7 + blt _0804DDE0 +_0804DE00: + adds r5, r6, 0 + cmp r5, r8 + blt _0804DDD4 +_0804DE06: + ldr r2, [sp, 0x40] + ldr r3, [sp, 0x20] + subs r0, r2, r3 + lsls r0, 5 + ldr r4, [sp, 0xC] + adds r0, r4 + ldr r5, [sp, 0x44] + adds r0, r5, r0 + adds r3, r0, 0 + subs r3, 0x20 + mov r6, sp + ldrh r6, [r6, 0x2C] + strh r6, [r3] + mov r1, r8 + strh r1, [r3, 0x4] + mov r2, r10 + strh r2, [r3, 0x2] + strh r7, [r3, 0x6] + movs r4, 0x1 + strb r4, [r0, 0x12] + strb r4, [r3, 0x12] + movs r5, 0 + strb r5, [r0, 0xB] + strb r4, [r0, 0x11] + b _0804E00C + .align 2, 0 +_0804DE38: .4byte 0x0000fffc +_0804DE3C: + ldr r0, [sp, 0x10] + subs r0, 0x2 + ldr r6, [sp, 0x20] + cmp r6, r0 + ble _0804DE48 + b _0804E00C +_0804DE48: + movs r7, 0xF0 + lsls r7, 1 + adds r2, r4, r7 + ldrb r0, [r2, 0xB] + cmp r0, 0 + bne _0804DE56 + b _0804E00C +_0804DE56: + ldrb r0, [r2, 0x8] + cmp r0, 0 + beq _0804DE5E + b _0804E00C +_0804DE5E: + ldrb r0, [r2, 0xA] + cmp r0, 0 + bne _0804DE66 + b _0804E00C +_0804DE66: + ldrb r0, [r2, 0x9] + cmp r0, 0 + beq _0804DE6E + b _0804E00C +_0804DE6E: + ldrb r0, [r2, 0x12] + cmp r0, 0 + beq _0804DE76 + b _0804E00C +_0804DE76: + movs r1, 0 + ldrsh r0, [r4, r1] + str r0, [sp, 0x30] + ldrh r3, [r2, 0x2] + movs r5, 0x2 + ldrsh r1, [r2, r5] + ldrh r5, [r4, 0x2] + movs r6, 0x2 + ldrsh r0, [r4, r6] + cmp r1, r0 + ble _0804DE8E + adds r3, r5, 0 +_0804DE8E: + lsls r0, r3, 16 + asrs r0, 16 + mov r9, r0 + movs r0, 0x4 + ldrsh r7, [r2, r0] + mov r10, r7 + ldrh r3, [r2, 0x6] + movs r5, 0x6 + ldrsh r1, [r2, r5] + ldrh r2, [r4, 0x6] + movs r6, 0x6 + ldrsh r0, [r4, r6] + cmp r1, r0 + bge _0804DEAC + adds r3, r2, 0 +_0804DEAC: + lsls r0, r3, 16 + asrs r7, r0, 16 + movs r0, 0x2 + ldrsh r1, [r4, r0] + ldr r0, [sp, 0x30] + bl GetMapTile_1 + ldrb r0, [r0, 0x9] + mov r8, r0 + ldr r5, [sp, 0x30] + cmp r5, r10 + bge _0804DEF6 +_0804DEC4: + mov r4, r9 + adds r6, r5, 0x1 + cmp r9, r7 + bge _0804DEF0 + ldr r1, _0804DF2C + adds r3, r1, 0 +_0804DED0: + adds r0, r5, 0 + adds r1, r4, 0 + str r3, [sp, 0x54] + bl GetMapTile_2 + ldrh r1, [r0] + ldr r3, [sp, 0x54] + ands r1, r3 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + mov r2, r8 + strb r2, [r0, 0x9] + adds r4, 0x1 + cmp r4, r7 + blt _0804DED0 +_0804DEF0: + adds r5, r6, 0 + cmp r5, r10 + blt _0804DEC4 +_0804DEF6: + ldr r3, [sp, 0x40] + ldr r4, [sp, 0x20] + subs r0, r3, r4 + lsls r0, 5 + ldr r5, [sp, 0xC] + adds r0, r5 + ldr r6, [sp, 0x44] + adds r0, r6, r0 + mov r1, sp + ldrh r1, [r1, 0x30] + strh r1, [r0] + mov r2, r10 + strh r2, [r0, 0x4] + mov r3, r9 + strh r3, [r0, 0x2] + strh r7, [r0, 0x6] + movs r4, 0xF0 + lsls r4, 1 + adds r1, r0, r4 + movs r5, 0x1 + strb r5, [r1, 0x12] + strb r5, [r0, 0x12] + movs r6, 0 + strb r6, [r1, 0xB] + strb r5, [r1, 0x11] + b _0804E00C + .align 2, 0 +_0804DF2C: .4byte 0x0000fffc +_0804DF30: + ldr r0, [sp, 0x14] + subs r0, 0x2 + cmp r10, r0 + bgt _0804E00C + adds r3, r4, 0 + adds r3, 0x20 + ldrb r0, [r3, 0xB] + cmp r0, 0 + beq _0804E00C + ldrb r0, [r3, 0x8] + cmp r0, 0 + bne _0804E00C + ldrb r0, [r3, 0xA] + cmp r0, 0 + beq _0804E00C + ldrb r0, [r3, 0x9] + cmp r0, 0 + bne _0804E00C + ldrb r0, [r3, 0x12] + cmp r0, 0 + bne _0804E00C + ldrh r2, [r4, 0x20] + movs r7, 0x20 + ldrsh r1, [r4, r7] + ldrh r5, [r4] + movs r6, 0 + ldrsh r0, [r4, r6] + cmp r1, r0 + ble _0804DF6C + adds r2, r5, 0 +_0804DF6C: + lsls r0, r2, 16 + asrs r0, 16 + str r0, [sp, 0x34] + movs r7, 0x2 + ldrsh r6, [r4, r7] + ldrh r2, [r3, 0x4] + movs r0, 0x4 + ldrsh r1, [r3, r0] + ldrh r5, [r4, 0x4] + movs r7, 0x4 + ldrsh r0, [r4, r7] + cmp r1, r0 + bge _0804DF88 + adds r2, r5, 0 +_0804DF88: + lsls r0, r2, 16 + asrs r0, 16 + mov r8, r0 + movs r0, 0x6 + ldrsh r3, [r3, r0] + movs r1, 0 + ldrsh r0, [r4, r1] + adds r1, r6, 0 + str r3, [sp, 0x54] + bl GetMapTile_1 + ldrb r0, [r0, 0x9] + mov r10, r0 + ldr r5, [sp, 0x34] + ldr r3, [sp, 0x54] + cmp r5, r8 + bge _0804DFDE +_0804DFAA: + adds r4, r6, 0 + adds r7, r5, 0x1 + cmp r6, r3 + bge _0804DFD8 + ldr r2, _0804E038 + mov r9, r2 +_0804DFB6: + adds r0, r5, 0 + adds r1, r4, 0 + str r3, [sp, 0x54] + bl GetMapTile_2 + ldrh r1, [r0] + mov r2, r9 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + mov r1, r10 + strb r1, [r0, 0x9] + adds r4, 0x1 + ldr r3, [sp, 0x54] + cmp r4, r3 + blt _0804DFB6 +_0804DFD8: + adds r5, r7, 0 + cmp r5, r8 + blt _0804DFAA +_0804DFDE: + ldr r2, [sp, 0x40] + ldr r4, [sp, 0x20] + subs r0, r2, r4 + lsls r0, 5 + ldr r5, [sp, 0xC] + adds r0, r5 + ldr r7, [sp, 0x44] + adds r0, r7, r0 + mov r1, sp + ldrh r1, [r1, 0x34] + strh r1, [r0] + mov r2, r8 + strh r2, [r0, 0x4] + strh r6, [r0, 0x2] + strh r3, [r0, 0x6] + adds r1, r0, 0 + adds r1, 0x20 + movs r3, 0x1 + strb r3, [r1, 0x12] + strb r3, [r0, 0x12] + movs r4, 0 + strb r4, [r1, 0xB] + strb r3, [r1, 0x11] +_0804E00C: + ldr r5, [sp, 0x3C] + mov r10, r5 + ldr r6, [sp, 0x14] + cmp r10, r6 + bge _0804E018 + b _0804DBEC +_0804E018: + ldr r7, [sp, 0x38] + str r7, [sp, 0x20] + adds r0, r7, 0 + ldr r1, [sp, 0x10] + cmp r0, r1 + bge _0804E026 + b _0804DBDA +_0804E026: + add sp, 0x58 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804E038: .4byte 0x0000fffc + thumb_func_end sub_804D8C8 + + thumb_func_start sub_804E03C +sub_804E03C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x44 + str r0, [sp] + str r1, [sp, 0x4] + str r2, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0xC] + cmp r0, r1 + blt _0804E058 + b _0804E318 +_0804E058: + movs r2, 0 + ldr r1, [sp, 0xC] + adds r1, 0x1 + str r1, [sp, 0x28] + ldr r3, [sp, 0x8] + cmp r2, r3 + blt _0804E068 + b _0804E30C +_0804E068: + ldr r4, [sp, 0xC] + lsls r4, 4 + str r4, [sp, 0x14] + ldr r6, [sp, 0xC] + subs r0, r4, r6 + lsls r0, 5 + ldr r1, [sp] + adds r0, r1 + str r0, [sp, 0x18] +_0804E07A: + lsls r0, r2, 5 + ldr r3, [sp, 0x18] + adds r4, r0, r3 + ldrb r1, [r4, 0x8] + str r0, [sp, 0x34] + adds r2, 0x1 + str r2, [sp, 0x2C] + cmp r1, 0 + beq _0804E08E + b _0804E302 +_0804E08E: + ldrb r0, [r4, 0x11] + cmp r0, 0 + beq _0804E096 + b _0804E302 +_0804E096: + ldrb r0, [r4, 0x12] + cmp r0, 0 + beq _0804E09E + b _0804E302 +_0804E09E: + ldrb r0, [r4, 0xB] + cmp r0, 0 + bne _0804E0A6 + b _0804E302 +_0804E0A6: + ldrb r0, [r4, 0xA] + cmp r0, 0 + bne _0804E0AE + b _0804E302 +_0804E0AE: + ldrb r0, [r4, 0x9] + cmp r0, 0 + beq _0804E0B6 + b _0804E302 +_0804E0B6: + ldrb r0, [r4, 0x10] + cmp r0, 0 + beq _0804E0BE + b _0804E302 +_0804E0BE: + ldrb r0, [r4, 0x1C] + cmp r0, 0 + bne _0804E0C6 + b _0804E302 +_0804E0C6: + movs r0, 0x64 + bl DungeonRandomCapped + cmp r0, 0x3B + bgt _0804E0D2 + b _0804E302 +_0804E0D2: + movs r6, 0x4 + ldrsh r2, [r4, r6] + movs r1, 0 + ldrsh r0, [r4, r1] + subs r2, r0 + movs r3, 0x6 + ldrsh r0, [r4, r3] + movs r6, 0x2 + ldrsh r1, [r4, r6] + subs r0, r1 + adds r2, r0 + str r2, [sp, 0x10] + adds r0, r2, 0 + cmp r2, 0 + bge _0804E0F2 + adds r0, 0x3 +_0804E0F2: + asrs r0, 2 + str r0, [sp, 0x10] + cmp r0, 0 + bne _0804E0FE + movs r0, 0x1 + str r0, [sp, 0x10] +_0804E0FE: + movs r1, 0 + ldr r2, [sp, 0x10] + cmp r1, r2 + blt _0804E108 + b _0804E302 +_0804E108: + ldr r3, [sp, 0x14] + ldr r4, [sp, 0xC] + subs r0, r3, r4 + lsls r0, 5 + ldr r6, [sp] + adds r0, r6 + ldr r2, [sp, 0x34] + adds r0, r2, r0 + str r0, [sp, 0x20] +_0804E11A: + movs r4, 0 + adds r1, 0x1 + str r1, [sp, 0x30] +_0804E120: + movs r0, 0x4 + bl DungeonRandomCapped + str r0, [sp, 0x1C] + cmp r0, 0x1 + beq _0804E14A + cmp r0, 0x1 + ble _0804E138 + cmp r0, 0x2 + beq _0804E168 + cmp r0, 0x3 + beq _0804E182 +_0804E138: + ldr r3, [sp, 0x20] + movs r6, 0 + ldrsh r7, [r3, r6] + movs r1, 0x2 + ldrsh r0, [r3, r1] + mov r8, r0 + cmp r4, 0 + bne _0804E19C + b _0804E15C +_0804E14A: + ldr r2, [sp, 0x20] + movs r3, 0x4 + ldrsh r0, [r2, r3] + subs r7, r0, 0x1 + movs r0, 0x2 + ldrsh r6, [r2, r0] + mov r8, r6 + cmp r4, 0 + beq _0804E162 +_0804E15C: + movs r3, 0 + movs r2, 0x1 + b _0804E1A0 +_0804E162: + movs r3, 0x1 + negs r3, r3 + b _0804E19E +_0804E168: + ldr r1, [sp, 0x20] + movs r2, 0x4 + ldrsh r0, [r1, r2] + subs r7, r0, 0x1 + movs r3, 0x6 + ldrsh r0, [r1, r3] + subs r0, 0x1 + mov r8, r0 + cmp r4, 0 + beq _0804E194 + movs r3, 0x1 + negs r3, r3 + b _0804E19E +_0804E182: + ldr r6, [sp, 0x20] + movs r0, 0 + ldrsh r7, [r6, r0] + movs r1, 0x6 + ldrsh r0, [r6, r1] + subs r0, 0x1 + mov r8, r0 + cmp r4, 0 + beq _0804E19C +_0804E194: + movs r3, 0 + movs r2, 0x1 + negs r2, r2 + b _0804E1A0 +_0804E19C: + movs r3, 0x1 +_0804E19E: + movs r2, 0 +_0804E1A0: + movs r6, 0 + mov r9, r6 + ldr r5, [sp, 0x34] + ldr r0, [sp, 0x14] + str r0, [sp, 0x40] + ldr r6, [sp, 0x18] + adds r1, r5, r6 + movs r6, 0 + ldrsh r0, [r1, r6] + mov r10, r0 + adds r4, 0x1 + str r4, [sp, 0x24] + cmp r7, r10 + bge _0804E1BE + b _0804E2F0 +_0804E1BE: + movs r4, 0x4 + ldrsh r0, [r1, r4] + cmp r7, r0 + blt _0804E1C8 + b _0804E2F0 +_0804E1C8: + ldr r6, [sp, 0x40] + ldr r1, [sp, 0xC] + subs r0, r6, r1 + lsls r0, 5 + ldr r4, [sp] + adds r0, r4 + adds r4, r5, r0 + movs r6, 0x2 + ldrsh r0, [r4, r6] + cmp r8, r0 + bge _0804E1E0 + b _0804E2F0 +_0804E1E0: + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r8, r0 + blt _0804E1EA + b _0804E2F0 +_0804E1EA: + adds r0, r7, 0 + mov r1, r8 + str r2, [sp, 0x38] + str r3, [sp, 0x3C] + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + ldr r2, [sp, 0x38] + ldr r3, [sp, 0x3C] + cmp r0, 0x1 + bne _0804E2D0 + movs r6, 0 +_0804E206: + ldr r1, _0804E228 + lsls r0, r6, 2 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r1, r7 + mov r10, r1 + movs r3, 0x2 + ldrsh r0, [r0, r3] + add r0, r8 + mov r9, r0 + movs r3, 0 + movs r5, 0x1 + negs r5, r5 +_0804E222: + movs r4, 0x1 + negs r4, r4 + b _0804E22E + .align 2, 0 +_0804E228: .4byte gAdjacentTileOffsets +_0804E22C: + adds r4, 0x1 +_0804E22E: + cmp r4, 0x1 + bgt _0804E25A + mov r1, r10 + adds r0, r1, r4 + mov r2, r9 + adds r1, r2, r5 + str r3, [sp, 0x3C] + bl GetMapTile_1 + adds r2, r0, 0 + ldrh r1, [r2] + movs r0, 0x3 + ands r0, r1 + ldr r3, [sp, 0x3C] + cmp r0, 0x1 + bne _0804E22C + ldrb r0, [r2, 0x9] + cmp r0, 0xFF + bne _0804E256 + movs r3, 0x1 +_0804E256: + cmp r3, 0 + beq _0804E22C +_0804E25A: + cmp r3, 0 + bne _0804E26A + adds r5, 0x1 + cmp r5, 0x1 + ble _0804E222 + adds r6, 0x1 + cmp r6, 0x7 + ble _0804E206 +_0804E26A: + cmp r6, 0x8 + bne _0804E2F0 + movs r6, 0 + ldr r3, [sp, 0x1C] + lsls r1, r3, 3 + ldr r0, _0804E2C4 + adds r4, r1, r0 +_0804E278: + ldr r0, _0804E2C8 + lsls r1, r6, 2 + adds r1, r0 + movs r2, 0 + ldrsh r0, [r1, r2] + movs r3, 0x2 + ldrsh r1, [r1, r3] + adds r0, r7, r0 + add r1, r8 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + movs r1, 0 + cmp r0, 0x1 + bne _0804E29C + movs r1, 0x1 +_0804E29C: + ldrb r0, [r4] + cmp r0, r1 + bne _0804E2AA + adds r4, 0x2 + adds r6, 0x2 + cmp r6, 0x7 + ble _0804E278 +_0804E2AA: + cmp r6, 0x8 + bne _0804E2F0 + adds r0, r7, 0 + mov r1, r8 + bl GetMapTile_2 + ldrh r2, [r0] + ldr r4, _0804E2CC + adds r1, r4, 0 + ands r2, r1 + strh r2, [r0] + b _0804E2F0 + .align 2, 0 +_0804E2C4: .4byte gUnknown_80F6DD5 +_0804E2C8: .4byte gAdjacentTileOffsets +_0804E2CC: .4byte 0x0000fffc +_0804E2D0: + adds r7, r3 + add r8, r2 + movs r6, 0x1 + add r9, r6 + mov r0, r9 + cmp r0, 0x9 + bgt _0804E2F0 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r7, r0 + blt _0804E2F0 + movs r6, 0x4 + ldrsh r0, [r4, r6] + cmp r7, r0 + bge _0804E2F0 + b _0804E1C8 +_0804E2F0: + ldr r4, [sp, 0x24] + cmp r4, 0x1 + bgt _0804E2F8 + b _0804E120 +_0804E2F8: + ldr r1, [sp, 0x30] + ldr r0, [sp, 0x10] + cmp r1, r0 + bge _0804E302 + b _0804E11A +_0804E302: + ldr r2, [sp, 0x2C] + ldr r1, [sp, 0x8] + cmp r2, r1 + bge _0804E30C + b _0804E07A +_0804E30C: + ldr r2, [sp, 0x28] + str r2, [sp, 0xC] + ldr r3, [sp, 0x4] + cmp r2, r3 + bge _0804E318 + b _0804E058 +_0804E318: + 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_804E03C + + thumb_func_start sub_804E328 +sub_804E328: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r5, r0, 0 + adds r4, r1, 0 + str r2, [sp] + str r3, [sp, 0x4] + ldr r0, [sp, 0x28] + lsls r0, 24 + mov r10, r5 + mov r9, r4 + ldr r1, [sp, 0x2C] + mov r8, r1 + ldr r7, [sp, 0x30] + cmp r0, 0 + bne _0804E350 + b _0804E470 +_0804E350: + movs r6, 0 +_0804E352: + cmp r4, r7 + beq _0804E3A8 + adds r0, r6, 0 + adds r6, 0x1 + cmp r0, 0x37 + ble _0804E360 + b _0804E57E +_0804E360: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _0804E390 + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r2, [r0] + ldr r3, _0804E38C + adds r1, r3, 0 + ands r2, r1 + movs r1, 0x1 + orrs r2, r1 + strh r2, [r0] + b _0804E39C + .align 2, 0 +_0804E38C: .4byte 0x0000fffc +_0804E390: + cmp r5, r10 + beq _0804E396 + b _0804E57E +_0804E396: + cmp r4, r9 + beq _0804E39C + b _0804E57E +_0804E39C: + cmp r4, r7 + bge _0804E3A4 + adds r4, 0x1 + b _0804E352 +_0804E3A4: + subs r4, 0x1 + b _0804E352 +_0804E3A8: + movs r6, 0 + ldr r0, [sp] + cmp r5, r0 + beq _0804E40A + movs r7, 0 +_0804E3B2: + adds r0, r6, 0 + adds r6, 0x1 + cmp r0, 0x37 + ble _0804E3BC + b _0804E57E +_0804E3BC: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _0804E3EC + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r2, [r0] + ldr r3, _0804E3E8 + adds r1, r3, 0 + ands r2, r1 + movs r1, 0x1 + orrs r2, r1 + strh r2, [r0] + b _0804E3F8 + .align 2, 0 +_0804E3E8: .4byte 0x0000fffc +_0804E3EC: + cmp r5, r10 + beq _0804E3F2 + b _0804E57E +_0804E3F2: + cmp r4, r9 + beq _0804E3F8 + b _0804E57E +_0804E3F8: + ldr r0, [sp] + cmp r5, r0 + bge _0804E402 + adds r5, 0x1 + b _0804E404 +_0804E402: + subs r5, 0x1 +_0804E404: + ldr r1, [sp] + cmp r5, r1 + bne _0804E3B2 +_0804E40A: + movs r6, 0 + ldr r3, [sp, 0x4] + cmp r4, r3 + bne _0804E414 + b _0804E57E +_0804E414: + movs r7, 0 +_0804E416: + adds r0, r6, 0 + adds r6, 0x1 + cmp r0, 0x37 + ble _0804E420 + b _0804E57E +_0804E420: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _0804E450 + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r2, [r0] + ldr r3, _0804E44C + adds r1, r3, 0 + ands r2, r1 + movs r1, 0x1 + orrs r2, r1 + strh r2, [r0] + b _0804E45C + .align 2, 0 +_0804E44C: .4byte 0x0000fffc +_0804E450: + cmp r5, r10 + beq _0804E456 + b _0804E57E +_0804E456: + cmp r4, r9 + beq _0804E45C + b _0804E57E +_0804E45C: + ldr r0, [sp, 0x4] + cmp r4, r0 + bge _0804E466 + adds r4, 0x1 + b _0804E468 +_0804E466: + subs r4, 0x1 +_0804E468: + ldr r1, [sp, 0x4] + cmp r4, r1 + bne _0804E416 + b _0804E57E +_0804E470: + movs r6, 0 + cmp r5, r8 + beq _0804E4C6 + movs r7, 0 +_0804E478: + adds r0, r6, 0 + adds r6, 0x1 + cmp r0, 0x37 + ble _0804E482 + b _0804E57E +_0804E482: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _0804E4B0 + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r2, [r0] + ldr r3, _0804E4AC + adds r1, r3, 0 + ands r2, r1 + movs r1, 0x1 + orrs r2, r1 + strh r2, [r0] + b _0804E4B8 + .align 2, 0 +_0804E4AC: .4byte 0x0000fffc +_0804E4B0: + cmp r5, r10 + bne _0804E57E + cmp r4, r9 + bne _0804E57E +_0804E4B8: + cmp r5, r8 + bge _0804E4C0 + adds r5, 0x1 + b _0804E4C2 +_0804E4C0: + subs r5, 0x1 +_0804E4C2: + cmp r5, r8 + bne _0804E478 +_0804E4C6: + movs r6, 0 + ldr r0, [sp, 0x4] + cmp r4, r0 + beq _0804E522 + movs r7, 0 +_0804E4D0: + adds r0, r6, 0 + adds r6, 0x1 + cmp r0, 0x37 + bgt _0804E57E + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _0804E508 + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r2, [r0] + ldr r3, _0804E504 + adds r1, r3, 0 + ands r2, r1 + movs r1, 0x1 + orrs r2, r1 + strh r2, [r0] + b _0804E510 + .align 2, 0 +_0804E504: .4byte 0x0000fffc +_0804E508: + cmp r5, r10 + bne _0804E57E + cmp r4, r9 + bne _0804E57E +_0804E510: + ldr r0, [sp, 0x4] + cmp r4, r0 + bge _0804E51A + adds r4, 0x1 + b _0804E51C +_0804E51A: + subs r4, 0x1 +_0804E51C: + ldr r1, [sp, 0x4] + cmp r4, r1 + bne _0804E4D0 +_0804E522: + movs r6, 0 + ldr r3, [sp] + cmp r5, r3 + beq _0804E57E + movs r7, 0 +_0804E52C: + adds r0, r6, 0 + adds r6, 0x1 + cmp r0, 0x37 + bgt _0804E57E + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _0804E564 + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r2, [r0] + ldr r3, _0804E560 + adds r1, r3, 0 + ands r2, r1 + movs r1, 0x1 + orrs r2, r1 + strh r2, [r0] + b _0804E56C + .align 2, 0 +_0804E560: .4byte 0x0000fffc +_0804E564: + cmp r5, r10 + bne _0804E57E + cmp r4, r9 + bne _0804E57E +_0804E56C: + ldr r0, [sp] + cmp r5, r0 + bge _0804E576 + adds r5, 0x1 + b _0804E578 +_0804E576: + subs r5, 0x1 +_0804E578: + ldr r1, [sp] + cmp r5, r1 + bne _0804E52C +_0804E57E: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804E328 + + thumb_func_start sub_804E590 +sub_804E590: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x40 + str r0, [sp, 0xC] + str r1, [sp, 0x10] + str r2, [sp, 0x14] + str r3, [sp, 0x18] + movs r0, 0 + str r0, [sp, 0x1C] + cmp r0, r1 + blt _0804E5AE + b _0804E8AA +_0804E5AE: + movs r1, 0x1 + mov r10, r1 +_0804E5B2: + movs r2, 0 + str r2, [sp, 0x20] + ldr r3, [sp, 0x1C] + adds r3, 0x1 + str r3, [sp, 0x2C] + ldr r4, [sp, 0x14] + cmp r2, r4 + blt _0804E5C4 + b _0804E89E +_0804E5C4: + ldr r5, [sp, 0x1C] + lsls r5, 4 + ldr r6, [sp, 0x1C] + subs r1, r5, r6 + lsls r1, 5 + ldr r2, [sp, 0xC] + movs r3, 0xF0 + lsls r3, 1 + adds r0, r2, r3 + adds r0, r1 + mov r8, r0 + adds r6, r1, r2 + ldr r4, _0804E6A4 + adds r0, r2, r4 + adds r7, r1, r0 + adds r0, r2, 0 + adds r0, 0x20 + adds r0, r1 + mov r9, r0 + ldr r5, [sp, 0x60] + str r5, [sp, 0x34] + adds r0, r2, 0 + subs r0, 0x20 + adds r1, r0 + str r1, [sp, 0x38] + movs r0, 0 + str r0, [sp, 0x3C] + ldr r1, [sp, 0x1C] + lsls r0, r1, 2 + ldr r2, [sp, 0x18] + adds r0, r2 + str r0, [sp, 0x28] +_0804E604: + ldr r3, [sp, 0x1C] + lsls r0, r3, 4 + subs r0, r3 + lsls r0, 5 + ldr r4, [sp, 0xC] + adds r0, r4 + ldr r5, [sp, 0x3C] + adds r4, r5, r0 + ldrb r0, [r4, 0x8] + cmp r0, 0 + beq _0804E61C + b _0804E874 +_0804E61C: + ldrb r0, [r4, 0x11] + cmp r0, 0 + beq _0804E624 + b _0804E874 +_0804E624: + ldrb r0, [r4, 0xB] + cmp r0, 0 + beq _0804E62C + b _0804E874 +_0804E62C: + ldrb r0, [r4, 0xA] + cmp r0, 0 + bne _0804E634 + b _0804E848 +_0804E634: + ldrb r0, [r4, 0x9] + cmp r0, 0 + beq _0804E63C + b _0804E848 +_0804E63C: + movs r1, 0 + ldrsh r0, [r4, r1] + adds r0, 0x1 + movs r2, 0x4 + ldrsh r1, [r4, r2] + subs r1, 0x1 + bl sub_808411C + str r0, [sp, 0x24] + movs r3, 0x2 + ldrsh r0, [r4, r3] + adds r0, 0x1 + movs r5, 0x6 + ldrsh r1, [r4, r5] + subs r1, 0x1 + bl sub_808411C + adds r5, r0, 0 + ldr r0, [sp, 0x20] + cmp r0, 0 + ble _0804E6DC + subs r4, 0x20 + ldrb r0, [r4, 0x8] + cmp r0, 0 + bne _0804E6DC + ldrb r0, [r4, 0x12] + cmp r0, 0 + bne _0804E6DC + ldrb r0, [r4, 0xB] + cmp r0, 0 + beq _0804E6DC + ldrb r0, [r4, 0xA] + cmp r0, 0 + beq _0804E6A8 + movs r1, 0 + ldrsh r0, [r4, r1] + adds r0, 0x1 + movs r2, 0x4 + ldrsh r1, [r4, r2] + subs r1, 0x1 + bl sub_808411C + adds r5, r0, 0 + movs r3, 0x2 + ldrsh r0, [r4, r3] + adds r0, 0x1 + movs r2, 0x6 + ldrsh r1, [r4, r2] + subs r1, 0x1 + bl sub_808411C + b _0804E6AC + .align 2, 0 +_0804E6A4: .4byte 0xfffffe20 +_0804E6A8: + movs r3, 0 + ldrsh r5, [r4, r3] +_0804E6AC: + movs r4, 0x2 + ldrsh r1, [r6, r4] + ldr r0, [sp, 0x38] + movs r2, 0x6 + ldrsh r3, [r0, r2] + subs r3, 0x1 + mov r4, r10 + str r4, [sp] + ldr r2, [sp, 0x28] + ldr r0, [r2] + str r0, [sp, 0x4] + ldr r4, [sp, 0x34] + ldr r0, [r4] + str r0, [sp, 0x8] + ldr r0, [sp, 0x24] + adds r2, r5, 0 + bl sub_804E328 + mov r5, r10 + strb r5, [r6, 0xB] + strb r5, [r6, 0x13] + ldr r0, [sp, 0x38] + strb r5, [r0, 0x14] + b _0804E874 +_0804E6DC: + ldr r0, [sp, 0x14] + subs r0, 0x1 + ldr r1, [sp, 0x20] + cmp r1, r0 + bge _0804E758 + mov r2, r9 + ldrb r0, [r2, 0x8] + cmp r0, 0 + bne _0804E758 + ldrb r0, [r2, 0x12] + cmp r0, 0 + bne _0804E758 + ldrb r0, [r2, 0xB] + cmp r0, 0 + beq _0804E758 + ldrb r0, [r2, 0xA] + cmp r0, 0 + beq _0804E724 + movs r3, 0x20 + ldrsh r0, [r6, r3] + adds r0, 0x1 + movs r4, 0x24 + ldrsh r1, [r6, r4] + subs r1, 0x1 + bl sub_808411C + adds r5, r0, 0 + movs r1, 0x22 + ldrsh r0, [r6, r1] + adds r0, 0x1 + movs r2, 0x26 + ldrsh r1, [r6, r2] + subs r1, 0x1 + bl sub_808411C + b _0804E728 +_0804E724: + movs r3, 0x20 + ldrsh r5, [r6, r3] +_0804E728: + movs r4, 0x6 + ldrsh r1, [r6, r4] + subs r1, 0x1 + movs r0, 0x22 + ldrsh r3, [r6, r0] + mov r2, r10 + str r2, [sp] + ldr r4, [sp, 0x28] + ldr r0, [r4] + str r0, [sp, 0x4] + ldr r2, [sp, 0x34] + ldr r0, [r2, 0x4] + subs r0, 0x1 + str r0, [sp, 0x8] + ldr r0, [sp, 0x24] + adds r2, r5, 0 + bl sub_804E328 + mov r3, r10 + strb r3, [r6, 0xB] + strb r3, [r6, 0x14] + mov r4, r9 + strb r3, [r4, 0x13] + b _0804E874 +_0804E758: + ldr r0, [sp, 0x1C] + cmp r0, 0 + ble _0804E7C8 + ldrb r0, [r7, 0x8] + cmp r0, 0 + bne _0804E7C8 + ldrb r0, [r7, 0x12] + cmp r0, 0 + bne _0804E7C8 + ldrb r0, [r7, 0xB] + cmp r0, 0 + beq _0804E7C8 + ldrb r0, [r7, 0xA] + cmp r0, 0 + beq _0804E79A + movs r1, 0 + ldrsh r0, [r7, r1] + adds r0, 0x1 + movs r2, 0x4 + ldrsh r1, [r7, r2] + subs r1, 0x1 + bl sub_808411C + movs r3, 0x2 + ldrsh r0, [r7, r3] + adds r0, 0x1 + movs r4, 0x6 + ldrsh r1, [r7, r4] + subs r1, 0x1 + bl sub_808411C + adds r3, r0, 0 + b _0804E79E +_0804E79A: + movs r0, 0x2 + ldrsh r3, [r7, r0] +_0804E79E: + movs r1, 0 + ldrsh r0, [r6, r1] + movs r4, 0 + ldrsh r2, [r7, r4] + subs r2, 0x1 + movs r1, 0 + str r1, [sp] + ldr r4, [sp, 0x28] + ldr r1, [r4] + str r1, [sp, 0x4] + ldr r4, [sp, 0x34] + ldr r1, [r4] + str r1, [sp, 0x8] + adds r1, r5, 0 + bl sub_804E328 + mov r5, r10 + strb r5, [r6, 0xB] + strb r5, [r6, 0x15] + strb r5, [r7, 0x16] + b _0804E874 +_0804E7C8: + ldr r0, [sp, 0x10] + subs r0, 0x1 + ldr r1, [sp, 0x1C] + cmp r1, r0 + bge _0804E874 + mov r2, r8 + ldrb r0, [r2, 0x8] + cmp r0, 0 + bne _0804E874 + ldrb r0, [r2, 0x12] + cmp r0, 0 + bne _0804E874 + ldrb r0, [r2, 0xB] + cmp r0, 0 + beq _0804E874 + ldrb r0, [r2, 0xA] + cmp r0, 0 + beq _0804E812 + movs r3, 0 + ldrsh r0, [r2, r3] + adds r0, 0x1 + movs r4, 0x4 + ldrsh r1, [r2, r4] + subs r1, 0x1 + bl sub_808411C + mov r1, r8 + movs r2, 0x2 + ldrsh r0, [r1, r2] + adds r0, 0x1 + movs r3, 0x6 + ldrsh r1, [r1, r3] + subs r1, 0x1 + bl sub_808411C + adds r3, r0, 0 + b _0804E818 +_0804E812: + mov r4, r8 + movs r0, 0x2 + ldrsh r3, [r4, r0] +_0804E818: + movs r1, 0x4 + ldrsh r0, [r6, r1] + subs r0, 0x1 + mov r4, r8 + movs r1, 0 + ldrsh r2, [r4, r1] + movs r1, 0 + str r1, [sp] + ldr r4, [sp, 0x28] + ldr r1, [r4, 0x4] + subs r1, 0x1 + str r1, [sp, 0x4] + ldr r4, [sp, 0x34] + ldr r1, [r4] + str r1, [sp, 0x8] + adds r1, r5, 0 + bl sub_804E328 + mov r5, r10 + strb r5, [r6, 0xB] + strb r5, [r6, 0x16] + mov r0, r8 + strb r5, [r0, 0x15] + b _0804E874 +_0804E848: + movs r1, 0 + ldrsh r0, [r6, r1] + movs r2, 0x2 + ldrsh r1, [r6, r2] + bl GetMapTile_2 + ldrh r1, [r0] + ldr r3, _0804E99C + adds r2, r3, 0 + ands r1, r2 + strh r1, [r0] + ldrh r1, [r0, 0x4] + ldr r4, _0804E9A0 + adds r2, r4, 0 + ands r1, r2 + ldr r5, _0804E9A4 + adds r2, r5, 0 + ands r1, r2 + subs r3, 0x1 + adds r2, r3, 0 + ands r1, r2 + strh r1, [r0, 0x4] +_0804E874: + movs r4, 0x20 + add r8, r4 + adds r6, 0x20 + adds r7, 0x20 + add r9, r4 + ldr r5, [sp, 0x34] + adds r5, 0x4 + str r5, [sp, 0x34] + ldr r0, [sp, 0x38] + adds r0, 0x20 + str r0, [sp, 0x38] + ldr r1, [sp, 0x3C] + adds r1, 0x20 + str r1, [sp, 0x3C] + ldr r2, [sp, 0x20] + adds r2, 0x1 + str r2, [sp, 0x20] + ldr r3, [sp, 0x14] + cmp r2, r3 + bge _0804E89E + b _0804E604 +_0804E89E: + ldr r4, [sp, 0x2C] + str r4, [sp, 0x1C] + ldr r5, [sp, 0x10] + cmp r4, r5 + bge _0804E8AA + b _0804E5B2 +_0804E8AA: + movs r6, 0 + str r6, [sp, 0x1C] + ldr r0, [sp, 0x10] + cmp r6, r0 + bge _0804E98A +_0804E8B4: + movs r1, 0 + str r1, [sp, 0x20] + ldr r2, [sp, 0x1C] + adds r2, 0x1 + str r2, [sp, 0x2C] + ldr r3, [sp, 0x14] + cmp r1, r3 + bge _0804E980 + ldr r4, [sp, 0x1C] + lsls r4, 4 + mov r9, r4 +_0804E8CA: + ldr r5, [sp, 0x20] + lsls r2, r5, 5 + ldr r6, [sp, 0x1C] + lsls r3, r6, 4 + subs r0, r3, r6 + lsls r0, 5 + ldr r1, [sp, 0xC] + adds r4, r0, r1 + adds r1, r2, r4 + ldrb r0, [r1, 0x8] + mov r8, r2 + adds r5, 0x1 + str r5, [sp, 0x30] + cmp r0, 0 + bne _0804E976 + ldrb r0, [r1, 0x11] + cmp r0, 0 + bne _0804E976 + ldrb r0, [r1, 0xB] + cmp r0, 0 + bne _0804E976 + ldrb r0, [r1, 0xF] + cmp r0, 0 + bne _0804E976 + movs r6, 0 + ldrsh r5, [r1, r6] + movs r6, 0x4 + ldrsh r0, [r1, r6] + cmp r5, r0 + bge _0804E976 + mov r10, r4 +_0804E908: + ldr r1, [sp, 0x1C] + subs r0, r3, r1 + lsls r0, 5 + ldr r3, [sp, 0xC] + adds r0, r3 + adds r0, r2, r0 + movs r6, 0x2 + ldrsh r4, [r0, r6] + movs r1, 0x6 + ldrsh r0, [r0, r1] + adds r7, r5, 0x1 + cmp r4, r0 + bge _0804E95C + mov r6, r8 + add r6, r10 +_0804E926: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r2, [r0] + ldr r3, _0804E99C + adds r1, r3, 0 + ands r2, r1 + strh r2, [r0] + ldrh r2, [r0, 0x4] + adds r3, 0x1 + adds r1, r3, 0 + ands r2, r1 + adds r3, 0x1 + adds r1, r3, 0 + ands r2, r1 + subs r3, 0x3 + adds r1, r3, 0 + ands r2, r1 + strh r2, [r0, 0x4] + movs r1, 0xFF + strb r1, [r0, 0x9] + adds r4, 0x1 + movs r1, 0x6 + ldrsh r0, [r6, r1] + cmp r4, r0 + blt _0804E926 +_0804E95C: + adds r5, r7, 0 + mov r2, r8 + mov r3, r9 + ldr r4, [sp, 0x1C] + subs r0, r3, r4 + lsls r0, 5 + ldr r6, [sp, 0xC] + adds r0, r6 + adds r0, r2, r0 + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r5, r0 + blt _0804E908 +_0804E976: + ldr r2, [sp, 0x30] + str r2, [sp, 0x20] + ldr r3, [sp, 0x14] + cmp r2, r3 + blt _0804E8CA +_0804E980: + ldr r4, [sp, 0x2C] + str r4, [sp, 0x1C] + ldr r5, [sp, 0x10] + cmp r4, r5 + blt _0804E8B4 +_0804E98A: + 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 +_0804E99C: .4byte 0x0000fffc +_0804E9A0: .4byte 0x0000fffe +_0804E9A4: .4byte 0x0000fffd + thumb_func_end sub_804E590 + + thumb_func_start sub_804E9A8 +sub_804E9A8: + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsls r2, 24 + lsrs r2, 24 + ldrh r0, [r4] + ldr r5, _0804E9D8 + adds r3, r5, 0 + ands r3, r0 + strh r3, [r4] + cmp r1, 0 + beq _0804E9D0 + ldrb r0, [r4, 0x9] + cmp r0, r2 + bne _0804E9D0 + adds r0, r3, 0 + ands r0, r5 + movs r1, 0x2 + orrs r0, r1 + strh r0, [r4] +_0804E9D0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804E9D8: .4byte 0x0000fffc + thumb_func_end sub_804E9A8 + + thumb_func_start sub_804E9DC +sub_804E9DC: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r5, 0 + movs r0, 0x3 + mov r8, r0 + movs r7, 0x8 + ldr r3, _0804EAF0 + mov r9, r3 +_0804E9F2: + movs r4, 0 + adds r6, r5, 0x1 + mov r10, r6 +_0804E9F8: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + adds r6, r4, 0x1 + cmp r0, 0x1 + beq _0804EA0E + b _0804EB0E +_0804EA0E: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrb r0, [r0, 0x9] + cmp r0, 0xFF + bne _0804EAF4 + cmp r5, 0 + ble _0804EA4E + subs r0, r5, 0x1 + adds r1, r4, 0 + bl GetMapTile_2 + adds r2, r0, 0 + ldrb r0, [r2, 0x9] + cmp r0, 0xFF + beq _0804EA4E + ldrh r0, [r2] + adds r1, r0, 0 + orrs r1, r7 + movs r3, 0 + strh r1, [r2] + adds r0, r1, 0 + mov r6, r8 + ands r0, r6 + cmp r0, 0x2 + bne _0804EA4E + mov r0, r9 + ands r1, r0 + movs r0, 0x1 + orrs r1, r0 + strh r1, [r2] +_0804EA4E: + cmp r4, 0 + ble _0804EA82 + subs r1, r4, 0x1 + adds r0, r5, 0 + bl GetMapTile_2 + adds r2, r0, 0 + ldrb r0, [r2, 0x9] + cmp r0, 0xFF + beq _0804EA82 + ldrh r0, [r2] + adds r1, r0, 0 + orrs r1, r7 + movs r3, 0 + orrs r1, r7 + strh r1, [r2] + adds r0, r1, 0 + mov r6, r8 + ands r0, r6 + cmp r0, 0x2 + bne _0804EA82 + mov r0, r9 + ands r1, r0 + movs r0, 0x1 + orrs r1, r0 + strh r1, [r2] +_0804EA82: + adds r6, r4, 0x1 + cmp r4, 0x1E + bgt _0804EABA + adds r0, r5, 0 + adds r1, r6, 0 + bl GetMapTile_2 + adds r2, r0, 0 + ldrb r0, [r2, 0x9] + cmp r0, 0xFF + beq _0804EABA + ldrh r0, [r2] + adds r1, r0, 0 + orrs r1, r7 + movs r3, 0 + mov r12, r3 + orrs r1, r7 + strh r1, [r2] + adds r0, r1, 0 + mov r3, r8 + ands r0, r3 + cmp r0, 0x2 + bne _0804EABA + mov r0, r9 + ands r1, r0 + movs r0, 0x1 + orrs r1, r0 + strh r1, [r2] +_0804EABA: + cmp r5, 0x36 + bgt _0804EB0E + mov r0, r10 + adds r1, r4, 0 + bl GetMapTile_2 + adds r2, r0, 0 + ldrb r0, [r2, 0x9] + cmp r0, 0xFF + beq _0804EB0E + ldrh r0, [r2] + adds r1, r0, 0 + orrs r1, r7 + movs r3, 0 + orrs r1, r7 + strh r1, [r2] + adds r0, r1, 0 + mov r4, r8 + ands r0, r4 + cmp r0, 0x2 + bne _0804EB0E + mov r0, r9 + ands r1, r0 + movs r0, 0x1 + orrs r1, r0 + strh r1, [r2] + b _0804EB0E + .align 2, 0 +_0804EAF0: .4byte 0x0000fffc +_0804EAF4: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrb r0, [r0, 0x9] + cmp r0, 0xFE + bne _0804EB0E + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0xFF + strb r1, [r0, 0x9] +_0804EB0E: + adds r4, r6, 0 + cmp r4, 0x1F + bgt _0804EB16 + b _0804E9F8 +_0804EB16: + mov r5, r10 + cmp r5, 0x37 + bgt _0804EB1E + b _0804E9F2 +_0804EB1E: + bl sub_804EB30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804E9DC + + thumb_func_start sub_804EB30 +sub_804EB30: + push {r4-r7,lr} + ldr r0, _0804EBB4 + ldr r6, [r0] + movs r2, 0 + movs r1, 0x1F + ldr r3, _0804EBB8 + adds r0, r6, r3 +_0804EB3E: + strh r2, [r0] + subs r0, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _0804EB3E + movs r5, 0 +_0804EB4A: + movs r4, 0 + adds r7, r5, 0x1 +_0804EB4E: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0804EBA2 + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrb r3, [r0, 0x9] + cmp r3, 0x1F + bhi _0804EBA2 + lsls r0, r3, 1 + ldr r2, _0804EBBC + adds r1, r6, r2 + adds r2, r1, r0 + movs r1, 0 + ldrsh r0, [r2, r1] + cmp r0, 0x1F + bgt _0804EBA2 + lsls r0, 2 + lsls r1, r3, 7 + adds r0, r1 + adds r0, r6, r0 + ldr r3, _0804EBC0 + adds r0, r3 + strh r5, [r0] + movs r3, 0 + ldrsh r0, [r2, r3] + lsls r0, 2 + adds r0, r1 + adds r0, r6, r0 + ldr r1, _0804EBC4 + adds r0, r1 + strh r4, [r0] + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] +_0804EBA2: + adds r4, 0x1 + cmp r4, 0x1F + ble _0804EB4E + adds r5, r7, 0 + cmp r5, 0x37 + ble _0804EB4A + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804EBB4: .4byte gDungeonGlobalData +_0804EBB8: .4byte 0x00010882 +_0804EBBC: .4byte 0x00010844 +_0804EBC0: .4byte 0x00010884 +_0804EBC4: .4byte 0x00010886 + thumb_func_end sub_804EB30 + + thumb_func_start sub_804EBC8 +sub_804EBC8: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x58 + str r0, [sp, 0x40] + str r1, [sp, 0x44] + mov r10, r2 + adds r4, r3, 0 + ldr r0, _0804EE90 + ldr r0, [r0] + mov r8, r0 + ldr r1, _0804EE94 + ldr r0, _0804EE98 + strh r0, [r1] + movs r0, 0x1 + negs r0, r0 + strh r0, [r1, 0x2] + ldr r0, _0804EE9C + ldrb r0, [r0] + cmp r0, 0 + beq _0804EBF8 + b _0804EED4 +_0804EBF8: + bl sub_8043D10 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0804EC06 + b _0804EED4 +_0804EC06: + cmp r4, 0 + bne _0804EC0C + b _0804EED4 +_0804EC0C: + movs r0, 0x64 + bl DungeonRandomCapped + cmp r4, r0 + bgt _0804EC18 + b _0804EED4 +_0804EC18: + movs r5, 0 + add r7, sp, 0x20 + adds r1, r7, 0 + mov r0, sp +_0804EC20: + strh r5, [r0] + strh r5, [r1] + adds r1, 0x2 + adds r0, 0x2 + adds r5, 0x1 + cmp r5, 0xE + ble _0804EC20 + movs r5, 0xC7 +_0804EC30: + movs r0, 0xF + bl DungeonRandomCapped + adds r4, r0, 0 + movs r0, 0xF + bl DungeonRandomCapped + lsls r4, 1 + mov r1, sp + adds r2, r1, r4 + movs r4, 0 + ldrsh r3, [r2, r4] + lsls r0, 1 + adds r1, r0 + ldrh r0, [r1] + strh r0, [r2] + strh r3, [r1] + subs r5, 0x1 + cmp r5, 0 + bge _0804EC30 + adds r6, r7, 0 + movs r5, 0xC7 +_0804EC5C: + movs r0, 0xF + bl DungeonRandomCapped + adds r4, r0, 0 + movs r0, 0xF + bl DungeonRandomCapped + lsls r4, 1 + adds r4, r6, r4 + movs r1, 0 + ldrsh r2, [r4, r1] + lsls r0, 1 + adds r0, r6, r0 + ldrh r1, [r0] + strh r1, [r4] + strh r2, [r0] + subs r5, 0x1 + cmp r5, 0 + bge _0804EC5C + movs r5, 0 +_0804EC84: + lsls r0, r5, 1 + add r0, sp + movs r3, 0 + ldrsh r2, [r0, r3] + mov r9, r2 + ldr r4, [sp, 0x44] + cmp r9, r4 + blt _0804EC96 + b _0804EECC +_0804EC96: + movs r4, 0 +_0804EC98: + lsls r0, r4, 1 + adds r0, r7, r0 + movs r2, 0 + ldrsh r1, [r0, r2] + cmp r1, r10 + blt _0804ECA6 + b _0804EEC4 +_0804ECA6: + lsls r1, 5 + mov r3, r9 + lsls r2, r3, 4 + subs r0, r2, r3 + lsls r0, 5 + ldr r3, [sp, 0x40] + adds r0, r3 + adds r3, r1, r0 + ldrb r0, [r3, 0x8] + str r1, [sp, 0x4C] + str r2, [sp, 0x48] + cmp r0, 0 + beq _0804ECC2 + b _0804EEC4 +_0804ECC2: + ldrb r0, [r3, 0x11] + cmp r0, 0 + beq _0804ECCA + b _0804EEC4 +_0804ECCA: + ldrb r0, [r3, 0x12] + cmp r0, 0 + beq _0804ECD2 + b _0804EEC4 +_0804ECD2: + ldrb r0, [r3, 0xB] + cmp r0, 0 + bne _0804ECDA + b _0804EEC4 +_0804ECDA: + ldrb r0, [r3, 0xA] + cmp r0, 0 + bne _0804ECE2 + b _0804EEC4 +_0804ECE2: + ldrb r0, [r3, 0x9] + cmp r0, 0 + beq _0804ECEA + b _0804EEC4 +_0804ECEA: + ldrb r0, [r3, 0x10] + cmp r0, 0 + beq _0804ECF2 + b _0804EEC4 +_0804ECF2: + ldrb r0, [r3, 0x1D] + cmp r0, 0 + beq _0804ECFA + b _0804EEC4 +_0804ECFA: + movs r0, 0x4 + ldrsh r1, [r3, r0] + movs r2, 0 + ldrsh r0, [r3, r2] + subs r1, r0 + cmp r1, 0 + bge _0804ED0A + negs r1, r1 +_0804ED0A: + cmp r1, 0x4 + bgt _0804ED10 + b _0804EEC4 +_0804ED10: + movs r0, 0x6 + ldrsh r1, [r3, r0] + movs r2, 0x2 + ldrsh r0, [r3, r2] + subs r1, r0 + cmp r1, 0 + bge _0804ED20 + negs r1, r1 +_0804ED20: + cmp r1, 0x3 + bgt _0804ED26 + b _0804EEC4 +_0804ED26: + ldr r1, _0804EEA0 + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x1 + strb r0, [r3, 0xC] + ldr r2, _0804EEA4 + movs r4, 0 + ldrsh r0, [r3, r4] + adds r0, 0x1 + str r0, [r2] + movs r7, 0x4 + ldrsh r0, [r3, r7] + subs r0, 0x1 + str r0, [r2, 0x8] + movs r0, 0x2 + ldrsh r1, [r3, r0] + adds r1, 0x1 + str r1, [r2, 0x4] + movs r4, 0x6 + ldrsh r3, [r3, r4] + subs r0, r3, 0x1 + str r0, [r2, 0xC] + subs r0, r1 + mov r10, r2 + cmp r0, 0x2 + bgt _0804ED5C + str r3, [r2, 0xC] +_0804ED5C: + ldr r0, _0804EEA8 + add r0, r8 + ldr r1, _0804EEAC + str r1, [r0] + ldr r0, _0804EEB0 + add r0, r8 + str r1, [r0] + ldr r0, _0804EEB4 + add r0, r8 + ldr r1, _0804EEB8 + str r1, [r0] + ldr r0, _0804EEBC + add r0, r8 + str r1, [r0] + mov r7, r10 + ldr r5, [r7] + ldr r0, [r7, 0x8] + cmp r5, r0 + bge _0804EDFA + mov r3, r10 +_0804ED84: + ldr r4, [r3, 0x4] + ldr r0, [r3, 0xC] + adds r1, r5, 0x1 + str r1, [sp, 0x54] + cmp r4, r0 + bge _0804EDF0 + ldr r6, _0804EEA8 + add r6, r8 + ldr r2, _0804EEA4 + mov r10, r2 +_0804ED98: + adds r0, r5, 0 + adds r1, r4, 0 + str r3, [sp, 0x50] + bl GetMapTile_2 + ldrh r2, [r0] + movs r1, 0x20 + orrs r1, r2 + strh r1, [r0] + ldrh r2, [r0, 0x4] + ldr r7, _0804EEC0 + adds r1, r7, 0 + ands r2, r1 + adds r7, 0x7 + adds r1, r7, 0 + ands r2, r1 + strh r2, [r0, 0x4] + ldr r0, [r6] + ldr r3, [sp, 0x50] + cmp r0, r5 + ble _0804EDC4 + str r5, [r6] +_0804EDC4: + ldr r1, _0804EEB0 + add r1, r8 + ldr r0, [r1] + cmp r0, r4 + ble _0804EDD0 + str r4, [r1] +_0804EDD0: + ldr r1, _0804EEB4 + add r1, r8 + ldr r0, [r1] + cmp r0, r5 + bge _0804EDDC + str r5, [r1] +_0804EDDC: + ldr r1, _0804EEBC + add r1, r8 + ldr r0, [r1] + cmp r0, r4 + bge _0804EDE8 + str r4, [r1] +_0804EDE8: + adds r4, 0x1 + ldr r0, [r3, 0xC] + cmp r4, r0 + blt _0804ED98 +_0804EDF0: + ldr r5, [sp, 0x54] + mov r1, r10 + ldr r0, [r1, 0x8] + cmp r5, r0 + blt _0804ED84 +_0804EDFA: + ldr r3, [sp, 0x4C] + ldr r2, [sp, 0x48] + mov r4, r9 + subs r0, r2, r4 + lsls r0, 5 + ldr r7, [sp, 0x40] + adds r1, r0, r7 + adds r0, r3, r1 + movs r4, 0 + ldrsh r5, [r0, r4] + movs r7, 0x4 + ldrsh r0, [r0, r7] + cmp r5, r0 + bge _0804EE6C + mov r8, r1 +_0804EE18: + mov r1, r9 + subs r0, r2, r1 + lsls r0, 5 + ldr r2, [sp, 0x40] + adds r0, r2 + adds r0, r3, r0 + movs r3, 0x2 + ldrsh r4, [r0, r3] + movs r7, 0x6 + ldrsh r0, [r0, r7] + adds r1, r5, 0x1 + str r1, [sp, 0x54] + cmp r4, r0 + bge _0804EE52 + ldr r6, [sp, 0x4C] + add r6, r8 +_0804EE38: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r2, [r0, 0x4] + movs r1, 0x10 + orrs r1, r2 + strh r1, [r0, 0x4] + adds r4, 0x1 + movs r2, 0x6 + ldrsh r0, [r6, r2] + cmp r4, r0 + blt _0804EE38 +_0804EE52: + ldr r5, [sp, 0x54] + ldr r3, [sp, 0x4C] + ldr r2, [sp, 0x48] + mov r4, r9 + subs r0, r2, r4 + lsls r0, 5 + ldr r7, [sp, 0x40] + adds r0, r7 + adds r0, r3, r0 + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r5, r0 + blt _0804EE18 +_0804EE6C: + ldr r2, _0804EEA4 + ldr r0, [r2] + ldr r1, [r2, 0x8] + adds r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r5, r0, 1 + ldr r0, [r2, 0x4] + ldr r1, [r2, 0xC] + adds r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r4, r0, 1 + ldr r0, _0804EE94 + strh r5, [r0] + strh r4, [r0, 0x2] + b _0804EED4 + .align 2, 0 +_0804EE90: .4byte gDungeonGlobalData +_0804EE94: .4byte gUnknown_202F1D8 +_0804EE98: .4byte 0x0000ffff +_0804EE9C: .4byte gUnknown_202F1AB +_0804EEA0: .4byte gUnknown_202F1AA +_0804EEA4: .4byte gUnknown_202F1B8 +_0804EEA8: .4byte 0x0000e240 +_0804EEAC: .4byte 0x0000270f +_0804EEB0: .4byte 0x0000e244 +_0804EEB4: .4byte 0x0000e248 +_0804EEB8: .4byte 0xffffd8f1 +_0804EEBC: .4byte 0x0000e24c +_0804EEC0: .4byte 0x0000fff7 +_0804EEC4: + adds r4, 0x1 + cmp r4, 0xE + bgt _0804EECC + b _0804EC98 +_0804EECC: + adds r5, 0x1 + cmp r5, 0xE + bgt _0804EED4 + b _0804EC84 +_0804EED4: + add sp, 0x58 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804EBC8 + + thumb_func_start sub_804EEE4 +sub_804EEE4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x108 + str r0, [sp, 0x100] + mov r8, r1 + adds r7, r2, 0 + adds r4, r3, 0 + ldr r5, _0804F094 + ldr r0, [r5] + str r0, [sp, 0x104] + cmp r4, 0 + bne _0804EF04 + b _0804F0C0 +_0804EF04: + movs r0, 0x64 + bl DungeonRandomCapped + cmp r4, r0 + bgt _0804EF10 + b _0804F0C0 +_0804EF10: + ldr r0, _0804F098 + ldrb r0, [r0] + cmp r0, 0 + beq _0804EF1A + b _0804F0C0 +_0804EF1A: + ldr r0, [r5] + movs r1, 0xD1 + lsls r1, 3 + adds r0, r1 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + beq _0804EF2C + b _0804F0C0 +_0804EF2C: + bl sub_8043D10 + lsls r0, 24 + cmp r0, 0 + beq _0804EF38 + b _0804F0C0 +_0804EF38: + movs r6, 0 + movs r1, 0 + cmp r1, r8 + bge _0804EF94 +_0804EF40: + adds r2, r1, 0x1 + cmp r7, 0 + ble _0804EF8E + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 5 + ldr r1, [sp, 0x100] + adds r1, 0x8 + adds r1, r0, r1 + adds r3, r7, 0 +_0804EF54: + ldrb r0, [r1] + cmp r0, 0 + bne _0804EF86 + ldrb r0, [r1, 0x9] + cmp r0, 0 + bne _0804EF86 + ldrb r0, [r1, 0x3] + cmp r0, 0 + beq _0804EF86 + ldrb r0, [r1, 0x2] + cmp r0, 0 + beq _0804EF86 + ldrb r0, [r1, 0x4] + cmp r0, 0 + bne _0804EF86 + ldrb r0, [r1, 0x7] + cmp r0, 0 + bne _0804EF86 + ldrb r0, [r1, 0x8] + cmp r0, 0 + bne _0804EF86 + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _0804EF86 + adds r6, 0x1 +_0804EF86: + adds r1, 0x20 + subs r3, 0x1 + cmp r3, 0 + bne _0804EF54 +_0804EF8E: + adds r1, r2, 0 + cmp r1, r8 + blt _0804EF40 +_0804EF94: + cmp r6, 0 + bne _0804EF9A + b _0804F0C0 +_0804EF9A: + movs r1, 0 + mov r0, sp + adds r0, 0xFF +_0804EFA0: + strb r1, [r0] + subs r0, 0x1 + cmp r0, sp + bge _0804EFA0 + mov r1, sp + movs r0, 0x1 + strb r0, [r1] + movs r5, 0x3F +_0804EFB0: + adds r0, r6, 0 + bl DungeonRandomCapped + adds r4, r0, 0 + adds r0, r6, 0 + bl DungeonRandomCapped + mov r3, sp + adds r2, r3, r4 + ldrb r3, [r2] + mov r4, sp + adds r1, r4, r0 + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] + subs r5, 0x1 + cmp r5, 0 + bge _0804EFB0 + movs r5, 0 + movs r1, 0 + cmp r1, r8 + bge _0804F0C0 + ldr r6, [sp, 0x100] + mov r9, r6 + movs r4, 0 +_0804EFE2: + movs r3, 0 + cmp r3, r7 + bge _0804F0B2 + mov r10, r3 + lsls r0, r4, 5 + ldr r6, [sp, 0x100] + adds r2, r0, r6 +_0804EFF0: + ldrb r0, [r2, 0x8] + cmp r0, 0 + bne _0804F0A6 + ldrb r0, [r2, 0x11] + cmp r0, 0 + bne _0804F0A6 + ldrb r0, [r2, 0xB] + cmp r0, 0 + beq _0804F0A6 + ldrb r0, [r2, 0xA] + cmp r0, 0 + beq _0804F0A6 + ldrb r0, [r2, 0xC] + cmp r0, 0 + bne _0804F0A6 + ldrb r0, [r2, 0xF] + cmp r0, 0 + bne _0804F0A6 + ldrb r0, [r2, 0x10] + cmp r0, 0 + bne _0804F0A6 + ldrb r0, [r2, 0x9] + cmp r0, 0 + bne _0804F0A6 + mov r6, sp + adds r0, r6, r5 + ldrb r0, [r0] + cmp r0, 0 + beq _0804F0A4 + ldr r1, _0804F09C + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x1 + strb r0, [r2, 0xE] + movs r0, 0 + ldrsh r5, [r2, r0] + movs r1, 0x4 + ldrsh r0, [r2, r1] + cmp r5, r0 + bge _0804F0C0 + mov r2, r10 + add r2, r9 + mov r8, r2 +_0804F046: + mov r1, r10 + add r1, r9 + movs r3, 0x2 + ldrsh r4, [r1, r3] + movs r6, 0x6 + ldrsh r0, [r1, r6] + adds r7, r5, 0x1 + cmp r4, r0 + bge _0804F086 + adds r6, r1, 0 +_0804F05A: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r2, [r0] + movs r1, 0x40 + orrs r1, r2 + strh r1, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrb r1, [r0, 0x9] + ldr r2, [sp, 0x104] + ldr r3, _0804F0A0 + adds r0, r2, r3 + strb r1, [r0] + adds r4, 0x1 + movs r1, 0x6 + ldrsh r0, [r6, r1] + cmp r4, r0 + blt _0804F05A +_0804F086: + adds r5, r7, 0 + mov r2, r8 + movs r3, 0x4 + ldrsh r0, [r2, r3] + cmp r5, r0 + blt _0804F046 + b _0804F0C0 + .align 2, 0 +_0804F094: .4byte gDungeonGlobalData +_0804F098: .4byte gUnknown_202F1AA +_0804F09C: .4byte gUnknown_202F1AB +_0804F0A0: .4byte 0x00003a0c +_0804F0A4: + adds r5, 0x1 +_0804F0A6: + movs r6, 0x20 + add r10, r6 + adds r2, 0x20 + adds r3, 0x1 + cmp r3, r7 + blt _0804EFF0 +_0804F0B2: + movs r0, 0xF0 + lsls r0, 1 + add r9, r0 + adds r4, 0xF + adds r1, 0x1 + cmp r1, r8 + blt _0804EFE2 +_0804F0C0: + add sp, 0x108 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804EEE4 + + thumb_func_start sub_804F0D0 +sub_804F0D0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x104 + str r0, [sp, 0x100] + mov r10, r1 + mov r9, r2 + adds r4, r3, 0 + ldr r0, _0804F244 + ldr r5, [r0] + cmp r4, 0 + bne _0804F0EE + b _0804F266 +_0804F0EE: + movs r0, 0x64 + bl DungeonRandomCapped + cmp r4, r0 + bgt _0804F0FA + b _0804F266 +_0804F0FA: + ldr r1, _0804F248 + adds r0, r5, r1 + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r0, 0 + blt _0804F108 + b _0804F266 +_0804F108: + movs r5, 0 + movs r6, 0 + cmp r6, r10 + bge _0804F184 +_0804F110: + adds r7, r6, 0x1 + mov r4, r9 + cmp r4, 0 + ble _0804F17E + lsls r0, r6, 4 + subs r0, r6 + lsls r0, 5 + ldr r6, [sp, 0x100] + adds r2, r0, r6 +_0804F122: + ldrb r0, [r2, 0x8] + cmp r0, 0 + bne _0804F176 + ldrb r0, [r2, 0x11] + cmp r0, 0 + bne _0804F176 + ldrb r0, [r2, 0xB] + cmp r0, 0 + beq _0804F176 + ldrb r0, [r2, 0xA] + cmp r0, 0 + beq _0804F176 + ldrb r0, [r2, 0xC] + cmp r0, 0 + bne _0804F176 + ldrb r0, [r2, 0xF] + cmp r0, 0 + bne _0804F176 + ldrb r0, [r2, 0xE] + cmp r0, 0 + bne _0804F176 + ldrb r0, [r2, 0x9] + cmp r0, 0 + bne _0804F176 + movs r1, 0x4 + ldrsh r0, [r2, r1] + movs r3, 0 + ldrsh r1, [r2, r3] + subs r0, r1 + movs r3, 0x1 + ands r0, r3 + cmp r0, 0 + beq _0804F176 + movs r6, 0x6 + ldrsh r0, [r2, r6] + movs r6, 0x2 + ldrsh r1, [r2, r6] + subs r0, r1 + ands r0, r3 + cmp r0, 0 + beq _0804F176 + adds r5, 0x1 +_0804F176: + adds r2, 0x20 + subs r4, 0x1 + cmp r4, 0 + bne _0804F122 +_0804F17E: + adds r6, r7, 0 + cmp r6, r10 + blt _0804F110 +_0804F184: + cmp r5, 0 + beq _0804F266 + movs r1, 0 + mov r0, sp + adds r0, 0xFF +_0804F18E: + strb r1, [r0] + subs r0, 0x1 + cmp r0, sp + bge _0804F18E + mov r1, sp + movs r0, 0x1 + strb r0, [r1] + movs r7, 0x3F + mov r8, r7 +_0804F1A0: + adds r0, r5, 0 + bl DungeonRandomCapped + adds r4, r0, 0 + adds r0, r5, 0 + bl DungeonRandomCapped + mov r1, sp + adds r2, r1, r4 + ldrb r3, [r2] + adds r1, r0 + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] + movs r3, 0x1 + negs r3, r3 + add r8, r3 + mov r4, r8 + cmp r4, 0 + bge _0804F1A0 + movs r6, 0 + mov r8, r6 + cmp r6, r10 + bge _0804F266 + ldr r7, [sp, 0x100] + mov r12, r7 +_0804F1D4: + movs r4, 0 + cmp r4, r9 + bge _0804F25A + mov r2, r12 + mov r5, r12 +_0804F1DE: + ldrb r0, [r2, 0x8] + cmp r0, 0 + bne _0804F250 + ldrb r0, [r2, 0x11] + cmp r0, 0 + bne _0804F250 + ldrb r0, [r2, 0xB] + cmp r0, 0 + beq _0804F250 + ldrb r0, [r2, 0xA] + cmp r0, 0 + beq _0804F250 + ldrb r0, [r2, 0xC] + cmp r0, 0 + bne _0804F250 + ldrb r0, [r2, 0xF] + cmp r0, 0 + bne _0804F250 + ldrb r0, [r2, 0xE] + cmp r0, 0 + bne _0804F250 + ldrb r0, [r2, 0x9] + cmp r0, 0 + bne _0804F250 + movs r1, 0x4 + ldrsh r0, [r2, r1] + movs r3, 0 + ldrsh r1, [r2, r3] + subs r0, r1 + movs r3, 0x1 + ands r0, r3 + cmp r0, 0 + beq _0804F250 + movs r7, 0x6 + ldrsh r0, [r2, r7] + movs r7, 0x2 + ldrsh r1, [r2, r7] + subs r0, r1 + ands r0, r3 + cmp r0, 0 + beq _0804F250 + mov r0, sp + add r0, r8 + ldrb r0, [r0] + cmp r0, 0 + beq _0804F24C + adds r0, r5, 0 + movs r1, 0 + bl sub_804F278 + b _0804F266 + .align 2, 0 +_0804F244: .4byte gDungeonGlobalData +_0804F248: .4byte 0x00003a16 +_0804F24C: + movs r0, 0x1 + add r8, r0 +_0804F250: + adds r2, 0x20 + adds r5, 0x20 + adds r4, 0x1 + cmp r4, r9 + blt _0804F1DE +_0804F25A: + movs r1, 0xF0 + lsls r1, 1 + add r12, r1 + adds r6, 0x1 + cmp r6, r10 + blt _0804F1D4 +_0804F266: + add sp, 0x104 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804F0D0 + + thumb_func_start sub_804F278 +sub_804F278: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r4, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + ldr r1, _0804F2B0 + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x1 + strb r0, [r4, 0x10] + movs r1, 0 + ldrsh r0, [r4, r1] + movs r2, 0x2 + ldrsh r1, [r4, r2] + bl GetMapTile_1 + ldrb r0, [r0, 0x9] + mov r9, r0 + movs r5, 0 + ldrsh r0, [r4, r5] + adds r6, r0, 0x1 + b _0804F2F0 + .align 2, 0 +_0804F2B0: .4byte gUnknown_202F1AC +_0804F2B4: + movs r2, 0x2 + ldrsh r1, [r4, r2] + subs r1, 0x1 + adds r0, r6, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _0804F2EE + movs r5, 0x2 + ldrsh r3, [r4, r5] + subs r1, r3, 0x1 + movs r0, 0 + ldrsh r2, [r4, r0] + movs r5, 0x4 + ldrsh r0, [r4, r5] + str r0, [sp] + movs r5, 0x6 + ldrsh r0, [r4, r5] + str r0, [sp, 0x4] + mov r0, r8 + str r0, [sp, 0x8] + mov r5, r9 + str r5, [sp, 0xC] + adds r0, r6, 0 + bl sub_804F494 +_0804F2EE: + adds r6, 0x2 +_0804F2F0: + movs r1, 0x4 + ldrsh r0, [r4, r1] + subs r0, 0x1 + cmp r6, r0 + blt _0804F2B4 + movs r2, 0x2 + ldrsh r0, [r4, r2] + adds r5, r0, 0x1 + movs r6, 0x6 + ldrsh r0, [r4, r6] + b _0804F342 +_0804F306: + movs r1, 0x4 + ldrsh r0, [r4, r1] + adds r1, r5, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _0804F33C + movs r2, 0x4 + ldrsh r0, [r4, r2] + movs r6, 0 + ldrsh r2, [r4, r6] + movs r1, 0x2 + ldrsh r3, [r4, r1] + str r0, [sp] + movs r6, 0x6 + ldrsh r1, [r4, r6] + str r1, [sp, 0x4] + mov r1, r8 + str r1, [sp, 0x8] + mov r6, r9 + str r6, [sp, 0xC] + adds r1, r5, 0 + bl sub_804F494 +_0804F33C: + adds r5, 0x2 + movs r1, 0x6 + ldrsh r0, [r4, r1] +_0804F342: + subs r0, 0x1 + cmp r5, r0 + blt _0804F306 + movs r2, 0 + ldrsh r0, [r4, r2] + adds r6, r0, 0x1 + movs r5, 0x4 + ldrsh r0, [r4, r5] + b _0804F392 +_0804F354: + movs r0, 0x6 + ldrsh r1, [r4, r0] + adds r0, r6, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _0804F38C + movs r2, 0x6 + ldrsh r1, [r4, r2] + movs r5, 0 + ldrsh r2, [r4, r5] + movs r0, 0x2 + ldrsh r3, [r4, r0] + movs r5, 0x4 + ldrsh r0, [r4, r5] + str r0, [sp] + adds r0, r1, 0 + str r0, [sp, 0x4] + mov r0, r8 + str r0, [sp, 0x8] + mov r5, r9 + str r5, [sp, 0xC] + adds r0, r6, 0 + bl sub_804F494 +_0804F38C: + adds r6, 0x2 + movs r1, 0x4 + ldrsh r0, [r4, r1] +_0804F392: + subs r0, 0x1 + cmp r6, r0 + blt _0804F354 + movs r2, 0x2 + ldrsh r0, [r4, r2] + adds r5, r0, 0x1 + movs r6, 0x6 + ldrsh r0, [r4, r6] + b _0804F3E4 +_0804F3A4: + movs r1, 0 + ldrsh r0, [r4, r1] + subs r0, 0x1 + adds r1, r5, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _0804F3DE + movs r6, 0 + ldrsh r2, [r4, r6] + subs r0, r2, 0x1 + movs r1, 0x2 + ldrsh r3, [r4, r1] + movs r6, 0x4 + ldrsh r1, [r4, r6] + str r1, [sp] + movs r6, 0x6 + ldrsh r1, [r4, r6] + str r1, [sp, 0x4] + mov r1, r8 + str r1, [sp, 0x8] + mov r6, r9 + str r6, [sp, 0xC] + adds r1, r5, 0 + bl sub_804F494 +_0804F3DE: + adds r5, 0x2 + movs r1, 0x6 + ldrsh r0, [r4, r1] +_0804F3E4: + subs r0, 0x1 + cmp r5, r0 + blt _0804F3A4 + movs r2, 0 + ldrsh r0, [r4, r2] + adds r6, r0, 0x3 + b _0804F478 +_0804F3F2: + movs r1, 0x2 + ldrsh r0, [r4, r1] + adds r5, r0, 0x3 + movs r2, 0x6 + ldrsh r0, [r4, r2] + subs r0, 0x3 + adds r1, r6, 0x2 + mov r10, r1 + cmp r5, r0 + bge _0804F476 + ldr r2, _0804F434 + adds r7, r2, 0 +_0804F40A: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _0804F46A + mov r0, r8 + cmp r0, 0 + beq _0804F438 + subs r0, r6, 0x1 + adds r1, r5, 0 + bl GetMapTile_2 + ldrh r1, [r0] + ands r1, r7 + movs r2, 0x2 + orrs r1, r2 + b _0804F444 + .align 2, 0 +_0804F434: .4byte 0x0000fffc +_0804F438: + subs r0, r6, 0x1 + adds r1, r5, 0 + bl GetMapTile_2 + ldrh r1, [r0] + ands r1, r7 +_0804F444: + strh r1, [r0] + movs r1, 0 + ldrsh r2, [r4, r1] + movs r0, 0x2 + ldrsh r3, [r4, r0] + movs r1, 0x4 + ldrsh r0, [r4, r1] + str r0, [sp] + movs r1, 0x6 + ldrsh r0, [r4, r1] + str r0, [sp, 0x4] + mov r0, r8 + str r0, [sp, 0x8] + mov r1, r9 + str r1, [sp, 0xC] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_804F494 +_0804F46A: + adds r5, 0x2 + movs r2, 0x6 + ldrsh r0, [r4, r2] + subs r0, 0x3 + cmp r5, r0 + blt _0804F40A +_0804F476: + mov r6, r10 +_0804F478: + movs r5, 0x4 + ldrsh r0, [r4, r5] + subs r0, 0x3 + cmp r6, r0 + blt _0804F3F2 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804F278 + + thumb_func_start sub_804F494 +sub_804F494: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r5, r0, 0 + adds r4, r1, 0 + str r2, [sp] + str r3, [sp, 0x4] + ldr r0, [sp, 0x30] + ldr r1, [sp, 0x34] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 24 + mov r8, r1 + movs r0, 0x3 + mov r10, r0 +_0804F4BA: + movs r0, 0x4 + bl DungeonRandomCapped + adds r6, r0, 0 + movs r7, 0 + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + mov r1, r9 + mov r3, r8 + lsrs r2, r3, 24 + bl sub_804E9A8 +_0804F4D6: + adds r0, r6, 0 + mov r1, r10 + ands r0, r1 + cmp r0, 0x1 + beq _0804F4F6 + cmp r0, 0x1 + bgt _0804F4EA + cmp r0, 0 + beq _0804F4F0 + b _0804F506 +_0804F4EA: + cmp r0, 0x2 + beq _0804F4FE + b _0804F506 +_0804F4F0: + movs r0, 0x2 + movs r1, 0 + b _0804F50A +_0804F4F6: + movs r0, 0 + movs r1, 0x2 + negs r1, r1 + b _0804F50A +_0804F4FE: + movs r0, 0x2 + negs r0, r0 + movs r1, 0 + b _0804F50A +_0804F506: + movs r0, 0 + movs r1, 0x2 +_0804F50A: + adds r0, r5, r0 + ldr r2, [sp] + cmp r2, r0 + bgt _0804F534 + ldr r3, [sp, 0x28] + cmp r3, r0 + ble _0804F534 + adds r1, r4, r1 + ldr r2, [sp, 0x4] + cmp r2, r1 + bgt _0804F534 + ldr r3, [sp, 0x2C] + cmp r3, r1 + ble _0804F534 + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r10 + ands r0, r1 + cmp r0, 0x1 + beq _0804F53E +_0804F534: + adds r6, 0x1 + adds r7, 0x1 + cmp r7, 0x3 + bgt _0804F5B2 + b _0804F4D6 +_0804F53E: + mov r0, r10 + ands r0, r6 + cmp r0, 0x1 + beq _0804F570 + cmp r0, 0x1 + bgt _0804F550 + cmp r0, 0 + beq _0804F55A + b _0804F4BA +_0804F550: + cmp r0, 0x2 + beq _0804F586 + cmp r0, 0x3 + beq _0804F59C + b _0804F4BA +_0804F55A: + adds r0, r5, 0x1 + adds r1, r4, 0 + bl GetMapTile_2 + mov r1, r9 + mov r3, r8 + lsrs r2, r3, 24 + bl sub_804E9A8 + adds r5, 0x2 + b _0804F4BA +_0804F570: + subs r1, r4, 0x1 + adds r0, r5, 0 + bl GetMapTile_2 + mov r1, r9 + mov r3, r8 + lsrs r2, r3, 24 + bl sub_804E9A8 + subs r4, 0x2 + b _0804F4BA +_0804F586: + subs r0, r5, 0x1 + adds r1, r4, 0 + bl GetMapTile_2 + mov r1, r9 + mov r3, r8 + lsrs r2, r3, 24 + bl sub_804E9A8 + subs r5, 0x2 + b _0804F4BA +_0804F59C: + adds r1, r4, 0x1 + adds r0, r5, 0 + bl GetMapTile_2 + mov r1, r9 + mov r3, r8 + lsrs r2, r3, 24 + bl sub_804E9A8 + adds r4, 0x2 + b _0804F4BA +_0804F5B2: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804F494 + + thumb_func_start sub_804F5C4 +sub_804F5C4: + ldrh r3, [r0] + ldr r2, _0804F5D4 + ands r2, r3 + movs r3, 0x2 + orrs r2, r3 + orrs r2, r1 + strh r2, [r0] + bx lr + .align 2, 0 +_0804F5D4: .4byte 0x0000fffc + thumb_func_end sub_804F5C4 + + thumb_func_start sub_804F5D8 +sub_804F5D8: + push {r4-r7,lr} + adds r5, r0, 0 + movs r0, 0 + ldrsh r6, [r5, r0] + b _0804F60C +_0804F5E2: + movs r0, 0x2 + ldrsh r4, [r5, r0] + movs r1, 0x6 + ldrsh r0, [r5, r1] + adds r7, r6, 0x1 + cmp r4, r0 + bge _0804F60A +_0804F5F0: + adds r0, r6, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r2, [r0, 0x4] + movs r1, 0x20 + orrs r1, r2 + strh r1, [r0, 0x4] + adds r4, 0x1 + movs r1, 0x6 + ldrsh r0, [r5, r1] + cmp r4, r0 + blt _0804F5F0 +_0804F60A: + adds r6, r7, 0 +_0804F60C: + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r6, r0 + blt _0804F5E2 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804F5D8 + + thumb_func_start sub_804F61C +sub_804F61C: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r0 + mov r8, r1 + movs r7, 0x1 + negs r7, r7 + b _0804F67A +_0804F62E: + movs r5, 0x1 + negs r5, r5 + b _0804F666 +_0804F634: + cmp r7, 0 + beq _0804F63C + cmp r5, 0 + bne _0804F660 +_0804F63C: + adds r0, r6, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _0804F660 + adds r0, r6, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrb r0, [r0, 0x9] + cmp r0, 0xFF + bne _0804F660 + movs r0, 0x1 + b _0804F686 +_0804F660: + adds r5, 0x1 + cmp r5, 0x1 + bgt _0804F672 +_0804F666: + mov r0, r8 + adds r4, r0, r5 + cmp r4, 0 + blt _0804F660 + cmp r4, 0x1F + ble _0804F634 +_0804F672: + adds r7, 0x1 + cmp r7, 0x1 + bgt _0804F684 + mov r0, r9 +_0804F67A: + adds r6, r0, r7 + cmp r6, 0 + blt _0804F672 + cmp r6, 0x37 + ble _0804F62E +_0804F684: + movs r0, 0 +_0804F686: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_804F61C + + thumb_func_start sub_804F694 +sub_804F694: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r7, r0, 0 + movs r0, 0x6 + bl DungeonRandomCapped + subs r0, 0x1 + cmp r0, 0x4 + bls _0804F6B0 + b _0804FBD6 +_0804F6B0: + lsls r0, 2 + ldr r1, _0804F6BC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804F6BC: .4byte _0804F6C0 + .align 2, 0 +_0804F6C0: + .4byte _0804FB24 + .4byte _0804FA98 + .4byte _0804F9DC + .4byte _0804F826 + .4byte _0804F6D4 +_0804F6D4: + ldr r1, _0804F70C + ldr r0, [r1] + cmp r0, 0 + bne _0804F6DE + b _0804FBD6 +_0804F6DE: + subs r0, 0x1 + str r0, [r1] + adds r0, r7, 0 + bl sub_804F5D8 + movs r0, 0x2 + bl DungeonRandomCapped + cmp r0, 0 + beq _0804F78E + movs r5, 0 + movs r1, 0 + ldrsh r0, [r7, r1] + movs r2, 0x4 + ldrsh r1, [r7, r2] + adds r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + mov r8, r0 + movs r3, 0x2 + ldrsh r4, [r7, r3] + b _0804F712 + .align 2, 0 +_0804F70C: .4byte gUnknown_202F1C8 +_0804F710: + adds r4, 0x1 +_0804F712: + movs r1, 0x6 + ldrsh r0, [r7, r1] + cmp r4, r0 + bge _0804F72A + mov r0, r8 + adds r1, r4, 0 + bl sub_804F61C + lsls r0, 24 + cmp r0, 0 + beq _0804F710 + movs r5, 0x1 +_0804F72A: + cmp r5, 0 + beq _0804F730 + b _0804FBD6 +_0804F730: + movs r2, 0x2 + ldrsh r4, [r7, r2] + movs r3, 0x6 + ldrsh r0, [r7, r3] + cmp r4, r0 + bge _0804F754 +_0804F73C: + mov r0, r8 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0 + bl sub_804F5C4 + adds r4, 0x1 + movs r5, 0x6 + ldrsh r0, [r7, r5] + cmp r4, r0 + blt _0804F73C +_0804F754: + movs r0, 0 + ldrsh r5, [r7, r0] + cmp r5, r8 + blt _0804F75E + b _0804FBD2 +_0804F75E: + movs r1, 0x2 + ldrsh r4, [r7, r1] + movs r2, 0x6 + ldrsh r0, [r7, r2] + adds r6, r5, 0x1 + cmp r4, r0 + bge _0804F786 +_0804F76C: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r2, [r0] + movs r1, 0x80 + orrs r1, r2 + strh r1, [r0] + adds r4, 0x1 + movs r3, 0x6 + ldrsh r0, [r7, r3] + cmp r4, r0 + blt _0804F76C +_0804F786: + adds r5, r6, 0 + cmp r5, r8 + blt _0804F75E + b _0804FBD2 +_0804F78E: + movs r5, 0 + movs r4, 0x2 + ldrsh r0, [r7, r4] + movs r2, 0x6 + ldrsh r1, [r7, r2] + adds r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + mov r8, r0 + movs r3, 0 + ldrsh r4, [r7, r3] + b _0804F7AA +_0804F7A8: + adds r4, 0x1 +_0804F7AA: + movs r1, 0x4 + ldrsh r0, [r7, r1] + cmp r4, r0 + bge _0804F7C2 + adds r0, r4, 0 + mov r1, r8 + bl sub_804F61C + lsls r0, 24 + cmp r0, 0 + beq _0804F7A8 + movs r5, 0x1 +_0804F7C2: + cmp r5, 0 + beq _0804F7C8 + b _0804FBD6 +_0804F7C8: + movs r2, 0 + ldrsh r4, [r7, r2] + movs r3, 0x4 + ldrsh r0, [r7, r3] + cmp r4, r0 + bge _0804F7EC +_0804F7D4: + adds r0, r4, 0 + mov r1, r8 + bl GetMapTile_2 + movs r1, 0 + bl sub_804F5C4 + adds r4, 0x1 + movs r5, 0x4 + ldrsh r0, [r7, r5] + cmp r4, r0 + blt _0804F7D4 +_0804F7EC: + movs r0, 0x2 + ldrsh r5, [r7, r0] + cmp r5, r8 + blt _0804F7F6 + b _0804FBD2 +_0804F7F6: + movs r1, 0 + ldrsh r4, [r7, r1] + movs r2, 0x4 + ldrsh r0, [r7, r2] + adds r6, r5, 0x1 + cmp r4, r0 + bge _0804F81E +_0804F804: + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_2 + ldrh r2, [r0] + movs r1, 0x80 + orrs r1, r2 + strh r1, [r0] + adds r4, 0x1 + movs r3, 0x4 + ldrsh r0, [r7, r3] + cmp r4, r0 + blt _0804F804 +_0804F81E: + adds r5, r6, 0 + cmp r5, r8 + blt _0804F7F6 + b _0804FBD2 +_0804F826: + movs r4, 0x4 + ldrsh r3, [r7, r4] + movs r5, 0 + ldrsh r1, [r7, r5] + subs r0, r3, r1 + cmp r0, 0x5 + bgt _0804F836 + b _0804FBD6 +_0804F836: + movs r0, 0x6 + ldrsh r4, [r7, r0] + movs r5, 0x2 + ldrsh r2, [r7, r5] + subs r0, r4, r2 + cmp r0, 0x5 + bgt _0804F846 + b _0804FBD6 +_0804F846: + adds r0, r1, r3 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + str r0, [sp] + adds r0, r2, r4 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + str r0, [sp, 0x4] + ldr r1, _0804F9D8 + ldr r0, [r1] + cmp r0, 0 + bne _0804F864 + b _0804FBD6 +_0804F864: + subs r0, 0x1 + str r0, [r1] + adds r0, r7, 0 + bl sub_804F5D8 + ldr r5, [sp] + subs r5, 0x2 + ldr r0, [sp, 0x4] + subs r0, 0x2 + mov r10, r0 + adds r0, r5, 0 + mov r1, r10 + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + ldr r1, [sp] + subs r1, 0x1 + mov r9, r1 + mov r0, r9 + mov r1, r10 + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + ldr r0, [sp] + mov r1, r10 + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + ldr r2, [sp] + adds r2, 0x1 + mov r8, r2 + mov r0, r8 + mov r1, r10 + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + ldr r6, [sp, 0x4] + subs r6, 0x1 + adds r0, r5, 0 + adds r1, r6, 0 + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + adds r0, r5, 0 + ldr r1, [sp, 0x4] + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + ldr r4, [sp, 0x4] + adds r4, 0x1 + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + mov r0, r9 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + ldr r0, [sp] + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + mov r0, r8 + mov r1, r10 + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + mov r0, r8 + adds r1, r6, 0 + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + mov r0, r8 + ldr r1, [sp, 0x4] + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + mov r0, r8 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0x4 + bl sub_804F5C4 + mov r0, r9 + adds r1, r6, 0 + bl GetMapTile_2 + ldrh r2, [r0, 0x4] + movs r1, 0x4 + orrs r1, r2 + strh r1, [r0, 0x4] + mov r0, r9 + adds r1, r6, 0 + bl GetMapTile_2 + ldrh r1, [r0, 0x4] + movs r2, 0x40 + orrs r1, r2 + strh r1, [r0, 0x4] + ldr r0, [sp] + adds r1, r6, 0 + bl GetMapTile_2 + ldrh r1, [r0, 0x4] + movs r4, 0x2 + orrs r1, r4 + strh r1, [r0, 0x4] + mov r0, r9 + ldr r1, [sp, 0x4] + bl GetMapTile_2 + ldrh r1, [r0, 0x4] + orrs r1, r4 + strh r1, [r0, 0x4] + ldr r0, [sp] + ldr r1, [sp, 0x4] + bl GetMapTile_2 + ldrh r1, [r0, 0x4] + orrs r1, r4 + strh r1, [r0, 0x4] + mov r0, r9 + adds r1, r6, 0 + bl GetMapTile_2 + ldrh r1, [r0, 0x4] + movs r4, 0x10 + orrs r1, r4 + strh r1, [r0, 0x4] + ldr r0, [sp] + adds r1, r6, 0 + bl GetMapTile_2 + ldrh r1, [r0, 0x4] + orrs r1, r4 + strh r1, [r0, 0x4] + mov r0, r9 + ldr r1, [sp, 0x4] + bl GetMapTile_2 + ldrh r1, [r0, 0x4] + orrs r1, r4 + strh r1, [r0, 0x4] + ldr r0, [sp] + ldr r1, [sp, 0x4] + bl GetMapTile_2 + ldrh r1, [r0, 0x4] + orrs r4, r1 + strh r4, [r0, 0x4] + b _0804FBD2 + .align 2, 0 +_0804F9D8: .4byte gUnknown_202F1C8 +_0804F9DC: + movs r4, 0x4 + ldrsh r3, [r7, r4] + movs r5, 0 + ldrsh r2, [r7, r5] + subs r0, r3, r2 + cmp r0, 0x4 + bgt _0804F9EC + b _0804FBD6 +_0804F9EC: + movs r1, 0x6 + ldrsh r0, [r7, r1] + movs r4, 0x2 + ldrsh r1, [r7, r4] + subs r0, r1 + cmp r0, 0x4 + bgt _0804F9FC + b _0804FBD6 +_0804F9FC: + adds r0, r2, 0x2 + subs r1, r3, 0x3 + bl sub_808411C + adds r4, r0, 0 + movs r5, 0x2 + ldrsh r0, [r7, r5] + adds r0, 0x2 + movs r2, 0x6 + ldrsh r1, [r7, r2] + subs r1, 0x3 + bl sub_808411C + mov r10, r0 + movs r3, 0 + ldrsh r0, [r7, r3] + adds r0, 0x2 + movs r5, 0x4 + ldrsh r1, [r7, r5] + subs r1, 0x3 + bl sub_808411C + mov r9, r0 + movs r1, 0x2 + ldrsh r0, [r7, r1] + adds r0, 0x2 + movs r2, 0x6 + ldrsh r1, [r7, r2] + subs r1, 0x3 + bl sub_808411C + adds r6, r0, 0 + ldr r1, _0804FA94 + ldr r0, [r1] + cmp r0, 0 + bne _0804FA46 + b _0804FBD6 +_0804FA46: + subs r0, 0x1 + str r0, [r1] + adds r0, r7, 0 + bl sub_804F5D8 + cmp r4, r9 + ble _0804FA5A + adds r0, r4, 0 + mov r4, r9 + mov r9, r0 +_0804FA5A: + cmp r10, r6 + ble _0804FA64 + mov r0, r10 + mov r10, r6 + adds r6, r0, 0 +_0804FA64: + adds r5, r4, 0 + cmp r5, r9 + ble _0804FA6C + b _0804FBD2 +_0804FA6C: + mov r4, r10 + adds r3, r5, 0x1 + mov r8, r3 + cmp r4, r6 + bgt _0804FA8A +_0804FA76: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0 + bl sub_804F5C4 + adds r4, 0x1 + cmp r4, r6 + ble _0804FA76 +_0804FA8A: + mov r5, r8 + cmp r5, r9 + ble _0804FA6C + b _0804FBD2 + .align 2, 0 +_0804FA94: .4byte gUnknown_202F1C8 +_0804FA98: + movs r4, 0x4 + ldrsh r0, [r7, r4] + movs r5, 0 + ldrsh r1, [r7, r5] + subs r0, r1 + movs r2, 0x1 + ands r0, r2 + cmp r0, 0 + bne _0804FAAC + b _0804FBD6 +_0804FAAC: + movs r1, 0x6 + ldrsh r0, [r7, r1] + movs r3, 0x2 + ldrsh r1, [r7, r3] + subs r0, r1 + ands r0, r2 + cmp r0, 0 + bne _0804FABE + b _0804FBD6 +_0804FABE: + ldr r1, _0804FB20 + ldr r0, [r1] + cmp r0, 0 + bne _0804FAC8 + b _0804FBD6 +_0804FAC8: + subs r0, 0x1 + str r0, [r1] + adds r0, r7, 0 + bl sub_804F5D8 + movs r6, 0x3F +_0804FAD4: + movs r4, 0x4 + ldrsh r0, [r7, r4] + movs r5, 0 + ldrsh r1, [r7, r5] + subs r0, r1 + bl DungeonRandomCapped + adds r4, r0, 0 + movs r1, 0x6 + ldrsh r0, [r7, r1] + movs r2, 0x2 + ldrsh r1, [r7, r2] + subs r0, r1 + bl DungeonRandomCapped + adds r2, r0, 0 + adds r0, r4, r2 + movs r5, 0x1 + ands r0, r5 + cmp r0, 0 + beq _0804FB14 + movs r3, 0 + ldrsh r0, [r7, r3] + adds r0, r4 + movs r4, 0x2 + ldrsh r1, [r7, r4] + adds r1, r2 + bl GetMapTile_2 + movs r1, 0 + bl sub_804F5C4 +_0804FB14: + subs r6, 0x1 + cmp r6, 0 + bge _0804FAD4 + strb r5, [r7, 0x9] + b _0804FBD6 + .align 2, 0 +_0804FB20: .4byte gUnknown_202F1C8 +_0804FB24: + ldr r1, _0804FBC0 + ldr r0, [r1] + cmp r0, 0 + beq _0804FBD6 + subs r0, 0x1 + str r0, [r1] + movs r5, 0x4 + ldrsh r3, [r7, r5] + movs r0, 0 + ldrsh r2, [r7, r0] + subs r6, r3, r2 + movs r4, 0x1 + adds r0, r6, 0 + ands r0, r4 + cmp r0, 0 + beq _0804FB54 + movs r1, 0x6 + ldrsh r0, [r7, r1] + movs r5, 0x2 + ldrsh r1, [r7, r5] + subs r0, r1 + ands r0, r4 + cmp r0, 0 + bne _0804FBC4 +_0804FB54: + adds r0, r2, r3 + lsrs r1, r0, 31 + adds r0, r1 + asrs r5, r0, 1 + movs r0, 0x2 + ldrsh r3, [r7, r0] + movs r1, 0x6 + ldrsh r2, [r7, r1] + adds r0, r3, r2 + lsrs r1, r0, 31 + adds r0, r1 + asrs r4, r0, 1 + cmp r6, 0x4 + ble _0804FBAE + subs r0, r2, r3 + cmp r0, 0x4 + ble _0804FBAE + adds r0, r5, 0x1 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0 + bl sub_804F5C4 + adds r1, r4, 0x1 + adds r0, r5, 0 + bl GetMapTile_2 + movs r1, 0 + bl sub_804F5C4 + subs r0, r5, 0x1 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0 + bl sub_804F5C4 + subs r1, r4, 0x1 + adds r0, r5, 0 + bl GetMapTile_2 + movs r1, 0 + bl sub_804F5C4 +_0804FBAE: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0 + bl sub_804F5C4 + b _0804FBD2 + .align 2, 0 +_0804FBC0: .4byte gUnknown_202F1C8 +_0804FBC4: + adds r0, r7, 0 + bl sub_804F5D8 + adds r0, r7, 0 + movs r1, 0x1 + bl sub_804F278 +_0804FBD2: + movs r0, 0x1 + strb r0, [r7, 0x9] +_0804FBD6: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804F694 + + thumb_func_start sub_804FBE8 +sub_804FBE8: + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r6, 0 + ldr r0, _0804FC6C + adds r5, r0, 0 +_0804FBF4: + movs r4, 0 + adds r3, r6, 0x1 + mov r8, r3 +_0804FBFA: + adds r0, r6, 0 + adds r1, r4, 0 + bl GetMapTile_2 + adds r2, r0, 0 + ldrh r1, [r2] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _0804FC2A + movs r7, 0x88 + lsls r7, 1 + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _0804FC24 + ldrh r0, [r2, 0x4] + ldr r3, _0804FC70 + adds r1, r3, 0 + ands r0, r1 + strh r0, [r2, 0x4] +_0804FC24: + ldrh r0, [r2, 0x4] + ands r0, r5 + strh r0, [r2, 0x4] +_0804FC2A: + ldrh r3, [r2, 0x4] + movs r0, 0x1 + ands r0, r3 + cmp r0, 0 + beq _0804FC46 + ldrh r0, [r2] + movs r7, 0x80 + lsls r7, 2 + adds r1, r7, 0 + orrs r1, r0 + strh r1, [r2] + adds r0, r3, 0 + ands r0, r5 + strh r0, [r2, 0x4] +_0804FC46: + ldrh r1, [r2, 0x4] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0804FC56 + adds r0, r1, 0 + ands r0, r5 + strh r0, [r2, 0x4] +_0804FC56: + adds r4, 0x1 + cmp r4, 0x1F + ble _0804FBFA + mov r6, r8 + cmp r6, 0x37 + ble _0804FBF4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804FC6C: .4byte 0x0000fffb +_0804FC70: .4byte 0x0000fffd + thumb_func_end sub_804FBE8 + + thumb_func_start sub_804FC74 +sub_804FC74: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r5, 0 + movs r0, 0x3 + mov r8, r0 + ldr r0, _0804FCC8 + adds r7, r0, 0 +_0804FC86: + movs r4, 0 + adds r6, r5, 0x1 +_0804FC8A: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x2 + bne _0804FCAE + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r1, [r0] + ands r1, r7 + mov r2, r8 + orrs r1, r2 + strh r1, [r0] +_0804FCAE: + adds r4, 0x1 + cmp r4, 0x1F + ble _0804FC8A + adds r5, r6, 0 + cmp r5, 0x37 + ble _0804FC86 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804FCC8: .4byte 0x0000fffc + thumb_func_end sub_804FC74 + + thumb_func_start sub_804FCCC +sub_804FCCC: + push {r4-r7,lr} + movs r5, 0 + ldr r0, _0804FD0C + adds r7, r0, 0 +_0804FCD4: + movs r4, 0 + adds r6, r5, 0x1 +_0804FCD8: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0804FCF8 + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r1, [r0] + ands r1, r7 + strh r1, [r0] +_0804FCF8: + adds r4, 0x1 + cmp r4, 0x1F + ble _0804FCD8 + adds r5, r6, 0 + cmp r5, 0x37 + ble _0804FCD4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804FD0C: .4byte 0x0000fffc + thumb_func_end sub_804FCCC + + thumb_func_start sub_804FD10 +sub_804FD10: + movs r2, 0 + movs r3, 0 + strh r3, [r0] + strh r3, [r0, 0x4] + movs r1, 0xFF + strb r1, [r0, 0x9] + strb r2, [r0, 0x8] + strb r2, [r0, 0xA] + strb r2, [r0, 0xB] + strb r2, [r0, 0xC] + strb r2, [r0, 0xD] + strb r2, [r0, 0xE] + str r3, [r0, 0x10] + str r3, [r0, 0x14] + bx lr + thumb_func_end sub_804FD10 + + thumb_func_start sub_804FD30 +sub_804FD30: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r6, 0 +_0804FD3A: + movs r7, 0 + adds r4, r6, 0x1 +_0804FD3E: + adds r0, r6, 0 + adds r1, r7, 0 + bl GetMapTile_2 + bl sub_804FD10 + subs r3, r7, 0x1 + cmp r6, 0 + blt _0804FD5C + cmp r3, 0 + blt _0804FD5C + cmp r6, 0x37 + bgt _0804FD5C + cmp r3, 0x1F + ble _0804FD60 +_0804FD5C: + movs r0, 0x1 + b _0804FD62 +_0804FD60: + movs r0, 0 +_0804FD62: + cmp r0, 0 + bne _0804FE24 + cmp r4, 0 + blt _0804FD76 + cmp r3, 0 + blt _0804FD76 + cmp r4, 0x37 + bgt _0804FD76 + cmp r3, 0x1F + ble _0804FD7A +_0804FD76: + movs r0, 0x1 + b _0804FD7C +_0804FD7A: + movs r0, 0 +_0804FD7C: + cmp r0, 0 + bne _0804FE24 + cmp r4, 0 + blt _0804FD90 + cmp r3, 0 + blt _0804FD90 + cmp r4, 0x37 + bgt _0804FD90 + cmp r3, 0x1F + ble _0804FD94 +_0804FD90: + movs r0, 0x1 + b _0804FD96 +_0804FD94: + movs r0, 0 +_0804FD96: + cmp r0, 0 + bne _0804FE24 + adds r2, r7, 0x1 + cmp r4, 0 + blt _0804FDAC + cmp r2, 0 + blt _0804FDAC + cmp r4, 0x37 + bgt _0804FDAC + cmp r2, 0x1F + ble _0804FDB0 +_0804FDAC: + movs r0, 0x1 + b _0804FDB2 +_0804FDB0: + movs r0, 0 +_0804FDB2: + cmp r0, 0 + bne _0804FE24 + cmp r6, 0 + blt _0804FDC6 + cmp r2, 0 + blt _0804FDC6 + cmp r6, 0x37 + bgt _0804FDC6 + cmp r2, 0x1F + ble _0804FDCA +_0804FDC6: + movs r0, 0x1 + b _0804FDCC +_0804FDCA: + movs r0, 0 +_0804FDCC: + cmp r0, 0 + bne _0804FE24 + adds r0, r2, 0 + subs r1, r6, 0x1 + cmp r1, 0 + blt _0804FDE4 + cmp r0, 0 + blt _0804FDE4 + cmp r1, 0x37 + bgt _0804FDE4 + cmp r2, 0x1F + ble _0804FDE8 +_0804FDE4: + movs r0, 0x1 + b _0804FDEA +_0804FDE8: + movs r0, 0 +_0804FDEA: + cmp r0, 0 + bne _0804FE24 + cmp r1, 0 + blt _0804FDFE + cmp r7, 0 + blt _0804FDFE + cmp r1, 0x37 + bgt _0804FDFE + cmp r7, 0x1F + ble _0804FE02 +_0804FDFE: + movs r0, 0x1 + b _0804FE04 +_0804FE02: + movs r0, 0 +_0804FE04: + cmp r0, 0 + bne _0804FE24 + adds r0, r3, 0 + cmp r1, 0 + blt _0804FE1A + cmp r0, 0 + blt _0804FE1A + cmp r1, 0x37 + bgt _0804FE1A + cmp r3, 0x1F + ble _0804FE1E +_0804FE1A: + movs r0, 0x1 + b _0804FE20 +_0804FE1E: + movs r0, 0 +_0804FE20: + cmp r0, 0 + beq _0804FE34 +_0804FE24: + adds r0, r6, 0 + adds r1, r7, 0 + bl GetMapTile_2 + ldrh r2, [r0] + movs r1, 0x10 + orrs r1, r2 + strh r1, [r0] +_0804FE34: + adds r7, 0x1 + cmp r7, 0x1F + ble _0804FD3E + adds r6, 0x1 + cmp r6, 0x37 + bgt _0804FE42 + b _0804FD3A +_0804FE42: + ldr r3, _0804FEB4 + ldr r1, [r3] + ldr r0, _0804FEB8 + adds r2, r1, r0 + ldr r0, _0804FEBC + strh r0, [r2] + ldr r2, _0804FEC0 + adds r1, r2 + movs r0, 0x1 + negs r0, r0 + strh r0, [r1] + movs r6, 0 + mov r8, r3 + ldr r1, _0804FEC4 +_0804FE5E: + adds r5, r1, 0 + movs r4, 0 + movs r7, 0x7 +_0804FE64: + mov r2, r8 + ldr r0, [r2] + adds r0, r5 + adds r0, r4 + str r1, [sp] + bl sub_804FD10 + adds r4, 0x18 + subs r7, 0x1 + ldr r1, [sp] + cmp r7, 0 + bge _0804FE64 + adds r1, 0xC0 + adds r6, 0x1 + cmp r6, 0x7 + ble _0804FE5E + ldr r0, _0804FEB4 + ldr r1, [r0] + ldr r2, _0804FEC8 + adds r1, r2 + movs r2, 0 + strh r2, [r1] + movs r6, 0 + adds r4, r0, 0 + ldr r3, _0804FECC +_0804FE96: + ldr r0, [r4] + lsls r1, r6, 2 + adds r0, r3 + adds r0, r1 + ldr r0, [r0] + str r2, [r0] + adds r6, 0x1 + cmp r6, 0x3F + ble _0804FE96 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804FEB4: .4byte gDungeonGlobalData +_0804FEB8: .4byte 0x0000e21c +_0804FEBC: .4byte 0x0000ffff +_0804FEC0: .4byte 0x0000e21e +_0804FEC4: .4byte 0x0000e27c +_0804FEC8: .4byte 0x00003904 +_0804FECC: .4byte 0x0001371c + thumb_func_end sub_804FD30 + + thumb_func_start sub_804FED0 +sub_804FED0: + push {r4-r7,lr} + adds r7, r0, 0 + adds r5, r1, 0 + movs r6, 0 + b _0804FEFA +_0804FEDA: + adds r0, r5, 0 + bl DungeonRandomCapped + adds r4, r0, 0 + adds r0, r5, 0 + bl DungeonRandomCapped + lsls r4, 2 + adds r4, r7 + ldr r2, [r4] + lsls r0, 2 + adds r0, r7 + ldr r1, [r0] + str r1, [r4] + str r2, [r0] + adds r6, 0x1 +_0804FEFA: + lsls r0, r5, 1 + cmp r6, r0 + blt _0804FEDA + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804FED0 + + thumb_func_start sub_804FF08 +sub_804FF08: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _08050234 + add sp, r4 + mov r10, r0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0xE0 + lsls r0, 5 + add r0, sp + str r1, [r0] + ldr r0, _08050238 + ldr r0, [r0] + mov r9, r0 + ldr r0, _0805023C + add r0, r9 + movs r1, 0 + ldrsh r0, [r0, r1] + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _0804FF46 + ldr r0, _08050240 + add r0, r9 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, r1 + bne _08050038 +_0804FF46: + movs r0, 0 + mov r8, r0 + movs r6, 0 +_0804FF4C: + movs r5, 0 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_0804FF56: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetMapTile_1 + adds r1, r0, 0 + ldrh r2, [r1] + movs r0, 0x3 + ands r0, r2 + cmp r0, 0x1 + bne _0804FFAA + ldrb r0, [r1, 0x9] + cmp r0, 0xFF + beq _0804FFAA + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + bne _0804FFAA + ldrh r1, [r1, 0x4] + movs r3, 0x8 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0804FFAA + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _0804FFAA + adds r0, r3, 0 + ands r0, r2 + cmp r0, 0 + bne _0804FFAA + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + bne _0804FFAA + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r2, 0x1 + add r8, r2 +_0804FFAA: + adds r5, 0x1 + cmp r5, 0x1F + ble _0804FF56 + adds r6, 0x1 + cmp r6, 0x37 + ble _0804FF4C + mov r0, r8 + cmp r0, 0 + beq _08050038 + bl DungeonRandomCapped + lsls r0, 2 + mov r1, sp + adds r4, r1, r0 + ldrb r0, [r4] + ldrb r1, [r4, 0x1] + bl GetMapTile_2 + adds r5, r0, 0 + ldrh r1, [r5, 0x4] + movs r0, 0x1 + orrs r0, r1 + ldr r1, _08050244 + ands r0, r1 + strh r0, [r5, 0x4] + ldr r1, _08050248 + ldrb r0, [r5, 0x9] + strb r0, [r1] + ldrb r1, [r4] + ldr r0, _0805023C + add r0, r9 + strh r1, [r0] + ldrb r1, [r4, 0x1] + ldr r0, _08050240 + add r0, r9 + strh r1, [r0] + bl sub_8043D10 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08050038 + ldrb r4, [r5, 0x9] + movs r6, 0 +_08050002: + movs r5, 0 +_08050004: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetMapTile_2 + adds r1, r0, 0 + ldrh r2, [r1] + movs r0, 0x3 + ands r0, r2 + cmp r0, 0x1 + bne _0805002C + ldrb r0, [r1, 0x9] + cmp r0, r4 + bne _0805002C + movs r0, 0x40 + orrs r0, r2 + strh r0, [r1] + ldrb r1, [r1, 0x9] + ldr r0, _0805024C + add r0, r9 + strb r1, [r0] +_0805002C: + adds r5, 0x1 + cmp r5, 0x1F + ble _08050004 + adds r6, 0x1 + cmp r6, 0x37 + ble _08050002 +_08050038: + movs r2, 0 + mov r8, r2 + movs r6, 0 +_0805003E: + movs r5, 0 + adds r7, r6, 0x1 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_0805004A: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetMapTile_1 + adds r1, r0, 0 + ldrh r2, [r1] + movs r0, 0x3 + ands r0, r2 + cmp r0, 0x1 + bne _08050092 + ldrb r0, [r1, 0x9] + cmp r0, 0xFF + beq _08050092 + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + bne _08050092 + movs r0, 0x40 + ands r0, r2 + cmp r0, 0 + bne _08050092 + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + bne _08050092 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + bne _08050092 + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r2, 0x1 + add r8, r2 +_08050092: + adds r5, 0x1 + cmp r5, 0x1F + ble _0805004A + adds r6, r7, 0 + cmp r6, 0x37 + ble _0805003E + mov r0, r8 + cmp r0, 0 + beq _080500FA + mov r1, r10 + ldrb r4, [r1, 0xF] + cmp r4, 0 + beq _080500FA + subs r0, r4, 0x2 + adds r1, r4, 0x2 + bl sub_808411C + adds r4, r0, 0 + cmp r4, 0 + bgt _080500BC + movs r4, 0x1 +_080500BC: + mov r0, sp + mov r1, r8 + bl sub_804FED0 + mov r0, r8 + bl DungeonRandomCapped + adds r5, r0, 0 + cmp r4, 0 + ble _080500FA + adds r6, r4, 0 + lsls r0, r5, 2 + mov r2, sp + adds r4, r0, r2 +_080500D8: + ldrb r0, [r4] + ldrb r1, [r4, 0x1] + bl GetMapTile_2 + ldrh r2, [r0, 0x4] + movs r1, 0x2 + orrs r1, r2 + strh r1, [r0, 0x4] + adds r4, 0x4 + adds r5, 0x1 + cmp r5, r8 + bne _080500F4 + mov r4, sp + movs r5, 0 +_080500F4: + subs r6, 0x1 + cmp r6, 0 + bne _080500D8 +_080500FA: + movs r0, 0 + mov r8, r0 + movs r6, 0 +_08050100: + movs r5, 0 + adds r7, r6, 0x1 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_0805010C: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _08050128 + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r0, 0x1 + add r8, r0 +_08050128: + adds r5, 0x1 + cmp r5, 0x1F + ble _0805010C + adds r6, r7, 0 + cmp r6, 0x37 + ble _08050100 + mov r1, r8 + cmp r1, 0 + beq _0805018E + mov r2, r10 + ldrb r4, [r2, 0x14] + cmp r4, 0 + beq _0805018E + subs r0, r4, 0x2 + adds r1, r4, 0x2 + bl sub_808411C + adds r4, r0, 0 + cmp r4, 0 + ble _0805018E + mov r0, sp + mov r1, r8 + bl sub_804FED0 + mov r0, r8 + bl DungeonRandomCapped + adds r5, r0, 0 + cmp r4, 0 + ble _0805018E + adds r6, r4, 0 + lsls r0, r5, 2 + mov r1, sp + adds r4, r0, r1 +_0805016C: + ldrb r0, [r4] + ldrb r1, [r4, 0x1] + bl GetMapTile_2 + ldrh r2, [r0, 0x4] + movs r1, 0x2 + orrs r1, r2 + strh r1, [r0, 0x4] + adds r4, 0x4 + adds r5, 0x1 + cmp r5, r8 + bne _08050188 + mov r4, sp + movs r5, 0 +_08050188: + subs r6, 0x1 + cmp r6, 0 + bne _0805016C +_0805018E: + movs r2, 0 + mov r8, r2 + movs r0, 0xE0 + lsls r0, 5 + add r0, sp + ldr r0, [r0] + cmp r0, 0 + bne _080501E4 + movs r6, 0 +_080501A0: + movs r5, 0 + adds r7, r6, 0x1 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_080501AC: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _080501D8 + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080501D8 + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _080501D8 + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r0, 0x1 + add r8, r0 +_080501D8: + adds r5, 0x1 + cmp r5, 0x1F + ble _080501AC + adds r6, r7, 0 + cmp r6, 0x37 + ble _080501A0 +_080501E4: + mov r1, r8 + cmp r1, 0 + beq _08050294 + lsrs r4, r1, 31 + add r4, r8 + asrs r4, 1 + lsls r0, r1, 3 + movs r1, 0xA + bl __divsi3 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_808411C + adds r4, r0, 0 + cmp r4, 0x5 + bgt _08050208 + movs r4, 0x6 +_08050208: + ldr r0, _08050250 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r4, r0 + blt _08050214 + adds r4, r0, 0 +_08050214: + mov r0, sp + mov r1, r8 + bl sub_804FED0 + mov r0, r8 + bl DungeonRandomCapped + adds r5, r0, 0 + cmp r4, 0 + ble _08050294 + adds r6, r4, 0 + lsls r0, r5, 2 + mov r1, sp + adds r7, r0, r1 +_08050230: + ldrb r0, [r7] + b _08050254 + .align 2, 0 +_08050234: .4byte 0xffffe3fc +_08050238: .4byte gDungeonGlobalData +_0805023C: .4byte 0x0000e21c +_08050240: .4byte 0x0000e21e +_08050244: .4byte 0x0000fffd +_08050248: .4byte gUnknown_202F1B4 +_0805024C: .4byte 0x00003a0c +_08050250: .4byte gUnknown_80F4DA0 +_08050254: + ldrb r1, [r7, 0x1] + bl GetMapTile_2 + adds r4, r0, 0 + movs r0, 0x2 + bl DungeonRandomCapped + cmp r0, 0 + beq _0805026C + ldrh r0, [r4, 0x4] + movs r1, 0x2 + b _0805027E +_0805026C: + ldr r0, _08050424 + ldr r0, [r0] + ldr r2, _08050428 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _08050282 + ldrh r0, [r4, 0x4] + movs r1, 0x4 +_0805027E: + orrs r0, r1 + strh r0, [r4, 0x4] +_08050282: + adds r7, 0x4 + adds r5, 0x1 + cmp r5, r8 + bne _0805028E + mov r7, sp + movs r5, 0 +_0805028E: + subs r6, 0x1 + cmp r6, 0 + bne _08050230 +_08050294: + movs r0, 0 + mov r8, r0 + movs r6, 0 +_0805029A: + movs r5, 0 + adds r7, r6, 0x1 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_080502A6: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetMapTile_1 + adds r1, r0, 0 + ldrh r2, [r1] + movs r0, 0x3 + ands r0, r2 + cmp r0, 0x1 + bne _080502F0 + ldrb r0, [r1, 0x9] + cmp r0, 0xFF + beq _080502F0 + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + bne _080502F0 + ldrh r1, [r1, 0x4] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080502F0 + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + bne _080502F0 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + bne _080502F0 + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r2, 0x1 + add r8, r2 +_080502F0: + adds r5, 0x1 + cmp r5, 0x1F + ble _080502A6 + adds r6, r7, 0 + cmp r6, 0x37 + ble _0805029A + mov r0, r8 + cmp r0, 0 + beq _08050356 + mov r2, r10 + ldrb r1, [r2, 0x10] + lsrs r0, r1, 1 + bl sub_808411C + adds r4, r0, 0 + cmp r4, 0 + ble _08050356 + cmp r4, 0x37 + ble _08050318 + movs r4, 0x38 +_08050318: + mov r0, sp + mov r1, r8 + bl sub_804FED0 + mov r0, r8 + bl DungeonRandomCapped + adds r5, r0, 0 + cmp r4, 0 + ble _08050356 + adds r6, r4, 0 + lsls r0, r5, 2 + mov r1, sp + adds r4, r0, r1 +_08050334: + ldrb r0, [r4] + ldrb r1, [r4, 0x1] + bl GetMapTile_2 + ldrh r2, [r0, 0x4] + movs r1, 0x4 + orrs r1, r2 + strh r1, [r0, 0x4] + adds r4, 0x4 + adds r5, 0x1 + cmp r5, r8 + bne _08050350 + mov r4, sp + movs r5, 0 +_08050350: + subs r6, 0x1 + cmp r6, 0 + bne _08050334 +_08050356: + ldr r0, _0805042C + add r0, r9 + movs r2, 0 + ldrsh r0, [r0, r2] + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _08050372 + ldr r0, _08050430 + add r0, r9 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, r1 + bne _08050410 +_08050372: + movs r0, 0 + mov r8, r0 + movs r6, 0 +_08050378: + movs r5, 0 + adds r7, r6, 0x1 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_08050384: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetMapTile_1 + adds r2, r0, 0 + ldrh r1, [r2] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _080503E2 + ldrb r0, [r2, 0x9] + cmp r0, 0xFF + beq _080503E2 + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _080503E2 + movs r3, 0x8 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _080503E2 + movs r0, 0x80 + lsls r0, 1 + mov r10, r0 + mov r0, r10 + ands r0, r1 + cmp r0, 0 + bne _080503E2 + ldrh r1, [r2, 0x4] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080503E2 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _080503E2 + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080503E2 + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r1, 0x1 + add r8, r1 +_080503E2: + adds r5, 0x1 + cmp r5, 0x1F + ble _08050384 + adds r6, r7, 0 + cmp r6, 0x37 + ble _08050378 + mov r2, r8 + cmp r2, 0 + beq _08050410 + mov r0, r8 + bl DungeonRandomCapped + lsls r0, 2 + mov r1, sp + adds r2, r1, r0 + ldrb r1, [r2] + ldr r0, _0805042C + add r0, r9 + strh r1, [r0] + ldrb r1, [r2, 0x1] + ldr r0, _08050430 + add r0, r9 + strh r1, [r0] +_08050410: + ldr r3, _08050434 + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08050424: .4byte gDungeonGlobalData +_08050428: .4byte 0x0000065c +_0805042C: .4byte 0x0000e218 +_08050430: .4byte 0x0000e21a +_08050434: .4byte 0x00001c04 + thumb_func_end sub_804FF08 + + thumb_func_start sub_8050438 +sub_8050438: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _08050470 + add sp, r4 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0xE0 + lsls r2, 5 + add r2, sp + str r1, [r2] + ldr r1, _08050474 + ldr r1, [r1] + mov r10, r1 + ldrb r1, [r0, 0x6] + cmp r1, 0 + ble _08050478 + lsrs r0, r1, 1 + bl sub_808411C + adds r7, r0, 0 + cmp r7, 0 + bgt _0805047A + movs r7, 0x1 + b _0805047A + .align 2, 0 +_08050470: .4byte 0xffffe3f8 +_08050474: .4byte gDungeonGlobalData +_08050478: + adds r7, r1, 0 +_0805047A: + movs r0, 0 + mov r8, r0 + movs r6, 0 +_08050480: + movs r5, 0 + adds r1, r6, 0x1 + mov r9, r1 + mov r2, r8 + lsls r0, r2, 2 + mov r1, sp + adds r4, r0, r1 +_0805048E: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetMapTile_1 + adds r1, r0, 0 + ldrh r3, [r1] + movs r2, 0x3 + ands r2, r3 + cmp r2, 0x1 + bne _080504F6 + ldrb r0, [r1, 0x9] + cmp r0, 0xFF + beq _080504F6 + movs r0, 0x20 + ands r0, r3 + cmp r0, 0 + bne _080504F6 + ldrh r1, [r1, 0x4] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080504F6 + ands r2, r1 + cmp r2, 0 + bne _080504F6 + movs r0, 0x8 + ands r0, r3 + cmp r0, 0 + bne _080504F6 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + ands r0, r3 + cmp r0, 0 + bne _080504F6 + ldr r0, _080506A0 + add r0, r10 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r6, r0 + bne _080504EC + ldr r0, _080506A4 + add r0, r10 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r5, r0 + beq _080504F6 +_080504EC: + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r0, 0x1 + add r8, r0 +_080504F6: + adds r5, 0x1 + cmp r5, 0x1F + ble _0805048E + mov r6, r9 + cmp r6, 0x37 + ble _08050480 + mov r1, r8 + cmp r1, 0 + beq _0805055E + ldr r0, _080506A8 + ldr r0, [r0] + movs r2, 0xD1 + lsls r2, 3 + adds r0, r2 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _0805051C + adds r7, 0x1 +_0805051C: + cmp r7, 0 + beq _0805055E + mov r0, sp + mov r1, r8 + bl sub_804FED0 + mov r0, r8 + bl DungeonRandomCapped + adds r5, r0, 0 + cmp r7, 0 + ble _0805055E + adds r6, r7, 0 + lsls r0, r5, 2 + mov r2, sp + adds r4, r0, r2 +_0805053C: + ldrb r0, [r4] + ldrb r1, [r4, 0x1] + bl GetMapTile_2 + ldrh r2, [r0, 0x4] + movs r1, 0x8 + orrs r1, r2 + strh r1, [r0, 0x4] + adds r4, 0x4 + adds r5, 0x1 + cmp r5, r8 + bne _08050558 + mov r4, sp + movs r5, 0 +_08050558: + subs r6, 0x1 + cmp r6, 0 + bne _0805053C +_0805055E: + ldr r0, _080506AC + add r0, r10 + ldrb r0, [r0] + cmp r0, 0 + bne _0805056A + b _0805068C +_0805056A: + ldr r0, _080506B0 + movs r2, 0 + ldrsh r1, [r0, r2] + ldr r2, _080506B4 + add r2, sp + str r1, [r2] + movs r0, 0 + mov r8, r0 + movs r1, 0xE0 + lsls r1, 5 + add r1, sp + ldr r1, [r1] + cmp r1, 0 + beq _0805058A + movs r0, 0x3 + str r0, [r2] +_0805058A: + ldr r1, _080506B4 + add r1, sp + ldr r1, [r1] + lsls r0, r1, 1 + adds r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + ldr r1, _080506B4 + add r1, sp + str r0, [r1] + movs r6, 0 +_080505A2: + movs r5, 0 + adds r2, r6, 0x1 + mov r9, r2 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_080505B0: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetMapTile_1 + adds r1, r0, 0 + ldrh r2, [r1] + movs r0, 0x3 + ands r0, r2 + cmp r0, 0x1 + bne _08050608 + ldrb r0, [r1, 0x9] + cmp r0, 0xFF + beq _08050608 + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + bne _08050608 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + bne _08050608 + movs r0, 0x40 + ands r0, r2 + cmp r0, 0 + beq _08050608 + ldr r0, _080506A0 + add r0, r10 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r6, r0 + bne _080505FE + ldr r0, _080506A4 + add r0, r10 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r5, r0 + beq _08050608 +_080505FE: + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r2, 0x1 + add r8, r2 +_08050608: + adds r5, 0x1 + cmp r5, 0x1F + ble _080505B0 + mov r6, r9 + cmp r6, 0x37 + ble _080505A2 + mov r0, r8 + cmp r0, 0 + beq _0805068C + lsls r4, r0, 3 + subs r0, r4, r0 + movs r1, 0xA + bl __divsi3 + adds r5, r0, 0 + adds r0, r4, 0 + movs r1, 0xA + bl __divsi3 + adds r1, r0, 0 + adds r0, r5, 0 + bl sub_808411C + adds r7, r0, 0 + cmp r7, 0 + bne _0805063E + movs r7, 0x1 +_0805063E: + ldr r1, _080506B4 + add r1, sp + ldr r1, [r1] + cmp r7, r1 + blt _0805064E + ldr r2, _080506B4 + add r2, sp + ldr r7, [r2] +_0805064E: + mov r0, sp + mov r1, r8 + bl sub_804FED0 + mov r0, r8 + bl DungeonRandomCapped + adds r5, r0, 0 + cmp r7, 0 + ble _0805068C + adds r6, r7, 0 + lsls r0, r5, 2 + mov r1, sp + adds r4, r0, r1 +_0805066A: + ldrb r0, [r4] + ldrb r1, [r4, 0x1] + bl GetMapTile_2 + ldrh r2, [r0, 0x4] + movs r1, 0x8 + orrs r1, r2 + strh r1, [r0, 0x4] + adds r4, 0x4 + adds r5, 0x1 + cmp r5, r8 + bne _08050686 + mov r4, sp + movs r5, 0 +_08050686: + subs r6, 0x1 + cmp r6, 0 + bne _0805066A +_0805068C: + ldr r3, _080506B8 + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080506A0: .4byte 0x0000e218 +_080506A4: .4byte 0x0000e21a +_080506A8: .4byte gDungeonGlobalData +_080506AC: .4byte 0x00003a08 +_080506B0: .4byte gUnknown_80F4DA4 +_080506B4: .4byte 0x00001c04 +_080506B8: .4byte 0x00001c08 + thumb_func_end sub_8050438 + + thumb_func_start sub_80506BC +sub_80506BC: + push {lr} + adds r3, r0, 0 + movs r2, 0x1 + ldrh r1, [r3] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _080506CE + movs r2, 0 +_080506CE: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080506D8 + movs r2, 0 +_080506D8: + cmp r2, 0 + beq _080506E6 + ldr r0, _080506EC + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strh r0, [r3] +_080506E6: + pop {r0} + bx r0 + .align 2, 0 +_080506EC: .4byte 0x0000fffc + thumb_func_end sub_80506BC + + thumb_func_start sub_80506F0 +sub_80506F0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xA4 + str r1, [sp, 0x64] + ldrb r1, [r1, 0xD] + ands r1, r0 + cmp r1, 0 + bne _08050708 + b _08050C20 +_08050708: + ldr r4, _08050738 + movs r0, 0x8 + bl DungeonRandomCapped + lsls r0, 2 + adds r0, r4 + ldr r4, [r0] + cmp r4, 0 + bne _0805071C + b _08050A7C +_0805071C: + movs r0, 0x64 + bl DungeonRandomCapped + cmp r0, 0x31 + bgt _0805073C + movs r0, 0x1 + str r0, [sp, 0x74] + movs r1, 0x1F + mov r10, r1 + movs r2, 0x1 + negs r2, r2 + str r2, [sp, 0x70] + b _08050746 + .align 2, 0 +_08050738: .4byte gUnknown_80F6DF8 +_0805073C: + movs r0, 0 + str r0, [sp, 0x74] + mov r10, r0 + movs r1, 0x1 + str r1, [sp, 0x70] +_08050746: + movs r0, 0x32 + bl DungeonRandomCapped + adds r0, 0xA + str r0, [sp, 0x78] + movs r0, 0x2 + movs r1, 0x36 + bl sub_808411C + mov r9, r0 + movs r2, 0 + str r2, [sp, 0x6C] + subs r4, 0x1 + str r4, [sp, 0x98] +_08050762: + movs r0, 0x6 + bl DungeonRandomCapped + adds r0, 0x2 + str r0, [sp, 0x68] + cmp r0, 0 + bne _08050772 + b _08050A38 +_08050772: + mov r0, r9 + cmp r0, 0x37 + bhi _080507B8 + mov r1, r10 + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x2 + bne _0805078A + b _08050A74 +_0805078A: + mov r1, r9 + cmp r1, 0 + blt _080507A2 + mov r2, r10 + cmp r2, 0 + blt _080507A2 + mov r0, r9 + cmp r0, 0x37 + bgt _080507A2 + mov r1, r10 + cmp r1, 0x1F + ble _080507A6 +_080507A2: + movs r0, 0x1 + b _080507A8 +_080507A6: + movs r0, 0 +_080507A8: + cmp r0, 0 + bne _080507B8 + mov r0, r9 + mov r1, r10 + bl GetMapTile_2 + bl sub_80506BC +_080507B8: + ldr r2, [sp, 0x68] + subs r2, 0x1 + str r2, [sp, 0x68] + ldr r0, [sp, 0x6C] + add r9, r0 + ldr r1, [sp, 0x70] + add r10, r1 + mov r2, r10 + cmp r2, 0x1F + bls _080507CE + b _08050A38 +_080507CE: + ldr r0, [sp, 0x78] + subs r0, 0x1 + str r0, [sp, 0x78] + cmp r0, 0 + beq _080507DA + b _08050A30 +_080507DA: + movs r1, 0x3F + str r1, [sp, 0x7C] +_080507DE: + movs r0, 0x7 + bl DungeonRandomCapped + subs r0, 0x3 + str r0, [sp, 0x84] + movs r0, 0x7 + bl DungeonRandomCapped + subs r1, r0, 0x3 + ldr r6, [sp, 0x84] + add r6, r9 + subs r0, r6, 0x2 + cmp r0, 0x33 + bhi _080508DA + mov r2, r10 + adds r5, r1, r2 + cmp r5, 0x1 + ble _080508DA + cmp r5, 0x1D + bgt _080508DA + adds r4, r6, 0x1 + adds r0, r5, 0x1 + mov r8, r0 + adds r0, r4, 0 + mov r1, r8 + bl GetMapTile_1 + ldrh r1, [r0] + movs r2, 0x3 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + adds r0, r4, 0 + adds r1, r5, 0 + str r2, [sp, 0x9C] + bl GetMapTile_1 + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + subs r7, r5, 0x1 + adds r0, r4, 0 + adds r1, r7, 0 + bl GetMapTile_1 + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + adds r0, r6, 0 + mov r1, r8 + bl GetMapTile_1 + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + adds r0, r6, 0 + adds r1, r7, 0 + bl GetMapTile_1 + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + subs r4, r6, 0x1 + adds r0, r4, 0 + mov r1, r8 + bl GetMapTile_1 + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_1 + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + adds r0, r4, 0 + adds r1, r7, 0 + bl GetMapTile_1 + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + bne _080508DA +_080508B2: + ldr r0, [sp, 0x84] + add r0, r9 + cmp r0, 0 + blt _080508C6 + cmp r5, 0 + blt _080508C6 + cmp r0, 0x37 + bgt _080508C6 + cmp r5, 0x1F + ble _080508CA +_080508C6: + movs r1, 0x1 + b _080508CC +_080508CA: + movs r1, 0 +_080508CC: + cmp r1, 0 + bne _080508DA + adds r1, r5, 0 + bl GetMapTile_2 + bl sub_80506BC +_080508DA: + ldr r1, [sp, 0x7C] + subs r1, 0x1 + str r1, [sp, 0x7C] + cmp r1, 0 + blt _080508E6 + b _080507DE +_080508E6: + movs r0, 0x3 + negs r0, r0 +_080508EA: + movs r2, 0x3 + negs r2, r2 + str r2, [sp, 0x80] + mov r1, r9 + adds r1, r0, r1 + str r1, [sp, 0x90] + adds r0, 0x1 + str r0, [sp, 0x8C] + adds r7, r1, 0 + mov r5, r10 + subs r5, 0x3 +_08050900: + movs r6, 0 + subs r0, r7, 0x2 + cmp r0, 0x33 + bls _0805090A + b _08050A1A +_0805090A: + str r5, [sp, 0x88] + str r5, [sp, 0x94] + cmp r5, 0x1 + bgt _08050914 + b _08050A1A +_08050914: + cmp r5, 0x1D + ble _0805091A + b _08050A1A +_0805091A: + adds r4, r7, 0x1 + adds r3, r5, 0x1 + adds r0, r4, 0 + adds r1, r3, 0 + str r3, [sp, 0xA0] + bl GetMapTile_1 + ldrh r1, [r0] + movs r2, 0x3 + mov r8, r2 + mov r0, r8 + ands r0, r1 + ldr r3, [sp, 0xA0] + cmp r0, 0x2 + bne _0805093A + movs r6, 0x1 +_0805093A: + adds r0, r4, 0 + adds r1, r5, 0 + str r3, [sp, 0xA0] + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r3, [sp, 0xA0] + cmp r0, 0x2 + bne _08050952 + adds r6, 0x1 +_08050952: + subs r2, r5, 0x1 + adds r0, r4, 0 + adds r1, r2, 0 + str r2, [sp, 0x9C] + str r3, [sp, 0xA0] + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r2, [sp, 0x9C] + ldr r3, [sp, 0xA0] + cmp r0, 0x2 + bne _08050970 + adds r6, 0x1 +_08050970: + adds r0, r7, 0 + adds r1, r3, 0 + str r2, [sp, 0x9C] + str r3, [sp, 0xA0] + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r2, [sp, 0x9C] + ldr r3, [sp, 0xA0] + cmp r0, 0x2 + bne _0805098C + adds r6, 0x1 +_0805098C: + adds r0, r7, 0 + adds r1, r2, 0 + str r2, [sp, 0x9C] + str r3, [sp, 0xA0] + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r2, [sp, 0x9C] + ldr r3, [sp, 0xA0] + cmp r0, 0x2 + bne _080509A8 + adds r6, 0x1 +_080509A8: + subs r4, r7, 0x1 + adds r0, r4, 0 + adds r1, r3, 0 + str r2, [sp, 0x9C] + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r2, [sp, 0x9C] + cmp r0, 0x2 + bne _080509C2 + adds r6, 0x1 +_080509C2: + adds r0, r4, 0 + adds r1, r5, 0 + str r2, [sp, 0x9C] + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r2, [sp, 0x9C] + cmp r0, 0x2 + bne _080509DA + adds r6, 0x1 +_080509DA: + adds r0, r4, 0 + adds r1, r2, 0 + bl GetMapTile_1 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + cmp r0, 0x2 + bne _080509EE + adds r6, 0x1 +_080509EE: + cmp r6, 0x3 + ble _08050A1A + cmp r7, 0 + blt _08050A04 + cmp r5, 0 + blt _08050A04 + cmp r7, 0x37 + bgt _08050A04 + ldr r0, [sp, 0x88] + cmp r0, 0x1F + ble _08050A08 +_08050A04: + movs r0, 0x1 + b _08050A0A +_08050A08: + movs r0, 0 +_08050A0A: + cmp r0, 0 + bne _08050A1A + ldr r0, [sp, 0x90] + ldr r1, [sp, 0x94] + bl GetMapTile_2 + bl sub_80506BC +_08050A1A: + adds r5, 0x1 + ldr r1, [sp, 0x80] + adds r1, 0x1 + str r1, [sp, 0x80] + cmp r1, 0x3 + bgt _08050A28 + b _08050900 +_08050A28: + ldr r0, [sp, 0x8C] + cmp r0, 0x3 + bgt _08050A30 + b _080508EA +_08050A30: + ldr r2, [sp, 0x68] + cmp r2, 0 + beq _08050A38 + b _08050772 +_08050A38: + ldr r0, [sp, 0x6C] + cmp r0, 0 + beq _08050A54 + movs r1, 0x1 + str r1, [sp, 0x70] + ldr r2, [sp, 0x74] + cmp r2, 0 + beq _08050A4E + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x70] +_08050A4E: + movs r1, 0 + str r1, [sp, 0x6C] + b _08050A6C +_08050A54: + movs r0, 0x64 + bl DungeonRandomCapped + movs r2, 0x1 + str r2, [sp, 0x6C] + cmp r0, 0x31 + bgt _08050A68 + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x6C] +_08050A68: + movs r1, 0 + str r1, [sp, 0x70] +_08050A6C: + mov r2, r10 + cmp r2, 0x1F + bhi _08050A74 + b _08050762 +_08050A74: + ldr r4, [sp, 0x98] + cmp r4, 0 + beq _08050A7C + b _0805071C +_08050A7C: + movs r0, 0 + ldr r1, [sp, 0x64] + ldrb r1, [r1, 0x15] + cmp r0, r1 + blt _08050A88 + b _08050BAE +_08050A88: + movs r2, 0 + mov r8, r2 + mov r9, r2 + movs r5, 0 + adds r0, 0x1 + mov r10, r0 + b _08050A98 +_08050A96: + adds r5, 0x1 +_08050A98: + cmp r5, 0xC7 + bgt _08050AC2 + movs r0, 0 + movs r1, 0x38 + bl sub_808411C + mov r9, r0 + movs r0, 0 + movs r1, 0x20 + bl sub_808411C + mov r8, r0 + mov r0, r9 + subs r0, 0x1 + cmp r0, 0x35 + bhi _08050A96 + mov r0, r8 + cmp r0, 0 + ble _08050A96 + cmp r0, 0x1E + bgt _08050A96 +_08050AC2: + cmp r5, 0xC8 + beq _08050BA2 + movs r7, 0 + movs r3, 0x1 + movs r1, 0 +_08050ACC: + movs r2, 0 + lsls r0, r7, 2 + adds r4, r7, 0x1 + adds r0, r7 + lsls r0, 1 + add r0, sp +_08050AD8: + cmp r7, 0 + beq _08050AE8 + cmp r7, 0x9 + beq _08050AE8 + cmp r2, 0 + beq _08050AE8 + cmp r2, 0x9 + bne _08050AEC +_08050AE8: + strb r3, [r0] + b _08050AEE +_08050AEC: + strb r1, [r0] +_08050AEE: + adds r0, 0x1 + adds r2, 0x1 + cmp r2, 0x9 + ble _08050AD8 + adds r7, r4, 0 + cmp r7, 0x9 + ble _08050ACC + movs r5, 0x4F +_08050AFE: + movs r0, 0x8 + bl DungeonRandomCapped + adds r4, r0, 0 + adds r7, r4, 0x1 + movs r0, 0x8 + bl DungeonRandomCapped + adds r2, r0, 0x1 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 1 + adds r0, r2, r0 + add r0, sp + ldrb r0, [r0] + cmp r0, 0 + bne _08050B50 + adds r1, r7, 0x1 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + adds r0, r2, r0 + add r0, sp + ldrb r0, [r0] + cmp r0, 0 + bne _08050B50 + lsls r0, r7, 2 + adds r0, r7 + lsls r1, r0, 1 + subs r0, r1, 0x1 + adds r0, r2, r0 + add r0, sp + ldrb r0, [r0] + cmp r0, 0 + bne _08050B50 + adds r0, r1, 0x1 + adds r0, r2, r0 + add r0, sp + ldrb r0, [r0] + cmp r0, 0 + beq _08050B60 +_08050B50: + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 1 + adds r0, r2, r0 + mov r2, sp + adds r1, r2, r0 + movs r0, 0x1 + strb r0, [r1] +_08050B60: + subs r5, 0x1 + cmp r5, 0 + bge _08050AFE + movs r7, 0 +_08050B68: + lsls r0, r7, 2 + adds r4, r7, 0x1 + adds r0, r7 + lsls r0, 1 + mov r6, r8 + subs r6, 0x5 + mov r1, sp + adds r5, r0, r1 + add r7, r9 + movs r2, 0x9 +_08050B7C: + ldrb r0, [r5] + cmp r0, 0 + bne _08050B92 + subs r0, r7, 0x5 + adds r1, r6, 0 + str r2, [sp, 0x9C] + bl GetMapTile_2 + bl sub_80506BC + ldr r2, [sp, 0x9C] +_08050B92: + adds r6, 0x1 + adds r5, 0x1 + subs r2, 0x1 + cmp r2, 0 + bge _08050B7C + adds r7, r4, 0 + cmp r7, 0x9 + ble _08050B68 +_08050BA2: + mov r0, r10 + ldr r2, [sp, 0x64] + ldrb r2, [r2, 0x15] + cmp r0, r2 + bge _08050BAE + b _08050A88 +_08050BAE: + movs r0, 0 + mov r9, r0 + movs r6, 0x1 + ldr r1, _08050BF4 + adds r5, r1, 0 +_08050BB8: + movs r2, 0 + mov r10, r2 + mov r4, r9 + adds r4, 0x1 +_08050BC0: + mov r0, r9 + mov r1, r10 + bl GetMapTile_2 + adds r2, r0, 0 + ldrh r3, [r2] + movs r0, 0x3 + ands r0, r3 + cmp r0, 0x2 + bne _08050C10 + movs r1, 0xB0 + lsls r1, 1 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + bne _08050BEA + ldrh r1, [r2, 0x4] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _08050BF8 +_08050BEA: + adds r0, r3, 0 + ands r0, r5 + orrs r0, r6 + b _08050C0E + .align 2, 0 +_08050BF4: .4byte 0x0000fffc +_08050BF8: + mov r0, r9 + subs r0, 0x2 + cmp r0, 0x34 + bhi _08050C0A + mov r0, r10 + cmp r0, 0x1 + ble _08050C0A + cmp r0, 0x1E + ble _08050C10 +_08050C0A: + ldrh r0, [r2] + ands r0, r5 +_08050C0E: + strh r0, [r2] +_08050C10: + movs r1, 0x1 + add r10, r1 + mov r2, r10 + cmp r2, 0x1F + ble _08050BC0 + mov r9, r4 + cmp r4, 0x37 + ble _08050BB8 +_08050C20: + add sp, 0xA4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80506F0 + + thumb_func_start sub_8050C30 +sub_8050C30: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _08050F3C + add sp, r4 + mov r8, r0 + mov r9, r1 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0xE0 + lsls r0, 3 + add r0, sp + str r2, [r0] + movs r7, 0 + mov r1, r8 + lsls r1, 5 + movs r2, 0xE2 + lsls r2, 3 + add r2, sp + str r1, [r2] +_08050C5C: + movs r6, 0 + lsls r2, r7, 5 + adds r3, r7, 0x1 + mov r10, r3 + mov r5, sp + adds r4, r2, r5 +_08050C68: + adds r0, r7, 0 + adds r1, r6, 0 + bl GetMapTile_2 + adds r2, r0, 0 + ldrh r0, [r2] + movs r3, 0x3 + ands r3, r0 + movs r0, 0 + strb r0, [r4] + movs r0, 0xE0 + lsls r0, 3 + add r0, sp + ldr r0, [r0] + cmp r0, 0 + beq _08050C92 + ldrh r0, [r2] + ldr r5, _08050F40 + adds r1, r5, 0 + ands r0, r1 + strh r0, [r2] +_08050C92: + cmp r3, 0x1 + beq _08050CA8 + ldrh r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08050CA8 + ldrb r0, [r4] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4] +_08050CA8: + cmp r3, 0x2 + bne _08050CBE + ldrh r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08050CBE + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] +_08050CBE: + adds r4, 0x1 + adds r6, 0x1 + cmp r6, 0x1F + ble _08050C68 + mov r7, r10 + cmp r7, 0x37 + ble _08050C5C + movs r1, 0xE2 + lsls r1, 3 + add r1, sp + ldr r0, [r1] + add r0, r9 + mov r3, sp + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, 0x50 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08050F44 + ldr r1, [r0] + ldr r5, _08050F48 + adds r0, r1, r5 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, r8 + beq _08050CF4 + b _08050F36 +_08050CF4: + ldr r3, _08050F4C + adds r0, r1, r3 + movs r5, 0 + ldrsh r0, [r0, r5] + cmp r0, r9 + beq _08050D02 + b _08050F36 +_08050D02: + ldr r1, _08050F50 + movs r0, 0 + str r0, [r1] + movs r0, 0x40 + mov r9, r0 +_08050D0C: + movs r1, 0 + ldr r2, _08050F54 + add r2, sp + str r1, [r2] + ldr r3, _08050F50 + ldr r0, [r3] + adds r0, 0x1 + str r0, [r3] + movs r7, 0 +_08050D1E: + movs r6, 0 + lsls r2, r7, 5 + adds r5, r7, 0x1 + mov r10, r5 + subs r0, r7, 0x1 + movs r1, 0xE1 + lsls r1, 3 + add r1, sp + str r0, [r1] + lsls r0, 5 + mov r1, sp + subs r1, 0x1 + adds r5, r2, r1 + add r0, sp + mov r8, r0 + mov r2, r10 + ldr r3, _08050F58 + add r3, sp + str r2, [r3] + lsls r0, r2, 5 + add r0, sp + mov r12, r0 +_08050D4A: + ldrb r1, [r5, 0x1] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08050D56 + b _08050EDA +_08050D56: + movs r3, 0x40 + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _08050D62 + b _08050EDA +_08050D62: + ldr r2, _08050F54 + add r2, sp + ldr r0, [r2] + adds r0, 0x1 + str r0, [r2] + movs r0, 0xBF + ands r0, r1 + movs r2, 0 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r5, 0x1] + cmp r7, 0 + ble _08050D90 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x83 + ands r0, r1 + cmp r0, 0 + bne _08050D90 + adds r0, r1, 0 + orrs r0, r3 + mov r1, r8 + strb r0, [r1] +_08050D90: + cmp r6, 0 + ble _08050DA4 + ldrb r1, [r5] + movs r0, 0x83 + ands r0, r1 + cmp r0, 0 + bne _08050DA4 + mov r0, r9 + orrs r0, r1 + strb r0, [r5] +_08050DA4: + cmp r7, 0x36 + bgt _08050DBA + mov r2, r12 + ldrb r1, [r2] + movs r0, 0x83 + ands r0, r1 + cmp r0, 0 + bne _08050DBA + mov r0, r9 + orrs r0, r1 + strb r0, [r2] +_08050DBA: + cmp r6, 0x1E + bgt _08050DCE + ldrb r1, [r5, 0x2] + movs r0, 0x83 + ands r0, r1 + cmp r0, 0 + bne _08050DCE + mov r0, r9 + orrs r0, r1 + strb r0, [r5, 0x2] +_08050DCE: + cmp r7, 0 + ble _08050E12 + cmp r6, 0 + ble _08050E12 + movs r3, 0xE1 + lsls r3, 3 + add r3, sp + ldr r3, [r3] + lsls r1, r3, 5 + subs r0, r1, 0x1 + adds r0, r6, r0 + mov r2, sp + adds r4, r2, r0 + ldrb r3, [r4] + movs r0, 0x87 + ands r0, r3 + cmp r0, 0 + bne _08050E12 + adds r0, r6, r1 + add r0, sp + ldrb r1, [r0] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050E12 + ldrb r1, [r5] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050E12 + mov r0, r9 + orrs r0, r3 + strb r0, [r4] +_08050E12: + cmp r7, 0x36 + bgt _08050E54 + cmp r6, 0 + ble _08050E54 + ldr r3, _08050F58 + add r3, sp + ldr r3, [r3] + lsls r1, r3, 5 + subs r0, r1, 0x1 + adds r0, r6, r0 + mov r2, sp + adds r4, r2, r0 + ldrb r3, [r4] + movs r0, 0x87 + ands r0, r3 + cmp r0, 0 + bne _08050E54 + adds r0, r6, r1 + add r0, sp + ldrb r1, [r0] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050E54 + ldrb r1, [r5] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050E54 + mov r0, r9 + orrs r0, r3 + strb r0, [r4] +_08050E54: + cmp r7, 0 + ble _08050E98 + cmp r6, 0x1E + bgt _08050E98 + movs r3, 0xE1 + lsls r3, 3 + add r3, sp + ldr r3, [r3] + lsls r1, r3, 5 + adds r0, r1, 0x1 + adds r0, r6, r0 + mov r2, sp + adds r4, r2, r0 + ldrb r3, [r4] + movs r0, 0x87 + ands r0, r3 + cmp r0, 0 + bne _08050E98 + adds r0, r6, r1 + add r0, sp + ldrb r1, [r0] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050E98 + ldrb r1, [r5, 0x2] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050E98 + mov r0, r9 + orrs r0, r3 + strb r0, [r4] +_08050E98: + cmp r7, 0x36 + bgt _08050EDA + cmp r6, 0x1E + bgt _08050EDA + ldr r3, _08050F58 + add r3, sp + ldr r3, [r3] + lsls r1, r3, 5 + adds r0, r1, 0x1 + adds r0, r6, r0 + mov r2, sp + adds r4, r2, r0 + ldrb r3, [r4] + movs r0, 0x87 + ands r0, r3 + cmp r0, 0 + bne _08050EDA + adds r0, r6, r1 + add r0, sp + ldrb r1, [r0] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050EDA + ldrb r1, [r5, 0x2] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050EDA + mov r0, r9 + orrs r0, r3 + strb r0, [r4] +_08050EDA: + adds r5, 0x1 + movs r3, 0x1 + add r8, r3 + add r12, r3 + adds r6, 0x1 + cmp r6, 0x1F + bgt _08050EEA + b _08050D4A +_08050EEA: + mov r7, r10 + cmp r7, 0x37 + bgt _08050EF2 + b _08050D1E +_08050EF2: + ldr r5, _08050F54 + add r5, sp + ldr r5, [r5] + cmp r5, 0 + beq _08050EFE + b _08050D0C +_08050EFE: + movs r7, 0 +_08050F00: + movs r6, 0 + lsls r2, r7, 5 + mov r0, sp + adds r4, r2, r0 +_08050F08: + adds r0, r7, 0 + adds r1, r6, 0 + bl GetMapTile_2 + adds r2, r0, 0 + ldrb r1, [r4] + movs r0, 0x87 + ands r0, r1 + cmp r0, 0 + bne _08050F68 + movs r1, 0xE0 + lsls r1, 3 + add r1, sp + ldr r1, [r1] + cmp r1, 0 + bne _08050F5C + ldrh r0, [r2] + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050F68 +_08050F36: + movs r0, 0 + b _08050F78 + .align 2, 0 +_08050F3C: .4byte 0xfffff8ec +_08050F40: .4byte 0x00007fff +_08050F44: .4byte gDungeonGlobalData +_08050F48: .4byte 0x0000e21c +_08050F4C: .4byte 0x0000e21e +_08050F50: .4byte gUnknown_202F1D4 +_08050F54: .4byte 0x00000704 +_08050F58: .4byte 0x0000070c +_08050F5C: + ldrh r1, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r0, r3, 0 + orrs r0, r1 + strh r0, [r2] +_08050F68: + adds r4, 0x1 + adds r6, 0x1 + cmp r6, 0x1F + ble _08050F08 + adds r7, 0x1 + cmp r7, 0x37 + ble _08050F00 + movs r0, 0x1 +_08050F78: + ldr r3, _08050F8C + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08050F8C: .4byte 0x00000714 + thumb_func_end sub_8050C30 + + thumb_func_start sub_8050F90 +sub_8050F90: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x3C + str r0, [sp] + str r1, [sp, 0x4] + str r2, [sp, 0x8] + str r3, [sp, 0xC] + movs r0, 0 + str r0, [sp, 0x10] + movs r1, 0 + str r1, [sp, 0x14] + movs r2, 0 + b _080511D0 +_08050FB0: + movs r4, 0 + str r4, [sp, 0x18] + ldr r5, [sp, 0x1C] + adds r5, 0x1 + str r5, [sp, 0x28] + ldr r6, [sp, 0x4] + cmp r4, r6 + blt _08050FC2 + b _080511CE +_08050FC2: + ldr r1, [sp, 0x18] + lsls r0, r1, 2 + ldr r2, [sp, 0xC] + adds r0, r2 + ldr r3, [r0] + adds r4, r3, 0x2 + mov r9, r4 + ldr r5, [sp, 0x1C] + lsls r1, r5, 2 + ldr r6, [sp, 0x5C] + adds r1, r6 + ldr r2, [r1] + adds r4, r2, 0x2 + mov r10, r4 + ldr r0, [r0, 0x4] + subs r0, r3 + subs r4, r0, 0x4 + ldr r0, [r1, 0x4] + subs r0, r2 + subs r7, r0, 0x4 + movs r3, 0x5 + movs r5, 0x5 + ldr r6, [sp, 0x4] + cmp r6, 0x2 + bgt _08050FF8 + movs r3, 0xA + movs r4, 0xE +_08050FF8: + ldr r0, [sp, 0x8] + cmp r0, 0x1 + bne _08051002 + movs r5, 0x10 + movs r7, 0x18 +_08051002: + ldr r2, [sp, 0x1C] + lsls r1, r2, 5 + ldr r6, [sp, 0x18] + lsls r2, r6, 4 + subs r0, r2, r6 + lsls r0, 5 + ldr r6, [sp] + adds r0, r6 + adds r6, r1, r0 + ldrb r0, [r6, 0xA] + str r1, [sp, 0x30] + str r2, [sp, 0x2C] + cmp r0, 0 + bne _08051020 + b _08051130 +_08051020: + ldr r0, [sp, 0x14] + ldr r1, [sp, 0x60] + cmp r0, r1 + beq _0805108C + adds r0, r3, 0 + adds r1, r4, 0 + bl sub_808411C + adds r6, r0, 0 + adds r0, r5, 0 + adds r1, r7, 0 + bl sub_808411C + adds r5, r0, 0 + movs r1, 0x1 + adds r0, r6, 0 + orrs r0, r1 + cmp r0, r4 + bge _08051048 + adds r6, r0, 0 +_08051048: + adds r0, r5, 0 + orrs r0, r1 + cmp r0, r7 + bge _08051052 + adds r5, r0, 0 +_08051052: + lsls r0, r5, 1 + adds r0, r5 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + cmp r6, r0 + ble _08051062 + adds r6, r0, 0 +_08051062: + lsls r0, r6, 1 + adds r0, r6 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + cmp r5, r0 + ble _08051072 + adds r5, r0, 0 +_08051072: + subs r0, r4, r6 + bl DungeonRandomCapped + mov r2, r9 + adds r4, r0, r2 + subs r0, r7, r5 + bl DungeonRandomCapped + mov r3, r10 + adds r7, r0, r3 + adds r3, r4, r6 + adds r6, r7, r5 + b _08051098 +_0805108C: + mov r4, r9 + mov r7, r10 + ldr r5, [sp, 0x64] + adds r3, r4, r5 + ldr r0, [sp, 0x68] + adds r6, r7, r0 +_08051098: + ldr r1, [sp, 0x2C] + ldr r2, [sp, 0x18] + subs r0, r1, r2 + lsls r0, 5 + ldr r5, [sp] + adds r0, r5 + ldr r1, [sp, 0x30] + adds r0, r1, r0 + strh r4, [r0] + strh r3, [r0, 0x4] + strh r7, [r0, 0x2] + strh r6, [r0, 0x6] + adds r5, r4, 0 + ldr r2, [sp, 0x10] + adds r2, 0x1 + str r2, [sp, 0x20] + ldr r4, [sp, 0x14] + adds r4, 0x1 + str r4, [sp, 0x24] + ldr r0, [sp, 0x18] + adds r0, 0x1 + mov r10, r0 + cmp r5, r3 + bge _08051108 +_080510C8: + adds r4, r7, 0 + adds r1, r5, 0x1 + mov r8, r1 + cmp r4, r6 + bge _08051102 + ldr r2, _0805112C + mov r9, r2 +_080510D6: + adds r0, r5, 0 + adds r1, r4, 0 + str r3, [sp, 0x38] + bl GetMapTile_2 + ldrh r1, [r0] + mov r2, r9 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + mov r1, sp + ldrb r1, [r1, 0x10] + strb r1, [r0, 0x9] + adds r4, 0x1 + ldr r3, [sp, 0x38] + cmp r4, r6 + blt _080510D6 +_08051102: + mov r5, r8 + cmp r5, r3 + blt _080510C8 +_08051108: + ldr r2, [sp, 0x14] + ldr r3, [sp, 0x60] + cmp r2, r3 + beq _08051124 + ldr r4, [sp, 0x2C] + ldr r5, [sp, 0x18] + subs r0, r4, r5 + lsls r0, 5 + ldr r6, [sp] + adds r0, r6 + ldr r1, [sp, 0x30] + adds r0, r1, r0 + movs r1, 0x1 + strb r1, [r0, 0x1D] +_08051124: + ldr r2, [sp, 0x20] + str r2, [sp, 0x10] + b _080511BE + .align 2, 0 +_0805112C: .4byte 0x0000fffc +_08051130: + movs r1, 0x2 + movs r3, 0x4 + movs r2, 0x2 + mov r8, r3 + ldr r5, [sp, 0x18] + cmp r5, 0 + bne _08051140 + movs r1, 0x1 +_08051140: + ldr r0, [sp, 0x1C] + cmp r0, 0 + bne _08051148 + movs r2, 0x1 +_08051148: + ldr r0, [sp, 0x4] + subs r0, 0x1 + ldr r5, [sp, 0x18] + cmp r5, r0 + bne _08051154 + movs r3, 0x2 +_08051154: + ldr r0, [sp, 0x8] + subs r0, 0x1 + ldr r5, [sp, 0x1C] + cmp r5, r0 + bne _08051162 + movs r0, 0x2 + mov r8, r0 +_08051162: + mov r5, r9 + adds r0, r5, r1 + adds r1, r5, r4 + subs r1, r3 + str r2, [sp, 0x34] + bl sub_808411C + adds r5, r0, 0 + ldr r2, [sp, 0x34] + mov r1, r10 + adds r0, r1, r2 + adds r1, r7 + mov r2, r8 + subs r1, r2 + bl sub_808411C + adds r4, r0, 0 + strh r5, [r6] + adds r0, r5, 0x1 + strh r0, [r6, 0x4] + strh r4, [r6, 0x2] + adds r0, r4, 0x1 + strh r0, [r6, 0x6] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + ldrh r1, [r0] + ldr r3, _080511EC + adds r2, r3, 0 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapTile_2 + movs r1, 0xFF + strb r1, [r0, 0x9] + ldr r4, [sp, 0x14] + adds r4, 0x1 + str r4, [sp, 0x24] + ldr r5, [sp, 0x18] + adds r5, 0x1 + mov r10, r5 +_080511BE: + ldr r6, [sp, 0x24] + str r6, [sp, 0x14] + mov r0, r10 + str r0, [sp, 0x18] + ldr r1, [sp, 0x4] + cmp r0, r1 + bge _080511CE + b _08050FC2 +_080511CE: + ldr r2, [sp, 0x28] +_080511D0: + str r2, [sp, 0x1C] + ldr r3, [sp, 0x8] + cmp r2, r3 + bge _080511DA + b _08050FB0 +_080511DA: + add sp, 0x3C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080511EC: .4byte 0x0000fffc + thumb_func_end sub_8050F90 + + thumb_func_start sub_80511F0 +sub_80511F0: + push {r4-r6,lr} + ldr r6, _08051204 + ldrb r0, [r6] + cmp r0, 0 + beq _0805120C + subs r0, 0x1 + strb r0, [r6] + ldr r0, _08051208 + ldrb r0, [r0] + b _08051244 + .align 2, 0 +_08051204: .4byte gUnknown_202F1E1 +_08051208: .4byte gUnknown_202F1E0 +_0805120C: + ldr r1, _0805122C + ldr r5, _08051230 + ldr r2, [r5] + ldrb r3, [r2] + strb r3, [r1] + adds r4, r2, 0x1 + str r4, [r5] + lsls r0, r3, 24 + lsrs r0, 24 + cmp r0, 0xE + bne _08051234 + ldrb r0, [r2, 0x1] + strb r0, [r1] + adds r0, r4, 0x1 + str r0, [r5] + b _08051242 + .align 2, 0 +_0805122C: .4byte gUnknown_202F1E0 +_08051230: .4byte gUnknown_202F1DC +_08051234: + movs r0, 0xF + ands r0, r3 + strb r0, [r6] + movs r0, 0xF0 + ands r0, r3 + lsrs r0, 4 + strb r0, [r1] +_08051242: + ldrb r0, [r1] +_08051244: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80511F0 + + thumb_func_start sub_805124C +sub_805124C: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r5, [sp, 0x1C] + lsls r1, 24 + lsrs r1, 24 + lsls r5, 24 + lsrs r5, 24 + ldrh r6, [r0] + movs r7, 0x80 + lsls r7, 1 + adds r4, r7, 0 + movs r7, 0 + mov r8, r7 + orrs r4, r6 + strh r4, [r0] + mov r4, r8 + strb r4, [r0, 0xE] + str r5, [sp] + bl sub_8051A74 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805124C + + thumb_func_start sub_8051288 +sub_8051288: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + str r0, [sp, 0x4] + ldr r0, _08051374 + ldr r7, [r0] + ldr r0, _08051378 + adds r3, r7, r0 + ldr r0, [r3] + ldr r0, [r0, 0x4] + ldr r2, [sp, 0x4] + lsls r1, r2, 2 + adds r0, r1, r0 + ldr r0, [r0] + ldrb r2, [r0] + mov r10, r2 + ldrb r0, [r0, 0x1] + mov r9, r0 + ldr r2, _0805137C + adds r0, r7, r2 + movs r4, 0 + mov r2, r10 + strh r2, [r0] + ldr r2, _08051380 + adds r0, r7, r2 + mov r2, r9 + strh r2, [r0] + ldr r2, _08051384 + ldr r0, [r3] + ldr r0, [r0, 0x4] + adds r1, r0 + ldr r0, [r1] + adds r0, 0x3 + str r0, [r2] + ldr r0, _08051388 + strb r4, [r0] + movs r6, 0x5 + mov r0, r9 + adds r0, 0x5 + cmp r6, r0 + bge _0805132E + movs r1, 0x5 + add r1, r10 + mov r8, r1 + str r0, [sp, 0x8] +_080512E8: + movs r5, 0x5 + cmp r5, r8 + bge _08051326 +_080512EE: + bl sub_80511F0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + adds r1, r6, 0 + bl GetMapTile_2 + movs r1, 0x1 + str r1, [sp] + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_805124C + lsls r0, 24 + cmp r0, 0 + beq _08051320 + ldr r2, _0805138C + adds r0, r7, r2 + strh r5, [r0] + ldr r1, _08051390 + adds r0, r7, r1 + strh r6, [r0] +_08051320: + adds r5, 0x1 + cmp r5, r8 + blt _080512EE +_08051326: + adds r6, 0x1 + ldr r2, [sp, 0x8] + cmp r6, r2 + blt _080512E8 +_0805132E: + movs r6, 0 + ldr r0, _08051394 + adds r7, r0, 0 +_08051334: + movs r5, 0 + adds r4, r6, 0x1 +_08051338: + cmp r5, 0x4 + ble _08051350 + mov r0, r10 + adds r0, 0x5 + cmp r5, r0 + bge _08051350 + cmp r6, 0x4 + ble _08051350 + mov r0, r9 + adds r0, 0x5 + cmp r6, r0 + blt _080513A0 +_08051350: + adds r0, r5, 0 + adds r1, r6, 0 + bl GetMapTile_2 + adds r2, r0, 0 + ldrh r1, [r2] + movs r0, 0x10 + movs r3, 0 + orrs r1, r0 + strh r1, [r2] + ldr r0, _08051398 + ldrb r0, [r0] + cmp r0, 0 + beq _0805139C + ands r1, r7 + movs r0, 0x3 + orrs r1, r0 + b _0805139E + .align 2, 0 +_08051374: .4byte gDungeonGlobalData +_08051378: .4byte 0x00013568 +_0805137C: .4byte 0x0000e260 +_08051380: .4byte 0x0000e262 +_08051384: .4byte gUnknown_202F1DC +_08051388: .4byte gUnknown_202F1E1 +_0805138C: .4byte 0x0000e21c +_08051390: .4byte 0x0000e21e +_08051394: .4byte 0x0000fffc +_08051398: .4byte gUnknown_202F1A8 +_0805139C: + ands r1, r7 +_0805139E: + strh r1, [r2] +_080513A0: + adds r5, 0x1 + cmp r5, 0x37 + ble _08051338 + adds r6, r4, 0 + cmp r6, 0x1F + ble _08051334 + ldr r1, [sp, 0x4] + cmp r1, 0x4 + bne _080513DA + movs r6, 0x5 + ldr r2, _0805142C + adds r7, r2, 0 +_080513B8: + movs r5, 0x2 + adds r4, r6, 0x1 +_080513BC: + adds r0, r5, 0 + adds r1, r6, 0 + bl GetMapTile_2 + ldrh r2, [r0] + movs r1, 0x10 + orrs r1, r2 + ands r1, r7 + strh r1, [r0] + adds r5, 0x1 + cmp r5, 0x4 + ble _080513BC + adds r6, r4, 0 + cmp r6, 0x10 + ble _080513B8 +_080513DA: + ldr r0, _08051430 + ldr r0, [r0] + ldr r1, _08051434 + adds r0, r1 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0x3F + ble _08051416 + movs r6, 0 +_080513EC: + movs r5, 0 + adds r4, r6, 0x1 +_080513F0: + adds r0, r5, 0 + adds r1, r6, 0 + bl GetMapTile_2 + adds r2, r0, 0 + ldrh r1, [r2] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _0805140A + movs r0, 0x10 + orrs r0, r1 + strh r0, [r2] +_0805140A: + adds r5, 0x1 + cmp r5, 0x37 + ble _080513F0 + adds r6, r4, 0 + cmp r6, 0x1F + ble _080513EC +_08051416: + bl sub_804E9DC + 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 +_0805142C: .4byte 0x0000fffc +_08051430: .4byte gDungeonGlobalData +_08051434: .4byte 0x00003a0e + thumb_func_end sub_8051288 + + thumb_func_start sub_8051438 +sub_8051438: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + mov r9, r0 + ldr r0, _080515AC + ldr r0, [r0] + str r0, [sp, 0x4] + ldr r2, _080515B0 + ldr r4, _080515B4 + adds r3, r0, r4 + ldr r0, [r3] + ldr r0, [r0, 0x4] + lsls r1, 2 + adds r0, r1, r0 + ldr r0, [r0] + adds r0, 0x3 + str r0, [r2] + ldr r2, _080515B8 + movs r0, 0 + strb r0, [r2] + ldr r0, [r3] + ldr r0, [r0, 0x4] + adds r1, r0 + ldr r0, [r1] + ldrb r1, [r0, 0x2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0805147A + b _080515D8 +_0805147A: + ldr r5, [sp, 0x4] + ldr r0, _080515BC + adds r1, r5, r0 + mov r2, r9 + movs r3, 0 + ldrsh r0, [r2, r3] + str r0, [r1] + ldr r4, _080515C0 + adds r1, r5, r4 + movs r5, 0x2 + ldrsh r0, [r2, r5] + str r0, [r1] + ldr r0, [sp, 0x4] + ldr r2, _080515C4 + adds r1, r0, r2 + mov r3, r9 + movs r4, 0x4 + ldrsh r0, [r3, r4] + str r0, [r1] + ldr r5, [sp, 0x4] + ldr r0, _080515C8 + adds r1, r5, r0 + movs r2, 0x6 + ldrsh r0, [r3, r2] + str r0, [r1] + movs r3, 0 + str r3, [sp, 0x8] + mov r4, r9 + movs r5, 0x2 + ldrsh r4, [r4, r5] + mov r8, r4 + mov r1, r9 + movs r2, 0x6 + ldrsh r0, [r1, r2] + cmp r8, r0 + blt _080514C4 + b _08051640 +_080514C4: + mov r3, r9 + movs r4, 0 + ldrsh r7, [r3, r4] + movs r5, 0x4 + ldrsh r0, [r3, r5] + ldr r1, [sp, 0x8] + adds r1, 0x1 + str r1, [sp, 0x10] + mov r2, r8 + adds r2, 0x1 + str r2, [sp, 0xC] + cmp r7, r0 + bge _08051598 + ldr r4, _080515CC + ldr r3, [sp, 0x4] + adds r4, r3, r4 + str r4, [sp, 0x14] + movs r5, 0 + str r5, [sp, 0x18] + ldr r0, [sp, 0x8] + mov r10, r0 +_080514EE: + bl sub_80511F0 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r7, 0 + mov r1, r8 + bl GetMapTile_2 + adds r6, r0, 0 + ldr r1, [sp, 0x4] + ldr r2, _080515D0 + adds r0, r1, r2 + add r0, r10 + strb r5, [r0] + ldr r3, [sp, 0x8] + lsls r4, r3, 1 + adds r4, r3 + lsls r4, 3 + ldr r1, [sp, 0x14] + adds r0, r1, r4 + movs r2, 0 + str r2, [sp] + adds r1, r5, 0 + adds r2, r7, 0 + mov r3, r8 + bl sub_805124C + ldrb r1, [r6, 0x9] + ldr r3, [sp, 0x18] + adds r4, r3 + ldr r5, [sp, 0x4] + adds r4, r5, r4 + adds r0, r6, 0 + ldr r2, _080515CC + adds r4, r2 + ldm r4!, {r2,r3,r5} + stm r0!, {r2,r3,r5} + ldm r4!, {r2,r3,r5} + stm r0!, {r2,r3,r5} + mov r3, r9 + movs r4, 0 + ldrsh r0, [r3, r4] + adds r0, 0x2 + cmp r7, r0 + blt _08051572 + movs r5, 0x4 + ldrsh r0, [r3, r5] + subs r0, 0x2 + cmp r7, r0 + bge _08051572 + movs r2, 0x2 + ldrsh r0, [r3, r2] + adds r0, 0x2 + cmp r8, r0 + blt _08051572 + movs r4, 0x6 + ldrsh r0, [r3, r4] + subs r0, 0x2 + cmp r8, r0 + bge _08051572 + movs r0, 0x88 + lsls r0, 1 + strh r0, [r6] + movs r0, 0xE + strb r0, [r6, 0xE] +_08051572: + strb r1, [r6, 0x9] + ldr r5, [sp, 0x4] + ldr r2, _080515D4 + adds r0, r5, r2 + strb r1, [r0] + ldr r3, [sp, 0x14] + adds r3, 0xC0 + str r3, [sp, 0x14] + ldr r4, [sp, 0x18] + adds r4, 0xC0 + str r4, [sp, 0x18] + movs r5, 0x8 + add r10, r5 + adds r7, 0x1 + mov r1, r9 + movs r2, 0x4 + ldrsh r0, [r1, r2] + cmp r7, r0 + blt _080514EE +_08051598: + ldr r3, [sp, 0x10] + str r3, [sp, 0x8] + ldr r4, [sp, 0xC] + mov r8, r4 + mov r5, r9 + movs r1, 0x6 + ldrsh r0, [r5, r1] + cmp r8, r0 + blt _080514C4 + b _08051640 + .align 2, 0 +_080515AC: .4byte gDungeonGlobalData +_080515B0: .4byte gUnknown_202F1DC +_080515B4: .4byte 0x00013568 +_080515B8: .4byte gUnknown_202F1E1 +_080515BC: .4byte 0x0000e250 +_080515C0: .4byte 0x0000e254 +_080515C4: .4byte 0x0000e258 +_080515C8: .4byte 0x0000e25c +_080515CC: .4byte 0x0000e27c +_080515D0: .4byte 0x0000e87c +_080515D4: .4byte 0x0000e8bc +_080515D8: + mov r2, r9 + movs r3, 0x2 + ldrsh r2, [r2, r3] + mov r8, r2 + b _08051636 +_080515E2: + mov r0, r9 + movs r1, 0 + ldrsh r7, [r0, r1] + movs r2, 0x4 + ldrsh r0, [r0, r2] + mov r3, r8 + adds r3, 0x1 + str r3, [sp, 0xC] + cmp r7, r0 + bge _08051632 +_080515F6: + bl sub_80511F0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r7, 0 + mov r1, r8 + bl GetMapTile_2 + adds r5, r0, 0 + ldrb r6, [r5, 0x9] + movs r0, 0x1 + str r0, [sp] + adds r0, r5, 0 + adds r1, r4, 0 + adds r2, r7, 0 + mov r3, r8 + bl sub_805124C + strb r6, [r5, 0x9] + ldr r4, [sp, 0x4] + ldr r5, _08051650 + adds r0, r4, r5 + strb r6, [r0] + adds r7, 0x1 + mov r1, r9 + movs r2, 0x4 + ldrsh r0, [r1, r2] + cmp r7, r0 + blt _080515F6 +_08051632: + ldr r3, [sp, 0xC] + mov r8, r3 +_08051636: + mov r4, r9 + movs r5, 0x6 + ldrsh r0, [r4, r5] + cmp r8, r0 + blt _080515E2 +_08051640: + 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 +_08051650: .4byte 0x0000e8bc + thumb_func_end sub_8051438 + + thumb_func_start sub_8051654 +sub_8051654: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + str r0, [sp] + ldr r4, _080516EC + ldr r1, [r4, 0x8] + ldr r0, [r4] + subs r1, r0 + subs r1, 0x2 + movs r0, 0x3 + bl sub_808411C + mov r8, r0 + cmp r0, 0x2 + bgt _0805167C + movs r0, 0x3 + mov r8, r0 +_0805167C: + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x4] + subs r1, r0 + subs r1, 0x2 + movs r0, 0x3 + bl sub_808411C + mov r9, r0 + cmp r0, 0x2 + bgt _08051694 + movs r1, 0x3 + mov r9, r1 +_08051694: + movs r0, 0x2 + movs r1, 0x4 + bl sub_808411C + mov r10, r0 + movs r5, 0 + cmp r5, r10 + bge _08051734 + ldr r0, [r4, 0x8] + ldr r1, [r4] + subs r0, r1 + cmp r0, r8 + ble _08051734 + adds r6, r4, 0 +_080516B0: + movs r0, 0x64 + bl DungeonRandomCapped + cmp r0, 0x31 + bgt _080516F4 + ldr r4, [r6, 0x4] + ldr r0, [r6, 0xC] + adds r7, r5, 0x1 + cmp r4, r0 + bge _080516E4 + ldr r5, _080516EC + ldr r0, _080516F0 + adds r2, r0, 0 +_080516CA: + ldr r0, [r5] + adds r1, r4, 0 + str r2, [sp, 0xC] + bl GetMapTile_2 + ldrh r1, [r0] + ldr r2, [sp, 0xC] + ands r1, r2 + strh r1, [r0] + adds r4, 0x1 + ldr r0, [r5, 0xC] + cmp r4, r0 + blt _080516CA +_080516E4: + ldr r0, [r6] + adds r0, 0x1 + str r0, [r6] + b _08051724 + .align 2, 0 +_080516EC: .4byte gUnknown_202F1B8 +_080516F0: .4byte 0x0000ffdf +_080516F4: + ldr r0, [r6, 0x8] + subs r0, 0x1 + str r0, [r6, 0x8] + ldr r4, [r6, 0x4] + ldr r0, [r6, 0xC] + adds r7, r5, 0x1 + cmp r4, r0 + bge _08051724 + ldr r5, _08051784 + ldr r1, _08051788 + adds r2, r1, 0 +_0805170A: + ldr r0, [r5, 0x8] + adds r1, r4, 0 + str r2, [sp, 0xC] + bl GetMapTile_2 + ldrh r1, [r0] + ldr r2, [sp, 0xC] + ands r1, r2 + strh r1, [r0] + adds r4, 0x1 + ldr r0, [r5, 0xC] + cmp r4, r0 + blt _0805170A +_08051724: + adds r5, r7, 0 + cmp r5, r10 + bge _08051734 + ldr r0, [r6, 0x8] + ldr r1, [r6] + subs r0, r1 + cmp r0, r8 + bgt _080516B0 +_08051734: + movs r5, 0 + ldr r3, _08051784 + cmp r5, r10 + bge _080517CE + ldr r0, [r3, 0xC] + ldr r1, [r3, 0x4] + subs r0, r1 + cmp r0, r9 + ble _080517CE + adds r6, r3, 0 +_08051748: + movs r0, 0x64 + bl DungeonRandomCapped + cmp r0, 0x31 + bgt _0805178C + ldr r4, [r6] + ldr r0, [r6, 0x8] + adds r7, r5, 0x1 + cmp r4, r0 + bge _0805177C + ldr r5, _08051784 + ldr r0, _08051788 + adds r2, r0, 0 +_08051762: + ldr r1, [r5, 0x4] + adds r0, r4, 0 + str r2, [sp, 0xC] + bl GetMapTile_2 + ldrh r1, [r0] + ldr r2, [sp, 0xC] + ands r1, r2 + strh r1, [r0] + adds r4, 0x1 + ldr r0, [r5, 0x8] + cmp r4, r0 + blt _08051762 +_0805177C: + ldr r0, [r6, 0x4] + adds r0, 0x1 + str r0, [r6, 0x4] + b _080517BC + .align 2, 0 +_08051784: .4byte gUnknown_202F1B8 +_08051788: .4byte 0x0000ffdf +_0805178C: + ldr r0, [r6, 0xC] + subs r0, 0x1 + str r0, [r6, 0xC] + ldr r4, [r6] + ldr r0, [r6, 0x8] + adds r7, r5, 0x1 + cmp r4, r0 + bge _080517BC + ldr r5, _080518E4 + ldr r1, _080518E8 + adds r2, r1, 0 +_080517A2: + ldr r1, [r5, 0xC] + adds r0, r4, 0 + str r2, [sp, 0xC] + bl GetMapTile_2 + ldrh r1, [r0] + ldr r2, [sp, 0xC] + ands r1, r2 + strh r1, [r0] + adds r4, 0x1 + ldr r0, [r5, 0x8] + cmp r4, r0 + blt _080517A2 +_080517BC: + adds r5, r7, 0 + ldr r3, _080518E4 + cmp r5, r10 + bge _080517CE + ldr r1, [r6, 0xC] + ldr r0, [r6, 0x4] + subs r1, r0 + cmp r1, r9 + bgt _08051748 +_080517CE: + ldr r7, [r3] + ldr r0, [r3, 0x8] + cmp r7, r0 + bge _08051824 + adds r4, r3, 0 + mov r9, r3 +_080517DA: + ldr r5, [r4, 0x4] + ldr r0, [r4, 0xC] + adds r1, r7, 0x1 + mov r8, r1 + cmp r5, r0 + bge _0805181A + ldr r3, _080518E4 + ldr r0, _080518E8 + adds r6, r0, 0 +_080517EC: + adds r0, r7, 0 + adds r1, r5, 0 + str r3, [sp, 0x10] + bl GetMapTile_2 + adds r2, r0, 0 + ldrh r1, [r2] + movs r0, 0x20 + ands r0, r1 + ldr r3, [sp, 0x10] + cmp r0, 0 + beq _08051812 + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08051812 + adds r0, r1, 0 + ands r0, r6 + strh r0, [r2] +_08051812: + adds r5, 0x1 + ldr r0, [r4, 0xC] + cmp r5, r0 + blt _080517EC +_0805181A: + mov r7, r8 + mov r1, r9 + ldr r0, [r1, 0x8] + cmp r7, r0 + blt _080517DA +_08051824: + ldr r0, [r3] + ldr r1, [r3, 0x8] + adds r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r2, r0, 1 + ldr r0, [r3, 0x4] + ldr r1, [r3, 0xC] + adds r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + subs r0, 0x1 + mov r10, r0 + movs r0, 0 + mov r9, r0 + subs r7, r2, 0x1 + adds r0, r2, 0x2 + cmp r7, r0 + bge _080518D2 + adds r2, r0, 0 + str r2, [sp, 0x4] +_08051850: + mov r5, r10 + adds r0, r5, 0x3 + adds r1, r7, 0x1 + mov r8, r1 + mov r1, r9 + adds r1, 0x1 + str r1, [sp, 0x8] + cmp r5, r0 + bge _080518C6 + movs r3, 0 +_08051864: + adds r0, r7, 0 + adds r1, r5, 0 + str r3, [sp, 0x10] + bl GetMapTile_2 + adds r6, r0, 0 + ldrh r1, [r6] + movs r0, 0x20 + ands r0, r1 + ldr r3, [sp, 0x10] + cmp r0, 0 + beq _080518BA + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080518BA + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _080518BA + mov r0, r9 + lsls r2, r0, 1 + adds r2, r3 + ldr r0, [sp] + ldrb r1, [r0, 0x18] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + adds r2, r0 + ldr r1, _080518EC + adds r2, r1 + movs r0, 0 + ldrsh r4, [r2, r0] + movs r0, 0x64 + bl DungeonRandomCapped + ldr r3, [sp, 0x10] + cmp r4, r0 + ble _080518BA + ldrh r1, [r6, 0x4] + movs r0, 0x2 + orrs r0, r1 + strh r0, [r6, 0x4] +_080518BA: + adds r5, 0x1 + adds r3, 0x6 + mov r0, r10 + adds r0, 0x3 + cmp r5, r0 + blt _08051864 +_080518C6: + mov r7, r8 + ldr r1, [sp, 0x8] + mov r9, r1 + ldr r0, [sp, 0x4] + cmp r7, r0 + blt _08051850 +_080518D2: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080518E4: .4byte gUnknown_202F1B8 +_080518E8: .4byte 0x0000ffdf +_080518EC: .4byte gUnknown_80F57D4 + thumb_func_end sub_8051654 + + thumb_func_start sub_80518F0 +sub_80518F0: + push {r4-r7,lr} + movs r5, 0 + movs r6, 0x10 + movs r7, 0 +_080518F8: + adds r0, r5, 0 + movs r1, 0x1 + bl GetMapTile_2 + adds r4, r0, 0 + bl sub_804FD10 + cmp r5, 0 + beq _0805190E + cmp r5, 0x37 + bne _08051914 +_0805190E: + ldrh r0, [r4] + orrs r0, r6 + strh r0, [r4] +_08051914: + adds r0, r5, 0 + movs r1, 0x1E + bl GetMapTile_2 + adds r4, r0, 0 + bl sub_804FD10 + cmp r5, 0 + beq _0805192A + cmp r5, 0x37 + bne _08051930 +_0805192A: + ldrh r0, [r4] + orrs r0, r6 + strh r0, [r4] +_08051930: + adds r5, 0x1 + cmp r5, 0x37 + ble _080518F8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80518F0 + + thumb_func_start sub_805193C +sub_805193C: + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r3, 0 + ldr r4, [sp, 0x18] + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 16 + lsls r2, 16 + lsrs r1, 16 + orrs r1, r2 + str r1, [sp, 0x4] + adds r0, r5, 0 + bl sub_805210C + lsls r0, 24 + cmp r0, 0 + beq _0805196A + mov r0, sp + movs r1, 0x76 + movs r2, 0 + bl xxx_init_itemslot_8090A8C + b _08051974 +_0805196A: + mov r0, sp + adds r1, r5, 0 + movs r2, 0 + bl xxx_init_itemslot_8090A8C +_08051974: + mov r0, sp + ldrb r0, [r0] + orrs r4, r0 + mov r0, sp + strb r4, [r0] + cmp r6, 0 + beq _08051984 + strb r6, [r0, 0x1] +_08051984: + add r0, sp, 0x4 + mov r1, sp + movs r2, 0x1 + bl sub_80460F8 + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_805193C + + thumb_func_start sub_8051998 +sub_8051998: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + mov r8, r1 + mov r9, r2 + lsls r0, 16 + asrs r0, 16 + adds r1, r0, 0 + lsls r3, 24 + lsrs r6, r3, 24 + adds r7, r6, 0 + ldr r0, _080519E4 + cmp r1, r0 + bne _080519E8 + mov r1, sp + movs r5, 0 + movs r4, 0 + movs r0, 0x3C + strh r0, [r1] + bl sub_803DA20 + mov r1, sp + strh r0, [r1, 0x8] + mov r0, sp + strb r6, [r0, 0x2] + str r4, [sp, 0x4] + strb r5, [r0, 0x10] + mov r1, r8 + strh r1, [r0, 0xC] + mov r1, r9 + strh r1, [r0, 0xE] + movs r1, 0x1 + bl sub_806B7F8 + b _08051A14 + .align 2, 0 +_080519E4: .4byte 0x000001a5 +_080519E8: + cmp r1, 0 + beq _08051A14 + mov r0, sp + movs r5, 0 + movs r4, 0 + strh r1, [r0] + adds r0, r1, 0 + bl sub_803DA20 + mov r1, sp + strh r0, [r1, 0x8] + mov r0, sp + strb r7, [r0, 0x2] + str r4, [sp, 0x4] + strb r5, [r0, 0x10] + mov r1, r8 + strh r1, [r0, 0xC] + mov r1, r9 + strh r1, [r0, 0xE] + movs r1, 0x1 + bl sub_806B7F8 +_08051A14: + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8051998 + + thumb_func_start sub_8051A24 +sub_8051A24: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_2 + adds r7, r0, 0 + lsls r4, 16 + lsls r5, 16 + lsrs r4, 16 + orrs r4, r5 + str r4, [sp] + adds r0, r6, 0 + mov r1, sp + movs r2, 0 + bl sub_8045684 + cmp r0, 0 + beq _08051A66 + str r0, [r7, 0x14] + adds r0, 0x20 + mov r1, r8 + strb r1, [r0] +_08051A66: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8051A24 + + thumb_func_start sub_8051A74 +sub_8051A74: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r6, r2, 0 + adds r7, r3, 0 + ldr r0, [sp, 0x20] + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + cmp r1, 0xF + bls _08051AA2 + ldrh r0, [r4] + ldr r1, _08051AB4 + ands r1, r0 + movs r0, 0x1 + orrs r1, r0 + strh r1, [r4] +_08051AA2: + mov r0, r8 + cmp r0, 0x45 + bls _08051AAA + b _08051D68 +_08051AAA: + lsls r0, 2 + ldr r1, _08051AB8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08051AB4: .4byte 0x0000fffc +_08051AB8: .4byte _08051ABC + .align 2, 0 +_08051ABC: + .4byte _08051BF0 + .4byte _08051C0C + .4byte _08051D50 + .4byte _08051E1A + .4byte _08051C20 + .4byte _08051C54 + .4byte _08051C64 + .4byte _08051C74 + .4byte _08051C94 + .4byte _08051D00 + .4byte _08051C7E + .4byte _08051D10 + .4byte _08051D24 + .4byte _08051D50 + .4byte _08051D50 + .4byte _08051E1A + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051C94 + .4byte _08051CD4 + .4byte _08051BD4 +_08051BD4: + ldr r0, _08051BFC + ldr r0, [r0] + ldr r2, _08051C00 + adds r1, r0, r2 + strh r6, [r1] + ldr r3, _08051C04 + adds r0, r3 + strh r7, [r0] + movs r0, 0xB + adds r1, r6, 0 + adds r2, r7, 0 + movs r3, 0 + bl sub_8051A24 +_08051BF0: + ldrh r1, [r4] + ldr r0, _08051C08 + ands r0, r1 + movs r1, 0x1 + movs r2, 0 + b _08051D42 + .align 2, 0 +_08051BFC: .4byte gDungeonGlobalData +_08051C00: .4byte 0x00000684 +_08051C04: .4byte 0x00000686 +_08051C08: .4byte 0x0000fffc +_08051C0C: + ldrh r1, [r4] + ldr r0, _08051C18 + ands r0, r1 + ldr r1, _08051C1C + ands r0, r1 + b _08051D5A + .align 2, 0 +_08051C18: .4byte 0x0000fffc +_08051C1C: .4byte 0x0000feff +_08051C20: + ldrh r1, [r4] + ldr r0, _08051C44 + ands r0, r1 + movs r1, 0x1 + movs r2, 0 + orrs r0, r1 + strh r0, [r4] + ldr r0, _08051C48 + ldr r0, [r0] + ldr r3, _08051C4C + adds r1, r0, r3 + strh r6, [r1] + ldr r1, _08051C50 + adds r0, r1 + strh r7, [r0] + strb r2, [r4, 0x9] + b _08051E1A + .align 2, 0 +_08051C44: .4byte 0x0000fffc +_08051C48: .4byte gDungeonGlobalData +_08051C4C: .4byte 0x0000e218 +_08051C50: .4byte 0x0000e21a +_08051C54: + ldrh r1, [r4] + ldr r0, _08051C60 + ands r0, r1 + movs r2, 0 + movs r1, 0x2 + b _08051D42 + .align 2, 0 +_08051C60: .4byte 0x0000fffc +_08051C64: + ldrh r1, [r4] + ldr r0, _08051C70 + ands r0, r1 + movs r1, 0x3 + b _08051D58 + .align 2, 0 +_08051C70: .4byte 0x0000fffc +_08051C74: + ldr r1, _08051C8C + movs r0, 0x1 + strb r0, [r1] + bl sub_8049840 +_08051C7E: + ldrh r1, [r4] + ldr r0, _08051C90 + ands r0, r1 + movs r1, 0x3 + orrs r0, r1 + b _08051D56 + .align 2, 0 +_08051C8C: .4byte gUnknown_202F1A8 +_08051C90: .4byte 0x0000fffc +_08051C94: + ldrh r1, [r4] + ldr r0, _08051CC0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strh r0, [r4] + ldrh r0, [r4, 0x4] + movs r2, 0 + orrs r0, r1 + ldr r1, _08051CC4 + ands r0, r1 + strh r0, [r4, 0x4] + strb r2, [r4, 0x9] + ldr r0, _08051CC8 + ldr r0, [r0] + ldr r2, _08051CCC + adds r1, r0, r2 + strh r6, [r1] + ldr r3, _08051CD0 + adds r0, r3 + strh r7, [r0] + b _08051E1A + .align 2, 0 +_08051CC0: .4byte 0x0000fffc +_08051CC4: .4byte 0x0000fffd +_08051CC8: .4byte gDungeonGlobalData +_08051CCC: .4byte 0x0000e21c +_08051CD0: .4byte 0x0000e21e +_08051CD4: + ldrh r1, [r4] + movs r2, 0x80 + lsls r2, 4 + adds r0, r2, 0 + orrs r0, r1 + ldr r1, _08051CF8 + ands r0, r1 + movs r1, 0x1 + movs r2, 0 + orrs r0, r1 + strh r0, [r4] + ldrh r1, [r4, 0x4] + ldr r0, _08051CFC + ands r0, r1 + strh r0, [r4, 0x4] + strb r2, [r4, 0x9] + b _08051E1A + .align 2, 0 +_08051CF8: .4byte 0x0000fffc +_08051CFC: .4byte 0x0000fffd +_08051D00: + ldrh r1, [r4] + ldr r0, _08051D0C + ands r0, r1 + movs r1, 0x1 + b _08051D58 + .align 2, 0 +_08051D0C: .4byte 0x0000fffc +_08051D10: + ldrh r1, [r4] + ldr r0, _08051D20 + ands r0, r1 + movs r1, 0x1 + movs r2, 0 + orrs r0, r1 + b _08051D3C + .align 2, 0 +_08051D20: .4byte 0x0000fffc +_08051D24: + ldrh r1, [r4] + ldr r0, _08051D4C + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + movs r2, 0x80 + lsls r2, 5 + adds r1, r2, 0 + orrs r0, r1 + movs r1, 0x10 + orrs r0, r1 + movs r2, 0 +_08051D3C: + movs r3, 0x80 + lsls r3, 4 + adds r1, r3, 0 +_08051D42: + orrs r0, r1 + strh r0, [r4] + strb r2, [r4, 0x9] + b _08051E1A + .align 2, 0 +_08051D4C: .4byte 0x0000fffc +_08051D50: + ldrh r1, [r4] + ldr r0, _08051D64 + ands r0, r1 +_08051D56: + movs r1, 0x10 +_08051D58: + orrs r0, r1 +_08051D5A: + strh r0, [r4] + movs r0, 0xFF + strb r0, [r4, 0x9] + b _08051E1A + .align 2, 0 +_08051D64: .4byte 0x0000fffc +_08051D68: + mov r0, r8 + subs r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xCB + bhi _08051E1A + mov r1, r8 + lsls r0, r1, 4 + ldr r1, _08051DA0 + adds r5, r0, r1 + ldrb r0, [r5, 0xC] + strb r0, [r4, 0x9] + ldrb r1, [r5] + cmp r1, 0 + beq _08051DB8 + mov r2, r9 + cmp r2, 0 + beq _08051DA4 + ldrb r0, [r5] + movs r1, 0x2 + ldrsh r3, [r5, r1] + ldr r1, [r5, 0x4] + str r1, [sp] + adds r1, r6, 0 + adds r2, r7, 0 + bl sub_805193C + b _08051DDC + .align 2, 0 +_08051DA0: .4byte gUnknown_80F6D20 +_08051DA4: + ldr r0, _08051DB0 + ldr r0, [r0] + ldr r2, _08051DB4 + adds r0, r2 + strb r1, [r0] + b _08051DDC + .align 2, 0 +_08051DB0: .4byte gDungeonGlobalData +_08051DB4: .4byte 0x0000068b +_08051DB8: + ldr r2, [r5, 0x4] + cmp r2, 0 + beq _08051DDC + ldr r0, _08051E2C + ldr r1, [r0] + subs r0, r2, 0x1 + lsls r0, 2 + adds r0, r1, r0 + ldr r3, _08051E30 + adds r0, r3 + strh r6, [r0] + ldr r0, [r5, 0x4] + subs r0, 0x1 + lsls r0, 2 + adds r1, r0 + ldr r0, _08051E34 + adds r1, r0 + strh r7, [r1] +_08051DDC: + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08051DF2 + ldrb r3, [r5, 0xA] + mov r1, r8 + str r1, [sp] + adds r1, r6, 0 + adds r2, r7, 0 + bl sub_8051998 +_08051DF2: + ldrb r0, [r5, 0xB] + cmp r0, 0x14 + beq _08051E08 + mov r2, r9 + cmp r2, 0 + beq _08051E08 + ldrb r3, [r5, 0xD] + adds r1, r6, 0 + adds r2, r7, 0 + bl sub_8051A24 +_08051E08: + ldrb r0, [r5, 0xE] + cmp r0, 0 + beq _08051E1A + ldrh r0, [r4] + ldr r1, _08051E38 + ands r1, r0 + movs r0, 0x2 + orrs r1, r0 + strh r1, [r4] +_08051E1A: + movs r0, 0 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08051E2C: .4byte gDungeonGlobalData +_08051E30: .4byte 0x0000e220 +_08051E34: .4byte 0x0000e222 +_08051E38: .4byte 0x0000fffc + thumb_func_end sub_8051A74 + + thumb_func_start sub_8051E3C +sub_8051E3C: + push {r4-r6,lr} + sub sp, 0x4 + movs r5, 0 +_08051E42: + movs r4, 0 + adds r6, r5, 0x1 +_08051E46: + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_2 + adds r2, r0, 0 + ldrb r0, [r2, 0xE] + cmp r0, 0xF + bls _08051E66 + adds r1, r0, 0 + movs r0, 0 + str r0, [sp] + adds r0, r2, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_8051A74 +_08051E66: + adds r4, 0x1 + cmp r4, 0x37 + ble _08051E46 + adds r5, r6, 0 + cmp r5, 0x1F + ble _08051E42 + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8051E3C + + thumb_func_start sub_8051E7C +sub_8051E7C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + mov r9, r0 + movs r1, 0x4 + ldrsh r0, [r0, r1] + mov r2, r9 + movs r3, 0x6 + ldrsh r1, [r2, r3] + subs r1, 0x1 + bl GetMapTile_2 + str r0, [sp, 0x8] + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 5 + ands r0, r1 + cmp r0, 0 + bne _08051EB8 + ldr r0, _08051EB4 + ldr r1, [r0] + mov r0, r9 + bl SendMessage + b _080520F6 + .align 2, 0 +_08051EB4: .4byte gUnknown_80FDDF0 +_08051EB8: + ldr r0, _08051EF0 + ldr r0, [r0] + ldr r1, _08051EF4 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08051EC8 + b _080520EC +_08051EC8: + mov r2, r9 + ldrh r1, [r2, 0x6] + subs r1, 0x1 + lsls r1, 16 + ldrh r0, [r2, 0x4] + orrs r0, r1 + str r0, [sp, 0x4] + mov r0, r9 + bl GetEntityRoomIndex + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0xC] + mov r3, r9 + movs r1, 0x6 + ldrsh r0, [r3, r1] + adds r6, r0, 0 + subs r6, 0x15 + b _08051FE0 + .align 2, 0 +_08051EF0: .4byte gDungeonGlobalData +_08051EF4: .4byte 0x00003a09 +_08051EF8: + mov r2, r9 + movs r3, 0x4 + ldrsh r0, [r2, r3] + adds r5, r0, 0 + subs r5, 0x14 + adds r0, 0x14 + adds r1, r6, 0x1 + str r1, [sp, 0x10] + cmp r5, r0 + bgt _08051FD8 + ldr r2, _080520C0 + mov r10, r2 +_08051F10: + mov r0, r10 + ldr r3, [r0] + ldr r1, _080520C4 + adds r0, r3, r1 + ldr r1, [r0] + subs r2, r5, r1 + mov r8, r2 + ldr r2, _080520C8 + adds r0, r3, r2 + ldr r2, [r0] + subs r7, r6, r2 + mov r0, r8 + cmp r0, 0 + blt _08051FCA + cmp r7, 0 + blt _08051FCA + cmp r0, 0x7 + bgt _08051FCA + cmp r7, 0x7 + bgt _08051FCA + adds r0, r1, 0x1 + cmp r5, r0 + blt _08051FCA + adds r0, r2, 0x1 + cmp r6, r0 + blt _08051FCA + ldr r1, _080520CC + adds r0, r3, r1 + ldr r0, [r0] + subs r0, 0x1 + cmp r5, r0 + bge _08051FCA + ldr r2, _080520D0 + adds r0, r3, r2 + ldr r0, [r0] + subs r0, 0x1 + cmp r6, r0 + bge _08051FCA + adds r0, r5, 0 + adds r1, r6, 0 + bl GetMapTile_2 + adds r4, r0, 0 + ldrh r0, [r4] + movs r3, 0x80 + lsls r3, 1 + adds r1, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08051F9A + mov r0, r10 + ldr r2, [r0] + lsls r1, r7, 1 + adds r1, r7 + lsls r1, 3 + mov r3, r8 + lsls r0, r3, 1 + add r0, r8 + lsls r0, 6 + adds r1, r0 + adds r2, r1 + ldr r1, _080520D4 + adds r0, r2, r1 + ldrh r0, [r0] + strh r0, [r4] + ldr r3, _080520D8 + adds r2, r3 + ldrh r0, [r2] + strh r0, [r4, 0x4] +_08051F9A: + mov r1, r10 + ldr r0, [r1] + mov r2, r8 + lsls r1, r2, 3 + adds r1, r7, r1 + ldr r3, _080520DC + adds r0, r3 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_8051A74 + ldrh r1, [r4, 0x4] + movs r0, 0x3 + orrs r0, r1 + strh r0, [r4, 0x4] + ldr r0, [sp, 0xC] + cmp r0, 0xFF + beq _08051FCA + strb r0, [r4, 0x9] +_08051FCA: + adds r5, 0x1 + mov r2, r9 + movs r3, 0x4 + ldrsh r0, [r2, r3] + adds r0, 0x14 + cmp r5, r0 + ble _08051F10 +_08051FD8: + ldr r6, [sp, 0x10] + mov r1, r9 + movs r2, 0x6 + ldrsh r0, [r1, r2] +_08051FE0: + adds r0, 0x13 + cmp r6, r0 + ble _08051EF8 + mov r3, r9 + movs r1, 0x6 + ldrsh r0, [r3, r1] + adds r6, r0, 0 + subs r6, 0x15 + adds r0, 0x13 + ldr r7, _080520C0 + cmp r6, r0 + bgt _0805207A +_08051FF8: + mov r2, r9 + movs r3, 0x4 + ldrsh r0, [r2, r3] + adds r5, r0, 0 + subs r5, 0x14 + adds r0, 0x14 + adds r1, r6, 0x1 + str r1, [sp, 0x10] + cmp r5, r0 + bgt _0805206C + ldr r7, _080520C0 +_0805200E: + ldr r0, _080520C0 + ldr r4, [r0] + ldr r2, _080520C4 + adds r0, r4, r2 + ldr r2, [r0] + subs r1, r5, r2 + ldr r3, _080520C8 + adds r0, r4, r3 + ldr r3, [r0] + subs r0, r6, r3 + cmp r1, 0 + blt _0805205E + cmp r0, 0 + blt _0805205E + cmp r1, 0x7 + bgt _0805205E + cmp r0, 0x7 + bgt _0805205E + adds r0, r2, 0x1 + cmp r5, r0 + blt _0805205E + adds r0, r3, 0x1 + cmp r6, r0 + blt _0805205E + ldr r1, _080520CC + adds r0, r4, r1 + ldr r0, [r0] + subs r0, 0x1 + cmp r5, r0 + bge _0805205E + ldr r2, _080520D0 + adds r0, r4, r2 + ldr r0, [r0] + subs r0, 0x1 + cmp r6, r0 + bge _0805205E + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_80498A8 +_0805205E: + adds r5, 0x1 + mov r3, r9 + movs r1, 0x4 + ldrsh r0, [r3, r1] + adds r0, 0x14 + cmp r5, r0 + ble _0805200E +_0805206C: + ldr r6, [sp, 0x10] + mov r2, r9 + movs r3, 0x6 + ldrsh r0, [r2, r3] + adds r0, 0x13 + cmp r6, r0 + ble _08051FF8 +_0805207A: + ldr r0, [r7] + ldr r1, _080520E0 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + ldr r2, [sp, 0x8] + ldrh r1, [r2] + ldr r0, _080520E4 + ands r0, r1 + strh r0, [r2] + mov r3, r9 + movs r1, 0x4 + ldrsh r0, [r3, r1] + movs r2, 0x6 + ldrsh r1, [r3, r2] + subs r1, 0x1 + bl sub_80498A8 + bl sub_8049B8C + bl sub_8049ED4 + add r0, sp, 0x4 + bl sub_80429FC + ldr r0, _080520E8 + ldr r1, [r0] + mov r0, r9 + bl SendMessage + movs r0, 0x14 + movs r1, 0x3C + bl sub_803E708 + b _080520F6 + .align 2, 0 +_080520C0: .4byte gDungeonGlobalData +_080520C4: .4byte 0x0000e250 +_080520C8: .4byte 0x0000e254 +_080520CC: .4byte 0x0000e258 +_080520D0: .4byte 0x0000e25c +_080520D4: .4byte 0x0000e27c +_080520D8: .4byte 0x0000e280 +_080520DC: .4byte 0x0000e87c +_080520E0: .4byte 0x00003a09 +_080520E4: .4byte 0x0000efef +_080520E8: .4byte gUnknown_80FDDD0 +_080520EC: + ldr r0, _08052108 + ldr r1, [r0] + mov r0, r9 + bl SendMessage +_080520F6: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08052108: .4byte gUnknown_80FDDF0 + thumb_func_end sub_8051E7C + + thumb_func_start sub_805210C +sub_805210C: + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r3, 0 + ldr r7, _080521B4 + movs r4, 0x1 + ldr r2, [r7] +_0805211A: + ldrb r1, [r2] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _0805212A + ldrb r0, [r2, 0x2] + cmp r0, r5 + beq _080521C8 +_0805212A: + adds r2, 0x4 + adds r3, 0x1 + cmp r3, 0x13 + ble _0805211A + movs r3, 0 + ldr r0, _080521B8 + ldr r4, [r0] + movs r6, 0x1 +_0805213A: + movs r0, 0x64 + adds r2, r3, 0 + muls r2, r0 + adds r0, r2, r4 + ldr r1, _080521BC + adds r0, r1 + ldrb r1, [r0] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0805216C + adds r0, r2, r4 + ldr r1, _080521C0 + adds r0, r1 + ldrb r1, [r0] + adds r0, r6, 0 + ands r0, r1 + adds r1, r2, r4 + cmp r0, 0 + beq _0805216C + ldr r2, _080521C4 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, r5 + beq _080521C8 +_0805216C: + adds r3, 0x1 + cmp r3, 0x3 + ble _0805213A + movs r3, 0 + ldr r0, _080521B8 + ldr r4, [r0] +_08052178: + movs r0, 0x58 + muls r0, r3 + adds r2, r0, r4 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08052196 + adds r0, r2, 0 + adds r0, 0x28 + ldrb r0, [r0] + cmp r0, 0 + beq _08052196 + cmp r0, r5 + beq _080521C8 +_08052196: + adds r3, 0x1 + movs r0, 0xCE + lsls r0, 1 + cmp r3, r0 + ble _08052178 + ldr r0, [r7] + lsls r1, r5, 1 + adds r0, 0x50 + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0 + bne _080521C8 + movs r0, 0 + b _080521CA + .align 2, 0 +_080521B4: .4byte gTeamInventory_203B460 +_080521B8: .4byte gRecruitedPokemonRef +_080521BC: .4byte 0x00008df8 +_080521C0: .4byte 0x00008e38 +_080521C4: .4byte 0x00008e3a +_080521C8: + movs r0, 0x1 +_080521CA: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805210C + + thumb_func_start sub_80521D0 +sub_80521D0: + push {r4-r6,lr} + movs r1, 0 + ldr r5, _08052200 + ldr r6, _08052204 + ldr r4, _08052208 + ldr r3, _0805220C + movs r2, 0 +_080521DE: + ldr r0, [r4] + adds r0, r3 + adds r0, r1 + strb r2, [r0] + adds r1, 0x1 + cmp r1, 0x9 + ble _080521DE + movs r0, 0 + str r0, [r5] + movs r0, 0x1 + strb r0, [r6] + movs r0, 0 + bl sub_8052210 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08052200: .4byte gUnknown_202F1E8 +_08052204: .4byte gUnknown_203B434 +_08052208: .4byte gDungeonGlobalData +_0805220C: .4byte 0x0001c054 + thumb_func_end sub_80521D0 + + thumb_func_start sub_8052210 +sub_8052210: + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + ldr r5, _08052280 +_0805221A: + lsls r0, r4, 6 + ldr r1, [r5] + adds r0, r1 + ldr r1, _08052284 + adds r0, r1 + ldr r1, _08052288 + bl strcpy + adds r4, 0x1 + cmp r4, 0x9 + ble _0805221A + ldr r1, _08052280 + ldr r0, [r1] + ldr r2, _0805228C + adds r0, r2 + movs r3, 0 + strb r3, [r0] + ldr r0, [r1] + adds r2, 0x1 + adds r1, r0, r2 + strh r3, [r1] + adds r2, 0x2 + adds r1, r0, r2 + strh r3, [r1] + adds r2, 0x2 + adds r1, r0, r2 + strh r3, [r1] + ldr r1, _08052290 + adds r2, r0, r1 + movs r1, 0x4 + strh r1, [r2] + ldr r2, _08052294 + adds r0, r2 + str r3, [r0] + cmp r6, 0 + beq _08052278 + ldr r0, _08052298 + ldr r0, [r0] + cmp r0, 0x3 + bne _08052278 + movs r0, 0 + movs r1, 0 + bl sub_803EAF0 + movs r0, 0xB + bl sub_803E46C +_08052278: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08052280: .4byte gDungeonGlobalData +_08052284: .4byte 0x0001bdd4 +_08052288: .4byte gUnknown_80F7AE8 +_0805228C: .4byte 0x0001c05f +_08052290: .4byte 0x0001c066 +_08052294: .4byte 0x0001c06c +_08052298: .4byte gUnknown_202EDD0 + thumb_func_end sub_8052210 + + .align 2,0 |