Function at 0x414030
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x20
push ebx
push ebp
push esi
mov esi, ecx
push edi
lea edi, [esi + 0x284]
push edi
call fcn.00416030
test eax, eax
jne 0x41405a
mov ecx, esi
call fcn.004639da
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
mov eax, dword [edi]
mov ecx, dword [edi + 4]
mov ebx, dword [sym.imp.USER32.DLL_GetKeyState]
xor ebp, ebp
push 0x11
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x14], ebp
call ebx
test ah, 0x80
je case.0x414094.49
mov edx, dword [esp + 0x34]
lea eax, [edx - 0x2d]
cmp eax, 0x2b
ja case.0x414094.49
xor ecx, ecx
mov cl, byte [eax + 0x41480c]
jmp dword [ecx*4 + 0x4147f8]
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0xe8]
jmp case.0x414094.49
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0xdc]
jmp case.0x414094.49
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0xe0]
jmp case.0x414094.49
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0xe4]
push 0x10
call ebx
test ah, 0x80
je 0x4140f4
cmp dword [esp + 0x34], 0x2d
jne 0x4140f4
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0xe4]
mov ecx, esi
call fcn.004639da
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
mov eax, dword [esp + 0x34]
mov ebx, dword [sym.imp.USER32.DLL_SendMessageA]
cmp eax, 0x2e
jne 0x41411e
mov eax, dword [esi + 0x288]
mov ecx, dword [edi]
push 0x4b0b90
push eax
push ecx
mov ecx, esi
call fcn.00417020
jmp 0x41459d
cmp eax, 0x28
jne 0x414164
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 0xd4]
mov edi, eax
inc eax
cmp eax, ecx
mov dword [esp + 0x18], eax
jge 0x41415b
push eax
mov ecx, esi
call fcn.0041afe0
test eax, eax
jg 0x41459d
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 0xd4]
inc eax
cmp eax, ecx
mov dword [esp + 0x18], eax
jl 0x414138
mov dword [esp + 0x18], edi
jmp 0x41459d
cmp eax, 0x26
jne 0x4141aa
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 0xd8]
mov edi, eax
dec eax
cmp eax, ecx
mov dword [esp + 0x18], eax
jl 0x4141a1
push eax
mov ecx, esi
call fcn.0041afe0
test eax, eax
jg 0x41459d
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 0xd8]
dec eax
cmp eax, ecx
mov dword [esp + 0x18], eax
jge 0x41417e
mov dword [esp + 0x18], edi
jmp 0x41459d
cmp eax, 0x27
je 0x414523
cmp eax, 9
jne 0x4141e9
mov edi, dword [sym.imp.USER32.DLL_GetKeyState]
push 0x10
call edi
test ah, 0x80
je 0x414523
push 0x10
call edi
test ah, 0x80
jne 0x41449e
mov ecx, esi
call fcn.004639da
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
cmp eax, 0x25
je 0x41449e
cmp eax, 0x22
jne 0x414268
lea edx, [esp + 0x28]
push 0
push edx
mov ecx, esi
call fcn.00418670
mov eax, dword [esi + 0x1c]
push 0
push 3
push 0x115
push eax
call ebx
lea ecx, [esp + 0x20]
push 0
push ecx
mov ecx, esi
mov dword [esp + 0x18], 1
call fcn.00418670
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
sub eax, ecx
je 0x414258
mov ecx, dword [esp + 0x18]
add ecx, eax
mov eax, dword [esi + 0xd4]
dec eax
mov dword [esp + 0x18], ecx
cmp ecx, eax
jle 0x41459d
mov dword [esp + 0x18], eax
jmp 0x41459d
mov eax, dword [esi + 0xd4]
dec eax
mov dword [esp + 0x18], eax
jmp 0x41459d
cmp eax, 0x21
jne 0x4142dc
lea edx, [esp + 0x20]
push 0
push edx
mov ecx, esi
call fcn.00418670
mov eax, dword [esi + 0x1c]
push 0
push 2
push 0x115
push eax
call ebx
lea ecx, [esp + 0x28]
push 0
push ecx
mov ecx, esi
mov dword [esp + 0x18], 1
call fcn.00418670
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
sub eax, ecx
je 0x4142cd
mov ecx, dword [esp + 0x18]
add ecx, eax
mov eax, dword [esi + 0xd8]
cmp ecx, eax
mov dword [esp + 0x18], ecx
jge 0x41459d
mov dword [esp + 0x18], eax
jmp 0x41459d
mov edx, dword [esi + 0xd8]
mov dword [esp + 0x18], edx
jmp 0x41459d
cmp eax, 0x24
jne 0x4143a6
push 0x11
call dword [sym.imp.USER32.DLL_GetKeyState]
test ah, 0x80
push 0
push 6
je 0x414325
mov eax, dword [esi + 0x1c]
push 0x115
push eax
call ebx
mov ecx, dword [esi + 0x1c]
push 0
push 6
push 0x114
push ecx
call ebx
mov edx, dword [esi + 0xd8]
mov ebp, 1
mov dword [esp + 0x10], ebp
mov dword [esp + 0x18], edx
jmp 0x414335
mov eax, dword [esi + 0x1c]
push 0x114
push eax
call ebx
mov ebp, 1
mov ecx, dword [esi + 0xdc]
mov eax, dword [esi + 0xe0]
dec ecx
mov dword [esp + 0x1c], eax
cmp eax, ecx
jge 0x41436a
push eax
mov ecx, esi
call fcn.0041b010
test eax, eax
jg 0x41436a
mov eax, dword [esp + 0x1c]
mov edx, dword [esi + 0xdc]
inc eax
dec edx
cmp eax, edx
mov dword [esp + 0x1c], eax
jl 0x41434a
mov ecx, dword [esi + 0xd4]
mov eax, dword [esp + 0x18]
dec ecx
cmp eax, ecx
jge 0x41459d
push eax
mov ecx, esi
call fcn.0041afe0
test eax, eax
jg 0x41459d
mov eax, dword [esp + 0x18]
mov edx, dword [esi + 0xd4]
inc eax
dec edx
cmp eax, edx
mov dword [esp + 0x18], eax
jl 0x41437d
jmp 0x41459d
cmp eax, 0x23
jne 0x414472
push 0x11
call dword [sym.imp.USER32.DLL_GetKeyState]
test ah, 0x80
push 0
push 7
je 0x4143f0
mov eax, dword [esi + 0x1c]
push 0x115
push eax
call ebx
mov ecx, dword [esi + 0x1c]
push 0
push 7
push 0x114
push ecx
call ebx
mov eax, dword [esi + 0xd4]
mov ebp, 1
dec eax
mov dword [esp + 0x10], ebp
mov dword [esp + 0x18], eax
jmp 0x414400
mov edx, dword [esi + 0x1c]
push 0x114
push edx
call ebx
mov ebp, 1
mov eax, dword [esi + 0xdc]
mov ecx, dword [esi + 0xe0]
dec eax
inc ecx
cmp eax, ecx
mov dword [esp + 0x1c], eax
jle 0x414436
push eax
mov ecx, esi
call fcn.0041b010
test eax, eax
jg 0x414436
mov eax, dword [esp + 0x1c]
mov edx, dword [esi + 0xe0]
dec eax
inc edx
cmp eax, edx
mov dword [esp + 0x1c], eax
jg 0x414416
mov ecx, dword [esi + 0xd8]
mov eax, dword [esp + 0x18]
inc ecx
cmp eax, ecx
jle 0x41459d
push eax
mov ecx, esi
call fcn.0041afe0
test eax, eax
jg 0x41459d
mov eax, dword [esp + 0x18]
mov edx, dword [esi + 0xd8]
dec eax
inc edx
cmp eax, edx
mov dword [esp + 0x18], eax
jg 0x414449
jmp 0x41459d
cmp eax, 0x71
jne 0x414049
mov edx, dword [esi]
or ecx, 0xffffffff
or eax, 0xffffffff
push 1
push ecx
mov ecx, dword [edi]
push eax
mov eax, dword [esi + 0x288]
push eax
push ecx
mov ecx, esi
call dword [edx + 0x118]
jmp 0x41459d
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x34]
mov edi, eax
dec eax
cmp ecx, 9
mov dword [esp + 0x1c], eax
jne 0x4144f2
mov edx, dword [esi + 0xe0]
dec edx
cmp eax, edx
jne 0x4144e7
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 0xd8]
cmp eax, ecx
jle 0x4144e7
mov edx, eax
mov eax, dword [esi + 0xdc]
dec edx
dec eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], 1
jmp 0x4144f2
mov ecx, esi
call fcn.004639da
mov eax, dword [esp + 0x1c]
cmp eax, dword [esi + 0xe0]
jl 0x414599
push eax
mov ecx, esi
call fcn.0041b010
test eax, eax
jg 0x41459d
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi + 0xe0]
dec eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jge 0x4144fe
jmp 0x414599
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x34]
mov edi, eax
inc eax
cmp ecx, 9
mov dword [esp + 0x1c], eax
jne 0x414572
cmp eax, dword [esi + 0xdc]
jne 0x414567
mov ecx, dword [esi + 0xd4]
mov eax, dword [esp + 0x18]
dec ecx
cmp eax, ecx
jge 0x414567
inc eax
mov dword [esp + 0x14], 1
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0xe0]
mov dword [esp + 0x1c], eax
jmp 0x414572
mov ecx, esi
call fcn.004639da
mov eax, dword [esp + 0x1c]
cmp eax, dword [esi + 0xdc]
jge 0x414599
push eax
mov ecx, esi
call fcn.0041b010
test eax, eax
jg 0x41459d
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi + 0xdc]
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x41457a
mov dword [esp + 0x1c], edi
mov edx, dword [esp + 0x18]
mov eax, dword [esi + 0x284]
cmp edx, eax
jne 0x4145bd
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi + 0x288]
cmp eax, ecx
je 0x4147eb
mov eax, dword [esi + 0x258]
test eax, eax
jne 0x414670
mov edx, dword [esi + 0x2cc]
test edx, edx
je 0x4145f5
mov eax, dword [esi + 0x2d0]
test eax, eax
jbe 0x4145f5
mov ecx, edx
mov edi, eax
mov eax, dword [ecx]
test eax, eax
je 0x4145ef
mov eax, dword [eax]
test eax, eax
jne 0x4145e9
add ecx, 4
dec edi
jne 0x4145e3
push edx
call fcn.0046793d
mov ecx, dword [esi + 0x2dc]
xor edi, edi
add esp, 4
mov dword [esi + 0x2cc], edi
mov dword [esi + 0x2d4], edi
mov dword [esi + 0x2d8], edi
call fcn.00462d55
mov dword [esi + 0x2dc], edi
mov ecx, dword [esi + 0x80]
neg ecx
sbb ecx, ecx
push 0x10
add ecx, 4
mov dword [esi + 0x258], ecx
call dword [sym.imp.USER32.DLL_GetKeyState]
test ah, 0x80
je 0x41464a
cmp dword [esp + 0x34], 9
jne 0x41465e
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov dword [esi + 0x27c], edx
mov dword [esi + 0x280], eax
lea ecx, [esp + 0x18]
push ecx
mov ecx, esi
call fcn.00416fa0
mov dword [esi + 0x258], edi
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
push edx
lea ecx, [esp + 0x2c]
push eax
push ecx
mov ecx, esi
call fcn.00416600
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
push edx
push eax
mov ecx, esi
call fcn.0041c160
test eax, eax
jne 0x4147b0
mov ecx, dword [esp + 0x34]
lea eax, [ecx - 9]
cmp eax, 0x1f
ja case.0x4146b7.14
xor edx, edx
mov dl, byte [eax + 0x414850]
jmp dword [edx*4 + 0x414838]
push 0
push 1
mov eax, dword [esi + 0x1c]
push 0x114
push eax
jmp 0x41478a
mov ecx, dword [esi + 0x1c]
push 0
push 0
push 0x114
push ecx
jmp 0x41478a
mov edx, dword [esi + 0x1c]
push 0
push 1
push 0x115
push edx
call ebx
mov dword [esp + 0x10], 1
jmp case.0x4146b7.14
mov eax, dword [esi + 0x1c]
push 0
push 0
push 0x115
push eax
call ebx
mov dword [esp + 0x10], 1
jmp case.0x4146b7.14
push 0x10
call dword [sym.imp.USER32.DLL_GetKeyState]
test ah, 0x80
mov eax, dword [esp + 0x14]
je 0x414757
test eax, eax
push 0
push 0
je 0x4146c2
mov ecx, dword [esi + 0x1c]
push 0x115
push ecx
call ebx
mov edx, dword [esi + 0x110]
push 1
push edx
push 0
mov ecx, esi
mov dword [esp + 0x1c], 1
call fcn.00418a50
jmp case.0x4146b7.14
test eax, eax
push 0
push 1
je 0x414781
mov ecx, dword [esi + 0x1c]
push 0x115
push ecx
call ebx
push 1
push 0
push 0
mov ecx, esi
mov dword [esp + 0x1c], 1
call fcn.00418a50
jmp case.0x4146b7.14
mov edx, dword [esi + 0x1c]
push 0x114
push edx
call ebx
mov ebp, 1
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
push eax
push ecx
mov ecx, esi
call fcn.0041be30
mov edx, dword [esi + 0x1c]
push 1
push 0
push edx
call dword [sym.imp.USER32.DLL_InvalidateRect]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
push eax
push ecx
mov ecx, esi
call fcn.0041be30
test ebp, ebp
je 0x4147d4
mov edx, dword [esi + 0x1c]
push 0
push 8
push 0x114
push edx
call ebx
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4147eb
mov eax, dword [esi + 0x1c]
push 0
push 8
push 0x115
push eax
call ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc