// File: /workspace/github_cpp_makefile_star2_O2/FreeSlave[P]def2fgd/src/main.cpp
// Function: writefgd(std::ostream&, std::vector<Entity, std::allocator<Entity>> const&, FGDWriteOptions const&)
void writefgd(std::ostream& stream, const std::vector<Entity>& entities, const FGDWriteOptions& options)
{
    stream << "//generated by def2fgd " << DEF2FGD_VERSION << "\n\n";

    for (size_t i=0; i<entities.size(); ++i)
    {
        Entity entity = entities[i];
        if (entity.solid) {
            stream << "@SolidClass ";
        }
        else {
            stream << "@PointClass size(";
            stream << entity.box[0] << ' ';
            stream << entity.box[1] << ' ';
            stream << entity.box[2] << ", ";
            stream << entity.box[3] << ' ';
            stream << entity.box[4] << ' ';
            stream << entity.box[5] << ')';

            bool addOffset = options.useDefaultOffsetPatterns && needsOffset(entity.name);

            if (!addOffset) {
                for (size_t j=0; j<options.offsetPatterns.size() && !addOffset; ++j) {
                    addOffset = globMatch(entity.name.c_str(), options.offsetPatterns[j]);
                }
            }

            if (addOffset) {
                stream << " offset(0 0 " << abs(entity.box[2]) << ")";
            }

            if (entity.name == "light" || entity.name == "lightJunior") {
                stream << " iconsprite(\"sprites/light.spr\") flags(Light) ";

                if (!entity.hasKey("_color")) {
                    entity.keys.push_back(Key("_color", "weighted RGB value of light color"));
                }

            } else {
                stream << " color(" << entity.color[0] << ' ' << entity.color[1] << ' ' << entity.color[2] << ") ";

                if (options.bob) {
                    bool addBob = options.useDefaultBobPatterns && needsBob(entity.name);

                    if (!addBob) {
                        for (size_t k=0; k<options.bobPatterns.size() && !addBob; ++k) {
                            addBob = globMatch(entity.name.c_str(), options.bobPatterns[k]);
                        }
                    }

                    if (addBob) {
                        stream << "bobparms( " << options.bobparms[0] << " " << options.bobparms[1] << " " << options.bobparms[2] << " ) ";
                    }
                }

                for (std::vector<Key>::const_iterator it = entity.keys.begin(); it != entity.keys.end(); ++it)
                {
                    if (it->name == "angle" || it->name == "angles") {
                        stream << "flags(Angle) ";
                        break;
                    }
                }

                if (!entity.model.empty()) {
                    stream << "studio(\"" << entity.model << "\") ";
                } else {
                    for (size_t j=0; j<entity.keys.size(); ++j) {
                        if (entity.keys[j].name == "model" || entity.keys[j].name == "model2") {
                            stream << "studio() ";
                            break;
                        }
                    }
                }
            }
        }

        stream << "= " << entity.name;
        if (!entity.description.empty()) {
            const size_t tokenLimit = 2047;

            if (entity.description.size() > tokenLimit) {
                stream << " : \"" << entity.description.substr(0, tokenLimit) << "\"";

                size_t current = tokenLimit;
                while(current <= entity.description.size()) {
                    stream << " + \"" << entity.description.substr(current, tokenLimit) << "\"";
                    current += tokenLimit;
                }

            } else {
                stream << " : \"" << entity.description << "\"";
            }
        }
        stream << "\n";
        stream << "[\n";
        for (size_t j=0; j<entity.keys.size(); ++j)
        {
            const Key& key = entity.keys[j];
            stream << "\t" << key.name;
            if (key.name == "target") {
                stream << "(target_destination) : Target : : ";
            }
            else if (key.name == "targetname") {
                stream << "(target_source) : Name : : ";
            }
            else if (key.name == "_color") {
                stream << "(color1) : \"RGB color\" : \"1 1 0.5\" : ";
            } else if (key.name == "model" || key.name == "model2") {
                stream << "(studio) : Model : : ";
            } else {
                std::string name = key.name;
                if (!name.empty())
                    name[0] = toupper(name[0]);
                if (key.type.empty())
                    stream << "(string)";
                else
                    stream << "(" << key.type << ")";
                stream << " : " << name << " : : ";
            }

            stream << "\"" << key.description << "\"";
            stream << "\n";
        }

        bool hasspawnflags = false;
        for (size_t j=0; j<Entity::SpawnFlagNum && !hasspawnflags; ++j)
        {
            if (!entity.spawnflags[j].empty()) {
                hasspawnflags = true;
            }
        }

        if (hasspawnflags)
        {
            stream << "\tspawnflags(flags) = \n";
            stream << "\t[\n";
            for (size_t j=0; j<Entity::SpawnFlagNum; ++j)
            {
                std::string flagname = entity.spawnflags[j];
                for (size_t k=0; k<flagname.size(); ++k)
                {
                    flagname[k] = tolower(flagname[k]);
                }

                if (!flagname.empty()) {
                    stream << "\t\t" << (1 << j) << " : \"" << flagname << "\" : 0";
                    if (!entity.flagsdescriptions[j].empty()) {
                        stream << " : \"" << entity.flagsdescriptions[j] << "\"";
                    }
                    stream << '\n';
                }
            }
            stream << "\t]\n";
        }

        stream << "]\n";
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x968, %rsp            # imm = 0x968
movq %rdx, 0x8(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdi, %r15
leaq 0x69dd(%rip), %rsi      # 0xa020
callq 0x3250
leaq 0x69e9(%rip), %rsi      # 0xa038
movq %rax, %rdi
callq 0x3250
leaq 0x69de(%rip), %rsi      # 0xa03c
movq %rax, %rdi
callq 0x3250
xorl %ecx, %ecx
leaq 0x48(%rsp), %rbp
movq %rbp, %r13
movq 0x18(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rax
subq %rsi, %rax
cqto
movl $0x8a0, %edi            # imm = 0x8A0
idivq %rdi
cmpq %rax, %rcx
jae 0x4048
movq %rcx, 0x20(%rsp)
imulq $0x8a0, %rcx, %rax      # imm = 0x8A0
addq %rax, %rsi
leaq 0xc8(%rsp), %rdi
callq 0x4c5c
cmpb $0x1, 0x944(%rsp)
jne 0x36cc
movq %r15, %rdi
leaq 0x697d(%rip), %rsi      # 0xa03f
callq 0x3250
jmp 0x3bd0
movq %r15, %rdi
leaq 0x6976(%rip), %rsi      # 0xa04c
callq 0x3250
movl 0x92c(%rsp), %esi
movq %r15, %rdi
callq 0x3450
movq %rax, %rdi
pushq $0x20
popq %rsi
callq 0x32e0
movl 0x930(%rsp), %esi
movq %r15, %rdi
callq 0x3450
movq %rax, %rdi
pushq $0x20
popq %rsi
callq 0x32e0
movl 0x934(%rsp), %esi
movq %r15, %rdi
callq 0x3450
movq %rax, %rdi
leaq 0x6936(%rip), %rsi      # 0xa05e
callq 0x3250
movl 0x938(%rsp), %esi
movq %r15, %rdi
callq 0x3450
movq %rax, %rdi
pushq $0x20
popq %rsi
callq 0x32e0
movl 0x93c(%rsp), %esi
movq %r15, %rdi
callq 0x3450
movq %rax, %rdi
pushq $0x20
popq %rsi
callq 0x32e0
movl 0x940(%rsp), %esi
movq %r15, %rdi
callq 0x3450
movq %rax, %rdi
pushq $0x29
popq %rsi
callq 0x32e0
movq 0x8(%rsp), %rax
cmpb $0x1, 0xe(%rax)
jne 0x380a
leaq 0xc8(%rsp), %rdi
leaq 0x7060(%rip), %rsi      # 0xa7f9
callq 0x4c2d
testb %al, %al
jne 0x384b
leaq 0xc8(%rsp), %rdi
leaq 0x704a(%rip), %rsi      # 0xa7ff
callq 0x4c2d
testb %al, %al
jne 0x384b
leaq 0xc8(%rsp), %rdi
leaq 0x7036(%rip), %rsi      # 0xa807
callq 0x4c2d
testb %al, %al
jne 0x384b
leaq 0xc8(%rsp), %rdi
leaq 0x7024(%rip), %rsi      # 0xa80d
callq 0x4ddd
testb %al, %al
jne 0x384b
leaq 0xc8(%rsp), %rdi
leaq 0x7023(%rip), %rsi      # 0xa824
callq 0x4ddd
testb %al, %al
jne 0x384b
movq 0x8(%rsp), %rax
movq 0x10(%rax), %r14
movq 0x18(%rax), %r12
subq %r14, %r12
sarq $0x3, %r12
movq 0xc8(%rsp), %rbx
xorl %eax, %eax
xorl %ebp, %ebp
testb $0x1, %al
jne 0x3844
cmpq %r12, %rbp
jae 0x3844
movq (%r14,%rbp,8), %rsi
movq %rbx, %rdi
callq 0x40d0
incq %rbp
jmp 0x382a
testb $0x1, %al
movq %r13, %rbp
je 0x387f
movq %r15, %rdi
leaq 0x680c(%rip), %rsi      # 0xa061
callq 0x3250
movl 0x934(%rsp), %ecx
movl %ecx, %esi
negl %esi
cmovsl %ecx, %esi
movq %rax, %rdi
callq 0x3450
movq %rax, %rdi
leaq 0x7231(%rip), %rsi      # 0xaaab
callq 0x3250
leaq 0xc8(%rsp), %rdi
leaq 0x67e0(%rip), %rsi      # 0xa06e
callq 0x4ddd
testb %al, %al
jne 0x38b3
leaq 0xc8(%rsp), %rdi
leaq 0x67ce(%rip), %rsi      # 0xa074
callq 0x4ddd
testb %al, %al
je 0x396e
movq %r15, %rdi
leaq 0x67c3(%rip), %rsi      # 0xa080
callq 0x3250
movq %rbp, %rdi
leaq 0x67e3(%rip), %rsi      # 0xa0af
leaq 0x28(%rsp), %rdx
callq 0x4dea
leaq 0xc8(%rsp), %rdi
movq %rbp, %rsi
callq 0x6e8c
movl %eax, %ebx
movq %rbp, %rdi
callq 0x3110
testb %bl, %bl
jne 0x3bd0
leaq 0x28(%rsp), %rdi
leaq 0x67ab(%rip), %rsi      # 0xa0af
leaq 0x17(%rsp), %rdx
callq 0x4dea
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x6796(%rip), %rsi      # 0xa0b6
leaq 0x16(%rsp), %rdx
callq 0x4dea
movq %rbp, %rdi
leaq 0x28(%rsp), %rsi
movq %rbx, %rdx
callq 0x6d20
leaq 0x108(%rsp), %rdi
movq %rbp, %rsi
callq 0x51f2
movq %rbp, %rdi
callq 0x4e26
leaq 0xa8(%rsp), %rdi
callq 0x3110
leaq 0x28(%rsp), %rdi
callq 0x3110
jmp 0x3bd0
movq %r15, %rdi
leaq 0x6760(%rip), %rsi      # 0xa0d8
callq 0x3250
movl 0x920(%rsp), %esi
movq %rax, %rdi
callq 0x31c0
movq %rax, %rdi
pushq $0x20
popq %rsi
callq 0x32e0
movl 0x924(%rsp), %esi
movq %rax, %rdi
callq 0x31c0
movq %rax, %rdi
pushq $0x20
popq %rsi
callq 0x32e0
movl 0x928(%rsp), %esi
movq %rax, %rdi
callq 0x31c0
movq %rax, %rdi
leaq 0x6722(%rip), %rsi      # 0xa0ec
callq 0x3250
movq 0x8(%rsp), %rax
cmpb $0x1, 0xc(%rax)
jne 0x3add
movq 0x8(%rsp), %rax
cmpb $0x1, 0xd(%rax)
jne 0x3a31
leaq 0xc8(%rsp), %rdi
leaq 0x6e01(%rip), %rsi      # 0xa7f9
callq 0x4c2d
testb %al, %al
jne 0x3a72
leaq 0xc8(%rsp), %rdi
leaq 0x6def(%rip), %rsi      # 0xa7ff
callq 0x4c2d
testb %al, %al
jne 0x3a72
leaq 0xc8(%rsp), %rdi
leaq 0x6ddf(%rip), %rsi      # 0xa807
callq 0x4c2d
testb %al, %al
jne 0x3a72
movq 0x8(%rsp), %rax
movq 0x28(%rax), %r14
movq 0x30(%rax), %r12
subq %r14, %r12
sarq $0x3, %r12
movq 0xc8(%rsp), %rbx
xorl %eax, %eax
xorl %ebp, %ebp
testb $0x1, %al
jne 0x3a6b
cmpq %r12, %rbp
jae 0x3a6b
movq (%r14,%rbp,8), %rsi
movq %rbx, %rdi
callq 0x40d0
incq %rbp
jmp 0x3a51
testb $0x1, %al
movq %r13, %rbp
je 0x3add
movq %r15, %rdi
leaq 0x6664(%rip), %rsi      # 0xa0e0
callq 0x3250
movq 0x8(%rsp), %rcx
movl (%rcx), %esi
movq %rax, %rdi
callq 0x3450
movq %rax, %rdi
leaq 0x664f(%rip), %rsi      # 0xa0e9
callq 0x3250
movq 0x8(%rsp), %rcx
movl 0x4(%rcx), %esi
movq %rax, %rdi
callq 0x3450
movq %rax, %rdi
leaq 0x6630(%rip), %rsi      # 0xa0e9
callq 0x3250
movq 0x8(%rsp), %rcx
movl 0x8(%rcx), %esi
movq %rax, %rdi
callq 0x3450
movq %rax, %rdi
leaq 0x6613(%rip), %rsi      # 0xa0eb
callq 0x3250
movq 0x108(%rsp), %rbx
cmpq 0x110(%rsp), %rbx
je 0x3b28
movq %rbx, %rdi
leaq 0x65f6(%rip), %rsi      # 0xa0ef
callq 0x4ddd
testb %al, %al
jne 0x3b19
movq %rbx, %rdi
leaq 0x65e9(%rip), %rsi      # 0xa0f5
callq 0x4ddd
addq $0x60, %rbx
testb %al, %al
je 0x3ae5
movq %r15, %rdi
leaq 0x65d9(%rip), %rsi      # 0xa0fc
callq 0x3250
cmpq $0x0, 0x950(%rsp)
je 0x3b63
movq %r15, %rdi
leaq 0x65cd(%rip), %rsi      # 0xa10a
callq 0x3250
movq %rax, %rdi
leaq 0x948(%rsp), %rsi
callq 0x3240
movq %rax, %rdi
leaq 0x65b7(%rip), %rsi      # 0xa113
callq 0x3250
jmp 0x3bd0
pushq $-0x1
popq %r14
xorl %ebx, %ebx
movq 0x108(%rsp), %rdi
movq 0x110(%rsp), %rax
subq %rdi, %rax
cqto
pushq $0x60
popq %rcx
idivq %rcx
incq %r14
cmpq %rax, %r14
jae 0x3bd0
addq %rbx, %rdi
leaq 0x6581(%rip), %rsi      # 0xa117
callq 0x4ddd
testb %al, %al
jne 0x3bc1
leaq 0x60(%rbx), %r12
addq 0x108(%rsp), %rbx
movq %rbx, %rdi
leaq 0x6568(%rip), %rsi      # 0xa11d
callq 0x4ddd
movq %r12, %rbx
testb %al, %al
je 0x3b69
movq %r15, %rdi
leaq 0x6559(%rip), %rsi      # 0xa124
callq 0x3250
movq %r15, %rdi
leaq 0x6554(%rip), %rsi      # 0xa12e
callq 0x3250
movq %rax, %rdi
leaq 0xc8(%rsp), %rsi
callq 0x3240
movq 0xf0(%rsp), %rax
testq %rax, %rax
je 0x3ced
cmpq $0x800, %rax            # imm = 0x800
jb 0x3cbf
movq %r15, %rdi
leaq 0x651b(%rip), %rsi      # 0xa131
callq 0x3250
movq %rax, %rbx
movl $0x7ff, %ecx            # imm = 0x7FF
movq %rbp, %rdi
leaq 0xe8(%rsp), %rsi
xorl %edx, %edx
callq 0x32a0
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x3240
movq %rax, %rdi
leaq 0x64ef(%rip), %rsi      # 0xa139
callq 0x3250
movq %rbp, %rdi
callq 0x3110
movl $0x7ff, %ebx            # imm = 0x7FF
cmpq 0xf0(%rsp), %rbx
ja 0x3ced
movq %r15, %rdi
leaq 0x64c2(%rip), %rsi      # 0xa136
callq 0x3250
movq %rax, %r14
movl $0x7ff, %ecx            # imm = 0x7FF
movq %rbp, %rdi
leaq 0xe8(%rsp), %rsi
movq %rbx, %rdx
callq 0x32a0
movq %r14, %rdi
movq %rbp, %rsi
callq 0x3240
movq %rax, %rdi
leaq 0x6490(%rip), %rsi      # 0xa139
callq 0x3250
movq %rbp, %rdi
callq 0x3110
addq $0x7ff, %rbx            # imm = 0x7FF
jmp 0x3c5c
movq %r15, %rdi
leaq 0x6468(%rip), %rsi      # 0xa131
callq 0x3250
movq %rax, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x3240
movq %rax, %rdi
leaq 0x6451(%rip), %rsi      # 0xa139
callq 0x3250
movq %r15, %rdi
leaq 0x6346(%rip), %rsi      # 0xa03d
callq 0x3250
movq %r15, %rdi
leaq 0x64e3(%rip), %rsi      # 0xa1e9
callq 0x3250
pushq $0x40
popq %r14
xorl %r12d, %r12d
movq 0x108(%rsp), %rbp
movq 0x110(%rsp), %rax
subq %rbp, %rax
cqto
pushq $0x60
popq %rcx
idivq %rcx
cmpq %rax, %r12
jae 0x3ebf
movq %r15, %rdi
leaq 0x64ad(%rip), %rsi      # 0xa1ed
callq 0x3250
leaq (%r14,%rbp), %rbx
addq $-0x40, %rbx
movq %rax, %rdi
movq %rbx, %rsi
callq 0x3240
movq %rbx, %rdi
leaq 0x63d9(%rip), %rsi      # 0xa13b
callq 0x4ddd
leaq 0x63d4(%rip), %rsi      # 0xa142
testb %al, %al
jne 0x3dda
movq %rbx, %rdi
leaq 0x63e9(%rip), %rsi      # 0xa165
callq 0x4ddd
leaq 0x63e8(%rip), %rsi      # 0xa170
testb %al, %al
jne 0x3dda
movq %rbx, %rdi
leaq 0x6319(%rip), %rsi      # 0xa0af
callq 0x4ddd
leaq 0x63ea(%rip), %rsi      # 0xa18c
testb %al, %al
jne 0x3dda
movq %rbx, %rdi
leaq 0x6367(%rip), %rsi      # 0xa117
callq 0x4ddd
leaq 0x63f6(%rip), %rsi      # 0xa1b2
testb %al, %al
jne 0x3dda
movq %rbx, %rdi
leaq 0x6353(%rip), %rsi      # 0xa11d
callq 0x4ddd
leaq 0x63dc(%rip), %rsi      # 0xa1b2
testb %al, %al
je 0x3e2b
movq %r15, %rdi
callq 0x3250
movq %r15, %rdi
leaq 0x634d(%rip), %rsi      # 0xa139
callq 0x3250
leaq (%r14,%rbp), %rsi
addq $-0x20, %rsi
movq %rax, %rdi
callq 0x3240
movq %rax, %rdi
leaq 0x632e(%rip), %rsi      # 0xa139
callq 0x3250
movq %r15, %rdi
leaq 0x6223(%rip), %rsi      # 0xa03d
callq 0x3250
incq %r12
addq $0x60, %r14
jmp 0x3d12
movq %r13, %rdi
movq %rbx, %rsi
callq 0x3340
cmpq $0x0, 0x50(%rsp)
je 0x3e4d
movq 0x48(%rsp), %rbx
movsbl (%rbx), %edi
callq 0x3480
movb %al, (%rbx)
cmpq $0x0, 0x8(%rbp,%r14)
movq %r15, %rax
leaq 0x636b(%rip), %rsi      # 0xa1c8
je 0x3e81
movq %r15, %rdi
leaq 0x61f3(%rip), %rsi      # 0xa05c
callq 0x3250
leaq (%r14,%rbp), %rsi
movq %rax, %rdi
callq 0x3240
leaq 0x6c2a(%rip), %rsi      # 0xaaab
movq %rax, %rdi
callq 0x3250
movq %r15, %rdi
leaq 0x631b(%rip), %rsi      # 0xa1ae
callq 0x3250
movq %rax, %rdi
movq %r13, %rsi
callq 0x3240
movq %rax, %rdi
leaq 0x62d9(%rip), %rsi      # 0xa186
callq 0x3250
movq %r13, %rdi
callq 0x3110
jmp 0x3de2
xorl %eax, %eax
leaq 0x128(%rsp), %rcx
xorl %edx, %edx
movq %r13, %rbp
cmpq $0x1f, %rdx
ja 0x3ee8
testb $0x1, %al
jne 0x3ee8
cmpq $0x0, (%rcx)
setne %al
incq %rdx
addq $0x20, %rcx
jmp 0x3ece
testb $0x1, %al
je 0x401f
movq %r15, %rdi
leaq 0x62d7(%rip), %rsi      # 0xa1d1
callq 0x3250
movq %r15, %rdi
leaq 0x62df(%rip), %rsi      # 0xa1e8
callq 0x3250
xorl %r14d, %r14d
cmpq $0x20, %r14
je 0x4010
movq %r14, %rbx
shlq $0x5, %rbx
leaq 0x120(%rsp), %rax
leaq (%rax,%rbx), %rsi
movq %rbp, %rdi
callq 0x3340
xorl %r12d, %r12d
movq 0x50(%rsp), %rax
cmpq %rax, %r12
jae 0x3f60
movq 0x48(%rsp), %rbp
movsbl (%rbp,%r12), %edi
callq 0x3390
movb %al, (%rbp,%r12)
movq %r13, %rbp
incq %r12
jmp 0x3f39
testq %rax, %rax
je 0x4000
movq %r15, %rdi
leaq 0x6279(%rip), %rsi      # 0xa1ec
callq 0x3250
pushq $0x1
popq %rsi
movl %r14d, %ecx
shll %cl, %esi
movq %rax, %rdi
callq 0x3450
movq %rax, %rdi
leaq 0x619f(%rip), %rsi      # 0xa131
callq 0x3250
movq %rax, %rdi
movq %rbp, %rsi
callq 0x3240
movq %rax, %rdi
leaq 0x6243(%rip), %rsi      # 0xa1ef
callq 0x3250
leaq 0x520(%rsp), %rax
cmpq $0x0, 0x8(%rax,%rbx)
je 0x3ff5
movq %r15, %rdi
leaq 0x6166(%rip), %rsi      # 0xa131
callq 0x3250
leaq 0x520(%rsp), %rcx
addq %rcx, %rbx
movq %rax, %rdi
movq %rbx, %rsi
callq 0x3240
movq %rax, %rdi
leaq 0x6149(%rip), %rsi      # 0xa139
callq 0x3250
movq %r15, %rdi
pushq $0xa
popq %rsi
callq 0x32e0
movq %rbp, %rdi
callq 0x3110
incq %r14
jmp 0x3f11
movq %r15, %rdi
leaq 0x61db(%rip), %rsi      # 0xa1f5
callq 0x3250
movq %r15, %rdi
leaq 0x61cd(%rip), %rsi      # 0xa1f6
callq 0x3250
leaq 0xc8(%rsp), %rdi
callq 0x4e46
movq 0x20(%rsp), %rcx
incq %rcx
jmp 0x3670
addq $0x968, %rsp            # imm = 0x968
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x40b8
jmp 0x40b8
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x4e26
jmp 0x4070
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x3110
jmp 0x4082
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
jmp 0x40b1
jmp 0x40b8
jmp 0x40b8
jmp 0x40b8
jmp 0x40b8
jmp 0x40a9
jmp 0x40a9
jmp 0x40b8
jmp 0x40b8
jmp 0x40b8
jmp 0x40b8
jmp 0x40a9
jmp 0x40b8
jmp 0x40b8
jmp 0x40b8
jmp 0x40b8
jmp 0x40a9
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x3110
jmp 0x40bb
movq %rax, %rbx
leaq 0xc8(%rsp), %rdi
callq 0x4e46
movq %rbx, %rdi
callq 0x3460