Function at 0x180084570
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push rbp
push r12
push r13
push r14
push r15
sub rsp, 0x90
lea rbp, [rsp + 0x30]
mov qword [rbp + 0x90], rbx
mov qword [rbp + 0x98], rsi
mov qword [rbp + 0xa0], rdi
mov rax, qword [0x180212a58]
xor rax, rbp
mov qword [rbp + 0x50], rax
mov dword [rbp + 0x18], r9d
mov r13d, r8d
mov edi, edx
mov rsi, rcx
mov qword [rbp + 0x28], rcx
lea rax, vtable.com::SafeArray_unsigned_char__struct_com::SafeArrayTraits_unsigned_char__.0
mov qword [rbp + 0x30], rax
and byte [rbp + 0x38], 0xfe
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x40], xmm0
mov rbx, qword [rbp + 0xc8]
test rbx, rbx
je 0x180084615
cmp word [rbx], 1
jne 0x180084615
lea rdx, [rbp + 0x10]
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_VarR8FromUI1]
test eax, eax
js 0x180084615
cmp word [rbp + 0x10], 0x11
jne 0x180084615
lea rdx, [rbp + 0x48]
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SafeArrayUnaccessData]
test eax, eax
js 0x180084615
mov qword [rbp + 0x40], rbx
or byte [rbp + 0x38], 1
jmp 0x180084619
mov rbx, qword [rbp + 0x40]
test rbx, rbx
je 0x180084a25
cmp dword [rbx + 0x18], 0
je 0x180084a25
mov ebx, dword [rbp + 0xb8]
test ebx, ebx
je 0x180084a49
mov r12d, dword [rbp + 0xc0]
test r12d, r12d
je 0x180084a49
mov r15, qword [rbp + 0x48]
mov qword [rbp + 8], r15
xor ecx, ecx
cmp qword [rsi + 8], rcx
je 0x18008473f
cmp qword [0x18021e560], rcx
je 0x18008473f
cmp qword [rsi + 0x338], rcx
je 0x18008473f
lea r14d, [rbx + 7]
shr r14d, 3
imul r14d, r12d
add r14d, 3
mov eax, 0xfffffffc
and r14, rax
mov eax, ebx
imul eax, r12d
shl eax, 2
mov r15d, eax
mov rsi, r14
test r13d, r13d
cmovne rsi, rcx
lea rcx, [rax + 0xe]
add rcx, rsi
lea rdx, [0x18017d190]
call qword [sym.imp.VBoxRT.dll_RTMemAllocTag]
mov rdi, rax
test rax, rax
je 0x18008473b
mov ecx, dword [rbp + 0x18]
mov word [rax], cx
movzx eax, word [rbp + 0xb0]
mov word [rdi + 2], ax
mov word [rdi + 4], bx
mov word [rdi + 6], r12w
mov word [rdi + 8], si
mov dword [rdi + 0xa], r15d
lea rbx, [rdi + 0xe]
mov r12, qword [rbp + 8]
test rsi, rsi
je 0x180084703
mov r8, rsi
mov rdx, r12
mov rcx, rbx
call sub.VCRUNTIME140.dll_memcpy
movzx esi, word [rdi + 8]
movzx ecx, si
add rcx, rbx
lea rdx, [r14 + r12]
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
mov rdx, rdi
mov r8, qword [rbp + 0x28]
mov rcx, qword [r8 + 8]
mov rax, qword [r8 + 0x338]
call qword [case.0x18000f288.0]
mov rcx, rdi
call qword [sym.imp.VBoxRT.dll_RTMemFree]
jmp 0x180084a49
mov r15, qword [rbp + 8]
lea esi, [rbx + 7]
shr esi, 3
mov dword [rbp + 0x14], esi
mov eax, esi
imul eax, r12d
add eax, 3
and eax, 0xfffffffc
movsxd r8, eax
lea r9, [r8 + r15]
mov qword [rbp + 0x20], r9
test r13d, r13d
je 0x18008481b
lea rax, [r8 + 0xf]
cmp rax, r8
ja 0x18008477b
movabs rax, 0xffffffffffffff0
and rax, 0xfffffffffffffff0
call fcn.18010fc30
sub rsp, rax
lea r15, [rsp + 0x30]
mov rsi, r9
mov rdi, r15
mov edx, 0xff
mov rcx, r15
call sub.VCRUNTIME140.dll_memset
test r12d, r12d
jle 0x180084818
lea ecx, [rbx*4]
movsxd r11, ecx
lea eax, [rbx + 7]
cdq
and edx, 7
add eax, edx
sar eax, 3
movsxd r14, eax
mov r10, r12
mov r13d, 0x80
nop word [rax + rax]
movzx eax, r13b
xor r8d, r8d
test ebx, ebx
jle 0x18008480c
lea r9, [rsi + 3]
nop
movzx ecx, al
test al, al
cmove ecx, r13d
movzx eax, cl
cmp byte [r9], 0x7f
jbe 0x1800847fe
mov edx, r8d
shr rdx, 3
not cl
and byte [rdx + rdi], cl
inc r8d
add r9, 4
shr al, 1
cmp r8d, ebx
jl 0x1800847e0
add rsi, r11
add rdi, r14
sub r10, 1
jne 0x1800847d0
mov esi, dword [rbp + 0x14]
xor eax, eax
mov dword [rbp + 8], eax
mov dword [rbp], eax
lea rax, [rbp + 8]
mov qword [rsp + 0x28], rax
lea rax, [rbp]
mov qword [rsp + 0x20], rax
mov r9d, r12d
mov r8d, ebx
mov rdx, qword [rbp + 0x20]
mov rcx, r15
call fcn.180082fb0
mov ecx, dword [rbp + 0x18]
mov edi, ecx
cmp dword [rbp], ecx
cmovbe edi, dword [rbp]
mov ecx, dword [rbp + 0xb0]
mov edx, ecx
cmp dword [rbp + 8], ecx
cmovbe edx, dword [rbp + 8]
mov dword [rbp], edx
lea rdx, [0x18017d190]
mov ecx, 0xc8c
call qword [sym.imp.VBoxRT.dll_RTMemTmpAllocTag]
mov r14, rax
test rax, rax
je 0x180084a49
movdqa xmm0, xmmword [0x180194d30]
movups xmmword [rax + 0xc], xmm0
movups xmmword [rax + 0x1c], xmm0
movups xmmword [rax + 0x2c], xmm0
movups xmmword [rax + 0x3c], xmm0
movups xmmword [rax + 0x4c], xmm0
movups xmmword [rax + 0x5c], xmm0
movups xmmword [rax + 0x6c], xmm0
movups xmmword [rax + 0x7c], xmm0
xor edx, edx
mov r8d, 0xc00
lea rcx, [rax + 0x8c]
call sub.VCRUNTIME140.dll_memset
lea r13d, [rbx*4]
mov ecx, dword [rbp]
imul esi, ecx
add rsi, r15
lea r11, [r14 + 0x88]
sub r12d, ecx
mov edx, 0x20
mov eax, edx
cmp r12d, edx
cmovbe eax, r12d
mov dword [rbp + 8], eax
sub ebx, edi
mov r10d, edx
cmp ebx, edx
cmovbe r10d, ebx
test eax, eax
je 0x1800849cc
mov r15d, dword [rbp + 0x14]
mov ebx, eax
xor eax, eax
mov r9d, eax
test r10d, r10d
je 0x180084961
nop
lea ecx, [r9 + rdi]
mov r8d, ecx
shr r8d, 3
and ecx, 7
mov eax, 7
sub eax, ecx
mov edx, 1
movzx ecx, al
shl edx, cl
test byte [r8 + rsi], dl
jne 0x180084957
mov eax, r9d
shr eax, 3
mov r8d, eax
movzx edx, byte [rax + r11]
mov ecx, r9d
and ecx, 7
mov eax, 7
sub eax, ecx
btr edx, eax
mov byte [r8 + r11], dl
inc r9d
cmp r9d, r10d
jb 0x180084910
xor eax, eax
add rsi, r15
sub r11, 4
sub rbx, 1
jne 0x180084906
mov esi, r13d
mov ebx, dword [rbp + 8]
imul r13d, dword [rbp]
mov r9d, r13d
add r9, qword [rbp + 0x20]
lea r11, [r14 + 0xc2c]
mov r8d, eax
test r10d, r10d
je 0x1800849bc
nop
lea eax, [r8 + rdi]
shl eax, 2
mov edx, eax
lea ecx, [r8 + r8*2]
movzx eax, word [rax + r9]
mov word [rcx + r11], ax
movzx eax, byte [rdx + r9 + 2]
mov byte [rcx + r11 + 2], al
inc r8d
cmp r8d, r10d
jb 0x180084990
xor eax, eax
add r9, rsi
sub r11, 0x60
sub rbx, 1
jne 0x180084987
mov ecx, dword [rbp]
mov eax, dword [rbp + 0x18]
sub ax, di
mov word [r14], ax
mov eax, dword [rbp + 0xb0]
sub ax, cx
mov word [r14 + 2], ax
mov dword [r14 + 4], 0x200020
mov dword [r14 + 8], 0xc000080
mov rax, qword [0x18021e560]
test rax, rax
je 0x180084a1a
mov r8, qword [rbp + 0x28]
mov rcx, qword [r8 + 8]
test rcx, rcx
je 0x180084a1a
mov rdx, r14
mov rax, qword [rax + 0x38]
call qword [case.0x18000f288.0]
mov rcx, r14
call qword [sym.imp.VBoxRT.dll_RTMemTmpFree]
jmp 0x180084a49
test edi, edi
jne 0x180084a49
mov rax, qword [0x18021e560]
test rax, rax
je 0x180084a49
mov rcx, qword [rsi + 8]
test rcx, rcx
je 0x180084a49
mov rax, qword [rax + 0x40]
call qword [case.0x18000f288.0]
nop
lea rcx, [rbp + 0x30]
call fcn.180023e00
mov rcx, qword [rbp + 0x50]
xor rcx, rbp
call fcn.18010fb80
mov rbx, qword [rbp + 0x90]
mov rsi, qword [rbp + 0x98]
mov rdi, qword [rbp + 0xa0]
lea rsp, [rbp + 0x60]
pop r15
pop r14
pop r13
pop r12
pop rbp
ret