Function at 0x43f0e0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x124
push ebx
mov ebx, dword [esp + 0x12c]
push ebp
push esi
cmp ebx, 0x25
push edi
mov esi, ecx
je 0x43f337
cmp ebx, 0x27
je 0x43f337
cmp ebx, 0x26
je 0x43f276
cmp ebx, 0x28
je 0x43f276
cmp ebx, 0x24
jne 0x43f14b
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_GetCaretPos]
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], ecx
xor ecx, ecx
push eax
push ecx
mov ecx, esi
call fcn.0043ef50
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret 8
cmp ebx, 0x23
jne 0x43f18b
mov eax, dword [esi + 0x20]
lea edx, [esp + 0x24]
push edx
push eax
call dword [sym.imp.USER32.dll_GetClientRect]
lea ecx, [esp + 0x10]
push ecx
call dword [sym.imp.USER32.dll_GetCaretPos]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esi + 0x110]
mov dword [esp + 0x1c], edx
cdq
idiv ecx
mov edi, dword [esp + 0x14]
imul eax, ecx
jmp 0x43f432
cmp ebx, 0x21
jne 0x43f1ab
mov eax, dword [esi + 0x12c]
mov ebx, dword [esi + 0x80]
dec eax
imul eax, dword [esi + 0x128]
sub ebx, eax
jmp 0x43f2fc
cmp ebx, 0x22
jne 0x43f1cb
mov ecx, dword [esi + 0x12c]
mov ebx, dword [esi + 0x80]
dec ecx
imul ecx, dword [esi + 0x128]
add ebx, ecx
jmp 0x43f2fc
cmp ebx, 9
jne 0x43f1e4
mov ecx, esi
call fcn.0043e5d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret 8
cmp ebx, 0xd
jne 0x43f1fd
mov ecx, esi
call fcn.00440080
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret 8
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x35]
mov byte [esp + 0x34], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea edx, [esp + 0x34]
mov dword [esp + 0x18], 0
push edx
stosb byte es:[edi], al
call dword [sym.imp.USER32.dll_GetKeyboardState]
mov eax, dword [esi + 0xc0]
lea ecx, [esp + 0x18]
push eax
mov eax, dword [esp + 0x140]
shr eax, 0x10
push 0
lea edx, [esp + 0x3c]
push ecx
and eax, 0xff
push edx
push eax
push ebx
call dword [sym.imp.USER32.dll_ToAsciiEx]
test eax, eax
jle 0x43f43b
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
push ecx
mov ecx, esi
call fcn.0043efa0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret 8
mov eax, dword [esi + 0x20]
lea edx, [esp + 0x24]
push edx
push eax
call dword [sym.imp.USER32.dll_GetClientRect]
lea ecx, [esp + 0x10]
push ecx
call dword [sym.imp.USER32.dll_GetCaretPos]
mov ecx, dword [esp + 0x14]
mov edi, dword [esi + 0x114]
mov ebp, dword [esp + 0x10]
mov eax, ecx
cdq
idiv edi
cmp ebx, 0x26
mov dword [esp + 0x20], ecx
jne 0x43f2d8
cmp ecx, edi
jl 0x43f2c8
sub ecx, edi
push ecx
push ebp
mov ecx, esi
call fcn.0043ef50
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret 8
mov edx, dword [esi + 0x128]
mov ebx, dword [esi + 0x80]
sub ebx, edx
jmp 0x43f2fc
cmp ebx, 0x28
jne 0x43f43b
mov edx, dword [esi + 0x12c]
sub edx, 2
cmp eax, edx
jl 0x43f31e
mov eax, dword [esi + 0x128]
mov ebx, dword [esi + 0x80]
add ebx, eax
push 0
push 0
push 1
push 0
mov ecx, esi
mov dword [esi + 0x80], ebx
call fcn.0043c310
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret 8
lea eax, [edi + ecx]
mov ecx, esi
push eax
push ebp
call fcn.0043ef50
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret 8
mov edx, dword [esi + 0x20]
lea ecx, [esp + 0x24]
push ecx
push edx
call dword [sym.imp.USER32.dll_GetClientRect]
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_GetCaretPos]
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
cmp ebx, 0x25
mov dword [esp + 0x1c], ecx
mov edi, eax
jne 0x43f3d7
mov ebx, dword [esi + 0x110]
cmp ecx, ebx
jl 0x43f386
sub ecx, ebx
push edi
push ecx
mov ecx, esi
call fcn.0043ef50
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret 8
mov eax, dword [esp + 0x2c]
cdq
idiv ebx
mov ebp, eax
mov eax, dword [esi + 0x114]
imul ebp, ebx
sub edi, eax
jns 0x43f3c1
mov ecx, dword [esi + 0x128]
mov ebx, dword [esi + 0x80]
push 0
push 0
sub ebx, ecx
push 1
push 0
mov ecx, esi
mov dword [esi + 0x80], ebx
call fcn.0043c310
xor edi, edi
push edi
push ebp
mov ecx, esi
call fcn.0043ef50
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret 8
cmp ebx, 0x27
jne 0x43f43b
mov ebx, dword [esi + 0x114]
mov ebp, dword [esp + 0x2c]
cdq
idiv ebx
mov edx, dword [esi + 0x110]
sub ebp, edx
cmp ecx, ebp
jg 0x43f3fa
lea eax, [edx + ecx]
jmp 0x43f432
mov edx, dword [esi + 0x12c]
sub edx, 2
cmp eax, edx
jl 0x43f42e
mov eax, dword [esi + 0x128]
mov ebp, dword [esi + 0x80]
push 0
push 0
add ebp, eax
push 1
push 0
mov ecx, esi
mov dword [esi + 0x80], ebp
call fcn.0043c310
xor eax, eax
jmp 0x43f432
xor eax, eax
add edi, ebx
push edi
push eax
mov ecx, esi
call fcn.0043ef50
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret 8