Function at 0x453930
Capabilities:
Log keystrokes via polling

Disassembly:
mov eax, dword [0x59426c]
sub esp, 0x5c
push ebx
xor ebx, ebx
cmp eax, ebx
je 0x454204
push ebp
push esi
push edi
push ebx
lea edx, [esp + 0x60]
call fcn.00538310
mov edi, eax
cmp edi, ebx
mov dword [esp + 0x4c], edi
je 0x454201
cmp dword [edi + 0x6c8], ebx
je 0x454201
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x10
call esi
push 0x11
and eax, 0x8000
sub eax, 0x8000
neg eax
sbb eax, eax
inc eax
mov dword [esp + 0x5c], eax
call esi
mov ebp, dword [edi + 0xd78]
mov ecx, dword [edi + 0xd74]
mov edx, dword [edi + 0xd7c]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x44], ebp
and eax, 0x8000
sub eax, 0x8000
neg eax
sbb eax, eax
inc eax
mov dword [esp + 0x50], eax
mov eax, dword [edi + 0xd80]
cmp ebp, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x48], eax
jne 0x4539d4
cmp edx, ecx
jle 0x454201
cmp ebp, eax
jl 0x454201
cmp ecx, ebx
jl 0x454201
cmp ebp, ebx
jl 0x454201
cmp edx, ebx
jl 0x454201
cmp eax, ebx
jl 0x454201
mov esi, dword [edi + 0x6fc]
mov eax, dword [edi + 0x6f8]
mov ecx, dword [edi + 0x6c8]
sub eax, esi
cmp eax, ebx
mov esi, dword [ecx + 0x44]
mov dword [esp + 0x10], esi
jle 0x453a30
lea esp, [esp]
cmp esi, ecx
je 0x453a2c
mov esi, dword [esi + 0x44]
dec eax
cmp eax, ebx
jg 0x453a20
mov dword [esp + 0x10], esi
cmp esi, ebx
je 0x454201
push 0x64
mov dword [esp + 0x58], 0x64
call fcn.005635a3
add esp, 4
cmp eax, ebx
mov dword [esp + 0x20], eax
jne 0x453a61
xor ecx, ecx
call fcn.0041c8e0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret
mov eax, dword [edi + 0x750]
cmp eax, 1
mov ecx, dword [edi + 0x9e4]
je 0x453a80
cmp eax, 2
jne 0x453a84
cmp dword [0x59b4dc], 1
jne 0x453a84
lea ecx, [ecx + ecx - 1]
mov eax, dword [esp + 0x68]
sub eax, ecx
dec eax
cmp ebp, ebx
mov dword [esp + 0x14], ebx
jle 0x453abf
mov edx, ecx
neg edx
sub eax, ecx
cmp eax, edx
jl 0x453abb
cmp esi, dword [edi + 0x6c8]
je 0x453abb
mov ebp, dword [esp + 0x14]
mov esi, dword [esi + 0x44]
inc ebp
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x44]
cmp dword [esp + 0x14], ebp
jl 0x453a97
mov dword [esp + 0x10], esi
mov edi, dword [esi + 8]
mov eax, dword [esp + 0x20]
mov byte [0x5990e0], bl
mov byte [eax], bl
mov ecx, dword [esi + 0x1c]
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x30], ebx
call fcn.00431e50
mov ecx, dword [0x594088]
mov dword [esp + 0x1c], eax
call fcn.00431e50
mov dword [esp + 0x3c], eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x28], ebx
mov ebp, dword [esp + 0x14]
cmp ebp, ebx
jl 0x454197
mov esi, dword [esp + 0x10]
cmp edi, dword [esi + 8]
je 0x453b45
mov ecx, dword [esi + 0x1c]
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x30], ebx
call fcn.00431e50
mov ecx, dword [0x594088]
mov dword [esp + 0x1c], eax
call fcn.00431e50
mov dword [esp + 0x3c], eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0x40], ebx
cmp ebp, dword [esp + 0x44]
mov ecx, dword [esi]
mov edx, 0x5994c8
jne 0x453dc6
mov dword [esp + 0x40], 1
mov edi, edi
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
cmp al, bl
jne 0x453b60
mov eax, 0x5994c8
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x453b72
mov ebp, dword [esp + 0x2c]
sub eax, edx
mov esi, eax
cmp ebp, esi
jle 0x453b8b
mov ebp, esi
mov dword [esp + 0x2c], ebp
mov ecx, dword [esp + 0x14]
cmp ecx, dword [esp + 0x48]
jne 0x453bcd
cmp dword [0x59f66c], ebx
mov edi, dword [esp + 0x18]
je 0x453bb9
push edi
push 0x5994c8
call fcn.00565618
add esp, 8
cmp eax, 1
jne 0x453bb9
inc edi
mov dword [esp + 0x18], edi
cmp edi, esi
jle 0x453bc3
mov edi, esi
mov dword [esp + 0x18], edi
mov byte [edi + 0x5994c9], bl
mov dword [esp + 0x14], ebx
cmp dword [0x59f66c], ebx
je 0x453bed
push ebp
push 0x5994c8
call fcn.00565618
add esp, 8
cmp eax, 2
jne 0x453bed
dec ebp
mov dword [esp + 0x2c], ebp
cmp ebp, ebx
jge 0x453bf7
xor ebp, ebp
mov dword [esp + 0x2c], ebp
lea eax, [ebp + 0x5994c8]
mov edx, 0x5990e0
sub edx, eax
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
cmp cl, bl
jne 0x453c04
cmp dword [esp + 0x50], ebx
je 0x453ee9
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x4c]
mov eax, dword [edx + 0x6c8]
mov esi, ecx
cmp esi, eax
je 0x453c3a
mov esi, dword [esi + 0x44]
mov edx, dword [esi + 8]
cmp edx, dword [ecx + 8]
je 0x453c28
mov esi, dword [esi + 0x40]
cmp esi, ebx
je 0x453ee9
mov ecx, dword [esi + 0x1c]
call fcn.00431e50
mov dword [esp + 0x1c], eax
mov edi, edi
mov eax, dword [esi]
xor edi, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x453c57
sub eax, edx
mov ebp, eax
cmp ebp, ebx
jle 0x453dac
lea ebx, [ebx]
cmp esi, dword [esp + 0x10]
jne 0x453c80
cmp edi, dword [esp + 0x2c]
jge 0x453dac
cmp dword [0x59f66c], ebx
je 0x453ca6
mov eax, dword [esi]
push edi
push eax
call fcn.00565618
add esp, 8
cmp eax, 1
je case.0x453cbf.4
cmp eax, 2
je case.0x453cbf.4
mov ecx, dword [esi]
movzx eax, byte [ecx + edi]
add eax, 0xfffffffe
cmp eax, 0x1d
ja case.0x453cbf.4
movzx edx, byte [eax + 0x454224]
jmp dword [edx*4 + 0x45420c]
mov ecx, dword [esp + 0x30]
xor eax, eax
cmp ecx, ebx
sete al
mov dword [esp + 0x28], 1
mov dword [esp + 0x30], eax
jmp case.0x453cbf.4
mov eax, dword [esp + 0x34]
xor ecx, ecx
cmp eax, ebx
sete cl
mov dword [esp + 0x28], 1
mov dword [esp + 0x34], ecx
jmp case.0x453cbf.4
mov eax, dword [esp + 0x38]
xor edx, edx
cmp eax, ebx
sete dl
mov dword [esp + 0x28], 1
mov dword [esp + 0x38], edx
jmp case.0x453cbf.4
mov ecx, dword [0x594088]
call fcn.00431e50
mov ecx, dword [esi + 0x1c]
push eax
call fcn.00431e50
mov ecx, dword [esi]
push eax
lea eax, [esp + 0x44]
push eax
add ecx, edi
lea edx, [esp + 0x28]
call fcn.004f8d50
mov ecx, dword [esp + 0x24]
add edi, eax
cmp ecx, ebx
jne 0x453d6a
cmp eax, ebx
jne 0x453d5d
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], 1
jmp case.0x453cbf.4
xor ecx, ecx
cmp eax, 2
setg cl
inc ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], 1
jmp case.0x453cbf.4
mov ecx, dword [esi + 0x1c]
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x30], ebx
call fcn.00431e50
mov ecx, dword [0x594088]
mov dword [esp + 0x1c], eax
call fcn.00431e50
mov dword [esp + 0x3c], eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
inc edi
cmp edi, ebp
jl 0x453c70
cmp esi, dword [esp + 0x10]
je 0x453ee9
mov esi, dword [esi + 0x40]
cmp esi, ebx
jne 0x453c50
jmp 0x453ee9
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
cmp al, bl
jne 0x453dc6
cmp ebp, dword [esp + 0x48]
jne 0x453e27
mov eax, 0x5994c8
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x453de0
mov ebp, dword [esp + 0x18]
sub eax, edx
mov esi, eax
cmp dword [0x59f66c], ebx
je 0x453e0f
push ebp
push 0x5994c8
call fcn.00565618
add esp, 8
cmp eax, 1
jne 0x453e0f
inc ebp
mov dword [esp + 0x18], ebp
cmp ebp, esi
jle 0x453e19
mov ebp, esi
mov dword [esp + 0x18], ebp
mov esi, dword [esp + 0x10]
mov byte [ebp + 0x5994c9], bl
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x58], ebx
jne 0x453ea3
cmp edi, dword [esi + 8]
jne 0x453ea3
mov ecx, dword [esi + 0x10]
cmp ecx, ebx
jle 0x453e8c
cmp byte [0x5994c8], bl
mov eax, 0x5994c8
je 0x453e5a
cmp ecx, ebx
jle 0x453e73
mov dl, byte [eax]
dec ecx
cmp dl, 0x20
jne 0x453e73
mov dl, byte [eax + 1]
inc eax
cmp dl, bl
jne 0x453e46
xor eax, eax
lea esp, [esp]
mov cl, byte [eax + 0x5994c8]
mov byte [eax + 0x5990e0], cl
inc eax
cmp cl, bl
jne 0x453e60
jmp 0x453ee9
cmp byte [eax], bl
je 0x453e5a
mov edx, 0x5990e0
sub edx, eax
mov edi, edi
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
cmp cl, bl
jne 0x453e80
jmp 0x453ee9
xor eax, eax
mov edi, edi
mov cl, byte [eax + 0x5994c8]
mov byte [eax + 0x5990e0], cl
inc eax
cmp cl, bl
jne 0x453e90
jmp 0x453ee9
mov al, byte [0x574b0e]
mov dx, word [0x574b0c]
mov byte [0x5990e2], al
mov eax, 0x5994c8
mov word [0x5990e0], dx
mov ecx, eax
mov dl, byte [eax]
inc eax
cmp dl, bl
jne 0x453ec2
mov edi, 0x5990e0
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
cmp cl, bl
jne 0x453ed3
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x10]
cmp dword [ecx + 0x6e0], eax
jne 0x453f0a
cmp dword [eax + 0x20], 2
jne 0x453f0a
mov byte [0x5990e0], bl
jmp 0x45417c
cmp byte [0x5990e0], bl
je 0x45417c
cmp dword [esp + 0x50], ebx
je 0x4540e3
cmp dword [esp + 0x40], ebx
je 0x4540f2
cmp dword [esp + 0x30], ebx
mov dword [esp + 0x40], ebx
mov byte [0x5994c8], bl
je 0x453f62
mov eax, 0x5994c8
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x453f42
sub eax, edx
push 2
lea edx, [eax + 0x5994c8]
push 0x574eb4
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
cmp dword [esp + 0x34], ebx
je 0x453f90
mov eax, 0x5994c8
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x453f70
sub eax, edx
push 0x1f
lea eax, [eax + 0x5994c8]
push 0x574eb4
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
cmp dword [esp + 0x38], ebx
je 0x453fc0
mov eax, 0x5994c8
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x453fa0
sub eax, edx
push 0x16
lea ecx, [eax + 0x5994c8]
push 0x574eb4
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov eax, dword [esp + 0x24]
cmp eax, 2
jne 0x454030
movzx edx, byte [0x5990e0]
push edx
call fcn.00564077
add esp, 4
test eax, eax
mov eax, 0x5994c8
lea edx, [eax + 1]
je 0x454014
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x453fe5
mov ecx, dword [esp + 0x3c]
push ecx
sub eax, edx
mov edx, dword [esp + 0x20]
push edx
push 3
push str._c_d__02d
lea eax, [eax + 0x5994c8]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
jmp 0x454095
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x454014
mov ecx, dword [esp + 0x3c]
push ecx
sub eax, edx
mov edx, dword [esp + 0x20]
push edx
push 3
push str._c_d__d
jmp 0x453fff
cmp eax, 1
jne 0x454095
movzx ecx, byte [0x5990e0]
push ecx
call fcn.00564077
add esp, 4
test eax, eax
mov eax, 0x5994c8
lea edx, [eax + 1]
je 0x454070
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x454051
sub eax, edx
mov edx, dword [esp + 0x1c]
push edx
push 3
push str._c_02d
lea eax, [eax + 0x5994c8]
push eax
jmp 0x45408c
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x454070
mov ecx, dword [esp + 0x1c]
push ecx
push 3
sub eax, edx
push str._c_d
lea edx, [eax + 0x5994c8]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
mov eax, 0x5990e0
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4540a0
mov edi, 0x5994c8
sub eax, edx
dec edi
nop
mov cl, byte [edi + 1]
inc edi
cmp cl, bl
jne 0x4540b0
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor eax, eax
lea ebx, [ebx]
mov cl, byte [eax + 0x5994c8]
mov byte [eax + 0x5990e0], cl
inc eax
cmp cl, bl
jne 0x4540d0
jmp 0x4540f2
mov edx, 0xf
mov ecx, 0x5990e0
call fcn.00518d60
mov edi, dword [esp + 0x20]
mov eax, edi
lea edx, [eax + 1]
jmp 0x454100
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x454100
sub eax, edx
mov edx, eax
mov eax, 0x5990e0
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x454113
mov ecx, dword [esp + 0x54]
sub eax, esi
lea eax, [eax + edx + 0x14]
cmp eax, ecx
jle 0x454147
add eax, 0x64
push eax
push edi
mov dword [esp + 0x5c], eax
call fcn.00564c59
add esp, 8
cmp eax, ebx
je 0x4541e9
mov edi, eax
mov dword [esp + 0x20], edi
mov eax, 0x5990e0
mov edx, eax
mov edi, edi
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x454150
sub eax, edx
dec edi
lea ebx, [ebx]
mov cl, byte [edi + 1]
inc edi
cmp cl, bl
jne 0x454160
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x10]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [esp + 0x14]
mov edi, dword [eax + 8]
mov eax, dword [eax + 0x40]
dec edx
cmp eax, ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
jne 0x453b01
mov eax, dword [esp + 0x20]
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4541a0
sub eax, edx
cmp eax, 1
jbe 0x4541f0
cmp dword [esp + 0x28], ebx
mov esi, dword [esp + 0x20]
je 0x4541dc
mov eax, esi
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4541c0
sub eax, edx
push 0xf
add eax, esi
push 0x574eb4
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
xor edx, edx
mov ecx, esi
call fcn.0041d160
test eax, eax
jne 0x4541f0
xor ecx, ecx
call fcn.0041c8e0
mov eax, dword [esp + 0x20]
cmp eax, ebx
je 0x454201
push eax
call fcn.005635b5
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret