Function at 0x4095f0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
sub esp, 0x60
xor esi, esi
xor edi, edi
mov ecx, 0xa4
push esi
dec ecx
jne 0x409602
mov edx, 0x41506b
call fcn.00412cca
lea ebx, [ebp - 0x180]
mov ecx, 0x104
call fcn.00412ba6
mov eax, 0x30
mov dword [ebp - 0x2b4], eax
lea ebx, [ebp - 0x2b4]
push ebx
lea ebx, [ebp - 0x180]
push ebx
push dword [0x414a68]
call dword [sym.imp.USER32.DLL_GetClassInfoExA]
call fcn.00412623
mov dword [0x414f10], eax
cmp dword [0x414f10], 0
jne 0x4097a8
mov eax, 0x30
mov dword [ebp - 0x2b4], eax
fild word [0x415724]
fld1
call fcn.00412281
fild word [0x415728]
call fcn.00412281
call fcn.00411946
mov dword [ebp - 0x2b0], eax
mov eax, 0x40b097
mov dword [ebp - 0x2ac], eax
mov dword [ebp - 0x2a8], 0
mov dword [ebp - 0x2a4], 0
mov eax, dword [0x414a68]
mov dword [ebp - 0x2a0], eax
sub esp, 4
push 0x8000
push 0x20
push 0x20
push 1
mov edx, 0x415094
call fcn.00412cca
mov ebx, esp
add ebx, 0x10
call fcn.00412393
push dword [0x414a68]
call dword [sym.imp.USER32.DLL_LoadImageA]
push eax
mov ebx, esp
mov eax, dword [ebx + 4]
call fcn.00411f3d
pop eax
add esp, 4
call fcn.00412623
mov dword [ebp - 0x29c], eax
push 0x7f00
push 0
call dword [sym.imp.USER32.DLL_LoadCursorA]
call fcn.00412623
mov dword [ebp - 0x298], eax
mov eax, 1
mov ecx, 5
add eax, ecx
mov dword [ebp - 0x294], eax
mov dword [ebp - 0x290], 0
lea ebx, [ebp - 0x180]
mov eax, ebx
mov dword [ebp - 0x28c], eax
sub esp, 4
push 0x8000
push 0x10
push 0x10
push 1
mov edx, 0x415094
call fcn.00412cca
mov ebx, esp
add ebx, 0x10
call fcn.00412393
push dword [0x414a68]
call dword [sym.imp.USER32.DLL_LoadImageA]
push eax
mov ebx, esp
mov eax, dword [ebx + 4]
call fcn.00411f3d
pop eax
add esp, 4
call fcn.00412623
mov dword [ebp - 0x288], eax
lea ebx, [ebp - 0x2b4]
push ebx
call dword [sym.imp.USER32.DLL_RegisterClassExA]
call fcn.00412623
test eax, eax
je 0x4097a8
mov dword [0x414f10], 1
mov esi, 0
mov edi, 0
mov dword [ebp - 0x2ec], 0x1f7
mov dword [ebp - 0x2f0], 0xf9
mov eax, 2
push dword [ebp - 0x2ec]
push eax
push 0
call dword [sym.imp.USER32.DLL_GetSystemMetrics]
call fcn.00412623
pop dword [ebp - 0x2c]
pop ecx
sub eax, ecx
cdq
idiv dword [ebp - 0x2c]
mov esi, eax
mov eax, 2
push dword [ebp - 0x2f0]
push eax
push 1
call dword [sym.imp.USER32.DLL_GetSystemMetrics]
call fcn.00412623
pop dword [ebp - 0x2c]
pop ecx
sub eax, ecx
cdq
idiv dword [ebp - 0x2c]
mov edi, eax
sub esp, 4
push dword [ebp + 0x10]
push dword [0x414a68]
push 0
push dword [ebp + 8]
push dword [ebp - 0x2f0]
push dword [ebp - 0x2ec]
mov eax, edi
push eax
mov eax, esi
push eax
fild dword [0x4156e8]
fild dword [0x4156c8]
call fcn.00412281
fild dword [0x4156e0]
call fcn.00412281
fild dword [0x4156f4]
call fcn.00412281
fild dword [0x4156fc]
call fcn.00412281
fild dword [0x4156d8]
call fcn.00412281
fild dword [0x4156dc]
call fcn.00412281
fild dword [0x4156d0]
call fcn.00412281
call fcn.00411946
push eax
mov edx, 0x4150a2
call fcn.00412cca
mov ebx, esp
add ebx, 0x24
call fcn.00412393
lea ebx, [ebp - 0x180]
push ebx
fild dword [0x41571c]
fild word [0x415708]
call fcn.00412281
fldz
call fcn.00412281
fldz
call fcn.00412281
fldz
call fcn.00412281
call fcn.00411946
push eax
call dword [sym.imp.USER32.DLL_CreateWindowExA]
push eax
mov ebx, esp
mov eax, dword [ebx + 4]
call fcn.00411f3d
pop eax
add esp, 4
call fcn.00412623
mov dword [ebp - 0x2f4], eax
push 0
push dword [ebp - 0x2f4]
call dword [sym.imp.USER32.DLL_IsWindow]
call fcn.00412623
pop dword [ebp - 0x2c]
cmp eax, dword [ebp - 0x2c]
jne 0x409920
mov dword [ebp - 0x7c], 0xffffffff
jmp 0x409dc4
mov eax, 0x40
push 0x40
push eax
push 0xffffffffffffffec
push dword [ebp - 0x2f4]
call dword [sym.imp.USER32.DLL_GetWindowLongA]
call fcn.00412623
pop dword [ebp - 0x2c]
pop ecx
and ecx, eax
cmp ecx, dword [ebp - 0x2c]
jne 0x40994d
mov dword [ebp + 0xc], 0
cmp dword [ebp + 0xc], 1
jne 0x409dbb
fild dword [0x4156cc]
mov ebx, 1
call fcn.00412617
push 0xfffffffffffffff0
push dword [ebp + 8]
call dword [sym.imp.USER32.DLL_GetWindowLongA]
mov ebx, 0x4001
call fcn.004125ef
call fcn.0041191b
call fcn.0041226b
ftst
fnstsw ax
sahf
fstp st(0)
mov ax, 0xffff
jne 0x409995
inc ax
call fcn.00411910
ftst
fnstsw ax
sahf
fstp st(0)
je 0x409a0e
fild word [0x415704]
mov ebx, 1
call fcn.00412617
push 0xffffffffffffffec
push dword [ebp + 8]
call dword [sym.imp.USER32.DLL_GetWindowLongA]
mov ebx, 0x4001
call fcn.004125ef
call fcn.0041191b
call fcn.0041226b
ftst
fnstsw ax
sahf
fstp st(0)
mov ax, 0xffff
jne 0x4099e5
inc ax
call fcn.00411910
ftst
fnstsw ax
sahf
fstp st(0)
je 0x4099f8
jmp 0x409a0e
push dword [ebp + 8]
call dword [sym.imp.USER32.DLL_GetParent]
call fcn.00412623
mov dword [ebp + 8], eax
jmp 0x409957
sub esp, 4
mov edx, 0x41505f
call fcn.00412cca
mov ebx, esp
call fcn.00412393
push dword [ebp - 0x2f4]
call dword [sym.imp.USER32.DLL_GetPropA]
push eax
mov ebx, esp
mov eax, dword [ebx + 4]
call fcn.00411f3d
pop eax
add esp, 4
call fcn.00412623
mov dword [ebp - 0x2fc], eax
mov eax, dword [ebp - 0x2fc]
test eax, eax
je 0x409a6f
mov ebx, dword [ebp - 0x2fc]
mov dword [ebx + 0x10], 1
mov ebx, dword [ebp - 0x2fc]
mov eax, dword [ebp + 8]
mov dword [ebx + 8], eax
fldz
mov eax, dword [ebp + 8]
call fcn.00411922
fcompp
fnstsw ax
sahf
je 0x409a94
push 0
push dword [ebp + 8]
call dword [sym.imp.USER32.DLL_EnableWindow]
call fcn.00412623
push 1
push dword [ebp - 0x2f4]
call dword [sym.imp.USER32.DLL_ShowWindow]
call fcn.00412623
push dword [ebp - 0x2f4]
call dword [sym.imp.USER32.DLL_UpdateWindow]
call fcn.00412623
push 0
push 0
push 0
lea ebx, [ebp - 0x2d0]
push ebx
call dword [sym.imp.USER32.DLL_GetMessageA]
call fcn.00412623
test eax, eax
je 0x409da3
push 0
push dword [ebp - 0x2f4]
call dword [sym.imp.USER32.DLL_IsWindow]
call fcn.00412623
pop dword [ebp - 0x2c]
cmp eax, dword [ebp - 0x2c]
jne 0x409af8
jmp 0x409da3
fild word [0x415674]
mov eax, dword [ebp - 0x2cc]
call fcn.00411922
fcompp
fnstsw ax
sahf
jne 0x409b15
jmp 0x409da3
lea ebx, [ebp - 0x2d0]
push ebx
call fcn.0040d81c
call fcn.0041191b
ftst
fnstsw ax
sahf
fstp st(0)
mov ax, 0xffff
je 0x409b35
inc ax
call fcn.00411910
ftst
fnstsw ax
sahf
fstp st(0)
je 0x409d9e
push dword [0x414654]
call fcn.0040e143
mov dword [ebp - 0x2f8], eax
push 0x104
lea ebx, [ebp - 0x180]
push ebx
call dword [sym.imp.USER32.DLL_GetFocus]
call fcn.00412623
push eax
call dword [sym.imp.USER32.DLL_GetClassNameA]
call fcn.00412623
lea ebx, [ebp - 0x180]
call fcn.00412b60
call fcn.0040ff3b
lea ebx, [ebp - 0x3c]
call fcn.00412354
mov edx, 0x4150cb
call fcn.00412cca
mov edx, dword [ebp - 0x3c]
call fcn.00412cb6
call fcn.00412581
je 0x409bce
mov ebx, 0x41444c
call fcn.00412b60
call fcn.0040ff3b
mov edx, dword [ebp - 0x3c]
call fcn.00412cb6
call fcn.00412581
jne 0x409d1c
mov eax, dword [ebp - 0x3c]
call fcn.00411f3d
mov eax, 4
push 4
push eax
push 0xfffffffffffffff0
call dword [sym.imp.USER32.DLL_GetFocus]
call fcn.00412623
push eax
call dword [sym.imp.USER32.DLL_GetWindowLongA]
call fcn.00412623
pop dword [ebp - 0x2c]
pop ecx
and ecx, eax
cmp ecx, dword [ebp - 0x2c]
jne 0x409d1a
fild word [0x415690]
mov eax, dword [ebp - 0x2cc]
call fcn.00411922
fcompp
fnstsw ax
sahf
jne 0x409c5b
cmp dword [ebp - 0x2c8], 0x1b
jne 0x409c5b
mov dword [ebp - 0x2cc], 0x111
mov ecx, 2
xor eax, eax
shl eax, 0x10
mov ax, cx
mov dword [ebp - 0x2c8], eax
mov dword [ebp - 0x2c4], 0
jmp 0x409d1a
fild word [0x415694]
mov eax, dword [ebp - 0x2cc]
call fcn.00411922
fcompp
fnstsw ax
sahf
jne 0x409d1a
cmp dword [ebp - 0x2c8], 9
jne 0x409d1a
xor eax, eax
push 0xffff8000
push eax
push 0x10
call dword [sym.imp.USER32.DLL_GetAsyncKeyState]
call fcn.00412623
pop dword [ebp - 0x2c]
pop ecx
cwde
and ecx, eax
cmp ecx, dword [ebp - 0x2c]
jne 0x409cdf
push 0
push dword [ebp - 0x2d0]
push dword [ebp - 0x2d0]
call dword [sym.imp.USER32.DLL_GetParent]
call fcn.00412623
push eax
call dword [sym.imp.USER32.DLL_GetNextDlgTabItem]
call fcn.00412623
push eax
call dword [sym.imp.USER32.DLL_SetFocus]
call fcn.00412623
jmp 0x409d10
push 1
push dword [ebp - 0x2d0]
push dword [ebp - 0x2d0]
call dword [sym.imp.USER32.DLL_GetParent]
call fcn.00412623
push eax
call dword [sym.imp.USER32.DLL_GetNextDlgTabItem]
call fcn.00412623
push eax
call dword [sym.imp.USER32.DLL_SetFocus]
call fcn.00412623
mov dword [ebp - 0x2cc], 0
jmp 0x409d24
mov eax, dword [ebp - 0x3c]
call fcn.00411f3d
fldz
mov eax, dword [ebp - 0x2f8]
call fcn.00411922
fcompp
fnstsw ax
sahf
je 0x409d7a
lea ebx, [ebp - 0x2d0]
push ebx
push dword [ebp - 0x2f8]
call dword [sym.imp.USER32.DLL_IsDialogMessageA]
call fcn.00412623
call fcn.0041191b
ftst
fnstsw ax
sahf
fstp st(0)
mov ax, 0xffff
je 0x409d68
inc ax
call fcn.00411910
ftst
fnstsw ax
sahf
fstp st(0)
je 0x409d9e
lea ebx, [ebp - 0x2d0]
push ebx
call dword [sym.imp.USER32.DLL_TranslateMessage]
call fcn.00412623
lea ebx, [ebp - 0x2d0]
push ebx
call dword [sym.imp.USER32.DLL_DispatchMessageA]
call fcn.00412623
jmp 0x409ab8
mov eax, dword [0x414e9c]
mov dword [ebp - 0x7c], eax
mov dword [0x414e9c], 0
jmp 0x409dc4
mov eax, dword [ebp - 0x2f4]
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
lea esp, [ebp - 0xc]
pop edi
pop esi
pop ebx
pop ebp
ret 0xc