// File: /workspace/github_c_makefile_star2_O2/g3ida[P]g3idaCompiler/vm.cpp
// Function: main
int main(int argc, char* argv[])
{
    if(argc <= 1) {
        printf(" g3idaMachine: fatal error no input files\n");
        return 0;
    }

    input = fopen(argv[1], "r");
    if(input == NULL) {
        printf(" g3idaMachine: fatal error file not found %s\n", argv[1]);
        return -1;
    }

    while(true) {
        Inst is = getNextInst();
        if(is.ins == NUM_ELEMENTS) {break;}
        if(is.ins == ETIQ)
        {
            etiq[is.value] = instr.size();
        }
        instr.push_back(is);
    }

    unsigned int cc=0;
    while(cc !=instr.size()) {
        Inst i, j, k;
        //if(!s.empty())
        //cout << s.top().value << "++++"<<endl;
        //cout << s.size()<<endl;

        switch(instr[cc].ins) {
        case EMPILER: s.push(instr[cc]); break;
        case VALEURD: instr[cc].value = memory[instr[cc].s]; s.push(instr[cc]); break;
        case VALEURG: s.push(instr[cc]); break;
        case DEPILER: s.pop(); break;
        case AFFECT:
            i = s.top();s.pop();
            j = s.top();s.pop();
            memory[j.s] = i.value;
            break;
        case COPIER:
            i = s.top();
            s.push(i);
            break;
        case MULT:
            i = s.top();s.pop();
            j = s.top(); s.pop();
            k.value = j.value*i.value;
            k.ins = EMPILER;
            s.push(k);
            break;
        case DIV:
            i = s.top();s.pop();
            j = s.top(); s.pop();
            k.value = j.value/i.value;
            k.ins = EMPILER;
            s.push(k);
            break;
        case PLUS:
            i = s.top();s.pop();
            j = s.top(); s.pop();
            k.value = j.value+i.value;
            k.ins = EMPILER;
            s.push(k);
            break;
        case OR:
            i = s.top();s.pop();
            j = s.top(); s.pop();
            k.value = j.value||i.value;
            k.ins = EMPILER;
            s.push(k);
            break;
        case AND:
            i = s.top();s.pop();
            j = s.top(); s.pop();
            k.value = j.value&&i.value;
            k.ins = EMPILER;
            s.push(k);
            break;
        case MINUS:
            i = s.top();s.pop();
            j = s.top(); s.pop();
            k.value = j.value-i.value;
            k.ins = EMPILER;
            s.push(k);
            break;
        case MOD:
            i = s.top();s.pop();
            j = s.top(); s.pop();
            k.value = j.value%i.value;
            k.ins = EMPILER;
            s.push(k);
            break;
        case ETIQ:
            break;
        case ALLER_A:
            cc = etiq[instr[cc].value];
            break;
        case ALLER_SI_FAUX:
            i = s.top();
            s.pop();
            if(i.value==0) {
                cc = etiq[instr[cc].value];
            }
            break;
        case ALLER_SI_VRAI:
            i = s.top();
            s.pop();
            if(i.value) {
                cc = etiq[instr[cc].value];
            }
            break;
        case HALTE:
            cc = instr.size();
            break;
        case COMPARER_SI_SUP:
            i = s.top();s.pop();
            j = s.top(); s.pop();
            k.ins = EMPILER;
            k.value = 0;
            if(j.value > i.value) {
                k.value = 1;
            }
            s.push(k);
            break;
        case COMPARER_SI_INF:
            i = s.top();s.pop();
            j = s.top(); s.pop();
            k.ins = EMPILER;
            k.value = 0;
            if(j.value < i.value) {
                k.value = 1;
            }
            s.push(k);
            break;
        case COMPARER_SI_EGAL:
            i = s.top();s.pop();
            j = s.top(); s.pop();
            k.ins = EMPILER;
            k.value = 0;
            if(i.value == j.value) {
                k.value = 1;
            }
            s.push(k);
            break;
        case READ:
            cin >> memory[s.top().s];
            s.pop();
            break;
        case WRITE:
            cout << s.top().value;
            s.pop();
            break;
        case READLN:
            cin >> memory[s.top().s];
            s.pop();
            cin.ignore();
            break;
        case WRITELN:
            cout << s.top().value<<endl;
            s.pop();
            break;
        default:
            break;
        }
        cc++;
    }

    //system("PAUSE");
    fclose(input);

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
cmpl $0x1, %edi
jg 0x262c
leaq 0x2b73(%rip), %rdi      # 0x5195
callq 0x21c0
jmp 0x304b
movq %rsi, %rbx
movq 0x8(%rsi), %rdi
leaq 0x2a85(%rip), %rsi      # 0x50bf
callq 0x2160
movq %rax, 0x5b72(%rip)      # 0x81b8
testq %rax, %rax
je 0x305f
leaq -0x50(%rbp), %r14
leaq -0x58(%rbp), %rbx
leaq 0x5b92(%rip), %r15      # 0x81f0
leaq 0x5aeb(%rip), %r12      # 0x8150
movq %rbx, %rdi
callq 0x244c
movl -0x30(%rbp), %eax
cmpl $0xd, %eax
je 0x267c
cmpl $0x19, %eax
jne 0x26ac
jmp 0x26c5
movq 0x5ad5(%rip), %r13      # 0x8158
movq %rbx, %rsi
movq 0x5ac3(%rip), %rbx      # 0x8150
movq %r15, %rdi
callq 0x317c
movq %rax, %rcx
subq %rbx, %r13
movq %r13, %rax
cqto
pushq $0x30
popq %rsi
idivq %rsi
movl %eax, (%rcx)
leaq -0x58(%rbp), %rbx
movq %r12, %rdi
movq %rbx, %rsi
callq 0x31ce
movq %r14, %rdi
callq 0x2090
leaq -0x58(%rbp), %rbx
jmp 0x2665
movq %r14, %rdi
callq 0x2090
xorl %r12d, %r12d
leaq 0x292d(%rip), %r15      # 0x5004
xorl %r13d, %r13d
movl %r13d, %ecx
movq 0x5a74(%rip), %rax      # 0x8158
movq 0x5a65(%rip), %rsi      # 0x8150
subq %rsi, %rax
cqto
pushq $0x30
popq %rdi
idivq %rdi
cmpq %rcx, %rax
je 0x303f
andl $0x0, -0x58(%rbp)
leaq -0x40(%rbp), %rdx
movq %rdx, -0x50(%rbp)
andq $0x0, -0x48(%rbp)
movb %r12b, -0x40(%rbp)
andl $0x0, -0xb8(%rbp)
leaq -0xa0(%rbp), %rdx
movq %rdx, -0xb0(%rbp)
andq $0x0, -0xa8(%rbp)
movb %r12b, -0xa0(%rbp)
andl $0x0, -0x88(%rbp)
leaq -0x70(%rbp), %rdx
movq %rdx, -0x80(%rbp)
andq $0x0, -0x78(%rbp)
movb %r12b, -0x70(%rbp)
imulq $0x30, %rcx, %r14
movl 0x28(%rsi,%r14), %ecx
cmpq $0x18, %rcx
ja 0x3019
addq %r14, %rsi
movslq (%r15,%rcx,4), %rcx
addq %r15, %rcx
jmpq *%rcx
addq $0x8, %rsi
leaq 0x5a46(%rip), %rdi      # 0x81c0
callq 0x3112
movl (%rax), %eax
movq 0x59c8(%rip), %rcx      # 0x8150
leaq (%rcx,%r14), %rsi
movl %eax, (%rcx,%r14)
jmp 0x2fb8
movq 0x59fc(%rip), %rsi      # 0x8198
cmpq 0x59fd(%rip), %rsi      # 0x81a0
jne 0x27b8
movq 0x5a04(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rdi
callq 0x320a
leaq 0x599c(%rip), %rdi      # 0x8168
callq 0x423c
movq 0x59c0(%rip), %rsi      # 0x8198
cmpq 0x59c1(%rip), %rsi      # 0x81a0
jne 0x27f4
movq 0x59c8(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x320a
leaq 0x595d(%rip), %rdi      # 0x8168
callq 0x423c
andl $0x0, -0x60(%rbp)
movl -0xb8(%rbp), %eax
xorl %ecx, %ecx
cmpl -0x58(%rbp), %eax
setl %cl
jmp 0x2fab
movq 0x596a(%rip), %rax      # 0x8198
cmpq 0x596b(%rip), %rax      # 0x81a0
jne 0x284a
movq 0x5972(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rax
movl $0x1e0, %ecx            # imm = 0x1E0
addq %rcx, %rax
movl -0x30(%rax), %esi
movq 0x577c(%rip), %rdi      # 0x7fd0
callq 0x2210
jmp 0x300d
leaq 0x598b(%rip), %rdi      # 0x81f0
callq 0x317c
jmp 0x2d57
movq 0x5922(%rip), %rax      # 0x8198
cmpq 0x5923(%rip), %rax      # 0x81a0
jne 0x2892
movq 0x592a(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rax
movl $0x1e0, %ecx            # imm = 0x1E0
addq %rcx, %rax
movl -0x30(%rax), %esi
movq 0x5734(%rip), %rdi      # 0x7fd0
callq 0x2210
movq %rax, %rdi
callq 0x20a0
jmp 0x300d
movq 0x58e3(%rip), %rsi      # 0x8198
cmpq 0x58e4(%rip), %rsi      # 0x81a0
jne 0x28d1
movq 0x58eb(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rdi
callq 0x320a
leaq 0x5883(%rip), %rdi      # 0x8168
callq 0x423c
movq 0x58a7(%rip), %rsi      # 0x8198
cmpq 0x58a8(%rip), %rsi      # 0x81a0
jne 0x290d
movq 0x58af(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x320a
leaq 0x5844(%rip), %rdi      # 0x8168
callq 0x423c
cmpl $0x0, -0xb8(%rbp)
setne %al
cmpl $0x0, -0x58(%rbp)
setne %cl
andb %al, %cl
movzbl %cl, %eax
jmp 0x2f0f
movq 0x584d(%rip), %rsi      # 0x8198
cmpq 0x584e(%rip), %rsi      # 0x81a0
jne 0x2967
movq 0x5855(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x28, %rsi
leaq 0x584e(%rip), %rdi      # 0x81c0
callq 0x3112
movq 0x5662(%rip), %rdi      # 0x7fe0
movq %rax, %rsi
callq 0x20d0
leaq 0x57db(%rip), %rdi      # 0x8168
callq 0x423c
movq 0x5647(%rip), %rdi      # 0x7fe0
callq 0x2230
jmp 0x3019
movq 0x57ee(%rip), %rsi      # 0x8198
cmpq 0x57ef(%rip), %rsi      # 0x81a0
jne 0x29c6
movq 0x57f6(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rdi
callq 0x320a
leaq 0x578e(%rip), %rdi      # 0x8168
callq 0x423c
movq 0x57b2(%rip), %rsi      # 0x8198
cmpq 0x57b3(%rip), %rsi      # 0x81a0
jne 0x2a02
movq 0x57ba(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x320a
leaq 0x574f(%rip), %rdi      # 0x8168
callq 0x423c
movl -0xb8(%rbp), %eax
cltd
idivl -0x58(%rbp)
movl %edx, -0x88(%rbp)
jmp 0x2f15
movq 0x575e(%rip), %rsi      # 0x8198
cmpq 0x575f(%rip), %rsi      # 0x81a0
jne 0x2a56
movq 0x5766(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rdi
callq 0x320a
leaq 0x56fe(%rip), %rdi      # 0x8168
callq 0x423c
movq 0x5722(%rip), %rsi      # 0x8198
cmpq 0x5723(%rip), %rsi      # 0x81a0
jne 0x2a92
movq 0x572a(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x320a
leaq 0x56bf(%rip), %rdi      # 0x8168
callq 0x423c
andl $0x0, -0x60(%rbp)
movl -0x58(%rbp), %eax
xorl %ecx, %ecx
cmpl -0xb8(%rbp), %eax
sete %cl
jmp 0x2fab
movq 0x56cc(%rip), %rsi      # 0x8198
cmpq 0x56cd(%rip), %rsi      # 0x81a0
jne 0x2ae8
movq 0x56d4(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rbx
movq %rbx, %rdi
callq 0x320a
movq %rbx, %rsi
jmp 0x2fb8
movq 0x5691(%rip), %rsi      # 0x8198
cmpq 0x5692(%rip), %rsi      # 0x81a0
jne 0x2b23
movq 0x5699(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rdi
callq 0x320a
leaq 0x5631(%rip), %rdi      # 0x8168
callq 0x423c
movq 0x5655(%rip), %rsi      # 0x8198
cmpq 0x5656(%rip), %rsi      # 0x81a0
jne 0x2b5f
movq 0x565d(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x320a
leaq 0x55f2(%rip), %rdi      # 0x8168
callq 0x423c
movl -0xb8(%rbp), %eax
subl -0x58(%rbp), %eax
jmp 0x2f0f
movq 0x5608(%rip), %rsi      # 0x8198
cmpq 0x5609(%rip), %rsi      # 0x81a0
jne 0x2bac
movq 0x5610(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rdi
callq 0x320a
leaq 0x55a8(%rip), %rdi      # 0x8168
callq 0x423c
movq 0x55cc(%rip), %rsi      # 0x8198
cmpq 0x55cd(%rip), %rsi      # 0x81a0
jne 0x2be8
movq 0x55d4(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x320a
leaq 0x5569(%rip), %rdi      # 0x8168
callq 0x423c
movl -0x58(%rbp), %eax
imull -0xb8(%rbp), %eax
jmp 0x2f0f
movq 0x557e(%rip), %rsi      # 0x8198
cmpq 0x557f(%rip), %rsi      # 0x81a0
jne 0x2c36
movq 0x5586(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rdi
callq 0x320a
leaq 0x551e(%rip), %rdi      # 0x8168
callq 0x423c
movq 0x5542(%rip), %rsi      # 0x8198
cmpq 0x5543(%rip), %rsi      # 0x81a0
jne 0x2c72
movq 0x554a(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x320a
leaq 0x54df(%rip), %rdi      # 0x8168
callq 0x423c
movl -0xb8(%rbp), %eax
cltd
idivl -0x58(%rbp)
jmp 0x2f0f
movq 0x54f4(%rip), %rsi      # 0x8198
cmpq 0x54f5(%rip), %rsi      # 0x81a0
jne 0x2cc0
movq 0x54fc(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rdi
callq 0x320a
leaq 0x5494(%rip), %rdi      # 0x8168
callq 0x423c
cmpl $0x0, -0x58(%rbp)
jne 0x3019
addq 0x5466(%rip), %r14      # 0x8150
leaq 0x54ff(%rip), %rdi      # 0x81f0
movq %r14, %rsi
callq 0x317c
jmp 0x2d57
movq 0x5496(%rip), %rsi      # 0x8198
cmpq 0x5497(%rip), %rsi      # 0x81a0
jne 0x2d1e
movq 0x549e(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rdi
callq 0x320a
leaq 0x5436(%rip), %rdi      # 0x8168
callq 0x423c
cmpl $0x0, -0x58(%rbp)
je 0x3019
addq 0x5408(%rip), %r14      # 0x8150
leaq 0x54a1(%rip), %rdi      # 0x81f0
movq %r14, %rsi
callq 0x317c
movl (%rax), %r13d
jmp 0x3019
movq 0x5432(%rip), %rsi      # 0x8198
cmpq 0x5433(%rip), %rsi      # 0x81a0
jne 0x2d82
movq 0x543a(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rdi
callq 0x320a
leaq 0x53d2(%rip), %rdi      # 0x8168
callq 0x423c
movq 0x53f6(%rip), %rsi      # 0x8198
cmpq 0x53f7(%rip), %rsi      # 0x81a0
jne 0x2dbe
movq 0x53fe(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x320a
leaq 0x5393(%rip), %rdi      # 0x8168
callq 0x423c
movl -0x58(%rbp), %ebx
leaq 0x53dc(%rip), %rdi      # 0x81c0
leaq -0xb0(%rbp), %rsi
callq 0x3112
movl %ebx, (%rax)
jmp 0x3019
movq 0x539a(%rip), %rsi      # 0x8198
cmpq 0x539b(%rip), %rsi      # 0x81a0
jne 0x2e1a
movq 0x53a2(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rdi
callq 0x320a
leaq 0x533a(%rip), %rdi      # 0x8168
callq 0x423c
movq 0x535e(%rip), %rsi      # 0x8198
cmpq 0x535f(%rip), %rsi      # 0x81a0
jne 0x2e56
movq 0x5366(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x320a
leaq 0x52fb(%rip), %rdi      # 0x8168
callq 0x423c
movl -0x58(%rbp), %eax
xorl %ecx, %ecx
orl -0xb8(%rbp), %eax
setne %cl
movl %ecx, -0x88(%rbp)
jmp 0x2f15
movq 0x5306(%rip), %rsi      # 0x8198
cmpq 0x5307(%rip), %rsi      # 0x81a0
jne 0x2eae
movq 0x530e(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rdi
callq 0x320a
leaq 0x52a6(%rip), %rdi      # 0x8168
callq 0x423c
movq 0x52ca(%rip), %rsi      # 0x8198
cmpq 0x52cb(%rip), %rsi      # 0x81a0
jne 0x2eea
movq 0x52d2(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x320a
leaq 0x5267(%rip), %rdi      # 0x8168
callq 0x423c
movl -0x58(%rbp), %eax
addl -0xb8(%rbp), %eax
movl %eax, -0x88(%rbp)
andl $0x0, -0x60(%rbp)
jmp 0x2fb1
movq 0x5273(%rip), %rsi      # 0x8198
cmpq 0x5274(%rip), %rsi      # 0x81a0
jne 0x2f41
movq 0x527b(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0x58(%rbp), %rdi
callq 0x320a
leaq 0x5213(%rip), %rdi      # 0x8168
callq 0x423c
movq 0x5237(%rip), %rsi      # 0x8198
cmpq 0x5238(%rip), %rsi      # 0x81a0
jne 0x2f7d
movq 0x523f(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x30, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x320a
leaq 0x51d4(%rip), %rdi      # 0x8168
callq 0x423c
andl $0x0, -0x60(%rbp)
movl -0xb8(%rbp), %eax
xorl %ecx, %ecx
cmpl -0x58(%rbp), %eax
setg %cl
movl %ecx, -0x88(%rbp)
leaq -0x88(%rbp), %rsi
leaq 0x51a9(%rip), %rdi      # 0x8168
callq 0x3f9a
jmp 0x3019
movl %eax, %r13d
jmp 0x3019
movq 0x51c6(%rip), %rsi      # 0x8198
cmpq 0x51c7(%rip), %rsi      # 0x81a0
jne 0x2fee
movq 0x51ce(%rip), %rax      # 0x81b0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x28, %rsi
leaq 0x51c7(%rip), %rdi      # 0x81c0
callq 0x3112
movq 0x4fdb(%rip), %rdi      # 0x7fe0
movq %rax, %rsi
callq 0x20d0
leaq 0x5154(%rip), %rdi      # 0x8168
callq 0x423c
incl %r13d
leaq -0x80(%rbp), %rdi
callq 0x2090
leaq -0xb0(%rbp), %rdi
callq 0x2090
leaq -0x50(%rbp), %rdi
callq 0x2090
jmp 0x26da
movq 0x5172(%rip), %rdi      # 0x81b8
callq 0x2130
xorl %eax, %eax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%rbx), %rsi
leaq 0x1fff(%rip), %rdi      # 0x5069
xorl %eax, %eax
callq 0x2040
pushq $-0x1
popq %rax
jmp 0x304d
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x2090
leaq -0xb0(%rbp), %rdi
callq 0x2090
leaq -0x50(%rbp), %rdi
jmp 0x309a
movq %rax, %rbx
movq %r14, %rdi
callq 0x2090
movq %rbx, %rdi
callq 0x2220
nop