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

Disassembly:
sub rsp, 0x168
mov rax, qword [0x1800a9880]
xor rax, rsp
mov qword [rsp + 0x160], rax
mov qword [rsp + 0x38], rdx
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0x20], 0
cmp dword [rsp + 0x20], 8
jge 0x18003acd0
mov rax, qword [rsp + 0x30]
movsxd rcx, dword [rsp + 0x20]
mov ecx, dword [rax + rcx*4 + 8]
movsxd rax, dword [rsp + 0x20]
mov dword [rsp + rax*4 + 0x140], ecx
mov eax, dword [rsp + 0x20]
add eax, 1
mov dword [rsp + 0x20], eax
jmp 0x18003ac9b
mov dword [rsp + 0x20], 0
cmp dword [rsp + 0x20], 0x10
jge 0x18003ad6f
mov rax, qword [rsp + 0x38]
mov ecx, dword [rsp + 0x20]
shl ecx, 2
movsxd rcx, ecx
movzx ecx, byte [rax + rcx]
and ecx, 0xff
shl ecx, 0x18
mov rax, qword [rsp + 0x38]
mov edx, dword [rsp + 0x20]
shl edx, 2
movsxd rdx, edx
movzx eax, byte [rax + rdx + 1]
and eax, 0xff
shl eax, 0x10
or ecx, eax
mov rax, qword [rsp + 0x38]
mov edx, dword [rsp + 0x20]
shl edx, 2
movsxd rdx, edx
movzx eax, byte [rax + rdx + 2]
and eax, 0xff
shl eax, 8
or ecx, eax
mov rax, qword [rsp + 0x38]
mov edx, dword [rsp + 0x20]
shl edx, 2
movsxd rdx, edx
movzx eax, byte [rax + rdx + 3]
and eax, 0xff
or ecx, eax
movsxd rax, dword [rsp + 0x20]
mov dword [rsp + rax*4 + 0x40], ecx
mov eax, dword [rsp + 0x20]
add eax, 1
mov dword [rsp + 0x20], eax
jmp 0x18003acd8
mov dword [rsp + 0x20], reloc.WS2_32.dll_recv
cmp dword [rsp + 0x20], 0x40
jge 0x18003ae77
mov eax, dword [rsp + 0x20]
sub eax, 2
cdqe
mov ecx, dword [rsp + rax*4 + 0x40]
shr ecx, 0x11
mov eax, dword [rsp + 0x20]
sub eax, 2
cdqe
mov eax, dword [rsp + rax*4 + 0x40]
shl eax, 0xf
or ecx, eax
mov eax, dword [rsp + 0x20]
sub eax, 2
cdqe
mov eax, dword [rsp + rax*4 + 0x40]
shr eax, 0x13
mov edx, dword [rsp + 0x20]
sub edx, 2
movsxd rdx, edx
mov edx, dword [rsp + rdx*4 + 0x40]
shl edx, 0xd
or eax, edx
xor ecx, eax
mov eax, dword [rsp + 0x20]
sub eax, 2
cdqe
mov eax, dword [rsp + rax*4 + 0x40]
and eax, 0xffffffff
shr eax, 0xa
xor ecx, eax
mov eax, dword [rsp + 0x20]
sub eax, 7
cdqe
add ecx, dword [rsp + rax*4 + 0x40]
mov eax, dword [rsp + 0x20]
sub eax, 0xf
cdqe
mov eax, dword [rsp + rax*4 + 0x40]
shr eax, 7
mov edx, dword [rsp + 0x20]
sub edx, 0xf
movsxd rdx, edx
mov edx, dword [rsp + rdx*4 + 0x40]
shl edx, 0x19
or eax, edx
mov edx, dword [rsp + 0x20]
sub edx, 0xf
movsxd rdx, edx
mov edx, dword [rsp + rdx*4 + 0x40]
shr edx, 0x12
mov r8d, dword [rsp + 0x20]
sub r8d, 0xf
movsxd r8, r8d
mov r8d, dword [rsp + r8*4 + 0x40]
shl r8d, 0xe
or edx, r8d
xor eax, edx
mov edx, dword [rsp + 0x20]
sub edx, 0xf
movsxd rdx, edx
mov edx, dword [rsp + rdx*4 + 0x40]
and edx, 0xffffffff
shr edx, 3
xor eax, edx
add ecx, eax
mov eax, dword [rsp + 0x20]
sub eax, 0x10
cdqe
add ecx, dword [rsp + rax*4 + 0x40]
movsxd rax, dword [rsp + 0x20]
mov dword [rsp + rax*4 + 0x40], ecx
mov eax, dword [rsp + 0x20]
add eax, 1
mov dword [rsp + 0x20], eax
jmp 0x18003ad77
mov dword [rsp + 0x20], 0
cmp dword [rsp + 0x20], 0x40
jge 0x18003b03a
mov eax, dword [rsp + 0x15c]
mov ecx, dword [rsp + 0x150]
shr ecx, 6
mov edx, dword [rsp + 0x150]
shl edx, 0x1a
or ecx, edx
mov edx, dword [rsp + 0x150]
shr edx, 0xb
mov r8d, dword [rsp + 0x150]
shl r8d, 0x15
or edx, r8d
xor ecx, edx
mov edx, dword [rsp + 0x150]
shr edx, 0x19
mov r8d, dword [rsp + 0x150]
shl r8d, 7
or edx, r8d
xor ecx, edx
add eax, ecx
mov ecx, dword [rsp + 0x158]
mov edx, dword [rsp + 0x150]
mov r8d, dword [rsp + 0x154]
xor r8d, dword [rsp + 0x158]
and edx, r8d
xor ecx, edx
add eax, ecx
movsxd rdx, dword [rsp + 0x20]
lea rcx, [0x18008d960]
add eax, dword [rcx + rdx*4]
movsxd rcx, dword [rsp + 0x20]
add eax, dword [rsp + rcx*4 + 0x40]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x140]
shr eax, 2
mov ecx, dword [rsp + 0x140]
shl ecx, 0x1e
or eax, ecx
mov ecx, dword [rsp + 0x140]
shr ecx, 0xd
mov edx, dword [rsp + 0x140]
shl edx, 0x13
or ecx, edx
xor eax, ecx
mov ecx, dword [rsp + 0x140]
shr ecx, 0x16
mov edx, dword [rsp + 0x140]
shl edx, 0xa
or ecx, edx
xor eax, ecx
mov ecx, dword [rsp + 0x140]
or ecx, dword [rsp + 0x144]
and ecx, dword [rsp + 0x148]
mov edx, dword [rsp + 0x140]
and edx, dword [rsp + 0x144]
or ecx, edx
add eax, ecx
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x2c]
add eax, dword [rsp + 0x14c]
mov dword [rsp + 0x14c], eax
mov eax, dword [rsp + 0x2c]
add eax, dword [rsp + 0x28]
mov dword [rsp + 0x15c], eax
mov eax, dword [rsp + 0x15c]
mov dword [rsp + 0x24], eax
mov eax, dword [rsp + 0x158]
mov dword [rsp + 0x15c], eax
mov eax, dword [rsp + 0x154]
mov dword [rsp + 0x158], eax
mov eax, dword [rsp + 0x150]
mov dword [rsp + 0x154], eax
mov eax, dword [rsp + 0x14c]
mov dword [rsp + 0x150], eax
mov eax, dword [rsp + 0x148]
mov dword [rsp + 0x14c], eax
mov eax, dword [rsp + 0x144]
mov dword [rsp + 0x148], eax
mov eax, dword [rsp + 0x140]
mov dword [rsp + 0x144], eax
mov eax, dword [rsp + 0x24]
mov dword [rsp + 0x140], eax
mov eax, dword [rsp + 0x20]
add eax, 1
mov dword [rsp + 0x20], eax
jmp 0x18003ae7f
mov dword [rsp + 0x20], 0
cmp dword [rsp + 0x20], 8
jge 0x18003b085
mov rax, qword [rsp + 0x30]
movsxd rcx, dword [rsp + 0x20]
mov edx, dword [rax + rcx*4 + 8]
movsxd rax, dword [rsp + 0x20]
add edx, dword [rsp + rax*4 + 0x140]
mov rax, qword [rsp + 0x30]
movsxd rcx, dword [rsp + 0x20]
mov dword [rax + rcx*4 + 8], edx
mov eax, dword [rsp + 0x20]
add eax, 1
mov dword [rsp + 0x20], eax
jmp 0x18003b042
mov rcx, qword [rsp + 0x160]
xor rcx, rsp
call fcn.18003f420
nop
add rsp, 0x168
ret