Function at 0x440220
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x45ddc8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x58
mov eax, dword [ebp + 8]
cmp eax, 0x111
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x10], 0
jne 0x440274
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
mov eax, dword [edi]
push ecx
push edx
mov ecx, edi
call dword [eax + 0x70]
test eax, eax
je 0x44036d
mov dword [ebp - 0x10], 1
jmp case.0x440498.38
cmp eax, 0x4e
jne 0x4402a2
mov eax, dword [ebp + 0x10]
cmp dword [eax], 0
je 0x44036d
mov edx, dword [edi]
lea ecx, [ebp - 0x10]
push ecx
push eax
mov eax, dword [ebp + 0xc]
push eax
mov ecx, edi
call dword [edx + 0x74]
test eax, eax
jne case.0x440498.38
jmp 0x44036d
cmp eax, 6
mov esi, dword [ebp + 0x10]
jne 0x4402c6
push 1
call fcn.0043d3a0
push esi
mov ecx, eax
call fcn.00444950
mov ebx, dword [ebp + 0xc]
push eax
push ebx
push edi
call fcn.0043f910
jmp 0x4402ee
cmp eax, 0x20
jne 0x4402eb
mov ecx, esi
shr ecx, 0x10
movsx edx, si
push ecx
push edx
push edi
call fcn.0043f980
test eax, eax
je 0x4402eb
mov dword [ebp - 0x10], 1
jmp case.0x440498.38
mov ebx, dword [ebp + 0xc]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x28]
mov edx, dword [ebp + 8]
mov dword [ebp - 0x14], eax
xor eax, edx
and eax, 0x1ff
push 7
mov dword [ebp + 0x10], eax
call fcn.0045a2a0
mov eax, dword [ebp + 0x10]
mov edx, dword [ebp + 8]
lea eax, [eax + eax*2]
mov ecx, dword [eax*4 + 0x476718]
lea eax, [eax*4 + 0x476718]
cmp edx, ecx
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x18], eax
jne 0x440358
cmp ecx, dword [eax + 8]
jne 0x440358
mov ecx, dword [eax + 4]
push 7
mov dword [ebp + 0x10], ecx
call fcn.0045a320
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x44036d
cmp dword [ebp + 8], 0xc000
jb 0x440469
jmp 0x440873
xor ebx, ebx
cmp ecx, ebx
mov dword [eax], edx
mov dword [eax + 8], ecx
jne 0x440390
push 7
mov dword [eax + 4], ebx
call fcn.0045a320
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x10
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x14]
jmp 0x440390
cmp edx, 0xc000
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], ebx
jae 0x4403f8
mov edx, dword [ecx + 4]
mov dword [ebp + 0x10], edx
mov ebx, dword [ebp + 0x10]
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x1c]
cmp dword [ebx + 0x10], 0
je 0x4403d3
cmp eax, dword [ebx]
je 0x4403bf
add ebx, 0x18
jmp 0x4403b0
cmp edx, dword [ebx + 4]
jne 0x4403ba
cmp ecx, dword [ebx + 8]
jb 0x4403ba
cmp ecx, dword [ebx + 0xc]
ja 0x4403ba
mov dword [ebp + 0x10], ebx
jmp 0x4403d8
xor eax, eax
mov dword [ebp + 0x10], eax
mov eax, dword [ebp + 0x10]
test eax, eax
mov dword [ebp + 0x10], eax
jne 0x440456
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
xor ebx, ebx
test eax, eax
mov dword [ebp - 0x14], eax
jne 0x440382
mov eax, dword [ebp - 0x18]
jmp 0x440363
mov eax, dword [ecx + 4]
mov dword [ebp - 0x24], 0xc000
mov dword [ebp + 0x10], eax
mov ebx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x20]
cmp dword [ebx + 0x10], 0
je 0x440434
cmp eax, dword [ebx]
je 0x440420
add ebx, 0x18
jmp 0x440411
cmp edx, dword [ebx + 4]
jne 0x44041b
cmp ecx, dword [ebx + 8]
jb 0x44041b
cmp ecx, dword [ebx + 0xc]
ja 0x44041b
mov dword [ebp + 0x10], ebx
jmp 0x440439
xor eax, eax
mov dword [ebp + 0x10], eax
mov eax, dword [ebp + 0x10]
test eax, eax
mov dword [ebp + 0x10], eax
je 0x4403e2
mov ecx, dword [eax + 0x10]
mov edx, dword [ebp + 8]
cmp dword [ecx], edx
je 0x440860
add eax, 0x18
jmp 0x440402
mov ecx, dword [ebp - 0x18]
push 7
mov dword [ecx + 4], eax
call fcn.0045a320
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
cmp dword [ecx + 8], 0x1a
mov eax, dword [ecx + 0x14]
mov edx, dword [ecx + 0x10]
mov dword [ebp + 8], eax
jne 0x44048e
call dword [sym.imp.KERNEL32.dll_GetVersion]
mov ecx, dword [ebp + 0x10]
cmp al, 4
mov eax, dword [ebp + 8]
sbb edx, edx
and edx, 0xfffffff0
add edx, 0x2f
dec edx
cmp edx, 0x30
ja case.0x440498.38
jmp dword [edx*4 + 0x4408a4]
push ebx
call fcn.00447200
push eax
mov ecx, edi
call dword [ebp + 8]
jmp 0x44087c
push ebx
mov ecx, edi
call eax
jmp 0x44087c
push 1
call fcn.0043d3a0
push ebx
mov ecx, eax
call fcn.00444950
mov edx, esi
shr edx, 0x10
movsx ecx, si
push edx
push ecx
push eax
mov ecx, edi
call dword [ebp + 8]
jmp 0x44087c
push 1
call fcn.0043d3a0
push ebx
mov ecx, eax
call fcn.00444950
push esi
push eax
mov ecx, edi
call dword [ebp + 8]
jmp 0x44087c
lea ecx, [ebp - 0x30]
call fcn.00447610
mov edx, dword [esi + 4]
xor ebx, ebx
lea ecx, [ebp - 0x64]
mov dword [ebp - 4], ebx
mov dword [ebp - 0x2c], edx
call fcn.0043d280
mov eax, dword [esi]
mov esi, dword [esi + 8]
push eax
mov byte [ebp - 4], 1
mov dword [ebp - 0x48], eax
call fcn.0043dd00
cmp eax, ebx
jne 0x44052d
lea eax, [ebp - 0x64]
push esi
push eax
lea eax, [ebp - 0x30]
push eax
mov ecx, edi
call dword [ebp + 8]
lea ecx, [ebp - 0x64]
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x10], eax
mov byte [ebp - 4], 0
call fcn.0043eb90
lea ecx, [ebp - 0x30]
mov dword [ebp - 4], 0xffffffff
call fcn.00447630
jmp case.0x440498.38
lea ecx, [ebp - 0x30]
call fcn.00447610
mov ecx, dword [esi + 4]
mov esi, dword [esi + 8]
push esi
lea edx, [ebp - 0x30]
mov dword [ebp - 0x2c], ecx
push edx
mov ecx, edi
mov dword [ebp - 4], 2
call dword [ebp + 8]
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x10], eax
mov dword [ebp - 4], 0xffffffff
call fcn.00447630
jmp case.0x440498.38
push 1
call fcn.0043d3a0
push esi
mov ecx, eax
call fcn.00444950
mov ecx, ebx
shr ecx, 0x10
push ecx
movzx edx, bx
push eax
push edx
mov ecx, edi
call dword [ebp + 8]
jmp 0x44087c
mov ecx, ebx
shr ecx, 0x10
movzx edx, bx
push ecx
push edx
jmp 0x440878
push 1
call fcn.0043d3a0
push ebx
mov ecx, eax
call fcn.00444950
mov ecx, esi
shr ecx, 0x10
push ecx
movsx edx, si
push edx
push eax
mov ecx, edi
call dword [ebp + 8]
jmp 0x44087c
push esi
mov ecx, edi
call eax
jmp 0x44087c
push esi
call fcn.00444270
push eax
mov eax, ebx
shr eax, 0x10
movzx ecx, bx
push eax
push ecx
mov ecx, edi
call dword [ebp + 8]
jmp 0x44087c
mov ecx, edi
call eax
jmp case.0x440498.38
push ebx
mov ecx, edi
call eax
jmp case.0x440498.38
mov edx, esi
shr edx, 0x10
movsx ecx, dx
movsx edx, si
push ecx
push edx
mov ecx, edi
call eax
jmp case.0x440498.38
mov ecx, esi
shr ecx, 0x10
push ecx
movzx edx, si
push edx
push ebx
mov ecx, edi
call eax
jmp case.0x440498.38
push 1
call fcn.0043d3a0
push ebx
mov ecx, eax
call fcn.00444950
push 1
mov ebx, eax
call fcn.0043d3a0
push esi
mov ecx, eax
call fcn.00444950
mov edx, dword [edi + 0x1c]
push ebx
push eax
xor eax, eax
cmp edx, esi
sete al
mov ecx, edi
push eax
call dword [ebp + 8]
jmp case.0x440498.38
push ebx
call fcn.00447200
push eax
mov ecx, edi
call dword [ebp + 8]
jmp case.0x440498.38
push ebx
call fcn.00444270
push eax
mov ecx, edi
call dword [ebp + 8]
jmp case.0x440498.38
mov ecx, esi
shr ecx, 0x10
movzx edx, si
push ecx
push edx
push ebx
call fcn.00444270
push eax
mov ecx, edi
call dword [ebp + 8]
jmp case.0x440498.38
push 1
call fcn.0043d3a0
push ebx
mov ecx, eax
call fcn.00444950
push eax
mov ecx, edi
call dword [ebp + 8]
jmp case.0x440498.38
push 1
call fcn.0043d3a0
push esi
mov ecx, eax
call fcn.00444950
push eax
mov ecx, edi
call dword [ebp + 8]
jmp case.0x440498.38
push 1
call fcn.0043d3a0
push ebx
mov ecx, eax
call fcn.00444950
mov ecx, esi
shr ecx, 0x10
push ecx
movzx edx, si
push edx
push eax
mov ecx, edi
call dword [ebp + 8]
jmp case.0x440498.38
movsx eax, si
shr esi, 0x10
push 1
mov dword [ebp - 0x28], eax
movsx esi, si
call fcn.0043d3a0
push ebx
mov ecx, eax
call fcn.00444950
mov ecx, dword [ebp - 0x28]
push esi
push ecx
push eax
mov ecx, edi
call dword [ebp + 8]
jmp case.0x440498.38
push 1
call fcn.0043d3a0
push ebx
mov ecx, eax
call fcn.00444950
push esi
push eax
mov ecx, edi
call dword [ebp + 8]
jmp case.0x440498.38
push 1
call fcn.0043d3a0
push esi
mov ecx, eax
call fcn.00444950
push eax
push ebx
mov ecx, edi
call dword [ebp + 8]
jmp case.0x440498.38
push 1
call fcn.0043d3a0
push esi
mov ecx, eax
call fcn.00444950
mov edx, ebx
shr edx, 0x10
push edx
push eax
movzx eax, bx
push eax
mov ecx, edi
call dword [ebp + 8]
jmp case.0x440498.38
movsx edx, bx
shr ebx, 0x10
cmp dword [ecx + 0x10], 0x1d
mov dword [ebp + 0xc], edx
movsx ebx, bx
jne 0x4407dc
push 1
call fcn.0043d3a0
push esi
mov ecx, eax
call fcn.00444950
mov ecx, dword [ebp + 0xc]
push eax
push ebx
push ecx
mov ecx, edi
call dword [ebp + 8]
jmp case.0x440498.38
push ebx
push edx
mov ecx, edi
call eax
jmp case.0x440498.38
movsx ecx, si
shr esi, 0x10
movsx edx, si
push edx
push ecx
jmp 0x440878
mov ecx, edi
call eax
jmp 0x44087c
push esi
push ebx
mov ecx, edi
call eax
jmp case.0x440498.38
push esi
mov ecx, edi
call eax
jmp case.0x440498.38
push esi
mov edx, ebx
shr edx, 0x10
movzx ecx, bx
push edx
push ecx
mov ecx, edi
call eax
jmp case.0x440498.38
movsx ecx, si
shr esi, 0x10
movsx edx, si
push edx
push ecx
push ebx
mov ecx, edi
call eax
jmp case.0x440498.38
push esi
push ebx
mov ecx, edi
call eax
mov dword [ebp - 0x10], 1
jmp case.0x440498.38
movzx ecx, si
shr esi, 0x10
push esi
push ecx
mov edx, ebx
shr edx, 0x10
movzx ecx, bx
push edx
push ecx
mov ecx, edi
call eax
test eax, eax
mov dword [ebp - 0x10], eax
jne case.0x440498.38
jmp 0x44036d
mov edx, dword [ebp - 0x18]
push 7
mov dword [edx + 4], eax
call fcn.0045a320
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx + 0x14]
push esi
push ebx
mov ecx, edi
call eax
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x44088b
mov ecx, dword [ebp - 0x10]
mov dword [eax], ecx
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov eax, 1
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x10