Function at 0x40e316
Capabilities:
Link many functions at runtime

Disassembly:
mov eax, 0x427bfb
call fcn.00427220
sub esp, 0x210
push ebx
push esi
mov esi, ecx
push edi
mov dword [ebp - 0x14], esi
lea ecx, [esi + 4]
call fcn.004068b7
lea eax, [esi + 0xa8]
xor ebx, ebx
lea edi, [esi + 0xc0]
push ebx
mov dword [eax], ebx
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
mov al, byte [ebp - 0xd]
push ebx
mov ecx, edi
mov dword [ebp - 4], ebx
mov byte [edi], al
call fcn.00410d5d
mov dword [edi + 4], eax
mov dword [edi + 8], ebx
mov al, byte [ebp - 0xd]
lea ecx, [esi + 0xcc]
push ebx
push ebx
mov byte [ebp - 4], 1
mov byte [ecx], al
call fcn.00410d5d
mov dword [esi + 0xd0], eax
mov dword [esi + 0xd4], ebx
lea ecx, [esi + 0x10c]
mov byte [ebp - 4], 2
call fcn.00420a40
lea eax, [esi + 0x124]
lea ecx, [esi + 0x700]
mov dword [eax], ebx
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
lea eax, [esi + 0x598]
mov dword [eax], ebx
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
lea eax, [esi + 0x5c0]
mov dword [eax], ebx
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
call fcn.0040de73
mov dword [esi + 0xec], ebx
mov dword [esi + 0xf0], ebx
mov dword [esi + 0xf4], ebx
mov dword [esi + 0xf8], ebx
mov dword [esi + 0x58c], ebx
mov dword [esi + 0x590], ebx
mov dword [esi + 0x5a8], ebx
mov dword [esi + 0x5ac], ebx
mov byte [0x438b78], bl
lea ecx, [esi + 0xcc]
mov byte [ebp - 4], 4
mov dword [esi + 0x104], ebx
mov dword [esi + 0x100], ebx
mov dword [esi + 0x108], ebx
mov dword [esi], ebx
mov dword [esi + 0x5bc], ebx
mov dword [esi + 0x5b0], ebx
mov dword [esi + 0x5b4], ebx
mov dword [esi + 0xfc], ebx
mov dword [esi + 0x5b8], ebx
call fcn.00410ba8
mov ecx, edi
call fcn.00410ba8
mov dword [esi + 0xd8], ebx
mov dword [esi + 0xdc], ebx
call dword [sym.imp.WINMM.dll_timeGetTime]
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov dword [esi + 0xe0], eax
lea eax, [ebp - 0x118]
push 0x104
push eax
push ebx
mov dword [esi + 0x6c], ebx
mov dword [esi + 0x70], ebx
mov dword [esi + 0xa0], ebx
mov dword [esi + 0x5f8], ebx
mov dword [esi + 0x634], ebx
mov dword [esi + 0x630], ebx
mov dword [esi + 0x618], ebx
mov dword [esi + 0x620], ebx
mov dword [esi + 0x624], ebx
mov dword [esi + 0x62c], ebx
mov dword [esi + 0x628], ebx
call edi
test eax, eax
je 0x40e4ee
lea eax, [ebp - 0x118]
push 0x5c
push eax
call dword [sym.imp.MSVCRT.dll_strrchr]
pop ecx
cmp eax, ebx
pop ecx
je 0x40e623
mov byte [eax], bl
lea eax, [ebp - 0x118]
push str._vnchooks.dll
push eax
call sub.MSVCRT.dll_strcat
pop ecx
pop ecx
lea eax, [ebp - 0x21c]
push 0x104
push eax
push ebx
mov dword [esi + 0x61c], ebx
call edi
test eax, eax
je 0x40e535
lea eax, [ebp - 0x21c]
push 0x5c
push eax
call dword [sym.imp.MSVCRT.dll_strrchr]
pop ecx
cmp eax, ebx
pop ecx
je 0x40e623
mov byte [eax], bl
lea eax, [ebp - 0x21c]
push str._schook.dll
push eax
call sub.MSVCRT.dll_strcat
pop ecx
pop ecx
mov edi, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
lea eax, [ebp - 0x118]
push eax
call edi
mov dword [esi + 0x618], eax
lea eax, [ebp - 0x21c]
push eax
call edi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
mov dword [esi + 0x61c], eax
je 0x40e584
push str.UnSetHook
push eax
call edi
push str.SetHook
mov dword [esi + 0x634], eax
push dword [esi + 0x61c]
call edi
mov dword [esi + 0x630], eax
mov eax, dword [esi + 0x618]
cmp eax, ebx
je 0x40e5d5
push str.UnSetHooks
push eax
call edi
push str.SetMouseFilterHook
mov dword [esi + 0x624], eax
push dword [esi + 0x618]
call edi
push str.SetKeyboardFilterHook
mov dword [esi + 0x62c], eax
push dword [esi + 0x618]
call edi
push str.SetHooks
mov dword [esi + 0x628], eax
push dword [esi + 0x618]
call edi
mov dword [esi + 0x620], eax
mov dword [esi + 0x604], ebx
push str.USER32
mov byte [0x438b68], 1
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.BlockInput
push eax
mov dword [esi + 0x63c], eax
call edi
mov dword [esi + 0x638], eax
mov dword [esi + 0x640], ebx
mov dword [esi + 0x644], ebx
mov dword [esi + 0x648], ebx
mov dword [esi + 0x654], ebx
mov dword [esi + 0x6f8], 3
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret