Function at 0x403317
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x878
push edi
mov dword [ebp - 0x878], ecx
mov byte [ebp - 0x464], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x463]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [ebp - 0x11c], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x11b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [ebp - 0x220], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x21f]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov dword [ebp - 8], 0
mov dword [ebp - 0x18], 1
mov dword [ebp - 0x10], 0
push str.msxml3.dll
mov eax, dword [ebp - 0x878]
mov ecx, dword [eax + 0x2a0]
push ecx
push 0x410538
lea edx, [ebp - 0x11c]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push str.msxml4.dll
mov eax, dword [ebp - 0x878]
mov ecx, dword [eax + 0x2a0]
push ecx
push 0x41054c
lea edx, [ebp - 0x220]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea eax, [ebp - 0x11c]
push eax
push 0x410554
call fcn.00407a82
add esp, 8
lea ecx, [ebp - 0x220]
push ecx
push str._ZSetupMain.DistributeXML___s_n
call fcn.00407a82
add esp, 8
lea edx, [ebp - 0x360]
push edx
lea eax, [ebp - 0x11c]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov dword [ebp - 4], eax
lea ecx, [ebp - 0x360]
push ecx
lea edx, [ebp - 0x220]
push edx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x10]
push eax
push 0x20019
push 0
push str.SOFTWAREMicrosoftInternet_ExplorerVersion_Vector
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40349c
lea ecx, [ebp - 8]
push ecx
lea edx, [ebp - 0x464]
push edx
lea eax, [ebp - 0x18]
push eax
push 0
push 0x4105c8
mov ecx, dword [ebp - 0x10]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
cmp dword [ebp - 8], 0
je 0x403490
lea edx, [ebp - 8]
push edx
lea eax, [ebp - 0x464]
push eax
lea ecx, [ebp - 0x18]
push ecx
push 0
push 0x4105cc
mov edx, dword [ebp - 0x10]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov eax, dword [ebp - 0x10]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x4034a3
xor eax, eax
jmp 0x4036ba
lea ecx, [ebp - 0x464]
push ecx
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 4
jg 0x403591
mov byte [ebp - 0x568], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x567]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [ebp - 0x66c], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x66b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push 0x104
lea edx, [ebp - 0x568]
push edx
push 2
mov eax, dword [ebp - 0x878]
mov ecx, dword [eax + 0x3a8]
push ecx
call dword [sym.imp.USER32.dll_LoadStringA]
push 0x104
lea edx, [ebp - 0x66c]
push edx
push 0x3e
mov eax, dword [ebp - 0x878]
mov ecx, dword [eax + 0x3a8]
push ecx
call dword [sym.imp.USER32.dll_LoadStringA]
mov edx, dword [ebp - 0x878]
cmp dword [edx + 0x13c], 0
je 0x403569
push 0x180000
lea eax, [ebp - 0x66c]
push eax
lea ecx, [ebp - 0x568]
push ecx
mov ecx, dword [ebp - 0x878]
add ecx, 0x390
call fcn.0040824c
jmp 0x40358a
push 0
lea edx, [ebp - 0x66c]
push edx
lea eax, [ebp - 0x568]
push eax
mov ecx, dword [ebp - 0x878]
add ecx, 0x390
call fcn.0040824c
xor eax, eax
jmp 0x4036ba
cmp dword [ebp - 0x14], 6
jl 0x4035a1
mov eax, 1
jmp 0x4036ba
cmp dword [ebp - 4], 0xffffffff
jne 0x4036a1
cmp dword [ebp - 0xc], 0xffffffff
jne 0x4036a1
push str._ZSetupMain.DistributeXML__hXML3__hXML4_handles__NULL_n
call fcn.00407a82
add esp, 4
mov byte [ebp - 0x770], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x76f]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push str.msxml3.cab
mov ecx, dword [ebp - 0x878]
mov edx, dword [ecx + 0x2b8]
push edx
push 0x410618
lea eax, [ebp - 0x770]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push 0
push 0x403209
push 0
lea ecx, [ebp - 0x770]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupIterateCabinetA]
test eax, eax
jne 0x403623
xor eax, eax
jmp 0x4036ba
mov byte [ebp - 0x874], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x873]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push str.regsvr32.exe
mov edx, dword [ebp - 0x878]
mov eax, dword [edx + 0x2a0]
push eax
push 0x410630
lea ecx, [ebp - 0x874]
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea edx, [ebp - 0x874]
push edx
push str._ZSetupMain.DistributeXML__s_n
call fcn.00407a82
add esp, 8
push 1
push str._s_msxml3.dll
lea eax, [ebp - 0x874]
push eax
mov ecx, dword [ebp - 0x878]
call fcn.004036bf
test eax, eax
jne 0x4036a1
push str._ZSetupMain.DistributeXML__Unable_to_register_msxml3.dll_n
call fcn.00407a82
add esp, 4
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edx, dword [ebp - 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, 1
pop edi
mov esp, ebp
pop ebp
ret