Function at 0x413108
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov dword [ebp - 4], 0
cmp dword [ebp + 8], 0x200
jb 0x413127
cmp dword [ebp + 8], 0x20a
jbe 0x413134
cmp dword [ebp + 8], 0x2a1
jne 0x41342f
mov dword [ebp - 8], 0
mov dword [ebp - 0xc], 0
cmp dword [ebp + 8], 0x20a
je 0x41316d
mov eax, dword [ebp + 0x10]
and eax, 0xffff
mov dword [ebp - 8], eax
mov ecx, dword [ebp + 0x10]
shr ecx, 0x10
and ecx, 0xffff
and ecx, 0xffff
mov dword [ebp - 0xc], ecx
jmp 0x41317f
lea edx, [ebp - 0xc]
push edx
lea eax, [ebp - 8]
push eax
mov ecx, 0x4c0af0
call fcn.004052aa
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp - 8]
push edx
mov ecx, 0x4c0af0
call fcn.0040528b
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00403071
add esp, 0xc
test eax, eax
je 0x4131ca
xor eax, eax
mov al, byte [0x4c0b84]
test eax, eax
je 0x4131c5
mov byte [0x4c0b84], 0
mov ecx, 0x4c2830
call fcn.0048ce57
jmp 0x4136a9
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp - 8]
push edx
mov ecx, 0x4bfa58
call fcn.00401b00
cmp dword [0x4c0adc], 0
je 0x4131ef
mov eax, dword [0x4c0adc]
mov dword [ebp - 4], eax
jmp 0x413253
cmp dword [0x4c0ae0], 0
jne 0x41324a
cmp dword [ebp + 8], 0x201
je 0x413213
cmp dword [ebp + 8], 0x204
je 0x413213
cmp dword [ebp + 8], 0x207
jne 0x413233
cmp dword [0x4c0b48], 0
jne 0x413233
push 1
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp - 8]
push edx
call fcn.004136ce
add esp, 0xc
mov dword [ebp - 4], eax
jmp 0x413248
push 0
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp - 8]
push ecx
call fcn.004136ce
add esp, 0xc
mov dword [ebp - 4], eax
jmp 0x413253
mov edx, dword [0x4c0ae0]
mov dword [ebp - 4], edx
mov dword [ebp - 0x14], 0
cmp dword [ebp - 4], 0
je 0x413276
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp - 8]
push ecx
mov edx, dword [ebp - 4]
mov eax, dword [edx]
mov ecx, dword [ebp - 4]
call dword [eax + 0x2c]
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x14]
cmp ecx, dword [0x4c0ad8]
je 0x41332f
mov ecx, 0x4bfa58
call fcn.00401621
mov dword [ebp - 0x18], 0
cmp dword [0x4c0ad8], 0
je 0x4132e6
push 0
push 0
push 0x507
mov edx, dword [0x4c0ad8]
mov eax, dword [edx]
mov ecx, dword [0x4c0ad8]
call dword [eax + 0x10]
mov ecx, dword [0x4c0ad8]
call fcn.00413c90
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x4132e6
push 0
mov ecx, dword [0x4c0ad8]
push ecx
push 0x509
mov edx, dword [ebp - 0x18]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x18]
call dword [eax + 0x10]
cmp dword [ebp - 0x14], 0
je 0x413327
push 0
push 0
push 0x506
mov ecx, dword [ebp - 0x14]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x14]
call dword [edx + 0x10]
mov ecx, dword [ebp - 0x14]
call fcn.00413c90
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x413327
push 0
mov eax, dword [ebp - 0x14]
push eax
push 0x508
mov ecx, dword [ebp - 0x18]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x18]
call dword [edx + 0x10]
mov eax, dword [ebp - 0x14]
mov dword [0x4c0ad8], eax
cmp dword [0x4c0ad4], 0
je 0x413368
mov ecx, dword [ebp - 0x14]
cmp ecx, dword [0x4c0ad4]
je 0x413368
cmp dword [ebp + 8], 0x201
je 0x41335e
cmp dword [ebp + 8], 0x204
je 0x41335e
cmp dword [ebp + 8], 0x207
jne 0x413368
push 0
call fcn.00413844
add esp, 4
mov byte [ebp - 0x10], 0
cmp dword [0x4c0ad8], 0
je 0x413394
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
mov edx, dword [0x4c0ad8]
mov eax, dword [edx]
mov ecx, dword [0x4c0ad8]
call dword [eax + 0x10]
jmp 0x413401
cmp dword [0x4c0adc], 0
je 0x4133bc
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [0x4c0adc]
mov edx, dword [ecx]
mov ecx, dword [0x4c0adc]
call dword [edx + 0x10]
jmp 0x413401
cmp dword [0x4c0ae0], 0
jne 0x413401
xor eax, eax
mov al, byte [0x4c0b7c]
test eax, eax
jne 0x413401
cmp dword [0x4c0b78], 0
je 0x413401
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [0x4c0b78]
mov edx, dword [ecx]
mov ecx, dword [0x4c0b78]
call dword [edx + 0x10]
mov byte [0x4c0b84], 1
mov byte [ebp - 0x10], 1
mov eax, dword [ebp - 0x10]
and eax, 0xff
test eax, eax
jne 0x41342a
xor ecx, ecx
mov cl, byte [0x4c0b84]
test ecx, ecx
je 0x41342a
mov byte [0x4c0b84], 0
mov ecx, 0x4c2830
call fcn.0048ce57
jmp 0x4136a9
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00403071
add esp, 0xc
test eax, eax
je 0x41344c
jmp 0x4136a9
cmp dword [0x4c0ad4], 0
je 0x41347b
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
mov edx, dword [0x4c0ad4]
mov eax, dword [edx]
mov ecx, dword [0x4c0ad4]
call dword [eax + 0x10]
test eax, eax
je 0x41347b
jmp 0x4136a9
cmp dword [0x4c0ae0], 0
je 0x4134a6
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [0x4c0ae0]
mov edx, dword [ecx]
mov ecx, dword [0x4c0ae0]
call dword [edx + 0x10]
jmp 0x4136a9
cmp dword [ebp + 8], 0x100
je 0x4134c2
cmp dword [ebp + 8], 0x101
jne 0x41353f
cmp dword [ebp + 0xc], 0x2c
jne 0x41353f
mov dword [ebp - 0x24], 0
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx eax, ax
and eax, 0x8000
test eax, eax
je 0x4134e6
mov ecx, dword [ebp - 0x24]
or ecx, 2
mov dword [ebp - 0x24], ecx
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
and edx, 0x8000
test edx, edx
je 0x413503
mov eax, dword [ebp - 0x24]
or al, 1
mov dword [ebp - 0x24], eax
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x8000
test ecx, ecx
je 0x413521
mov edx, dword [ebp - 0x24]
or edx, 4
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x24]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.004813a7
add esp, 8
test eax, eax
je 0x41353a
jmp 0x4136a9
jmp 0x4135c0
cmp dword [ebp + 8], 0x104
jne 0x4135c0
mov dword [ebp - 0x28], 0
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
and edx, 0x8000
test edx, edx
je 0x41356c
mov eax, dword [ebp - 0x28]
or al, 2
mov dword [ebp - 0x28], eax
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x8000
test ecx, ecx
je 0x41358a
mov edx, dword [ebp - 0x28]
or edx, 1
mov dword [ebp - 0x28], edx
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
movsx eax, ax
and eax, 0x8000
test eax, eax
je 0x4135a7
mov ecx, dword [ebp - 0x28]
or ecx, 4
mov dword [ebp - 0x28], ecx
mov edx, dword [ebp - 0x28]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.004813a7
add esp, 8
test eax, eax
je 0x4135c0
jmp 0x4136a9
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x20], 0
jmp 0x4135d9
mov ecx, dword [ebp - 0x20]
add ecx, 1
mov dword [ebp - 0x20], ecx
cmp dword [ebp - 0x20], 3
jge 0x413672
cmp dword [ebp - 0x1c], 0
jne 0x413672
cmp dword [ebp - 0x20], 0
jne 0x413602
mov ecx, 0x4c0a98
call fcn.00413c70
mov dword [ebp - 4], eax
jmp 0x413624
cmp dword [ebp - 0x20], 1
jne 0x413617
mov ecx, 0x4c0a5c
call fcn.00413c70
mov dword [ebp - 4], eax
jmp 0x413624
mov ecx, 0x4c0a20
call fcn.00413c70
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x41366d
mov ecx, dword [ebp - 4]
call fcn.00413c70
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 4]
call fcn.00416be1
test eax, eax
je 0x413665
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
mov edx, dword [ebp - 4]
mov eax, dword [edx]
mov ecx, dword [ebp - 4]
call dword [eax + 0x10]
test eax, eax
je 0x413665
mov dword [ebp - 0x1c], 1
jmp 0x41366d
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 4], ecx
jmp 0x413624
jmp 0x4135d0
cmp dword [ebp - 0x1c], 0
jne 0x4136a9
cmp dword [0x4c0b78], 0
je 0x4136a9
xor edx, edx
mov dl, byte [0x4c0b7c]
test edx, edx
jne 0x4136a9
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
mov eax, dword [0x4c0b78]
mov edx, dword [eax]
mov ecx, dword [0x4c0b78]
call dword [edx + 0x10]
mov esp, ebp
pop ebp
ret