Function at 0x180057c90
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x118]
sub rsp, 0x218
mov rax, qword [0x18015e880]
xor rax, rsp
mov qword [rbp + 0x100], rax
mov rax, qword [rcx + 0x70]
mov r14, rcx
mov qword [rbp - 0x58], rax
mov r13, rdx
mov rax, qword [rcx + 0x38]
mov qword [rbp - 0x60], rax
mov eax, dword [rcx + 0x34]
mov rcx, qword [rcx + 8]
mov dword [rsp + 0x3c], eax
mov eax, dword [r14 + 0x18]
mov dword [rsp + 0x40], eax
add rax, rcx
mov qword [rbp - 0x30], rax
mov eax, edx
sub eax, ecx
mov qword [rbp - 0x78], rcx
mov ecx, dword [r14 + 0x100]
mov dword [rsp + 0x34], eax
mov qword [rbp - 0x50], r8
mov r8d, dword [r14 + 0x1c]
mov qword [rsp + 0x60], rdx
mov edx, 1
shl edx, cl
mov ecx, eax
sub ecx, dword [r14 + 0x1c]
sub eax, edx
cmp ecx, edx
mov qword [rbp - 0x48], r9
mov rdx, r13
cmova r8d, eax
mov eax, dword [r14 + 0x10c]
xor r15d, r15d
cmp dword [r14 + 0x28], r15d
cmovne r8d, dword [r14 + 0x1c]
lea ecx, [r15 + 5]
mov dword [rsp + 0x50], r8d
cmp eax, ecx
lea r12d, [r15 + 3]
lea r8d, [r15 + 4]
mov qword [rsp + 0x58], r12
cmovb ecx, eax
mov rax, qword [r14 + 0x60]
mov qword [rbp - 0x68], rax
lea eax, [r15 + 1]
shl eax, cl
lea rcx, [rsp + 0x78]
mov dword [rsp + 0x30], eax
mov rax, qword [r14 + 0xf8]
mov qword [rbp - 0x70], rax
mov rsi, qword [rax + 0x70]
mov rdi, qword [rax + 0x38]
mov ebx, dword [rax + 0x34]
call sub.VCRUNTIME140.dll_memcpy
imul eax, dword [rsp + 0x78], 0x9e3779b1
lea ecx, [r15 + 0x18]
sub ecx, ebx
shr rax, cl
mov qword [rbp - 0x18], rax
shr eax, 3
and eax, 0x1fffffe0
mov ecx, eax
add rax, rdi
mov qword [rbp - 0x40], rax
lea rdx, [rsi + rcx*4]
mov qword [rbp - 0x38], rdx
prefetcht0 byte [rdx]
prefetcht0 byte [rsi + rcx*4 + 0x40]
prefetcht0 byte [rax]
cmp dword [r14 + 0x12c], r15d
jne 0x180058111
mov r8, qword [r14 + 8]
mov esi, r13d
mov edi, dword [r14 + 0x2c]
sub esi, r8d
mov eax, esi
mov qword [rsp + 0x48], r8
sub eax, edi
mov dword [rsp + 0x38], esi
cmp eax, 0x180
jbe 0x180057fb3
mov rcx, qword [r14 + 0x70]
lea eax, [rdi + 0x60]
mov qword [rbp - 0x80], rcx
mov rcx, qword [r14 + 0x38]
mov qword [rbp - 0x28], rcx
mov dword [rsp + 0x44], eax
cmp edi, eax
jae 0x180057ee6
mov rsi, qword [rbp - 0x80]
lea eax, [r15 + 0x18]
sub eax, dword [r14 + 0x34]
mov r13d, edi
mov r15d, dword [rsp + 0x44]
mov r12, r8
mov qword [rsp + 0x68], rax
mov rbx, qword [r14 + 0x60]
lea rdx, [r12 + 8]
add rdx, r13
lea rcx, [rsp + 0x44]
mov r8d, 4
call sub.VCRUNTIME140.dll_memcpy
imul edx, dword [rsp + 0x44], 0x9e3779b1
mov r9d, 0x1fffffe0
mov rcx, qword [rsp + 0x68]
mov eax, ebx
xor rdx, rax
shr rdx, cl
mov eax, edx
shr eax, 3
and eax, r9d
prefetcht0 byte [rsi + rax*4]
prefetcht0 byte [rsi + rax*4 + 0x40]
mov r8, qword [rbp - 0x28]
prefetcht0 byte [r8 + rax]
mov rax, r13
and eax, 7
mov r10d, dword [r14 + rax*4 + 0x40]
mov dword [r14 + rax*4 + 0x40], edx
mov eax, r10d
shr eax, 3
and r9d, eax
add r8, r9
movzx edx, byte [r8]
dec edx
and edx, 0x1f
mov eax, edx
neg eax
sbb ecx, ecx
inc r13
not ecx
and ecx, 0x1f
add edx, ecx
mov byte [r8], dl
mov eax, edx
add rax, r9
mov byte [r8 + rdx], r10b
mov dword [rsi + rax*4], edi
inc edi
cmp edi, r15d
jb 0x180057e30
mov r13, qword [rsp + 0x60]
xor r15d, r15d
mov r12, qword [rsp + 0x58]
mov esi, dword [rsp + 0x38]
mov r8, qword [rsp + 0x48]
mov rax, qword [r14 + 0x70]
lea edi, [rsi - 0x20]
mov qword [rbp - 0x28], rax
lea rcx, [r13 + 1]
mov rax, qword [r14 + 0x38]
mov edx, ecx
sub edx, edi
mov qword [rsp + 0x70], rax
sub edx, r8d
mov eax, edi
add rax, r8
inc edx
cmp rax, rcx
mov eax, 8
cmova edx, r15d
cmp edx, eax
cmova edx, eax
lea eax, [rdx + rdi]
cmp edi, eax
jae 0x180057fb3
mov r15, qword [rsp + 0x48]
mov eax, 0x18
sub eax, dword [r14 + 0x34]
mov rsi, qword [rbp - 0x28]
mov qword [rsp + 0x68], rax
mov r13d, edx
mov r12d, edi
mov rbx, qword [r14 + 0x60]
lea rdx, [r12 + r15]
mov r8d, 4
lea rcx, [rbp - 0x80]
call sub.VCRUNTIME140.dll_memcpy
imul edx, dword [rbp - 0x80], 0x9e3779b1
mov rcx, qword [rsp + 0x68]
mov eax, ebx
xor rdx, rax
shr rdx, cl
mov eax, edx
shr eax, 3
and eax, 0x1fffffe0
mov ecx, eax
prefetcht0 byte [rsi + rax*4]
prefetcht0 byte [rsi + rax*4 + 0x40]
mov rax, qword [rsp + 0x70]
prefetcht0 byte [rax + rcx]
mov rax, r12
inc r12
and eax, 7
mov dword [r14 + rax*4 + 0x40], edx
sub r13, 1
jne 0x180057f45
mov r13, qword [rsp + 0x60]
xor r15d, r15d
mov r12, qword [rsp + 0x58]
mov esi, dword [rsp + 0x38]
mov rax, qword [r14 + 0x70]
mov rcx, qword [r14 + 8]
mov qword [rsp + 0x70], rax
mov rax, qword [r14 + 0x38]
mov qword [rbp - 0x28], rax
mov qword [rsp + 0x48], rcx
cmp edi, esi
jae 0x1800580a4
mov r13, qword [rsp + 0x70]
mov eax, 0x18
sub eax, dword [r14 + 0x34]
mov r15, qword [rbp - 0x28]
mov qword [rsp + 0x68], rax
mov r12d, edi
mov rbx, qword [r14 + 0x60]
lea rdx, [rcx + 8]
add rdx, r12
lea rcx, [rsp + 0x38]
mov r8d, 4
call sub.VCRUNTIME140.dll_memcpy
imul edx, dword [rsp + 0x38], 0x9e3779b1
mov r8d, 0x1fffffe0
mov rcx, qword [rsp + 0x68]
mov eax, ebx
xor rdx, rax
shr rdx, cl
mov eax, edx
shr eax, 3
and eax, r8d
prefetcht0 byte [r13 + rax*4]
prefetcht0 byte [r13 + rax*4 + 0x40]
prefetcht0 byte [rax + r15]
mov rax, r12
and eax, 7
mov r10d, dword [r14 + rax*4 + 0x40]
mov dword [r14 + rax*4 + 0x40], edx
mov eax, r10d
shr eax, 3
and eax, r8d
mov r9d, eax
lea r8, [r15 + rax]
movzx edx, byte [r8]
dec edx
and edx, 0x1f
mov eax, edx
neg eax
sbb ecx, ecx
inc r12
not ecx
and ecx, 0x1f
add edx, ecx
mov rcx, qword [rsp + 0x48]
mov byte [r8], dl
mov eax, edx
add rax, r9
mov byte [r8 + rdx], r10b
mov dword [r13 + rax*4], edi
inc edi
cmp edi, esi
jb 0x180057fef
mov r13, qword [rsp + 0x60]
xor r15d, r15d
mov r12, qword [rsp + 0x58]
mov rdx, qword [rbp - 0x78]
lea rcx, [rsp + 0x60]
mov ebx, dword [rsp + 0x34]
add rdx, 8
add rdx, rbx
mov dword [r14 + 0x2c], esi
mov r8d, 4
call sub.VCRUNTIME140.dll_memcpy
imul edx, dword [rsp + 0x60], 0x9e3779b1
mov ecx, 0x18
sub ecx, dword [rsp + 0x3c]
mov eax, dword [rbp - 0x68]
xor rdx, rax
mov rax, qword [rbp - 0x58]
shr rdx, cl
mov ecx, edx
shr ecx, 3
and ecx, 0x1fffffe0
prefetcht0 byte [rax + rcx*4]
prefetcht0 byte [rax + rcx*4 + 0x40]
mov r8, qword [rbp - 0x60]
prefetcht0 byte [rcx + r8]
and ebx, 7
mov r9d, dword [r14 + rbx*4 + 0x40]
mov dword [r14 + rbx*4 + 0x40], edx
jmp 0x18005814b
mov r8d, 4
lea rcx, [rsp + 0x48]
mov rdx, r13
call sub.VCRUNTIME140.dll_memcpy
imul r9d, dword [rsp + 0x48], 0x9e3779b1
mov ecx, 0x18
mov eax, dword [rbp - 0x68]
sub ecx, dword [rsp + 0x3c]
mov r8, qword [rbp - 0x60]
xor r9, rax
mov eax, dword [rsp + 0x34]
shr r9, cl
mov dword [r14 + 0x2c], eax
add dword [r14 + 0x68], r9d
mov eax, r9d
mov rcx, qword [rbp - 0x58]
xorps xmm0, xmm0
shr eax, 3
mov rdi, r15
and eax, 0x1fffffe0
movups xmmword [rbp - 0x28], xmm0
lea r11, [rax + r8]
movzx ebx, byte [r11]
lea rsi, [rcx + rax*4]
movsx eax, r9b
mov rcx, r15
mov rdx, r11
movd xmm1, eax
punpcklbw xmm1, xmm1
punpcklwd xmm1, xmm1
pshufd xmm1, xmm1, 0
movdqu xmm0, xmmword [rdx]
lea rdx, [rdx + 0x10]
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
mov dword [rbp + rcx*4 - 0x28], eax
inc rcx
cmp rcx, 2
jl 0x18005818f
mov r8d, dword [rbp - 0x24]
mov edx, ebx
and edx, 0x1f
shl r8d, 0x10
or r8d, dword [rbp - 0x28]
mov ecx, edx
neg ecx
mov eax, r8d
and ecx, 0x1f
mov r10d, r8d
shl r10d, cl
mov ecx, edx
shr rax, cl
or r10, rax
jbe 0x18005821b
mov edx, dword [rsp + 0x30]
mov r8, qword [rbp - 0x78]
mov r12d, dword [rsp + 0x50]
test edx, edx
je 0x180058212
bsf rcx, r10
add ecx, ebx
and ecx, 0x1f
mov ecx, dword [rsi + rcx*4]
je 0x180058209
cmp ecx, r12d
jb 0x180058212
prefetcht0 byte [rcx + r8]
mov dword [rbp + rdi*4], ecx
inc rdi
dec edx
lea rax, [r10 - 1]
and r10, rax
ja 0x1800581e4
mov r12, qword [rsp + 0x58]
mov dword [rsp + 0x30], edx
lea edx, [rbx - 1]
and edx, 0x1f
mov eax, edx
neg eax
sbb ecx, ecx
not ecx
and ecx, 0x1f
add edx, ecx
mov byte [r11], dl
mov byte [rdx + r11], r9b
mov eax, dword [r14 + 0x2c]
mov dword [rsi + rdx*4], eax
inc dword [r14 + 0x2c]
test rdi, rdi
je 0x1800582d0
mov r14, qword [rbp - 0x50]
mov esi, dword [rbp + r15*4]
lea rdx, [r12 - 3]
add rsi, qword [rbp - 0x78]
lea rcx, [rsp + 0x50]
add rdx, rsi
mov r8d, 4
call sub.VCRUNTIME140.dll_memcpy
mov ebx, dword [rsp + 0x50]
lea rdx, [r12 - 3]
add rdx, r13
lea rcx, [rsp + 0x3c]
mov r8d, 4
call sub.VCRUNTIME140.dll_memcpy
cmp ebx, dword [rsp + 0x3c]
jne 0x1800582c5
mov r8, r14
mov rdx, rsi
mov rcx, r13
call fcn.18003ab40
mov rcx, rax
cmp rax, r12
jbe 0x1800582c5
mov rdx, qword [rbp - 0x48]
mov r12, rax
mov eax, dword [rsp + 0x34]
sub eax, dword [rbp + r15*4]
add eax, 3
mov qword [rdx], rax
lea rax, [rcx + r13]
cmp rax, r14
je 0x1800582cd
inc r15
cmp r15, rdi
jb 0x18005824d
xor r15d, r15d
mov r11, qword [rbp - 0x70]
xorps xmm0, xmm0
mov rdx, qword [rbp - 0x40]
mov rdi, r15
mov rcx, r15
mov rax, qword [r11]
mov r14, qword [r11 + 8]
movzx r10d, byte [rdx]
mov qword [rbp - 0x70], rax
sub eax, r14d
sub dword [rsp + 0x40], eax
movsx eax, byte [rbp - 0x18]
movups xmmword [rbp - 0x18], xmm0
movd xmm1, eax
punpcklbw xmm1, xmm1
punpcklwd xmm1, xmm1
pshufd xmm1, xmm1, 0
movdqu xmm0, xmmword [rdx]
lea rdx, [rdx + 0x10]
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
mov dword [rbp + rcx*4 - 0x18], eax
inc rcx
cmp rcx, 2
jl 0x180058310
mov r8d, dword [rbp - 0x14]
mov edx, r10d
and edx, 0x1f
shl r8d, 0x10
or r8d, dword [rbp - 0x18]
mov ecx, edx
neg ecx
mov eax, r8d
and ecx, 0x1f
mov r9d, r8d
shl r9d, cl
mov ecx, edx
shr rax, cl
or r9, rax
jbe 0x180058430
mov edx, dword [rsp + 0x30]
mov r8, qword [rbp - 0x38]
test edx, edx
je 0x180058396
bsf rcx, r9
add ecx, r10d
and ecx, 0x1f
mov ecx, dword [r8 + rcx*4]
je 0x18005838d
cmp ecx, dword [r11 + 0x18]
jb 0x180058396
prefetcht0 byte [rcx + r14]
mov dword [rbp + rdi*4], ecx
inc rdi
dec edx
lea rax, [r9 - 1]
and r9, rax
ja 0x180058365
test rdi, rdi
je 0x180058430
mov esi, dword [rbp + r15*4]
lea rcx, [rsp + 0x30]
add rsi, r14
mov r8d, 4
mov rdx, rsi
call sub.VCRUNTIME140.dll_memcpy
mov ebx, dword [rsp + 0x30]
lea rcx, [rsp + 0x58]
mov r8d, 4
mov rdx, r13
call sub.VCRUNTIME140.dll_memcpy
cmp ebx, dword [rsp + 0x58]
jne 0x180058424
mov rax, qword [rbp - 0x30]
lea rdx, [rsi + 4]
mov rbx, qword [rbp - 0x50]
lea rcx, [r13 + 4]
mov r9, qword [rbp - 0x70]
mov r8, rbx
mov qword [rsp + 0x20], rax
call fcn.18004eb60
add rax, 4
cmp rax, r12
jbe 0x180058424
mov ecx, dword [rsp + 0x34]
mov r12, rax
sub ecx, dword [rbp + r15*4]
sub ecx, dword [rsp + 0x40]
mov rdx, qword [rbp - 0x48]
add ecx, 3
mov qword [rdx], rcx
lea rcx, [rax + r13]
cmp rcx, rbx
je 0x180058430
inc r15
cmp r15, rdi
jb 0x18005839f
mov rax, r12
mov rcx, qword [rbp + 0x100]
xor rcx, rsp
call fcn.1801241e0
add rsp, 0x218
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret