Function at 0x5ac4a0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push ebx
push esi
mov esi, ecx
push edi
mov eax, dword [esi + 0x3dc]
cmp eax, 2
je 0x5ac4bf
cmp eax, 4
je 0x5ac4bf
xor ebx, ebx
jmp 0x5ac4c4
mov ebx, 1
push 0x10
mov dword [ebp - 8], ebx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor ecx, ecx
mov cl, ah
and ecx, 0xff
mov edi, ecx
test ebx, ebx
mov dword [ebp - 0xc], edi
mov dword [ebp - 4], edi
je 0x5ac508
mov edx, dword [esi + 0x3e0]
push edx
call fcn.005439a0
add esp, 4
and eax, 0xff
mov dword [ebp - 0x10], eax
je 0x5ac508
xor eax, eax
test edi, edi
sete al
mov dword [ebp - 4], eax
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x10]
test edi, edi
je 0x5ac5cf
mov ecx, 0x83a9e0
call fcn.006f6140
test eax, eax
je 0x5ac53d
mov eax, dword [ebx + 0x214]
push 1
push eax
mov ecx, 0x83a9e0
call fcn.006f21f0
test eax, eax
jne 0x5ac56b
jmp 0x5ac564
mov ecx, 0x83a9e0
call fcn.006f6160
test eax, eax
je 0x5ac56b
mov edx, dword [ebx]
mov ecx, ebx
call dword [edx + 0x9c]
push eax
mov ecx, 0x83a9e0
call fcn.006f5a20
test eax, eax
jne 0x5ac56b
mov dword [ebp - 4], 1
mov eax, dword [esi + 0xb4]
mov ecx, dword [eax + 0x60]
test ecx, ecx
je 0x5ac593
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x9c]
push eax
mov ecx, 0x83a9e0
call fcn.006f5a20
test eax, eax
jne 0x5ac5cf
jmp 0x5ac5c8
mov ecx, dword [edi + 0x24]
test ecx, ecx
jne 0x5ac5b1
mov ecx, dword [eax + 0x5c]
test ecx, ecx
jne 0x5ac5b1
mov ecx, dword [eax + 0x68]
test ecx, ecx
jne 0x5ac5b1
mov eax, dword [0x83e09c]
test eax, eax
je 0x5ac5cf
mov eax, dword [ebx + 0x214]
push 1
push eax
mov ecx, 0x83a9e0
call fcn.006f21f0
test eax, eax
jne 0x5ac5cf
mov dword [ebp - 4], 1
mov edx, dword [0x83e050]
mov eax, 1
cmp edx, eax
mov ecx, 3
jne 0x5ac5ea
mov dword [ebp - 4], eax
xor edi, edi
jmp 0x5ac5f3
mov eax, dword [ebp - 4]
xor edi, edi
cmp eax, edi
je 0x5ac615
cmp dword [ebx + 0x5c], ecx
je 0x5ac615
cmp dword [ebp - 8], edi
je 0x5ac601
push 0xb
jmp 0x5ac603
push 5
mov ecx, esi
call fcn.00532d50
mov ecx, dword [ebp + 8]
mov dword [ecx], 1
jmp 0x5ac62b
cmp dword [ebp - 8], edi
je 0x5ac623
cmp dword [ebx + 0x5c], ecx
je 0x5ac623
push 0xa
jmp 0x5ac624
push edi
mov ecx, esi
call fcn.00532d50
cmp dword [ebp - 4], edi
jne 0x5ac63f
mov edx, dword [esi + 0xb4]
cmp dword [edx + 0x60], edi
je 0x5ac7b2
cmp dword [ebx + 0x5c], 3
je 0x5ac7b2
cmp dword [ebp - 8], edi
jne 0x5ac7b2
cmp dword [0x83e254], edi
je 0x5ac869
mov eax, dword [0x7a1264]
cmp eax, edi
mov eax, dword [0x7a1254]
je 0x5ac671
mov eax, dword [0x7a1250]
cmp eax, 1
jne 0x5ac7b2
push 0x12
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor ecx, ecx
mov cl, ah
test cl, cl
je 0x5ac7b2
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor edx, edx
mov dl, ah
test dl, dl
je 0x5ac703
mov eax, dword [0x83e1c4]
mov ecx, dword [esi + 0xb4]
push eax
call fcn.00529760
mov edx, eax
cmp edx, edi
je 0x5ac7a8
mov eax, dword [edx + 0x2b0]
cmp eax, edi
je 0x5ac7a8
cmp dword [eax + 4], edi
je 0x5ac7a8
mov ecx, 6
xor eax, eax
lea edi, [ebp - 0x28]
push 0
rep stosd dword es:[edi], eax
mov ecx, dword [ebx + 0x214]
mov eax, dword [edx]
mov dword [ebp - 0x14], ecx
lea ecx, [ebp - 0x28]
push ecx
mov ecx, edx
mov dword [ebp - 0x28], 3
call dword [eax + 0xb0]
xor edi, edi
jmp 0x5ac7a8
cmp dword [0x83e250], edi
je 0x5ac777
mov edx, dword [0x83e23c]
mov eax, dword [ebx + 0x214]
cmp edx, eax
jne 0x5ac777
mov eax, dword [0x83e1c4]
mov ecx, dword [esi + 0xb4]
push eax
call fcn.00529760
mov edx, eax
cmp edx, edi
je 0x5ac76f
mov eax, dword [edx + 0x2b0]
cmp eax, edi
je 0x5ac76f
cmp dword [eax + 4], edi
je 0x5ac76f
mov ecx, 6
xor eax, eax
lea edi, [ebp - 0x28]
push 0
rep stosd dword es:[edi], eax
mov ecx, dword [0x83e23c]
mov eax, dword [edx]
mov dword [ebp - 0x14], ecx
lea ecx, [ebp - 0x28]
push ecx
mov ecx, edx
mov dword [ebp - 0x28], 3
call dword [eax + 0xa8]
xor edi, edi
mov dword [0x83e250], edi
jmp 0x5ac7a8
push 0xb
mov ecx, esi
call fcn.00532d50
mov edx, dword [ebx + 0x214]
mov dword [0x83e240], edi
mov dword [0x83e23c], edx
mov dword [0x83e244], edi
mov dword [0x83e248], edi
mov dword [0x83e250], 1
mov dword [0x83e24c], 1
cmp dword [0x83e254], edi
je 0x5ac869
mov eax, dword [0x7a1264]
cmp eax, edi
mov eax, dword [0x7a1250]
je 0x5ac7d1
mov eax, dword [0x7a1254]
cmp eax, 1
jne 0x5ac869
mov eax, dword [esi + 0x3e0]
mov ecx, 0x83a9e0
push eax
call fcn.006f8ae0
test eax, eax
je 0x5ac869
mov edx, dword [0x83e1c4]
mov ecx, dword [esi + 0xb4]
push edx
call fcn.00529760
mov edx, eax
cmp edx, edi
je 0x5acdf5
mov eax, dword [edx + 0x2b0]
cmp eax, edi
je 0x5acdf5
cmp dword [eax + 4], edi
je 0x5acdf5
mov ecx, 6
xor eax, eax
lea edi, [ebp - 0x28]
push 0
rep stosd dword es:[edi], eax
mov eax, dword [esi + 0x3e8]
mov ecx, dword [esi + 0x3e0]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebx + 0x214]
mov dword [ebp - 0x18], ecx
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], eax
mov eax, dword [edx]
push ecx
mov ecx, edx
mov dword [ebp - 0x28], 7
call dword [eax + 0xa8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp dword [ebp - 4], edi
jne 0x5ac87d
mov edx, dword [esi + 0xb4]
cmp dword [edx + 0x60], edi
je 0x5acab0
cmp dword [ebx + 0x5c], 3
je 0x5ac9f0
cmp dword [ebp - 8], edi
jne 0x5ac9f0
cmp dword [0x83e2f8], edi
je 0x5ac9f0
mov eax, dword [0x7a1264]
cmp eax, edi
mov eax, dword [0x7a1250]
je 0x5ac8af
mov eax, dword [0x7a1254]
cmp eax, 1
jne 0x5ac9f0
push 0x12
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor ecx, ecx
mov cl, ah
test cl, cl
je 0x5ac9f0
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor edx, edx
mov dl, ah
test dl, dl
je 0x5ac941
mov eax, dword [0x83e26c]
mov ecx, dword [esi + 0xb4]
push eax
call fcn.00529760
mov edx, eax
cmp edx, edi
je 0x5ac9e6
mov eax, dword [edx + 0x2b4]
cmp eax, edi
je 0x5ac9e6
cmp dword [eax + 4], edi
je 0x5ac9e6
mov ecx, 6
xor eax, eax
lea edi, [ebp - 0x28]
push 1
rep stosd dword es:[edi], eax
mov ecx, dword [ebx + 0x214]
mov eax, dword [edx]
mov dword [ebp - 0x14], ecx
lea ecx, [ebp - 0x28]
push ecx
mov ecx, edx
mov dword [ebp - 0x28], 3
call dword [eax + 0xb0]
xor edi, edi
jmp 0x5ac9e6
cmp dword [0x83e2f4], edi
je 0x5ac9b5
mov edx, dword [0x83e2dc]
mov eax, dword [ebx + 0x214]
cmp edx, eax
jne 0x5ac9b5
mov eax, dword [0x83e26c]
mov ecx, dword [esi + 0xb4]
push eax
call fcn.00529760
mov edx, eax
cmp edx, edi
je 0x5ac9ad
mov eax, dword [edx + 0x2b4]
cmp eax, edi
je 0x5ac9ad
cmp dword [eax + 4], edi
je 0x5ac9ad
mov ecx, 6
xor eax, eax
lea edi, [ebp - 0x28]
push 1
rep stosd dword es:[edi], eax
mov ecx, dword [0x83e2dc]
mov eax, dword [edx]
mov dword [ebp - 0x14], ecx
lea ecx, [ebp - 0x28]
push ecx
mov ecx, edx
mov dword [ebp - 0x28], 3
call dword [eax + 0xa8]
xor edi, edi
mov dword [0x83e2f4], edi
jmp 0x5ac9e6
push 0xb
mov ecx, esi
call fcn.00532d50
mov edx, dword [ebx + 0x214]
mov dword [0x83e2e0], edi
mov dword [0x83e2dc], edx
mov dword [0x83e2e4], edi
mov dword [0x83e2e8], edi
mov dword [0x83e2f4], 1
mov dword [0x83e2f0], 1
cmp dword [ebp - 4], edi
je 0x5acab0
cmp dword [0x83e2f8], edi
je 0x5acab0
mov eax, dword [0x7a1264]
cmp eax, edi
mov eax, dword [0x7a1250]
je 0x5aca18
mov eax, dword [0x7a1254]
cmp eax, 1
jne 0x5acab0
mov eax, dword [esi + 0x3e0]
mov ecx, 0x83a9e0
push eax
call fcn.006f8b10
test eax, eax
je 0x5acab0
mov edx, dword [0x83e26c]
mov ecx, dword [esi + 0xb4]
push edx
call fcn.00529760
mov edx, eax
cmp edx, edi
je 0x5acdf5
mov eax, dword [edx + 0x2b4]
cmp eax, edi
je 0x5acdf5
cmp dword [eax + 4], edi
je 0x5acdf5
mov ecx, 6
xor eax, eax
lea edi, [ebp - 0x28]
push 1
rep stosd dword es:[edi], eax
mov eax, dword [esi + 0x3e8]
mov ecx, dword [esi + 0x3e0]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebx + 0x214]
mov dword [ebp - 0x18], ecx
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], eax
mov eax, dword [edx]
push ecx
mov ecx, edx
mov dword [ebp - 0x28], 7
call dword [eax + 0xa8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [0x7a1264]
cmp eax, edi
mov eax, dword [0x7a1250]
je 0x5acac3
mov eax, dword [0x7a1254]
cmp eax, 1
jne 0x5acd22
cmp dword [ebp - 4], edi
je 0x5acd22
push 0x12
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor edx, edx
mov dl, ah
test dl, dl
jne 0x5acd22
mov eax, dword [esi]
push edi
push edi
push 1
push 0x1a
mov ecx, esi
call dword [eax + 0x18]
mov ecx, dword [ebx + 0x214]
mov dword [esi + 0xe0], edi
mov dword [esi + 0xdc], ecx
mov ecx, 0x83a9e0
call fcn.006f59b0
test eax, eax
jne 0x5acc3c
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor edx, edx
mov dl, ah
test dl, dl
jne 0x5acb37
cmp dword [0x83e054], 1
jne 0x5acc3c
mov eax, dword [ebp + 0x10]
mov ebx, dword [esi + 0x3e0]
cmp ebx, 0x2710
mov edi, dword [eax + 0x214]
je 0x5acbba
mov ecx, dword [0x83c54c]
cmp ecx, 1
jg 0x5acb5e
mov ecx, 1
mov eax, dword [0x83c558]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
shl eax, 2
cdq
idiv ecx
cmp eax, 0x5a
jl 0x5acbba
push 0
push 0
push 0
push 0
push 3
mov ecx, 0x7dabc0
call fcn.00512f20
push 0
push 0
push 0xff
push 0x133
call fcn.00581bb0
add esp, 4
mov ecx, 0x7dabc0
push eax
push 1
call fcn.00512f20
mov dword [esi + 0x534], 1
jmp 0x5acd1d
mov eax, dword [esi + 0x3dc]
sub eax, 0
je 0x5acc16
sub eax, 2
je 0x5acbcf
sub eax, 2
jne 0x5acc2d
mov ecx, dword [esi + 0xb4]
mov eax, dword [esi + 0x3e4]
push eax
push ebx
mov ecx, dword [ecx + 0x3c]
push edi
push 0x29
push 0
mov edx, dword [ecx]
call dword [edx + 8]
mov ecx, dword [esi + 0xb4]
mov eax, dword [esi + 0x3e8]
push 0
push 0
mov ecx, dword [ecx + 0x3c]
push eax
push 0x5a
push 0
mov edx, dword [ecx]
call dword [edx + 8]
mov dword [esi + 0x534], 1
jmp 0x5acd1d
mov ecx, dword [esi + 0xb4]
push 0
push 0
push edi
mov ecx, dword [ecx + 0x3c]
push 0xa
push 0
mov edx, dword [ecx]
call dword [edx + 8]
mov dword [esi + 0x534], 1
jmp 0x5acd1d
mov eax, dword [ebp + 0x10]
mov ebx, dword [esi + 0x3e0]
cmp ebx, 0x2710
mov edi, dword [eax + 0x214]
je 0x5accb2
mov ecx, dword [0x83c54c]
cmp ecx, 1
jg 0x5acc63
mov ecx, 1
mov eax, dword [0x83c558]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
shl eax, 2
cdq
idiv ecx
cmp eax, 0x5a
jl 0x5accb2
push 0
push 0
push 0
push 0
push 3
mov ecx, 0x7dabc0
call fcn.00512f20
push 0
push 0
push 0xff
push 0x133
call fcn.00581bb0
add esp, 4
mov ecx, 0x7dabc0
push eax
push 1
call fcn.00512f20
jmp 0x5acd13
mov eax, dword [esi + 0x3dc]
sub eax, 0
je 0x5accfc
sub eax, 2
je 0x5accc7
sub eax, 2
jne 0x5acd13
mov ecx, dword [esi + 0xb4]
mov eax, dword [esi + 0x3e4]
push eax
push ebx
mov ecx, dword [ecx + 0x3c]
push edi
push 0x29
push 0
mov edx, dword [ecx]
call dword [edx + 8]
mov ecx, dword [esi + 0xb4]
mov eax, dword [esi + 0x3e8]
push 0
push 0
mov ecx, dword [ecx + 0x3c]
push eax
push 0x5a
mov edx, dword [ecx]
jmp 0x5acd0e
mov ecx, dword [esi + 0xb4]
push 0
push 1
push edi
mov ecx, dword [ecx + 0x3c]
push 0xa
mov edx, dword [ecx]
push 0
call dword [edx + 8]
mov dword [esi + 0x534], 0
mov ebx, dword [ebp + 0x10]
xor edi, edi
mov eax, dword [0x7a1264]
cmp eax, edi
mov eax, dword [0x7a1254]
je 0x5acd35
mov eax, dword [0x7a1250]
cmp eax, 1
jne 0x5acdc2
cmp dword [ebp - 0xc], edi
je 0x5acdc2
mov ecx, dword [0x83c54c]
cmp ecx, 1
jg 0x5acd53
mov ecx, 1
mov eax, dword [0x83c558]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
shl eax, 2
cdq
idiv ecx
cmp eax, 0x5a
jl 0x5acda3
push edi
push edi
push edi
push edi
push 3
mov ecx, 0x7dabc0
call fcn.00512f20
push edi
push edi
push 0xff
push 0x133
call fcn.00581bb0
add esp, 4
mov ecx, 0x7dabc0
push eax
push 1
call fcn.00512f20
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [esi]
push edi
push edi
push 1
push 0x1a
mov ecx, esi
call dword [eax + 0x18]
mov ecx, dword [ebx + 0x214]
mov dword [0x838690], ecx
mov dword [esi + 0xe0], edi
mov edx, dword [esi + 0xc4]
mov eax, dword [0x7a123c]
cmp edx, eax
jne 0x5acde1
mov eax, dword [esi + 0xc8]
mov ecx, dword [0x7a1240]
cmp eax, ecx
je 0x5acde7
mov dword [esi + 0xd4], edi
mov ecx, dword [esi + 0xd4]
push ecx
mov ecx, esi
call fcn.005ab270
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc