Function at 0x40a3c0
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x42b2c9
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xcc
mov eax, dword [0x467c30]
xor eax, dword [esp + 0xd8]
push ebx
push ebp
xor ebx, ebx
push esi
mov ebp, 0xf
mov dword [esp + 0xd4], eax
push edi
mov dword [esp + 0x50], ecx
mov dword [esp + 0x30], ebp
mov dword [esp + 0x2c], ebx
mov byte [esp + 0x1c], bl
mov dword [esp + 0xe4], ebx
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x68], ebx
mov byte [esp + 0x58], bl
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x48], ebx
mov byte [esp + 0x38], bl
mov eax, 0x42d0a8
mov byte [esp + 0xe4], 2
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x40a438
sub eax, edx
push eax
push 0x42d0a8
lea ecx, [esp + 0x5c]
call fcn.004042f0
mov dword [esp + 0x14], ebx
mov edi, 0x10
lea esp, [esp]
xor eax, eax
mov al, byte [esp + 0x14]
add al, 0x30
lea ecx, [esp + 0x54]
lea edx, [esp + 0x94]
push eax
push ecx
push edx
call fcn.004096c0
add esp, 0xc
cmp dword [eax + 0x18], edi
mov byte [esp + 0xe4], 3
jb 0x40a490
mov eax, dword [eax + 4]
jmp 0x40a493
add eax, 4
push 0x42c33a
push eax
push 0x42d0a0
call fcn.004051a0
mov ecx, eax
call fcn.00405120
mov esi, eax
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
cmp al, bl
jne 0x40a4b1
sub ecx, edx
push ecx
push esi
lea ecx, [esp + 0x20]
call fcn.004042f0
mov ecx, dword [eax + 0x14]
mov eax, dword [esp + 0xac]
cmp ecx, ebx
sete byte [esp + 0x13]
cmp eax, edi
mov byte [esp + 0xe4], 2
jb 0x40a4f2
mov eax, dword [esp + 0x98]
push eax
call fcn.00420d2b
add esp, 4
cmp byte [esp + 0x13], bl
mov dword [esp + 0xac], ebp
mov dword [esp + 0xa8], ebx
mov byte [esp + 0x98], bl
jne 0x40a713
cmp dword [esp + 0x30], edi
mov eax, dword [esp + 0x1c]
jae 0x40a51f
lea eax, [esp + 0x1c]
push 0x42c33a
push 0x42d094
push eax
call fcn.004051a0
mov ecx, eax
call fcn.00405120
mov esi, eax
mov ecx, esi
lea edx, [ecx + 1]
lea ecx, [ecx]
mov al, byte [ecx]
inc ecx
cmp al, bl
jne 0x40a540
sub ecx, edx
push ecx
push esi
lea ecx, [esp + 0x3c]
call fcn.004042f0
cmp dword [eax + 0x14], ebx
je 0x40a713
cmp dword [esp + 0x4c], edi
mov eax, dword [esp + 0x38]
jae 0x40a56b
lea eax, [esp + 0x38]
push eax
call fcn.004051a0
mov ecx, eax
call fcn.00405160
test al, al
mov eax, dword [esp + 0x30]
je 0x40a6e7
cmp eax, edi
mov eax, dword [esp + 0x1c]
jae 0x40a590
lea eax, [esp + 0x1c]
push 0x42c33a
push 0x42d0a8
push eax
call fcn.004051a0
mov ecx, eax
call fcn.00405120
mov esi, eax
mov ecx, esi
lea edx, [ecx + 1]
mov edi, edi
mov al, byte [ecx]
inc ecx
cmp al, bl
jne 0x40a5b0
sub ecx, edx
push ecx
push esi
lea ecx, [esp + 0x3c]
call fcn.004042f0
cmp dword [eax + 0x14], ebx
je 0x40a713
push 0x20
call fcn.00420aa2
add esp, 4
cmp eax, ebx
je 0x40a5e8
mov dword [eax + 0x1c], ebp
mov dword [eax + 0x18], ebx
mov byte [eax + 8], bl
mov esi, eax
jmp 0x40a5ea
xor esi, esi
push 0xffffffffffffffff
push ebx
lea ecx, [esp + 0x3c]
push ecx
lea ecx, [esi + 4]
mov byte [esi], 1
call fcn.00404240
push esi
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0xb0], esp
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0x40]
mov dword [ecx + 0x18], ebp
mov dword [ecx + 0x14], ebx
push edx
mov byte [ecx + 4], bl
call fcn.00404240
lea eax, [esp + 0xd0]
push eax
call fcn.00409800
add esp, 0x24
mov esi, eax
push 0xffffffffffffffff
push ebx
push esi
lea ecx, [esp + 0x7c]
mov byte [esp + 0xf0], 4
mov dword [esp + 0x94], ebp
mov dword [esp + 0x90], ebx
mov byte [esp + 0x80], bl
call fcn.00404240
mov ecx, dword [esi + 0x1c]
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x50]
lea edx, [esp + 0x70]
push edx
lea eax, [esp + 0xd4]
push eax
add ecx, 0xc
mov byte [esp + 0xec], 5
call fcn.0040a260
cmp dword [esp + 0x88], edi
jb 0x40a69d
mov ecx, dword [esp + 0x74]
push ecx
call fcn.00420d2b
add esp, 4
cmp dword [esp + 0xc8], edi
mov dword [esp + 0x88], ebp
mov dword [esp + 0x84], ebx
mov byte [esp + 0x74], bl
mov byte [esp + 0xe4], 2
jb 0x40a6d0
mov edx, dword [esp + 0xb4]
push edx
call fcn.00420d2b
add esp, 4
mov dword [esp + 0xc8], ebp
mov dword [esp + 0xc4], ebx
mov byte [esp + 0xb4], bl
jmp 0x40a701
cmp eax, edi
mov eax, dword [esp + 0x1c]
jae 0x40a6f3
lea eax, [esp + 0x1c]
push eax
push 0x42d060
call fcn.004072b0
add esp, 8
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 0xa
mov dword [esp + 0x14], eax
jl 0x40a460
push 0x42d05c
push 0x42d04c
push 0x42d0a0
call fcn.004051a0
mov ecx, eax
call fcn.00405120
push eax
call fcn.004051a0
mov ecx, eax
call fcn.00405160
neg al
sbb al, al
inc al
push eax
push 0x42d05c
push 0x42d040
push 0x42d0a0
call fcn.004051a0
mov ecx, eax
call fcn.00405120
push eax
call fcn.004051a0
mov ecx, eax
call fcn.00405160
push eax
call fcn.00408360
push ebx
call fcn.00408380
add esp, 0xc
push 0x42d05c
push 0x42d02c
push 0x42d0a0
call fcn.004051a0
mov ecx, eax
call fcn.00405120
push eax
call fcn.004051a0
mov ecx, eax
call fcn.00405160
push eax
call fcn.00408390
mov eax, dword [esp + 0x50]
add esp, 4
cmp eax, edi
jb 0x40a7bf
mov eax, dword [esp + 0x38]
push eax
call fcn.00420d2b
add esp, 4
cmp dword [esp + 0x6c], edi
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x48], ebx
mov byte [esp + 0x38], bl
jb 0x40a7de
mov ecx, dword [esp + 0x58]
push ecx
call fcn.00420d2b
add esp, 4
cmp dword [esp + 0x30], edi
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x68], ebx
mov byte [esp + 0x58], bl
jb 0x40a7fd
mov edx, dword [esp + 0x1c]
push edx
call fcn.00420d2b
add esp, 4
mov ecx, dword [esp + 0xdc]
pop edi
pop esi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0xd0]
xor ecx, dword [esp + 0xe0]
pop ebp
pop ebx
add esp, 0xd8
jmp fcn.004211fa