Function at 0x1800fac50
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 - 0xdb0]
sub rsp, 0xeb0
mov rax, qword [0x18025cbc0]
xor rax, rsp
mov qword [rbp + 0xda0], rax
mov rdi, rcx
lea r9, [0x180201420]
xor ebx, ebx
mov r12d, r8d
mov dword [rdx], ebx
mov r13, rdx
mov rax, qword [rcx + 8]
mov r15d, ebx
mov dword [rsp + 0x24], ebx
mov dword [rax + 0xe8], ebx
mov r8, qword [rcx + 8]
movzx eax, byte [r8 + 0x13b8]
movzx ecx, byte [r8 + 0x13b9]
movzx edx, word [r9 + rax*2]
mov eax, edx
shr rax, 8
xor rcx, rax
movzx eax, dl
shl eax, 8
movzx r14d, word [r9 + rcx*2]
mov rcx, qword [r8 + 0x58]
xor r14d, eax
mov eax, dword [rcx + 0x14]
mov dword [rcx + 0x20], eax
mov eax, dword [rcx + 0x18]
mov dword [rcx + 0x24], eax
mov dword [rcx + 0x1c], r14d
mov rcx, rdi
call fcn.1800fb3f0
test eax, eax
je 0x1800fadb6
mov rax, qword [rdi]
cmp dword [rax], 2
je 0x1800fb3d7
mov rdx, qword [rdi + 8]
mov rcx, rdi
mov r9d, dword [rdx + 0x558]
mov r8d, dword [rdx + 0x550]
mov edx, dword [rdx + 0x548]
call fcn.1800d8870
test eax, eax
je 0x1800fadb6
mov rcx, qword [rdi + 8]
mov esi, ebx
cmp dword [rcx + 0x550], ebx
jbe 0x1800fade2
nop
mov r8d, dword [rcx + 0x558]
mov ecx, dword [rcx + 0x554]
sub ecx, 1
je 0x1800fad7a
sub ecx, 1
je 0x1800fad6b
cmp ecx, 1
jne 0x1800fad82
lea eax, [r8 + 1]
cmp esi, ecx
cmovne eax, r8d
mov r8d, eax
jmp 0x1800fad82
lea eax, [r8 + 1]
test esi, esi
cmovne eax, r8d
mov r8d, eax
jmp 0x1800fad82
cmp esi, 1
jne 0x1800fad82
inc r8d
mov r9d, r12d
mov edx, esi
mov rcx, rdi
call fcn.1800fd310
mov rcx, qword [rdi]
mov edx, dword [rcx]
test eax, eax
je 0x1800fadad
cmp edx, 3
jne 0x1800fade2
mov rcx, qword [rdi + 8]
inc esi
cmp esi, dword [rcx + 0x550]
jb 0x1800fad40
jmp 0x1800fadea
cmp edx, 4
je 0x1800fae3c
xor eax, eax
mov rcx, qword [rbp + 0xda0]
xor rcx, rsp
call fcn.180151320
mov rbx, qword [rsp + 0xf00]
add rsp, 0xeb0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rax, qword [rdi]
cmp dword [rax], 4
je 0x1800fae3c
mov rax, qword [rdi + 8]
mov rcx, qword [rax + 0x58]
mov eax, dword [rcx + 0x18]
and eax, 7
je 0x1800fae3c
mov r8d, 8
mov dword [rsp + 0x20], ebx
sub r8d, eax
lea rdx, [rsp + 0x20]
call fcn.1800c3690
test eax, eax
je 0x1800fadb6
cmp dword [rsp + 0x20], ebx
je 0x1800fae3c
mov rax, qword [rdi + 8]
cmp dword [rax + 0x1408], ebx
jne 0x1800fae33
mov r8, qword [rax + 0x48]
xor edx, edx
mov rcx, rdi
call qword [rax + 0x40]
mov rax, qword [rdi]
mov dword [rax], 2
mov rax, qword [rdi]
cmp dword [rax], 3
jne 0x1800faef3
mov rax, qword [rdi + 8]
mov rsi, qword [rax + 0x58]
mov rcx, rsi
call fcn.1800dcd20
mov r10d, dword [rsi + 0x18]
test r10d, r10d
je 0x1800faebc
mov r8d, dword [rsi + 0x24]
mov ecx, dword [rsi + 0x14]
mov rax, qword [rsi]
cmp r8d, r10d
jae 0x1800faebc
mov r11d, dword [rax + rcx*4]
lea r14, [0x180201420]
mov r9d, dword [rsi + 0x1c]
nop
mov ecx, 0x18
mov rax, r11
sub ecx, r8d
add r8d, 8
shr rax, cl
movzx ecx, al
mov eax, r9d
shr rax, 8
xor rcx, rax
movzx eax, r9b
shl eax, 8
movzx edx, word [r14 + rcx*2]
xor edx, eax
mov dword [rsi + 0x24], r8d
mov dword [rsi + 0x1c], edx
mov r9d, edx
cmp r8d, r10d
jb 0x1800fae80
mov rcx, qword [rdi + 8]
lea rdx, [rsp + 0x24]
movzx r14d, word [rsi + 0x1c]
mov r8d, 0x10
mov rcx, qword [rcx + 0x58]
call fcn.1800c3690
test eax, eax
jne 0x1800faeee
mov rax, qword [rdi]
cmp dword [rax], 4
jne 0x1800fadb6
jmp 0x1800fafe1
mov r15d, dword [rsp + 0x24]
mov rax, qword [rdi]
cmp dword [rax], 3
jne 0x1800fafe1
cmp r14d, r15d
jne 0x1800fafbd
test r12d, r12d
je 0x1800fafe1
mov rcx, rdi
call fcn.180102620
mov rcx, qword [rdi + 8]
mov r14d, ebx
cmp dword [rcx + 0x550], ebx
jbe 0x1800fafe1
nop dword [rax]
mov r10d, dword [rcx + 0x548]
mov edx, ebx
test r10d, r10d
je 0x1800fafa7
mov eax, r14d
mov r9d, 0x20
sub r9d, dword [rcx + 0x558]
mov r11d, 0x80000000
mov rsi, qword [rcx + rax*8 + 0x60]
mov ecx, r9d
sar r11d, cl
nop
mov eax, edx
mov r8d, dword [rsi + rax*4]
cmp r8d, r11d
jl 0x1800faf83
mov eax, 0x7fffffff
mov ecx, r9d
sar eax, cl
cmp r8d, eax
jg 0x1800faf83
inc edx
cmp edx, r10d
jb 0x1800faf60
jmp 0x1800fafa7
mov rax, qword [rdi + 8]
cmp dword [rax + 0x1408], ebx
jne 0x1800faf9e
mov r8, qword [rax + 0x48]
mov edx, 2
mov rcx, rdi
call qword [rax + 0x40]
mov rax, qword [rdi]
mov dword [rax], 2
mov rcx, qword [rdi + 8]
inc r14d
cmp r14d, dword [rcx + 0x550]
jb 0x1800faf30
jmp 0x1800fafe1
mov rax, qword [rdi + 8]
cmp dword [rax + 0x1408], ebx
jne 0x1800fafd8
mov r8, qword [rax + 0x48]
mov edx, 2
mov rcx, rdi
call qword [rax + 0x40]
mov rax, qword [rdi]
mov dword [rax], 2
mov rcx, qword [rdi + 8]
cmp dword [rcx + 0x22b8], ebx
je 0x1800fb22f
mov rax, qword [rdi]
cmp dword [rax], 3
jne 0x1800fb22f
cmp dword [rcx + 0x1408], ebx
jne 0x1800fb22f
test r12d, r12d
je 0x1800fb22f
mov edx, dword [rcx + 0x1488]
mov r8, qword [rcx + 0x14a0]
mov r14, qword [rcx + 0x560]
lea rax, [r8 + rdx]
cmp rax, r14
jae 0x1800fb22f
mov eax, dword [rcx + 0x54c]
sub r14d, r8d
sub r14d, edx
cmp dword [rcx + 0x148c], eax
jne 0x1800fb22f
mov eax, dword [rcx + 0x550]
cmp dword [rcx + 0x1490], eax
jne 0x1800fb22f
mov eax, dword [rcx + 0x558]
cmp dword [rcx + 0x1498], eax
jne 0x1800fb22f
cmp edx, 0x10
jb 0x1800fb22f
xorps xmm0, xmm0
mov esi, ebx
movups xmmword [rbp + 0xd60], xmm0
movups xmmword [rbp + 0xd70], xmm0
movups xmmword [rbp + 0xd80], xmm0
movups xmmword [rbp + 0xd90], xmm0
movups xmm2, xmmword [rcx + 0x1488]
movaps xmmword [rsp + 0x30], xmm2
movups xmm0, xmmword [rcx + 0x1498]
psrldq xmm2, 8
movd edx, xmm2
movaps xmmword [rsp + 0x40], xmm0
movsd xmm1, qword [rcx + 0x14a8]
movsd qword [rsp + 0x50], xmm1
mov word [rbp + 0xd58], bx
test edx, edx
je 0x1800fb114
mov ecx, dword [rsp + 0x30]
test rcx, rcx
je 0x1800fb0e9
mov edx, 4
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
jmp 0x1800fb0f4
mov ecx, 1
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov edx, dword [rsp + 0x38]
mov rcx, rax
mov eax, esi
mov qword [rbp + rax*8 + 0xd60], rcx
test rcx, rcx
je 0x1800fb1ca
inc esi
cmp esi, edx
jb 0x1800fb0d3
mov eax, dword [rsp + 0x34]
lea ecx, [rax + rax*4]
cmp r14d, ecx
cmova r14d, ecx
mov ecx, dword [rsp + 0x30]
imul esi, ecx, 0x32
cmp r14d, esi
cmovbe esi, r14d
test esi, esi
je 0x1800fb201
nop dword [rax + rax]
mov eax, ecx
mov edx, ebx
add qword [rsp + 0x48], rax
mov rax, qword [rdi]
cmp esi, ecx
cmovb ecx, esi
mov dword [rsp + 0x30], ecx
sub esi, ecx
mov dword [rax + 0x18], ecx
mov ecx, dword [rsp + 0x30]
add rcx, qword [rsp + 0x48]
mov rax, qword [rdi + 8]
mov qword [rax + 0x1c0], rcx
cmp dword [rsp + 0x38], ebx
jbe 0x1800fb1a1
nop dword [rax]
nop dword [rax + rax]
mov eax, edx
inc edx
imul rcx, rax, 0x1c0
mov dword [rsp + rcx + 0x58], ebx
mov qword [rsp + rcx + 0x60], rbx
mov dword [rbp + rcx + 0x110], ebx
cmp edx, dword [rsp + 0x38]
jb 0x1800fb180
lea r8, [rbp + 0xd60]
mov rcx, rdi
lea rdx, [rsp + 0x30]
call fcn.180109be0
test eax, eax
jne 0x1800fb2fd
test esi, esi
je 0x1800fb1fd
mov ecx, dword [rsp + 0x30]
jmp 0x1800fb140
test edx, edx
je 0x1800fb1ef
nop
mov eax, ebx
mov rcx, qword [rbp + rax*8 + 0xd60]
test rcx, rcx
je 0x1800fb1e9
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov edx, dword [rsp + 0x38]
inc ebx
cmp ebx, edx
jb 0x1800fb1d0
mov rax, qword [rdi]
mov dword [rax], 8
jmp 0x1800fadb6
mov edx, dword [rsp + 0x38]
mov esi, ebx
test edx, edx
je 0x1800fb22f
nop word [rax + rax]
mov eax, esi
mov rcx, qword [rbp + rax*8 + 0xd60]
test rcx, rcx
je 0x1800fb229
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov edx, dword [rsp + 0x38]
inc esi
cmp esi, edx
jb 0x1800fb210
mov rax, qword [rdi]
mov ecx, dword [rax]
sub ecx, 2
test ecx, 0xfffffffd
je 0x1800fb344
mov dword [r13], 1
mov rax, qword [rdi + 8]
mov ecx, dword [rax + 0x1bc]
test ecx, ecx
je 0x1800fb25f
mov dword [rax + 0x1b8], ecx
mov rax, qword [rdi + 8]
mov rcx, qword [rdi]
mov eax, dword [rax + 0x550]
mov dword [rcx + 8], eax
mov rax, qword [rdi + 8]
mov rcx, qword [rdi]
mov eax, dword [rax + 0x554]
mov dword [rcx + 0xc], eax
mov rax, qword [rdi + 8]
mov rcx, qword [rdi]
mov eax, dword [rax + 0x558]
mov dword [rcx + 0x10], eax
mov rax, qword [rdi + 8]
mov rcx, qword [rdi]
mov eax, dword [rax + 0x54c]
mov dword [rcx + 0x14], eax
mov rax, qword [rdi + 8]
mov rcx, qword [rdi]
mov eax, dword [rax + 0x548]
mov dword [rcx + 0x18], eax
mov rcx, qword [rdi + 8]
mov eax, dword [rcx + 0x548]
add rax, qword [rcx + 0x560]
mov qword [rcx + 0x1c0], rax
test r12d, r12d
je 0x1800fb3ce
mov rdx, qword [rdi + 8]
mov rcx, rdi
lea r8, [rdx + 0x60]
add rdx, 0x548
call fcn.180109be0
test eax, eax
je 0x1800fb3ce
mov rax, qword [rdi]
mov dword [rax], 7
jmp 0x1800fadb6
mov rax, qword [rdi]
mov dword [rax], 7
mov edx, dword [rsp + 0x38]
test edx, edx
je 0x1800fadb6
nop dword [rax]
nop word [rax + rax]
mov eax, ebx
mov rcx, qword [rbp + rax*8 + 0xd60]
test rcx, rcx
je 0x1800fb339
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov edx, dword [rsp + 0x38]
inc ebx
cmp ebx, edx
jb 0x1800fb320
jmp 0x1800fadb6
mov rax, qword [rdi + 8]
mov rdx, qword [rax + 0x58]
mov ecx, dword [rdx + 0x30]
cmp ecx, 0xffffffff
jne 0x1800fb3bb
mov qword [rdx + 0x14], rbx
mov r8, qword [rdi + 8]
mov rax, qword [r8 + 0x10]
test rax, rax
je 0x1800fb3ce
mov rdx, qword [r8 + 0x22c8]
test rdx, rdx
je 0x1800fb3ce
mov r8, qword [r8 + 0x48]
mov rcx, rdi
call rax
cmp eax, 1
jne 0x1800fb38d
mov rax, qword [rdi]
mov dword [rax], 6
jmp 0x1800fadb6
mov rax, qword [rdi + 8]
mov rcx, qword [rax + 0x58]
mov qword [rcx + 0xc], rbx
mov qword [rcx + 0x14], rbx
mov dword [rcx + 0x28], ebx
mov qword [rcx + 0x2c], 0xffffffffffffffff
mov rax, qword [rdi]
mov dword [rax], 2
mov eax, 1
jmp 0x1800fadb8
inc ecx
mov eax, ecx
and eax, 3
shl eax, 3
shr ecx, 2
mov dword [rdx + 0x14], ecx
mov dword [rdx + 0x18], eax
mov rax, qword [rdi]
mov dword [rax], 2
mov eax, 1
jmp 0x1800fadb8