// File: /workspace/github_cpp_makefile_star2_O3/danfai[P]dboc/main.cpp
// Function: main
int main (int argc, char **argv)
{
    char *outFile = NULL;
    char *inFile = NULL;
    int index;
    int c;

    opterr = 0;

    while ((c = getopt (argc, argv, "ho:")) != -1)
        switch (c)
        {
            case 'h':
                printHelp();
                abort();
            case 'o':
                outFile = optarg;
                break;
            case '?':
                if (optopt == 'c')
                    fprintf (stderr, "Option -%c requires an argument.\n", optopt);
                else if (isprint (optopt))
                    fprintf (stderr, "Unknown option `-%c'.\n", optopt);
                else
                    fprintf (stderr,
                            "Unknown option character `\\x%x'.\n",
                            optopt);
                return 1;
            default:
                abort ();
        }

    for (index = optind; index < argc; index++) {
        inFile = argv[index];
    }

    if (inFile == NULL)
        std::cerr << "No input file specified" << std::endl;

    if (outFile == NULL)
        std::cerr << "No output file specified" << std::endl;

    try {
        Parser parser(inFile);
        parser.write(outFile);
    } catch(const char * c) {
        std::cerr << c << std::endl;
    }

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
movq %rsi, %r14
movl %edi, %ebp
movq 0x59e6(%rip), %rax      # 0x7fc8
movl $0x0, (%rax)
xorl %ebx, %ebx
leaq 0x2aae(%rip), %r15      # 0x509f
movq 0x5988(%rip), %r12      # 0x7f80
movl %ebp, %edi
movq %r14, %rsi
movq %r15, %rdx
callq 0x2070
cmpl $0x6f, %eax
jne 0x2610
movq (%r12), %rbx
jmp 0x25f8
cmpl $-0x1, %eax
jne 0x274e
movq 0x59a0(%rip), %rax      # 0x7fc0
cmpl %ebp, (%rax)
jge 0x2631
movslq %ebp, %rax
movq -0x8(%r14,%rax,8), %r14
testq %r14, %r14
jne 0x2676
movq 0x59b8(%rip), %r14      # 0x7ff0
leaq 0x2abf(%rip), %rsi      # 0x50fe
movl $0x17, %edx
movq %r14, %rdi
callq 0x2210
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21b0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
xorl %r14d, %r14d
testq %rbx, %rbx
jne 0x26bd
movq 0x596e(%rip), %r15      # 0x7ff0
leaq 0x2a8d(%rip), %rsi      # 0x5116
movl $0x18, %edx
movq %r15, %rdi
callq 0x2210
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x21b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
leaq 0x28(%rsp), %rdi
leaq 0x7(%rsp), %rdx
movq %r14, %rsi
callq 0x284a
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x2bf0
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x26f9
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
movq %rbx, %rsi
callq 0x284a
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x325c
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2735
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x48(%rsp), %rdi
callq 0x2888
xorl %eax, %eax
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
cmpl $0x3f, %eax
jne 0x279d
movq 0x584e(%rip), %rax      # 0x7fa8
movl (%rax), %ebx
cmpl $0x63, %ebx
jne 0x2768
callq 0x2360
jmp 0x2796
movl %ebx, %edi
callq 0x2300
movq 0x5842(%rip), %rcx      # 0x7fb8
movq (%rcx), %rdi
testl %eax, %eax
jne 0x2786
leaq 0x2958(%rip), %rsi      # 0x50dc
jmp 0x278d
leaq 0x2938(%rip), %rsi      # 0x50c5
movl %ebx, %edx
xorl %eax, %eax
callq 0x2250
movl $0x1, %eax
jmp 0x2741
cmpl $0x68, %eax
jne 0x27a7
callq 0x24cc
callq 0x2140
movq %rdx, %r14
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x27d5
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x27d5
movq %rdx, %r14
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x2888
jmp 0x280a
movq %rdx, %r14
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x280a
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x280a
movq %rdx, %r14
movq %rax, %rbx
cmpl $0x1, %r14d
jne 0x2841
movq %rbx, %rdi
callq 0x20e0
movq 0x57d1(%rip), %rdi      # 0x7ff0
movq %rax, %rsi
callq 0x21c0
movq %rax, %rdi
callq 0x2100
callq 0x22d0
jmp 0x273f
movq %rax, %rbx
callq 0x22d0
movq %rbx, %rdi
callq 0x22f0
nop