Function at 0x402190
Capabilities:
Create thread
Hide graphical window
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x440550
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push ebx
push esi
push edi
mov eax, dword [0x44a040]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 0
mov dword [0x44a4ac], 0x30
mov dword [0x44a4b0], 0x40
mov dword [0x44a4b4], 0x401020
mov dword [0x44a4b8], 0
mov dword [0x44a4bc], 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
xorps xmm0, xmm0
mov dword [0x44a4c0], eax
push 0x44a4ac
movups xmmword [0x44a4c4], xmm0
mov dword [0x44a4d4], 0x4413e4
mov dword [0x44a4d8], 0
call dword [sym.imp.USER32.dll_RegisterClassExA]
push 0
push dword [0x44a4c0]
push 0
push 0
push 0xdc
push 0x181
push 0x64
push 0x64
push 0x80000000
push str.HelpWare_Menu
push str.class001
push 0x80000
call dword [sym.imp.USER32.dll_CreateWindowExA]
push 2
push pe_nt_image_headers32
push 0
push eax
mov dword [0x44a4a0], eax
call dword [sym.imp.USER32.dll_SetLayeredWindowAttributes]
push 0xa
push dword [0x44a4a0]
call dword [sym.imp.USER32.dll_ShowWindow]
push dword [0x44a4a0]
call dword [sym.imp.USER32.dll_UpdateWindow]
push 0x20
mov dword [ebp - 4], 0
call dword [sym.imp.d3d9.dll_Direct3DCreate9]
mov ecx, eax
mov dword [0x44a49c], ecx
test ecx, ecx
je 0x402375
push 0x44a4a8
push 0x44a4dc
push 0x40
push dword [0x44a4a0]
xorps xmm0, xmm0
mov dword [0x44a4f8], 0
movlpd qword [0x44a508], xmm0
or dword [0x44a508], 2
push 1
movlpd qword [0x44a4dc], xmm0
mov dword [0x44a4fc], 1
mov dword [0x44a4f4], 1
mov dword [0x44a4e4], 0
mov dword [0x44a500], 1
mov dword [0x44a504], 0x50
mov dword [0x44a510], 1
mov dword [0x44a4e8], 1
mov dword [0x44a4f0], 0
mov dword [0x44a4ec], 0
mov eax, dword [ecx]
push 0
push ecx
call dword [eax + 0x40]
mov ecx, dword [0x44a4a8]
push 1
push 0x1b
push ecx
mov eax, dword [ecx]
call dword [eax + 0xe4]
mov ecx, dword [0x44a4a8]
push 5
push 0x13
push ecx
mov eax, dword [ecx]
call dword [eax + 0xe4]
mov ecx, dword [0x44a4a8]
push 6
push 0x14
push ecx
mov eax, dword [ecx]
call dword [eax + 0xe4]
call fcn.00401530
cmp byte [0x44a099], 0
je 0x4026a6
mov edi, dword [sym.imp.MSVCP140.dll__Mtx_lock]
mov ebx, dword [sym.imp.MSVCP140.dll__Mtx_unlock]
mov esi, dword [sym.imp.USER32.dll_keybd_event]
nop dword [eax]
call fcn.00401930
mov dword [ebp - 4], 1
cmp byte [0x44a098], 0
je 0x4024bc
mov eax, dword [0x44a520]
mov edx, 0x44a099
push 0x122
mov ecx, str.___________________HelpWare__BETA
or dword [eax + 0x4954], 0x43
mov dword [eax + 0x49ac], 0x3f000000
mov dword [eax + 0x4964], 0
mov dword [eax + 0x4968], 0
mov dword [eax + 0x496c], 0
mov dword [eax + 0x4970], 0
mov dword [eax + 0x4958], 1
mov dword [eax + 0x4974], 0x43c08000
mov dword [eax + 0x4978], 0x435c0000
mov dword [eax + 0x495c], 1
call fcn.0040f4e0
add esp, 4
call fcn.0043bf00
call fcn.00401250
push ecx
mov ecx, str.Misc
mov byte [ebp - 4], 2
call fcn.0043d8d0
add esp, 4
test al, al
je 0x4024ae
mov byte [ebp - 4], 3
mov al, byte [0x44a4a6]
lea edx, [ebp - 0xd]
mov byte [ebp - 0xd], al
mov ecx, str.BunnyHop__TESTING_
call fcn.00433790
mov al, byte [ebp - 0xd]
mov ecx, 0x44a4a6
xchg byte [ecx], al
mov ecx, dword [0x44a520]
mov edx, dword [ecx + 0x3f8c]
cmp byte [edx + 0xb3], 0
jne 0x4024ae
mov ecx, dword [ecx + 0x4d30]
test ecx, ecx
je 0x4024ae
movsx eax, word [ecx + 0x74]
imul eax, eax, 0x2c
add eax, dword [ecx + 8]
test byte [eax + 4], 8
jne 0x4024ae
dec dword [edx + 0xec]
mov byte [ebp - 4], 1
call fcn.0043c3e0
call fcn.00412080
push 0x44a528
mov dword [ebp - 4], 0xffffffff
call edi
add esp, 4
test eax, eax
jne 0x402743
cmp dword [0x44a554], 0x7fffffff
je 0x402731
cmp byte [0x44a09a], al
je 0x402559
cmp byte [0x44a4a7], al
push 4
sete byte [0x44a4a7]
mov byte [0x44a09a], al
call fcn.0043f429
add esp, 4
lea ecx, [ebp - 0x14]
mov dword [eax], 0x402110
push ecx
push 0
push eax
push 0x402c10
push 0
push 0
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__beginthreadex]
add esp, 0x18
mov dword [ebp - 0x18], eax
test eax, eax
je 0x402722
mov ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x40271a
push ecx
push eax
call dword [sym.imp.MSVCP140.dll__Thrd_detach]
add esp, 8
test eax, eax
jne 0x40271a
xorps xmm0, xmm0
movlpd qword [ebp - 0x18], xmm0
push 0x44a528
call ebx
mov al, byte [0x44a4a4]
add esp, 4
test al, al
je 0x40257a
cmp byte [0x44a4a7], 0
je 0x40257a
call fcn.00401e00
mov al, byte [0x44a4a6]
test al, al
je 0x4025a4
push 0x20
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x4025a4
push 0
push 0
push 0
push 0x20
call esi
push 0
push 2
push 0
push 0x20
call esi
mov dword [ebp - 4], 4
call fcn.0040bba0
mov ecx, dword [0x44a4a8]
push 0
push 7
push ecx
mov eax, dword [ecx]
call dword [eax + 0xe4]
mov ecx, dword [0x44a4a8]
push 0
push 0x1b
push ecx
mov eax, dword [ecx]
call dword [eax + 0xe4]
mov ecx, dword [0x44a4a8]
push 0
push 0xae
push ecx
mov eax, dword [ecx]
call dword [eax + 0xe4]
mov ecx, dword [0x44a4a8]
push 0
push ecx
mov dword [esp], 0x3f800000
mov eax, dword [ecx]
push 0xff000000
push 3
push 0
push 0
push ecx
call dword [eax + 0xac]
mov eax, dword [0x44a4a8]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xa4]
test eax, eax
js 0x402651
call fcn.0040bf70
mov eax, dword [0x44a520]
xor ecx, ecx
mov eax, dword [eax + 0x4a34]
mov eax, dword [eax]
add eax, 0x3c
cmp byte [eax], cl
cmovne ecx, eax
call fcn.0042e270
mov eax, dword [0x44a4a8]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xa8]
mov ecx, dword [0x44a4a8]
push 0
push 0
push 0
mov eax, dword [ecx]
push 0
push ecx
call dword [eax + 0x44]
cmp eax, 0x88760868
jne 0x402683
mov eax, dword [0x44a4a8]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
cmp eax, 0x88760869
jne 0x402683
call fcn.00401460
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x20], 5
mov dword [ebp - 0x1c], 0
call fcn.00402a00
cmp byte [0x44a099], 0
jne 0x4023a0
call fcn.004016f0
mov dword [ebp - 4], 5
mov ecx, dword [0x44a4a8]
test ecx, ecx
je 0x4026cc
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [0x44a4a8], 0
mov ecx, dword [0x44a49c]
test ecx, ecx
je 0x4026e6
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [0x44a49c], 0
push dword [0x44a4a0]
call dword [sym.imp.USER32.dll_DestroyWindow]
push dword [0x44a4c0]
push dword [0x44a4d4]
call dword [sym.imp.USER32.dll_UnregisterClassA]
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 1
call dword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
push 6
mov dword [ebp - 0x14], 0
call dword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
push 6
mov dword [0x44a554], 0x7ffffffe
call dword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
push 5
call dword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
int3