Function at 0x406e30
Capabilities:
Check for time delay via gettickcount
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x45787c
mov eax, dword fs:[0]
push eax
sub esp, 0xc4
push ebx
push ebp
push esi
push edi
mov eax, dword [0x46bd84]
xor eax, esp
push eax
lea eax, [esp + 0xd8]
mov dword fs:[0], eax
or ebp, 0xffffffff
xor edi, edi
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x14], edi
call fcn.0042d67b
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x406e84
push 0x80004005
call fcn.00401f60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov dword [esp + 0xe0], edi
call fcn.0042d67b
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x406eb5
push 0x80004005
call fcn.00401f60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x30], eax
mov byte [esp + 0xe0], 1
call fcn.0042d67b
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x406ee7
push 0x80004005
call fcn.00401f60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebx, [eax + 0x10]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x48], vtable.CArray_struct_INCUMBENT_PROD_OBJ__struct_INCUMBENT_PROD_OBJ__.0
mov dword [esp + 0x4c], edi
mov dword [esp + 0x58], edi
mov dword [esp + 0x54], edi
mov dword [esp + 0x50], edi
lea esi, [esp + 0x70]
call fcn.00402060
mov byte [esp + 0xe0], 4
call fcn.0042d67b
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x406f3a
push 0x80004005
call fcn.00401f60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
mov byte [esp + 0xe0], 5
call fcn.0042d67b
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x406f6c
push 0x80004005
call fcn.00401f60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x44], eax
lea ecx, [esp + 0x44]
push str.SoftwareAskToolbarMacro
push ecx
mov byte [esp + 0xe8], 6
call fcn.0040f030
mov esi, dword [esp + 0x4c]
lea edx, [esp + 0x34]
push edx
push str.version
push esi
lea eax, [esp + 0x34]
push reloc.OLEAUT32.dll_SysReAllocString
push eax
call fcn.00421210
add esp, 0x1c
push eax
lea ecx, [esp + 0x2c]
mov byte [esp + 0xe4], 7
call fcn.0040f0a0
mov byte [esp + 0xe0], 6
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, ebp
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406fed
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str.Setup.ini
lea ecx, [esp + 0x20]
push ecx
push 0x470130
lea ecx, [esp + 0x20]
call fcn.00405060
mov byte [esp + 0xe0], 8
cmp dword [esp + 0x14], edi
jne 0x407143
mov eax, dword [0x4701e0]
cmp eax, edi
je 0x407030
push str.Error:_Local_Manifest_not_found_
push 1
push eax
call fcn.00417320
add esp, 0xc
push 0xd
push str.internalError
mov ecx, 0x4701f0
call fcn.00401d70
mov byte [esp + 0xe0], 6
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
mov ecx, ebp
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x407068
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [esp + 0xe0], 5
lea ecx, [eax + 0xc]
mov edx, ebp
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40708b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xe0], 4
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, ebp
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4070b2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esp + 0x70]
call fcn.00407970
lea edi, [esp + 0x48]
mov byte [esp + 0xe0], 2
call fcn.0040e380
lea eax, [ebx - 0x10]
mov byte [esp + 0xe0], 1
lea ecx, [eax + 0xc]
mov edx, ebp
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4070ef
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xe0], 0
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, ebp
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407116
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0xe0], ebp
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, ebp
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40713c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, ebp
jmp 0x40794e
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0xa0]
call fcn.0040f0a0
mov ebx, dword [esp + 0x1c]
push 0x45d5ac
push str.Product
lea edx, [esp + 0x1c]
push ebx
push edx
call fcn.00420b30
add esp, 0x10
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0xe4], 9
call fcn.0040f0a0
mov byte [esp + 0xe0], 8
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], ebp
dec ebp
test ebp, ebp
jg 0x4071a7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebp, dword [esp + 0x18]
mov eax, dword [ebp - 0xc]
test eax, eax
jne 0x4071e1
mov eax, dword [0x4701e0]
test eax, eax
je 0x4071cb
push str.Error:_Manifest_file_doesn
push 1
push eax
call fcn.00417320
add esp, 0xc
push 0xd
push str.internalError
mov ecx, 0x4701f0
call fcn.00401d70
jmp 0x4074bd
lea ecx, [esp + 0x18]
call fcn.00421480
test eax, eax
mov eax, dword [0x4701e0]
jne 0x407216
mov ebp, dword [esp + 0x18]
test eax, eax
je 0x40720c
push ebp
push str.Error:_cannot_find__s
push 1
push eax
call fcn.00417320
add esp, 0x10
push str.internalError
jmp 0x4074b3
test eax, eax
je 0x40722a
push str.Validate_MSI_file_Digital_Signature.
push 1
push eax
call fcn.00417320
add esp, 0xc
mov ebp, dword [esp + 0x18]
push ebp
call fcn.00419f60
add esp, 4
test eax, eax
jne 0x407245
push str.digitalSignatureValidationFailure
jmp 0x4074b3
lea ecx, [esp + 0x24]
push ecx
push str._trgb
push 0x470130
call fcn.00403330
mov edx, dword [esp + 0x24]
mov eax, dword [edx - 0xc]
test eax, eax
je 0x4073e0
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0xa8]
call fcn.0040f0a0
push str.CmdLine
push str.Product
lea ecx, [esp + 0x1c]
push ebx
push ecx
call fcn.00420b30
add esp, 0x10
push eax
lea ecx, [esp + 0x34]
mov byte [esp + 0xe4], 0xa
call fcn.0040f0a0
lea ecx, [esp + 0x14]
mov byte [esp + 0xe0], 8
call fcn.00402040
push str.trgb
lea ecx, [esp + 0x18]
call fcn.00401ea0
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x38]
mov byte [esp + 0xe8], 0xb
call fcn.00419240
add esp, 8
push eax
lea ecx, [esp + 0x34]
mov byte [esp + 0xe4], 0xc
call fcn.0040f0a0
lea ecx, [esp + 0x20]
call fcn.00402040
lea ecx, [esp + 0x14]
mov byte [esp + 0xe0], 8
call fcn.00402040
mov ecx, dword [esp + 0x30]
push ebx
push ecx
push str.CmdLine
push str.Product
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
lea ecx, [esp + 0x5c]
call fcn.004301af
push ecx
mov byte [esp + 0xe4], 0xd
lea edx, [esp + 0x28]
mov ecx, esp
mov dword [esp + 0x30], esp
push edx
call fcn.00402000
lea ecx, [esp + 0x60]
call fcn.004096e0
mov ebp, dword [esp + 0x64]
xor esi, esi
add ebp, 0xffffffff
js 0x4073cb
test esi, esi
jl 0x4074f0
cmp esi, dword [esp + 0x64]
jge 0x4074f0
mov eax, dword [esp + 0x60]
mov eax, dword [eax + esi*4]
push ecx
sub eax, 0x10
mov dword [esp + 0x30], esp
mov edi, esp
push eax
call fcn.00401f90
add eax, 0x10
add esp, 4
mov dword [edi], eax
call fcn.00409550
push eax
lea ecx, [esp + 0x18]
push ecx
push 0x470130
call fcn.0040c2e0
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4073c2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
inc esi
cmp esi, ebp
jle 0x40735c
mov ebx, dword [esp + 0x1c]
lea ecx, [esp + 0x5c]
mov byte [esp + 0xe0], 8
call fcn.00430401
mov ebp, dword [esp + 0x18]
lea ecx, [esp + 0x48]
push ecx
call fcn.004183b0
add esp, 4
test eax, eax
je 0x40747a
mov edx, dword [0x4701d8]
push edx
lea eax, [esp + 0x4c]
push eax
call fcn.00418b00
mov esi, eax
add esp, 8
cmp esi, 0xffffffff
je 0x40747a
lea ecx, [esp + 0x48]
call fcn.0040e360
add eax, 8
push eax
lea ecx, [esp + 0x94]
call fcn.0040f0a0
mov eax, esi
lea ecx, [esp + 0x48]
call fcn.0040e360
add eax, 0x14
push eax
lea ecx, [esp + 0x90]
call fcn.0040f0a0
mov eax, esi
lea ecx, [esp + 0x48]
call fcn.0040e360
add eax, 0xc
push eax
lea ecx, [esp + 0x98]
call fcn.0040f0a0
mov eax, esi
lea ecx, [esp + 0x48]
call fcn.0040e360
add eax, 4
push eax
lea ecx, [esp + 0x9c]
call fcn.0040f0a0
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
push ebp
mov ecx, ebx
mov edi, eax
call fcn.0040cc20
mov ebx, eax
mov dword [esp + 0x3c], ebx
call esi
sub eax, edi
mov dword [esp + 0x78], eax
test ebx, ebx
je 0x4074bd
cmp ebx, 0x669
je 0x4074bd
cmp ebx, 0xbc2
je 0x4074bd
push str.msiInstallationFailure
mov ecx, 0x4701f0
call fcn.00401e60
push 0
push str._noreporting
push 0x470130
call fcn.00403330
test eax, eax
jne 0x40783d
call fcn.0042d67b
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4074f5
push 0x80004005
call fcn.00401f60
call fcn.0042d54b
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov byte [esp + 0xe0], 0xe
call fcn.0042d67b
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x407527
push 0x80004005
call fcn.00401f60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov byte [esp + 0xe0], 0xf
call fcn.0042d67b
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x407559
push 0x80004005
call fcn.00401f60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x40], eax
lea ecx, [esp + 0x14]
push ecx
push str._cbid
push 0x470130
mov byte [esp + 0xec], 0x10
call fcn.00403330
lea edx, [esp + 0x20]
push edx
push str._dtid
push 0x470130
call fcn.00403330
lea eax, [esp + 0x40]
push eax
push str._guid
push 0x470130
call fcn.00403330
mov ecx, dword [esp + 0x28]
cmp dword [ecx - 0xc], 0
jne 0x4075cb
lea edx, [esp + 0x28]
push edx
push str._pversion
push 0x470130
call fcn.00403330
call fcn.0042d67b
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4075e5
push 0x80004005
call fcn.00401f60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x34], eax
mov byte [esp + 0xe0], 0x11
cmp dword [ebp - 0xc], 0
je 0x407672
lea ecx, [esp + 0x38]
push ecx
push 0
push ebp
mov dword [esp + 0x44], 0
call sub.msi.dll_MsiOpenProductW
test eax, eax
jne 0x407672
mov edx, dword [esp + 0x38]
push edx
lea eax, [esp + 0x30]
push eax
call fcn.0041f680
add esp, 8
push eax
lea ecx, [esp + 0x38]
mov byte [esp + 0xe4], 0x12
call fcn.0040f0a0
mov byte [esp + 0xe0], 0x11
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407668
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x38]
push ecx
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov edx, dword [esp + 0x34]
cmp dword [edx - 0xc], 0
jne 0x407712
mov eax, dword [esp + 0x1c]
push str.ProductCode
push str.Product
push eax
lea ecx, [esp + 0x44]
push ecx
call fcn.00420b30
lea edx, [esp + 0x3c]
mov bl, 0x13
push edx
mov ecx, eax
mov byte [esp + 0xf4], bl
call fcn.004207c0
add esp, 0x14
push eax
lea ecx, [esp + 0x38]
mov byte [esp + 0xe4], 0x14
call fcn.0040f0a0
mov byte [esp + 0xe0], bl
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4076ea
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xe0], 0x11
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407712
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x3c]
push 2
lea edx, [esp + 0xb0]
push edx
mov dword [esp + 0xb0], ecx
call fcn.0041a1c0
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0xb0]
push ecx
mov byte [esp + 0xe8], 0x15
call fcn.0041a350
lea edx, [esp + 0xac]
push edx
call fcn.0041a3e0
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x7c]
push eax
lea ecx, [esp + 0xbc]
push ecx
lea ecx, [esp + 0x48]
lea edx, [esp + 0x3c]
call fcn.0041d6f0
lea edx, [esp + 0xac]
push edx
call fcn.0041a840
lea ecx, [esp + 0xac]
mov byte [esp + 0xe0], 0x11
call fcn.0041a290
mov byte [esp + 0xe0], 0x10
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4077c5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xe0], 0xf
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4077ed
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xe0], 0xe
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407815
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xe0], 8
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40783d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xe0], 6
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407865
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xe0], 5
mov eax, dword [esp + 0x44]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40788d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xe0], 4
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4078b5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esp + 0x70]
call fcn.00407970
lea edi, [esp + 0x48]
mov byte [esp + 0xe0], 2
call fcn.0040e380
mov byte [esp + 0xe0], 1
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4078f7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xe0], 0
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40791f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0xe0], 0xffffffff
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40794a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0xd8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret