// File: /workspace/github_cpp_makefile_star2_O1/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 %r13
pushq %r12
pushq %rbx
subq $0x198, %rsp            # imm = 0x198
movq %rsi, %rbx
movl %edi, %r14d
leaq -0x108(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x3aa1(%rip), %rsi      # 0xa1da
leaq 0x3aac(%rip), %rdx      # 0xa1ec
leaq -0x118(%rbp), %rdi
callq 0x768c
movq 0x7855(%rip), %rax      # 0xdfa8
movl (%rax), %edx
movl %edx, %ecx
shrl %ecx
leaq -0x198(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x43a0
movq -0x118(%rbp), %rdi
cmpq %r15, %rdi
je 0x6787
movq -0x108(%rbp), %rsi
incq %rsi
callq 0x42d0
leaq -0x198(%rbp), %rdi
callq 0x4320
leaq -0x118(%rbp), %rdi
movq %rax, (%rdi)
leaq 0x3a49(%rip), %rsi      # 0xa1ed
leaq 0x3a49(%rip), %rdx      # 0xa1f4
callq 0x44d0
movq %rax, %r15
xorl %edi, %edi
callq 0x8074
leaq 0x3a4b(%rip), %rsi      # 0xa20c
leaq 0x3a4a(%rip), %rcx      # 0xa212
movq %r15, %rdi
movq %rax, %rdx
callq 0x4540
leaq 0x38a4(%rip), %rsi      # 0xa07e
leaq 0x3a53(%rip), %rdx      # 0xa234
movq %rax, %rdi
callq 0x44d0
leaq 0x3893(%rip), %rsi      # 0xa083
leaq 0x3a5b(%rip), %rdx      # 0xa252
movq %rax, %rdi
callq 0x44d0
leaq 0x3887(%rip), %rsi      # 0xa08d
leaq 0x3a64(%rip), %rdx      # 0xa271
movq %rax, %rdi
callq 0x44d0
leaq 0x386d(%rip), %rsi      # 0xa089
leaq 0x3a6d(%rip), %rdx      # 0xa290
movq %rax, %rdi
callq 0x44d0
leaq 0x3861(%rip), %rsi      # 0xa093
leaq 0x3a8b(%rip), %rdx      # 0xa2c4
movq %rax, %rdi
callq 0x44d0
leaq 0x38a6(%rip), %rsi      # 0xa0ee
leaq 0x3a9b(%rip), %rdx      # 0xa2ea
movq %rax, %rdi
callq 0x44d0
leaq 0x3904(%rip), %rsi      # 0xa162
leaq 0x3aac(%rip), %rdx      # 0xa311
movq %rax, %rdi
callq 0x44d0
leaq 0x38f6(%rip), %rsi      # 0xa16a
leaq 0x3abc(%rip), %rdx      # 0xa337
movq %rax, %rdi
callq 0x44d0
leaq 0x38e9(%rip), %rsi      # 0xa173
leaq 0x3ac3(%rip), %rdx      # 0xa354
movq %rax, %rdi
callq 0x44d0
leaq 0x3ad4(%rip), %rsi      # 0xa374
leaq 0x3ad7(%rip), %rdx      # 0xa37e
movq %rax, %rdi
callq 0x44d0
leaq -0x118(%rbp), %rdi
callq 0x4130
xorps %xmm0, %xmm0
leaq -0x1c0(%rbp), %r9
movaps %xmm0, (%r9)
movaps %xmm0, 0x10(%r9)
leaq -0x78(%rbp), %rdi
leaq -0x198(%rbp), %rcx
movl %r14d, %esi
movq %rbx, %rdx
xorl %r8d, %r8d
callq 0x6f2c
leaq -0x78(%rbp), %rdi
leaq -0x118(%rbp), %rsi
xorl %edx, %edx
callq 0x4490
leaq -0x78(%rbp), %rdi
callq 0x7262
leaq -0x1c0(%rbp), %rdi
callq 0x7032
leaq -0x118(%rbp), %rdi
callq 0x41a0
leaq -0x68(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x3a6f(%rip), %rsi      # 0xa398
leaq 0x3a6c(%rip), %rdx      # 0xa39c
leaq -0x78(%rbp), %rdi
callq 0x768c
leaq -0x108(%rbp), %rbx
leaq -0x78(%rbp), %rsi
movq %rbx, %rdi
callq 0x7cc4
movq %rax, %r14
leaq -0x100(%rbp), %r13
movq -0x78(%rbp), %rdi
cmpq %r15, %rdi
je 0x696b
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x42d0
cmpq %r13, %r14
je 0x699c
movq 0x7651(%rip), %rdi      # 0xdfc8
leaq -0x198(%rbp), %rsi
callq 0x4060
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x42a0
jmp 0x6a12
leaq -0x78(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x39f3(%rip), %rsi      # 0xa39d
leaq 0x39f3(%rip), %rdx      # 0xa3a4
callq 0x768c
leaq -0x78(%rbp), %rsi
movq %rbx, %rdi
callq 0x7cc4
movq %rax, %r14
movq -0x78(%rbp), %rdi
cmpq %r15, %rdi
je 0x69da
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x42d0
cmpq %r13, %r14
je 0x6ae4
movq 0x75de(%rip), %r14      # 0xdfc8
leaq 0x39b4(%rip), %rsi      # 0xa3a5
movl $0x19, %edx
movq %r14, %rdi
callq 0x4300
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x42a0
movsbl %al, %esi
movq %r14, %rdi
callq 0x4030
xorl %r14d, %r14d
movq %rax, %rdi
callq 0x41e0
movq 0x75a1(%rip), %rax      # 0xdfd0
addq $0x10, %rax
leaq -0xa8(%rbp), %rdi
movq %rax, -0x70(%rdi)
callq 0x72ea
leaq -0xd8(%rbp), %rdi
callq 0x739a
movq %rbx, %rdi
callq 0x742a
leaq -0x130(%rbp), %rbx
movq %rbx, %rdi
callq 0x7516
movq -0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x6aa1
movq -0x138(%rbp), %rsi
subq %rdi, %rsi
callq 0x42d0
xorl %eax, %eax
movq %rax, -0x158(%rbp)
movl %eax, -0x150(%rbp)
movq %rax, -0x148(%rbp)
movl %eax, -0x140(%rbp)
movq %rax, -0x138(%rbp)
leaq -0x170(%rbp), %rbx
movq %rbx, %rdi
callq 0x7568
movq -0x28(%rbx), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x6acf
movq -0x188(%rbp), %rsi
incq %rsi
callq 0x42d0
movl %r14d, %eax
addq $0x198, %rsp            # imm = 0x198
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r15, -0x78(%rbp)
movq $0x0, -0x70(%rbp)
movb $0x0, -0x68(%rbp)
leaq -0x40(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x38bb(%rip), %rsi      # 0xa3bf
leaq 0x38b7(%rip), %rdx      # 0xa3c2
leaq -0x50(%rbp), %rdi
callq 0x768c
leaq -0x50(%rbp), %rsi
movq %rbx, %rdi
callq 0x7cc4
movq %rax, %r14
movq -0x50(%rbp), %rdi
cmpq %r12, %rdi
je 0x6b38
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
cmpq %r13, %r14
je 0x6c63
movq 0x7480(%rip), %rdi      # 0xdfc8
leaq 0x3874(%rip), %rsi      # 0xa3c3
movl $0x5, %edx
callq 0x4300
leaq -0x50(%rbp), %rdi
movq %r12, (%rdi)
leaq 0x3858(%rip), %rsi      # 0xa3bf
leaq 0x3854(%rip), %rdx      # 0xa3c2
callq 0x768c
leaq -0x118(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
callq 0x98f3
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x742f(%rip), %rdi      # 0xdfc8
callq 0x4300
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x42a0
movsbl %al, %esi
movq %r14, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x41e0
movq -0x50(%rbp), %rdi
cmpq %r12, %rdi
je 0x6bdd
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
leaq -0x50(%rbp), %rdi
movq %r12, (%rdi)
leaq 0x37d4(%rip), %rsi      # 0xa3bf
leaq 0x37d0(%rip), %rdx      # 0xa3c2
callq 0x768c
leaq -0x118(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
callq 0x98f3
leaq -0x78(%rbp), %rdi
movq %rax, %rsi
callq 0x4190
movq -0x50(%rbp), %rdi
cmpq %r12, %rdi
je 0x6c30
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
xorps %xmm0, %xmm0
leaq -0x50(%rbp), %rdx
movaps %xmm0, (%rdx)
movq $0x0, 0x10(%rdx)
leaq -0x118(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x5c51
leaq -0x50(%rbp), %rdi
callq 0x7074
xorl %r14d, %r14d
jmp 0x6cf5
movq 0x7386(%rip), %r14      # 0xdff0
leaq 0x3758(%rip), %rsi      # 0xa3c9
movl $0x18, %edx
movq %r14, %rdi
callq 0x4300
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x42a0
movsbl %al, %esi
movq 0x7354(%rip), %rdi      # 0xdff0
callq 0x4030
movq %rax, %rdi
callq 0x41e0
movq 0x7340(%rip), %r14      # 0xdff0
leaq 0x372b(%rip), %rsi      # 0xa3e2
movl $0x24, %edx
movq %r14, %rdi
callq 0x4300
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x42a0
movsbl %al, %esi
movq 0x730e(%rip), %rdi      # 0xdff0
callq 0x4030
movl $0x1, %r14d
movq %rax, %rdi
callq 0x41e0
movq -0x78(%rbp), %rdi
cmpq %r15, %rdi
je 0x6a28
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6a28
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x7074
jmp 0x6d4e
jmp 0x6d4b
jmp 0x6d4b
jmp 0x6d31
jmp 0x6d4b
jmp 0x6d31
jmp 0x6d4b
jmp 0x6dad
jmp 0x6d4b
movq %rax, %rbx
movq -0x50(%rbp), %rdi
cmpq %r12, %rdi
je 0x6d4e
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6d4e
movq %rax, %rbx
movq -0x78(%rbp), %rdi
cmpq %r15, %rdi
je 0x6db0
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6db0
jmp 0x6dad
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
callq 0x7262
jmp 0x6d78
movq %rax, %rbx
leaq -0x1c0(%rbp), %rdi
callq 0x7032
jmp 0x6db0
jmp 0x6dbe
movq %rax, %rbx
movq -0x118(%rbp), %rdi
cmpq %r15, %rdi
je 0x6dcd
movq -0x108(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6dcd
movq %rax, %rbx
jmp 0x6dcd
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
callq 0x70de
jmp 0x6dc1
movq %rax, %rbx
leaq -0x198(%rbp), %rdi
callq 0x711a
movq %rbx, %rdi
callq 0x44a0