Function at 0x140041d20
Capabilities:
Encode data using xor
Hash data using sha512

Disassembly:
mov r11, rsp
mov qword [r11 + 0x18], r8
mov qword [r11 + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r15
sub rsp, 0x60
mov qword [r11 - 0x68], r9
mov r13d, 1
mov qword [r11 - 0x50], rdx
xor esi, esi
mov rax, qword [r11 + 0x48]
mov ebp, esi
mov r15, qword [r11 + 0x40]
mov r12d, r13d
mov qword [rsp + 0x40], r13
mov qword [rsp + 0x38], r13
lea rdi, [rax + rax*2]
shl rdi, 2
mov rbx, rdi
imul rbx, r15
shl rbx, 3
mov rcx, rbx
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov qword [rsp + 0xd8], rax
test rax, rax
jne 0x140041d9b
or eax, 0xffffffff
add rsp, 0x60
pop r15
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov r8, rbx
mov qword [rsp + 0xa8], r14
xor edx, edx
mov rcx, rax
call sub.VCRUNTIME140.dll_memset
lea rcx, [r15*8]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov r14, rax
test rax, rax
je 0x140041ebb
mov r9, qword [rsp + 0xd8]
mov rax, rsi
mov rcx, r9
test r15, r15
je 0x140041dff
lea rdx, [rdi*8]
nop word [rax + rax]
mov qword [r14 + rax*8], rcx
add rcx, rdx
inc rax
cmp rax, r15
jb 0x140041df0
mov rdi, qword [rsp + 0xc8]
xor edx, edx
mov rbx, qword [rsp + 0x30]
mov rcx, r9
lea rsi, [rdi + 0x30]
add rsi, rbx
shr rsi, 6
inc rsi
mov qword [rsp + 0x50], rsi
shl rsi, 6
mov r8, rsi
call sub.VCRUNTIME140.dll_memset
mov rdx, qword [rsp + 0xb0]
mov r8, rbx
mov rcx, qword [rsp + 0xd8]
call sub.VCRUNTIME140.dll_memcpy
add rbx, qword [rsp + 0xd8]
mov r8, rdi
mov rdx, qword [rsp + 0xc0]
mov rcx, rbx
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rsp + 0x48]
add rbx, rdi
mov r9, qword [rsp + 0x30]
mov ecx, 0x80
mov qword [rbx], rax
mov rax, qword [rsp + 0xd0]
mov qword [rbx + 8], r9
mov qword [rbx + 0x10], rdi
mov rdi, qword [rsp + 0xe0]
mov qword [rbx + 0x18], rax
mov rax, qword [rsp + 0xd8]
mov qword [rbx + 0x20], r15
mov qword [rbx + 0x28], rdi
mov byte [rbx + 0x30], 0x80
xor byte [rsi + rax - 1], r12b
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov rbx, rax
test rax, rax
jne 0x140041ec3
or eax, 0xffffffff
jmp 0x1400421c0
mov rsi, qword [rsp + 0x50]
xor eax, eax
mov qword [rbx], rax
movabs rcx, 0xa54ff53a5f1d36f1
mov qword [rbx + 8], rax
mov qword [rbx + 0x10], rax
mov qword [rbx + 0x18], rax
mov qword [rbx + 0x20], rax
mov qword [rbx + 0x28], rax
mov qword [rbx + 0x30], rax
mov qword [rbx + 0x38], rax
movabs rax, 0x6a09e667f3bcc908
mov qword [rbx + 0x40], rax
movabs rax, 0xbb67ae8584caa73b
mov qword [rbx + 0x48], rax
movabs rax, 0x3c6ef372fe94f82b
mov qword [rbx + 0x50], rax
movabs rax, 0x510e527fade682d1
mov qword [rbx + 0x58], rcx
mov qword [rbx + 0x60], rax
movabs rax, 0x9b05688c2b3e6c1f
mov qword [rbx + 0x68], rax
movabs rax, 0x1f83d9abfb41bd6b
mov qword [rbx + 0x70], rax
movabs rax, 0x5be0cd19137e2179
mov qword [rbx + 0x78], rax
test rsi, rsi
je 0x140041fc7
mov rdi, qword [rsp + 0xd8]
add rdi, 0x10
nop word [rax + rax]
mov rax, qword [rdi - 0x10]
mov rcx, rbx
xor qword [rbx], rax
mov rax, qword [rdi - 8]
xor qword [rbx + 8], rax
mov rax, qword [rdi]
xor qword [rbx + 0x10], rax
mov rax, qword [rdi + 8]
xor qword [rbx + 0x18], rax
mov rax, qword [rdi + 0x10]
xor qword [rbx + 0x20], rax
mov rax, qword [rdi + 0x18]
xor qword [rbx + 0x28], rax
mov rax, qword [rdi + 0x20]
xor qword [rbx + 0x30], rax
mov rax, qword [rdi + 0x28]
xor qword [rbx + 0x38], rax
call fcn.1400421e0
lea rdi, [rdi + 0x40]
sub rsi, r12
jne 0x140041f70
mov rdi, qword [rsp + 0xe0]
mov rdx, qword [r14]
mov r8, rdi
mov rcx, rbx
call fcn.140043800
mov r8, qword [r14 + 8]
mov r9, rdi
mov rdx, qword [r14]
mov rcx, rbx
call fcn.1400438a0
mov esi, 2
mov edx, 8
mov r13d, esi
nop dword [rax]
nop dword [rax + rax]
mov rax, qword [rsp + 0xe0]
lea rdi, [rsi*8]
mov r9, qword [rdi + r14]
mov rcx, rbx
mov r8, qword [r14 + rbp*8]
mov rdx, qword [rdx + r14]
mov qword [rsp + 0x20], rax
call fcn.140043a70
add rbp, qword [rsp + 0x38]
lea rax, [r13 - 1]
mov rcx, rsi
lea rdx, [rdi]
inc rsi
and rbp, rax
jne 0x14004204f
lea rax, [r12 + r13]
add r13, r13
neg r12
mov qword [rsp + 0x38], rax
cmp rsi, r15
jb 0x140042000
mov r12, qword [rsp + 0xd0]
xor r10d, r10d
mov r13d, 1
mov edi, r10d
cmp r13, r12
ja 0x1400420dd
nop dword [rax]
test r13b, 1
jne 0x14004207c
or rsi, 0xffffffffffffffff
jmp 0x140042085
mov rsi, r15
shr rsi, 1
dec rsi
mov r13, qword [rsp + 0xe0]
nop dword [rax]
mov rax, qword [rbx]
xor edx, edx
mov r9, qword [r14 + rdi*8]
div r15
mov qword [rsp + 0x20], r13
mov rbp, rdx
mov r8, qword [r14 + rdx*8]
mov rdx, qword [r14 + rcx*8]
mov rcx, rbx
call fcn.140043d70
lea rax, [rsi + rdi]
xor edx, edx
div r15
mov rcx, rdi
mov rdi, rdx
test rdx, rdx
jne 0x140042090
mov r13, qword [rsp + 0x40]
inc r13
mov qword [rsp + 0x40], r13
cmp r13, r12
jbe 0x140042070
xor r10d, r10d
mov r9, qword [r14 + rbp*8]
mov edx, reloc.WS2_32.dll_inet_ntoa
lea rax, [r9 + 0x58]
cmp rbx, rax
ja 0x1400420f8
lea rax, [rbx + 0x58]
cmp rax, r9
jae 0x140042142
mov rcx, r9
lea rax, [rbx + 0x10]
sub rcx, rbx
mov r8d, 3
mov r10d, edx
nop dword [rax + rax]
movdqu xmm0, xmmword [rax - 0x10]
movdqu xmm1, xmmword [rcx + rax - 0x10]
lea rax, [rax + 0x20]
pxor xmm1, xmm0
movdqu xmmword [rax - 0x30], xmm1
movdqu xmm2, xmmword [rcx + rax - 0x20]
movdqu xmm0, xmmword [rax - 0x20]
pxor xmm2, xmm0
movdqu xmmword [rax - 0x20], xmm2
sub r8, 1
jne 0x140042110
movsxd rax, r10d
cmp rax, rdx
jge 0x140042171
sub r9, rbx
lea rcx, [rbx + rax*8]
sub rdx, rax
nop dword [rax]
nop dword [rax + rax]
mov rax, qword [rcx + r9]
xor qword [rcx], rax
lea rcx, [rcx + 8]
sub rdx, 1
jne 0x140042160
mov rcx, rbx
call fcn.1400421e0
mov r8d, dword [rsp + 0x48]
mov rcx, rbx
mov rdx, qword [rsp + 0xa0]
call fcn.140043740
mov rcx, r14
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rcx, qword [rsp + 0xd8]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
xor edx, edx
mov r8d, 0x80
mov rcx, rbx
call sub.VCRUNTIME140.dll_memset
mov rcx, rbx
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
xor eax, eax
mov r14, qword [rsp + 0xa8]
add rsp, 0x60
pop r15
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret