Function at 0x4020d0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0xc
push ebx
push ebp
push esi
push edi
mov edi, eax
lea esi, [edi + 0x48f80]
mov dword [edi + 0x49140], 0
mov eax, esi
mov ecx, 0x10
mov dword [eax], 0
add eax, 0x1c
sub ecx, 1
jne 0x4020f0
cmp dword [edi + 0x49204], ecx
je 0x402307
mov eax, dword [0x4edfdc]
cmp dword [eax + 0x25f4], ecx
mov ebp, dword [sym.imp.USER32.dll_GetAsyncKeyState]
jne 0x4022a5
mov ecx, dword [edi + 0x4916c]
push ecx
call ebp
mov ebx, 0x8000
test bx, ax
je 0x40213b
or dword [edi + 0x49140], 1
mov edx, dword [edi + 0x49170]
push edx
call ebp
test bx, ax
je 0x402150
or dword [edi + 0x49140], 2
mov eax, dword [edi + 0x49174]
push eax
call ebp
test bx, ax
je 0x402165
or dword [edi + 0x49140], 4
mov ecx, dword [edi + 0x49178]
push ecx
call ebp
test bx, ax
je 0x40217a
or dword [edi + 0x49140], 8
mov edx, dword [edi + 0x4917c]
push edx
call ebp
test bx, ax
je 0x40218f
or dword [edi + 0x49140], 0x10
mov eax, dword [edi + 0x49180]
push eax
call ebp
test bx, ax
je 0x4021a4
or dword [edi + 0x49140], 0x20
mov ecx, dword [edi + 0x49184]
push ecx
call ebp
test bx, ax
je 0x4021b9
or dword [edi + 0x49140], 0x40
mov edx, dword [edi + 0x49188]
push edx
call ebp
test bx, ax
je 0x4021d1
or dword [edi + 0x49140], 0x80
mov eax, dword [edi + 0x4918c]
push eax
call ebp
test bx, ax
je 0x4021e9
or dword [edi + 0x49140], 0x100
mov ecx, dword [edi + 0x49190]
push ecx
call ebp
test bx, ax
je 0x402201
or dword [edi + 0x49140], 0x200
mov edx, dword [edi + 0x491a4]
push edx
call ebp
test bx, ax
je 0x402219
or dword [edi + 0x49140], 0x1000
mov eax, dword [edi + 0x491a8]
push eax
call ebp
test bx, ax
je 0x402231
or dword [edi + 0x49140], 0x2000
mov ecx, dword [edi + 0x491ac]
push ecx
call ebp
test bx, ax
je 0x402249
or dword [edi + 0x49140], 0x4000
mov edx, dword [edi + 0x491b0]
push edx
call ebp
test bx, ax
je 0x40225d
or dword [edi + 0x49140], ebx
push 0x26
call ebp
test bx, ax
je 0x402270
or dword [edi + 0x49140], 0x1000
push 0x28
call ebp
test bx, ax
je 0x402283
or dword [edi + 0x49140], 0x2000
push 0x25
call ebp
test bx, ax
je 0x402296
or dword [edi + 0x49140], 0x4000
push 0x27
call ebp
test bx, ax
je 0x4022a5
or dword [edi + 0x49140], ebx
mov eax, dword [0x4edfdc]
cmp byte [eax + 0x21c1], 0
je 0x402307
push 1
call ebp
test ax, ax
jns 0x4022cf
mov ecx, dword [edi + 0x491f4]
mov edx, dword [ecx*4 + 0x497238]
or dword [edi + 0x49140], edx
push 4
call ebp
test ax, ax
jns 0x4022eb
mov eax, dword [edi + 0x491f8]
mov ecx, dword [eax*4 + 0x497238]
or dword [edi + 0x49140], ecx
push 2
call ebp
test ax, ax
jns 0x402307
mov edx, dword [edi + 0x491fc]
mov eax, dword [edx*4 + 0x497238]
or dword [edi + 0x49140], eax
lea ecx, [edi + 0x44db0]
lea edx, [edi + 0x44d2c]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], 0x10
mov eax, dword [esp + 0x14]
mov ebp, dword [eax]
test ebp, ebp
je 0x402491
cmp dword [edi + 0x44d6c], 0
jle 0x402489
mov ecx, dword [ebp]
mov edx, dword [ecx + 0x64]
push ebp
call edx
mov eax, dword [ebp]
mov ecx, dword [eax + 0x24]
lea ebx, [edi + 0x48e70]
push ebx
push 0x110
push ebp
call ecx
mov edx, dword [esp + 0x10]
mov eax, dword [edx]
cmp eax, 0xc
mov ebp, 0xc
jg 0x40236e
mov ebp, eax
xor ecx, ecx
test ebp, ebp
jle 0x4023a3
lea edx, [edi + 0x491c4]
lea ebx, [ebx]
mov eax, dword [edx]
test byte [edi + eax + 0x48ea0], 0x80
je 0x402395
mov eax, 1
shl eax, cl
jmp 0x402397
xor eax, eax
or dword [esi], eax
add ecx, 1
add edx, 4
cmp ecx, ebp
jl 0x402380
mov ecx, dword [esp + 0x10]
cmp dword [ecx + 4], 0
jle 0x402405
mov ecx, dword [edi + 0x48e90]
cmp ecx, 0xffffffff
je 0x402405
mov eax, 0x51eb851f
mul ecx
shr edx, 5
cmp edx, 0x136
ja 0x4023cf
cmp edx, 0x32
jae 0x4023d5
or dword [esi], 0x1000
lea eax, [edx - 0x83]
cmp eax, 0x62
ja 0x4023e6
or dword [esi], 0x2000
lea ecx, [edx - 0xdd]
cmp ecx, 0x62
ja 0x4023f7
or dword [esi], 0x4000
add edx, 0xffffffd7
cmp edx, 0x62
ja 0x402405
or dword [esi], 0x8000
mov edx, dword [esp + 0x10]
cmp dword [edx + 8], 0
jle 0x402489
mov eax, dword [ebx]
sar eax, 8
mov dword [esi + 4], eax
mov ecx, dword [edi + 0x48e74]
sar ecx, 8
mov dword [esi + 8], ecx
mov edx, dword [edi + 0x48e78]
sar edx, 8
mov dword [esi + 0xc], edx
mov eax, dword [edi + 0x48e7c]
sar eax, 8
mov dword [esi + 0x10], eax
mov ecx, dword [edi + 0x48e80]
mov eax, dword [esi + 8]
sar ecx, 8
mov dword [esi + 0x14], ecx
mov edx, dword [edi + 0x48e84]
sar edx, 8
cmp eax, 0x3a
mov dword [esi + 0x18], edx
jae 0x402461
or dword [esi], 0x1000
cmp eax, 0xc6
jbe 0x40246e
or dword [esi], 0x2000
mov eax, dword [esi + 4]
cmp eax, 0x3a
jae 0x40247c
or dword [esi], 0x4000
cmp eax, 0xc6
jbe 0x402489
or dword [esi], 0x8000
mov eax, dword [esi]
or dword [edi + 0x49140], eax
add dword [esp + 0x10], 0x40c
mov edx, 4
add dword [esp + 0x14], edx
add esi, 0x1c
sub dword [esp + 0x18], 1
jne 0x402323
mov eax, dword [edi + 0x49140]
mov ecx, dword [edi + 0x49154]
xor ecx, eax
mov esi, ecx
and esi, eax
mov dword [edi + 0x49144], esi
mov esi, eax
not esi
and esi, ecx
mov ecx, dword [edi + 0x4914c]
xor ecx, eax
and ecx, eax
add dword [edi + 0x49150], 0xffffffff
mov dword [edi + 0x49154], eax
mov eax, dword [edi + 0x49150]
mov dword [edi + 0x49148], esi
mov dword [edi + 0x4914c], ecx
je 0x402503
mov dword [edi + 0x4914c], 0
test eax, eax
ja 0x40250d
mov dword [edi + 0x49150], edx
mov eax, dword [edi + 0x49144]
test eax, eax
je 0x402521
mov dword [edi + 0x49150], 8
or dword [edi + 0x4914c], eax
call fcn.00402590
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret