Function at 0x478560
Capabilities:
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x5c
push ebx
push esi
push edi
lea eax, [esp + 0x2c]
mov ebx, ecx
push eax
lea eax, [esp + 0x2c]
mov dword [esp + 0x38], ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcessAffinityMask]
test eax, eax
je 0x4785bc
mov eax, dword [esp + 0x28]
test eax, eax
je 0x4785bc
xor edx, edx
xor esi, esi
lea edi, [edx + 0x10]
nop dword [eax]
mov ecx, eax
shr eax, 1
and ecx, 1
add edx, ecx
mov ecx, eax
and ecx, 1
shr eax, 1
add esi, ecx
sub edi, 1
jne 0x4785a0
lea eax, [esi + edx]
jmp 0x4785cb
lea eax, [esp + 0x44]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov eax, dword [esp + 0x58]
lea ecx, [esp + 0x28]
mov dword [ebx], eax
mov dword [ebx + 4], eax
mov byte [ebx + 8], 0
mov dword [esp + 0x28], 0x40000000
mov dword [esp + 0x2c], 0
mov dword [ebx + 0x20], 0x40000000
mov dword [ebx + 0x24], 0
mov dword [ebx + 0x10], 0x40000000
mov dword [ebx + 0x14], 0
mov dword [ebx + 0x18], 0x40000000
mov dword [ebx + 0x1c], 0
call fcn.00472290
mov byte [ebx + 9], al
test al, al
je 0x4787c0
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], ecx
mov dword [ebx + 0x20], edi
mov dword [ebx + 0x24], ecx
test ecx, ecx
jne 0x4786f7
cmp edi, 0x70000000
ja 0x4786f7
cmp ecx, 0x3333333
ja 0x478666
jb 0x478706
cmp edi, 0x33333333
jbe 0x478706
mov eax, edi
mov ebx, 0xe147ae15
mul ebx
mov eax, edi
mov esi, edx
mov edx, 0x47ae147a
mul edx
mov edi, eax
mov dword [esp + 0x1c], edx
mov eax, ecx
mul ebx
mov ecx, eax
mov ebx, edx
mov eax, dword [esp + 0x2c]
mov edx, 0x47ae147a
mul edx
add ecx, esi
mov esi, dword [esp + 0x28]
mov dword [esp + 0x18], eax
adc ebx, 0
add edi, ecx
mov ecx, dword [esp + 0x1c]
adc ecx, 0
xor eax, eax
add ebx, ecx
mov ecx, dword [esp + 0x18]
adc eax, eax
add ecx, ebx
mov ebx, dword [esp + 0x2c]
mov edi, ebx
adc edx, eax
mov eax, esi
sub eax, ecx
sbb edi, edx
shrd eax, edi, 1
shr edi, 1
add eax, ecx
adc edi, edx
shrd eax, edi, 6
shr edi, 6
mov dword [esp + 0x10], eax
mov ecx, edi
shld ecx, eax, 2
shl eax, 2
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
adc edi, ecx
shld edi, eax, 4
shl eax, 4
jmp 0x47879a
mov edi, 0x70000000
xor ecx, ecx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], ecx
mov eax, edi
mov ebx, ecx
shld ecx, eax, 2
shl eax, 2
add edi, eax
adc ebx, ecx
mov ecx, 0xe147ae15
shld ebx, edi, 4
shl edi, 4
mov eax, edi
mov dword [esp + 0x10], edi
mul ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x28], eax
mov esi, edx
mov eax, edi
mov edx, 0x47ae147a
mul edx
mov edi, eax
mov dword [esp + 0x20], edx
mov eax, ebx
mul ecx
mov ecx, eax
mov ebx, edx
mov eax, dword [esp + 0x14]
mov edx, 0x47ae147a
mul edx
add ecx, esi
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
adc ebx, 0
add edi, ecx
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x14]
adc ecx, 0
xor eax, eax
add ebx, ecx
mov ecx, dword [esp + 0x28]
adc eax, eax
add ecx, ebx
mov ebx, dword [esp + 0x18]
adc edx, eax
mov eax, dword [esp + 0x10]
sub eax, ecx
sbb edi, edx
shrd eax, edi, 1
shr edi, 1
add eax, ecx
adc edi, edx
shrd eax, edi, 6
shr edi, 6
mov edx, dword [esp + 0x34]
shrd esi, ebx, 5
shr ebx, 5
mov dword [edx + 0x10], eax
mov ecx, ebx
mov eax, esi
mov dword [edx + 0x14], edi
shld ecx, eax, 4
shl eax, 4
add eax, esi
mov dword [edx + 0x18], eax
adc ecx, ebx
mov dword [edx + 0x1c], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret