// File: tenup-coin[P]seeder/netbase.cpp
// Function: Socks5(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, unsigned int&)
bool static Socks5(string strDest, int port, SOCKET& hSocket)
{
    printf("SOCKS5 connecting %s\n", strDest.c_str());
    if (strDest.size() > 255)
    {
        closesocket(hSocket);
        return error("Hostname too long");
    }
    char pszSocks5Init[] = "\5\1\0";
    char *pszSocks5 = pszSocks5Init;
    ssize_t nSize = sizeof(pszSocks5Init) - 1;

    ssize_t ret = send(hSocket, pszSocks5, nSize, MSG_NOSIGNAL);
    if (ret != nSize)
    {
        closesocket(hSocket);
        return error("Error sending to proxy");
    }
    char pchRet1[2];
    if (recv(hSocket, pchRet1, 2, 0) != 2)
    {
        closesocket(hSocket);
        return error("Error reading proxy response");
    }
    if (pchRet1[0] != 0x05 || pchRet1[1] != 0x00)
    {
        closesocket(hSocket);
        return error("Proxy failed to initialize");
    }
    string strSocks5("\5\1");
    strSocks5 += '\000'; strSocks5 += '\003';
    strSocks5 += static_cast<char>(std::min((int)strDest.size(), 255));
    strSocks5 += strDest;
    strSocks5 += static_cast<char>((port >> 8) & 0xFF);
    strSocks5 += static_cast<char>((port >> 0) & 0xFF);
    ret = send(hSocket, strSocks5.c_str(), strSocks5.size(), MSG_NOSIGNAL);
    if (ret != (ssize_t)strSocks5.size())
    {
        closesocket(hSocket);
        return error("Error sending to proxy");
    }
    char pchRet2[4];
    if (recv(hSocket, pchRet2, 4, 0) != 4)
    {
        closesocket(hSocket);
        return error("Error reading proxy response");
    }
    if (pchRet2[0] != 0x05)
    {
        closesocket(hSocket);
        return error("Proxy failed to accept request");
    }
    if (pchRet2[1] != 0x00)
    {
        closesocket(hSocket);
        switch (pchRet2[1])
        {
            case 0x01: return error("Proxy error: general failure");
            case 0x02: return error("Proxy error: connection not allowed");
            case 0x03: return error("Proxy error: network unreachable");
            case 0x04: return error("Proxy error: host unreachable");
            case 0x05: return error("Proxy error: connection refused");
            case 0x06: return error("Proxy error: TTL expired");
            case 0x07: return error("Proxy error: protocol error");
            case 0x08: return error("Proxy error: address type not supported");
            default:   return error("Proxy error: unknown");
        }
    }
    if (pchRet2[2] != 0x00)
    {
        closesocket(hSocket);
        return error("Error: malformed proxy response");
    }
    char pchRet3[256];
    switch (pchRet2[3])
    {
        case 0x01: ret = recv(hSocket, pchRet3, 4, 0) != 4; break;
        case 0x04: ret = recv(hSocket, pchRet3, 16, 0) != 16; break;
        case 0x03:
        {
            ret = recv(hSocket, pchRet3, 1, 0) != 1;
            if (ret)
                return error("Error reading from proxy");
            int nRecv = pchRet3[0];
            ret = recv(hSocket, pchRet3, nRecv, 0) != nRecv;
            break;
        }
        default: closesocket(hSocket); return error("Error: malformed proxy response");
    }
    if (ret)
    {
        closesocket(hSocket);
        return error("Error reading from proxy");
    }
    if (recv(hSocket, pchRet3, 2, 0) != 2)
    {
        closesocket(hSocket);
        return error("Error reading from proxy");
    }
    printf("SOCKS5 connected %s\n", strDest.c_str());
    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x650, %rsp            # imm = 0x650
movq %rdi, -0x528(%rbp)
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
leaq -0x41(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x4800
movq -0x520(%rbp), %rdx
leaq 0x222f5(%rip), %rsi     # 0x336e0
leaq -0x40(%rbp), %rdi
callq 0x4690
jmp 0x113f6
movq -0x528(%rbp), %rdi
callq 0x41e0
movq %rax, %rsi
xorl %eax, %eax
leaq -0x40(%rbp), %rdi
callq 0x14360
jmp 0x11412
leaq -0x40(%rbp), %rdi
callq 0x42f0
leaq -0x41(%rbp), %rdi
callq 0x4520
movq -0x528(%rbp), %rdi
callq 0x4380
cmpq $0xff, %rax
jbe 0x114e0
movq -0x20(%rbp), %rdi
callq 0x16610
leaq -0x79(%rbp), %rdi
movq %rdi, -0x530(%rbp)
callq 0x4800
movq -0x530(%rbp), %rdx
leaq 0x22293(%rip), %rsi     # 0x336f6
leaq -0x78(%rbp), %rdi
callq 0x4690
jmp 0x1146e
leaq -0x78(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x42f0
leaq -0x79(%rbp), %rdi
callq 0x4520
jmp 0x124dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x114b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x42f0
leaq -0x41(%rbp), %rdi
callq 0x4520
jmp 0x124ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x79(%rbp), %rdi
callq 0x4520
jmp 0x124ea
movl 0x223bf(%rip), %eax     # 0x338a5
movl %eax, -0x7d(%rbp)
leaq -0x7d(%rbp), %rax
movq %rax, -0x88(%rbp)
movq $0x3, -0x90(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %edi
movq -0x88(%rbp), %rsi
movq -0x90(%rbp), %rdx
movl $0x4000, %ecx           # imm = 0x4000
callq 0x4240
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
cmpq -0x90(%rbp), %rax
je 0x115bd
movq -0x20(%rbp), %rdi
callq 0x16610
leaq -0xb9(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x4800
movq -0x538(%rbp), %rdx
leaq 0x22115(%rip), %rsi     # 0x33677
leaq -0xb8(%rbp), %rdi
callq 0x4690
jmp 0x11570
leaq -0xb8(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x42f0
leaq -0xb9(%rbp), %rdi
callq 0x4520
jmp 0x124dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xb9(%rbp), %rdi
callq 0x4520
jmp 0x124ea
movq -0x20(%rbp), %rax
movl (%rax), %edi
leaq -0xbb(%rbp), %rsi
movl $0x2, %edx
xorl %ecx, %ecx
callq 0x4180
cmpq $0x2, %rax
je 0x11665
movq -0x20(%rbp), %rdi
callq 0x16610
leaq -0xe1(%rbp), %rdi
movq %rdi, -0x540(%rbp)
callq 0x4800
movq -0x540(%rbp), %rdx
leaq 0x22084(%rip), %rsi     # 0x3368e
leaq -0xe0(%rbp), %rdi
callq 0x4690
jmp 0x11618
leaq -0xe0(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x42f0
leaq -0xe1(%rbp), %rdi
callq 0x4520
jmp 0x124dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xe1(%rbp), %rdi
callq 0x4520
jmp 0x124ea
movsbl -0xbb(%rbp), %eax
cmpl $0x5, %eax
jne 0x11681
movsbl -0xba(%rbp), %eax
cmpl $0x0, %eax
je 0x11706
movq -0x20(%rbp), %rdi
callq 0x16610
leaq -0x109(%rbp), %rdi
movq %rdi, -0x548(%rbp)
callq 0x4800
movq -0x548(%rbp), %rdx
leaq 0x2205d(%rip), %rsi     # 0x33708
leaq -0x108(%rbp), %rdi
callq 0x4690
jmp 0x116b9
leaq -0x108(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x42f0
leaq -0x109(%rbp), %rdi
callq 0x4520
jmp 0x124dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x109(%rbp), %rdi
callq 0x4520
jmp 0x124ea
leaq -0x131(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0x4800
movq -0x550(%rbp), %rdx
leaq 0x21ffc(%rip), %rsi     # 0x33723
leaq -0x130(%rbp), %rdi
callq 0x4690
jmp 0x11735
leaq -0x131(%rbp), %rdi
callq 0x4520
leaq -0x130(%rbp), %rdi
xorl %esi, %esi
callq 0x4310
jmp 0x11751
leaq -0x130(%rbp), %rdi
movl $0x3, %esi
callq 0x4310
jmp 0x11764
movq -0x528(%rbp), %rdi
callq 0x4380
movl %eax, -0x138(%rbp)
movl $0xff, -0x13c(%rbp)
leaq -0x138(%rbp), %rdi
leaq -0x13c(%rbp), %rsi
callq 0xdd10
movq %rax, -0x558(%rbp)
jmp 0x1179c
movq -0x558(%rbp), %rax
movsbl (%rax), %esi
leaq -0x130(%rbp), %rdi
callq 0x4310
jmp 0x117b4
movq -0x528(%rbp), %rsi
leaq -0x130(%rbp), %rdi
callq 0x4600
jmp 0x117c9
movsbl -0x13(%rbp), %esi
leaq -0x130(%rbp), %rdi
callq 0x4310
jmp 0x117db
movsbl -0x14(%rbp), %esi
leaq -0x130(%rbp), %rdi
callq 0x4310
jmp 0x117ed
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x56c(%rbp)
leaq -0x130(%rbp), %rdi
movq %rdi, -0x578(%rbp)
callq 0x41e0
movq -0x578(%rbp), %rdi
movq %rax, -0x568(%rbp)
callq 0x4380
movl -0x56c(%rbp), %edi
movq -0x568(%rbp), %rsi
movq %rax, %rdx
movl $0x4000, %ecx           # imm = 0x4000
callq 0x4240
movq %rax, -0x560(%rbp)
jmp 0x11842
movq -0x560(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x580(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x4380
movq %rax, %rcx
movq -0x580(%rbp), %rax
cmpq %rcx, %rax
je 0x1193c
movq -0x20(%rbp), %rdi
callq 0x16610
jmp 0x11888
leaq -0x161(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0x4800
movq -0x588(%rbp), %rdx
leaq 0x21dce(%rip), %rsi     # 0x33677
leaq -0x160(%rbp), %rdi
callq 0x4690
jmp 0x118b7
leaq -0x160(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x42f0
leaq -0x161(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x131(%rbp), %rdi
callq 0x4520
jmp 0x124ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x124ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x161(%rbp), %rdi
callq 0x4520
jmp 0x124ce
movq -0x20(%rbp), %rax
movl (%rax), %edi
leaq -0x16c(%rbp), %rsi
movl $0x4, %edx
xorl %ecx, %ecx
callq 0x4180
movq %rax, -0x590(%rbp)
jmp 0x1195e
movq -0x590(%rbp), %rax
cmpq $0x4, %rax
je 0x11a00
movq -0x20(%rbp), %rdi
callq 0x16610
jmp 0x1197a
leaq -0x191(%rbp), %rdi
movq %rdi, -0x598(%rbp)
callq 0x4800
movq -0x598(%rbp), %rdx
leaq 0x21cf3(%rip), %rsi     # 0x3368e
leaq -0x190(%rbp), %rdi
callq 0x4690
jmp 0x119a9
leaq -0x190(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x42f0
leaq -0x191(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x191(%rbp), %rdi
callq 0x4520
jmp 0x124ce
movsbl -0x16c(%rbp), %eax
cmpl $0x5, %eax
je 0x11aa1
movq -0x20(%rbp), %rdi
callq 0x16610
jmp 0x11a1b
leaq -0x1b9(%rbp), %rdi
movq %rdi, -0x5a0(%rbp)
callq 0x4800
movq -0x5a0(%rbp), %rdx
leaq 0x21cea(%rip), %rsi     # 0x33726
leaq -0x1b8(%rbp), %rdi
callq 0x4690
jmp 0x11a4a
leaq -0x1b8(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x42f0
leaq -0x1b9(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1b9(%rbp), %rdi
callq 0x4520
jmp 0x124ce
movsbl -0x16b(%rbp), %eax
cmpl $0x0, %eax
je 0x11fa4
movq -0x20(%rbp), %rdi
callq 0x16610
jmp 0x11abc
movsbl -0x16b(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x5a8(%rbp)
subl $0x7, %eax
ja 0x11f1e
movq -0x5a8(%rbp), %rax
leaq 0x2179b(%rip), %rcx     # 0x33280
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x5b0(%rbp)
callq 0x4800
movq -0x5b0(%rbp), %rdx
leaq 0x21c36(%rip), %rsi     # 0x33745
leaq -0x1e0(%rbp), %rdi
callq 0x4690
jmp 0x11b1d
leaq -0x1e0(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x42f0
leaq -0x1e1(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1e1(%rbp), %rdi
callq 0x4520
jmp 0x124ce
leaq -0x209(%rbp), %rdi
movq %rdi, -0x5b8(%rbp)
callq 0x4800
movq -0x5b8(%rbp), %rdx
leaq 0x21bcd(%rip), %rsi     # 0x33762
leaq -0x208(%rbp), %rdi
callq 0x4690
jmp 0x11ba3
leaq -0x208(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x42f0
leaq -0x209(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x209(%rbp), %rdi
callq 0x4520
jmp 0x124ce
leaq -0x231(%rbp), %rdi
movq %rdi, -0x5c0(%rbp)
callq 0x4800
movq -0x5c0(%rbp), %rdx
leaq 0x21b6b(%rip), %rsi     # 0x33786
leaq -0x230(%rbp), %rdi
callq 0x4690
jmp 0x11c29
leaq -0x230(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x42f0
leaq -0x231(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x231(%rbp), %rdi
callq 0x4520
jmp 0x124ce
leaq -0x259(%rbp), %rdi
movq %rdi, -0x5c8(%rbp)
callq 0x4800
movq -0x5c8(%rbp), %rdx
leaq 0x21b06(%rip), %rsi     # 0x337a7
leaq -0x258(%rbp), %rdi
callq 0x4690
jmp 0x11caf
leaq -0x258(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x42f0
leaq -0x259(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x259(%rbp), %rdi
callq 0x4520
jmp 0x124ce
leaq -0x281(%rbp), %rdi
movq %rdi, -0x5d0(%rbp)
callq 0x4800
movq -0x5d0(%rbp), %rdx
leaq 0x21a9e(%rip), %rsi     # 0x337c5
leaq -0x280(%rbp), %rdi
callq 0x4690
jmp 0x11d35
leaq -0x280(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x42f0
leaq -0x281(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x281(%rbp), %rdi
callq 0x4520
jmp 0x124ce
leaq -0x2a9(%rbp), %rdi
movq %rdi, -0x5d8(%rbp)
callq 0x4800
movq -0x5d8(%rbp), %rdx
leaq 0x21a38(%rip), %rsi     # 0x337e5
leaq -0x2a8(%rbp), %rdi
callq 0x4690
jmp 0x11dbb
leaq -0x2a8(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x42f0
leaq -0x2a9(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2a9(%rbp), %rdi
callq 0x4520
jmp 0x124ce
leaq -0x2d1(%rbp), %rdi
movq %rdi, -0x5e0(%rbp)
callq 0x4800
movq -0x5e0(%rbp), %rdx
leaq 0x219cb(%rip), %rsi     # 0x337fe
leaq -0x2d0(%rbp), %rdi
callq 0x4690
jmp 0x11e41
leaq -0x2d0(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x42f0
leaq -0x2d1(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2d1(%rbp), %rdi
callq 0x4520
jmp 0x124ce
leaq -0x2f9(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
callq 0x4800
movq -0x5e8(%rbp), %rdx
leaq 0x21961(%rip), %rsi     # 0x3381a
leaq -0x2f8(%rbp), %rdi
callq 0x4690
jmp 0x11ec7
leaq -0x2f8(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x42f0
leaq -0x2f9(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2f9(%rbp), %rdi
callq 0x4520
jmp 0x124ce
leaq -0x321(%rbp), %rdi
movq %rdi, -0x5f0(%rbp)
callq 0x4800
movq -0x5f0(%rbp), %rdx
leaq 0x21903(%rip), %rsi     # 0x33842
leaq -0x320(%rbp), %rdi
callq 0x4690
jmp 0x11f4d
leaq -0x320(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x42f0
leaq -0x321(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x321(%rbp), %rdi
callq 0x4520
jmp 0x124ce
movsbl -0x16a(%rbp), %eax
cmpl $0x0, %eax
je 0x12045
movq -0x20(%rbp), %rdi
callq 0x16610
jmp 0x11fbf
leaq -0x349(%rbp), %rdi
movq %rdi, -0x5f8(%rbp)
callq 0x4800
movq -0x5f8(%rbp), %rdx
leaq 0x21877(%rip), %rsi     # 0x33857
leaq -0x348(%rbp), %rdi
callq 0x4690
jmp 0x11fee
leaq -0x348(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x348(%rbp), %rdi
callq 0x42f0
leaq -0x349(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x349(%rbp), %rdi
callq 0x4520
jmp 0x124ce
movsbl -0x169(%rbp), %eax
movl %eax, -0x5fc(%rbp)
subl $0x1, %eax
je 0x1207a
jmp 0x12059
movl -0x5fc(%rbp), %eax
subl $0x3, %eax
je 0x120fc
jmp 0x1206a
movl -0x5fc(%rbp), %eax
subl $0x4, %eax
je 0x120bb
jmp 0x12222
movq -0x20(%rbp), %rax
movl (%rax), %edi
leaq -0x450(%rbp), %rsi
movl $0x4, %edx
xorl %ecx, %ecx
callq 0x4180
movq %rax, -0x608(%rbp)
jmp 0x1209c
movq -0x608(%rbp), %rax
cmpq $0x4, %rax
setne %al
andb $0x1, %al
movzbl %al, %eax
movq %rax, -0x98(%rbp)
jmp 0x122b3
movq -0x20(%rbp), %rax
movl (%rax), %edi
leaq -0x450(%rbp), %rsi
movl $0x10, %edx
xorl %ecx, %ecx
callq 0x4180
movq %rax, -0x610(%rbp)
jmp 0x120dd
movq -0x610(%rbp), %rax
cmpq $0x10, %rax
setne %al
andb $0x1, %al
movzbl %al, %eax
movq %rax, -0x98(%rbp)
jmp 0x122b3
movq -0x20(%rbp), %rax
movl (%rax), %edi
leaq -0x450(%rbp), %rsi
movl $0x1, %edx
xorl %ecx, %ecx
callq 0x4180
movq %rax, -0x618(%rbp)
jmp 0x1211e
movq -0x618(%rbp), %rax
cmpq $0x1, %rax
setne %al
andb $0x1, %al
movzbl %al, %eax
movq %rax, -0x98(%rbp)
cmpq $0x0, -0x98(%rbp)
je 0x121cc
leaq -0x471(%rbp), %rdi
movq %rdi, -0x620(%rbp)
callq 0x4800
movq -0x620(%rbp), %rdx
leaq 0x21710(%rip), %rsi     # 0x33877
leaq -0x470(%rbp), %rdi
callq 0x4690
jmp 0x12175
leaq -0x470(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x470(%rbp), %rdi
callq 0x42f0
leaq -0x471(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x471(%rbp), %rdi
callq 0x4520
jmp 0x124ce
movsbl -0x450(%rbp), %eax
movl %eax, -0x478(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %edi
movslq -0x478(%rbp), %rdx
leaq -0x450(%rbp), %rsi
xorl %ecx, %ecx
callq 0x4180
movq %rax, -0x628(%rbp)
jmp 0x121fd
movq -0x628(%rbp), %rax
movslq -0x478(%rbp), %rcx
cmpq %rcx, %rax
setne %al
andb $0x1, %al
movzbl %al, %eax
movq %rax, -0x98(%rbp)
jmp 0x122b3
movq -0x20(%rbp), %rdi
callq 0x16610
jmp 0x1222d
leaq -0x499(%rbp), %rdi
movq %rdi, -0x630(%rbp)
callq 0x4800
movq -0x630(%rbp), %rdx
leaq 0x21609(%rip), %rsi     # 0x33857
leaq -0x498(%rbp), %rdi
callq 0x4690
jmp 0x1225c
leaq -0x498(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x498(%rbp), %rdi
callq 0x42f0
leaq -0x499(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x499(%rbp), %rdi
callq 0x4520
jmp 0x124ce
cmpq $0x0, -0x98(%rbp)
je 0x12352
movq -0x20(%rbp), %rdi
callq 0x16610
jmp 0x122cc
leaq -0x4c1(%rbp), %rdi
movq %rdi, -0x638(%rbp)
callq 0x4800
movq -0x638(%rbp), %rdx
leaq 0x2158a(%rip), %rsi     # 0x33877
leaq -0x4c0(%rbp), %rdi
callq 0x4690
jmp 0x122fb
leaq -0x4c0(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x4c0(%rbp), %rdi
callq 0x42f0
leaq -0x4c1(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x4c1(%rbp), %rdi
callq 0x4520
jmp 0x124ce
movq -0x20(%rbp), %rax
movl (%rax), %edi
leaq -0x450(%rbp), %rsi
movl $0x2, %edx
xorl %ecx, %ecx
callq 0x4180
movq %rax, -0x640(%rbp)
jmp 0x12374
movq -0x640(%rbp), %rax
cmpq $0x2, %rax
je 0x12416
movq -0x20(%rbp), %rdi
callq 0x16610
jmp 0x12390
leaq -0x4e9(%rbp), %rdi
movq %rdi, -0x648(%rbp)
callq 0x4800
movq -0x648(%rbp), %rdx
leaq 0x214c6(%rip), %rsi     # 0x33877
leaq -0x4e8(%rbp), %rdi
callq 0x4690
jmp 0x123bf
leaq -0x4e8(%rbp), %rdi
movb $0x0, %al
callq 0x15160
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x4e8(%rbp), %rdi
callq 0x42f0
leaq -0x4e9(%rbp), %rdi
callq 0x4520
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x4e9(%rbp), %rdi
callq 0x4520
jmp 0x124ce
leaq -0x511(%rbp), %rdi
movq %rdi, -0x650(%rbp)
callq 0x4800
movq -0x650(%rbp), %rdx
leaq 0x21459(%rip), %rsi     # 0x33890
leaq -0x510(%rbp), %rdi
callq 0x4690
jmp 0x12445
movq -0x528(%rbp), %rdi
callq 0x41e0
movq %rax, %rsi
xorl %eax, %eax
leaq -0x510(%rbp), %rdi
callq 0x14360
jmp 0x12464
leaq -0x510(%rbp), %rdi
callq 0x42f0
leaq -0x511(%rbp), %rdi
callq 0x4520
movb $0x1, -0x1(%rbp)
movl $0x1, -0x168(%rbp)
jmp 0x124c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x124b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x510(%rbp), %rdi
callq 0x42f0
leaq -0x511(%rbp), %rdi
callq 0x4520
jmp 0x124ce
leaq -0x130(%rbp), %rdi
callq 0x42f0
jmp 0x124dc
leaq -0x130(%rbp), %rdi
callq 0x42f0
jmp 0x124ea
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x650, %rsp            # imm = 0x650
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x47f0
nopw %cs:(%rax,%rax)