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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x34
push ebx
mov ebx, ecx
mov dword [esp + 0xc], 0
push esi
xor esi, esi
push edi
mov eax, dword [ebx + 4]
mov edi, dword [ebp + 8]
mov eax, dword [eax + 8]
mov edx, dword [eax + ebx + 0x88]
mov eax, dword [ebp + 0xc]
mov dword [eax], edx
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebx + 0x38]
mov edx, dword [ebx + 0x3c]
mov dword [eax], ecx
mov dword [eax + 4], edx
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebx + 0x40]
mov dword [eax], ecx
mov eax, dword [ebx + 4]
mov eax, dword [eax + 8]
add eax, 0x44
add eax, ebx
mov dword [esp + 0x18], eax
cmp dword [eax + 4], esi
je 0x1001c716
push dword [edi]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov edx, dword [esp + 0x18]
mov ecx, eax
cmp dword [edx + 4], ecx
setbe byte [esp + 0x13]
ja 0x1001c703
mov eax, dword [edi]
jmp 0x1001c705
xor eax, eax
push eax
mov ecx, edx
call fcn.10004710
cmp byte [esp + 0x13], 0
mov esi, eax
jne 0x1001c725
mov eax, dword [edi]
cmp eax, esi
je 0x1001c725
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [edi], esi
mov eax, dword [ebx + 4]
mov eax, dword [eax + 8]
mov ecx, dword [eax + ebx + 0x98]
test ecx, ecx
je 0x1001c822
cmp dword [ecx + 0x10], 0
je 0x1001c822
movzx eax, byte [ecx + 0x18]
push ecx
push eax
push dword [ecx + 0x10]
mov dword [esp + 0x3c], 0x10059da0
push dword [ecx + 0xc]
lea ecx, [esp + 0x40]
mov dword [esp + 0x44], 0
mov dword [esp + 0x48], 0
mov word [esp + 0x4c], 0xff
call fcn.100049d0
mov esi, dword [esp + 0x34]
lea ecx, [esp + 0x20]
mov dword [esp + 0x20], 0x10059da0
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
lea eax, [esi*2 + 8]
mov word [esp + 0x2c], 0xff
push eax
call fcn.10004970
test eax, eax
je 0x1001c7e4
mov ecx, dword [esp + 0x20]
lea eax, [esi + esi]
push eax
push dword [esp + 0x34]
lea esi, [eax + ecx]
xor edx, edx
push ecx
mov word [esi], dx
call sub.msvcrt.dll_memcpy
add esp, 0xc
xor eax, eax
mov word [esi + 6], ax
mov eax, dword [0x10054854]
mov dword [esi], eax
mov ax, word [0x10054858]
mov word [esi + 4], ax
mov esi, dword [esp + 0x20]
test esi, esi
jne 0x1001c7fd
xor ecx, ecx
push ecx
push esi
push ecx
mov ecx, edi
call fcn.1001aef0
lea eax, [esi + 3]
jmp 0x1001c82a
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1001c802
sub ecx, edx
sar ecx, 1
push ecx
push esi
push ecx
mov ecx, edi
call fcn.1001aef0
mov eax, 3
jmp 0x1001c82a
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
mov ecx, dword [sym.imp.msvcrt.dll_free]
test al, 2
je 0x1001c856
and eax, 0xfffffffd
mov dword [esp + 0x14], eax
cmp esi, 0x10059da0
je 0x1001c856
lea eax, [esi - 4]
push eax
call ecx
mov eax, dword [esp + 0x18]
add esp, 4
mov ecx, dword [sym.imp.msvcrt.dll_free]
test al, 1
je 0x1001c86e
mov eax, dword [esp + 0x30]
cmp eax, 0x10059da0
je 0x1001c86e
add eax, 0xfffffffc
push eax
call ecx
add esp, 4
cmp byte [ebx + 0x44], 0
je 0x1001c895
mov eax, dword [0x10059df0]
mov eax, dword [eax + 0x116c]
shr eax, 0x1d
test al, 1
jne 0x1001c895
push 8
push 0x1005485c
push ecx
mov ecx, edi
call fcn.1001aef0
cmp dword [ebx + 0x1c], 0
je 0x1001c8ed
xor eax, eax
mov dword [esp + 0x14], eax
cmp dword [ebx + 0x1c], eax
je 0x1001c8d4
push dword [edi + 0x24]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
cmp dword [ebx + 0x1c], eax
setbe byte [esp + 0x13]
ja 0x1001c8be
mov eax, dword [edi + 0x24]
jmp 0x1001c8c0
xor eax, eax
push eax
lea ecx, [ebx + 0x18]
call fcn.10004710
cmp byte [esp + 0x13], 0
mov dword [esp + 0x14], eax
jne 0x1001c8ed
mov ecx, dword [edi + 0x24]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp ecx, eax
je 0x1001c8f3
push ecx
call esi
mov eax, dword [esp + 0x14]
mov dword [edi + 0x24], eax
jmp 0x1001c8f3
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebx + 4]
mov eax, dword [eax + 8]
add eax, ebx
mov dword [esp + 0x18], eax
cmp dword [eax + 0x68], 0
je 0x1001c956
lea ecx, [eax + 0x64]
xor eax, eax
mov dword [esp + 0x14], eax
cmp dword [ecx + 4], eax
je 0x1001c945
push dword [edi + 0x2c]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov ecx, dword [esp + 0x18]
cmp dword [ecx + 0x68], eax
setbe byte [esp + 0x13]
ja 0x1001c92f
mov eax, dword [edi + 0x2c]
jmp 0x1001c931
xor eax, eax
push eax
lea ecx, [ecx + 0x64]
call fcn.10004710
cmp byte [esp + 0x13], 0
mov dword [esp + 0x14], eax
jne 0x1001c956
mov ecx, dword [edi + 0x2c]
cmp ecx, eax
je 0x1001c956
push ecx
call esi
mov eax, dword [esp + 0x14]
mov dword [edi + 0x2c], eax
cmp dword [ebx + 0x2c], 0
je 0x1001c9a6
xor eax, eax
mov dword [esp + 0x14], eax
cmp dword [ebx + 0x2c], eax
je 0x1001c995
push dword [edi + 0x5c]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
cmp dword [ebx + 0x2c], eax
setbe byte [esp + 0x13]
ja 0x1001c97f
mov eax, dword [edi + 0x5c]
jmp 0x1001c981
xor eax, eax
push eax
lea ecx, [ebx + 0x28]
call fcn.10004fa0
cmp byte [esp + 0x13], 0
mov dword [esp + 0x14], eax
jne 0x1001c9a6
mov ecx, dword [edi + 0x5c]
cmp ecx, eax
je 0x1001c9a6
push ecx
call esi
mov eax, dword [esp + 0x14]
mov dword [edi + 0x5c], eax
mov eax, dword [ebx + 4]
mov eax, dword [eax + 8]
add eax, ebx
mov dword [esp + 0x18], eax
cmp dword [eax + 0x78], 0
je 0x1001ca16
lea ecx, [eax + 0x74]
xor eax, eax
mov dword [esp + 0x14], eax
cmp dword [ecx + 4], eax
je 0x1001c9fc
push dword [edi + 0x58]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov ecx, dword [esp + 0x18]
cmp dword [ecx + 0x78], eax
setbe byte [esp + 0x13]
ja 0x1001c9e2
mov eax, dword [edi + 0x58]
jmp 0x1001c9e4
xor eax, eax
push eax
lea ecx, [ecx + 0x74]
call fcn.10004fa0
cmp byte [esp + 0x13], 0
mov dword [esp + 0x14], eax
jne 0x1001cb0b
mov ecx, dword [edi + 0x58]
cmp ecx, eax
je 0x1001cb0b
push ecx
call esi
mov eax, dword [esp + 0x14]
mov dword [edi + 0x58], eax
jmp 0x1001cb0b
cmp dword [ebx + 0xc], 0
je 0x1001cb0b
mov al, byte [ebx + 0x14]
lea edx, [ebx + 8]
push 0
lea ecx, [esp + 0x24]
mov byte [esp + 0x20], al
call fcn.1000a300
mov edx, dword [ebx + 8]
add esp, 4
mov ecx, dword [eax + 4]
add edx, dword [eax]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], edx
test ecx, ecx
jle 0x1001ca77
lea eax, [ecx + 0x10]
push eax
call dword [sym.imp.msvcrt.dll_malloc]
mov esi, eax
add esp, 4
test esi, esi
je 0x1001ca77
mov eax, dword [esp + 0x14]
push eax
push dword [esp + 0x1c]
push esi
mov byte [esi + eax], 0
call sub.msvcrt.dll_memcpy
add esp, 0xc
jmp 0x1001ca84
mov esi, 0x10059da0
mov dword [esp + 0x14], 0
mov eax, dword [ebx + 4]
push ecx
push dword [esp + 0x20]
mov eax, dword [eax + 8]
push dword [esp + 0x1c]
add eax, 0x74
add eax, ebx
push esi
mov ecx, eax
mov dword [esp + 0x28], eax
call fcn.100049d0
mov ecx, dword [esp + 0x18]
xor eax, eax
mov dword [esp + 0x14], eax
cmp dword [ecx + 4], eax
je 0x1001cae4
push dword [edi + 0x58]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov edx, dword [esp + 0x18]
cmp dword [edx + 4], eax
setbe byte [esp + 0x13]
ja 0x1001cacf
mov eax, dword [edi + 0x58]
jmp 0x1001cad1
xor eax, eax
push eax
mov ecx, edx
call fcn.10004fa0
cmp byte [esp + 0x13], 0
mov dword [esp + 0x14], eax
jne 0x1001caf9
mov ecx, dword [edi + 0x58]
cmp ecx, eax
je 0x1001caf9
push ecx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esp + 0x14]
mov dword [edi + 0x58], eax
cmp esi, 0x10059da0
je 0x1001cb0b
push esi
call dword [sym.imp.msvcrt.dll_free]
add esp, 4
cmp word [0x10059e08], 0x42
jb 0x1001cb98
mov eax, dword [ebx + 4]
mov eax, dword [eax + 8]
cmp dword [eax + ebx + 0x58], 0
je 0x1001cb98
add eax, 0x54
lea ecx, [esp + 0x30]
add eax, ebx
push eax
call fcn.1001d3d0
xor esi, esi
mov dword [esp + 0x20], eax
add esp, 4
cmp dword [eax + 4], esi
je 0x1001cb72
push dword [edi + 0x18]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov edx, dword [esp + 0x1c]
cmp dword [edx + 4], eax
setbe byte [esp + 0x13]
ja 0x1001cb5f
mov eax, dword [edi + 0x18]
jmp 0x1001cb61
xor eax, eax
push eax
mov ecx, edx
call fcn.10004710
cmp byte [esp + 0x13], 0
mov esi, eax
jne 0x1001cb83
mov eax, dword [edi + 0x18]
cmp eax, esi
je 0x1001cb83
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [edi + 0x18], esi
mov eax, dword [esp + 0x30]
cmp eax, 0x10059da0
je 0x1001cb98
push eax
call dword [sym.imp.msvcrt.dll_free]
add esp, 4
mov eax, dword [ebx + 4]
mov eax, dword [eax + 8]
mov ecx, dword [eax + ebx + 0x8c]
test ecx, ecx
je 0x1001cc8e
mov eax, dword [ecx + 0xc]
mov eax, dword [eax + 8]
cmp dword [eax + ecx + 0x50], 0
je 0x1001cc15
cmp byte [ecx + 0x1a], 0
jne 0x1001cc15
lea esi, [eax + ecx]
xor eax, eax
mov dword [esp + 0x18], eax
cmp dword [esi + 0x50], eax
je 0x1001cbfc
push dword [edi + 0x34]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
cmp dword [esi + 0x50], eax
setbe byte [esp + 0x13]
ja 0x1001cbe6
mov eax, dword [edi + 0x34]
jmp 0x1001cbe8
xor eax, eax
push eax
lea ecx, [esi + 0x4c]
call fcn.10004710
cmp byte [esp + 0x13], 0
mov dword [esp + 0x18], eax
jne 0x1001cc15
mov ecx, dword [edi + 0x34]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp ecx, eax
je 0x1001cc1b
push ecx
call esi
mov eax, dword [esp + 0x18]
mov dword [edi + 0x34], eax
jmp 0x1001cc1b
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebx + 4]
mov eax, dword [eax + 8]
mov ecx, dword [eax + ebx + 0x8c]
mov eax, dword [ecx + 0xc]
mov eax, dword [eax + 8]
cmp dword [eax + ecx + 0x80], 0
je 0x1001cc8e
add ecx, 0x7c
add ecx, eax
xor eax, eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], eax
cmp dword [ecx + 4], eax
je 0x1001cc7d
push dword [edi + 0x28]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov edx, dword [esp + 0x1c]
cmp dword [edx + 4], eax
setbe byte [esp + 0x13]
ja 0x1001cc68
mov eax, dword [edi + 0x28]
jmp 0x1001cc6a
xor eax, eax
push eax
mov ecx, edx
call fcn.10004fa0
cmp byte [esp + 0x13], 0
mov dword [esp + 0x18], eax
jne 0x1001cc8e
mov ecx, dword [edi + 0x28]
cmp ecx, eax
je 0x1001cc8e
push ecx
call esi
mov eax, dword [esp + 0x18]
mov dword [edi + 0x28], eax
mov eax, dword [ebx + 4]
mov eax, dword [eax + 8]
mov esi, dword [eax + ebx + 0x98]
test esi, esi
je 0x1001ce53
cmp word [esi + 8], 1
jne 0x1001ce53
cmp dword [esi + 0x44], 0
je 0x1001cd02
xor eax, eax
mov dword [esp + 0x18], eax
cmp dword [esi + 0x44], eax
je 0x1001cced
push dword [edi + 4]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
cmp dword [esi + 0x44], eax
setbe byte [esp + 0x13]
ja 0x1001ccd7
mov eax, dword [edi + 4]
jmp 0x1001ccd9
xor eax, eax
push eax
lea ecx, [esi + 0x40]
call fcn.10004710
cmp byte [esp + 0x13], 0
mov dword [esp + 0x18], eax
jne 0x1001cd02
mov ecx, dword [edi + 4]
cmp ecx, eax
je 0x1001cd02
push ecx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esp + 0x18]
mov dword [edi + 4], eax
mov eax, dword [esi + 0x2c]
test eax, eax
je 0x1001ce44
cmp byte [esi + 0x21], 0
je 0x1001ce44
mov ecx, dword [0x10059df0]
push eax
lea ecx, [ecx + 0x1134]
call fcn.10039c90
test eax, eax
jne 0x1001cd38
xor al, al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
push dword [eax + 0x3c]
mov edx, dword [eax + 0x38]
lea ecx, [esp + 0x34]
call fcn.10009aa0
mov al, byte [esp + 0x40]
add esp, 4
mov byte [esp + 0x2c], al
mov edx, 0x10059da0
mov eax, dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov byte [esp + 0x2d], 0
add eax, 4
je 0x1001cd8b
push eax
lea ecx, [esp + 0x24]
call fcn.10003580
test eax, eax
je 0x1001cdc9
mov edx, dword [esp + 0x20]
mov al, byte [esp + 0x3c]
lea ecx, [edx + 3]
mov byte [ecx], 0
mov byte [esp + 0x2c], al
mov ax, word [0x10054870]
mov word [edx], ax
movzx eax, byte [0x10054872]
mov byte [edx + 2], al
mov edx, dword [esp + 0x34]
push edx
push dword [esp + 0x34]
lea eax, [edx + 3]
mov byte [ecx + edx], 0
push ecx
mov dword [esp + 0x30], eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
xor eax, eax
mov dword [esp + 0x18], eax
cmp dword [esp + 0x24], eax
je 0x1001ce05
push dword [edi + 0x30]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
cmp dword [esp + 0x24], eax
setbe byte [esp + 0x13]
ja 0x1001cdee
mov eax, dword [edi + 0x30]
jmp 0x1001cdf0
xor eax, eax
push eax
lea ecx, [esp + 0x24]
call fcn.10004710
cmp byte [esp + 0x13], 0
mov dword [esp + 0x18], eax
jne 0x1001ce1a
mov ecx, dword [edi + 0x30]
cmp ecx, eax
je 0x1001ce1a
push ecx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esp + 0x18]
mov dword [edi + 0x30], eax
mov eax, dword [esp + 0x20]
cmp eax, 0x10059da0
je 0x1001ce2f
push eax
call dword [sym.imp.msvcrt.dll_free]
add esp, 4
mov eax, dword [esp + 0x30]
cmp eax, 0x10059da0
je 0x1001ce44
push eax
call dword [sym.imp.msvcrt.dll_free]
add esp, 4
cmp byte [esi + 0x22], 0
je 0x1001ce53
mov eax, dword [ebp + 0x18]
or dword [eax], 0x100
mov eax, dword [ebx + 4]
mov eax, dword [eax + 8]
mov esi, dword [eax + ebx + 0x98]
test esi, esi
je 0x1001cf4d
cmp word [esi + 8], 0xffff
jne 0x1001cf4d
mov eax, dword [esi + 0x3c]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x1001ced1
xor ecx, ecx
mov dword [esp + 0x18], ecx
cmp dword [eax + 4], ecx
je 0x1001cebc
push dword [edi + 0xc]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov edx, dword [esp + 0x1c]
cmp dword [edx + 4], eax
setbe byte [esp + 0x13]
ja 0x1001cea5
mov eax, dword [edi + 0xc]
jmp 0x1001cea7
xor eax, eax
push eax
mov ecx, edx
call fcn.10004710
cmp byte [esp + 0x13], 0
mov ecx, eax
mov dword [esp + 0x18], eax
jne 0x1001ced1
mov eax, dword [edi + 0xc]
cmp eax, ecx
je 0x1001ced1
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esp + 0x18]
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0x40]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x1001ceff
xor esi, esi
cmp dword [eax + 4], esi
je 0x1001cf3c
push dword [edi + 0x30]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov edx, dword [esp + 0x1c]
cmp dword [edx + 4], eax
setbe byte [esp + 0x13]
ja 0x1001cf29
mov eax, dword [edi + 0x30]
jmp 0x1001cf2b
lea eax, [esi + 0x2c]
xor esi, esi
mov dword [esp + 0x1c], eax
cmp dword [eax + 4], esi
je 0x1001cf3c
push dword [edi + 0x30]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov edx, dword [esp + 0x1c]
cmp dword [edx + 4], eax
setbe byte [esp + 0x13]
ja 0x1001cf29
mov eax, dword [edi + 0x30]
jmp 0x1001cf2b
xor eax, eax
push eax
mov ecx, edx
call fcn.10004710
cmp byte [esp + 0x13], 0
mov esi, eax
jne 0x1001cf4d
mov eax, dword [edi + 0x30]
cmp eax, esi
je 0x1001cf4d
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [edi + 0x30], esi
mov eax, dword [ebx + 4]
mov eax, dword [eax + 8]
mov eax, dword [eax + ebx + 0x98]
test eax, eax
je 0x1001cfb3
cmp word [eax + 8], 0xfffe
jne 0x1001cfb3
add eax, 0x1c
xor esi, esi
mov dword [esp + 0x1c], eax
cmp dword [eax + 4], esi
je 0x1001cfa2
push dword [edi + 0x30]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov edx, dword [esp + 0x1c]
cmp dword [edx + 4], eax
setbe byte [esp + 0x13]
ja 0x1001cf8f
mov eax, dword [edi + 0x30]
jmp 0x1001cf91
xor eax, eax
push eax
mov ecx, edx
call fcn.10004710
cmp byte [esp + 0x13], 0
mov esi, eax
jne 0x1001cfb3
mov eax, dword [edi + 0x30]
cmp eax, esi
je 0x1001cfb3
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [edi + 0x30], esi
mov eax, dword [ebx + 4]
mov eax, dword [eax + 8]
mov esi, dword [eax + ebx + 0x98]
test esi, esi
je 0x1001d02a
movzx eax, word [esi + 8]
cmp ax, 0xfffc
je 0x1001cfe0
cmp ax, 2
je 0x1001cfe0
cmp ax, 4
je 0x1001cfe0
cmp ax, 5
jne 0x1001d02a
mov esi, dword [esi + 0x28]
test esi, esi
je 0x1001d02a
xor ebx, ebx
cmp dword [esi + 4], ebx
je 0x1001d019
push dword [edi + 0x30]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
cmp dword [esi + 4], eax
setbe byte [esp + 0x13]
ja 0x1001d006
mov eax, dword [edi + 0x30]
jmp 0x1001d008
xor eax, eax
push eax
mov ecx, esi
call fcn.10004710
cmp byte [esp + 0x13], 0
mov ebx, eax
jne 0x1001d02a
mov eax, dword [edi + 0x30]
cmp eax, ebx
je 0x1001d02a
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [edi + 0x30], ebx
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x14