// File: /workspace/github_cpp_makefile_star2_O2/kaiming[P]Chamber-Crawler-3k/Board/board.cc
// Function: Board::generateFloor()
void Board::generateFloor() {
    // Begin RNG piece generation


    // Generate player
    int pChamber = std::rand() % static_cast<int>(chambers.size());
    int tile = std::rand() % static_cast<int>(chambers[pChamber].size());

    // Insert Player
    chambers[pChamber][tile]->setOccupant(playerPtr);
    player = chambers[pChamber][tile];


    // Generate exit stairs
    int chamber;

    // Ensure exit stairs are not in the same chamber as the player
    do {
        chamber = std::rand() % static_cast<int>(chambers.size());
    } while (chamber == pChamber);

    tile = std::rand() % static_cast<int>(chambers[chamber].size());

        // Insert exit stairs
    chambers[chamber][tile]->setExit(true);


    // Generate 10 Potions
    for (int i = 0; i < 10; i++) {
        // Generate type
        int type = std::rand() % 6;
        std::shared_ptr<Potion> temp;

        if (type == 0) {
            temp = std::make_shared<RH>();
        } else if (type == 1) {
            temp = std::make_shared<BA>();
        } else if (type == 2) {
            temp = std::make_shared<BD>();
        } else if (type == 3) {
            temp = std::make_shared<PH>();
        } else if (type == 4) {
            temp = std::make_shared<WA>();
        } else if (type == 5) {
            temp = std::make_shared<WD>();
        }

        // Generate location (make sure not occupied)
        do {
            chamber = std::rand() % static_cast<int>(chambers.size());
            tile = std::rand() % static_cast<int>(chambers[chamber].size());
        } while (chambers[chamber][tile]->getPotion() || chambers[chamber][tile]->isExit() || chambers[chamber][tile]->getOccupant());

        // Place type at location
        chambers[chamber][tile]->setPotion(temp);
    }


    // Generate 10 Gold
    for (int i = 0; i < 10; i++) {
        // Generate type
        int type = std::rand() % 8;
        std::shared_ptr<Gold> temp;

        if (type >= 0 && type <= 4) {
            temp = std::make_shared<Gold>("Normal Hoard", 2);
        } else if (type == 5 || type == 6) {
            temp = std::make_shared<Gold>("Small Hoard", 1);
        } else if (type == 7) {
            temp = std::make_shared<DragonHoard>();
        }

        // Generate location (make sure not occupied)
        do {
            chamber = std::rand() % static_cast<int>(chambers.size());
            tile = std::rand() % static_cast<int>(chambers[chamber].size());
        } while (chambers[chamber][tile]->getPotion() || chambers[chamber][tile]->getGold() || chambers[chamber][tile]->isExit() || chambers[chamber][tile]->getOccupant()); // DLC EXTENSION HERE: if gold can stack, remove second if clause
        

        // Place type at location
        chambers[chamber][tile]->setGold(temp);

        // If dragonHoard type, place Dragon around it
        if (type == 7) {
            // Add to dragonHoards
            dragonHoards[floorNum-1].emplace_back(std::dynamic_pointer_cast<WalkableTile>(chambers[chamber][tile])); 

            // Allocate dragon spawn destination
            std::shared_ptr<WalkableTile> destination = nullptr;

            // Generate direction around DragonHoard
            std::vector<std::string> directions;
            directions.push_back("no");
            directions.push_back("ea");
            directions.push_back("so");
            directions.push_back("we");
            directions.push_back("ne");
            directions.push_back("nw");
            directions.push_back("se");
            directions.push_back("sw");
            int i = 0;

            do {
                // Exit case in event that no suitable location found
                if (i > 80) {
                    break;
                } else {
                    i++;
                }
                
                int rng = std::rand() % 8;

                destination = validDest(chambers[chamber][tile], directions[rng]);

            } while (!destination || !isUnoccupied(destination)); 


            // Place dragon at location and store in DragonHoard
            destination->setOccupant(std::dynamic_pointer_cast<DragonHoard>(temp)->getDragon());
            std::dynamic_pointer_cast<DragonHoard>(temp)->setDragonTile(destination);
        }
    }


    // Generate 20 Enemies
    for (int i = 0; i < 20; i++) {
        // Generate type
        int type = std::rand() % 18;
        std::shared_ptr<Enemy> temp;

        if (type >= 0 && type <= 3) {
            temp = std::make_shared<Human>();
        } else if (type >= 4 && type <= 6) {
            temp = std::make_shared<Dwarf>();
        } else if (type >= 7 && type <= 11) {
            temp = std::make_shared<Halfling>();
        } else if (type >= 12 && type <= 13) {
            temp = std::make_shared<Elf>();
        } else if (type >= 14 && type <= 15) {
            temp = std::make_shared<Orc>();
        } else if (type >= 16 && type <= 17) {
            temp = std::make_shared<Merchant>();
        }

        // Generate location (make sure not occupied)
        do {
            chamber = std::rand() % static_cast<int>(chambers.size());
            tile = std::rand() % static_cast<int>(chambers[chamber].size());
        } while (chambers[chamber][tile]->getPotion() || chambers[chamber][tile]->getGold() || chambers[chamber][tile]->getOccupant() || chambers[chamber][tile]->isExit());

        // Place type at location
        chambers[chamber][tile]->setOccupant(temp);
        enemies[floorNum-1].emplace_back(chambers[chamber][tile]);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x138, %rsp            # imm = 0x138
movq %rdi, %rbx
callq 0x5090
movl %eax, %ecx
movq 0xe8(%rbx), %rax
subq 0xe0(%rbx), %rax
pushq $0x18
popq %rsi
cqto
idivq %rsi
movq %rax, %rsi
movl %ecx, %eax
cltd
idivl %esi
movl %edx, %r13d
callq 0x5090
movslq %r13d, %rcx
movq 0xe0(%rbx), %rdx
imulq $0x18, %rcx, %rbp
movq (%rdx,%rbp), %rcx
movq 0x8(%rdx,%rbp), %rsi
subq %rcx, %rsi
shrq $0x4, %rsi
cltd
idivl %esi
movslq %edx, %r14
shlq $0x4, %r14
movq (%rcx,%r14), %r15
leaq 0xf8(%rbx), %rsi
leaq 0x108(%rsp), %r12
movq %r12, %rdi
callq 0x12db4
movq %r15, %rdi
movq %r12, %rsi
callq 0x17436
leaq 0x110(%rsp), %rdi
callq 0x6c00
movq 0xe0(%rbx), %rax
addq (%rax,%rbp), %r14
leaq 0xb8(%rbx), %rdi
movq %r14, %rsi
callq 0x1275e
pushq $0x18
popq %rbp
callq 0x5090
movl %eax, %ecx
movq 0xe8(%rbx), %rax
subq 0xe0(%rbx), %rax
cqto
idivq %rbp
movq %rax, %rsi
movl %ecx, %eax
cltd
idivl %esi
cmpl %r13d, %edx
je 0xcf39
movl %edx, %r14d
callq 0x5090
movslq %r14d, %rcx
movq 0xe0(%rbx), %rdx
imulq $0x18, %rcx, %rcx
movq (%rdx,%rcx), %rsi
movq 0x8(%rdx,%rcx), %rcx
subq %rsi, %rcx
shrq $0x4, %rcx
cltd
idivl %ecx
movslq %edx, %rax
shlq $0x4, %rax
movq (%rsi,%rax), %rdi
pushq $0x1
popq %rsi
callq 0x1747c
leaq 0x8(%rsp), %r15
xorl %eax, %eax
movq %rsp, %r13
cmpl $0xa, %eax
je 0xd193
movl %eax, 0x58(%rsp)
callq 0x5090
cltd
pushq $0x6
popq %rcx
idivl %ecx
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
cmpl $0x5, %edx
ja 0xd071
leaq 0xbcfa(%rip), %rcx      # 0x18cd0
movslq (%rcx,%rdx,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %r13, %rdi
callq 0x9b86
leaq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x1326c
jmp 0xd067
movq %r13, %rdi
callq 0x9c2d
leaq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x13324
jmp 0xd067
movq %r13, %rdi
callq 0x9bf7
leaq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x132c8
jmp 0xd067
movq %r13, %rdi
callq 0x9c12
leaq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x132f6
jmp 0xd067
movq %r13, %rdi
callq 0x9bdc
leaq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x1329a
jmp 0xd067
movq %r13, %rdi
callq 0x9c48
leaq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x13352
leaq 0x8(%rsp), %rdi
jmp 0xd189
callq 0x5090
movl %eax, %ecx
movq 0xe8(%rbx), %rax
subq 0xe0(%rbx), %rax
cqto
pushq $0x18
popq %rsi
idivq %rsi
movq %rax, %rsi
movl %ecx, %eax
cltd
idivl %esi
movl %edx, %r12d
callq 0x5090
movslq %r12d, %rcx
movq 0xe0(%rbx), %rdx
imulq $0x18, %rcx, %r12
movq (%rdx,%r12), %rcx
movq 0x8(%rdx,%r12), %rsi
subq %rcx, %rsi
shrq $0x4, %rsi
cltd
idivl %esi
movslq %edx, %rbp
shlq $0x4, %rbp
movq (%rcx,%rbp), %rsi
movq %r13, %rdi
callq 0x17440
cmpq $0x0, (%rsp)
jne 0xd186
movq 0xe0(%rbx), %rax
movq (%rax,%r12), %rax
movq (%rax,%rbp), %rdi
callq 0x17478
testb %al, %al
jne 0xd186
movq 0xe0(%rbx), %rax
movq (%rax,%r12), %rax
movq (%rax,%rbp), %rsi
leaq 0x40(%rsp), %rdi
callq 0x17424
movq 0x40(%rsp), %r14
leaq 0x48(%rsp), %rdi
callq 0x6c00
movq %r15, %rdi
callq 0x6c00
testq %r14, %r14
jne 0xd071
movq 0xe0(%rbx), %rax
movq (%rax,%r12), %rax
movq (%rax,%rbp), %r12
leaq 0xf8(%rsp), %r14
movq %r14, %rdi
leaq 0x20(%rsp), %rsi
callq 0x1277a
movq %r12, %rdi
movq %r14, %rsi
callq 0x17452
leaq 0x100(%rsp), %rdi
callq 0x6c00
leaq 0x28(%rsp), %rdi
callq 0x6c00
movl 0x58(%rsp), %eax
incl %eax
pushq $0x18
popq %rbp
jmp 0xcfa6
movq %r15, %rdi
callq 0x6c00
jmp 0xd071
xorl %r14d, %r14d
leaq 0x20(%rsp), %r13
cmpl $0xa, %r14d
je 0xd6cc
callq 0x5090
cltd
pushq $0x8
popq %rcx
idivl %ecx
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
cmpl $0x4, %edx
movl %r14d, 0x7c(%rsp)
movq %rdx, 0x58(%rsp)
ja 0xd1e2
movl $0x2, (%rsp)
movq %r13, %rdi
leaq 0xb412(%rip), %rsi      # 0x185ea
movq %rsp, %rdx
callq 0x9c63
jmp 0xd203
leal -0x5(%rdx), %eax
cmpl $0x1, %eax
ja 0xd212
movl $0x1, (%rsp)
movq %r13, %rdi
leaq 0xb3fc(%rip), %rsi      # 0x185f7
movq %rsp, %rdx
callq 0x9c84
leaq 0x40(%rsp), %rdi
movq %r13, %rsi
callq 0x13380
jmp 0xd22c
cmpl $0x7, %edx
jne 0xd236
movq %r13, %rdi
callq 0x9cc6
leaq 0x40(%rsp), %rdi
movq %r13, %rsi
callq 0x133ae
leaq 0x28(%rsp), %rdi
callq 0x6c00
callq 0x5090
movl %eax, %ecx
movq 0xe8(%rbx), %rax
subq 0xe0(%rbx), %rax
cqto
idivq %rbp
movq %rax, %rsi
movl %ecx, %eax
cltd
idivl %esi
movl %edx, %r14d
callq 0x5090
movslq %r14d, %rcx
movq 0xe0(%rbx), %rdx
imulq $0x18, %rcx, %r15
movq (%rdx,%r15), %rcx
movq 0x8(%rdx,%r15), %rsi
subq %rcx, %rsi
shrq $0x4, %rsi
cltd
idivl %esi
movslq %edx, %r12
shlq $0x4, %r12
movq (%rcx,%r12), %rsi
movq %r13, %rdi
callq 0x17440
cmpq $0x0, 0x20(%rsp)
jne 0xd22c
movq 0xe0(%rbx), %rax
movq (%rax,%r15), %rax
movq (%rax,%r12), %rsi
movq %rsp, %rdi
callq 0x1745c
cmpq $0x0, (%rsp)
jne 0xd6bd
movq 0xe0(%rbx), %rax
movq (%rax,%r15), %rax
movq (%rax,%r12), %rdi
callq 0x17478
testb %al, %al
jne 0xd6bd
movq 0xe0(%rbx), %rax
movq (%rax,%r15), %rax
movq (%rax,%r12), %rsi
leaq 0x60(%rsp), %rdi
callq 0x17424
movq 0x60(%rsp), %r14
leaq 0x68(%rsp), %rdi
callq 0x6c00
leaq 0x8(%rsp), %rdi
callq 0x6c00
leaq 0x28(%rsp), %rdi
callq 0x6c00
testq %r14, %r14
jne 0xd236
movq 0xe0(%rbx), %rax
movq (%rax,%r15), %rax
movq (%rax,%r12), %r14
leaq 0xb8(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x9df8
movq %r14, %rdi
leaq 0xb8(%rsp), %rsi
callq 0x1746e
leaq 0xc0(%rsp), %rdi
callq 0x6c00
cmpl $0x7, 0x58(%rsp)
jne 0xd6a6
movslq 0x108(%rbx), %rax
movq 0x70(%rbx), %rcx
imulq $0x18, %rax, %rax
leaq (%rcx,%rax), %r14
addq $-0x18, %r14
movq 0xe0(%rbx), %rax
movq (%rax,%r15), %rsi
addq %r12, %rsi
movq %r13, %rdi
callq 0x126da
movq %r14, %rdi
movq %r13, %rsi
callq 0xbc42
leaq 0x28(%rsp), %rdi
callq 0x6c00
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movaps %xmm0, (%rsp)
andq $0x0, 0x10(%rsp)
movq %r13, %rdi
leaq 0xaf3b(%rip), %rsi      # 0x18301
leaq 0x80(%rsp), %r14
movq %r14, %rdx
callq 0x67bc
movq %rsp, %rdi
movq %r13, %rsi
callq 0x1269e
movq %r13, %rdi
callq 0x5100
movq %r13, %rdi
leaq 0xaf14(%rip), %rsi      # 0x18307
movq %r14, %rdx
callq 0x67bc
movq %rsp, %rdi
movq %r13, %rsi
callq 0x1269e
movq %r13, %rdi
callq 0x5100
movq %r13, %rdi
leaq 0xaeec(%rip), %rsi      # 0x18304
movq %r14, %rdx
callq 0x67bc
movq %rsp, %rdi
movq %r13, %rsi
callq 0x1269e
movq %r13, %rdi
callq 0x5100
movq %r13, %rdi
leaq 0xaecd(%rip), %rsi      # 0x1830a
movq %r14, %rdx
callq 0x67bc
movq %rsp, %rdi
movq %r13, %rsi
callq 0x1269e
movq %r13, %rdi
callq 0x5100
movq %r13, %rdi
leaq 0xaeab(%rip), %rsi      # 0x1830d
movq %r14, %rdx
callq 0x67bc
movq %rsp, %rdi
movq %r13, %rsi
callq 0x1269e
movq %r13, %rdi
callq 0x5100
movq %r13, %rdi
leaq 0xae89(%rip), %rsi      # 0x18310
movq %r14, %rdx
callq 0x67bc
movq %rsp, %rdi
movq %r13, %rsi
callq 0x1269e
movq %r13, %rdi
callq 0x5100
movq %r13, %rdi
leaq 0xae67(%rip), %rsi      # 0x18313
movq %r14, %rdx
callq 0x67bc
movq %rsp, %rdi
movq %r13, %rsi
callq 0x1269e
movq %r13, %rdi
callq 0x5100
movq %r13, %rdi
leaq 0xae45(%rip), %rsi      # 0x18316
movq %r14, %rdx
callq 0x67bc
movq %rsp, %rdi
movq %r13, %rsi
callq 0x1269e
movq %r13, %rdi
callq 0x5100
movq $0x0, 0x58(%rsp)
movq %r13, %rbp
callq 0x5090
cltd
pushq $0x8
popq %rcx
idivl %ecx
movl %edx, %r14d
movq 0xe0(%rbx), %rax
movq (%rax,%r15), %rsi
addq %r12, %rsi
leaq 0xe8(%rsp), %r13
movq %r13, %rdi
callq 0x7500
movslq %r14d, %rsi
shlq $0x5, %rsi
addq (%rsp), %rsi
leaq 0x118(%rsp), %r14
movq %r14, %rdi
callq 0x52b0
movq %r13, %rdx
movq %rbp, %r13
movq %rbp, %rdi
movq %rbx, %rsi
movq %r14, %rcx
callq 0xdb38
movq %r14, %rbp
leaq 0x60(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
callq 0x12f92
leaq 0x28(%rsp), %rdi
callq 0x6c00
movq %rbp, %rdi
callq 0x5100
leaq 0xf0(%rsp), %rdi
callq 0x6c00
cmpq $0x0, 0x60(%rsp)
je 0xd5ba
leaq 0xd8(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
callq 0x7500
movq %rbp, %rsi
callq 0xe256
movl %eax, %r14d
leaq 0xe0(%rsp), %rdi
callq 0x6c00
jmp 0xd5bd
xorl %r14d, %r14d
testb %r14b, %r14b
jne 0xd5d8
movq 0x58(%rsp), %rcx
leal 0x1(%rcx), %eax
cmpl $0x50, %ecx
movq %rax, 0x58(%rsp)
jb 0xd4f5
movq 0x60(%rsp), %r14
leaq 0x80(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x1243f
movq 0x80(%rsp), %rsi
movq %r13, %rdi
callq 0x151f8
movaps 0x20(%rsp), %xmm0
movaps %xmm0, 0x90(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq %r14, %rdi
leaq 0x90(%rsp), %rsi
callq 0x17436
pushq $0x18
popq %rbp
leaq 0x98(%rsp), %rdi
callq 0x6c00
leaq 0x28(%rsp), %rdi
callq 0x6c00
leaq 0x88(%rsp), %rdi
callq 0x6c00
movq %r13, %rdi
leaq 0x40(%rsp), %rsi
callq 0x1243f
movq 0x20(%rsp), %r14
leaq 0xc8(%rsp), %r15
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
callq 0x7500
movq %r14, %rdi
movq %r15, %rsi
callq 0x1521c
leaq 0xd0(%rsp), %rdi
callq 0x6c00
leaq 0x28(%rsp), %rdi
callq 0x6c00
movq %rsp, %rdi
callq 0x6bde
leaq 0x68(%rsp), %rdi
callq 0x6c00
leaq 0x48(%rsp), %rdi
callq 0x6c00
movl 0x7c(%rsp), %r14d
incl %r14d
jmp 0xd19b
leaq 0x8(%rsp), %rdi
callq 0x6c00
jmp 0xd22c
leaq 0x8(%rsp), %r15
xorl %ebp, %ebp
movq %rsp, %r14
cmpl $0x14, %ebp
je 0xd93f
callq 0x5090
cltd
pushq $0x12
popq %rcx
idivl %ecx
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
cmpl $0x3, %edx
movl %ebp, 0x58(%rsp)
ja 0xd715
movq %r14, %rdi
callq 0x9d18
leaq 0x20(%rsp), %rdi
movq %r14, %rsi
callq 0x133dc
jmp 0xd7aa
leal -0x4(%rdx), %eax
cmpl $0x2, %eax
ja 0xd734
movq %r14, %rdi
callq 0x9d33
leaq 0x20(%rsp), %rdi
movq %r14, %rsi
callq 0x1340a
jmp 0xd7aa
leal -0x7(%rdx), %eax
cmpl $0x4, %eax
ja 0xd753
movq %r14, %rdi
callq 0x9d9f
leaq 0x20(%rsp), %rdi
movq %r14, %rsi
callq 0x13438
jmp 0xd7aa
movl %edx, %eax
andl $-0x2, %eax
cmpl $0xe, %eax
je 0xd779
cmpl $0xc, %eax
jne 0xd790
movq %r14, %rdi
callq 0x9d4e
leaq 0x20(%rsp), %rdi
movq %r14, %rsi
callq 0x13466
jmp 0xd7aa
movq %r14, %rdi
callq 0x9d69
leaq 0x20(%rsp), %rdi
movq %r14, %rsi
callq 0x13494
jmp 0xd7aa
cmpl $0x10, %edx
jl 0xd7b4
movq %r14, %rdi
callq 0x9d84
leaq 0x20(%rsp), %rdi
movq %r14, %rsi
callq 0x134c2
leaq 0x8(%rsp), %rdi
callq 0x6c00
callq 0x5090
movl %eax, %ecx
movq 0xe8(%rbx), %rax
subq 0xe0(%rbx), %rax
cqto
pushq $0x18
popq %rsi
idivq %rsi
movq %rax, %rsi
movl %ecx, %eax
cltd
idivl %esi
movl %edx, %r12d
callq 0x5090
movslq %r12d, %rcx
movq 0xe0(%rbx), %rdx
imulq $0x18, %rcx, %rbp
movq (%rdx,%rbp), %rcx
movq 0x8(%rdx,%rbp), %rsi
subq %rcx, %rsi
shrq $0x4, %rsi
cltd
idivl %esi
movslq %edx, %r13
shlq $0x4, %r13
movq (%rcx,%r13), %rsi
movq %r14, %rdi
callq 0x17440
cmpq $0x0, (%rsp)
jne 0xd937
movq 0xe0(%rbx), %rax
movq (%rax,%rbp), %rax
movq (%rax,%r13), %rsi
leaq 0x40(%rsp), %rdi
callq 0x1745c
cmpq $0x0, 0x40(%rsp)
jne 0xd92d
movq 0xe0(%rbx), %rax
movq (%rax,%rbp), %rax
movq (%rax,%r13), %rsi
leaq 0x60(%rsp), %rdi
callq 0x17424
cmpq $0x0, 0x60(%rsp)
jne 0xd923
movq 0xe0(%rbx), %rax
movq (%rax,%rbp), %rax
movq (%rax,%r13), %rdi
callq 0x17478
movl %eax, %r12d
leaq 0x68(%rsp), %rdi
callq 0x6c00
leaq 0x48(%rsp), %rdi
callq 0x6c00
movq %r15, %rdi
callq 0x6c00
testb %r12b, %r12b
jne 0xd7b4
movq 0xe0(%rbx), %rax
movq (%rax,%rbp), %rax
movq (%rax,%r13), %r12
leaq 0xa8(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x134f0
movq %r12, %rdi
leaq 0xa8(%rsp), %rsi
callq 0x17436
leaq 0xb0(%rsp), %rdi
callq 0x6c00
movslq 0x108(%rbx), %rax
imulq $0x18, %rax, %rax
movq 0x58(%rbx), %rcx
movq 0xe0(%rbx), %rdx
leaq (%rcx,%rax), %rdi
addq $-0x18, %rdi
addq (%rdx,%rbp), %r13
movq %r13, %rsi
callq 0x12706
leaq 0x28(%rsp), %rdi
callq 0x6c00
movl 0x58(%rsp), %ebp
incl %ebp
jmp 0xd6d6
leaq 0x68(%rsp), %rdi
callq 0x6c00
leaq 0x48(%rsp), %rdi
callq 0x6c00
movq %r15, %rdi
jmp 0xd7af
addq $0x138, %rsp            # imm = 0x138
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xdaf5
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
jmp 0xdafd
jmp 0xdaf5
jmp 0xdaf5
jmp 0xdaf5
jmp 0xdaeb
jmp 0xdaf5
jmp 0xdaf5
jmp 0xdaf5
jmp 0xdaf5
jmp 0xdaf5
jmp 0xdaf5
jmp 0xdaf5
jmp 0xdaeb
jmp 0xdaf5
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x6c00
leaq 0x28(%rsp), %rdi
jmp 0xda86
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0x6c00
leaq 0x28(%rsp), %rdi
callq 0x6c00
jmp 0xd9e0
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
jmp 0xda86
jmp 0xda1d
jmp 0xda1d
jmp 0xda1d
jmp 0xdacd
jmp 0xda06
jmp 0xda06
jmp 0xda06
jmp 0xda06
jmp 0xda06
jmp 0xda06
jmp 0xda06
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x5100
jmp 0xda8b
jmp 0xda1d
jmp 0xda1d
jmp 0xda1d
jmp 0xda1d
movq %rax, %rbx
jmp 0xda8b
jmp 0xdaeb
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
jmp 0xdae4
jmp 0xdaf5
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
jmp 0xdad5
movq %rax, %rbx
leaq 0x100(%rsp), %rdi
jmp 0xdae4
movq %rax, %rbx
leaq 0xe0(%rsp), %rdi
jmp 0xda86
movq %rax, %rbx
jmp 0xda7e
movq %rax, %rbx
leaq 0x118(%rsp), %rdi
callq 0x5100
leaq 0xf0(%rsp), %rdi
callq 0x6c00
movq %rsp, %rdi
callq 0x6bde
leaq 0x68(%rsp), %rdi
jmp 0xdad5
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x6c00
jmp 0xdac1
jmp 0xdaad
jmp 0xdade
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x6c00
jmp 0xdad0
jmp 0xdade
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x6c00
jmp 0xdae1
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x6c00
jmp 0xdaee
jmp 0xdaf5
movq %rax, %rbx
movq %r15, %rdi
callq 0x6c00
jmp 0xdaf8
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
jmp 0xdafd
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x6c00
movq %rbx, %rdi
callq 0x5390