Function at 0x57ef30
Capabilities:
Check os version
Get system information on windows

Disassembly:
push ebp
lea ebp, [esp - 0x154]
sub esp, 0x1d4
mov eax, dword [0x6015a8]
xor eax, ebp
mov dword [ebp + 0x150], eax
push ebx
push esi
push edi
lea eax, [ebp - 0x80]
push eax
mov edi, ecx
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov esi, 0x9c
push esi
lea eax, [ebp - 0x4c]
push 0
push eax
call fcn.005635a0
add esp, 0xc
lea eax, [ebp - 0x4c]
mov dword [ebp - 0x4c], esi
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExA]
push eax
call esi
test eax, eax
jne 0x57efa5
mov ebx, 0x94
push ebx
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.005635a0
add esp, 0xc
lea eax, [ebp - 0x4c]
push eax
mov dword [ebp - 0x4c], ebx
call esi
test eax, eax
je 0x57f420
call fcn.00461b70
mov eax, dword [eax + 0x1c]
lea ecx, [ebp - 0x58]
push ecx
lea ecx, [ebp - 0x5c]
push ecx
lea ecx, [ebp - 0x54]
push ecx
mov ecx, eax
call fcn.0043be26
test eax, eax
je 0x57efdd
mov eax, dword [ebp - 0x54]
cmp eax, dword [ebp - 0x48]
jbe 0x57efdd
mov ecx, dword [ebp - 0x58]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], ecx
jmp 0x57efe0
mov eax, dword [ebp - 0x44]
movzx esi, word [ebp + 0x48]
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x48]
mov dword [edi + 0x14], esi
movzx esi, word [ebp + 0x4a]
mov dword [edi + 8], ecx
sub ecx, 0
mov dword [edi + 0xc], edx
mov dword [edi + 0x10], eax
mov dword [edi + 0x18], esi
je 0x57f408
dec ecx
je 0x57f392
dec ecx
jne 0x57f41d
push eax
push edx
mov ebx, str.Microsoft_Windows_NT_d._d
push ebx
mov esi, 0x400
push esi
push dword [edi + 0x1c]
call fcn.00460090
mov ecx, dword [ebp - 0x48]
add esp, 0x14
cmp ecx, 4
ja 0x57f04b
push str.Microsoft_Windows_NT
push esi
push dword [edi + 0x1c]
call fcn.00564635
add esp, 0xc
jmp 0x57f1e1
cmp ecx, 5
jne 0x57f0eb
mov eax, dword [ebp - 0x44]
test eax, eax
jne 0x57f062
push str.Microsoft_Windows_2000
jmp 0x57f03a
cmp eax, 1
jne 0x57f0b3
push str.Microsoft_Windows_XP
push esi
push dword [edi + 0x1c]
call fcn.00564635
mov ebx, dword [sym.imp.USER32.dll_GetSystemMetrics]
add esp, 0xc
push 0x57
call ebx
test eax, eax
je 0x57f097
push str.Media_Center_Edition
push esi
push dword [edi + 0x1c]
call fcn.00460170
add esp, 0xc
push 0x56
call ebx
test eax, eax
je 0x57f1e1
push str.Tablet_PC_Edition
push esi
push dword [edi + 0x1c]
call fcn.00460170
jmp 0x57f043
cmp eax, 2
jne 0x57f0e3
cmp byte [ebp + 0x4e], 1
jne 0x57f0d9
cmp word [ebp - 0x80], 6
jne 0x57f0cf
push str.Microsoft_Windows_XP_IA64
jmp 0x57f03a
push str.Microsoft_Windows_XP_x64
jmp 0x57f03a
push str.Microsoft_Windows_Server_2003
jmp 0x57f03a
push eax
push 5
jmp 0x57f1d4
push 6
pop eax
cmp ecx, eax
jne 0x57f19f
mov ecx, dword [ebp - 0x44]
test ecx, ecx
jne 0x57f113
cmp byte [ebp + 0x4e], 1
jne 0x57f10c
push ecx
push eax
push str.Microsoft_Windows_Vista___d._d_
jmp 0x57f17a
push str.Microsoft_Windows_Server_2008
jmp 0x57f15a
cmp ecx, 1
jne 0x57f12d
cmp byte [ebp + 0x4e], cl
jne 0x57f126
push ecx
push eax
push str.Microsoft_Windows_7___d._d_
jmp 0x57f17a
push str.Microsoft_Windows_Server_2008_R2
jmp 0x57f15a
cmp ecx, 2
jne 0x57f141
cmp byte [ebp + 0x4e], 1
jne 0x57f155
push ecx
push eax
push str.Microsoft_Windows_8___d._d_
jmp 0x57f17a
cmp ecx, 3
jne 0x57f168
cmp byte [ebp + 0x4e], 1
jne 0x57f155
push ecx
push eax
push str.Microsoft_Windows_8.1___d._d_
jmp 0x57f17a
push str.Microsoft_Windows_Server_2012_R2
push esi
push dword [edi + 0x1c]
call fcn.00564635
add esp, 0xc
jmp 0x57f186
cmp ecx, 4
jne 0x57f186
cmp byte [ebp + 0x4e], 1
push ecx
push eax
je 0x57f1b9
push str.Microsoft_Windows_Server___d._d_
push esi
push dword [edi + 0x1c]
call fcn.00460090
add esp, 0x14
movzx eax, word [ebp + 0x4a]
push eax
movzx eax, word [ebp + 0x48]
push eax
push dword [ebp - 0x44]
mov ecx, edi
push dword [ebp - 0x48]
call fcn.0057eafb
jmp 0x57f1e1
push 0xa
pop eax
push dword [ebp - 0x44]
cmp ecx, eax
jne 0x57f1c0
cmp byte [ebp + 0x4e], 1
push eax
jne 0x57f175
cmp dword [ebp - 0x40], 0x55ec
jae 0x57f1cc
push str.Microsoft_Windows_10___d._d_
jmp 0x57f17a
cmp ecx, 0xb
jne 0x57f1d3
cmp byte [ebp + 0x4e], 1
push ecx
jne 0x57f175
push str.Microsoft_Windows_11___d._d_
jmp 0x57f17a
push ecx
push ebx
push esi
push dword [edi + 0x1c]
call fcn.00460090
add esp, 0x14
cmp byte [ebp + 0x4e], 1
mov ebx, 0x200
jne 0x57f21f
cmp dword [ebp - 0x48], 4
jne 0x57f1fc
push str.Workstation_4.0
jmp 0x57f2bd
cmp dword [ebp - 0x48], 5
jne 0x57f2c9
test dword [ebp + 0x4c], ebx
je 0x57f215
push str.Home_Edition
jmp 0x57f2bd
push str.Professional
jmp 0x57f2bd
cmp byte [ebp + 0x4e], 3
je 0x57f22f
cmp byte [ebp + 0x4e], 2
jne 0x57f2c9
cmp dword [ebp - 0x48], 5
jne 0x57f2a1
cmp dword [ebp - 0x44], 2
jne 0x57f276
mov eax, dword [ebp + 0x4c]
test al, al
jns 0x57f249
push str.Datacenter_Edition
jmp 0x57f2bd
test al, 2
je 0x57f254
push str.Enterprise_Edition
jmp 0x57f2bd
mov ecx, esi
cmp ax, cx
jne 0x57f262
push str.Web_Edition
jmp 0x57f2bd
cmp ax, 1
jne 0x57f26f
push str.Small_Business_Edition
jmp 0x57f2bd
push str.Standard_Edition
jmp 0x57f2bd
cmp dword [ebp - 0x44], 0
jne 0x57f361
test byte [ebp + 0x4c], 0x80
je 0x57f28d
push str.Datacenter_Server
jmp 0x57f2bd
test byte [ebp + 0x4c], 2
je 0x57f29a
push str.Advanced_Server
jmp 0x57f2bd
push str.Server
jmp 0x57f2bd
cmp dword [ebp - 0x48], 4
ja 0x57f361
test byte [ebp + 0x4c], 2
je 0x57f2b8
push str.Server_4.0__Enterprise_Edition
jmp 0x57f2bd
push str.Server_4.0
push esi
push dword [edi + 0x1c]
call fcn.00460170
add esp, 0xc
cmp dword [ebp - 0x48], 4
jne 0x57f361
push str.Service_Pack_6
lea eax, [ebp - 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x57f361
lea eax, [ebp - 0x50]
push eax
push 1
push 0
push str.SOFTWAREMicrosoftWindows_NTCurrentVersionHotfixQ246009
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
movzx eax, word [ebp - 0x40]
push eax
jne 0x57f32c
push str.Service_Pack_6a__Build__d_
lea eax, [ebp + 0x50]
push 0x100
push eax
call fcn.00460090
lea eax, [ebp + 0x50]
push eax
push ebx
push dword [edi + 0x20]
call fcn.00460090
add esp, 0x1c
jmp 0x57f353
lea eax, [ebp - 0x38]
push eax
push str._s__Build__d_
lea eax, [ebp + 0x50]
push 0x100
push eax
call fcn.00460090
lea eax, [ebp + 0x50]
push eax
push ebx
push dword [edi + 0x20]
call fcn.00460090
add esp, 0x20
push dword [ebp - 0x50]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x57f41d
movzx eax, word [ebp - 0x40]
push eax
lea eax, [ebp - 0x38]
push eax
push str._s__Build__d_
lea eax, [ebp + 0x50]
push 0x100
push eax
call fcn.00460090
lea eax, [ebp + 0x50]
push eax
push ebx
push dword [edi + 0x20]
call fcn.00460090
add esp, 0x20
jmp 0x57f41d
cmp edx, 4
jne 0x57f401
test eax, eax
jne 0x57f3cd
push str.Microsoft_Windows_95
mov esi, 0x400
push esi
push dword [edi + 0x1c]
call fcn.00564635
add esp, 0xc
cmp byte [ebp - 0x37], 0x43
je 0x57f3bd
cmp byte [ebp - 0x37], 0x42
jne 0x57f41d
push str._OSR2
push esi
push dword [edi + 0x1c]
call fcn.00460170
jmp 0x57f41a
cmp eax, 0xa
jne 0x57f3f5
push str.Microsoft_Windows_98
mov esi, 0x400
push esi
push dword [edi + 0x1c]
call fcn.00564635
add esp, 0xc
cmp byte [ebp - 0x37], 0x41
jne 0x57f41d
push str._SE
jmp 0x57f3c2
cmp eax, 0x5a
jne 0x57f41d
push str.Microsoft_Windows_Millennium_Edition
jmp 0x57f40d
push str.Microsoft_Windows_9x
jmp 0x57f40d
push str.Microsoft_Win32s
push 0x400
push dword [edi + 0x1c]
call fcn.00564635
add esp, 0xc
xor eax, eax
inc eax
mov ecx, dword [ebp + 0x150]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00562d51
add ebp, 0x154
leave
ret