// File: /workspace/github_cpp_makefile_star2_O3/Ziang95[P]Tomasulo_simulator/import.cpp
// Function: read_config_instrs(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool read_config_instrs(string path)
{
    if (sys_clk.get_prog_cyc())
    {
        err_log("Unsafe config modification, CPU is running");
        return false;
    }
    msg_log("Reading input file " + path, 1);
    ifstream file;
    string line, h, h1, h2; //h = head
    int p[4]; //p = params
    config *cfg_ret = new config();
    try{file.open(path);}
    catch(const ifstream::failure& e)
    {
        err_log("Exception occurred when opening file "+path);
        return false;
    }
#pragma region read_CPU_config
    if (CPU_cfg)
        delete CPU_cfg;
    while(getline(file, line))
    {
        if (line.empty())
            continue;
        else
        {
            istringstream s(line);
            s>>h1>>h2;
            h = h1 + ' ' + h2;
            if (h == "# of")
                continue;
            if (h == "Integer adder")
            {
                s>>p[0]>>p[1]>>p[3];
                cfg_ret->int_add = new instr_param(p[0], p[1], 0, p[3]);
            }
            else if (h == "FP adder")
            {
                s>>p[0]>>p[1]>>p[3];
                cfg_ret->fp_add = new instr_param(p[0], p[1], 0, p[3]);
            }
            else if (h == "FP multiplier")
            {
                s>>p[0]>>p[1]>>p[3];
                cfg_ret->fp_mul = new instr_param(p[0], p[1], 0, p[3]);
            }
            else if (h == "Load/store unit")
            {
                s>>p[0]>>p[1]>>p[2]>>p[3];
                cfg_ret->ld_str = new instr_param(p[0], p[1], p[2], p[3]);
            }
            else if (h == "ROB entries")
            {
                s>>line>>p[0];
                cfg_ret->ROB_num = new int(p[0]);
            }
            else
                break;
        }
    }
    if (!cfg_ret->fp_add || !cfg_ret->fp_mul || !cfg_ret->int_add || !cfg_ret->ROB_num || !cfg_ret->ld_str)
    {
        err_log("Config file is incomplete");
        return false;
    }
    CPU_cfg = cfg_ret;
    msg_log("CPU config read", 0);
#pragma endregion
#pragma region read_ini_reg_values
    string tmp;
    reg->clear();
    do {getline(file, line);}while(line.empty()||line.size()<4);
    line.erase(remove(line.begin(),line.end(),' '),line.end());
    line.erase(remove(line.begin(),line.end(),'\t'),line.end());
    istringstream iss(line);
    while (getline(iss, tmp, ','))
    {
        size_t e = tmp.find('=');
        size_t f = tmp.find('F');
        size_t i = tmp.find('R');
        memCell val;
        if (i != string::npos)
        {
            if (tmp.find('.') != string::npos)
            {
                err_log("Error: Trying to assign float value to an int reg");
                return -1;
            }
            val.i = stoi(tmp.substr(e + 1, tmp.size() - e - 1));
            reg->set(tmp.substr(i, e), val);
        }
        else if (f != string::npos)
        {
            val.f = stof(tmp.substr(e + 1, tmp.size() - e - 1));
            reg->set(tmp.substr(f, e), val);
        }
        else
        {
            err_log("IDK what's going on, better check your reg init line");
            return -1;
        }
        
    }
    msg_log("Ini reg values read", 2);
#pragma endregion
#pragma region read_ini_mem_values
    do{getline(file, line);}while(line.empty()||line.size()<4);
    line.erase(remove(line.begin(),line.end(),' '),line.end());
    line.erase(remove(line.begin(),line.end(),'\t'),line.end());
    istringstream iss1(line);
    while (getline(iss1, tmp, ','))
    {
        size_t e = tmp.find('=');
        size_t lb = tmp.find('[');
        size_t rb = tmp.find(']');
        size_t flt = tmp.find('.');
        if (flt == string::npos)
        {
            int val = stoi(tmp.substr(e + 1, tmp.size() - e - 1));
            main_mem.setMem(INTGR, stoi(tmp.substr(lb+1, rb-lb-1)), &val);
        }
        else
        {
            float val = stof(tmp.substr(e + 1, tmp.size() - e - 1));
            main_mem.setMem(FLTP, stoi(tmp.substr(lb+1, rb-lb-1)), &val);
        }
    }
    msg_log("Ini mem values read", 2);
#pragma endregion
#pragma region read_instrs
    if (instr_Q)
        delete instr_Q;
    vector <instr> tmp_Q = {};
    string opName, dest, op1, op2, ofst, imm;
    while(getline(file, line))
    {
        if (line.empty())
            continue;
        else
        {
            instr tmp_i;
            tmp_i.name = line;
            istringstream s(line);
            s>>opName;
            opCode code = get_opcode(opName);
            switch (code)
            {
            case ADD:
            case ADD_D:
            case SUB:
            case SUB_D:
            case MUL_D:
            {
                getline(s, dest, ',');
                getline(s, op1, ',');
                getline(s, op2, ',');
                dest.erase(remove(dest.begin(), dest.end(), ' '), dest.end());
                op1.erase(remove(op1.begin(), op1.end(), ' '), op1.end());
                op2.erase(remove(op2.begin(), op2.end(), ' '), op2.end());
                dest.erase(remove(dest.begin(), dest.end(), '\t'), dest.end());
                op1.erase(remove(op1.begin(), op1.end(), '\t'), op1.end());
                op2.erase(remove(op2.begin(), op2.end(), '\t'), op2.end());
                tmp_i.code = code;
                tmp_i.dest = dest;
                tmp_i.oprnd1 = op1;
                tmp_i.oprnd2 = op2;
                break;
            }
            case ADDI:
            {
                getline(s, dest, ',');
                getline(s, op1, ',');
                getline(s, imm, ',');
                dest.erase(remove(dest.begin(), dest.end(), ' '), dest.end());
                op1.erase(remove(op1.begin(), op1.end(), ' '), op1.end());
                imm.erase(remove(imm.begin(), imm.end(), ' '), imm.end());
                dest.erase(remove(dest.begin(), dest.end(), '\t'), dest.end());
                op1.erase(remove(op1.begin(), op1.end(), '\t'), op1.end());
                imm.erase(remove(imm.begin(), imm.end(), '\t'), imm.end());
                tmp_i.code = code;
                tmp_i.dest = dest;
                tmp_i.oprnd1 = op1;
                tmp_i.imdt = stoi(imm);
                break;
            }
            case BNE:
            case BEQ:
            {
                getline(s, op1, ',');
                getline(s, op2, ',');
                getline(s, ofst, ',');
                op1.erase(remove(op1.begin(), op1.end(), ' '), op1.end());
                op2.erase(remove(op2.begin(), op2.end(), ' '), op2.end());
                ofst.erase(remove(ofst.begin(), ofst.end(), ' '), ofst.end());
                op1.erase(remove(op1.begin(), op1.end(), '\t'), op1.end());
                op2.erase(remove(op2.begin(), op2.end(), '\t'), op2.end());
                ofst.erase(remove(ofst.begin(), ofst.end(), '\t'), ofst.end());
                tmp_i.code = code;
                tmp_i.oprnd1 = op1;
                tmp_i.oprnd2 = op2;
                tmp_i.offset = stoi(ofst);
                break;
            }
            case LD:
            case SD:
            {
                getline(s, dest, ',');
                getline(s, ofst, ',');
                dest.erase(remove(dest.begin(), dest.end(), ' '), dest.end());
                ofst.erase(remove(ofst.begin(), ofst.end(), ' '), ofst.end());
                dest.erase(remove(dest.begin(), dest.end(), '\t'), dest.end());
                ofst.erase(remove(ofst.begin(), ofst.end(), '\t'), ofst.end());
                tmp_i.code = code;
                tmp_i.dest = dest;
                size_t lb = ofst.find('(');
                size_t rb = ofst.find(')');
                tmp_i.oprnd1 = ofst.substr(lb + 1, rb - lb - 1);
                tmp_i.offset = stoi(ofst.substr(0, lb));
                break;
            }
            case NOP:
            {
                tmp_i.code = NOP;
                break;
            }
            case ERR:
            {
                err_log("Instruction opCode error, please check input file " + path);
                return false;
                break;
            }
            default:
                break;
            }
            tmp_Q.push_back(tmp_i);
        }
    }
    instr_Q = new instr_queue(tmp_Q);
#pragma endregion
    msg_log("Read complete!", 1);
    file.close();
    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xab8, %rsp            # imm = 0xAB8
movq %rdi, %r14
leaq 0x11a17(%rip), %rdi     # 0x1bca0
callq 0x96d0
testl %eax, %eax
je 0xa2dc
leaq -0x408(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xb102(%rip), %rsi      # 0x153a6
leaq 0xb125(%rip), %rdx      # 0x153d0
leaq -0x418(%rbp), %rdi
callq 0x721e
leaq -0x418(%rbp), %rdi
callq 0x97ab
movq -0x418(%rbp), %rdi
cmpq %rbx, %rdi
je 0xa2d4
callq 0x3230
xorl %r12d, %r12d
jmp 0xabfb
leaq 0xb0ee(%rip), %rsi      # 0x153d1
leaq -0x5d8(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rdx
callq 0x8c2e
movq %rbx, %rdi
movl $0x1, %esi
callq 0x9f0f
leaq -0x5c8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa317
callq 0x3230
leaq -0x960(%rbp), %rdi
callq 0x3290
leaq -0xf0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x2f0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x228(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x208(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movl $0x28, %edi
callq 0x3250
pxor %xmm0, %xmm0
movdqu %xmm0, 0x10(%rax)
movdqu %xmm0, (%rax)
movq %rax, -0x30(%rbp)
movq $0x0, 0x20(%rax)
leaq -0x960(%rbp), %rdi
movq %r14, %rsi
movl $0x8, %edx
callq 0x3210
movq %r14, -0x1f8(%rbp)
leaq 0x10faa(%rip), %rax     # 0x1b358
movq (%rax), %rbx
testq %rbx, %rbx
je 0xa3c6
movq %rbx, %rdi
callq 0xc36c
movq %rbx, %rdi
callq 0x3230
leaq -0x100(%rbp), %r13
leaq -0xae0(%rbp), %rbx
leaq -0x598(%rbp), %r14
leaq -0x300(%rbp), %r12
movq -0x960(%rbp), %rax
movq -0x18(%rax), %rdi
leaq -0x960(%rbp), %r15
addq %r15, %rdi
movl $0xa, %esi
callq 0x3240
movsbl %al, %edx
movq %r15, %rdi
movq %r13, %rsi
callq 0x3470
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xa76d
cmpq $0x0, -0xf8(%rbp)
je 0xa3e2
movq %rbx, %rdi
movq %r13, %rsi
movl $0x8, %edx
callq 0x3410
movq %rbx, %rdi
leaq -0x238(%rbp), %rsi
callq 0x32e0
movq %rax, %rdi
leaq -0x218(%rbp), %rsi
callq 0x32e0
leaq -0x588(%rbp), %rax
movq %rax, -0x598(%rbp)
movq -0x238(%rbp), %rsi
movq -0x230(%rbp), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x7180
movq -0x590(%rbp), %rsi
movl $0x1, %ecx
movq %r14, %rdi
xorl %edx, %edx
movl $0x20, %r8d
callq 0x3490
movq -0x218(%rbp), %rsi
movq -0x210(%rbp), %rdx
movq %r14, %rdi
callq 0x30d0
leaq -0x748(%rbp), %r15
movq %r15, -0x758(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xa4e2
movq %rdx, -0x758(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x748(%rbp)
jmp 0xa4eb
movdqu (%rcx), %xmm0
movdqu %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x750(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r12, %rdi
leaq -0x758(%rbp), %rsi
callq 0x32d0
movq -0x758(%rbp), %rdi
cmpq %r15, %rdi
je 0xa525
callq 0x3230
movq -0x598(%rbp), %rdi
leaq -0x588(%rbp), %rax
cmpq %rax, %rdi
je 0xa53d
callq 0x3230
movq %r12, %rdi
leaq 0xaec4(%rip), %rsi      # 0x1540b
callq 0x30c0
testl %eax, %eax
je 0xa72e
movq %r12, %rdi
leaq 0xaeb2(%rip), %rsi      # 0x15410
callq 0x30c0
testl %eax, %eax
je 0xa5f9
movq %r12, %rdi
leaq 0xaea9(%rip), %rsi      # 0x1541e
callq 0x30c0
testl %eax, %eax
je 0xa648
movq %r12, %rdi
leaq 0xae9b(%rip), %rsi      # 0x15427
callq 0x30c0
testl %eax, %eax
je 0xa697
movq %r12, %rdi
leaq 0xae92(%rip), %rsi      # 0x15435
callq 0x30c0
testl %eax, %eax
je 0xa6e3
movq %r12, %rdi
leaq 0xae8b(%rip), %rsi      # 0x15445
callq 0x30c0
testl %eax, %eax
jne 0xa74e
movq %rbx, %rdi
movq %r13, %rsi
callq 0x32e0
movq %rax, %rdi
leaq -0x40(%rbp), %rsi
callq 0x3190
movl $0x4, %edi
callq 0x3250
movl -0x40(%rbp), %ecx
movl %ecx, (%rax)
movq -0x30(%rbp), %rcx
movq %rax, (%rcx)
jmp 0xa72e
movq %rbx, %rdi
leaq -0x40(%rbp), %rsi
callq 0x3190
movq %rax, %rdi
leaq -0x3c(%rbp), %rsi
callq 0x3190
movq %rax, %rdi
leaq -0x34(%rbp), %rsi
callq 0x3190
movl $0x10, %edi
callq 0x3250
movq -0x40(%rbp), %rcx
movl -0x34(%rbp), %edx
movq %rcx, (%rax)
movl $0x0, 0x8(%rax)
movl %edx, 0xc(%rax)
movq -0x30(%rbp), %rcx
movq %rax, 0x8(%rcx)
jmp 0xa72e
movq %rbx, %rdi
leaq -0x40(%rbp), %rsi
callq 0x3190
movq %rax, %rdi
leaq -0x3c(%rbp), %rsi
callq 0x3190
movq %rax, %rdi
leaq -0x34(%rbp), %rsi
callq 0x3190
movl $0x10, %edi
callq 0x3250
movq -0x40(%rbp), %rcx
movl -0x34(%rbp), %edx
movq %rcx, (%rax)
movl $0x0, 0x8(%rax)
movl %edx, 0xc(%rax)
movq -0x30(%rbp), %rcx
movq %rax, 0x10(%rcx)
jmp 0xa72e
movq %rbx, %rdi
leaq -0x40(%rbp), %rsi
callq 0x3190
movq %rax, %rdi
leaq -0x3c(%rbp), %rsi
callq 0x3190
movq %rax, %rdi
leaq -0x34(%rbp), %rsi
callq 0x3190
movl $0x10, %edi
callq 0x3250
movq -0x40(%rbp), %rcx
movl -0x34(%rbp), %edx
movq %rcx, (%rax)
movl $0x0, 0x8(%rax)
movl %edx, 0xc(%rax)
movq -0x30(%rbp), %rcx
movq %rax, 0x18(%rcx)
jmp 0xa72e
movq %rbx, %rdi
leaq -0x40(%rbp), %rsi
callq 0x3190
movq %rax, %rdi
leaq -0x3c(%rbp), %rsi
callq 0x3190
movq %rax, %rdi
leaq -0x38(%rbp), %rsi
callq 0x3190
movq %rax, %rdi
leaq -0x34(%rbp), %rsi
callq 0x3190
movl $0x10, %edi
callq 0x3250
movdqa -0x40(%rbp), %xmm0
movdqu %xmm0, (%rax)
movq -0x30(%rbp), %rcx
movq %rax, 0x20(%rcx)
movq %rbx, %rdi
movq 0x10888(%rip), %rsi     # 0x1afc0
callq 0x3350
leaq -0xa68(%rbp), %rdi
callq 0x30e0
jmp 0xa3e2
movq 0x1086b(%rip), %rsi     # 0x1afc0
leaq -0xae0(%rbp), %rdi
callq 0x3350
leaq -0xa68(%rbp), %rdi
callq 0x30e0
movq -0x30(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0xab4a
cmpq $0x0, 0x18(%rax)
je 0xab4a
cmpq $0x0, 0x8(%rax)
je 0xab4a
cmpq $0x0, (%rax)
je 0xab4a
cmpq $0x0, 0x20(%rax)
je 0xab4a
leaq 0x10baa(%rip), %rcx     # 0x1b358
movq %rax, (%rcx)
leaq -0x3c8(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xaca8(%rip), %rsi      # 0x1546b
leaq 0xacb0(%rip), %rdx      # 0x1547a
leaq -0x3d8(%rbp), %rdi
callq 0x721e
leaq -0x3d8(%rbp), %rdi
xorl %esi, %esi
callq 0x9f0f
leaq -0x960(%rbp), %r14
movq -0x3d8(%rbp), %rdi
cmpq %rbx, %rdi
je 0xa7fc
callq 0x3230
leaq -0x130(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x1147f(%rip), %rax     # 0x1bc98
movq (%rax), %rdi
callq 0x13986
leaq -0x100(%rbp), %rbx
movq -0x960(%rbp), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3240
movsbl %al, %edx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x3470
movq -0xf8(%rbp), %rsi
cmpq $0x4, %rsi
jb 0xa828
movq -0x100(%rbp), %rdi
addq %rdi, %rsi
leaq -0xae0(%rbp), %rdx
movb $0x20, (%rdx)
callq 0xc5cf
movq %rax, %rcx
subq -0x100(%rbp), %rcx
movq %rcx, -0xf8(%rbp)
movb $0x0, (%rax)
movq -0x100(%rbp), %rdi
movq -0xf8(%rbp), %rsi
addq %rdi, %rsi
leaq -0xae0(%rbp), %rdx
movb $0x9, (%rdx)
callq 0xc5cf
leaq -0x100(%rbp), %rsi
movq %rax, %rcx
subq (%rsi), %rcx
movq %rcx, 0x8(%rsi)
movb $0x0, (%rax)
leaq -0xae0(%rbp), %rdi
movl $0x8, %edx
callq 0x3410
leaq -0x140(%rbp), %r15
leaq -0xae0(%rbp), %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x3470
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xac14
movq %r15, %rdi
movl $0x3d, %esi
xorl %edx, %edx
callq 0x3300
movq %rax, %r13
movq %r15, %rdi
movl $0x46, %esi
xorl %edx, %edx
callq 0x3300
movq %rax, %rbx
movq %r15, %rdi
movl $0x52, %esi
xorl %edx, %edx
callq 0x3300
cmpq $-0x1, %rax
je 0xaa4c
movq %rax, %r14
movq %r15, %rdi
movl $0x2e, %esi
xorl %edx, %edx
callq 0x3300
cmpq $-0x1, %rax
jne 0xbc50
movq %r14, -0x30(%rbp)
leaq 0x1(%r13), %rdx
movq %r13, %r12
notq %r13
addq -0x138(%rbp), %r13
leaq -0x758(%rbp), %rdi
movq %r15, %rsi
movq %r13, %rcx
callq 0x3270
movq -0x758(%rbp), %r14
callq 0x3050
movq %rax, %rbx
movl (%rax), %r15d
movl $0x0, (%rax)
movq %r14, %rdi
leaq -0x598(%rbp), %rsi
movl $0xa, %edx
callq 0x3330
cmpq %r14, -0x598(%rbp)
je 0xbd3f
movq %rax, %r13
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0xbd33
movl (%rbx), %eax
cmpl $0x22, %eax
je 0xbd33
testl %eax, %eax
leaq -0x960(%rbp), %r14
jne 0xa9e8
movl %r15d, (%rbx)
movq -0x758(%rbp), %rdi
leaq -0x748(%rbp), %rax
cmpq %rax, %rdi
je 0xaa00
callq 0x3230
leaq 0x11291(%rip), %rax     # 0x1bc98
movq (%rax), %rbx
leaq -0x2e0(%rbp), %rdi
leaq -0x140(%rbp), %r15
movq %r15, %rsi
movq -0x30(%rbp), %rdx
movq %r12, %rcx
callq 0x3270
movq %rbx, %rdi
leaq -0x2e0(%rbp), %rsi
movl %r13d, %edx
callq 0x13774
movq -0x2e0(%rbp), %rdi
leaq -0x2d0(%rbp), %rax
jmp 0xab37
cmpq $-0x1, %rbx
je 0xbc8a
leaq 0x1(%r13), %rdx
movq %r13, %rcx
notq %rcx
addq -0x138(%rbp), %rcx
leaq -0x758(%rbp), %rdi
movq %r15, %rsi
callq 0x3270
movq -0x758(%rbp), %r14
callq 0x3050
movq %rax, %r12
movl (%rax), %r15d
movl $0x0, (%rax)
movq %r14, %rdi
leaq -0x598(%rbp), %rsi
callq 0x3320
cmpq %r14, -0x598(%rbp)
je 0xbd7b
movl (%r12), %eax
testl %eax, %eax
je 0xaac3
cmpl $0x22, %eax
leaq -0x960(%rbp), %r14
jne 0xaace
jmp 0xbd93
movl %r15d, (%r12)
leaq -0x960(%rbp), %r14
movd %xmm0, -0x30(%rbp)
movq -0x758(%rbp), %rdi
leaq -0x748(%rbp), %rax
cmpq %rax, %rdi
je 0xaaeb
callq 0x3230
leaq 0x111a6(%rip), %rax     # 0x1bc98
movq (%rax), %r12
leaq -0x2c0(%rbp), %rdi
leaq -0x140(%rbp), %r15
movq %r15, %rsi
movq %rbx, %rdx
movq %r13, %rcx
callq 0x3270
movd -0x30(%rbp), %xmm0
movd %xmm0, %edx
movq %r12, %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x13774
movq -0x2c0(%rbp), %rdi
leaq -0x2b0(%rbp), %rax
cmpq %rax, %rdi
je 0xa8d4
callq 0x3230
jmp 0xa8d4
leaq -0x3e8(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xa8f5(%rip), %rsi      # 0x15451
leaq 0xa907(%rip), %rdx      # 0x1546a
leaq -0x3f8(%rbp), %rdi
callq 0x721e
leaq -0x3f8(%rbp), %rdi
callq 0x97ab
movq -0x3f8(%rbp), %rdi
cmpq %rbx, %rdi
je 0xab8c
callq 0x3230
xorl %r12d, %r12d
movq -0x218(%rbp), %rdi
leaq -0x208(%rbp), %rax
cmpq %rax, %rdi
je 0xaba7
callq 0x3230
movq -0x238(%rbp), %rdi
leaq -0x228(%rbp), %rax
cmpq %rax, %rdi
je 0xabbf
callq 0x3230
movq -0x300(%rbp), %rdi
leaq -0x2f0(%rbp), %rax
cmpq %rax, %rdi
je 0xabd7
callq 0x3230
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0xabef
callq 0x3230
leaq -0x960(%rbp), %rdi
callq 0x30a0
andb $0x1, %r12b
movl %r12d, %eax
addq $0xab8, %rsp            # imm = 0xAB8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq -0x368(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xa8bc(%rip), %rsi      # 0x154e2
leaq 0xa8c8(%rip), %rdx      # 0x154f5
leaq -0x378(%rbp), %rdi
callq 0x721e
leaq -0x378(%rbp), %rdi
movl $0x2, %esi
callq 0x9f0f
movq -0x378(%rbp), %rdi
cmpq %rbx, %rdi
je 0xac5b
callq 0x3230
leaq -0x100(%rbp), %rbx
movq -0x960(%rbp), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3240
movsbl %al, %edx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x3470
movq -0xf8(%rbp), %rsi
cmpq $0x4, %rsi
jb 0xac62
movq -0x100(%rbp), %rdi
addq %rdi, %rsi
leaq -0x758(%rbp), %rdx
movb $0x20, (%rdx)
callq 0xc5cf
leaq -0x100(%rbp), %rdi
movq (%rdi), %rdx
addq 0x8(%rdi), %rdx
movq %rax, %rsi
callq 0x3090
movq -0x100(%rbp), %rdi
movq -0xf8(%rbp), %rsi
addq %rdi, %rsi
leaq -0x758(%rbp), %rdx
movb $0x9, (%rdx)
callq 0xc5cf
leaq -0x100(%rbp), %rdi
movq (%rdi), %rdx
addq 0x8(%rdi), %rdx
movq %rax, %rsi
callq 0x3090
leaq -0x758(%rbp), %rdi
leaq -0x100(%rbp), %rsi
movl $0x8, %edx
callq 0x3410
leaq -0x140(%rbp), %r12
leaq -0x758(%rbp), %rdi
movq %r12, %rsi
movl $0x2c, %edx
callq 0x3470
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xb03b
movq %r12, %rdi
movl $0x3d, %esi
xorl %edx, %edx
callq 0x3300
movq %rax, %r15
movq %r12, %rdi
movl $0x5b, %esi
xorl %edx, %edx
callq 0x3300
movq %rax, %rbx
movq %r12, %rdi
movl $0x5d, %esi
xorl %edx, %edx
callq 0x3300
movq %rax, %r13
movq %r12, %rdi
movl $0x2e, %esi
xorl %edx, %edx
callq 0x3300
leaq 0x1(%r15), %rdx
notq %r15
cmpq $-0x1, %rax
je 0xadfe
addq -0x138(%rbp), %r15
leaq -0x598(%rbp), %rdi
movq %r12, %rsi
movq %r15, %rcx
callq 0x3270
movq -0x598(%rbp), %r14
callq 0x3050
movq %rax, %r15
movl (%rax), %r12d
movl $0x0, (%rax)
movq %r14, %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x3320
cmpq %r14, -0x1f0(%rbp)
je 0xbd0f
movl (%r15), %eax
testl %eax, %eax
je 0xaf46
cmpl $0x22, %eax
leaq -0x960(%rbp), %r14
jne 0xaf50
jmp 0xbd87
addq -0x138(%rbp), %r15
leaq -0x598(%rbp), %rdi
movq %r12, %rsi
movq %r15, %rcx
callq 0x3270
movq -0x598(%rbp), %r14
callq 0x3050
movq %rax, %r15
movl (%rax), %eax
movl %eax, -0x30(%rbp)
movl $0x0, (%r15)
movq %r14, %rdi
leaq -0x1f0(%rbp), %rsi
movl $0xa, %edx
callq 0x3330
cmpq %r14, -0x1f0(%rbp)
je 0xbd4b
movq %rax, %r12
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0xbd57
movl (%r15), %eax
cmpl $0x22, %eax
je 0xbd57
testl %eax, %eax
leaq -0x960(%rbp), %r14
jne 0xae8c
movl -0x30(%rbp), %eax
movl %eax, (%r15)
movq -0x598(%rbp), %rdi
leaq -0x588(%rbp), %rax
cmpq %rax, %rdi
je 0xaea4
callq 0x3230
movl %r12d, -0x160(%rbp)
leaq 0x1(%rbx), %rdx
notq %rbx
addq %rbx, %r13
leaq -0x598(%rbp), %rdi
leaq -0x140(%rbp), %rsi
movq %r13, %rcx
callq 0x3270
movq -0x598(%rbp), %rbx
movl (%r15), %r12d
movl $0x0, (%r15)
movq %rbx, %rdi
leaq -0x1f0(%rbp), %rsi
movl $0xa, %edx
callq 0x3330
cmpq %rbx, -0x1f0(%rbp)
je 0xbd63
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0xbd6f
movl (%r15), %ecx
cmpl $0x22, %ecx
je 0xbd6f
testl %ecx, %ecx
jne 0xaf2a
movl %r12d, (%r15)
leaq 0x10df7(%rip), %rdi     # 0x1bd28
xorl %esi, %esi
movl %eax, %edx
leaq -0x160(%rbp), %rcx
callq 0xf956
jmp 0xb013
movl %r12d, (%r15)
leaq -0x960(%rbp), %r14
movq -0x598(%rbp), %rdi
leaq -0x588(%rbp), %rax
cmpq %rax, %rdi
je 0xaf72
movd %xmm0, -0x30(%rbp)
callq 0x3230
movd -0x30(%rbp), %xmm0
movd %xmm0, -0x160(%rbp)
leaq 0x1(%rbx), %rdx
notq %rbx
addq %rbx, %r13
leaq -0x598(%rbp), %rdi
leaq -0x140(%rbp), %rsi
movq %r13, %rcx
callq 0x3270
movq -0x598(%rbp), %rbx
movl (%r15), %r12d
movl $0x0, (%r15)
movq %rbx, %rdi
leaq -0x1f0(%rbp), %rsi
movl $0xa, %edx
callq 0x3330
cmpq %rbx, -0x1f0(%rbp)
je 0xbd27
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0xbd1b
movl (%r15), %ecx
cmpl $0x22, %ecx
je 0xbd1b
testl %ecx, %ecx
jne 0xaff9
movl %r12d, (%r15)
leaq 0x10d28(%rip), %rdi     # 0x1bd28
movl $0x1, %esi
movl %eax, %edx
leaq -0x160(%rbp), %rcx
callq 0xf956
movq -0x598(%rbp), %rdi
leaq -0x588(%rbp), %rax
cmpq %rax, %rdi
leaq -0x140(%rbp), %r12
je 0xad19
callq 0x3230
jmp 0xad19
leaq -0x348(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xa4a9(%rip), %rsi      # 0x154f6
leaq 0xa4b5(%rip), %rdx      # 0x15509
leaq -0x358(%rbp), %rdi
callq 0x721e
leaq -0x358(%rbp), %rdi
movl $0x2, %esi
callq 0x9f0f
movq -0x358(%rbp), %rdi
cmpq %rbx, %rdi
je 0xb082
callq 0x3230
leaq 0x102d7(%rip), %rax     # 0x1b360
movq (%rax), %rbx
testq %rbx, %rbx
je 0xb0a2
leaq 0x10(%rbx), %rdi
callq 0xc59c
movq %rbx, %rdi
callq 0x3230
pxor %xmm0, %xmm0
leaq -0x260(%rbp), %rax
movdqa %xmm0, (%rax)
xorl %r13d, %r13d
movq %r13, 0x10(%rax)
leaq -0x150(%rbp), %rax
movq %rax, -0x10(%rax)
movq %r13, -0x8(%rax)
movb %r13b, (%rax)
leaq -0x90(%rbp), %rax
movq %rax, -0x10(%rax)
movq %r13, -0x8(%rax)
movb %r13b, (%rax)
leaq -0x70(%rbp), %rax
movq %rax, -0x10(%rax)
movq %r13, -0x8(%rax)
movb %r13b, (%rax)
leaq -0xd0(%rbp), %rax
movq %rax, -0x10(%rax)
movq %r13, -0x8(%rax)
movb %r13b, (%rax)
leaq -0xb0(%rbp), %rax
movq %rax, -0x10(%rax)
movq %r13, -0x8(%rax)
movb %r13b, (%rax)
leaq -0x110(%rbp), %rax
movq %rax, -0x10(%rax)
movq %r13, -0x8(%rax)
movb %r13b, (%rax)
movb $0x1, %r12b
leaq -0x100(%rbp), %r15
leaq -0x598(%rbp), %rbx
movq -0x960(%rbp), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3240
movsbl %al, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x3470
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xbafe
cmpq $0x0, -0xf8(%rbp)
je 0xb132
leaq -0x1e0(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movq %r13, -0x1e8(%rbp)
movb %r13b, -0x1e0(%rbp)
leaq -0x1b8(%rbp), %rax
movq %rax, -0x1c8(%rbp)
movq %r13, -0x1c0(%rbp)
movb %r13b, -0x1b8(%rbp)
leaq -0x198(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movq %r13, -0x1a0(%rbp)
movb %r13b, -0x198(%rbp)
leaq -0x178(%rbp), %rax
movq %rax, -0x188(%rbp)
movq %r13, -0x180(%rbp)
movb %r13b, -0x178(%rbp)
movq %r13, -0x168(%rbp)
leaq -0x1f0(%rbp), %rdi
movq %r15, %rsi
callq 0x3160
movq %rbx, %rdi
movq %r15, %rsi
movl $0x8, %edx
callq 0x3410
movq %rbx, %rdi
leaq -0x160(%rbp), %rsi
callq 0x32e0
leaq -0x290(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movq -0x160(%rbp), %rsi
movq -0x158(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2a0(%rbp), %rdi
callq 0x7180
leaq -0x2a0(%rbp), %rdi
callq 0xa0fc
movl %eax, %ebx
movq -0x2a0(%rbp), %rdi
leaq -0x290(%rbp), %rax
cmpq %rax, %rdi
je 0xb26a
callq 0x3230
movl %ebx, %eax
leaq 0xa0d1(%rip), %rcx      # 0x15344
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x598(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
movl $0x2c, %edx
callq 0x3470
leaq -0x598(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x2c, %edx
callq 0x3470
leaq -0x598(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
movl $0x2c, %edx
callq 0x3470
movl %ebx, %r13d
movq -0xa0(%rbp), %rdi
movq -0x98(%rbp), %rsi
addq %rdi, %rsi
movb $0x20, -0x60(%rbp)
leaq -0x60(%rbp), %rbx
movq %rbx, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0xa0(%rbp), %rcx
movq %rcx, -0x98(%rbp)
movb $0x0, (%rax)
movq -0x80(%rbp), %rdi
movq -0x78(%rbp), %rsi
addq %rdi, %rsi
movb $0x20, -0x60(%rbp)
movq %rbx, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0x80(%rbp), %rcx
movq %rcx, -0x78(%rbp)
movb $0x0, (%rax)
movq -0xe0(%rbp), %rdi
movq -0xd8(%rbp), %rsi
addq %rdi, %rsi
movb $0x20, -0x60(%rbp)
movq %rbx, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0xe0(%rbp), %rcx
movq %rcx, -0xd8(%rbp)
movb $0x0, (%rax)
movq -0xa0(%rbp), %rdi
movq -0x98(%rbp), %rsi
addq %rdi, %rsi
movb $0x9, -0x60(%rbp)
movq %rbx, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0xa0(%rbp), %rcx
movq %rcx, -0x98(%rbp)
movb $0x0, (%rax)
movq -0x80(%rbp), %rdi
movq -0x78(%rbp), %rsi
addq %rdi, %rsi
movb $0x9, -0x60(%rbp)
movq %rbx, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0x80(%rbp), %rcx
movq %rcx, -0x78(%rbp)
movb $0x0, (%rax)
movq -0xe0(%rbp), %rdi
movq -0xd8(%rbp), %rsi
addq %rdi, %rsi
movb $0x9, -0x60(%rbp)
movq %rbx, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0xe0(%rbp), %rcx
movq %rcx, -0xd8(%rbp)
movb $0x0, (%rax)
movl %r13d, -0x1d0(%rbp)
leaq -0x1c8(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3160
xorl %r13d, %r13d
leaq -0x1a8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3160
leaq -0x188(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3160
jmp 0xba56
leaq -0x598(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
movl $0x2c, %edx
callq 0x3470
leaq -0x598(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
movl $0x2c, %edx
callq 0x3470
movl %ebx, %r14d
movq -0xa0(%rbp), %rdi
movq -0x98(%rbp), %rsi
addq %rdi, %rsi
movb $0x20, -0x60(%rbp)
leaq -0x60(%rbp), %rbx
movq %rbx, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0xa0(%rbp), %rcx
movq %rcx, -0x98(%rbp)
movb $0x0, (%rax)
movq -0xc0(%rbp), %rdi
movq -0xb8(%rbp), %rsi
addq %rdi, %rsi
movb $0x20, -0x60(%rbp)
movq %rbx, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0xc0(%rbp), %rcx
movq %rcx, -0xb8(%rbp)
movb $0x0, (%rax)
movq -0xa0(%rbp), %rdi
movq -0x98(%rbp), %rsi
addq %rdi, %rsi
movb $0x9, -0x60(%rbp)
movq %rbx, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0xa0(%rbp), %rcx
movq %rcx, -0x98(%rbp)
movb $0x0, (%rax)
movq -0xc0(%rbp), %rdi
movq -0xb8(%rbp), %rsi
addq %rdi, %rsi
movb $0x9, -0x60(%rbp)
movq %rbx, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0xc0(%rbp), %rcx
movq %rcx, -0xb8(%rbp)
movb $0x0, (%rax)
movl %r14d, -0x1d0(%rbp)
leaq -0x1c8(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3160
leaq -0xc0(%rbp), %r14
movq %r14, %rdi
movl $0x28, %esi
xorl %edx, %edx
callq 0x3300
movq %rax, %rbx
movq %r14, %rdi
movl $0x29, %esi
xorl %edx, %edx
callq 0x3300
leaq 0x1(%rbx), %rdx
movq %rbx, %rcx
notq %rcx
addq %rax, %rcx
leaq -0x60(%rbp), %r14
movq %r14, %rdi
leaq -0xc0(%rbp), %rsi
callq 0x3270
leaq -0x1a8(%rbp), %rdi
movq %r14, %rsi
callq 0x32d0
movq -0x60(%rbp), %rdi
leaq -0x50(%rbp), %rax
cmpq %rax, %rdi
je 0xb599
callq 0x3230
movq %r14, %rdi
leaq -0xc0(%rbp), %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x3270
movq -0x60(%rbp), %r14
callq 0x3050
movq %rax, %rbx
movl (%rax), %eax
movl %eax, -0x30(%rbp)
movl $0x0, (%rbx)
movq %r14, %rdi
leaq -0x240(%rbp), %rsi
movl $0xa, %edx
callq 0x3330
cmpq %r14, -0x240(%rbp)
je 0xbd9f
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
leaq -0x960(%rbp), %r14
jb 0xbdc3
movl (%rbx), %ecx
cmpl $0x22, %ecx
je 0xbdc3
testl %ecx, %ecx
jne 0xb61a
movl -0x30(%rbp), %ecx
movl %ecx, (%rbx)
movl %eax, -0x164(%rbp)
movq -0x60(%rbp), %rdi
leaq -0x50(%rbp), %rax
cmpq %rax, %rdi
je 0xba56
callq 0x3230
jmp 0xba56
leaq -0x598(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x2c, %edx
callq 0x3470
leaq -0x598(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
movl $0x2c, %edx
callq 0x3470
leaq -0x598(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
movl $0x2c, %edx
callq 0x3470
movq -0x80(%rbp), %rdi
movq -0x78(%rbp), %rsi
addq %rdi, %rsi
movb $0x20, -0x60(%rbp)
leaq -0x60(%rbp), %r14
movq %r14, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0x80(%rbp), %rcx
movq %rcx, -0x78(%rbp)
movb $0x0, (%rax)
movq -0xe0(%rbp), %rdi
movq -0xd8(%rbp), %rsi
addq %rdi, %rsi
movb $0x20, -0x60(%rbp)
movq %r14, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0xe0(%rbp), %rcx
movq %rcx, -0xd8(%rbp)
movb $0x0, (%rax)
movq -0xc0(%rbp), %rdi
movq -0xb8(%rbp), %rsi
addq %rdi, %rsi
movb $0x20, -0x60(%rbp)
movq %r14, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0xc0(%rbp), %rcx
movq %rcx, -0xb8(%rbp)
movb $0x0, (%rax)
movq -0x80(%rbp), %rdi
movq -0x78(%rbp), %rsi
addq %rdi, %rsi
movb $0x9, -0x60(%rbp)
movq %r14, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0x80(%rbp), %rcx
movq %rcx, -0x78(%rbp)
movb $0x0, (%rax)
movq -0xe0(%rbp), %rdi
movq -0xd8(%rbp), %rsi
addq %rdi, %rsi
movb $0x9, -0x60(%rbp)
movq %r14, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0xe0(%rbp), %rcx
movq %rcx, -0xd8(%rbp)
movb $0x0, (%rax)
movq -0xc0(%rbp), %rdi
movq -0xb8(%rbp), %rsi
addq %rdi, %rsi
movb $0x9, -0x60(%rbp)
movq %r14, %rdx
callq 0xc5cf
movq %rax, %rcx
subq -0xc0(%rbp), %rcx
movq %rcx, -0xb8(%rbp)
movb $0x0, (%rax)
movl %ebx, -0x1d0(%rbp)
leaq -0x1a8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3160
leaq -0x188(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3160
movq -0xc0(%rbp), %r14
callq 0x3050
movq %rax, %rbx
movl (%rax), %eax
movl %eax, -0x30(%rbp)
movl $0x0, (%rbx)
movq %r14, %rdi
leaq -0x60(%rbp), %rsi
movl $0xa, %edx
callq 0x3330
cmpq %r14, -0x60(%rbp)
je 0xbdb7
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0xbdab
movl (%rbx), %ecx
cmpl $0x22, %ecx
je 0xbdab
testl %ecx, %ecx
leaq -0x960(%rbp), %r14
jne 0xb825
movl -0x30(%rbp), %ecx
movl %ecx, (%rbx)
movl %eax, -0x164(%rbp)
jmp 0xba56
movl $0xa, -0x1d0(%rbp)
jmp 0xba56
leaq -0x280(%rbp), %rdi
leaq 0x9cbd(%rip), %rsi      # 0x1550a
movq -0x1f8(%rbp), %rdx
callq 0x8c2e
leaq -0x280(%rbp), %rdi
callq 0x97ab
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0xb87d
callq 0x3230
xorl %ebx, %ebx
xorl %r12d, %r12d
jmp 0xba6b
leaq -0x598(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
movl $0x2c, %edx
callq 0x3470
leaq -0x598(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x2c, %edx
callq 0x3470
leaq -0x598(%rbp), %rdi
leaq -0x120(%rbp), %rsi
movl $0x2c, %edx
callq 0x3470
movq -0xa0(%rbp), %rdi
movq -0x98(%rbp), %rsi
addq %rdi, %rsi
movb $0x20, -0x60(%rbp)
leaq -0x60(%rbp), %rdx
callq 0xc5cf
movq -0xa0(%rbp), %rdx
addq -0x98(%rbp), %rdx
leaq -0xa0(%rbp), %rdi
movq %rax, %rsi
callq 0x3090
movq -0x80(%rbp), %rdi
movq -0x78(%rbp), %rsi
addq %rdi, %rsi
movb $0x20, -0x60(%rbp)
leaq -0x60(%rbp), %rdx
callq 0xc5cf
movq -0x80(%rbp), %rdx
addq -0x78(%rbp), %rdx
leaq -0x80(%rbp), %rdi
movq %rax, %rsi
callq 0x3090
movq -0x120(%rbp), %rdi
movq -0x118(%rbp), %rsi
addq %rdi, %rsi
movb $0x20, -0x60(%rbp)
leaq -0x60(%rbp), %rdx
callq 0xc5cf
movq -0x120(%rbp), %rdx
addq -0x118(%rbp), %rdx
leaq -0x120(%rbp), %rdi
movq %rax, %rsi
callq 0x3090
movq -0xa0(%rbp), %rdi
movq -0x98(%rbp), %rsi
addq %rdi, %rsi
movb $0x9, -0x60(%rbp)
leaq -0x60(%rbp), %rdx
callq 0xc5cf
movq -0xa0(%rbp), %rdx
addq -0x98(%rbp), %rdx
leaq -0xa0(%rbp), %rdi
movq %rax, %rsi
callq 0x3090
movq -0x80(%rbp), %rdi
movq -0x78(%rbp), %rsi
addq %rdi, %rsi
movb $0x9, -0x60(%rbp)
leaq -0x60(%rbp), %rdx
callq 0xc5cf
movq -0x80(%rbp), %rdx
addq -0x78(%rbp), %rdx
leaq -0x80(%rbp), %rdi
movq %rax, %rsi
callq 0x3090
movq -0x120(%rbp), %rdi
movq -0x118(%rbp), %rsi
addq %rdi, %rsi
movb $0x9, -0x60(%rbp)
leaq -0x60(%rbp), %rdx
callq 0xc5cf
movq -0x120(%rbp), %rdx
addq -0x118(%rbp), %rdx
leaq -0x120(%rbp), %rdi
movq %rax, %rsi
callq 0x3090
movl $0x4, -0x1d0(%rbp)
leaq -0x1c8(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3160
leaq -0x1a8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3160
leaq -0x120(%rbp), %rdi
xorl %esi, %esi
movl $0xa, %edx
callq 0xc3c3
movl %eax, -0x168(%rbp)
movb $0x1, %bl
leaq -0x260(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0xc464
leaq -0x598(%rbp), %rdi
movq 0xf547(%rip), %rsi      # 0x1afc0
callq 0x3350
leaq -0x520(%rbp), %rdi
callq 0x30e0
movq -0x188(%rbp), %rdi
leaq -0x178(%rbp), %rax
cmpq %rax, %rdi
je 0xbaa2
callq 0x3230
movq -0x1a8(%rbp), %rdi
leaq -0x198(%rbp), %rax
cmpq %rax, %rdi
je 0xbaba
callq 0x3230
movq -0x1c8(%rbp), %rdi
leaq -0x1b8(%rbp), %rax
cmpq %rax, %rdi
je 0xbad2
callq 0x3230
movq -0x1f0(%rbp), %rdi
leaq -0x1e0(%rbp), %rax
cmpq %rax, %rdi
je 0xbaea
callq 0x3230
testb %bl, %bl
leaq -0x598(%rbp), %rbx
jne 0xb132
jmp 0xbb99
movl $0x28, %edi
callq 0x3250
movq %rax, %rbx
leaq -0x318(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0xc4fc
leaq -0x318(%rbp), %rsi
movq %rbx, %rdi
callq 0xcbfc
leaq 0xf82c(%rip), %rax      # 0x1b360
movq %rbx, (%rax)
leaq -0x318(%rbp), %rdi
callq 0xc59c
leaq -0x328(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x99e8(%rip), %rsi      # 0x1553d
leaq 0x99ef(%rip), %rdx      # 0x1554b
leaq -0x338(%rbp), %rdi
callq 0x721e
leaq -0x338(%rbp), %rdi
movl $0x1, %esi
callq 0x9f0f
movq -0x338(%rbp), %rdi
cmpq %rbx, %rdi
je 0xbb8a
callq 0x3230
movb $0x1, %r12b
leaq -0x960(%rbp), %rdi
callq 0x3080
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0xbbb1
callq 0x3230
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0xbbc9
callq 0x3230
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0xbbe1
callq 0x3230
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0xbbf3
callq 0x3230
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0xbc0b
callq 0x3230
movq -0x160(%rbp), %rdi
leaq -0x150(%rbp), %rax
cmpq %rax, %rdi
je 0xbc23
callq 0x3230
leaq -0x260(%rbp), %rdi
callq 0xc59c
movq 0xf38a(%rip), %rsi      # 0x1afc0
leaq -0x758(%rbp), %rdi
callq 0x3350
leaq -0x6e0(%rbp), %rdi
callq 0x30e0
jmp 0xbccf
leaq -0x3a8(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x9819(%rip), %rsi      # 0x1547b
leaq 0x9843(%rip), %rdx      # 0x154ac
leaq -0x3b8(%rbp), %rdi
callq 0x721e
leaq -0x3b8(%rbp), %rdi
callq 0x97ab
movq -0x3b8(%rbp), %rdi
jmp 0xbcc2
leaq -0x388(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x9811(%rip), %rsi      # 0x154ad
leaq 0x983e(%rip), %rdx      # 0x154e1
leaq -0x398(%rbp), %rdi
callq 0x721e
leaq -0x398(%rbp), %rdi
callq 0x97ab
movq -0x398(%rbp), %rdi
movb $0x1, %r12b
cmpq %rbx, %rdi
je 0xbccf
callq 0x3230
movq 0xf2ea(%rip), %rsi      # 0x1afc0
leaq -0xae0(%rbp), %rdi
callq 0x3350
leaq -0xa68(%rbp), %rdi
callq 0x30e0
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0xab8f
callq 0x3230
jmp 0xab8f
leaq 0x983b(%rip), %rdi      # 0x15551
callq 0x3180
leaq 0x982a(%rip), %rdi      # 0x1554c
callq 0x3360
leaq 0x981e(%rip), %rdi      # 0x1554c
callq 0x3180
leaq 0x9812(%rip), %rdi      # 0x1554c
callq 0x3360
leaq 0x9806(%rip), %rdi      # 0x1554c
callq 0x3180
leaq 0x97fa(%rip), %rdi      # 0x1554c
callq 0x3180
leaq 0x97ee(%rip), %rdi      # 0x1554c
callq 0x3360
leaq 0x97e2(%rip), %rdi      # 0x1554c
callq 0x3180
leaq 0x97d6(%rip), %rdi      # 0x1554c
callq 0x3360
leaq 0x97cf(%rip), %rdi      # 0x15551
callq 0x3180
leaq 0x97c3(%rip), %rdi      # 0x15551
callq 0x3360
leaq 0x97b7(%rip), %rdi      # 0x15551
callq 0x3360
leaq 0x97a6(%rip), %rdi      # 0x1554c
callq 0x3180
leaq 0x979a(%rip), %rdi      # 0x1554c
callq 0x3360
leaq 0x978e(%rip), %rdi      # 0x1554c
callq 0x3180
leaq 0x9782(%rip), %rdi      # 0x1554c
callq 0x3360
movq %rax, %r14
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
jmp 0xbe88
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
movq %rax, %r14
cmpl $0x0, (%rbx)
jne 0xbfad
movl -0x30(%rbp), %eax
movl %eax, (%rbx)
jmp 0xbfad
movq %rax, %r14
cmpl $0x0, (%rbx)
jne 0xbe80
movl -0x30(%rbp), %eax
movl %eax, (%rbx)
movq -0x60(%rbp), %rdi
leaq -0x50(%rbp), %rax
cmpq %rax, %rdi
je 0xbfad
callq 0x3230
jmp 0xbfad
movq %rax, %r14
movq -0x398(%rbp), %rdi
jmp 0xbf6a
jmp 0xc26d
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
jmp 0xbfaa
movq %rax, %r14
movq -0x3b8(%rbp), %rdi
jmp 0xbf6a
jmp 0xc26d
jmp 0xbee8
jmp 0xbfaa
movq %rax, %r14
jmp 0xbfcc
movq %rax, %r14
movq -0x338(%rbp), %rdi
cmpq %rbx, %rdi
jne 0xbf20
jmp 0xc1b6
jmp 0xc1b3
movq %rax, %r14
leaq -0x318(%rbp), %rdi
callq 0xc59c
jmp 0xbf1d
movq %rax, %r14
movq %rbx, %rdi
callq 0x3230
jmp 0xc1b6
movq %rax, %r14
movq -0x358(%rbp), %rdi
cmpq %rbx, %rdi
jne 0xc1a9
jmp 0xc24c
jmp 0xc128
jmp 0xc26d
jmp 0xc26d
jmp 0xc26d
jmp 0xc26d
jmp 0xc26d
movq %rax, %r14
movq -0x378(%rbp), %rdi
cmpq %rbx, %rdi
jne 0xc17c
jmp 0xc270
jmp 0xc26d
jmp 0xc1b3
jmp 0xc2a9
jmp 0xc2a9
jmp 0xc2a9
jmp 0xc2a9
movq %rax, %r14
movq -0x3d8(%rbp), %rdi
jmp 0xc025
jmp 0xc2d1
movq %rax, %r14
movq 0xf00c(%rip), %rsi      # 0x1afc0
leaq -0x598(%rbp), %rdi
callq 0x3350
leaq -0x520(%rbp), %rdi
callq 0x30e0
leaq -0x1f0(%rbp), %rdi
callq 0xc4a2
jmp 0xc1b6
jmp 0xc26d
movq %rax, %r14
movq -0x2c0(%rbp), %rdi
leaq -0x2b0(%rbp), %rax
jmp 0xc173
jmp 0xc128
jmp 0xc058
jmp 0xc128
movq %rax, %r14
cmpl $0x0, (%r12)
jne 0xc165
movl %r15d, (%r12)
jmp 0xc165
movq %rax, %r14
movq -0x3f8(%rbp), %rdi
cmpq %rbx, %rdi
jne 0xc2a2
jmp 0xc2f8
jmp 0xc2d1
jmp 0xc26d
movq %rax, %r14
movq -0x2e0(%rbp), %rdi
leaq -0x2d0(%rbp), %rax
jmp 0xc173
jmp 0xc128
movq %rax, %r14
jmp 0xc192
jmp 0xc128
movq %r14, %rbx
movq %rax, %r14
cmpl $0x1, %edx
jne 0xc2f8
movq %r14, %rdi
callq 0x3120
leaq 0x9362(%rip), %rsi      # 0x153e5
leaq -0x5b8(%rbp), %rdi
movq %rbx, %rdx
callq 0x8c2e
leaq -0x5b8(%rbp), %rdi
callq 0x97ab
leaq -0x5a8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc0b3
callq 0x3230
callq 0x33f0
jmp 0xab8c
jmp 0xc2d1
movq %rax, %r14
leaq -0x5a8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc0df
callq 0x3230
jmp 0xc0df
movq %rax, %r14
callq 0x33f0
jmp 0xc2f8
movq %rax, %rdi
callq 0x8cb9
jmp 0xc2d1
movq %rax, %r14
leaq -0x5c8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0xc148
jmp 0xc364
jmp 0xc186
movq %rax, %r14
cmpl $0x0, (%r15)
jne 0xc192
movl -0x30(%rbp), %eax
movl %eax, (%r15)
jmp 0xc192
jmp 0xc186
jmp 0xc26d
movq %rax, %r14
jmp 0xc24c
jmp 0xc26d
movq %rax, %r14
movq -0x418(%rbp), %rdi
cmpq %rbx, %rdi
je 0xc364
callq 0x3230
jmp 0xc364
movq %rax, %r14
jmp 0xc364
movq %rax, %r14
cmpl $0x0, (%rbx)
jne 0xc165
movl %r15d, (%rbx)
movq -0x758(%rbp), %rdi
leaq -0x748(%rbp), %rax
cmpq %rax, %rdi
je 0xc270
callq 0x3230
jmp 0xc270
movq %rax, %r14
cmpl $0x0, (%r15)
jne 0xc192
movl %r12d, (%r15)
movq -0x598(%rbp), %rdi
leaq -0x588(%rbp), %rax
cmpq %rax, %rdi
je 0xc24c
callq 0x3230
jmp 0xc24c
movq %rax, %r14
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0xc1ce
callq 0x3230
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0xc1e6
callq 0x3230
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0xc1fe
callq 0x3230
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0xc210
callq 0x3230
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0xc228
callq 0x3230
movq -0x160(%rbp), %rdi
leaq -0x150(%rbp), %rax
cmpq %rax, %rdi
je 0xc240
callq 0x3230
leaq -0x260(%rbp), %rdi
callq 0xc59c
movq 0xed6d(%rip), %rsi      # 0x1afc0
leaq -0x758(%rbp), %rdi
callq 0x3350
leaq -0x6e0(%rbp), %rdi
callq 0x30e0
jmp 0xc270
movq %rax, %r14
movq 0xed49(%rip), %rsi      # 0x1afc0
leaq -0xae0(%rbp), %rdi
callq 0x3350
leaq -0xa68(%rbp), %rdi
callq 0x30e0
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0xc2f8
callq 0x3230
jmp 0xc2f8
movq %rax, %r14
jmp 0xc28f
jmp 0xc2d1
jmp 0xc2b4
jmp 0xc2d6
movq %rax, %r14
movq -0x598(%rbp), %rdi
leaq -0x588(%rbp), %rax
cmpq %rax, %rdi
je 0xc2d9
callq 0x3230
jmp 0xc2d9
movq %rax, %r14
jmp 0xc2f8
movq %rax, %r14
movq 0xece0(%rip), %rsi      # 0x1afc0
leaq -0xae0(%rbp), %rdi
callq 0x3350
leaq -0xa68(%rbp), %rdi
callq 0x30e0
movq -0x218(%rbp), %rdi
leaq -0x208(%rbp), %rax
cmpq %rax, %rdi
je 0xc310
callq 0x3230
movq -0x238(%rbp), %rdi
leaq -0x228(%rbp), %rax
cmpq %rax, %rdi
je 0xc328
callq 0x3230
movq -0x300(%rbp), %rdi
leaq -0x2f0(%rbp), %rax
cmpq %rax, %rdi
je 0xc340
callq 0x3230
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0xc358
callq 0x3230
leaq -0x960(%rbp), %rdi
callq 0x30a0
movq %r14, %rdi
callq 0x3440