Function at 0x40e6a0
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d6f8b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x40
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x14], edi
mov dword [edi], vtable.CListObjectBase.0
lea ecx, [edi + 4]
mov dword [ebp - 4], 0
call fcn.0040e330
push 0x4def7c
lea ecx, [edi + 0x34]
mov byte [ebp - 4], 1
call fcn.0040e370
mov dword [edi + 0x30], vtable.SynDevice.0
mov dword [edi + 0x38], vtable.SynDevice.1.0
mov dword [edi + 0x40], vtable.CDummySynDevice.0
mov dword [edi + 0x44], 0
mov dword [edi + 0x3c], 0
lea ecx, [edi + 0x5c]
mov dword [edi], vtable.CManagedPointingDevice.0
mov dword [edi + 4], vtable.CManagedPointingDevice.1.0
mov dword [edi + 0x30], vtable.CManagedPointingDevice.2.0
mov dword [edi + 0x38], vtable.CManagedPointingDevice.3.0
mov dword [edi + 0x48], vtable.CManagedPointingDevice.4.0
call fcn.0040f4f0
mov dword [edi + 0x5c], vtable.CRegionZone.0
lea ecx, [edi + 0x1b8]
call fcn.0040f4f0
mov dword [edi + method.CRegionZone.virtual_0], vtable.CRegionZone.0
lea ecx, [edi + 0x314]
call fcn.0040f4f0
mov dword [edi + method.CRegionZone.virtual_0], vtable.CRegionZone.0
mov dword [edi + 0xab0], 0
push 0x4defb8
lea ecx, [edi + 0xabc]
mov byte [ebp - 4], 6
call fcn.0040e460
mov dword [edi + 0xab8], 0x4defb4
mov dword [edi + 0xac0], 0x4deee0
push 0x4dc8a0
lea ecx, [edi + 0xac4]
mov byte [ebp - 4], 7
call fcn.0040a6a0
mov dword [edi + 0xac8], 0x4dc884
push fcn.0040ac20
push 0x40ab30
push 0xa
push 8
add edi, 0xba4
mov byte [ebp - 4], 8
push edi
call fcn.004a608d
mov esi, dword [ebp - 0x14]
push fcn.0040ac20
push 0x40ab30
push 0xa
push 8
lea eax, [esi + 0xbf4]
mov byte [ebp - 4], 9
push eax
call fcn.004a608d
push fcn.0040ac20
push 0x40ab30
push 0xa
push 8
lea eax, [esi + 0xc44]
mov byte [ebp - 4], 0xa
push eax
call fcn.004a608d
mov byte [ebp - 4], 0xb
push fcn.0040ac20
push 0x40ab30
push 0xa
push 8
lea eax, [esi + 0xc94]
push eax
call fcn.004a608d
push 0x4dc8a0
lea ecx, [esi + 0xdcc]
mov byte [ebp - 4], 0xc
call fcn.0040a6a0
mov dword [esi + 0xdd0], 0x4dc884
lea ecx, [esi + 0xdd4]
mov byte [ebp - 4], 0xd
push 0x4dc8a0
call fcn.0040a6a0
mov dword [esi + 0xdd8], 0x4dc884
push 0
push 0
lea ecx, [esi + 0x114c]
mov byte [ebp - 4], 0xe
mov dword [esi + 0x114c], 0
mov dword [esi + 0x1150], 0
call fcn.0042a5f0
mov dword [esi + 0x114c], eax
push 0
push 0
lea ecx, [esi + 0x1154]
mov byte [ebp - 4], 0xf
mov dword [esi + 0x1154], 0
mov dword [esi + 0x1158], 0
call fcn.0042a5f0
mov dword [esi + 0x1154], eax
lea ecx, [esi + 0x1180]
mov byte [ebp - 4], 0x10
push 0x4dc8a0
call fcn.0040a6a0
mov dword [esi + 0x1184], 0x4dc884
lea ecx, [esi + 0x11b0]
mov byte [ebp - 4], 0x11
mov dword [esi + 0x11b0], 0
mov dword [esi + 0x11b4], 0
call fcn.0042a590
mov dword [esi + 0x11b0], eax
mov dword [esi + 0x11a8], 0
mov dword [esi + 0x11a0], 0x32
mov dword [esi + 0xacc], 5
mov dword [esi + 0xb04], 0
mov dword [esi + 0xb08], 1
mov dword [esi + 0xb0c], 0
mov dword [esi + 0xad0], 0
mov dword [esi + 0xafc], 0
mov dword [esi + 0xb00], 0
mov dword [esi + 0xad4], 0
mov dword [esi + 0xad8], 0
mov dword [esi + 0xb68], 1
mov dword [esi + 0xb18], 4
mov dword [esi + 0xb1c], 0
mov dword [esi + 0xb64], 0
mov dword [esi + 0xb10], 0x3a
mov dword [esi + 0xb14], 0
mov dword [esi + 0xb20], 0
mov dword [esi + 0xb24], 0
mov dword [esi + 0xb28], 0x10
mov dword [esi + 0xb2c], 0xf0
mov byte [ebp - 4], 0x12
mov dword [esi + 0xb38], 0xa8
mov dword [esi + 0xb44], 0
mov dword [esi + 0xb48], 0
mov dword [esi + 0xb4c], 0
mov dword [esi + 0xb54], 0x2000000
mov dword [esi + 0xb58], 0
mov dword [esi + 0xadc], 0
mov dword [esi + 0xae0], 0
xor eax, eax
mov dword [esi + 0xae4], 0
mov dword [esi + 0xb5c], 0
mov dword [esi + 0xb50], 0
mov dword [esi + 0xb70], 0
mov dword [esi + 0xb6c], 0
mov dword [esi + 0xb78], 0x7fffffff
mov dword [esi + 0xb74], 0x7fffffff
mov dword [esi + 0x4c], 0
mov dword [esi + 0x50], 0
mov word [esi + 0x470], ax
mov dword [esi + 0xb60], eax
mov dword [esi + 0xaec], 0x1214
mov dword [esi + 0xaf0], 0x11
mov dword [esi + 0x119c], eax
mov dword [esi + 0xab4], eax
mov dword [esi + 0x678], eax
mov dword [esi + 0x67c], eax
mov dword [esi + 0x680], eax
mov dword [esi + 0x684], eax
mov dword [esi + 0xd90], eax
mov dword [esi + 0xd8c], eax
mov dword [esi + 0xd88], eax
mov dword [esi + 0xd94], eax
mov dword [esi + 0xd98], eax
mov dword [esi + 0xdf4], eax
mov dword [esi + 0xdf8], 1
mov dword [esi + 0xdfc], eax
mov dword [ebp - 0x10], eax
cmp dword [edi], 0
je 0x40eb6d
push 0x4dc8a0
lea ecx, [ebp - 0x1c]
call fcn.0040a6a0
mov dword [ebp - 0x18], vtable.CDummySynPacket.0
mov edx, dword [edi]
mov byte [ebp - 4], 0x13
test edx, edx
jne 0x40eb2c
lea edx, [edi + 4]
mov eax, dword [ebp - 0x1c]
lea ecx, [ebp - 0x18]
test eax, eax
cmovne ecx, eax
mov eax, dword [edx]
push ecx
push edx
call dword [eax + 0x18]
mov eax, dword [edi]
push dword [ebp - 0x10]
push 0x10000317
mov ecx, dword [eax]
push eax
call dword [ecx + 0x10]
mov ecx, dword [ebp - 0x1c]
mov byte [ebp - 4], 0x12
mov dword [ebp - 0x18], vtable.CDummySynPacket.0
test ecx, ecx
je 0x40eb6d
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [ebp - 0x1c], 0
cmp dword [edi + 0x50], 0
je 0x40ebd7
push 0x4dc8a0
lea ecx, [ebp - 0x24]
call fcn.0040a6a0
mov dword [ebp - 0x20], vtable.CDummySynPacket.0
mov edx, dword [edi + 0x50]
mov byte [ebp - 4], 0x14
test edx, edx
jne 0x40eb95
lea edx, [edi + 0x54]
mov eax, dword [ebp - 0x24]
lea ecx, [ebp - 0x20]
test eax, eax
cmovne ecx, eax
mov eax, dword [edx]
push ecx
push edx
call dword [eax + 0x18]
mov eax, dword [edi + 0x50]
push dword [ebp - 0x10]
push 0x10000317
mov ecx, dword [eax]
push eax
call dword [ecx + 0x10]
mov ecx, dword [ebp - 0x24]
mov byte [ebp - 4], 0x12
mov dword [ebp - 0x20], vtable.CDummySynPacket.0
test ecx, ecx
je 0x40ebd7
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [ebp - 0x24], 0
cmp dword [edi + 0xa0], 0
je 0x40ec4d
push 0x4dc8a0
lea ecx, [ebp - 0x2c]
call fcn.0040a6a0
mov dword [ebp - 0x28], vtable.CDummySynPacket.0
mov edx, dword [edi + 0xa0]
mov byte [ebp - 4], 0x15
test edx, edx
jne 0x40ec08
lea edx, [edi + 0xa4]
mov eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x28]
test eax, eax
cmovne ecx, eax
mov eax, dword [edx]
push ecx
push edx
call dword [eax + 0x18]
mov eax, dword [edi + 0xa0]
push dword [ebp - 0x10]
push 0x10000317
mov ecx, dword [eax]
push eax
call dword [ecx + 0x10]
mov ecx, dword [ebp - 0x2c]
mov byte [ebp - 4], 0x12
mov dword [ebp - 0x28], vtable.CDummySynPacket.0
test ecx, ecx
je 0x40ec4d
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [ebp - 0x2c], 0
cmp dword [edi + 0xf0], 0
je 0x40ecc3
push 0x4dc8a0
lea ecx, [ebp - 0x34]
call fcn.0040a6a0
mov dword [ebp - 0x30], vtable.CDummySynPacket.0
mov edx, dword [edi + 0xf0]
mov byte [ebp - 4], 0x16
test edx, edx
jne 0x40ec7e
lea edx, [edi + 0xf4]
mov eax, dword [ebp - 0x34]
lea ecx, [ebp - 0x30]
test eax, eax
cmovne ecx, eax
mov eax, dword [edx]
push ecx
push edx
call dword [eax + 0x18]
mov eax, dword [edi + 0xf0]
push dword [ebp - 0x10]
push 0x10000317
mov ecx, dword [eax]
push eax
call dword [ecx + 0x10]
mov ecx, dword [ebp - 0x34]
mov byte [ebp - 4], 0x12
mov dword [ebp - 0x30], vtable.CDummySynPacket.0
test ecx, ecx
je 0x40ecc3
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [ebp - 0x34], 0
mov eax, dword [ebp - 0x10]
xorps xmm0, xmm0
inc eax
movsd qword [edi + 0x144], xmm0
add edi, 8
mov dword [ebp - 0x10], eax
cmp eax, 0xa
jl 0x40eb06
push 0x4dc8a0
lea ecx, [ebp - 0x34]
call fcn.0040a6a0
mov dword [ebp - 0x30], vtable.CDummySynPacket.0
mov edx, dword [esi + 0xdd4]
mov byte [ebp - 4], 0x17
test edx, edx
jne 0x40ed09
lea edx, [esi + 0xdd8]
mov eax, dword [ebp - 0x34]
lea ecx, [ebp - 0x30]
test eax, eax
cmovne ecx, eax
mov eax, dword [edx]
push ecx
push edx
call dword [eax + 0x18]
mov ecx, dword [ebp - 0x34]
mov byte [ebp - 4], 0x12
mov dword [ebp - 0x30], vtable.CDummySynPacket.0
test ecx, ecx
je 0x40ed33
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
xorps xmm0, xmm0
mov dword [esi + 0xdac], 0
movsd qword [esi + 0xda0], xmm0
mov ecx, esi
mov dword [esi + 0xda8], 0
mov dword [esi + 0xdb8], 0
mov dword [esi + 0xdb4], 0
mov dword [esi + 0xdbc], 0x1f4
mov dword [esi + 0xdc0], 0xfa
mov dword [esi + 0xdc4], 0
mov dword [esi + 0xdc8], 0
mov dword [esi + 0xddc], 0x5f5e100
mov dword [esi + 0xde0], 0x5f5e100
mov dword [esi + 0xde4], 1
mov dword [esi + 0xde8], 0
mov dword [esi + 0xdec], 1
mov dword [esi + 0x54], 0
mov dword [esi + 0xe04], 0
mov dword [esi + 0xe08], 0
mov dword [esi + 0xe0c], 0
mov dword [esi + 0xe38], 0
mov dword [esi + 0xe10], 0
mov dword [esi + 0xe14], 0
mov dword [esi + 0xe18], 2
mov dword [esi + 0xe1c], 1
mov dword [esi + 0xe20], 0x50
movdqu xmmword [esi + 0xd38], xmm0
movdqu xmmword [esi + 0xd48], xmm0
movq qword [esi + 0xd58], xmm0
movdqu xmmword [esi + 0xd60], xmm0
movdqu xmmword [esi + 0xd70], xmm0
movq qword [esi + 0xd80], xmm0
mov dword [esi + 0xe28], 0
call fcn.00411990
mov dword [esi + 0xe34], 0
xor eax, eax
mov dword [esi + 0xe3c], 0
mov dword [esi + 0xe40], 2
mov dword [esi + 0xed0], 0xe
mov dword [esi + 0xed4], 0
mov dword [esi + 0xed8], 0
mov dword [esi + 0xedc], 0
mov dword [esi + 0xee0], 0
mov dword [esi + 0xee4], 8
mov dword [esi + 0xee8], 0xd
mov dword [esi + 0x688], 0xffffffff
mov dword [esi + 0x694], 0x2710
mov dword [esi + 0x698], 0x1388
mov dword [esi + 0xaac], 0x19
mov dword [esi + 0x69c], 0
mov dword [esi + 0x6a0], 0
mov dword [esi + 0xaa4], 1
mov dword [esi + 0xaa8], 0
mov dword [esi + 0xae8], 0
mov dword [esi + 0x68c], 0
mov dword [esi + 0x690], 0
mov dword [esi + 0xb3c], 2
mov dword [esi + 0xb40], 0
mov word [esi + 0x6a4], ax
mov dword [esi + 0x1104], eax
mov dword [esi + 0xe44], eax
mov dword [esi + 0xe48], eax
mov dword [esi + 0xe4c], eax
mov dword [esi + 0xe50], eax
mov dword [esi + 0xe54], eax
mov dword [esi + 0xe58], eax
mov dword [esi + 0xe5c], eax
mov dword [esi + 0xe60], eax
mov dword [esi + 0xe64], eax
mov dword [esi + 0xe68], eax
mov dword [esi + 0xe6c], eax
mov dword [esi + 0xe70], eax
mov dword [esi + 0xe74], eax
mov dword [esi + 0xe78], eax
mov dword [esi + 0xe7c], eax
mov dword [esi + 0xe80], eax
mov dword [esi + 0xe84], eax
mov dword [esi + 0xe88], eax
mov dword [esi + 0xe8c], eax
mov dword [esi + 0xe90], eax
mov dword [esi + 0xea4], eax
mov dword [esi + 0xea8], eax
lea ecx, [ebp - 0x4c]
mov dword [esi + 0xeac], eax
mov dword [esi + 0xeb0], eax
mov dword [esi + 0xe94], eax
mov dword [esi + 0xe98], eax
mov dword [esi + 0xe9c], eax
mov dword [esi + 0xea0], eax
mov dword [esi + 0xeb4], eax
mov dword [esi + 0xeb8], eax
mov dword [esi + 0xebc], eax
mov dword [esi + 0xec0], eax
mov dword [esi + 0xec4], eax
mov dword [esi + 0xecc], eax
mov dword [esi + 0xec8], 0x3b6
mov dword [esi + 0x58], eax
mov dword [esi + 0x1108], eax
mov dword [esi + 0x1114], eax
mov dword [esi + 0x110c], eax
mov dword [esi + 0x1118], eax
mov dword [esi + 0x111c], eax
mov dword [esi + 0x1120], eax
mov dword [esi + 0x117c], eax
mov dword [esi + 0xeec], eax
mov dword [esi + 0xef0], 0xffffffff
call fcn.004917a0
push 0
push 0
push 0
push str.SoftwareSynapticsSynTPEnh
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 0x18
call fcn.004948e0
push 0
lea eax, [ebp - 0x10]
mov dword [ebp - 0x10], 0
push eax
lea eax, [ebp - 0x18]
push eax
push str.TreatAsTheaterPad
lea ecx, [ebp - 0x48]
call fcn.004a1050
xor eax, eax
lea ecx, [ebp - 0x48]
cmp dword [ebp - 0x18], eax
push 0
setne al
mov dword [ebp - 0x18], 0
mov dword [esi + 0xef4], eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x10]
push eax
push str.FWLEDControlPad
call fcn.004a1050
push 0
xor eax, eax
lea ecx, [ebp - 0x4c]
cmp dword [ebp - 0x10], eax
push 0
push 0
setne al
push str.SoftwareSynapticsSynTPEnh
mov dword [esi + 0xef8], eax
push SysReAllocString
mov dword [esi + 0xefc], 0
call fcn.004948e0
xor eax, eax
mov dword [esi + 0xf00], 0
mov word [esi + 0xf04], ax
mov word [esi + 0x8a4], ax
mov dword [esi + 0x1124], eax
mov dword [esi + 0x1138], eax
mov dword [esi + 0x112c], eax
mov dword [esi + 0x1128], eax
mov dword [esi + 0x1130], eax
mov dword [esi + 0x1134], eax
mov dword [esi + 0x118c], eax
mov dword [esi + 0x1190], eax
mov dword [esi + 0x1194], eax
lea ecx, [ebp - 0x34]
mov dword [esi + 0x1198], eax
xorps xmm0, xmm0
mov edi, dword [esi + 0x114c]
push ecx
lea ecx, [esi + 0x114c]
movq qword [ebp - 0x34], xmm0
push dword [edi + 4]
push edi
call fcn.0040d8d0
mov edx, eax
mov ecx, 0xffffffe
mov eax, dword [esi + 0x1150]
sub ecx, eax
cmp ecx, 1
jae 0x40f19d
push str.list_T__too_long
call fcn.004a3a6a
inc eax
lea ecx, [ebp - 0x34]
mov dword [esi + 0x1150], eax
mov dword [edi + 4], edx
mov eax, dword [edx + 4]
push ecx
lea ecx, [esi + 0x1154]
mov dword [eax], edx
mov edi, dword [esi + 0x1154]
push dword [edi + 4]
push edi
call fcn.0040d8d0
mov edx, dword [esi + 0x1158]
mov ecx, eax
mov eax, 0xffffffe
sub eax, edx
cmp eax, 1
jae 0x40f1e3
push str.list_T__too_long
call fcn.004a3a6a
lea eax, [edx + 1]
mov dword [esi + 0x1158], eax
mov dword [edi + 4], ecx
mov eax, dword [ecx + 4]
push 0x4dc8a0
mov dword [eax], ecx
lea ecx, [ebp - 0x34]
mov dword [esi + 0x115c], 0
mov dword [esi + 0x1160], 0
mov dword [esi + 0x1164], 0
mov dword [esi + 0x1168], 0
mov dword [esi + 0x1170], 0
mov dword [esi + 0x116c], 0
mov dword [esi + 0x1178], 0
mov dword [esi + 0x11a4], 0
call fcn.0040a6a0
mov dword [ebp - 0x30], vtable.CDummySynPacket.0
mov edx, dword [esi + 0x1180]
mov byte [ebp - 4], 0x19
test edx, edx
jne 0x40f26c
lea edx, [esi + 0x1184]
mov eax, dword [ebp - 0x34]
lea ecx, [ebp - 0x30]
test eax, eax
cmovne ecx, eax
mov eax, dword [edx]
push ecx
push edx
call dword [eax + 0x18]
mov ecx, dword [ebp - 0x34]
mov byte [ebp - 4], 0x18
mov dword [ebp - 0x30], vtable.CDummySynPacket.0
test ecx, ecx
je 0x40f296
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [esi + 0x1188], 0
lea ecx, [ebp - 0x4c]
mov dword [esi + 0x1174], 0
mov dword [esi + 0x11ac], 0
mov dword [esi + 0xe00], 1
mov byte [ebp - 4], 0x12
call fcn.00491a30
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop edi
pop esi
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret