Function at 0x4038c7
Capabilities:
Check os version

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x1b8
mov eax, dword [0x408004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
lea eax, [ebp - 0x19c]
mov dword [ebp - 0x19c], 0x94
mov edi, ecx
xor ebx, ebx
push eax
mov dword [ebp - 0x1b4], edi
mov esi, ebx
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
jne 0x40390d
mov esi, 0x4b4
jmp 0x40392b
mov eax, dword [ebp - 0x18c]
mov edx, dword [ebp - 0x198]
push 2
pop ecx
sub eax, 1
je 0x403980
sub eax, 1
je 0x403935
mov esi, 0x4ca
push ebx
push 0x10
push ebx
push ebx
jmp 0x403bf2
xor ebx, ebx
mov word [0x409a40], cx
push 3
inc ebx
pop eax
mov dword [0x408184], ebx
mov dword [0x408180], ebx
cmp edx, eax
ja 0x403976
mov ecx, ebx
mov word [0x409a40], cx
jb 0x403968
jne 0x403998
cmp dword [ebp - 0x194], 0x33
jae 0x403998
and dword [0x408184], esi
and dword [0x408180], esi
jmp 0x403998
cmp edx, 5
jb 0x403998
mov cx, ax
jmp 0x403991
xor ebx, ebx
xor ecx, ecx
inc ebx
mov dword [0x408184], ebx
mov dword [0x408180], ebx
mov word [0x409a40], cx
cmp dword [0x408a34], esi
jne 0x403bfb
test edi, edi
je 0x403bfb
xor eax, eax
test cx, cx
setne al
dec eax
and eax, 0x3c
add eax, 4
add edi, eax
xor eax, eax
and dword [ebp - 0x1ac], eax
and dword [ebp - 0x1b0], eax
xor edx, edx
mov dword [ebp - 0x1a8], eax
mov dword [ebp - 0x1a4], eax
mov ecx, dword [ebp - 0x198]
imul eax, edx, 0x18
mov edx, dword [ebp - 0x194]
mov dword [ebp - 0x1a0], eax
push dword [eax + edi + 4]
push dword [eax + edi]
call fcn.00402c04
mov dword [ebp - 0x1b8], eax
mov eax, dword [ebp - 0x1a0]
push dword [eax + edi + 0x10]
push dword [eax + edi + 0xc]
call fcn.00402c04
mov edx, dword [ebp - 0x1b8]
mov ecx, eax
test edx, edx
js 0x403adc
mov eax, dword [ebp - 0x1b0]
test ecx, ecx
jg 0x403ae2
test edx, edx
jne 0x403a69
mov eax, dword [ebp - 0x190]
test ecx, ecx
jne 0x403a54
movzx ecx, ax
mov eax, dword [ebp - 0x1a0]
cmp ecx, dword [eax + edi + 8]
jb 0x403a8a
cmp ecx, dword [eax + edi + 0x14]
jmp 0x403a84
mov ecx, dword [ebp - 0x1a0]
movzx eax, ax
cmp eax, dword [ecx + edi + 8]
jae 0x403b12
jmp 0x403a8a
test ecx, ecx
jne 0x403b12
mov ecx, dword [ebp - 0x1a0]
mov eax, dword [ebp - 0x190]
movzx eax, ax
cmp eax, dword [ecx + edi + 0x14]
jbe 0x403b12
mov eax, dword [ebp - 0x1a8]
test eax, eax
je 0x403aec
and dword [ebp - 0x1a4], 0
xor edx, edx
xor ebx, ebx
mov esi, 0x54c
mov dword [ebp - 0x1a0], edx
test edi, edi
je 0x403b7e
mov ecx, dword [ebp - 0x1b4]
mov eax, dword [edi + 0x30]
lea edx, [ecx + 0x84]
add edx, dword [edi + 0x34]
mov dword [ebp - 0x1a0], edx
test al, 1
je 0x403b6f
mov ebx, 0x104
jmp 0x403b7e
mov eax, dword [ebp - 0x1ac]
cmp eax, ebx
je 0x403a94
mov eax, dword [ebp - 0x1a8]
inc eax
mov edx, eax
mov dword [ebp - 0x1a8], eax
mov dword [ebp - 0x1a4], eax
mov ecx, eax
mov dword [ebp - 0x1ac], ecx
mov dword [ebp - 0x1b0], ecx
cmp edx, 2
jl 0x4039d9
mov edi, dword [ebp - 0x1b4]
cmp dword [edi + 0x7c], esi
je 0x403bfb
lea eax, [ebp - 0x1a4]
push eax
push ecx
lea edx, [ebp - 0x108]
mov ecx, edi
call fcn.00402a53
test eax, eax
jne 0x403bfb
imul eax, dword [ebp - 0x1a4], 0x3c
xor edx, edx
mov ecx, dword [edi + 0x80]
xor ebx, ebx
add edi, 0x84
mov esi, 0x54d
add ecx, eax
lea eax, [ebp - 0x108]
add edi, ecx
mov dword [ebp - 0x1a4], eax
jmp 0x403aa4
and al, 2
movzx ebx, al
neg ebx
sbb ebx, ebx
and ebx, 0x101
test byte [0x408a38], 1
jne 0x403be3
test edx, edx
je 0x403be3
cmp byte [edx], 0
je 0x403be3
push 0
call dword [sym.imp.USER32.dll_MessageBeep]
call fcn.00406b0d
test eax, eax
je 0x403bb2
push ecx
call fcn.00406ab3
test eax, eax
je 0x403bb2
mov eax, 0x180030
jmp 0x403bb5
push 0x30
pop eax
or eax, ebx
push eax
push 0x409154
push dword [ebp - 0x1a0]
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
test bl, 4
je 0x403bd5
cmp eax, 6
jmp 0x403bdd
test bl, 1
je 0x403bfb
cmp eax, 1
jne 0x403bfb
xor esi, esi
jmp 0x403bfb
push 0
push 0x30
push dword [ebp - 0x1a4]
push 0x409154
mov edx, esi
xor ecx, ecx
call fcn.004046c7
mov ecx, dword [ebp - 4]
xor eax, eax
test esi, esi
pop edi
sete al
xor ecx, ebp
pop esi
pop ebx
call fcn.00406ff0
leave
ret