// File: /workspace/github_cpp_makefile_star2_O3/akitsu-sanae[P]adtpp/src/adt.cpp
// Function: operator<<(std::ostream&, Adt const&)
std::ostream& operator<<(std::ostream& os, Adt const& adt) {
    os << format("#ifndef ADT_{}_HPP", adt.struct_name) << std::endl;
    os << format("#define ADT_{}_HPP", adt.struct_name) << std::endl;

    os << std::endl;
    os << "#include <vector>" << std::endl;
    os << "#include <map>" << std::endl;
    os << "#include <string>" << std::endl;
    os << "#include <memory>" << std::endl;
    os << "// this file is generated by adt++ (https://github.com/akitsu-sanae/adtpp)" << std::endl;
    os << std::endl;

    os << format("struct {} {", adt.struct_name) << std::endl;

    // types
    os << "    enum class Type {" << std::endl;
    for (auto const& e : adt.elements)
        os << format("        {},", e.first) << std::endl;
    os << "    };" << std::endl;

    // ctors
    for (auto const& e : adt.elements) {
        os << format("    explicit {}({} const& v) :", adt.struct_name, e.second) << std::endl;
        os << format("        m_type(Type::{})", e.first) << std::endl;
        os << "    {" << std::endl;
        os << "        assign(v);" << std::endl;
        os << "    }" << std::endl;
    }


    // copy ctor
    os << format("    {}({} const& rhs) :", adt.struct_name, adt.struct_name) << std::endl;
    os << "        m_type(rhs.m_type)" << std::endl;
    os << "    {" << std::endl;
    os << "        switch (m_type) {" << std::endl;
    for (auto const& e : adt.elements) {
        os << format("        case Type::{}:", e.first) << std::endl;
        os << format("            assign(rhs.{});", convert_to_label(e.first)) << std::endl;
        os << "            break;" << std::endl;
    }
    os << "        }" << std::endl;
    os << "    }" << std::endl;

    // move ctor
    os << format("    {}({}&& rhs) :", adt.struct_name, adt.struct_name) << std::endl;
    os << "        m_type(rhs.m_type)" << std::endl;
    os << "    {" << std::endl;
    os << "        switch (m_type) {" << std::endl;
    for (auto const& e : adt.elements) {
        os << format("        case Type::{}:", e.first) << std::endl;
        os << format("            assign(std::move(rhs.{}));", convert_to_label(e.first)) << std::endl;
        os << "            break;" << std::endl;
    }
    os << "        }" << std::endl;
    os << "    }" << std::endl;

    os << "    Type type() const { return m_type; }" << std::endl;

    // match
    os << "    template<typename T>" << std::endl;
    os << "    struct match {" << std::endl;
    os << format("        {} const& adt;", adt.struct_name) << std::endl;
    os << "        std::unique_ptr<T> result = nullptr;" << std::endl;
    os << std::endl;
    os << "        using result_t = T;" << std::endl;
    os << std::endl;
    os << format("        explicit match({} const& adt) :", adt.struct_name) << std::endl;
    os << "            adt(adt)" << std::endl;
    os << "        {}" << std::endl;

    for (auto const& e : adt.elements) {
        os << "        template<typename F>" << std::endl;
        os << format("        match& when_{}(F const& f) {", convert_to_label(e.first)) << std::endl;
        os << format("            if (adt.type() == Type::{} && !result)", e.first) << std::endl;
        os << format("                result = std::make_unique<T>(f(adt.{}));", convert_to_label(e.first)) << std::endl;
        os << "            return *this;" << std::endl;
        os << "        }" << std::endl;
    }

    os << "        template<typename F>" << std::endl;
    os << "        match& otherwise(F const& f) {" << std::endl;
    os << "            if (!result)" << std::endl;
    os << "                result = std::make_unique<T>(f());" << std::endl;
    os << "            return *this;" << std::endl;
    os << "        }" << std::endl;

    os << "        struct not_satisfy{};" << std::endl;

    os << "        T operator*() {" << std::endl;
    os << "            if (!result)" << std::endl;
    os << "                throw not_satisfy{};" << std::endl;
    os << "            return *result;" << std::endl;
    os << "        }" << std::endl;

    // end match struct
    os << "    };" << std::endl;

    // dtor
    os << format("    ~{}() {", adt.struct_name) << std::endl;
    os << "        clear();" << std::endl;
    os << "    }" << std::endl;

    // as

    os << "private:" << std::endl;

    os << "    union {" << std::endl;
    for (auto const& e : adt.elements) {
        auto label = convert_to_label(e.first);
        os << format("        {} {};", e.second, label) << std::endl;
    }
    os << "    };" << std::endl;


    // assign
    for (auto const& e : adt.elements) {
        // copy
        os << format("    void assign({} const& src) {", e.second) << std::endl;
        os << format("        new (&{}) {}{src};", convert_to_label(e.first), e.second) << std::endl;
        os << "    }" << std::endl;

        // move
        os << format("    void assign({}&& src) {", e.second) << std::endl;
        os << format("        new (&{}) {}{src};", convert_to_label(e.first), e.second) << std::endl;
        os << "    }" << std::endl;

    }

    // clear
    os << "    void clear() {" << std::endl;
    os << "        switch (m_type) {" << std::endl;
    for (auto const& e : adt.elements) {
        os << format("        case Type::{}:", e.first) << std::endl;
        auto label = convert_to_label(e.first);
        auto type = convert_to_dtor_name(e.second);
        std::vector<std::string> primitives = {
            "int", "double", "nullptr_t", "bool", "size_t", "char"
        };
        auto found = std::find(std::begin(primitives), std::end(primitives), type);
        if (found == std::end(primitives))
            os << format("            {}.~{}();", label, type) << std::endl;
        os << "            break;" << std::endl;
    }
    os << "        }" << std::endl;
    os << "    }" << std::endl;


    os << "    Type m_type;" << std::endl;

    // end struct
    os << "};" << std::endl;

    os << "#endif" << std::endl;
    return os;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x308, %rsp            # imm = 0x308
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x59f1(%rip), %rsi      # 0x8004
leaq 0x59fc(%rip), %rdx      # 0x8016
leaq 0x8(%rsp), %rdi
callq 0x6a66
leaq 0x100(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %r15, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x110(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x269c
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x26b8
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x594b(%rip), %rsi      # 0x8017
leaq 0x5956(%rip), %rdx      # 0x8029
callq 0x6a66
leaq 0x100(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %r15, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x2754
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x2770
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x588c(%rip), %rsi      # 0x802a
movl $0x11, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x5863(%rip), %rsi      # 0x803c
movl $0xe, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x5837(%rip), %rsi      # 0x804b
movl $0x11, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x580e(%rip), %rsi      # 0x805d
movl $0x11, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x57e5(%rip), %rsi      # 0x806f
movl $0x4a, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x57c1(%rip), %rsi      # 0x80ba
leaq 0x57c5(%rip), %rdx      # 0x80c5
callq 0x6a66
leaq 0x100(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %r15, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x2981
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x299d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x5722(%rip), %rsi      # 0x80c6
movl $0x15, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, 0x28(%rsp)
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x20(%r15), %r14
movq %r15, 0x50(%rsp)
movq 0x28(%r15), %r12
cmpq %r12, %r14
je 0x2ac3
leaq 0x56e2(%rip), %rbx      # 0x80dc
leaq 0x8(%rsp), %r13
leaq 0x100(%rsp), %rbp
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %r13, %rdi
movq %rbx, %rsi
leaq 0x56c9(%rip), %rdx      # 0x80e7
callq 0x6a66
movq %rbp, %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x21e0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x2a9a
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x2ab6
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
addq $0x40, %r14
cmpq %r12, %r14
jne 0x2a07
leaq 0x561e(%rip), %rsi      # 0x80e8
movl $0x6, %edx
movq 0x28(%rsp), %rbx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x50(%rsp), %rax
movq 0x20(%rax), %r14
movq 0x28(%rax), %r15
cmpq %r15, %r14
je 0x2d56
leaq 0x8(%rsp), %r13
leaq 0x100(%rsp), %rbp
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %r13, %rdi
leaq 0x55b5(%rip), %rsi      # 0x80ef
leaq 0x55cc(%rip), %rdx      # 0x810d
callq 0x6a66
leaq 0x20(%r14), %rcx
movq %rbp, %rdi
movq %r13, %rsi
movq 0x50(%rsp), %rdx
callq 0x5a95
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x2bc1
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
movq 0x28(%rsp), %rbx
je 0x2be2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %r13, %rdi
leaq 0x5518(%rip), %rsi      # 0x810e
leaq 0x5529(%rip), %rdx      # 0x8126
callq 0x6a66
movq %rbp, %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x2c77
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
movq 0x28(%rsp), %rbx
je 0x2c98
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
movl $0x5, %edx
movq %rbx, %rdi
leaq 0x5480(%rip), %rsi      # 0x8127
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movl $0x12, %edx
movq %rbx, %rdi
leaq 0x544b(%rip), %rsi      # 0x812d
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movl $0x5, %edx
movq %rbx, %rdi
leaq 0x54ba(%rip), %rsi      # 0x81d7
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
addq $0x40, %r14
cmpq %r15, %r14
jne 0x2b26
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x53d6(%rip), %rsi      # 0x8140
leaq 0x53e6(%rip), %rdx      # 0x8157
callq 0x6a66
leaq 0x100(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq 0x50(%rsp), %r15
movq %r15, %rdx
movq %r15, %rcx
callq 0x5a95
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x2dfa
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x2e16
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x533b(%rip), %rsi      # 0x8158
movl $0x1a, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x52cf(%rip), %rsi      # 0x8127
movl $0x5, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x52e0(%rip), %rsi      # 0x8173
movl $0x19, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x20(%r15), %r14
movq 0x28(%r15), %rbp
cmpq %rbp, %r14
je 0x30c7
leaq 0x8(%rsp), %r13
leaq 0x30(%rsp), %r15
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %r13, %rdi
leaq 0x5297(%rip), %rsi      # 0x818d
leaq 0x52a6(%rip), %rdx      # 0x81a3
callq 0x6a66
leaq 0x100(%rsp), %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x2f7c
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
movq 0x28(%rsp), %rbx
je 0x2f9d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %r13, %rdi
leaq 0x51f3(%rip), %rsi      # 0x81a4
leaq 0x5207(%rip), %rdx      # 0x81bf
callq 0x6a66
movq %r15, %rdi
movq %r14, %rsi
callq 0x249c
leaq 0x100(%rsp), %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x5e39
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x3042
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
movq 0x28(%rsp), %rbx
je 0x3063
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x307f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
movl $0x12, %edx
movq %rbx, %rdi
leaq 0x5132(%rip), %rsi      # 0x81c0
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
addq $0x40, %r14
cmpq %rbp, %r14
jne 0x2ee2
leaq 0x5105(%rip), %rsi      # 0x81d3
movl $0x9, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x50ce(%rip), %rsi      # 0x81d7
movl $0x5, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x508c(%rip), %rsi      # 0x81dd
leaq 0x5097(%rip), %rdx      # 0x81ef
callq 0x6a66
leaq 0x100(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq 0x50(%rsp), %r15
movq %r15, %rdx
movq %r15, %rcx
callq 0x5a95
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x31e1
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x31fd
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x4f54(%rip), %rsi      # 0x8158
movl $0x1a, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x4ee8(%rip), %rsi      # 0x8127
movl $0x5, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x4ef9(%rip), %rsi      # 0x8173
movl $0x19, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x20(%r15), %r14
movq 0x28(%r15), %rbp
cmpq %rbp, %r14
je 0x34ae
leaq 0x8(%rsp), %r13
leaq 0x30(%rsp), %r15
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %r13, %rdi
leaq 0x4eb0(%rip), %rsi      # 0x818d
leaq 0x4ebf(%rip), %rdx      # 0x81a3
callq 0x6a66
leaq 0x100(%rsp), %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x3363
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
movq 0x28(%rsp), %rbx
je 0x3384
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %r13, %rdi
leaq 0x4e58(%rip), %rsi      # 0x81f0
leaq 0x4e77(%rip), %rdx      # 0x8216
callq 0x6a66
movq %r15, %rdi
movq %r14, %rsi
callq 0x249c
leaq 0x100(%rsp), %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x5e39
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x3429
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
movq 0x28(%rsp), %rbx
je 0x344a
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x3466
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
movl $0x12, %edx
movq %rbx, %rdi
leaq 0x4d4b(%rip), %rsi      # 0x81c0
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
addq $0x40, %r14
cmpq %rbp, %r14
jne 0x32c9
leaq 0x4d1e(%rip), %rsi      # 0x81d3
movl $0x9, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x4ce7(%rip), %rsi      # 0x81d7
movl $0x5, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x4cec(%rip), %rsi      # 0x8217
movl $0x28, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x4cda(%rip), %rsi      # 0x8240
movl $0x18, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x4cb8(%rip), %rsi      # 0x8259
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x4c83(%rip), %rsi      # 0x826c
leaq 0x4c92(%rip), %rdx      # 0x8282
callq 0x6a66
leaq 0x100(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq 0x50(%rsp), %r15
movq %r15, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x3676
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x3692
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x4bea(%rip), %rsi      # 0x8283
movl $0x2c, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x4bb5(%rip), %rsi      # 0x82b0
movl $0x1b, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x4b62(%rip), %rsi      # 0x82cc
leaq 0x4b82(%rip), %rdx      # 0x82f3
callq 0x6a66
leaq 0x100(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %r15, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x37f2
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x380e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x4adf(%rip), %rsi      # 0x82f4
movl $0x14, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x4ab9(%rip), %rsi      # 0x8309
movl $0xa, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x20(%r15), %r14
movq 0x28(%r15), %rax
movq %rax, 0x58(%rsp)
cmpq %rax, %r14
je 0x3bd8
leaq 0x8(%rsp), %rbp
leaq 0x30(%rsp), %r15
leaq 0x100(%rsp), %r12
movl $0x1c, %edx
movq %rbx, %rdi
leaq 0x4a59(%rip), %rsi      # 0x8314
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %rbp, %rdi
leaq 0x4a36(%rip), %rsi      # 0x8331
leaq 0x4a53(%rip), %rdx      # 0x8355
callq 0x6a66
movq %r15, %rdi
movq %r14, %rsi
callq 0x249c
movq %r12, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x5e39
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x21e0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x3989
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x39a5
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x39c1
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %rbp, %rdi
leaq 0x4981(%rip), %rsi      # 0x8356
leaq 0x49ac(%rip), %rdx      # 0x8388
callq 0x6a66
movq %r12, %rdi
movq %rbp, %rsi
movq %r14, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x21e0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x3a58
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x3a74
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %rbp, %rdi
leaq 0x4901(%rip), %rsi      # 0x8389
leaq 0x4932(%rip), %rdx      # 0x83c1
callq 0x6a66
movq %r15, %rdi
movq %r14, %rsi
callq 0x249c
movq %r12, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x5e39
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x21e0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x3b16
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x3b32
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x3b4e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
movl $0x19, %edx
movq 0x28(%rsp), %rbx
movq %rbx, %rdi
leaq 0x4860(%rip), %rsi      # 0x83c2
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movl $0x9, %edx
movq %rbx, %rdi
leaq 0x4636(%rip), %rsi      # 0x81d3
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
addq $0x40, %r14
cmpq 0x58(%rsp), %r14
jne 0x38ac
leaq 0x4735(%rip), %rsi      # 0x8314
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x47c2(%rip), %rsi      # 0x83dc
movl $0x26, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x47ae(%rip), %r14      # 0x8403
movl $0x18, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x4789(%rip), %rsi      # 0x841c
movl $0x32, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x46f4(%rip), %rsi      # 0x83c2
movl $0x19, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x44ca(%rip), %r15      # 0x81d3
movl $0x9, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x4708(%rip), %rsi      # 0x844f
movl $0x1d, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x46eb(%rip), %rsi      # 0x846d
movl $0x17, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movl $0x18, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x4691(%rip), %rsi      # 0x8485
movl $0x24, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x467b(%rip), %rsi      # 0x84aa
movl $0x1b, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movl $0x9, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x4247(%rip), %rsi      # 0x80e8
movl $0x6, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x45dd(%rip), %rsi      # 0x84c6
leaq 0x45e1(%rip), %rdx      # 0x84d1
callq 0x6a66
leaq 0x100(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq 0x50(%rsp), %r15
movq %r15, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %rbx, %rdi
callq 0x21e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x3f76
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x3f92
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x4539(%rip), %rsi      # 0x84d2
movl $0x10, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x4203(%rip), %rsi      # 0x81d7
movl $0x5, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x44d4(%rip), %rsi      # 0x84e3
movl $0x8, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x44a2(%rip), %rsi      # 0x84ec
movl $0xb, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x20(%r15), %r13
movq 0x28(%r15), %rbx
cmpq %rbx, %r13
je 0x4467
leaq 0x40(%rsp), %r14
leaq 0x90(%rsp), %r12
leaq 0x60(%rsp), %rbp
leaq 0x288(%rsp), %rdi
movq %r13, %rsi
callq 0x249c
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq %rbp, %rdi
leaq 0x4433(%rip), %rsi      # 0x84f8
leaq 0x443a(%rip), %rdx      # 0x8506
callq 0x6a66
movl $0x2, %ecx
movq %rbp, %rdi
leaq 0x4231(%rip), %rsi      # 0x8311
xorl %edx, %edx
callq 0x2290
cmpq $-0x1, %rax
je 0x517f
movq %rax, %r15
leaq 0x2(%rax), %rdx
movq 0x68(%rsp), %rcx
leaq 0x8(%rsp), %rdi
movq %rbp, %rsi
callq 0x21c0
leaq 0x100(%rsp), %rdi
callq 0x2110
movq 0x20(%r13), %rsi
movq 0x28(%r13), %rdx
leaq 0x110(%rsp), %rdi
callq 0x21e0
leaq 0xe0(%rsp), %rdi
movq %rbp, %rsi
xorl %edx, %edx
movq %r15, %rcx
callq 0x21c0
leaq 0xc0(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x2250
movq 0xe0(%rsp), %rcx
movl $0xf, %edi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rcx
je 0x4178
movq 0xf0(%rsp), %rdi
movq 0xe8(%rsp), %r8
movq 0xc0(%rsp), %rsi
movq 0xc8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x41b8
movl $0xf, %edi
leaq 0xd0(%rsp), %r9
cmpq %r9, %rsi
je 0x41b3
movq 0xd0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x41c7
leaq 0xe0(%rsp), %rdi
callq 0x2090
jmp 0x41d8
leaq 0xc0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x21d0
movq %r14, 0x30(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x41f8
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x41ff
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0xa0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x288(%rsp), %rdx
callq 0x657d
movq 0x30(%rsp), %rcx
movl $0xf, %edi
cmpq %r14, %rcx
je 0x424a
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %r8
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x4287
movl $0xf, %edi
leaq 0xb0(%rsp), %r9
cmpq %r9, %rsi
je 0x4282
movq 0xb0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x4293
leaq 0x30(%rsp), %rdi
callq 0x2090
jmp 0x42a4
leaq 0xa0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x21d0
movq %r12, 0x80(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x42cd
movq %rdx, 0x80(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x90(%rsp)
jmp 0x42d5
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x88(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x431a
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x4331
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x4356
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
je 0x437b
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x100(%rsp), %rdi
movq 0x6c16(%rip), %rsi      # 0xafa0
callq 0x2140
leaq 0x180(%rsp), %rdi
callq 0x20a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x43b8
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x21e0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x80(%rsp), %rdi
cmpq %r12, %rdi
je 0x4419
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x4435
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x288(%rsp), %rdi
leaq 0x298(%rsp), %rax
cmpq %rax, %rdi
je 0x445a
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x21a0
addq $0x40, %r13
cmpq %rbx, %r13
jne 0x40a1
leaq 0x3c7a(%rip), %rsi      # 0x80e8
movl $0x6, %edx
movq 0x28(%rsp), %rbx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x50(%rsp), %rax
movq 0x20(%rax), %r12
movq 0x28(%rax), %rax
movq %rax, 0x58(%rsp)
cmpq %rax, %r12
je 0x489e
leaq 0x8(%rsp), %rbp
leaq 0x100(%rsp), %rbx
leaq 0x30(%rsp), %r13
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %rbp, %rdi
leaq 0x401f(%rip), %rsi      # 0x8507
leaq 0x4038(%rip), %rdx      # 0x8527
callq 0x6a66
leaq 0x20(%r12), %r15
movq %rbx, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x21e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x4570
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x458c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %rbp, %rdi
leaq 0x3f88(%rip), %rsi      # 0x8528
leaq 0x3f9b(%rip), %rdx      # 0x8542
callq 0x6a66
movq %r13, %rdi
movq %r12, %rsi
callq 0x249c
movq %rbx, %rdi
movq %rbp, %rsi
movq %r13, %rdx
movq %r15, %rcx
callq 0x61d9
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x21e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x4631
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x464d
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21a0
movq %rbx, %r13
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x466c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
movl $0x5, %edx
movq 0x28(%rsp), %rbx
movq %rbx, %rdi
leaq 0x3b57(%rip), %rsi      # 0x81d7
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %rbp, %r14
movq %rbp, %rdi
leaq 0x3e80(%rip), %rsi      # 0x8543
leaq 0x3e94(%rip), %rdx      # 0x855e
callq 0x6a66
movq %r13, %rbx
movq %r13, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x21e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x4749
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x4765
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %rbp, %rdi
leaq 0x3daf(%rip), %rsi      # 0x8528
leaq 0x3dc2(%rip), %rdx      # 0x8542
callq 0x6a66
leaq 0x30(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x249c
movq %rbx, %rdi
movq %rbp, %rsi
movq %r14, %rdx
movq %r15, %rcx
callq 0x61d9
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x21e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x480f
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x482b
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x4847
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
movl $0x5, %edx
movq 0x28(%rsp), %rbx
movq %rbx, %rdi
leaq 0x397c(%rip), %rsi      # 0x81d7
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
addq $0x40, %r12
cmpq 0x58(%rsp), %r12
movq %r13, %rbx
leaq 0x30(%rsp), %r13
jne 0x44d4
leaq 0x3cba(%rip), %rsi      # 0x855f
movl $0x12, %edx
movq 0x28(%rsp), %rbx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x388e(%rip), %rsi      # 0x8173
movl $0x19, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x50(%rsp), %rax
movq 0x20(%rax), %rbx
movq 0x28(%rax), %rax
movq %rax, 0x50(%rsp)
cmpq %rax, %rbx
leaq 0x100(%rsp), %rbp
je 0x503e
leaq 0x120(%rsp), %r12
movl $0x80, %eax
leaq (%rax,%rbp), %rcx
movq %rcx, 0x58(%rsp)
addq %rbp, %rax
movq %rax, 0x2a8(%rsp)
leaq 0x8(%rsp), %r14
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %r14, %rdi
leaq 0x3817(%rip), %rsi      # 0x818d
leaq 0x3826(%rip), %rdx      # 0x81a3
callq 0x6a66
movq %rbp, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x56f5
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x21e0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x49f9
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x4a15
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x288(%rsp), %rdi
movq %rbx, %rsi
callq 0x249c
leaq 0x2e0(%rsp), %rax
movq %rax, 0x2d0(%rsp)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
addq %rsi, %rdx
leaq 0x2d0(%rsp), %r15
movq %r15, %rdi
callq 0x69d0
leaq 0x80(%rsp), %rdi
movq %r15, %rsi
callq 0x24f4
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x4a85
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x110(%rsp), %rax
movq %rax, 0x100(%rsp)
movq %rbp, %rdi
leaq 0x3ad3(%rip), %rsi      # 0x8572
leaq 0x3acf(%rip), %rdx      # 0x8575
callq 0x6a66
leaq 0x130(%rsp), %rax
movq %rax, 0x120(%rsp)
movq %r12, %rdi
leaq 0x3ab1(%rip), %rsi      # 0x8576
leaq 0x3ab0(%rip), %rdx      # 0x857c
callq 0x6a66
leaq 0x150(%rsp), %rax
movq %rax, 0x140(%rsp)
leaq 0x140(%rsp), %rdi
leaq 0x3a8d(%rip), %rsi      # 0x857d
leaq 0x3a8f(%rip), %rdx      # 0x8586
callq 0x6a66
leaq 0x170(%rsp), %rax
movq %rax, 0x160(%rsp)
leaq 0x160(%rsp), %rdi
leaq 0x3a6c(%rip), %rsi      # 0x8587
leaq 0x3a69(%rip), %rdx      # 0x858b
callq 0x6a66
leaq 0x190(%rsp), %rax
movq %rax, 0x180(%rsp)
movq 0x58(%rsp), %rdi
leaq 0x3a49(%rip), %rsi      # 0x858c
leaq 0x3a48(%rip), %rdx      # 0x8592
callq 0x6a66
leaq 0x1b0(%rsp), %rax
movq %rax, 0x1a0(%rsp)
leaq 0x1a0(%rsp), %rdi
leaq 0x3a25(%rip), %rsi      # 0x8593
leaq 0x3a22(%rip), %rdx      # 0x8597
callq 0x6a66
movl $0x6, %edx
leaq 0x2f0(%rsp), %rdi
movq %rbp, %rsi
movq %r14, %rcx
callq 0x691e
movq $-0xc0, %r15
leaq 0x1b0(%rsp), %rbp
movq -0x10(%rbp), %rdi
cmpq %rdi, %rbp
je 0x4bb6
movq (%rbp), %rsi
incq %rsi
callq 0x21a0
addq $-0x20, %rbp
addq $0x20, %r15
jne 0x4ba1
movq 0x2f0(%rsp), %rdi
movq 0x2f8(%rsp), %rsi
leaq 0x80(%rsp), %rdx
callq 0x6c4e
leaq 0x100(%rsp), %rbp
cmpq 0x2f8(%rsp), %rax
jne 0x4f94
movq %r14, %r13
leaq 0x2c0(%rsp), %rax
movq %rax, 0x2b0(%rsp)
leaq 0x2b0(%rsp), %r14
movq %r14, %rdi
leaq 0x3980(%rip), %rsi      # 0x8598
leaq 0x398e(%rip), %rdx      # 0x85ad
callq 0x6a66
movl $0x2, %ecx
movq %r14, %rdi
leaq 0x36de(%rip), %rsi      # 0x8311
xorl %edx, %edx
callq 0x2290
cmpq $-0x1, %rax
je 0x519a
movq %rax, %r15
leaq 0x2(%rax), %rdx
movq 0x2b8(%rsp), %rcx
movq %r13, %rdi
movq %r14, %rsi
callq 0x21c0
movq %rbp, %rdi
callq 0x2110
movq 0x288(%rsp), %rsi
movq 0x290(%rsp), %rdx
leaq 0x110(%rsp), %rdi
callq 0x21e0
movq %r13, %r14
leaq 0xe0(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
xorl %edx, %edx
movq %r15, %rcx
callq 0x21c0
leaq 0xc0(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x2250
movq 0xe0(%rsp), %rcx
movl $0xf, %edi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rcx
je 0x4cd7
movq 0xf0(%rsp), %rdi
movq 0xe8(%rsp), %r8
movq 0xc0(%rsp), %rsi
movq 0xc8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x4d17
movl $0xf, %edi
leaq 0xd0(%rsp), %r9
cmpq %r9, %rsi
je 0x4d12
movq 0xd0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x4d26
leaq 0xe0(%rsp), %rdi
callq 0x2090
jmp 0x4d37
leaq 0xc0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x21d0
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x4d5c
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x4d62
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0xa0(%rsp), %rdi
movq %r14, %rsi
leaq 0x80(%rsp), %rdx
callq 0x657d
movq 0x30(%rsp), %rcx
movl $0xf, %edi
leaq 0x40(%rsp), %rax
cmpq %rax, %rcx
je 0x4db0
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %r8
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x4ded
movl $0xf, %edi
leaq 0xb0(%rsp), %r9
cmpq %r9, %rsi
je 0x4de8
movq 0xb0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x4df9
leaq 0x30(%rsp), %rdi
callq 0x2090
jmp 0x4e0a
leaq 0xa0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x21d0
leaq 0x70(%rsp), %rsi
movq %rsi, 0x60(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x4e2f
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
jmp 0x4e35
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x68(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4e77
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x4e93
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x4eb8
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
je 0x4edd
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x21a0
movq %rbp, %rdi
movq 0x60b9(%rip), %rsi      # 0xafa0
callq 0x2140
movq 0x2a8(%rsp), %rdi
callq 0x20a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x4f15
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x21e0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x4f6f
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x4f94
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x21a0
movl $0x12, %edx
movq 0x28(%rsp), %rdi
leaq 0x321b(%rip), %rsi      # 0x81c0
callq 0x21e0
movq 0x28(%rsp), %rcx
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x28(%rsp), %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x2f0(%rsp), %rdi
callq 0x6966
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x500a
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x288(%rsp), %rdi
leaq 0x298(%rsp), %rax
cmpq %rax, %rdi
je 0x502f
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x21a0
addq $0x40, %rbx
cmpq 0x50(%rsp), %rbx
jne 0x4962
leaq 0x318e(%rip), %rsi      # 0x81d3
movl $0x9, %edx
movq 0x28(%rsp), %rbx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x3152(%rip), %rsi      # 0x81d7
movl $0x5, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x34ee(%rip), %rsi      # 0x85ae
movl $0x10, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x2ff1(%rip), %rsi      # 0x80ec
movl $0x2, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x3489(%rip), %rsi      # 0x85bf
movl $0x6, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq %rbx, %rax
addq $0x308, %rsp            # imm = 0x308
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x1, %edi
callq 0x20e0
leaq 0x5bf0(%rip), %rsi      # 0xad80
movq %rax, %rdi
xorl %edx, %edx
callq 0x2280
movl $0x1, %edi
callq 0x20e0
leaq 0x5bd5(%rip), %rsi      # 0xad80
movq %rax, %rdi
xorl %edx, %edx
callq 0x2280
jmp 0x5562
jmp 0x555a
jmp 0x5562
jmp 0x555a
jmp 0x5562
jmp 0x555a
jmp 0x5562
jmp 0x555a
jmp 0x5562
jmp 0x555a
jmp 0x5562
jmp 0x555a
jmp 0x5562
jmp 0x555a
jmp 0x5562
jmp 0x555a
jmp 0x5655
jmp 0x5655
jmp 0x5655
jmp 0x5655
jmp 0x5655
jmp 0x5655
jmp 0x5655
movq %rax, %rbx
leaq 0x110(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x5668
movq %rax, %rbx
jmp 0x531b
movq %rax, %rbx
jmp 0x52d5
jmp 0x524e
movq %rax, %rbx
jmp 0x5589
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x528a
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x21a0
jmp 0x528a
jmp 0x52a8
jmp 0x5693
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x52b0
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21a0
jmp 0x52b0
movq %rax, %rbx
jmp 0x52fa
movq %rax, %rbx
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x52d5
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
je 0x52fa
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x5c9f(%rip), %rsi      # 0xafa0
leaq 0x100(%rsp), %rdi
callq 0x2140
movq 0x2a8(%rsp), %rdi
callq 0x20a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x5589
movq 0x18(%rsp), %rsi
jmp 0x5581
jmp 0x555a
jmp 0x5562
jmp 0x542b
movq %rax, %rbx
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x56c8
movq 0x2e0(%rsp), %rsi
jmp 0x56c0
movq %rax, %rbx
jmp 0x56a3
movq %rax, %rbx
jmp 0x53ac
movq %rax, %rbx
leaq 0x140(%rsp), %r12
jmp 0x53ac
movq %rax, %rbx
leaq 0x160(%rsp), %r12
jmp 0x53ac
movq %rax, %rbx
movq 0x58(%rsp), %r12
jmp 0x53ac
movq %rax, %rbx
leaq 0x1a0(%rsp), %r12
addq $-0x10, %r12
movq -0x10(%r12), %rdi
cmpq %rdi, %r12
je 0x53c6
movq (%r12), %rsi
incq %rsi
callq 0x21a0
leaq -0x20(%r12), %rax
addq $-0x10, %r12
cmpq %rbp, %r12
movq %rax, %r12
jne 0x53b0
jmp 0x56a3
movq %rax, %rbx
leaq 0x100(%rsp), %rsi
leaq 0x1c0(%rsp), %rdi
callq 0x2300
jmp 0x56a3
jmp 0x555a
jmp 0x5562
jmp 0x554a
jmp 0x555a
jmp 0x5562
jmp 0x555a
jmp 0x5562
jmp 0x554a
jmp 0x555a
jmp 0x5562
movq %rax, %rbx
jmp 0x56c8
jmp 0x5520
movq %rax, %rbx
jmp 0x5503
jmp 0x5442
movq %rax, %rbx
jmp 0x54e2
movq %rax, %rbx
jmp 0x54bd
movq %rax, %rbx
jmp 0x5498
movq %rax, %rbx
jmp 0x5481
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x5481
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x5498
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x54bd
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
je 0x54e2
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x5ab7(%rip), %rsi      # 0xafa0
leaq 0x100(%rsp), %rdi
callq 0x2140
leaq 0x180(%rsp), %rdi
callq 0x20a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x55ea
movq 0x18(%rsp), %rsi
jmp 0x55e2
movq %rax, %rbx
jmp 0x55ea
jmp 0x555a
jmp 0x5562
jmp 0x554a
jmp 0x555a
jmp 0x5562
jmp 0x555a
jmp 0x5562
jmp 0x554a
jmp 0x555a
jmp 0x5562
jmp 0x555a
jmp 0x5562
jmp 0x554a
jmp 0x555a
jmp 0x5562
jmp 0x555a
jmp 0x5562
movq %rax, %rbx
jmp 0x5639
jmp 0x555a
jmp 0x5562
jmp 0x555a
jmp 0x5562
movq %rax, %rbx
jmp 0x56ed
movq %rax, %rbx
jmp 0x567d
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x5589
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x5696
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x21a0
jmp 0x5696
jmp 0x5655
jmp 0x5611
jmp 0x5655
jmp 0x5611
jmp 0x5655
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %r12, %rdi
je 0x55ea
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x56c8
movq 0x70(%rsp), %rsi
jmp 0x56c0
jmp 0x5611
jmp 0x5611
jmp 0x5655
jmp 0x5611
jmp 0x5655
movq %rax, %rbx
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x5639
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x567d
movq 0x40(%rsp), %rsi
jmp 0x5675
jmp 0x5655
jmp 0x5655
jmp 0x5655
movq %rax, %rbx
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x567d
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x56ed
movq 0x18(%rsp), %rsi
jmp 0x56e5
movq %rax, %rbx
leaq 0x2f0(%rsp), %rdi
callq 0x6966
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x56c8
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x288(%rsp), %rdi
leaq 0x298(%rsp), %rax
cmpq %rax, %rdi
je 0x56ed
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x21a0
movq %rbx, %rdi
callq 0x22a0