Function at 0x604c00
Capabilities:
Get system information on windows

Disassembly:
mov eax, 0x115c
call fcn.006272c0
mov eax, dword [0x6a6040]
xor eax, esp
mov dword [esp + 0x1154], eax
push ebx
push ebp
push esi
mov dword [esp + 0xc], ecx
mov ebp, edx
push edi
lea ecx, [esp + 0x40]
call fcn.00604f70
xorps xmm0, xmm0
mov dword [esp + 0x3c], 0
push str.GetNativeSystemInfo
push str.kernel32.dll
movups xmmword [esp + 0x24], xmm0
movups xmmword [esp + 0x34], xmm0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x604c64
lea ecx, [esp + 0x1c]
push ecx
call eax
jmp 0x604c6f
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov ax, word [esp + 0x1c]
cmp ax, 9
jne 0x604c81
mov edi, 0x40
jmp 0x604c99
cmp ax, 6
jne 0x604c8e
mov edi, 0xffffffc0
jmp 0x604c99
test ax, ax
mov edi, 0x20
cmove edi, edi
call fcn.005ed360
mov ecx, dword [esp + 0x44]
xor esi, esi
mov dword [esp + 0x18], eax
cmp ecx, 5
jne 0x604cfe
mov ecx, dword [esp + 0x48]
cmp ecx, 1
jne 0x604cbd
mov esi, str.Windows_XP
jmp 0x604d3c
cmp ecx, 2
jne 0x604d3c
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
xor ecx, ecx
mov ebx, str.Windows_2003_Server
test eax, eax
cmovne ebx, ecx
mov ecx, dword [esp + 0x44]
mov esi, ebx
cmp ecx, 5
jne 0x604cfe
cmp dword [esp + 0x48], 2
jne 0x604d3c
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov ecx, dword [esp + 0x44]
test eax, eax
mov esi, str.Windows_2003_Server_R2
cmove esi, ebx
cmp ecx, 6
jne 0x604d3c
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x604d22
cmp byte [esp + 0x15a], 1
mov esi, str.Windows_Vista
mov eax, str.Windows_2008_Server
cmovne esi, eax
jmp 0x604d3c
cmp eax, 1
jne 0x604d3c
cmp byte [esp + 0x15a], 1
mov esi, str.Windows_2008_Server_R2
mov eax, str.Windows_7
cmove esi, eax
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x20]
mov byte [esp + 0x964], 0
push eax
lea edx, [esp + 0x968]
call fcn.00603c90
add esp, 8
lea ecx, [esp + 0x14]
or ebx, 0xffffffff
xor edx, edx
test al, al
je 0x604d7c
lea esi, [esp + 0x960]
call fcn.006048e0
jmp 0x604d89
call fcn.006048e0
test esi, esi
je 0x604e6f
mov ecx, esi
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x604d90
sub ecx, edx
cmp ecx, 0x200
jae 0x604e6f
mov eax, dword [esp + 0x14]
test eax, eax
je 0x604dba
cmp dword [eax + 4], 0x100
jge 0x604e6f
mov dword [esp + 0x10], 0
test eax, eax
je 0x604ddc
cmp dword [eax + 0xc], 0
jne 0x604ddc
mov edx, dword [esp + 0x18]
cmp edx, 1
jle 0x604e01
mov ecx, str.___d_cores
jmp 0x604de5
mov ecx, str.___S
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x14]
push ecx
push eax
call fcn.005abfb0
mov eax, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
je 0x604e01
mov ecx, dword [eax + 0xc]
jmp 0x604e06
mov ecx, 0x651f68
cmp edi, 0x40
jne 0x604e12
mov eax, 0x66fc5c
jmp 0x604e2e
cmp edi, 0xffffffc0
jne 0x604e1e
mov eax, str.ia64
jmp 0x604e2e
cmp edi, 0x20
mov eax, str.32_bits
mov edx, str.unkproc
cmovne eax, edx
push ecx
push dword [esp + 0x4c]
push dword [esp + 0x4c]
push dword [esp + 0x58]
push eax
push esi
lea eax, [esp + 0x178]
push str._s__s_Build__d___d._d__s
push eax
call fcn.0041b2a0
mov ecx, dword [esp + 0x30]
add esp, 0x20
test ecx, ecx
je 0x604ee0
mov eax, ebx
lock xadd dword [ecx], eax
dec eax
jne 0x604ee0
push ecx
call fcn.005a47b0
jmp 0x604ee0
cmp byte [esp + 0x15a], 1
mov ecx, 0x66fc60
mov eax, 0x66fc64
cmovne ecx, eax
cmp edi, 0x40
jne 0x604e90
mov eax, str.amd64
jmp 0x604eac
cmp edi, 0xffffffc0
jne 0x604e9c
mov eax, str.ia64
jmp 0x604eac
cmp edi, 0x20
mov eax, str.i386
mov edx, str.unkproc
cmovne eax, edx
mov edx, dword [esp + 0x18]
cmp edx, 1
push edx
push dword [esp + 0x50]
push ecx
push dword [esp + 0x54]
mov ecx, str._s__d._d__s__d
push dword [esp + 0x54]
push eax
mov eax, str._s__d._d__s__d__d_cores
cmovle eax, ecx
push eax
lea eax, [esp + 0x17c]
push eax
call fcn.0041b2a0
add esp, 0x20
lea ecx, [esp + 0x160]
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x604ef0
sub ecx, edx
lea eax, [ecx + 1]
cmp eax, 0x400
jg 0x604f36
lea ecx, [esp + 0x160]
mov eax, ecx
sub ebp, eax
nop
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [ecx + ebp - 1], al
test al, al
jne 0x604f10
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x604f32
lock xadd dword [ecx], ebx
dec ebx
jne 0x604f32
push ecx
call fcn.005a47b0
mov al, 1
jmp 0x604f4d
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x604f4b
lock xadd dword [ecx], ebx
dec ebx
jne 0x604f4b
push ecx
call fcn.005a47b0
xor al, al
mov ecx, dword [esp + 0x1164]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00606a47
add esp, 0x115c
ret