Function at 0x433800
Capabilities:
Create process on windows
Get installed programs
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4fe614
mov eax, dword fs:[0]
push eax
sub esp, 0x4d0
mov eax, dword [0x5732cc]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
xor ebx, ebx
mov dword [ebp - 4], ebx
push 0x468ad0
call fcn.004dbbc8
add esp, 4
mov eax, dword [0x570024]
mov dword [ebp - 0x420], eax
mov byte [ebp - 4], 1
mov dword [ebp - 0x418], 1
mov edi, 0x400
mov dword [ebp - 0x424], edi
lea ecx, [ebp - 0x424]
push ecx
lea edx, [ebp - 0x414]
push edx
lea eax, [ebp - 0x418]
push eax
push str.ProductId
push str.SoftwareUSAirwaysToolbar
push reloc.WS2_32.dll_accept
mov esi, dword [sym.imp.SHLWAPI.dll_SHGetValueA]
call esi
test eax, eax
jne 0x4338a4
cmp dword [ebp - 0x418], 1
jne 0x433925
push 0x5167d8
lea ecx, [ebp - 0x41c]
call fcn.0041ad50
mov byte [ebp - 4], 2
mov dword [ebp - 0x418], 1
mov dword [ebp - 0x424], edi
lea ecx, [ebp - 0x424]
push ecx
lea edx, [ebp - 0x414]
push edx
lea eax, [ebp - 0x418]
push eax
push 0x5167c4
mov ecx, dword [ebp - 0x41c]
push ecx
push reloc.OLEAUT32.dll_SysReAllocString
call esi
test eax, eax
jne 0x433916
mov eax, dword [ebp - 0x418]
cmp eax, 1
je 0x433904
cmp eax, 2
jne 0x433916
lea edx, [ebp - 0x414]
push edx
lea ecx, [ebp - 0x420]
call fcn.004199b0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x41c]
call fcn.00416630
mov eax, dword [ebp - 0x420]
cmp dword [eax - 8], ebx
jne 0x4339ec
lea ecx, [ebp - 0x424]
push ecx
lea edx, [ebp - 0x414]
push edx
lea eax, [ebp - 0x418]
push eax
push str.ProductId
push str.SoftwareUSAirwaysToolbar
push reloc.WS2_32.dll_accept
call esi
test eax, eax
jne 0x43396b
cmp dword [ebp - 0x418], 1
jne 0x4339ec
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstallUSAirways
lea ecx, [ebp - 0x41c]
call fcn.0041ad50
mov byte [ebp - 4], 3
mov dword [ebp - 0x418], 1
mov dword [ebp - 0x424], edi
lea ecx, [ebp - 0x424]
push ecx
lea edx, [ebp - 0x414]
push edx
lea eax, [ebp - 0x418]
push eax
push 0x5167c4
mov ecx, dword [ebp - 0x41c]
push ecx
push reloc.OLEAUT32.dll_SysReAllocString
call esi
test eax, eax
jne 0x4339dd
mov eax, dword [ebp - 0x418]
cmp eax, 1
je 0x4339cb
cmp eax, 2
jne 0x4339dd
lea edx, [ebp - 0x414]
push edx
lea ecx, [ebp - 0x420]
call fcn.004199b0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x41c]
call fcn.00416630
mov eax, dword [ebp - 0x420]
cmp dword [eax - 8], ebx
jne 0x433d1d
mov dword [ebp - 0x434], ebx
lea ecx, [ebp - 0x434]
push ecx
push 0x20019
push ebx
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x433d1d
mov dword [ebp - 0x430], ebx
mov dword [ebp - 0x43c], ebx
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
jmp 0x433a40
mov dword [ebp - 0x424], edi
mov edx, dword [ebp - 0x420]
cmp dword [edx - 8], ebx
jne 0x433d10
lea eax, [ebp - 0x44c]
push eax
push ebx
push ebx
push ebx
lea ecx, [ebp - 0x424]
push ecx
lea edx, [ebp - 0x414]
push edx
mov eax, dword [ebp - 0x43c]
push eax
mov ecx, dword [ebp - 0x434]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
jne 0x433d10
lea edx, [ebp - 0x430]
push edx
push 0x20019
push ebx
lea eax, [ebp - 0x414]
push eax
mov ecx, dword [ebp - 0x434]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x433d05
mov dword [ebp - 0x418], 1
mov dword [ebp - 0x424], edi
lea edx, [ebp - 0x424]
push edx
lea eax, [ebp - 0x414]
push eax
lea ecx, [ebp - 0x418]
push ecx
push ebx
push str.Publisher
mov edx, dword [ebp - 0x430]
push edx
call esi
test eax, eax
jne 0x433cf8
cmp dword [ebp - 0x418], 1
jne 0x433cf8
cmp dword [ebp - 0x424], ebx
je 0x433cf8
cmp byte [ebp - 0x414], al
je 0x433cf8
push 0x24
lea eax, [ebp - 0x414]
push eax
push 0x514dec
call fcn.004dd86d
add esp, 0xc
test eax, eax
jne 0x433cf8
mov dword [ebp - 0x418], 1
mov dword [ebp - 0x424], edi
mov byte [ebp - 0x414], al
lea ecx, [ebp - 0x424]
push ecx
lea edx, [ebp - 0x414]
push edx
lea eax, [ebp - 0x418]
push eax
push ebx
push 0x5167c4
mov ecx, dword [ebp - 0x430]
push ecx
call esi
test eax, eax
jne 0x433cf8
mov eax, dword [ebp - 0x418]
cmp eax, 1
je 0x433b87
cmp eax, 2
jne 0x433cf8
lea esi, [ebp - 0x414]
mov dword [ebp - 0x458], esi
mov al, byte [esi]
test al, al
je 0x433baa
movsx edx, al
push edx
call fcn.004dee02
add esp, 4
mov byte [esi], al
inc esi
jmp 0x433b8d
push str.MSIEXEC.EXE
lea ecx, [ebp - 0x41c]
call fcn.0041ad50
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x41c]
call fcn.004174b0
mov edi, dword [ebp - 0x41c]
push edi
call dword [sym.imp.USER32.dll_CharUpperA]
push str.MSIEXEC
lea ecx, [ebp - 0x438]
call fcn.0041ad50
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x438]
call fcn.004174b0
mov esi, dword [ebp - 0x438]
push esi
call dword [sym.imp.USER32.dll_CharUpperA]
push esi
lea eax, [ebp - 0x414]
push eax
call fcn.004dd02e
add esp, 8
cmp eax, ebx
jne 0x433c2e
push edi
lea ecx, [ebp - 0x414]
push ecx
call fcn.004dd02e
add esp, 8
cmp eax, ebx
je 0x433ccf
push 0x51672c
push eax
call fcn.004dd02e
add esp, 8
cmp eax, ebx
je 0x433ccf
push 0x516728
add eax, 2
push eax
call fcn.004dd02e
add esp, 8
mov esi, eax
cmp esi, ebx
je 0x433ccf
push 0x516724
push esi
call fcn.004dd02e
add esp, 8
cmp eax, ebx
je 0x433ccf
cmp eax, esi
jbe 0x433ccf
sub eax, esi
inc eax
push eax
push esi
lea ecx, [ebp - 0x428]
call fcn.00431290
mov byte [ebp - 4], 6
mov dword [ebp - 0x42c], ebx
lea edx, [ebp - 0x42c]
push edx
mov eax, dword [ebp - 0x428]
push eax
call sub.msi.dll_MsiPreviewDialogA
test eax, eax
jne 0x433cc0
mov ecx, dword [ebp - 0x42c]
push ecx
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
lea edx, [ebp - 0x414]
push edx
lea ecx, [ebp - 0x420]
call fcn.004199b0
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x428]
call fcn.00416630
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x438]
call fcn.00416630
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x41c]
call fcn.00416630
mov edi, 0x400
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov eax, dword [ebp - 0x430]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
inc dword [ebp - 0x43c]
jmp 0x433a40
mov ecx, dword [ebp - 0x434]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x420]
call fcn.00418070
mov edi, dword [ebp - 0x420]
push edi
lea edx, [ebp - 0x440]
push edx
call fcn.00432470
mov byte [ebp - 4], 7
push str.1.5.0.0
mov eax, dword [ebp - 0x440]
push eax
call fcn.004dcc20
add esp, 0x10
test eax, eax
jne 0x433da8
mov ecx, dword [0x570024]
mov dword [ebp - 0x41c], ecx
mov bl, 8
mov byte [ebp - 4], bl
lea edx, [ebp - 0x41c]
push edx
call fcn.0046cf50
mov ecx, esp
mov dword [ebp - 0x428], esp
lea eax, [ebp - 0x41c]
push eax
call fcn.0041ea10
mov byte [ebp - 4], 9
mov byte [ebp - 4], bl
call fcn.00430650
add esp, 4
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x41c]
call fcn.00416630
xor ebx, ebx
cmp dword [edi - 8], ebx
je 0x433f3c
push str.MSIEXEC
lea ecx, [ebp - 0x41c]
call fcn.0041ad50
mov byte [ebp - 4], 0xa
push str.MSIEXEC.EXE
lea ecx, [ebp - 0x42c]
call fcn.0041ad50
mov bl, 0xb
mov byte [ebp - 4], bl
mov esi, dword [ebp - 0x42c]
mov eax, dword [esi - 8]
push eax
push esi
push edi
call fcn.004dd86d
add esp, 0xc
test eax, eax
je 0x433e0a
mov esi, dword [ebp - 0x41c]
mov eax, dword [esi - 8]
push eax
push esi
push edi
call fcn.004dd86d
add esp, 0xc
test eax, eax
jne 0x433e24
push str.__qn
mov esi, dword [esi - 8]
push esi
lea ecx, [ebp - 0x420]
call fcn.00431860
mov edi, dword [ebp - 0x420]
push 0x44
xor esi, esi
push esi
lea ecx, [ebp - 0x4dc]
push ecx
call fcn.004dba80
mov dword [ebp - 0x4dc], 0x44
xor eax, eax
mov dword [ebp - 0x454], eax
mov dword [ebp - 0x450], eax
mov dword [ebp - 0x44c], eax
mov dword [ebp - 0x448], eax
push esi
call fcn.0046a840
add esp, 0x10
push eax
lea ecx, [ebp - 0x428]
call fcn.0041ad50
mov byte [ebp - 4], 0xc
lea edx, [ebp - 0x428]
push edx
push 0x514264
call fcn.0042f890
test al, al
je 0x433ec1
lea eax, [ebp - 0x454]
push eax
lea ecx, [ebp - 0x4dc]
push ecx
push esi
push esi
push esi
push esi
push esi
push esi
push edi
push esi
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
je 0x433f10
mov edx, dword [ebp - 0x450]
push edx
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov eax, dword [ebp - 0x454]
push eax
call esi
jmp 0x433f10
mov dword [ebp - 0x498], 0x3c
mov dword [ebp - 0x494], esi
mov dword [ebp - 0x490], esi
mov dword [ebp - 0x48c], str.runas
mov dword [ebp - 0x488], edi
mov dword [ebp - 0x484], esi
mov dword [ebp - 0x480], esi
mov dword [ebp - 0x47c], 3
mov dword [ebp - 0x478], esi
lea ecx, [ebp - 0x498]
push ecx
call dword [sym.imp.SHELL32.dll_ShellExecuteExA]
mov byte [ebp - 4], bl
lea ecx, [ebp - 0x428]
call fcn.00416630
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x42c]
call fcn.00416630
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x41c]
call fcn.00416630
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x440]
call fcn.00416630
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x420]
call fcn.00416630
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004db901
mov esp, ebp
pop ebp
ret