Function at 0x1005303c
Capabilities:
Check os version

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1008a798
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x20b8
call fcn.10062090
mov eax, dword [0x1009a008]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov eax, dword [ebp + 0x14]
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x20ac], eax
mov eax, dword [ebp + 8]
mov edi, ecx
mov dword [ebp - 0x20b0], eax
lea eax, [edi + 0x11fa4]
push eax
lea ecx, [ebp - 0x20c8]
mov dword [ebp - 0x20b8], edi
mov dword [ebp - 0x20b4], esi
call fcn.10037ac7
xor ebx, ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push 4
push 8
mov dword [ebp - 4], ebx
push 1
mov ecx, edi
mov byte [ebp - 4], 1
call fcn.10044f52
mov dword [ebp - 4], ebx
jmp 0x10053117
cmp dword [ebp + 0x14], ebx
jne 0x10053129
mov ecx, edi
call fcn.100455c5
mov dword [ebp - 0x20ac], eax
mov eax, dword [ebp - 0x20ac]
add eax, 0xfffffffc
cmp eax, 0xf
ja case.0x1005313e.10
movzx eax, byte [eax + 0x10053400]
jmp dword [eax*4 + 0x100533f4]
push dword [ebp + 8]
mov ecx, edi
push esi
call fcn.100504dc
jmp 0x100531ae
cmp dword [ebp + 8], 0xff
jne 0x1005318c
push 0x1000
lea eax, [ebp - 0x2014]
push ebx
push eax
call fcn.100620c0
add esp, 0xc
push 0x1000
lea eax, [ebp - 0x2014]
push eax
mov ecx, edi
call fcn.10041067
movzx eax, byte [ebp - 0x200e]
jmp 0x10053192
mov eax, dword [ebp - 0x20b0]
mov dword [edi + 0x11c70], eax
jmp 0x100531a0
mov eax, dword [ebp - 0x20b0]
push eax
push 1
push dword [ebp + 0x10]
mov ecx, edi
push esi
call fcn.100410d1
cmp dword [ebp - 0x20ac], 8
je 0x100531c4
cmp dword [ebp - 0x20ac], 7
jne 0x100532fc
movzx ebx, byte [esi + 0x18]
movzx eax, byte [esi + 0x19]
shl ebx, 8
or ebx, eax
movzx eax, byte [esi + 0x1a]
shl ebx, 8
or ebx, eax
movzx eax, byte [esi + 0x1b]
shl ebx, 8
or ebx, eax
mov al, byte [esi + 6]
test al, 0x20
je 0x100532fa
test al, 0x40
jne 0x100532fa
test ebx, ebx
jle 0x100532fa
push 0x1000
lea eax, [ebp - 0x1014]
push 0
push eax
call fcn.100620c0
add esp, 0xc
push 0x1000
lea eax, [ebp - 0x1014]
push eax
mov ecx, edi
call fcn.10040809
cmp byte [ebp - 0x1011], 8
jbe 0x10053258
movzx ecx, byte [ebp - 0x1008]
movzx eax, byte [ebp - 0x1007]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebp - 0x1006]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebp - 0x1005]
jmp 0x1005327e
movzx ecx, byte [ebp - 0x1010]
movzx eax, byte [ebp - 0x100f]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebp - 0x100e]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebp - 0x100d]
shl ecx, 8
or ecx, eax
mov al, byte [esi + 6]
and al, 0xcf
or al, 0x40
mov byte [esi + 6], al
mov eax, ebx
shr eax, 0x10
mov edx, eax
mov byte [esi + 0xd], al
or byte [esi + 7], 1
mov eax, ebx
shr eax, 8
mov byte [esi + 0xe], al
shr edx, 8
mov eax, ecx
sub eax, ebx
shr eax, 0x10
mov byte [esi + 0x11], al
mov byte [esi + 0xc], dl
mov edx, eax
mov eax, ecx
sub eax, ebx
shr eax, 8
mov byte [esi + 0x12], al
mov al, cl
sub al, bl
mov byte [esi + 0x13], al
shr edx, 8
mov eax, ecx
shr eax, 0x10
mov byte [esi + 0x10], dl
mov edx, eax
mov byte [esi + 0x19], al
shr edx, 8
mov eax, ecx
shr eax, 8
mov byte [esi + 0xf], bl
mov byte [esi + 0x14], 0
mov byte [esi + 0x15], 0
mov byte [esi + 0x16], 0
mov byte [esi + 0x17], 0
mov byte [esi + 0x18], dl
mov byte [esi + 0x1a], al
mov byte [esi + 0x1b], cl
xor ebx, ebx
lea eax, [edi + 0xc]
push 0x100053f0
push eax
call fcn.100621e0
pop ecx
pop ecx
test eax, eax
je 0x100533c8
add edi, 0x100c
push 0x10008a70
push edi
call fcn.100621e0
pop ecx
pop ecx
test eax, eax
jne 0x10053340
push 0x10008a68
push edi
call fcn.100621e0
pop ecx
pop ecx
test eax, eax
je 0x100533c8
mov edi, 0x94
push edi
lea eax, [ebp - 0x20a8]
push ebx
push eax
call fcn.100620c0
add esp, 0xc
lea eax, [ebp - 0x20a8]
push eax
mov dword [ebp - 0x20a8], edi
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0x2098], 2
jne 0x100533c8
cmp dword [ebp - 0x20a4], 5
jne 0x100533c8
cmp dword [ebp - 0x20a0], ebx
jne 0x100533c8
movzx eax, byte [esi + 0x10]
movzx ecx, byte [esi + 0x11]
shl eax, 8
or eax, ecx
movzx ecx, byte [esi + 0x12]
shl eax, 8
or eax, ecx
movzx ecx, byte [esi + 0x13]
shl eax, 8
or eax, ecx
mov ecx, 0x2800
cmp eax, ecx
jle 0x100533ad
sub eax, ecx
mov ecx, eax
shr ecx, 0x10
mov edx, ecx
mov byte [esi + 0x11], cl
shr edx, 8
mov ecx, eax
shr ecx, 8
mov byte [esi + 0x10], dl
mov byte [esi + 0x12], cl
mov byte [esi + 0x13], al
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x20c8]
call fcn.10037af5
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.10062074
leave
ret 0x10