Function at 0xd6e76c
Capabilities:
Log keystrokes
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff88
mov eax, 0xf9dbd4
push ebx
push esi
push edi
mov ebx, dword [ebp + 0xc]
call fcn.00f4f878
mov byte [ebp - 0x31], 0
mov byte [ebp - 0x32], 0
xor edi, edi
cmp byte [0xf9c6a0], 0
je 0xd6e7a6
mov al, 1
mov edx, dword [ebp - 0x30]
mov dword fs:[0], edx
jmp 0xd6ee3d
push 0x10
call sub.USER32.DLL_GetKeyState
test ax, ax
jge 0xd6e7b5
or edi, 8
push 0x11
call sub.USER32.DLL_GetKeyState
test ax, ax
jge 0xd6e7c4
or edi, 0x10
push 0x12
call sub.USER32.DLL_GetKeyState
test ax, ax
jge 0xd6e7d3
or edi, 0x20
test byte [ebx + 0xf], 0xc0
je 0xd6e7df
or edi, 0x4000
cmp dword [ebx + 4], 0x102
jne 0xd6e8d3
mov word [ebp - 0x20], 8
cmp dword [0x10292b4], 0
je 0xd6e803
mov esi, dword [0x10292b4]
jmp 0xd6e80a
call fcn.00da3d94
mov esi, eax
mov dword [ebp - 4], esi
inc dword [esi]
inc dword [ebp - 0x14]
mov word [ebp - 0x20], 0x20
mov eax, dword [ebx + 8]
push eax
lea edx, [ebp - 0x34]
push edx
call fcn.00d6acb0
mov al, byte [ebp - 0x33]
xor edx, edx
mov dl, al
xor ecx, ecx
shl edx, 8
mov cl, byte [ebp - 0x34]
add esp, 8
or dx, cx
je 0xd6e855
add esp, 0xfffffffc
mov byte [esp + 1], al
mov al, byte [ebp - 0x34]
mov byte [esp], al
lea edx, [ebp - 4]
push edx
call fcn.00da7f6c
add esp, 8
push 0
lea ecx, [ebp - 4]
push ecx
mov al, byte [ebp + 0x10]
push eax
push edi
mov edx, dword [ebx + 8]
push edx
push 0
push 6
mov ecx, dword [ebp + 8]
push ecx
call fcn.00d6f0d0
add esp, 0x20
mov byte [ebp - 0x31], al
push 0
lea eax, [ebp - 4]
push eax
mov dl, byte [ebp + 0x10]
push edx
push edi
mov ecx, dword [ebx + 8]
push ecx
push 0
push 7
mov eax, dword [ebp + 8]
push eax
call fcn.00d6f0d0
add esp, 0x20
mov byte [ebp - 0x32], al
dec dword [ebp - 0x14]
mov edx, dword [ebp - 4]
dec dword [edx]
sete cl
and ecx, 1
test cl, cl
je 0xd6e8c8
mov eax, dword [ebp - 4]
cmp eax, dword [0x10292b4]
jne 0xd6e8be
xor edx, edx
mov dword [0x10292b4], edx
mov ecx, dword [ebp - 4]
push ecx
call fcn.00da4338
pop ecx
mov word [ebp - 0x20], 0
jmp 0xd6ee1e
cmp dword [ebx + 4], 0x286
jne 0xd6e9cf
mov word [ebp - 0x20], 0x38
cmp dword [0x10292b4], 0
je 0xd6e8f7
mov esi, dword [0x10292b4]
jmp 0xd6e8fe
call fcn.00da3d94
mov esi, eax
mov dword [ebp - 8], esi
inc dword [esi]
inc dword [ebp - 0x14]
mov word [ebp - 0x20], 0x50
mov eax, dword [ebx + 8]
push eax
lea edx, [ebp - 0x36]
push edx
call fcn.00d6ad18
mov al, byte [ebp - 0x35]
xor ecx, ecx
mov cl, al
mov dl, byte [ebp - 0x36]
xor ebx, ebx
add esp, 8
shl ecx, 8
mov bl, dl
or cx, bx
je 0xd6e948
add esp, 0xfffffffc
mov byte [esp + 1], al
mov byte [esp], dl
lea eax, [ebp - 8]
push eax
call fcn.00da7f6c
add esp, 8
push 0
lea edx, [ebp - 8]
push edx
mov cl, byte [ebp + 0x10]
push ecx
push edi
push 0
push 0
push 6
mov eax, dword [ebp + 8]
push eax
call fcn.00d6f0d0
add esp, 0x20
lea edx, [ebp - 8]
push 0
push edx
mov cl, byte [ebp + 0x10]
push ecx
push edi
push 0
push 0
push 7
mov eax, dword [ebp + 8]
push eax
call fcn.00d6f0d0
add esp, 0x20
mov al, 1
push eax
dec dword [ebp - 0x14]
mov edx, dword [ebp - 8]
dec dword [edx]
sete cl
and ecx, 1
test cl, cl
je 0xd6e9b4
mov eax, dword [ebp - 8]
cmp eax, dword [0x10292b4]
jne 0xd6e9aa
xor edx, edx
mov dword [0x10292b4], edx
mov ecx, dword [ebp - 8]
push ecx
call fcn.00da4338
pop ecx
pop eax
mov edx, dword [ebp - 0x30]
mov dword fs:[0], edx
jmp 0xd6ee3d
mov ecx, dword [ebx + 8]
push ecx
call fcn.00d6aa10
pop ecx
mov esi, eax
cmp esi, 0x1004
jne 0xd6e9ee
test byte [ebx + 0xf], 1
je 0xd6e9ee
mov esi, 0x1005
test byte [ebx + 0xf], 1
jne 0xd6ea46
mov eax, esi
cmp eax, 0x30
jge 0xd6ea0b
add eax, 0xffffffd6
sub eax, 2
jb 0xd6ea27
dec eax
sub eax, 2
jb 0xd6ea27
jmp 0xd6ea2d
add eax, 0xffffffd0
sub eax, 0xa
jb 0xd6ea27
add eax, 0xfffff034
sub eax, 2
jb 0xd6ea27
add eax, 0xfffffff8
sub eax, 8
jb 0xd6ea27
jmp 0xd6ea2d
or edi, 0x4000
mov eax, dword [ebx + 0xc]
cmp eax, 0x4c0001
je 0xd6ea3e
cmp eax, 0xc04c0001
jne 0xd6ea62
or edi, 0x4000
jmp 0xd6ea62
mov edx, esi
sub edx, 0x2f
je 0xd6ea5c
sub edx, 0xfd6
je 0xd6ea5c
sub edx, 0x20
je 0xd6ea5c
jmp 0xd6ea62
or edi, 0x4000
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x3c], ecx
cmp dword [ebp - 0x3c], 0x100
je 0xd6ea87
cmp dword [ebp - 0x3c], 0x290
je 0xd6ea87
cmp dword [ebp - 0x3c], 0x104
jne 0xd6edb0
push 0
mov eax, dword [ebx + 8]
push eax
call fcn.00d6aa6c
add esp, 8
mov dword [ebp - 0x40], eax
mov byte [ebp - 0x41], 0
mov byte [ebp - 0x42], 0
cmp dword [ebp - 0x3c], 0x100
jne 0xd6eab0
mov edx, 0x102
jmp 0xd6eac5
cmp dword [ebp - 0x3c], 0x290
jne 0xd6eac0
mov edx, 0x286
jmp 0xd6eac5
mov edx, 0x106
mov dword [ebp - 0x48], edx
push 1
mov eax, dword [ebp - 0x48]
push eax
lea eax, [ebp - 0x78]
mov ecx, dword [ebp - 0x48]
push ecx
push 0
push eax
call fcn.00d6a260
add esp, 0x14
test al, al
je 0xd6eb7f
cmp dword [ebp - 0x48], 0x286
jne 0xd6eb08
mov edx, dword [ebp - 0x70]
push edx
lea ecx, [ebp - 0x4a]
push ecx
call fcn.00d6ad18
add esp, 8
lea eax, [ebp - 0x4a]
mov edx, eax
jmp 0xd6eb1b
mov ecx, dword [ebp - 0x70]
push ecx
lea eax, [ebp - 0x4c]
push eax
call fcn.00d6acb0
add esp, 8
lea edx, [ebp - 0x4c]
mov ax, word [edx]
mov word [ebp - 0x42], ax
cmp dword [ebp - 0x3c], 0x104
jne 0xd6eb59
lea ecx, [ebp - 0x42]
push ecx
call fcn.00da21a8
pop ecx
test al, al
je 0xd6eb59
test byte [ebx + 0xd], 0x20
je 0xd6eb59
lea eax, [ebp - 0x42]
push eax
lea edx, [ebp - 0x4e]
push edx
call fcn.00da23e4
add esp, 8
lea ecx, [ebp - 0x4e]
mov ax, word [ecx]
mov word [ebp - 0x42], ax
test esi, esi
jne 0xd6ec1a
cmp byte [ebp - 0x41], 0
jne 0xd6ec1a
push edi
mov dl, byte [ebp - 0x42]
push edx
call fcn.00d6ac70
add esp, 8
mov esi, eax
jmp 0xd6ec1a
cmp dword [ebx + 8], 0x2e
jne 0xd6eb99
mov byte [ebp - 0x4f], 0
lea eax, [ebp - 0x50]
mov byte [ebp - 0x50], 0x7f
mov dx, word [eax]
mov word [ebp - 0x42], dx
jmp 0xd6ec01
cmp dword [ebp - 0x3c], 0x104
je 0xd6ec01
test byte [0xf9c6d4], 0xf0
je 0xd6ebbb
push 2
mov ecx, dword [ebx + 8]
push ecx
call sub.USER32.DLL_MapVirtualKeyW
mov dword [ebp - 0x54], eax
jmp 0xd6ebe1
push 2
mov eax, dword [ebx + 8]
push eax
call sub.USER32.DLL_MapVirtualKeyA
mov dword [ebp - 0x54], eax
test byte [ebp - 0x53], 0x80
je 0xd6ebe1
mov edx, dword [ebp - 0x54]
xor edx, 0x8000
or edx, 0x80000000
mov dword [ebp - 0x54], edx
test byte [ebp - 0x51], 0x80
jne 0xd6ec01
mov ecx, dword [ebp - 0x54]
push ecx
lea eax, [ebp - 0x56]
push eax
call fcn.00d6acb0
add esp, 8
lea edx, [ebp - 0x56]
mov cx, word [edx]
mov word [ebp - 0x42], cx
test esi, esi
jne 0xd6ec1a
cmp byte [ebp - 0x41], 0
jne 0xd6ec1a
push edi
mov al, byte [ebp - 0x42]
push eax
call fcn.00d6ac70
add esp, 8
mov esi, eax
cmp edi, 0x20
jne 0xd6ec6f
mov eax, esi
sub eax, 0x20
je 0xd6ec4d
add eax, 0xfffff020
sub eax, 2
jb 0xd6ec3c
sub eax, 3
je 0xd6ec3c
sub eax, 0x2e
je 0xd6ec3c
jmp 0xd6ec6f
xor eax, eax
mov edx, dword [ebp - 0x30]
mov dword fs:[0], edx
jmp 0xd6ee3d
mov ecx, dword [ebp + 8]
push ecx
call fcn.00e52c80
pop ecx
push eax
call fcn.00d68734
pop ecx
mov al, 1
mov edx, dword [ebp - 0x30]
mov dword fs:[0], edx
jmp 0xd6ee3d
cmp dword [ebp - 0x40], 0
je 0xd6ecd6
cmp esi, 0x1020
jl 0xd6ec89
cmp esi, 0x1026
jle 0xd6ee1e
push 1
mov ebx, dword [ebp - 0x40]
add ebx, 8
push ebx
mov al, byte [ebp + 0x10]
push eax
push edi
mov edx, dword [ebp - 0x40]
mov ecx, dword [edx + 4]
push ecx
push esi
push 7
mov eax, dword [ebp + 8]
push eax
call fcn.00d6f0d0
add esp, 0x20
mov byte [ebp - 0x31], al
push 1
push ebx
mov dl, byte [ebp + 0x10]
push edx
push edi
mov ecx, dword [ebp - 0x40]
mov eax, dword [ecx + 4]
push eax
push esi
push 6
mov edx, dword [ebp + 8]
push edx
call fcn.00d6f0d0
add esp, 0x20
mov byte [ebp - 0x32], al
jmp 0xd6ee1e
mov word [ebp - 0x20], 0x68
cmp dword [0x10292b4], 0
je 0xd6eced
mov ecx, dword [0x10292b4]
jmp 0xd6ecf4
call fcn.00da3d94
mov ecx, eax
mov dword [ebp - 0xc], ecx
xor edx, edx
mov eax, dword [ebp - 0xc]
xor ecx, ecx
inc dword [eax]
inc dword [ebp - 0x14]
mov word [ebp - 0x20], 0x80
mov al, byte [ebp - 0x41]
mov cl, byte [ebp - 0x42]
mov dl, al
shl edx, 8
or dx, cx
je 0xd6ed32
add esp, 0xfffffffc
mov byte [esp + 1], al
mov al, byte [ebp - 0x42]
mov byte [esp], al
lea edx, [ebp - 0xc]
push edx
call fcn.00da7f6c
add esp, 8
cmp byte [ebp - 0x41], 0
je 0xd6ed3c
xor ecx, ecx
jmp 0xd6ed3f
mov cl, byte [ebp - 0x42]
mov byte [ebp - 0x57], cl
lea eax, [ebp - 0xc]
push eax
movsx edx, byte [ebp - 0x57]
push edx
mov eax, dword [ebx + 8]
push eax
call fcn.00d6ab94
add esp, 0xc
lea edx, [ebp - 0xc]
push 0
push edx
mov cl, byte [ebp + 0x10]
push ecx
push edi
movsx eax, byte [ebp - 0x57]
push eax
push esi
push 6
mov edx, dword [ebp + 8]
push edx
call fcn.00d6f0d0
add esp, 0x20
mov byte [ebp - 0x31], al
dec dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
dec dword [ecx]
sete al
and eax, 1
test al, al
je 0xd6eda8
mov edx, dword [ebp - 0xc]
cmp edx, dword [0x10292b4]
jne 0xd6ed9e
xor ecx, ecx
mov dword [0x10292b4], ecx
mov eax, dword [ebp - 0xc]
push eax
call fcn.00da4338
pop ecx
mov word [ebp - 0x20], 0
jmp 0xd6ee1e
push 1
mov edx, dword [ebx + 8]
push edx
call fcn.00d6aa6c
add esp, 8
mov dword [ebp - 0x5c], eax
cmp dword [ebp - 0x5c], 0
je 0xd6ee1e
test esi, esi
jne 0xd6edeb
push edi
mov ecx, dword [ebp - 0x5c]
cmp dword [ecx + 4], 0
je 0xd6eddd
mov eax, dword [ebp - 0x5c]
mov dl, byte [eax + 4]
jmp 0xd6ede0
mov dl, byte [ebx + 8]
push edx
call fcn.00d6ac70
add esp, 8
mov esi, eax
push 0
mov eax, dword [ebp - 0x5c]
add eax, 8
push eax
mov dl, byte [ebp + 0x10]
push edx
push edi
mov ecx, dword [ebp - 0x5c]
mov eax, dword [ecx + 4]
push eax
push esi
push 7
mov edx, dword [ebp + 8]
push edx
call fcn.00d6f0d0
add esp, 0x20
mov byte [ebp - 0x31], al
cmp esi, 0x1023
jne 0xd6ee1e
mov byte [ebp - 0x31], 1
cmp byte [ebp - 0x31], 0
jne 0xd6ee2e
cmp byte [ebp - 0x32], 0
jne 0xd6ee2e
xor eax, eax
jmp 0xd6ee33
mov eax, 1
mov edx, dword [ebp - 0x30]
mov dword fs:[0], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret