Function at 0x140040740
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 0x1400407bb
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 0x1400408db
mov r9, qword [rsp + 0xd8]
mov rax, rsi
mov rcx, r9
test r15, r15
je 0x14004081f
lea rdx, [rdi*8]
nop word [rax + rax]
mov qword [r14 + rax*8], rcx
add rcx, rdx
inc rax
cmp rax, r15
jb 0x140040810
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 0x1400408e3
or eax, 0xffffffff
jmp 0x140040be0
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 0x1400409e7
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.140040c00
lea rdi, [rdi + 0x40]
sub rsi, r12
jne 0x140040990
mov rdi, qword [rsp + 0xe0]
mov rdx, qword [r14]
mov r8, rdi
mov rcx, rbx
call fcn.140042220
mov r8, qword [r14 + 8]
mov r9, rdi
mov rdx, qword [r14]
mov rcx, rbx
call fcn.1400422c0
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.140042490
add rbp, qword [rsp + 0x38]
lea rax, [r13 - 1]
mov rcx, rsi
lea rdx, [rdi]
inc rsi
and rbp, rax
jne 0x140040a6f
lea rax, [r12 + r13]
add r13, r13
neg r12
mov qword [rsp + 0x38], rax
cmp rsi, r15
jb 0x140040a20
mov r12, qword [rsp + 0xd0]
xor r10d, r10d
mov r13d, 1
mov edi, r10d
cmp r13, r12
ja 0x140040afd
nop dword [rax]
test r13b, 1
jne 0x140040a9c
or rsi, 0xffffffffffffffff
jmp 0x140040aa5
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.140042790
lea rax, [rsi + rdi]
xor edx, edx
div r15
mov rcx, rdi
mov rdi, rdx
test rdx, rdx
jne 0x140040ab0
mov r13, qword [rsp + 0x40]
inc r13
mov qword [rsp + 0x40], r13
cmp r13, r12
jbe 0x140040a90
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 0x140040b18
lea rax, [rbx + 0x58]
cmp rax, r9
jae 0x140040b62
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 0x140040b30
movsxd rax, r10d
cmp rax, rdx
jge 0x140040b91
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 0x140040b80
mov rcx, rbx
call fcn.140040c00
mov r8d, dword [rsp + 0x48]
mov rcx, rbx
mov rdx, qword [rsp + 0xa0]
call fcn.140042160
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