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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
mov eax, 0x2674
call fcn.004badd0
mov ecx, dword [ebp + 0x1c]
mov eax, 0xfe
push ebx
push esi
push edi
mov ecx, dword [ecx + 8]
cmp ecx, 0xff
cmovae ecx, eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x54], ecx
test al, 0xc
je 0x45f779
mov ebx, 1
jmp 0x45f780
mov ebx, eax
and ebx, 1
add ebx, ebx
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x50], ebx
test edi, edi
jle 0x45f7a6
cmp edi, dword [0x4f09c4]
jg 0x46018c
mov eax, dword [0x4f09bc]
mov eax, dword [eax + edi*4 - 4]
mov dword [esp + 0x3c], eax
jmp 0x45f7dc
jne 0x45f7b2
mov dword [esp + 0x3c], 0
jmp 0x45f7dc
cmp edi, 0xfffffffc
jne 0x46018c
test al, 3
je 0x46018c
or ebx, 0x200
mov dword [esp + 0x3c], str.__Enum
mov dword [esp + 0x50], ebx
mov dword [ebp + 0x18], 0xfffd
mov eax, ecx
mov dword [esp + 0x6c], 1
shl eax, 4
mov edx, 0x4000
mov dword [esp + 0x60], eax
cmp ecx, 1
jb 0x45f92d
mov ebx, dword [ebp + 0x1c]
lea ecx, [eax - 0x10]
lea edi, [esp + 0x6c0]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x68], 0x4008
mov esi, dword [ebx]
add esi, ecx
test word [esi], dx
je 0x45f8eb
push 0x24
call fcn.004a45cd
mov ecx, eax
add esp, 4
mov dword [esp + 0x64], ecx
test ecx, ecx
je 0x45f86e
mov dword [ecx + 4], 1
mov dword [ecx + 0x10], 0x4efe8c
mov dword [ecx + 0x14], 0
mov dword [ecx + 0x18], 0
mov word [ecx + 0x1d], 0x402
mov byte [ecx + 0x1f], 1
mov dword [ecx + 0x20], 0x4d3ee8
mov byte [ecx + 0x1c], 2
mov dword [ecx], vtable.VarRef.0
jmp 0x45f870
xor ecx, ecx
mov dword [edi], ecx
add ecx, 8
mov dword [edi + 8], 5
mov dword [edi + 0x14], 0
movzx eax, word [esi]
mov edx, eax
mov dword [esp + 0x64], ecx
cmp ax, word [esp + 0x68]
jne 0x45f8b1
mov eax, dword [esi + 8]
push dword [eax]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov ecx, dword [esi + 8]
push 1
push eax
push dword [ecx]
mov ecx, dword [esp + 0x70]
call fcn.0048a0f0
jmp 0x45f8f9
mov eax, 0x400c
cmp dx, ax
jne 0x45f8c7
mov edx, dword [esi + 8]
push 1
call fcn.0045d980
jmp 0x45f8f6
xor eax, eax
mov word [esp + 0x40], ax
lea eax, [esp + 0x40]
push esi
push eax
call dword [sym.imp.OLEAUT32.dll_VariantChangeType]
mov ecx, dword [esp + 0x64]
lea edx, [esp + 0x40]
push 0
call fcn.0045d980
jmp 0x45f8f6
push 1
mov edx, edi
mov ecx, esi
call fcn.0045d4a0
add esp, 4
mov eax, dword [esp + 0x6c]
mov edx, 0x4000
mov ecx, dword [esp + 0x58]
sub ecx, 0x10
mov dword [esp + 0x58], ecx
mov dword [esp + eax*4 + 0x2a0], edi
inc eax
add edi, 0x20
mov dword [esp + 0x6c], eax
cmp eax, dword [esp + 0x54]
jbe 0x45f814
mov ebx, dword [esp + 0x50]
mov edi, dword [ebp + 0xc]
mov ecx, dword [0x4ea828]
lea eax, [esp + 0xa0]
mov esi, dword [ebp + 8]
push dword [esp + 0x54]
mov dword [esp + 0x94], eax
mov dword [esp + 0x7c], 5
mov dword [esp + 0x74], esi
mov dword [esp + 0x8c], 0
mov dword [esp + 0x84], 0x4d3ee8
mov dword [esp + 0x88], 0xffffffff
mov dword [esp + 0x98], 0
mov dword [esp + 0xa0], 1
mov eax, dword [ecx + 0x34]
mov dword [esp + 0x6c], eax
or eax, 2
mov dword [ecx + 0x34], eax
lea ecx, [esp + 0x2a8]
mov eax, dword [esi]
push ecx
lea ecx, [esp + 0x78]
push ecx
push dword [esp + 0x48]
lea ecx, [esp + 0x90]
push ebx
push ecx
mov ecx, esi
call dword [eax + 0x1c]
test eax, eax
je 0x45f9fd
nop dword [eax]
cmp eax, 4
jne 0x45fa40
and bl, 3
cmp bl, 2
jne 0x45fa33
test byte [ebp + 0x18], bl
je 0x45fa33
push dword [esp + 0x54]
mov eax, dword [esi]
lea ecx, [esp + 0x2a8]
push ecx
lea ecx, [esp + 0x78]
xor ebx, ebx
push ecx
push dword [esp + 0x48]
lea ecx, [esp + 0x90]
push ebx
push ecx
mov ecx, esi
call dword [eax + 0x1c]
test eax, eax
jne 0x45f9c0
mov eax, dword [0x4ea828]
mov dword [esp + 0x3c], 0x80004005
mov eax, dword [eax + 0x30]
test eax, eax
je 0x45fff6
mov ebx, dword [ebp + 0x24]
test ebx, ebx
je 0x45ffad
mov ecx, dword [eax + 8]
cmp ecx, 5
jne 0x45fac5
mov eax, dword [eax]
jmp 0x45fae6
mov dword [esp + 0x3c], 0x80020003
jmp 0x45fff6
mov esi, dword [ebp + 0x20]
mov dword [esp + 0x3c], 0
test esi, esi
je 0x45fff6
cmp edi, 0xfffffffc
jne 0x45faad
cmp dword [esp + 0x88], 5
jne 0x45faad
mov eax, 0xd
push 0x14
mov word [esi], ax
call fcn.004a0b56
mov dword [esp + 0x5c], eax
add esp, 4
mov ecx, dword [esp + 0x80]
mov dword [eax], vtable.EnumComCompat.1.0
mov dword [eax + 4], vtable.EnumComCompat.0
mov dword [eax + 8], ecx
mov dword [eax + 0xc], 1
mov byte [eax + 0x10], 0
mov dword [esi + 8], eax
mov dword [esp + 0x88], 1
jmp 0x45fff6
push 0
mov edx, esi
lea ecx, [esp + 0x84]
call fcn.0045da70
add esp, 4
jmp 0x45fff6
cmp ecx, 4
jne 0x45fae4
mov eax, dword [eax]
cmp byte [eax + 0x17], 0
jne 0x45fada
mov ecx, dword [eax + 0xc]
call fcn.004053d0
test byte [eax + 0x15], 0x40
je 0x45fae4
mov eax, dword [eax]
jmp 0x45fae6
xor eax, eax
push 0
push 0x4ede1c
push 0x4ede04
push 0
push eax
call fcn.004bb5d8
add esp, 0x14
mov dword [esp + 0x50], eax
test eax, eax
je 0x45ffad
xorps xmm0, xmm0
mov dword [esp + 0x3c], 0x80020009
lea ecx, [esp + 0x58]
push ecx
movups xmmword [ebx], xmm0
push str.Message
movups xmmword [ebx + 0x10], xmm0
mov ecx, eax
mov dword [ebx + 0x1c], 0x80020009
call fcn.0047dec0
test eax, eax
je 0x45fb63
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x45fba2
cmp ecx, 6
je 0x45fb4c
cmp ecx, 0x4c
je 0x45fb4c
mov esi, dword [eax]
jmp 0x45fba7
mov dword [esp + 0x44], 0
mov esi, 0x4d3ee8
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [ebx + 8], eax
mov ecx, dword [esp + 0x50]
lea eax, [esp + 0x58]
push eax
push str.What
call fcn.0047dec0
test eax, eax
je 0x45fca3
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x45fce2
cmp ecx, 6
je 0x45fc8c
cmp ecx, 0x4c
je 0x45fc8c
mov esi, dword [eax]
jmp 0x45fce7
mov eax, dword [eax]
lea esi, [eax + 8]
mov eax, dword [eax + 4]
mov edi, dword [esp + 0x90]
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], esi
cmp ecx, 4
ja case.0x45fbbe.3
jmp dword [ecx*4 + 0x46019c]
cmp byte [esi + 0x17], 0
jne 0x45fbd9
mov ecx, dword [esi + 0xc]
push 1
call fcn.0040725b
mov esi, eax
jmp case.0x45fbbe.0
test byte [esi + 0x15], 1
je 0x45fbe6
mov ecx, esi
call fcn.004070e7
cmp byte [esi + 0x17], 3
jne 0x45fbfd
cmp byte [esi + 0x15], 0
jl 0x45fbfd
mov ecx, esi
call fcn.00489920
and byte [esi + 0x15], 0x7f
mov esi, dword [esi + 8]
jmp case.0x45fbbe.0
test edi, edi
je case.0x45fbbe.3
push 0xa
push edi
push eax
push esi
call fcn.004a8fdb
add esp, 0x10
mov esi, eax
jmp case.0x45fbbe.0
test edi, edi
je case.0x45fbbe.3
movsd xmm0, qword [esp + 0x40]
sub esp, 8
movsd qword [esp], xmm0
push str._.17g
push 0x100
push edi
call fcn.004868c0
add esp, 0x14
mov esi, eax
push 0x4e19e8
push edi
call fcn.004afaf4
add esp, 8
cmp eax, esi
jne 0x45fc85
lea ecx, [esi + 3]
cmp ecx, 0x100
jg 0x45fc85
movzx eax, word [edi + esi*2 - 2]
add eax, 0xffffffd0
cmp ax, 9
ja 0x45fc85
xor eax, eax
mov dword [edi + esi*2], 0x30002e
mov word [edi + esi*2 + 4], ax
mov esi, edi
jmp case.0x45fbbe.0
mov dword [esp + 0x44], 0
mov esi, 0x4d3ee8
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [ebx + 4], eax
mov ecx, dword [esp + 0x50]
lea eax, [esp + 0x58]
push eax
push 0x4d7c34
call fcn.0047dec0
test eax, eax
je 0x45fde3
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x45fe22
cmp ecx, 6
je 0x45fdcc
cmp ecx, 0x4c
je 0x45fdcc
mov esi, dword [eax]
jmp 0x45fe27
mov eax, dword [eax]
lea esi, [eax + 8]
mov eax, dword [eax + 4]
mov edi, dword [esp + 0x90]
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], esi
cmp ecx, 4
ja case.0x45fcfe.3
jmp dword [ecx*4 + 0x4601b0]
cmp byte [esi + 0x17], 0
jne 0x45fd19
mov ecx, dword [esi + 0xc]
push 1
call fcn.0040725b
mov esi, eax
jmp case.0x45fcfe.0
test byte [esi + 0x15], 1
je 0x45fd26
mov ecx, esi
call fcn.004070e7
cmp byte [esi + 0x17], 3
jne 0x45fd3d
cmp byte [esi + 0x15], 0
jl 0x45fd3d
mov ecx, esi
call fcn.00489920
and byte [esi + 0x15], 0x7f
mov esi, dword [esi + 8]
jmp case.0x45fcfe.0
test edi, edi
je case.0x45fcfe.3
push 0xa
push edi
push eax
push esi
call fcn.004a8fdb
add esp, 0x10
mov esi, eax
jmp case.0x45fcfe.0
test edi, edi
je case.0x45fcfe.3
movsd xmm0, qword [esp + 0x40]
sub esp, 8
movsd qword [esp], xmm0
push str._.17g
push 0x100
push edi
call fcn.004868c0
add esp, 0x14
mov esi, eax
push 0x4e19e8
push edi
call fcn.004afaf4
add esp, 8
cmp eax, esi
jne 0x45fdc5
lea ecx, [esi + 3]
cmp ecx, 0x100
jg 0x45fdc5
movzx eax, word [edi + esi*2 - 2]
add eax, 0xffffffd0
cmp ax, 9
ja 0x45fdc5
xor eax, eax
mov dword [edi + esi*2], 0x30002e
mov word [edi + esi*2 + 4], ax
mov esi, edi
jmp case.0x45fcfe.0
mov dword [esp + 0x44], 0
mov esi, 0x4d3ee8
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [ebx + 0xc], eax
mov ecx, dword [esp + 0x50]
lea eax, [esp + 0x58]
push eax
push str.Line
call fcn.0047dec0
test eax, eax
je 0x45ffbb
mov edx, dword [eax + 8]
test edx, edx
je 0x45ff20
cmp edx, 6
je 0x45ff0c
cmp edx, 0x4c
je 0x45ff0c
mov ecx, dword [eax]
jmp 0x45ff25
mov eax, dword [eax]
lea esi, [eax + 8]
mov eax, dword [eax + 4]
mov edi, dword [esp + 0x90]
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], esi
cmp ecx, 4
ja case.0x45fe3e.3
jmp dword [ecx*4 + 0x4601c4]
cmp byte [esi + 0x17], 0
jne 0x45fe59
mov ecx, dword [esi + 0xc]
push 1
call fcn.0040725b
mov esi, eax
jmp case.0x45fe3e.0
test byte [esi + 0x15], 1
je 0x45fe66
mov ecx, esi
call fcn.004070e7
cmp byte [esi + 0x17], 3
jne 0x45fe7d
cmp byte [esi + 0x15], 0
jl 0x45fe7d
mov ecx, esi
call fcn.00489920
and byte [esi + 0x15], 0x7f
mov esi, dword [esi + 8]
jmp case.0x45fe3e.0
test edi, edi
je case.0x45fe3e.3
push 0xa
push edi
push eax
push esi
call fcn.004a8fdb
add esp, 0x10
mov esi, eax
jmp case.0x45fe3e.0
test edi, edi
je case.0x45fe3e.3
movsd xmm0, qword [esp + 0x40]
sub esp, 8
movsd qword [esp], xmm0
push str._.17g
push 0x100
push edi
call fcn.004868c0
add esp, 0x14
mov esi, eax
push 0x4e19e8
push edi
call fcn.004afaf4
add esp, 8
cmp eax, esi
jne 0x45ff05
lea ecx, [esi + 3]
cmp ecx, 0x100
jg 0x45ff05
movzx eax, word [edi + esi*2 - 2]
add eax, 0xffffffd0
cmp ax, 9
ja 0x45ff05
xor eax, eax
mov dword [edi + esi*2], 0x30002e
mov word [edi + esi*2 + 4], ax
mov esi, edi
jmp case.0x45fe3e.0
mov ecx, 0x4d3ee8
call fcn.00487070
mov ecx, eax
mov dword [ebx + 0x10], ecx
jmp 0x45ffbb
mov eax, dword [eax]
lea ecx, [eax + 8]
mov eax, dword [eax + 4]
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], ecx
cmp edx, 4
ja case.0x45ff35.3
jmp dword [edx*4 + 0x4601d8]
movsd xmm0, qword [esp + 0x40]
call fcn.004bb070
mov ecx, eax
mov dword [ebx + 0x10], ecx
jmp 0x45ffbb
cmp byte [ecx + 0x17], 0
jne 0x45ff5e
mov ecx, dword [ecx + 0xc]
call fcn.004053d0
jmp 0x45ff60
mov eax, ecx
mov cl, byte [eax + 0x15]
test cl, 0x10
je 0x45ff6f
mov ecx, dword [eax]
mov dword [ebx + 0x10], ecx
jmp 0x45ffbb
test cl, 0x20
je 0x45ff84
movsd xmm0, qword [eax]
call fcn.004bb070
mov ecx, eax
mov dword [ebx + 0x10], ecx
jmp 0x45ffbb
push 1
mov ecx, eax
call fcn.0040725b
mov ecx, eax
call fcn.00487070
mov ecx, eax
mov dword [ebx + 0x10], ecx
jmp 0x45ffbb
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov ecx, dword [esp + 0x58]
mov dword [ebx + 0x10], ecx
jmp 0x45ffbb
push 0
push 0
mov ecx, 0x4f0050
call fcn.0040e450
mov esi, dword [0x4ea828]
mov edi, dword [esi + 0x30]
cmp dword [edi + 8], 5
jne 0x45ffd2
mov eax, dword [edi]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [edi + 0x14]
test eax, eax
je 0x45ffe2
push eax
call fcn.004a45b2
add esp, 4
push 0x20
push dword [esi + 0x30]
call fcn.004a0b48
add esp, 8
mov dword [esi + 0x30], 0
mov eax, dword [0x4ea828]
mov ecx, dword [esp + 0x68]
mov dword [eax + 0x34], ecx
cmp dword [esp + 0x88], 5
jne 0x460019
mov eax, dword [esp + 0x80]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [esp + 0x94]
test eax, eax
je 0x46002d
push eax
call fcn.004a45b2
add esp, 4
cmp dword [esp + 0x54], 1
jb 0x46017f
mov esi, dword [esp + 0x60]
lea edi, [esp + 0x6c0]
add esi, 0xfffffff0
mov dword [esp + 0x60], esi
nop word [eax + eax]
mov eax, dword [ebp + 0x1c]
mov ebx, dword [eax]
mov eax, 0x4000
add ebx, esi
test word [ebx], ax
je 0x46014c
mov esi, dword [edi]
add esi, 8
cmp byte [esi + 0x17], 0
jne 0x46007a
mov ecx, dword [esi + 0xc]
call fcn.004053d0
mov esi, eax
mov cl, byte [esi + 0x15]
movzx eax, cl
and eax, 0x70
cmp eax, 0x10
je 0x460117
cmp eax, 0x20
je 0x460103
cmp eax, 0x40
je 0x4600f9
test cl, 2
je 0x4600a8
mov dword [esp + 0x48], 3
jmp 0x46012c
cmp byte [esi + 0x17], 0
jne 0x4600ba
mov ecx, dword [esi + 0xc]
push 1
call fcn.0040725b
jmp 0x4600e0
test cl, 1
je 0x4600c6
mov ecx, esi
call fcn.004070e7
cmp byte [esi + 0x17], 3
jne 0x4600dd
cmp byte [esi + 0x15], 0
jl 0x4600dd
mov ecx, esi
call fcn.00489920
and byte [esi + 0x15], 0x7f
mov eax, dword [esi + 8]
mov ecx, esi
mov dword [esp + 0x48], 0
mov dword [esp + 0x40], eax
call fcn.00407248
mov dword [esp + 0x44], eax
jmp 0x46012c
mov dword [esp + 0x48], 5
jmp 0x460126
movsd xmm0, qword [esi]
mov dword [esp + 0x48], 2
movsd qword [esp + 0x40], xmm0
jmp 0x46012c
mov ecx, dword [esi + 4]
mov dword [esp + 0x48], 1
mov dword [esp + 0x44], ecx
mov eax, dword [esi]
mov dword [esp + 0x40], eax
movzx edx, word [ebx]
lea ecx, [esp + 0x40]
push 0
push dword [ebx + 8]
mov eax, 0xbfff
and dx, ax
call fcn.0045dd70
mov esi, dword [esp + 0x68]
add esp, 8
cmp dword [edi + 8], 5
jne 0x46015a
mov eax, dword [edi]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [edi + 0x14]
test eax, eax
je 0x46016a
push eax
call fcn.004a45b2
add esp, 4
sub esi, 0x10
add edi, 0x20
sub dword [esp + 0x54], 1
mov dword [esp + 0x60], esi
jne 0x460050
mov eax, dword [esp + 0x3c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x24
pop edi
pop esi
mov eax, 0x80020003
pop ebx
mov esp, ebp
pop ebp
ret 0x24