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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
and dword [ebp - 4], 0
and dword [ebp - 8], 0
push ebx
push esi
mov esi, dword [ebp + 0xc]
push dword [esi + 8]
call fcn.00411879
push eax
push dword [ebp + 0x18]
push dword [esi + 0x50]
push 0x20000172
push 3
call fcn.00401566
add esp, 0x14
test byte [ebp + 0x18], 1
je 0x406c9b
push dword [ebp + 8]
mov eax, dword [ebp + 0x14]
add eax, 4
push eax
push dword [esi + 0x10]
push dword [esi + 0x48]
push dword [esi]
call fcn.004197e3
mov ebx, eax
test ebx, ebx
jns 0x406c9b
push dword [ebp + 8]
push 0x43e2c0
push ebx
call fcn.0042fa86
add esp, 0xc
jmp 0x407171
lea eax, [ebp - 4]
push eax
push 0x20006
push dword [esi + 0x50]
push dword [esi + 0x4c]
call fcn.004336cb
mov ebx, eax
test ebx, ebx
jns 0x406cc7
push 0x43e29c
push ebx
call fcn.0042fa86
pop ecx
pop ecx
jmp 0x407171
test byte [ebp + 0x18], 2
push edi
je 0x4070e6
push dword [esi + 0x54]
mov edi, str.BundleCachePath
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
push dword [esi + 0x24]
mov edi, str.BundleUpgradeCode
push dword [esi + 0x20]
push edi
push dword [ebp - 4]
call fcn.00433bea
mov ebx, eax
test ebx, ebx
js 0x407126
push dword [esi + 0x2c]
mov edi, str.BundleAddonCode
push dword [esi + 0x28]
push edi
push dword [ebp - 4]
call fcn.00433bea
mov ebx, eax
test ebx, ebx
js 0x407126
push dword [esi + 0x1c]
mov edi, str.BundleDetectCode
push dword [esi + 0x18]
push edi
push dword [ebp - 4]
call fcn.00433bea
mov ebx, eax
test ebx, ebx
js 0x407126
push dword [esi + 0x34]
mov edi, str.BundlePatchCode
push dword [esi + 0x30]
push edi
push dword [ebp - 4]
call fcn.00433bea
mov ebx, eax
test ebx, ebx
js 0x407126
mov ecx, dword [esi + 0x38]
mov eax, dword [esi + 0x3c]
movzx edx, cx
push edx
mov edx, eax
shrd ecx, edx, 0x10
movzx ecx, cx
push ecx
movzx ecx, ax
push ecx
mov dword [ebp - 0xc], eax
shr eax, 0x10
push eax
push 0x43e27c
mov edi, str.BundleVersion
push edi
push dword [ebp - 4]
shr edx, 0x10
call fcn.00433ba8
mov ebx, eax
add esp, 0x1c
test ebx, ebx
js 0x407126
mov eax, dword [esi + 0x44]
test eax, eax
je 0x406dc7
push eax
mov edi, str.BundleProviderKey
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
mov eax, dword [esi + 0x14]
test eax, eax
je 0x406de7
push eax
mov edi, str.BundleTag
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
push str.3.7.2829.0
push 0x43e274
mov edi, str.EngineVersion
push edi
push dword [ebp - 4]
call fcn.00433ba8
mov ebx, eax
add esp, 0x10
test ebx, ebx
js 0x407126
push dword [esi + 0x54]
mov edi, str.DisplayIcon
push 0x43e268
push edi
push dword [ebp - 4]
call fcn.00433ba8
mov ebx, eax
add esp, 0x10
test ebx, ebx
js 0x407126
lea eax, [ebp - 8]
push eax
push dword [ebp + 0x10]
mov ebx, esi
call fcn.00405b5a
test eax, eax
mov eax, dword [ebp - 8]
jns 0x406e47
mov eax, dword [esi + 0x60]
push eax
mov edi, str.DisplayName
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
mov eax, dword [esi + 0x64]
test eax, eax
je 0x406e80
push eax
mov edi, str.DisplayVersion
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
mov eax, dword [esi + 0x68]
test eax, eax
je 0x406ea0
push eax
mov edi, str.Publisher
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
mov eax, dword [esi + 0x6c]
test eax, eax
je 0x406ec0
push eax
mov edi, str.HelpLink
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
mov eax, dword [esi + 0x70]
test eax, eax
je 0x406ee0
push eax
mov edi, str.HelpTelephone
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
mov eax, dword [esi + 0x74]
test eax, eax
je 0x406f00
push eax
mov edi, str.URLInfoAbout
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
mov eax, dword [esi + 0x78]
test eax, eax
je 0x406f20
push eax
mov edi, str.URLUpdateInfo
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
mov eax, dword [esi + 0x7c]
test eax, eax
je 0x406f5b
push eax
mov edi, str.ParentDisplayName
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
push dword [esi + 0x7c]
mov edi, str.ParentKeyName
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
mov eax, dword [esi + 0x80]
test eax, eax
je 0x406f7e
push eax
mov edi, str.Comments
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
mov eax, dword [esi + 0x84]
test eax, eax
je 0x406fa1
push eax
mov edi, str.Contact
push edi
push dword [ebp - 4]
call fcn.00433b02
mov ebx, eax
test ebx, ebx
js 0x407126
mov eax, dword [esi + 0x88]
cmp eax, 1
jne 0x407091
mov edi, str.NoModify
push 1
push edi
push dword [ebp - 4]
call fcn.0043362a
mov ebx, eax
test ebx, ebx
js 0x407126
cmp dword [esi + 0x8c], 0
je 0x406ff1
push dword [esi + 0x90]
mov edi, str.NoRemove
push edi
push dword [ebp - 4]
call fcn.0043362a
mov ebx, eax
test ebx, ebx
js 0x407126
cmp dword [esi + 4], 0
jne 0x407011
push 1
mov edi, str.SystemComponent
push edi
push dword [ebp - 4]
call fcn.0043362a
mov ebx, eax
test ebx, ebx
js 0x407126
push dword [esi + 0x54]
mov edi, str.QuietUninstallString
push 0x43e238
push edi
push dword [ebp - 4]
call fcn.00433ba8
mov ebx, eax
add esp, 0x10
test ebx, ebx
js 0x407126
cmp dword [esi + 0x88], 2
mov eax, 0x43e228
je 0x407047
mov eax, 0x43e210
push eax
push dword [esi + 0x54]
mov edi, str.UninstallString
push 0x43e1fc
push edi
push dword [ebp - 4]
call fcn.00433ba8
mov ebx, eax
add esp, 0x14
test ebx, ebx
js 0x407126
cmp dword [esi + 0x98], 0
je 0x4070c3
push dword [esi]
lea ebx, [esi + 0x94]
call fcn.00405ebf
mov ebx, eax
test ebx, ebx
jns 0x4070c3
push 0x43e1dc
jmp 0x407168
cmp eax, 2
je 0x406fca
push dword [esi + 0x54]
mov edi, str.ModifyPath
push 0x43e1c0
push edi
push dword [ebp - 4]
call fcn.00433ba8
mov ebx, eax
add esp, 0x10
test ebx, ebx
js 0x407126
mov edi, str.NoElevateOnModify
jmp 0x406fb5
cmp dword [esi + 0x9c], 0
je 0x4070e6
push dword [ebp + 0x10]
mov eax, esi
call fcn.00406aa5
mov ebx, eax
test ebx, ebx
jns 0x4070e6
push 0x43e198
jmp 0x407168
test byte [ebp + 0x18], 4
je 0x407137
mov eax, dword [ebp + 0x24]
mov ecx, dword [ebp + 0x20]
shrd ecx, eax, 0xa
shr eax, 0xa
test eax, eax
jb 0x407137
ja 0x40710e
test ecx, ecx
je 0x407137
test eax, eax
jb 0x407111
ja 0x40710e
cmp ecx, 0xffffffff
jbe 0x407111
or ecx, 0xffffffff
push ecx
mov edi, str.EstimatedSize
push edi
push dword [ebp - 4]
call fcn.0043362a
mov ebx, eax
test ebx, ebx
jns 0x407137
push edi
push 0x43d830
push ebx
call fcn.0042fa86
add esp, 0xc
jmp 0x407170
cmp dword [ebp + 0x1c], 1
jne 0x407150
push esi
call fcn.0041f78a
mov ebx, eax
test ebx, ebx
jns 0x407150
push 0x43e168
jmp 0x407168
push 0
push dword [ebp - 4]
xor eax, eax
inc eax
call fcn.00406893
mov ebx, eax
test ebx, ebx
jns 0x407170
push 0x43e148
push ebx
call fcn.0042fa86
pop ecx
pop ecx
pop edi
cmp dword [ebp - 8], 0
je 0x40717f
push dword [ebp - 8]
call fcn.004301e8
cmp dword [ebp - 4], 0
je 0x40718e
push dword [ebp - 4]
call dword [0x43a010]
pop esi
mov eax, ebx
pop ebx
leave
ret 0x20