// File: /workspace/github_cpp_makefile_star2_O2/EDDRSoftware[P]libdefsEval/main.cpp
// Function: main
int main(int argc, char *argv[])
{
    options_description desc("Supported options.");
    desc.add_options()
    ("help,h",                          "Show this help message.")
    ("def,d",       value<string>(),    "Open this lib.defs file to parse.")
    ("libs",                            "Show lib names in the output.")
    ("cells",                           "Show cell names in the output.")
    ("views",                           "Show view names in the output.")
    ("cellviews",
     "Show cell/views as single line items in the output.")
    ("defines",                         "Show DEFINE statements in the output.")
    ("includes",                        "Show INCLUDE statements in the output.")
    ("assigns",                         "Show ASSIGN statements in the output.")
    ("comments",                        "Show COMMENTS in the output.")
    ("emptylines",                      "Show EMPTY LINES in the output.")
    ("version,v",                       "Show version information.");

    variables_map vm;
    store(parse_command_line(argc, argv, desc), vm);
    notify(vm);

    if(vm.count("help")) {
        cout << desc << endl;
        return 0;
    }

    if(vm.count("version")) {
        cout << "libdefsEval version 0.1.0" << endl;
        return 0;
    }

    string libdefs;

    if(vm.count("def")) {
        cout << "def: " << vm["def"].as<string>() << endl;
        libdefs = vm["def"].as<string>();
    } else {
        cerr << "ERROR: defs not defined." << endl;
        cerr << "   Try ./libdefsEval --defs lib.defs" << endl;
        return 1;
    }

    std::vector<string> libDefFiles;

    evaluate(vm, libdefs, &libDefFiles);

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x198, %rsp            # imm = 0x198
movq %rsi, %rbx
movl %edi, %r14d
leaq 0x375b(%rip), %rsi      # 0x91be
leaq -0x130(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0x6052
movq 0x852e(%rip), %rax      # 0xdfa8
movl (%rax), %edx
movl %edx, %ecx
shrl %ecx
leaq -0x1b0(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x43d0
leaq -0x130(%rbp), %rdi
callq 0x4150
leaq -0x1b0(%rbp), %rdi
callq 0x4340
leaq -0x130(%rbp), %rdi
movq %rax, (%rdi)
leaq 0x3715(%rip), %rsi      # 0x91d1
leaq 0x3715(%rip), %rdx      # 0x91d8
callq 0x44f0
movq %rax, %r15
callq 0x6169
leaq 0x3719(%rip), %rsi      # 0x91f0
leaq 0x3718(%rip), %rcx      # 0x91f6
movq %r15, %rdi
movq %rax, %rdx
callq 0x4550
leaq 0x3572(%rip), %rsi      # 0x9062
leaq 0x3721(%rip), %rdx      # 0x9218
movq %rax, %rdi
callq 0x44f0
leaq 0x3561(%rip), %rsi      # 0x9067
leaq 0x3729(%rip), %rdx      # 0x9236
movq %rax, %rdi
callq 0x44f0
leaq 0x3555(%rip), %rsi      # 0x9071
leaq 0x3732(%rip), %rdx      # 0x9255
movq %rax, %rdi
callq 0x44f0
leaq 0x353b(%rip), %rsi      # 0x906d
leaq 0x373b(%rip), %rdx      # 0x9274
movq %rax, %rdi
callq 0x44f0
leaq 0x352f(%rip), %rsi      # 0x9077
leaq 0x3759(%rip), %rdx      # 0x92a8
movq %rax, %rdi
callq 0x44f0
leaq 0x3574(%rip), %rsi      # 0x90d2
leaq 0x3769(%rip), %rdx      # 0x92ce
movq %rax, %rdi
callq 0x44f0
leaq 0x35d2(%rip), %rsi      # 0x9146
leaq 0x377a(%rip), %rdx      # 0x92f5
movq %rax, %rdi
callq 0x44f0
leaq 0x35c4(%rip), %rsi      # 0x914e
leaq 0x378a(%rip), %rdx      # 0x931b
movq %rax, %rdi
callq 0x44f0
leaq 0x35b7(%rip), %rsi      # 0x9157
leaq 0x3791(%rip), %rdx      # 0x9338
movq %rax, %rdi
callq 0x44f0
leaq 0x37a2(%rip), %rsi      # 0x9358
leaq 0x37a5(%rip), %rdx      # 0x9362
movq %rax, %rdi
callq 0x44f0
leaq -0x130(%rbp), %rdi
callq 0x4130
xorps %xmm0, %xmm0
leaq -0x90(%rbp), %r9
movaps %xmm0, (%r9)
movaps %xmm0, 0x10(%r9)
leaq -0x68(%rbp), %rdi
leaq -0x1b0(%rbp), %rcx
movl %r14d, %esi
movq %rbx, %rdx
xorl %r8d, %r8d
callq 0x6175
leaq -0x68(%rbp), %rdi
leaq -0x130(%rbp), %rsi
xorl %edx, %edx
callq 0x44b0
leaq -0x68(%rbp), %rdi
callq 0x643a
leaq -0x90(%rbp), %rdi
callq 0x6230
leaq -0x130(%rbp), %rdi
callq 0x41c0
leaq 0x3745(%rip), %rsi      # 0x937c
leaq -0x68(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0x6052
leaq -0x120(%rbp), %rbx
leaq -0x68(%rbp), %rsi
movq %rbx, %rdi
callq 0x602e
movq %rax, %r14
leaq -0x68(%rbp), %rdi
callq 0x4150
testq %r14, %r14
je 0x5c7d
movq 0x8359(%rip), %rdi      # 0xdfc8
leaq -0x1b0(%rbp), %rsi
callq 0x4070
jmp 0x5cc1
leaq 0x36fd(%rip), %rsi      # 0x9381
leaq -0x68(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0x6052
leaq -0x68(%rbp), %rsi
movq %rbx, %rdi
callq 0x602e
movq %rax, %r14
leaq -0x68(%rbp), %rdi
callq 0x4150
testq %r14, %r14
je 0x5cf3
movq 0x8313(%rip), %rdi      # 0xdfc8
leaq 0x36cd(%rip), %rsi      # 0x9389
callq 0x42d0
xorl %ebx, %ebx
movq %rax, %rdi
callq 0x4170
leaq -0x130(%rbp), %rdi
callq 0x6270
leaq -0x1b0(%rbp), %rdi
callq 0x62ac
movl %ebx, %eax
addq $0x198, %rsp            # imm = 0x198
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq -0x58(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x3699(%rip), %rsi      # 0x93a3
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x6052
leaq -0x40(%rbp), %rsi
movq %rbx, %rdi
callq 0x602e
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x4150
testq %rbx, %rbx
je 0x5e06
movq 0x8289(%rip), %rdi      # 0xdfc8
leaq 0x3661(%rip), %rsi      # 0x93a7
callq 0x42d0
movq %rax, %rbx
leaq 0x364e(%rip), %rsi      # 0x93a3
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x6052
leaq -0x130(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x4310
movq %rax, %rdi
callq 0x8504
movq %rbx, %rdi
movq %rax, %rsi
callq 0x42a0
movq %rax, %rdi
callq 0x4170
leaq -0x40(%rbp), %rdi
callq 0x4150
leaq 0x3606(%rip), %rsi      # 0x93a3
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x6052
leaq -0x130(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x4310
movq %rax, %rdi
callq 0x8504
leaq -0x68(%rbp), %rdi
movq %rax, %rsi
callq 0x41b0
leaq -0x40(%rbp), %rbx
movq %rbx, %rdi
callq 0x4150
xorps %xmm0, %xmm0
movaps %xmm0, (%rbx)
andq $0x0, 0x10(%rbx)
leaq -0x130(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x5342
leaq -0x40(%rbp), %rdi
callq 0x6244
xorl %ebx, %ebx
jmp 0x5e3f
movq 0x81e3(%rip), %rdi      # 0xdff0
leaq 0x3599(%rip), %rsi      # 0x93ad
callq 0x42d0
movq %rax, %rdi
callq 0x4170
movq 0x81c8(%rip), %rdi      # 0xdff0
leaq 0x3597(%rip), %rsi      # 0x93c6
callq 0x42d0
movq %rax, %rdi
callq 0x4170
pushq $0x1
popq %rbx
leaq -0x68(%rbp), %rdi
callq 0x4150
jmp 0x5ccb
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x6244
jmp 0x5e7c
jmp 0x5e79
jmp 0x5e79
jmp 0x5e67
jmp 0x5e79
jmp 0x5e67
jmp 0x5e79
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x4150
jmp 0x5e7c
jmp 0x5e79
jmp 0x5ec0
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
callq 0x4150
jmp 0x5ec3
jmp 0x5ec0
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
callq 0x643a
jmp 0x5e9a
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
callq 0x6230
jmp 0x5ec3
jmp 0x5ed1
movq %rax, %rbx
leaq -0x130(%rbp), %rdi
callq 0x4150
jmp 0x5ee0
movq %rax, %rbx
jmp 0x5ee0
movq %rax, %rbx
leaq -0x130(%rbp), %rdi
callq 0x6270
jmp 0x5ed4
movq %rax, %rbx
leaq -0x1b0(%rbp), %rdi
callq 0x62ac
movq %rbx, %rdi
callq 0x44c0