Function at 0x140225650
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 [0x140339080]
xor rax, rsp
mov qword [rbp + 0x100], rax
mov rax, qword [rcx + 0x70]
mov r14, rcx
mov qword [rbp - 0x68], rax
mov r13, rdx
mov rax, qword [rcx + 0x38]
mov qword [rbp - 0x70], rax
mov eax, dword [rcx + 0x34]
mov rcx, qword [rcx + 8]
mov dword [rsp + 0x58], eax
mov eax, dword [r14 + 0x18]
mov dword [rsp + 0x50], eax
add rax, rcx
mov qword [rbp - 0x30], rax
mov eax, edx
sub eax, ecx
mov qword [rbp - 0x80], rcx
mov ecx, dword [r14 + 0x100]
mov dword [rsp + 0x48], eax
mov qword [rbp - 0x60], r8
mov r8d, dword [r14 + 0x1c]
mov qword [rsp + 0x70], rdx
mov edx, 1
shl edx, cl
mov ecx, eax
sub ecx, dword [r14 + 0x1c]
sub eax, edx
cmp ecx, edx
mov qword [rbp - 0x58], r9
mov rdx, r13
mov qword [rsp + 0x60], 3
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 + 0x38], r8d
cmp eax, ecx
lea r8d, [r15 + 8]
cmovb ecx, eax
mov rax, qword [r14 + 0x60]
mov qword [rbp - 0x78], rax
lea eax, [r15 + 1]
shl eax, cl
lea rcx, [rbp - 0x50]
mov dword [rsp + 0x4c], eax
mov rax, qword [r14 + 0xf8]
mov qword [rbp - 0x48], rax
mov rsi, qword [rax + 0x70]
mov rdi, qword [rax + 0x38]
mov ebx, dword [rax + 0x34]
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rbp - 0x50]
lea r12d, [r15 + 0x38]
mov ecx, r12d
sub ecx, ebx
movabs rbx, 0xcf1bbcdcbb000000
imul rax, rbx
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 0x140225aee
mov r8, qword [r14 + 8]
mov esi, r13d
mov edi, dword [r14 + 0x2c]
sub esi, r8d
mov eax, esi
mov qword [rsp + 0x68], r8
sub eax, edi
mov dword [rsp + 0x54], esi
cmp eax, 0x180
jbe 0x140225988
mov rcx, qword [r14 + 0x70]
lea eax, [rdi + 0x60]
mov qword [rbp - 0x28], rcx
mov rcx, qword [r14 + 0x38]
mov qword [rsp + 0x40], rcx
mov dword [rsp + 0x30], eax
cmp edi, eax
jae 0x1402258b8
mov eax, r12d
mov esi, edi
sub eax, dword [r14 + 0x34]
mov r15, r8
mov r12d, dword [rsp + 0x30]
mov r13d, eax
mov rbx, qword [r14 + 0x60]
lea rdx, [r15 + 8]
add rdx, rsi
lea rcx, [rsp + 0x30]
mov r8d, 8
call sub.VCRUNTIME140.dll_memcpy
mov rdx, qword [rsp + 0x30]
movabs rax, 0xcf1bbcdcbb000000
mov r11, qword [rbp - 0x28]
mov ecx, r13d
imul rdx, rax
mov r9d, 0x1fffffe0
xor rdx, rbx
shr rdx, cl
mov eax, edx
shr eax, 3
and eax, r9d
prefetcht0 byte [r11 + rax*4]
prefetcht0 byte [r11 + rax*4 + 0x40]
mov r8, qword [rsp + 0x40]
prefetcht0 byte [rax + r8]
mov rax, rsi
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 rsi
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 [r11 + rax*4], edi
inc edi
cmp edi, r12d
jb 0x1402257f5
mov r13, qword [rsp + 0x70]
xor r15d, r15d
mov esi, dword [rsp + 0x54]
mov r8, qword [rsp + 0x68]
lea r12d, [r15 + 0x38]
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 + 0x78], rax
sub edx, r8d
mov eax, edi
inc edx
add rax, r8
cmp rax, rcx
mov ecx, 8
cmova edx, r15d
cmp edx, ecx
cmova edx, ecx
lea eax, [rdx + rdi]
cmp edi, eax
jae 0x140225988
mov r13, qword [rsp + 0x68]
mov eax, r12d
sub eax, dword [r14 + 0x34]
mov esi, eax
mov r12d, edx
mov r15d, edi
mov rbx, qword [r14 + 0x60]
lea rdx, [r15 + r13]
mov r8, rcx
lea rcx, [rsp + 0x40]
call sub.VCRUNTIME140.dll_memcpy
mov rdx, qword [rsp + 0x40]
movabs rax, 0xcf1bbcdcbb000000
imul rdx, rax
mov rax, qword [rbp - 0x28]
mov ecx, esi
xor rdx, rbx
shr rdx, cl
mov ecx, edx
shr ecx, 3
and ecx, 0x1fffffe0
prefetcht0 byte [rax + rcx*4]
prefetcht0 byte [rax + rcx*4 + 0x40]
mov rax, qword [rsp + 0x78]
prefetcht0 byte [rax + rcx]
mov rax, r15
mov ecx, 8
and eax, 7
inc r15
mov dword [r14 + rax*4 + 0x40], edx
sub r12, 1
jne 0x14022590e
mov r13, qword [rsp + 0x70]
lea r12d, [rcx + 0x30]
mov esi, dword [rsp + 0x54]
xor r15d, r15d
mov rax, qword [r14 + 0x70]
mov rcx, qword [r14 + 8]
mov qword [rsp + 0x40], rax
mov rax, qword [r14 + 0x38]
mov qword [rbp - 0x28], rax
mov qword [rsp + 0x68], rcx
cmp edi, esi
jae 0x140225a79
mov eax, r12d
mov r15d, edi
sub eax, dword [r14 + 0x34]
mov r12, qword [rsp + 0x40]
mov r13d, eax
mov rbx, qword [r14 + 0x60]
lea rdx, [rcx + 8]
add rdx, r15
lea rcx, [rsp + 0x40]
mov r8d, 8
call sub.VCRUNTIME140.dll_memcpy
mov rdx, qword [rsp + 0x40]
movabs rax, 0xcf1bbcdcbb000000
imul rdx, rax
mov ecx, r13d
mov r9d, 0x1fffffe0
xor rdx, rbx
shr rdx, cl
mov eax, edx
shr eax, 3
and eax, r9d
prefetcht0 byte [r12 + rax*4]
prefetcht0 byte [r12 + rax*4 + 0x40]
mov r8, qword [rbp - 0x28]
prefetcht0 byte [r8 + rax]
mov rax, r15
and eax, 7
mov r11d, dword [r14 + rax*4 + 0x40]
mov dword [r14 + rax*4 + 0x40], edx
mov eax, r11d
shr eax, 3
and eax, r9d
mov r10d, eax
lea r9, [r8 + rax]
movzx edx, byte [r9]
dec edx
and edx, 0x1f
mov eax, edx
neg eax
sbb ecx, ecx
inc r15
not ecx
and ecx, 0x1f
add edx, ecx
mov rcx, qword [rsp + 0x68]
mov byte [r9], dl
mov eax, edx
add rax, r10
mov byte [r9 + rdx], r11b
mov dword [r12 + rax*4], edi
inc edi
cmp edi, esi
jb 0x1402259bc
mov r13, qword [rsp + 0x70]
xor r15d, r15d
lea r12d, [r15 + 0x38]
mov rdx, qword [rbp - 0x80]
lea rcx, [rsp + 0x40]
mov ebx, dword [rsp + 0x48]
add rdx, 8
add rdx, rbx
mov dword [r14 + 0x2c], esi
mov r8d, 8
call sub.VCRUNTIME140.dll_memcpy
sub r12d, dword [rsp + 0x58]
movabs rax, 0xcf1bbcdcbb000000
mov rdx, qword [rsp + 0x40]
mov cl, r12b
imul rdx, rax
mov rax, qword [rbp - 0x68]
xor rdx, qword [rbp - 0x78]
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 - 0x70]
prefetcht0 byte [rcx + r8]
and ebx, 7
mov r9d, dword [r14 + rbx*4 + 0x40]
mov dword [r14 + rbx*4 + 0x40], edx
jmp 0x140225b25
mov r8d, 8
lea rcx, [rsp + 0x40]
mov rdx, r13
call sub.VCRUNTIME140.dll_memcpy
sub r12d, dword [rsp + 0x58]
mov r9, qword [rsp + 0x40]
mov cl, r12b
mov eax, dword [rsp + 0x48]
mov r8, qword [rbp - 0x70]
imul r9, rbx
mov dword [r14 + 0x2c], eax
xor r9, qword [rbp - 0x78]
shr r9, cl
add dword [r14 + 0x68], r9d
mov eax, r9d
mov rcx, qword [rbp - 0x68]
xorps xmm0, xmm0
shr eax, 3
mov rbx, r15
and eax, 0x1fffffe0
mov r12, r15
movups xmmword [rbp - 0x28], xmm0
lea r11, [rax + r8]
movzx edi, 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 0x140225b6c
mov r8d, dword [rbp - 0x24]
mov edx, edi
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 0x140225bf8
mov edx, dword [rsp + 0x4c]
mov r8, qword [rbp - 0x80]
mov r13d, dword [rsp + 0x38]
test edx, edx
je 0x140225bef
bsf rcx, r10
add ecx, edi
and ecx, 0x1f
mov ecx, dword [rsi + rcx*4]
je 0x140225be6
cmp ecx, r13d
jb 0x140225bef
prefetcht0 byte [rcx + r8]
mov dword [rbp + rbx*4], ecx
inc rbx
dec edx
lea rax, [r10 - 1]
and r10, rax
ja 0x140225bc1
mov r13, qword [rsp + 0x70]
mov dword [rsp + 0x4c], edx
lea edx, [rdi - 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 rbx, rbx
je 0x140225cb9
mov rsi, qword [rsp + 0x60]
mov r14, qword [rbp - 0x60]
mov r15d, dword [rsp + 0x48]
mov edi, dword [rbp + r12*4]
lea rdx, [rsi - 3]
add rdi, qword [rbp - 0x80]
lea rcx, [rsp + 0x30]
add rdx, rdi
mov r8d, 4
call sub.VCRUNTIME140.dll_memcpy
lea rdx, [rsi - 3]
mov r8d, 4
add rdx, r13
lea rcx, [rsp + 0x38]
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [rsp + 0x38]
cmp dword [rsp + 0x30], eax
jne 0x140225ca9
mov r8, r14
mov rdx, rdi
mov rcx, r13
call fcn.140207344
mov rcx, rax
cmp rax, rsi
jbe 0x140225ca9
mov rdx, qword [rbp - 0x58]
mov rsi, rax
mov eax, r15d
sub eax, dword [rbp + r12*4]
add eax, 3
mov qword [rdx], rax
lea rax, [rcx + r13]
cmp rax, r14
je 0x140225cb1
inc r12
cmp r12, rbx
jb 0x140225c34
mov qword [rsp + 0x60], rsi
xor r15d, r15d
mov r11, qword [rbp - 0x48]
xorps xmm0, xmm0
mov rdx, qword [rbp - 0x40]
mov rbx, r15
mov rcx, r15
mov r12, qword [r11]
mov r14, qword [r11 + 8]
mov eax, r12d
movzx r10d, byte [rdx]
sub eax, r14d
sub dword [rsp + 0x50], 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 0x140225cf8
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 0x140225e1e
mov edx, dword [rsp + 0x4c]
mov r8, qword [rbp - 0x38]
test edx, edx
je 0x140225d7e
bsf rcx, r9
add ecx, r10d
and ecx, 0x1f
mov ecx, dword [r8 + rcx*4]
je 0x140225d75
cmp ecx, dword [r11 + 0x18]
jb 0x140225d7e
prefetcht0 byte [rcx + r14]
mov dword [rbp + rbx*4], ecx
inc rbx
dec edx
lea rax, [r9 - 1]
and r9, rax
ja 0x140225d4d
mov rsi, qword [rsp + 0x60]
test rbx, rbx
je 0x140225e23
mov edi, dword [rbp + r15*4]
lea rcx, [rsp + 0x30]
add rdi, r14
mov r8d, 4
mov rdx, rdi
call sub.VCRUNTIME140.dll_memcpy
mov r8d, 4
lea rcx, [rsp + 0x38]
mov rdx, r13
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [rsp + 0x38]
cmp dword [rsp + 0x30], eax
jne 0x140225e10
mov rax, qword [rbp - 0x30]
lea rdx, [rdi + 4]
mov rdi, qword [rbp - 0x60]
lea rcx, [r13 + 4]
mov r8, rdi
mov qword [rsp + 0x20], rax
mov r9, r12
call fcn.14021ae94
add rax, 4
cmp rax, rsi
jbe 0x140225e10
mov ecx, dword [rsp + 0x48]
mov rsi, rax
sub ecx, dword [rbp + r15*4]
sub ecx, dword [rsp + 0x50]
mov rdx, qword [rbp - 0x58]
add ecx, 3
mov qword [rdx], rcx
lea rcx, [rax + r13]
cmp rcx, rdi
je 0x140225e23
inc r15
cmp r15, rbx
jb 0x140225d8c
jmp 0x140225e23
mov rsi, qword [rsp + 0x60]
mov rax, rsi
mov rcx, qword [rbp + 0x100]
xor rcx, rsp
call fcn.140255330
add rsp, 0x218
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret