Function at 0x554010
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x3c
push ebx
mov ebx, dword [esp + 0x4c]
push ebp
mov ebp, dword [esp + 0x4c]
push esi
mov esi, eax
test esi, esi
push edi
je 0x554048
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0x4c]
sub ebx, eax
sub ebp, ecx
push ebx
push ebp
lea eax, [esp + 0x5c]
push eax
mov ecx, esi
call fcn.0063df70
mov ecx, dword [eax + 4]
mov edi, dword [eax]
mov dword [esp + 0x18], ecx
jmp 0x554050
xor edi, edi
xor eax, eax
mov dword [esp + 0x18], eax
call fcn.0062c610
mov ecx, eax
call fcn.0062b090
test eax, eax
mov dword [esp + 0x54], eax
je 0x55457a
mov ecx, eax
call fcn.00640280
test esi, esi
mov edx, dword [eax + 0x11c]
mov dword [esp + 0x10], edx
je 0x5540fc
cmp dword [esi + 0x17c], 2
jne 0x5540fc
cmp dword [esp + 0x18], 0xd
jne 0x5540fc
test edi, edi
mov ecx, dword [0x77e1d4]
jne 0x55409b
push 1
jmp 0x55409d
push 0
push 0xd
call fcn.005017b0
test eax, eax
je 0x5540fc
mov ecx, dword [esp + 0x10]
cmp eax, ecx
je 0x5540fc
mov eax, dword [eax + 0x548]
mov ecx, dword [ecx + 0x548]
mov edx, dword [eax + 0x24]
cmp edx, dword [ecx + 0x24]
jne 0x5540fc
mov ecx, dword [0x77e1d4]
xor eax, eax
test edi, edi
sete al
push eax
push 0xd
call fcn.00493900
mov esi, dword [eax]
mov edi, dword [esi + 0x50]
mov eax, dword [esi + 0x4c]
sub ebx, edi
push ebx
sub ebp, eax
push ebp
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
call fcn.0063df70
mov edx, dword [eax + 4]
mov edi, dword [eax]
mov dword [esp + 0x18], edx
mov ecx, dword [esp + 0x54]
call fcn.00640280
test esi, esi
mov ecx, dword [eax + 0x114]
mov edx, dword [eax + 0x118]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
je 0x55430c
cmp dword [esi + 0x17c], 7
jne 0x554140
mov ecx, dword [esp + 0x54]
call fcn.00640280
call fcn.00534d10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov ecx, dword [esi + 0x1d0]
mov eax, ecx
imul eax, dword [esp + 0x1c]
cdq
sub eax, edx
mov edi, eax
mov eax, ecx
mov ecx, dword [esi + 0x1d4]
cdq
sub eax, edx
sar eax, 1
sar edi, 1
sub eax, edi
add ebp, eax
mov eax, ecx
imul eax, dword [esp + 0x20]
cdq
sub eax, edx
mov edi, eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
sar edi, 1
sub eax, edi
add ebx, eax
push ebx
push ebp
lea eax, [esp + 0x34]
push eax
mov ecx, esi
call fcn.0063df70
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
add ecx, edi
add edx, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x40], eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x44], ecx
push eax
mov ecx, esi
mov dword [esp + 0x40], edi
mov dword [esp + 0x4c], edx
call fcn.0063ea70
test al, al
je 0x5547ef
mov ebx, dword [esp + 0x10]
push esi
push ebx
call fcn.0053bdf0
add esp, 8
test al, al
je 0x5547e5
push esi
call fcn.00530260
add esp, 4
test al, al
je 0x5547e5
mov ebp, dword [esp + 0x18]
push ebp
push edi
mov ecx, esi
call fcn.0063e410
test eax, eax
mov dword [esp + 0x10], eax
je 0x55442e
mov edx, eax
cmp dword [ebx + 0x54], 2
mov ebp, dword [edx + 0x11c]
jne 0x554251
cmp word [ebx + 0x5e], 0xd
jne 0x554251
test ebp, ebp
je 0x554251
mov ecx, dword [0x77e1d4]
xor eax, eax
cmp word [ebx + 0x5c], ax
sete al
push eax
push 0xd
call fcn.005017b0
test eax, eax
je 0x554251
mov eax, dword [eax + 0x548]
mov ecx, dword [ebp + 0x548]
mov edx, dword [eax + 0x24]
cmp edx, dword [ecx + 0x24]
je 0x5547ef
cmp dword [esi + 0x17c], 4
je 0x5547e5
cmp ebp, ebx
jne 0x554346
mov edi, dword [esp + 0x54]
mov ecx, edi
call fcn.00640280
push eax
mov ecx, ebp
call fcn.0053ae50
mov ecx, edi
call fcn.006402d0
cmp dword [esi + 0x17c], 0x11
jne 0x55429a
mov ecx, dword [0x77e370]
test ecx, ecx
je 0x55429a
push 1
call fcn.005814a0
cmp dword [esi + 0x17c], 0x13
jne 0x5542b4
mov ecx, dword [0x77e374]
test ecx, ecx
je 0x5542b4
push 1
call fcn.00579990
cmp dword [esi + 0x17c], 0x12
jne 0x5542ce
mov ecx, dword [0x77e378]
test ecx, ecx
je 0x5542ce
push 1
call fcn.005902d0
cmp dword [esi + 0x17c], 0x16
jne 0x5542e8
mov ecx, dword [0x77e380]
test ecx, ecx
je 0x5542e8
push 1
call fcn.00594940
cmp dword [esi + 0x17c], 0x18
jne 0x554302
mov ecx, dword [0x77e384]
test ecx, ecx
je 0x554302
push 1
call fcn.005a2ae0
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x3c
ret
mov ebp, dword [esp + 0x10]
mov ecx, dword [ebp + 0x548]
cmp dword [ecx + 0x28], 1
jbe 0x554521
mov ecx, dword [esp + 0x54]
mov ebx, dword [ebp + 0x60]
call fcn.00640280
push eax
mov ecx, ebp
call fcn.00539460
cmp eax, ebx
je 0x554521
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x3c
ret
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x50]
test al, al
je 0x5547e5
mov eax, dword [ebx + 0x30]
cmp eax, 0x366
jne 0x5543cd
movzx edx, word [ebp + 0x4f6]
mov ecx, dword [ebp + 0x548]
cmp edx, dword [ecx + 0x1a4]
jae 0x5543cd
mov edx, dword [esi + 0x17c]
mov ecx, 1
cmp edx, ecx
jne 0x5543d2
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ebx + 0x2c]
mov edx, dword [0x7695d0]
mov dword [esp + 0x32], ecx
mov ecx, 0x7695d0
mov byte [esp + 0x2c], 0x11
mov byte [esp + 0x2d], 0xd
mov dword [esp + 0x36], eax
call dword [edx + 8]
mov ecx, dword [0x77db4c]
push 0
push 0xe
lea edx, [esp + 0x34]
mov dword [esp + 0x36], eax
mov eax, dword [ecx]
push edx
call dword [eax + 0x10]
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x3c
ret
mov ecx, 1
cmp dword [ebp + 0x30], eax
jne 0x554401
mov al, byte [ebp + 0x64]
cmp al, byte [ebx + 0x64]
jne 0x554401
mov edx, dword [ebx + 0x548]
cmp dword [edx + 0x28], ecx
jbe 0x554401
mov eax, dword [esp + 0x54]
push ebp
push ebx
push eax
call fcn.00539490
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov edx, dword [ebx + 0x548]
cmp dword [edx + 0x28], ecx
jbe 0x554471
mov ecx, dword [esp + 0x54]
mov ebp, dword [ebx + 0x60]
call fcn.00640280
push eax
mov ecx, ebx
call fcn.00539460
cmp eax, ebp
je 0x554471
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x3c
ret
mov eax, dword [ebx + 0x548]
cmp dword [eax + 0x28], 1
jbe 0x554475
cmp dword [esi + 0x17c], 4
push ebx
push ebp
push edi
push esi
jne 0x55445c
mov ecx, dword [esp + 0x64]
push ecx
call fcn.00553fb0
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov edx, dword [esp + 0x64]
push edx
call fcn.00539540
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov ebp, dword [esp + 0x18]
cmp dword [esi + 0x17c], 2
jne 0x5544d2
mov ecx, ebx
call fcn.0052e240
test al, al
je 0x5544b0
mov eax, dword [esi + 0x18c]
push eax
call fcn.0052e220
add esp, 4
test al, al
je 0x5547e5
mov ecx, dword [ebx + 0x548]
mov ebp, dword [ecx + 0x1a0]
xor edi, edi
jmp 0x5544d2
mov edx, dword [ebx + 0x548]
mov eax, dword [edx + 0x1a0]
mov ecx, dword [esi + 0x18c]
cmp eax, ecx
jne 0x5547e5
mov edi, dword [esi + 0x188]
mov ebp, ecx
mov eax, dword [esi + 0x17c]
cmp eax, 4
jne 0x5544f1
push ebx
push ebp
push edi
push esi
call fcn.00553e00
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
cmp eax, 5
je 0x5547e5
mov ecx, dword [ebx + 0x548]
mov edx, dword [ecx + 0x250]
push edx
call fcn.0040f6a0
mov ecx, dword [esi + 0x180]
mov eax, dword [esi + 0x17c]
add esp, 4
mov dword [esp + 0x30], ecx
jmp 0x55452f
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
xor eax, eax
mov dword [esp + 0x30], eax
test esi, esi
mov dword [esp + 0x2c], eax
mov word [esp + 0x34], di
mov word [esp + 0x36], bp
je 0x554557
lea edx, [esp + 0x2c]
push edx
mov ecx, ebx
call fcn.005305c0
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x3c
ret
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0x554570
lea eax, [esp + 0x2c]
push eax
mov ecx, ebx
call fcn.005305c0
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x3c
ret
mov ebx, dword [esp + 0x18]
push ebx
push edi
mov ecx, esi
call fcn.0063de70
test al, al
je 0x5547ef
push ebx
push edi
mov ecx, esi
call fcn.0063e410
mov ebx, eax
test ebx, ebx
mov dword [esp + 0x10], ebx
je 0x5547ef
mov edx, dword [ebx]
mov ecx, ebx
call dword [edx + 0x50]
test al, al
je 0x5547e5
test esi, esi
je 0x5545e7
mov eax, dword [esi + 0x17c]
cmp eax, 7
jne 0x5545de
cmp dword [esp + 0x50], 0x201
sete cl
mov eax, ebx
call fcn.0052fb50
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
cmp eax, 9
je 0x5547e5
cmp dword [esi + 0x17c], 2
mov edi, dword [ebx + 0x11c]
jne 0x55469b
cmp dword [esi + 0x18c], 0xb
jne 0x554644
mov eax, dword [edi + 0x2c]
lea ecx, [esp + 0x1c]
push ecx
mov dword [esp + 0x20], 0xa
mov dword [esp + 0x24], eax
call fcn.0053b8a0
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x554644
lea ecx, [ebp + 0x1a8]
call fcn.004d5b30
test eax, eax
ja 0x5547e5
mov ecx, dword [ebp + 0x6c]
push 1
push 0
call fcn.0061cc90
cmp dword [esi + 0x17c], 2
jne 0x55469b
cmp dword [esi + 0x18c], 0xc
jne 0x55469b
mov edx, dword [edi + 0x2c]
lea eax, [esp + 0x1c]
push eax
mov dword [esp + 0x20], 0xb
mov dword [esp + 0x24], edx
mov word [esp + 0x2a], 0
call fcn.0053b8a0
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x55469b
mov ecx, dword [ebp + 0x6c]
call fcn.00589290
test eax, eax
jg 0x5547e5
mov ecx, dword [ebp + 0x6c]
push 1
push 0
call fcn.0061cc90
xor eax, eax
mov dword [esp + 0x30], eax
mov word [esp + 0x34], ax
mov word [esp + 0x36], ax
cmp dword [esi + 0x17c], 4
mov dword [esp + 0x2c], 3
mov ebp, dword [edi + 0x60]
jne 0x55472f
push ebx
mov ecx, edi
call fcn.00539460
lea ecx, [esp + 0x54]
push ecx
lea edx, [esp + 0x14]
push edx
mov ecx, edi
mov ebp, eax
call fcn.004554c0
mov ecx, edi
call fcn.0053ac30
mov eax, dword [edi + 0x2c]
mov ecx, dword [0x77da48]
mov byte [esp + 0x1c], 0x11
mov byte [esp + 0x1d], 9
mov dword [esp + 0x26], eax
mov edx, dword [ecx + 0x458]
mov eax, dword [edx + 0x28]
mov edx, dword [0x7695d0]
mov ecx, 0x7695d0
mov dword [esp + 0x22], eax
call dword [edx + 8]
mov ecx, dword [0x77db4c]
push 0
push 0xe
lea edx, [esp + 0x24]
mov dword [esp + 0x26], eax
mov eax, dword [ecx]
push edx
call dword [eax + 0x10]
mov ebx, dword [esp + 0x10]
cmp dword [edi + 0x60], ebp
jne 0x554741
cmp dword [esi + 0x17c], 4
je 0x554741
mov al, 1
jmp 0x554743
xor al, al
push 1
push eax
lea eax, [esp + 0x34]
push eax
push ebp
push ebx
mov ecx, edi
call fcn.005535d0
cmp dword [esi + 0x17c], 0x11
jne 0x55476e
mov ecx, dword [0x77e370]
test ecx, ecx
je 0x55476e
push 0
call fcn.005814a0
cmp dword [esi + 0x17c], 0x13
jne 0x554788
mov ecx, dword [0x77e374]
test ecx, ecx
je 0x554788
push 0
call fcn.00579990
cmp dword [esi + 0x17c], 0x12
jne 0x5547a2
mov ecx, dword [0x77e378]
test ecx, ecx
je 0x5547a2
push 0
call fcn.005902d0
cmp dword [esi + 0x17c], 0x16
jne 0x5547bc
mov ecx, dword [0x77e380]
test ecx, ecx
je 0x5547bc
push 0
call fcn.00594940
cmp dword [esi + 0x17c], 0x18
jne 0x5547d6
mov ecx, dword [0x77e384]
test ecx, ecx
je 0x5547d6
push 0
call fcn.005a2ae0
mov ecx, dword [0x77c5f0]
push ecx
call fcn.0040f6a0
add esp, 4
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x3c
ret
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x3c
ret