// File: /workspace/github_cpp_makefile_star2_O3/kaiming[P]Chamber-Crawler-3k/ReadFile/readplan.cc
// Function: readFloorPlan(std::istream&, std::vector<std::vector<std::vector<std::shared_ptr<Tile>, std::allocator<std::shared_ptr<Tile>>>, std::allocator<std::vector<std::shared_ptr<Tile>, std::allocator<std::shared_ptr<Tile>>>>>, std::allocator<std::vector<std::vector<std::shared_ptr<Tile>, std::allocator<std::shared_ptr<Tile>>>, std::allocator<std::vector<std::shared_ptr<Tile>, std::allocator<std::shared_ptr<Tile>>>>>>>&, std::vector<std::shared_ptr<WalkableTile>, std::allocator<std::shared_ptr<WalkableTile>>>&, std::vector<std::vector<std::shared_ptr<WalkableTile>, std::allocator<std::shared_ptr<WalkableTile>>>, std::allocator<std::vector<std::shared_ptr<WalkableTile>, std::allocator<std::shared_ptr<WalkableTile>>>>>&, std::vector<std::vector<std::shared_ptr<WalkableTile>, std::allocator<std::shared_ptr<WalkableTile>>>, std::allocator<std::vector<std::shared_ptr<WalkableTile>, std::allocator<std::shared_ptr<WalkableTile>>>>>&, std::vector<bool, std::allocator<bool>>&)
void readFloorPlan(std::istream& in, std::vector<std::vector<std::vector<std::shared_ptr<Tile>>>>& floors, std::vector<std::shared_ptr<WalkableTile>>& playerSpawns, std::vector<std::vector<std::shared_ptr<WalkableTile>>>& enemies, std::vector<std::vector<std::shared_ptr<WalkableTile>>>& dragonHoards, std::vector<bool>& filled) {
    std::shared_ptr<Factory> tileType;
    std::shared_ptr<WalkableFactory> walkable = std::make_shared<WalkableFactory>();
    std::shared_ptr<NonWalkableFactory> nonWalkable = std::make_shared<NonWalkableFactory>();
    // keep track of the generated dragonhoard to add dragon after
    std::vector<std::pair<std::pair<int, int>, std::shared_ptr<DragonHoard>>> hoards;
    std::string line;
    int floorNum {-1}, rowNum {0};
    // count of the number of borders, '|' chars, and '-' chars respectively
    int borderCount {0}, vert {0}, horiz {0};
    bool isStart {false};

    while (true) {
        std::getline(in, line);

        // break clause
        if (in.fail()) {
            // if entire file has been read
            if (in.eof()) return;
            
            // else if theres some other failed read
            std::cerr << "error reading in file" << std::endl;
            return;
        }

        // case of the start of a new floor
        if (!isStart) {
            bool valid {true};
            borderCount = 0;
            
            // check if next line is a valid start of a floor
            for (int counter {0}; counter < static_cast<int>(line.size()); ++counter) {
                // MIN REQUIREMENT OF A FLOOR DIMENSION IS WIDTH THREE?
                if (static_cast<int>(line.size()) < 3) {
                    valid = false;
                    break;
                }

                // if the first and last chars are not '|'
                if ((counter == 0 || counter == static_cast<int>(line.size()) - 1) && line[counter] != '|') {
                    valid = false;
                    break;
                } 

                // if the chars inbetween first and last are not '-'
                if ((counter > 0 && counter < static_cast<int>(line.size()) - 1) && line[counter] != '-') {
                    valid = false;
                    break;
                }
            }

            // if line is a valid start to a floor then continueously read each line till the end of next floor
            if (valid) {
                isStart = true;
                rowNum = 0;

                // push in a new floor grid
                std::vector<std::vector<std::shared_ptr<Tile>>> grid;
                floors.push_back(grid);
                ++floorNum;
                filled.push_back(false);
                std::vector<std::shared_ptr<WalkableTile>> enemyFloor, dHoardFloor;
                enemies.push_back(enemyFloor);
                dragonHoards.push_back(dHoardFloor);
            } else {
                // if not a valid line then ignore and continue reading the next line
                continue;
            }
        }

        if (line == "") {
            continue;
        }
        
        std::istringstream ssl {line};
        char type;
        int colNum {0};

        // push in a new row
        std::vector<std::shared_ptr<Tile>> row;
        floors[floorNum].push_back(row);


        // grab each character and create the appropriate Tile
        while (true) {
            ssl >> std::noskipws >> type;

            // break clause
            if (ssl.fail()) {
                // if end of line
                if (ssl.eof()) {
                    if (vert == 2 && horiz == static_cast<int>(line.size() - 2)) {
                        ++borderCount;

                        if (borderCount == 2) isStart = false;
                    }

                    vert = 0;
                    horiz = 0;
                    break;
                }

                // else read in fail
                std::cerr << "error reading in file" << std::endl;
                break;
            }

            // x is colNum and y is rowNum
            // if char is of type nonwalkable tile
            if (type == '|' || type == '-' || type == ' ') {
                tileType = nonWalkable;

                switch (type) {
                    case ('|'):
                        ++vert;
                        break;

                    case ('-'):
                        ++horiz;
                        break;

                    default:
                        break;
                }   

                // make tile
                auto tempTile {tileType->makeTile(type, colNum, rowNum)};
                // add to floor
                // debugging line: std::cout << tempTile->getCoord().first << " " << tempTile->getCoord().second << " " << tempTile->getType() << std::endl;
                floors[floorNum][rowNum].push_back(tempTile);
            } else if (isWalkable(type)) { // else if char is a walkable tile and need to check for pregeneration
                tileType = walkable;
                char period = '.';


                switch (type) {
                    case ('0'):
                    {
                        // RH potion
                        auto tempPotion {std::make_shared<RH>()};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, nullptr, tempPotion, nullptr, false)};
                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }
                    
                    case ('1'):
                    {
                        // BA potion
                        auto tempPotion {std::make_shared<BA>()};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, nullptr, tempPotion, nullptr, false)};
                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('2'):
                    {
                        // BD potion
                        auto tempPotion {std::make_shared<BD>()};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, nullptr, tempPotion, nullptr, false)};
                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('3'):
                    {
                        // PH potion
                        auto tempPotion {std::make_shared<PH>()};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, nullptr, tempPotion, nullptr, false)};
                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('4'):
                    {
                        // WA potion
                        auto tempPotion {std::make_shared<WA>()};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, nullptr, tempPotion, nullptr, false)};
                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('5'):
                    {
                        // WD potion
                        auto tempPotion {std::make_shared<WD>()};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, nullptr, tempPotion, nullptr, false)};
                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('6'):
                    {
                        // normal gold pile
                        auto tempGold {std::make_shared<Gold>("Normal Hoard", 2)};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, nullptr, nullptr, tempGold, false)};
                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('7'):
                    {
                        // small gold pile
                        auto tempGold {std::make_shared<Gold>("Small Hoard", 1)};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, nullptr, nullptr, tempGold, false)};
                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('8'):
                    {
                        // merchant hoard
                        auto tempGold {std::make_shared<Gold>("Merchant Hoard", 4)};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, nullptr, nullptr, tempGold, false)};
                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('9'):
                    {
                        // dragon hoard
                        auto tempGold {std::make_shared<DragonHoard>()};
                        hoards.push_back(std::pair<std::pair<int, int>, std::shared_ptr<DragonHoard>>{std::pair<int, int> {colNum, rowNum}, tempGold});
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, nullptr, nullptr, tempGold, false)};

                        dragonHoards[floorNum].push_back(std::static_pointer_cast<WalkableTile>(tempTile));

                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('D'):
                    {
                        // dragon (must check which of the list of dragon hoards this dragon is guarding, if there are non then produce error saying improper generation)
                        bool set {false};
                        auto tempDrag {std::make_shared<Dragon>()};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, tempDrag)};
                        auto dCoord {std::pair<int, int> {colNum, rowNum}};

                        for (auto& n : hoards) {
                            auto gCoord {n.first};

                            // calc distance from drag 
                            double distance = std::floor(std::sqrt(std::pow((dCoord.first - gCoord.first), 2) + std::pow((dCoord.second - gCoord.second), 2)));
                            // if the hoard is within a distance of 1 and there isn't already a dragon guarding it
                            if (distance == 1 && n.second->getDragonTile() == nullptr) {
                                n.second->setDragonTile(std::static_pointer_cast<WalkableTile>(tempTile));
                                set = true;
                            }
                        }

                        if (!set) { // NOTE: CAN CHANGE THE BEHAVIOUR IF THE CASE WHERE A PREGENERATED DRAG DOESNT GUARD A HOARD 
                            std::cerr << "Error: Dragon does not guard a dragon hoard, despawning ..." << std::endl;
                            break;
                        }

                        //enemies[floorNum].push_back(std::static_pointer_cast<WalkableTile>(tempTile)); // Not sure about this line: uncomment this if we want dragons to move

                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('H'):
                    {
                        // Human
                        auto tempHuman {std::make_shared<Human>()};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, tempHuman)};

                        enemies[floorNum].push_back(std::static_pointer_cast<WalkableTile>(tempTile));                        

                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('W'):
                    {
                        // Dwarf
                        auto tempHuman {std::make_shared<Dwarf>()};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, tempHuman)};

                        enemies[floorNum].push_back(std::static_pointer_cast<WalkableTile>(tempTile));

                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('E'):
                    {
                        // Elf
                        auto tempHuman {std::make_shared<Elf>()};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, tempHuman)};

                        enemies[floorNum].push_back(std::static_pointer_cast<WalkableTile>(tempTile));

                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('O'):
                    {
                        // Orc
                        auto tempHuman {std::make_shared<Orc>()};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, tempHuman)};

                        enemies[floorNum].push_back(std::static_pointer_cast<WalkableTile>(tempTile));

                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }
                    
                    case ('M'):
                    {
                        // Merchant
                        auto tempHuman {std::make_shared<Merchant>()};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, tempHuman)};

                        enemies[floorNum].push_back(std::static_pointer_cast<WalkableTile>(tempTile));

                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('L'):
                    {
                        // Halfling
                        auto tempHuman {std::make_shared<Halfling>()};
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, tempHuman)};

                        enemies[floorNum].push_back(std::static_pointer_cast<WalkableTile>(tempTile));

                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('@'):
                    {
                        // player spawn
                        std::shared_ptr<Shade> tempPlayer {std::make_shared<Shade>()}; // NOTE: GAVE PLAYER A DEFAULT CONSTRUCTOR INITIALIZES FIELDS TO 0 SINCE THE BOARD CONSTRUCTOR WILL REASSIGN THE OCCUPANT FIELD FOR PLAYER
                        auto tempTile {tileType->makeTile(period, colNum, rowNum, tempPlayer)};
                        
                        // if the current floor has more than 1 @ symbol or none at all ------------------------------
                        if (floorNum != static_cast<int>(playerSpawns.size())) {
                            std::cerr << "Invalid number of players being spawned! Despawning ..." << std::endl;
                            return; //NOTE: RETURN OR BREAK?
                        }

                        playerSpawns.push_back(std::static_pointer_cast<WalkableTile>(tempTile));

                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    case ('\\'):
                    {
                        // stairs
                        auto tempTile {tileType->makeTile(type, colNum, rowNum, nullptr, nullptr, {}, true)};
                        floors[floorNum][rowNum].push_back(tempTile);
                        if (!filled[floorNum]) filled[floorNum] = true;
                        break;
                    }

                    default:
                    {
                        // either ., +, or #
                        auto tempTile {tileType->makeTile(type, colNum, rowNum)};
                        floors[floorNum][rowNum].push_back(tempTile);
                    }
                }

        
            } else { // unrecognized  symbol
                std::cerr << "Error: Unrecogonized symbol" << std::endl;
            }

            ++colNum;
        } // End of column

        ++rowNum;
    } // End of row


}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x6f8, %rsp            # imm = 0x6F8
movq %r9, %r13
movq %r8, 0x108(%rsp)
movq %rcx, 0xb0(%rsp)
movq %rdx, 0x100(%rsp)
movq %rsi, 0x50(%rsp)
movq %rdi, %rbx
pxor %xmm0, %xmm0
movdqa %xmm0, 0x80(%rsp)
movl $0x18, %edi
callq 0x51e0
movabsq $0x100000001, %r14      # imm = 0x100000001
movq %r14, 0x8(%rax)
leaq 0x1bdc2(%rip), %rcx     # 0x23d78
movq %rcx, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
leaq 0x1c8b9(%rip), %rdx     # 0x24880
addq $0x10, %rdx
movq %rdx, 0x10(%rax)
movq %rax, 0x118(%rsp)
movq %rcx, 0x110(%rsp)
movl $0x18, %edi
callq 0x51e0
leaq 0x258(%rsp), %rsi
movq %r14, 0x8(%rax)
leaq 0x1bdf4(%rip), %rcx     # 0x23df0
movq %rcx, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
leaq 0x1c7e3(%rip), %rdx     # 0x247f0
addq $0x10, %rdx
movq %rdx, 0x10(%rax)
movq %rax, (%rsi)
movq %rcx, -0x8(%rsi)
xorl %eax, %eax
leaq 0x530(%rsp), %rcx
movq %rax, 0x10(%rcx)
pxor %xmm0, %xmm0
movdqa %xmm0, (%rcx)
leaq 0xf0(%rsp), %r14
movq %r14, -0x10(%r14)
movq %rax, -0x8(%r14)
movb $0x0, (%r14)
movl $0xffffffff, 0xa4(%rsp) # imm = 0xFFFFFFFF
leaq 0x5e8(%rsp), %r12
movl $0x0, 0x1c(%rsp)
xorl %r15d, %r15d
movl $0x0, 0x9c(%rsp)
movl $0x0, 0xa0(%rsp)
xorl %ebp, %ebp
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x51d0
movsbl %al, %edx
movq %rbx, %rdi
leaq 0xe0(%rsp), %rsi
callq 0x53b0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
movl 0x20(%rbx,%rdi), %eax
testb $0x5, %al
jne 0xa6fe
testb $0x1, %r15b
jne 0x81c5
movq 0xe8(%rsp), %rax
testl %eax, %eax
jle 0x8111
cmpl $0x3, %eax
jb 0x8083
movq 0xe0(%rsp), %rcx
leal -0x1(%rax), %edx
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
xorl %esi, %esi
testq %rsi, %rsi
je 0x8100
cmpq %rsi, %rdx
jne 0x80f3
cmpb $0x7c, (%rcx,%rdx)
jne 0x8083
cmpq %rdx, %rsi
jae 0x8109
cmpb $0x2d, (%rcx,%rsi)
je 0x8109
jmp 0x8083
cmpb $0x7c, (%rcx)
jne 0x8083
incq %rsi
cmpq %rsi, %rax
jne 0x80e3
pxor %xmm0, %xmm0
movdqa %xmm0, 0x570(%rsp)
movq $0x0, 0x580(%rsp)
movq 0x50(%rsp), %rdi
leaq 0x570(%rsp), %rsi
callq 0xb0d6
leaq 0x20(%rsp), %r15
movq %r13, %rdi
xorl %esi, %esi
callq 0xb102
pxor %xmm0, %xmm0
movdqa %xmm0, 0xc0(%rsp)
xorl %eax, %eax
movq %rax, 0xd0(%rsp)
movq %rax, 0x30(%rsp)
movdqa %xmm0, 0x20(%rsp)
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xb150
movq 0x108(%rsp), %rdi
movq %r15, %rsi
callq 0xb150
incl 0xa4(%rsp)
movq %r15, %rdi
callq 0x7636
leaq 0xc0(%rsp), %rdi
callq 0x7636
leaq 0x570(%rsp), %rdi
callq 0x792e
movl $0x0, 0x1c(%rsp)
xorl %ebp, %ebp
leaq 0xe0(%rsp), %rdi
leaq 0x13cbb(%rip), %rsi     # 0x1be8f
callq 0x50a0
movb $0x1, %r15b
testl %eax, %eax
je 0x807c
movl %ebp, 0xb8(%rsp)
leaq 0x570(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
movl $0x8, %edx
callq 0x5340
pxor %xmm0, %xmm0
movdqa %xmm0, 0xc0(%rsp)
movq $0x0, 0xd0(%rsp)
movslq 0xa4(%rsp), %r15
leaq (%r15,%r15,2), %rax
movq %rax, 0x70(%rsp)
leaq (,%rax,8), %rcx
movq 0x50(%rsp), %rax
movq (%rax), %rdi
movq %rcx, 0xa8(%rsp)
addq %rcx, %rdi
leaq 0xc0(%rsp), %rsi
callq 0xb17c
movl 0x1c(%rsp), %esi
movslq %esi, %rdi
leal 0x3f(%r15), %eax
testl %r15d, %r15d
cmovnsl 0xa4(%rsp), %eax
sarl $0x6, %eax
cltq
movq %rax, 0x78(%rsp)
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
leaq 0x3f(%rdx), %rax
andq %r15, %rax
xorl %ecx, %ecx
cmpq %rdx, %rax
setbe %cl
leaq -0x8(,%rcx,8), %rax
movq %rax, 0x40(%rsp)
movl $0x1, %eax
movl %r15d, %ecx
shlq %cl, %rax
movq %rax, 0x38(%rsp)
movq %rdi, 0x68(%rsp)
shlq $0x20, %rdi
movq %rdi, 0x548(%rsp)
movd %esi, %xmm0
movdqa %xmm0, 0x550(%rsp)
xorl %r15d, %r15d
movq 0x570(%rsp), %rax
movq -0x18(%rax), %rax
andl $0xffffefff, 0x588(%rsp,%rax) # imm = 0xFFFFEFFF
leaq 0x570(%rsp), %rdi
leaq 0x4f(%rsp), %rsi
callq 0x5290
movq 0x570(%rsp), %rax
movq -0x18(%rax), %rax
movl 0x590(%rsp,%rax), %ebp
testb $0x5, %bpl
jne 0xa607
movzbl 0x4f(%rsp), %eax
cmpl $0x20, %eax
je 0x832c
cmpl $0x7c, %eax
je 0x832c
cmpl $0x2d, %eax
jne 0x8449
movq 0x250(%rsp), %rax
movq %rax, 0x80(%rsp)
leaq 0x88(%rsp), %rdi
leaq 0x258(%rsp), %rsi
callq 0xbb5a
movzbl 0x4f(%rsp), %eax
cmpl $0x2d, %eax
je 0x8369
cmpl $0x7c, %eax
jne 0x8370
incl 0xa0(%rsp)
jmp 0x8370
incl 0x9c(%rsp)
movq 0x80(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x520(%rsp)
movdqa %xmm0, 0x510(%rsp)
movdqa %xmm0, 0x500(%rsp)
movq (%rsi), %rcx
movq (%rcx), %r10
subq $0x8, %rsp
movsbl %al, %edx
leaq 0x28(%rsp), %rdi
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x528(%rsp), %r9
pushq $0x0
leaq 0x510(%rsp), %rax
pushq %rax
leaq 0x528(%rsp), %rax
pushq %rax
callq *%r10
addq $0x20, %rsp
movq 0x508(%rsp), %rdi
testq %rdi, %rdi
je 0x83e6
callq 0x7828
movq 0x518(%rsp), %rdi
testq %rdi, %rdi
je 0x83f8
callq 0x7828
movq 0x528(%rsp), %rdi
testq %rdi, %rdi
je 0x840a
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x20(%rsp), %rsi
callq 0xb1a8
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
callq 0x7828
incq %r15
jmp 0x82ce
leal -0x30(%rax), %ecx
cmpb $0xa, %cl
jb 0x8471
addl $-0x23, %eax
cmpl $0x39, %eax
ja 0x8e21
movabsq $0x210363620000901, %rcx # imm = 0x210363620000901
btq %rax, %rcx
jae 0x8e21
movq 0x110(%rsp), %rax
movq %rax, 0x80(%rsp)
leaq 0x88(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0xbb5a
movzbl 0x4f(%rsp), %eax
leal -0x30(%rax), %ecx
cmpl $0x2c, %ecx
ja 0x8d4c
leaq 0x13072(%rip), %rdx     # 0x1b520
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xbd0c
movq 0x80(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x4f0(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x240(%rsp)
movq %rax, 0x248(%rsp)
testq %rax, %rax
je 0x96cf
movq 0x1caad(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x96cb
incl 0x8(%rax)
jmp 0x96cf
movq 0x80(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x2b0(%rsp)
movdqa %xmm0, 0x2a0(%rsp)
movdqa %xmm0, 0x290(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x28(%rsp), %rdi
movl $0x5c, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x2b8(%rsp), %r9
pushq $0x1
leaq 0x2a0(%rsp), %r10
pushq %r10
leaq 0x2b8(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x298(%rsp), %rdi
testq %rdi, %rdi
je 0x859d
callq 0x7828
movq 0x2a8(%rsp), %rdi
testq %rdi, %rdi
je 0x85af
callq 0x7828
movq 0x2b8(%rsp), %rdi
testq %rdi, %rdi
je 0x85c1
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x20(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x8618
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xcb4c
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x180(%rsp)
movq %rax, 0x188(%rsp)
testq %rax, %rax
je 0x8e74
movq 0x1c946(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x8e70
incl 0x8(%rax)
jmp 0x8e74
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xcfe4
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x120(%rsp)
movq %rax, 0x128(%rsp)
testq %rax, %rax
je 0x8f4c
movq 0x1c8e6(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x8f48
incl 0x8(%rax)
jmp 0x8f4c
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xc0b4
movq 0x80(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x470(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x200(%rsp)
movq %rax, 0x208(%rsp)
testq %rax, %rax
je 0x907f
movq 0x1c879(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x907b
incl 0x8(%rax)
jmp 0x907f
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xccd4
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x160(%rsp)
movq %rax, 0x168(%rsp)
testq %rax, %rax
je 0x917b
movq 0x1c819(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x9177
incl 0x8(%rax)
jmp 0x917b
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xbdf6
movq 0x80(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x4d0(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x230(%rsp)
movq %rax, 0x238(%rsp)
testq %rax, %rax
je 0x9253
movq 0x1c7ac(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x924f
incl 0x8(%rax)
jmp 0x9253
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xc19e
movq 0x80(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x450(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x1f0(%rsp)
movq %rax, 0x1f8(%rsp)
testq %rax, %rax
je 0x934f
movq 0x1c73f(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x934b
incl 0x8(%rax)
jmp 0x934f
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xca88
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x1a0(%rsp)
movq %rax, 0x1a8(%rsp)
testq %rax, %rax
je 0x944b
movq 0x1c6df(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x9447
incl 0x8(%rax)
jmp 0x944b
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xbfca
movq 0x80(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x490(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x210(%rsp)
movq %rax, 0x218(%rsp)
testq %rax, %rax
je 0x97cb
movq 0x1c672(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x97c7
incl 0x8(%rax)
jmp 0x97cb
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xbee0
movq 0x80(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x4b0(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x220(%rsp)
movq %rax, 0x228(%rsp)
testq %rax, %rax
je 0x98c7
movq 0x1c605(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x98c3
incl 0x8(%rax)
jmp 0x98c7
movl $0x2, 0x8(%rsp)
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x58(%rsp), %rdx
leaq 0x12bf7(%rip), %rcx     # 0x1b5ea
leaq 0x8(%rsp), %r8
callq 0xc288
movq 0x80(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x430(%rsp)
movdqa %xmm0, 0x420(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x1e0(%rsp)
movq %rax, 0x1e8(%rsp)
testq %rax, %rax
je 0x99c3
movq 0x1c57b(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x99bf
incl 0x8(%rax)
jmp 0x99c3
movl $0x1, 0x8(%rsp)
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x58(%rsp), %rdx
leaq 0x12b7a(%rip), %rcx     # 0x1b5f7
leaq 0x8(%rsp), %r8
callq 0xc3f8
movq 0x80(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x410(%rsp)
movdqa %xmm0, 0x400(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x1d0(%rsp)
movq %rax, 0x1d8(%rsp)
testq %rax, %rax
je 0x9ab6
movq 0x1c4f1(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x9ab2
incl 0x8(%rax)
jmp 0x9ab6
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xcf20
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x130(%rsp)
movq %rax, 0x138(%rsp)
testq %rax, %rax
je 0x9ba9
movq 0x1c491(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x9ba5
incl 0x8(%rax)
jmp 0x9ba9
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xce5c
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x140(%rsp)
movq %rax, 0x148(%rsp)
testq %rax, %rax
je 0x9c81
movq 0x1c431(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x9c7d
incl 0x8(%rax)
jmp 0x9c81
movq $0x0, 0x8(%rsp)
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0xc618
movq 0x548(%rsp), %rax
orq %r15, %rax
movq %rax, 0x20(%rsp)
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x28(%rsp)
movq %rax, 0x30(%rsp)
testq %rax, %rax
je 0x9d59
movq 0x1c3cf(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x9d55
incl 0x8(%rax)
jmp 0x9d59
movl $0x4, 0x8(%rsp)
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x58(%rsp), %rdx
leaq 0x129da(%rip), %rcx     # 0x1b603
leaq 0x8(%rsp), %r8
callq 0xc508
movq 0x80(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x3f0(%rsp)
movdqa %xmm0, 0x3e0(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x1c0(%rsp)
movq %rax, 0x1c8(%rsp)
testq %rax, %rax
je 0x9dd7
movq 0x1c345(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x9dd3
incl 0x8(%rax)
jmp 0x9dd7
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xcc10
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x170(%rsp)
movq %rax, 0x178(%rsp)
testq %rax, %rax
je 0x9eca
movq 0x1c2e5(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x9ec6
incl 0x8(%rax)
jmp 0x9eca
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xcd98
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x150(%rsp)
movq %rax, 0x158(%rsp)
testq %rax, %rax
je 0x9fa2
movq 0x1c285(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x9f9e
incl 0x8(%rax)
jmp 0x9fa2
movq 0x80(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x280(%rsp)
movdqa %xmm0, 0x270(%rsp)
movdqa %xmm0, 0x260(%rsp)
movq (%rsi), %rcx
movq (%rcx), %r10
subq $0x8, %rsp
movsbl %al, %edx
leaq 0x28(%rsp), %rdi
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x288(%rsp), %r9
pushq $0x0
leaq 0x270(%rsp), %rax
pushq %rax
leaq 0x288(%rsp), %rax
pushq %rax
callq *%r10
addq $0x20, %rsp
movq 0x268(%rsp), %rdi
testq %rdi, %rdi
je 0x8dc2
callq 0x7828
movq 0x278(%rsp), %rdi
testq %rdi, %rdi
je 0x8dd4
callq 0x7828
movq 0x288(%rsp), %rdi
testq %rdi, %rdi
je 0x8de6
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x20(%rsp), %rsi
callq 0xb1a8
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
movl $0x1b, %edx
movq 0x1c1c3(%rip), %rdi     # 0x24ff0
leaq 0x12852(%rip), %rsi     # 0x1b686
callq 0x5250
movq 0x1c1b0(%rip), %rcx     # 0x24ff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x51d0
movsbl %al, %esi
movq 0x1c192(%rip), %rdi     # 0x24ff0
callq 0x5030
movq %rax, %rdi
callq 0x5140
jmp 0x8441
lock
incl 0x8(%rax)
pxor %xmm0, %xmm0
movdqa %xmm0, 0x390(%rsp)
movdqa %xmm0, 0x380(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x188(%rsp), %r9
pushq $0x0
leaq 0x390(%rsp), %r10
pushq %r10
leaq 0x3a8(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x388(%rsp), %rdi
testq %rdi, %rdi
je 0x8edc
callq 0x7828
movq 0x398(%rsp), %rdi
testq %rdi, %rdi
je 0x8eee
callq 0x7828
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x8f00
callq 0x7828
movq 0xb0(%rsp), %rax
movq (%rax), %rdi
addq 0xa8(%rsp), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x58(%rsp)
movq %rax, 0x60(%rsp)
testq %rax, %rax
je 0xa07a
movq 0x1c089(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0xa076
incl 0x8(%rax)
jmp 0xa07a
lock
incl 0x8(%rax)
pxor %xmm0, %xmm0
movdqa %xmm0, 0x2d0(%rsp)
movdqa %xmm0, 0x2c0(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x128(%rsp), %r9
pushq $0x0
leaq 0x2d0(%rsp), %r10
pushq %r10
leaq 0x2e8(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x2c8(%rsp), %rdi
testq %rdi, %rdi
je 0x8fb4
callq 0x7828
movq 0x2d8(%rsp), %rdi
testq %rdi, %rdi
je 0x8fc6
callq 0x7828
movq 0x128(%rsp), %rdi
testq %rdi, %rdi
je 0x8fd8
callq 0x7828
movq 0x100(%rsp), %rax
movq 0x8(%rax), %rcx
subq (%rax), %rcx
shrq $0x4, %rcx
movq %rcx, %r12
cmpl %ecx, 0xa4(%rsp)
jne 0x902c
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x58(%rsp)
movq %rax, 0x60(%rsp)
testq %rax, %rax
je 0xa556
movq 0x1bfa5(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0xa552
incl 0x8(%rax)
jmp 0xa556
movl $0x37, %edx
movq 0x1bfb8(%rip), %rdi     # 0x24ff0
leaq 0x1260f(%rip), %rsi     # 0x1b64e
callq 0x5250
movq 0x1bfa5(%rip), %rcx     # 0x24ff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x51d0
movsbl %al, %esi
movq 0x1bf87(%rip), %rdi     # 0x24ff0
callq 0x5030
movq %rax, %rdi
callq 0x5140
jmp 0xa5ce
lock
incl 0x8(%rax)
movdqa %xmm0, 0x460(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x478(%rsp), %r9
pushq $0x0
leaq 0x470(%rsp), %r10
pushq %r10
leaq 0x218(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x468(%rsp), %rdi
testq %rdi, %rdi
je 0x90da
callq 0x7828
movq 0x208(%rsp), %rdi
testq %rdi, %rdi
je 0x90ec
callq 0x7828
movq 0x478(%rsp), %rdi
testq %rdi, %rdi
je 0x90fe
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x9155
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x9164
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
pxor %xmm0, %xmm0
movdqa %xmm0, 0x350(%rsp)
movdqa %xmm0, 0x340(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x168(%rsp), %r9
pushq $0x0
leaq 0x350(%rsp), %r10
pushq %r10
leaq 0x368(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x348(%rsp), %rdi
testq %rdi, %rdi
je 0x91e3
callq 0x7828
movq 0x358(%rsp), %rdi
testq %rdi, %rdi
je 0x91f5
callq 0x7828
movq 0x168(%rsp), %rdi
testq %rdi, %rdi
je 0x9207
callq 0x7828
movq 0xb0(%rsp), %rax
movq (%rax), %rdi
addq 0xa8(%rsp), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x58(%rsp)
movq %rax, 0x60(%rsp)
testq %rax, %rax
je 0xa110
movq 0x1bd82(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0xa10c
incl 0x8(%rax)
jmp 0xa110
lock
incl 0x8(%rax)
movdqa %xmm0, 0x4c0(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x4d8(%rsp), %r9
pushq $0x0
leaq 0x4d0(%rsp), %r10
pushq %r10
leaq 0x248(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x4c8(%rsp), %rdi
testq %rdi, %rdi
je 0x92ae
callq 0x7828
movq 0x238(%rsp), %rdi
testq %rdi, %rdi
je 0x92c0
callq 0x7828
movq 0x4d8(%rsp), %rdi
testq %rdi, %rdi
je 0x92d2
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x9329
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x9338
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
movdqa %xmm0, 0x440(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x458(%rsp), %r9
pushq $0x0
leaq 0x450(%rsp), %r10
pushq %r10
leaq 0x208(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x448(%rsp), %rdi
testq %rdi, %rdi
je 0x93aa
callq 0x7828
movq 0x1f8(%rsp), %rdi
testq %rdi, %rdi
je 0x93bc
callq 0x7828
movq 0x458(%rsp), %rdi
testq %rdi, %rdi
je 0x93ce
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x9425
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x9434
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
pxor %xmm0, %xmm0
movdqa %xmm0, 0x3b0(%rsp)
movdqa %xmm0, 0x3a0(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x1a8(%rsp), %r9
pushq $0x0
leaq 0x3b0(%rsp), %r10
pushq %r10
leaq 0x3c8(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x3a8(%rsp), %rdi
testq %rdi, %rdi
je 0x94b3
callq 0x7828
movq 0x3b8(%rsp), %rdi
testq %rdi, %rdi
je 0x94c5
callq 0x7828
movq 0x1a8(%rsp), %rdi
testq %rdi, %rdi
je 0x94d7
callq 0x7828
movq 0x530(%rsp), %rbp
movq 0x538(%rsp), %r12
cmpq %r12, %rbp
je 0x964f
movd %r15d, %xmm0
punpckldq 0x550(%rsp), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
movdqa %xmm0, 0x560(%rsp)
movl $0x0, 0xbc(%rsp)
movq (%rbp), %xmm0
movdqa 0x560(%rsp), %xmm1
psubd %xmm0, %xmm1
cvtdq2pd %xmm1, %xmm0
mulpd %xmm0, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
sqrtsd %xmm1, %xmm0
callq 0x5350
ucomisd 0x11fb4(%rip), %xmm0    # 0x1b500
jne 0x95df
jp 0x95df
movq 0x8(%rbp), %rsi
leaq 0x58(%rsp), %rdi
callq 0x1831a
movq 0x58(%rsp), %r14
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x957a
callq 0x7828
testq %r14, %r14
jne 0x95df
movq 0x8(%rbp), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x190(%rsp)
movq %rax, 0x198(%rsp)
testq %rax, %rax
je 0x95b7
movq 0x1ba17(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x95b3
incl 0x8(%rax)
jmp 0x95b7
lock
incl 0x8(%rax)
leaq 0x190(%rsp), %rsi
callq 0x18346
movq 0x198(%rsp), %rdi
movb $0x1, %al
movl %eax, 0xbc(%rsp)
testq %rdi, %rdi
je 0x95df
callq 0x7828
addq $0x18, %rbp
cmpq %r12, %rbp
jne 0x9512
testb $0x1, 0xbc(%rsp)
je 0x964f
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x9699
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
jmp 0x9699
movl $0x3b, %edx
movq 0x1b995(%rip), %rdi     # 0x24ff0
leaq 0x11fb0(%rip), %rsi     # 0x1b612
callq 0x5250
movq 0x1b982(%rip), %rcx     # 0x24ff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x51d0
movsbl %al, %esi
movq 0x1b964(%rip), %rdi     # 0x24ff0
callq 0x5030
movq %rax, %rdi
callq 0x5140
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
leaq 0xf0(%rsp), %r14
leaq 0x5e8(%rsp), %r12
je 0x96b8
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
movdqa %xmm0, 0x4e0(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x4f8(%rsp), %r9
pushq $0x0
leaq 0x4f0(%rsp), %r10
pushq %r10
leaq 0x258(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x4e8(%rsp), %rdi
testq %rdi, %rdi
je 0x972a
callq 0x7828
movq 0x248(%rsp), %rdi
testq %rdi, %rdi
je 0x973c
callq 0x7828
movq 0x4f8(%rsp), %rdi
testq %rdi, %rdi
je 0x974e
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x97a5
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x97b4
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
movdqa %xmm0, 0x480(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x498(%rsp), %r9
pushq $0x0
leaq 0x490(%rsp), %r10
pushq %r10
leaq 0x228(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x488(%rsp), %rdi
testq %rdi, %rdi
je 0x9826
callq 0x7828
movq 0x218(%rsp), %rdi
testq %rdi, %rdi
je 0x9838
callq 0x7828
movq 0x498(%rsp), %rdi
testq %rdi, %rdi
je 0x984a
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x98a1
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x98b0
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
movdqa %xmm0, 0x4a0(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x4b8(%rsp), %r9
pushq $0x0
leaq 0x4b0(%rsp), %r10
pushq %r10
leaq 0x238(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x4a8(%rsp), %rdi
testq %rdi, %rdi
je 0x9922
callq 0x7828
movq 0x228(%rsp), %rdi
testq %rdi, %rdi
je 0x9934
callq 0x7828
movq 0x4b8(%rsp), %rdi
testq %rdi, %rdi
je 0x9946
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x999d
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x99ac
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x438(%rsp), %r9
pushq $0x0
leaq 0x1f0(%rsp), %r10
pushq %r10
leaq 0x438(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x9a15
callq 0x7828
movq 0x428(%rsp), %rdi
testq %rdi, %rdi
je 0x9a27
callq 0x7828
movq 0x438(%rsp), %rdi
testq %rdi, %rdi
je 0x9a39
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x9a90
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x9a9f
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x418(%rsp), %r9
pushq $0x0
leaq 0x1e0(%rsp), %r10
pushq %r10
leaq 0x418(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x1d8(%rsp), %rdi
testq %rdi, %rdi
je 0x9b08
callq 0x7828
movq 0x408(%rsp), %rdi
testq %rdi, %rdi
je 0x9b1a
callq 0x7828
movq 0x418(%rsp), %rdi
testq %rdi, %rdi
je 0x9b2c
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x9b83
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x9b92
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
pxor %xmm0, %xmm0
movdqa %xmm0, 0x2f0(%rsp)
movdqa %xmm0, 0x2e0(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x138(%rsp), %r9
pushq $0x0
leaq 0x2f0(%rsp), %r10
pushq %r10
leaq 0x308(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x2e8(%rsp), %rdi
testq %rdi, %rdi
je 0x9c11
callq 0x7828
movq 0x2f8(%rsp), %rdi
testq %rdi, %rdi
je 0x9c23
callq 0x7828
movq 0x138(%rsp), %rdi
testq %rdi, %rdi
je 0x9c35
callq 0x7828
movq 0xb0(%rsp), %rax
movq (%rax), %rdi
addq 0xa8(%rsp), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x58(%rsp)
movq %rax, 0x60(%rsp)
testq %rax, %rax
je 0xa1a6
movq 0x1b354(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0xa1a2
incl 0x8(%rax)
jmp 0xa1a6
lock
incl 0x8(%rax)
pxor %xmm0, %xmm0
movdqa %xmm0, 0x310(%rsp)
movdqa %xmm0, 0x300(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x148(%rsp), %r9
pushq $0x0
leaq 0x310(%rsp), %r10
pushq %r10
leaq 0x328(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x308(%rsp), %rdi
testq %rdi, %rdi
je 0x9ce9
callq 0x7828
movq 0x318(%rsp), %rdi
testq %rdi, %rdi
je 0x9cfb
callq 0x7828
movq 0x148(%rsp), %rdi
testq %rdi, %rdi
je 0x9d0d
callq 0x7828
movq 0xb0(%rsp), %rax
movq (%rax), %rdi
addq 0xa8(%rsp), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x58(%rsp)
movq %rax, 0x60(%rsp)
testq %rax, %rax
je 0xa23c
movq 0x1b27c(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0xa238
incl 0x8(%rax)
jmp 0xa23c
lock
incl 0x8(%rax)
leaq 0x530(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xc6e4
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x9d7a
callq 0x7828
movq 0x80(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x3d0(%rsp)
movdqa %xmm0, 0x3c0(%rsp)
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x1b0(%rsp)
movq %rax, 0x1b8(%rsp)
testq %rax, %rax
je 0xa2d2
movq 0x1b1fe(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0xa2ce
incl 0x8(%rax)
jmp 0xa2d2
lock
incl 0x8(%rax)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x3f8(%rsp), %r9
pushq $0x0
leaq 0x1d0(%rsp), %r10
pushq %r10
leaq 0x3f8(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x1c8(%rsp), %rdi
testq %rdi, %rdi
je 0x9e29
callq 0x7828
movq 0x3e8(%rsp), %rdi
testq %rdi, %rdi
je 0x9e3b
callq 0x7828
movq 0x3f8(%rsp), %rdi
testq %rdi, %rdi
je 0x9e4d
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x9ea4
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x9eb3
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
pxor %xmm0, %xmm0
movdqa %xmm0, 0x370(%rsp)
movdqa %xmm0, 0x360(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x178(%rsp), %r9
pushq $0x0
leaq 0x370(%rsp), %r10
pushq %r10
leaq 0x388(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x368(%rsp), %rdi
testq %rdi, %rdi
je 0x9f32
callq 0x7828
movq 0x378(%rsp), %rdi
testq %rdi, %rdi
je 0x9f44
callq 0x7828
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x9f56
callq 0x7828
movq 0xb0(%rsp), %rax
movq (%rax), %rdi
addq 0xa8(%rsp), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x58(%rsp)
movq %rax, 0x60(%rsp)
testq %rax, %rax
je 0xa394
movq 0x1b033(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0xa390
incl 0x8(%rax)
jmp 0xa394
lock
incl 0x8(%rax)
pxor %xmm0, %xmm0
movdqa %xmm0, 0x330(%rsp)
movdqa %xmm0, 0x320(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x158(%rsp), %r9
pushq $0x0
leaq 0x330(%rsp), %r10
pushq %r10
leaq 0x348(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x328(%rsp), %rdi
testq %rdi, %rdi
je 0xa00a
callq 0x7828
movq 0x338(%rsp), %rdi
testq %rdi, %rdi
je 0xa01c
callq 0x7828
movq 0x158(%rsp), %rdi
testq %rdi, %rdi
je 0xa02e
callq 0x7828
movq 0xb0(%rsp), %rax
movq (%rax), %rdi
addq 0xa8(%rsp), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x58(%rsp)
movq %rax, 0x60(%rsp)
testq %rax, %rax
je 0xa42a
movq 0x1af5b(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0xa426
incl 0x8(%rax)
jmp 0xa42a
lock
incl 0x8(%rax)
leaq 0x58(%rsp), %rsi
callq 0xc8ee
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa093
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa0ea
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa0f9
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
leaq 0x58(%rsp), %rsi
callq 0xc8ee
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa129
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa180
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa18f
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
leaq 0x58(%rsp), %rsi
callq 0xc8ee
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa1bf
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa216
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa225
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
leaq 0x58(%rsp), %rsi
callq 0xc8ee
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa255
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa2ac
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa2bb
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x28(%rsp), %rdi
movl $0x2e, %edx
movl %r15d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x3d8(%rsp), %r9
pushq $0x0
leaq 0x1c0(%rsp), %r10
pushq %r10
leaq 0x3d8(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x1b8(%rsp), %rdi
testq %rdi, %rdi
je 0xa324
callq 0x7828
movq 0x3c8(%rsp), %rdi
testq %rdi, %rdi
je 0xa336
callq 0x7828
movq 0x3d8(%rsp), %rdi
testq %rdi, %rdi
je 0xa348
callq 0x7828
movq 0x108(%rsp), %rax
movq (%rax), %rdi
addq 0xa8(%rsp), %rdi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x58(%rsp)
movq %rax, 0x60(%rsp)
testq %rax, %rax
je 0xa4c0
movq 0x1ac41(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0xa4bc
incl 0x8(%rax)
jmp 0xa4c0
lock
incl 0x8(%rax)
leaq 0x58(%rsp), %rsi
callq 0xc8ee
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa3ad
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa404
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa413
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
leaq 0x58(%rsp), %rsi
callq 0xc8ee
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa443
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa49a
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa4a9
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
leaq 0x58(%rsp), %rsi
callq 0xc8ee
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa4d9
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x20(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa530
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xa53f
callq 0x7828
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x8441
jmp 0x843c
lock
incl 0x8(%rax)
movq 0x100(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0xc8ee
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa577
callq 0x7828
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x70(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb1a8
movq 0x78(%rsp), %rax
leaq (,%rax,8), %rax
addq (%r13), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa5ce
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa5dd
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xa5ec
callq 0x7828
cmpl %r12d, 0xa4(%rsp)
jne 0xa6f1
leaq 0x5e8(%rsp), %r12
jmp 0x8441
testb $0x2, %bpl
jne 0xa65c
movl $0x15, %edx
movq 0x1a9d7(%rip), %rdi     # 0x24ff0
leaq 0x10fb4(%rip), %rsi     # 0x1b5d4
callq 0x5250
movq 0x1a9c4(%rip), %rcx     # 0x24ff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x51d0
movsbl %al, %esi
movq 0x1a9a6(%rip), %rdi     # 0x24ff0
callq 0x5030
movb $0x1, %r15b
movq %rax, %rdi
callq 0x5140
jmp 0xa67f
movb $0x1, %r15b
cmpl $0x2, 0xa0(%rsp)
je 0xa6c2
movl $0x0, 0x9c(%rsp)
movl $0x0, 0xa0(%rsp)
incl 0x1c(%rsp)
leaq 0xc0(%rsp), %rdi
callq 0x7976
leaq 0x570(%rsp), %rdi
movq 0x1a919(%rip), %rsi     # 0x24fb8
callq 0x52b0
movq %r12, %rdi
callq 0x50c0
testb $0x5, %bpl
movl 0xb8(%rsp), %ebp
jne 0x807c
jmp 0xa748
movl 0xe8(%rsp), %eax
addl $-0x2, %eax
cmpl %eax, 0x9c(%rsp)
jne 0xa669
movl 0xb8(%rsp), %eax
incl %eax
movl %eax, 0xb8(%rsp)
cmpl $0x2, %eax
setne %r15b
jmp 0xa669
movb $0x1, %r15b
leaq 0x5e8(%rsp), %r12
jmp 0xa683
testb $0x2, %al
jne 0xa748
movq 0x1a8e7(%rip), %rbx     # 0x24ff0
leaq 0x10ec4(%rip), %rsi     # 0x1b5d4
movl $0x15, %edx
movq %rbx, %rdi
callq 0x5250
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x51d0
movsbl %al, %esi
movq 0x1a8b5(%rip), %rdi     # 0x24ff0
callq 0x5030
movq %rax, %rdi
callq 0x5140
movq 0xe0(%rsp), %rdi
cmpq %r14, %rdi
je 0xa765
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x530(%rsp), %rdi
callq 0xb1ee
movq 0x258(%rsp), %rdi
testq %rdi, %rdi
je 0xa784
callq 0x7828
movq 0x118(%rsp), %rdi
testq %rdi, %rdi
je 0xa796
callq 0x7828
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0xa7a8
callq 0x7828
addq $0x6f8, %rsp            # imm = 0x6F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xaf47
callq 0x7828
jmp 0xaf47
movq %rax, %rbx
jmp 0xa83f
jmp 0xb001
movq %rax, %rbx
movq 0x368(%rsp), %rdi
testq %rdi, %rdi
je 0xa7f4
callq 0x7828
movq 0x378(%rsp), %rdi
testq %rdi, %rdi
je 0xa806
callq 0x7828
movq 0x178(%rsp), %rdi
jmp 0xae48
movq %rax, %rbx
jmp 0xa89c
jmp 0xb001
movq %rax, %rbx
jmp 0xa8f4
jmp 0xb001
movq %rax, %rbx
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa83f
callq 0x7828
movq 0x10(%rsp), %rdi
jmp 0xad2d
movq %rax, %rbx
jmp 0xad5c
jmp 0xb001
movq %rax, %rbx
movq 0x2c8(%rsp), %rdi
testq %rdi, %rdi
je 0xa86b
callq 0x7828
movq 0x2d8(%rsp), %rdi
testq %rdi, %rdi
je 0xa87d
callq 0x7828
movq 0x128(%rsp), %rdi
jmp 0xaf4c
movq %rax, %rbx
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa89c
callq 0x7828
movq 0x10(%rsp), %rdi
jmp 0xada2
movq %rax, %rbx
jmp 0xadd6
movq %rax, %rbx
movq 0x3a8(%rsp), %rdi
testq %rdi, %rdi
je 0xa8c3
callq 0x7828
movq 0x3b8(%rsp), %rdi
testq %rdi, %rdi
je 0xa8d5
callq 0x7828
movq 0x1a8(%rsp), %rdi
jmp 0xafa1
movq %rax, %rbx
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa8f4
callq 0x7828
movq 0x10(%rsp), %rdi
jmp 0xae14
movq %rax, %rbx
jmp 0xae43
movq %rax, %rbx
jmp 0xa91d
movq %rax, %rbx
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa91d
callq 0x7828
movq 0x28(%rsp), %rdi
jmp 0xa953
movq %rax, %rbx
movq 0x1b8(%rsp), %rdi
testq %rdi, %rdi
je 0xa939
callq 0x7828
movq 0x3c8(%rsp), %rdi
testq %rdi, %rdi
je 0xa94b
callq 0x7828
movq 0x3d8(%rsp), %rdi
testq %rdi, %rdi
je 0xa9c2
jmp 0xa9bd
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xa993
movq %rax, %rbx
movq 0x1c8(%rsp), %rdi
testq %rdi, %rdi
je 0xa979
callq 0x7828
movq 0x3e8(%rsp), %rdi
testq %rdi, %rdi
je 0xa98b
callq 0x7828
movq 0x3f8(%rsp), %rdi
testq %rdi, %rdi
je 0xa99d
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0xa9c2
callq 0x7828
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xaa0e
movq %rax, %rbx
movq 0x1d8(%rsp), %rdi
testq %rdi, %rdi
je 0xa9f4
callq 0x7828
movq 0x408(%rsp), %rdi
testq %rdi, %rdi
je 0xaa06
callq 0x7828
movq 0x418(%rsp), %rdi
testq %rdi, %rdi
je 0xaa18
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xaa64
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0xaa4a
callq 0x7828
movq 0x428(%rsp), %rdi
testq %rdi, %rdi
je 0xaa5c
callq 0x7828
movq 0x438(%rsp), %rdi
testq %rdi, %rdi
je 0xaa6e
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xaaba
movq %rax, %rbx
movq 0x4a8(%rsp), %rdi
testq %rdi, %rdi
je 0xaaa0
callq 0x7828
movq 0x228(%rsp), %rdi
testq %rdi, %rdi
je 0xaab2
callq 0x7828
movq 0x4b8(%rsp), %rdi
testq %rdi, %rdi
je 0xaac4
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xab10
movq %rax, %rbx
movq 0x488(%rsp), %rdi
testq %rdi, %rdi
je 0xaaf6
callq 0x7828
movq 0x218(%rsp), %rdi
testq %rdi, %rdi
je 0xab08
callq 0x7828
movq 0x498(%rsp), %rdi
testq %rdi, %rdi
je 0xab1a
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xab66
movq %rax, %rbx
movq 0x4e8(%rsp), %rdi
testq %rdi, %rdi
je 0xab4c
callq 0x7828
movq 0x248(%rsp), %rdi
testq %rdi, %rdi
je 0xab5e
callq 0x7828
movq 0x4f8(%rsp), %rdi
testq %rdi, %rdi
je 0xab70
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xabbc
movq %rax, %rbx
movq 0x448(%rsp), %rdi
testq %rdi, %rdi
je 0xaba2
callq 0x7828
movq 0x1f8(%rsp), %rdi
testq %rdi, %rdi
je 0xabb4
callq 0x7828
movq 0x458(%rsp), %rdi
testq %rdi, %rdi
je 0xabc6
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xac12
movq %rax, %rbx
movq 0x4c8(%rsp), %rdi
testq %rdi, %rdi
je 0xabf8
callq 0x7828
movq 0x238(%rsp), %rdi
testq %rdi, %rdi
je 0xac0a
callq 0x7828
movq 0x4d8(%rsp), %rdi
testq %rdi, %rdi
je 0xac1c
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xac68
movq %rax, %rbx
movq 0x468(%rsp), %rdi
testq %rdi, %rdi
je 0xac4e
callq 0x7828
movq 0x208(%rsp), %rdi
testq %rdi, %rdi
je 0xac60
callq 0x7828
movq 0x478(%rsp), %rdi
testq %rdi, %rdi
je 0xac72
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x28(%rsp), %rdi
jmp 0xacbe
movq %rax, %rbx
movq 0x268(%rsp), %rdi
testq %rdi, %rdi
je 0xaca4
callq 0x7828
movq 0x278(%rsp), %rdi
testq %rdi, %rdi
je 0xacb6
callq 0x7828
movq 0x288(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
jmp 0xb001
jmp 0xb001
jmp 0xb001
jmp 0xb001
jmp 0xb001
jmp 0xb001
jmp 0xb001
jmp 0xb001
jmp 0xb001
jmp 0xb001
movq %rax, %rbx
movq 0x348(%rsp), %rdi
testq %rdi, %rdi
je 0xad13
callq 0x7828
movq 0x358(%rsp), %rdi
testq %rdi, %rdi
je 0xad25
callq 0x7828
movq 0x168(%rsp), %rdi
testq %rdi, %rdi
je 0xad37
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xad5c
callq 0x7828
movq 0x10(%rsp), %rdi
jmp 0xae99
movq %rax, %rbx
movq 0x28(%rsp), %rdi
jmp 0xaee5
movq %rax, %rbx
movq 0x388(%rsp), %rdi
testq %rdi, %rdi
je 0xad88
callq 0x7828
movq 0x398(%rsp), %rdi
testq %rdi, %rdi
je 0xad9a
callq 0x7828
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0xadac
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
jmp 0xb001
movq %rax, %rbx
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xadd6
callq 0x7828
movq 0x10(%rsp), %rdi
jmp 0xaf27
jmp 0xb001
movq %rax, %rbx
movq 0x2e8(%rsp), %rdi
testq %rdi, %rdi
je 0xadfa
callq 0x7828
movq 0x2f8(%rsp), %rdi
testq %rdi, %rdi
je 0xae0c
callq 0x7828
movq 0x138(%rsp), %rdi
testq %rdi, %rdi
je 0xae1e
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xae43
callq 0x7828
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xae52
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
jmp 0xb001
movq %rax, %rbx
movq 0x308(%rsp), %rdi
testq %rdi, %rdi
je 0xae7f
callq 0x7828
movq 0x318(%rsp), %rdi
testq %rdi, %rdi
je 0xae91
callq 0x7828
movq 0x148(%rsp), %rdi
testq %rdi, %rdi
je 0xaea3
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x298(%rsp), %rdi
testq %rdi, %rdi
je 0xaecb
callq 0x7828
movq 0x2a8(%rsp), %rdi
testq %rdi, %rdi
je 0xaedd
callq 0x7828
movq 0x2b8(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
jmp 0xb001
movq %rax, %rbx
movq 0x328(%rsp), %rdi
testq %rdi, %rdi
je 0xaf0d
callq 0x7828
movq 0x338(%rsp), %rdi
testq %rdi, %rdi
je 0xaf1f
callq 0x7828
movq 0x158(%rsp), %rdi
testq %rdi, %rdi
je 0xaf31
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xaf56
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
jmp 0xb06a
jmp 0xaf99
movq %rax, %rbx
movq 0x198(%rsp), %rdi
testq %rdi, %rdi
je 0xaf9c
callq 0x7828
jmp 0xaf9c
jmp 0xb001
movq %rax, %rbx
jmp 0xb0a9
movq %rax, %rbx
jmp 0xb0bb
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xafab
callq 0x7828
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
jmp 0xaffa
jmp 0xb06a
movq %rax, %rbx
movq 0x28(%rsp), %rdi
jmp 0xaff5
movq %rax, %rbx
movq 0x508(%rsp), %rdi
testq %rdi, %rdi
je 0xafdb
callq 0x7828
movq 0x518(%rsp), %rdi
testq %rdi, %rdi
je 0xafed
callq 0x7828
movq 0x528(%rsp), %rdi
testq %rdi, %rdi
je 0xb004
callq 0x7828
jmp 0xb004
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x7976
movq 0x19fa0(%rip), %rsi     # 0x24fb8
leaq 0x570(%rsp), %rdi
callq 0x52b0
leaq 0x5e8(%rsp), %rdi
callq 0x50c0
leaq 0xf0(%rsp), %r14
jmp 0xb06d
movq %rax, %rbx
jmp 0xb05b
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x7636
leaq 0xc0(%rsp), %rdi
callq 0x7636
leaq 0x570(%rsp), %rdi
callq 0x792e
jmp 0xb06d
movq %rax, %rbx
movq 0xe0(%rsp), %rdi
cmpq %r14, %rdi
je 0xb08a
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x530(%rsp), %rdi
callq 0xb1ee
movq 0x258(%rsp), %rdi
testq %rdi, %rdi
je 0xb0a9
callq 0x7828
movq 0x118(%rsp), %rdi
testq %rdi, %rdi
je 0xb0bb
callq 0x7828
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0xb0cd
callq 0x7828
movq %rbx, %rdi
callq 0x5380
nop