// File: 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
subq $0x3f0, %rsp            # imm = 0x3F0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
callq 0x6790
movq -0x2c8(%rbp), %rdx
leaq 0xcfb9(%rip), %rsi      # 0x161f3
leaq -0xb0(%rbp), %rdi
callq 0xa780
jmp 0x9248
movq 0x17d39(%rip), %rax     # 0x20f88
movl (%rax), %edx
movl %edx, %ecx
shrl %ecx
leaq -0x90(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x65f0
jmp 0x926a
leaq -0xb0(%rbp), %rdi
callq 0x6290
leaq -0xb1(%rbp), %rdi
callq 0x64b0
leaq -0x90(%rbp), %rdi
callq 0x6530
movq %rax, -0x2d0(%rbp)
jmp 0x9297
movq -0x2d0(%rbp), %rax
movq %rax, -0xd0(%rbp)
leaq 0xcf5a(%rip), %rsi      # 0x16206
leaq 0xcf5a(%rip), %rdx      # 0x1620d
leaq -0xd0(%rbp), %rdi
callq 0x67d0
movq %rax, -0x2d8(%rbp)
jmp 0x92c8
callq 0xabd0
movq %rax, -0x2e0(%rbp)
jmp 0x92d6
movq -0x2e0(%rbp), %rdx
movq -0x2d8(%rbp), %rdi
leaq 0xcf3a(%rip), %rsi      # 0x16225
leaq 0xcf39(%rip), %rcx      # 0x1622b
callq 0x6830
movq %rax, -0x2e8(%rbp)
jmp 0x9300
movq -0x2e8(%rbp), %rdi
leaq 0xcd89(%rip), %rsi      # 0x16097
leaq 0xcf38(%rip), %rdx      # 0x1624d
callq 0x67d0
movq %rax, -0x2f0(%rbp)
jmp 0x9323
movq -0x2f0(%rbp), %rdi
leaq 0xcd6b(%rip), %rsi      # 0x1609c
leaq 0xcf33(%rip), %rdx      # 0x1626b
callq 0x67d0
movq %rax, -0x2f8(%rbp)
jmp 0x9346
movq -0x2f8(%rbp), %rdi
leaq 0xcd52(%rip), %rsi      # 0x160a6
leaq 0xcf2f(%rip), %rdx      # 0x1628a
callq 0x67d0
movq %rax, -0x300(%rbp)
jmp 0x9369
movq -0x300(%rbp), %rdi
leaq 0xcd2b(%rip), %rsi      # 0x160a2
leaq 0xcf2b(%rip), %rdx      # 0x162a9
callq 0x67d0
movq %rax, -0x308(%rbp)
jmp 0x938c
movq -0x308(%rbp), %rdi
leaq 0xcd12(%rip), %rsi      # 0x160ac
leaq 0xcf3c(%rip), %rdx      # 0x162dd
callq 0x67d0
movq %rax, -0x310(%rbp)
jmp 0x93af
movq -0x310(%rbp), %rdi
leaq 0xcd4a(%rip), %rsi      # 0x16107
leaq 0xcf3f(%rip), %rdx      # 0x16303
callq 0x67d0
movq %rax, -0x318(%rbp)
jmp 0x93d2
movq -0x318(%rbp), %rdi
leaq 0xcd9b(%rip), %rsi      # 0x1617b
leaq 0xcf43(%rip), %rdx      # 0x1632a
callq 0x67d0
movq %rax, -0x320(%rbp)
jmp 0x93f5
movq -0x320(%rbp), %rdi
leaq 0xcd80(%rip), %rsi      # 0x16183
leaq 0xcf46(%rip), %rdx      # 0x16350
callq 0x67d0
movq %rax, -0x328(%rbp)
jmp 0x9418
movq -0x328(%rbp), %rdi
leaq 0xcd66(%rip), %rsi      # 0x1618c
leaq 0xcf40(%rip), %rdx      # 0x1636d
callq 0x67d0
movq %rax, -0x330(%rbp)
jmp 0x943b
movq -0x330(%rbp), %rdi
leaq 0xcf44(%rip), %rsi      # 0x1638d
leaq 0xcf47(%rip), %rdx      # 0x16397
callq 0x67d0
jmp 0x9457
leaq -0x170(%rbp), %rdi
callq 0x6180
jmp 0x9465
movl -0x8(%rbp), %eax
movl %eax, -0x33c(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x338(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x1b0(%rbp)
movaps %xmm0, -0x1c0(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0xad20
jmp 0x9498
movq -0x338(%rbp), %rdx
movl -0x33c(%rbp), %esi
leaq -0x198(%rbp), %rdi
leaq -0x90(%rbp), %rcx
xorl %r8d, %r8d
leaq -0x1c0(%rbp), %r9
callq 0xabe0
jmp 0x94c4
leaq -0x198(%rbp), %rdi
leaq -0x170(%rbp), %rsi
xorl %edx, %edx
callq 0x6770
jmp 0x94db
leaq -0x198(%rbp), %rdi
callq 0xad40
leaq -0x1c0(%rbp), %rdi
callq 0xad60
leaq -0x170(%rbp), %rdi
callq 0x6250
jmp 0x9501
leaq -0x160(%rbp), %rax
movq %rax, -0x350(%rbp)
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x348(%rbp)
callq 0x6790
movq -0x348(%rbp), %rdx
leaq 0xce81(%rip), %rsi      # 0x163b1
leaq -0x1e0(%rbp), %rdi
callq 0xa780
jmp 0x953e
movq -0x350(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0xa720
movq %rax, -0x358(%rbp)
jmp 0x955a
leaq -0x1e0(%rbp), %rdi
callq 0x6290
leaq -0x1e1(%rbp), %rdi
callq 0x64b0
movq -0x358(%rbp), %rax
cmpq $0x0, %rax
je 0x96c1
movq 0x17a3e(%rip), %rdi     # 0x20fc8
leaq -0x90(%rbp), %rsi
callq 0x60a0
movq %rax, -0x360(%rbp)
jmp 0x959f
movq -0x360(%rbp), %rdi
movq 0x179d3(%rip), %rsi     # 0x20f80
callq 0x6490
jmp 0x95b4
movl $0x0, -0x4(%rbp)
movl $0x1, -0x1e8(%rbp)
jmp 0x9b91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x95fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x6290
leaq -0xb1(%rbp), %rdi
callq 0x64b0
jmp 0x9bcd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x9bc1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x9bb5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x966d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
leaq -0x198(%rbp), %rdi
callq 0xad40
leaq -0x1c0(%rbp), %rdi
callq 0xad60
jmp 0x9bb5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x96b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x6290
leaq -0x1e1(%rbp), %rdi
callq 0x64b0
jmp 0x9bb5
leaq -0x160(%rbp), %rax
movq %rax, -0x370(%rbp)
leaq -0x209(%rbp), %rdi
movq %rdi, -0x368(%rbp)
callq 0x6790
movq -0x368(%rbp), %rdx
leaq 0xccc6(%rip), %rsi      # 0x163b6
leaq -0x208(%rbp), %rdi
callq 0xa780
jmp 0x96fe
movq -0x370(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0xa720
movq %rax, -0x378(%rbp)
jmp 0x971a
leaq -0x208(%rbp), %rdi
callq 0x6290
leaq -0x209(%rbp), %rdi
callq 0x64b0
movq -0x378(%rbp), %rax
cmpq $0x0, %rax
je 0x97cd
movq 0x1787e(%rip), %rdi     # 0x20fc8
leaq 0xcc6d(%rip), %rsi      # 0x163be
callq 0x6440
movq %rax, -0x380(%rbp)
jmp 0x975f
movq -0x380(%rbp), %rdi
movq 0x17813(%rip), %rsi     # 0x20f80
callq 0x6490
jmp 0x9774
movl $0x0, -0x4(%rbp)
movl $0x1, -0x1e8(%rbp)
jmp 0x9b91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x97bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x6290
leaq -0x209(%rbp), %rdi
callq 0x64b0
jmp 0x9bb5
leaq -0x230(%rbp), %rdi
callq 0x6600
leaq -0x160(%rbp), %rax
movq %rax, -0x390(%rbp)
leaq -0x251(%rbp), %rdi
movq %rdi, -0x388(%rbp)
callq 0x6790
movq -0x388(%rbp), %rdx
leaq 0xcbd0(%rip), %rsi      # 0x163d8
leaq -0x250(%rbp), %rdi
callq 0xa780
jmp 0x9816
movq -0x390(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0xa720
movq %rax, -0x398(%rbp)
jmp 0x9832
leaq -0x250(%rbp), %rdi
callq 0x6290
leaq -0x251(%rbp), %rdi
callq 0x64b0
movq -0x398(%rbp), %rax
cmpq $0x0, %rax
je 0x9a92
movq 0x17766(%rip), %rdi     # 0x20fc8
leaq 0xcb73(%rip), %rsi      # 0x163dc
callq 0x6440
movq %rax, -0x3a0(%rbp)
jmp 0x9877
leaq -0x279(%rbp), %rdi
movq %rdi, -0x3a8(%rbp)
callq 0x6790
movq -0x3a8(%rbp), %rdx
leaq 0xcb40(%rip), %rsi      # 0x163d8
leaq -0x278(%rbp), %rdi
callq 0xa780
jmp 0x98a6
leaq -0x170(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0xad90
movq %rax, -0x3b0(%rbp)
jmp 0x98c2
movq -0x3b0(%rbp), %rdi
callq 0xadc0
movq %rax, -0x3b8(%rbp)
jmp 0x98d7
movq -0x3b8(%rbp), %rsi
movq -0x3a0(%rbp), %rdi
callq 0x63f0
movq %rax, -0x3c0(%rbp)
jmp 0x98f3
movq -0x3c0(%rbp), %rdi
movq 0x1767f(%rip), %rsi     # 0x20f80
callq 0x6490
jmp 0x9908
leaq -0x278(%rbp), %rdi
callq 0x6290
leaq -0x279(%rbp), %rdi
callq 0x64b0
leaq -0x2a1(%rbp), %rdi
movq %rdi, -0x3c8(%rbp)
callq 0x6790
movq -0x3c8(%rbp), %rdx
leaq 0xca97(%rip), %rsi      # 0x163d8
leaq -0x2a0(%rbp), %rdi
callq 0xa780
jmp 0x994f
leaq -0x170(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0xad90
movq %rax, -0x3d0(%rbp)
jmp 0x996b
movq -0x3d0(%rbp), %rdi
callq 0xadc0
movq %rax, -0x3d8(%rbp)
jmp 0x9980
movq -0x3d8(%rbp), %rsi
leaq -0x230(%rbp), %rdi
callq 0x6040
jmp 0x9995
leaq -0x2a0(%rbp), %rdi
callq 0x6290
leaq -0x2a1(%rbp), %rdi
callq 0x64b0
jmp 0x9b07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x99e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x6290
leaq -0x251(%rbp), %rdi
callq 0x64b0
jmp 0x9b83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x9b83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x9a3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x6290
leaq -0x279(%rbp), %rdi
callq 0x64b0
jmp 0x9b83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x9a81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x6290
leaq -0x2a1(%rbp), %rdi
callq 0x64b0
jmp 0x9b83
movq 0x17557(%rip), %rdi     # 0x20ff0
leaq 0xc942(%rip), %rsi      # 0x163e2
callq 0x6440
movq %rax, -0x3e0(%rbp)
jmp 0x9aae
movq -0x3e0(%rbp), %rdi
movq 0x174c4(%rip), %rsi     # 0x20f80
callq 0x6490
jmp 0x9ac3
movq 0x17526(%rip), %rdi     # 0x20ff0
leaq 0xc92a(%rip), %rsi      # 0x163fb
callq 0x6440
movq %rax, -0x3e8(%rbp)
jmp 0x9adf
movq -0x3e8(%rbp), %rdi
movq 0x17493(%rip), %rsi     # 0x20f80
callq 0x6490
jmp 0x9af4
movl $0x1, -0x4(%rbp)
movl $0x1, -0x1e8(%rbp)
jmp 0x9b75
leaq -0x2c0(%rbp), %rdi
movq %rdi, -0x3f0(%rbp)
callq 0xade0
movq -0x3f0(%rbp), %rdx
leaq -0x170(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x8460
jmp 0x9b36
movl $0x0, -0x4(%rbp)
movl $0x1, -0x1e8(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0xae00
jmp 0x9b75
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0xae00
jmp 0x9b83
leaq -0x230(%rbp), %rdi
callq 0x6290
jmp 0x9b91
leaq -0x230(%rbp), %rdi
callq 0x6290
jmp 0x9bb5
leaq -0x170(%rbp), %rdi
callq 0xae60
leaq -0x90(%rbp), %rdi
callq 0xaec0
movl -0x4(%rbp), %eax
addq $0x3f0, %rsp            # imm = 0x3F0
popq %rbp
retq
leaq -0x170(%rbp), %rdi
callq 0xae60
leaq -0x90(%rbp), %rdi
callq 0xaec0
movq -0xc0(%rbp), %rdi
callq 0x6780
nopl (%rax)