Function at 0x404ec5
Capabilities:
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1954
call fcn.0040c5e0
push edi
mov dword [ebp - 0x1954], ecx
lea eax, [ebp - 0xb44]
push eax
mov ecx, dword [ebp - 0x1954]
add ecx, 0x398
call fcn.00406520
lea ecx, [ebp - 0x73c]
push ecx
mov ecx, dword [ebp - 0x1954]
add ecx, 0x398
call fcn.00406550
mov dword [ebp - 0x120], 0
xor edx, edx
mov dword [ebp - 0x11c], edx
mov dword [ebp - 0x118], edx
mov dword [ebp - 0x114], edx
mov dword [ebp - 0x110], edx
mov dword [ebp - 0x10c], edx
mov dword [ebp - 0x738], 0
mov dword [ebp - 0x734], 0
mov ecx, dword [ebp - 0x1954]
call fcn.00402cb2
mov byte [ebp - 0x108], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x107]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [ebp - 0x32c], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x32b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [ebp - 0x194c], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x194b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [ebp - 0x1448], 0
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0x1447]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [ebp - 0x730], 0
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0x72f]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [ebp - 0x1848], 0
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0x1847]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [ebp - 0xf44], 0
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0xf43]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [ebp - 0xb3c], 0
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0xb3b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [ebp - 0x1048], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x1047]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [ebp - 0x228], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x227]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov dword [ebp - 0xb40], 0
mov dword [ebp - 0x124], 0
mov dword [ebp - 4], 0
mov dword [ebp - 0x330], 0
lea eax, [ebp - 0x73c]
push eax
lea ecx, [ebp - 0xb44]
call fcn.00406650
and eax, 0xff
test eax, eax
je 0x405610
lea ecx, [ebp - 0xb44]
call fcn.004065e0
mov ecx, dword [eax]
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 0x738], eax
cmp dword [ebp - 0x738], 0
jne 0x405188
push 0x104
lea edx, [ebp - 0x108]
push edx
push 0x44
mov eax, dword [ebp - 0x1954]
mov ecx, dword [eax + 0x3a8]
push ecx
call dword [sym.imp.USER32.dll_LoadStringA]
push 0x104
lea edx, [ebp - 0x194c]
push edx
push 0x43
mov eax, dword [ebp - 0x1954]
mov ecx, dword [eax + 0x3a8]
push ecx
call dword [sym.imp.USER32.dll_LoadStringA]
lea ecx, [ebp - 0xb44]
call fcn.004065e0
mov edx, dword [eax]
push edx
push 0x410990
lea eax, [ebp - 0x108]
push eax
lea ecx, [ebp - 0x32c]
push ecx
call fcn.00407c9a
add esp, 0x10
mov edx, dword [ebp - 0x1954]
cmp dword [edx + 0x13c], 0
je 0x405157
push 0x180000
lea eax, [ebp - 0x194c]
push eax
lea ecx, [ebp - 0x32c]
push ecx
mov ecx, dword [ebp - 0x1954]
add ecx, 0x390
call fcn.0040824c
jmp 0x405178
push 0
lea edx, [ebp - 0x194c]
push edx
lea eax, [ebp - 0x32c]
push eax
mov ecx, dword [ebp - 0x1954]
add ecx, 0x390
call fcn.0040824c
lea ecx, [ebp - 0xb44]
call fcn.00406620
jmp 0x405071
push str.LoadInstaller
mov ecx, dword [ebp - 0x738]
push ecx
call dword [0x411598]
mov dword [ebp - 0x734], eax
cmp dword [ebp - 0x734], 0
jne 0x40527e
push 0x104
lea edx, [ebp - 0x108]
push edx
push 0x45
mov eax, dword [ebp - 0x1954]
mov ecx, dword [eax + 0x3a8]
push ecx
call dword [sym.imp.USER32.dll_LoadStringA]
push 0x104
lea edx, [ebp - 0x194c]
push edx
push 0x43
mov eax, dword [ebp - 0x1954]
mov ecx, dword [eax + 0x3a8]
push ecx
call dword [sym.imp.USER32.dll_LoadStringA]
lea ecx, [ebp - 0xb44]
call fcn.004065e0
mov edx, dword [eax]
push edx
push 0x4109a4
lea eax, [ebp - 0x108]
push eax
lea ecx, [ebp - 0x32c]
push ecx
call fcn.00407c9a
add esp, 0x10
mov edx, dword [ebp - 0x1954]
cmp dword [edx + 0x13c], 0
je 0x40524d
push 0x180000
lea eax, [ebp - 0x194c]
push eax
lea ecx, [ebp - 0x32c]
push ecx
mov ecx, dword [ebp - 0x1954]
add ecx, 0x390
call fcn.0040824c
jmp 0x40526e
push 0
lea edx, [ebp - 0x194c]
push edx
lea eax, [ebp - 0x32c]
push eax
mov ecx, dword [ebp - 0x1954]
add ecx, 0x390
call fcn.0040824c
lea ecx, [ebp - 0xb44]
call fcn.00406620
jmp 0x405071
lea ecx, [ebp - 0xb44]
call fcn.004065e0
mov ecx, dword [eax + 4]
push ecx
mov edx, dword [ebp - 0x1954]
mov eax, dword [edx + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ecx, dword [ebp - 0x1954]
mov edx, dword [ecx + 0x20]
push edx
push str._ZsetupMain.RunInstallation__Inf_file___s_n
call fcn.00407a82
add esp, 8
lea ecx, [ebp - 0xb44]
call fcn.004065e0
mov eax, dword [eax]
push eax
mov ecx, dword [ebp - 0x1954]
mov edx, dword [ecx + 0x144]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea ecx, [ebp - 0xb44]
call fcn.004065c0
push eax
mov ecx, dword [ebp - 0x1954]
call fcn.004037d6
test eax, eax
jne 0x4053ab
push 0x104
lea eax, [ebp - 0x108]
push eax
push 0x46
mov ecx, dword [ebp - 0x1954]
mov edx, dword [ecx + 0x3a8]
push edx
call dword [sym.imp.USER32.dll_LoadStringA]
push 0x104
lea eax, [ebp - 0x194c]
push eax
push 0x43
mov ecx, dword [ebp - 0x1954]
mov edx, dword [ecx + 0x3a8]
push edx
call dword [sym.imp.USER32.dll_LoadStringA]
mov eax, dword [ebp - 0x1954]
cmp dword [eax + 0x13c], 0
je 0x40536b
push 0x180000
lea ecx, [ebp - 0x194c]
push ecx
lea edx, [ebp - 0x32c]
push edx
mov ecx, dword [ebp - 0x1954]
add ecx, 0x390
call fcn.0040824c
jmp 0x40538c
push 0
lea eax, [ebp - 0x194c]
push eax
lea ecx, [ebp - 0x32c]
push ecx
mov ecx, dword [ebp - 0x1954]
add ecx, 0x390
call fcn.0040824c
mov edx, dword [ebp - 0x738]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov ecx, dword [ebp - 0x1954]
call fcn.004059c1
xor eax, eax
jmp 0x405714
mov ecx, dword [ebp - 0x1954]
call fcn.00402e01
mov eax, dword [ebp - 0x1954]
cmp dword [eax + 0x160], 7
jne 0x4053f9
push pe_nt_image_headers32
mov ecx, dword [ebp - 0x1954]
add ecx, 0x38
push ecx
mov edx, dword [ebp - 0x1954]
mov eax, dword [edx + 0x164]
push eax
call sub.MSVCRT.dll_memcpy
add esp, 0xc
mov ecx, dword [ebp - 0x1954]
mov dword [ecx + 0x140], 1
mov ecx, dword [ebp - 0x1954]
call fcn.00404b89
mov edx, dword [ebp - 0x1954]
mov eax, dword [edx + 0x280]
mov dword [ebp - 0x120], eax
mov ecx, dword [ebp - 0x1954]
cmp dword [ecx + 0x3a4], 0
je 0x405446
push str._ZsetupMain.RunInstallation__Loading_the_resource_dll..._n
call fcn.00407a82
add esp, 4
mov edx, dword [ebp - 0x1954]
mov eax, dword [edx + 0x3a4]
mov dword [ebp - 0x118], eax
jmp 0x405453
push str._ZsetupMain.RunInstallation__Could_not_load_the_resource_dll_..._n
call fcn.00407a82
add esp, 4
push str._ZsetupMain.RunInstallation__Loading_Installer..._n
call fcn.00407a82
add esp, 4
lea ecx, [ebp - 0x120]
push ecx
mov edx, dword [ebp - 0x1954]
push edx
mov eax, dword [ebp - 0x1954]
add eax, 0x14c
push eax
call dword [ebp - 0x734]
mov dword [ebp - 0x1950], eax
push str._ZsetupMain.RunInstallation__Finished_loading_Installer..._n
call fcn.00407a82
add esp, 4
mov ecx, dword [ebp - 0x738]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [ebp - 0x1950], 0
je 0x4055cb
mov edx, dword [ebp - 0x1954]
cmp dword [edx + 0x160], 2
jne 0x4055cb
mov eax, dword [ebp - 0x1954]
mov ecx, dword [eax + 0x20]
push ecx
push 0x200
lea edx, [ebp - 0xf44]
push edx
push 0x410ac4
push str.Dependencies
push 0x410adc
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0xf44]
push eax
mov ecx, dword [ebp - 0x1954]
mov edx, dword [ecx + 0x1c]
push edx
push str.SOFTWAREZenographicsZSetup_s__s
lea eax, [ebp - 0x1448]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push 0x410b08
lea ecx, [ebp - 0xf44]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
je 0x4055af
lea edx, [ebp - 0xb40]
push edx
push 0x20019
push 0
lea eax, [ebp - 0x1448]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4055af
mov ecx, dword [ebp - 0x1954]
mov edx, dword [ecx + 0x20]
push edx
push 0x200
lea eax, [ebp - 0x1048]
push eax
push 0x410b10
push str.DependentDll
push 0x410b28
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov ecx, dword [ebp - 0x1954]
mov edx, dword [ecx + 0x20]
push edx
push 0x200
lea eax, [ebp - 0x228]
push eax
push 0x410b30
push str.DependentIni
push 0x410b48
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov dword [ebp - 0x330], 1
mov ecx, dword [ebp - 0x1954]
cmp dword [ecx + 0x140], 1
jne 0x4055cb
mov ecx, dword [ebp - 0x1954]
call fcn.00405719
jmp 0x405610
lea ecx, [ebp - 0xb44]
call fcn.00406620
lea edx, [ebp - 0x73c]
push edx
lea ecx, [ebp - 0xb44]
call fcn.00406650
and eax, 0xff
test eax, eax
je 0x40560b
lea ecx, [ebp - 0xb44]
call fcn.004065e0
mov ecx, dword [ebp - 0x1954]
mov edx, dword [ecx + 0x160]
mov dword [eax + 8], edx
jmp 0x405071
mov ecx, dword [ebp - 0x1954]
call fcn.004059c1
cmp dword [ebp - 0x330], 1
jne 0x4056fb
lea eax, [ebp - 4]
push eax
lea ecx, [ebp - 0x730]
push ecx
lea edx, [ebp - 0x124]
push edx
push 0
push 0x410b50
mov eax, dword [ebp - 0xb40]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea ecx, [ebp - 4]
push ecx
lea edx, [ebp - 0x730]
push edx
lea eax, [ebp - 0x124]
push eax
push 0
push str.GUID
mov ecx, dword [ebp - 0xb40]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push str.Setup.exe
lea edx, [ebp - 0x730]
push edx
push str.C:Program_FilesZenographics_s_s
lea eax, [ebp - 0x1848]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea ecx, [ebp - 0xf44]
push ecx
push str._ZSetupMain__Dependency___s_n
call fcn.00407a82
add esp, 8
lea edx, [ebp - 0x1848]
push edx
push str._ZSetupMain__Name_of_File___s_n
call fcn.00407a82
add esp, 8
lea eax, [ebp - 0x228]
push eax
lea ecx, [ebp - 0x1048]
push ecx
push str._u___s_s_
lea edx, [ebp - 0xb3c]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push 0
lea eax, [ebp - 0xb3c]
push eax
lea ecx, [ebp - 0x1848]
push ecx
mov ecx, dword [ebp - 0x1954]
call fcn.004036bf
mov edx, dword [ebp - 0x1954]
cmp dword [edx + 0x15c], 0
je 0x40570f
call fcn.00406fb0
mov eax, 1
pop edi
mov esp, ebp
pop ebp
ret