// File: greenpau[P]mnpa/main.cpp
// Function: sender_thread(MulticastSender)
void sender_thread(struct MulticastSender sender) {

    auto thrid = std::hash<std::thread::id>()(std::this_thread::get_id());
    int sockfd = socket(AF_INET, SOCK_DGRAM, 0);

    int msg_ttl_rc;
    msg_ttl_rc = setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_TTL, &sender.ttl, sizeof(sender.ttl));
    if (msg_ttl_rc < 0 && NON_ROOT == false) {
        logit(WARN, "setsockopt IP_MULTICAST_TTL failed on interface" + std::string(sender.interface) + \
                    " for the traffic destined to " + ipv4_from_s_addr(sender.group.sin_addr.s_addr) + \
                    ":" + std::to_string(ntohs(sender.group.sin_port)));
    }

    int msg_if_rc;
    msg_if_rc = setsockopt(sockfd, SOL_SOCKET, SO_BINDTODEVICE, sender.interface, sizeof(sender.interface));
    if (msg_if_rc < 0 && NON_ROOT == false) {
        logit(WARN,"setsockopt SO_BINDTODEVICE failed on interface " + std::string(sender.interface) + \
                    " for the traffic destined to " + ipv4_from_s_addr(sender.group.sin_addr.s_addr) + \
                    ":" + std::to_string(ntohs(sender.group.sin_port)));
    }

    std::string msg;
    auto tp = std::chrono::high_resolution_clock::now();
    size_t pkt_content_size;
    if (PACKET_STORM == true) {
        for(unsigned long long i=1; i < sender.count + 1; i++) {
            const char *pkt_content = nullptr;
            pkt_content = gen_pkt_payload(std::ref(pkt_content_size), std::ref(sender.tag), std::ref(i), std::ref(sender.low), std::ref(sender.high));
            sendto(sockfd, pkt_content, pkt_content_size, 0, (struct sockaddr *)&sender.group, sizeof(sender.group));
            logit(INFO, std::string("thread #") + std::to_string(thrid) + std::string(" / packet #") + \
                        std::to_string(i) + std::string(" / payload (") + std::to_string(pkt_content_size) + \
                        std::string("): ") + pkt_content);
            delete pkt_content;
        }
    } else if (sender.count == 0) {
        unsigned long long i = 1;
        for (;;) {
            tp = std::chrono::high_resolution_clock::now() + sender.interval;
            const char *pkt_content = nullptr;
            pkt_content = gen_pkt_payload(std::ref(pkt_content_size), std::ref(sender.tag), std::ref(i), std::ref(sender.low), std::ref(sender.high));
            sendto(sockfd, pkt_content, pkt_content_size, 0, (struct sockaddr *)&sender.group, sizeof(sender.group));
            logit(INFO, std::string("thread #") + std::to_string(thrid) + std::string(" / packet #") + \
                        std::to_string(i) + std::string(" / payload (") + std::to_string(pkt_content_size) + \
                        std::string("): ") + pkt_content);
            delete pkt_content;
            i++;
            this_thread::sleep_until(tp);
            if (stopped == true) break;
        }
    } else {
        size_t pkt_content_size;
        for(unsigned long long i=1; i < sender.count + 1; i++) {
            tp = std::chrono::high_resolution_clock::now() + sender.interval;
            const char *pkt_content = nullptr;
            pkt_content = gen_pkt_payload(std::ref(pkt_content_size), std::ref(sender.tag), std::ref(i), std::ref(sender.low), std::ref(sender.high));
            sendto(sockfd, pkt_content, pkt_content_size, 0, (struct sockaddr *)&sender.group, sizeof(sender.group));
            logit(INFO, std::string("thread #") + std::to_string(thrid) + std::string(" / packet #") + \
                        std::to_string(i) + std::string(" / payload (") + std::to_string(pkt_content_size) + \
                        std::string("): ") + pkt_content);
            delete pkt_content;
            this_thread::sleep_until(tp);
            if (stopped == true) break;
        }
    }

    close(sockfd);
    mu_thrids.lock();
    thrids[thrid] = 1;
    mu_thrids.unlock();
    return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa20, %rsp            # imm = 0xA20
movq %rdi, -0x8f8(%rbp)
movq %rdi, -0x8(%rbp)
callq 0x24050
movq %rax, -0x20(%rbp)
leaq -0x11(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x24010
movq %rax, -0x10(%rbp)
movl $0x2, %esi
xorl %edx, %edx
movl %esi, %edi
callq 0x165c0
movq -0x8f8(%rbp), %rcx
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %edi
addq $0x18, %rcx
xorl %esi, %esi
movl $0x21, %edx
movl $0x1, %r8d
callq 0x162c0
movl %eax, -0x28(%rbp)
cmpl $0x0, -0x28(%rbp)
jge 0x1cdb4
movb 0x13ff90(%rip), %al     # 0x15ca94
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1cdb4
movq -0x8f8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x908(%rbp)
leaq -0xe9(%rbp), %rdi
movq %rdi, -0x900(%rbp)
callq 0x54db0
movq -0x908(%rbp), %rsi
movq -0x900(%rbp), %rdx
leaq -0xe8(%rbp), %rdi
callq 0x235f0
jmp 0x1cb52
leaq 0xe6385(%rip), %rsi     # 0x102ede
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rdx
callq 0x23c90
jmp 0x1cb6e
leaq 0xe6399(%rip), %rdx     # 0x102f0e
leaq -0xa8(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x23940
jmp 0x1cb8a
movq -0x8f8(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, %esi
leaq -0x120(%rbp), %rdi
callq 0x19600
jmp 0x1cba4
leaq -0x88(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0x120(%rbp), %rdx
callq 0x24080
jmp 0x1cbc0
leaq 0xeb929(%rip), %rdx     # 0x1084f0
leaq -0x68(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x23940
jmp 0x1cbd9
movq -0x8f8(%rbp), %rax
movzwl 0xa(%rax), %edi
callq 0x16430
movzwl %ax, %esi
leaq -0x140(%rbp), %rdi
callq 0x23760
jmp 0x1cbfa
leaq -0x48(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0x140(%rbp), %rdx
callq 0x24080
jmp 0x1cc10
movl $0x1, %edi
leaq -0x48(%rbp), %rsi
callq 0x196f0
jmp 0x1cc20
leaq -0x48(%rbp), %rdi
callq 0xcf470
leaq -0x140(%rbp), %rdi
callq 0xcf470
leaq -0x68(%rbp), %rdi
callq 0xcf470
leaq -0x88(%rbp), %rdi
callq 0xcf470
leaq -0x120(%rbp), %rdi
callq 0xcf470
leaq -0xa8(%rbp), %rdi
callq 0xcf470
leaq -0xc8(%rbp), %rdi
callq 0xcf470
leaq -0xe8(%rbp), %rdi
callq 0xcf470
leaq -0xe9(%rbp), %rdi
callq 0x54dd0
jmp 0x1cdb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1cda3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1cd97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1cd8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1cd7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1cd73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1cd67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1cd5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1cd52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xcf470
leaq -0x140(%rbp), %rdi
callq 0xcf470
leaq -0x68(%rbp), %rdi
callq 0xcf470
leaq -0x88(%rbp), %rdi
callq 0xcf470
leaq -0x120(%rbp), %rdi
callq 0xcf470
leaq -0xa8(%rbp), %rdi
callq 0xcf470
leaq -0xc8(%rbp), %rdi
callq 0xcf470
leaq -0xe8(%rbp), %rdi
callq 0xcf470
leaq -0xe9(%rbp), %rdi
callq 0x54dd0
jmp 0x1e577
movq -0x8f8(%rbp), %rax
movl -0x24(%rbp), %edi
movq (%rax), %rcx
movl $0x1, %esi
movl $0x19, %edx
movl $0x8, %r8d
callq 0x162c0
movl %eax, -0x144(%rbp)
cmpl $0x0, -0x144(%rbp)
jge 0x1d0b7
movb 0x13fca5(%rip), %al     # 0x15ca94
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1d0b7
movq -0x8f8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x918(%rbp)
leaq -0x209(%rbp), %rdi
movq %rdi, -0x910(%rbp)
callq 0x54db0
movq -0x918(%rbp), %rsi
movq -0x910(%rbp), %rdx
leaq -0x208(%rbp), %rdi
callq 0x235f0
jmp 0x1ce3d
leaq 0xe60e8(%rip), %rsi     # 0x102f2c
leaq -0x1e8(%rbp), %rdi
leaq -0x208(%rbp), %rdx
callq 0x23c90
jmp 0x1ce59
leaq 0xe60ae(%rip), %rdx     # 0x102f0e
leaq -0x1c8(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x23940
jmp 0x1ce75
movq -0x8f8(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, %esi
leaq -0x230(%rbp), %rdi
callq 0x19600
jmp 0x1ce8f
leaq -0x1a8(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
leaq -0x230(%rbp), %rdx
callq 0x24080
jmp 0x1ceab
leaq 0xeb63e(%rip), %rdx     # 0x1084f0
leaq -0x188(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x23940
jmp 0x1cec7
movq -0x8f8(%rbp), %rax
movzwl 0xa(%rax), %edi
callq 0x16430
movzwl %ax, %esi
leaq -0x250(%rbp), %rdi
callq 0x23760
jmp 0x1cee8
leaq -0x168(%rbp), %rdi
leaq -0x188(%rbp), %rsi
leaq -0x250(%rbp), %rdx
callq 0x24080
jmp 0x1cf04
movl $0x1, %edi
leaq -0x168(%rbp), %rsi
callq 0x196f0
jmp 0x1cf17
leaq -0x168(%rbp), %rdi
callq 0xcf470
leaq -0x250(%rbp), %rdi
callq 0xcf470
leaq -0x188(%rbp), %rdi
callq 0xcf470
leaq -0x1a8(%rbp), %rdi
callq 0xcf470
leaq -0x230(%rbp), %rdi
callq 0xcf470
leaq -0x1c8(%rbp), %rdi
callq 0xcf470
leaq -0x1e8(%rbp), %rdi
callq 0xcf470
leaq -0x208(%rbp), %rdi
callq 0xcf470
leaq -0x209(%rbp), %rdi
callq 0x54dd0
jmp 0x1d0b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d0a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d09a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d08e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d082
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d076
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d06a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d05e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d052
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x168(%rbp), %rdi
callq 0xcf470
leaq -0x250(%rbp), %rdi
callq 0xcf470
leaq -0x188(%rbp), %rdi
callq 0xcf470
leaq -0x1a8(%rbp), %rdi
callq 0xcf470
leaq -0x230(%rbp), %rdi
callq 0xcf470
leaq -0x1c8(%rbp), %rdi
callq 0xcf470
leaq -0x1e8(%rbp), %rdi
callq 0xcf470
leaq -0x208(%rbp), %rdi
callq 0xcf470
leaq -0x209(%rbp), %rdi
callq 0x54dd0
jmp 0x1e577
leaq -0x270(%rbp), %rdi
callq 0xcf360
callq 0x5d160
movq %rax, -0x278(%rbp)
movb 0x13f9c2(%rip), %al     # 0x15ca97
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1d767
movq $0x1, -0x288(%rbp)
movq -0x8f8(%rbp), %rcx
movq -0x288(%rbp), %rax
movl 0x1c(%rcx), %ecx
addl $0x1, %ecx
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x1d762
movq $0x0, -0x290(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x244d0
movq %rax, -0x298(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x24500
movq -0x8f8(%rbp), %rdi
movq %rax, -0x940(%rbp)
addq $0x40, %rdi
callq 0x24520
movq %rax, -0x2a0(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x24550
movq %rax, -0x938(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x24570
movq %rax, -0x2a8(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x245a0
movq -0x8f8(%rbp), %rdi
movq %rax, -0x930(%rbp)
addq $0x20, %rdi
callq 0x245c0
movq %rax, -0x2b0(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x245f0
movq -0x8f8(%rbp), %rdi
movq %rax, -0x928(%rbp)
addq $0x24, %rdi
callq 0x245c0
movq %rax, -0x2b8(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x245f0
movq -0x940(%rbp), %rdi
movq -0x938(%rbp), %rsi
movq -0x930(%rbp), %rdx
movq -0x928(%rbp), %rcx
movq %rax, %r8
callq 0x1b400
movq %rax, -0x920(%rbp)
jmp 0x1d208
movq -0x8f8(%rbp), %r8
movq -0x920(%rbp), %rax
movq %rax, -0x290(%rbp)
movl -0x24(%rbp), %edi
movq -0x290(%rbp), %rsi
movq -0x280(%rbp), %rdx
addq $0x8, %r8
xorl %ecx, %ecx
movl $0x10, %r9d
callq 0x167b0
jmp 0x1d241
leaq -0x3b9(%rbp), %rdi
movq %rdi, -0x948(%rbp)
callq 0x54db0
movq -0x948(%rbp), %rdx
leaq 0xe5bc8(%rip), %rsi     # 0x102e2a
leaq -0x3b8(%rbp), %rdi
callq 0x235f0
jmp 0x1d270
movq -0x10(%rbp), %rsi
leaq -0x3e0(%rbp), %rdi
callq 0x24150
jmp 0x1d282
leaq -0x398(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
leaq -0x3e0(%rbp), %rdx
callq 0x24080
jmp 0x1d29e
leaq -0x401(%rbp), %rdi
movq %rdi, -0x950(%rbp)
callq 0x54db0
movq -0x950(%rbp), %rdx
leaq 0xe5c9d(%rip), %rsi     # 0x102f5c
leaq -0x400(%rbp), %rdi
callq 0x235f0
jmp 0x1d2cd
leaq -0x378(%rbp), %rdi
leaq -0x398(%rbp), %rsi
leaq -0x400(%rbp), %rdx
callq 0x24080
jmp 0x1d2e9
movq -0x288(%rbp), %rsi
leaq -0x428(%rbp), %rdi
callq 0x23d90
jmp 0x1d2fe
leaq -0x358(%rbp), %rdi
leaq -0x378(%rbp), %rsi
leaq -0x428(%rbp), %rdx
callq 0x24080
jmp 0x1d31a
leaq -0x449(%rbp), %rdi
movq %rdi, -0x958(%rbp)
callq 0x54db0
movq -0x958(%rbp), %rdx
leaq 0xe5c2d(%rip), %rsi     # 0x102f68
leaq -0x448(%rbp), %rdi
callq 0x235f0
jmp 0x1d349
leaq -0x338(%rbp), %rdi
leaq -0x358(%rbp), %rsi
leaq -0x448(%rbp), %rdx
callq 0x24080
jmp 0x1d365
movq -0x280(%rbp), %rsi
leaq -0x470(%rbp), %rdi
callq 0x24150
jmp 0x1d37a
leaq -0x318(%rbp), %rdi
leaq -0x338(%rbp), %rsi
leaq -0x470(%rbp), %rdx
callq 0x24080
jmp 0x1d396
leaq -0x491(%rbp), %rdi
movq %rdi, -0x960(%rbp)
callq 0x54db0
movq -0x960(%rbp), %rdx
leaq 0xe6021(%rip), %rsi     # 0x1033d8
leaq -0x490(%rbp), %rdi
callq 0x235f0
jmp 0x1d3c5
leaq -0x2f8(%rbp), %rdi
leaq -0x318(%rbp), %rsi
leaq -0x490(%rbp), %rdx
callq 0x24080
jmp 0x1d3e1
movq -0x290(%rbp), %rdx
leaq -0x2d8(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x23940
jmp 0x1d3fd
xorl %edi, %edi
leaq -0x2d8(%rbp), %rsi
callq 0x196f0
jmp 0x1d40d
leaq -0x2d8(%rbp), %rdi
callq 0xcf470
leaq -0x2f8(%rbp), %rdi
callq 0xcf470
leaq -0x490(%rbp), %rdi
callq 0xcf470
leaq -0x491(%rbp), %rdi
callq 0x54dd0
leaq -0x318(%rbp), %rdi
callq 0xcf470
leaq -0x470(%rbp), %rdi
callq 0xcf470
leaq -0x338(%rbp), %rdi
callq 0xcf470
leaq -0x448(%rbp), %rdi
callq 0xcf470
leaq -0x449(%rbp), %rdi
callq 0x54dd0
leaq -0x358(%rbp), %rdi
callq 0xcf470
leaq -0x428(%rbp), %rdi
callq 0xcf470
leaq -0x378(%rbp), %rdi
callq 0xcf470
leaq -0x400(%rbp), %rdi
callq 0xcf470
leaq -0x401(%rbp), %rdi
callq 0x54dd0
leaq -0x398(%rbp), %rdi
callq 0xcf470
leaq -0x3e0(%rbp), %rdi
callq 0xcf470
leaq -0x3b8(%rbp), %rdi
callq 0xcf470
leaq -0x3b9(%rbp), %rdi
callq 0x54dd0
movq -0x290(%rbp), %rax
movq %rax, -0x968(%rbp)
cmpq $0x0, %rax
je 0x1d50a
movq -0x968(%rbp), %rdi
movl $0x1, %esi
callq 0x530f0
jmp 0x1d50c
movq -0x288(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x288(%rbp)
jmp 0x1d0ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e56b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d751
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d745
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d739
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d721
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d715
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d709
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d6fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d6e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d6d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d6cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d6c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d6a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d69d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1d691
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0xcf470
leaq -0x2f8(%rbp), %rdi
callq 0xcf470
leaq -0x490(%rbp), %rdi
callq 0xcf470
leaq -0x491(%rbp), %rdi
callq 0x54dd0
leaq -0x318(%rbp), %rdi
callq 0xcf470
leaq -0x470(%rbp), %rdi
callq 0xcf470
leaq -0x338(%rbp), %rdi
callq 0xcf470
leaq -0x448(%rbp), %rdi
callq 0xcf470
leaq -0x449(%rbp), %rdi
callq 0x54dd0
leaq -0x358(%rbp), %rdi
callq 0xcf470
leaq -0x428(%rbp), %rdi
callq 0xcf470
leaq -0x378(%rbp), %rdi
callq 0xcf470
leaq -0x400(%rbp), %rdi
callq 0xcf470
leaq -0x401(%rbp), %rdi
callq 0x54dd0
leaq -0x398(%rbp), %rdi
callq 0xcf470
leaq -0x3e0(%rbp), %rdi
callq 0xcf470
leaq -0x3b8(%rbp), %rdi
callq 0xcf470
leaq -0x3b9(%rbp), %rdi
callq 0x54dd0
jmp 0x1e56b
jmp 0x1e50a
movq -0x8f8(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
jne 0x1de32
movq $0x1, -0x4a0(%rbp)
callq 0x5d160
movq -0x8f8(%rbp), %rsi
movq %rax, -0x4b0(%rbp)
addq $0x38, %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x24610
movq %rax, -0x970(%rbp)
jmp 0x1d7af
movq -0x970(%rbp), %rax
movq %rax, -0x4a8(%rbp)
movq -0x4a8(%rbp), %rax
movq %rax, -0x278(%rbp)
movq $0x0, -0x4b8(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x244d0
movq %rax, -0x4c0(%rbp)
leaq -0x4c0(%rbp), %rdi
callq 0x24500
movq -0x8f8(%rbp), %rdi
movq %rax, -0x998(%rbp)
addq $0x40, %rdi
callq 0x24520
movq %rax, -0x4c8(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x24550
movq %rax, -0x990(%rbp)
leaq -0x4a0(%rbp), %rdi
callq 0x24570
movq %rax, -0x4d0(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x245a0
movq -0x8f8(%rbp), %rdi
movq %rax, -0x988(%rbp)
addq $0x20, %rdi
callq 0x245c0
movq %rax, -0x4d8(%rbp)
leaq -0x4d8(%rbp), %rdi
callq 0x245f0
movq -0x8f8(%rbp), %rdi
movq %rax, -0x980(%rbp)
addq $0x24, %rdi
callq 0x245c0
movq %rax, -0x4e0(%rbp)
leaq -0x4e0(%rbp), %rdi
callq 0x245f0
movq -0x998(%rbp), %rdi
movq -0x990(%rbp), %rsi
movq -0x988(%rbp), %rdx
movq -0x980(%rbp), %rcx
movq %rax, %r8
callq 0x1b400
movq %rax, -0x978(%rbp)
jmp 0x1d8c6
movq -0x8f8(%rbp), %r8
movq -0x978(%rbp), %rax
movq %rax, -0x4b8(%rbp)
movl -0x24(%rbp), %edi
movq -0x4b8(%rbp), %rsi
movq -0x280(%rbp), %rdx
addq $0x8, %r8
xorl %ecx, %ecx
movl $0x10, %r9d
callq 0x167b0
jmp 0x1d8ff
leaq -0x5e1(%rbp), %rdi
movq %rdi, -0x9a0(%rbp)
callq 0x54db0
movq -0x9a0(%rbp), %rdx
leaq 0xe550a(%rip), %rsi     # 0x102e2a
leaq -0x5e0(%rbp), %rdi
callq 0x235f0
jmp 0x1d92e
movq -0x10(%rbp), %rsi
leaq -0x608(%rbp), %rdi
callq 0x24150
jmp 0x1d940
leaq -0x5c0(%rbp), %rdi
leaq -0x5e0(%rbp), %rsi
leaq -0x608(%rbp), %rdx
callq 0x24080
jmp 0x1d95c
leaq -0x629(%rbp), %rdi
movq %rdi, -0x9a8(%rbp)
callq 0x54db0
movq -0x9a8(%rbp), %rdx
leaq 0xe55df(%rip), %rsi     # 0x102f5c
leaq -0x628(%rbp), %rdi
callq 0x235f0
jmp 0x1d98b
leaq -0x5a0(%rbp), %rdi
leaq -0x5c0(%rbp), %rsi
leaq -0x628(%rbp), %rdx
callq 0x24080
jmp 0x1d9a7
movq -0x4a0(%rbp), %rsi
leaq -0x650(%rbp), %rdi
callq 0x23d90
jmp 0x1d9bc
leaq -0x580(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
leaq -0x650(%rbp), %rdx
callq 0x24080
jmp 0x1d9d8
leaq -0x671(%rbp), %rdi
movq %rdi, -0x9b0(%rbp)
callq 0x54db0
movq -0x9b0(%rbp), %rdx
leaq 0xe556f(%rip), %rsi     # 0x102f68
leaq -0x670(%rbp), %rdi
callq 0x235f0
jmp 0x1da07
leaq -0x560(%rbp), %rdi
leaq -0x580(%rbp), %rsi
leaq -0x670(%rbp), %rdx
callq 0x24080
jmp 0x1da23
movq -0x280(%rbp), %rsi
leaq -0x698(%rbp), %rdi
callq 0x24150
jmp 0x1da38
leaq -0x540(%rbp), %rdi
leaq -0x560(%rbp), %rsi
leaq -0x698(%rbp), %rdx
callq 0x24080
jmp 0x1da54
leaq -0x6b9(%rbp), %rdi
movq %rdi, -0x9b8(%rbp)
callq 0x54db0
movq -0x9b8(%rbp), %rdx
leaq 0xe5963(%rip), %rsi     # 0x1033d8
leaq -0x6b8(%rbp), %rdi
callq 0x235f0
jmp 0x1da83
leaq -0x520(%rbp), %rdi
leaq -0x540(%rbp), %rsi
leaq -0x6b8(%rbp), %rdx
callq 0x24080
jmp 0x1da9f
movq -0x4b8(%rbp), %rdx
leaq -0x500(%rbp), %rdi
leaq -0x520(%rbp), %rsi
callq 0x23940
jmp 0x1dabb
xorl %edi, %edi
leaq -0x500(%rbp), %rsi
callq 0x196f0
jmp 0x1dacb
leaq -0x500(%rbp), %rdi
callq 0xcf470
leaq -0x520(%rbp), %rdi
callq 0xcf470
leaq -0x6b8(%rbp), %rdi
callq 0xcf470
leaq -0x6b9(%rbp), %rdi
callq 0x54dd0
leaq -0x540(%rbp), %rdi
callq 0xcf470
leaq -0x698(%rbp), %rdi
callq 0xcf470
leaq -0x560(%rbp), %rdi
callq 0xcf470
leaq -0x670(%rbp), %rdi
callq 0xcf470
leaq -0x671(%rbp), %rdi
callq 0x54dd0
leaq -0x580(%rbp), %rdi
callq 0xcf470
leaq -0x650(%rbp), %rdi
callq 0xcf470
leaq -0x5a0(%rbp), %rdi
callq 0xcf470
leaq -0x628(%rbp), %rdi
callq 0xcf470
leaq -0x629(%rbp), %rdi
callq 0x54dd0
leaq -0x5c0(%rbp), %rdi
callq 0xcf470
leaq -0x608(%rbp), %rdi
callq 0xcf470
leaq -0x5e0(%rbp), %rdi
callq 0xcf470
leaq -0x5e1(%rbp), %rdi
callq 0x54dd0
movq -0x4b8(%rbp), %rax
movq %rax, -0x9c0(%rbp)
cmpq $0x0, %rax
je 0x1dbc8
movq -0x9c0(%rbp), %rdi
movl $0x1, %esi
callq 0x530f0
movq -0x4a0(%rbp), %rax
incq %rax
movq %rax, -0x4a0(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x24660
jmp 0x1dbe7
movb 0x13ee24(%rip), %al     # 0x15ca11
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1de28
jmp 0x1de2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1de17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1de0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1ddff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1dde7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1dddb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1ddcf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1ddc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1ddab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1dd9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1dd93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1dd87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1dd6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1dd63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1dd57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x500(%rbp), %rdi
callq 0xcf470
leaq -0x520(%rbp), %rdi
callq 0xcf470
leaq -0x6b8(%rbp), %rdi
callq 0xcf470
leaq -0x6b9(%rbp), %rdi
callq 0x54dd0
leaq -0x540(%rbp), %rdi
callq 0xcf470
leaq -0x698(%rbp), %rdi
callq 0xcf470
leaq -0x560(%rbp), %rdi
callq 0xcf470
leaq -0x670(%rbp), %rdi
callq 0xcf470
leaq -0x671(%rbp), %rdi
callq 0x54dd0
leaq -0x580(%rbp), %rdi
callq 0xcf470
leaq -0x650(%rbp), %rdi
callq 0xcf470
leaq -0x5a0(%rbp), %rdi
callq 0xcf470
leaq -0x628(%rbp), %rdi
callq 0xcf470
leaq -0x629(%rbp), %rdi
callq 0x54dd0
leaq -0x5c0(%rbp), %rdi
callq 0xcf470
leaq -0x608(%rbp), %rdi
callq 0xcf470
leaq -0x5e0(%rbp), %rdi
callq 0xcf470
leaq -0x5e1(%rbp), %rdi
callq 0x54dd0
jmp 0x1e56b
jmp 0x1d783
jmp 0x1e508
movq $0x1, -0x6d0(%rbp)
movq -0x8f8(%rbp), %rcx
movq -0x6d0(%rbp), %rax
movl 0x1c(%rcx), %ecx
addl $0x1, %ecx
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x1e506
callq 0x5d160
movq -0x8f8(%rbp), %rsi
movq %rax, -0x6e0(%rbp)
addq $0x38, %rsi
leaq -0x6e0(%rbp), %rdi
callq 0x24610
movq %rax, -0x9c8(%rbp)
jmp 0x1de88
movq -0x9c8(%rbp), %rax
movq %rax, -0x6d8(%rbp)
movq -0x6d8(%rbp), %rax
movq %rax, -0x278(%rbp)
movq $0x0, -0x6e8(%rbp)
leaq -0x6c8(%rbp), %rdi
callq 0x244d0
movq %rax, -0x6f0(%rbp)
leaq -0x6f0(%rbp), %rdi
callq 0x24500
movq -0x8f8(%rbp), %rdi
movq %rax, -0x9f0(%rbp)
addq $0x40, %rdi
callq 0x24520
movq %rax, -0x6f8(%rbp)
leaq -0x6f8(%rbp), %rdi
callq 0x24550
movq %rax, -0x9e8(%rbp)
leaq -0x6d0(%rbp), %rdi
callq 0x24570
movq %rax, -0x700(%rbp)
leaq -0x700(%rbp), %rdi
callq 0x245a0
movq -0x8f8(%rbp), %rdi
movq %rax, -0x9e0(%rbp)
addq $0x20, %rdi
callq 0x245c0
movq %rax, -0x708(%rbp)
leaq -0x708(%rbp), %rdi
callq 0x245f0
movq -0x8f8(%rbp), %rdi
movq %rax, -0x9d8(%rbp)
addq $0x24, %rdi
callq 0x245c0
movq %rax, -0x710(%rbp)
leaq -0x710(%rbp), %rdi
callq 0x245f0
movq -0x9f0(%rbp), %rdi
movq -0x9e8(%rbp), %rsi
movq -0x9e0(%rbp), %rdx
movq -0x9d8(%rbp), %rcx
movq %rax, %r8
callq 0x1b400
movq %rax, -0x9d0(%rbp)
jmp 0x1df9f
movq -0x8f8(%rbp), %r8
movq -0x9d0(%rbp), %rax
movq %rax, -0x6e8(%rbp)
movl -0x24(%rbp), %edi
movq -0x6e8(%rbp), %rsi
movq -0x6c8(%rbp), %rdx
addq $0x8, %r8
xorl %ecx, %ecx
movl $0x10, %r9d
callq 0x167b0
jmp 0x1dfd8
leaq -0x811(%rbp), %rdi
movq %rdi, -0x9f8(%rbp)
callq 0x54db0
movq -0x9f8(%rbp), %rdx
leaq 0xe4e31(%rip), %rsi     # 0x102e2a
leaq -0x810(%rbp), %rdi
callq 0x235f0
jmp 0x1e007
movq -0x10(%rbp), %rsi
leaq -0x838(%rbp), %rdi
callq 0x24150
jmp 0x1e019
leaq -0x7f0(%rbp), %rdi
leaq -0x810(%rbp), %rsi
leaq -0x838(%rbp), %rdx
callq 0x24080
jmp 0x1e035
leaq -0x859(%rbp), %rdi
movq %rdi, -0xa00(%rbp)
callq 0x54db0
movq -0xa00(%rbp), %rdx
leaq 0xe4f06(%rip), %rsi     # 0x102f5c
leaq -0x858(%rbp), %rdi
callq 0x235f0
jmp 0x1e064
leaq -0x7d0(%rbp), %rdi
leaq -0x7f0(%rbp), %rsi
leaq -0x858(%rbp), %rdx
callq 0x24080
jmp 0x1e080
movq -0x6d0(%rbp), %rsi
leaq -0x880(%rbp), %rdi
callq 0x23d90
jmp 0x1e095
leaq -0x7b0(%rbp), %rdi
leaq -0x7d0(%rbp), %rsi
leaq -0x880(%rbp), %rdx
callq 0x24080
jmp 0x1e0b1
leaq -0x8a1(%rbp), %rdi
movq %rdi, -0xa08(%rbp)
callq 0x54db0
movq -0xa08(%rbp), %rdx
leaq 0xe4e96(%rip), %rsi     # 0x102f68
leaq -0x8a0(%rbp), %rdi
callq 0x235f0
jmp 0x1e0e0
leaq -0x790(%rbp), %rdi
leaq -0x7b0(%rbp), %rsi
leaq -0x8a0(%rbp), %rdx
callq 0x24080
jmp 0x1e0fc
movq -0x6c8(%rbp), %rsi
leaq -0x8c8(%rbp), %rdi
callq 0x24150
jmp 0x1e111
leaq -0x770(%rbp), %rdi
leaq -0x790(%rbp), %rsi
leaq -0x8c8(%rbp), %rdx
callq 0x24080
jmp 0x1e12d
leaq -0x8e9(%rbp), %rdi
movq %rdi, -0xa10(%rbp)
callq 0x54db0
movq -0xa10(%rbp), %rdx
leaq 0xe528a(%rip), %rsi     # 0x1033d8
leaq -0x8e8(%rbp), %rdi
callq 0x235f0
jmp 0x1e15c
leaq -0x750(%rbp), %rdi
leaq -0x770(%rbp), %rsi
leaq -0x8e8(%rbp), %rdx
callq 0x24080
jmp 0x1e178
movq -0x6e8(%rbp), %rdx
leaq -0x730(%rbp), %rdi
leaq -0x750(%rbp), %rsi
callq 0x23940
jmp 0x1e194
xorl %edi, %edi
leaq -0x730(%rbp), %rsi
callq 0x196f0
jmp 0x1e1a4
leaq -0x730(%rbp), %rdi
callq 0xcf470
leaq -0x750(%rbp), %rdi
callq 0xcf470
leaq -0x8e8(%rbp), %rdi
callq 0xcf470
leaq -0x8e9(%rbp), %rdi
callq 0x54dd0
leaq -0x770(%rbp), %rdi
callq 0xcf470
leaq -0x8c8(%rbp), %rdi
callq 0xcf470
leaq -0x790(%rbp), %rdi
callq 0xcf470
leaq -0x8a0(%rbp), %rdi
callq 0xcf470
leaq -0x8a1(%rbp), %rdi
callq 0x54dd0
leaq -0x7b0(%rbp), %rdi
callq 0xcf470
leaq -0x880(%rbp), %rdi
callq 0xcf470
leaq -0x7d0(%rbp), %rdi
callq 0xcf470
leaq -0x858(%rbp), %rdi
callq 0xcf470
leaq -0x859(%rbp), %rdi
callq 0x54dd0
leaq -0x7f0(%rbp), %rdi
callq 0xcf470
leaq -0x838(%rbp), %rdi
callq 0xcf470
leaq -0x810(%rbp), %rdi
callq 0xcf470
leaq -0x811(%rbp), %rdi
callq 0x54dd0
movq -0x6e8(%rbp), %rax
movq %rax, -0xa18(%rbp)
cmpq $0x0, %rax
je 0x1e2a1
movq -0xa18(%rbp), %rdi
movl $0x1, %esi
callq 0x530f0
leaq -0x278(%rbp), %rdi
callq 0x24660
jmp 0x1e2af
movb 0x13e75c(%rip), %al     # 0x15ca11
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e4ed
jmp 0x1e506
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e4df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e4d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e4c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e4af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e4a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e497
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e48b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e473
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e467
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e45b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e44f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e437
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e42b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1e41f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x730(%rbp), %rdi
callq 0xcf470
leaq -0x750(%rbp), %rdi
callq 0xcf470
leaq -0x8e8(%rbp), %rdi
callq 0xcf470
leaq -0x8e9(%rbp), %rdi
callq 0x54dd0
leaq -0x770(%rbp), %rdi
callq 0xcf470
leaq -0x8c8(%rbp), %rdi
callq 0xcf470
leaq -0x790(%rbp), %rdi
callq 0xcf470
leaq -0x8a0(%rbp), %rdi
callq 0xcf470
leaq -0x8a1(%rbp), %rdi
callq 0x54dd0
leaq -0x7b0(%rbp), %rdi
callq 0xcf470
leaq -0x880(%rbp), %rdi
callq 0xcf470
leaq -0x7d0(%rbp), %rdi
callq 0xcf470
leaq -0x858(%rbp), %rdi
callq 0xcf470
leaq -0x859(%rbp), %rdi
callq 0x54dd0
leaq -0x7f0(%rbp), %rdi
callq 0xcf470
leaq -0x838(%rbp), %rdi
callq 0xcf470
leaq -0x810(%rbp), %rdi
callq 0xcf470
leaq -0x811(%rbp), %rdi
callq 0x54dd0
jmp 0x1e56b
jmp 0x1e4ef
movq -0x6d0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x6d0(%rbp)
jmp 0x1de3d
jmp 0x1e508
jmp 0x1e50a
movl -0x24(%rbp), %edi
callq 0x16140
jmp 0x1e514
leaq 0x13e525(%rip), %rdi    # 0x15ca40
callq 0x24230
jmp 0x1e522
leaq 0x13e56f(%rip), %rdi    # 0x15ca98
leaq -0x10(%rbp), %rsi
callq 0x24260
movq %rax, -0xa20(%rbp)
jmp 0x1e53b
movq -0xa20(%rbp), %rax
movl $0x1, (%rax)
leaq 0x13e4f1(%rip), %rdi    # 0x15ca40
callq 0x24340
jmp 0x1e556
leaq -0x270(%rbp), %rdi
callq 0xcf470
addq $0xa20, %rsp            # imm = 0xA20
popq %rbp
retq
leaq -0x270(%rbp), %rdi
callq 0xcf470
movq -0xf8(%rbp), %rdi
callq 0xfeff0
nopw %cs:(%rax,%rax)