// File: /workspace/github_c_makefile_star2_O0/g3ida[P]g3idaCompiler/vm.cpp
// Function: getNextInst()
Inst getNextInst() {
    int c = fgetc(input);
    std::string s;
    while(c==' ' || c == '\n' || c =='\t') {
        c = fgetc(input);
    }

    while(c != EOF && c != ' ' && c !='\n')
    {
        s+= c;
        c = fgetc(input);
    }
    Inst i;
    i.ins = unilexId(s.c_str());

    if(unilexIdNumArgs(s.c_str()) == 0) return i;
    s = "";
    c = fgetc(input);
    while(c != EOF && c != '\n')
    {
        s+= c;
        c = fgetc(input);
    }

    if(i.ins == VALEURD || i.ins == VALEURG) {
        memory[s] = 0;
        i.s = s;
    } else{
        i.value = atoi(s.c_str());
    }
    return i;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x58(%rbp)
movq %rdi, %rax
movq %rax, -0x50(%rbp)
movq %rdi, -0x8(%rbp)
movq 0xbebf(%rip), %rdi      # 0xe360
callq 0x2210
movl %eax, -0xc(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x21c0
movb $0x1, %al
cmpl $0x20, -0xc(%rbp)
movb %al, -0x59(%rbp)
je 0x24d2
movb $0x1, %al
cmpl $0xa, -0xc(%rbp)
movb %al, -0x59(%rbp)
je 0x24d2
cmpl $0x9, -0xc(%rbp)
sete %al
movb %al, -0x59(%rbp)
movb -0x59(%rbp), %al
testb $0x1, %al
jne 0x24db
jmp 0x2505
movq 0xbe7e(%rip), %rdi      # 0xe360
callq 0x2210
movl %eax, -0x60(%rbp)
jmp 0x24ec
movl -0x60(%rbp), %eax
movl %eax, -0xc(%rbp)
jmp 0x24b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x26d4
jmp 0x2507
xorl %eax, %eax
cmpl $-0x1, -0xc(%rbp)
movb %al, -0x61(%rbp)
je 0x2527
xorl %eax, %eax
cmpl $0x20, -0xc(%rbp)
movb %al, -0x61(%rbp)
je 0x2527
cmpl $0xa, -0xc(%rbp)
setne %al
movb %al, -0x61(%rbp)
movb -0x61(%rbp), %al
testb $0x1, %al
jne 0x2530
jmp 0x2558
movsbl -0xc(%rbp), %esi
leaq -0x30(%rbp), %rdi
callq 0x2110
jmp 0x253f
movq 0xbe1a(%rip), %rdi      # 0xe360
callq 0x2210
movl %eax, -0x68(%rbp)
jmp 0x2550
movl -0x68(%rbp), %eax
movl %eax, -0xc(%rbp)
jmp 0x2507
movq -0x58(%rbp), %rdi
movb $0x0, -0x3d(%rbp)
callq 0x3700
leaq -0x30(%rbp), %rdi
callq 0x20a0
movq %rax, %rdi
callq 0x26f0
movl %eax, -0x6c(%rbp)
jmp 0x257b
movq -0x58(%rbp), %rax
movl -0x6c(%rbp), %ecx
movl %ecx, 0x28(%rax)
leaq -0x30(%rbp), %rdi
callq 0x20a0
movq %rax, %rdi
callq 0x2770
movl %eax, -0x70(%rbp)
jmp 0x259b
movl -0x70(%rbp), %eax
cmpl $0x0, %eax
jne 0x25cd
movb $0x1, -0x3d(%rbp)
movl $0x1, -0x44(%rbp)
jmp 0x26af
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x3810
jmp 0x26d4
leaq 0x6aed(%rip), %rsi      # 0x90c1
leaq -0x30(%rbp), %rdi
callq 0x21b0
jmp 0x25df
movq 0xbd7a(%rip), %rdi      # 0xe360
callq 0x2210
movl %eax, -0x74(%rbp)
jmp 0x25f0
movl -0x74(%rbp), %eax
movl %eax, -0xc(%rbp)
xorl %eax, %eax
cmpl $-0x1, -0xc(%rbp)
movb %al, -0x75(%rbp)
je 0x260b
cmpl $0xa, -0xc(%rbp)
setne %al
movb %al, -0x75(%rbp)
movb -0x75(%rbp), %al
testb $0x1, %al
jne 0x2614
jmp 0x263c
movsbl -0xc(%rbp), %esi
leaq -0x30(%rbp), %rdi
callq 0x2110
jmp 0x2623
movq 0xbd36(%rip), %rdi      # 0xe360
callq 0x2210
movl %eax, -0x7c(%rbp)
jmp 0x2634
movl -0x7c(%rbp), %eax
movl %eax, -0xc(%rbp)
jmp 0x25f6
movq -0x58(%rbp), %rax
cmpl $0x1, 0x28(%rax)
je 0x2650
movq -0x58(%rbp), %rax
cmpl $0x2, 0x28(%rax)
jne 0x268b
leaq 0xbd11(%rip), %rdi      # 0xe368
leaq -0x30(%rbp), %rsi
callq 0x3730
movq %rax, -0x88(%rbp)
jmp 0x2669
movq -0x58(%rbp), %rdi
movq -0x88(%rbp), %rax
movl $0x0, (%rax)
addq $0x8, %rdi
leaq -0x30(%rbp), %rsi
callq 0x2040
jmp 0x2689
jmp 0x26a4
leaq -0x30(%rbp), %rdi
callq 0x20a0
movq %rax, %rdi
callq 0x2200
movl %eax, %ecx
movq -0x58(%rbp), %rax
movl %ecx, (%rax)
movb $0x1, -0x3d(%rbp)
movl $0x1, -0x44(%rbp)
testb $0x1, -0x3d(%rbp)
jne 0x26be
movq -0x58(%rbp), %rdi
callq 0x3810
leaq -0x30(%rbp), %rdi
callq 0x2100
movq -0x50(%rbp), %rax
addq $0x90, %rsp
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x2100
movq -0x38(%rbp), %rdi
callq 0x2250
nopw %cs:(%rax,%rax)