Function at 0x500620
Capabilities:
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x178
mov eax, dword [0x76f950]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x18]
push ebx
mov ebx, ecx
xor ecx, ecx
test eax, eax
cmovs eax, ecx
mov ecx, dword [ebx + 0x48]
mov dword [ebp + 0xc], eax
xor eax, eax
push esi
mov esi, dword [ebp + 0x10]
test esi, esi
cmovs esi, eax
push edi
mov edi, dword [ebp + 0x14]
mov dword [ebp + 0x10], esi
cmp edi, dword [ecx + 0x14]
mov dword [ebp - 0x14c], ebx
cmovg edi, dword [ecx + 0x14]
mov dword [ebp + 0x14], edi
cmp edx, dword [ecx + 0x18]
mov eax, edi
cmovg edx, dword [ecx + 0x18]
sub eax, dword [ebp + 0xc]
mov dword [ebp + 0x18], edx
test eax, eax
jle 0x500858
mov eax, edx
sub eax, esi
test eax, eax
jle 0x500858
cmp dword [ecx], 1
je 0x5006ae
cmp dword [ebp + 0xc], 0
jne 0x5006ae
test esi, esi
jne 0x5006ae
cmp edi, dword [ecx + 0x14]
jne 0x5006ae
cmp edx, dword [ecx + 0x18]
jne 0x5006ae
mov ecx, ebx
call fcn.004fd160
mov eax, dword [ebx + 0x48]
mov ecx, ebx
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x148], eax
call fcn.004fd0d0
mov ecx, dword [ebx + 0x48]
push 0
call fcn.004fc9a0
mov ecx, dword [ebx + 0x48]
mov edx, dword [ebp + 0x18]
mov ecx, dword [ecx + 8]
sub edx, dword [ebp + 0x10]
mov ecx, dword [ecx]
mov dword [ebp - 0x140], eax
mov eax, dword [ebp + 0x14]
sub eax, dword [ebp + 0xc]
cmp word [ecx + 0xe], 0x20
mov dword [ebp - 0x150], eax
sete byte [ebp - 0x12d]
imul eax, edx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0x144], edx
comiss xmm0, dword [0x72e26c]
jb 0x500758
mov ecx, dword [0x772ce8]
test ecx, ecx
jne 0x50073d
mov ecx, dword [0x796e58]
test ecx, ecx
jne 0x50073d
lea eax, [ebp - 0x174]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov ecx, dword [ebp - 0x160]
mov dword [0x796e58], ecx
mov eax, 0x6f7c1c
lea edx, [ebp - 0x134]
cmp ecx, 8
cmovle eax, edx
mov dword [ebp - 0x134], ecx
mov esi, dword [eax]
jmp 0x50075d
mov esi, 1
mov ecx, esi
mov dword [ebp - 0x138], esi
call fcn.004e7df0
test esi, esi
jle 0x500811
xor eax, eax
mov dword [ebp - 0x134], eax
lea ebx, [ebp - 0x114]
mov dword [ebp - 0x13c], esi
cdq
idiv esi
mov ecx, dword [ebp + 0xc]
mov dword [ebx - 0x10], ecx
mov ecx, dword [ebp + 0x10]
mov esi, eax
mov eax, dword [ebp - 0x14c]
mov dword [ebx - 0x18], eax
mov eax, dword [ebp - 0x140]
mov dword [ebx - 0x14], eax
mov eax, dword [ebp - 0x148]
mov dword [ebx], eax
mov eax, dword [ebp - 0x150]
mov dword [ebx - 8], eax
mov eax, dword [ebp - 0x134]
add eax, dword [ebp - 0x144]
add ecx, esi
mov dword [ebp - 0x134], eax
cdq
idiv dword [ebp - 0x138]
mov dword [ebx - 0xc], ecx
lea edx, [ebx - 0x18]
mov ecx, 0x500870
sub eax, esi
mov dword [ebx - 4], eax
mov eax, dword [ebp + 8]
mov dword [ebx + 4], eax
mov al, byte [ebp - 0x12d]
mov byte [ebx + 8], al
call fcn.004e7fd0
dec dword [ebp - 0x13c]
mov esi, dword [ebp - 0x138]
mov eax, dword [ebp - 0x134]
lea ebx, [ebx + 0x24]
jne 0x500786
mov esi, dword [sym.imp.KERNEL32.dll_InterlockedCompareExchange]
push 0
push 0
push 0x77c2cc
call esi
test eax, eax
je 0x500843
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
lea esp, [esp]
push 0
call edi
push 0
push 0
push 0x77c2cc
call esi
test eax, eax
jne 0x500830
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.00633732
mov esp, ebp
pop ebp
ret 0x14
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
xor al, al
pop ebx
call fcn.00633732
mov esp, ebp
pop ebp
ret 0x14