// File: /workspace/github_cpp_makefile_star2_O3/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 0x3b4a(%rip), %rsi      # 0xa1be
leaq 0x3b55(%rip), %rdx      # 0xa1d0
leaq -0x118(%rbp), %rdi
callq 0x75e0
movq 0x791a(%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 0x66c2
movq -0x108(%rbp), %rsi
incq %rsi
callq 0x42d0
leaq -0x198(%rbp), %rdi
callq 0x4320
leaq -0x118(%rbp), %rdi
movq %rax, (%rdi)
leaq 0x3af2(%rip), %rsi      # 0xa1d1
leaq 0x3af2(%rip), %rdx      # 0xa1d8
callq 0x44d0
movq %rax, %r15
xorl %edi, %edi
callq 0x7f1c
leaq 0x3af4(%rip), %rsi      # 0xa1f0
leaq 0x3af3(%rip), %rcx      # 0xa1f6
movq %r15, %rdi
movq %rax, %rdx
callq 0x4540
leaq 0x394d(%rip), %rsi      # 0xa062
leaq 0x3afc(%rip), %rdx      # 0xa218
movq %rax, %rdi
callq 0x44d0
leaq 0x393c(%rip), %rsi      # 0xa067
leaq 0x3b04(%rip), %rdx      # 0xa236
movq %rax, %rdi
callq 0x44d0
leaq 0x3930(%rip), %rsi      # 0xa071
leaq 0x3b0d(%rip), %rdx      # 0xa255
movq %rax, %rdi
callq 0x44d0
leaq 0x3916(%rip), %rsi      # 0xa06d
leaq 0x3b16(%rip), %rdx      # 0xa274
movq %rax, %rdi
callq 0x44d0
leaq 0x390a(%rip), %rsi      # 0xa077
leaq 0x3b34(%rip), %rdx      # 0xa2a8
movq %rax, %rdi
callq 0x44d0
leaq 0x394f(%rip), %rsi      # 0xa0d2
leaq 0x3b44(%rip), %rdx      # 0xa2ce
movq %rax, %rdi
callq 0x44d0
leaq 0x39ad(%rip), %rsi      # 0xa146
leaq 0x3b55(%rip), %rdx      # 0xa2f5
movq %rax, %rdi
callq 0x44d0
leaq 0x399f(%rip), %rsi      # 0xa14e
leaq 0x3b65(%rip), %rdx      # 0xa31b
movq %rax, %rdi
callq 0x44d0
leaq 0x3992(%rip), %rsi      # 0xa157
leaq 0x3b6c(%rip), %rdx      # 0xa338
movq %rax, %rdi
callq 0x44d0
leaq 0x3b7d(%rip), %rsi      # 0xa358
leaq 0x3b80(%rip), %rdx      # 0xa362
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 0x6e66
leaq -0x78(%rbp), %rdi
leaq -0x118(%rbp), %rsi
xorl %edx, %edx
callq 0x4490
leaq -0x78(%rbp), %rdi
callq 0x71a6
leaq -0x1c0(%rbp), %rdi
callq 0x6f6c
leaq -0x118(%rbp), %rdi
callq 0x41a0
leaq -0x68(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x3b17(%rip), %rsi      # 0xa37c
leaq 0x3b14(%rip), %rdx      # 0xa380
leaq -0x78(%rbp), %rdi
callq 0x75e0
leaq -0x108(%rbp), %rbx
leaq -0x78(%rbp), %rsi
movq %rbx, %rdi
callq 0x7bee
movq %rax, %r14
leaq -0x100(%rbp), %r15
movq -0x78(%rbp), %rdi
cmpq %r12, %rdi
je 0x68a7
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x42d0
cmpq %r15, %r14
je 0x68d8
movq 0x7715(%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 0x694e
leaq -0x78(%rbp), %rdi
movq %r12, (%rdi)
leaq 0x3a9b(%rip), %rsi      # 0xa381
leaq 0x3a9b(%rip), %rdx      # 0xa388
callq 0x75e0
leaq -0x78(%rbp), %rsi
movq %rbx, %rdi
callq 0x7bee
movq %rax, %r15
movq -0x78(%rbp), %rdi
cmpq %r12, %rdi
je 0x6916
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x42d0
cmpq %r14, %r15
je 0x6a20
movq 0x76a2(%rip), %r14      # 0xdfc8
leaq 0x3a5c(%rip), %rsi      # 0xa389
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 0x7665(%rip), %rax      # 0xdfd0
addq $0x10, %rax
leaq -0xa8(%rbp), %rdi
movq %rax, -0x70(%rdi)
callq 0x722e
leaq -0xd8(%rbp), %rdi
callq 0x72de
movq %rbx, %rdi
callq 0x736e
leaq -0x130(%rbp), %rbx
movq %rbx, %rdi
callq 0x745a
movq -0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x69dd
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 0x74b2
movq -0x28(%rbx), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x6a0b
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 %r12, -0x78(%rbp)
movq $0x0, -0x70(%rbp)
movb $0x0, -0x68(%rbp)
leaq -0x40(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x3964(%rip), %rsi      # 0xa3a3
leaq 0x3960(%rip), %rdx      # 0xa3a6
leaq -0x50(%rbp), %rdi
callq 0x75e0
leaq -0x50(%rbp), %rsi
movq %rbx, %rdi
callq 0x7bee
movq %rax, %r15
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x6a73
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
cmpq %r14, %r15
je 0x6b9e
movq 0x7545(%rip), %rdi      # 0xdfc8
leaq 0x391d(%rip), %rsi      # 0xa3a7
movl $0x5, %edx
callq 0x4300
leaq -0x50(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x3901(%rip), %rsi      # 0xa3a3
leaq 0x38fd(%rip), %rdx      # 0xa3a6
callq 0x75e0
leaq -0x118(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
callq 0x975f
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x74f4(%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 %r13, %rdi
je 0x6b18
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
leaq -0x50(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x387d(%rip), %rsi      # 0xa3a3
leaq 0x3879(%rip), %rdx      # 0xa3a6
callq 0x75e0
leaq -0x118(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
callq 0x975f
leaq -0x78(%rbp), %rdi
movq %rax, %rsi
callq 0x4190
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x6b6b
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 0x5b8c
leaq -0x50(%rbp), %rdi
callq 0x6fae
xorl %r14d, %r14d
jmp 0x6c30
movq 0x744b(%rip), %r14      # 0xdff0
leaq 0x3801(%rip), %rsi      # 0xa3ad
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 0x7419(%rip), %rdi      # 0xdff0
callq 0x4030
movq %rax, %rdi
callq 0x41e0
movq 0x7405(%rip), %r14      # 0xdff0
leaq 0x37d4(%rip), %rsi      # 0xa3c6
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 0x73d3(%rip), %rdi      # 0xdff0
callq 0x4030
movl $0x1, %r14d
movq %rax, %rdi
callq 0x41e0
movq -0x78(%rbp), %rdi
cmpq %r12, %rdi
je 0x6964
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6964
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x6fae
jmp 0x6c89
jmp 0x6c86
jmp 0x6c86
jmp 0x6c6c
jmp 0x6c86
jmp 0x6c6c
jmp 0x6c86
jmp 0x6ce8
jmp 0x6c86
movq %rax, %rbx
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x6c89
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6c89
movq %rax, %rbx
movq -0x78(%rbp), %rdi
cmpq %r12, %rdi
je 0x6ceb
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6ceb
jmp 0x6ce8
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
callq 0x71a6
jmp 0x6cb3
movq %rax, %rbx
leaq -0x1c0(%rbp), %rdi
callq 0x6f6c
jmp 0x6ceb
jmp 0x6cf9
movq %rax, %rbx
movq -0x118(%rbp), %rdi
cmpq %r15, %rdi
je 0x6d08
movq -0x108(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6d08
movq %rax, %rbx
jmp 0x6d08
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
callq 0x701c
jmp 0x6cfc
movq %rax, %rbx
leaq -0x198(%rbp), %rdi
callq 0x7058
movq %rbx, %rdi
callq 0x44a0