Function at 0x4fd400
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 8
push ebx
push ebp
mov ebp, dword [esp + 0x18]
push edi
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x10
call edi
xor ebx, ebx
mov bx, ax
push 0x11
and ebx, 0x8000
mov dword [esp + 0x10], ebx
call edi
mov ecx, dword [esi + 0x40]
mov edx, dword [esi]
mov edi, ecx
and eax, 0x8000
test ebx, ebx
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x3c]
mov dword [esp + 0x1c], eax
je 0x4fd473
mov ebx, dword [esi + 0x164]
test bh, 3
je 0x4fd473
test byte [esi + 0x168], 4
jne 0x4fd473
mov edi, dword [esi + 0x50]
test edi, edi
je 0x4fd469
mov ebx, dword [edi + 8]
mov edi, dword [edi + 0xc]
mov dword [esp + 0x1c], ebx
jmp 0x4fd473
mov edi, dword [esi + 0x48]
mov dword [esp + 0x1c], edi
mov edi, dword [esi + 0x4c]
mov ebx, dword [esp + 0x18]
add ebx, 0xfffffff8
cmp ebx, 0x88
ja case.0x4fd48d.10
movzx ebx, byte [ebx + 0x4fda20]
jmp dword [ebx*4 + 0x4fd9d8]
push ecx
push eax
push esi
call fcn.0057fa10
mov ecx, dword [esp + 0x18]
push ebp
push ecx
push 0x100
push eax
lea edx, [esi + 0x1cc]
push edx
call dword [esi + 0x224]
test eax, eax
jne case.0x4fd48d.144
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x1c4]
shl eax, 4
test byte [eax + ecx + 5], 0x10
jne case.0x4fd48d.144
push 1
push esi
call fcn.005800e0
jmp case.0x4fd48d.144
mov eax, dword [esi + 0x1bc]
test al, 8
je 0x4fd517
test al, 0x10
je 0x4fd517
test al, 0x20
jne 0x4fd517
mov edx, dword [esp + 0x18]
mov eax, dword [esi + 0x50]
push ebp
push edx
push 0x100
push eax
lea ecx, [esi + 0x1cc]
push ecx
call dword [esi + 0x224]
test eax, eax
jne case.0x4fd48d.144
mov edx, dword [esp + 0x18]
push ebp
push edx
push 0x100
push esi
call dword [esi + 0x17c]
jmp case.0x4fd48d.144
mov eax, dword [esi + 0x164]
test al, 0x40
jne 0x4fd549
test ah, 3
je 0x4fd545
cmp edi, 0xffff
je 0x4fd549
xor eax, eax
jmp 0x4fd54e
mov eax, 1
push eax
mov eax, dword [esp + 0x20]
push 0
push 1
push eax
call fcn.004fd380
mov dword [esp + 0x1c], eax
jmp case.0x4fd48d.144
mov ecx, dword [esi + 0x160]
mov edx, dword [esi + 0x5c]
mov eax, dword [esp + 0x1c]
and ecx, 0x800
push ecx
push edx
push 1
push eax
call fcn.004fd3c0
mov dword [esp + 0x1c], eax
jmp case.0x4fd48d.144
mov eax, dword [esi + 0x164]
test al, 0x40
jne 0x4fd5a7
test ah, 3
je 0x4fd5a3
cmp edi, 0xffff
je 0x4fd5a7
xor ecx, ecx
jmp 0x4fd5ac
mov ecx, 1
mov eax, dword [esi + 0xcc]
cmp eax, 1
ja 0x4fd5bc
mov eax, 1
push ecx
mov ecx, dword [esp + 0x20]
push 0
push eax
push ecx
call fcn.004fd380
mov dword [esp + 0x1c], eax
jmp case.0x4fd48d.144
mov eax, dword [esi + 0xcc]
cmp eax, 1
ja 0x4fd5e3
mov eax, 1
mov edx, dword [esi + 0x160]
mov ecx, dword [esi + 0x5c]
and edx, 0x800
push edx
mov edx, dword [esp + 0x20]
push ecx
push eax
push edx
call fcn.004fd3c0
mov dword [esp + 0x1c], eax
jmp case.0x4fd48d.144
mov eax, dword [esi + 0x5c]
test eax, eax
je 0x4fd614
dec eax
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 0x60]
test eax, eax
je case.0x4fd48d.144
lea edi, [eax - 1]
jmp case.0x4fd48d.144
xor edi, edi
mov dword [esp + 0x1c], edi
jmp case.0x4fd48d.144
mov eax, dword [esi + 0x164]
test al, 0x20
jne 0x4fd65e
test ah, 3
je 0x4fd64b
cmp dword [esp + 0x1c], 0xffff
je 0x4fd65e
xor eax, eax
push eax
push eax
push 1
push edi
call fcn.004fd380
mov edi, eax
jmp case.0x4fd48d.144
mov eax, 1
push eax
push 0
push eax
push edi
call fcn.004fd380
mov edi, eax
jmp case.0x4fd48d.144
mov eax, dword [esi + 0x160]
mov ecx, dword [esi + 0x60]
and eax, 0x400
push eax
push ecx
push 1
push edi
call fcn.004fd3c0
mov edi, eax
jmp case.0x4fd48d.144
mov eax, dword [esp + 0xc]
test eax, eax
je 0x4fd6c6
cmp edi, 1
jae 0x4fd6ab
test edi, edi
je 0x4fd6ab
xor edi, edi
jmp case.0x4fd48d.144
cmp edi, 0xff00
ja 0x4fd6a4
cmp edi, 1
jb 0x4fd6a4
dec edi
xor edx, edx
cmp edx, edi
sbb eax, eax
and edi, eax
jmp case.0x4fd48d.144
cmp edi, 0xff00
mov ecx, dword [esi + 0x60]
mov edx, 1
mov eax, edi
jb 0x4fd6dc
xor eax, eax
xor edx, edx
cmp eax, ecx
jae 0x4fd6ec
cmp edx, ecx
jae 0x4fd6ec
add eax, edx
cmp eax, ecx
mov edi, eax
jb 0x4fd6ee
mov edi, ecx
cmp edi, ecx
jb 0x4fd814
mov eax, dword [esi + 0x5c]
mov ecx, dword [esp + 0x1c]
xor edi, edi
test eax, eax
mov edx, 1
je 0x4fd709
dec eax
cmp ecx, 0xff00
jb 0x4fd715
xor ecx, ecx
xor edx, edx
cmp ecx, eax
jae 0x4fd72c
cmp edx, eax
jae 0x4fd72c
add ecx, edx
cmp ecx, eax
jae 0x4fd72c
mov dword [esp + 0x1c], ecx
jmp 0x4fd814
mov dword [esp + 0x1c], eax
jmp 0x4fd814
mov eax, dword [esp + 0xc]
test eax, eax
je 0x4fd74c
push 0
push 0
push 0x300
push edx
jmp 0x4fd90b
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x4fd820
push 0
push 0
push 0x303
push edx
call dword [sym.imp.USER32.dll_SendMessageW]
mov ebx, dword [esp + 0x1c]
cmp ebx, dword [esi + 0x3c]
jne 0x4fd776
cmp edi, dword [esi + 0x40]
je 0x4fd788
push 1
push edi
push ebx
push esi
call fcn.00580520
push edi
push ebx
push esi
call fcn.00580000
pop edi
pop ebp
xor eax, eax
pop ebx
add esp, 8
ret 8
mov eax, dword [esp + 0xc]
test eax, eax
je 0x4fd7aa
push 0
push 0
push 0x302
push edx
jmp 0x4fd90b
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4fd768
jmp 0x4fd804
test ebp, 0x2000000
je case.0x4fd48d.144
push 0
push 0
push 0x304
push edx
jmp 0x4fd90b
mov eax, dword [esp + 0xc]
test eax, eax
je 0x4fd814
push 0
push 0
push 0x7b
push edx
jmp 0x4fd90b
mov ebx, dword [esp + 0x10]
test ebx, ebx
je 0x4fd89d
mov eax, dword [esp + 0xc]
test eax, eax
jne 0x4fd886
mov eax, dword [esp + 0x18]
cmp eax, 0x43
jne 0x4fd846
push 0
push 0
push 0x301
push edx
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4fd768
test byte [esi + 0x168], 8
je 0x4fd768
mov ebx, dword [esp + 0x1c]
cmp ebx, dword [esi + 0x3c]
jne 0x4fd83f
cmp edi, dword [esi + 0x40]
je 0x4fd788
push 0
jmp 0x4fd778
cmp eax, 0x58
jne 0x4fd856
push 0
push 0
push 0x300
jmp 0x4fd80d
cmp eax, 0x56
jne 0x4fd866
push 0
push 0
push 0x302
jmp 0x4fd80d
cmp eax, 0x5a
jne 0x4fd876
push 0
push 0
push 0x304
jmp 0x4fd80d
cmp eax, 0x41
jne 0x4fd814
push 0
push 0
push 0x7f09
jmp 0x4fd80d
cmp dword [esp + 0x18], 0x5a
jne case.0x4fd48d.144
push 0
push 0
push 0x7e9
push edx
jmp 0x4fd90b
push ecx
push eax
push esi
call fcn.0057fa10
mov ebx, dword [esp + 0x18]
push ebp
push ebx
push 0x100
push eax
lea ecx, [esi + 0x1cc]
push ecx
call dword [esi + 0x224]
test eax, eax
jne case.0x4fd48d.144
cmp ebx, 0x30
jb 0x4fd8cc
cmp ebx, 0x70
jb 0x4fd8dc
cmp ebx, 0x80
jb case.0x4fd48d.144
cmp ebx, 0xf0
jae case.0x4fd48d.144
mov edx, dword [esi + 0x40]
mov eax, dword [esi + 0x1c4]
shl edx, 4
test byte [edx + eax + 5], 0x10
jne case.0x4fd48d.144
test byte [esi + 0x164], 4
je case.0x4fd48d.144
push 1
push esi
call fcn.005800e0
mov ecx, dword [esi + 8]
push ebp
push ebx
push 0x100
push ecx
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [esp + 0xc]
test eax, eax
je 0x4fd814
mov eax, dword [esi + 0x164]
test ah, 3
je 0x4fd814
cmp dword [esp + 0x18], 9
je 0x4fd814
test byte [esi + 0x168], 4
je 0x4fd94e
mov ebx, dword [esp + 0x1c]
cmp ebx, dword [esi + 0x3c]
jne 0x4fd96b
cmp edi, dword [esi + 0x40]
jmp 0x4fd965
mov eax, dword [esi + 0x50]
test eax, eax
je 0x4fd788
mov ebx, dword [esp + 0x1c]
cmp ebx, dword [eax + 8]
jne 0x4fd96b
cmp edi, dword [eax + 0xc]
je 0x4fd788
push esi
call fcn.00581eb0
test byte [esi + 0x168], 4
je 0x4fd984
push 0
push edi
push ebx
push esi
call fcn.00580520
mov eax, dword [esi + 0x50]
test eax, eax
je 0x4fd9ad
push eax
push esi
call fcn.0057fbc0
push edi
push ebx
push esi
call fcn.00580310
push edi
push ebx
push esi
call fcn.00580000
pop edi
pop ebp
xor eax, eax
pop ebx
add esp, 8
ret 8
mov edx, dword [esi + 0x44]
push 0
push 0xffffffffffffffff
push 0
push edx
call sym.vidcap60.exe__SfList_DeleteList_16
push edi
push ebx
push esi
call fcn.00580310
push edi
push ebx
push esi
call fcn.00580000
pop edi
pop ebp
xor eax, eax
pop ebx
add esp, 8
ret 8