// File: Infinidat[P]slimfastq/config.cpp
// Function: Config::init(int, char**)
void Config::init(int argc, char **argv) {
    if (initialized)
        croak("Internal error: 2nd Config init");

    initialized = true;

    std::string usr, fil;
    bool overwrite = false;
    bool statistics = false;

    if (argc == 1) usage();
    // TODO? long options
    // const char* short_opt = "POvhd 1234 u:f:s:p:l:";
    const char* short_opt = "qPsvhdO 1234 u:f:l:";
    for ( int opt = getopt(argc, argv, short_opt);
          opt != -1;
          opt     = getopt(argc, argv, short_opt))
        switch (opt) {
        case 'u': usr = optarg ; break;
        case 'f': fil = optarg ; break;

        case 'l': level = strtoll(optarg, 0, 0);  break;
        case '1': case '2' : case '3': case '4':
            level = opt - '0'; break;

        case 'd': encode     = false; break;
        case 'O': overwrite  = true ; break;
        case 'P': profiling  = true ; break;
        case 'q': quiet      = true ; break;
        case 'v':
            printf("Version %s\nInternal format version=%u\n", user_version, version);
            exit(0);
        case 'h':
            usage();
        case 's': statistics = true; encode = false; break;

        default:
            croak("Ilagal args: use -h for help");
        }

    while (optind < argc) {
        // DWIM guessing ...
        char *file = argv[optind ++];
        FILE* fh = fopen(file, "rb");
        if (! fh) {
            if  (not encode and not usr.length())
                usr = file;
            else if (encode and not fil.length())
                fil = file;
            else {
                fprintf(stderr, "What am I suppose to do with '%s'?\n (please specify explicitly with -f/-u prefix)\n(Note: not an existing file)\n",
                        file);
                exit(1);
            }
            continue;
        }
        const char* sfqstamp = "whoami=slimfastq" ;
        char initline[20];
        BZERO(initline);
        size_t cnt = fread(initline, 1, 19, fh);
        if (cnt and
            not fil.length() and
            0 == strncmp(initline, sfqstamp, strlen(sfqstamp))) {
            fil = file;
            encode = !! usr.length();
        }
        else if (cnt and
                 not usr.length() and
                 initline[0] == '@') {
            usr = file;
        }
        else if (not usr.length() and
                 not encode and
                 (not cnt or overwrite)) {
            usr = file;
        }
        else if (encode and
                 usr.length() and
                 not fil.length() and
                 (not cnt or overwrite)) {
            fil = file;
        }
        else {
            fprintf(stderr, "What am I suppose to do with '%s'?\n (please specify explicitly with -f/-u prefix)\n(Note: file exists!)\n", file);
            exit(1);
        }
    }
    check_op(fil.length(), 'f');

    const char* wr_flags = overwrite ? "wb" : "wbx" ;
    if (encode) {
        FILE* fh = fopen(fil.c_str(), wr_flags);
        check_fh(fh, fil, false);
        FilerSave::init(fh);
        m_info_filer = new FilerSave(42);
        set_info("whoami", "slimfastq");
        set_info("version", version);
        set_info("config.level", range_level(level));

        if (usr.length()) {
            set_info("orig.filename", usr.c_str());
            f_usr = fopen(usr.c_str(), "rb") ;
            check_fh(f_usr, usr, true);
            fseek(f_usr, 0L, SEEK_END);
            set_info("orig.size", ftell(f_usr));
            fseek(f_usr, 0L, SEEK_SET);
          }
        else {
            set_info("orig.filename", "<< stdin >>");
            f_usr = stdin ;
        }
    }
    else {
        FILE* fh = fopen(fil.c_str(), "rb");
        check_fh(fh, fil, true);
        fseek(fh, 0L, SEEK_END);
        UINT64 file_size = ftell(fh);
        fseek(fh, 0L, SEEK_SET);

        FilerLoad::init(fh);
        load_info();
        if (statistics)
            statistics_dump();

        level = range_level(get_long("config.level", 2));

        f_usr = usr.length() ? fopen(usr.c_str(), wr_flags) : stdout;
        check_fh(f_usr, usr);

        UINT64 comp_size = get_long("comp.size", 0);
        if (comp_size > 0 and
            comp_size != file_size)
            croak("expected compressed file size to be %lld", comp_size);

        decoder_version = conf.get_long("version");
        if (decoder_version and
            decoder_version > version)
            croak("%s was compressed with slimfastq version %d. My version is %d. Please upgrade me before decoing",
                  fil.c_str(), decoder_version, version);
    }
}

// Assembly:
subq $0x228, %rsp            # imm = 0x228
movq %rdi, 0x220(%rsp)
movl %esi, 0x21c(%rsp)
movq %rdx, 0x210(%rsp)
movq 0x220(%rsp), %rax
movq %rax, 0xb8(%rsp)
testb $0x1, 0x123fb(%rip)     # 0x162a0
je 0x3eb5
leaq 0xcb78(%rip), %rdi      # 0x10a26
movb $0x0, %al
callq 0x3450
movb $0x1, 0x123e4(%rip)     # 0x162a0
leaq 0x1f0(%rsp), %rdi
callq 0x2370
leaq 0x1d0(%rsp), %rdi
callq 0x2370
movb $0x0, 0x1cf(%rsp)
movb $0x0, 0x1ce(%rsp)
cmpl $0x1, 0x21c(%rsp)
jne 0x3f1a
movq 0xb8(%rsp), %rdi
callq 0x3e20
jmp 0x3eff
jmp 0x3f1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c0(%rsp)
movl %eax, 0x1bc(%rsp)
jmp 0x4aa2
leaq 0xcb25(%rip), %rax      # 0x10a46
movq %rax, 0x1b0(%rsp)
movl 0x21c(%rsp), %edi
movq 0x210(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
callq 0x20c0
movl %eax, 0x1ac(%rsp)
cmpl $-0x1, 0x1ac(%rsp)
je 0x40cd
movl 0x1ac(%rsp), %eax
addl $-0x31, %eax
movl %eax, %ecx
movq %rcx, 0xb0(%rsp)
subl $0x45, %eax
ja 0x4093
movq 0xb0(%rsp), %rax
leaq 0xc0f6(%rip), %rcx      # 0x1007c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x12022(%rip), %rax     # 0x15fb8
movq (%rax), %rsi
leaq 0x1f0(%rsp), %rdi
callq 0x2360
jmp 0x3fa8
jmp 0x40a3
movq 0x12004(%rip), %rax     # 0x15fb8
movq (%rax), %rsi
leaq 0x1d0(%rsp), %rdi
callq 0x2360
jmp 0x3fc6
jmp 0x40a3
movq 0x11fe6(%rip), %rax     # 0x15fb8
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x2080
movq %rax, %rcx
movq 0xb8(%rsp), %rax
movl %ecx, 0x4(%rax)
jmp 0x40a3
movq 0xb8(%rsp), %rax
movl 0x1ac(%rsp), %ecx
subl $0x30, %ecx
movl %ecx, 0x4(%rax)
jmp 0x40a3
movq 0xb8(%rsp), %rax
movb $0x0, 0xc(%rax)
jmp 0x40a3
movb $0x1, 0x1cf(%rsp)
jmp 0x40a3
movq 0xb8(%rsp), %rax
movb $0x1, 0xd(%rax)
jmp 0x40a3
movq 0xb8(%rsp), %rax
movb $0x1, 0xe(%rax)
jmp 0x40a3
movq 0xb8(%rsp), %rax
movq 0x121ed(%rip), %rsi     # 0x16240
movl (%rax), %edx
leaq 0xc9fe(%rip), %rdi      # 0x10a5a
xorl %eax, %eax
callq 0x2070
jmp 0x4065
xorl %edi, %edi
callq 0x2310
movq 0xb8(%rsp), %rdi
callq 0x3e20
jmp 0x407b
jmp 0x407d
movq 0xb8(%rsp), %rax
movb $0x1, 0x1ce(%rsp)
movb $0x0, 0xc(%rax)
jmp 0x40a3
leaq 0xc9e7(%rip), %rdi      # 0x10a81
xorl %eax, %eax
callq 0x3450
jmp 0x40a3
jmp 0x40a5
movl 0x21c(%rsp), %edi
movq 0x210(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
callq 0x20c0
movl %eax, 0x1ac(%rsp)
jmp 0x3f4c
jmp 0x40cf
movq 0x11f02(%rip), %rax     # 0x15fd8
movl (%rax), %eax
cmpl 0x21c(%rsp), %eax
jge 0x4433
movq 0x210(%rsp), %rax
movq 0x11ee4(%rip), %rdx     # 0x15fd8
movslq (%rdx), %rcx
movl %ecx, %esi
incl %esi
movl %esi, (%rdx)
movq (%rax,%rcx,8), %rax
movq %rax, 0x1a0(%rsp)
movq 0x1a0(%rsp), %rdi
leaq 0xc986(%rip), %rsi      # 0x10a9e
callq 0x2300
movq %rax, 0xa8(%rsp)
jmp 0x4127
movq 0xa8(%rsp), %rax
movq %rax, 0x198(%rsp)
cmpq $0x0, 0x198(%rsp)
jne 0x41eb
movq 0xb8(%rsp), %rax
testb $0x1, 0xc(%rax)
jne 0x4180
leaq 0x1f0(%rsp), %rdi
callq 0x23b0
cmpq $0x0, %rax
jne 0x4180
movq 0x1a0(%rsp), %rsi
leaq 0x1f0(%rsp), %rdi
callq 0x2360
jmp 0x417e
jmp 0x41e6
movq 0xb8(%rsp), %rax
testb $0x1, 0xc(%rax)
je 0x41ba
leaq 0x1d0(%rsp), %rdi
callq 0x23b0
cmpq $0x0, %rax
jne 0x41ba
movq 0x1a0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdi
callq 0x2360
jmp 0x41b8
jmp 0x41e4
movq 0x11e0f(%rip), %rax     # 0x15fd0
movq (%rax), %rdi
movq 0x1a0(%rsp), %rdx
leaq 0xc8ce(%rip), %rsi      # 0x10aa1
movb $0x0, %al
callq 0x2380
movl $0x1, %edi
callq 0x2310
jmp 0x41e6
jmp 0x40cf
leaq 0xc91f(%rip), %rax      # 0x10b11
movq %rax, 0x190(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x170(%rsp)
movl $0x0, 0x180(%rsp)
movq 0x198(%rsp), %rcx
leaq 0x170(%rsp), %rdi
movl $0x1, %esi
movl $0x13, %edx
callq 0x23a0
movq %rax, 0xa0(%rsp)
jmp 0x4239
movq 0xa0(%rsp), %rax
movq %rax, 0x168(%rsp)
cmpq $0x0, 0x168(%rsp)
je 0x4303
leaq 0x1d0(%rsp), %rdi
callq 0x23b0
cmpq $0x0, %rax
jne 0x4303
leaq 0x170(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0x190(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0x190(%rsp), %rdi
callq 0x2130
movq 0x90(%rsp), %rdi
movq 0x98(%rsp), %rsi
movq %rax, %rdx
callq 0x2150
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x4303
movq 0x1a0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdi
callq 0x2360
jmp 0x42d3
leaq 0x1f0(%rsp), %rdi
callq 0x23b0
movq %rax, %rcx
movq 0xb8(%rsp), %rax
cmpq $0x0, %rcx
setne %cl
xorb $-0x1, %cl
xorb $-0x1, %cl
andb $0x1, %cl
movb %cl, 0xc(%rax)
jmp 0x442e
cmpq $0x0, 0x168(%rsp)
je 0x434a
leaq 0x1f0(%rsp), %rdi
callq 0x23b0
cmpq $0x0, %rax
jne 0x434a
movsbl 0x170(%rsp), %eax
cmpl $0x40, %eax
jne 0x434a
movq 0x1a0(%rsp), %rsi
leaq 0x1f0(%rsp), %rdi
callq 0x2360
jmp 0x4345
jmp 0x442c
leaq 0x1f0(%rsp), %rdi
callq 0x23b0
cmpq $0x0, %rax
jne 0x439c
movq 0xb8(%rsp), %rax
testb $0x1, 0xc(%rax)
jne 0x439c
cmpq $0x0, 0x168(%rsp)
je 0x4380
testb $0x1, 0x1cf(%rsp)
je 0x439c
movq 0x1a0(%rsp), %rsi
leaq 0x1f0(%rsp), %rdi
callq 0x2360
jmp 0x4397
jmp 0x442a
movq 0xb8(%rsp), %rax
testb $0x1, 0xc(%rax)
je 0x43fe
leaq 0x1f0(%rsp), %rdi
callq 0x23b0
cmpq $0x0, %rax
je 0x43fe
leaq 0x1d0(%rsp), %rdi
callq 0x23b0
cmpq $0x0, %rax
jne 0x43fe
cmpq $0x0, 0x168(%rsp)
je 0x43e5
testb $0x1, 0x1cf(%rsp)
je 0x43fe
movq 0x1a0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdi
callq 0x2360
jmp 0x43fc
jmp 0x4428
movq 0x11bcb(%rip), %rax     # 0x15fd0
movq (%rax), %rdi
movq 0x1a0(%rsp), %rdx
leaq 0xc70b(%rip), %rsi      # 0x10b22
movb $0x0, %al
callq 0x2380
movl $0x1, %edi
callq 0x2310
jmp 0x442a
jmp 0x442c
jmp 0x442e
jmp 0x40cf
leaq 0x1d0(%rsp), %rdi
callq 0x23b0
movl %eax, %edi
movl $0x66, %esi
callq 0x4ad0
jmp 0x444e
movq 0xb8(%rsp), %rax
movb 0x1cf(%rsp), %sil
leaq 0xc728(%rip), %rcx      # 0x10b8d
leaq 0xc71e(%rip), %rdx      # 0x10b8a
testb $0x1, %sil
cmovneq %rdx, %rcx
movq %rcx, 0x160(%rsp)
testb $0x1, 0xc(%rax)
je 0x477b
leaq 0x1d0(%rsp), %rdi
callq 0x2110
movq %rax, %rdi
movq 0x160(%rsp), %rsi
callq 0x2300
movq %rax, 0x88(%rsp)
jmp 0x44ad
movq 0x88(%rsp), %rax
movq %rax, 0x158(%rsp)
movq 0x158(%rsp), %rax
movq %rax, 0x80(%rsp)
leaq 0x138(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
callq 0x2120
jmp 0x44e4
movq 0x80(%rsp), %rdi
leaq 0x138(%rsp), %rsi
xorl %edx, %edx
callq 0x4b10
jmp 0x44fd
leaq 0x138(%rsp), %rdi
callq 0x21a0
movq 0x158(%rsp), %rdi
callq 0x6c10
jmp 0x4519
movl $0x4040, %edi           # imm = 0x4040
callq 0x2280
movq %rax, 0x78(%rsp)
jmp 0x452a
movq 0x78(%rsp), %rdi
movl $0x2a, %esi
callq 0x6e60
jmp 0x453b
movq 0xb8(%rsp), %rdi
movq 0x78(%rsp), %rax
movq %rax, 0x18(%rdi)
leaq 0xc63e(%rip), %rsi      # 0x10b91
leaq 0xc5be(%rip), %rdx      # 0x10b18
callq 0x3cd0
jmp 0x4561
movq 0xb8(%rsp), %rdi
movslq (%rdi), %rdx
leaq 0xc625(%rip), %rsi      # 0x10b98
callq 0x3dd0
jmp 0x457a
movq 0xb8(%rsp), %rax
movl 0x4(%rax), %edi
callq 0x4bb0
movl %eax, 0x74(%rsp)
jmp 0x4590
movq 0xb8(%rsp), %rdi
movl 0x74(%rsp), %eax
movslq %eax, %rdx
leaq 0xc5fa(%rip), %rsi      # 0x10ba0
callq 0x3dd0
jmp 0x45ad
leaq 0x1f0(%rsp), %rdi
callq 0x23b0
cmpq $0x0, %rax
je 0x4743
leaq 0x1f0(%rsp), %rdi
callq 0x2110
movq 0xb8(%rsp), %rdi
movq %rax, %rdx
leaq 0xbbd6(%rip), %rsi      # 0x101b9
callq 0x3cd0
jmp 0x45ea
leaq 0x1f0(%rsp), %rdi
callq 0x2110
movq %rax, %rdi
leaq 0xc49d(%rip), %rsi      # 0x10a9e
callq 0x2300
movq %rax, 0x68(%rsp)
jmp 0x460d
movq 0xb8(%rsp), %rax
movq 0x68(%rsp), %rcx
movq %rcx, 0x10(%rax)
movq 0x10(%rax), %rax
movq %rax, 0x60(%rsp)
leaq 0x118(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
callq 0x2120
jmp 0x463e
movq 0x60(%rsp), %rdi
leaq 0x118(%rsp), %rsi
movl $0x1, %edx
callq 0x4b10
jmp 0x4657
leaq 0x118(%rsp), %rdi
callq 0x21a0
movq 0xb8(%rsp), %rax
movq 0x10(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x2, %edx
callq 0x22f0
jmp 0x4680
movq 0xb8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x2030
movq %rax, 0x58(%rsp)
jmp 0x4698
movq 0x58(%rsp), %rdx
movq 0xb8(%rsp), %rdi
leaq 0xc501(%rip), %rsi      # 0x10bad
callq 0x3dd0
jmp 0x46b3
movq 0xb8(%rsp), %rax
movq 0x10(%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x22f0
jmp 0x46ca
jmp 0x4776
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c0(%rsp)
movl %eax, 0x1bc(%rsp)
leaq 0x138(%rsp), %rdi
callq 0x21a0
jmp 0x4aa2
movq 0x78(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c0(%rsp)
movl %eax, 0x1bc(%rsp)
movl $0x4040, %esi           # imm = 0x4040
callq 0x2290
jmp 0x4aa2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c0(%rsp)
movl %eax, 0x1bc(%rsp)
leaq 0x118(%rsp), %rdi
callq 0x21a0
jmp 0x4aa2
movq 0xb8(%rsp), %rdi
leaq 0xba67(%rip), %rsi      # 0x101b9
leaq 0xc45e(%rip), %rdx      # 0x10bb7
callq 0x3cd0
jmp 0x4760
movq 0xb8(%rsp), %rax
movq 0x11859(%rip), %rcx     # 0x15fc8
movq (%rcx), %rcx
movq %rcx, 0x10(%rax)
jmp 0x4a80
leaq 0x1d0(%rsp), %rdi
callq 0x2110
movq %rax, %rdi
leaq 0xc30c(%rip), %rsi      # 0x10a9e
callq 0x2300
movq %rax, 0x50(%rsp)
jmp 0x479e
movq 0x50(%rsp), %rax
movq %rax, 0x110(%rsp)
movq 0x110(%rsp), %rax
movq %rax, 0x48(%rsp)
leaq 0xf0(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
callq 0x2120
jmp 0x47cf
movq 0x48(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
movl $0x1, %edx
callq 0x4b10
jmp 0x47e8
leaq 0xf0(%rsp), %rdi
callq 0x21a0
movq 0x110(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x2, %edx
callq 0x22f0
jmp 0x480d
movq 0x110(%rsp), %rdi
callq 0x2030
movq %rax, 0x40(%rsp)
jmp 0x4821
movq 0x40(%rsp), %rax
movq %rax, 0xe8(%rsp)
movq 0x110(%rsp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x22f0
jmp 0x4841
movq 0x110(%rsp), %rdi
callq 0x6c40
jmp 0x4850
movq 0xb8(%rsp), %rdi
callq 0x3780
jmp 0x485f
testb $0x1, 0x1ce(%rsp)
je 0x48a0
movq 0xb8(%rsp), %rdi
callq 0x3690
jmp 0x4878
jmp 0x48a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c0(%rsp)
movl %eax, 0x1bc(%rsp)
leaq 0xf0(%rsp), %rdi
callq 0x21a0
jmp 0x4aa2
movq 0xb8(%rsp), %rdi
leaq 0xc2f1(%rip), %rsi      # 0x10ba0
movl $0x2, %edx
callq 0x3b40
movq %rax, 0x38(%rsp)
jmp 0x48c0
movq 0x38(%rsp), %rax
movl %eax, %edi
callq 0x4bb0
movl %eax, 0x34(%rsp)
jmp 0x48d2
movq 0xb8(%rsp), %rax
movl 0x34(%rsp), %ecx
movl %ecx, 0x4(%rax)
leaq 0x1f0(%rsp), %rdi
callq 0x23b0
cmpq $0x0, %rax
je 0x4924
leaq 0x1f0(%rsp), %rdi
callq 0x2110
movq %rax, %rdi
movq 0x160(%rsp), %rsi
callq 0x2300
movq %rax, 0x28(%rsp)
jmp 0x4918
movq 0x28(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0x4933
movq 0x1167d(%rip), %rax     # 0x15fa8
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movq 0xb8(%rsp), %rax
movq 0x20(%rsp), %rcx
movq %rcx, 0x10(%rax)
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
leaq 0xc8(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
callq 0x2120
jmp 0x4964
movq 0x18(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
xorl %edx, %edx
callq 0x4b10
jmp 0x497a
leaq 0xc8(%rsp), %rdi
callq 0x21a0
movq 0xb8(%rsp), %rdi
leaq 0xc22d(%rip), %rsi      # 0x10bc3
xorl %eax, %eax
movl %eax, %edx
callq 0x3b40
movq %rax, 0x10(%rsp)
jmp 0x49a6
movq 0x10(%rsp), %rax
movq %rax, 0xc0(%rsp)
cmpq $0x0, 0xc0(%rsp)
jbe 0x4a0e
movq 0xc0(%rsp), %rax
cmpq 0xe8(%rsp), %rax
je 0x4a0e
movq 0xc0(%rsp), %rsi
leaq 0xc1ee(%rip), %rdi      # 0x10bcd
xorl %eax, %eax
callq 0x3450
jmp 0x49e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c0(%rsp)
movl %eax, 0x1bc(%rsp)
leaq 0xc8(%rsp), %rdi
callq 0x21a0
jmp 0x4aa2
leaq 0x139cb(%rip), %rdi     # 0x183e0
leaq 0xc17c(%rip), %rsi      # 0x10b98
xorl %eax, %eax
movl %eax, %edx
callq 0x3b40
movq %rax, 0x8(%rsp)
jmp 0x4a2c
movq 0xb8(%rsp), %rax
movq 0x8(%rsp), %rcx
movl %ecx, 0x8(%rax)
cmpl $0x0, 0x8(%rax)
je 0x4a7e
movq 0xb8(%rsp), %rcx
movl 0x8(%rcx), %eax
cmpl (%rcx), %eax
jle 0x4a7e
leaq 0x1d0(%rsp), %rdi
callq 0x2110
movq %rax, %rsi
movq 0xb8(%rsp), %rax
movl (%rax), %ecx
movl 0x8(%rax), %edx
leaq 0xc181(%rip), %rdi      # 0x10bf6
xorl %eax, %eax
callq 0x3450
jmp 0x4a7e
jmp 0x4a80
leaq 0x1d0(%rsp), %rdi
callq 0x21a0
leaq 0x1f0(%rsp), %rdi
callq 0x21a0
addq $0x228, %rsp            # imm = 0x228
retq
leaq 0x1d0(%rsp), %rdi
callq 0x21a0
leaq 0x1f0(%rsp), %rdi
callq 0x21a0
movq 0x1c0(%rsp), %rdi
callq 0x23f0
nopl (%rax)