Function at 0x4016fd
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x220
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
xor ebx, ebx
push ebx
lea eax, [ebp - 0x20c]
push eax
lea ecx, [ebp - 0x21c]
call fcn.00401000
push str.setup.inf
push 0x403718
lea ecx, [ebp - 0x21c]
call fcn.00401018
mov ecx, eax
call fcn.00401018
push ebx
push 2
push ebx
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupOpenInfFileW]
mov dword [0x403aac], eax
cmp eax, 0xffffffff
jne 0x401764
or eax, eax
jmp 0x401994
push esi
mov esi, dword [sym.imp.SETUPAPI.dll_SetupGetLineTextW]
push edi
push ebx
push 0x40
push 0x403698
push str.COMPANY
mov edi, str.Strings
push edi
push eax
push ebx
call esi
push ebx
push 0x40
push 0x403920
push str.PRODUCT
push edi
push dword [0x403aac]
push ebx
call esi
push ebx
push 0x40
push 0x403010
push str.TITLE
push edi
push dword [0x403aac]
push ebx
call esi
push ebx
push 0x40
push 0x4039a8
push str.WELCOME
push edi
push dword [0x403aac]
push ebx
call esi
push ebx
push 0x40
push 0x403a28
push str.MAINTITLE
push edi
push dword [0x403aac]
push ebx
call esi
cmp dword [0x403aa8], ebx
je 0x401820
push 0x104
push 0x403090
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
cmp eax, ebx
je 0x401811
lea ecx, [eax*2 + 0x40308e]
cmp word [ecx], 0x5c
je 0x401811
dec eax
sub ecx, 2
cmp eax, ebx
jne 0x401803
xor ecx, ecx
mov word [eax*2 + 0x403090], cx
jmp 0x401990
push ebx
lea eax, [ebp - 0x20c]
push eax
lea ecx, [ebp - 0x21c]
call fcn.00401000
mov esi, 0x403698
push esi
push str.Software_
lea ecx, [ebp - 0x21c]
call fcn.00401018
mov ecx, eax
call fcn.00401018
mov ecx, dword [eax + 4]
mov edx, dword [eax]
push 0x5c
pop edi
mov word [edx + ecx*2], di
inc dword [eax + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
xor edi, edi
mov word [edx + ecx*2], di
push str.UserInfo
mov edi, 0x403920
push edi
mov ecx, eax
call fcn.00401018
mov ecx, eax
call fcn.00401018
lea eax, [ebp - 0x214]
push eax
push 0x20019
push ebx
lea eax, [ebp - 0x20c]
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4018f8
lea eax, [ebp - 0x210]
push eax
push ebx
lea eax, [ebp - 0x220]
push eax
push ebx
push str.AppPath
push dword [ebp - 0x214]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea eax, [ebp - 0x210]
push eax
push 0x403090
lea eax, [ebp - 0x220]
push eax
push ebx
push str.AppPath
push dword [ebp - 0x214]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [ebp - 0x214]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp word [0x403090], bx
je 0x401941
push 0x43
xor edx, edx
xor eax, eax
pop ecx
movzx eax, word [eax + 0x403090]
mov dword [ebp - 0x210], eax
add eax, 0xffffff9f
cmp ax, 0x19
ja 0x401928
add dword [ebp - 0x210], 0xffe0
cmp word [ebp - 0x210], cx
jne 0x401990
inc edx
lea eax, [edx + edx]
movzx ecx, word [eax + str.C:PROGRAM_FILES]
cmp cx, bx
jne 0x401908
push ebx
push 0x403090
lea ecx, [ebp - 0x21c]
call fcn.00401000
push 0x402198
lea ecx, [ebp - 0x21c]
call fcn.00401018
push esi
lea ecx, [ebp - 0x21c]
call fcn.00401018
mov ecx, dword [eax + 4]
mov edx, dword [eax]
push 0x5c
pop esi
mov word [edx + ecx*2], si
inc dword [eax + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
xor esi, esi
mov word [edx + ecx*2], si
push edi
mov ecx, eax
call fcn.00401018
pop edi
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop ebx
call fcn.00401db1
leave
ret