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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffee8
push ebx
push esi
push edi
mov dword [ebp - 0x58], ecx
mov ebx, edx
mov edi, eax
lea esi, [ebp - 0x54]
mov eax, 0x4614ac
call fcn.004533cc
push 0x9c
push 0
lea edx, [ebp - 0xf4]
push edx
call fcn.0045300c
add esp, 0xc
lea ecx, [ebp - 0xf4]
mov dword [ebp - 0xf4], 0x9c
push ecx
call sub.KERNEL32.DLL_GetVersionExA
test eax, eax
jne 0x4058db
push str.GetVersionEx
call fcn.0040152c
pop ecx
xor eax, eax
mov edx, dword [esi]
mov dword fs:[0], edx
jmp 0x405c2c
mov word [esi + 0x10], 8
xor ecx, ecx
mov dword [ebp - 4], ecx
inc dword [esi + 0x1c]
mov word [esi + 0x10], 0x14
cmp dword [ebp - 0xe4], 2
jne 0x405ad1
mov eax, dword [ebp - 0xec]
push eax
mov edx, dword [ebp - 0xf0]
push edx
push str.WNT__d._d
push ebx
call fcn.0045d5a0
mov word [esi + 0x10], 0x20
xor ecx, ecx
add esp, 0x10
mov dword [ebp - 8], ecx
lea ecx, [ebp - 8]
inc dword [esi + 0x1c]
mov eax, str.OSTerm_prefix:
mov edx, ebx
call fcn.0045d97c
lea edx, [ebp - 8]
mov eax, edi
mov edx, dword [edx]
call fcn.00408c1c
dec dword [esi + 0x1c]
lea eax, [ebp - 8]
mov edx, 2
call fcn.0045d450
cmp byte [ebp - 0x5a], 3
jne 0x405a25
mov eax, edi
call fcn.00405c34
test eax, eax
je 0x4059ea
lea edx, [ebp - 0x118]
push edx
call sub.KERNEL32.DLL_GetSystemInfo
mov ax, word [ebp - 0x118]
cmp ax, 6
je 0x405988
test ax, ax
jne 0x4059ba
mov word [esi + 0x10], 0x2c
mov edx, 0x45f9d3
lea eax, [ebp - 0xc]
call fcn.0045d380
inc dword [esi + 0x1c]
lea edx, [ebp - 0xc]
mov eax, ebx
call fcn.0045d494
dec dword [esi + 0x1c]
lea eax, [ebp - 0xc]
mov edx, 2
call fcn.0045d450
jmp 0x4059ea
mov word [esi + 0x10], 0x38
mov edx, 0x45f9d5
lea eax, [ebp - 0x10]
call fcn.0045d380
inc dword [esi + 0x1c]
lea edx, [ebp - 0x10]
mov eax, ebx
call fcn.0045d494
dec dword [esi + 0x1c]
lea eax, [ebp - 0x10]
mov edx, 2
call fcn.0045d450
mov word [esi + 0x10], 0x44
xor ecx, ecx
mov dword [ebp - 0x14], ecx
lea ecx, [ebp - 0x14]
inc dword [esi + 0x1c]
mov eax, str.Server_OSTerm:
mov edx, ebx
call fcn.0045d97c
lea edx, [ebp - 0x14]
mov eax, edi
mov edx, dword [edx]
call fcn.00408c1c
dec dword [esi + 0x1c]
lea eax, [ebp - 0x14]
mov edx, 2
call fcn.0045d450
jmp 0x405a8d
test byte [ebp - 0x5b], 2
je 0x405a5d
mov word [esi + 0x10], 0x50
mov edx, 0x45f9e7
lea eax, [ebp - 0x18]
call fcn.0045d380
inc dword [esi + 0x1c]
lea edx, [ebp - 0x18]
mov eax, ebx
call fcn.0045d494
dec dword [esi + 0x1c]
lea eax, [ebp - 0x18]
mov edx, 2
call fcn.0045d450
jmp 0x405a8d
mov word [esi + 0x10], 0x5c
mov edx, 0x45f9e9
lea eax, [ebp - 0x1c]
call fcn.0045d380
inc dword [esi + 0x1c]
lea edx, [ebp - 0x1c]
mov eax, ebx
call fcn.0045d494
dec dword [esi + 0x1c]
lea eax, [ebp - 0x1c]
mov edx, 2
call fcn.0045d450
push 0x57
call fcn.004522a0
test eax, eax
je 0x405b90
mov word [esi + 0x10], 0x68
mov edx, str._MCE
lea eax, [ebp - 0x20]
call fcn.0045d380
inc dword [esi + 0x1c]
lea edx, [ebp - 0x20]
mov eax, ebx
call fcn.0045d494
dec dword [esi + 0x1c]
lea eax, [ebp - 0x20]
mov edx, 2
call fcn.0045d450
jmp 0x405b90
cmp dword [ebp - 0xe4], 1
jne 0x405afb
mov ecx, dword [ebp - 0xec]
push ecx
mov eax, dword [ebp - 0xf0]
push eax
push str.WIN__d._d
push ebx
call fcn.0045d5a0
add esp, 0x10
jmp 0x405b90
mov word [esi + 0x10], 0x74
xor edx, edx
mov dword [ebp - 0x24], edx
lea edx, [ebp - 0x24]
inc dword [esi + 0x1c]
mov eax, dword [ebp - 0xe4]
call fcn.00405804
lea edx, [ebp - 0x24]
xor eax, eax
mov dword [ebp - 0x28], eax
lea ecx, [ebp - 0x28]
inc dword [esi + 0x1c]
mov eax, str.Unknown_VER_PLATFORM:
call fcn.0045d97c
lea edx, [ebp - 0x28]
mov eax, edi
mov edx, dword [edx]
call fcn.00408c1c
dec dword [esi + 0x1c]
lea eax, [ebp - 0x28]
mov edx, 2
call fcn.0045d450
dec dword [esi + 0x1c]
lea eax, [ebp - 0x24]
mov edx, 2
call fcn.0045d450
push 0
push 0x45fa2c
push str.Unknown_system_platform...
push 0
call sub.USER32.DLL_MessageBoxA
xor eax, eax
mov edx, 2
push eax
lea eax, [ebp - 4]
dec dword [esi + 0x1c]
call fcn.0045d450
pop eax
mov edx, dword [esi]
mov dword fs:[0], edx
jmp 0x405c2c
mov word [esi + 0x10], 0x80
xor ecx, ecx
mov dword [ebp - 0x2c], ecx
lea ecx, [ebp - 0x2c]
inc dword [esi + 0x1c]
mov eax, str.OS:
mov edx, ebx
call fcn.0045d97c
lea edx, [ebp - 0x2c]
mov eax, edi
mov edx, dword [edx]
call fcn.00408c1c
dec dword [esi + 0x1c]
lea eax, [ebp - 0x2c]
mov edx, 2
call fcn.0045d450
mov word [esi + 0x10], 0x8c
call sub.KERNEL32.DLL_GetSystemDefaultLangID
movzx eax, ax
xor edx, edx
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x30], edx
mov edx, 4
inc dword [esi + 0x1c]
call fcn.004485ec
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 0x58]
call fcn.0045d480
dec dword [esi + 0x1c]
lea eax, [ebp - 0x30]
mov edx, 2
call fcn.0045d450
mov al, 1
mov edx, 2
push eax
lea eax, [ebp - 4]
dec dword [esi + 0x1c]
call fcn.0045d450
pop eax
mov edx, dword [esi]
mov dword fs:[0], edx
jmp 0x405c2c
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret