Function at 0x57fe1a
Capabilities:
Check os version
Query or enumerate registry value

Disassembly:
push ebp
sub esp, 0x15c
lea ebp, [esp - 4]
mov eax, dword [0x6e1760]
xor eax, ebp
mov dword [ebp + 0x15c], eax
push 0xa0
mov eax, 0x62244d
call fcn.00409179
mov edi, dword [ebp + 0x168]
xor ebx, ebx
push str.getOsVersionString
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x1c], ebx
call fcn.00553ab0
push ebx
lea ecx, [ebp + 0xb8]
mov dword [ebp - 4], ebx
mov dword [ebp + 0xd0], 0xf
call fcn.00402875
mov esi, 0x9c
push esi
lea eax, [ebp]
push ebx
push eax
mov byte [ebp - 4], 1
call fcn.00408660
add esp, 0xc
lea eax, [ebp]
mov dword [ebp], esi
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExA]
push eax
call esi
test eax, eax
setne byte [ebp - 0xd]
cmp byte [ebp - 0xd], bl
jne 0x57fefc
lea eax, [ebp]
push eax
mov dword [ebp], 0x94
call esi
test eax, eax
jne 0x57fefc
push str.Unknown_OS
lea ecx, [ebp - 0x3c]
call fcn.00404087
lea eax, [ebp - 0x3c]
push eax
push edi
mov byte [ebp - 4], 2
call fcn.004d3498
pop ecx
pop ecx
push ebx
push 1
lea ecx, [ebp - 0x3c]
call fcn.0040349d
push ebx
push 1
lea ecx, [ebp + 0xb8]
call fcn.0040349d
lea ecx, [ebp - 0x18]
call fcn.00553477
mov eax, edi
jmp 0x58041d
mov eax, dword [ebp + 0x10]
dec eax
je 0x58036e
dec eax
jne 0x5803f3
cmp dword [ebp + 4], 4
ja 0x57ff23
push str.Microsoft_Windows_NT
lea ecx, [ebp + 0xb8]
call fcn.00403f05
cmp dword [ebp + 4], 5
jne 0x57ff3e
cmp dword [ebp + 8], ebx
jne 0x57ff3e
push str.Microsoft_Windows_2000
lea ecx, [ebp + 0xb8]
call fcn.00403f05
cmp byte [ebp - 0xd], bl
je 0x580015
cmp byte [ebp + 0x9a], 1
jne 0x57ff91
cmp dword [ebp + 4], 5
jne 0x57ff6c
cmp dword [ebp + 8], 1
jne 0x57ff6c
push str.Microsoft_Windows_XP
lea ecx, [ebp + 0xb8]
call fcn.00403f05
test word [ebp + 0x98], 0x200
lea ecx, [ebp + 0xb8]
je 0x57ff87
push str.Home_Edition
jmp 0x58010d
push str.Professional
jmp 0x58010d
cmp byte [ebp + 0x9a], 3
jne 0x580112
cmp dword [ebp + 4], 5
jne 0x57ffba
cmp dword [ebp + 8], 2
jne 0x57ffba
push str.Microsoft_Windows_.NET
lea ecx, [ebp + 0xb8]
call fcn.00403f05
test byte [ebp + 0x98], 0x80
je 0x57ffcd
push str.DataCenter_Server
jmp 0x580107
test byte [ebp + 0x98], 2
lea ecx, [ebp + 0xb8]
je 0x57fff6
cmp dword [ebp + 4], 4
jne 0x57ffec
push str.Advanced_Server
jmp 0x58010d
push str.Enterprise_Server
jmp 0x58010d
cmp word [ebp + 0x98], 0x400
jne 0x58000b
push str.Web_Server
jmp 0x58010d
push str.Server
jmp 0x58010d
push 0x50
pop edi
lea eax, [ebp - 0x1c]
push eax
xor esi, esi
inc esi
push esi
push ebx
push str.SYSTEMCurrentControlSetControlProductOptions
push reloc.WS2_32.dll_bind
mov dword [ebp - 0x20], edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
cmp eax, ebx
je 0x580068
push str.Unknown_OS
lea ecx, [ebp - 0x3c]
call fcn.00404087
lea eax, [ebp - 0x3c]
push eax
push dword [ebp - 0x14]
mov byte [ebp - 4], 3
call fcn.004d3498
pop ecx
pop ecx
lea ecx, [ebp - 0x3c]
push ebx
push esi
call fcn.0040349d
push ebx
push esi
jmp 0x580407
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp + 0x10c]
push eax
push ebx
push ebx
push str.ProductType
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
cmp eax, ebx
jne 0x580347
cmp dword [ebp - 0x20], edi
ja 0x580347
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [ebp + 0x10c]
push eax
push str.WINNT
call fcn.0041a87f
test eax, eax
pop ecx
pop ecx
jne 0x5800c4
push str.Professional
lea ecx, [ebp + 0xb8]
call fcn.00403f05
lea eax, [ebp + 0x10c]
push eax
push str.LANMANNT
call fcn.0041a87f
test eax, eax
pop ecx
pop ecx
jne 0x5800eb
push str.Server
lea ecx, [ebp + 0xb8]
call fcn.00403f05
lea eax, [ebp + 0x10c]
push eax
push str.SERVERNT
call fcn.0041a87f
test eax, eax
pop ecx
pop ecx
jne 0x580112
push str.Advanced_Server
lea ecx, [ebp + 0xb8]
call fcn.00403f05
cmp dword [ebp + 4], 4
lea ecx, [ebp + 0xb8]
ja 0x58028f
push str.version
call fcn.00403f05
xor esi, esi
inc esi
push esi
push 3
lea ecx, [ebp + 0xd4]
call fcn.00431edf
push dword [ebp + 8]
lea ecx, [ebp + 0xdc]
push str..__
push dword [ebp + 4]
mov byte [ebp - 4], 5
call fcn.0042e3b4
push eax
call fcn.00405b3e
pop ecx
pop ecx
mov ecx, eax
call fcn.0042e3b4
lea eax, [ebp + 0x9c]
push eax
lea ecx, [ebp + 0xd4]
call fcn.00431ccc
lea eax, [ebp + 0x9c]
push eax
lea eax, [ebp - 0xac]
push eax
mov byte [ebp - 4], 6
call fcn.00513951
pop ecx
pop ecx
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [ebp + 0xb8]
mov byte [ebp - 4], 7
call fcn.004037d9
push ebx
push esi
lea ecx, [ebp - 0xac]
call fcn.0040349d
push ebx
push esi
lea ecx, [ebp + 0x9c]
call fcn.0040349d
lea ecx, [ebp + 0xd4]
mov byte [ebp - 4], 1
call fcn.00431c77
push 0x639f94
lea ecx, [ebp + 0xb8]
call fcn.00403f05
lea eax, [ebp + 0x14]
push eax
lea ecx, [ebp + 0xb8]
call fcn.00403f05
push str.__Build
lea ecx, [ebp + 0xb8]
call fcn.00403f05
push esi
push 3
lea ecx, [ebp + 0xd4]
call fcn.00431edf
movzx eax, word [ebp + 0xc]
push eax
lea ecx, [ebp + 0xdc]
mov byte [ebp - 4], 8
call fcn.0042e3b4
lea eax, [ebp + 0x9c]
push eax
lea ecx, [ebp + 0xd4]
call fcn.00431ccc
lea eax, [ebp + 0x9c]
push eax
mov byte [ebp - 4], 9
lea eax, [ebp - 0x90]
push eax
call fcn.00513951
pop ecx
pop ecx
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [ebp + 0xb8]
mov byte [ebp - 4], 0xa
call fcn.004037d9
push ebx
push esi
lea ecx, [ebp - 0x90]
call fcn.0040349d
push ebx
push esi
lea ecx, [ebp + 0x9c]
call fcn.0040349d
lea ecx, [ebp + 0xd4]
mov byte [ebp - 4], 1
call fcn.00431c77
push 0x67768c
jmp 0x5803e8
lea eax, [ebp + 0x14]
push eax
call fcn.00403f05
push str.__Build
lea ecx, [ebp + 0xb8]
call fcn.00403f05
push 1
push 3
lea ecx, [ebp + 0xd4]
call fcn.00431edf
movzx eax, word [ebp + 0xc]
push eax
lea ecx, [ebp + 0xdc]
mov byte [ebp - 4], 0xb
call fcn.0042e3b4
lea eax, [ebp + 0x9c]
push eax
lea ecx, [ebp + 0xd4]
call fcn.00431ccc
lea eax, [ebp + 0x9c]
push eax
lea eax, [ebp - 0x74]
push eax
mov byte [ebp - 4], 0xc
call fcn.00513951
pop ecx
pop ecx
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [ebp + 0xb8]
mov byte [ebp - 4], 0xd
call fcn.004037d9
push ebx
push 1
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 0xc
call fcn.0040349d
push 0x67768c
lea ecx, [ebp + 0xb8]
call fcn.00403f05
push ebx
push 1
lea ecx, [ebp + 0x9c]
call fcn.0040349d
lea ecx, [ebp + 0xd4]
mov byte [ebp - 4], 1
call fcn.00431c77
jmp 0x5803f3
push str.Unknown_OS
lea ecx, [ebp - 0x58]
call fcn.00404087
lea eax, [ebp - 0x58]
push eax
push dword [ebp - 0x14]
mov byte [ebp - 4], 4
call fcn.004d3498
pop ecx
pop ecx
lea ecx, [ebp - 0x58]
jmp 0x58005a
cmp dword [ebp + 4], 4
jne 0x5803f3
cmp dword [ebp + 8], ebx
jne 0x5803ab
push str.Microsoft_Windows_95
lea ecx, [ebp + 0xb8]
call fcn.00403f05
cmp byte [ebp + 0x15], 0x43
je 0x580395
cmp byte [ebp + 0x15], 0x42
jne 0x5803a5
push str.OSR2
lea ecx, [ebp + 0xb8]
call fcn.00403f05
cmp dword [ebp + 4], 4
jne 0x5803f3
cmp dword [ebp + 8], 0xa
jne 0x5803dd
push str.Microsoft_Windows_98
lea ecx, [ebp + 0xb8]
call fcn.00403f05
cmp byte [ebp + 0x15], 0x41
jne 0x5803d7
push 0x677650
lea ecx, [ebp + 0xb8]
call fcn.00403f05
cmp dword [ebp + 4], 4
jne 0x5803f3
cmp dword [ebp + 8], 0x5a
jne 0x5803f3
push str.Microsoft_Windows_Millennium_Edition
lea ecx, [ebp + 0xb8]
call fcn.00403f05
lea eax, [ebp + 0xb8]
push eax
push dword [ebp - 0x14]
call fcn.004d3498
pop ecx
pop ecx
push ebx
push 1
lea ecx, [ebp + 0xb8]
call fcn.0040349d
lea ecx, [ebp - 0x18]
call fcn.00553477
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x15c]
xor ecx, ebp
call fcn.0040916a
add ebp, 0x160
leave
ret