Function at 0x440d4e
Capabilities:
Check os version
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x62a3a8
mov eax, dword fs:[0]
push eax
sub esp, 0x578
mov eax, dword [0x652018]
xor eax, esp
mov dword [esp + 0x570], eax
push ebx
push esi
push edi
mov eax, dword [0x652018]
xor eax, esp
push eax
lea eax, [esp + 0x588]
mov dword fs:[0], eax
mov dword [esp + 0x1c], edx
mov ebx, ecx
test byte [ebx + 1], 1
mov eax, dword [ebp + 8]
mov dword [esp + 0x44], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x24], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], 0
jne 0x440dc9
xor eax, eax
jmp 0x440dcc
lea eax, [ebx - 0x20]
mov esi, dword [ebx + 8]
mov ecx, esi
mov dword [esp + 0x18], eax
mov dword [esp + 0x3c], esi
mov dword [esp + 0x2c], 0
call 0x3dd2de
test al, al
jne 0x4414a4
test byte [ebx + 0x28], 4
je 0x441074
mov edi, dword [ebx + 0x2c]
mov ecx, 1
mov dword [esp + 0x20], ecx
mov eax, dword [edi + 0x60]
test eax, eax
je 0x440e29
lea ecx, [ecx]
test byte [eax + 0x28], 2
jne 0x440e25
test byte [eax + 0x28], 4
je 0x440e25
mov edi, dword [eax + 0x2c]
inc ecx
mov eax, dword [edi + 0x60]
test eax, eax
jne 0x440e0e
mov dword [esp + 0x20], ecx
push 0x38
mov edx, 3
lea ecx, [esp + 0x4c]
call 0x3bd1ce
mov edx, dword [esp + 0x1c]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
and ecx, 0xfffffffc
sub eax, dword [edx]
mov dword [esp + 0x28], ecx
cmp eax, ecx
jae 0x440e5c
push 0x38
mov ecx, edx
call 0x3bcefe
mov edx, dword [esp + 0x1c]
mov ecx, dword [edx]
mov eax, dword [esp + 0x28]
push 0x38
add eax, ecx
push 0
push ecx
mov dword [edx], eax
call 0x5a49da
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x34], ecx
mov dword [esp + 0x590], 2
mov dword [esp + 0x590], 0xffffffff
mov dword [ecx], 1
mov edx, dword [edi + 4]
test edx, edx
jne 0x440ea0
xor eax, eax
jmp 0x440ec9
mov esi, edx
lea edi, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x440ea5
mov eax, dword [esp + 0x24]
sub esi, edi
sar esi, 1
push esi
mov ecx, dword [eax + 0xc]
call fcn.00414e7e
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x18]
mov edx, 3
mov dword [ecx + 0x1c], eax
mov dword [ecx + 0x20], 0
mov word [ecx + 0x24], 0
mov byte [ecx + 0x26], 0
mov eax, dword [edi]
mov dword [ecx + 0x28], eax
mov eax, dword [edi + 4]
mov dword [ecx + 0x2c], eax
mov eax, dword [edi + 8]
mov dword [ecx + 0x30], eax
mov eax, dword [edi + 0xc]
mov dword [ecx + 0x34], eax
mov eax, dword [edi]
mov dword [ecx + 0xc], eax
mov eax, dword [edi + 4]
mov dword [ecx + 0x10], eax
mov eax, dword [edi + 8]
mov dword [ecx + 0x14], eax
mov eax, dword [edi + 0xc]
mov dword [ecx + 0x18], eax
lea ecx, [esp + 0x48]
push 0x30
call 0x3bd1ce
mov edx, dword [esp + 0x1c]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
and ecx, 0xfffffffc
sub eax, dword [edx]
mov dword [esp + 0x28], ecx
cmp eax, ecx
jae 0x440f42
push 0x30
mov ecx, edx
call 0x3bcefe
mov edx, dword [esp + 0x1c]
mov ecx, dword [edx]
mov eax, dword [esp + 0x28]
push 0x30
add eax, ecx
push 0
push ecx
mov dword [edx], eax
call 0x5a49da
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x28], ecx
mov dword [esp + 0x590], 5
mov dword [esp + 0x590], 0xffffffff
mov eax, dword [esp + 0x20]
cdq
mov dword [ecx], 0xe
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x24], edx
mov dword [ecx + 0x28], 1
mov eax, dword [edi]
mov dword [ecx + 0xc], eax
mov eax, dword [edi + 4]
mov dword [ecx + 0x10], eax
mov eax, dword [edi + 8]
mov dword [ecx + 0x14], eax
mov eax, dword [edi + 0xc]
mov dword [ecx + 0x18], eax
mov ecx, dword [ebx + 0xc]
call 0x3dc91e
test eax, eax
je 0x440fc9
mov ecx, dword [ebx + 0xc]
call 0x3dc91e
mov ecx, eax
call 0x3db1de
cmp eax, 0xb
jne 0x440fc9
lea ecx, [eax - 3]
jmp 0x440fcb
xor ecx, ecx
mov eax, dword [esp + 0x28]
mov edx, 3
push 0x24
mov dword [eax + 0x2c], ecx
lea ecx, [esp + 0x4c]
call 0x3bd1ce
mov ecx, dword [esp + 0x1c]
mov edx, dword [eax]
mov eax, dword [ecx + 4]
and edx, 0xfffffffc
sub eax, dword [ecx]
mov dword [esp + 0x20], edx
cmp eax, edx
jae 0x441007
push 0x24
call 0x3bcefe
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov edi, dword [ecx]
lea eax, [edi + edx]
mov dword [ecx], eax
xor eax, eax
mov dword [edi], eax
mov dword [edi + 4], eax
mov dword [edi + 8], eax
mov dword [edi + 0xc], eax
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], eax
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], eax
mov dword [edi + 0x20], eax
mov dword [esp + 0x590], 8
mov dword [esp + 0x590], 0xffffffff
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x34]
mov dword [edi + 0x1c], eax
mov eax, dword [esp + 0x28]
mov dword [edi], 0x2e
mov dword [edi + 0x20], eax
mov eax, dword [ecx]
mov dword [edi + 0xc], eax
mov eax, dword [ecx + 4]
mov dword [edi + 0x10], eax
mov eax, dword [ecx + 8]
mov dword [edi + 0x14], eax
mov eax, dword [ecx + 0xc]
mov dword [edi + 0x18], eax
jmp 0x4411a8
mov ecx, esi
call 0x3e0c1e
mov edi, eax
test edi, edi
je 0x44108c
mov ecx, dword [edi + 0x58]
mov eax, dword [ecx + 0x161c]
jmp 0x44108e
xor eax, eax
mov ecx, dword [esp + 0x38]
push 0
push 0
push 0
push eax
mov eax, dword [esp + 0x34]
push 0
push ecx
push eax
push dword [esp + 0x38]
lea ecx, [esp + 0x304]
call fcn.00491b2e
mov dword [esp + 0x590], 9
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4410cf
mov edx, dword [eax + 8]
mov eax, dword [eax]
mov dword [esp + 0x28], eax
jmp 0x4410d5
xor edx, edx
mov dword [esp + 0x28], edx
lea ecx, [ebx + 0x2c]
lea eax, [ecx + 2]
mov dword [esp + 0x34], eax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4410df
sub ecx, dword [esp + 0x34]
lea eax, [ebx + 0x2c]
push 0
push edx
push dword [esp + 0x30]
sar ecx, 1
push 0
push ecx
push eax
push dword [esp + 0x3c]
lea ecx, [esp + 0x80]
call 0x3d1d5e
mov byte [esp + 0x590], 0xa
test edi, edi
je 0x441128
cmp dword [edi + 0x4c], 0
jne 0x441128
mov ecx, dword [edi + 0xac]
jmp 0x44112a
xor ecx, ecx
test edi, edi
je 0x44113d
mov eax, dword [edi + 0x58]
test eax, eax
je 0x44113d
mov eax, dword [eax + 0x1558]
jmp 0x44113f
xor eax, eax
push ecx
push eax
push 0
lea eax, [esp + 0x2c]
push eax
push dword [esp + 0x50]
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0x2fc]
call fcn.0049217e
test eax, eax
jns 0x44116e
push 0
push 0
push 0
push eax
call dword [0x660144]
mov byte [esp + 0x590], 9
lea ecx, [esp + 0x64]
call 0x3d20fe
mov dword [esp + 0x590], 0xffffffff
mov eax, dword [esp + 0x56c]
test eax, eax
je 0x4411a4
push eax
push 0
push dword [0x65e8d0]
call dword [0x66016c]
mov edi, dword [esp + 0x20]
mov ecx, dword [ebx + 0xc]
or byte [ebx + 0x28], 1
call 0x3dc91e
test eax, eax
jne 0x4411be
mov dword [esp + 0x18], eax
jmp 0x4411e3
mov ecx, dword [ebx + 0xc]
call 0x3dc91e
mov ecx, eax
mov dword [esp + 0x18], eax
call 0x3db1de
cmp eax, 0x15
jne 0x4411e3
mov ecx, dword [esp + 0x18]
call 0x3dd22e
mov dword [esp + 0x18], eax
movzx eax, byte [esi]
test byte [eax + eax*2 + 0x405210], 0x40
je 0x441202
mov eax, dword [esi + 0x70]
test eax, eax
je 0x441202
mov ecx, dword [eax + 4]
mov dword [esp + 0x2c], ecx
test ecx, ecx
jne 0x441218
mov eax, esi
cmp byte [eax], 5
je 0x441212
mov eax, dword [eax + 0x14]
test eax, eax
jne 0x441204
jmp 0x44122a
mov ecx, eax
mov dword [esp + 0x2c], eax
call 0x3e9c7e
mov edx, dword [esp + 0x30]
mov ecx, eax
push 0
call fcn.0043d25e
mov eax, dword [esp + 0x18]
mov byte [esp + 0x17], 0
test eax, eax
jne 0x44123d
mov dword [esp + 0x20], eax
jmp 0x441248
mov ecx, eax
call 0x3dd26e
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x2c]
call 0x3e0c1e
test eax, eax
je 0x44125b
cmp dword [eax + 0x4c], 0
je 0x44125d
xor eax, eax
push ecx
push 0
push 0
push 0
push eax
push dword [esp + 0x4c]
lea ecx, [esp + 0xe4]
push dword [esp + 0x3c]
push dword [esp + 0x5c]
push dword [esp + 0x3c]
call fcn.0041ec7e
mov dword [esp + 0x590], 0xc
test byte [ebx + 0x28], 0xc
jne 0x441296
xor eax, eax
jmp 0x44129b
mov eax, 1
lea ecx, [esp + 0x30]
push ecx
push eax
push esi
lea eax, [esp + 0x23]
push eax
push 0
push 0
push dword [esp + 0x44]
lea eax, [esp + 0x68]
push edi
push eax
lea ecx, [esp + 0xf0]
call fcn.0041d68e
cmp byte [esp + 0x17], 0
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
mov esi, dword [eax]
mov edi, dword [eax + 0x10]
mov dword [esp + 0x18], edx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x2c], edx
mov edx, dword [eax + 0x14]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], edx
jne 0x4413a2
cmp edi, 0x12
jne 0x441337
or esi, ecx
jne 0x441337
mov eax, esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x1c], esi
test eax, eax
je 0x44132c
mov ecx, eax
call 0x3db1de
mov edi, eax
cmp edi, 0x12
je 0x44132c
cmp edi, 0x13
je 0x44132c
cmp edi, 0x16
jne 0x441331
mov edi, 0x12
mov ecx, dword [esp + 0x24]
jmp 0x4413a2
mov esi, dword [esp + 0x20]
test esi, esi
je 0x441366
cmp byte [esi], 0x29
jne 0x441366
mov ecx, esi
call 0x3e0b3e
test eax, eax
je 0x441366
mov edx, dword [eax + 0x38]
mov ecx, esi
call 0x3d1a0e
test al, al
je 0x441366
mov ecx, esi
call 0x3e924e
mov esi, eax
lea eax, [esp + 0x17]
push eax
push esi
push dword [esp + 0x38]
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0xdc]
call fcn.0041d7fe
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
mov esi, dword [eax]
mov edi, dword [eax + 0x10]
mov dword [esp + 0x18], edx
mov edx, dword [eax + 0xc]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x1c], eax
mov al, byte [ebx + 0x28]
and al, 0xfe
or al, 2
cmp byte [esp + 0x17], 0
mov byte [ebx + 0x28], al
je 0x4413ec
cmp dword [esp + 0x40], 0
je 0x4413ec
mov esi, dword [esp + 0x3c]
mov ecx, esi
call 0x3e0c1e
test eax, eax
je 0x4413df
mov ecx, esi
call 0x3e0c1e
mov eax, dword [eax + 0x60]
or byte [esi + 0x4a], 4
mov byte [esi + 0x48], al
jmp 0x44148d
or byte [esi + 0x4a], 4
mov byte [esi + 0x48], 5
jmp 0x44148d
cmp edi, 0x11
jne 0x441424
lea eax, [ecx*2 + 2]
mov ecx, dword [esp + 0x44]
push eax
mov dword [esp + 0x34], eax
call 0x3bcd8e
mov dword [esp + 0x44], eax
test esi, esi
je 0x441422
push dword [esp + 0x30]
push esi
push eax
call 0x5a4a1a
mov esi, dword [esp + 0x50]
add esp, 0xc
jmp 0x441424
xor esi, esi
mov eax, dword [esp + 0x24]
mov dword [ebx + 0x10], esi
mov dword [ebx + 0x14], eax
mov eax, dword [esp + 0x18]
mov dword [ebx + 0x18], eax
mov eax, dword [esp + 0x2c]
mov dword [ebx + 0x1c], eax
mov eax, dword [esp + 0x1c]
mov dword [ebx + 0x20], edi
mov dword [ebx + 0x24], eax
cmp edi, 0x12
je 0x44148d
mov esi, dword [esp + 0x3c]
movzx eax, byte [esi]
test byte [eax + eax*2 + 0x405210], 0x80
je 0x44148d
mov ecx, dword [esi + 0x50]
call 0x3dc91e
mov ecx, eax
call 0x3e941e
test al, al
je 0x44148d
test edi, edi
js 0x441488
cmp edi, 0x18
jae 0x441488
mov ecx, dword [esp + 0x38]
lea eax, [edi + edi*2]
mov eax, dword [ecx + eax*4 + 0x11f4]
jmp 0x44148a
xor eax, eax
mov dword [esi + 0x50], eax
mov dword [esp + 0x590], 0xffffffff
lea ecx, [esp + 0xcc]
call 0x3f17de
mov ecx, dword [esp + 0x588]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x570]
xor ecx, esp
call 0x59f18f
mov esp, ebp
pop ebp
ret 0x14