Function at 0x50e9b0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x60
mov dword [ebp - 0x58], ecx
mov eax, dword [ebp - 0x58]
add eax, 0x29c
push eax
mov ecx, dword [ebp - 0x58]
call fcn.00510620
test eax, eax
jne 0x50e9e7
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp - 0x58]
call fcn.004ce040
jmp 0x50f36d
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx + 0x29c]
mov eax, dword [ecx + 0x2a0]
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], 0
mov dword [ebp - 8], 0
mov dword [ebp - 0x10], 0
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x8000
je case.0x50ea47.1
mov edx, dword [ebp + 8]
mov dword [ebp - 0x5c], edx
mov eax, dword [ebp - 0x5c]
sub eax, 0x20
mov dword [ebp - 0x5c], eax
cmp dword [ebp - 0x5c], 0x38
ja case.0x50ea47.1
mov ecx, dword [ebp - 0x5c]
movzx edx, byte [ecx + 0x50f38c]
jmp dword [edx*4 + 0x50f374]
push 0
push 0
push 0xfb8
mov ecx, dword [ebp - 0x58]
call fcn.00430bc0
mov ecx, eax
call fcn.00401270
jmp case.0x50ea47.1
mov eax, dword [ebp - 0x58]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x58]
mov eax, dword [edx + 0x168]
call eax
jmp case.0x50ea47.1
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x58]
mov eax, dword [edx + 0x15c]
call eax
jmp case.0x50ea47.1
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x58]
mov eax, dword [edx + 0x160]
call eax
jmp case.0x50ea47.1
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x58]
mov eax, dword [edx + 0x164]
call eax
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x8000
je 0x50ead7
cmp dword [ebp + 8], 0x2d
jne 0x50ead7
mov edx, dword [ebp - 0x58]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x58]
mov edx, dword [eax + 0x164]
call edx
cmp dword [ebp + 8], 0x2e
jne 0x50eaf2
mov eax, dword [ebp - 0x58]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x58]
mov eax, dword [edx + 0x13c]
call eax
jmp 0x50f0ed
cmp dword [ebp + 8], 0x28
jne 0x50eb50
mov dword [ebp - 4], 0
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp - 0x18]
add edx, 1
mov dword [ebp - 0x18], edx
mov ecx, dword [ebp - 0x58]
call fcn.00425700
cmp dword [ebp - 0x18], eax
jge 0x50eb3f
mov eax, dword [ebp - 0x18]
push eax
mov ecx, dword [ebp - 0x58]
call fcn.00517430
test eax, eax
jle 0x50eb34
mov dword [ebp - 4], 1
jmp 0x50eb3f
mov ecx, dword [ebp - 0x18]
add ecx, 1
mov dword [ebp - 0x18], ecx
jmp 0x50eb0e
cmp dword [ebp - 4], 0
jne 0x50eb4b
mov edx, dword [ebp - 0xc]
mov dword [ebp - 0x18], edx
jmp 0x50f0ed
cmp dword [ebp + 8], 0x26
jne 0x50ebaf
mov dword [ebp - 4], 0
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0x18]
sub ecx, 1
mov dword [ebp - 0x18], ecx
mov edx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x18]
cmp eax, dword [edx + 0xf0]
jl 0x50eb9e
mov ecx, dword [ebp - 0x18]
push ecx
mov ecx, dword [ebp - 0x58]
call fcn.00517430
test eax, eax
jle 0x50eb93
mov dword [ebp - 4], 1
jmp 0x50eb9e
mov edx, dword [ebp - 0x18]
sub edx, 1
mov dword [ebp - 0x18], edx
jmp 0x50eb6c
cmp dword [ebp - 4], 0
jne 0x50ebaa
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x18], eax
jmp 0x50f0ed
cmp dword [ebp + 8], 0x27
je 0x50ebd6
cmp dword [ebp + 8], 9
jne 0x50ecb8
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x8000
jne 0x50ecb8
mov dword [ebp - 4], 0
mov edx, dword [ebp - 0x14]
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 0x14]
add eax, 1
mov dword [ebp - 0x14], eax
cmp dword [ebp + 8], 9
jne 0x50ec76
mov ecx, dword [ebp - 0x58]
call fcn.0041f2c0
cmp dword [ebp - 0x14], eax
jne 0x50ec62
mov ecx, dword [ebp - 0x58]
call fcn.00425700
sub eax, 1
cmp dword [ebp - 0x18], eax
jge 0x50ec62
mov ecx, dword [ebp - 0x18]
add ecx, 1
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x58]
call fcn.00425700
cmp dword [ebp - 0x18], eax
jge 0x50ec4d
mov edx, dword [ebp - 0x18]
push edx
mov ecx, dword [ebp - 0x58]
call fcn.00517430
test eax, eax
jle 0x50ec42
mov dword [ebp - 4], 1
jmp 0x50ec4d
mov eax, dword [ebp - 0x18]
add eax, 1
mov dword [ebp - 0x18], eax
jmp 0x50ec1c
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx + 0xf8]
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x1c], 1
jmp 0x50ec76
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
mov ecx, dword [ebp - 0x58]
call fcn.004ce040
mov ecx, dword [ebp - 0x58]
call fcn.0041f2c0
cmp dword [ebp - 0x14], eax
jge 0x50eca7
mov eax, dword [ebp - 0x14]
push eax
mov ecx, dword [ebp - 0x58]
call fcn.00517470
test eax, eax
jle 0x50ec9c
mov dword [ebp - 4], 1
jmp 0x50eca7
mov ecx, dword [ebp - 0x14]
add ecx, 1
mov dword [ebp - 0x14], ecx
jmp 0x50ec76
cmp dword [ebp - 4], 0
jne 0x50ecb3
mov edx, dword [ebp - 0xc]
mov dword [ebp - 0x14], edx
jmp 0x50f0ed
cmp dword [ebp + 8], 0x25
je 0x50ecdc
cmp dword [ebp + 8], 9
jne 0x50edc1
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
and eax, 0x8000
je 0x50edc1
mov dword [ebp - 4], 0
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp - 0x14]
sub edx, 1
mov dword [ebp - 0x14], edx
cmp dword [ebp + 8], 9
jne 0x50ed7e
mov ecx, dword [ebp - 0x58]
call fcn.0051efe0
sub eax, 1
cmp dword [ebp - 0x14], eax
jne 0x50ed6a
mov ecx, dword [ebp - 0x58]
call fcn.0051efc0
cmp dword [ebp - 0x18], eax
jle 0x50ed6a
mov eax, dword [ebp - 0x18]
sub eax, 1
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x58]
call fcn.0051efc0
cmp dword [ebp - 0x18], eax
jle 0x50ed53
mov ecx, dword [ebp - 0x18]
push ecx
mov ecx, dword [ebp - 0x58]
call fcn.00517430
test eax, eax
jle 0x50ed48
mov dword [ebp - 4], 1
jmp 0x50ed53
mov edx, dword [ebp - 0x18]
sub edx, 1
mov dword [ebp - 0x18], edx
jmp 0x50ed22
mov ecx, dword [ebp - 0x58]
call fcn.0041f2c0
sub eax, 1
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], 1
jmp 0x50ed7e
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
mov ecx, dword [ebp - 0x58]
call fcn.004ce040
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x14]
cmp ecx, dword [eax + 0xf8]
jl 0x50edb0
mov edx, dword [ebp - 0x14]
push edx
mov ecx, dword [ebp - 0x58]
call fcn.00517470
test eax, eax
jle 0x50eda5
mov dword [ebp - 4], 1
jmp 0x50edb0
mov eax, dword [ebp - 0x14]
sub eax, 1
mov dword [ebp - 0x14], eax
jmp 0x50ed7e
cmp dword [ebp - 4], 0
jne 0x50edbc
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x14], ecx
jmp 0x50f0ed
cmp dword [ebp + 8], 0x22
jne 0x50ee42
push 0
lea edx, [ebp - 0x24]
push edx
mov ecx, dword [ebp - 0x58]
call fcn.00513030
push 0
push 3
push 0x115
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 0x10], 1
push 0
lea eax, [ebp - 0x2c]
push eax
mov ecx, dword [ebp - 0x58]
call fcn.00513030
mov ecx, dword [ebp - 0x2c]
sub ecx, dword [ebp - 0x24]
mov dword [ebp - 0x30], ecx
je 0x50ee2f
mov edx, dword [ebp - 0x18]
add edx, dword [ebp - 0x30]
mov dword [ebp - 0x18], edx
mov ecx, dword [ebp - 0x58]
call fcn.00425700
sub eax, 1
cmp dword [ebp - 0x18], eax
jle 0x50ee2d
mov ecx, dword [ebp - 0x58]
call fcn.00425700
sub eax, 1
mov dword [ebp - 0x18], eax
jmp 0x50ee3d
mov ecx, dword [ebp - 0x58]
call fcn.00425700
sub eax, 1
mov dword [ebp - 0x18], eax
jmp 0x50f0ed
cmp dword [ebp + 8], 0x21
jne 0x50eebd
push 0
lea eax, [ebp - 0x38]
push eax
mov ecx, dword [ebp - 0x58]
call fcn.00513030
push 0
push 2
push 0x115
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 0x10], 1
push 0
lea ecx, [ebp - 0x40]
push ecx
mov ecx, dword [ebp - 0x58]
call fcn.00513030
mov edx, dword [ebp - 0x40]
sub edx, dword [ebp - 0x38]
mov dword [ebp - 0x44], edx
je 0x50eeac
mov eax, dword [ebp - 0x18]
add eax, dword [ebp - 0x44]
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebp - 0x18]
cmp edx, dword [ecx + 0xf0]
jge 0x50eeaa
mov eax, dword [ebp - 0x58]
mov ecx, dword [eax + 0xf0]
mov dword [ebp - 0x18], ecx
jmp 0x50eeb8
mov edx, dword [ebp - 0x58]
mov eax, dword [edx + 0xf0]
mov dword [ebp - 0x18], eax
jmp 0x50f0ed
cmp dword [ebp + 8], 0x24
jne 0x50efa7
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x8000
je 0x50ef24
push 0
push 6
push 0x115
mov ecx, dword [ebp - 0x58]
call fcn.00401270
push 0
push 6
push 0x114
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 0x10], 1
mov dword [ebp - 8], 1
mov edx, dword [ebp - 0x58]
mov eax, dword [edx + 0xf0]
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx + 0xf8]
mov dword [ebp - 0x14], edx
jmp 0x50ef48
push 0
push 6
push 0x114
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 8], 1
mov eax, dword [ebp - 0x58]
mov ecx, dword [eax + 0xf8]
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x58]
call fcn.0041f2c0
sub eax, 1
cmp dword [ebp - 0x14], eax
jge 0x50ef75
mov edx, dword [ebp - 0x14]
push edx
mov ecx, dword [ebp - 0x58]
call fcn.00517470
test eax, eax
jle 0x50ef6a
jmp 0x50ef75
mov eax, dword [ebp - 0x14]
add eax, 1
mov dword [ebp - 0x14], eax
jmp 0x50ef48
mov ecx, dword [ebp - 0x58]
call fcn.00425700
sub eax, 1
cmp dword [ebp - 0x18], eax
jge 0x50efa2
mov ecx, dword [ebp - 0x18]
push ecx
mov ecx, dword [ebp - 0x58]
call fcn.00517430
test eax, eax
jle 0x50ef97
jmp 0x50efa2
mov edx, dword [ebp - 0x18]
add edx, 1
mov dword [ebp - 0x18], edx
jmp 0x50ef75
jmp 0x50f0ed
cmp dword [ebp + 8], 0x23
jne 0x50f093
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
and eax, 0x8000
je 0x50f00f
push 0
push 7
push 0x115
mov ecx, dword [ebp - 0x58]
call fcn.00401270
push 0
push 7
push 0x114
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 8], 1
mov dword [ebp - 0x10], 1
mov ecx, dword [ebp - 0x58]
call fcn.00425700
sub eax, 1
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x58]
call fcn.0041f2c0
sub eax, 1
mov dword [ebp - 0x14], eax
jmp 0x50f035
push 0
push 7
push 0x114
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 8], 1
mov ecx, dword [ebp - 0x58]
call fcn.0041f2c0
sub eax, 1
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx + 0xf8]
add edx, 1
cmp dword [ebp - 0x14], edx
jle 0x50f063
mov eax, dword [ebp - 0x14]
push eax
mov ecx, dword [ebp - 0x58]
call fcn.00517470
test eax, eax
jle 0x50f058
jmp 0x50f063
mov ecx, dword [ebp - 0x14]
sub ecx, 1
mov dword [ebp - 0x14], ecx
jmp 0x50f035
mov edx, dword [ebp - 0x58]
mov eax, dword [edx + 0xf0]
add eax, 1
cmp dword [ebp - 0x18], eax
jle 0x50f091
mov ecx, dword [ebp - 0x18]
push ecx
mov ecx, dword [ebp - 0x58]
call fcn.00517430
test eax, eax
jle 0x50f086
jmp 0x50f091
mov edx, dword [ebp - 0x18]
sub edx, 1
mov dword [ebp - 0x18], edx
jmp 0x50f063
jmp 0x50f0ed
cmp dword [ebp + 8], 0x71
jne 0x50f0d4
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
lea ecx, [ebp - 0x4c]
call fcn.004cdc40
mov ecx, dword [eax + 4]
push ecx
mov edx, dword [eax]
push edx
mov eax, dword [ebp - 0x58]
mov ecx, dword [eax + 0x2a0]
push ecx
mov edx, dword [ebp - 0x58]
mov eax, dword [edx + 0x29c]
push eax
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x58]
mov eax, dword [edx + 0x198]
call eax
jmp 0x50f0ed
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp - 0x58]
call fcn.004ce040
jmp 0x50f36d
mov ecx, dword [ebp - 0x58]
add ecx, 0x29c
push ecx
lea ecx, [ebp - 0x18]
call fcn.0051ece0
test eax, eax
je 0x50f36d
mov edx, dword [ebp - 0x58]
cmp dword [edx + 0x270], 0
jne 0x50f1a6
mov ecx, dword [ebp - 0x58]
add ecx, 0x2e0
call fcn.0051f990
mov eax, dword [ebp - 0x58]
mov ecx, dword [eax + 0x98]
neg ecx
sbb ecx, ecx
add ecx, 4
mov edx, dword [ebp - 0x58]
mov dword [edx + 0x270], ecx
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
and eax, 0x8000
je 0x50f154
cmp dword [ebp + 8], 9
jne 0x50f169
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebp - 0x18]
mov dword [ecx + 0x294], edx
mov eax, dword [ebp - 0x14]
mov dword [ecx + 0x298], eax
push 0xffffffffffffff9c
mov ecx, dword [ebp - 0x14]
push ecx
mov edx, dword [ebp - 0x18]
push edx
mov ecx, dword [ebp - 0x58]
call fcn.0050da20
lea eax, [ebp - 0x18]
push eax
mov ecx, dword [ebp - 0x58]
call fcn.005116a0
push 0xffffffffffffff9b
mov ecx, dword [ebp - 0x14]
push ecx
mov edx, dword [ebp - 0x18]
push edx
mov ecx, dword [ebp - 0x58]
call fcn.0050da20
mov eax, dword [ebp - 0x58]
mov dword [eax + 0x270], 0
mov ecx, dword [ebp - 0x14]
push ecx
mov edx, dword [ebp - 0x18]
push edx
lea eax, [ebp - 0x54]
push eax
mov ecx, dword [ebp - 0x58]
call fcn.00510b70
mov ecx, dword [ebp - 0x14]
push ecx
mov edx, dword [ebp - 0x18]
push edx
mov ecx, dword [ebp - 0x58]
call fcn.00518980
test eax, eax
jne 0x50f333
mov eax, dword [ebp + 8]
mov dword [ebp - 0x60], eax
mov ecx, dword [ebp - 0x60]
sub ecx, 9
mov dword [ebp - 0x60], ecx
cmp dword [ebp - 0x60], 0x1f
ja case.0x50f1f5.1
mov edx, dword [ebp - 0x60]
movzx eax, byte [edx + 0x50f3e0]
jmp dword [eax*4 + 0x50f3c8]
push 0
push 1
push 0x114
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 8], 1
jmp case.0x50f1f5.1
push 0
push 0
push 0x114
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 8], 1
jmp case.0x50f1f5.1
push 0
push 1
push 0x115
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 0x10], 1
jmp case.0x50f1f5.1
push 0
push 0
push 0x115
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 0x10], 1
jmp case.0x50f1f5.1
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x8000
je 0x50f2d5
cmp dword [ebp - 0x1c], 0
je 0x50f2bb
push 0
push 0
push 0x115
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 0x10], 1
push 1
mov edx, dword [ebp - 0x58]
mov eax, dword [edx + 0x128]
push eax
push 0
mov ecx, dword [ebp - 0x58]
call fcn.00513690
jmp case.0x50f1f5.1
push 0
push 0
push 0x114
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 8], 1
jmp case.0x50f1f5.1
cmp dword [ebp - 0x1c], 0
je 0x50f305
push 0
push 1
push 0x115
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 0x10], 1
push 1
push 0
push 0
mov ecx, dword [ebp - 0x58]
call fcn.00513690
jmp case.0x50f1f5.1
push 0
push 1
push 0x114
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov dword [ebp - 8], 1
lea ecx, [ebp - 0x18]
push ecx
mov ecx, dword [ebp - 0x58]
call fcn.0051f280
push 1
mov ecx, dword [ebp - 0x58]
call fcn.00404ba0
lea edx, [ebp - 0x18]
push edx
mov ecx, dword [ebp - 0x58]
call fcn.0051f280
cmp dword [ebp - 8], 0
je 0x50f356
push 0
push 8
push 0x114
mov ecx, dword [ebp - 0x58]
call fcn.00401270
cmp dword [ebp - 0x10], 0
je 0x50f36d
push 0
push 8
push 0x115
mov ecx, dword [ebp - 0x58]
call fcn.00401270
mov esp, ebp
pop ebp
ret 0xc