// File: /workspace/github_c_makefile_star2_O3/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 0x26ea
leaq 0x2adf(%rip), %rdi      # 0x51bf
callq 0x21d0
jmp 0x32ee
movq %rsi, %rbx
movq 0x8(%rsi), %rdi
leaq 0x29c7(%rip), %rsi      # 0x50bf
callq 0x2190
movq %rax, 0x5ac4(%rip)      # 0x81c8
testq %rax, %rax
je 0x3302
leaq -0x40(%rbp), %r12
leaq 0x5ae8(%rip), %r14      # 0x8200
leaq 0x5a41(%rip), %r15      # 0x8160
leaq -0x58(%rbp), %rdi
callq 0x24cc
movl -0x30(%rbp), %eax
cmpl $0x19, %eax
je 0x276f
cmpl $0xd, %eax
jne 0x275e
movq 0x5a2c(%rip), %rbx      # 0x8168
movq 0x5a1d(%rip), %r13      # 0x8160
movq %r14, %rdi
leaq -0x58(%rbp), %rsi
callq 0x345c
subq %r13, %rbx
shrq $0x4, %rbx
imull $0xaaaaaaab, %ebx, %ecx # imm = 0xAAAAAAAB
movl %ecx, (%rax)
movb $0x1, %r13b
movq %r15, %rdi
leaq -0x58(%rbp), %rsi
callq 0x34c4
jmp 0x2772
xorl %r13d, %r13d
movq -0x50(%rbp), %rdi
cmpq %r12, %rdi
je 0x2780
callq 0x2140
testb %r13b, %r13b
jne 0x271f
movq 0x59dc(%rip), %rax      # 0x8168
movq 0x59cd(%rip), %rsi      # 0x8160
subq %rsi, %rax
je 0x32e2
sarq $0x4, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rax
xorl %r14d, %r14d
leaq -0xa0(%rbp), %rbx
xorl %ecx, %ecx
xorl %r15d, %r15d
movl %r14d, -0x58(%rbp)
movq %r12, -0x50(%rbp)
movq %r14, -0x48(%rbp)
movb %r14b, -0x40(%rbp)
movl %r14d, -0x88(%rbp)
leaq -0x70(%rbp), %rdx
movq %rdx, -0x80(%rbp)
movq %r14, -0x78(%rbp)
movb %r14b, -0x70(%rbp)
movl %r14d, -0xb8(%rbp)
movq %rbx, -0xb0(%rbp)
movq %r14, -0xa8(%rbp)
movb %r14b, -0xa0(%rbp)
leaq (%rcx,%rcx,2), %r13
shlq $0x4, %r13
movl 0x28(%rsi,%r13), %ecx
cmpq $0x18, %rcx
ja 0x3278
addq %r13, %rsi
leaq 0x27e3(%rip), %rdx      # 0x5004
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
addq $0x8, %rsi
leaq 0x599b(%rip), %rdi      # 0x81d0
callq 0x33dc
movl (%rax), %eax
movq 0x591d(%rip), %rcx      # 0x8160
leaq (%rcx,%r13), %rsi
movl %eax, (%rcx,%r13)
jmp 0x2c64
movq 0x5951(%rip), %rbx      # 0x81a8
cmpq 0x5952(%rip), %rbx      # 0x81b0
jne 0x2873
movq 0x5959(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rbx
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rbx
movl -0x30(%rbx), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%rbx), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%rbx), %eax
movl %eax, -0x30(%rbp)
leaq 0x58e5(%rip), %rdi      # 0x8178
callq 0x4472
movq 0x5909(%rip), %rbx      # 0x81a8
cmpq 0x590a(%rip), %rbx      # 0x81b0
jne 0x28bb
movq 0x5911(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rbx
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rbx
movl -0x30(%rbx), %eax
movl %eax, -0x88(%rbp)
leaq -0x28(%rbx), %rsi
leaq -0x80(%rbp), %rdi
callq 0x20b0
movl -0x8(%rbx), %eax
movl %eax, -0x60(%rbp)
leaq 0x589a(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x4472
movl -0x88(%rbp), %eax
xorl %ecx, %ecx
cmpl -0x58(%rbp), %eax
movl $0x0, -0x90(%rbp)
setl %cl
jmp 0x320e
movq 0x589e(%rip), %rax      # 0x81a8
cmpq 0x589f(%rip), %rax      # 0x81b0
jne 0x2926
movq 0x58a6(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rax
movl $0x1e0, %ecx            # imm = 0x1E0
addq %rcx, %rax
movl -0x30(%rax), %esi
movq 0x56a0(%rip), %rdi      # 0x7fd0
callq 0x2230
jmp 0x326c
leaq 0x58bf(%rip), %rdi      # 0x8200
callq 0x345c
jmp 0x2f3c
movq 0x5856(%rip), %rax      # 0x81a8
cmpq 0x5857(%rip), %rax      # 0x81b0
jne 0x296e
movq 0x585e(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rax
movl $0x1e0, %ecx            # imm = 0x1E0
addq %rcx, %rax
movl -0x30(%rax), %esi
movq 0x5658(%rip), %rdi      # 0x7fd0
callq 0x2230
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
jmp 0x326c
movq 0x57f5(%rip), %r13      # 0x81a8
cmpq 0x57f6(%rip), %r13      # 0x81b0
jne 0x29cf
movq 0x57fd(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x30(%rbp)
leaq 0x5787(%rip), %rdi      # 0x8178
callq 0x4472
movq 0x57ab(%rip), %r13      # 0x81a8
cmpq 0x57ac(%rip), %r13      # 0x81b0
jne 0x2a19
movq 0x57b3(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x88(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x80(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x60(%rbp)
leaq 0x573a(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x4472
cmpl $0x0, -0x88(%rbp)
setne %al
cmpl $0x0, -0x58(%rbp)
setne %cl
andb %al, %cl
movzbl %cl, %eax
jmp 0x314b
movq 0x5740(%rip), %rsi      # 0x81a8
cmpq 0x5741(%rip), %rsi      # 0x81b0
jne 0x2a84
movq 0x5748(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x28, %rsi
leaq 0x5741(%rip), %rdi      # 0x81d0
callq 0x33dc
movq 0x5545(%rip), %rdi      # 0x7fe0
movq %rax, %rsi
callq 0x20c0
leaq 0x56ce(%rip), %rdi      # 0x8178
callq 0x4472
movq 0x552a(%rip), %rdi      # 0x7fe0
callq 0x2260
jmp 0x3278
movq 0x56e1(%rip), %r13      # 0x81a8
cmpq 0x56e2(%rip), %r13      # 0x81b0
jne 0x2ae3
movq 0x56e9(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x30(%rbp)
leaq 0x5673(%rip), %rdi      # 0x8178
callq 0x4472
movq 0x5697(%rip), %r13      # 0x81a8
cmpq 0x5698(%rip), %r13      # 0x81b0
jne 0x2b2d
movq 0x569f(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x88(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x80(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x60(%rbp)
leaq 0x5626(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x4472
movl -0x88(%rbp), %eax
cltd
idivl -0x58(%rbp)
movl %edx, -0xb8(%rbp)
jmp 0x3151
movq 0x5632(%rip), %rbx      # 0x81a8
cmpq 0x5633(%rip), %rbx      # 0x81b0
jne 0x2b92
movq 0x563a(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rbx
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rbx
movl -0x30(%rbx), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%rbx), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%rbx), %eax
movl %eax, -0x30(%rbp)
leaq 0x55c6(%rip), %rdi      # 0x8178
callq 0x4472
movq 0x55ea(%rip), %rbx      # 0x81a8
cmpq 0x55eb(%rip), %rbx      # 0x81b0
jne 0x2bda
movq 0x55f2(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rbx
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rbx
movl -0x30(%rbx), %eax
movl %eax, -0x88(%rbp)
leaq -0x28(%rbx), %rsi
leaq -0x80(%rbp), %rdi
callq 0x20b0
movl -0x8(%rbx), %eax
movl %eax, -0x60(%rbp)
leaq 0x557b(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x4472
movl -0x58(%rbp), %eax
xorl %ecx, %ecx
cmpl -0x88(%rbp), %eax
movl $0x0, -0x90(%rbp)
sete %cl
jmp 0x320e
movq 0x557f(%rip), %r13      # 0x81a8
cmpq 0x5580(%rip), %r13      # 0x81b0
jne 0x2c45
movq 0x5587(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x30(%rbp)
leaq -0x58(%rbp), %rsi
leaq 0x550d(%rip), %rbx      # 0x8178
jmp 0x321b
movq 0x5531(%rip), %r13      # 0x81a8
cmpq 0x5532(%rip), %r13      # 0x81b0
jne 0x2c93
movq 0x5539(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x30(%rbp)
leaq 0x54c3(%rip), %rdi      # 0x8178
callq 0x4472
movq 0x54e7(%rip), %r13      # 0x81a8
cmpq 0x54e8(%rip), %r13      # 0x81b0
jne 0x2cdd
movq 0x54ef(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x88(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x80(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x60(%rbp)
leaq 0x5476(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x4472
movl -0x88(%rbp), %eax
subl -0x58(%rbp), %eax
jmp 0x314b
movq 0x5489(%rip), %r13      # 0x81a8
cmpq 0x548a(%rip), %r13      # 0x81b0
jne 0x2d3b
movq 0x5491(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x30(%rbp)
leaq 0x541b(%rip), %rdi      # 0x8178
callq 0x4472
movq 0x543f(%rip), %r13      # 0x81a8
cmpq 0x5440(%rip), %r13      # 0x81b0
jne 0x2d85
movq 0x5447(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x88(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x80(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x60(%rbp)
leaq 0x53ce(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x4472
movl -0x58(%rbp), %eax
imull -0x88(%rbp), %eax
jmp 0x314b
movq 0x53e0(%rip), %r13      # 0x81a8
cmpq 0x53e1(%rip), %r13      # 0x81b0
jne 0x2de4
movq 0x53e8(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x30(%rbp)
leaq 0x5372(%rip), %rdi      # 0x8178
callq 0x4472
movq 0x5396(%rip), %r13      # 0x81a8
cmpq 0x5397(%rip), %r13      # 0x81b0
jne 0x2e2e
movq 0x539e(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x88(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x80(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x60(%rbp)
leaq 0x5325(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x4472
movl -0x88(%rbp), %eax
cltd
idivl -0x58(%rbp)
jmp 0x314b
movq 0x5337(%rip), %rbx      # 0x81a8
cmpq 0x5338(%rip), %rbx      # 0x81b0
jne 0x2e8d
movq 0x533f(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rbx
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rbx
movl -0x30(%rbx), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%rbx), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%rbx), %eax
movl %eax, -0x30(%rbp)
leaq 0x52cb(%rip), %rdi      # 0x8178
callq 0x4472
cmpl $0x0, -0x58(%rbp)
jne 0x3278
addq 0x529d(%rip), %r13      # 0x8160
leaq 0x5336(%rip), %rdi      # 0x8200
movq %r13, %rsi
callq 0x345c
jmp 0x2f3c
movq 0x52cd(%rip), %rbx      # 0x81a8
cmpq 0x52ce(%rip), %rbx      # 0x81b0
jne 0x2ef7
movq 0x52d5(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rbx
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rbx
movl -0x30(%rbx), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%rbx), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%rbx), %eax
movl %eax, -0x30(%rbp)
leaq 0x5261(%rip), %rdi      # 0x8178
callq 0x4472
cmpl $0x0, -0x58(%rbp)
je 0x3278
addq 0x5233(%rip), %r13      # 0x8160
leaq 0x52cc(%rip), %rdi      # 0x8200
movq %r13, %rsi
callq 0x345c
movl (%rax), %r15d
jmp 0x3278
movq 0x525d(%rip), %r13      # 0x81a8
cmpq 0x525e(%rip), %r13      # 0x81b0
jne 0x2f67
movq 0x5265(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x30(%rbp)
leaq 0x51ef(%rip), %rdi      # 0x8178
callq 0x4472
movq 0x5213(%rip), %r13      # 0x81a8
cmpq 0x5214(%rip), %r13      # 0x81b0
jne 0x2fb1
movq 0x521b(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x88(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x80(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x60(%rbp)
leaq 0x51a2(%rip), %rdi      # 0x8178
callq 0x4472
movl -0x58(%rbp), %ebx
leaq 0x51eb(%rip), %rdi      # 0x81d0
leaq -0x80(%rbp), %rsi
callq 0x33dc
movl %ebx, (%rax)
jmp 0x3278
movq 0x51ac(%rip), %r13      # 0x81a8
cmpq 0x51ad(%rip), %r13      # 0x81b0
jne 0x3018
movq 0x51b4(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x30(%rbp)
leaq 0x513e(%rip), %rdi      # 0x8178
callq 0x4472
movq 0x5162(%rip), %r13      # 0x81a8
cmpq 0x5163(%rip), %r13      # 0x81b0
jne 0x3062
movq 0x516a(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x88(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x80(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x60(%rbp)
leaq 0x50f1(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x4472
movl -0x58(%rbp), %eax
xorl %ecx, %ecx
orl -0x88(%rbp), %eax
setne %cl
movl %ecx, -0xb8(%rbp)
jmp 0x3151
movq 0x50f9(%rip), %r13      # 0x81a8
cmpq 0x50fa(%rip), %r13      # 0x81b0
jne 0x30cb
movq 0x5101(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x30(%rbp)
leaq 0x508b(%rip), %rdi      # 0x8178
callq 0x4472
movq 0x50af(%rip), %r13      # 0x81a8
cmpq 0x50b0(%rip), %r13      # 0x81b0
jne 0x3115
movq 0x50b7(%rip), %rax      # 0x81c0
movq -0x8(%rax), %r13
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %r13
movl -0x30(%r13), %eax
movl %eax, -0x88(%rbp)
leaq -0x28(%r13), %rsi
leaq -0x80(%rbp), %rdi
callq 0x20b0
movl -0x8(%r13), %eax
movl %eax, -0x60(%rbp)
leaq 0x503e(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x4472
movl -0x58(%rbp), %eax
addl -0x88(%rbp), %eax
movl %eax, -0xb8(%rbp)
movl $0x0, -0x90(%rbp)
jmp 0x3214
movq 0x5041(%rip), %rbx      # 0x81a8
cmpq 0x5042(%rip), %rbx      # 0x81b0
jne 0x3183
movq 0x5049(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rbx
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rbx
movl -0x30(%rbx), %eax
movl %eax, -0x58(%rbp)
leaq -0x28(%rbx), %rsi
leaq -0x50(%rbp), %rdi
callq 0x20b0
movl -0x8(%rbx), %eax
movl %eax, -0x30(%rbp)
leaq 0x4fd5(%rip), %rdi      # 0x8178
callq 0x4472
movq 0x4ff9(%rip), %rbx      # 0x81a8
cmpq 0x4ffa(%rip), %rbx      # 0x81b0
jne 0x31cb
movq 0x5001(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rbx
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rbx
movl -0x30(%rbx), %eax
movl %eax, -0x88(%rbp)
leaq -0x28(%rbx), %rsi
leaq -0x80(%rbp), %rdi
callq 0x20b0
movl -0x8(%rbx), %eax
movl %eax, -0x60(%rbp)
leaq 0x4f8a(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x4472
movl -0x88(%rbp), %eax
xorl %ecx, %ecx
cmpl -0x58(%rbp), %eax
movl $0x0, -0x90(%rbp)
setg %cl
movl %ecx, -0xb8(%rbp)
leaq -0xb8(%rbp), %rsi
movq %rbx, %rdi
callq 0x4182
jmp 0x3278
movl %eax, %r15d
jmp 0x3278
movq 0x4f77(%rip), %rsi      # 0x81a8
cmpq 0x4f78(%rip), %rsi      # 0x81b0
jne 0x324d
movq 0x4f7f(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x28, %rsi
leaq 0x4f78(%rip), %rdi      # 0x81d0
callq 0x33dc
movq 0x4d7c(%rip), %rdi      # 0x7fe0
movq %rax, %rsi
callq 0x20c0
leaq 0x4f05(%rip), %rdi      # 0x8178
callq 0x4472
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rbx
cmpq %rbx, %rdi
je 0x3290
callq 0x2140
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x32a2
callq 0x2140
movq -0x50(%rbp), %rdi
cmpq %r12, %rdi
je 0x32b0
callq 0x2140
incl %r15d
movl %r15d, %ecx
movq 0x4eab(%rip), %rax      # 0x8168
movq 0x4e9c(%rip), %rsi      # 0x8160
subq %rsi, %rax
sarq $0x4, %rax
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rax
cmpq %rcx, %rax
jne 0x27bd
movq 0x4edf(%rip), %rdi      # 0x81c8
callq 0x2160
xorl %eax, %eax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%rbx), %rsi
leaq 0x1d5c(%rip), %rdi      # 0x5069
xorl %eax, %eax
callq 0x2050
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0x32f0
movq %rax, %rbx
jmp 0x334d
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x333b
callq 0x2140
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x334d
callq 0x2140
movq -0x50(%rbp), %rdi
cmpq %r12, %rdi
je 0x335b
callq 0x2140
movq %rbx, %rdi
callq 0x2240
nop