Function at 0x14004f060
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x10]
sub rsp, 0x110
mov rax, qword [0x140300040]
xor rax, rsp
mov qword [rbp + 8], rax
mov r15, rdx
mov qword [rsp + 0x70], rdx
mov r13, rcx
mov qword [rsp + 0x68], rcx
mov qword [rsp + 0x78], rcx
xorps xmm0, xmm0
movups xmmword [rbp - 0x50], xmm0
movups xmmword [rbp - 0x40], xmm0
movups xmmword [rbp - 0x30], xmm0
movups xmmword [rbp - 0x20], xmm0
lea rdi, vtable.XReadStream.0
mov qword [rbp - 0x50], rdi
lea rbx, vtable.XFileReadStream.0
mov qword [rbp - 0x50], rbx
xor r14d, r14d
mov dword [rbp - 0x14], r14d
mov ecx, 0x2000
call fcn.140207158
mov qword [rbp - 0x40], rax
mov qword [rbp - 0x30], rax
mov qword [rbp - 0x38], rax
mov qword [rbp - 0x28], r14
mov r12, 0xffffffffffffffff
mov qword [rbp - 0x48], r12
mov qword [rbp - 0x20], r14
mov dword [rbp - 0x18], r14d
mov qword [rbp - 0x30], rax
mov qword [rbp - 0x38], rax
mov qword [rbp - 0x28], r14
mov qword [rbp - 0x48], r12
mov qword [rbp - 0x20], r14
mov dword [rbp - 0x18], r14d
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp - 0x80], xmm0
mov qword [rbp - 0x70], rax
mov qword [rbp - 0x80], r14
mov qword [rbp - 0x70], r14
mov qword [rbp - 0x78], r14
movups xmmword [rbp - 0x10], xmm0
mov qword [rbp], rax
mov qword [rbp - 0x10], r14
mov qword [rbp], r14
mov qword [rbp - 8], r14
mov rdx, qword [r13]
lea rcx, [rbp - 0x50]
call fcn.14004a980
test eax, eax
je 0x14004f852
xor r8d, r8d
lea rdx, [rbp - 0x80]
lea rcx, [rbp - 0x50]
call fcn.14004a3a0
test eax, eax
je 0x14004f84e
mov rcx, qword [rbp - 0x48]
cmp rcx, r12
je 0x14004f199
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rax, qword [rbp - 0x40]
mov qword [rbp - 0x30], rax
mov qword [rbp - 0x38], rax
mov qword [rbp - 0x28], r14
mov qword [rbp - 0x48], r12
mov qword [rbp - 0x20], r14
mov dword [rbp - 0x18], r14d
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp - 0x68], xmm0
mov qword [rbp - 0x58], rax
mov qword [rbp - 0x68], r14
mov qword [rbp - 0x58], r14
mov qword [rbp - 0x60], r14
mov rsi, qword [rbp - 0x78]
mov rdx, rsi
xor ecx, ecx
call fcn.140207160
mov rdi, rax
mov qword [rsp + 0x60], rax
test rax, rax
jne 0x14004f21c
mov rcx, qword [rbp - 0x80]
test rcx, rcx
je 0x14004f1dc
call fcn.140207144
nop
mov qword [rbp - 0x50], rbx
cmp dword [rbp - 0x18], 0
je 0x14004f1fa
mov rcx, qword [rbp - 0x48]
cmp rcx, 0xffffffffffffffff
je 0x14004f1fa
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbp - 0x48], r12
mov rcx, qword [rbp - 0x40]
call fcn.140207144
nop
lea rax, vtable.XReadStream.0
mov qword [rbp - 0x50], rax
mov rcx, r13
call fcn.1400192b0
jmp 0x14004f8b0
mov qword [rbp - 0x68], rdi
mov qword [rbp - 0x58], rsi
mov qword [rbp - 0x60], r14
mov dword [rsp + 0x38], esi
mov r9d, esi
mov rbx, qword [rbp - 0x80]
mov r8, rbx
lea rdx, [rsp + 0x38]
mov rcx, rdi
call fcn.14004ee00
test eax, eax
je 0x14004f292
mov rcx, rdi
call fcn.140207144
nop
test rbx, rbx
je 0x14004f25e
mov rcx, rbx
call fcn.140207144
nop
lea rax, vtable.XFileReadStream.0
mov qword [rbp - 0x50], rax
cmp dword [rbp - 0x18], 0
je 0x14004f283
mov rcx, qword [rbp - 0x48]
cmp rcx, 0xffffffffffffffff
je 0x14004f283
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbp - 0x48], r12
mov rcx, qword [rbp - 0x40]
call fcn.140207144
nop
jmp 0x14004f204
mov eax, dword [rsp + 0x38]
mov qword [rbp - 0x60], rax
lea rdx, [rax + 0x12]
mov rcx, r15
call fcn.140019d40
test eax, eax
jne 0x14004f2f5
mov rcx, rdi
call fcn.140207144
nop
test rbx, rbx
je 0x14004f2c1
mov rcx, rbx
call fcn.140207144
nop
lea rax, vtable.XFileReadStream.0
mov qword [rbp - 0x50], rax
cmp dword [rbp - 0x18], 0
je 0x14004f2e6
mov rcx, qword [rbp - 0x48]
cmp rcx, 0xffffffffffffffff
je 0x14004f2e6
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbp - 0x48], r12
mov rcx, qword [rbp - 0x40]
call fcn.140207144
nop
jmp 0x14004f204
mov rax, qword [r15 + 0x10]
mov qword [r15 + 8], rax
mov qword [rsp + 0x40], 0x88b1f
mov word [rsp + 0x48], 0
mov dword [rsp + 0x54], esi
mov r15d, esi
mov rsi, rbx
test rbx, rbx
je 0x14004f7a5
mov ecx, 0xffffffff
lea r10, [0x140000000]
cmp r15, 0x17
jb 0x14004f693
test sil, 3
je 0x14004f35b
mov edx, ecx
movzx eax, byte [rsi]
xor rdx, rax
movzx eax, dl
shr ecx, 8
xor ecx, dword [r10 + rax*4 + 0x2934d0]
inc rsi
sub r15, 1
jne 0x14004f336
movabs rax, 0xcccccccccccccccd
mul r15
mov r13, rdx
shr r13, 4
lea rax, [r13*4]
add rax, r13
shl rax, 2
sub r15, rax
mov qword [rsp + 0x58], r15
mov r11d, r14d
mov r8d, r14d
mov r9d, r14d
sub r13, 1
je 0x14004f558
mov r12d, r14d
mov r15d, r14d
nop
xor ecx, dword [rsi]
xor r14d, dword [rsi + 4]
xor r11d, dword [rsi + 8]
xor r12d, dword [rsi + 0xc]
xor r15d, dword [rsi + 0x10]
add rsi, 0x14
mov r9d, ecx
movzx ecx, cl
mov ecx, dword [r10 + rcx*4 + 0x2914d0]
mov r10d, r14d
movzx eax, r14b
lea r8, [0x140000000]
mov r14d, dword [r8 + rax*4 + 0x2914d0]
movzx eax, r11b
mov edx, dword [r8 + rax*4 + 0x2914d0]
mov dword [rsp + 0x30], edx
mov ebx, r12d
movzx eax, r12b
mov r12d, dword [r8 + rax*4 + 0x2914d0]
mov edi, r15d
movzx eax, r15b
mov r15d, dword [r8 + rax*4 + 0x2914d0]
mov eax, r9d
shr rax, 0x10
movzx r8d, al
mov eax, r9d
shr rax, 8
movzx edx, al
lea rax, [0x140000000]
mov eax, dword [rax + r8*4 + 0x291cd0]
lea r8, [0x140000000]
xor eax, dword [r8 + rdx*4 + 0x2918d0]
shr r9, 0x18
xor eax, dword [r8 + r9*4 + 0x2920d0]
xor ecx, eax
mov eax, r10d
shr rax, 0x10
movzx r8d, al
mov eax, r10d
shr rax, 8
movzx edx, al
lea r9, [0x140000000]
mov eax, dword [r9 + r8*4 + 0x291cd0]
xor eax, dword [r9 + rdx*4 + 0x2918d0]
shr r10, 0x18
xor eax, dword [r9 + r10*4 + 0x2920d0]
xor r14d, eax
mov eax, r11d
shr rax, 0x10
movzx r8d, al
mov eax, r11d
shr rax, 8
movzx edx, al
lea r10, [0x140000000]
mov eax, dword [r10 + r8*4 + 0x291cd0]
xor eax, dword [r10 + rdx*4 + 0x2918d0]
shr r11, 0x18
xor eax, dword [r10 + r11*4 + 0x2920d0]
mov r11d, dword [rsp + 0x30]
xor r11d, eax
mov eax, ebx
shr rax, 0x10
movzx r8d, al
mov eax, ebx
shr rax, 8
movzx edx, al
mov eax, dword [r10 + r8*4 + 0x291cd0]
xor eax, dword [r10 + rdx*4 + 0x2918d0]
shr rbx, 0x18
xor eax, dword [r10 + rbx*4 + 0x2920d0]
xor r12d, eax
mov eax, edi
shr rax, 0x10
movzx r8d, al
mov eax, edi
shr rax, 8
movzx edx, al
mov eax, dword [r10 + r8*4 + 0x291cd0]
xor eax, dword [r10 + rdx*4 + 0x2918d0]
shr rdi, 0x18
xor eax, dword [r10 + rdi*4 + 0x2920d0]
xor r15d, eax
sub r13, 1
jne 0x14004f3a0
mov dword [rsp + 0x30], r15d
mov dword [rsp + 0x34], r12d
mov r15, qword [rsp + 0x58]
lea r12, [r13 - 1]
mov rbx, qword [rbp - 0x80]
mov rdi, qword [rsp + 0x60]
mov r8d, dword [rsp + 0x34]
mov r9d, dword [rsp + 0x30]
xor ecx, dword [rsi]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
xor ecx, dword [rsi + 4]
xor ecx, r14d
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
xor ecx, dword [rsi + 8]
xor ecx, r11d
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
xor ecx, dword [rsi + 0xc]
xor ecx, r8d
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
xor ecx, dword [rsi + 0x10]
xor ecx, r9d
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r10 + rdx*4 + 0x2934d0]
add rsi, 0x14
mov r13, qword [rsp + 0x68]
cmp r15, 8
jb 0x14004f775
mov r8, r15
shr r8, 3
imul rax, r8, 0xfffffffffffffff8
add r15, rax
nop dword [rax + rax]
mov edx, ecx
movzx eax, byte [rsi]
xor rdx, rax
movzx eax, dl
shr ecx, 8
xor ecx, dword [r10 + rax*4 + 0x2934d0]
movzx edx, byte [rsi + 1]
mov eax, ecx
xor rdx, rax
movzx eax, dl
shr ecx, 8
xor ecx, dword [r10 + rax*4 + 0x2934d0]
movzx edx, byte [rsi + 2]
mov eax, ecx
xor rdx, rax
movzx eax, dl
shr ecx, 8
xor ecx, dword [r10 + rax*4 + 0x2934d0]
movzx edx, byte [rsi + 3]
mov eax, ecx
xor rdx, rax
movzx eax, dl
shr ecx, 8
xor ecx, dword [r10 + rax*4 + 0x2934d0]
movzx edx, byte [rsi + 4]
mov eax, ecx
xor rdx, rax
movzx eax, dl
shr ecx, 8
xor ecx, dword [r10 + rax*4 + 0x2934d0]
movzx edx, byte [rsi + 5]
mov eax, ecx
xor rdx, rax
movzx eax, dl
shr ecx, 8
xor ecx, dword [r10 + rax*4 + 0x2934d0]
movzx edx, byte [rsi + 6]
mov eax, ecx
xor rdx, rax
movzx eax, dl
shr ecx, 8
xor ecx, dword [r10 + rax*4 + 0x2934d0]
movzx edx, byte [rsi + 7]
mov eax, ecx
xor rdx, rax
movzx eax, dl
shr ecx, 8
xor ecx, dword [r10 + rax*4 + 0x2934d0]
add rsi, 8
sub r8, 1
jne 0x14004f6b0
test r15, r15
je 0x14004f7a0
nop word [rax + rax]
mov edx, ecx
movzx eax, byte [rsi]
xor rdx, rax
movzx eax, dl
shr ecx, 8
xor ecx, dword [r10 + rax*4 + 0x2934d0]
lea rsi, [rsi + 1]
sub r15, 1
jne 0x14004f780
not ecx
mov r14d, ecx
mov dword [rsp + 0x50], r14d
mov rsi, qword [rsp + 0x70]
mov rcx, qword [rsi]
movsd xmm0, qword [rsp + 0x40]
movsd qword [rcx], xmm0
movzx eax, word [rsp + 0x48]
mov word [rcx + 8], ax
mov rcx, qword [rsi]
add rcx, 0xa
mov r14d, dword [rsp + 0x38]
mov r8d, r14d
mov rdx, rdi
call fcn.14022e460
mov rcx, qword [rsi]
mov rax, qword [rsp + 0x50]
mov qword [rcx + r14 + 0xa], rax
test rdi, rdi
je 0x14004f7f7
mov rcx, rdi
call fcn.140207144
nop
test rbx, rbx
je 0x14004f805
mov rcx, rbx
call fcn.140207144
nop
lea rax, vtable.XFileReadStream.0
mov qword [rbp - 0x50], rax
cmp dword [rbp - 0x18], 0
je 0x14004f82a
mov rcx, qword [rbp - 0x48]
cmp rcx, 0xffffffffffffffff
je 0x14004f82a
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbp - 0x48], r12
mov rcx, qword [rbp - 0x40]
call fcn.140207144
nop
lea rax, vtable.XReadStream.0
mov qword [rbp - 0x50], rax
mov rcx, r13
call fcn.1400192b0
mov eax, 1
jmp 0x14004f8b2
mov r14, qword [rbp - 0x80]
test r14, r14
je 0x14004f860
mov rcx, r14
call fcn.140207144
nop
mov qword [rbp - 0x50], rbx
cmp dword [rbp - 0x18], 0
je 0x14004f87e
mov rcx, qword [rbp - 0x48]
cmp rcx, 0xffffffffffffffff
je 0x14004f87e
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbp - 0x48], r12
mov rcx, qword [rbp - 0x40]
call fcn.140207144
nop
mov qword [rbp - 0x50], rdi
mov rdx, qword [r13]
sub rdx, 0x18
lock xadd dword [rdx + 0x10], r12d
sub r12d, 1
jg 0x14004f8b0
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x140038ca6.0]
xor eax, eax
mov rcx, qword [rbp + 8]
xor rcx, rsp
call fcn.1401f74b0
mov rbx, qword [rsp + 0x160]
add rsp, 0x110
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret