Function at 0x4606d0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x50
mov eax, dword [0x549e00]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 0x10]
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, ecx
mov ecx, dword [ebp + 8]
cmp ecx, 0x512
ja 0x460860
je 0x460972
lea eax, [ecx - 0x501]
cmp eax, 0x10
ja case.0x460716.1284
movzx eax, byte [eax + 0x460bc8]
jmp dword [eax*4 + 0x460bb0]
lea ecx, [edi + 0x2be0]
cmp esi, ecx
jne 0x460756
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.0041c110
push dword [ebp - 0x48]
push dword [ebp - 0x4c]
mov ecx, edi
call fcn.0045fa20
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0048a3c9
mov esp, ebp
pop ebp
ret 0xc
lea eax, [edi + 0x2e94]
cmp esi, eax
jne 0x460741
push str.Switch___chatroom___
call fcn.004250a0
add esp, 4
jmp 0x460741
push 0
mov ecx, 0x5509c0
call fcn.00428380
test eax, eax
je 0x460741
push ebx
push esi
mov ecx, edi
call fcn.0045ef90
jmp 0x460741
cmp esi, edi
jne 0x460741
mov eax, ebx
shr eax, 0x10
cmp ax, 1
jne 0x4607b2
movzx eax, bx
test ax, ax
js 0x4607ab
push 1
push eax
mov ecx, edi
call fcn.0045e0a0
call fcn.0040b0b0
jmp 0x460741
cmp ax, 2
jne 0x460741
movzx eax, bx
test ax, ax
js 0x460741
lea ecx, [ebp - 0x44]
push ecx
push eax
mov ecx, 0x552d40
call fcn.00487290
push eax
lea eax, [ebp - 0x44]
push eax
lea ecx, [edi + 0x2858]
call fcn.004103c0
jmp 0x460741
cmp esi, edi
jne 0x460741
mov eax, ebx
shr eax, 0x10
cmp eax, 1
jne 0x460741
movzx eax, bx
test ax, ax
js 0x4607ab
mov esi, eax
push esi
call fcn.00452ae0
xor al, 1
movzx eax, al
push eax
push esi
call fcn.00451d50
add esp, 0xc
test eax, eax
je 0x4607ab
mov ecx, dword [0x54fae8]
test ecx, ecx
je 0x460741
movsx eax, word [ecx + 6]
push eax
movsx eax, word [ecx + 4]
push eax
jmp 0x46073a
test ebx, ebx
je 0x460741
push 0xffffffffffffffff
lea esi, [edi + 0x2858]
push ebx
mov ecx, esi
call fcn.004103c0
push esi
call fcn.004198e0
add esp, 4
jmp 0x460741
cmp ecx, 0x62d
ja 0x4609ee
je 0x4609e2
mov eax, ecx
sub eax, 0x513
je 0x4609a8
sub eax, 0x52
jne case.0x460716.1284
lea eax, [edi + 0x720]
cmp esi, eax
jne 0x4608a4
push str.Open___friend___
call fcn.004250a0
add esp, 4
jmp 0x460972
lea eax, [edi + 0x464]
cmp esi, eax
jne 0x4608ca
push 0
call fcn.00489440
add esp, 4
test al, al
jne 0x460972
call fcn.004467c0
jmp 0x460972
lea eax, [edi + 0x1a8]
cmp esi, eax
jne 0x4608e4
push 0
push edi
call fcn.00447f10
add esp, 8
jmp 0x460972
lea eax, [edi + 0x2024]
cmp esi, eax
jne 0x4608fa
push 1
call fcn.0042df40
add esp, 4
jmp 0x460972
lea eax, [edi + 0x22e0]
cmp esi, eax
jne 0x46090b
call fcn.0047ae80
jmp 0x460972
lea eax, [edi + 0x259c]
cmp esi, eax
jne 0x460920
push 0
mov ecx, edi
call fcn.0045f080
jmp 0x460972
lea ecx, [edi + 0x2be0]
cmp esi, ecx
jne 0x460946
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.0041c110
push dword [ebp - 0x4c]
mov ecx, edi
push dword [ebp - 0x48]
call fcn.0045fa20
jmp 0x460972
lea eax, [edi + 0x1d68]
cmp esi, eax
jne 0x460957
call fcn.00462060
jmp 0x460972
lea eax, [edi + 0x2e94]
cmp esi, eax
je 0x460972
lea eax, [edi + 0x3150]
cmp esi, eax
jne 0x460972
mov ecx, edi
call fcn.0045f730
lea eax, [edi + 0x17d4]
cmp ebx, eax
jne 0x46098b
push 1
call fcn.0046f3f0
add esp, 4
jmp 0x460741
lea eax, [edi + 0x186c]
cmp ebx, eax
jne 0x460741
push 0
call fcn.0046f3f0
add esp, 4
jmp 0x460741
push 2
mov ecx, 0x5509c0
call fcn.00428380
test eax, eax
je 0x460741
xor esi, esi
add edi, 0x1210
cmp ebx, edi
jne 0x4609d1
push esi
call fcn.0045f780
add esp, 4
inc esi
add edi, 0xa4
cmp esi, 9
jl 0x4609c4
jmp 0x460741
mov byte [edi + 0x340c], 0
jmp 0x460741
mov eax, ecx
sub eax, 0x62e
je 0x460a3f
sub eax, 2
je 0x460a19
push ebx
push esi
push ecx
mov ecx, edi
call fcn.0041cda0
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0048a3c9
mov esp, ebp
pop ebp
ret 0xc
lea eax, [edi + 0x2858]
cmp esi, eax
jne 0x460741
push 1
mov eax, ebx
mov ecx, edi
shr eax, 0x10
push eax
movzx eax, bx
push eax
call fcn.0045fd00
jmp 0x460741
cmp ebx, 0xd
jne 0x460a79
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
and eax, 0x8000
mov ecx, edi
push eax
call fcn.0045f080
push 0
call fcn.004198e0
add esp, 4
lea eax, [ebx - 0xc]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0048a3c9
mov esp, ebp
pop ebp
ret 0xc
cmp ebx, 0x26
je 0x460b2c
cmp ebx, 0x28
je 0x460b2c
cmp ebx, 0x21
je 0x460abe
cmp ebx, 0x22
je 0x460abe
cmp ebx, 0x1b
jne 0x460741
push 0
call fcn.004198e0
add esp, 4
lea eax, [ebx - 0x1a]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0048a3c9
mov esp, ebp
pop ebp
ret 0xc
mov ecx, dword [edi + 0x46b0]
test ecx, ecx
js 0x460b14
cmp ebx, 0x21
jne 0x460aec
test ecx, ecx
jle 0x460ad6
lea edx, [ecx - 1]
jmp 0x460b06
call fcn.004526d0
mov edx, dword [edi + 0x47f4]
mov ecx, dword [edi + 0x46b0]
dec edx
add edx, eax
jmp 0x460b06
call fcn.004526d0
mov ecx, dword [edi + 0x46b0]
add eax, dword [edi + 0x47f4]
lea edx, [ecx + 1]
cmp edx, eax
jb 0x460b06
xor edx, edx
cmp edx, ecx
je 0x460b14
push 1
push edx
mov ecx, edi
call fcn.0045e0a0
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0048a3c9
mov esp, ebp
pop ebp
ret 0xc
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jns 0x460b84
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x50]
push eax
lea ecx, [edi + 0x2858]
call fcn.0041c110
push 0
lea eax, [ebp - 0x48]
mov dword [ebp - 0x48], 0
push eax
lea ecx, [edi + 0x2858]
call fcn.0040fe30
cmp ebx, 0x28
mov ecx, edi
sete al
movzx eax, al
push eax
mov eax, dword [ebp - 0x48]
push dword [ebp - 0x4c]
add eax, dword [ebp - 0x50]
push eax
call fcn.0045fd00
jmp 0x460741
cmp ebx, 0x26
mov ecx, edi
sete al
movzx eax, al
push eax
call fcn.0045e620
mov ecx, dword [ebp - 4]
mov eax, 1
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0048a3c9
mov esp, ebp
pop ebp
ret 0xc