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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x74
mov edx, dword [ebp + 8]
xor eax, eax
push ebx
mov ebx, dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov ecx, 0x4008
push esi
mov word [esp + 0x28], ax
mov word [esp + 0x38], ax
movzx eax, word [edx]
lea esi, [ecx + 4]
mov byte [esp + 0x48], 0
mov dword [esp + 0x10], 0x4009
push edi
mov edi, dword [ebp + 0xc]
cmp eax, 8
jne 0x4ac69d
mov eax, dword [edx + 8]
mov dword [esp + 0x28], eax
mov dword [esp + 0x4d], 0
jmp 0x4ac7c5
cmp ax, cx
jne 0x4ac6b8
mov eax, dword [edx + 8]
mov eax, dword [eax]
mov dword [esp + 0x28], eax
mov dword [esp + 0x4d], 0
jmp 0x4ac7c5
mov dword [esp + 0x28], 0
cmp eax, 0xa
jne 0x4ac6e0
cmp dword [edx + 8], 0x80020004
jne 0x4ac6e0
mov byte [esp + 0x4c], 1
mov dword [esp + 0x4d], 0x80020005
jmp 0x4ac7c5
cmp eax, 9
je 0x4ac6ee
mov ecx, eax
cmp ax, word [esp + 0x14]
jne 0x4ac76a
mov ecx, dword [edx + 8]
test eax, 0x4000
je 0x4ac6fa
mov ecx, dword [ecx]
test ecx, ecx
je 0x4acae8
push 0
push 0
lea edx, [esp + 0x34]
xor eax, eax
push edx
lea edx, [esp + 0x24]
mov dword [esp + 0x24], eax
push edx
push 3
push 0
push 0x556a40
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov eax, dword [ecx]
push 0
push ecx
call dword [eax + 0x18]
mov esi, eax
mov dword [esp + 0x4d], esi
test esi, esi
js 0x4ac7b1
movzx ecx, word [esp + 0x2c]
lea edx, [esp + 0x2c]
mov esi, 0x4008
mov eax, ecx
cmp cx, si
jne 0x4ac75a
mov eax, dword [esp + 0x34]
mov eax, dword [eax]
jmp 0x4ac7a7
cmp eax, 8
jne 0x4ac765
mov eax, dword [esp + 0x34]
jmp 0x4ac7a7
mov esi, 0x400c
cmp cx, 1
jne 0x4ac777
mov esi, 0x800a005e
jmp 0x4ac7ad
cmp cx, si
jne 0x4ac784
mov edx, dword [edx + 8]
cmp word [edx], si
je 0x4ac77c
push 8
push 2
push 0x400
push edx
lea eax, [esp + 0x4c]
push eax
call dword [sym.imp.OLEAUT32.dll_SafeArrayPtrOfIndex]
mov esi, eax
mov dword [esp + 0x4d], esi
test esi, esi
js 0x4ac7b1
mov eax, dword [esp + 0x44]
mov dword [esp + 0x28], eax
xor esi, esi
mov dword [esp + 0x4d], esi
cmp byte [esp + 0x4c], 0
jne 0x4ac7c0
test esi, esi
js 0x4acaf1
mov ecx, 0x4008
xor eax, eax
mov byte [esp + 0x78], 0
mov word [esp + 0x58], ax
mov word [esp + 0x68], ax
movzx eax, word [edi]
cmp eax, 8
jne 0x4ac802
mov eax, dword [edi + 8]
mov dword [esp + 0x54], eax
mov dword [esp + 0x79], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
jmp 0x4ac957
cmp ax, cx
jne 0x4ac80e
mov eax, dword [edi + 8]
mov eax, dword [eax]
jmp 0x4ac7e1
mov dword [esp + 0x54], 0
cmp eax, 0xa
jne 0x4ac856
cmp dword [edi + 8], 0x80020004
jne 0x4ac856
mov byte [esp + 0x78], 1
mov dword [esp + 0x79], 0x80020005
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
cmp byte [esp + 0x4c], 0
je 0x4aca70
mov esi, 0x80004005
jmp 0x4acac8
cmp eax, 9
je 0x4ac867
mov edx, 0x4009
mov ecx, eax
cmp ax, dx
jne 0x4ac8de
mov ecx, dword [edi + 8]
test eax, 0x4000
je 0x4ac873
mov ecx, dword [ecx]
test ecx, ecx
je 0x4acabf
push 0
push 0
lea edx, [esp + 0x60]
xor eax, eax
push edx
lea edx, [esp + 0x24]
mov dword [esp + 0x24], eax
push edx
push 3
push 0
push 0x556a40
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov eax, dword [ecx]
push 0
push ecx
call dword [eax + 0x18]
mov esi, eax
mov dword [esp + 0x79], esi
test esi, esi
js 0x4ac92d
movzx ecx, word [esp + 0x58]
lea edi, [esp + 0x58]
mov esi, 0x4008
mov eax, ecx
cmp cx, si
jne 0x4ac8d3
mov eax, dword [esp + 0x60]
mov eax, dword [eax]
jmp 0x4ac923
cmp eax, 8
jne 0x4ac8de
mov eax, dword [esp + 0x60]
jmp 0x4ac923
cmp cx, 1
jne 0x4ac8eb
mov esi, 0x800a005e
jmp 0x4ac929
mov eax, 0x400c
cmp cx, ax
jne 0x4ac900
lea ecx, [ecx]
mov edi, dword [edi + 8]
cmp word [edi], ax
je 0x4ac8f8
push 8
push 2
push 0x400
push edi
lea eax, [esp + 0x78]
push eax
call dword [sym.imp.OLEAUT32.dll_SafeArrayPtrOfIndex]
mov esi, eax
mov dword [esp + 0x79], esi
test esi, esi
js 0x4ac92d
mov eax, dword [esp + 0x70]
mov dword [esp + 0x54], eax
xor esi, esi
mov dword [esp + 0x79], esi
cmp byte [esp + 0x78], 0
jne 0x4ac93c
test esi, esi
js 0x4acac8
cmp byte [esp + 0x78], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
jne 0x4ac841
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
lea eax, [esp + 0x18]
push eax
push dword [esp + 0x58]
call dword [sym.imp.ole32.dll_CLSIDFromProgIDEx]
mov esi, eax
test esi, esi
js 0x4acac8
cmp byte [esp + 0x4c], 0
lea eax, [esp + 0xc]
push eax
lea eax, [esp + 0x1c]
je 0x4ac99d
push 0
push eax
call dword [sym.imp.OLEAUT32.dll_SafeArrayAllocDescriptor]
jmp 0x4ac9ad
push 0x559c40
push 5
push 0
push eax
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov esi, eax
test esi, esi
jns 0x4ac9c0
mov dword [esp + 0xc], 0
jmp 0x4aca59
mov ecx, dword [esp + 0xc]
test ecx, ecx
jne 0x4ac9d2
mov esi, 0x80004005
jmp 0x4aca59
cmp byte [esp + 0x4c], 0
jne 0x4aca2e
mov eax, dword [esp + 0x28]
test eax, eax
je 0x4aca69
cmp word [eax], 0
je 0x4aca69
mov eax, dword [ecx]
lea edx, [esp + 0x14]
push edx
push 0x559c30
push ecx
mov dword [esp + 0x20], 0
call dword [eax]
mov esi, eax
test esi, esi
js 0x4aca4b
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x4aca26
mov eax, dword [ecx]
push 0
push 0
push ecx
call dword [eax + 0x14]
mov esi, eax
mov eax, dword [esp + 0x14]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
test esi, esi
js 0x4aca4b
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx]
lea edx, [esp + 0x10]
push edx
push 0x559c20
push ecx
call dword [eax]
mov esi, eax
test esi, esi
jns 0x4aca92
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0xc]
test ecx, ecx
je 0x4aca59
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x4acac8
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
jmp 0x4acac8
call fcn.004ac5d2
jmp 0x4aca2a
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0xc]
call fcn.004ac540
mov esi, eax
test esi, esi
js 0x4aca4b
mov ecx, dword [esp + 0xc]
test ecx, ecx
jne 0x4aca2e
mov esi, 0x80004005
jmp 0x4aca59
cmp dword [esp + 0x10], 0
jne 0x4acaa0
mov esi, 0x80004005
jmp 0x4aca4b
mov eax, dword [esp + 0xc]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp + 0x10]
xor esi, esi
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x10], 0
mov dword [eax], ecx
jmp 0x4acac8
mov esi, 0x800a005b
mov dword [esp + 0x79], esi
cmp word [esp + 0x58], 0
je 0x4acad7
lea eax, [esp + 0x58]
push eax
call ebx
cmp word [esp + 0x68], 0
je 0x4acaf1
lea eax, [esp + 0x68]
push eax
call ebx
jmp 0x4acaf1
mov esi, 0x800a005b
mov dword [esp + 0x4d], esi
cmp word [esp + 0x2c], 0
je 0x4acb00
lea eax, [esp + 0x2c]
push eax
call ebx
cmp word [esp + 0x3c], 0
je 0x4acb0f
lea eax, [esp + 0x3c]
push eax
call ebx
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc