// File: Se6[P]CmdLineArgs/example.cpp
// Function: main
int main(int argc, char **argv){
	
	string name;
	bool help;
    int number;
	float ratio;
	string usage;

    vector<int> values;
    vector<int> default_numbers = {1, 2, 3};

    vector<string> some_strings;
    vector<string> default_strings  = {"one", "two", "three"};

    vector<string> remaining;
	
	try{
        CmdLineArgs cl(argc, argv, "Example of command line arguments");

        help            = cl.getFlag("help", "Getting usage");
        name            = cl.getParam("name", "stone", "The name of something");
        number          = cl.getParam("number", 'n', 5, "Number of whatever");

        cl.addUsageSeparator("  == Advanced options:");
        some_strings    = cl.getParams("some_strings", default_strings, false, "some strings separated by comma");
        ratio           = cl.getParam("ratio", 0.2f, "The ratio");
        values          = cl.getParams("values", default_numbers, true, "A comma separated list of 3 values");

        cl.addUsageOutro("\nSome examples....\n");

        usage           = cl.usage();
        remaining       = cl.getRemaining();

        cl.throwIfUnparsed();
        
    } catch (const exception& error) {
		cerr << usage << error.what() << endl;
		return 1;
	}
	
	if(argc==1 || help)
		cout << usage;

	cout << endl;
	cout << "name=" << name << endl;
    cout << "some_stings=";
    for(auto &st: some_strings)
        cout << st << ",";
	cout << endl;
    cout << "number=" << number << endl;
	cout << "ratio=" << ratio << endl;
	cout << "numbers=";
    for(auto num: values)
        cout << num << ",";
	cout << endl;
	
	if(!remaining.empty()){
		cout << "remaining: ";
		for(auto rem: remaining)
			cout << rem << " ";
	}else
		cout << "no arg remaining";
	
	cout << endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x710, %rsp            # imm = 0x710
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x3400
leaq -0x60(%rbp), %rdi
callq 0x3400
leaq -0x78(%rbp), %rdi
callq 0x8470
movl $0x1, -0xac(%rbp)
movl $0x2, -0xa8(%rbp)
movl $0x3, -0xa4(%rbp)
leaq -0xac(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq $0x3, -0x98(%rbp)
leaq -0xad(%rbp), %rdi
movq %rdi, -0x568(%rbp)
callq 0x8490
movq -0x568(%rbp), %rcx
movq -0xa0(%rbp), %rsi
movq -0x98(%rbp), %rdx
leaq -0x90(%rbp), %rdi
callq 0x84b0
jmp 0x6341
leaq -0xad(%rbp), %rdi
callq 0x8530
leaq -0xd8(%rbp), %rdi
callq 0x7600
movb $0x1, -0x16c(%rbp)
leaq -0x160(%rbp), %rax
movq %rax, -0x578(%rbp)
movq %rax, -0x168(%rbp)
leaq -0x169(%rbp), %rdi
movq %rdi, -0x570(%rbp)
callq 0x34f0
movq -0x578(%rbp), %rdi
movq -0x570(%rbp), %rdx
leaq 0x9d7d(%rip), %rsi      # 0x1011a
callq 0x7730
jmp 0x63a4
leaq -0x140(%rbp), %rax
movq %rax, -0x588(%rbp)
movq %rax, -0x168(%rbp)
leaq -0x16a(%rbp), %rdi
movq %rdi, -0x580(%rbp)
callq 0x34f0
movq -0x588(%rbp), %rdi
movq -0x580(%rbp), %rdx
leaq 0x9cf3(%rip), %rsi      # 0x100d4
callq 0x7730
jmp 0x63e8
leaq -0x120(%rbp), %rax
movq %rax, -0x598(%rbp)
movq %rax, -0x168(%rbp)
leaq -0x16b(%rbp), %rdi
movq %rdi, -0x590(%rbp)
callq 0x34f0
movq -0x598(%rbp), %rdi
movq -0x590(%rbp), %rdx
leaq 0x9cb3(%rip), %rsi      # 0x100d8
callq 0x7730
jmp 0x642c
movb $0x0, -0x16c(%rbp)
leaq -0x160(%rbp), %rax
movq %rax, -0x100(%rbp)
movq $0x3, -0xf8(%rbp)
leaq -0x16d(%rbp), %rdi
movq %rdi, -0x5a0(%rbp)
callq 0x8550
movq -0x5a0(%rbp), %rcx
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
leaq -0xf0(%rbp), %rdi
callq 0x8570
jmp 0x6482
leaq -0x16d(%rbp), %rdi
callq 0x85f0
leaq -0x160(%rbp), %rax
movq %rax, -0x5b0(%rbp)
addq $0x60, %rax
movq %rax, -0x5a8(%rbp)
movq -0x5a8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x5b8(%rbp)
callq 0x31d0
movq -0x5b0(%rbp), %rcx
movq -0x5b8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5a8(%rbp)
jne 0x64a7
leaq -0x16b(%rbp), %rdi
callq 0x3340
leaq -0x16a(%rbp), %rdi
callq 0x3340
leaq -0x169(%rbp), %rdi
callq 0x3340
leaq -0x188(%rbp), %rdi
callq 0x7600
movl -0x8(%rbp), %eax
movl %eax, -0x5cc(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x5c8(%rbp)
leaq -0x219(%rbp), %rdi
movq %rdi, -0x5c0(%rbp)
callq 0x34f0
movq -0x5c0(%rbp), %rdx
leaq 0x9ba1(%rip), %rsi      # 0x100de
leaq -0x218(%rbp), %rdi
callq 0x7730
jmp 0x654b
movq -0x5c8(%rbp), %rdx
movl -0x5cc(%rbp), %esi
leaq -0x1f8(%rbp), %rdi
leaq -0x218(%rbp), %rcx
movl $0x1, %r8d
callq 0x3840
jmp 0x6573
leaq -0x218(%rbp), %rdi
callq 0x31d0
leaq -0x219(%rbp), %rdi
callq 0x3340
leaq -0x241(%rbp), %rdi
movq %rdi, -0x5d8(%rbp)
callq 0x34f0
movq -0x5d8(%rbp), %rdx
leaq 0x9b54(%rip), %rsi      # 0x10100
leaq -0x240(%rbp), %rdi
callq 0x7730
jmp 0x65ba
leaq -0x269(%rbp), %rdi
movq %rdi, -0x5e0(%rbp)
callq 0x34f0
movq -0x5e0(%rbp), %rdx
leaq 0x9b2a(%rip), %rsi      # 0x10105
leaq -0x268(%rbp), %rdi
callq 0x7730
jmp 0x65e9
leaq -0x1f8(%rbp), %rdi
leaq -0x240(%rbp), %rsi
leaq -0x268(%rbp), %rdx
callq 0x43d0
movl %eax, -0x5e4(%rbp)
jmp 0x660b
movl -0x5e4(%rbp), %eax
testl %eax, %eax
setne -0x31(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x31d0
leaq -0x269(%rbp), %rdi
callq 0x3340
leaq -0x240(%rbp), %rdi
callq 0x31d0
leaq -0x241(%rbp), %rdi
callq 0x3340
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0x5f0(%rbp)
callq 0x34f0
movq -0x5f0(%rbp), %rdx
leaq 0x9aab(%rip), %rsi      # 0x10113
leaq -0x2b0(%rbp), %rdi
callq 0x7730
jmp 0x6676
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0x5f8(%rbp)
callq 0x34f0
movq -0x5f8(%rbp), %rdx
leaq 0x9a87(%rip), %rsi      # 0x1011e
leaq -0x2d8(%rbp), %rdi
callq 0x7730
jmp 0x66a5
leaq 0x9a6c(%rip), %rcx      # 0x10118
leaq -0x290(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
leaq -0x2b0(%rbp), %rdx
leaq -0x2d8(%rbp), %r8
callq 0x4c60
jmp 0x66cf
leaq -0x30(%rbp), %rdi
leaq -0x290(%rbp), %rsi
movq %rsi, -0x608(%rbp)
callq 0x3390
movq -0x608(%rbp), %rdi
callq 0x31d0
leaq -0x2d8(%rbp), %rdi
callq 0x31d0
leaq -0x2d9(%rbp), %rdi
callq 0x3340
leaq -0x2b0(%rbp), %rdi
callq 0x31d0
leaq -0x2b1(%rbp), %rdi
callq 0x3340
leaq -0x301(%rbp), %rdi
movq %rdi, -0x600(%rbp)
callq 0x34f0
movq -0x600(%rbp), %rdx
leaq 0x99f1(%rip), %rsi      # 0x10134
leaq -0x300(%rbp), %rdi
callq 0x7730
jmp 0x6751
leaq -0x329(%rbp), %rdi
movq %rdi, -0x610(%rbp)
callq 0x34f0
movq -0x610(%rbp), %rdx
leaq 0x99c9(%rip), %rsi      # 0x1013b
leaq -0x328(%rbp), %rdi
callq 0x7730
jmp 0x6780
leaq -0x1f8(%rbp), %rdi
leaq -0x300(%rbp), %rsi
movl $0x6e, %edx
movl $0x5, %ecx
leaq -0x328(%rbp), %r8
callq 0x8610
movl %eax, -0x614(%rbp)
jmp 0x67ac
movl -0x614(%rbp), %eax
movl %eax, -0x38(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x31d0
leaq -0x329(%rbp), %rdi
callq 0x3340
leaq -0x300(%rbp), %rdi
callq 0x31d0
leaq -0x301(%rbp), %rdi
callq 0x3340
leaq -0x351(%rbp), %rdi
movq %rdi, -0x620(%rbp)
callq 0x34f0
movq -0x620(%rbp), %rdx
leaq 0x9948(%rip), %rsi      # 0x1014e
leaq -0x350(%rbp), %rdi
callq 0x7730
jmp 0x6814
leaq -0x1f8(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x58d0
jmp 0x6829
leaq -0x350(%rbp), %rdi
callq 0x31d0
leaq -0x351(%rbp), %rdi
callq 0x3340
leaq -0x391(%rbp), %rdi
movq %rdi, -0x628(%rbp)
callq 0x34f0
movq -0x628(%rbp), %rdx
leaq 0x9903(%rip), %rsi      # 0x10165
leaq -0x390(%rbp), %rdi
callq 0x7730
jmp 0x6870
leaq -0x3b9(%rbp), %rdi
movq %rdi, -0x630(%rbp)
callq 0x34f0
movq -0x630(%rbp), %rdx
leaq 0x98e1(%rip), %rsi      # 0x10172
leaq -0x3b8(%rbp), %rdi
callq 0x7730
jmp 0x689f
movq %rsp, %rax
movl $0x2c, (%rax)
leaq -0x370(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
leaq -0x390(%rbp), %rdx
leaq -0xf0(%rbp), %rcx
xorl %r8d, %r8d
leaq -0x3b8(%rbp), %r9
callq 0x5860
jmp 0x68d5
leaq -0xd8(%rbp), %rdi
leaq -0x370(%rbp), %rsi
movq %rsi, -0x640(%rbp)
callq 0x7f90
movq -0x640(%rbp), %rdi
callq 0x76b0
leaq -0x3b8(%rbp), %rdi
callq 0x31d0
leaq -0x3b9(%rbp), %rdi
callq 0x3340
leaq -0x390(%rbp), %rdi
callq 0x31d0
leaq -0x391(%rbp), %rdi
callq 0x3340
leaq -0x3e1(%rbp), %rdi
movq %rdi, -0x638(%rbp)
callq 0x34f0
movq -0x638(%rbp), %rdx
leaq 0x984a(%rip), %rsi      # 0x10196
leaq -0x3e0(%rbp), %rdi
callq 0x7730
jmp 0x695a
leaq -0x409(%rbp), %rdi
movq %rdi, -0x648(%rbp)
callq 0x34f0
movq -0x648(%rbp), %rdx
leaq 0x9817(%rip), %rsi      # 0x10192
leaq -0x408(%rbp), %rdi
callq 0x7730
jmp 0x6989
leaq -0x1f8(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
movss 0x9665(%rip), %xmm0     # 0x10004
leaq -0x408(%rbp), %rdx
callq 0x9100
movss %xmm0, -0x64c(%rbp)
jmp 0x69b5
movss -0x64c(%rbp), %xmm0
movss %xmm0, -0x3c(%rbp)
leaq -0x408(%rbp), %rdi
callq 0x31d0
leaq -0x409(%rbp), %rdi
callq 0x3340
leaq -0x3e0(%rbp), %rdi
callq 0x31d0
leaq -0x3e1(%rbp), %rdi
callq 0x3340
leaq -0x449(%rbp), %rdi
movq %rdi, -0x658(%rbp)
callq 0x34f0
movq -0x658(%rbp), %rdx
leaq 0x97a5(%rip), %rsi      # 0x101b8
leaq -0x448(%rbp), %rdi
callq 0x7730
jmp 0x6a21
leaq -0x471(%rbp), %rdi
movq %rdi, -0x660(%rbp)
callq 0x34f0
movq -0x660(%rbp), %rdx
leaq 0x975a(%rip), %rsi      # 0x1019c
leaq -0x470(%rbp), %rdi
callq 0x7730
jmp 0x6a50
movq %rsp, %rax
movl $0x2c, (%rax)
leaq -0x428(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
leaq -0x448(%rbp), %rdx
leaq -0x90(%rbp), %rcx
movl $0x1, %r8d
leaq -0x470(%rbp), %r9
callq 0x9140
jmp 0x6a89
leaq -0x78(%rbp), %rdi
leaq -0x428(%rbp), %rsi
movq %rsi, -0x670(%rbp)
callq 0x91b0
movq -0x670(%rbp), %rdi
callq 0x91e0
leaq -0x470(%rbp), %rdi
callq 0x31d0
leaq -0x471(%rbp), %rdi
callq 0x3340
leaq -0x448(%rbp), %rdi
callq 0x31d0
leaq -0x449(%rbp), %rdi
callq 0x3340
leaq -0x499(%rbp), %rdi
movq %rdi, -0x668(%rbp)
callq 0x34f0
movq -0x668(%rbp), %rdx
leaq 0x96c2(%rip), %rsi      # 0x101bf
leaq -0x498(%rbp), %rdi
callq 0x7730
jmp 0x6b0b
leaq -0x1f8(%rbp), %rdi
leaq -0x498(%rbp), %rsi
callq 0x5940
jmp 0x6b20
leaq -0x498(%rbp), %rdi
callq 0x31d0
leaq -0x499(%rbp), %rdi
callq 0x3340
leaq -0x4c0(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x5970
jmp 0x6b4d
leaq -0x60(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
movq %rsi, -0x678(%rbp)
callq 0x3390
movq -0x678(%rbp), %rdi
callq 0x31d0
leaq -0x4d8(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x5db0
jmp 0x6b85
leaq -0x188(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
movq %rsi, -0x680(%rbp)
callq 0x7f90
movq -0x680(%rbp), %rdi
callq 0x76b0
leaq -0x1f8(%rbp), %rdi
callq 0x6060
jmp 0x6bb9
leaq -0x1f8(%rbp), %rdi
callq 0x9240
jmp 0x7163
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0xad(%rbp), %rdi
callq 0x8530
jmp 0x75cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6cb1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6ca5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6c99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x16d(%rbp), %rdi
callq 0x85f0
leaq -0x160(%rbp), %rax
movq %rax, -0x690(%rbp)
addq $0x60, %rax
movq %rax, -0x688(%rbp)
movq -0x688(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x698(%rbp)
callq 0x31d0
movq -0x690(%rbp), %rcx
movq -0x698(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x688(%rbp)
jne 0x6c66
jmp 0x6c99
leaq -0x16b(%rbp), %rdi
callq 0x3340
leaq -0x16a(%rbp), %rdi
callq 0x3340
leaq -0x169(%rbp), %rdi
callq 0x3340
testb $0x1, -0x16c(%rbp)
jne 0x6cc8
jmp 0x6d15
movq -0x168(%rbp), %rax
leaq -0x160(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x6a0(%rbp)
je 0x6d13
movq -0x6a0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x6a8(%rbp)
callq 0x31d0
movq -0x6a8(%rbp), %rax
leaq -0x160(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x6a0(%rbp)
jne 0x6ce2
jmp 0x6d15
jmp 0x75b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6d4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x31d0
leaq -0x219(%rbp), %rdi
callq 0x3340
jmp 0x7095
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6dbb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6da3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x31d0
leaq -0x269(%rbp), %rdi
callq 0x3340
leaq -0x240(%rbp), %rdi
callq 0x31d0
leaq -0x241(%rbp), %rdi
callq 0x3340
jmp 0x7089
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6e2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6e12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x31d0
leaq -0x2d9(%rbp), %rdi
callq 0x3340
leaq -0x2b0(%rbp), %rdi
callq 0x31d0
leaq -0x2b1(%rbp), %rdi
callq 0x3340
jmp 0x7089
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6e99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6e81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x31d0
leaq -0x329(%rbp), %rdi
callq 0x3340
leaq -0x300(%rbp), %rdi
callq 0x31d0
leaq -0x301(%rbp), %rdi
callq 0x3340
jmp 0x7089
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6edc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x31d0
leaq -0x351(%rbp), %rdi
callq 0x3340
jmp 0x7089
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6f4b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6f33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x3b8(%rbp), %rdi
callq 0x31d0
leaq -0x3b9(%rbp), %rdi
callq 0x3340
leaq -0x390(%rbp), %rdi
callq 0x31d0
leaq -0x391(%rbp), %rdi
callq 0x3340
jmp 0x7089
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6fba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x6fa2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x408(%rbp), %rdi
callq 0x31d0
leaq -0x409(%rbp), %rdi
callq 0x3340
leaq -0x3e0(%rbp), %rdi
callq 0x31d0
leaq -0x3e1(%rbp), %rdi
callq 0x3340
jmp 0x7089
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x7029
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x7011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x470(%rbp), %rdi
callq 0x31d0
leaq -0x471(%rbp), %rdi
callq 0x3340
leaq -0x448(%rbp), %rdi
callq 0x31d0
leaq -0x449(%rbp), %rdi
callq 0x3340
jmp 0x7089
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x7069
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x498(%rbp), %rdi
callq 0x31d0
leaq -0x499(%rbp), %rdi
callq 0x3340
jmp 0x7089
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x9240
movl -0xbc(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x759f
movq -0xb8(%rbp), %rdi
callq 0x3130
movq %rax, -0x4e0(%rbp)
movq 0xef26(%rip), %rdi      # 0x15fe8
leaq -0x60(%rbp), %rsi
callq 0x32b0
movq %rax, -0x6b0(%rbp)
jmp 0x70d4
movq -0x4e0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x6b0(%rbp), %rdi
movq %rax, %rsi
callq 0x32d0
movq %rax, -0x6b8(%rbp)
jmp 0x70fc
movq -0x6b8(%rbp), %rdi
movq 0xeea6(%rip), %rsi      # 0x15fb0
callq 0x3320
jmp 0x7111
movl $0x1, -0x4(%rbp)
movl $0x1, -0x4e4(%rbp)
callq 0x3480
jmp 0x7142
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
callq 0x3480
jmp 0x715e
jmp 0x7548
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x759f
jmp 0x759f
cmpl $0x1, -0x8(%rbp)
je 0x716f
testb $0x1, -0x31(%rbp)
je 0x7183
movq 0xee52(%rip), %rdi      # 0x15fc8
leaq -0x60(%rbp), %rsi
callq 0x32b0
jmp 0x7181
jmp 0x7183
movq 0xee3e(%rip), %rdi      # 0x15fc8
movq 0xee1f(%rip), %rsi      # 0x15fb0
callq 0x3320
jmp 0x7198
movq 0xee29(%rip), %rdi      # 0x15fc8
leaq 0x902d(%rip), %rsi      # 0x101d3
callq 0x32d0
movq %rax, -0x6c0(%rbp)
jmp 0x71b4
movq -0x6c0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x32b0
movq %rax, -0x6c8(%rbp)
jmp 0x71cd
movq -0x6c8(%rbp), %rdi
movq 0xedd5(%rip), %rsi      # 0x15fb0
callq 0x3320
jmp 0x71e2
movq 0xeddf(%rip), %rdi      # 0x15fc8
leaq 0x8fe9(%rip), %rsi      # 0x101d9
callq 0x32d0
jmp 0x71f7
leaq -0xd8(%rbp), %rax
movq %rax, -0x4f0(%rbp)
movq -0x4f0(%rbp), %rdi
callq 0x7a20
movq %rax, -0x4f8(%rbp)
movq -0x4f0(%rbp), %rdi
callq 0x79b0
movq %rax, -0x500(%rbp)
leaq -0x4f8(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0x7b00
testb $0x1, %al
jne 0x7244
jmp 0x7298
leaq -0x4f8(%rbp), %rdi
callq 0x7c40
movq %rax, -0x508(%rbp)
movq -0x508(%rbp), %rsi
movq 0xed63(%rip), %rdi      # 0x15fc8
callq 0x32b0
movq %rax, -0x6d0(%rbp)
jmp 0x7273
movq -0x6d0(%rbp), %rdi
leaq 0x8ddc(%rip), %rsi      # 0x1005d
callq 0x32d0
jmp 0x7288
jmp 0x728a
leaq -0x4f8(%rbp), %rdi
callq 0x7c20
jmp 0x722b
movq 0xed29(%rip), %rdi      # 0x15fc8
movq 0xed0a(%rip), %rsi      # 0x15fb0
callq 0x3320
jmp 0x72ad
movq 0xed14(%rip), %rdi      # 0x15fc8
leaq 0x8f2b(%rip), %rsi      # 0x101e6
callq 0x32d0
movq %rax, -0x6d8(%rbp)
jmp 0x72c9
movq -0x6d8(%rbp), %rdi
movl -0x38(%rbp), %esi
callq 0x34d0
movq %rax, -0x6e0(%rbp)
jmp 0x72e1
movq -0x6e0(%rbp), %rdi
movq 0xecc1(%rip), %rsi      # 0x15fb0
callq 0x3320
jmp 0x72f6
movq 0xeccb(%rip), %rdi      # 0x15fc8
leaq 0x8eea(%rip), %rsi      # 0x101ee
callq 0x32d0
movq %rax, -0x6e8(%rbp)
jmp 0x7312
movq -0x6e8(%rbp), %rdi
movss -0x3c(%rbp), %xmm0
callq 0x3250
movq %rax, -0x6f0(%rbp)
jmp 0x732c
movq -0x6f0(%rbp), %rdi
movq 0xec76(%rip), %rsi      # 0x15fb0
callq 0x3320
jmp 0x7341
movq 0xec80(%rip), %rdi      # 0x15fc8
leaq 0x8ea6(%rip), %rsi      # 0x101f5
callq 0x32d0
jmp 0x7356
leaq -0x78(%rbp), %rax
movq %rax, -0x510(%rbp)
movq -0x510(%rbp), %rdi
callq 0x92a0
movq %rax, -0x518(%rbp)
movq -0x510(%rbp), %rdi
callq 0x92d0
movq %rax, -0x520(%rbp)
leaq -0x518(%rbp), %rdi
leaq -0x520(%rbp), %rsi
callq 0x9300
testb $0x1, %al
jne 0x73a0
jmp 0x73f4
leaq -0x518(%rbp), %rdi
callq 0x9340
movl (%rax), %eax
movl %eax, -0x524(%rbp)
movl -0x524(%rbp), %esi
movq 0xec07(%rip), %rdi      # 0x15fc8
callq 0x34d0
movq %rax, -0x6f8(%rbp)
jmp 0x73cf
movq -0x6f8(%rbp), %rdi
leaq 0x8c80(%rip), %rsi      # 0x1005d
callq 0x32d0
jmp 0x73e4
jmp 0x73e6
leaq -0x518(%rbp), %rdi
callq 0x9360
jmp 0x7387
movq 0xebcd(%rip), %rdi      # 0x15fc8
movq 0xebae(%rip), %rsi      # 0x15fb0
callq 0x3320
jmp 0x7409
leaq -0x188(%rbp), %rdi
callq 0x7fc0
testb $0x1, %al
jne 0x7512
movq 0xeba4(%rip), %rdi      # 0x15fc8
leaq 0x8dd3(%rip), %rsi      # 0x101fe
callq 0x32d0
jmp 0x7432
leaq -0x188(%rbp), %rax
movq %rax, -0x530(%rbp)
movq -0x530(%rbp), %rdi
callq 0x7a20
movq %rax, -0x538(%rbp)
movq -0x530(%rbp), %rdi
callq 0x79b0
movq %rax, -0x540(%rbp)
leaq -0x538(%rbp), %rdi
leaq -0x540(%rbp), %rsi
callq 0x7b00
testb $0x1, %al
jne 0x7482
jmp 0x7510
leaq -0x538(%rbp), %rdi
callq 0x7c40
movq %rax, %rsi
leaq -0x560(%rbp), %rdi
callq 0x3140
jmp 0x749f
movq 0xeb22(%rip), %rdi      # 0x15fc8
leaq -0x560(%rbp), %rsi
callq 0x32b0
movq %rax, -0x700(%rbp)
jmp 0x74bb
movq -0x700(%rbp), %rdi
leaq 0x8bc5(%rip), %rsi      # 0x1008e
callq 0x32d0
jmp 0x74d0
leaq -0x560(%rbp), %rdi
callq 0x31d0
leaq -0x538(%rbp), %rdi
callq 0x7c20
jmp 0x7466
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x560(%rbp), %rdi
callq 0x31d0
jmp 0x759f
jmp 0x7529
movq 0xeaaf(%rip), %rdi      # 0x15fc8
leaq 0x8cea(%rip), %rsi      # 0x1020a
callq 0x32d0
jmp 0x7527
jmp 0x7529
movq 0xea98(%rip), %rdi      # 0x15fc8
movq 0xea79(%rip), %rsi      # 0x15fb0
callq 0x3320
jmp 0x753e
movl $0x0, -0x4e4(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x76b0
leaq -0xf0(%rbp), %rdi
callq 0x76b0
leaq -0xd8(%rbp), %rdi
callq 0x76b0
leaq -0x90(%rbp), %rdi
callq 0x91e0
leaq -0x78(%rbp), %rdi
callq 0x91e0
leaq -0x60(%rbp), %rdi
callq 0x31d0
leaq -0x30(%rbp), %rdi
callq 0x31d0
movl -0x4(%rbp), %eax
addq $0x710, %rsp            # imm = 0x710
popq %rbp
retq
leaq -0x188(%rbp), %rdi
callq 0x76b0
leaq -0xf0(%rbp), %rdi
callq 0x76b0
leaq -0xd8(%rbp), %rdi
callq 0x76b0
leaq -0x90(%rbp), %rdi
callq 0x91e0
leaq -0x78(%rbp), %rdi
callq 0x91e0
leaq -0x60(%rbp), %rdi
callq 0x31d0
leaq -0x30(%rbp), %rdi
callq 0x31d0
movq -0xb8(%rbp), %rdi
callq 0x34e0
movq %rax, %rdi
callq 0x9290
nop