Function at 0x571d24
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffb0
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
add edi, 0xfffffffc
lea edx, [ebp - 0x14]
mov eax, dword [edi]
mov ecx, dword [eax]
call dword [ecx + 0x114]
mov eax, dword [edi]
mov si, 0xffc8
call fcn.004041a4
test al, al
je 0x571d64
mov eax, dword [edi]
call fcn.00482fc8
mov ebx, eax
sub ebx, dword [ebp - 0x14]
mov dword [ebp - 0xc], ebx
sub ebx, 0xd
mov dword [ebp - 0x14], ebx
mov eax, dword [edi]
test byte [eax + 0x54], 0x80
je 0x571d7a
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xe8]
mov ebx, eax
jmp 0x571d82
mov eax, dword [edi]
mov bl, byte [eax + 0x212]
cmp bl, 1
jne 0x571d8e
xor eax, eax
mov dword [ebp - 4], eax
jmp 0x571d95
mov dword [ebp - 4], 8
mov eax, dword [edi]
test byte [eax + 0x54], 1
je 0x571def
mov eax, dword [edi]
mov si, 0xffb5
call fcn.004041a4
test al, al
je 0x571def
mov eax, dword [edi]
test byte [eax + 0x54], 0x80
jne 0x571def
mov eax, dword [edi]
call fcn.005de20c
test al, al
je 0x571dd8
mov eax, dword [edi]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xe0]
test al, al
je 0x571def
or dword [ebp - 4], 0x200
jmp 0x571def
mov eax, dword [edi]
xor edx, edx
mov ecx, dword [eax]
call dword [ecx + 0xe0]
test al, al
je 0x571def
or dword [ebp - 4], 0x200
mov eax, dword [edi]
cmp byte [eax + 0x24c], 0
je 0x571e1c
push 0x20
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x571e1c
mov eax, dword [edi]
mov si, 0xffb5
call fcn.004041a4
test al, al
je 0x571e1c
or dword [ebp - 4], 0x200
cmp bl, 1
jne 0x571e2a
or dword [ebp - 4], 0x400
jmp 0x571e36
cmp bl, 2
jne 0x571e36
or dword [ebp - 4], 0x400
mov eax, dword [edi]
call fcn.005de764
test al, al
je 0x571e55
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + pe_nt_image_headers32]
mov edx, dword [edi]
cmp eax, dword [edx + 0x23c]
jne 0x571e59
xor eax, eax
jmp 0x571e5b
mov al, 1
test al, al
je 0x571ebb
cmp bl, 1
jne 0x571e68
mov bl, 8
jmp 0x571e6a
mov bl, 7
call fcn.0046f96c
lea ecx, [ebp - 0x30]
mov edx, ebx
call fcn.00470004
push edi
lea esi, [ebp - 0x14]
lea edi, [ebp - 0x24]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop edi
push 1
push 1
lea eax, [ebp - 0x24]
push eax
call sub.user32.dll_InflateRect
lea eax, [ebp - 0x24]
push eax
push 0
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
call fcn.0042ec60
push eax
call fcn.0046f96c
lea ecx, [ebp - 0x30]
pop edx
call fcn.0046fb58
jmp 0x5721cc
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + pe_nt_image_headers32]
test eax, eax
je 0x5720b6
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + pe_nt_image_headers32]
call fcn.00490ecc
test eax, eax
jle 0x5720b6
mov esi, 0x10
test byte [ebp - 3], 2
je 0x571ef5
or esi, 0x200
mov eax, dword [edi]
cmp byte [eax + 0x239], 0
je 0x571f6a
push esi
push edi
lea esi, [ebp - 0x14]
lea edi, [ebp - 0x24]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop edi
pop esi
push 1
push 1
lea eax, [ebp - 0x24]
push eax
call sub.user32.dll_InflateRect
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
mov eax, dword [eax + 0x14]
mov edx, 0xffffff
call fcn.0042dfb0
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
lea edx, [ebp - 0x24]
call fcn.0042e6b0
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
mov eax, dword [eax + 0x14]
xor edx, edx
call fcn.0042dfb0
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
lea edx, [ebp - 0x24]
call fcn.0042e6ec
mov eax, dword [edi]
cmp byte [eax + 0x260], 0
je 0x571fbd
push esi
push edi
lea esi, [ebp - 0x14]
lea edi, [ebp - 0x24]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop edi
pop esi
push 2
push 2
lea eax, [ebp - 0x24]
push eax
call sub.user32.dll_InflateRect
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0x50]
test al, al
jne 0x571fa1
add esi, 0x100
push esi
push 4
lea eax, [ebp - 0x24]
push eax
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
call fcn.0042ec60
push eax
call sub.user32.dll_DrawFrameControl
cmp bl, 1
jne 0x572015
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + pe_nt_image_headers32]
test eax, eax
je 0x5720b6
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + pe_nt_image_headers32]
call fcn.00490ecc
dec eax
jle 0x5720b6
mov eax, dword [ebp - 0x10]
push eax
push 1
push 1
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
push eax
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + pe_nt_image_headers32]
mov ecx, dword [ebp - 0x14]
pop edx
call fcn.004913e4
jmp 0x5721cc
test bl, bl
jne 0x572069
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + pe_nt_image_headers32]
test eax, eax
je 0x5720b6
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + pe_nt_image_headers32]
call fcn.00490ecc
test eax, eax
jle 0x5720b6
mov eax, dword [ebp - 0x10]
push eax
push 0
push 1
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
push eax
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + pe_nt_image_headers32]
mov ecx, dword [ebp - 0x14]
pop edx
call fcn.004913e4
jmp 0x5721cc
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + pe_nt_image_headers32]
test eax, eax
je 0x5720b6
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + pe_nt_image_headers32]
call fcn.00490ecc
cmp eax, 2
jle 0x5720b6
mov eax, dword [ebp - 0x10]
push eax
push 2
push 1
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
push eax
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + pe_nt_image_headers32]
mov ecx, dword [ebp - 0x14]
pop edx
call fcn.004913e4
jmp 0x5721cc
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
mov eax, dword [eax + 0x14]
mov edx, 0xff00000f
call fcn.0042dfb0
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
lea edx, [ebp - 0x14]
call fcn.0042e6b0
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
mov eax, dword [eax + 0x14]
mov edx, 0xff000010
call fcn.0042dfb0
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + pe_nt_image_headers32]
test eax, eax
jne 0x5721cc
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0x50]
test al, al
jne 0x57211a
add dword [ebp - 4], 0x100
mov eax, dword [edi]
call fcn.005de764
test al, al
je 0x5721ad
mov eax, dword [ebp + 8]
push eax
test byte [ebp - 3], 2
setne al
call fcn.00571698
pop ecx
mov ebx, eax
call fcn.0046f96c
lea ecx, [ebp - 0x30]
mov edx, ebx
call fcn.0046fcb0
push edi
lea esi, [ebp - 0x14]
lea edi, [ebp - 0x40]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop edi
lea eax, [ebp - 0x40]
push eax
push 0
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
call fcn.0042ec60
push eax
call fcn.0046f96c
lea ecx, [ebp - 0x30]
pop edx
call fcn.0046fb58
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x50]
push eax
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
call fcn.0042ec60
push eax
call fcn.0046f96c
lea ecx, [ebp - 0x30]
pop edx
call fcn.0046fabc
lea esi, [ebp - 0x50]
lea edi, [ebp - 0x40]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
jmp 0x5721cc
mov eax, dword [ebp - 4]
push eax
push 4
lea eax, [ebp - 0x14]
push eax
mov eax, dword [edi]
mov edx, dword [eax]
call dword [edx + 0xf4]
call fcn.0042ec60
push eax
call sub.user32.dll_DrawFrameControl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret