Function at 0x1800978d0
Capabilities:
Encode data using xor

Disassembly:
test rcx, rcx
je 0x18009807c
push rsi
mov eax, 0x20
call fcn.18017e6d0
sub rsp, rax
mov r10, r8
mov rsi, rdx
test rdx, rdx
je 0x180098077
test r8, r8
je 0x180098077
mov qword [rsp + 0x10], r13
mov r13d, dword [r8 + 0x110]
cmp r13d, 0xc
je 0x180097921
cmp r13d, 0xe
je 0x180097921
cmp r13d, 0x10
jne 0x180098072
movzx eax, byte [rcx + 1]
movzx r11d, byte [rcx + 4]
movzx r9d, byte [rcx + 0xc]
mov qword [rsp + 0x30], rbx
movzx ebx, byte [rcx]
shl r11d, 8
shl ebx, 8
mov qword [rsp + 0x38], rbp
shl r9d, 8
xor ebx, eax
movzx eax, byte [rcx + 2]
mov qword [rsp + 0x40], rdi
shl ebx, 8
mov qword [rsp + 0x18], r12
mov qword [rsp + 8], r14
xor ebx, eax
movzx eax, byte [rcx + 3]
lea r14, [r10 + 0x10]
shl ebx, 8
mov qword [rsp], r15
lea r15, [0x180000000]
xor ebx, eax
movzx eax, byte [rcx + 5]
xor ebx, dword [r8]
xor r11d, eax
movzx eax, byte [rcx + 6]
shl r11d, 8
xor r11d, eax
movzx eax, byte [rcx + 7]
shl r11d, 8
xor r11d, eax
movzx eax, byte [rcx + 9]
xor r11d, dword [r8 + 4]
movzx r8d, byte [rcx + 8]
shl r8d, 8
xor r8d, eax
movzx eax, byte [rcx + 0xa]
shl r8d, 8
xor r8d, eax
movzx eax, byte [rcx + 0xb]
shl r8d, 8
xor r8d, eax
movzx eax, byte [rcx + 0xd]
xor r8d, dword [r10 + 8]
xor r9d, eax
movzx eax, byte [rcx + 0xe]
shl r9d, 8
xor r9d, eax
movzx eax, byte [rcx + 0xf]
shl r9d, 8
xor r9d, eax
mov eax, r8d
xor r9d, dword [r10 + 0xc]
shr eax, 0x18
movzx edx, al
mov eax, r8d
mov ebp, dword [r15 + rdx*4 + 0x1d8c00]
shr eax, 0x10
movzx ecx, al
mov eax, r8d
xor ebp, dword [r15 + rcx*4 + 0x1d9000]
shr eax, 8
movzx ecx, al
movzx eax, r8b
xor ebp, dword [r15 + rcx*4 + 0x1d9400]
xor ebp, dword [r15 + rax*4 + 0x1d9800]
mov eax, r9d
shr eax, 0x18
movzx edx, al
mov eax, r9d
mov r10d, dword [r15 + rdx*4 + 0x1d8c00]
shr eax, 0x10
movzx ecx, al
mov eax, r9d
xor r10d, dword [r15 + rcx*4 + 0x1d9000]
shr eax, 8
movzx ecx, al
movzx eax, r9b
xor r10d, dword [r15 + rcx*4 + 0x1d9400]
xor r10d, dword [r15 + rax*4 + 0x1d9800]
mov eax, r11d
shr eax, 0x18
add r14, 0x10
movzx edx, al
mov eax, r11d
mov r8d, dword [r15 + rdx*4 + 0x1d8c00]
shr eax, 0x10
movzx ecx, al
mov eax, r11d
xor r8d, dword [r15 + rcx*4 + 0x1d9000]
shr eax, 8
movzx ecx, al
movzx eax, r11b
xor r8d, dword [r15 + rcx*4 + 0x1d9400]
xor r8d, dword [r15 + rax*4 + 0x1d9800]
mov eax, ebx
shr eax, 0x18
xor r8d, ebp
xor ebp, r10d
movzx edx, al
xor r10d, r8d
mov eax, ebx
mov r11d, dword [r15 + rdx*4 + 0x1d8c00]
shr eax, 0x10
mov r12d, r10d
movzx ecx, al
and r12d, 0xff0000
mov eax, ebx
xor r11d, dword [r15 + rcx*4 + 0x1d9000]
shr eax, 8
movzx ecx, al
movzx eax, bl
xor r11d, dword [r15 + rcx*4 + 0x1d9400]
xor r11d, dword [r15 + rax*4 + 0x1d9800]
mov eax, r10d
shr eax, 0x10
xor r11d, r8d
xor r12d, eax
xor ebp, r11d
mov eax, r10d
xor r8d, ebp
and eax, 0xff00
rol ebp, 0x10
shr r12d, 8
shl r10d, 0x10
mov edi, r8d
xor eax, r10d
shr edi, 8
shl eax, 8
xor r12d, eax
mov eax, r8d
shl r8d, 8
shl eax, 8
xor edi, eax
mov eax, dword [r14 - 0xc]
and edi, 0xff00ff
xor edi, r8d
xor edi, ebp
xor ebp, r12d
xor r11d, edi
xor r12d, edi
xor r12d, dword [r14 - 4]
xor ebp, r11d
xor r11d, dword [r14 - 0x10]
xor eax, ebp
xor ebp, dword [r14 - 8]
xor edi, eax
sub r13d, 2
je 0x180097e67
nop dword [rax]
mov eax, ebp
shr eax, 0x18
movzx edx, al
mov eax, ebp
mov ebx, dword [r15 + rdx*4 + 0x1d9400]
shr eax, 0x10
movzx ecx, al
mov eax, ebp
xor ebx, dword [r15 + rcx*4 + 0x1d9800]
shr eax, 8
movzx ecx, al
movzx eax, bpl
xor ebx, dword [r15 + rcx*4 + 0x1d8c00]
xor ebx, dword [r15 + rax*4 + 0x1d9000]
mov eax, r12d
shr eax, 0x18
movzx edx, al
mov eax, r12d
mov r9d, dword [r15 + rdx*4 + 0x1d9400]
shr eax, 0x10
movzx ecx, al
mov eax, r12d
xor r9d, dword [r15 + rcx*4 + 0x1d9800]
shr eax, 8
movzx ecx, al
movzx eax, r12b
xor r9d, dword [r15 + rcx*4 + 0x1d8c00]
xor r9d, dword [r15 + rax*4 + 0x1d9000]
mov eax, edi
shr eax, 0x18
movzx edx, al
mov eax, edi
mov r8d, dword [r15 + rdx*4 + 0x1d9400]
shr eax, 0x10
movzx ecx, al
mov eax, edi
xor r8d, dword [r15 + rcx*4 + 0x1d9800]
shr eax, 8
movzx ecx, al
movzx eax, dil
xor r8d, dword [r15 + rcx*4 + 0x1d8c00]
xor r8d, dword [r15 + rax*4 + 0x1d9000]
mov eax, r11d
shr eax, 0x18
xor r8d, ebx
xor ebx, r9d
movzx edx, al
mov eax, r11d
xor r9d, r8d
mov edi, dword [r15 + rdx*4 + 0x1d9400]
shr eax, 0x10
mov r10d, r9d
movzx ecx, al
mov eax, r11d
shr r10d, 8
xor edi, dword [r15 + rcx*4 + 0x1d9800]
shr eax, 8
movzx ecx, al
movzx eax, r11b
xor edi, dword [r15 + rcx*4 + 0x1d8c00]
xor edi, dword [r15 + rax*4 + 0x1d9000]
mov eax, r9d
shl r9d, 8
shl eax, 8
xor edi, r8d
xor r10d, eax
xor ebx, edi
xor r8d, ebx
and r10d, 0xff00ff
mov r11d, r8d
mov eax, r8d
xor r10d, r9d
shr eax, 0x10
and r11d, 0xff0000
xor r11d, eax
mov eax, r8d
shl r8d, 0x10
and eax, 0xff00
shr r11d, 8
xor eax, r8d
shl eax, 8
xor r11d, eax
mov eax, dword [r14 + 4]
xor r11d, ebx
xor ebx, r10d
rol edi, 0x10
xor edi, r11d
xor r10d, r11d
xor r10d, dword [r14 + 0xc]
xor ebx, edi
xor edi, dword [r14]
xor eax, ebx
xor ebx, dword [r14 + 8]
xor r11d, eax
mov eax, ebx
shr eax, 0x18
movzx edx, al
mov eax, ebx
mov ebp, dword [r15 + rdx*4 + 0x1d8c00]
shr eax, 0x10
movzx ecx, al
mov eax, ebx
xor ebp, dword [r15 + rcx*4 + 0x1d9000]
shr eax, 8
movzx ecx, al
movzx eax, bl
xor ebp, dword [r15 + rcx*4 + 0x1d9400]
xor ebp, dword [r15 + rax*4 + 0x1d9800]
mov eax, r10d
shr eax, 0x18
movzx edx, al
mov eax, r10d
mov r9d, dword [r15 + rdx*4 + 0x1d8c00]
shr eax, 0x10
movzx ecx, al
mov eax, r10d
xor r9d, dword [r15 + rcx*4 + 0x1d9000]
shr eax, 8
movzx ecx, al
movzx eax, r10b
xor r9d, dword [r15 + rcx*4 + 0x1d9400]
xor r9d, dword [r15 + rax*4 + 0x1d9800]
mov eax, r11d
shr eax, 0x18
movzx edx, al
mov eax, r11d
mov r8d, dword [r15 + rdx*4 + 0x1d8c00]
shr eax, 0x10
movzx ecx, al
mov eax, r11d
xor r8d, dword [r15 + rcx*4 + 0x1d9000]
shr eax, 8
movzx ecx, al
movzx eax, r11b
xor r8d, dword [r15 + rcx*4 + 0x1d9400]
xor r8d, dword [r15 + rax*4 + 0x1d9800]
mov eax, edi
shr eax, 0x18
xor r8d, ebp
xor ebp, r9d
movzx edx, al
xor r9d, r8d
mov eax, edi
mov r11d, dword [r15 + rdx*4 + 0x1d8c00]
shr eax, 0x10
mov r12d, r9d
movzx ecx, al
mov eax, edi
and r12d, 0xff0000
xor r11d, dword [r15 + rcx*4 + 0x1d9000]
shr eax, 8
movzx ecx, al
movzx eax, dil
xor r11d, dword [r15 + rcx*4 + 0x1d9400]
xor r11d, dword [r15 + rax*4 + 0x1d9800]
mov eax, r9d
xor r11d, r8d
shr eax, 0x10
xor ebp, r11d
xor r8d, ebp
rol ebp, 0x10
xor r12d, eax
shr r12d, 8
mov eax, r9d
shl r9d, 0x10
and eax, 0xff00
mov edi, r8d
add r14, 0x20
xor eax, r9d
shr edi, 8
shl eax, 8
xor r12d, eax
mov eax, r8d
shl r8d, 8
shl eax, 8
xor edi, eax
mov eax, dword [r14 - 0xc]
and edi, 0xff00ff
xor edi, r8d
xor edi, ebp
xor ebp, r12d
xor r11d, edi
xor r12d, edi
xor r12d, dword [r14 - 4]
xor ebp, r11d
xor r11d, dword [r14 - 0x10]
xor eax, ebp
xor ebp, dword [r14 - 8]
xor edi, eax
sub r13d, 2
jne 0x180097b70
mov eax, r11d
shr eax, 0x10
movzx ecx, al
mov eax, dword [r15 + rcx*4 + 0x1d9800]
shr eax, 8
movzx r10d, al
mov eax, r11d
shr eax, 0x18
movzx ecx, al
movzx eax, byte [r15 + rcx*4 + 0x1d9400]
shl eax, 8
or r10d, eax
mov eax, r11d
shr eax, 8
shl r10d, 8
movzx ecx, al
movzx eax, byte [r15 + rcx*4 + 0x1d8c00]
or r10d, eax
movzx eax, r11b
movzx eax, byte [r15 + rax*4 + 0x1d9000]
shl r10d, 8
or r10d, eax
mov eax, edi
shr eax, 0x10
xor r10d, dword [r14]
movzx ecx, al
mov eax, dword [r15 + rcx*4 + 0x1d9800]
shr eax, 8
movzx r9d, al
mov eax, edi
shr eax, 0x18
movzx ecx, al
movzx eax, byte [r15 + rcx*4 + 0x1d9400]
shl eax, 8
or r9d, eax
mov eax, edi
shr eax, 8
shl r9d, 8
movzx ecx, al
movzx eax, byte [r15 + rcx*4 + 0x1d8c00]
or r9d, eax
movzx eax, dil
movzx eax, byte [r15 + rax*4 + 0x1d9000]
shl r9d, 8
or r9d, eax
mov eax, ebp
xor r9d, dword [r14 + 4]
shr eax, 0x10
movzx ecx, al
mov eax, dword [r15 + rcx*4 + 0x1d9800]
shr eax, 8
movzx r8d, al
mov eax, ebp
shr eax, 0x18
movzx ecx, al
movzx eax, byte [r15 + rcx*4 + 0x1d9400]
shl eax, 8
or r8d, eax
mov eax, ebp
shr eax, 8
shl r8d, 8
movzx ecx, al
movzx eax, byte [r15 + rcx*4 + 0x1d8c00]
or r8d, eax
movzx eax, bpl
movzx eax, byte [r15 + rax*4 + 0x1d9000]
shl r8d, 8
or r8d, eax
mov eax, r12d
xor r8d, dword [r14 + 8]
shr eax, 0x10
movzx ecx, al
mov eax, dword [r15 + rcx*4 + 0x1d9800]
shr eax, 8
movzx edx, al
mov eax, r12d
shr eax, 0x18
movzx ecx, al
movzx eax, byte [r15 + rcx*4 + 0x1d9400]
shl eax, 8
or edx, eax
mov rdi, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x38]
mov rbx, qword [rsp + 0x30]
shl edx, 8
mov eax, r12d
shr eax, 8
movzx ecx, al
movzx eax, byte [r15 + rcx*4 + 0x1d8c00]
or edx, eax
movzx eax, r12b
mov r12, qword [rsp + 0x18]
movzx eax, byte [r15 + rax*4 + 0x1d9000]
mov r15, qword [rsp]
shl edx, 8
or edx, eax
mov eax, r10d
xor edx, dword [r14 + 0xc]
mov r14, qword [rsp + 8]
shr eax, 0x18
mov byte [rsi], al
mov eax, r10d
mov byte [rsi + 3], r10b
shr eax, 0x10
mov byte [rsi + 7], r9b
mov byte [rsi + 0xb], r8b
mov byte [rsi + 1], al
mov eax, r10d
mov byte [rsi + 0xf], dl
shr eax, 8
mov byte [rsi + 2], al
mov eax, r9d
shr eax, 0x18
mov byte [rsi + 4], al
mov eax, r9d
shr eax, 0x10
mov byte [rsi + 5], al
mov eax, r9d
shr eax, 8
mov byte [rsi + 6], al
mov eax, r8d
shr eax, 0x18
mov byte [rsi + 8], al
mov eax, r8d
shr eax, 0x10
mov byte [rsi + 9], al
mov eax, r8d
shr eax, 8
mov byte [rsi + 0xa], al
mov eax, edx
shr eax, 0x18
mov byte [rsi + 0xc], al
mov eax, edx
shr eax, 0x10
mov byte [rsi + 0xd], al
mov eax, edx
shr eax, 8
mov byte [rsi + 0xe], al
mov r13, qword [rsp + 0x10]
add rsp, 0x20
pop rsi
repz ret