// File: /workspace/github_cpp_makefile_star2_O1/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, 0xb8(%rsp)
movq %rcx, 0xa8(%rsp)
movq %rdx, 0x118(%rsp)
movq %rsi, 0x50(%rsp)
movq %rdi, %rbp
xorpd %xmm0, %xmm0
movapd %xmm0, 0x80(%rsp)
movq $0x0, 0xe0(%rsp)
movl $0x18, %edi
callq 0x51f0
movabsq $0x100000001, %rbx      # imm = 0x100000001
movq %rbx, 0x8(%rax)
leaq 0x1ccda(%rip), %rcx     # 0x24d40
movq %rcx, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
leaq 0x1d809(%rip), %rdx     # 0x25880
addq $0x10, %rdx
movq %rdx, 0x10(%rax)
movq %rax, 0xe8(%rsp)
movq %rcx, 0xe0(%rsp)
movq $0x0, 0x120(%rsp)
movl $0x18, %edi
callq 0x51f0
leaq 0x128(%rsp), %rsi
movq %rbx, 0x8(%rax)
leaq 0x1cd38(%rip), %rcx     # 0x24df0
movq %rcx, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
leaq 0x1d727(%rip), %rdx     # 0x257f0
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)
xorpd %xmm0, %xmm0
movapd %xmm0, (%rcx)
leaq 0xd0(%rsp), %r15
movq %r15, -0x10(%r15)
movq %rax, -0x8(%r15)
movb $0x0, (%r15)
movl $0xffffffff, 0x9c(%rsp) # imm = 0xFFFFFFFF
movl $0x0, 0x1c(%rsp)
xorl %r12d, %r12d
movl $0x0, 0x94(%rsp)
movl $0x0, 0x98(%rsp)
movl $0x0, 0xb4(%rsp)
movq 0xb8(%rsp), %rbx
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x51e0
movsbl %al, %edx
movq %rbp, %rdi
leaq 0xc0(%rsp), %rsi
callq 0x53c0
movq (%rbp), %rax
movq -0x18(%rax), %rax
movl 0x20(%rbp,%rax), %eax
testb $0x5, %al
jne 0xa7a3
testb $0x1, %r12b
jne 0x82cf
movq 0xc8(%rsp), %rax
testl %eax, %eax
setg %r14b
jle 0x820a
cmpl $0x3, %eax
jl 0x82ba
leal -0x1(%rax), %ecx
movl %eax, %edx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
movq 0xc0(%rsp), %rsi
movslq %ecx, %rdi
leaq -0x1(%rdx), %r8
movl %r14d, %r9d
xorl %r10d, %r10d
testq %r10, %r10
je 0x81ca
cmpq %r10, %rcx
jne 0x81d1
cmpb $0x7c, (%rsi,%r10)
jne 0x81ff
testq %r10, %r10
je 0x81e2
cmpq %rdi, %r10
jge 0x81e2
cmpb $0x2d, (%rsi,%r10)
jne 0x81ff
leaq 0x1(%r10), %r11
cmpq %rdx, %r11
setb %r9b
cmpq %r10, %r8
je 0x8207
movq %r11, %r10
cmpl $0x3, %eax
jge 0x81c0
jmp 0x82ba
movl %r9d, %r14d
jmp 0x82ba
movl %r9d, %r14d
xorpd %xmm0, %xmm0
movapd %xmm0, 0x570(%rsp)
movq $0x0, 0x580(%rsp)
movq 0x50(%rsp), %rdi
leaq 0x570(%rsp), %rsi
callq 0xb1b2
movq %r13, %rdi
xorl %esi, %esi
callq 0xb1de
xorpd %xmm0, %xmm0
movapd %xmm0, 0xf0(%rsp)
xorl %eax, %eax
movq %rax, 0x100(%rsp)
movq %rax, 0x30(%rsp)
movapd %xmm0, 0x20(%rsp)
movq 0xa8(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0xb22c
leaq 0x20(%rsp), %r12
movq %rbx, %rdi
movq %r12, %rsi
callq 0xb22c
incl 0x9c(%rsp)
movq %r12, %rdi
callq 0x7700
leaq 0xf0(%rsp), %rdi
callq 0x7700
leaq 0x570(%rsp), %rdi
callq 0x79e4
movb $0x1, %r12b
movl $0x0, 0x1c(%rsp)
movl $0x0, 0xb4(%rsp)
testb $0x1, %r14b
jne 0x8141
leaq 0xc0(%rsp), %rdi
leaq 0x14b71(%rip), %rsi     # 0x1ce4f
callq 0x50a0
testl %eax, %eax
je 0x8141
movl %r12d, 0xb0(%rsp)
leaq 0x570(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
movl $0x8, %edx
callq 0x5350
xorpd %xmm0, %xmm0
movapd %xmm0, 0xf0(%rsp)
movq $0x0, 0x100(%rsp)
movslq 0x9c(%rsp), %r14
leaq (%r14,%r14,2), %rax
movq %rax, 0x60(%rsp)
leaq (,%rax,8), %rcx
movq 0x50(%rsp), %rax
movq (%rax), %rdi
movq %rcx, 0xa0(%rsp)
addq %rcx, %rdi
leaq 0xf0(%rsp), %rsi
callq 0xb258
movslq 0x1c(%rsp), %rsi
leaq 0x3f(%r14), %rdi
testq %r14, %r14
cmovnsq %r14, %rdi
sarq $0x6, %rdi
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
leaq 0x3f(%rdx), %rax
andq %r14, %rax
xorl %ecx, %ecx
cmpq %rdx, %rax
setbe %cl
leaq -0x8(,%rcx,8), %rax
movq %rax, 0x40(%rsp)
movl $0x1, %eax
movl %r14d, %ecx
shlq %cl, %rax
movq %rax, 0x38(%rsp)
movq %rsi, 0x58(%rsp)
shlq $0x20, %rsi
movq %rsi, 0x550(%rsp)
shlq $0x3, %rdi
movq %rdi, 0x78(%rsp)
xorl %r14d, %r14d
movq 0x570(%rsp), %rax
movq -0x18(%rax), %rax
andl $0xffffefff, 0x588(%rsp,%rax) # imm = 0xFFFFEFFF
leaq 0x570(%rsp), %rdi
leaq 0x4f(%rsp), %rsi
callq 0x52a0
movq 0x570(%rsp), %rax
movq -0x18(%rax), %rax
movl 0x590(%rsp,%rax), %r12d
testb $0x5, %r12b
jne 0xa69c
movzbl 0x4f(%rsp), %eax
cmpl $0x20, %eax
je 0x8425
cmpl $0x7c, %eax
je 0x8425
cmpl $0x2d, %eax
jne 0x8542
movq 0x120(%rsp), %rax
movq %rax, 0x80(%rsp)
leaq 0x88(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0xbc6e
movzbl 0x4f(%rsp), %eax
cmpl $0x2d, %eax
je 0x8462
cmpl $0x7c, %eax
jne 0x8469
incl 0x98(%rsp)
jmp 0x8469
incl 0x94(%rsp)
movq 0x80(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x520(%rsp)
movapd %xmm0, 0x510(%rsp)
movapd %xmm0, 0x500(%rsp)
movq (%rsi), %rcx
movq (%rcx), %r10
subq $0x8, %rsp
movsbl %al, %edx
leaq 0x28(%rsp), %rdi
movl %r14d, %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 0x84df
callq 0x78e4
movq 0x518(%rsp), %rdi
testq %rdi, %rdi
je 0x84f1
callq 0x78e4
movq 0x528(%rsp), %rdi
testq %rdi, %rdi
je 0x8503
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x20(%rsp), %rsi
callq 0xb284
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
callq 0x78e4
incq %r14
jmp 0x83c6
leal -0x30(%rax), %ecx
cmpb $0xa, %cl
jb 0x856a
addl $-0x23, %eax
cmpl $0x39, %eax
ja 0x8f11
movabsq $0x210363620000901, %rcx # imm = 0x210363620000901
btq %rax, %rcx
jae 0x8f11
movq 0xe0(%rsp), %rax
movq %rax, 0x80(%rsp)
leaq 0x88(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0xbc6e
movzbl 0x4f(%rsp), %eax
movl %eax, %ecx
addl $-0x30, %ecx
cmpl $0x2c, %ecx
ja 0x8e3c
leaq 0x13f77(%rip), %rdx     # 0x1c520
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 0xbe24
movq 0x80(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x4f0(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x250(%rsp)
movq %rax, 0x258(%rsp)
testq %rax, %rax
je 0x97d5
movq 0x1d9b2(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x97d1
incl 0x8(%rax)
jmp 0x97d5
movq 0x80(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x2b0(%rsp)
movapd %xmm0, 0x2a0(%rsp)
movapd %xmm0, 0x290(%rsp)
movq (%rsi), %rcx
movq (%rcx), %r10
subq $0x8, %rsp
movsbl %al, %edx
leaq 0x28(%rsp), %rdi
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x2b8(%rsp), %r9
pushq $0x1
leaq 0x2a0(%rsp), %rax
pushq %rax
leaq 0x2b8(%rsp), %rax
pushq %rax
callq *%r10
addq $0x20, %rsp
movq 0x298(%rsp), %rdi
testq %rdi, %rdi
je 0x8695
callq 0x78e4
movq 0x2a8(%rsp), %rdi
testq %rdi, %rdi
je 0x86a7
callq 0x78e4
movq 0x2b8(%rsp), %rdi
testq %rdi, %rdi
je 0x86b9
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x20(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x8708
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xccbe
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x190(%rsp)
movq %rax, 0x198(%rsp)
testq %rax, %rax
je 0x8f64
movq 0x1d856(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x8f60
incl 0x8(%rax)
jmp 0x8f64
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xd17a
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x130(%rsp)
movq %rax, 0x138(%rsp)
testq %rax, %rax
je 0x903c
movq 0x1d7f6(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x9038
incl 0x8(%rax)
jmp 0x903c
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xc1e4
movq 0x80(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x470(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x210(%rsp)
movq %rax, 0x218(%rsp)
testq %rax, %rax
je 0x9170
movq 0x1d789(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x916c
incl 0x8(%rax)
jmp 0x9170
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xce52
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x170(%rsp)
movq %rax, 0x178(%rsp)
testq %rax, %rax
je 0x9264
movq 0x1d729(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x9260
incl 0x8(%rax)
jmp 0x9264
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xbf14
movq 0x80(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x4d0(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x240(%rsp)
movq %rax, 0x248(%rsp)
testq %rax, %rax
je 0x933c
movq 0x1d6bc(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x9338
incl 0x8(%rax)
jmp 0x933c
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xc2d4
movq 0x80(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x450(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x200(%rsp)
movq %rax, 0x208(%rsp)
testq %rax, %rax
je 0x9430
movq 0x1d64f(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x942c
incl 0x8(%rax)
jmp 0x9430
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xcbf4
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x1b0(%rsp)
movq %rax, 0x1b8(%rsp)
testq %rax, %rax
je 0x9524
movq 0x1d5ef(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x9520
incl 0x8(%rax)
jmp 0x9524
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xc0f4
movq 0x80(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x490(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x220(%rsp)
movq %rax, 0x228(%rsp)
testq %rax, %rax
je 0x98c9
movq 0x1d582(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x98c5
incl 0x8(%rax)
jmp 0x98c9
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xc004
movq 0x80(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x4b0(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x230(%rsp)
movq %rax, 0x238(%rsp)
testq %rax, %rax
je 0x99bd
movq 0x1d515(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x99b9
incl 0x8(%rax)
jmp 0x99bd
movl $0x2, 0x8(%rsp)
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x68(%rsp), %rdx
leaq 0x13b07(%rip), %rcx     # 0x1c5ea
leaq 0x8(%rsp), %r8
callq 0xc3c4
movq 0x80(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x430(%rsp)
movapd %xmm0, 0x420(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x1f0(%rsp)
movq %rax, 0x1f8(%rsp)
testq %rax, %rax
je 0x9ab1
movq 0x1d48b(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x9aad
incl 0x8(%rax)
jmp 0x9ab1
movl $0x1, 0x8(%rsp)
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x68(%rsp), %rdx
leaq 0x13a8a(%rip), %rcx     # 0x1c5f7
leaq 0x8(%rsp), %r8
callq 0xc53a
movq 0x80(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x410(%rsp)
movapd %xmm0, 0x400(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x1e0(%rsp)
movq %rax, 0x1e8(%rsp)
testq %rax, %rax
je 0x9b9c
movq 0x1d401(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x9b98
incl 0x8(%rax)
jmp 0x9b9c
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xd0b0
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x140(%rsp)
movq %rax, 0x148(%rsp)
testq %rax, %rax
je 0x9c87
movq 0x1d3a1(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x9c83
incl 0x8(%rax)
jmp 0x9c87
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xcfe6
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x150(%rsp)
movq %rax, 0x158(%rsp)
testq %rax, %rax
je 0x9d5f
movq 0x1d341(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x9d5b
incl 0x8(%rax)
jmp 0x9d5f
movq $0x0, 0x8(%rsp)
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0xc75a
movq 0x550(%rsp), %rax
orq %r14, %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 0x9e37
movq 0x1d2df(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x9e33
incl 0x8(%rax)
jmp 0x9e37
movl $0x4, 0x8(%rsp)
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x68(%rsp), %rdx
leaq 0x138ea(%rip), %rcx     # 0x1c603
leaq 0x8(%rsp), %r8
callq 0xc64a
movq 0x80(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x3f0(%rsp)
movapd %xmm0, 0x3e0(%rsp)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x1d0(%rsp)
movq %rax, 0x1d8(%rsp)
testq %rax, %rax
je 0x9eb5
movq 0x1d255(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x9eb1
incl 0x8(%rax)
jmp 0x9eb5
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xcd88
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x180(%rsp)
movq %rax, 0x188(%rsp)
testq %rax, %rax
je 0x9fa0
movq 0x1d1f5(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x9f9c
incl 0x8(%rax)
jmp 0x9fa0
movq $0x0, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xcf1c
movq 0x80(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x160(%rsp)
movq %rax, 0x168(%rsp)
testq %rax, %rax
je 0xa078
movq 0x1d195(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0xa074
incl 0x8(%rax)
jmp 0xa078
movq 0x80(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x280(%rsp)
movapd %xmm0, 0x270(%rsp)
movapd %xmm0, 0x260(%rsp)
movq (%rsi), %rcx
movq (%rcx), %r10
subq $0x8, %rsp
movsbl %al, %edx
leaq 0x28(%rsp), %rdi
movl %r14d, %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 0x8eb2
callq 0x78e4
movq 0x278(%rsp), %rdi
testq %rdi, %rdi
je 0x8ec4
callq 0x78e4
movq 0x288(%rsp), %rdi
testq %rdi, %rdi
je 0x8ed6
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x20(%rsp), %rsi
callq 0xb284
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
movl $0x1b, %edx
movq 0x1d0d3(%rip), %rdi     # 0x25ff0
leaq 0x13762(%rip), %rsi     # 0x1c686
callq 0x5260
movq 0x1d0c0(%rip), %rcx     # 0x25ff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x51e0
movsbl %al, %esi
movq 0x1d0a2(%rip), %rdi     # 0x25ff0
callq 0x5030
movq %rax, %rdi
callq 0x5140
jmp 0x853a
lock
incl 0x8(%rax)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x390(%rsp)
movapd %xmm0, 0x380(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x198(%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 0x8fcc
callq 0x78e4
movq 0x398(%rsp), %rdi
testq %rdi, %rdi
je 0x8fde
callq 0x78e4
movq 0x198(%rsp), %rdi
testq %rdi, %rdi
je 0x8ff0
callq 0x78e4
movq 0xa8(%rsp), %rax
movq (%rax), %rdi
addq 0xa0(%rsp), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x68(%rsp)
movq %rax, 0x70(%rsp)
testq %rax, %rax
je 0xa150
movq 0x1cf99(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0xa14c
incl 0x8(%rax)
jmp 0xa150
lock
incl 0x8(%rax)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x2d0(%rsp)
movapd %xmm0, 0x2c0(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x138(%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 0x90a4
callq 0x78e4
movq 0x2d8(%rsp), %rdi
testq %rdi, %rdi
je 0x90b6
callq 0x78e4
movq %r13, %rbx
movq 0x138(%rsp), %rdi
testq %rdi, %rdi
je 0x90cb
callq 0x78e4
movq 0x118(%rsp), %rax
movq 0x8(%rax), %r13
subq (%rax), %r13
shrq $0x4, %r13
cmpl %r13d, 0x9c(%rsp)
jne 0x911d
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x68(%rsp)
movq %rax, 0x70(%rsp)
testq %rax, %rax
je 0xa5ec
movq 0x1ceb4(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0xa5e8
incl 0x8(%rax)
jmp 0xa5ec
movl $0x37, %edx
movq 0x1cec7(%rip), %rdi     # 0x25ff0
leaq 0x1351e(%rip), %rsi     # 0x1c64e
callq 0x5260
movq 0x1ceb4(%rip), %rcx     # 0x25ff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x51e0
movsbl %al, %esi
movq 0x1ce96(%rip), %rdi     # 0x25ff0
callq 0x5030
movq %rax, %rdi
callq 0x5140
jmp 0xa65b
lock
incl 0x8(%rax)
movapd %xmm0, 0x460(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x478(%rsp), %r9
pushq $0x0
leaq 0x470(%rsp), %r10
pushq %r10
leaq 0x228(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x468(%rsp), %rdi
testq %rdi, %rdi
je 0x91cb
callq 0x78e4
movq 0x218(%rsp), %rdi
testq %rdi, %rdi
je 0x91dd
callq 0x78e4
movq 0x478(%rsp), %rdi
testq %rdi, %rdi
je 0x91ef
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x923e
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x924d
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x350(%rsp)
movapd %xmm0, 0x340(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x178(%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 0x92cc
callq 0x78e4
movq 0x358(%rsp), %rdi
testq %rdi, %rdi
je 0x92de
callq 0x78e4
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x92f0
callq 0x78e4
movq 0xa8(%rsp), %rax
movq (%rax), %rdi
addq 0xa0(%rsp), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x68(%rsp)
movq %rax, 0x70(%rsp)
testq %rax, %rax
je 0xa1de
movq 0x1cc99(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0xa1da
incl 0x8(%rax)
jmp 0xa1de
lock
incl 0x8(%rax)
movapd %xmm0, 0x4c0(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x4d8(%rsp), %r9
pushq $0x0
leaq 0x4d0(%rsp), %r10
pushq %r10
leaq 0x258(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x4c8(%rsp), %rdi
testq %rdi, %rdi
je 0x9397
callq 0x78e4
movq 0x248(%rsp), %rdi
testq %rdi, %rdi
je 0x93a9
callq 0x78e4
movq 0x4d8(%rsp), %rdi
testq %rdi, %rdi
je 0x93bb
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x940a
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x9419
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
movapd %xmm0, 0x440(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x458(%rsp), %r9
pushq $0x0
leaq 0x450(%rsp), %r10
pushq %r10
leaq 0x218(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x448(%rsp), %rdi
testq %rdi, %rdi
je 0x948b
callq 0x78e4
movq 0x208(%rsp), %rdi
testq %rdi, %rdi
je 0x949d
callq 0x78e4
movq 0x458(%rsp), %rdi
testq %rdi, %rdi
je 0x94af
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x94fe
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x950d
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x3b0(%rsp)
movapd %xmm0, 0x3a0(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x1b8(%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 0x958c
callq 0x78e4
movq 0x3b8(%rsp), %rdi
testq %rdi, %rdi
je 0x959e
callq 0x78e4
movq %r13, 0x110(%rsp)
movq 0x1b8(%rsp), %rdi
testq %rdi, %rdi
je 0x95b8
callq 0x78e4
movq 0x530(%rsp), %r12
movq 0x538(%rsp), %r13
cmpq %r13, %r12
je 0x974d
addq $0x8, %r12
xorl %ebx, %ebx
movl %r14d, %eax
subl -0x8(%r12), %eax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
mulsd %xmm1, %xmm1
movl 0x1c(%rsp), %eax
subl -0x4(%r12), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x12efe(%rip), %xmm0    # 0x1c508
jb 0x9612
sqrtsd %xmm0, %xmm0
jmp 0x9617
callq 0x5190
callq 0x5360
ucomisd 0x12edc(%rip), %xmm0    # 0x1c500
jne 0x965a
jp 0x965a
movsd %xmm0, 0x558(%rsp)
movq (%r12), %rsi
leaq 0x560(%rsp), %rdi
callq 0x187de
cmpq $0x0, 0x560(%rsp)
sete %r15b
movsd 0x558(%rsp), %xmm0
jmp 0x965d
xorl %r15d, %r15d
ucomisd 0x12e9b(%rip), %xmm0    # 0x1c500
jne 0x967b
jp 0x967b
movq 0x568(%rsp), %rdi
testq %rdi, %rdi
je 0x967b
callq 0x78e4
testb %r15b, %r15b
je 0x96d9
movq (%r12), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x1a0(%rsp)
movq %rax, 0x1a8(%rsp)
testq %rax, %rax
je 0x96b8
movq 0x1c916(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x96b4
incl 0x8(%rax)
jmp 0x96b8
lock
incl 0x8(%rax)
leaq 0x1a0(%rsp), %rsi
callq 0x1880a
movq 0x1a8(%rsp), %rdi
movb $0x1, %bl
testq %rdi, %rdi
je 0x96d9
callq 0x78e4
leaq -0x8(%r12), %rax
addq $0x18, %r12
addq $0x18, %rax
cmpq %r13, %rax
jne 0x95d7
testb $0x1, %bl
je 0x974d
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq 0x110(%rsp), %r13
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x979f
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
jmp 0x979f
movl $0x3b, %edx
movq 0x1c897(%rip), %rdi     # 0x25ff0
leaq 0x12eb2(%rip), %rsi     # 0x1c612
callq 0x5260
movq 0x110(%rsp), %r13
movq 0x1c87c(%rip), %rcx     # 0x25ff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x51e0
movsbl %al, %esi
movq 0x1c85e(%rip), %rdi     # 0x25ff0
callq 0x5030
movq %rax, %rdi
callq 0x5140
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
leaq 0xd0(%rsp), %r15
movq 0xb8(%rsp), %rbx
je 0x97be
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
movapd %xmm0, 0x4e0(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x4f8(%rsp), %r9
pushq $0x0
leaq 0x4f0(%rsp), %r10
pushq %r10
leaq 0x268(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x4e8(%rsp), %rdi
testq %rdi, %rdi
je 0x9830
callq 0x78e4
movq 0x258(%rsp), %rdi
testq %rdi, %rdi
je 0x9842
callq 0x78e4
movq 0x4f8(%rsp), %rdi
testq %rdi, %rdi
je 0x9854
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x98a3
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x98b2
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
movapd %xmm0, 0x480(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x498(%rsp), %r9
pushq $0x0
leaq 0x490(%rsp), %r10
pushq %r10
leaq 0x238(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x488(%rsp), %rdi
testq %rdi, %rdi
je 0x9924
callq 0x78e4
movq 0x228(%rsp), %rdi
testq %rdi, %rdi
je 0x9936
callq 0x78e4
movq 0x498(%rsp), %rdi
testq %rdi, %rdi
je 0x9948
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x9997
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x99a6
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
movapd %xmm0, 0x4a0(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x4b8(%rsp), %r9
pushq $0x0
leaq 0x4b0(%rsp), %r10
pushq %r10
leaq 0x248(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x4a8(%rsp), %rdi
testq %rdi, %rdi
je 0x9a18
callq 0x78e4
movq 0x238(%rsp), %rdi
testq %rdi, %rdi
je 0x9a2a
callq 0x78e4
movq 0x4b8(%rsp), %rdi
testq %rdi, %rdi
je 0x9a3c
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x9a8b
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x9a9a
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x438(%rsp), %r9
pushq $0x0
leaq 0x200(%rsp), %r10
pushq %r10
leaq 0x438(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x1f8(%rsp), %rdi
testq %rdi, %rdi
je 0x9b03
callq 0x78e4
movq 0x428(%rsp), %rdi
testq %rdi, %rdi
je 0x9b15
callq 0x78e4
movq 0x438(%rsp), %rdi
testq %rdi, %rdi
je 0x9b27
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x9b76
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x9b85
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x418(%rsp), %r9
pushq $0x0
leaq 0x1f0(%rsp), %r10
pushq %r10
leaq 0x418(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x9bee
callq 0x78e4
movq 0x408(%rsp), %rdi
testq %rdi, %rdi
je 0x9c00
callq 0x78e4
movq 0x418(%rsp), %rdi
testq %rdi, %rdi
je 0x9c12
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x9c61
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x9c70
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x2f0(%rsp)
movapd %xmm0, 0x2e0(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x148(%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 0x9cef
callq 0x78e4
movq 0x2f8(%rsp), %rdi
testq %rdi, %rdi
je 0x9d01
callq 0x78e4
movq 0x148(%rsp), %rdi
testq %rdi, %rdi
je 0x9d13
callq 0x78e4
movq 0xa8(%rsp), %rax
movq (%rax), %rdi
addq 0xa0(%rsp), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x68(%rsp)
movq %rax, 0x70(%rsp)
testq %rax, %rax
je 0xa26c
movq 0x1c276(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0xa268
incl 0x8(%rax)
jmp 0xa26c
lock
incl 0x8(%rax)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x310(%rsp)
movapd %xmm0, 0x300(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x158(%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 0x9dc7
callq 0x78e4
movq 0x318(%rsp), %rdi
testq %rdi, %rdi
je 0x9dd9
callq 0x78e4
movq 0x158(%rsp), %rdi
testq %rdi, %rdi
je 0x9deb
callq 0x78e4
movq 0xa8(%rsp), %rax
movq (%rax), %rdi
addq 0xa0(%rsp), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x68(%rsp)
movq %rax, 0x70(%rsp)
testq %rax, %rax
je 0xa2fa
movq 0x1c19e(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0xa2f6
incl 0x8(%rax)
jmp 0xa2fa
lock
incl 0x8(%rax)
leaq 0x530(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xc82c
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x9e58
callq 0x78e4
movq 0x80(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x3d0(%rsp)
movapd %xmm0, 0x3c0(%rsp)
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x1c0(%rsp)
movq %rax, 0x1c8(%rsp)
testq %rax, %rax
je 0xa388
movq 0x1c120(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0xa384
incl 0x8(%rax)
jmp 0xa388
lock
incl 0x8(%rax)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x3f8(%rsp), %r9
pushq $0x0
leaq 0x1e0(%rsp), %r10
pushq %r10
leaq 0x3f8(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x1d8(%rsp), %rdi
testq %rdi, %rdi
je 0x9f07
callq 0x78e4
movq 0x3e8(%rsp), %rdi
testq %rdi, %rdi
je 0x9f19
callq 0x78e4
movq 0x3f8(%rsp), %rdi
testq %rdi, %rdi
je 0x9f2b
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0x9f7a
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x9f89
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x370(%rsp)
movapd %xmm0, 0x360(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x188(%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 0xa008
callq 0x78e4
movq 0x378(%rsp), %rdi
testq %rdi, %rdi
je 0xa01a
callq 0x78e4
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0xa02c
callq 0x78e4
movq 0xa8(%rsp), %rax
movq (%rax), %rdi
addq 0xa0(%rsp), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x68(%rsp)
movq %rax, 0x70(%rsp)
testq %rax, %rax
je 0xa442
movq 0x1bf5d(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0xa43e
incl 0x8(%rax)
jmp 0xa442
lock
incl 0x8(%rax)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x330(%rsp)
movapd %xmm0, 0x320(%rsp)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x168(%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 0xa0e0
callq 0x78e4
movq 0x338(%rsp), %rdi
testq %rdi, %rdi
je 0xa0f2
callq 0x78e4
movq 0x168(%rsp), %rdi
testq %rdi, %rdi
je 0xa104
callq 0x78e4
movq 0xa8(%rsp), %rax
movq (%rax), %rdi
addq 0xa0(%rsp), %rdi
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x68(%rsp)
movq %rax, 0x70(%rsp)
testq %rax, %rax
je 0xa4d0
movq 0x1be85(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0xa4cc
incl 0x8(%rax)
jmp 0xa4d0
lock
incl 0x8(%rax)
leaq 0x68(%rsp), %rsi
callq 0xca46
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xa169
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa1b8
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa1c7
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
leaq 0x68(%rsp), %rsi
callq 0xca46
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xa1f7
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa246
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa255
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
leaq 0x68(%rsp), %rsi
callq 0xca46
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xa285
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa2d4
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa2e3
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
leaq 0x68(%rsp), %rsi
callq 0xca46
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xa313
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa362
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa371
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
movq (%rsi), %rax
movq (%rax), %rax
subq $0x8, %rsp
leaq 0x28(%rsp), %rdi
movl $0x2e, %edx
movl %r14d, %ecx
movl 0x24(%rsp), %r8d
leaq 0x3d8(%rsp), %r9
pushq $0x0
leaq 0x1d0(%rsp), %r10
pushq %r10
leaq 0x3d8(%rsp), %r10
pushq %r10
callq *%rax
addq $0x20, %rsp
movq 0x1c8(%rsp), %rdi
testq %rdi, %rdi
je 0xa3da
callq 0x78e4
movq 0x3c8(%rsp), %rdi
testq %rdi, %rdi
je 0xa3ec
callq 0x78e4
movq 0x3d8(%rsp), %rdi
testq %rdi, %rdi
je 0xa3fe
callq 0x78e4
movq (%rbx), %rdi
addq 0xa0(%rsp), %rdi
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x68(%rsp)
movq %rax, 0x70(%rsp)
testq %rax, %rax
je 0xa55e
movq 0x1bb93(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0xa55a
incl 0x8(%rax)
jmp 0xa55e
lock
incl 0x8(%rax)
leaq 0x68(%rsp), %rsi
callq 0xca46
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xa45b
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa4aa
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa4b9
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
leaq 0x68(%rsp), %rsi
callq 0xca46
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xa4e9
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa538
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa547
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
leaq 0x68(%rsp), %rsi
callq 0xca46
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xa577
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x20(%rsp), %rsi
callq 0xb284
movq (%r13), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa5c6
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xa5d5
callq 0x78e4
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x853a
jmp 0x8535
lock
incl 0x8(%rax)
movq 0x118(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0xca46
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xa60d
callq 0x78e4
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
leaq (%rcx,%rcx,2), %rdi
shlq $0x3, %rdi
movq 0x60(%rsp), %rcx
addq (%rax,%rcx,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0xb284
movq (%rbx), %rax
addq 0x78(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rcx,%rax), %rcx
testq %rcx, 0x38(%rsp)
jne 0xa65b
orq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rcx, (%rax,%rdx)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa66a
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xa679
callq 0x78e4
cmpl %r13d, 0x9c(%rsp)
leaq 0xd0(%rsp), %r15
movq %rbx, %r13
movq 0xb8(%rsp), %rbx
je 0x853a
jmp 0xa712
testb $0x2, %r12b
jne 0xa6ee
movl $0x15, %edx
movq 0x1b942(%rip), %rdi     # 0x25ff0
leaq 0x11f1f(%rip), %rsi     # 0x1c5d4
callq 0x5260
movq 0x1b92f(%rip), %rcx     # 0x25ff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x51e0
movsbl %al, %esi
movq 0x1b911(%rip), %rdi     # 0x25ff0
callq 0x5030
movq %rax, %rdi
callq 0x5140
jmp 0xa70e
cmpl $0x2, 0x98(%rsp)
je 0xa757
movl $0x0, 0x94(%rsp)
movl $0x0, 0x98(%rsp)
incl 0x1c(%rsp)
leaq 0xf0(%rsp), %rdi
callq 0x7a26
leaq 0x570(%rsp), %rdi
movq 0x1b88a(%rip), %rsi     # 0x25fb8
callq 0x52c0
leaq 0x5e8(%rsp), %rdi
callq 0x50c0
testb $0x5, %r12b
movl 0xb0(%rsp), %r12d
jne 0x8141
jmp 0xa7ed
movl 0xc8(%rsp), %eax
addl $-0x2, %eax
cmpl %eax, 0x94(%rsp)
jne 0xa6f8
movl 0xb4(%rsp), %ecx
incl %ecx
xorl %eax, %eax
movl %ecx, 0xb4(%rsp)
cmpl $0x2, %ecx
movl 0xb0(%rsp), %ecx
movzbl %cl, %ecx
movl $0x0, 0x94(%rsp)
cmovel %eax, %ecx
movl %ecx, 0xb0(%rsp)
jmp 0xa703
testb $0x2, %al
jne 0xa7ed
movq 0x1b842(%rip), %rbx     # 0x25ff0
leaq 0x11e1f(%rip), %rsi     # 0x1c5d4
movl $0x15, %edx
movq %rbx, %rdi
callq 0x5260
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x51e0
movsbl %al, %esi
movq 0x1b810(%rip), %rdi     # 0x25ff0
callq 0x5030
movq %rax, %rdi
callq 0x5140
movq 0xc0(%rsp), %rdi
cmpq %r15, %rdi
je 0xa80a
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x530(%rsp), %rdi
callq 0xb2c4
movq 0x128(%rsp), %rdi
testq %rdi, %rdi
je 0xa829
callq 0x78e4
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0xa83b
callq 0x78e4
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0xa84d
callq 0x78e4
addq $0x6f8, %rsp            # imm = 0x6F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xb01d
callq 0x78e4
jmp 0xb01d
movq %rax, %rbx
movq 0x3a8(%rsp), %rdi
testq %rdi, %rdi
je 0xa88f
callq 0x78e4
movq 0x3b8(%rsp), %rdi
testq %rdi, %rdi
je 0xa8a1
callq 0x78e4
movq 0x1b8(%rsp), %rdi
jmp 0xb07f
movq %rax, %rbx
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xaf3c
callq 0x78e4
jmp 0xaf3c
movq %rax, %rbx
jmp 0xa9c7
movq %rax, %rbx
movq 0x348(%rsp), %rdi
testq %rdi, %rdi
je 0xa8e6
callq 0x78e4
movq 0x358(%rsp), %rdi
testq %rdi, %rdi
je 0xa8f8
callq 0x78e4
movq 0x178(%rsp), %rdi
jmp 0xaf7a
movq %rax, %rbx
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xaf9a
callq 0x78e4
jmp 0xaf9a
movq %rax, %rbx
movq 0x28(%rsp), %rdi
jmp 0xaa39
movq %rax, %rbx
movq 0x388(%rsp), %rdi
testq %rdi, %rdi
je 0xa942
callq 0x78e4
movq 0x398(%rsp), %rdi
testq %rdi, %rdi
je 0xa954
callq 0x78e4
movq 0x198(%rsp), %rdi
jmp 0xafd8
movq %rax, %rbx
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xaff8
callq 0x78e4
jmp 0xaff8
jmp 0xb10b
movq %rax, %rbx
movq 0x2e8(%rsp), %rdi
testq %rdi, %rdi
je 0xa996
callq 0x78e4
movq 0x2f8(%rsp), %rdi
testq %rdi, %rdi
je 0xa9a8
callq 0x78e4
movq 0x148(%rsp), %rdi
jmp 0xaf41
movq %rax, %rbx
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xa9c7
callq 0x78e4
movq 0x10(%rsp), %rdi
jmp 0xaf0a
jmp 0xb10b
movq %rax, %rbx
movq 0x308(%rsp), %rdi
testq %rdi, %rdi
je 0xa9eb
callq 0x78e4
movq 0x318(%rsp), %rdi
testq %rdi, %rdi
je 0xa9fd
callq 0x78e4
movq 0x158(%rsp), %rdi
jmp 0xaf9f
movq %rax, %rbx
movq 0x298(%rsp), %rdi
testq %rdi, %rdi
je 0xaa1f
callq 0x78e4
movq 0x2a8(%rsp), %rdi
testq %rdi, %rdi
je 0xaa31
callq 0x78e4
movq 0x2b8(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
movq 0x2c8(%rsp), %rdi
testq %rdi, %rdi
je 0xaa5c
callq 0x78e4
movq 0x2d8(%rsp), %rdi
testq %rdi, %rdi
je 0xaa6e
callq 0x78e4
movq 0x138(%rsp), %rdi
jmp 0xb022
jmp 0xb10b
movq %rax, %rbx
movq 0x328(%rsp), %rdi
testq %rdi, %rdi
je 0xaa95
callq 0x78e4
movq 0x338(%rsp), %rdi
testq %rdi, %rdi
je 0xaaa7
callq 0x78e4
movq 0x168(%rsp), %rdi
jmp 0xaffd
movq %rax, %rbx
jmp 0xaacb
movq %rax, %rbx
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xaacb
callq 0x78e4
movq 0x28(%rsp), %rdi
jmp 0xaeb1
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0xaebb
jmp 0xaeb6
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xad08
movq %rax, %rbx
movq 0x4c8(%rsp), %rdi
testq %rdi, %rdi
je 0xab0d
callq 0x78e4
movq 0x248(%rsp), %rdi
testq %rdi, %rdi
je 0xab1f
callq 0x78e4
movq 0x4d8(%rsp), %rdi
jmp 0xac35
movq %rax, %rbx
movq 0x268(%rsp), %rdi
testq %rdi, %rdi
je 0xab41
callq 0x78e4
movq 0x278(%rsp), %rdi
testq %rdi, %rdi
je 0xab53
callq 0x78e4
movq 0x288(%rsp), %rdi
jmp 0xac5a
jmp 0xb10b
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xac97
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xad54
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xae05
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xae51
jmp 0xb10b
jmp 0xb10b
movq %rax, %rbx
movq 0x1f8(%rsp), %rdi
testq %rdi, %rdi
je 0xabb8
callq 0x78e4
movq 0x428(%rsp), %rdi
testq %rdi, %rdi
je 0xabca
callq 0x78e4
movq 0x438(%rsp), %rdi
jmp 0xacbc
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xac10
movq %rax, %rbx
movq 0x488(%rsp), %rdi
testq %rdi, %rdi
je 0xabf6
callq 0x78e4
movq 0x228(%rsp), %rdi
testq %rdi, %rdi
je 0xac08
callq 0x78e4
movq 0x498(%rsp), %rdi
testq %rdi, %rdi
je 0xac1a
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xac3f
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
movq 0x1d8(%rsp), %rdi
testq %rdi, %rdi
je 0xac7d
callq 0x78e4
movq 0x3e8(%rsp), %rdi
testq %rdi, %rdi
je 0xac8f
callq 0x78e4
movq 0x3f8(%rsp), %rdi
testq %rdi, %rdi
je 0xaca1
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xacc6
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
movq 0x4a8(%rsp), %rdi
testq %rdi, %rdi
je 0xacee
callq 0x78e4
movq 0x238(%rsp), %rdi
testq %rdi, %rdi
je 0xad00
callq 0x78e4
movq 0x4b8(%rsp), %rdi
testq %rdi, %rdi
je 0xad12
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
movq 0x448(%rsp), %rdi
testq %rdi, %rdi
je 0xad3a
callq 0x78e4
movq 0x208(%rsp), %rdi
testq %rdi, %rdi
je 0xad4c
callq 0x78e4
movq 0x458(%rsp), %rdi
testq %rdi, %rdi
je 0xad5e
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
jmp 0xb10b
jmp 0xb10b
jmp 0xb10b
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0xadb9
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0xad9f
callq 0x78e4
movq 0x408(%rsp), %rdi
testq %rdi, %rdi
je 0xadb1
callq 0x78e4
movq 0x418(%rsp), %rdi
testq %rdi, %rdi
je 0xadc3
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
movq 0x4e8(%rsp), %rdi
testq %rdi, %rdi
je 0xadeb
callq 0x78e4
movq 0x258(%rsp), %rdi
testq %rdi, %rdi
je 0xadfd
callq 0x78e4
movq 0x4f8(%rsp), %rdi
testq %rdi, %rdi
je 0xae0f
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
movq 0x468(%rsp), %rdi
testq %rdi, %rdi
je 0xae37
callq 0x78e4
movq 0x218(%rsp), %rdi
testq %rdi, %rdi
je 0xae49
callq 0x78e4
movq 0x478(%rsp), %rdi
testq %rdi, %rdi
je 0xae5b
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
jmp 0xb10b
jmp 0xb10b
jmp 0xb10b
jmp 0xb10b
movq %rax, %rbx
movq 0x1c8(%rsp), %rdi
testq %rdi, %rdi
je 0xae97
callq 0x78e4
movq 0x3c8(%rsp), %rdi
testq %rdi, %rdi
je 0xaea9
callq 0x78e4
movq 0x3d8(%rsp), %rdi
testq %rdi, %rdi
je 0xaebb
callq 0x78e4
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
jmp 0xaf75
jmp 0xb10b
movq %rax, %rbx
movq 0x368(%rsp), %rdi
testq %rdi, %rdi
je 0xaef0
callq 0x78e4
movq 0x378(%rsp), %rdi
testq %rdi, %rdi
je 0xaf02
callq 0x78e4
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0xaf14
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
jmp 0xafd3
jmp 0xb10b
jmp 0xb10b
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xaf4b
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
jmp 0xb10b
movq %rax, %rbx
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xaf75
callq 0x78e4
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xaf84
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xafa9
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
jmp 0xb10b
movq %rax, %rbx
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xafd3
callq 0x78e4
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xafe2
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xb007
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xb02c
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
jmp 0xb146
jmp 0xb077
movq %rax, %rbx
jmp 0xb185
movq %rax, %rbx
jmp 0xb197
jmp 0xb146
jmp 0xb10b
movq %rax, %rbx
movq 0x1a8(%rsp), %rdi
testq %rdi, %rdi
je 0xb07a
callq 0x78e4
jmp 0xb07a
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xb089
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
jmp 0xb104
movq %rax, %rbx
jmp 0xb0b4
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x7700
leaq 0xf0(%rsp), %rdi
callq 0x7700
leaq 0x570(%rsp), %rdi
callq 0x79e4
jmp 0xb149
movq %rax, %rbx
movq 0x28(%rsp), %rdi
jmp 0xb0ff
movq %rax, %rbx
movq 0x508(%rsp), %rdi
testq %rdi, %rdi
je 0xb0e5
callq 0x78e4
movq 0x518(%rsp), %rdi
testq %rdi, %rdi
je 0xb0f7
callq 0x78e4
movq 0x528(%rsp), %rdi
testq %rdi, %rdi
je 0xb10e
callq 0x78e4
jmp 0xb10e
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x7a26
movq 0x1ae96(%rip), %rsi     # 0x25fb8
leaq 0x570(%rsp), %rdi
callq 0x52c0
leaq 0x5e8(%rsp), %rdi
callq 0x50c0
leaq 0xd0(%rsp), %r15
jmp 0xb149
movq %rax, %rbx
movq 0xc0(%rsp), %rdi
cmpq %r15, %rdi
je 0xb166
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x530(%rsp), %rdi
callq 0xb2c4
movq 0x128(%rsp), %rdi
testq %rdi, %rdi
je 0xb185
callq 0x78e4
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0xb197
callq 0x78e4
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0xb1a9
callq 0x78e4
movq %rbx, %rdi
callq 0x5390
nop