Function at 0x180356cd0
Capabilities:
Encode data using xor

Disassembly:
test rcx, rcx
je 0x180357425
push rsi
push r14
mov r14, r8
mov rsi, rdx
test rdx, rdx
je 0x180357422
test r8, r8
je 0x180357422
mov qword [rsp + 0x20], rbp
mov ebp, dword [r8 + 0x110]
lea eax, [rbp - 0xc]
test eax, 0xfffffff9
jne 0x18035741d
cmp ebp, 0x12
je 0x18035741d
movzx eax, byte [rcx + 1]
movzx r11d, byte [rcx + 4]
movzx r9d, byte [rcx + 0xc]
mov qword [rsp + 0x18], rbx
movzx ebx, byte [rcx]
shl ebx, 8
xor ebx, eax
shl r9d, 8
movzx eax, byte [rcx + 2]
shl r11d, 8
shl ebx, 8
xor ebx, eax
mov qword [rsp + 0x28], rdi
movzx eax, byte [rcx + 3]
shl ebx, 8
xor ebx, eax
mov qword [rsp + 0x30], r15
movzx eax, byte [rcx + 5]
lea r15, [0x180000000]
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 [r14 + 8]
xor r9d, eax
movzx eax, byte [rcx + 0xe]
shl r9d, 8
xor r9d, eax
mov edx, r8d
movzx eax, byte [rcx + 0xf]
shr rdx, 0x18
shl r9d, 8
xor r9d, eax
mov eax, r8d
xor r9d, dword [r14 + 0xc]
shr eax, 0x10
movzx ecx, al
mov eax, dword [r15 + rdx*4 + 0x4d8aa0]
xor eax, dword [r15 + rcx*4 + 0x4d8ea0]
mov ecx, r8d
shr ecx, 8
movzx edx, cl
movzx ecx, r8b
mov r8d, r9d
shr r8, 0x18
xor eax, dword [r15 + rdx*4 + 0x4d92a0]
xor eax, dword [r15 + rcx*4 + 0x4d96a0]
mov ecx, r9d
shr ecx, 0x10
mov r10d, dword [r15 + r8*4 + 0x4d8aa0]
movzx edx, cl
mov ecx, r9d
shr ecx, 8
mov r8d, r11d
shr r8, 0x18
xor r10d, dword [r15 + rdx*4 + 0x4d8ea0]
movzx edx, cl
movzx ecx, r9b
mov r9d, dword [r15 + r8*4 + 0x4d8aa0]
xor r10d, dword [r15 + rdx*4 + 0x4d92a0]
xor r10d, dword [r15 + rcx*4 + 0x4d96a0]
mov ecx, r11d
shr ecx, 0x10
movzx edx, cl
xor r9d, dword [r15 + rdx*4 + 0x4d8ea0]
mov ecx, r11d
mov r8d, ebx
shr ecx, 8
sub ebp, 2
movzx edx, cl
movzx ecx, r11b
shr r8, 0x18
xor r9d, dword [r15 + rdx*4 + 0x4d92a0]
xor r9d, dword [r15 + rcx*4 + 0x4d96a0]
mov ecx, ebx
mov r11d, dword [r15 + r8*4 + 0x4d8aa0]
xor r9d, eax
shr ecx, 0x10
xor eax, r10d
movzx edx, cl
xor r10d, r9d
mov ecx, ebx
mov edi, r10d
shr ecx, 8
and edi, 0xff0000
xor r11d, dword [r15 + rdx*4 + 0x4d8ea0]
movzx edx, cl
movzx ecx, bl
xor r11d, dword [r15 + rdx*4 + 0x4d92a0]
xor r11d, dword [r15 + rcx*4 + 0x4d96a0]
mov ecx, r10d
shr ecx, 0x10
xor r11d, r9d
xor edi, ecx
xor eax, r11d
xor r9d, eax
shr edi, 8
rol eax, 0x10
mov ecx, r10d
and ecx, 0xff00
shl r10d, 0x10
xor ecx, r10d
mov ebx, r9d
shl ecx, 8
xor edi, ecx
shr ebx, 8
mov ecx, r9d
shl r9d, 8
shl ecx, 8
xor ebx, ecx
and ebx, 0xff00ff
xor ebx, r9d
xor ebx, eax
xor eax, edi
xor r11d, ebx
xor edi, ebx
xor edi, dword [r14 + 0x1c]
xor eax, r11d
xor r11d, dword [r14 + 0x10]
mov ecx, eax
xor ecx, dword [r14 + 0x14]
xor eax, dword [r14 + 0x18]
xor ebx, ecx
add r14, 0x20
test ebp, ebp
jle 0x18035722d
dec ebp
shr ebp, 1
inc ebp
nop dword [rax + rax]
mov ecx, eax
mov r8d, eax
shr ecx, 0x10
movzx edx, cl
mov ecx, eax
shr r8, 0x18
shr ecx, 8
mov r10d, dword [r15 + r8*4 + 0x4d92a0]
xor r10d, dword [r15 + rdx*4 + 0x4d96a0]
movzx edx, cl
movzx ecx, al
mov eax, edi
shr eax, 0x10
xor r10d, dword [r15 + rdx*4 + 0x4d8aa0]
xor r10d, dword [r15 + rcx*4 + 0x4d8ea0]
movzx ecx, al
mov eax, edi
shr eax, 8
mov edx, edi
shr rdx, 0x18
mov r9d, dword [r15 + rdx*4 + 0x4d92a0]
xor r9d, dword [r15 + rcx*4 + 0x4d96a0]
movzx ecx, al
movzx eax, dil
mov edx, ebx
shr rdx, 0x18
xor r9d, dword [r15 + rcx*4 + 0x4d8aa0]
xor r9d, dword [r15 + rax*4 + 0x4d8ea0]
mov eax, ebx
shr eax, 0x10
mov r8d, dword [r15 + rdx*4 + 0x4d92a0]
movzx ecx, al
mov eax, ebx
shr eax, 8
mov edx, r11d
shr rdx, 0x18
xor r8d, dword [r15 + rcx*4 + 0x4d96a0]
movzx ecx, al
movzx eax, bl
mov edi, dword [r15 + rdx*4 + 0x4d92a0]
xor r8d, dword [r15 + rcx*4 + 0x4d8aa0]
xor r8d, dword [r15 + rax*4 + 0x4d8ea0]
mov eax, r11d
shr eax, 0x10
xor r8d, r10d
movzx ecx, al
xor r10d, r9d
mov eax, r11d
xor r9d, r8d
shr eax, 8
xor edi, dword [r15 + rcx*4 + 0x4d96a0]
movzx ecx, al
movzx eax, r11b
mov r11d, r9d
shr r11d, 8
xor edi, dword [r15 + rcx*4 + 0x4d8aa0]
xor edi, dword [r15 + rax*4 + 0x4d8ea0]
mov eax, r9d
shl eax, 8
xor edi, r8d
xor r11d, eax
shl r9d, 8
xor r10d, edi
and r11d, 0xff00ff
xor r8d, r10d
xor r11d, r9d
mov ebx, r8d
mov eax, r8d
shr eax, 0x10
and ebx, 0xff0000
xor ebx, eax
mov eax, r8d
and eax, 0xff00
shr ebx, 8
shl r8d, 0x10
xor eax, r8d
shl eax, 8
xor ebx, eax
xor ebx, r10d
xor r10d, r11d
rol edi, 0x10
xor edi, ebx
xor r11d, ebx
xor r11d, dword [r14 + 0xc]
xor r10d, edi
xor edi, dword [r14]
mov eax, r10d
xor eax, dword [r14 + 4]
xor r10d, dword [r14 + 8]
xor ebx, eax
mov eax, r10d
mov edx, r10d
shr eax, 0x10
shr rdx, 0x18
movzx ecx, al
mov r8d, r11d
shr r8, 0x18
mov eax, dword [r15 + rdx*4 + 0x4d8aa0]
xor eax, dword [r15 + rcx*4 + 0x4d8ea0]
mov ecx, r10d
shr ecx, 8
movzx edx, cl
movzx ecx, r10b
mov r10d, dword [r15 + r8*4 + 0x4d8aa0]
mov r8d, ebx
xor eax, dword [r15 + rdx*4 + 0x4d92a0]
xor eax, dword [r15 + rcx*4 + 0x4d96a0]
mov ecx, r11d
shr ecx, 0x10
movzx edx, cl
mov ecx, r11d
shr ecx, 8
shr r8, 0x18
xor r10d, dword [r15 + rdx*4 + 0x4d8ea0]
movzx edx, cl
mov r9d, dword [r15 + r8*4 + 0x4d8aa0]
movzx ecx, r11b
mov r8d, edi
xor r10d, dword [r15 + rdx*4 + 0x4d92a0]
shr r8, 0x18
xor r10d, dword [r15 + rcx*4 + 0x4d96a0]
mov ecx, ebx
shr ecx, 0x10
movzx edx, cl
mov ecx, ebx
mov r11d, dword [r15 + r8*4 + 0x4d8aa0]
shr ecx, 8
xor r9d, dword [r15 + rdx*4 + 0x4d8ea0]
movzx edx, cl
movzx ecx, bl
xor r9d, dword [r15 + rdx*4 + 0x4d92a0]
xor r9d, dword [r15 + rcx*4 + 0x4d96a0]
mov ecx, edi
shr ecx, 0x10
xor r9d, eax
movzx edx, cl
xor eax, r10d
mov ecx, edi
xor r10d, r9d
shr ecx, 8
xor r11d, dword [r15 + rdx*4 + 0x4d8ea0]
movzx edx, cl
movzx ecx, dil
mov edi, r10d
and edi, 0xff0000
xor r11d, dword [r15 + rdx*4 + 0x4d92a0]
xor r11d, dword [r15 + rcx*4 + 0x4d96a0]
mov ecx, r10d
shr ecx, 0x10
xor r11d, r9d
xor edi, ecx
xor eax, r11d
xor r9d, eax
shr edi, 8
mov ecx, r10d
rol eax, 0x10
and ecx, 0xff00
shl r10d, 0x10
xor ecx, r10d
mov ebx, r9d
shl ecx, 8
xor edi, ecx
shr ebx, 8
mov ecx, r9d
shl ecx, 8
xor ebx, ecx
shl r9d, 8
and ebx, 0xff00ff
xor ebx, r9d
xor ebx, eax
xor eax, edi
xor r11d, ebx
xor edi, ebx
xor edi, dword [r14 + 0x1c]
xor eax, r11d
xor r11d, dword [r14 + 0x10]
mov ecx, eax
xor ecx, dword [r14 + 0x14]
xor eax, dword [r14 + 0x18]
xor ebx, ecx
add r14, 0x20
sub rbp, 1
jne 0x180356f50
mov ecx, r11d
shr ecx, 0x10
movzx edx, cl
mov ecx, dword [r15 + rdx*4 + 0x4d96a0]
shr ecx, 8
movzx r10d, cl
mov ecx, r11d
shr rcx, 0x18
movzx ecx, byte [r15 + rcx*4 + 0x4d92a0]
shl ecx, 8
or r10d, ecx
mov ecx, r11d
shr ecx, 8
movzx edx, cl
shl r10d, 8
movzx ecx, byte [r15 + rdx*4 + 0x4d8aa0]
or r10d, ecx
movzx ecx, r11b
shl r10d, 8
movzx ecx, byte [r15 + rcx*4 + 0x4d8ea0]
or r10d, ecx
mov ecx, ebx
xor r10d, dword [r14]
shr ecx, 0x10
movzx edx, cl
mov ecx, dword [r15 + rdx*4 + 0x4d96a0]
shr ecx, 8
movzx r9d, cl
mov ecx, ebx
shr rcx, 0x18
movzx ecx, byte [r15 + rcx*4 + 0x4d92a0]
shl ecx, 8
or r9d, ecx
mov ecx, ebx
shr ecx, 8
movzx edx, cl
shl r9d, 8
movzx ecx, byte [r15 + rdx*4 + 0x4d8aa0]
or r9d, ecx
movzx ecx, bl
shl r9d, 8
movzx ecx, byte [r15 + rcx*4 + 0x4d8ea0]
or r9d, ecx
mov ecx, eax
xor r9d, dword [r14 + 4]
shr ecx, 0x10
movzx edx, cl
mov ecx, dword [r15 + rdx*4 + 0x4d96a0]
shr ecx, 8
movzx r8d, cl
mov ecx, eax
shr rcx, 0x18
movzx ecx, byte [r15 + rcx*4 + 0x4d92a0]
shl ecx, 8
or r8d, ecx
mov ecx, eax
shr ecx, 8
movzx edx, cl
shl r8d, 8
movzx ecx, byte [r15 + rdx*4 + 0x4d8aa0]
or r8d, ecx
movzx ecx, al
shl r8d, 8
movzx eax, byte [r15 + rcx*4 + 0x4d8ea0]
or r8d, eax
mov eax, edi
xor r8d, dword [r14 + 8]
shr eax, 0x10
movzx ecx, al
mov eax, dword [r15 + rcx*4 + 0x4d96a0]
shr eax, 8
movzx edx, al
mov eax, edi
shr rax, 0x18
movzx eax, byte [r15 + rax*4 + 0x4d92a0]
shl eax, 8
or edx, eax
mov eax, edi
shl edx, 8
shr eax, 8
movzx ecx, al
movzx eax, byte [r15 + rcx*4 + 0x4d8aa0]
mov rbx, qword [rsp + 0x18]
or edx, eax
shl edx, 8
movzx eax, dil
mov rdi, qword [rsp + 0x28]
movzx eax, byte [r15 + rax*4 + 0x4d8ea0]
mov r15, qword [rsp + 0x30]
or edx, eax
xor edx, dword [r14 + 0xc]
mov eax, r10d
shr eax, 0x18
mov byte [rsi], al
mov eax, r10d
shr eax, 0x10
mov byte [rsi + 1], al
mov eax, r10d
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 byte [rsi + 3], r10b
mov byte [rsi + 7], r9b
mov byte [rsi + 0xb], r8b
mov byte [rsi + 0xf], dl
mov rbp, qword [rsp + 0x20]
pop r14
pop rsi
ret