Function at 0x140017040
Capabilities:
Encrypt data using hc-128

Disassembly:
mov dword [rsp + 0x18], r8d
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
sub rsp, 0x148
mov dword [rsp + 4], 0
jmp 0x14001706a
mov eax, dword [rsp + 4]
inc eax
mov dword [rsp + 4], eax
mov eax, dword [rsp + 0x160]
cmp dword [rsp + 4], eax
jge 0x140017523
mov eax, dword [rsp + 4]
shl eax, 6
cdqe
mov rcx, qword [rsp + 0x158]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0x30], rax
mov dword [rsp], 0
jmp 0x1400170a8
mov eax, dword [rsp]
inc eax
mov dword [rsp], eax
cmp dword [rsp], 0x10
jge 0x140017111
mov eax, dword [rsp]
shl eax, 2
cdqe
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rcx + rax + 3]
mov ecx, dword [rsp]
shl ecx, 2
movsxd rcx, ecx
mov rdx, qword [rsp + 0x30]
movzx ecx, byte [rdx + rcx + 2]
shl ecx, 8
or eax, ecx
mov ecx, dword [rsp]
shl ecx, 2
movsxd rcx, ecx
mov rdx, qword [rsp + 0x30]
movzx ecx, byte [rdx + rcx + 1]
shl ecx, 0x10
or eax, ecx
mov ecx, dword [rsp]
shl ecx, 2
movsxd rcx, ecx
mov rdx, qword [rsp + 0x30]
movzx ecx, byte [rdx + rcx]
shl ecx, 0x18
or eax, ecx
movsxd rcx, dword [rsp]
mov dword [rsp + rcx*4 + 0x40], eax
jmp 0x1400170a0
mov dword [rsp], reloc.WS2_32.dll_recv
jmp 0x140017122
mov eax, dword [rsp]
inc eax
mov dword [rsp], eax
cmp dword [rsp], 0x40
jge 0x140017209
mov eax, dword [rsp]
sub eax, 2
cdqe
mov eax, dword [rsp + rax*4 + 0x40]
shr eax, 0x11
mov ecx, dword [rsp]
sub ecx, 2
movsxd rcx, ecx
mov ecx, dword [rsp + rcx*4 + 0x40]
shl ecx, 0xf
or eax, ecx
mov ecx, dword [rsp]
sub ecx, 2
movsxd rcx, ecx
mov ecx, dword [rsp + rcx*4 + 0x40]
shr ecx, 0x13
mov edx, dword [rsp]
sub edx, 2
movsxd rdx, edx
mov edx, dword [rsp + rdx*4 + 0x40]
shl edx, 0xd
or ecx, edx
xor eax, ecx
mov ecx, dword [rsp]
sub ecx, 2
movsxd rcx, ecx
mov ecx, dword [rsp + rcx*4 + 0x40]
shr ecx, 0xa
xor eax, ecx
mov ecx, dword [rsp]
sub ecx, 7
movsxd rcx, ecx
add eax, dword [rsp + rcx*4 + 0x40]
mov ecx, dword [rsp]
sub ecx, 0xf
movsxd rcx, ecx
mov ecx, dword [rsp + rcx*4 + 0x40]
shr ecx, 7
mov edx, dword [rsp]
sub edx, 0xf
movsxd rdx, edx
mov edx, dword [rsp + rdx*4 + 0x40]
shl edx, 0x19
or ecx, edx
mov edx, dword [rsp]
sub edx, 0xf
movsxd rdx, edx
mov edx, dword [rsp + rdx*4 + 0x40]
shr edx, 0x12
mov r8d, dword [rsp]
sub r8d, 0xf
movsxd r8, r8d
mov r8d, dword [rsp + r8*4 + 0x40]
shl r8d, 0xe
or edx, r8d
xor ecx, edx
mov edx, dword [rsp]
sub edx, 0xf
movsxd rdx, edx
mov edx, dword [rsp + rdx*4 + 0x40]
shr edx, 3
xor ecx, edx
add eax, ecx
mov ecx, dword [rsp]
sub ecx, 0x10
movsxd rcx, ecx
add eax, dword [rsp + rcx*4 + 0x40]
movsxd rcx, dword [rsp]
mov dword [rsp + rcx*4 + 0x40], eax
jmp 0x14001711a
mov dword [rsp], 0
jmp 0x14001721a
mov eax, dword [rsp]
inc eax
mov dword [rsp], eax
cmp dword [rsp], 8
jge 0x14001723d
movsxd rax, dword [rsp]
movsxd rcx, dword [rsp]
mov rdx, qword [rsp + 0x150]
mov eax, dword [rdx + rax*4 + 0x88]
mov dword [rsp + rcx*4 + 8], eax
jmp 0x140017212
mov dword [rsp], 0
jmp 0x14001724e
mov eax, dword [rsp]
inc eax
mov dword [rsp], eax
cmp dword [rsp], 0x40
jge 0x1400174d7
mov eax, 4
imul rax, rax, 7
mov ecx, 4
imul rcx, rcx, 4
mov ecx, dword [rsp + rcx + 8]
shr ecx, 6
mov edx, 4
imul rdx, rdx, 4
mov edx, dword [rsp + rdx + 8]
shl edx, 0x1a
or ecx, edx
mov edx, 4
imul rdx, rdx, 4
mov edx, dword [rsp + rdx + 8]
shr edx, 0xb
mov r8d, 4
imul r8, r8, 4
mov r8d, dword [rsp + r8 + 8]
shl r8d, 0x15
or edx, r8d
xor ecx, edx
mov edx, 4
imul rdx, rdx, 4
mov edx, dword [rsp + rdx + 8]
shr edx, 0x19
mov r8d, 4
imul r8, r8, 4
mov r8d, dword [rsp + r8 + 8]
shl r8d, 7
or edx, r8d
xor ecx, edx
mov eax, dword [rsp + rax + 8]
add eax, ecx
mov ecx, 4
imul rcx, rcx, 4
mov edx, 4
imul rdx, rdx, 5
mov edx, dword [rsp + rdx + 8]
mov ecx, dword [rsp + rcx + 8]
and ecx, edx
mov edx, 4
imul rdx, rdx, 4
mov edx, dword [rsp + rdx + 8]
not edx
mov r8d, 4
imul r8, r8, 6
and edx, dword [rsp + r8 + 8]
xor ecx, edx
add eax, ecx
movsxd rcx, dword [rsp]
lea rdx, [0x140213240]
add eax, dword [rdx + rcx*4]
movsxd rcx, dword [rsp]
add eax, dword [rsp + rcx*4 + 0x40]
mov dword [rsp + 0x28], eax
mov eax, 4
imul rax, rax, 0
mov eax, dword [rsp + rax + 8]
shr eax, 2
mov ecx, 4
imul rcx, rcx, 0
mov ecx, dword [rsp + rcx + 8]
shl ecx, 0x1e
or eax, ecx
mov ecx, 4
imul rcx, rcx, 0
mov ecx, dword [rsp + rcx + 8]
shr ecx, 0xd
mov edx, 4
imul rdx, rdx, 0
mov edx, dword [rsp + rdx + 8]
shl edx, 0x13
or ecx, edx
xor eax, ecx
mov ecx, 4
imul rcx, rcx, 0
mov ecx, dword [rsp + rcx + 8]
shr ecx, 0x16
mov edx, 4
imul rdx, rdx, 0
mov edx, dword [rsp + rdx + 8]
shl edx, 0xa
or ecx, edx
xor eax, ecx
mov ecx, 4
imul rcx, rcx, 0
mov edx, 4
imul rdx, rdx, 1
mov edx, dword [rsp + rdx + 8]
mov ecx, dword [rsp + rcx + 8]
and ecx, edx
mov edx, 4
imul rdx, rdx, 0
mov r8d, 4
imul r8, r8, 2
mov r8d, dword [rsp + r8 + 8]
mov edx, dword [rsp + rdx + 8]
and edx, r8d
xor ecx, edx
mov edx, 4
imul rdx, rdx, 1
mov r8d, 4
imul r8, r8, 2
mov r8d, dword [rsp + r8 + 8]
mov edx, dword [rsp + rdx + 8]
and edx, r8d
xor ecx, edx
add eax, ecx
mov dword [rsp + 0x38], eax
mov eax, 4
imul rax, rax, 6
mov ecx, 4
imul rcx, rcx, 7
mov eax, dword [rsp + rax + 8]
mov dword [rsp + rcx + 8], eax
mov eax, 4
imul rax, rax, 5
mov ecx, 4
imul rcx, rcx, 6
mov eax, dword [rsp + rax + 8]
mov dword [rsp + rcx + 8], eax
mov eax, 4
imul rax, rax, 4
mov ecx, 4
imul rcx, rcx, 5
mov eax, dword [rsp + rax + 8]
mov dword [rsp + rcx + 8], eax
mov eax, 4
imul rax, rax, 3
mov eax, dword [rsp + rax + 8]
add eax, dword [rsp + 0x28]
mov ecx, 4
imul rcx, rcx, 4
mov dword [rsp + rcx + 8], eax
mov eax, 4
imul rax, rax, 2
mov ecx, 4
imul rcx, rcx, 3
mov eax, dword [rsp + rax + 8]
mov dword [rsp + rcx + 8], eax
mov eax, 4
imul rax, rax, 1
mov ecx, 4
imul rcx, rcx, 2
mov eax, dword [rsp + rax + 8]
mov dword [rsp + rcx + 8], eax
mov eax, 4
imul rax, rax, 0
mov ecx, 4
imul rcx, rcx, 1
mov eax, dword [rsp + rax + 8]
mov dword [rsp + rcx + 8], eax
mov eax, dword [rsp + 0x38]
mov ecx, dword [rsp + 0x28]
add ecx, eax
mov eax, ecx
mov ecx, 4
imul rcx, rcx, 0
mov dword [rsp + rcx + 8], eax
jmp 0x140017246
mov dword [rsp], 0
jmp 0x1400174e8
mov eax, dword [rsp]
inc eax
mov dword [rsp], eax
cmp dword [rsp], 8
jge 0x14001751e
movsxd rax, dword [rsp]
movsxd rcx, dword [rsp]
mov rdx, qword [rsp + 0x150]
mov eax, dword [rdx + rax*4 + 0x88]
add eax, dword [rsp + rcx*4 + 8]
movsxd rcx, dword [rsp]
mov rdx, qword [rsp + 0x150]
mov dword [rdx + rcx*4 + 0x88], eax
jmp 0x1400174e0
jmp 0x140017060
add rsp, 0x148
ret