Function at 0x577e50
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18c
mov eax, dword [0x623ec0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, ecx
mov dword [ebp - 0x18c], edi
cmp dword [edi + 0xb48], 0
je 0x577eb1
mov ecx, dword [0x9c25b4]
mov eax, dword [ecx]
call dword [eax + 8]
sub eax, dword [edi + 0xb48]
cmp eax, 0x7d0
jbe 0x577e9c
mov dword [edi + 0xb48], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046676f
mov esp, ebp
pop ebp
ret 8
test esi, esi
je 0x577e9c
cmp dword [esi + 0x218], 0x2c
jne 0x577ecc
mov eax, 0xdb
cmp word [esi + 0x21c], ax
je 0x577e9c
mov al, byte [edi + 0xa5a]
test al, al
je 0x577ede
cmp byte [esi + 0xa5a], al
je 0x577e9c
mov ebx, dword [0x9c25b0]
mov dword [ebp - 0x188], ebx
cmp dword [ebx + 0x24], 0x7530
je 0x577eff
mov dword [0x1ff22e0], 0
jmp 0x577e9c
cmp byte [esi + 0x211], 1
je 0x577e9c
cmp byte [esi + 0xa3d], 1
je 0x577e9c
cmp dword [edi + 0x1d4], 0
jne 0x577e9c
mov eax, dword [esi + 0x20]
dec eax
cmp eax, 0x3e6
jbe 0x577e9c
mov ecx, esi
call fcn.00573860
test eax, eax
jne 0x577e9c
cmp byte [esi + 0x215], 1
je 0x577e9c
mov al, byte [edi + 0x620]
and al, 0xf
cmp al, 0xf
jne 0x577f70
mov cl, byte [edi + 0xa5a]
test cl, cl
jle 0x577f70
mov eax, dword [ebx + 0x4c]
mov al, byte [eax + 0xa5a]
test al, al
jle 0x577f70
cmp cl, al
je 0x577e9c
cmp dword [ebx + 0x54], 1
je 0x577e9c
mov ecx, dword [0x9c25b4]
mov eax, dword [ecx]
call dword [eax + 8]
mov ecx, dword [0x9c25ac]
mov edx, eax
add ecx, 0x8d0
mov dword [ebp - 0x178], edx
xor eax, eax
mov dword [ebp - 0x15c], ecx
mov dword [ebp - 0x164], eax
mov dword [ebp - 0x168], 1
test ecx, ecx
je 0x577fcc
test dword [ecx + 0x31c], 0x20000000
cmovne eax, dword [ebp - 0x168]
mov dword [ebp - 0x164], eax
mov eax, dword [ebx + 0x276b4]
add eax, 0x3e8
cmp edx, eax
jb 0x577e9c
cvttss2si eax, dword [edi + 0x28]
cvttss2si ecx, dword [esi + 0x28]
mov dword [ebp - 0x160], eax
cvttss2si eax, dword [esi + 0x2c]
mov dword [ebp - 0x17c], ecx
cvttss2si edx, dword [edi + 0x2c]
push eax
push ecx
mov ecx, dword [ebp - 0x160]
mov dword [ebp - 0x174], eax
mov dword [ebp - 0x180], edx
call fcn.0049a800
mov ecx, dword [ebp - 0x15c]
mov dl, 0x1b
mov dword [ebp - 0x184], eax
call fcn.00498640
add dword [ebp - 0x164], eax
lea ecx, [ebx + 0x118]
mov edx, dword [ebp - 0x180]
lea eax, [ebp - 0x174]
add esp, 4
push ecx
mov ecx, dword [ebp - 0x160]
push eax
lea eax, [ebp - 0x17c]
push eax
call fcn.00498290
mov ecx, dword [0x1ff9b88]
mov eax, 0x55555556
inc ecx
add esp, 0x10
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
sub ecx, eax
mov eax, dword [ebp - 0x184]
mov dword [ebp - 0x170], ecx
mov dword [0x1ff9b88], ecx
cmp eax, 0xf
ja 0x577e9c
mov ecx, dword [ebp - 0x17c]
test ecx, ecx
je 0x577e9c
mov edx, dword [ebp - 0x174]
test edx, edx
je 0x577e9c
cmp eax, dword [ebp - 0x164]
jg 0x578694
cvttss2si eax, dword [esi + 0x28]
cmp ecx, eax
jne 0x578694
cvttss2si eax, dword [esi + 0x2c]
cmp edx, eax
jne 0x578694
cvttss2si eax, dword [edi + 0x28]
cmp dword [edi + 0x668], eax
jne 0x578694
cvttss2si eax, dword [edi + 0x2c]
cmp dword [edi + 0x66c], eax
jne 0x578694
cmp byte [esi + 0xa25], 1
jne 0x57811d
cmp dword [esi + 0x218], 0x42
jne 0x57811d
mov eax, dword [0x9c25b0]
mov eax, dword [eax + 0x4c]
cmp byte [eax + 0xa36], 0
je 0x577e9c
push 0xa8
lea eax, [ebp - 0xb0]
push 0
push eax
call fcn.00468b40
mov eax, 0x39d
add esp, 0xc
mov word [ebp - 0xac], ax
movzx eax, word [edi + 0x20]
mov word [ebp - 0xaa], ax
mov word [ebp - 0x8a], ax
cvttss2si eax, dword [edi + 0x28]
mov word [ebp - 0x8e], ax
cvttss2si eax, dword [edi + 0x2c]
mov word [ebp - 0x84], ax
mov eax, dword [ebx + 0x1a9c2c]
test eax, eax
je 0x578188
mov word [ebp - 0x8e], ax
mov ax, word [ebx + 0x1a9c30]
mov word [ebp - 0x84], ax
mov ecx, dword [ebp - 0x15c]
mov eax, 0xffffffff
mov word [ebp - 0x88], ax
add ecx, 0xbc
mov eax, dword [ebp - 0x170]
mov dl, 0x15
add al, 4
mov dword [ebp - 0x7c], 0xffffffff
mov byte [ebp - 0x7f], 0
mov byte [ebp - 0x82], al
call fcn.0049aed0
cmp eax, 0x65
jne 0x5781d6
mov eax, 0x97
mov word [ebp - 0x88], ax
jmp case.0x5782b2.873
mov ecx, dword [ebp - 0x15c]
mov dl, 0x15
lea ecx, [ecx + 0xbc]
call fcn.0049aed0
mov ecx, dword [ebp - 0x15c]
cmp eax, 0x66
jne 0x57823b
mov eax, 0x98
mov edx, 0x367
mov word [ebp - 0x88], ax
movsx eax, word [ecx + 0xbc]
lea eax, [eax + eax*8]
shl eax, 4
movzx eax, word [eax + 0x817ff0]
mov ecx, eax
cmp ax, dx
je case.0x5782b2.873
mov eax, 0x368
cmp cx, ax
jne case.0x5782b2.873
mov byte [ebp - 0x7f], 1
jmp case.0x5782b2.873
mov dl, 0x15
lea ecx, [ecx + 0xbc]
call fcn.0049aed0
mov ecx, dword [ebp - 0x15c]
cmp eax, 0x67
jne 0x578311
mov eax, 0x99
mov word [ebp - 0x88], ax
movsx eax, word [ecx + 0xbc]
lea eax, [eax + eax*8]
shl eax, 4
movsx eax, word [eax + 0x817ff0]
cmp eax, 0x2ff
jg 0x57829b
je 0x578292
cmp eax, 0x25
jne case.0x5782b2.873
mov byte [ebp - 0x7f], 9
jmp case.0x5782b2.873
mov byte [ebp - 0x7f], 0xa
jmp case.0x5782b2.873
cmp eax, 0x37c
jg 0x5782dd
je 0x5782d4
sub eax, 0x369
cmp eax, 4
ja case.0x5782b2.873
jmp dword [eax*4 + 0x578800]
mov byte [ebp - 0x7f], 2
jmp case.0x5782b2.873
mov byte [ebp - 0x7f], 3
jmp case.0x5782b2.873
mov byte [ebp - 0x7f], 4
jmp case.0x5782b2.873
mov byte [ebp - 0x7f], 5
jmp case.0x5782b2.873
cmp eax, 0x38d
jg 0x578304
je 0x5782fe
sub eax, 0x38b
je 0x5782f8
sub eax, 1
jne case.0x5782b2.873
mov byte [ebp - 0x7f], 7
jmp case.0x5782b2.873
mov byte [ebp - 0x7f], 6
jmp case.0x5782b2.873
mov byte [ebp - 0x7f], 8
jmp case.0x5782b2.873
cmp eax, 0xafe
jne case.0x5782b2.873
mov byte [ebp - 0x7f], 0xb
jmp case.0x5782b2.873
mov dl, 0x15
lea ecx, [ecx + 0xbc]
call fcn.0049aed0
cmp eax, 0x68
jne case.0x5782b2.873
mov ecx, dword [ebp - 0x15c]
mov word [ebp - 0x88], ax
movsx eax, word [ecx + 0xbc]
lea eax, [eax + eax*8]
shl eax, 4
movzx ecx, word [eax + 0x817ff0]
mov eax, 0x36e
cmp cx, ax
je case.0x5782b2.873
movzx eax, byte [ebp - 0x7f]
mov edx, 0x36f
cmp cx, dx
cmove eax, dword [ebp - 0x168]
mov byte [ebp - 0x7f], al
mov ecx, dword [0x9c25ac]
movzx esi, word [esi + 0x20]
mov word [ebp - 0x74], si
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 0x34]
call edx
mov dword [ebp - 0x164], eax
test eax, eax
je 0x577e9c
mov cx, word [0x8fc8b8]
lea eax, [ebp - 0x80]
mov word [ebp - 0x78], cx
mov ecx, dword [0x9c25ac]
push eax
add ecx, 0x8d0
mov dword [ebp - 0x70], 0xfffffffe
call fcn.00496c60
mov edx, dword [ebp - 0x164]
add esp, 4
mov esi, 0xa8
cvttss2si eax, dword [edx + 0x28]
mov word [ebp - 0x86], ax
cvttss2si eax, dword [edx + 0x2c]
mov word [ebp - 0x8c], ax
mov eax, dword [ebp - 0x15c]
cmp byte [eax + 0x14], 3
jne 0x5785f1
mov ecx, dword [eax + 0x31c]
mov esi, 0x39e
mov eax, ecx
and eax, 0x200000
je 0x578400
mov word [ebp - 0xac], si
test eax, eax
mov dword [ebp - 0x170], 0xa8
mov esi, 0x50
cmove esi, dword [ebp - 0x170]
test cl, 0x40
je 0x5785f1
mov eax, dword [ebx + 0x4c]
movss xmm1, dword [edx + 0x28]
movss xmm2, dword [edx + 0x2c]
movaps xmm0, xmm1
subss xmm0, dword [eax + 0x28]
cvttss2si ecx, xmm0
movaps xmm0, xmm2
subss xmm0, dword [eax + 0x2c]
cvttss2si eax, xmm0
test ecx, ecx
jle 0x578454
mov ecx, 1
or esi, 0xffffffff
jmp 0x57845c
mov esi, 0xffffffff
cmovs ecx, esi
test eax, eax
jle 0x578467
mov eax, 1
jmp 0x57846a
cmovs eax, esi
cvttss2si esi, xmm1
add esi, ecx
cvttss2si ecx, xmm2
mov dword [ebp - 0x170], esi
add ecx, eax
mov eax, dword [ebx + 0x34]
mov dword [ebp - 0x160], ecx
mov esi, dword [eax + 0x10]
cmp dword [esi + 0xc], 0
je 0x57851e
cmp esi, dword [ebx + 0x4c]
je 0x57850f
cmp esi, edx
je 0x57850f
cvttss2si eax, dword [esi + 0x28]
cmp eax, dword [ebp - 0x170]
jne 0x57850f
cvttss2si eax, dword [esi + 0x2c]
cmp eax, ecx
jne 0x57850f
mov eax, dword [esi + 0x20]
dec eax
cmp eax, 0x3e6
ja 0x5785a5
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x54]
test eax, eax
je 0x578503
cmp byte [esi + 0x214], 1
je 0x578503
cmp dword [0x9c2598], 0
jne 0x578590
cmp dword [0x1ff59f0], 0
jne 0x57854f
mov eax, dword [0x9c25ac]
mov ax, word [eax + 0x10fc]
cmp ax, word [esi + 0x878]
je 0x578590
mov edx, dword [ebp - 0x164]
mov ecx, dword [ebp - 0x160]
mov eax, dword [esi + 0xc]
mov esi, eax
cmp dword [eax + 0xc], 0
jne 0x578492
mov eax, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x15c]
test dword [ecx + 0x31c], 0x200000
jne 0x5785e0
cmp eax, 0xfffffffe
je 0x5785e0
mov eax, 0x39d
mov esi, 0x48
jmp 0x5785ea
mov al, byte [edi + 0xa5a]
test al, al
jle 0x578561
cmp al, byte [esi + 0xa5a]
je 0x578503
cmp al, 3
jne 0x578573
mov eax, dword [esi + 0x20]
test eax, eax
je 0x578573
cmp eax, 0x3e8
jb 0x578503
mov al, byte [esi + 0xa5a]
test al, al
jle 0x578581
cmp al, 4
jne 0x578503
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x58]
test eax, eax
je 0x578503
mov ax, word [esi + 0x20]
mov word [ebp - 0x6c], ax
mov eax, 0xfffffffe
mov dword [ebp - 0x68], eax
jmp 0x578521
cmp dword [0x9c2598], 0
jne 0x5785b7
cmp byte [esi + 0x215], 1
je 0x5785c1
cmp word [esi + 0x878], 0
jne 0x578590
mov eax, dword [0x9c25ac]
movzx ecx, word [esi + 0x878]
cmp word [eax + 0x10fc], cx
je 0x578590
test cx, cx
je 0x578590
jmp 0x578509
mov eax, 0x39e
mov esi, 0x50
mov word [ebp - 0xac], ax
mov edx, esi
lea ecx, [ebp - 0xb0]
call fcn.0054f850
push 0xa8
lea eax, [ebp - 0x158]
push 0
push eax
call fcn.00468b40
add esp, 0xc
lea eax, [ebp - 0xb0]
push esi
push eax
lea eax, [ebp - 0x158]
push eax
call fcn.004684b0
mov ax, word [ebx + 0x20]
add esp, 0xc
mov word [ebp - 0x152], ax
mov eax, dword [ebp - 0x15c]
mov byte [ebp - 0x129], 1
test dword [eax + 0x31c], 0x20000000
je 0x57865c
mov eax, dword [ebp - 0x168]
mov word [ebp - 0x138], ax
mov edx, dword [ebx]
lea ecx, [ebp - 0x158]
push ecx
push 0x39d
mov ecx, ebx
call dword [edx + 4]
mov eax, dword [ebp - 0x178]
mov dword [ebx + 0x276b4], eax
mov eax, dword [ebp - 0x168]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046676f
mov esp, ebp
pop ebp
ret 8
cmp dword [ebp + 0xc], 0
je 0x577e9c
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0xffffff00
test cx, ax
jg 0x577e9c
cvttss2si ecx, dword [esi + 0x28]
xor eax, eax
cvttss2si esi, dword [esi + 0x2c]
cmp dword [ebp - 0x160], ecx
mov dword [ebp - 0x168], ecx
setle al
lea eax, [eax*2 - 1]
cvttss2si ebx, dword [edi + 0x28]
mov dword [ebp - 0x178], eax
xor eax, eax
cmp dword [ebp - 0x180], esi
push esi
setle al
mov dword [ebp - 0x174], esi
push ecx
cvttss2si edi, dword [edi + 0x2c]
lea eax, [eax*2 - 1]
mov ecx, ebx
mov dword [ebp - 0x170], eax
mov edx, edi
call fcn.0049a800
add esp, 8
cmp eax, dword [ebp - 0x164]
jle 0x5787c4
mov eax, ebx
mov ecx, edi
sub eax, dword [ebp - 0x168]
sub ecx, esi
mov edx, esi
mov dword [ebp - 0x160], eax
mov eax, dword [ebp - 0x168]
sub edx, edi
mov esi, eax
mov dword [ebp - 0x15c], ecx
sub esi, ebx
cmp ebx, eax
je 0x578758
mov eax, dword [ebp - 0x178]
add ebx, eax
add dword [ebp - 0x160], eax
sub esi, eax
cmp edi, dword [ebp - 0x174]
je 0x578772
mov eax, dword [ebp - 0x170]
add ecx, eax
add edi, eax
mov dword [ebp - 0x15c], ecx
sub edx, eax
cmp ebx, dword [ebp - 0x168]
mov ecx, dword [ebp - 0x160]
mov eax, dword [ebp - 0x15c]
cmovle ecx, esi
cmp edi, dword [ebp - 0x174]
cmovle eax, edx
cmp ecx, 7
jg 0x5787a6
cmp eax, 7
jg 0x5787a6
lea eax, [ecx + eax*8]
mov eax, dword [eax*4 + 0x5ec9c8]
jmp 0x5787b0
cmp ecx, eax
jg 0x5787ad
inc eax
jmp 0x5787b0
lea eax, [ecx + 1]
cmp eax, dword [ebp - 0x164]
mov ecx, dword [ebp - 0x15c]
mov eax, dword [ebp - 0x168]
jg 0x578744
mov eax, dword [ebp - 0x188]
mov ecx, dword [ebp - 0x18c]
push 0
push 0
push edi
push ebx
mov dword [eax + 0x27850], ebx
mov dword [eax + 0x27854], edi
call fcn.00578820
mov ecx, dword [ebp - 4]
mov eax, 2
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0046676f
mov esp, ebp
pop ebp
ret 8