Function at 0x40eda0
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x507cb4
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x5b8
push esi
push edi
push dword [ebp + 0x18]
mov edi, dword [ebp + 8]
mov esi, ecx
push dword [ebp + 0x14]
mov dword [ebp - 0x2c], esi
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push edi
call fcn.0049d500
lea eax, [esi + 0x1d0]
mov dword [esi], vtable.CFPSoundZone.0
mov dword [esi + 4], vtable.CFPSoundZone.1.0
push eax
mov dword [ebp - 4], 0
mov dword [esi + 0x1cc], 0
mov dword [esi + 0x1c8], 0
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov byte [ebp - 4], 1
xorps xmm0, xmm0
movq qword [esi + 0x1e8], xmm0
mov dword [esi + 0x1f0], 0
mov dword [esi + 0x200], 0
mov dword [esi + 0x1f4], 0
mov dword [esi + 0x1f8], 0
mov dword [esi + 0x1fc], 0
test edi, edi
je 0x40f0b4
mov ecx, edi
call fcn.00405ad0
test eax, eax
je 0x40f0b4
push 0
lea ecx, [ebp - 0x28]
call fcn.004b90e0
push 0
push 0
push 0
push str.SoftwareSynapticsSynTPEnhPlugInConfigTouchPad
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 2
mov dword [ebp + 0x18], 0x208
call fcn.004bcca0
test eax, eax
je 0x40eee3
push 0
lea eax, [ebp + 0x14]
mov dword [ebp + 0x14], 1
push eax
lea eax, [ebp + 0x10]
push eax
push str.ButtonSoundFlags
lea ecx, [ebp - 0x24]
call fcn.004cbcf0
mov eax, dword [ebp + 0x10]
lea ecx, [ebp - 0x24]
push 0
mov dword [esi + 0x200], eax
lea eax, [ebp + 0x18]
push 0
push eax
lea eax, [ebp - 0x3bc]
push eax
push str.ButtonClickSound
call fcn.004cbe60
lea ecx, [ebp - 0x24]
call fcn.004cb8e0
push ebx
push 1
push 0x40
push 0x20
lea eax, [ebp - 0x3bc]
push eax
lea ecx, [ebp - 0x1b4]
call fcn.0040ead0
cmp dword [ebp - 0x154], 0
mov byte [ebp - 4], 3
je 0x40ef7d
push 2
push 0
push 0
lea ecx, [ebp - 0x1b4]
call fcn.00411cf0
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0x1b4]
call fcn.004121b0
mov edi, dword [eax + 8]
add edi, dword [eax]
mov ebx, dword [eax + 0xc]
adc ebx, dword [eax + 4]
js 0x40ef72
jg 0x40ef3c
test edi, edi
je 0x40ef72
push edi
call fcn.004ce868
add esp, 4
mov dword [0x656b7c], eax
test eax, eax
je 0x40ef72
push 0
push 0
push 0
lea ecx, [ebp - 0x1b4]
call fcn.00411cf0
push ebx
push edi
push dword [0x656b7c]
lea ecx, [ebp - 0x1b4]
call fcn.00411b20
lea ecx, [ebp - 0x1b4]
call fcn.00410ff0
push 0
push 0
push 0
push str.SoftwareSynapticsSynTPEnhPlugInConfigTouchPad
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x28]
mov dword [ebp + 0x18], 0x208
call fcn.004bcca0
test eax, eax
je 0x40efc4
push 0
push 0
lea eax, [ebp + 0x18]
push eax
lea eax, [ebp - 0x5c4]
push eax
push str.ButtonReleaseSound
lea ecx, [ebp - 0x24]
call fcn.004cbe60
lea ecx, [ebp - 0x24]
call fcn.004cb8e0
push 1
push 0x40
push 0x20
lea eax, [ebp - 0x5c4]
push eax
lea ecx, [ebp - 0xfc]
call fcn.0040ead0
cmp dword [ebp - 0x9c], 0
mov byte [ebp - 4], 4
je 0x40f05d
push 2
push 0
push 0
lea ecx, [ebp - 0xfc]
call fcn.00411cf0
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0xfc]
call fcn.004121b0
mov edi, dword [eax + 8]
add edi, dword [eax]
mov ebx, dword [eax + 0xc]
adc ebx, dword [eax + 4]
js 0x40f052
jg 0x40f01c
test edi, edi
je 0x40f052
push edi
call fcn.004ce868
add esp, 4
mov dword [0x656b80], eax
test eax, eax
je 0x40f052
push 0
push 0
push 0
lea ecx, [ebp - 0xfc]
call fcn.00411cf0
push ebx
push edi
push dword [0x656b80]
lea ecx, [ebp - 0xfc]
call fcn.00411b20
lea ecx, [ebp - 0xfc]
call fcn.00410ff0
push 0x51096c
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateEventW]
mov dword [0x656b78], eax
lea eax, [esi + 0x1b0]
push eax
push 0
push esi
push 0x410030
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
lea ecx, [ebp - 0xfc]
mov dword [0x656b74], eax
call fcn.0040f660
lea ecx, [ebp - 0x1b4]
call fcn.0040f660
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call fcn.004b93f0
pop ebx
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop edi
pop esi
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x14