Function at 0x412270
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x14
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov dword [esi + 0x62ae8], 0
mov eax, dword [0x8a68bc]
test eax, eax
jbe 0x41229b
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret 0x14
mov eax, dword [0x7da1d0]
test eax, eax
jne 0x4122b3
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret 0x14
mov eax, dword [esi + 0x61c58]
test eax, eax
je 0x4122cc
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret 0x14
mov eax, dword [0x7e1288]
test eax, eax
je 0x4122f8
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
push eax
push ecx
mov ecx, 0x7e126c
call fcn.00455c80
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret 0x14
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x28]
push edi
push ebx
mov ecx, 0x7e04c8
call fcn.00418400
test eax, eax
je 0x41231f
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret 0x14
mov eax, dword [0x777404]
test eax, eax
je 0x412337
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret 0x14
push edi
push ebx
mov ecx, 0x7243a4
call fcn.0042aab0
cmp eax, 0xffffffff
je 0x412370
cmp eax, 2
jne 0x41242c
push edi
push ebx
mov ecx, 0x75752c
call fcn.0044e910
test eax, eax
je 0x412370
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret 0x14
push edi
push ebx
mov ecx, 0x7243a4
call fcn.0042d720
cmp eax, 0xffffffff
je 0x412390
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret 0x14
push edi
push ebx
push 0x724ffc
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x4123b0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret 0x14
mov eax, dword [0x7243c4]
test eax, eax
je 0x4123da
mov eax, dword [0x7243c8]
test eax, eax
je 0x4123da
mov eax, dword [0x7243cc]
test eax, eax
jne 0x4123da
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret 0x14
mov eax, dword [0x7e335c]
test eax, eax
je 0x4123fb
cmp byte [eax + 0x88], 0x32
jne 0x4123fb
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret 0x14
mov eax, dword [esi + 0x62a54]
test eax, eax
jne 0x4129ac
mov eax, dword [esi + 0x62a50]
test eax, eax
jne 0x4129ac
mov eax, dword [esi + 0xf0]
test eax, eax
jle 0x41243b
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x18]
test eax, eax
je 0x41243b
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret 0x14
push edi
lea eax, [esp + 0x2c]
push ebx
push eax
mov ecx, esi
call fcn.00412100
mov ecx, eax
mov edx, dword [esi + 0xd0]
mov eax, dword [ecx]
mov dword [esp + 0x1c], eax
mov ecx, dword [ecx + 4]
push ecx
push eax
mov eax, dword [esi + 0xcc]
mov dword [esp + 0x28], ecx
mov ecx, dword [esi + 0x62a58]
push edx
push eax
call fcn.0043d290
mov ecx, dword [esi + 0xcc]
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
cmp ecx, edx
mov byte [esp + 0x28], al
jne 0x41249b
cmp dword [esi + 0xd0], ebp
jne 0x41249b
mov al, byte [esi + 0xc1]
mov byte [esp + 0x28], al
mov edi, dword [esp + 0x38]
test edi, edi
je 0x4124c8
mov edx, dword [edi]
mov eax, dword [esi + 0xd0]
mov ebx, dword [edi + 4]
sub ecx, edx
mov edx, ecx
sub eax, ebx
imul edx, ecx
mov ecx, eax
imul ecx, eax
add edx, ecx
mov dword [esp + 0x38], edx
fild dword [esp + 0x38]
jmp 0x4124e8
mov eax, ecx
mov ecx, dword [esi + 0xd0]
sub ecx, ebp
sub eax, edx
mov edx, ecx
imul edx, ecx
mov ecx, eax
imul ecx, eax
add edx, ecx
mov dword [esp + 0x38], edx
fild dword [esp + 0x38]
fsqrt
call fcn.00468520
mov ebp, dword [sym.imp.USER32.dll_GetKeyState]
push 0x10
mov ebx, eax
call ebp
xor edx, edx
mov dl, ah
test dl, dl
je 0x4125f5
mov eax, dword [0x7e3368]
test eax, eax
jne 0x4125f5
mov al, byte [esi + 0x629c8]
test al, al
jne 0x4129ac
mov ebx, dword [esp + 0x30]
cmp ebx, 0xffffffff
je 0x412553
test edi, edi
je 0x412553
mov eax, dword [edi + 4]
mov ecx, dword [edi]
mov edx, dword [esi + 0xd0]
push eax
mov eax, dword [esi + 0xcc]
push ecx
mov ecx, dword [esi + 0x62a58]
push edx
push eax
call fcn.0043d290
mov byte [esp + 0x28], al
mov eax, dword [esi + 0x629d8]
mov edi, dword [esp + 0x28]
test eax, eax
je 0x4125be
push edi
mov ecx, 0x47ef18
call fcn.00419c40
test eax, eax
je 0x4125be
mov al, byte [esi + 0x629c8]
test al, al
jne 0x4129ac
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x4129ac
mov ecx, dword [esi + 0xcc]
mov edx, dword [esi + 0xd0]
lea eax, [esp + 0x14]
push 0xffffffffffffffff
push eax
push 0
push ebx
mov dword [esp + 0x24], ecx
push edi
push 0xb
mov ecx, esi
mov dword [esp + 0x30], edx
call fcn.00410840
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x14
mov ecx, dword [esi + 0xcc]
mov edx, dword [esi + 0xd0]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x34]
lea eax, [esp + 0x14]
push 0xffffffffffffffff
push eax
push ecx
push ebx
push edi
push 0xb
mov ecx, esi
mov dword [esp + 0x30], edx
call fcn.00410840
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x14
push 0x12
call ebp
xor edx, edx
mov dl, ah
test dl, dl
je 0x412643
mov al, byte [esi + 0x629c8]
test al, al
jne 0x4129ac
cmp ebx, 2
push 0xffffffffffffffff
jge 0x41261d
lea eax, [esp + 0x20]
push eax
jmp 0x41261f
push 0
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x30]
push ecx
push edx
push eax
push 8
mov ecx, esi
call fcn.00410840
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x14
mov ebp, dword [esp + 0x30]
cmp ebp, 0xffffffff
je 0x412799
test edi, edi
je 0x412799
mov ecx, dword [edi + 4]
mov edx, dword [edi]
mov eax, dword [esi + 0xd0]
push ecx
mov ecx, dword [esi + 0xcc]
push edx
push eax
push ecx
mov ecx, dword [esi + 0x62a58]
call fcn.0043d290
cmp ebx, 2
mov byte [esp + 0x28], al
jge 0x4126f2
test ebx, ebx
jle 0x4126f2
mov al, byte [esi + 0x629c8]
test al, al
jne 0x4129ac
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x4126d3
mov edx, dword [esi + 0xcc]
mov eax, dword [esi + 0xd0]
lea ecx, [esp + 0x14]
push 0xffffffffffffffff
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x2c]
push ecx
push 0
push ebp
push edx
push 0xb
mov ecx, esi
mov dword [esp + 0x30], eax
call fcn.00410840
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x14
push 0xffffffffffffffff
push edi
push eax
mov eax, dword [esp + 0x34]
push ebp
push eax
push 0x15
mov ecx, esi
call fcn.00410840
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x14
mov edi, dword [esp + 0x28]
mov edx, dword [esi + 0xd0]
mov eax, dword [esi + 0xcc]
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esi + 0x62a58]
push 1
push edi
push edx
push eax
call fcn.0043cc30
test eax, eax
je 0x41276d
test ebx, ebx
jle 0x41276d
mov al, byte [esi + 0x629c8]
push 0xffffffffffffffff
test al, al
jne 0x41274c
mov edx, dword [esp + 0x38]
lea ecx, [esp + 0x18]
push ecx
push edx
push ebp
push edi
push 0x15
mov ecx, esi
call fcn.00410840
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x14
mov ecx, dword [esp + 0x38]
lea eax, [esp + 0x18]
push eax
push ecx
push ebp
push edi
push 0x1e
mov ecx, esi
call fcn.00410840
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x14
mov al, byte [esi + 0x629c8]
push 0xffffffffffffffff
push 0
push 0
test al, al
push 0
push edi
jne 0x4129a3
push 0
mov ecx, esi
call fcn.00410840
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x14
mov ebp, dword [esp + 0x28]
mov eax, dword [esi + 0xd0]
mov ecx, dword [esi + 0xcc]
lea edx, [esp + 0x14]
push edx
push 1
push ebp
push eax
push ecx
mov ecx, dword [esi + 0x62a58]
call fcn.0043cc30
test eax, eax
je 0x4127fb
test ebx, ebx
jle 0x4127fb
mov al, byte [esi + 0x629c8]
mov ecx, dword [esp + 0x30]
test al, al
mov eax, dword [esp + 0x34]
lea edx, [esp + 0x14]
push 0xffffffffffffffff
push edx
push eax
push ecx
push ebp
jne 0x412758
push 0x15
mov ecx, esi
call fcn.00410840
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x14
mov eax, dword [esi + 0xd0]
mov ecx, dword [esi + 0xcc]
lea edx, [esp + 0x14]
push edx
push 1
push ebp
push eax
push ecx
mov ecx, dword [esi + 0x62a58]
call fcn.0043cc30
test eax, eax
jne 0x41297b
cmp byte [esi + 0x89], 7
jne 0x41288f
mov al, byte [esi + 0x629c8]
test al, al
jne 0x41288f
mov al, byte [esi + 0xc1]
mov ecx, dword [esi + 0xd0]
lea edx, [esp + 0x14]
push edx
mov edx, dword [esi + 0xcc]
push 1
push eax
push ecx
mov ecx, dword [esi + 0x62a58]
push edx
call fcn.0043cc30
test eax, eax
jne 0x41288f
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
lea eax, [esp + 0x14]
push 0xffffffffffffffff
push eax
mov al, byte [esi + 0xc1]
push ecx
push edx
push eax
push 0xb
mov ecx, esi
call fcn.00410840
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x14
mov byte [esp + 0x28], 9
xor edi, edi
mov ebx, 0x64
mov byte [esp + 0x38], 0
mov edx, dword [esp + 0x38]
mov eax, dword [esi + 0xd0]
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esi + 0xcc]
push 1
push edx
push eax
push ecx
mov ecx, dword [esi + 0x62a58]
call fcn.0043cc30
test eax, eax
je 0x412908
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
sub ecx, edx
sub eax, edi
mov edx, ecx
imul edx, ecx
mov ecx, eax
imul ecx, eax
add edx, ecx
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fsqrt
call fcn.00468520
mov edi, eax
cmp edi, ebx
jg 0x412908
mov dl, byte [esp + 0x38]
mov ebx, edi
mov byte [esp + 0x28], dl
mov al, byte [esp + 0x38]
inc al
cmp al, 8
mov byte [esp + 0x38], al
jb 0x4128a0
cmp byte [esp + 0x28], 9
je 0x41297b
test edi, edi
jle 0x41297b
mov edi, dword [esp + 0x28]
mov ecx, dword [esi + 0xd0]
mov edx, dword [esi + 0xcc]
lea eax, [esp + 0x14]
push eax
push 1
push edi
push ecx
mov ecx, dword [esi + 0x62a58]
push edx
call fcn.0043cc30
mov al, byte [esi + 0x629c8]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
push 0xffffffffffffffff
test al, al
lea eax, [esp + 0x18]
push eax
push ecx
push edx
push edi
jne 0x412758
push 0x15
mov ecx, esi
call fcn.00410840
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x14
mov al, byte [esi + 0x629c8]
push 0xffffffffffffffff
push 0
push 0
test al, al
push 0
push ebp
jne 0x4129a3
push 0
mov ecx, esi
call fcn.00410840
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x14
push 0x1d
mov ecx, esi
call fcn.00410840
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x14