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

Disassembly:
push ebp
lea ebp, [esp - 0x154]
sub esp, 0x1d4
mov eax, dword [0x5f72d8]
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.0055b160
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 0x576b79
mov ebx, 0x94
push ebx
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.0055b160
add esp, 0xc
lea eax, [ebp - 0x4c]
push eax
mov dword [ebp - 0x4c], ebx
call esi
test eax, eax
je 0x576ff4
call fcn.004605a0
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.0043b242
test eax, eax
je 0x576bb1
mov eax, dword [ebp - 0x54]
cmp eax, dword [ebp - 0x48]
jbe 0x576bb1
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 0x576bb4
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 0x576fdc
dec ecx
je 0x576f66
dec ecx
jne 0x576ff1
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.0045ea70
mov ecx, dword [ebp - 0x48]
add esp, 0x14
cmp ecx, 4
ja 0x576c1f
push str.Microsoft_Windows_NT
push esi
push dword [edi + 0x1c]
call fcn.0055c215
add esp, 0xc
jmp 0x576db5
cmp ecx, 5
jne 0x576cbf
mov eax, dword [ebp - 0x44]
test eax, eax
jne 0x576c36
push str.Microsoft_Windows_2000
jmp 0x576c0e
cmp eax, 1
jne 0x576c87
push str.Microsoft_Windows_XP
push esi
push dword [edi + 0x1c]
call fcn.0055c215
mov ebx, dword [sym.imp.USER32.dll_GetSystemMetrics]
add esp, 0xc
push 0x57
call ebx
test eax, eax
je 0x576c6b
push str.Media_Center_Edition
push esi
push dword [edi + 0x1c]
call fcn.0045eb50
add esp, 0xc
push 0x56
call ebx
test eax, eax
je 0x576db5
push str.Tablet_PC_Edition
push esi
push dword [edi + 0x1c]
call fcn.0045eb50
jmp 0x576c17
cmp eax, 2
jne 0x576cb7
cmp byte [ebp + 0x4e], 1
jne 0x576cad
cmp word [ebp - 0x80], 6
jne 0x576ca3
push str.Microsoft_Windows_XP_IA64
jmp 0x576c0e
push str.Microsoft_Windows_XP_x64
jmp 0x576c0e
push str.Microsoft_Windows_Server_2003
jmp 0x576c0e
push eax
push 5
jmp 0x576da8
push 6
pop eax
cmp ecx, eax
jne 0x576d73
mov ecx, dword [ebp - 0x44]
test ecx, ecx
jne 0x576ce7
cmp byte [ebp + 0x4e], 1
jne 0x576ce0
push ecx
push eax
push str.Microsoft_Windows_Vista___d._d_
jmp 0x576d4e
push str.Microsoft_Windows_Server_2008
jmp 0x576d2e
cmp ecx, 1
jne 0x576d01
cmp byte [ebp + 0x4e], cl
jne 0x576cfa
push ecx
push eax
push str.Microsoft_Windows_7___d._d_
jmp 0x576d4e
push str.Microsoft_Windows_Server_2008_R2
jmp 0x576d2e
cmp ecx, 2
jne 0x576d15
cmp byte [ebp + 0x4e], 1
jne 0x576d29
push ecx
push eax
push str.Microsoft_Windows_8___d._d_
jmp 0x576d4e
cmp ecx, 3
jne 0x576d3c
cmp byte [ebp + 0x4e], 1
jne 0x576d29
push ecx
push eax
push str.Microsoft_Windows_8.1___d._d_
jmp 0x576d4e
push str.Microsoft_Windows_Server_2012_R2
push esi
push dword [edi + 0x1c]
call fcn.0055c215
add esp, 0xc
jmp 0x576d5a
cmp ecx, 4
jne 0x576d5a
cmp byte [ebp + 0x4e], 1
push ecx
push eax
je 0x576d8d
push str.Microsoft_Windows_Server___d._d_
push esi
push dword [edi + 0x1c]
call fcn.0045ea70
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.005766cf
jmp 0x576db5
push 0xa
pop eax
push dword [ebp - 0x44]
cmp ecx, eax
jne 0x576d94
cmp byte [ebp + 0x4e], 1
push eax
jne 0x576d49
cmp dword [ebp - 0x40], 0x55ec
jae 0x576da0
push str.Microsoft_Windows_10___d._d_
jmp 0x576d4e
cmp ecx, 0xb
jne 0x576da7
cmp byte [ebp + 0x4e], 1
push ecx
jne 0x576d49
push str.Microsoft_Windows_11___d._d_
jmp 0x576d4e
push ecx
push ebx
push esi
push dword [edi + 0x1c]
call fcn.0045ea70
add esp, 0x14
cmp byte [ebp + 0x4e], 1
mov ebx, 0x200
jne 0x576df3
cmp dword [ebp - 0x48], 4
jne 0x576dd0
push str.Workstation_4.0
jmp 0x576e91
cmp dword [ebp - 0x48], 5
jne 0x576e9d
test dword [ebp + 0x4c], ebx
je 0x576de9
push str.Home_Edition
jmp 0x576e91
push str.Professional
jmp 0x576e91
cmp byte [ebp + 0x4e], 3
je 0x576e03
cmp byte [ebp + 0x4e], 2
jne 0x576e9d
cmp dword [ebp - 0x48], 5
jne 0x576e75
cmp dword [ebp - 0x44], 2
jne 0x576e4a
mov eax, dword [ebp + 0x4c]
test al, al
jns 0x576e1d
push str.Datacenter_Edition
jmp 0x576e91
test al, 2
je 0x576e28
push str.Enterprise_Edition
jmp 0x576e91
mov ecx, esi
cmp ax, cx
jne 0x576e36
push str.Web_Edition
jmp 0x576e91
cmp ax, 1
jne 0x576e43
push str.Small_Business_Edition
jmp 0x576e91
push str.Standard_Edition
jmp 0x576e91
cmp dword [ebp - 0x44], 0
jne 0x576f35
test byte [ebp + 0x4c], 0x80
je 0x576e61
push str.Datacenter_Server
jmp 0x576e91
test byte [ebp + 0x4c], 2
je 0x576e6e
push str.Advanced_Server
jmp 0x576e91
push str.Server
jmp 0x576e91
cmp dword [ebp - 0x48], 4
ja 0x576f35
test byte [ebp + 0x4c], 2
je 0x576e8c
push str.Server_4.0__Enterprise_Edition
jmp 0x576e91
push str.Server_4.0
push esi
push dword [edi + 0x1c]
call fcn.0045eb50
add esp, 0xc
cmp dword [ebp - 0x48], 4
jne 0x576f35
push str.Service_Pack_6
lea eax, [ebp - 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x576f35
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 0x576f00
push str.Service_Pack_6a__Build__d_
lea eax, [ebp + 0x50]
push 0x100
push eax
call fcn.0045ea70
lea eax, [ebp + 0x50]
push eax
push ebx
push dword [edi + 0x20]
call fcn.0045ea70
add esp, 0x1c
jmp 0x576f27
lea eax, [ebp - 0x38]
push eax
push str._s__Build__d_
lea eax, [ebp + 0x50]
push 0x100
push eax
call fcn.0045ea70
lea eax, [ebp + 0x50]
push eax
push ebx
push dword [edi + 0x20]
call fcn.0045ea70
add esp, 0x20
push dword [ebp - 0x50]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x576ff1
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.0045ea70
lea eax, [ebp + 0x50]
push eax
push ebx
push dword [edi + 0x20]
call fcn.0045ea70
add esp, 0x20
jmp 0x576ff1
cmp edx, 4
jne 0x576fd5
test eax, eax
jne 0x576fa1
push str.Microsoft_Windows_95
mov esi, 0x400
push esi
push dword [edi + 0x1c]
call fcn.0055c215
add esp, 0xc
cmp byte [ebp - 0x37], 0x43
je 0x576f91
cmp byte [ebp - 0x37], 0x42
jne 0x576ff1
push str._OSR2
push esi
push dword [edi + 0x1c]
call fcn.0045eb50
jmp 0x576fee
cmp eax, 0xa
jne 0x576fc9
push str.Microsoft_Windows_98
mov esi, 0x400
push esi
push dword [edi + 0x1c]
call fcn.0055c215
add esp, 0xc
cmp byte [ebp - 0x37], 0x41
jne 0x576ff1
push str._SE
jmp 0x576f96
cmp eax, 0x5a
jne 0x576ff1
push str.Microsoft_Windows_Millennium_Edition
jmp 0x576fe1
push str.Microsoft_Windows_9x
jmp 0x576fe1
push str.Microsoft_Win32s
push 0x400
push dword [edi + 0x1c]
call fcn.0055c215
add esp, 0xc
xor eax, eax
inc eax
mov ecx, dword [ebp + 0x150]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0055a90d
add ebp, 0x154
leave
ret