Function at 0x4521c0
Capabilities:
Log keystrokes via polling

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4e3028
push eax
mov dword fs:[0], esp
sub esp, 0x20
push ebx
mov ebx, dword [esp + 0x34]
push ebp
push esi
mov eax, dword [ebx + 4]
push edi
cmp eax, 0x100
mov esi, ecx
je 0x4521f7
cmp eax, 0x104
jne case.0x452306.13
mov eax, dword [0x527910]
xor ebp, ebp
cmp eax, ebp
mov dword [0x52794c], ebp
je 0x452237
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0xc4], 1
mov eax, dword [0x527910]
push ebx
push eax
push ecx
call dword [sym.imp.USER32.dll_TranslateAcceleratorA]
cmp eax, ebp
mov dword [esi + 0xc4], ebp
je 0x452237
mov eax, 1
jmp 0x4527b2
mov eax, dword [ebx + 8]
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
cmp eax, 0x70
jb 0x4522ef
cmp eax, 0x7b
ja 0x4522ef
cmp dword [esi + 0x57c], ebp
je 0x45227f
cmp eax, 0x77
je 0x452264
cmp eax, 0x78
jne 0x45227f
add eax, 0x8020
mov ecx, esi
push eax
call fcn.00456bc0
test eax, eax
je 0x45227f
mov eax, 1
jmp 0x4527b2
push 0x11
call edi
test ax, ax
jge 0x4522ef
push 0x10
call edi
test ax, ax
jge 0x4522ef
mov edx, dword [0x52790c]
mov eax, dword [ebx + 8]
sub eax, 0x6d
mov ecx, dword [edx + 0x788]
cmp ecx, ebp
je case.0x452306.13
cmp eax, 2
jle case.0x452306.13
add ecx, 3
cmp eax, ecx
jge case.0x452306.13
add eax, 0xfffffffd
lea ecx, [edx + 0x784]
push eax
mov dword [0x52791c], 4
call fcn.00489b60
add eax, 0x7600
mov ecx, esi
push eax
call fcn.0046b140
mov eax, 1
jmp 0x4527b2
mov eax, dword [ebx + 8]
add eax, 0xfffffff7
cmp eax, 0x25
ja case.0x452306.13
xor edx, edx
mov dl, byte [eax + 0x4527dc]
jmp dword [edx*4 + 0x4527c8]
mov eax, dword [esi + 0xe70]
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
push ebp
push ebp
mov eax, dword [eax + 0x1c]
push 0x157
push eax
call edi
cmp eax, 1
jne 0x452348
mov ecx, dword [esi + 0xe70]
push ebp
push ebp
push 0x14f
mov edx, dword [ecx + 0x1c]
push edx
call edi
mov eax, 1
jmp 0x4527b2
mov eax, dword [esi + 0xe74]
push ebp
push ebp
push 0x157
mov eax, dword [eax + 0x1c]
push eax
call edi
cmp eax, 1
jne 0x45237d
mov ecx, dword [esi + 0xe74]
push ebp
push ebp
push 0x14f
mov edx, dword [ecx + 0x1c]
push edx
call edi
mov eax, 1
jmp 0x4527b2
mov ebx, dword [sym.imp.USER32.dll_GetFocus]
call ebx
push eax
call fcn.004c1de6
mov ebp, eax
mov eax, dword [esi + 0xe70]
push 0
push 0
mov eax, dword [eax + 0x1c]
push 0x407
push eax
call edi
push eax
call fcn.004c1de6
cmp ebp, eax
jne 0x4524ba
push 0
mov ecx, esi
call fcn.004d0b16
mov ebp, eax
test ebp, ebp
je 0x4524ba
mov eax, dword [ebp + 0xf8]
test eax, eax
je 0x4524ba
mov ecx, dword [ebp + 0x1c]
push ecx
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x4524ba
mov eax, dword [ebp + 0xf8]
test eax, eax
je 0x4523f0
mov eax, dword [eax + 0x1c]
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x4524ba
mov edx, dword [ebp + 0xf8]
mov eax, dword [edx + 0x200]
test eax, eax
je 0x4524ba
mov eax, dword [0x52251c]
mov dword [esp + 0x40], eax
mov eax, dword [esi + 0xe70]
push 0
push 0
push 0x407
mov ecx, dword [eax + 0x1c]
mov dword [esp + 0x44], 0
push ecx
call edi
push eax
call fcn.004c1de6
lea edx, [esp + 0x40]
mov ecx, eax
push edx
call fcn.004c27b1
mov edx, dword [ebp + 0xf8]
mov eax, dword [esp + 0x40]
mov edi, dword [edx + 0x200]
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [edi]
jne 0x45247f
test cl, cl
je 0x45247b
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [edi + 1]
jne 0x45247f
add eax, 2
add edi, 2
test cl, cl
jne 0x45245b
xor eax, eax
jmp 0x452484
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x452498
mov eax, dword [edx + 0x200]
mov ecx, esi
push eax
call fcn.0043e5a0
jmp 0x45249f
mov ecx, ebp
call fcn.00406d00
lea ecx, [esp + 0x40]
mov dword [esp + 0x38], 0xffffffff
call fcn.004c5787
mov eax, 1
jmp 0x4527b2
call ebx
push eax
call fcn.004c1de6
mov ebp, eax
mov eax, dword [esi + 0xe74]
push 0
push 0
mov eax, dword [eax + 0x1c]
push 0x407
push eax
call edi
push eax
call fcn.004c1de6
cmp ebp, eax
jne 0x4524f4
mov ecx, esi
call fcn.00478d40
mov eax, 1
jmp 0x4527b2
mov esi, dword [esp + 0x40]
lea ecx, [esp + 0x10]
push 0x14
push ecx
mov edx, dword [esi]
push edx
call dword [sym.imp.USER32.dll_GetClassNameA]
lea eax, [esp + 0x10]
push str.ShockwaveFlashFullS
push eax
call fcn.004ad970
lea ecx, [esp + 0x18]
add esp, 8
cmp eax, ecx
jne case.0x452306.13
mov edx, dword [esi]
push edx
call dword [sym.imp.USER32.dll_DestroyWindow]
mov eax, 1
jmp 0x4527b2
mov eax, dword [esi + 0xe74]
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
push ebp
push ebp
mov eax, dword [eax + 0x1c]
push 0x157
push eax
call edi
cmp eax, 1
jne 0x4525d6
mov eax, dword [esi + 0xe74]
push ebp
push ebp
push 0x147
mov ecx, dword [eax + 0x1c]
push ecx
call edi
mov ebp, eax
test ebp, ebp
jl case.0x452306.13
mov ecx, dword [esi + 0xe74]
push ebp
call fcn.004bf1ac
lea ebx, [esi + 0x304]
push ebp
mov ecx, ebx
call fcn.004bff24
test eax, eax
je 0x45259a
push eax
mov ecx, ebx
call fcn.004bfeed
test ebp, ebp
jle 0x4525b8
mov eax, dword [esi + 0xe74]
push 0
push 0
push 0x146
mov edx, dword [eax + 0x1c]
push edx
call edi
cmp ebp, eax
jl 0x4525b8
dec ebp
mov eax, dword [esi + 0xe74]
push 0
push ebp
push 0x14e
mov ecx, dword [eax + 0x1c]
push ecx
call edi
mov eax, 1
jmp 0x4527b2
mov eax, dword [esi + 0xe70]
push ebp
push ebp
push 0x157
mov edx, dword [eax + 0x1c]
push edx
call edi
cmp eax, 1
jne case.0x452306.13
mov eax, dword [esi + 0xf68]
push ebp
push ebp
push 0x147
push eax
call edi
mov ebp, eax
test ebp, ebp
jl case.0x452306.13
push ebp
lea ecx, [esi + 0xf4c]
call fcn.004bf1ac
test ebp, ebp
jle 0x452633
mov ecx, dword [esi + 0xf68]
push 0
push 0
push 0x146
push ecx
call edi
cmp ebp, eax
jl 0x452633
dec ebp
mov edx, dword [esi + 0xf68]
push 0
push ebp
push 0x14e
push edx
call edi
mov eax, 1
jmp 0x4527b2
push 0x11
call edi
test ax, ax
jl case.0x452306.13
call dword [sym.imp.USER32.dll_GetFocus]
push eax
call fcn.004c1de6
mov edi, eax
mov eax, dword [esi + 0xe70]
push ebp
push ebp
mov eax, dword [eax + 0x1c]
mov ebp, dword [sym.imp.USER32.dll_SendMessageA]
push 0x407
push eax
call ebp
push eax
call fcn.004c1de6
cmp edi, eax
je 0x4526af
mov eax, dword [esi + 0xe74]
push 0
push 0
push 0x407
mov ecx, dword [eax + 0x1c]
push ecx
call ebp
push eax
call fcn.004c1de6
cmp edi, eax
jne case.0x452306.13
push 0
call dword [sym.imp.USER32.dll_GetTopWindow]
lea edx, [esp + 0x10]
push 0x1e
push edx
push eax
call dword [sym.imp.USER32.dll_GetClassNameA]
mov edi, str.Auto_Suggest_Dropdown
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x4526f6
test cl, cl
je 0x4526f2
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x4526f6
add eax, 2
add edi, 2
test cl, cl
jne 0x4526ce
xor eax, eax
jmp 0x4526fb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je case.0x452306.13
mov ecx, esi
call fcn.00478d40
mov eax, 1
jmp 0x4527b2
push 0x11
call edi
test ax, ax
jge case.0x452306.13
call dword [sym.imp.USER32.dll_GetFocus]
push eax
call fcn.004c1de6
mov edi, eax
mov eax, dword [esi + 0xe70]
push ebp
push ebp
mov eax, dword [eax + 0x1c]
mov ebp, dword [sym.imp.USER32.dll_SendMessageA]
push 0x407
push eax
call ebp
push eax
call fcn.004c1de6
cmp eax, edi
je case.0x452306.13
mov eax, dword [esi + 0xe74]
push 0
push 0
push 0x407
mov ecx, dword [eax + 0x1c]
push ecx
call ebp
push eax
call fcn.004c1de6
cmp eax, edi
je case.0x452306.13
mov eax, dword [esi + 0x114]
test eax, eax
je 0x452786
mov ecx, esi
call fcn.0047e350
test eax, eax
jne case.0x452306.13
mov ebp, dword [ebx + 8]
mov eax, dword [esi + 0x1c]
xor edx, edx
cmp ebp, 0x25
setne dl
add edx, 0x80a6
push 0
push edx
push 0x111
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, 1
jmp 0x4527b2
xor eax, eax
mov ecx, dword [esp + 0x30]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x2c
ret 4