Function at 0x40e185
Capabilities:
Get system information on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x138
mov eax, dword [0x415884]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
push esi
mov esi, ecx
mov dword [ebp - 0x138], edx
push edi
mov edi, dword [ebp + 8]
test esi, esi
je 0x40e86d
mov eax, dword [esi + 0x70]
xor ecx, ecx
mov dword [ebp - 0x134], ecx
test eax, eax
je 0x40e1ce
cmp eax, dword [esi]
jae 0x40e1ce
lea ebx, [eax + esi]
mov dword [ebp - 0x12c], ebx
jmp 0x40e1d6
mov ebx, ecx
mov dword [ebp - 0x12c], ecx
mov eax, dword [esi + 0x6c]
test eax, eax
je 0x40e1eb
cmp eax, dword [esi]
jae 0x40e1eb
add eax, esi
mov dword [ebp - 0x130], eax
jmp 0x40e1f1
mov dword [ebp - 0x130], ecx
cmp dword [ebp + 0xc], ecx
je 0x40e219
push edi
push 0x4040fc
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
pop ecx
mov ecx, edi
call fcn.0040d9f1
push eax
push fcn.00404138
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
pop ecx
cmp edi, 5
je 0x40e86d
mov eax, 0x404144
test ebx, ebx
je 0x40e22d
mov eax, ebx
push eax
push fcn.00404148
call dword [sym.imp.msvcrt.dll_wprintf]
push 0x404184
push dword [ebp - 0x12c]
lea ebx, [esi + 8]
call dword [sym.imp.msvcrt.dll__wcsicmp]
add esp, 0x10
test eax, eax
jne 0x40e27c
mov eax, dword [ebx]
or eax, dword [ebx + 4]
jne 0x40e27c
cmp dword [ebp - 0x138], eax
mov eax, 0x4041a0
mov byte [ebp - 0x125], 1
jne 0x40e274
mov eax, 0x4041cc
push eax
push 0x4041f8
jmp 0x40e2a7
xor eax, eax
mov byte [ebp - 0x125], al
test edi, edi
jne 0x40e86d
push dword [ebx + 4]
push dword [ebx]
push 0x404238
call dword [sym.imp.msvcrt.dll_wprintf]
add esp, 0xc
push dword [esi + 0x68]
push 0x40427c
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
pop ecx
lea eax, [esi + 0x18]
mov edx, 0x80
push eax
lea ecx, [ebp - 0x10c]
call fcn.0040c61c
lea eax, [ebp - 0x10c]
push eax
push 0x4042b4
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
pop ecx
mov ecx, dword [ebx]
call fcn.0040dfc0
cmp dword [esi + 0x30], 0
jne 0x40e2f1
push 0x4042f0
call dword [sym.imp.msvcrt.dll_wprintf]
jmp 0x40e300
push dword [esi + 0x30]
push 0x404340
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
cmp dword [esi + 0x38], 0
pop ecx
jne 0x40e314
push 0x404380
call dword [sym.imp.msvcrt.dll_wprintf]
jmp 0x40e323
push dword [esi + 0x38]
push 0x4043d0
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
cmp dword [esi + 0x34], 0
pop ecx
jne 0x40e337
push 0x404408
call dword [sym.imp.msvcrt.dll_wprintf]
jmp 0x40e346
push dword [esi + 0x34]
push 0x404458
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
cmp byte [ebp - 0x125], 0
pop ecx
jne 0x40e3b5
push dword [esi + 0x50]
push fcn.00404490
call dword [sym.imp.msvcrt.dll_wprintf]
push dword [esi + 0x54]
push 0x4044c8
call dword [sym.imp.msvcrt.dll_wprintf]
push dword [esi + 0x5c]
push 0x404500
call dword [sym.imp.msvcrt.dll_wprintf]
push dword [esi + 0x58]
push 0x404538
call dword [sym.imp.msvcrt.dll_wprintf]
push dword [esi + 0x60]
push 0x404570
call dword [sym.imp.msvcrt.dll_wprintf]
push dword [esi + 0x64]
push 0x4045a8
call dword [sym.imp.msvcrt.dll_wprintf]
push dword [esi + 4]
push 0x4045e0
call dword [sym.imp.msvcrt.dll_wprintf]
add esp, 0x38
cmp dword [esi + 0x28], 1
jne 0x40e3c2
push fcn.00404618
jmp 0x40e3e1
cmp dword [esi + 0x28], 2
jne 0x40e3cf
push 0x404668
jmp 0x40e3e1
cmp dword [esi + 0x28], 3
jne 0x40e3dc
push 0x4046b0
jmp 0x40e3e1
push 0x4046f8
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
push 0x40473c
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test al, 0x40
je 0x40e40a
push 0x404770
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test eax, 0x1000000
je 0x40e420
push 0x40478c
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test al, al
jns 0x40e433
push 0x40479c
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test eax, 0x2000000
je 0x40e449
push 0x4047ac
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test eax, 0x800
je 0x40e45f
push 0x4047bc
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test eax, eax
jns 0x40e472
push fcn.004047d0
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test eax, 0x80000
je 0x40e488
push 0x4047f4
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test eax, 0x8000000
je 0x40e49e
push 0x40480c
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test eax, 0x400
je 0x40e4af
push 0x404828
jmp 0x40e532
test al, 4
je 0x40e4c2
push 0x404848
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test al, 0x20
je 0x40e4d5
push 0x404858
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test eax, 0x200
je 0x40e4eb
push 0x404874
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test al, 2
je 0x40e4f6
push 0x40488c
jmp 0x40e506
test al, 8
je 0x40e501
push 0x4048a0
jmp 0x40e506
push 0x4048b4
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test eax, 0x40000
je 0x40e526
push 0x4048cc
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x40]
pop ecx
test eax, 0x100
je 0x40e539
push 0x4048f0
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
push 0x403d74
call dword [sym.imp.msvcrt.dll_wprintf]
test dword [esi + 0x40], 0x10000000
pop ecx
je 0x40e55a
push 0x404904
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
cmp byte [0x415be8], 0
je 0x40e58d
test dword [esi + 0x40], 0xc00000
je 0x40e58d
test dword [esi + 0x40], 0x400000
mov eax, fcn.0040493c
jne 0x40e57f
mov eax, 0x404948
push eax
push 0x404958
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
pop ecx
mov eax, dword [esi + 0x3c]
test eax, eax
je 0x40e5b3
test dword [esi + 0x40], 0x2000
push eax
je 0x40e5ac
push 0x404994
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
jmp 0x40e5be
push 0x4049d4
jmp 0x40e5a3
push 0x404a18
call dword [sym.imp.msvcrt.dll_wprintf]
cmp dword [esi + 0x44], 0
pop ecx
jbe 0x40e5ed
mov eax, dword [esi + 0x40]
shr eax, 4
test al, 1
mov eax, 0x404a5c
jne 0x40e5d9
mov eax, 0x404a64
push eax
push dword [esi + 0x44]
push 0x404a70
call dword [sym.imp.msvcrt.dll_wprintf]
add esp, 0xc
jmp 0x40e5f9
push 0x404ab0
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
mov edx, dword [esi + 0x40]
mov ecx, dword [ebx]
call fcn.0040dd55
test al, al
jne 0x40e77c
xor eax, eax
cmp dword [esi + 0x48], eax
je 0x40e77c
push fcn.00403fe8
call dword [sym.imp.msvcrt.dll_wprintf]
mov edi, dword [ebp - 0x12c]
pop ecx
test edi, edi
je 0x40e760
mov ecx, 0x404af4
mov eax, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40e65f
test dx, dx
je 0x40e659
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40e65f
add eax, 4
add ecx, 4
test dx, dx
jne 0x40e637
xor edx, edx
mov eax, edx
jmp 0x40e666
sbb eax, eax
or eax, 1
xor edx, edx
test eax, eax
je 0x40e6a2
mov eax, 0x404b18
mov cx, word [edi]
cmp cx, word [eax]
jne 0x40e695
test cx, cx
je 0x40e691
mov cx, word [edi + 2]
cmp cx, word [eax + 2]
jne 0x40e695
add edi, 4
add eax, 4
test cx, cx
jne 0x40e66f
mov eax, edx
jmp 0x40e69a
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40e760
mov eax, dword [esi + 0x48]
test al, 1
je 0x40e6b8
push 0x404b58
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x48]
pop ecx
test al, 2
je 0x40e6cb
push 0x404b6c
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x48]
pop ecx
test eax, 0x100
je 0x40e6e1
push 0x404b7c
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x48]
pop ecx
test eax, 0x200
je 0x40e6f7
push 0x404b88
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x48]
pop ecx
test eax, 0x1000
je 0x40e70d
push 0x404b94
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x48]
pop ecx
test eax, 0x2000
je 0x40e723
push 0x404bac
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x48]
pop ecx
test al, 4
je 0x40e736
push fcn.00404bc4
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x48]
pop ecx
test eax, 0x10000
je 0x40e74c
push 0x404bdc
call dword [sym.imp.msvcrt.dll_wprintf]
mov eax, dword [esi + 0x48]
pop ecx
test eax, 0x20000
je 0x40e770
push 0x404bec
call dword [sym.imp.msvcrt.dll_wprintf]
jmp 0x40e76f
push dword [esi + 0x48]
push 0x404c00
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
pop ecx
push 0x403d74
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
mov ecx, dword [ebx]
call fcn.0040e06c
cmp byte [ebp - 0x125], 0
mov edi, dword [ebp - 0x130]
je 0x40e7ca
test edi, edi
je 0x40e7b0
mov ecx, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, word [ebp - 0x134]
jne 0x40e79b
sub ecx, edx
sar ecx, 1
jne 0x40e7ca
push 0x404c10
call dword [sym.imp.msvcrt.dll_wprintf]
mov dword [esp], 0x404c68
call dword [sym.imp.msvcrt.dll_wprintf]
jmp 0x40e7db
test edi, edi
je 0x40e7dc
push edi
push fcn.00404cf8
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
pop ecx
test dword [esi + 0x40], 0x8000
je 0x40e7ec
push 0x404d34
jmp 0x40e7fa
test dword [esi + 0x40], 0x4000
je 0x40e801
push 0x404d78
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
mov eax, dword [ebx]
xor ecx, ecx
mov dword [ebp - 0x11c], eax
mov eax, dword [ebx + 4]
push ecx
mov dword [ebp - 0x118], eax
lea eax, [ebp - 0x124]
push 0x18
push eax
push 0x1f
mov dword [ebp - 0x120], ecx
mov dword [ebp - 0x114], ecx
mov dword [ebp - 0x110], ecx
mov dword [ebp - 0x124], 0x12
call dword [sym.imp.ntdll.dll_NtQuerySystemInformation]
test eax, eax
sets al
dec al
and al, byte [ebp - 0x114]
je 0x40e85d
push fcn.00404db8
call dword [sym.imp.msvcrt.dll_wprintf]
pop ecx
cmp dword [ebp + 0x10], 0
je 0x40e86d
push dword [ebx + 4]
push dword [ebx]
call fcn.0040dc6d
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00413fa0
leave
ret 0xc