Function at 0x18009f220
Capabilities:
Encode data using xor

Disassembly:
mov eax, 8
call fcn.1800470d0
sub rsp, rax
mov r11, r8
mov r8, rcx
test rcx, rcx
je 0x18009f808
test r11, r11
je 0x18009f808
cmp edx, 0x80
je 0x18009f267
cmp edx, 0xc0
je 0x18009f267
cmp edx, 0x100
je 0x18009f267
mov eax, 0xfffffffe
add rsp, 8
ret
mov qword [rsp + 0x10], rbx
mov qword [rsp], rdi
cmp edx, 0x80
jne 0x18009f285
mov dword [r11 + 0xf0], 0xa
jmp 0x18009f29f
mov eax, reloc.OLEAUT32.dll_SafeArrayCreate
mov ecx, SafeArrayCreate
cmp edx, 0xc0
cmove eax, ecx
mov dword [r11 + 0xf0], eax
mov eax, dword [r8]
lea r9, [r11 + 4]
mov edi, eax
ror edi, 8
and edi, 0xff00ff00
rol eax, 8
and eax, 0xff00ff
or edi, eax
mov dword [r11], edi
mov ecx, dword [r8 + 4]
mov eax, ecx
ror eax, 8
and eax, 0xff00ff00
rol ecx, 8
and ecx, 0xff00ff
or eax, ecx
mov dword [r9], eax
mov ecx, dword [r8 + 8]
mov eax, ecx
ror eax, 8
and eax, 0xff00ff00
rol ecx, 8
and ecx, 0xff00ff
or eax, ecx
mov dword [r11 + 8], eax
mov eax, dword [r8 + 0xc]
mov ebx, eax
ror ebx, 8
and ebx, 0xff00ff00
rol eax, 8
and eax, 0xff00ff
or ebx, eax
mov dword [r11 + 0xc], ebx
cmp edx, 0x80
jne 0x18009f456
lea r10, [0x180000000]
mov eax, ebx
shr rax, 0x10
movzx ecx, al
mov eax, ebx
mov r8d, dword [r10 + rcx*4 + 0xed050]
shr rax, 8
movzx ecx, al
btc r8d, 0x18
mov eax, dword [r10 + rcx*4 + 0xed450]
and r8d, 0xff000000
and eax, 0xff0000
xor r8d, eax
mov eax, ebx
shr rax, 0x18
movzx eax, byte [r10 + rax*4 + 0xecc50]
xor r8d, eax
movzx eax, bl
mov ecx, dword [r10 + rax*4 + 0xec850]
mov eax, dword [r9]
and ecx, 0xff00
xor r8d, ecx
mov ecx, dword [r11 + 8]
xor r8d, edi
xor eax, r8d
mov dword [r11 + 0x10], r8d
xor ecx, eax
mov dword [r11 + 0x14], eax
mov dword [r11 + 0x18], ecx
xor ecx, ebx
lea rbx, [0x1800ee978]
mov dword [r11 + 0x1c], ecx
lea r11, [0x1800ee954]
mov edx, dword [r9 + 0x18]
add r9, 0x10
add r11, 4
mov eax, edx
shr rax, 8
movzx ecx, al
mov eax, edx
mov r8d, dword [r10 + rcx*4 + 0xed450]
shr rax, 0x10
movzx ecx, al
and r8d, 0xff0000
mov eax, dword [r10 + rcx*4 + 0xed050]
and eax, 0xff000000
xor r8d, eax
mov eax, edx
shr rax, 0x18
movzx eax, byte [r10 + rax*4 + 0xecc50]
xor r8d, eax
movzx eax, dl
mov ecx, dword [r10 + rax*4 + 0xec850]
and ecx, 0xff00
xor r8d, ecx
xor r8d, dword [r9 - 4]
xor r8d, dword [r11 - 4]
mov dword [r9 + 0xc], r8d
mov eax, dword [r9]
xor eax, r8d
mov dword [r9 + 0x10], eax
mov ecx, dword [r9 + 4]
xor ecx, eax
mov dword [r9 + 0x14], ecx
xor ecx, dword [r9 + 8]
mov dword [r9 + 0x18], ecx
cmp r11, rbx
jne 0x18009f3b2
mov rbx, qword [rsp + 0x10]
mov rdi, qword [rsp]
xor eax, eax
add rsp, 8
ret
mov eax, dword [r8 + 0x10]
mov ecx, eax
ror ecx, 8
and ecx, 0xff00ff00
rol eax, 8
and eax, 0xff00ff
or ecx, eax
mov dword [r11 + 0x10], ecx
mov eax, dword [r8 + 0x14]
mov ecx, eax
ror ecx, 8
and ecx, 0xff00ff00
rol eax, 8
and eax, 0xff00ff
or ecx, eax
mov dword [r11 + 0x14], ecx
cmp edx, 0xc0
jne 0x18009f5fd
mov edx, ecx
mov eax, ecx
lea r10, [0x180000000]
shr rax, 0x10
lea rbx, [0x1800ee970]
movzx ecx, al
mov eax, edx
mov r8d, dword [r10 + rcx*4 + 0xed050]
shr rax, 8
movzx ecx, al
btc r8d, 0x18
mov eax, dword [r10 + rcx*4 + 0xed450]
and r8d, 0xff000000
and eax, 0xff0000
xor r8d, eax
mov eax, edx
shr rax, 0x18
movzx eax, byte [r10 + rax*4 + 0xecc50]
xor r8d, eax
movzx eax, dl
mov ecx, dword [r10 + rax*4 + 0xec850]
mov eax, dword [r9]
lea r9, [r11 + 0x28]
and ecx, 0xff00
xor r8d, ecx
mov ecx, dword [r11 + 8]
xor r8d, edi
xor eax, r8d
mov dword [r11 + 0x18], r8d
mov dword [r11 + 0x1c], eax
xor ecx, eax
mov eax, dword [r11 + 0xc]
xor eax, ecx
mov dword [r11 + 0x20], ecx
mov dword [r11 + 0x24], eax
lea r11, [0x1800ee954]
nop dword [rax + rax]
mov ecx, dword [r9 - 0x18]
mov eax, dword [r9 - 0x14]
add r9, 0x18
xor ecx, dword [r9 - 0x1c]
add r11, 4
xor eax, ecx
mov dword [r9 - 0x18], ecx
mov dword [r9 - 0x14], eax
mov edx, dword [r9 - 0x14]
mov eax, edx
shr rax, 8
movzx ecx, al
mov eax, edx
mov r8d, dword [r10 + rcx*4 + 0xed450]
shr rax, 0x10
movzx ecx, al
and r8d, 0xff0000
mov eax, dword [r10 + rcx*4 + 0xed050]
and eax, 0xff000000
xor r8d, eax
mov eax, edx
shr rax, 0x18
movzx eax, byte [r10 + rax*4 + 0xecc50]
xor r8d, eax
movzx eax, dl
mov ecx, dword [r10 + rax*4 + 0xec850]
and ecx, 0xff00
xor r8d, ecx
xor r8d, dword [r9 - 0x28]
xor r8d, dword [r11 - 4]
mov dword [r9 - 0x10], r8d
mov eax, dword [r9 - 0x24]
xor eax, r8d
mov dword [r9 - 0xc], eax
mov ecx, dword [r9 - 0x20]
xor ecx, eax
mov dword [r9 - 8], ecx
mov eax, dword [r9 - 0x1c]
xor eax, ecx
mov dword [r9 - 4], eax
cmp r11, rbx
jne 0x18009f540
mov rbx, qword [rsp + 0x10]
mov rdi, qword [rsp]
xor eax, eax
add rsp, 8
ret
mov eax, dword [r8 + 0x18]
mov ecx, eax
ror ecx, 8
and ecx, 0xff00ff00
rol eax, 8
and eax, 0xff00ff
or ecx, eax
mov dword [r11 + 0x18], ecx
mov eax, dword [r8 + 0x1c]
mov ecx, eax
ror ecx, 8
and ecx, 0xff00ff00
rol eax, 8
and eax, 0xff00ff
or ecx, eax
mov dword [r11 + 0x1c], ecx
cmp edx, 0x100
jne 0x18009f446
mov edx, ecx
mov eax, ecx
lea r10, [0x180000000]
shr rax, 0x10
lea rbx, [0x1800ee96c]
movzx ecx, al
mov eax, edx
mov r8d, dword [r10 + rcx*4 + 0xed050]
shr rax, 8
movzx ecx, al
btc r8d, 0x18
mov eax, dword [r10 + rcx*4 + 0xed450]
and r8d, 0xff000000
and eax, 0xff0000
xor r8d, eax
mov eax, edx
shr rax, 0x18
movzx eax, byte [r10 + rax*4 + 0xecc50]
xor r8d, eax
movzx eax, dl
mov ecx, dword [r10 + rax*4 + 0xec850]
mov eax, dword [r9]
lea r9, [r11 + 0x30]
and ecx, 0xff00
xor r8d, ecx
mov ecx, dword [r11 + 8]
xor r8d, edi
xor eax, r8d
mov dword [r11 + 0x20], r8d
mov dword [r11 + 0x24], eax
xor ecx, eax
mov eax, dword [r11 + 0xc]
xor eax, ecx
mov dword [r11 + 0x28], ecx
mov dword [r11 + 0x2c], eax
lea r11, [0x1800ee954]
nop
mov edx, dword [r9 - 4]
add r9, 0x20
add r11, 4
mov eax, edx
shr rax, 0x10
movzx ecx, al
mov eax, edx
mov r8d, dword [r10 + rcx*4 + 0xed450]
shr rax, 8
movzx ecx, al
and r8d, 0xff0000
mov eax, dword [r10 + rcx*4 + 0xec850]
mov ecx, dword [r9 - 0x38]
and eax, 0xff00
xor r8d, eax
mov eax, edx
shr rax, 0x18
mov eax, dword [r10 + rax*4 + 0xed050]
and eax, 0xff000000
xor r8d, eax
movzx eax, dl
movzx eax, byte [r10 + rax*4 + 0xecc50]
xor r8d, eax
mov eax, dword [r9 - 0x3c]
xor r8d, dword [r9 - 0x40]
xor eax, r8d
mov dword [r9 - 0x20], r8d
mov dword [r9 - 0x1c], eax
xor ecx, eax
mov eax, dword [r9 - 0x34]
xor eax, ecx
mov dword [r9 - 0x18], ecx
mov dword [r9 - 0x14], eax
mov edx, dword [r9 - 0x14]
mov eax, edx
shr rax, 8
movzx ecx, al
mov eax, edx
mov r8d, dword [r10 + rcx*4 + 0xed450]
shr rax, 0x10
movzx ecx, al
and r8d, 0xff0000
mov eax, dword [r10 + rcx*4 + 0xed050]
and eax, 0xff000000
xor r8d, eax
mov eax, edx
shr rax, 0x18
movzx eax, byte [r10 + rax*4 + 0xecc50]
xor r8d, eax
movzx eax, dl
mov ecx, dword [r10 + rax*4 + 0xec850]
and ecx, 0xff00
xor r8d, ecx
xor r8d, dword [r9 - 0x30]
xor r8d, dword [r11 - 4]
mov dword [r9 - 0x10], r8d
mov eax, dword [r9 - 0x2c]
xor eax, r8d
mov dword [r9 - 0xc], eax
mov ecx, dword [r9 - 0x28]
xor ecx, eax
mov dword [r9 - 8], ecx
mov eax, dword [r9 - 0x24]
xor eax, ecx
mov dword [r9 - 4], eax
cmp r11, rbx
jne 0x18009f6e0
mov rbx, qword [rsp + 0x10]
mov rdi, qword [rsp]
xor eax, eax
add rsp, 8
ret
or eax, 0xffffffff
add rsp, 8
ret