Function at 0x44c43e
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x14
push ebx
push ebp
push esi
mov esi, dword [esp + 0x24]
push edi
mov edi, dword [esp + 0x2c]
xor ebp, ebp
push edi
mov dword [esp + 0x20], ebp
mov byte [esp + 0x2c], 0
mov byte [esp + 0x30], 0
mov byte [esp + 0x16], 0
mov byte [esp + 0x17], 0
call fcn.00411085
xor ecx, ecx
inc eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004114ca
push edi
mov dword [esp + 0x20], eax
call fcn.00411085
xor ecx, ecx
lea eax, [eax + eax + 1]
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004114ca
mov ecx, dword [esp + 0x24]
add esp, 0x10
mov dword [esp + 0x18], eax
lea eax, [esp + 0x1c]
push eax
push ecx
push edi
mov ebx, 1
push 0x20
mov dword [esp + 0x30], ebx
call fcn.00437061
test eax, eax
jne 0x44c5dd
mov ecx, dword [esp + 0x1c]
jmp 0x44c4de
movzx eax, word [edi + ecx*2]
cmp ax, 0x20
je 0x44c4ee
cmp ax, 9
jne 0x44c4f1
inc ecx
jmp 0x44c4de
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x1c]
push edx
push eax
push edi
push 0
mov dword [esp + 0x2c], ecx
call fcn.00437061
mov ecx, dword [esp + 0x18]
push 0x4848c4
push ecx
call fcn.00411380
mov edi, dword [esp + 0x20]
add esp, 8
test eax, eax
jne 0x44c52a
mov byte [esp + 0x28], bl
jmp 0x44c5e1
push str.down
push edi
call fcn.00411380
add esp, 8
test eax, eax
jne 0x44c545
mov byte [esp + 0x2c], bl
jmp 0x44c5e1
push 0x4848d8
push edi
call fcn.00411380
add esp, 8
test eax, eax
jne 0x44c560
mov byte [esp + 0x12], bl
jmp 0x44c5e1
push 0x4848e0
push edi
call fcn.00411380
add esp, 8
test eax, eax
jne 0x44c578
mov byte [esp + 0x13], bl
jmp 0x44c5e1
cmp word [edi], 0x30
jne 0x44c5c7
movzx eax, word [edi + 2]
cmp ax, 0x78
je 0x44c58e
cmp ax, 0x58
jne 0x44c5c7
lea edx, [esp + 0x20]
push edx
lea ebx, [edi + 4]
push ebx
call fcn.00436f29
cmp word [ebx], 0x30
mov ebx, dword [esp + 0x20]
push ebx
jne 0x44c5b7
push 0x4848e8
push edi
call fcn.00436f11
add esp, 0xc
jmp 0x44c5e1
push 0x4848f0
push edi
call fcn.00436f11
add esp, 0xc
jmp 0x44c5e1
push edi
call fcn.004131e1
mov ebx, eax
add esp, 4
test ebx, ebx
jg 0x44c5e1
mov ebx, 1
jmp 0x44c5e1
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
mov ecx, dword [ebp*4 + 0x491b10]
push eax
push ecx
call fcn.00411380
add esp, 8
test eax, eax
je 0x44c600
inc ebp
cmp ebp, 0x62
jl 0x44c5e1
cmp ebp, 0x62
jne 0x44c655
cmp byte [esp + 0x2c], 0
mov edx, dword [esp + 0x14]
movzx eax, word [edx]
je 0x44c62d
push 0
push 0
push eax
call dword [sym.imp.USER32.dll_VkKeyScanW]
movzx ecx, al
push ecx
push esi
call fcn.004447c8
jmp case.default.0x44c6f4
cmp byte [esp + 0x28], 0
je 0x44c648
push 0
push 0
push eax
call dword [sym.imp.USER32.dll_VkKeyScanW]
movzx ecx, al
push ecx
jmp 0x44c9da
push ebx
push eax
push esi
call fcn.00444fde
jmp case.default.0x44c6f4
cmp byte [ebp + 0x491c98], 0
jne 0x44c6e4
cmp byte [esp + 0x2c], 0
je 0x44c680
movzx ecx, byte [ebp + str._f_b_b..__reepqrstuvwxyz________t___]
push 0
push 0
push ecx
push esi
call fcn.004447c8
jmp case.default.0x44c6f4
cmp byte [esp + 0x28], 0
je 0x44c698
movzx edx, byte [ebp + str._f_b_b..__reepqrstuvwxyz________t___]
push 0
push 0
push edx
jmp 0x44c9da
cmp byte [esp + 0x12], 0
je 0x44c6b4
movzx eax, byte [ebp + str._f_b_b..__reepqrstuvwxyz________t___]
push 1
push eax
push esi
call fcn.00445075
jmp case.default.0x44c6f4
cmp byte [esp + 0x13], 0
je 0x44c6d0
movzx ecx, byte [ebp + str._f_b_b..__reepqrstuvwxyz________t___]
push 0
push ecx
push esi
call fcn.00445075
jmp case.default.0x44c6f4
movzx edx, byte [ebp + str._f_b_b..__reepqrstuvwxyz________t___]
push ebx
push edx
push esi
call fcn.00444f9b
jmp case.default.0x44c6f4
movzx eax, byte [ebp + str._f_b_b..__reepqrstuvwxyz________t___]
cmp eax, 0xe
ja case.default.0x44c6f4
jmp dword [eax*4 + 0x44c9fe]
cmp byte [esp + 0x2c], 0
jne case.0x44c6f4.2
cmp byte [esp + 0x28], 0
je 0x44c724
mov eax, dword [esi + 0x14]
test eax, 0x100
je case.default.0x44c6f4
xor eax, 0x100
mov dword [esi + 0x14], eax
jmp 0x44c9d4
push 0
push 0
push 0x12
push esi
call fcn.00444957
jmp case.default.0x44c6f4
cmp byte [esp + 0x2c], 0
je 0x44c74d
push 0
push 0
push 0xd
push esi
call fcn.004447c8
jmp case.default.0x44c6f4
cmp byte [esp + 0x28], 0
je 0x44c75f
push 0
push 0
push 0xd
jmp 0x44c9da
push 1
push 0
push 0xd
push esi
call fcn.00444957
jmp case.default.0x44c6f4
mov eax, dword [esi + 0x14]
test eax, 0x100
jne case.default.0x44c6f4
push 0
push 0
push 0x12
or eax, 0x100
push esi
mov dword [esi + 0x14], eax
call fcn.004447c8
jmp case.default.0x44c6f4
cmp byte [esp + 0x2c], 0
je 0x44c7c8
mov eax, dword [esi + 0x14]
test eax, 0x200
jne case.default.0x44c6f4
push 0
push 0
push 0xa0
or eax, 0x200
push esi
mov dword [esi + 0x14], eax
call fcn.004447c8
jmp case.default.0x44c6f4
cmp byte [esp + 0x28], 0
je 0x44c7f3
mov eax, dword [esi + 0x14]
test eax, 0x200
je case.default.0x44c6f4
push 0
xor eax, 0x200
push 0
mov dword [esi + 0x14], eax
push 0xa0
jmp 0x44c9da
push 0
push 0
push 0xa0
push esi
call fcn.00444957
jmp case.default.0x44c6f4
cmp byte [esp + 0x2c], 0
je 0x44c838
mov eax, dword [esi + 0x14]
test eax, 0x400
jne case.default.0x44c6f4
push 0
push 0
push 0xa1
or eax, 0x400
push esi
mov dword [esi + 0x14], eax
call fcn.004447c8
jmp case.default.0x44c6f4
cmp byte [esp + 0x28], 0
je 0x44c863
mov eax, dword [esi + 0x14]
test eax, 0x400
je case.default.0x44c6f4
push 0
xor eax, 0x400
push 0
mov dword [esi + 0x14], eax
push 0xa1
jmp 0x44c9da
push 0
push 0
push 0xa1
push esi
call fcn.00444957
jmp case.default.0x44c6f4
mov eax, dword [esi + 0x14]
test eax, 0x200
jne case.default.0x44c6f4
push 0
push 0
push 0x10
or eax, 0x200
push esi
mov dword [esi + 0x14], eax
call fcn.004447c8
jmp case.default.0x44c6f4
mov eax, dword [esi + 0x14]
test eax, 0x200
je case.default.0x44c6f4
push 0
xor eax, 0x200
push 0
mov dword [esi + 0x14], eax
push 0x10
jmp 0x44c9da
mov eax, dword [esi + 0x14]
test eax, 0x800
jne case.default.0x44c6f4
push 0
push 0
push 0x11
or eax, 0x800
push esi
mov dword [esi + 0x14], eax
call fcn.004447c8
jmp case.default.0x44c6f4
mov eax, dword [esi + 0x14]
test eax, 0x800
je case.default.0x44c6f4
push 0
xor eax, 0x800
push 0
mov dword [esi + 0x14], eax
push 0x11
jmp 0x44c9da
mov eax, dword [esi + 0x14]
test eax, 0x1000
jne case.default.0x44c6f4
push 0
push 0
push 0x5b
or eax, 0x1000
push esi
mov dword [esi + 0x14], eax
call fcn.004447c8
jmp case.default.0x44c6f4
mov eax, dword [esi + 0x14]
test eax, 0x1000
je case.default.0x44c6f4
push 0
xor eax, 0x1000
push 0
mov dword [esi + 0x14], eax
push 0x5b
jmp 0x44c9da
mov eax, dword [esi + 0x14]
test eax, 0x2000
jne case.default.0x44c6f4
push 0
push 0
push 0x5c
or eax, 0x2000
push esi
mov dword [esi + 0x14], eax
call fcn.004447c8
jmp case.default.0x44c6f4
mov eax, dword [esi + 0x14]
test eax, 0x2000
je case.default.0x44c6f4
push 0
xor eax, 0x2000
push 0
mov dword [esi + 0x14], eax
push 0x5c
jmp 0x44c9da
test dword [esi + 0x14], 0x100
jne 0x44c9a2
push 0
push 0
push 0x12
push esi
call fcn.004447c8
xor ebx, ebx
cmp word [edi], bx
je 0x44c9cb
mov eax, edi
lea ecx, [ecx]
mov al, byte [eax]
push 0
add al, 0x30
movzx ecx, al
push 0
push ecx
push esi
call fcn.00444957
inc ebx
cmp word [edi + ebx*2], 0
lea eax, [edi + ebx*2]
jne 0x44c9ae
test dword [esi + 0x14], 0x100
jne case.default.0x44c6f4
push 0
push 0
push 0x12
push esi
call fcn.00444645
mov edx, dword [esp + 0x14]
push edx
call fcn.0041109f
push edi
call fcn.0041109f
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret 8