Function at 0x403e80
Capabilities:
Get system information on windows

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42cd4b
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x50
mov eax, dword [0x4b0040]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x50], esi
mov eax, dword [ebx + 0xc]
mov edi, dword [ebx + 8]
mov dword [ebp - 0x3c], eax
lea eax, [esi + 8]
mov dword [ebp - 0x60], esi
push 0x18
mov dword [ebp - 0x50], eax
mov dword [eax], 0
mov dword [eax + 4], 0
call fcn.00418830
add esp, 4
mov dword [eax], eax
mov dword [eax + 4], eax
mov dword [eax + 8], eax
mov word [eax + 0xc], 0x101
mov dword [esi + 8], eax
add esi, 0x10
mov dword [ebp - 4], 0
mov dword [ebp - 0x58], esi
push 0x18
mov dword [esi], 0
mov dword [esi + 4], 0
call fcn.00418830
add esp, 4
mov dword [eax], eax
mov dword [eax + 4], eax
mov dword [eax + 8], eax
mov word [eax + 0xc], 0x101
mov dword [esi], eax
mov byte [ebp - 4], 1
mov eax, dword [0x4b1738]
test eax, eax
je 0x403f4b
mov ecx, dword [0x4b173c]
test ecx, ecx
jne 0x403f66
lea eax, [ebp - 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x1c]
mov dword [0x4b1738], eax
mov dword [0x4b173c], ecx
test edi, edi
jne 0x403f6e
mov esi, eax
jmp 0x403f84
cmp edi, eax
jae 0x403f76
mov esi, eax
jmp 0x403f84
lea esi, [edi - 1]
lea eax, [ecx - 1]
add esi, ecx
not eax
and esi, eax
mov eax, esi
mov ecx, dword [ebp - 0x44]
mov edx, dword [ebp - 0x3c]
lea edi, [ecx + 4]
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x40], edi
mov dword [ecx], esi
mov dword [edi], 0
test edx, edx
je 0x40412e
lea ecx, [edx - 0x7ffffffe]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x58], ecx
xorps xmm0, xmm0
mov ecx, edx
movq qword [ebp - 0x20], xmm0
sub ecx, eax
mov edi, edx
add ecx, 0x7fffffff
mov dword [ebp - 0x54], ecx
movups xmmword [ebp - 0x30], xmm0
cmp edx, ecx
jae 0x40405e
push 0x1c
lea eax, [ebp - 0x30]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
cmp eax, 0x1c
jne 0x40405b
cmp dword [ebp - 0x20], 0x10000
jne 0x40400c
cmp dword [ebp - 0x24], esi
jb 0x40400c
push 4
push 0x3000
push esi
push edi
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [ebp - 0x4c], eax
test eax, eax
jne 0x404023
mov eax, dword [0x4b173c]
lea edi, [edi + eax*2]
dec eax
add edi, 0xfffffffe
not eax
and edi, eax
cmp edi, dword [ebp - 0x54]
jb 0x403fd6
jmp 0x40405b
mov edx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x4c]
sub edx, eax
sub eax, dword [ebp - 0x3c]
mov ecx, edx
cmp dword [ebp - 0x3c], edi
cmovbe ecx, eax
xor eax, eax
cmp ecx, 0x7fffffff
cmova edx, eax
test edx, edx
je 0x40404d
mov eax, dword [ebp - 0x44]
mov dword [eax + 4], edi
jmp 0x40405b
push 0x8000
push 0
push edi
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov edx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x40]
cmp dword [edi], 0
jne 0x4040c1
lea eax, [edx - 0x7ffffffe]
mov edi, edx
cmp edx, eax
jbe 0x4040b9
push 0x1c
lea eax, [ebp - 0x30]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
cmp eax, 0x1c
jne 0x4040b9
cmp dword [ebp - 0x20], 0x10000
jne 0x4040a8
cmp dword [ebp - 0x24], esi
jb 0x4040a8
push 4
push 0x3000
push esi
push edi
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [ebp - 0x4c], eax
test eax, eax
jne 0x4040f5
mov ecx, dword [0x4b173c]
dec edi
dec ecx
not ecx
and edi, ecx
cmp edi, dword [ebp - 0x58]
ja 0x404072
mov edi, dword [ebp - 0x40]
cmp dword [edi], 0
je 0x4040d2
mov ecx, dword [ebp - 0x50]
lea eax, [ebp - 0x48]
push eax
push edi
lea eax, [ebp - 0x5c]
push eax
call fcn.0040be90
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0041881d
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 8
mov edi, dword [ebp - 0x3c]
mov edx, edi
mov esi, dword [ebp - 0x4c]
sub edx, eax
sub eax, edi
mov ecx, edx
cmp edi, esi
cmovbe ecx, eax
xor eax, eax
cmp ecx, 0x7fffffff
cmova edx, eax
test edx, edx
je 0x40411e
mov edi, dword [ebp - 0x40]
mov dword [edi], esi
jmp 0x4040bc
push 0x8000
push 0
push esi
call dword [sym.imp.KERNEL32.dll_VirtualFree]
jmp 0x4040b9
push 4
push 0x3000
push esi
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [edi], eax
jmp 0x4040bc