Function at 0x402150
Capabilities:
Check os version
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xe34
mov eax, dword [0x45b1e4]
push ebx
push esi
mov esi, ecx
push edi
mov dword [esp + 0xe3c], eax
xor eax, eax
mov ecx, 0x45
lea edi, [esp + 0xf0]
rep stosd dword es:[edi], eax
lea eax, [esp + 0xf0]
xor ebx, ebx
push eax
mov dword [esp + 0x10], esi
mov dword [esi + 0x128], ebx
mov dword [esp + 0xf4], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
xor eax, eax
mov word [esp + 0xc30], bx
mov ecx, 0x81
lea edi, [esp + 0xc32]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
xor eax, eax
mov word [esp + 0x208], bx
mov ecx, 0x81
lea edi, [esp + 0x20a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
xor eax, eax
mov word [esp + 0xa28], bx
mov ecx, 0x81
lea edi, [esp + 0xa2a]
rep stosd dword es:[edi], eax
mov edx, dword [0x448e50]
stosw word es:[edi], ax
xor eax, eax
mov word [esp + 0x410], bx
mov ecx, 0x81
lea edi, [esp + 0x412]
rep stosd dword es:[edi], eax
mov ecx, dword [str.g_g]
mov dword [esp + 0x28], ecx
xor ecx, ecx
mov dword [esp + 0x32], ecx
mov dword [esp + 0x36], ecx
mov dword [esp + 0x3a], ecx
mov dword [esp + 0x3e], ecx
mov dword [esp + 0x42], ecx
mov dword [esp + 0x46], ecx
mov dword [esp + 0x4a], ecx
mov word [esp + 0x4e], cx
mov dword [esp + 0x56], ecx
mov dword [esp + 0x2c], edx
mov edx, dword [0x448e44]
mov dword [esp + 0x5a], ecx
mov dword [esp + 0x50], edx
mov edx, dword [0x448e38]
mov dword [esp + 0x5e], ecx
mov dword [esp + 0x62], ecx
mov dword [esp + 0x78], edx
mov dword [esp + 0x66], ecx
xor edx, edx
stosw word es:[edi], ax
mov ax, word [0x448e54]
mov dword [esp + 0x6a], ecx
mov dword [esp + 0x82], edx
mov dword [esp + 0x6e], ecx
mov dword [esp + 0x86], edx
mov word [esp + 0x30], ax
mov ax, word [0x448e48]
mov dword [esp + 0x72], ecx
mov dword [esp + 0x8a], edx
mov word [esp + 0x54], ax
mov eax, dword [0x448e3c]
mov word [esp + 0x76], cx
mov cx, word [0x448e40]
mov dword [esp + 0x8e], edx
mov dword [esp + 0x7c], eax
mov word [esp + 0x80], cx
mov dword [esp + 0x92], edx
mov eax, dword [0x448e30]
mov ecx, dword [0x448e34]
mov dword [esp + 0x96], edx
mov dword [esp + 0xa0], eax
mov eax, dword [str.ghost]
mov dword [esp + 0x9a], edx
mov dword [esp + 0xc8], eax
mov word [esp + 0x9e], dx
xor eax, eax
mov dword [esp + 0xa8], edx
mov dword [esp + 0xd4], eax
mov dword [esp + 0xac], edx
mov dword [esp + 0xd8], eax
mov dword [esp + 0xb0], edx
mov dword [esp + 0xdc], eax
mov dword [esp + 0xb4], edx
mov dword [esp + 0xe0], eax
mov dword [esp + 0xb8], edx
mov dword [esp + 0xe4], eax
mov dword [esp + 0xbc], edx
mov dword [esp + 0xe8], eax
mov dword [esp + 0xc0], edx
mov dword [esp + 0xec], eax
cmp dword [esp + 0xf4], 5
mov dword [esp + 0xa4], ecx
mov ecx, dword [0x448e28]
mov dword [esp + 0xc4], edx
mov edx, dword [0x448e2c]
mov dword [esp + 0xcc], ecx
mov dword [esp + 0xd0], edx
jne 0x4024a4
cmp dword [esp + 0xf8], 1
jne 0x4024a4
lea ecx, [esp + 0x104]
push ecx
lea edx, [esp + 0xc34]
push 0x448cf8
push edx
call fcn.00428c0a
lea eax, [esp + 0x110]
push eax
call fcn.00429101
push str.service_pack_3
push eax
call fcn.00428fbd
add esp, 0x18
test eax, eax
jne 0x4024a4
mov ecx, dword [esi + 0x10]
push ecx
lea edx, [esp + 0x20c]
push str._soeminfo.ini
push edx
call fcn.00428c0a
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
add esp, 0xc
lea eax, [esp + 0x208]
push eax
push 0x104
lea ecx, [esp + 0xa30]
push ecx
push 0x448de4
push str.Manufacturer
push str.General
call edi
lea edx, [esp + 0x208]
push edx
push 0x104
lea eax, [esp + 0x418]
push eax
push 0x448de4
push str.Model
push str.General
call edi
xor eax, eax
mov word [esp + 0x618], bx
mov ecx, 0x81
lea edi, [esp + 0x61a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov word [esp + 0x820], bx
xor eax, eax
mov ecx, 0x81
lea edi, [esp + 0x822]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x10]
push ecx
push 0xf003f
push ebx
push str.SoftwareMicrosoftWindows_NTCurrentVersion
push reloc.OLEAUT32.dll_SysReAllocString
stosw word es:[edi], ax
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x4024b9
xor eax, eax
mov ecx, dword [esp + 0xe3c]
call fcn.00428731
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea edx, [esp + 0x20]
push edx
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x61c]
push eax
lea ecx, [esp + 0x1c]
push ecx
push ebx
push str.RegisteredOrganization
push edx
mov dword [esp + 0x2c], 1
mov dword [esp + 0x38], 0x104
call esi
lea eax, [esp + 0x20]
push eax
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x824]
push ecx
lea edx, [esp + 0x1c]
push edx
push ebx
push str.RegisteredOwner
push eax
call esi
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea edx, [esp + 0xa28]
push edx
call fcn.00429101
mov edi, eax
lea eax, [esp + 0x414]
push eax
call fcn.00429101
lea ecx, [esp + 0x620]
push ecx
mov dword [esp + 0x24], eax
call fcn.00429101
lea edx, [esp + 0x82c]
push edx
mov dword [esp + 0x2c], eax
call fcn.00429101
add esp, 0x10
mov dword [esp + 0x24], eax
lea esi, [esp + 0x28]
push edi
call fcn.004290eb
add esp, 4
test eax, eax
jle 0x402580
push esi
push edi
call fcn.00428fef
add esp, 8
test eax, eax
jne 0x402612
mov eax, dword [esp + 0x18]
push eax
call fcn.004290eb
add esp, 4
test eax, eax
jle 0x4025a7
mov ecx, dword [esp + 0x18]
push esi
push ecx
call fcn.00428fef
add esp, 8
test eax, eax
jne 0x402634
mov edx, dword [esp + 0x1c]
push edx
call fcn.004290eb
add esp, 4
test eax, eax
jle 0x4025ca
mov eax, dword [esp + 0x1c]
push esi
push eax
call fcn.00428fef
add esp, 8
test eax, eax
jne 0x402612
mov ecx, dword [esp + 0x24]
push ecx
call fcn.004290eb
add esp, 4
test eax, eax
jle 0x4025ed
mov edx, dword [esp + 0x24]
push esi
push edx
call fcn.00428fef
add esp, 8
test eax, eax
jne 0x402634
inc ebx
add esi, 0x28
cmp ebx, 5
jl 0x402561
mov eax, 1
mov ecx, dword [esp + 0xe3c]
call fcn.00428731
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0xc]
mov eax, 1
mov dword [ecx + 0x128], eax
mov ecx, dword [esp + 0xe3c]
call fcn.00428731
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0xe3c]
mov eax, 1
mov dword [edx + 0x128], eax
call fcn.00428731
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret