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

Disassembly:
push ebp
lea ebp, [esp - 0x150]
sub esp, 0x1d0
mov eax, dword [0x81c5a8]
xor eax, ebp
mov dword [ebp + 0x14c], 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 - 0x50]
push 0
push eax
call fcn.0066f220
add esp, 0xc
lea eax, [ebp - 0x50]
mov dword [ebp - 0x50], esi
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExA]
push eax
call esi
test eax, eax
jne 0x454f95
mov ebx, 0x94
push ebx
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.0066f220
add esp, 0xc
lea eax, [ebp - 0x50]
push eax
mov dword [ebp - 0x50], ebx
call esi
test eax, eax
je 0x4553f7
movzx esi, word [ebp + 0x44]
mov edx, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x48]
mov dword [edi + 0x14], esi
movzx esi, word [ebp + 0x46]
mov dword [edi + 8], edx
sub edx, 0
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], eax
mov dword [edi + 0x18], esi
je 0x4553df
dec edx
je 0x455369
dec edx
jne 0x4553f4
push eax
push ecx
mov ebx, str.Microsoft_Windows_NT_d._d
push ebx
mov esi, 0x400
push esi
push dword [edi + 0x1c]
call fcn.00403c35
mov eax, dword [ebp - 0x4c]
add esp, 0x14
cmp eax, 4
ja 0x455003
push str.Microsoft_Windows_NT
push esi
push dword [edi + 0x1c]
call fcn.0067eece
add esp, 0xc
jmp 0x4551b8
cmp eax, 5
jne 0x4550a3
mov eax, dword [ebp - 0x48]
test eax, eax
jne 0x45501a
push str.Microsoft_Windows_2000
jmp 0x454ff2
cmp eax, 1
jne 0x45506b
push str.Microsoft_Windows_XP
push esi
push dword [edi + 0x1c]
call fcn.0067eece
mov ebx, dword [sym.imp.USER32.dll_GetSystemMetrics]
add esp, 0xc
push 0x57
call ebx
test eax, eax
je 0x45504f
push str.Media_Center_Edition
push esi
push dword [edi + 0x1c]
call fcn.00403c7f
add esp, 0xc
push 0x56
call ebx
test eax, eax
je 0x4551b8
push str.Tablet_PC_Edition
push esi
push dword [edi + 0x1c]
call fcn.00403c7f
jmp 0x454ffb
cmp eax, 2
jne 0x45509b
cmp byte [ebp + 0x4a], 1
jne 0x455091
cmp word [ebp - 0x80], 6
jne 0x455087
push str.Microsoft_Windows_XP_IA64
jmp 0x454ff2
push str.Microsoft_Windows_XP_x64
jmp 0x454ff2
push str.Microsoft_Windows_Server_2003
jmp 0x454ff2
push eax
push 5
jmp 0x4551ab
cmp eax, 6
jne 0x45516a
call fcn.00404d14
cmp dword [eax + 0x18], 0
je 0x4550e2
call fcn.00404d14
mov eax, dword [eax + 0x18]
lea ecx, [ebp - 0x54]
push ecx
lea ecx, [ebp - 0x58]
push ecx
lea ecx, [ebp - 0x5c]
push ecx
mov ecx, eax
call fcn.0045f19e
test eax, eax
je 0x4550e2
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x48]
test eax, eax
jne 0x455104
cmp byte [ebp + 0x4a], 1
jne 0x4550fd
push eax
push dword [ebp - 0x4c]
push str.Microsoft_Windows_Vista___d._d_
jmp 0x455185
push str.Microsoft_Windows_Server_2008
jmp 0x455151
cmp eax, 1
jne 0x455120
cmp byte [ebp + 0x4a], al
jne 0x455119
push eax
push dword [ebp - 0x4c]
push str.Microsoft_Windows_7___d._d_
jmp 0x455185
push str.Microsoft_Windows_Server_2008_R2
jmp 0x455151
cmp eax, 2
jne 0x455136
cmp byte [ebp + 0x4a], 1
jne 0x45514c
push eax
push dword [ebp - 0x4c]
push str.Microsoft_Windows_8___d._d_
jmp 0x455185
cmp eax, 3
jne 0x45515f
cmp byte [ebp + 0x4a], 1
jne 0x45514c
push eax
push dword [ebp - 0x4c]
push str.Microsoft_Windows_8.1___d._d_
jmp 0x455185
push str.Microsoft_Windows_Server_2012_R2
push esi
push dword [edi + 0x1c]
call fcn.0067eece
add esp, 0xc
jmp 0x455191
cmp eax, 4
jne 0x455191
push eax
push dword [ebp - 0x4c]
jmp 0x455173
push dword [ebp - 0x48]
cmp eax, 0xa
jne 0x4551aa
push eax
cmp byte [ebp + 0x4a], 1
jne 0x455180
push str.Microsoft_Windows_10___d._d_
jmp 0x455185
push str.Microsoft_Windows_Server___d._d_
push esi
push dword [edi + 0x1c]
call fcn.00403c35
add esp, 0x14
movzx eax, word [ebp + 0x46]
push eax
movzx eax, word [ebp + 0x44]
push eax
push dword [ebp - 0x48]
mov ecx, edi
push dword [ebp - 0x4c]
call fcn.00454c44
jmp 0x4551b8
push eax
push ebx
push esi
push dword [edi + 0x1c]
call fcn.00403c35
add esp, 0x14
cmp byte [ebp + 0x4a], 1
mov ebx, 0x200
jne 0x4551f6
cmp dword [ebp - 0x4c], 4
jne 0x4551d3
push str.Workstation_4.0
jmp 0x455294
cmp dword [ebp - 0x4c], 5
jne 0x4552a0
test dword [ebp + 0x48], ebx
je 0x4551ec
push str.Home_Edition
jmp 0x455294
push 0x728408
jmp 0x455294
cmp byte [ebp + 0x4a], 3
je 0x455206
cmp byte [ebp + 0x4a], 2
jne 0x4552a0
cmp dword [ebp - 0x4c], 5
jne 0x455278
cmp dword [ebp - 0x48], 2
jne 0x45524d
mov eax, dword [ebp + 0x48]
test al, al
jns 0x455220
push str.Datacenter_Edition
jmp 0x455294
test al, 2
je 0x45522b
push str.Enterprise_Edition
jmp 0x455294
mov ecx, esi
cmp ax, cx
jne 0x455239
push str.Web_Edition
jmp 0x455294
cmp ax, 1
jne 0x455246
push str.Small_Business_Edition
jmp 0x455294
push str.Standard_Edition
jmp 0x455294
cmp dword [ebp - 0x48], 0
jne 0x455338
test byte [ebp + 0x48], 0x80
je 0x455264
push 0x72874c
jmp 0x455294
test byte [ebp + 0x48], 2
je 0x455271
push 0x728738
jmp 0x455294
push 0x728730
jmp 0x455294
cmp dword [ebp - 0x4c], 4
ja 0x455338
test byte [ebp + 0x48], 2
je 0x45528f
push str.Server_4.0__Enterprise_Edition
jmp 0x455294
push str.Server_4.0
push esi
push dword [edi + 0x1c]
call fcn.00403c7f
add esp, 0xc
cmp dword [ebp - 0x4c], 4
jne 0x455338
push str.Service_Pack_6
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x455338
lea eax, [ebp - 0x54]
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 - 0x44]
push eax
jne 0x455303
push str.Service_Pack_6a__Build__d_
lea eax, [ebp + 0x4c]
push 0x100
push eax
call fcn.00403c35
lea eax, [ebp + 0x4c]
push eax
push ebx
push dword [edi + 0x20]
call fcn.00403c35
add esp, 0x1c
jmp 0x45532a
lea eax, [ebp - 0x3c]
push eax
push str._s__Build__d_
lea eax, [ebp + 0x4c]
push 0x100
push eax
call fcn.00403c35
lea eax, [ebp + 0x4c]
push eax
push ebx
push dword [edi + 0x20]
call fcn.00403c35
add esp, 0x20
push dword [ebp - 0x54]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x4553f4
movzx eax, word [ebp - 0x44]
push eax
lea eax, [ebp - 0x3c]
push eax
push str._s__Build__d_
lea eax, [ebp + 0x4c]
push 0x100
push eax
call fcn.00403c35
lea eax, [ebp + 0x4c]
push eax
push ebx
push dword [edi + 0x20]
call fcn.00403c35
add esp, 0x20
jmp 0x4553f4
cmp ecx, 4
jne 0x4553d8
test eax, eax
jne 0x4553a4
push str.Microsoft_Windows_95
mov esi, 0x400
push esi
push dword [edi + 0x1c]
call fcn.0067eece
add esp, 0xc
cmp byte [ebp - 0x3b], 0x43
je 0x455394
cmp byte [ebp - 0x3b], 0x42
jne 0x4553f4
push 0x72866c
push esi
push dword [edi + 0x1c]
call fcn.00403c7f
jmp 0x4553f1
cmp eax, 0xa
jne 0x4553cc
push str.Microsoft_Windows_98
mov esi, 0x400
push esi
push dword [edi + 0x1c]
call fcn.0067eece
add esp, 0xc
cmp byte [ebp - 0x3b], 0x41
jne 0x4553f4
push str._SE
jmp 0x455399
cmp eax, 0x5a
jne 0x4553f4
push str.Microsoft_Windows_Millennium_Edition
jmp 0x4553e4
push str.Microsoft_Windows_9x
jmp 0x4553e4
push str.Microsoft_Win32s
push 0x400
push dword [edi + 0x1c]
call fcn.0067eece
add esp, 0xc
xor eax, eax
inc eax
mov ecx, dword [ebp + 0x14c]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00647fba
add ebp, 0x150
leave
ret