Function at 0x40a500
Capabilities:
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xfd0
mov eax, dword [0x592a80]
xor eax, ebp
mov dword [ebp - 4], eax
push 0x208
push 0
lea eax, [ebp - 0x428]
push eax
call fcn.00508920
add esp, 0xc
mov dword [ebp - 0xfa4], 0
jmp 0x40a544
mov ecx, dword [ebp - 0xfa4]
add ecx, 1
mov dword [ebp - 0xfa4], ecx
cmp dword [ebp - 0xfa4], 0xb
jae 0x40a59a
mov edx, dword [ebp - 0xfa4]
and edx, 0x8000000f
jns 0x40a560
dec edx
or edx, 0xfffffff0
inc edx
movzx eax, byte [edx + 0x58b250]
mov ecx, dword [ebp - 0xfa4]
movzx edx, byte [ecx + 0x58b260]
xor edx, eax
mov eax, dword [ebp - 0xfa4]
mov byte [eax + 0x58b260], dl
cmp dword [ebp - 0xfa4], 0xa
jne 0x40a598
mov ecx, dword [ebp - 0xfa4]
mov byte [ecx + 0x58b260], 0
jmp 0x40a535
push 0x58b260
push 0x53fe84
lea edx, [ebp - 0xfa0]
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0xfa0]
push eax
call fcn.004080d0
add esp, 4
test eax, eax
jne 0x40a5ce
xor eax, eax
jmp 0x40ae06
mov dword [ebp - 0xfa8], 0
jmp 0x40a5e9
mov ecx, dword [ebp - 0xfa8]
add ecx, 1
mov dword [ebp - 0xfa8], ecx
cmp dword [ebp - 0xfa8], 4
jae 0x40a63f
mov edx, dword [ebp - 0xfa8]
and edx, 0x8000000f
jns 0x40a605
dec edx
or edx, 0xfffffff0
inc edx
movzx eax, byte [edx + 0x58b250]
mov ecx, dword [ebp - 0xfa8]
movzx edx, byte [ecx + 0x58b26c]
xor edx, eax
mov eax, dword [ebp - 0xfa8]
mov byte [eax + 0x58b26c], dl
cmp dword [ebp - 0xfa8], 3
jne 0x40a63d
mov ecx, dword [ebp - 0xfa8]
mov byte [ecx + 0x58b26c], 0
jmp 0x40a5da
push 0x58b26c
push 0x53fe8c
lea edx, [ebp - 0xc90]
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
mov dword [ebp - 0xfac], 0
jmp 0x40a674
mov eax, dword [ebp - 0xfac]
add eax, 1
mov dword [ebp - 0xfac], eax
cmp dword [ebp - 0xfac], 8
jae 0x40a6ca
mov ecx, dword [ebp - 0xfac]
and ecx, 0x8000000f
jns 0x40a690
dec ecx
or ecx, 0xfffffff0
inc ecx
movzx edx, byte [ecx + 0x58b250]
mov eax, dword [ebp - 0xfac]
movzx ecx, byte [eax + 0x58b290]
xor ecx, edx
mov edx, dword [ebp - 0xfac]
mov byte [edx + 0x58b290], cl
cmp dword [ebp - 0xfac], 7
jne 0x40a6c8
mov eax, dword [ebp - 0xfac]
mov byte [eax + 0x58b290], 0
jmp 0x40a665
push 0x58b290
push 0x53fe94
lea ecx, [ebp - 0x670]
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
mov dword [ebp - 0xfb0], 0
jmp 0x40a6ff
mov edx, dword [ebp - 0xfb0]
add edx, 1
mov dword [ebp - 0xfb0], edx
cmp dword [ebp - 0xfb0], 0xd
jae 0x40a754
mov eax, dword [ebp - 0xfb0]
and eax, 0x8000000f
jns 0x40a71a
dec eax
or eax, 0xfffffff0
inc eax
movzx ecx, byte [eax + 0x58b250]
mov edx, dword [ebp - 0xfb0]
movzx eax, byte [edx + 0x58b298]
xor eax, ecx
mov ecx, dword [ebp - 0xfb0]
mov byte [ecx + 0x58b298], al
cmp dword [ebp - 0xfb0], 0xc
jne 0x40a752
mov edx, dword [ebp - 0xfb0]
mov byte [edx + 0x58b298], 0
jmp 0x40a6f0
push 0x58b298
push 0x53fe9c
lea eax, [ebp - 0xa88]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
mov dword [ebp - 0xfb4], 0
jmp 0x40a789
mov ecx, dword [ebp - 0xfb4]
add ecx, 1
mov dword [ebp - 0xfb4], ecx
cmp dword [ebp - 0xfb4], 0x1e
jae 0x40a7df
mov edx, dword [ebp - 0xfb4]
and edx, 0x8000000f
jns 0x40a7a5
dec edx
or edx, 0xfffffff0
inc edx
movzx eax, byte [edx + 0x58b250]
mov ecx, dword [ebp - 0xfb4]
movzx edx, byte [ecx + 0x58b270]
xor edx, eax
mov eax, dword [ebp - 0xfb4]
mov byte [eax + 0x58b270], dl
cmp dword [ebp - 0xfb4], 0x1d
jne 0x40a7dd
mov ecx, dword [ebp - 0xfb4]
mov byte [ecx + 0x58b270], 0
jmp 0x40a77a
push 0x58b270
push 0x53fea4
lea edx, [ebp - 0x220]
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push 0x208
push 0
lea eax, [ebp - 0x878]
push eax
call fcn.00508920
add esp, 0xc
lea ecx, [ebp - 0x878]
push ecx
lea edx, [ebp - 0x670]
push edx
lea eax, [ebp - 0x220]
push eax
lea ecx, [ebp - 0xc90]
push ecx
call fcn.00408200
add esp, 0x10
test eax, eax
jne 0x40a83e
xor eax, eax
jmp 0x40ae06
lea edx, [ebp - 0x878]
push edx
lea eax, [ebp - 0x428]
push eax
call fcn.0050aa22
add esp, 8
push 0x53feac
lea ecx, [ebp - 0x428]
push ecx
call fcn.0050aa22
add esp, 8
push 0x208
push 0
lea edx, [ebp - 0x878]
push edx
call fcn.00508920
add esp, 0xc
lea eax, [ebp - 0x878]
push eax
lea ecx, [ebp - 0xa88]
push ecx
lea edx, [ebp - 0x220]
push edx
lea eax, [ebp - 0xc90]
push eax
call fcn.00408200
add esp, 0x10
test eax, eax
jne 0x40a8ad
xor eax, eax
jmp 0x40ae06
lea ecx, [ebp - 0x878]
push ecx
lea edx, [ebp - 0x428]
push edx
call fcn.0050aa22
add esp, 8
push 0x53feb0
lea eax, [ebp - 0x428]
push eax
call fcn.0050aa22
add esp, 8
push 0xb
push 0
push 0x58b260
call fcn.00508920
add esp, 0xc
push 4
push 0
push 0x58b26c
call fcn.00508920
add esp, 0xc
push 8
push 0
push 0x58b290
call fcn.00508920
add esp, 0xc
push 0xd
push 0
push 0x58b298
call fcn.00508920
add esp, 0xc
push 0x208
push 0
lea ecx, [ebp - 0xfa0]
push ecx
call fcn.00508920
add esp, 0xc
push 0x208
push 0
lea edx, [ebp - 0xc90]
push edx
call fcn.00508920
add esp, 0xc
push 0x208
push 0
lea eax, [ebp - 0x220]
push eax
call fcn.00508920
add esp, 0xc
push 0x208
push 0
lea ecx, [ebp - 0x670]
push ecx
call fcn.00508920
add esp, 0xc
push 0x208
push 0
lea edx, [ebp - 0xa88]
push edx
call fcn.00508920
add esp, 0xc
push 0x208
push 0
lea eax, [ebp - 0x878]
push eax
call fcn.00508920
add esp, 0xc
push 0
call fcn.004080d0
add esp, 4
mov dword [ebp - 0x43c], 0
lea ecx, [ebp - 0x428]
push ecx
call fcn.00509f9a
add esp, 4
mov dword [ebp - 0x464], eax
mov dword [ebp - 0xfb8], 0
jmp 0x40a9e3
mov edx, dword [ebp - 0xfb8]
add edx, 1
mov dword [ebp - 0xfb8], edx
mov eax, dword [ebp - 0xfb8]
cmp eax, dword [ebp - 0x464]
jge 0x40aa0d
mov ecx, dword [ebp - 0xfb8]
movzx edx, word [ebp + ecx*2 - 0x428]
add edx, dword [ebp - 0x43c]
mov dword [ebp - 0x43c], edx
jmp 0x40a9d4
push 0x24
push 0
lea eax, [ebp - 0x460]
push eax
call fcn.00508920
add esp, 0xc
lea ecx, [ebp - 0x460]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov dword [ebp - 0x14], 0
xor edx, edx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0xc], edx
mov dword [ebp - 8], edx
mov dword [ebp - 0x438], 0
xor eax, eax
mov dword [ebp - 0x434], eax
mov dword [ebp - 0x430], eax
mov dword [ebp - 0x42c], eax
movzx ecx, word [ebp - 0x440]
mov dword [ebp - 0x438], ecx
movzx edx, word [ebp - 0x43e]
mov dword [ebp - 0x434], edx
mov eax, dword [ebp - 0x44c]
mov dword [ebp - 0x430], eax
mov ecx, dword [ebp - 0x450]
mov dword [ebp - 0x42c], ecx
push 0x10
push 0
push 0x59529c
call fcn.00508920
add esp, 0xc
mov dword [ebp - 0xfbc], 0
jmp 0x40aabb
mov edx, dword [ebp - 0xfbc]
add edx, 1
mov dword [ebp - 0xfbc], edx
cmp dword [ebp - 0xfbc], 4
jge 0x40ab4b
mov eax, dword [ebp - 0xfbc]
movzx ecx, byte [ebp + eax*4 - 0x438]
add ecx, 0x62
mov edx, dword [ebp - 0xfbc]
mov byte [edx*4 + 0x59529c], cl
mov eax, dword [ebp - 0xfbc]
movzx ecx, byte [ebp + eax*4 - 0x437]
add ecx, 0xea
mov edx, dword [ebp - 0xfbc]
mov byte [edx*4 + 0x59529d], cl
mov eax, dword [ebp - 0xfbc]
movzx ecx, byte [ebp + eax*4 - 0x436]
add ecx, 0x19
mov edx, dword [ebp - 0xfbc]
mov byte [edx*4 + 0x59529e], cl
mov eax, dword [ebp - 0xfbc]
movzx ecx, byte [ebp + eax*4 - 0x435]
add ecx, 0xa5
mov edx, dword [ebp - 0xfbc]
mov byte [edx*4 + 0x59529f], cl
jmp 0x40aaac
mov dword [ebp - 0xfc0], 0
jmp 0x40ab66
mov eax, dword [ebp - 0xfc0]
add eax, 4
mov dword [ebp - 0xfc0], eax
mov ecx, dword [ebp - 0x464]
add ecx, 1
cmp dword [ebp - 0xfc0], ecx
jge 0x40ac3f
mov edx, dword [ebp - 0x464]
sub edx, 1
cmp dword [ebp - 0xfc0], edx
jge 0x40aba7
mov eax, dword [ebp - 0xfc0]
movzx ecx, byte [ebp + eax*2 - 0x428]
imul ecx, dword [ebp - 0x43c]
add ecx, dword [ebp - 0x14]
mov dword [ebp - 0x14], ecx
mov edx, dword [ebp - 0xfc0]
add edx, 1
mov eax, dword [ebp - 0x464]
sub eax, 1
cmp edx, eax
jge 0x40abd8
mov ecx, dword [ebp - 0xfc0]
movzx edx, byte [ebp + ecx*2 - 0x426]
imul edx, dword [ebp - 0x43c]
add edx, dword [ebp - 0x10]
mov dword [ebp - 0x10], edx
mov eax, dword [ebp - 0xfc0]
add eax, 2
mov ecx, dword [ebp - 0x464]
sub ecx, 1
cmp eax, ecx
jge 0x40ac09
mov edx, dword [ebp - 0xfc0]
movzx eax, byte [ebp + edx*2 - 0x424]
imul eax, dword [ebp - 0x43c]
add eax, dword [ebp - 0xc]
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0xfc0]
add ecx, 3
mov edx, dword [ebp - 0x464]
sub edx, 1
cmp ecx, edx
jge 0x40ac3a
mov eax, dword [ebp - 0xfc0]
movzx ecx, byte [ebp + eax*2 - 0x422]
imul ecx, dword [ebp - 0x43c]
add ecx, dword [ebp - 8]
mov dword [ebp - 8], ecx
jmp 0x40ab57
mov dword [ebp - 0x87c], 0
mov dword [ebp - 0xfc4], 0
jmp 0x40ac64
mov edx, dword [ebp - 0xfc4]
add edx, 1
mov dword [ebp - 0xfc4], edx
cmp dword [ebp - 0xfc4], 3
jge 0x40acf3
mov dword [ebp - 0xfc8], 0
jmp 0x40ac8c
mov eax, dword [ebp - 0xfc8]
add eax, 1
mov dword [ebp - 0xfc8], eax
cmp dword [ebp - 0xfc8], 4
jge 0x40acee
mov ecx, dword [ebp - 0xfc8]
mov eax, dword [ebp + ecx*4 - 0x14]
mov ecx, dword [ebp - 0xfc4]
shr eax, cl
mov edx, dword [ebp - 0xfc4]
mov edx, dword [ebp + edx*4 - 0x438]
mov ecx, dword [ebp - 0xfc8]
shl edx, cl
add eax, edx
xor edx, edx
mov ecx, 0xa
div ecx
mov dword [ebp - 0x87c], edx
mov edx, dword [ebp - 0xfc4]
mov eax, dword [ebp - 0xfc8]
mov ecx, dword [ebp - 0x87c]
mov cl, byte [ecx + str.0123456789]
mov byte [eax + edx*4 + 0x5952d8], cl
jmp 0x40ac7d
jmp 0x40ac55
push 0x104
push 0
lea edx, [ebp - 0xd98]
push edx
call fcn.00508920
add esp, 0xc
push 0x595074
push 0xc
push 0x5952d8
call fcn.00414ca0
add esp, 0xc
mov dword [ebp - 0x87c], 0
mov dword [ebp - 0xfcc], 0
jmp 0x40ad42
mov eax, dword [ebp - 0xfcc]
add eax, 1
mov dword [ebp - 0xfcc], eax
cmp dword [ebp - 0xfcc], 0xc
jge 0x40ad82
mov ecx, dword [ebp - 0xfcc]
movsx eax, byte [ecx + 0x5952d8]
xor edx, edx
mov ecx, 0xa
div ecx
mov dword [ebp - 0x87c], edx
mov edx, dword [ebp - 0xfcc]
mov eax, dword [ebp - 0x87c]
mov cl, byte [eax + str.0123456789]
mov byte [ebp + edx - 0xd98], cl
jmp 0x40ad33
mov edx, dword [ebp + 0xc]
push edx
push 0
mov eax, dword [ebp + 8]
push eax
call fcn.00508920
add esp, 0xc
push 0xc
lea ecx, [ebp - 0xd98]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.005089a0
add esp, 0xc
mov dword [ebp - 0xfd0], 0
jmp 0x40adc4
mov eax, dword [ebp - 0xfd0]
add eax, 1
mov dword [ebp - 0xfd0], eax
cmp dword [ebp - 0xfd0], 0xc
jge 0x40ae01
mov ecx, dword [ebp + 8]
add ecx, dword [ebp - 0xfd0]
movzx edx, byte [ecx]
mov eax, dword [ebp - 0xfd0]
and eax, 0x8000000f
jns 0x40adeb
dec eax
or eax, 0xfffffff0
inc eax
movzx ecx, byte [eax + 0x59529c]
xor edx, ecx
mov eax, dword [ebp + 8]
add eax, dword [ebp - 0xfd0]
mov byte [eax], dl
jmp 0x40adb5
mov eax, 1
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0050876f
mov esp, ebp
pop ebp
ret