Function at 0x10038e9
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1b0
push ebx
lea eax, [ebp - 0xac]
mov dword [ebp - 0xac], 0x94
push esi
push edi
xor esi, esi
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
jne 0x100391f
mov esi, 0x4b4
mov edi, dword [ebp + 8]
jmp 0x1003aaf
mov eax, dword [ebp - 0x9c]
cmp eax, 1
je 0x100393c
cmp eax, 2
je 0x100394c
mov esi, 0x4ca
mov edi, dword [ebp + 8]
jmp 0x1003aaf
mov word [0x1017ef4], 0
mov eax, 1
jmp 0x1003982
cmp dword [ebp - 0xa8], 3
mov word [0x1017ef4], 2
mov eax, 1
mov dword [0x1011c2c], eax
mov dword [0x1011c30], eax
ja 0x100398c
mov word [0x1017ef4], ax
jb 0x1003980
jne 0x100398c
cmp dword [ebp - 0xa4], 0x33
jae 0x100398c
xor eax, eax
mov dword [0x1011c2c], eax
mov dword [0x1011c30], eax
mov edi, dword [ebp + 8]
test edi, edi
je 0x1003aaf
cmp word [0x1017ef4], 0
lea ebx, [edi + 0x40]
je 0x10039a7
lea ebx, [edi + 4]
mov dword [ebp - 4], 0
mov ax, word [ebp - 0xa0]
mov word [ebp - 6], ax
mov eax, dword [ebp - 4]
imul eax, eax, 0x18
add eax, ebx
push dword [eax + 4]
push dword [eax]
push dword [ebp - 0xa4]
push dword [ebp - 0xa8]
call fcn.01002eba
mov ecx, dword [ebp - 4]
mov dword [ebp + ecx*4 - 0x18], eax
mov eax, ecx
imul eax, eax, 0x18
add eax, ebx
push dword [eax + 0x10]
push dword [eax + 0xc]
push dword [ebp - 0xa4]
push dword [ebp - 0xa8]
call fcn.01002eba
mov ecx, dword [ebp - 4]
mov dword [ebp + ecx*4 - 0x10], eax
lea eax, [ecx*4]
mov ecx, dword [ebp + ecx*4 - 0x18]
test ecx, ecx
jl 0x1003a6a
mov eax, dword [ebp + eax - 0x10]
test eax, eax
jg 0x1003a6a
test ecx, ecx
jne 0x1003a4e
test eax, eax
jne 0x1003a38
mov eax, dword [ebp - 4]
imul eax, eax, 0x18
add eax, ebx
movzx ecx, word [ebp - 6]
cmp dword [eax + 8], ecx
ja 0x1003a62
cmp dword [eax + 0x14], ecx
jmp 0x1003a60
test ecx, ecx
jne 0x1003a4e
mov eax, dword [ebp - 4]
imul eax, eax, 0x18
movzx ecx, word [ebp - 6]
cmp dword [eax + ebx + 8], ecx
jbe 0x1003a84
jmp 0x1003a62
test eax, eax
jne 0x1003a84
mov eax, dword [ebp - 4]
imul eax, eax, 0x18
movzx ecx, word [ebp - 6]
cmp dword [eax + ebx + 0x14], ecx
jae 0x1003a84
cmp dword [ebp - 4], 0
je 0x1003a70
jmp 0x1003a7f
cmp dword [ebp - 4], 1
je 0x1003a7f
inc dword [ebp - 4]
cmp dword [ebp - 4], 2
jl 0x10039b9
jmp 0x1003a84
mov esi, 0x54c
test esi, esi
jne 0x1003ab2
cmp dword [edi + 0x7c], 0
je 0x1003ab2
lea eax, [ebp - 4]
lea ecx, [ebp - 0x1b0]
push eax
push 0x104
push ecx
push edi
call fcn.01002cfd
test eax, eax
jne 0x1003ab2
mov esi, 0x54d
jmp 0x1003ab2
mov ebx, dword [ebp - 8]
cmp esi, 0x54d
je 0x1003ad8
cmp esi, 0x54c
je 0x1003ad8
xor eax, eax
test esi, esi
je 0x1003b72
push eax
push 0x10
push eax
push eax
push esi
push eax
jmp 0x1003b6d
mov dword [ebp - 8], 0
cmp esi, 0x54d
jne 0x1003b05
mov eax, dword [edi + 0x80]
mov ecx, dword [ebp - 4]
imul ecx, ecx, 0x3c
add eax, ecx
lea ecx, [ebp - 0x1b0]
mov dword [ebp - 8], ecx
lea ebx, [eax + edi + 0x84]
mov eax, dword [ebx + 0x34]
push dword [ebx + 0x30]
lea edi, [eax + edi + 0x84]
call fcn.01002e94
test byte [0x1011c4c], 1
mov ebx, eax
jne 0x1003b5e
cmp byte [edi], 0
je 0x1003b5e
push 0
call dword [sym.imp.USER32.dll_MessageBeep]
mov eax, ebx
or al, 0x30
push eax
push 0x1011344
push edi
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
test bl, 4
je 0x1003b50
cmp eax, 6
jne 0x1003b72
xor esi, esi
jmp 0x1003b72
test bl, 1
je 0x1003b72
cmp eax, 1
jne 0x1003b72
xor esi, esi
jmp 0x1003b72
push 0
push 0x30
push dword [ebp - 8]
push 0x1011344
push esi
push 0
call fcn.010044fb
pop edi
cmp esi, 1
sbb eax, eax
pop esi
pop ebx
mov esp, ebp
neg eax
pop ebp
ret 4