// File: /workspace/github_c_makefile_star2_O1/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 0x26e0
leaq 0x2ae9(%rip), %rdi      # 0x51bf
callq 0x21d0
jmp 0x32e4
movq %rsi, %rbx
movq 0x8(%rsi), %rdi
leaq 0x29d1(%rip), %rsi      # 0x50bf
callq 0x2190
movq %rax, 0x5ace(%rip)      # 0x81c8
testq %rax, %rax
je 0x32f8
leaq -0x40(%rbp), %r12
leaq 0x5af2(%rip), %r14      # 0x8200
leaq 0x5a4b(%rip), %r15      # 0x8160
leaq -0x58(%rbp), %rdi
callq 0x24cc
movl -0x30(%rbp), %eax
cmpl $0x19, %eax
je 0x2765
cmpl $0xd, %eax
jne 0x2754
movq 0x5a36(%rip), %rbx      # 0x8168
movq 0x5a27(%rip), %r13      # 0x8160
movq %r14, %rdi
leaq -0x58(%rbp), %rsi
callq 0x3448
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 0x34b0
jmp 0x2768
xorl %r13d, %r13d
movq -0x50(%rbp), %rdi
cmpq %r12, %rdi
je 0x2776
callq 0x2140
testb %r13b, %r13b
jne 0x2715
movq 0x59e6(%rip), %rax      # 0x8168
movq 0x59d7(%rip), %rsi      # 0x8160
subq %rsi, %rax
je 0x32d8
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 0x326e
addq %r13, %rsi
leaq 0x27ed(%rip), %rdx      # 0x5004
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
addq $0x8, %rsi
leaq 0x59a5(%rip), %rdi      # 0x81d0
callq 0x33c8
movl (%rax), %eax
movq 0x5927(%rip), %rcx      # 0x8160
leaq (%rcx,%r13), %rsi
movl %eax, (%rcx,%r13)
jmp 0x2c5a
movq 0x595b(%rip), %rbx      # 0x81a8
cmpq 0x595c(%rip), %rbx      # 0x81b0
jne 0x2869
movq 0x5963(%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 0x58ef(%rip), %rdi      # 0x8178
callq 0x448e
movq 0x5913(%rip), %rbx      # 0x81a8
cmpq 0x5914(%rip), %rbx      # 0x81b0
jne 0x28b1
movq 0x591b(%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 0x58a4(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x448e
movl -0x88(%rbp), %eax
xorl %ecx, %ecx
cmpl -0x58(%rbp), %eax
movl $0x0, -0x90(%rbp)
setl %cl
jmp 0x3204
movq 0x58a8(%rip), %rax      # 0x81a8
cmpq 0x58a9(%rip), %rax      # 0x81b0
jne 0x291c
movq 0x58b0(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rax
movl $0x1e0, %ecx            # imm = 0x1E0
addq %rcx, %rax
movl -0x30(%rax), %esi
movq 0x56aa(%rip), %rdi      # 0x7fd0
callq 0x2230
jmp 0x3262
leaq 0x58c9(%rip), %rdi      # 0x8200
callq 0x3448
jmp 0x2f32
movq 0x5860(%rip), %rax      # 0x81a8
cmpq 0x5861(%rip), %rax      # 0x81b0
jne 0x2964
movq 0x5868(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rax
movl $0x1e0, %ecx            # imm = 0x1E0
addq %rcx, %rax
movl -0x30(%rax), %esi
movq 0x5662(%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 0x3262
movq 0x57ff(%rip), %r13      # 0x81a8
cmpq 0x5800(%rip), %r13      # 0x81b0
jne 0x29c5
movq 0x5807(%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 0x5791(%rip), %rdi      # 0x8178
callq 0x448e
movq 0x57b5(%rip), %r13      # 0x81a8
cmpq 0x57b6(%rip), %r13      # 0x81b0
jne 0x2a0f
movq 0x57bd(%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 0x5744(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x448e
cmpl $0x0, -0x88(%rbp)
setne %al
cmpl $0x0, -0x58(%rbp)
setne %cl
andb %al, %cl
movzbl %cl, %eax
jmp 0x3141
movq 0x574a(%rip), %rsi      # 0x81a8
cmpq 0x574b(%rip), %rsi      # 0x81b0
jne 0x2a7a
movq 0x5752(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x28, %rsi
leaq 0x574b(%rip), %rdi      # 0x81d0
callq 0x33c8
movq 0x554f(%rip), %rdi      # 0x7fe0
movq %rax, %rsi
callq 0x20c0
leaq 0x56d8(%rip), %rdi      # 0x8178
callq 0x448e
movq 0x5534(%rip), %rdi      # 0x7fe0
callq 0x2260
jmp 0x326e
movq 0x56eb(%rip), %r13      # 0x81a8
cmpq 0x56ec(%rip), %r13      # 0x81b0
jne 0x2ad9
movq 0x56f3(%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 0x567d(%rip), %rdi      # 0x8178
callq 0x448e
movq 0x56a1(%rip), %r13      # 0x81a8
cmpq 0x56a2(%rip), %r13      # 0x81b0
jne 0x2b23
movq 0x56a9(%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 0x5630(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x448e
movl -0x88(%rbp), %eax
cltd
idivl -0x58(%rbp)
movl %edx, -0xb8(%rbp)
jmp 0x3147
movq 0x563c(%rip), %rbx      # 0x81a8
cmpq 0x563d(%rip), %rbx      # 0x81b0
jne 0x2b88
movq 0x5644(%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 0x55d0(%rip), %rdi      # 0x8178
callq 0x448e
movq 0x55f4(%rip), %rbx      # 0x81a8
cmpq 0x55f5(%rip), %rbx      # 0x81b0
jne 0x2bd0
movq 0x55fc(%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 0x5585(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x448e
movl -0x58(%rbp), %eax
xorl %ecx, %ecx
cmpl -0x88(%rbp), %eax
movl $0x0, -0x90(%rbp)
sete %cl
jmp 0x3204
movq 0x5589(%rip), %r13      # 0x81a8
cmpq 0x558a(%rip), %r13      # 0x81b0
jne 0x2c3b
movq 0x5591(%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 0x5517(%rip), %rbx      # 0x8178
jmp 0x3211
movq 0x553b(%rip), %r13      # 0x81a8
cmpq 0x553c(%rip), %r13      # 0x81b0
jne 0x2c89
movq 0x5543(%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 0x54cd(%rip), %rdi      # 0x8178
callq 0x448e
movq 0x54f1(%rip), %r13      # 0x81a8
cmpq 0x54f2(%rip), %r13      # 0x81b0
jne 0x2cd3
movq 0x54f9(%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 0x5480(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x448e
movl -0x88(%rbp), %eax
subl -0x58(%rbp), %eax
jmp 0x3141
movq 0x5493(%rip), %r13      # 0x81a8
cmpq 0x5494(%rip), %r13      # 0x81b0
jne 0x2d31
movq 0x549b(%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 0x5425(%rip), %rdi      # 0x8178
callq 0x448e
movq 0x5449(%rip), %r13      # 0x81a8
cmpq 0x544a(%rip), %r13      # 0x81b0
jne 0x2d7b
movq 0x5451(%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 0x53d8(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x448e
movl -0x58(%rbp), %eax
imull -0x88(%rbp), %eax
jmp 0x3141
movq 0x53ea(%rip), %r13      # 0x81a8
cmpq 0x53eb(%rip), %r13      # 0x81b0
jne 0x2dda
movq 0x53f2(%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 0x537c(%rip), %rdi      # 0x8178
callq 0x448e
movq 0x53a0(%rip), %r13      # 0x81a8
cmpq 0x53a1(%rip), %r13      # 0x81b0
jne 0x2e24
movq 0x53a8(%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 0x532f(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x448e
movl -0x88(%rbp), %eax
cltd
idivl -0x58(%rbp)
jmp 0x3141
movq 0x5341(%rip), %rbx      # 0x81a8
cmpq 0x5342(%rip), %rbx      # 0x81b0
jne 0x2e83
movq 0x5349(%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 0x52d5(%rip), %rdi      # 0x8178
callq 0x448e
cmpl $0x0, -0x58(%rbp)
jne 0x326e
addq 0x52a7(%rip), %r13      # 0x8160
leaq 0x5340(%rip), %rdi      # 0x8200
movq %r13, %rsi
callq 0x3448
jmp 0x2f32
movq 0x52d7(%rip), %rbx      # 0x81a8
cmpq 0x52d8(%rip), %rbx      # 0x81b0
jne 0x2eed
movq 0x52df(%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 0x526b(%rip), %rdi      # 0x8178
callq 0x448e
cmpl $0x0, -0x58(%rbp)
je 0x326e
addq 0x523d(%rip), %r13      # 0x8160
leaq 0x52d6(%rip), %rdi      # 0x8200
movq %r13, %rsi
callq 0x3448
movl (%rax), %r15d
jmp 0x326e
movq 0x5267(%rip), %r13      # 0x81a8
cmpq 0x5268(%rip), %r13      # 0x81b0
jne 0x2f5d
movq 0x526f(%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 0x51f9(%rip), %rdi      # 0x8178
callq 0x448e
movq 0x521d(%rip), %r13      # 0x81a8
cmpq 0x521e(%rip), %r13      # 0x81b0
jne 0x2fa7
movq 0x5225(%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 0x51ac(%rip), %rdi      # 0x8178
callq 0x448e
movl -0x58(%rbp), %ebx
leaq 0x51f5(%rip), %rdi      # 0x81d0
leaq -0x80(%rbp), %rsi
callq 0x33c8
movl %ebx, (%rax)
jmp 0x326e
movq 0x51b6(%rip), %r13      # 0x81a8
cmpq 0x51b7(%rip), %r13      # 0x81b0
jne 0x300e
movq 0x51be(%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 0x5148(%rip), %rdi      # 0x8178
callq 0x448e
movq 0x516c(%rip), %r13      # 0x81a8
cmpq 0x516d(%rip), %r13      # 0x81b0
jne 0x3058
movq 0x5174(%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 0x50fb(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x448e
movl -0x58(%rbp), %eax
xorl %ecx, %ecx
orl -0x88(%rbp), %eax
setne %cl
movl %ecx, -0xb8(%rbp)
jmp 0x3147
movq 0x5103(%rip), %r13      # 0x81a8
cmpq 0x5104(%rip), %r13      # 0x81b0
jne 0x30c1
movq 0x510b(%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 0x5095(%rip), %rdi      # 0x8178
callq 0x448e
movq 0x50b9(%rip), %r13      # 0x81a8
cmpq 0x50ba(%rip), %r13      # 0x81b0
jne 0x310b
movq 0x50c1(%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 0x5048(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x448e
movl -0x58(%rbp), %eax
addl -0x88(%rbp), %eax
movl %eax, -0xb8(%rbp)
movl $0x0, -0x90(%rbp)
jmp 0x320a
movq 0x504b(%rip), %rbx      # 0x81a8
cmpq 0x504c(%rip), %rbx      # 0x81b0
jne 0x3179
movq 0x5053(%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 0x4fdf(%rip), %rdi      # 0x8178
callq 0x448e
movq 0x5003(%rip), %rbx      # 0x81a8
cmpq 0x5004(%rip), %rbx      # 0x81b0
jne 0x31c1
movq 0x500b(%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 0x4f94(%rip), %rbx      # 0x8178
movq %rbx, %rdi
callq 0x448e
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 0x419e
jmp 0x326e
movl %eax, %r15d
jmp 0x326e
movq 0x4f81(%rip), %rsi      # 0x81a8
cmpq 0x4f82(%rip), %rsi      # 0x81b0
jne 0x3243
movq 0x4f89(%rip), %rax      # 0x81c0
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x28, %rsi
leaq 0x4f82(%rip), %rdi      # 0x81d0
callq 0x33c8
movq 0x4d86(%rip), %rdi      # 0x7fe0
movq %rax, %rsi
callq 0x20c0
leaq 0x4f0f(%rip), %rdi      # 0x8178
callq 0x448e
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rbx
cmpq %rbx, %rdi
je 0x3286
callq 0x2140
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x3298
callq 0x2140
movq -0x50(%rbp), %rdi
cmpq %r12, %rdi
je 0x32a6
callq 0x2140
incl %r15d
movl %r15d, %ecx
movq 0x4eb5(%rip), %rax      # 0x8168
movq 0x4ea6(%rip), %rsi      # 0x8160
subq %rsi, %rax
sarq $0x4, %rax
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rax
cmpq %rcx, %rax
jne 0x27b3
movq 0x4ee9(%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 0x1d66(%rip), %rdi      # 0x5069
xorl %eax, %eax
callq 0x2050
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0x32e6
movq %rax, %rbx
jmp 0x3343
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x3331
callq 0x2140
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x3343
callq 0x2140
movq -0x50(%rbp), %rdi
cmpq %r12, %rdi
je 0x3351
callq 0x2140
movq %rbx, %rdi
callq 0x2240
nop