Function at 0x40bfaf
Capabilities:
Check os version
Get system information on windows

Disassembly:
mov eax, 0x454d60
call fcn.00454198
sub esp, 0xd4
push ebx
lea eax, [ebp - 0xe0]
push eax
mov dword [ebp - 0xe0], 0x94
call dword [sym.imp.KERNEL32.DLL_GetVersionExA]
mov eax, dword [ebp - 0xdc]
mov dword [edi], eax
mov eax, dword [ebp - 0xd8]
mov dword [edi + 4], eax
mov eax, dword [ebp - 0xd4]
mov dword [edi + 8], eax
lea eax, [ebp - 0xcc]
push eax
call fcn.00446710
xor ebx, ebx
cmp eax, ebx
pop ecx
jg 0x40c0f3
mov byte [edi + 0xc], bl
cmp dword [ebp - 0xd0], 2
mov byte [edi + 0x10c], bl
mov byte [edi + 0x10d], bl
mov byte [edi + 0x120], bl
mov byte [edi + 0x10e], bl
mov byte [edi + 0x10f], bl
mov byte [edi + 0x114], bl
mov byte [edi + 0x115], bl
mov byte [edi + 0x110], bl
mov byte [edi + 0x111], bl
mov byte [edi + 0x116], bl
mov byte [edi + 0x117], bl
mov byte [edi + 0x118], bl
mov byte [edi + 0x119], bl
mov byte [edi + 0x112], bl
mov byte [edi + 0x113], bl
mov byte [edi + 0x11c], bl
mov byte [edi + 0x11d], bl
mov byte [edi + 0x11a], bl
mov byte [edi + 0x11b], bl
mov byte [edi + 0x11e], bl
mov byte [edi + 0x11f], bl
jne 0x40c1cb
mov eax, dword [edi]
sub eax, 4
mov byte [edi + 0x10c], 1
je 0x40c1bb
dec eax
je 0x40c157
dec eax
jne 0x40c222
mov eax, dword [edi + 4]
cmp eax, ebx
mov byte [edi + 0x10f], 1
jne 0x40c125
mov byte [edi + 0x115], 1
mov byte [edi + 0x111], 1
mov byte [edi + 0x119], 1
mov byte [edi + 0x118], 1
jmp 0x40c222
lea ecx, [ebp + eax - 0xcc]
cmp byte [ecx], 0x20
jne 0x40c0f8
mov byte [ecx], bl
dec eax
cmp eax, ebx
jg 0x40c0e5
xor ecx, ecx
cmp eax, ebx
jle 0x40c10d
cmp byte [ebp + ecx - 0xcc], 0x20
jne 0x40c10d
inc ecx
cmp ecx, eax
jl 0x40c0fe
lea eax, [ebp + ecx - 0xcc]
push eax
lea eax, [edi + 0xc]
push eax
call fcn.00446290
pop ecx
pop ecx
jmp 0x40c00b
cmp eax, 1
jne 0x40c222
mov byte [edi + 0x111], al
mov byte [edi + 0x117], al
mov byte [edi + 0x115], al
mov byte [edi + 0x119], al
mov byte [edi + 0x113], al
mov byte [edi + 0x112], al
jmp 0x40c222
mov eax, dword [edi + 4]
cmp eax, ebx
mov byte [edi + 0x10f], 1
jne 0x40c178
mov byte [edi + 0x115], 1
mov byte [edi + 0x114], 1
jmp 0x40c222
cmp eax, 1
jne 0x40c194
mov byte [edi + 0x115], al
mov byte [edi + 0x111], al
mov byte [edi + 0x110], al
jmp 0x40c222
cmp eax, 2
jb 0x40c222
mov byte [edi + 0x115], 1
mov byte [edi + 0x111], 1
mov byte [edi + 0x117], 1
mov byte [edi + 0x116], 1
jmp 0x40c222
mov byte [edi + 0x10f], 1
mov byte [edi + 0x10e], 1
jmp 0x40c222
movzx eax, word [ebp - 0xd4]
mov dword [edi + 8], eax
mov eax, dword [edi + 4]
cmp eax, ebx
mov byte [edi + 0x10d], 1
mov byte [edi + 0x11d], 1
je 0x40c21b
cmp eax, 0xa
je 0x40c20b
cmp eax, 0x5a
jne 0x40c222
mov byte [edi + 0x11b], 1
mov byte [edi + 0x11f], 1
mov byte [edi + 0x11e], 1
jmp 0x40c222
mov byte [edi + 0x11b], 1
mov byte [edi + 0x11a], 1
jmp 0x40c222
mov byte [edi + 0x11c], 1
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x20], ebx
lea eax, [ebp - 0x10]
mov dword [ebp - 4], ebx
push eax
mov dword [ebp - 0x10], ebx
call dword [sym.imp.KERNEL32.DLL_GetCurrentProcess]
push eax
lea eax, [ebp - 0x28]
call fcn.0040c2fa
call eax
cmp dword [ebp - 0x10], 1
jne 0x40c250
mov byte [edi + 0x120], 1
cmp byte [edi + 0x120], bl
je 0x40c28f
push esi
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x14], ebx
lea esi, [ebp - 0x1c]
mov byte [ebp - 4], 1
call fcn.0040c326
cmp dword [ebp - 0x14], ebx
pop esi
je 0x40c27f
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x1c]
call fcn.0040c310
call eax
cmp dword [ebp - 0x1c], ebx
je 0x40c299
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
jmp 0x40c299
lea eax, [ebp - 0x4c]
push eax
call dword [sym.imp.KERNEL32.DLL_GetSystemInfo]
mov ax, word [ebp - 0x4c]
cmp ax, bx
jne 0x40c2ae
mov dword [edi + 0x124], 1
jmp 0x40c2dd
cmp ax, 6
jne 0x40c2c0
mov dword [edi + 0x124], 2
jmp 0x40c2dd
cmp ax, 9
jne 0x40c2d2
mov dword [edi + 0x124], 3
jmp 0x40c2dd
movzx eax, ax
neg eax
mov dword [edi + 0x124], eax
cmp dword [ebp - 0x28], ebx
pop ebx
je 0x40c2ec
push dword [ebp - 0x28]
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
mov ecx, dword [ebp - 0xc]
mov eax, edi
mov dword fs:[0], ecx
leave
ret