// File: /workspace/github_cpp_makefile_star2_O3/ivan-tkatchev[P]makerpm/makerpm.cc
// Function: make_index2[abi:cxx11](rpmprops_t const&)
std::string make_index2(const rpmprops_t& props) {

    Store store;

    // Add package fields.

    uint32_t totsize = 0;
    uint64_t totlongsize = 0;

    //store.add(rpm::TAG_HEADERI18NTABLE, props.locale);

    store.add(rpm::TAG_NAME, props.name, false);
    store.add(rpm::TAG_VERSION, props.version, false);
    store.add(rpm::TAG_RELEASE, props.release, false);

    store.add(rpm::TAG_SUMMARY, props.summary, true);
    store.add(rpm::TAG_DESCRIPTION, props.description, true);
    store.add(rpm::TAG_BUILDHOST, props.buildhost, false);
    store.add(rpm::TAG_BUILDTIME, props.buildtime);
    store.add(rpm::TAG_LICENSE, props.license, false);
    store.add(rpm::TAG_PACKAGER, props.packager, false);
    store.add(rpm::TAG_GROUP, props.group, true);
    store.add(rpm::TAG_URL, props.url, false);
    store.add(rpm::TAG_OS, props.os, false);
    store.add(rpm::TAG_ARCH, props.arch, false);
    store.add(rpm::TAG_RHNPLATFORM, props.arch, false);
    store.add(rpm::TAG_PAYLOADFORMAT, props.payload_format, false);
    store.add(rpm::TAG_PAYLOADCOMPRESSOR, props.payload_compressor, false);
    store.add(rpm::TAG_PLATFORM, props.platform, false);

    // for details, see yum's rpmUtils/miscutils.py, function pkgTupleFromHeader(),
    // or createrepo's createrepo/yumbased.py, method CreateRepoPackage.isSrpm()
    if (!props.sourcerpm.empty()) {
        store.add(rpm::TAG_SOURCERPM, props.sourcerpm, false);
    }
    // unlike yum or createrepo, rpm itself relies on the SOURCEPACKAGE tag existence[1]
    // [1] rpm's lib/rpminstall.c, function rpmInstall()
    if(props.arch == "src")
        store.add(rpm::TAG_SOURCEPACKAGE, (uint32_t)1);

    store.add(rpm::TAG_OPTFLAGS, props.optflags, false);
    store.add(rpm::TAG_RPMVERSION, props.rpmversion, false);

    store.add(rpm::TAG_PREIN, props.prein.code, false);
    store.add(rpm::TAG_PREINPROG, props.prein.prog, false);
    store.add(rpm::TAG_POSTIN, props.postin.code, false);
    store.add(rpm::TAG_POSTINPROG, props.postin.prog, false);
    store.add(rpm::TAG_PREUN, props.preun.code, false);
    store.add(rpm::TAG_PREUNPROG, props.preun.prog, false);
    store.add(rpm::TAG_POSTUN, props.postun.code, false);
    store.add(rpm::TAG_POSTUNPROG, props.postun.prog, false);

    std::vector<std::string> providename;
    std::vector<uint32_t> provideflags;
    std::vector<std::string> provideversion;

    for (const auto& v : props.provide) {
        providename.push_back(v.name);
        provideflags.push_back(v.flags);
        provideversion.push_back(v.version);
    }

    store.add(rpm::TAG_PROVIDENAME, providename);
    store.add(rpm::TAG_PROVIDEVERSION, provideversion);
    store.add(rpm::TAG_PROVIDEFLAGS, provideflags);

    std::vector<std::string> requirename;
    std::vector<uint32_t> requireflags;
    std::vector<std::string> requireversion;

    for (const auto& v : props.require) {
        requirename.push_back(v.name);
        requireflags.push_back(v.flags);
        requireversion.push_back(v.version);
    }

    store.add(rpm::TAG_REQUIRENAME, requirename);
    store.add(rpm::TAG_REQUIREVERSION, requireversion);
    store.add(rpm::TAG_REQUIREFLAGS, requireflags);

    std::vector<std::string> conflictname;
    std::vector<uint32_t> conflictflags;
    std::vector<std::string> conflictversion;

    for (const auto& v : props.conflict) {
        conflictname.push_back(v.name);
        conflictflags.push_back(v.flags);
        conflictversion.push_back(v.version);
    }

    store.add(rpm::TAG_CONFLICTNAME, conflictname);
    store.add(rpm::TAG_CONFLICTVERSION, conflictversion);
    store.add(rpm::TAG_CONFLICTFLAGS, conflictflags);

    std::vector<std::string> obsoletename;
    std::vector<uint32_t> obsoleteflags;
    std::vector<std::string> obsoleteversion;

    for (const auto& v : props.obsolete) {
        obsoletename.push_back(v.name);
        obsoleteflags.push_back(v.flags);
        obsoleteversion.push_back(v.version);
    }

    store.add(rpm::TAG_OBSOLETENAME, obsoletename);
    store.add(rpm::TAG_OBSOLETEVERSION, obsoleteversion);
    store.add(rpm::TAG_OBSOLETEFLAGS, obsoleteflags);


    bool files_longsize = false;

    for (const auto& f : props.files) {

        if (f.longsize > 0) {
            files_longsize = true;
        }
    }

    std::vector<uint32_t> size;
    std::vector<uint64_t> longsize;
    std::vector<uint16_t> mode;
    std::vector<uint16_t> rdev;
    std::vector<uint32_t> mtime;
    std::vector<std::string> digest;
    std::vector<std::string> linkto;
    std::vector<uint32_t> flags;
    std::vector<std::string> user;
    std::vector<std::string> group;
    std::vector<uint32_t> verifyflags;
    std::vector<uint32_t> device;
    std::vector<uint32_t> inode;

    std::vector<std::string> basename;
    std::vector<uint32_t> dirindex;

    std::map<std::string, uint32_t> dirindex_map;

    std::vector<std::string> dirname;

    for (const auto& f : props.files) {

        if (files_longsize) {
            longsize.push_back(f.longsize);
            totlongsize += f.longsize;

        } else {
            size.push_back(f.size);
            totsize += f.size;
        }

        mode.push_back(f.mode);
        rdev.push_back(f.rdev);
        mtime.push_back(f.mtime);
        
        digest.push_back(f.digest);

        linkto.push_back(f.linkto);
        flags.push_back(f.flags);
        user.push_back(f.username);
        group.push_back(f.groupname);
        verifyflags.push_back(f.verifyflags);
        device.push_back(f.device);
        inode.push_back(f.inode);

        const std::string& fname = f.fname;
        size_t slash = fname.find_last_of('/');

        std::string base = fname;
        std::string dir;

        if (slash != std::string::npos) {
            base = fname.substr(slash+1);
            dir = fname.substr(1, slash);
        }

        auto dim = dirindex_map.find(dir);

        if (dim == dirindex_map.end()) {
            dim = dirindex_map.insert(dirindex_map.end(), std::make_pair(dir, dirindex_map.size()));
            dirname.push_back(dir);
        }

        basename.push_back(base);
        dirindex.push_back(dim->second);
    }

    store.add(rpm::TAG_BASENAMES, basename);
    store.add(rpm::TAG_DIRINDEXES, dirindex);
    store.add(rpm::TAG_DIRNAMES, dirname);
    store.add(rpm::TAG_LONGFILESIZES, longsize);
    store.add(rpm::TAG_FILESIZES, size);
    store.add(rpm::TAG_FILEMODES, mode);
    store.add(rpm::TAG_FILERDEVS, rdev);
    store.add(rpm::TAG_FILEMTIMES, mtime);
    store.add(rpm::TAG_FILEDIGESTS, digest);
    store.add(rpm::TAG_FILELINKTOS, linkto);
    store.add(rpm::TAG_FILEFLAGS, flags);
    store.add(rpm::TAG_FILEUSERNAME, user);
    store.add(rpm::TAG_FILEGROUPNAME, group);
    store.add(rpm::TAG_FILEVERIFYFLAGS, verifyflags);
    store.add(rpm::TAG_FILEDEVICES, device);
    store.add(rpm::TAG_FILEINODES, inode);

    if (totlongsize > 0) {
        store.add(rpm::TAG_LONGSIZE, totlongsize);
    } else {
        store.add(rpm::TAG_SIZE, totsize);
    }

    return store.str(rpm::TAG_HEADERIMMUTABLE);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x478, %rsp            # imm = 0x478
movq %rsi, %r14
movq %rdi, 0x440(%rsp)
leaq 0x20(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x40(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq %rax, 0x10(%rcx)
leaq 0x10(%rsp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x20(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x3e9, %esi            # imm = 0x3E9
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x40(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x3ea, %esi            # imm = 0x3EA
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x60(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x3ec, %esi            # imm = 0x3EC
movl $0x1, %ecx
callq 0x13ed4
leaq 0x80(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x3ed, %esi            # imm = 0x3ED
movl $0x1, %ecx
callq 0x13ed4
leaq 0xa8(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x3ef, %esi            # imm = 0x3EF
xorl %ecx, %ecx
callq 0x13ed4
movl 0xa0(%r14), %edx
leaq 0x10(%rsp), %rdi
movl $0x3ee, %esi            # imm = 0x3EE
callq 0x13f3a
leaq 0xc8(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x3f6, %esi            # imm = 0x3F6
xorl %ecx, %ecx
callq 0x13ed4
leaq 0xe8(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x3f7, %esi            # imm = 0x3F7
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x108(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x3f8, %esi            # imm = 0x3F8
movl $0x1, %ecx
callq 0x13ed4
leaq 0x128(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x3fc, %esi            # imm = 0x3FC
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x148(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x3fd, %esi            # imm = 0x3FD
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x168(%r14), %rbx
leaq 0x10(%rsp), %rdi
movl $0x3fe, %esi            # imm = 0x3FE
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x10(%rsp), %rdi
movl $0x46b, %esi            # imm = 0x46B
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x188(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x464, %esi            # imm = 0x464
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x1a8(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x465, %esi            # imm = 0x465
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x1e8(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x46c, %esi            # imm = 0x46C
xorl %ecx, %ecx
callq 0x13ed4
cmpq $0x0, 0x230(%r14)
je 0x10e9d
leaq 0x228(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x414, %esi            # imm = 0x414
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x9ffe(%rip), %rsi      # 0x1aea2
movq %rbx, %rdi
callq 0x3510
testl %eax, %eax
jne 0x10ec4
leaq 0x10(%rsp), %rdi
movl $0x452, %esi            # imm = 0x452
movl $0x1, %edx
callq 0x13f3a
leaq 0x208(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x462, %esi            # imm = 0x462
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x248(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x428, %esi            # imm = 0x428
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x2c8(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x3ff, %esi            # imm = 0x3FF
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x2a8(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x43d, %esi            # imm = 0x43D
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x308(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x400, %esi            # imm = 0x400
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x2e8(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x43e, %esi            # imm = 0x43E
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x348(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x401, %esi            # imm = 0x401
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x328(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x43f, %esi            # imm = 0x43F
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x388(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x402, %esi            # imm = 0x402
xorl %ecx, %ecx
callq 0x13ed4
leaq 0x368(%r14), %rdx
leaq 0x10(%rsp), %rdi
movl $0x440, %esi            # imm = 0x440
xorl %ecx, %ecx
callq 0x13ed4
xorps %xmm0, %xmm0
movaps %xmm0, 0x420(%rsp)
xorl %eax, %eax
movq %rax, 0x430(%rsp)
movq %rax, 0x230(%rsp)
movaps %xmm0, 0x220(%rsp)
movq %rax, 0x410(%rsp)
movaps %xmm0, 0x400(%rsp)
movq 0x3a8(%r14), %rbx
movq %r14, 0x8(%rsp)
movq 0x3b0(%r14), %r14
cmpq %r14, %rbx
je 0x11077
addq $0x20, %rbx
leaq 0x420(%rsp), %r15
leaq 0x220(%rsp), %r12
leaq 0x400(%rsp), %r13
leaq -0x20(%rbx), %rbp
movq %r15, %rdi
movq %rbp, %rsi
callq 0x13fb2
movq 0x228(%rsp), %rsi
cmpq 0x230(%rsp), %rsi
je 0x11050
movl (%rbx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x228(%rsp)
jmp 0x1105b
movq %r12, %rdi
movq %rbx, %rdx
callq 0x15a28
addq $0x28, %rbp
movq %r13, %rdi
movq %rbp, %rsi
callq 0x13fb2
addq $0x48, %rbx
addq $0x20, %rbp
cmpq %r14, %rbp
jne 0x1101d
leaq 0x10(%rsp), %rdi
leaq 0x420(%rsp), %rdx
movl $0x417, %esi            # imm = 0x417
callq 0x13ff0
leaq 0x10(%rsp), %rdi
leaq 0x400(%rsp), %rdx
movl $0x459, %esi            # imm = 0x459
callq 0x13ff0
leaq 0x10(%rsp), %rdi
leaq 0x220(%rsp), %rdx
movl $0x458, %esi            # imm = 0x458
callq 0x14082
xorps %xmm0, %xmm0
movaps %xmm0, 0x3e0(%rsp)
xorl %eax, %eax
movq %rax, 0x3f0(%rsp)
movq %rax, 0x210(%rsp)
movaps %xmm0, 0x200(%rsp)
movq %rax, 0x3d0(%rsp)
movaps %xmm0, 0x3c0(%rsp)
movq 0x8(%rsp), %rax
movq 0x3c0(%rax), %rbx
movq 0x3c8(%rax), %r14
cmpq %r14, %rbx
je 0x1117f
addq $0x20, %rbx
leaq 0x3e0(%rsp), %r15
leaq 0x200(%rsp), %r12
leaq 0x3c0(%rsp), %r13
leaq -0x20(%rbx), %rbp
movq %r15, %rdi
movq %rbp, %rsi
callq 0x13fb2
movq 0x208(%rsp), %rsi
cmpq 0x210(%rsp), %rsi
je 0x11158
movl (%rbx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x208(%rsp)
jmp 0x11163
movq %r12, %rdi
movq %rbx, %rdx
callq 0x15a28
addq $0x28, %rbp
movq %r13, %rdi
movq %rbp, %rsi
callq 0x13fb2
addq $0x48, %rbx
addq $0x20, %rbp
cmpq %r14, %rbp
jne 0x11125
leaq 0x10(%rsp), %rdi
leaq 0x3e0(%rsp), %rdx
movl $0x419, %esi            # imm = 0x419
callq 0x13ff0
leaq 0x10(%rsp), %rdi
leaq 0x3c0(%rsp), %rdx
movl $0x41a, %esi            # imm = 0x41A
callq 0x13ff0
leaq 0x10(%rsp), %rdi
leaq 0x200(%rsp), %rdx
movl $0x418, %esi            # imm = 0x418
callq 0x14082
xorps %xmm0, %xmm0
movaps %xmm0, 0x3a0(%rsp)
xorl %eax, %eax
movq %rax, 0x3b0(%rsp)
movq %rax, 0x1f0(%rsp)
movaps %xmm0, 0x1e0(%rsp)
movq %rax, 0x390(%rsp)
movaps %xmm0, 0x380(%rsp)
movq 0x8(%rsp), %rax
movq 0x3d8(%rax), %rbx
movq 0x3e0(%rax), %r14
cmpq %r14, %rbx
je 0x11287
addq $0x20, %rbx
leaq 0x3a0(%rsp), %r15
leaq 0x1e0(%rsp), %r12
leaq 0x380(%rsp), %r13
leaq -0x20(%rbx), %rbp
movq %r15, %rdi
movq %rbp, %rsi
callq 0x13fb2
movq 0x1e8(%rsp), %rsi
cmpq 0x1f0(%rsp), %rsi
je 0x11260
movl (%rbx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x1e8(%rsp)
jmp 0x1126b
movq %r12, %rdi
movq %rbx, %rdx
callq 0x15a28
addq $0x28, %rbp
movq %r13, %rdi
movq %rbp, %rsi
callq 0x13fb2
addq $0x48, %rbx
addq $0x20, %rbp
cmpq %r14, %rbp
jne 0x1122d
leaq 0x10(%rsp), %rdi
leaq 0x3a0(%rsp), %rdx
movl $0x41e, %esi            # imm = 0x41E
callq 0x13ff0
leaq 0x10(%rsp), %rdi
leaq 0x380(%rsp), %rdx
movl $0x41f, %esi            # imm = 0x41F
callq 0x13ff0
leaq 0x10(%rsp), %rdi
leaq 0x1e0(%rsp), %rdx
movl $0x41d, %esi            # imm = 0x41D
callq 0x14082
xorps %xmm0, %xmm0
movaps %xmm0, 0x360(%rsp)
xorl %eax, %eax
movq %rax, 0x370(%rsp)
movq %rax, 0x1d0(%rsp)
movaps %xmm0, 0x1c0(%rsp)
movq %rax, 0x350(%rsp)
movaps %xmm0, 0x340(%rsp)
movq 0x8(%rsp), %rax
movq 0x3f0(%rax), %rbx
movq 0x3f8(%rax), %r14
cmpq %r14, %rbx
je 0x1138f
addq $0x20, %rbx
leaq 0x360(%rsp), %r15
leaq 0x1c0(%rsp), %r12
leaq 0x340(%rsp), %r13
leaq -0x20(%rbx), %rbp
movq %r15, %rdi
movq %rbp, %rsi
callq 0x13fb2
movq 0x1c8(%rsp), %rsi
cmpq 0x1d0(%rsp), %rsi
je 0x11368
movl (%rbx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x1c8(%rsp)
jmp 0x11373
movq %r12, %rdi
movq %rbx, %rdx
callq 0x15a28
addq $0x28, %rbp
movq %r13, %rdi
movq %rbp, %rsi
callq 0x13fb2
addq $0x48, %rbx
addq $0x20, %rbp
cmpq %r14, %rbp
jne 0x11335
leaq 0x10(%rsp), %rdi
leaq 0x360(%rsp), %rdx
movl $0x442, %esi            # imm = 0x442
callq 0x13ff0
leaq 0x10(%rsp), %rdi
leaq 0x340(%rsp), %rdx
movl $0x45b, %esi            # imm = 0x45B
callq 0x13ff0
leaq 0x10(%rsp), %rdi
leaq 0x1c0(%rsp), %rdx
movl $0x45a, %esi            # imm = 0x45A
callq 0x14082
movq 0x8(%rsp), %rax
movq 0x408(%rax), %r12
movq 0x410(%rax), %r14
xorl %edx, %edx
xorl %ebp, %ebp
cmpq %r14, %r12
je 0x11409
movq %r12, %rax
cmpq $0x0, 0x8(%rax)
setne %cl
orb %cl, %bpl
addq $0xd0, %rax
cmpq %r14, %rax
jne 0x113f3
xorps %xmm0, %xmm0
movaps %xmm0, 0x1a0(%rsp)
movq %rdx, 0x1b0(%rsp)
movq %rdx, 0x190(%rsp)
movaps %xmm0, 0x180(%rsp)
movq %rdx, 0x170(%rsp)
movaps %xmm0, 0x160(%rsp)
movq %rdx, 0x150(%rsp)
movaps %xmm0, 0x140(%rsp)
movq %rdx, 0x130(%rsp)
movaps %xmm0, 0x120(%rsp)
movq %rdx, 0x330(%rsp)
movaps %xmm0, 0x320(%rsp)
movq %rdx, 0x310(%rsp)
movaps %xmm0, 0x300(%rsp)
movq %rdx, 0x110(%rsp)
movaps %xmm0, 0x100(%rsp)
movq %rdx, 0x2f0(%rsp)
movaps %xmm0, 0x2e0(%rsp)
movq %rdx, 0x2d0(%rsp)
movaps %xmm0, 0x2c0(%rsp)
movq %rdx, 0xf0(%rsp)
movaps %xmm0, 0xe0(%rsp)
movq %rdx, 0xd0(%rsp)
movaps %xmm0, 0xc0(%rsp)
movq %rdx, 0xb0(%rsp)
movaps %xmm0, 0xa0(%rsp)
movq %rdx, 0x2b0(%rsp)
movaps %xmm0, 0x2a0(%rsp)
movq %rdx, 0x90(%rsp)
movaps %xmm0, 0x80(%rsp)
leaq 0x450(%rsp), %rax
movl $0x0, (%rax)
movq %rdx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rdx, 0x20(%rax)
movq $0x0, 0x8(%rsp)
movq %rdx, 0x290(%rsp)
movaps %xmm0, 0x280(%rsp)
movl $0x0, %eax
movq %rax, 0x58(%rsp)
cmpq %r14, %r12
je 0x119d6
movq $0x0, 0x8(%rsp)
leaq 0x238(%rsp), %r13
movq $0x0, 0x58(%rsp)
testb $0x1, %bpl
je 0x11591
leaq 0x8(%r12), %rbx
movq 0x188(%rsp), %rsi
cmpq 0x190(%rsp), %rsi
je 0x115b7
movq (%rbx), %rax
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x188(%rsp)
jmp 0x115c7
movq 0x1a8(%rsp), %rsi
cmpq 0x1b0(%rsp), %rsi
je 0x115d6
movl (%r12), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x1a8(%rsp)
jmp 0x115e6
leaq 0x180(%rsp), %rdi
movq %rbx, %rdx
callq 0x15b5c
movq 0x58(%rsp), %rax
addq (%rbx), %rax
movq %rax, 0x58(%rsp)
jmp 0x115f4
leaq 0x1a0(%rsp), %rdi
movq %r12, %rdx
callq 0x15a28
movq 0x8(%rsp), %rax
addl (%r12), %eax
movq %rax, 0x8(%rsp)
leaq 0x10(%r12), %rdx
movq 0x168(%rsp), %rsi
cmpq 0x170(%rsp), %rsi
je 0x1161f
movzwl (%rdx), %eax
movw %ax, (%rsi)
addq $0x2, %rsi
movq %rsi, 0x168(%rsp)
jmp 0x1162c
leaq 0x160(%rsp), %rdi
callq 0x15c92
leaq 0x12(%r12), %rdx
movq 0x148(%rsp), %rsi
cmpq 0x150(%rsp), %rsi
je 0x11657
movzwl (%rdx), %eax
movw %ax, (%rsi)
addq $0x2, %rsi
movq %rsi, 0x148(%rsp)
jmp 0x11664
leaq 0x140(%rsp), %rdi
callq 0x15c92
leaq 0x14(%r12), %rdx
movq 0x128(%rsp), %rsi
cmpq 0x130(%rsp), %rsi
je 0x1168d
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x128(%rsp)
jmp 0x1169a
leaq 0x120(%rsp), %rdi
callq 0x15a28
leaq 0x18(%r12), %rsi
leaq 0x320(%rsp), %rdi
callq 0x13fb2
leaq 0x38(%r12), %rsi
leaq 0x300(%rsp), %rdi
callq 0x13fb2
leaq 0x58(%r12), %rdx
movq 0x108(%rsp), %rsi
cmpq 0x110(%rsp), %rsi
je 0x116e7
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x108(%rsp)
jmp 0x116f4
leaq 0x100(%rsp), %rdi
callq 0x15a28
leaq 0x60(%r12), %rsi
leaq 0x2e0(%rsp), %rdi
callq 0x13fb2
leaq 0x80(%r12), %rsi
leaq 0x2c0(%rsp), %rdi
callq 0x13fb2
leaq 0xa0(%r12), %rdx
movq 0xe8(%rsp), %rsi
cmpq 0xf0(%rsp), %rsi
je 0x11747
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xe8(%rsp)
jmp 0x11754
leaq 0xe0(%rsp), %rdi
callq 0x15a28
leaq 0xa4(%r12), %rdx
movq 0xc8(%rsp), %rsi
cmpq 0xd0(%rsp), %rsi
je 0x11780
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xc8(%rsp)
jmp 0x1178d
leaq 0xc0(%rsp), %rdi
callq 0x15a28
leaq 0xa8(%r12), %rdx
movq 0xa8(%rsp), %rsi
cmpq 0xb0(%rsp), %rsi
je 0x117b9
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xa8(%rsp)
jmp 0x117c6
leaq 0xa0(%rsp), %rdi
callq 0x15a28
leaq 0xb0(%r12), %r15
movq %r15, %rdi
movl $0x2f, %esi
movq $-0x1, %rdx
callq 0x3260
movq %rax, %rbx
leaq 0x270(%rsp), %rax
movq %rax, 0x260(%rsp)
movq 0xb0(%r12), %rsi
movq 0xb8(%r12), %rdx
addq %rsi, %rdx
leaq 0x260(%rsp), %rdi
callq 0x153fa
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq $0x0, 0x68(%rsp)
movb $0x0, 0x70(%rsp)
cmpq $-0x1, %rbx
je 0x118ad
leaq 0x1(%rbx), %rdx
movq %r13, %rdi
movq %r15, %rsi
movq $-0x1, %rcx
callq 0x3590
leaq 0x260(%rsp), %rdi
movq %r13, %rsi
callq 0x32e0
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x11873
callq 0x32f0
movl $0x1, %edx
movq %r13, %rdi
movq %r15, %rsi
movq %rbx, %rcx
callq 0x3590
leaq 0x60(%rsp), %rdi
movq %r13, %rsi
callq 0x32e0
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x118ad
callq 0x32f0
leaq 0x448(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x15dc4
movq %rax, %rbx
leaq 0x450(%rsp), %rax
cmpq %rax, %rbx
jne 0x1194b
movq 0x470(%rsp), %rbx
leaq 0x248(%rsp), %rax
movq %rax, 0x238(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x153fa
movq %rbx, 0x258(%rsp)
leaq 0x448(%rsp), %rdi
leaq 0x450(%rsp), %rsi
movq %r13, %rdx
callq 0x15e4e
movq %rax, %rbx
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x11939
callq 0x32f0
leaq 0x280(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x13fb2
leaq 0x2a0(%rsp), %rdi
leaq 0x260(%rsp), %rsi
callq 0x13fb2
addq $0x40, %rbx
movq 0x88(%rsp), %rsi
cmpq 0x90(%rsp), %rsi
je 0x11988
movl (%rbx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x88(%rsp)
jmp 0x11998
leaq 0x80(%rsp), %rdi
movq %rbx, %rdx
callq 0x15a28
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x119ac
callq 0x32f0
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x119c6
callq 0x32f0
addq $0xd0, %r12
cmpq %r14, %r12
jne 0x11560
leaq 0x10(%rsp), %rdi
leaq 0x2a0(%rsp), %rdx
movl $0x45d, %esi            # imm = 0x45D
callq 0x13ff0
movq 0x440(%rsp), %rbx
leaq 0x10(%rsp), %rdi
leaq 0x80(%rsp), %rdx
movl $0x45c, %esi            # imm = 0x45C
callq 0x14082
leaq 0x10(%rsp), %rdi
leaq 0x280(%rsp), %rdx
movl $0x45e, %esi            # imm = 0x45E
callq 0x13ff0
leaq 0x10(%rsp), %rdi
leaq 0x180(%rsp), %rdx
movl $0x1390, %esi           # imm = 0x1390
callq 0x14124
leaq 0x10(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
movl $0x404, %esi            # imm = 0x404
callq 0x14082
leaq 0x10(%rsp), %rdi
leaq 0x160(%rsp), %rdx
movl $0x406, %esi            # imm = 0x406
callq 0x141c2
leaq 0x10(%rsp), %rdi
leaq 0x140(%rsp), %rdx
movl $0x409, %esi            # imm = 0x409
callq 0x141c2
leaq 0x10(%rsp), %rdi
leaq 0x120(%rsp), %rdx
movl $0x40a, %esi            # imm = 0x40A
callq 0x14082
leaq 0x10(%rsp), %rdi
leaq 0x320(%rsp), %rdx
movl $0x40b, %esi            # imm = 0x40B
callq 0x13ff0
leaq 0x10(%rsp), %rdi
leaq 0x300(%rsp), %rdx
movl $0x40c, %esi            # imm = 0x40C
callq 0x13ff0
leaq 0x10(%rsp), %rdi
leaq 0x100(%rsp), %rdx
movl $0x40d, %esi            # imm = 0x40D
callq 0x14082
leaq 0x10(%rsp), %rdi
leaq 0x2e0(%rsp), %rdx
movl $0x40f, %esi            # imm = 0x40F
callq 0x13ff0
leaq 0x10(%rsp), %rdi
leaq 0x2c0(%rsp), %rdx
movl $0x410, %esi            # imm = 0x410
callq 0x13ff0
leaq 0x10(%rsp), %rdi
leaq 0xe0(%rsp), %rdx
movl $0x415, %esi            # imm = 0x415
callq 0x14082
leaq 0x10(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
movl $0x447, %esi            # imm = 0x447
callq 0x14082
leaq 0x10(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
movl $0x448, %esi            # imm = 0x448
callq 0x14082
movq 0x58(%rsp), %rax
testq %rax, %rax
movq 0x8(%rsp), %rdx
je 0x11b71
leaq 0x10(%rsp), %rdi
movl $0x1391, %esi           # imm = 0x1391
movq %rax, %rdx
callq 0x1425a
jmp 0x11b80
leaq 0x10(%rsp), %rdi
movl $0x3f1, %esi            # imm = 0x3F1
callq 0x13f3a
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
movl $0x3f, %edx
callq 0x142c8
leaq 0x280(%rsp), %rdi
callq 0x14574
leaq 0x448(%rsp), %rdi
callq 0x1525c
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x11bbe
callq 0x32f0
leaq 0x2a0(%rsp), %rdi
callq 0x14574
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x11bdd
callq 0x32f0
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x11bef
callq 0x32f0
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0x11c01
callq 0x32f0
leaq 0x2c0(%rsp), %rdi
callq 0x14574
leaq 0x2e0(%rsp), %rdi
callq 0x14574
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x11c2d
callq 0x32f0
leaq 0x300(%rsp), %rdi
callq 0x14574
leaq 0x320(%rsp), %rdi
callq 0x14574
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0x11c59
callq 0x32f0
movq 0x140(%rsp), %rdi
testq %rdi, %rdi
je 0x11c6b
callq 0x32f0
movq 0x160(%rsp), %rdi
testq %rdi, %rdi
je 0x11c7d
callq 0x32f0
movq 0x180(%rsp), %rdi
testq %rdi, %rdi
je 0x11c8f
callq 0x32f0
movq 0x1a0(%rsp), %rdi
testq %rdi, %rdi
je 0x11ca1
callq 0x32f0
leaq 0x340(%rsp), %rdi
callq 0x14574
movq 0x1c0(%rsp), %rdi
testq %rdi, %rdi
je 0x11cc0
callq 0x32f0
leaq 0x360(%rsp), %rdi
callq 0x14574
leaq 0x380(%rsp), %rdi
callq 0x14574
movq 0x1e0(%rsp), %rdi
testq %rdi, %rdi
je 0x11cec
callq 0x32f0
leaq 0x3a0(%rsp), %rdi
callq 0x14574
leaq 0x3c0(%rsp), %rdi
callq 0x14574
movq 0x200(%rsp), %rdi
testq %rdi, %rdi
je 0x11d18
callq 0x32f0
leaq 0x3e0(%rsp), %rdi
callq 0x14574
leaq 0x400(%rsp), %rdi
callq 0x14574
movq 0x220(%rsp), %rdi
testq %rdi, %rdi
je 0x11d44
callq 0x32f0
leaq 0x420(%rsp), %rdi
callq 0x14574
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x11d65
callq 0x32f0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x11d79
callq 0x32f0
movq %rbx, %rax
addq $0x478, %rsp            # imm = 0x478
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x11dc7
jmp 0x11dcf
jmp 0x11dd7
jmp 0x11ddf
movq %rax, %rbx
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x11dea
callq 0x32f0
jmp 0x11dea
jmp 0x11de7
jmp 0x11de7
jmp 0x11de7
jmp 0x11e1a
jmp 0x11e1a
movq %rax, %rbx
jmp 0x11fdc
movq %rax, %rbx
jmp 0x11f2c
movq %rax, %rbx
jmp 0x11f58
movq %rax, %rbx
jmp 0x11f84
movq %rax, %rbx
jmp 0x11fb0
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x11dfe
callq 0x32f0
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x11e1d
callq 0x32f0
jmp 0x11e1d
movq %rax, %rbx
leaq 0x280(%rsp), %rdi
callq 0x14574
leaq 0x448(%rsp), %rdi
callq 0x1525c
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x11e49
callq 0x32f0
leaq 0x2a0(%rsp), %rdi
callq 0x14574
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x11e68
callq 0x32f0
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x11e7a
callq 0x32f0
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0x11e8c
callq 0x32f0
leaq 0x2c0(%rsp), %rdi
callq 0x14574
leaq 0x2e0(%rsp), %rdi
callq 0x14574
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x11eb8
callq 0x32f0
leaq 0x300(%rsp), %rdi
callq 0x14574
leaq 0x320(%rsp), %rdi
callq 0x14574
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0x11ee4
callq 0x32f0
movq 0x140(%rsp), %rdi
testq %rdi, %rdi
je 0x11ef6
callq 0x32f0
movq 0x160(%rsp), %rdi
testq %rdi, %rdi
je 0x11f08
callq 0x32f0
movq 0x180(%rsp), %rdi
testq %rdi, %rdi
je 0x11f1a
callq 0x32f0
movq 0x1a0(%rsp), %rdi
testq %rdi, %rdi
je 0x11f2c
callq 0x32f0
leaq 0x340(%rsp), %rdi
callq 0x14574
movq 0x1c0(%rsp), %rdi
testq %rdi, %rdi
je 0x11f4b
callq 0x32f0
leaq 0x360(%rsp), %rdi
callq 0x14574
leaq 0x380(%rsp), %rdi
callq 0x14574
movq 0x1e0(%rsp), %rdi
testq %rdi, %rdi
je 0x11f77
callq 0x32f0
leaq 0x3a0(%rsp), %rdi
callq 0x14574
leaq 0x3c0(%rsp), %rdi
callq 0x14574
movq 0x200(%rsp), %rdi
testq %rdi, %rdi
je 0x11fa3
callq 0x32f0
leaq 0x3e0(%rsp), %rdi
callq 0x14574
leaq 0x400(%rsp), %rdi
callq 0x14574
movq 0x220(%rsp), %rdi
testq %rdi, %rdi
je 0x11fcf
callq 0x32f0
leaq 0x420(%rsp), %rdi
callq 0x14574
leaq 0x10(%rsp), %rdi
callq 0x145be
movq %rbx, %rdi
callq 0x3370