// File: /workspace/github_cpp_makefile_star2_O3/dechimal[P]TaggedUnion/test_sum.cpp
// Function: main
int main() {
    {
        // construct, assign, exception safety
        sum<int, double, hoge, hoge> a(_1, 10.0);
        assert(a.get(_1) == 10.0);
        auto b = a;
        assert(b.get(_1) == 10.0);
        a = { _0, 5 };
        assert(a.get(_0) == 5);
        a = { _2, hoge{42} };
        a.get(_2).b = true;
        try {
            b = a;
            assert(false);
        } catch (int) {
            assert(b.get(_1) == 10.0);
        }
        a.get(_2).b = false;
        a = { _3, hoge{24} };
        assert(a.get(_3).x == 24);
        try {
            b = { _2, hoge{36} };
            assert(b.get(_2).x == 36);
            b.get(_2).b = true;
            a = b;
            assert(false);
        } catch (int) {
            assert(a.get(_0) == 0);
        }
    }
    {
        // strong guarantee without fallback type
        sum<hoge, hoge> a(_0, hoge{42});
        sum<hoge, hoge> b(_1, hoge{24});
        b.get(_1).b = true;
        try {
            a = b;
            assert(false);
        } catch (int) {
            assert(a.get(_0).x == 42);
        }
    }
    {
        // equality
        sum<int, hoge> a(_0, 42);
        sum<int, hoge> b(_1, hoge{42});
        assert(a != b);
        a = { _1, hoge{42} };
        assert(a == b);
    }
    {
        // strong guarantee without nothrow constructible type
        sum<hoge, hoge> a(_0, hoge{42});
        sum<hoge, hoge> b(_1, hoge{42});
        b.get(_1).b = true;
        try {
            a = b;
            assert(false);
        } catch (int) {
            assert(a.get(_0) == b.get(_1));
        }
    }
    {
        // less
        sum<int, double> a(_0, 42);
        sum<int, double> b(_1, 10.0);
        assert(a < b);
    }
    {
        // move
        sum<int, std::vector<int>> a(_0, 10);
        sum<int, std::vector<int>> b(_1, {1, 2, 3});
        a = std::move(b);
        auto & v1 = a.get(_1);
        auto v2 = {1, 2, 3};
        assert(std::equal(v1.begin(), v1.end(), v2.begin(), v2.end()));
        auto & v3 = b.get(_1);
        assert(v3.empty());
    }
    {
        // recursive type using class member
        struct leaf {};
        struct node {
            node(int x, leaf l, leaf r) : x(x), l(_0, l), r(_0, r) {}
            node(int x, node l, leaf r) : x(x), l(_1, l), r(_0, r) {}
            node(int x, leaf l, node r) : x(x), l(_0, l), r(_1, r) {}
            node(int x, node l, node r) : x(x), l(_1, l), r(_1, r) {}
            int x;
            sum<leaf, rec_guard<node>> l; // rec_guard<T> prevent cyclic class definition.
            sum<leaf, rec_guard<node>> r;
        };
        node n(1,
               leaf{},
               node(2,
                    node(3,
                         leaf{},
                         leaf{}),
                    node(4,
                         node(5,
                              leaf{},
                              leaf{}),
                         leaf{})));
        auto g = ::fix(::tie(
            [] (auto, tag<0>, leaf) {
                return 0;
            }, [] (auto f, tag<1>, node const & n) -> int {
                return n.x + n.l.when(f) + n.r.when(f);
            }));
        assert(n.x + n.l.when(g) + n.r.when(g) == 15);
    }
    {
        // direct recursive type
        struct leaf {};
        using node = sum<leaf, std::tuple<int, _, _>>;
        auto make_leaf = [] () { return node(_0, leaf{}); };
        auto make_node = [] (int v, node l, node r) {
                return node(_1, std::make_tuple(v, std::move(l), std::move(r)));
            };
        auto n = make_node(1,
                           make_leaf(),
                           make_node(2,
                                     make_node(3,
                                               make_leaf(),
                                               make_leaf()),
                                     make_node(4,
                                               make_node(5,
                                                         make_leaf(),
                                                         make_leaf()),
                                               make_leaf())));
        auto g = ::fix(::tie(
            [] (auto, tag<0>, leaf) {
                return 0;
            }, [] (auto f, tag<1>, std::tuple<int, node, node> const & tup) -> int {
                return std::get<0>(tup) + std::get<1>(tup).when(f) + std::get<2>(tup).when(f);
            }));
        assert(n.when(g) == 15);
    }
    {
        // recursion with nest
        using u1 = sum<int, _>;
        using u2 = sum<_, u1, char>;
        static_assert(std::is_same<decltype(std::declval<u1&>().get(_1)), u1&>::value, "failed at recursion type 1");
        static_assert(std::is_same<decltype(std::declval<u2&>().get(_0)), u2&>::value, "failed at recursion type 2");
        u2 x = u2(_1, u1(_1, u1(_0, 42)));
        assert(x.get(_1).get(_1).get(_0) == 42);
    }
    {
        // fallback type in recursion type
        using u = sum<std::tuple<_>, char>;
        u x(_1, 'a');
        assert(x == x);
    }
    {
        // recursion with nested and outer placeholder
        using u = sum<sum<_, rec<1>, char>, int>;
        static_assert(std::is_same<decltype(std::declval<u&>().get(_0)), sum<_, u, char>&>::value, "failed at recursion with nested and outer placeholder 1");
        static_assert(std::is_same<decltype(std::declval<u&>().get(_0).get(_1)), u&>::value, "failed at recursion with nested and outer placeholder 2");
        u a(_1, 42);
        u b(_0, { _0, { _2, 'a' } });
        u c(_0, { _1, { _1, 42 } });
        u d(_0, { _2, 'a' });
        assert(a == c.get(_0).get(_1));
        assert(b.get(_0).get(_0) == d.get(_0));
        a = { _0, { _1, d } };
        assert(a.get(_0).get(_1).get(_0) == b.get(_0).get(_0));
    }
    {
        // implicit conversions
        struct unit {
            bool operator==(unit) const { return true; }
        };
        using ilist = sum<unit, std::tuple<int, _>>;
        using clist = sum<unit, std::tuple<char, _>>;

        ilist xs(_1, std::make_tuple(42, ilist(_0)));
        clist ys(_1, std::make_tuple(42, clist(_0)));
        assert(xs == ys);
    }
    {
        // recursion with non-type parameter using traits
        // (traits of std::array is already defined in this implementation)
        using ternary_tree = sum<int, std::array<_, 3>>;
        auto n = ternary_tree(_1, {{{_0, 1}, {_0, 2}, {_0, 3}}});
        n.when(::tie(
            [] (tag<0>, int) {
                assert(false);
            },
            [] (tag<1>, std::array<ternary_tree, 3> const & ar) {
                assert(ar[0].get(_0) == 1 && ar[1].get(_0) == 2 && ar[2].get(_0) == 3);
            }));
        // Following is also OK (same with above).
        n.when(
            [] (tag<0>, int) {
                assert(false);
            },
            [] (tag<1>, std::array<ternary_tree, 3> const & ar) {
                assert(ar[0].get(_0) == 1 && ar[1].get(_0) == 2 && ar[2].get(_0) == 3);
            });
    }
    {
        // recursion with non-type parameter (ad-hoc way)
        using type = type_fun<make_non_type_parameter_template<_, 2, int>>;
        using u = sum<rec_guard<type>, int>;
        // print<decltype(std::declval<u>().get(_0))>;
        u x(_1, 42);
        using expected = non_type_parameter_template<u, 2, int>;
        static_assert(std::is_same<decltype(std::declval<u>().get(_0)), expected &&>::value, "failed at recursion with non-type parameter (ad-hoc way)");
    }
    {
        // return type deduction of dispatch/when member function
        using u = sum<int, int, int, int>;
        struct hogera{};
        struct piyo{ piyo()=default; piyo(hogera){} };
        struct fuga{ fuga()=default; fuga(piyo){} };
        struct hoge{ hoge()=default; hoge(fuga){} };

        u x(_0, {});
        x.dispatch(::tie([] (tag<0>) {
            return hoge{};
        }, [] (tag<1>) {
            return fuga{};
        }, [] (tag<2>) {
            return piyo{};
        }, [] (tag<3>) {
            return hogera{};
        }));
    }
    {
        // extension
        using u = sum<int, int>;
        auto x = u(_0, 42);
        auto y = ::extend<tag<1>, char, tag<0>>(x);
        static_assert(std::is_same<decltype(y), sum<int, char, int>>::value, "failed at extension");
        assert(y.which() == 2 && y.get(_2) == 42);
        auto z = ::extend_right<short>(x);
        static_assert(std::is_same<decltype(z), sum<short, int, int>>::value, "failed at extension");
        assert(z.which() == 1 && z.get(_1) == 42);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1f8, %rsp            # imm = 0x1F8
leaq 0x48(%rsp), %r15
movl $0x1, (%r15)
movabsq $0x4024000000000000, %rax # imm = 0x4024000000000000
movq %rax, 0x8(%r15)
movq %r15, %rdi
callq 0x4a0c
movsd (%rax), %xmm0
ucomisd 0x5d7d(%rip), %xmm0     # 0x8008
jne 0x23ac
jp 0x23ac
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x30(%rsp), %rcx
movl %eax, (%rcx)
movq %rsp, %rdi
movq %rcx, (%rdi)
movq %r15, 0x8(%rdi)
leaq 0xb5b8(%rip), %rcx      # 0xd870
callq *(%rcx,%rax,8)
leaq 0x30(%rsp), %r12
movq %r12, %rdi
callq 0x4a0c
movsd (%rax), %xmm0
ucomisd 0x5d34(%rip), %xmm0     # 0x8008
jne 0x23cb
jp 0x23cb
movq %rsp, %r14
movl $0x0, (%r14)
movl $0x5, 0x8(%r14)
leaq 0x48(%rsp), %rdi
movq %r14, %rsi
callq 0x4aec
leaq 0x68(%rsp), %rdi
movq %r14, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xb53a(%rip), %rbp      # 0xd850
callq *(%rbp,%rax,8)
leaq 0x48(%rsp), %rdi
callq 0x5060
cmpl $0x5, (%rax)
jne 0x23ea
leaq 0x78(%rsp), %rsi
movb $0x0, (%rsi)
movl $0x2a, 0x4(%rsi)
leaq 0x8(%rsp), %rdi
movl $0x2, -0x8(%rdi)
callq 0x4cc4
leaq 0x48(%rsp), %rdi
movq %rsp, %r14
movq %r14, %rsi
callq 0x4aec
leaq 0x68(%rsp), %rdi
movq %r14, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbp,%rax,8)
leaq 0x48(%rsp), %rdi
callq 0x50ba
movb $0x1, (%rax)
leaq 0x30(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x4890
leaq 0x5cc7(%rip), %rdi      # 0x805b
leaq 0x5c87(%rip), %rsi      # 0x8022
leaq 0x5c8d(%rip), %rcx      # 0x802f
movl $0x4f, %edx
callq 0x2080
leaq 0x5c5d(%rip), %rdi      # 0x8010
leaq 0x5c68(%rip), %rsi      # 0x8022
leaq 0x5c6e(%rip), %rcx      # 0x802f
movl $0x46, %edx
callq 0x2080
leaq 0x5c68(%rip), %rdi      # 0x803a
leaq 0x5c49(%rip), %rsi      # 0x8022
leaq 0x5c4f(%rip), %rcx      # 0x802f
movl $0x48, %edx
callq 0x2080
leaq 0x5c5b(%rip), %rdi      # 0x804c
leaq 0x5c2a(%rip), %rsi      # 0x8022
leaq 0x5c30(%rip), %rcx      # 0x802f
movl $0x4a, %edx
callq 0x2080
movq %rdx, %r14
movq %rax, %rbx
cmpl $0x2, %r14d
jne 0x3dc1
movq %rbx, %rdi
callq 0x2050
leaq 0x30(%rsp), %r13
movq %r13, %rdi
callq 0x4a0c
movsd (%rax), %xmm0
ucomisd 0x5bce(%rip), %xmm0     # 0x8008
jne 0x253f
jp 0x253f
callq 0x2100
leaq 0x48(%rsp), %rdi
callq 0x50ba
xorl %ecx, %ecx
movb %cl, (%rax)
leaq 0x78(%rsp), %rsi
movb %cl, (%rsi)
movl $0x18, 0x4(%rsi)
leaq 0x8(%rsp), %rdi
movl $0x3, -0x8(%rdi)
callq 0x4cc4
leaq 0x48(%rsp), %rdi
movq %rsp, %rsi
callq 0x4aec
leaq 0x68(%rsp), %rdi
movq %rsp, %rax
movq %rax, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbp,%rax,8)
leaq 0x48(%rsp), %rdi
callq 0x5712
cmpl $0x18, 0x4(%rax)
jne 0x255e
leaq 0x78(%rsp), %rsi
movb $0x0, (%rsi)
movl $0x24, 0x4(%rsi)
leaq 0x8(%rsp), %rdi
movl $0x2, -0x8(%rdi)
callq 0x4cc4
leaq 0x30(%rsp), %rdi
movq %rsp, %rsi
callq 0x4aec
leaq 0x68(%rsp), %rdi
movq %rsp, %rax
movq %rax, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbp,%rax,8)
leaq 0x30(%rsp), %rdi
callq 0x50ba
cmpl $0x24, 0x4(%rax)
jne 0x257d
leaq 0x30(%rsp), %rdi
callq 0x50ba
movb $0x1, (%rax)
leaq 0x48(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x4890
leaq 0x5b34(%rip), %rdi      # 0x805b
leaq 0x5af4(%rip), %rsi      # 0x8022
leaq 0x5afa(%rip), %rcx      # 0x802f
movl $0x5b, %edx
callq 0x2080
leaq 0x5af4(%rip), %rdi      # 0x803a
leaq 0x5ad5(%rip), %rsi      # 0x8022
leaq 0x5adb(%rip), %rcx      # 0x802f
movl $0x51, %edx
callq 0x2080
leaq 0x5afc(%rip), %rdi      # 0x8061
leaq 0x5ab6(%rip), %rsi      # 0x8022
leaq 0x5abc(%rip), %rcx      # 0x802f
movl $0x55, %edx
callq 0x2080
leaq 0x5aef(%rip), %rdi      # 0x8073
leaq 0x5a97(%rip), %rsi      # 0x8022
leaq 0x5a9d(%rip), %rcx      # 0x802f
movl $0x58, %edx
callq 0x2080
jmp 0x25cc
jmp 0x3e06
movq %rdx, 0xa0(%rsp)
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
movq %rsp, %rax
movq %rax, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbp,%rax,8)
jmp 0x25d7
jmp 0x3e06
movq %rdx, 0xa0(%rsp)
movq %rax, %rbx
cmpl %r14d, 0xa0(%rsp)
jne 0x3dc1
movq %rbx, %rdi
callq 0x2050
leaq 0x48(%rsp), %rbx
movq %rbx, %rdi
callq 0x5060
cmpl $0x0, (%rax)
jne 0x26b4
callq 0x2100
movq %rsp, %rdi
movq %r13, (%rdi)
movl 0x30(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbp,%rax,8)
movq %rsp, %r15
movq %rbx, (%r15)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq %r15, %rdi
callq *(%rbp,%rax,8)
xorl %ebp, %ebp
leaq 0x48(%rsp), %rbx
movb %bpl, (%rbx)
movl $0x2a, 0x4(%rbx)
leaq 0x8(%rsp), %rdi
movl $0x0, -0x8(%rdi)
movq %rbx, %rsi
callq 0x4cc4
leaq 0x30(%rsp), %rsi
movb %bpl, (%rsi)
movl $0x18, 0x4(%rsi)
movl $0x1, (%rbx)
leaq 0x50(%rsp), %rdi
callq 0x4cc4
leaq 0x48(%rsp), %r12
movq %r12, %rdi
callq 0x57a0
movb $0x1, (%rax)
movq %rsp, %rdi
leaq 0x48(%rsp), %r13
movq %r13, %rsi
callq 0x489e
leaq 0x59bf(%rip), %rdi      # 0x805b
leaq 0x597f(%rip), %rsi      # 0x8022
leaq 0x5985(%rip), %rcx      # 0x802f
movl $0x67, %edx
callq 0x2080
leaq 0x59ca(%rip), %rdi      # 0x8085
leaq 0x5960(%rip), %rsi      # 0x8022
leaq 0x5966(%rip), %rcx      # 0x802f
movl $0x5d, %edx
callq 0x2080
movq %rax, %rbx
cmpl %r14d, %edx
jne 0x3cf2
movq %rbx, %rdi
callq 0x2050
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x5d7c
cmpl $0x2a, 0x4(%rax)
jne 0x27b2
callq 0x2100
leaq 0x30(%rsp), %r12
movq %r13, (%r12)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xb2d6(%rip), %rbp      # 0xd9f0
movq %r12, %rdi
callq *(%rbp,%rax,8)
leaq 0x48(%rsp), %r15
movq %rbx, (%r15)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq %r15, %rdi
callq *(%rbp,%rax,8)
movabsq $0x2a00000000, %rax     # imm = 0x2A00000000
movq %rax, 0x48(%rsp)
movq %rsp, %rsi
movb $0x0, (%rsi)
movl $0x2a, 0x4(%rsi)
leaq 0x34(%rsp), %rdi
movl $0x1, -0x4(%rdi)
callq 0x4cc4
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
andl 0x30(%rsp), %ecx
cmpl %ecx, %eax
jne 0x27d1
movq %rsp, %rdi
movq %r15, (%rdi)
movq %r12, 0x8(%rdi)
leaq 0xb354(%rip), %rcx      # 0xdae0
callq *(%rcx,%rax,8)
testb %al, %al
je 0x27d1
leaq 0x590c(%rip), %rdi      # 0x80a6
leaq 0x5881(%rip), %rsi      # 0x8022
leaq 0x5887(%rip), %rcx      # 0x802f
movl $0x70, %edx
callq 0x2080
leaq 0x58db(%rip), %rdi      # 0x8094
leaq 0x5862(%rip), %rsi      # 0x8022
leaq 0x5868(%rip), %rcx      # 0x802f
movl $0x69, %edx
callq 0x2080
leaq 0x78(%rsp), %rsi
movb $0x0, (%rsi)
movl $0x2a, 0x4(%rsi)
leaq 0x4(%rsp), %rdi
movl $0x1, -0x4(%rdi)
callq 0x4cc4
leaq 0x48(%rsp), %rbx
movq %rsp, %r13
movq %rbx, %rdi
movq %r13, %rsi
callq 0x5de4
leaq 0x68(%rsp), %rdi
movq %r13, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xb255(%rip), %r13      # 0xda70
callq *(%r13,%rax,8)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
andl 0x30(%rsp), %ecx
cmpl %ecx, %eax
jne 0x2902
movq %rsp, %rdi
movq %rbx, (%rdi)
movq %r12, 0x8(%rdi)
leaq 0xb295(%rip), %rcx      # 0xdae0
callq *(%rcx,%rax,8)
testb %al, %al
je 0x2902
movq %rsp, %rdi
movq %r12, (%rdi)
movl 0x30(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r13,%rax,8)
movq %rsp, %r15
movq %rbx, (%r15)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq %r15, %rdi
callq *(%r13,%rax,8)
xorl %r13d, %r13d
leaq 0x48(%rsp), %rbx
movb %r13b, (%rbx)
movl $0x2a, %r12d
movl %r12d, 0x4(%rbx)
leaq 0x8(%rsp), %rdi
movl $0x0, -0x8(%rdi)
movq %rbx, %rsi
callq 0x4cc4
leaq 0x30(%rsp), %rsi
movb %r13b, (%rsi)
movl %r12d, 0x4(%rsi)
movl $0x1, (%rbx)
leaq 0x50(%rsp), %rdi
callq 0x4cc4
leaq 0x48(%rsp), %r13
movq %r13, %rdi
callq 0x57a0
movb $0x1, (%rax)
movq %rsp, %rdi
leaq 0x48(%rsp), %rsi
callq 0x489e
leaq 0x5771(%rip), %rdi      # 0x805b
leaq 0x5731(%rip), %rsi      # 0x8022
leaq 0x5737(%rip), %rcx      # 0x802f
movl $0x7b, %edx
callq 0x2080
leaq 0x57a4(%rip), %rdi      # 0x80ad
leaq 0x5712(%rip), %rsi      # 0x8022
leaq 0x5718(%rip), %rcx      # 0x802f
movl $0x72, %edx
callq 0x2080
movq %rax, %rbx
cmpl %r14d, %edx
jne 0x3c1c
movq %rbx, %rdi
callq 0x2050
movq %rsp, %r12
movq %r12, %rdi
callq 0x5d7c
movq %rax, %r14
leaq 0x48(%rsp), %rbx
movq %rbx, %rdi
callq 0x57a0
movl 0x4(%r14), %ecx
cmpl 0x4(%rax), %ecx
jne 0x3420
callq 0x2100
leaq 0x30(%rsp), %rdi
movq %rbx, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbp,%rax,8)
leaq 0x48(%rsp), %rdi
movq %r12, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbp,%rax,8)
movl $0x0, (%rsp)
movl $0xa, 0x8(%rsp)
movabsq $0x200000001, %r14      # imm = 0x200000001
leaq 0x68(%rsp), %rsi
movq %r14, (%rsi)
movl $0x3, 0x8(%rsi)
leaq 0x30(%rsp), %rdi
leaq 0x78(%rsp), %rcx
movl $0x3, %edx
callq 0x48ac
leaq 0x48(%rsp), %r15
movl $0x1, (%r15)
movapd 0x30(%rsp), %xmm0
movupd %xmm0, 0x8(%r15)
movq 0x40(%rsp), %rax
movq %rax, 0x18(%r15)
movq %rsp, %rdi
movq %r15, %rsi
callq 0x61b4
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x6530
movq %r14, 0x30(%rsp)
movl $0x3, 0x38(%rsp)
movq (%rax), %rcx
movq 0x8(%rax), %rax
movq %rax, %rdx
subq %rcx, %rdx
cmpq $0xc, %rdx
jne 0x343f
cmpq %rcx, %rax
je 0x2a3f
movq (%rcx), %rax
xorq 0x30(%rsp), %rax
movl 0x8(%rcx), %ecx
xorl 0x38(%rsp), %ecx
orq %rax, %rcx
jne 0x343f
leaq 0x48(%rsp), %r13
movq %r13, %rdi
callq 0x6530
movq (%rax), %rcx
cmpq 0x8(%rax), %rcx
jne 0x345e
leaq 0x30(%rsp), %rdi
movq %r13, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xb07f(%rip), %r14      # 0xdaf0
callq *(%r14,%rax,8)
leaq 0x48(%rsp), %rdi
movq %rbx, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r14,%rax,8)
movl $0x3, 0x158(%rsp)
xorl %eax, %eax
movl %eax, 0x160(%rsp)
movl %eax, 0x170(%rsp)
leaq 0x1d0(%rsp), %rsi
movl $0x5, (%rsi)
movl %eax, 0x8(%rsi)
movl %eax, 0x18(%rsi)
leaq 0x188(%rsp), %rdi
movl $0x4, -0x8(%rdi)
callq 0x40dc
leaq 0x180(%rsp), %rdx
movl $0x0, 0x18(%rdx)
leaq 0x1a8(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x3e0e
movq %rsp, %r14
leaq 0x1a8(%rsp), %rsi
movq %r14, %rdi
callq 0x3e54
leaq 0x1a8(%rsp), %rdi
callq 0x3e8e
leaq 0x180(%rsp), %rdi
callq 0x3e8e
leaq 0x1d0(%rsp), %rdi
callq 0x3e8e
leaq 0x158(%rsp), %rdi
callq 0x3e8e
movl (%rsp), %ebp
movl 0x8(%rsp), %eax
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rcx
movq %rcx, (%rdi)
leaq 0x8f(%rsp), %rcx
movq %rcx, 0x8(%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xabdd(%rip), %r15      # 0xd740
callq *(%r15,%rax,8)
movl %eax, %ebx
leaq 0x18(%rsp), %rax
movl (%rax), %ecx
leaq 0x48(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x8e(%rsp), %rax
movq %rax, 0x8(%rdi)
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
callq *(%r15,%rcx,8)
addl %ebp, %ebx
addl %eax, %ebx
cmpl $0xf, %ebx
jne 0x347d
movq %rsp, %rdi
callq 0x3e8e
xorl %ebx, %ebx
movl %ebx, 0x138(%rsp)
leaq 0xf8(%rsp), %rdx
movl %ebx, (%rdx)
leaq 0xe8(%rsp), %rcx
movl %ebx, (%rcx)
leaq 0x108(%rsp), %rdi
movl $0x3, %esi
callq 0x3edc
leaq 0xd8(%rsp), %rdx
movl %ebx, (%rdx)
leaq 0xc8(%rsp), %rcx
movl %ebx, (%rcx)
leaq 0xa8(%rsp), %rdi
movl $0x5, %esi
callq 0x3edc
leaq 0x148(%rsp), %r13
movl $0x0, (%r13)
leaq 0x118(%rsp), %rdi
leaq 0xa8(%rsp), %rdx
movl $0x4, %esi
movq %r13, %rcx
callq 0x3edc
leaq 0x128(%rsp), %rdi
leaq 0x108(%rsp), %rbx
leaq 0x118(%rsp), %r14
movl $0x2, %esi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x3edc
leaq 0x48(%rsp), %rdi
leaq 0x138(%rsp), %rdx
leaq 0x128(%rsp), %r15
movq %rdi, %r12
movl $0x1, %esi
movq %rdx, %rbp
movq %r15, %rcx
callq 0x3edc
movl 0x128(%rsp), %eax
movq %rsp, %rdi
movq %r15, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xab42(%rip), %r15      # 0xd7d0
callq *(%r15,%rax,8)
movl 0x118(%rsp), %eax
movq %rsp, %rdi
movq %r14, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r15,%rax,8)
movl 0x148(%rsp), %eax
movq %rsp, %rdi
movq %r13, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r15,%rax,8)
movl 0xa8(%rsp), %eax
movq %rsp, %rdi
leaq 0xa8(%rsp), %rcx
movq %rcx, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r15,%rax,8)
movl 0xc8(%rsp), %eax
movq %rsp, %rdi
leaq 0xc8(%rsp), %rcx
movq %rcx, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r15,%rax,8)
movl 0xd8(%rsp), %eax
movq %rsp, %rdi
leaq 0xd8(%rsp), %rcx
movq %rcx, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r15,%rax,8)
movl 0x108(%rsp), %eax
movq %rsp, %rdi
movq %rbx, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r15,%rax,8)
movl 0xe8(%rsp), %eax
movq %rsp, %rdi
leaq 0xe8(%rsp), %rcx
movq %rcx, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r15,%rax,8)
movl 0xf8(%rsp), %eax
movq %rsp, %rdi
leaq 0xf8(%rsp), %rcx
movq %rcx, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r15,%rax,8)
movl 0x138(%rsp), %eax
movq %rsp, %rdi
movq %rbp, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r15,%rax,8)
movl 0x48(%rsp), %eax
movq %rsp, %rdi
movq %r12, (%rdi)
leaq 0x8d(%rsp), %rcx
movq %rcx, 0x8(%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa9ce(%rip), %rcx      # 0xd770
callq *(%rcx,%rax,8)
cmpl $0xf, %eax
jne 0x349c
movl 0x48(%rsp), %eax
movq %rsp, %rdi
movq %r12, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r15,%rax,8)
leaq 0x68(%rsp), %rsi
movl $0x0, (%rsi)
movl $0x2a, 0x8(%rsi)
leaq 0x38(%rsp), %rdi
movl $0x1, -0x8(%rdi)
callq 0x65de
movl $0x1, (%rsp)
movl 0x30(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, 0x8(%rsp)
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rcx
movq %rcx, (%rdi)
leaq 0x30(%rsp), %rcx
movq %rcx, 0x8(%rdi)
leaq 0xad5b(%rip), %rcx      # 0xdb70
callq *(%rcx,%rax,8)
leaq 0x48(%rsp), %rdi
leaq 0x30(%rsp), %rax
movq %rax, (%rdi)
movl 0x30(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xad2b(%rip), %rbx      # 0xdb60
callq *(%rbx,%rax,8)
leaq 0x48(%rsp), %rdi
leaq 0x68(%rsp), %rax
movq %rax, (%rdi)
movl 0x68(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbx,%rax,8)
movq %rsp, %r14
movq %r14, %rdi
callq 0x66e4
movq %rax, %rdi
callq 0x6742
movq (%rax), %rdi
callq 0x67a0
cmpl $0x2a, (%rax)
jne 0x34bb
leaq 0x48(%rsp), %rdi
movq %r14, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xacf4(%rip), %rcx      # 0xdb80
callq *(%rcx,%rax,8)
movl $0x1, 0x30(%rsp)
movl $0x2a, 0x38(%rsp)
leaq 0x48(%rsp), %r14
movl $0x2, (%r14)
movb $0x61, 0x8(%r14)
leaq 0x8(%rsp), %r15
movl $0x0, -0x8(%r15)
movq %r15, %rdi
movq %r14, %rsi
callq 0x6888
leaq 0x70(%rsp), %rdi
movl $0x0, -0x8(%rdi)
movq %rsp, %r12
movq %r12, %rsi
callq 0x6888
leaq 0x78(%rsp), %rdi
movq %r12, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xacba(%rip), %r13      # 0xdbb0
callq *(%r13,%rax,8)
leaq 0x78(%rsp), %rdi
movq %r14, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r13,%rax,8)
movl $0x1, %eax
movl %eax, 0x48(%rsp)
movl $0x2a, %ecx
movl %ecx, 0x50(%rsp)
movq %rsp, %r12
movl %eax, (%r12)
movl %eax, 0x8(%r12)
movl %ecx, 0x10(%r12)
leaq 0x80(%rsp), %rdi
movl $0x0, -0x8(%rdi)
movq %r12, %rsi
callq 0x6888
leaq 0x90(%rsp), %rdi
movq %r12, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r13,%rax,8)
leaq 0x90(%rsp), %rdi
movq %r14, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xac22(%rip), %rcx      # 0xdba0
callq *(%rcx,%rax,8)
movq %rsp, %r14
movl $0x2, (%r14)
movb $0x61, 0x8(%r14)
leaq 0x98(%rsp), %rdi
movl $0x0, -0x8(%rdi)
movq %r14, %rsi
callq 0x6888
leaq 0x48(%rsp), %rdi
movq %r14, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r13,%rax,8)
leaq 0x78(%rsp), %rbx
movq %rbx, %rdi
callq 0x6976
movq (%rax), %rdi
callq 0x69d0
movl 0x30(%rsp), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
andl (%rax), %edx
cmpl %edx, %ecx
jne 0x34da
movq %rsp, %rdi
leaq 0x30(%rsp), %rdx
movq %rdx, (%rdi)
movq %rax, 0x8(%rdi)
leaq 0xac00(%rip), %rax      # 0xdc00
callq *(%rax,%rcx,8)
testb %al, %al
je 0x34da
leaq 0x68(%rsp), %rdi
callq 0x6976
movq (%rax), %rdi
callq 0x6a8a
movq (%rax), %r12
leaq 0x90(%rsp), %r14
movq %r14, %rdi
callq 0x6976
movq (%rax), %rcx
movl (%r12), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
andl (%rcx), %edx
cmpl %edx, %eax
jne 0x34f9
movq %rsp, %rdi
movq %r12, (%rdi)
movq %rcx, 0x8(%rdi)
leaq 0xabb4(%rip), %rbp      # 0xdc10
callq *(%rbp,%rax,8)
testb %al, %al
je 0x34f9
movl $0x1, (%rsp)
movl 0x90(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, 0x8(%rsp)
leaq 0x48(%rsp), %rdi
movq %r15, (%rdi)
movq %r14, 0x8(%rdi)
leaq 0xab9e(%rip), %rcx      # 0xdc30
callq *(%rcx,%rax,8)
leaq 0xc0(%rsp), %rdi
movl $0x0, -0x8(%rdi)
movq %rsp, %r12
movq %r12, %rsi
callq 0x6888
leaq 0x30(%rsp), %rdi
leaq 0xb8(%rsp), %r15
movq %r15, %rsi
callq 0x6c74
leaq 0x48(%rsp), %rdi
movq %r15, (%rdi)
movl 0xb8(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xaac1(%rip), %rcx      # 0xdba0
callq *(%rcx,%rax,8)
leaq 0x48(%rsp), %rdi
movq %r12, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r13,%rax,8)
leaq 0x30(%rsp), %r13
movq %r13, %rdi
callq 0x6976
movq (%rax), %rdi
callq 0x69d0
movq %rax, %rdi
callq 0x6976
movq (%rax), %r15
leaq 0x68(%rsp), %r12
movq %r12, %rdi
callq 0x6976
movq (%rax), %rdi
callq 0x6a8a
movq (%rax), %rcx
movl (%r15), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
andl (%rcx), %edx
cmpl %edx, %eax
jne 0x3518
movq %rsp, %rdi
movq %r15, (%rdi)
movq %rcx, 0x8(%rdi)
callq *(%rbp,%rax,8)
testb %al, %al
je 0x3518
movq %rsp, %rdi
movq %r14, (%rdi)
movl 0x90(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xaa2b(%rip), %rcx      # 0xdba0
callq *(%rcx,%rax,8)
movq %rsp, %rdi
movq %rbx, (%rdi)
movl 0x78(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xaa12(%rip), %rcx      # 0xdba0
callq *(%rcx,%rax,8)
movq %rsp, %rdi
movq %r12, (%rdi)
movl 0x68(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa9f9(%rip), %rcx      # 0xdba0
callq *(%rcx,%rax,8)
movq %rsp, %rdi
movq %r13, (%rdi)
movl 0x30(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa9e0(%rip), %rcx      # 0xdba0
callq *(%rcx,%rax,8)
xorl %eax, %eax
movl %eax, 0x30(%rsp)
movq %rsp, %r15
movl %eax, (%r15)
movl $0x2a, 0x10(%r15)
leaq 0x48(%rsp), %r14
movl $0x1, (%r14)
movq %r14, %rdi
movq %r15, %rsi
callq 0x458c
movl (%rsp), %eax
leaq 0x68(%rsp), %rdi
movq %r15, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa5db(%rip), %rbp      # 0xd7e0
callq *(%rbp,%rax,8)
movl 0x30(%rsp), %eax
leaq 0x68(%rsp), %r15
movq %r13, (%r15)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq %r15, %rdi
callq *(%rbp,%rax,8)
xorl %eax, %eax
movl %eax, 0x68(%rsp)
movq %rsp, %r13
movl %eax, (%r13)
movl $0x2a, 0x10(%r13)
leaq 0x30(%rsp), %r12
movq %r12, %rdi
movq %r13, %rsi
callq 0x3fe2
movl (%rsp), %eax
leaq 0x78(%rsp), %rdi
movq %r13, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa593(%rip), %r13      # 0xd7f0
callq *(%r13,%rax,8)
movl 0x68(%rsp), %eax
leaq 0x78(%rsp), %rdi
movq %r15, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r13,%rax,8)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
andl 0x30(%rsp), %ecx
cmpl %ecx, %eax
jne 0x3537
movq %rsp, %rdi
movq %r14, (%rdi)
movq %r12, 0x8(%rdi)
leaq 0xa55d(%rip), %rcx      # 0xd800
callq *(%rcx,%rax,8)
testb %al, %al
je 0x3537
movl 0x30(%rsp), %eax
movq %rsp, %rdi
movq %r12, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r13,%rax,8)
movl 0x48(%rsp), %eax
movq %rsp, %rdi
movq %r14, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbp,%rax,8)
xorl %eax, %eax
movq %rsp, %rsi
movl %eax, (%rsi)
movl $0x1, %ecx
movl %ecx, 0x8(%rsi)
movl %eax, 0x10(%rsi)
movl $0x2, 0x18(%rsi)
movl %eax, 0x20(%rsi)
movl $0x3, 0x28(%rsi)
leaq 0x50(%rsp), %rdi
movl %ecx, -0x8(%rdi)
callq 0x74ae
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x48f2
movl 0x48(%rsp), %eax
movq %r14, (%rbx)
leaq 0x8c(%rsp), %rcx
movq %rcx, 0x8(%rbx)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa481(%rip), %rcx      # 0xd7b0
movq %rsp, %rdi
callq *(%rcx,%rax,8)
movl 0x48(%rsp), %eax
movq %rsp, %rdi
movq %r14, (%rdi)
movq %r15, 0x8(%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa471(%rip), %rcx      # 0xd7c0
callq *(%rcx,%rax,8)
movq %rsp, %rdi
movq %r14, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa9e8(%rip), %rcx      # 0xdd50
callq *(%rcx,%rax,8)
movabsq $0x2a00000000, %rax     # imm = 0x2A00000000
movq %rax, 0x48(%rsp)
movabsq $0x2a00000002, %rax     # imm = 0x2A00000002
leaq 0x30(%rsp), %r15
movq %rax, (%r15)
movq %r15, %rdi
callq 0x7588
cmpl $0x2a, (%rax)
jne 0x3556
movabsq $0x2a00000001, %rax     # imm = 0x2A00000001
leaq 0x68(%rsp), %r12
movq %rax, (%r12)
movq %r12, %rdi
callq 0x75ec
cmpl $0x2a, (%rax)
jne 0x3575
movq %rsp, %rdi
movq %r12, (%rdi)
movl 0x68(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa9c9(%rip), %rcx      # 0xdda0
callq *(%rcx,%rax,8)
movq %rsp, %rdi
movq %r15, (%rdi)
movl 0x30(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa990(%rip), %rcx      # 0xdd80
callq *(%rcx,%rax,8)
movq %rsp, %rdi
movq %r14, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa967(%rip), %rcx      # 0xdd70
callq *(%rcx,%rax,8)
xorl %eax, %eax
addq $0x1f8, %rsp            # imm = 0x1F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4c8d(%rip), %rdi      # 0x80b4
leaq 0x4bf4(%rip), %rsi      # 0x8022
leaq 0x4bfa(%rip), %rcx      # 0x802f
movl $0x7d, %edx
callq 0x2080
leaq 0x4c85(%rip), %rdi      # 0x80cb
leaq 0x4bd5(%rip), %rsi      # 0x8022
leaq 0x4bdb(%rip), %rcx      # 0x802f
movl $0x8d, %edx
callq 0x2080
leaq 0x4c9d(%rip), %rdi      # 0x8102
leaq 0x4bb6(%rip), %rsi      # 0x8022
leaq 0x4bbc(%rip), %rcx      # 0x802f
movl $0x8f, %edx
callq 0x2080
leaq 0x4c89(%rip), %rdi      # 0x810d
leaq 0x4b97(%rip), %rsi      # 0x8022
leaq 0x4b9d(%rip), %rcx      # 0x802f
movl $0xae, %edx
callq 0x2080
leaq 0x4c90(%rip), %rdi      # 0x8133
leaq 0x4b78(%rip), %rsi      # 0x8022
leaq 0x4b7e(%rip), %rcx      # 0x802f
movl $0xc9, %edx
callq 0x2080
leaq 0x4c81(%rip), %rdi      # 0x8143
leaq 0x4b59(%rip), %rsi      # 0x8022
leaq 0x4b5f(%rip), %rcx      # 0x802f
movl $0xd2, %edx
callq 0x2080
leaq 0x4c82(%rip), %rdi      # 0x8163
leaq 0x4b3a(%rip), %rsi      # 0x8022
leaq 0x4b40(%rip), %rcx      # 0x802f
movl $0xe3, %edx
callq 0x2080
leaq 0x4c7a(%rip), %rdi      # 0x817a
leaq 0x4b1b(%rip), %rsi      # 0x8022
leaq 0x4b21(%rip), %rcx      # 0x802f
movl $0xe4, %edx
callq 0x2080
leaq 0x4c7a(%rip), %rdi      # 0x8199
leaq 0x4afc(%rip), %rsi      # 0x8022
leaq 0x4b02(%rip), %rcx      # 0x802f
movl $0xe6, %edx
callq 0x2080
leaq 0x4c8a(%rip), %rdi      # 0x81c8
leaq 0x4add(%rip), %rsi      # 0x8022
leaq 0x4ae3(%rip), %rcx      # 0x802f
movl $0xf2, %edx
callq 0x2080
leaq 0x4c74(%rip), %rdi      # 0x81d1
leaq 0x4abe(%rip), %rsi      # 0x8022
leaq 0x4ac4(%rip), %rcx      # 0x802f
movl $0x12b, %edx            # imm = 0x12B
callq 0x2080
leaq 0x4c77(%rip), %rdi      # 0x81f3
leaq 0x4a9f(%rip), %rsi      # 0x8022
leaq 0x4aa5(%rip), %rcx      # 0x802f
movl $0x12e, %edx            # imm = 0x12E
callq 0x2080
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
movq %rsp, %rdi
movq %r12, (%rdi)
movl 0x68(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa7e4(%rip), %rcx      # 0xdda0
callq *(%rcx,%rax,8)
jmp 0x35c9
jmp 0x3e06
movq %rax, %rbx
movq %rsp, %rdi
movq %r15, (%rdi)
movl 0x30(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa7a1(%rip), %rcx      # 0xdd80
callq *(%rcx,%rax,8)
movq %rsp, %rdi
movq %r14, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa778(%rip), %rcx      # 0xdd70
callq *(%rcx,%rax,8)
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa726(%rip), %rcx      # 0xdd50
callq *(%rcx,%rax,8)
jmp 0x3dfe
jmp 0x3e06
movq %rax, %rbx
movq %rsp, %rdi
callq 0x48f2
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
movl 0x30(%rsp), %eax
leaq 0x68(%rsp), %rdi
movq %r12, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r13,%rax,8)
jmp 0x36ae
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
movl (%rsp), %eax
leaq 0x78(%rsp), %rdi
movq %r13, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa15b(%rip), %r12      # 0xd7f0
callq *(%r12,%rax,8)
movl 0x68(%rsp), %eax
leaq 0x78(%rsp), %rdi
movq %r15, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r12,%rax,8)
movl 0x48(%rsp), %eax
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbp,%rax,8)
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
movl (%rsp), %eax
leaq 0x68(%rsp), %rdi
movq %r15, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa0e5(%rip), %r14      # 0xd7e0
callq *(%r14,%rax,8)
movl 0x30(%rsp), %eax
leaq 0x68(%rsp), %rdi
movq %r13, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r14,%rax,8)
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x378a
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
movq %r15, (%rdi)
movl 0xb8(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa43f(%rip), %rcx      # 0xdba0
callq *(%rcx,%rax,8)
jmp 0x376e
jmp 0x3e06
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
movq %r12, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r13,%rax,8)
jmp 0x378d
jmp 0x3e06
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
leaq 0x90(%rsp), %rax
movq %rax, (%rdi)
movl 0x90(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa3ed(%rip), %rcx      # 0xdba0
callq *(%rcx,%rax,8)
jmp 0x37da
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
movq %r14, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r13,%rax,8)
leaq 0x90(%rsp), %rdi
leaq 0x78(%rsp), %rax
movq %rax, (%rdi)
movl 0x78(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa3a6(%rip), %rcx      # 0xdba0
callq *(%rcx,%rax,8)
jmp 0x384c
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
movq %r12, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r13,%rax,8)
leaq 0x90(%rsp), %rdi
movq %r14, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa357(%rip), %rcx      # 0xdba0
callq *(%rcx,%rax,8)
leaq 0x78(%rsp), %rdi
leaq 0x68(%rsp), %rax
movq %rax, (%rdi)
movl 0x68(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa337(%rip), %rcx      # 0xdba0
callq *(%rcx,%rax,8)
jmp 0x38c9
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
movq %r12, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa30f(%rip), %rcx      # 0xdbb0
callq *(%rcx,%rax,8)
jmp 0x38ae
jmp 0x3e06
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
movq %r14, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa2ea(%rip), %rcx      # 0xdbb0
callq *(%rcx,%rax,8)
leaq 0x68(%rsp), %rdi
leaq 0x30(%rsp), %rax
movq %rax, (%rdi)
movl 0x30(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa2ba(%rip), %rcx      # 0xdba0
callq *(%rcx,%rax,8)
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
movq %r14, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa269(%rip), %rcx      # 0xdb80
callq *(%rcx,%rax,8)
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
leaq 0x30(%rsp), %rax
movq %rax, (%rdi)
movl 0x30(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa212(%rip), %rcx      # 0xdb60
callq *(%rcx,%rax,8)
jmp 0x395b
jmp 0x3e06
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
leaq 0x68(%rsp), %rax
movq %rax, (%rdi)
movl 0x68(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0xa1e8(%rip), %rcx      # 0xdb60
callq *(%rcx,%rax,8)
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
movl 0x48(%rsp), %eax
leaq 0x30(%rsp), %rdi
movq %r12, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r15,%rax,8)
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
movl 0x128(%rsp), %eax
movq %rsp, %rdi
movq %r15, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9dd6(%rip), %rcx      # 0xd7d0
callq *(%rcx,%rax,8)
jmp 0x3a07
jmp 0x3e06
movq %rax, %rbx
movl 0x118(%rsp), %eax
movq %rsp, %rdi
movq %r14, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9db0(%rip), %rcx      # 0xd7d0
callq *(%rcx,%rax,8)
jmp 0x3a2d
jmp 0x3e06
movq %rax, %rbx
movl 0x148(%rsp), %eax
movq %rsp, %rdi
movq %r13, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9d8a(%rip), %r14      # 0xd7d0
callq *(%r14,%rax,8)
movl 0xa8(%rsp), %eax
movq %rsp, %rdi
leaq 0xa8(%rsp), %rcx
movq %rcx, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r14,%rax,8)
jmp 0x3a77
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
movl 0xc8(%rsp), %eax
movq %rsp, %rdi
leaq 0xc8(%rsp), %rcx
movq %rcx, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9d38(%rip), %r14      # 0xd7d0
callq *(%r14,%rax,8)
movl 0xd8(%rsp), %eax
movq %rsp, %rdi
leaq 0xd8(%rsp), %rcx
movq %rcx, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r14,%rax,8)
movl 0x108(%rsp), %eax
movq %rsp, %rdi
leaq 0x108(%rsp), %rcx
movq %rcx, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r14,%rax,8)
jmp 0x3aec
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
movl 0xe8(%rsp), %eax
movq %rsp, %rdi
leaq 0xe8(%rsp), %rcx
movq %rcx, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9cc3(%rip), %r14      # 0xd7d0
callq *(%r14,%rax,8)
movl 0xf8(%rsp), %eax
movq %rsp, %rdi
leaq 0xf8(%rsp), %rcx
movq %rcx, (%rdi)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%r14,%rax,8)
leaq 0x138(%rsp), %rax
movl (%rax), %ecx
movq %rsp, %rdi
movq %rax, (%rdi)
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
callq *(%r14,%rcx,8)
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
jmp 0x3b9e
movq %rax, %rbx
leaq 0x1a8(%rsp), %rdi
callq 0x3e8e
jmp 0x3b77
movq %rax, %rbx
leaq 0x180(%rsp), %rdi
callq 0x3e8e
jmp 0x3b89
movq %rax, %rbx
leaq 0x1d0(%rsp), %rdi
callq 0x3e8e
leaq 0x158(%rsp), %r14
movq %r14, %rdi
callq 0x3e8e
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
jmp 0x3bb9
jmp 0x3bb9
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
movq %r15, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9f1c(%rip), %rcx      # 0xdaf0
callq *(%rcx,%rax,8)
jmp 0x3be1
jmp 0x3e06
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
movq %r12, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9ef8(%rip), %rcx      # 0xdaf0
callq *(%rcx,%rax,8)
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
callq 0x2100
jmp 0x3c1c
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
movq %r13, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbp,%rax,8)
jmp 0x3c3b
jmp 0x3e06
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
movq %r15, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbp,%rax,8)
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
movq %r13, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9dee(%rip), %rcx      # 0xda70
callq *(%rcx,%rax,8)
jmp 0x3c91
jmp 0x3e06
jmp 0x3c8e
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
movq %r12, (%rdi)
movl 0x30(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9dc7(%rip), %rcx      # 0xda70
callq *(%rcx,%rax,8)
jmp 0x3cb6
jmp 0x3e06
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
movq %r15, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9da2(%rip), %rcx      # 0xda70
callq *(%rcx,%rax,8)
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
movq %rax, %rbx
callq 0x2100
jmp 0x3cf2
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
movq %r12, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9ce6(%rip), %rcx      # 0xd9f0
callq *(%rcx,%rax,8)
jmp 0x3d17
jmp 0x3e06
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
movq %r15, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9cc2(%rip), %rcx      # 0xd9f0
callq *(%rcx,%rax,8)
jmp 0x3dfe
jmp 0x3e06
jmp 0x3e06
jmp 0x3e06
jmp 0x3d6f
jmp 0x3e06
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
movq %rsp, %rax
movq %rax, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbp,%rax,8)
jmp 0x3dc1
jmp 0x3e06
jmp 0x3dbe
movq %rax, %rbx
callq 0x2100
jmp 0x3dc1
jmp 0x3e06
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
movq %r14, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
callq *(%rbp,%rax,8)
jmp 0x3dc1
jmp 0x3e06
jmp 0x3dbe
jmp 0x3e06
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
movq %r14, (%rdi)
movl (%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9a99(%rip), %rcx      # 0xd850
callq *(%rcx,%rax,8)
jmp 0x3dc1
jmp 0x3e06
movq %rax, %rbx
movq %rsp, %rdi
movq %r12, (%rdi)
movl 0x30(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9a79(%rip), %rcx      # 0xd850
callq *(%rcx,%rax,8)
jmp 0x3de3
jmp 0x3e06
jmp 0x3de0
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
movq %r15, (%rdi)
movl 0x48(%rsp), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x9a55(%rip), %rcx      # 0xd850
callq *(%rcx,%rax,8)
movq %rbx, %rdi
callq 0x2120
movq %rax, %rdi
callq 0x496a