// File: hariguchi[P]rtacl/unitTest.cpp
// Function: v4rawTest()
static void
v4rawTest ()
{
    /*
     * Sample ACL tuple and ACL entry (host byte order)
     */
    struct aclTuple {
        ipv4a sa;               // source IPv4 address
        ipv4a da;               // destination IPv4 address
        u16 sp;                 // source port number
        u16 dp;                 // destination port number
        u8 proto;               // IP protocol (TCP, UDP, etc.)
        u8 dscp;                // DSCP
    };
    struct aclEnt {
        aclTuple min;           // lower bound
        aclTuple max;           // upper bound
    };

    aclEnt ent[10];
    rtacl::db<rtacl::ipv4a> acl;
    rtacl::entry<rtacl::ipv4a> rtAclEnt;

    /*
     * Insert 10 ACL entries into R-tree
     */
    memset(ent, 0, sizeof(ent));
    size_t i;
    for (i = 0; i < elementsof(ent); ++i) {
        rtacl::tuple<rtacl::ipv4a>& min = rtAclEnt.first.min_corner();
        rtacl::tuple<rtacl::ipv4a>& max = rtAclEnt.first.max_corner();

        ent[i].min.sa = 0x0a010000 + (i << 8); // 10.1.i.0
        ent[i].max.sa = ent[i].min.sa + 10;    // 10.1.i.10
        ent[i].min.da = 0;
        ent[i].max.da = ~0;
        ent[i].min.sp = 0;
        ent[i].max.sp = ~0;
        ent[i].min.dp = 80;     // http
        ent[i].max.dp = 80;
        ent[i].min.proto = 6;   // TCP
        ent[i].max.proto = 6;
        ent[i].min.dscp = 0;
        ent[i].max.dscp = ~0;
        /*
         * sa: 10.1.i.0 - 10.1.i.10,
         * da: 0.0.0.0  - 255.255.255.255
         * sp: 0 - 65535
         * dp: 80
         * proto: TCP (6)
         * dscp: 0 - 255
         */
        acl.makeMin(ent[i].min.sa, ent[i].min.da,
                    ent[i].min.sp, ent[i].min.dp,
                    ent[i].min.proto, ent[i].min.dscp, min);
        acl.makeMax(ent[i].max.sa, ent[i].max.da,
                    ent[i].max.sp, ent[i].max.dp,
                    ent[i].max.proto, ent[i].max.dscp, max);
        rtAclEnt.second = reinterpret_cast<uintptr_t>(ent + i);
        acl.insert(rtAclEnt);
    }
    std::cout << (bfmt("size: %ld, i: %ld\n") % acl.size() % i).str();
    assert(i == acl.size());
    /*
     * Show all ACL entries
     */
    rtacl::result<rtacl::ipv4a> r = acl.dump();
    for (auto it : r) {
        rtacl::entry<rtacl::ipv4a> e;
        rtacl::tuple<rtacl::ipv4a>& min = e.first.min_corner();
        rtacl::tuple<rtacl::ipv4a>& max = e.first.max_corner();
        aclEnt* p = reinterpret_cast<aclEnt*>(it.second);
        acl.makeMin(p->min.sa, p->min.da,
                    p->min.sp, p->min.dp,
                    p->min.proto, p->min.dscp, min);
        acl.makeMax(p->max.sa, p->max.da,
                    p->max.sp, p->max.dp,
                    p->max.proto, p->max.dscp, max);
        std::cout << (bfmt("rtree: %s\nacl:   %s\n")
                      % rtacl::range2str(it.first)
                      % rtacl::range2str(e.first)).str();
    }
    /*
     * ACL match test (match)
     */
    for (i = 0; i < elementsof(ent); ++i) {
        rtacl::tuple<rtacl::ipv4a> key;
        acl.makeKey(ent[i].min.sa + 1, ent[i].min.da,
                    ent[i].min.sp, ent[i].min.dp,
                    ent[i].min.proto, ent[i].min.dscp, key);
        rtacl::result<rtacl::ipv4a> result = acl.find(key);
        if (result.size() != 1) {
            std::cout << "Error: no match. key: ";
            std::cout << (bfmt("%s\n") % rtacl::tuple2str(key)).str();
        }
        for (auto r : result) {
            assert(reinterpret_cast<uintptr_t>(ent + i) == r.second);
            std::cout << (bfmt("ent: %p, result: 0x%lx\n")
                          % (ent + i)
                          % r.second).str();
        }
    }
    /*
     * ACL match test (unmatch)
     */
    for (i = 0; i < elementsof(ent); ++i) {
        rtacl::tuple<rtacl::ipv4a> key;
        acl.makeKey(ent[i].min.sa + 11, ent[i].min.da,
                    ent[i].min.sp, ent[i].min.dp,
                    ent[i].min.proto, ent[i].min.dscp, key);
        rtacl::result<rtacl::ipv4a> result = acl.find(key);
        if (result.size() == 0) {
            std::cout << "no match (correct): key: ";
            std::cout << (bfmt("%s\n") % rtacl::tuple2str(key)).str();
        } else {
            std::cout << "Error: matched: key: ";
            std::cout << (bfmt("%s\n") % rtacl::tuple2str(key)).str();

            for (auto it : result) {
                std::cout << (bfmt("%s, %p\n")
                              % rtacl::range2str(it.first)
                              % it.second).str();
            }
        }
    }
    /*
     * Remove ACL entries
     */
    for (i = 0; i < elementsof(ent); ++i) {
        rtacl::entry<rtacl::ipv4a> e;
        rtacl::tuple<rtacl::ipv4a>& min = e.first.min_corner();
        rtacl::tuple<rtacl::ipv4a>& max = e.first.max_corner();
        acl.makeMin(ent[i].min.sa, ent[i].min.da,
                    ent[i].min.sp, ent[i].min.dp,
                    ent[i].min.proto, ent[i].min.dscp, min);
        acl.makeMax(ent[i].max.sa, ent[i].max.da,
                    ent[i].max.sp, ent[i].max.dp,
                    ent[i].max.proto, ent[i].max.dscp, max);
        e.second = reinterpret_cast<uintptr_t>(ent + i);
        bool rc = acl.remove(e);
        if (rc) {
            std::cout << (bfmt("size: %2ld: ") % acl.size()).str();

            rtacl::tuple<rtacl::ipv4a> key;
            acl.makeKey(ent[i].min.sa + 1, ent[i].min.da,
                        ent[i].min.sp, ent[i].min.dp,
                        ent[i].min.proto, ent[i].min.dscp, key);
            rtacl::result<rtacl::ipv4a> result = acl.find(key);
            if (result.size() == 0) {
                std::cout << (bfmt("no match (correct): key: %s\n")
                              % rtacl::tuple2str(key)).str();
            } else {
                std::cout << (bfmt("Error: matched: key: %s\n")
                              % rtacl::tuple2str(key)).str();
                for (auto it : result) {
                    std::cout << (bfmt("%s, %p\n")
                                  % rtacl::range2str(it.first)
                                  % it.second).str();
                }
            }
        } else {
            std::cout << (bfmt("Error: failed to remove acl entry: %s %ld\n")
                          % rtacl::range2str(e.first)
                          % e.second).str();
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1480, %rsp           # imm = 0x1480
leaq -0x160(%rbp), %rdi
callq 0xa1a0
leaq -0x1c8(%rbp), %rdi
callq 0xa210
jmp 0x59a5
leaq -0x140(%rbp), %rdi
xorl %esi, %esi
movl $0x140, %edx            # imm = 0x140
callq 0x51b0
movq $0x0, -0x1e0(%rbp)
movq -0x1e0(%rbp), %rax
movq %rax, -0x1350(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x9b20
movq %rax, -0x1348(%rbp)
jmp 0x59e6
movq -0x1350(%rbp), %rax
movq -0x1348(%rbp), %rcx
cmpq %rcx, %rax
jae 0x5c6f
leaq -0x1c8(%rbp), %rdi
callq 0xa250
movq %rax, -0x1358(%rbp)
jmp 0x5a12
movq -0x1358(%rbp), %rax
movq %rax, -0x1e8(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0xa260
movq %rax, -0x1360(%rbp)
jmp 0x5a35
movq -0x1360(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movq -0x1e0(%rbp), %rax
movl %eax, %ecx
shll $0x8, %ecx
addl $0xa010000, %ecx        # imm = 0xA010000
shlq $0x5, %rax
movl %ecx, -0x140(%rbp,%rax)
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movl -0x140(%rbp,%rax), %ecx
addl $0xa, %ecx
movl %ecx, -0x130(%rbp,%rax)
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movl $0x0, -0x13c(%rbp,%rax)
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movl $0xffffffff, -0x12c(%rbp,%rax) # imm = 0xFFFFFFFF
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movw $0x0, -0x138(%rbp,%rax)
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movw $0xffff, -0x128(%rbp,%rax) # imm = 0xFFFF
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movw $0x50, -0x136(%rbp,%rax)
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movw $0x50, -0x126(%rbp,%rax)
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movb $0x6, -0x134(%rbp,%rax)
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movb $0x6, -0x124(%rbp,%rax)
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movb $0x0, -0x133(%rbp,%rax)
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movb $-0x1, -0x123(%rbp,%rax)
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movl -0x140(%rbp,%rax), %edx
movl -0x13c(%rbp,%rax), %ecx
movl %edx, %esi
movl %ecx, %edx
movzwl -0x138(%rbp,%rax), %ecx
movzwl -0x136(%rbp,%rax), %edi
movl %edi, %r8d
movzbl -0x134(%rbp,%rax), %edi
movl %edi, %r9d
movzbl -0x133(%rbp,%rax), %eax
movl %eax, %edi
movq -0x1e8(%rbp), %r10
movq %rsp, %rax
movq %r10, 0x8(%rax)
movq %rdi, (%rax)
leaq -0x160(%rbp), %rdi
callq 0xa280
jmp 0x5bac
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movl -0x130(%rbp,%rax), %edx
movl -0x12c(%rbp,%rax), %ecx
movl %edx, %esi
movl %ecx, %edx
movzwl -0x128(%rbp,%rax), %ecx
movzwl -0x126(%rbp,%rax), %edi
movl %edi, %r8d
movzbl -0x124(%rbp,%rax), %edi
movl %edi, %r9d
movzbl -0x123(%rbp,%rax), %eax
movl %eax, %edi
movq -0x1f0(%rbp), %r10
movq %rsp, %rax
movq %r10, 0x8(%rax)
movq %rdi, (%rax)
leaq -0x160(%rbp), %rdi
callq 0xa2f0
jmp 0x5c10
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
leaq -0x140(%rbp,%rax), %rax
movq %rax, -0x168(%rbp)
leaq -0x160(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0xa360
jmp 0x5c3f
jmp 0x5c41
movq -0x1e0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1e0(%rbp)
jmp 0x59c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x7243
leaq 0x49dc7(%rip), %rsi     # 0x4fa3d
leaq -0x2f0(%rbp), %rdi
callq 0xa390
jmp 0x5c84
leaq -0x160(%rbp), %rdi
callq 0xa540
movq %rax, -0x1368(%rbp)
jmp 0x5c99
movq -0x1368(%rbp), %rax
movq %rax, -0x2f8(%rbp)
leaq -0x2f0(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0xa510
movq %rax, -0x1370(%rbp)
jmp 0x5cc3
movq -0x1370(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0xa560
movq %rax, -0x1378(%rbp)
jmp 0x5cdf
movq -0x1378(%rbp), %rsi
leaq -0x210(%rbp), %rdi
callq 0xa590
jmp 0x5cf4
movq 0xab2bd(%rip), %rdi     # 0xb0fb8
leaq -0x210(%rbp), %rsi
callq 0x52f0
jmp 0x5d09
leaq -0x210(%rbp), %rdi
callq 0x51e0
leaq -0x2f0(%rbp), %rdi
callq 0xa7e0
movq -0x1e0(%rbp), %rax
movq %rax, -0x1388(%rbp)
leaq -0x160(%rbp), %rdi
callq 0xa540
movq %rax, -0x1380(%rbp)
jmp 0x5d44
movq -0x1388(%rbp), %rax
movq -0x1380(%rbp), %rcx
cmpq %rcx, %rax
jne 0x5d59
jmp 0x5dbb
leaq 0x49cf0(%rip), %rdi     # 0x4fa50
leaq 0x49cf9(%rip), %rsi     # 0x4fa60
movl $0x1e3, %edx            # imm = 0x1E3
leaq 0x49cfa(%rip), %rcx     # 0x4fa6d
callq 0x5220
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x5daa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x51e0
leaq -0x2f0(%rbp), %rdi
callq 0xa7e0
jmp 0x7243
leaq -0x310(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0xa840
jmp 0x5dd0
leaq -0x310(%rbp), %rax
movq %rax, -0x318(%rbp)
movq -0x318(%rbp), %rdi
callq 0xa940
movq %rax, -0x320(%rbp)
movq -0x318(%rbp), %rdi
callq 0xa970
movq %rax, -0x328(%rbp)
leaq -0x320(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0xa9a0
testb $0x1, %al
jne 0x5e20
jmp 0x60e5
leaq -0x320(%rbp), %rdi
callq 0xa9e0
movq 0x60(%rax), %rcx
movq %rcx, -0x330(%rbp)
movups 0x50(%rax), %xmm0
movaps %xmm0, -0x340(%rbp)
movups 0x40(%rax), %xmm0
movaps %xmm0, -0x350(%rbp)
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups 0x20(%rax), %xmm2
movups 0x30(%rax), %xmm3
movaps %xmm3, -0x360(%rbp)
movaps %xmm2, -0x370(%rbp)
movaps %xmm1, -0x380(%rbp)
movaps %xmm0, -0x390(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0xa210
jmp 0x5e86
leaq -0x3f8(%rbp), %rdi
callq 0xa250
movq %rax, -0x1390(%rbp)
jmp 0x5e9b
movq -0x1390(%rbp), %rax
movq %rax, -0x400(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0xa260
movq %rax, -0x1398(%rbp)
jmp 0x5ebe
movq -0x1398(%rbp), %rax
movq %rax, -0x408(%rbp)
movq -0x330(%rbp), %rax
movq %rax, -0x410(%rbp)
movq -0x410(%rbp), %rax
movl (%rax), %edx
movl 0x4(%rax), %ecx
movl %edx, %esi
movl %ecx, %edx
movzwl 0x8(%rax), %ecx
movzwl 0xa(%rax), %edi
movl %edi, %r8d
movzbl 0xc(%rax), %edi
movl %edi, %r9d
movzbl 0xd(%rax), %eax
movl %eax, %edi
movq -0x400(%rbp), %r10
movq %rsp, %rax
movq %r10, 0x8(%rax)
movq %rdi, (%rax)
leaq -0x160(%rbp), %rdi
callq 0xa280
jmp 0x5f21
movq -0x410(%rbp), %rax
movl 0x10(%rax), %edx
movl 0x14(%rax), %ecx
movl %edx, %esi
movl %ecx, %edx
movzwl 0x18(%rax), %ecx
movzwl 0x1a(%rax), %edi
movl %edi, %r8d
movzbl 0x1c(%rax), %edi
movl %edi, %r9d
movzbl 0x1d(%rax), %eax
movl %eax, %edi
movq -0x408(%rbp), %r10
movq %rsp, %rax
movq %r10, 0x8(%rax)
movq %rdi, (%rax)
leaq -0x160(%rbp), %rdi
callq 0xa2f0
jmp 0x5f69
leaq 0x49b0e(%rip), %rsi     # 0x4fa7e
leaq -0x510(%rbp), %rdi
callq 0xa390
jmp 0x5f7e
leaq -0x530(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xaa30
jmp 0x5f93
leaq -0x510(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0xaa00
movq %rax, -0x13a0(%rbp)
jmp 0x5faf
leaq -0x550(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0xaa30
jmp 0x5fc4
movq -0x13a0(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0xaa00
movq %rax, -0x13a8(%rbp)
jmp 0x5fe0
movq -0x13a8(%rbp), %rsi
leaq -0x430(%rbp), %rdi
callq 0xa590
jmp 0x5ff5
movq 0xaafbc(%rip), %rdi     # 0xb0fb8
leaq -0x430(%rbp), %rsi
callq 0x52f0
jmp 0x600a
leaq -0x430(%rbp), %rdi
callq 0x51e0
leaq -0x550(%rbp), %rdi
callq 0x51e0
leaq -0x530(%rbp), %rdi
callq 0x51e0
leaq -0x510(%rbp), %rdi
callq 0xa7e0
leaq -0x320(%rbp), %rdi
callq 0xae30
jmp 0x5e04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x7237
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x60d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x60c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x60bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x430(%rbp), %rdi
callq 0x51e0
leaq -0x550(%rbp), %rdi
callq 0x51e0
leaq -0x530(%rbp), %rdi
callq 0x51e0
leaq -0x510(%rbp), %rdi
callq 0xa7e0
jmp 0x7237
movq $0x0, -0x1e0(%rbp)
movq -0x1e0(%rbp), %rax
movq %rax, -0x13b8(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x9b20
movq %rax, -0x13b0(%rbp)
jmp 0x6113
movq -0x13b8(%rbp), %rax
movq -0x13b0(%rbp), %rcx
cmpq %rcx, %rax
jae 0x64c4
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movl -0x140(%rbp,%rax), %edx
movl -0x13c(%rbp,%rax), %ecx
incl %edx
movl %edx, %esi
movl %ecx, %edx
movzwl -0x138(%rbp,%rax), %ecx
movzwl -0x136(%rbp,%rax), %edi
movl %edi, %r8d
movzbl -0x134(%rbp,%rax), %edi
movl %edi, %r9d
movzbl -0x133(%rbp,%rax), %eax
movl %eax, %edi
movq %rsp, %rax
leaq -0x580(%rbp), %r10
movq %r10, 0x8(%rax)
movq %rdi, (%rax)
leaq -0x160(%rbp), %rdi
callq 0xae50
jmp 0x6190
leaq -0x598(%rbp), %rdi
leaq -0x160(%rbp), %rsi
leaq -0x580(%rbp), %rdx
callq 0xaec0
jmp 0x61ac
leaq -0x598(%rbp), %rdi
callq 0xb050
cmpq $0x1, %rax
je 0x62e7
movq 0xaadef(%rip), %rdi     # 0xb0fb8
leaq 0x498c3(%rip), %rsi     # 0x4fa93
callq 0x5350
jmp 0x61d7
leaq 0x498b1(%rip), %rsi     # 0x4fa8f
leaq -0x698(%rbp), %rdi
callq 0xa390
jmp 0x61ec
leaq -0x6b8(%rbp), %rdi
leaq -0x580(%rbp), %rsi
callq 0xb080
jmp 0x6201
leaq -0x698(%rbp), %rdi
leaq -0x6b8(%rbp), %rsi
callq 0xaa00
movq %rax, -0x13c0(%rbp)
jmp 0x621d
movq -0x13c0(%rbp), %rsi
leaq -0x5b8(%rbp), %rdi
callq 0xa590
jmp 0x6232
movq 0xaad7f(%rip), %rdi     # 0xb0fb8
leaq -0x5b8(%rbp), %rsi
callq 0x52f0
jmp 0x6247
leaq -0x5b8(%rbp), %rdi
callq 0x51e0
leaq -0x6b8(%rbp), %rdi
callq 0x51e0
leaq -0x698(%rbp), %rdi
callq 0xa7e0
jmp 0x62e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x64b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x62d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x62ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x5b8(%rbp), %rdi
callq 0x51e0
leaq -0x6b8(%rbp), %rdi
callq 0x51e0
leaq -0x698(%rbp), %rdi
callq 0xa7e0
jmp 0x64b3
leaq -0x598(%rbp), %rax
movq %rax, -0x6c0(%rbp)
movq -0x6c0(%rbp), %rdi
callq 0xa940
movq %rax, -0x6c8(%rbp)
movq -0x6c0(%rbp), %rdi
callq 0xa970
movq %rax, -0x6d0(%rbp)
leaq -0x6c8(%rbp), %rdi
leaq -0x6d0(%rbp), %rsi
callq 0xa9a0
testb $0x1, %al
jne 0x6337
jmp 0x6490
leaq -0x6c8(%rbp), %rdi
callq 0xa9e0
movq %rax, %rsi
leaq -0x738(%rbp), %rdi
movl $0x68, %edx
callq 0x52c0
leaq -0x140(%rbp), %rax
movq -0x1e0(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
cmpq -0x6d8(%rbp), %rax
jne 0x6377
jmp 0x6396
leaq 0x4972c(%rip), %rdi     # 0x4faaa
leaq 0x496db(%rip), %rsi     # 0x4fa60
movl $0x205, %edx            # imm = 0x205
leaq 0x496dc(%rip), %rcx     # 0x4fa6d
callq 0x5220
leaq 0x4973e(%rip), %rsi     # 0x4fadb
leaq -0x838(%rbp), %rdi
callq 0xa390
jmp 0x63ab
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
leaq -0x140(%rbp,%rax), %rax
movq %rax, -0x840(%rbp)
leaq -0x838(%rbp), %rdi
leaq -0x840(%rbp), %rsi
callq 0x9b30
movq %rax, -0x13c8(%rbp)
jmp 0x63e1
movq -0x13c8(%rbp), %rdi
leaq -0x6d8(%rbp), %rsi
callq 0xa560
movq %rax, -0x13d0(%rbp)
jmp 0x63fd
movq -0x13d0(%rbp), %rsi
leaq -0x758(%rbp), %rdi
callq 0xa590
jmp 0x6412
movq 0xaab9f(%rip), %rdi     # 0xb0fb8
leaq -0x758(%rbp), %rsi
callq 0x52f0
jmp 0x6427
leaq -0x758(%rbp), %rdi
callq 0x51e0
leaq -0x838(%rbp), %rdi
callq 0xa7e0
leaq -0x6c8(%rbp), %rdi
callq 0xae30
jmp 0x631b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x6482
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x758(%rbp), %rdi
callq 0x51e0
leaq -0x838(%rbp), %rdi
callq 0xa7e0
jmp 0x64b3
leaq -0x598(%rbp), %rdi
callq 0xb290
movq -0x1e0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1e0(%rbp)
jmp 0x60f0
leaq -0x598(%rbp), %rdi
callq 0xb290
jmp 0x7237
movq $0x0, -0x1e0(%rbp)
movq -0x1e0(%rbp), %rax
movq %rax, -0x13e0(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x9b20
movq %rax, -0x13d8(%rbp)
jmp 0x64f2
movq -0x13e0(%rbp), %rax
movq -0x13d8(%rbp), %rcx
cmpq %rcx, %rax
jae 0x69d5
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movl -0x140(%rbp,%rax), %edx
movl -0x13c(%rbp,%rax), %ecx
addl $0xb, %edx
movl %edx, %esi
movl %ecx, %edx
movzwl -0x138(%rbp,%rax), %ecx
movzwl -0x136(%rbp,%rax), %edi
movl %edi, %r8d
movzbl -0x134(%rbp,%rax), %edi
movl %edi, %r9d
movzbl -0x133(%rbp,%rax), %eax
movl %eax, %edi
movq %rsp, %rax
leaq -0x870(%rbp), %r10
movq %r10, 0x8(%rax)
movq %rdi, (%rax)
leaq -0x160(%rbp), %rdi
callq 0xae50
jmp 0x6570
leaq -0x888(%rbp), %rdi
leaq -0x160(%rbp), %rsi
leaq -0x870(%rbp), %rdx
callq 0xaec0
jmp 0x658c
leaq -0x888(%rbp), %rdi
callq 0xb050
cmpq $0x0, %rax
jne 0x66ca
movq 0xaaa0f(%rip), %rdi     # 0xb0fb8
leaq 0x49543(%rip), %rsi     # 0x4faf3
callq 0x5350
jmp 0x65b7
leaq 0x494d1(%rip), %rsi     # 0x4fa8f
leaq -0x988(%rbp), %rdi
callq 0xa390
jmp 0x65cc
leaq -0x9a8(%rbp), %rdi
leaq -0x870(%rbp), %rsi
callq 0xb080
jmp 0x65e1
leaq -0x988(%rbp), %rdi
leaq -0x9a8(%rbp), %rsi
callq 0xaa00
movq %rax, -0x13e8(%rbp)
jmp 0x65fd
movq -0x13e8(%rbp), %rsi
leaq -0x8a8(%rbp), %rdi
callq 0xa590
jmp 0x6612
movq 0xaa99f(%rip), %rdi     # 0xb0fb8
leaq -0x8a8(%rbp), %rsi
callq 0x52f0
jmp 0x6627
leaq -0x8a8(%rbp), %rdi
callq 0x51e0
leaq -0x9a8(%rbp), %rdi
callq 0x51e0
leaq -0x988(%rbp), %rdi
callq 0xa7e0
jmp 0x69a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x69c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x66b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x66ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x8a8(%rbp), %rdi
callq 0x51e0
leaq -0x9a8(%rbp), %rdi
callq 0x51e0
leaq -0x988(%rbp), %rdi
callq 0xa7e0
jmp 0x69c4
movq 0xaa8e7(%rip), %rdi     # 0xb0fb8
leaq 0x49435(%rip), %rsi     # 0x4fb0d
callq 0x5350
jmp 0x66df
leaq 0x493a9(%rip), %rsi     # 0x4fa8f
leaq -0xaa8(%rbp), %rdi
callq 0xa390
jmp 0x66f4
leaq -0xac8(%rbp), %rdi
leaq -0x870(%rbp), %rsi
callq 0xb080
jmp 0x6709
leaq -0xaa8(%rbp), %rdi
leaq -0xac8(%rbp), %rsi
callq 0xaa00
movq %rax, -0x13f0(%rbp)
jmp 0x6725
movq -0x13f0(%rbp), %rsi
leaq -0x9c8(%rbp), %rdi
callq 0xa590
jmp 0x673a
movq 0xaa877(%rip), %rdi     # 0xb0fb8
leaq -0x9c8(%rbp), %rsi
callq 0x52f0
jmp 0x674f
leaq -0x9c8(%rbp), %rdi
callq 0x51e0
leaq -0xac8(%rbp), %rdi
callq 0x51e0
leaq -0xaa8(%rbp), %rdi
callq 0xa7e0
leaq -0x888(%rbp), %rax
movq %rax, -0xad0(%rbp)
movq -0xad0(%rbp), %rdi
callq 0xa940
movq %rax, -0xad8(%rbp)
movq -0xad0(%rbp), %rdi
callq 0xa970
movq %rax, -0xae0(%rbp)
leaq -0xad8(%rbp), %rdi
leaq -0xae0(%rbp), %rsi
callq 0xa9a0
testb $0x1, %al
jne 0x67c3
jmp 0x699f
leaq -0xad8(%rbp), %rdi
callq 0xa9e0
movq 0x60(%rax), %rcx
movq %rcx, -0xaf0(%rbp)
movups 0x50(%rax), %xmm0
movaps %xmm0, -0xb00(%rbp)
movups 0x40(%rax), %xmm0
movaps %xmm0, -0xb10(%rbp)
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups 0x20(%rax), %xmm2
movups 0x30(%rax), %xmm3
movaps %xmm3, -0xb20(%rbp)
movaps %xmm2, -0xb30(%rbp)
movaps %xmm1, -0xb40(%rbp)
movaps %xmm0, -0xb50(%rbp)
leaq 0x49301(%rip), %rsi     # 0x4fb23
leaq -0xc50(%rbp), %rdi
callq 0xa390
jmp 0x6830
leaq -0xc70(%rbp), %rdi
leaq -0xb50(%rbp), %rsi
callq 0xaa30
jmp 0x6845
leaq -0xc50(%rbp), %rdi
leaq -0xc70(%rbp), %rsi
callq 0xaa00
movq %rax, -0x13f8(%rbp)
jmp 0x6861
movq -0x13f8(%rbp), %rdi
leaq -0xaf0(%rbp), %rsi
callq 0xa560
movq %rax, -0x1400(%rbp)
jmp 0x687d
movq -0x1400(%rbp), %rsi
leaq -0xb70(%rbp), %rdi
callq 0xa590
jmp 0x6892
movq 0xaa71f(%rip), %rdi     # 0xb0fb8
leaq -0xb70(%rbp), %rsi
callq 0x52f0
jmp 0x68a7
leaq -0xb70(%rbp), %rdi
callq 0x51e0
leaq -0xc70(%rbp), %rdi
callq 0x51e0
leaq -0xc50(%rbp), %rdi
callq 0xa7e0
leaq -0xad8(%rbp), %rdi
callq 0xae30
jmp 0x67a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x692e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x6922
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x9c8(%rbp), %rdi
callq 0x51e0
leaq -0xac8(%rbp), %rdi
callq 0x51e0
leaq -0xaa8(%rbp), %rdi
callq 0xa7e0
jmp 0x69c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x6991
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x6985
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0xb70(%rbp), %rdi
callq 0x51e0
leaq -0xc70(%rbp), %rdi
callq 0x51e0
leaq -0xc50(%rbp), %rdi
callq 0xa7e0
jmp 0x69c4
jmp 0x69a1
leaq -0x888(%rbp), %rdi
callq 0xb290
movq -0x1e0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1e0(%rbp)
jmp 0x64cf
leaq -0x888(%rbp), %rdi
callq 0xb290
jmp 0x7237
movq $0x0, -0x1e0(%rbp)
movq -0x1e0(%rbp), %rax
movq %rax, -0x1410(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x9b20
movq %rax, -0x1408(%rbp)
jmp 0x6a03
movq -0x1410(%rbp), %rax
movq -0x1408(%rbp), %rcx
cmpq %rcx, %rax
jae 0x7216
leaq -0xcd8(%rbp), %rdi
callq 0xa210
jmp 0x6a28
leaq -0xcd8(%rbp), %rdi
callq 0xa250
movq %rax, -0x1418(%rbp)
jmp 0x6a3d
movq -0x1418(%rbp), %rax
movq %rax, -0xce0(%rbp)
leaq -0xcd8(%rbp), %rdi
callq 0xa260
movq %rax, -0x1420(%rbp)
jmp 0x6a60
movq -0x1420(%rbp), %rax
movq %rax, -0xce8(%rbp)
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movl -0x140(%rbp,%rax), %edx
movl -0x13c(%rbp,%rax), %ecx
movl %edx, %esi
movl %ecx, %edx
movzwl -0x138(%rbp,%rax), %ecx
movzwl -0x136(%rbp,%rax), %edi
movl %edi, %r8d
movzbl -0x134(%rbp,%rax), %edi
movl %edi, %r9d
movzbl -0x133(%rbp,%rax), %eax
movl %eax, %edi
movq -0xce0(%rbp), %r10
movq %rsp, %rax
movq %r10, 0x8(%rax)
movq %rdi, (%rax)
leaq -0x160(%rbp), %rdi
callq 0xa280
jmp 0x6ad2
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movl -0x130(%rbp,%rax), %edx
movl -0x12c(%rbp,%rax), %ecx
movl %edx, %esi
movl %ecx, %edx
movzwl -0x128(%rbp,%rax), %ecx
movzwl -0x126(%rbp,%rax), %edi
movl %edi, %r8d
movzbl -0x124(%rbp,%rax), %edi
movl %edi, %r9d
movzbl -0x123(%rbp,%rax), %eax
movl %eax, %edi
movq -0xce8(%rbp), %r10
movq %rsp, %rax
movq %r10, 0x8(%rax)
movq %rdi, (%rax)
leaq -0x160(%rbp), %rdi
callq 0xa2f0
jmp 0x6b36
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
leaq -0x140(%rbp,%rax), %rax
movq %rax, -0xc78(%rbp)
leaq -0x160(%rbp), %rdi
leaq -0xcd8(%rbp), %rsi
callq 0xb2f0
movb %al, -0x1421(%rbp)
jmp 0x6b6b
movb -0x1421(%rbp), %al
andb $0x1, %al
movb %al, -0xce9(%rbp)
testb $0x1, -0xce9(%rbp)
je 0x70eb
leaq 0x48f9e(%rip), %rsi     # 0x4fb2b
leaq -0xdf0(%rbp), %rdi
callq 0xa390
jmp 0x6b9b
leaq -0x160(%rbp), %rdi
callq 0xa540
movq %rax, -0x1430(%rbp)
jmp 0x6bb0
movq -0x1430(%rbp), %rax
movq %rax, -0xdf8(%rbp)
leaq -0xdf0(%rbp), %rdi
leaq -0xdf8(%rbp), %rsi
callq 0xa510
movq %rax, -0x1438(%rbp)
jmp 0x6bda
movq -0x1438(%rbp), %rsi
leaq -0xd10(%rbp), %rdi
callq 0xa590
jmp 0x6bef
movq 0xaa3c2(%rip), %rdi     # 0xb0fb8
leaq -0xd10(%rbp), %rsi
callq 0x52f0
jmp 0x6c04
leaq -0xd10(%rbp), %rdi
callq 0x51e0
leaq -0xdf0(%rbp), %rdi
callq 0xa7e0
movq -0x1e0(%rbp), %rax
shlq $0x5, %rax
movl -0x140(%rbp,%rax), %edx
movl -0x13c(%rbp,%rax), %ecx
incl %edx
movl %edx, %esi
movl %ecx, %edx
movzwl -0x138(%rbp,%rax), %ecx
movzwl -0x136(%rbp,%rax), %edi
movl %edi, %r8d
movzbl -0x134(%rbp,%rax), %edi
movl %edi, %r9d
movzbl -0x133(%rbp,%rax), %eax
movl %eax, %edi
movq %rsp, %rax
leaq -0xe28(%rbp), %r10
movq %r10, 0x8(%rax)
movq %rdi, (%rax)
leaq -0x160(%rbp), %rdi
callq 0xae50
jmp 0x6c82
leaq -0xe40(%rbp), %rdi
leaq -0x160(%rbp), %rsi
leaq -0xe28(%rbp), %rdx
callq 0xaec0
jmp 0x6c9e
leaq -0xe40(%rbp), %rdi
callq 0xb050
cmpq $0x0, %rax
jne 0x6e0a
leaq 0x48e7d(%rip), %rsi     # 0x4fb38
leaq -0xf40(%rbp), %rdi
callq 0xa390
jmp 0x6cc9
leaq -0xf60(%rbp), %rdi
leaq -0xe28(%rbp), %rsi
callq 0xb080
jmp 0x6cde
leaq -0xf40(%rbp), %rdi
leaq -0xf60(%rbp), %rsi
callq 0xaa00
movq %rax, -0x1440(%rbp)
jmp 0x6cfa
movq -0x1440(%rbp), %rsi
leaq -0xe60(%rbp), %rdi
callq 0xa590
jmp 0x6d0f
movq 0xaa2a2(%rip), %rdi     # 0xb0fb8
leaq -0xe60(%rbp), %rsi
callq 0x52f0
jmp 0x6d24
leaq -0xe60(%rbp), %rdi
callq 0x51e0
leaq -0xf60(%rbp), %rdi
callq 0x51e0
leaq -0xf40(%rbp), %rdi
callq 0xa7e0
jmp 0x70c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x6d7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0xd10(%rbp), %rdi
callq 0x51e0
leaq -0xdf0(%rbp), %rdi
callq 0xa7e0
jmp 0x7237
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x70da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x6df9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x6ded
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0xe60(%rbp), %rdi
callq 0x51e0
leaq -0xf60(%rbp), %rdi
callq 0x51e0
leaq -0xf40(%rbp), %rdi
callq 0xa7e0
jmp 0x70da
leaq 0x48d44(%rip), %rsi     # 0x4fb55
leaq -0x1060(%rbp), %rdi
callq 0xa390
jmp 0x6e1f
leaq -0x1080(%rbp), %rdi
leaq -0xe28(%rbp), %rsi
callq 0xb080
jmp 0x6e34
leaq -0x1060(%rbp), %rdi
leaq -0x1080(%rbp), %rsi
callq 0xaa00
movq %rax, -0x1448(%rbp)
jmp 0x6e50
movq -0x1448(%rbp), %rsi
leaq -0xf80(%rbp), %rdi
callq 0xa590
jmp 0x6e65
movq 0xaa14c(%rip), %rdi     # 0xb0fb8
leaq -0xf80(%rbp), %rsi
callq 0x52f0
jmp 0x6e7a
leaq -0xf80(%rbp), %rdi
callq 0x51e0
leaq -0x1080(%rbp), %rdi
callq 0x51e0
leaq -0x1060(%rbp), %rdi
callq 0xa7e0
leaq -0xe40(%rbp), %rax
movq %rax, -0x1088(%rbp)
movq -0x1088(%rbp), %rdi
callq 0xa940
movq %rax, -0x1090(%rbp)
movq -0x1088(%rbp), %rdi
callq 0xa970
movq %rax, -0x1098(%rbp)
leaq -0x1090(%rbp), %rdi
leaq -0x1098(%rbp), %rsi
callq 0xa9a0
testb $0x1, %al
jne 0x6eee
jmp 0x70c7
leaq -0x1090(%rbp), %rdi
callq 0xa9e0
movq 0x60(%rax), %rcx
movq %rcx, -0x10a0(%rbp)
movups 0x50(%rax), %xmm0
movaps %xmm0, -0x10b0(%rbp)
movups 0x40(%rax), %xmm0
movaps %xmm0, -0x10c0(%rbp)
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups 0x20(%rax), %xmm2
movups 0x30(%rax), %xmm3
movaps %xmm3, -0x10d0(%rbp)
movaps %xmm2, -0x10e0(%rbp)
movaps %xmm1, -0x10f0(%rbp)
movaps %xmm0, -0x1100(%rbp)
leaq 0x48bd6(%rip), %rsi     # 0x4fb23
leaq -0x1200(%rbp), %rdi
callq 0xa390
jmp 0x6f5b
leaq -0x1220(%rbp), %rdi
leaq -0x1100(%rbp), %rsi
callq 0xaa30
jmp 0x6f70
leaq -0x1200(%rbp), %rdi
leaq -0x1220(%rbp), %rsi
callq 0xaa00
movq %rax, -0x1450(%rbp)
jmp 0x6f8c
movq -0x1450(%rbp), %rdi
leaq -0x10a0(%rbp), %rsi
callq 0xa560
movq %rax, -0x1458(%rbp)
jmp 0x6fa8
movq -0x1458(%rbp), %rsi
leaq -0x1120(%rbp), %rdi
callq 0xa590
jmp 0x6fbd
movq 0xa9ff4(%rip), %rdi     # 0xb0fb8
leaq -0x1120(%rbp), %rsi
callq 0x52f0
jmp 0x6fd2
leaq -0x1120(%rbp), %rdi
callq 0x51e0
leaq -0x1220(%rbp), %rdi
callq 0x51e0
leaq -0x1200(%rbp), %rdi
callq 0xa7e0
leaq -0x1090(%rbp), %rdi
callq 0xae30
jmp 0x6ed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x7059
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x704d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0xf80(%rbp), %rdi
callq 0x51e0
leaq -0x1080(%rbp), %rdi
callq 0x51e0
leaq -0x1060(%rbp), %rdi
callq 0xa7e0
jmp 0x70da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x70b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x70ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x1120(%rbp), %rdi
callq 0x51e0
leaq -0x1220(%rbp), %rdi
callq 0x51e0
leaq -0x1200(%rbp), %rdi
callq 0xa7e0
jmp 0x70da
jmp 0x70c9
leaq -0xe40(%rbp), %rdi
callq 0xb290
jmp 0x71fd
leaq -0xe40(%rbp), %rdi
callq 0xb290
jmp 0x7237
leaq 0x48a7c(%rip), %rsi     # 0x4fb6e
leaq -0x1320(%rbp), %rdi
callq 0xa390
jmp 0x7100
leaq -0x1340(%rbp), %rdi
leaq -0xcd8(%rbp), %rsi
callq 0xaa30
jmp 0x7115
leaq -0x1320(%rbp), %rdi
leaq -0x1340(%rbp), %rsi
callq 0xaa00
movq %rax, -0x1460(%rbp)
jmp 0x7131
movq -0x1460(%rbp), %rdi
leaq -0xc78(%rbp), %rsi
callq 0xa560
movq %rax, -0x1468(%rbp)
jmp 0x714d
movq -0x1468(%rbp), %rsi
leaq -0x1240(%rbp), %rdi
callq 0xa590
jmp 0x7162
movq 0xa9e4f(%rip), %rdi     # 0xb0fb8
leaq -0x1240(%rbp), %rsi
callq 0x52f0
jmp 0x7177
leaq -0x1240(%rbp), %rdi
callq 0x51e0
leaq -0x1340(%rbp), %rdi
callq 0x51e0
leaq -0x1320(%rbp), %rdi
callq 0xa7e0
jmp 0x71fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x71ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x71e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x1240(%rbp), %rdi
callq 0x51e0
leaq -0x1340(%rbp), %rdi
callq 0x51e0
leaq -0x1320(%rbp), %rdi
callq 0xa7e0
jmp 0x7237
jmp 0x71ff
movq -0x1e0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1e0(%rbp)
jmp 0x69e0
leaq -0x310(%rbp), %rdi
callq 0xb290
leaq -0x160(%rbp), %rdi
callq 0xb320
addq $0x1480, %rsp           # imm = 0x1480
popq %rbp
retq
leaq -0x310(%rbp), %rdi
callq 0xb290
leaq -0x160(%rbp), %rdi
callq 0xb320
movq -0x1d0(%rbp), %rdi
callq 0x5640
nopl (%rax,%rax)