Function at 0x100313c
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1b0
push ebx
push esi
push edi
lea eax, [ebp - 0xac]
xor edi, edi
push eax
mov dword [ebp - 4], edi
mov dword [ebp - 0xac], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
jne 0x1003247
mov dword [ebp - 4], 0x4b4
mov esi, dword [ebp + 8]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 4]
mov edx, 0x54d
cmp eax, edx
je 0x10031a2
cmp eax, 0x54c
je 0x10031a2
xor ecx, ecx
cmp eax, ecx
je 0x1003238
push ecx
push 0x10
push ecx
push ecx
push eax
push ecx
jmp 0x1003233
and dword [ebp - 0xc], 0
cmp eax, edx
jne 0x10031c8
imul ecx, ecx, 0x3c
mov eax, dword [ebp + 8]
add ecx, dword [eax + 0x80]
lea esi, [ecx + eax + 0x84]
lea ecx, [ebp - 0x1b0]
mov dword [ebp - 0xc], ecx
jmp 0x10031cb
mov eax, dword [ebp + 8]
mov ecx, dword [esi + 0x34]
push dword [esi + 0x30]
lea edi, [ecx + eax + 0x84]
call fcn.010025f7
test byte [0x100aab8], 1
mov ebx, eax
jne 0x1003222
cmp byte [edi], 0
je 0x1003222
push 0
call dword [sym.imp.USER32.dll_MessageBeep]
mov eax, ebx
or al, 0x30
push eax
push 0x100adf4
push edi
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
test bl, 4
je 0x1003212
cmp eax, 6
jmp 0x100321a
test bl, 1
je 0x1003238
cmp eax, 1
jne 0x1003238
and dword [ebp - 4], 0
jmp 0x1003238
push 0
push 0x30
push dword [ebp - 0xc]
push 0x100adf4
push dword [ebp - 4]
push 0
call fcn.01003cb8
xor eax, eax
pop edi
cmp dword [ebp - 4], eax
pop esi
pop ebx
sete al
leave
ret 4
mov eax, dword [ebp - 0x9c]
dec eax
je 0x10032a9
dec eax
je 0x100325f
mov dword [ebp - 4], 0x4ca
jmp 0x1003173
cmp dword [ebp - 0xa8], 3
push 1
pop ebx
mov word [0x100bc04], 2
mov dword [0x100a2f8], ebx
mov dword [0x100a2fc], ebx
ja 0x10032bf
cmp dword [ebp - 0xa8], 3
mov word [0x100bc04], bx
jb 0x100329b
jne 0x10032bf
cmp dword [ebp - 0xa4], 0x33
jae 0x10032bf
mov dword [0x100a2f8], edi
mov dword [0x100a2fc], edi
jmp 0x10032bf
push 1
mov word [0x100bc04], di
pop eax
push eax
mov dword [0x100a2f8], eax
mov dword [0x100a2fc], eax
pop ebx
cmp dword [0x100aab4], edi
jne 0x1003173
mov esi, dword [ebp + 8]
cmp esi, edi
je 0x1003173
cmp word [0x100bc04], di
jne 0x10032e4
add esi, 0x40
jmp 0x10032e7
add esi, 4
mov edi, dword [ebp - 0xa0]
xor ecx, ecx
mov dword [ebp - 8], ecx
lea eax, [ecx + ecx*2]
push dword [esi + eax*8 + 4]
lea eax, [esi + eax*8]
push dword [eax]
push dword [ebp - 0xa4]
push dword [ebp - 0xa8]
call fcn.01002614
mov ecx, dword [ebp - 8]
mov dword [ebp + ecx*4 - 0x10], eax
lea eax, [ecx + ecx*2]
push dword [esi + eax*8 + 0x10]
lea eax, [esi + eax*8]
push dword [eax + 0xc]
push dword [ebp - 0xa4]
push dword [ebp - 0xa8]
call fcn.01002614
mov ecx, dword [ebp - 8]
mov edx, dword [ebp + ecx*4 - 0x10]
mov dword [ebp + ecx*4 - 0x18], eax
test edx, edx
jl 0x100338b
test eax, eax
jg 0x100338b
test edx, edx
jne 0x1003375
test eax, eax
jne 0x1003363
lea eax, [ecx + ecx*2]
movzx edx, di
cmp edx, dword [esi + eax*8 + 8]
lea eax, [esi + eax*8]
jb 0x1003385
cmp edx, dword [eax + 0x14]
jmp 0x1003383
test edx, edx
jne 0x1003375
movzx edx, di
lea eax, [ecx + ecx*2]
cmp edx, dword [esi + eax*8 + 8]
jae 0x10033a5
jmp 0x1003385
test eax, eax
jne 0x10033a5
movzx edx, word [ebp - 0x75]
in al, dx
or al, 0x8b
jge 0x100338f
fld dword [ebx - 0x5b0cfc1f]
cld
add byte [esi + 0x57], dl
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
lodsb al, byte [esi]
scasb al, byte es:[edi]
jne 0x10033bc
test al, al
jne 0x10033b0
xor eax, eax
jmp 0x10033c5
mov eax, 1
jl 0x10033c5
neg eax
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
pop edi
pop esi
leave
ret