Function at 0x1503ef970
Capabilities:
Encode data using xor

Disassembly:
mov dword [rsp + 0x20], r9d
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x38
mov r13d, edx
mov rax, rcx
mov rcx, qword [rsp + 0xc8]
test edx, edx
je 0x1503ef9aa
test rax, rax
je 0x1503efc6d
cmp qword [rsp + 0xc0], 0
je 0x1503efc6d
test rcx, rcx
je 0x1503efc6d
mov ecx, dword [rsp + 0xb8]
call fcn.150356a30
test eax, eax
jne 0x1503efc72
mov ecx, dword [rsp + 0xb0]
call fcn.1503ef944
test eax, eax
jne 0x1503efc72
movsxd rax, dword [rsp + 0xb8]
lea rcx, [0x150000000]
shl rax, 7
mov r14d, 0
mov r12d, dword [rax + rcx + 0x4391c]
mov eax, dword [rsp + 0xa0]
test al, 7
setne r14b
shr eax, 3
add r14d, eax
lea ecx, [r12 + r12]
lea eax, [r14 - 2]
cmp ecx, eax
jae 0x1503efc66
mov r15d, r14d
sub r15d, ecx
lea eax, [r15 - 2]
cmp r13d, eax
ja 0x1503efc66
mov ecx, r14d
call fcn.150425a40
mov ecx, r14d
mov rsi, rax
call fcn.150425a40
mov ecx, r12d
mov rbp, rax
call fcn.150425a40
mov rdi, rax
test rsi, rsi
je 0x1503efc45
test rbp, rbp
je 0x1503efc3d
test rax, rax
je 0x1503efc3d
mov rax, qword [rsp + 0x90]
mov r9, rsi
mov dword [rsp + 0x88], r14d
test rax, rax
je 0x1503efaaf
mov r8d, dword [rsp + 0x98]
lea rcx, [rsp + 0x88]
mov qword [rsp + 0x20], rcx
mov rdx, rax
jmp 0x1503efac2
lea rax, [rsp + 0x88]
xor r8d, r8d
mov qword [rsp + 0x20], rax
mov rdx, rsi
mov ecx, dword [rsp + 0xb8]
call fcn.1503f03a0
mov ebx, eax
test eax, eax
jne 0x1503efc21
sub r15d, r13d
lea rcx, [rsi + r12]
sub r15d, 2
xor edx, edx
mov r8d, r15d
call fcn.15040dca0
lea ecx, [r15 + r12]
mov byte [rcx + rsi], 1
test r13d, r13d
je 0x1503efb0f
mov rdx, qword [rsp + 0x80]
inc ecx
add rcx, rsi
mov r8, r13
call fcn.15040d600
movsxd rax, dword [rsp + 0xb0]
mov edx, r12d
mov r8, qword [rsp + 0xa8]
mov rcx, rdi
lea r9, [rax + rax*4]
add r9, r9
lea rax, [0x150000000]
call qword [rax + r9*8 + 0x44a38]
cmp eax, r12d
je 0x1503efb4a
mov ebx, 9
jmp 0x1503efc21
mov ecx, dword [rsp + 0xb8]
mov r15d, r14d
sub r15d, r12d
mov r9, rbp
dec r15d
mov r8d, r12d
mov rdx, rdi
mov dword [rsp + 0x20], r15d
call fcn.1503f3270
mov ebx, eax
test eax, eax
jne 0x1503efc21
test r15d, r15d
je 0x1503efb97
mov r8, rbp
mov ecx, r15d
sub r8, rsi
mov rdx, rsi
mov al, byte [r8 + rdx]
xor byte [rdx], al
inc rdx
sub rcx, 1
jne 0x1503efb88
mov ecx, dword [rsp + 0xb8]
mov r9, rbp
mov r8d, r15d
mov dword [rsp + 0x20], r12d
mov rdx, rsi
call fcn.1503f3270
mov ebx, eax
test eax, eax
jne 0x1503efc21
mov r9, r12
test r12d, r12d
je 0x1503efbd9
mov rdx, rbp
mov rcx, rdi
sub rdx, rdi
mov r8, r12
mov al, byte [rdx + rcx]
xor byte [rcx], al
inc rcx
sub r8, 1
jne 0x1503efbcb
mov rcx, qword [rsp + 0xc8]
mov eax, dword [rcx]
mov dword [rcx], r14d
cmp eax, r14d
jae 0x1503efbf2
mov ebx, 6
jmp 0x1503efc21
mov rbx, qword [rsp + 0xc0]
mov r8, r9
mov rdx, rdi
lea rcx, [rbx + 1]
mov byte [rbx], 0
call fcn.15040d600
lea ecx, [r12 + 1]
mov r8d, r15d
add rcx, rbx
mov rdx, rsi
call fcn.15040d600
xor ebx, ebx
mov rcx, rdi
call fcn.1504246a4
mov rcx, rbp
call fcn.1504246a4
mov rcx, rsi
call fcn.1504246a4
mov eax, ebx
jmp 0x1503efc72
mov rcx, rsi
call fcn.1504246a4
test rbp, rbp
je 0x1503efc52
mov rcx, rbp
call fcn.1504246a4
test rdi, rdi
je 0x1503efc5f
mov rcx, rdi
call fcn.1504246a4
mov eax, SafeArrayGetDim
jmp 0x1503efc72
mov eax, SafeArrayUnaccessData
jmp 0x1503efc72
mov eax, reloc.OLEAUT32.dll_SafeArrayGetDim
add rsp, 0x38
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret