Function at 0x4d20cc
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffec
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
mov esi, 0x51fc1f
cmp dword [0x4fc4ec], 0
jne 0x4d20f5
push 0x4fc500
call sub.USER32.dll_RegisterWindowMessageA
mov dword [0x4fc4ec], eax
cmp dword [0x4fc4f0], 0
jne 0x4d210d
push 0x4fc513
call sub.USER32.dll_RegisterWindowMessageA
mov dword [0x4fc4f0], eax
cmp dword [0x4fc4ec], 0
je 0x4d211f
cmp dword [0x4fc4f0], 0
jne 0x4d212d
push 0
call sub.USER32.dll_MessageBeep
xor eax, eax
jmp 0x4d2a96
cmp dword [0x4fc4f4], 0
je 0x4d2144
push 0
call sub.USER32.dll_MessageBeep
xor eax, eax
jmp 0x4d2a96
mov dword [0x4fc4f4], 1
cmp dword [ebp + 8], 0
je 0x4d217b
mov edx, dword [ebp + 8]
push edx
call sub.USER32.dll_IsWindow
test eax, eax
je 0x4d217b
mov ecx, dword [ebp + 8]
push ecx
call sub.USER32.dll_IsIconic
test eax, eax
jne 0x4d217b
mov eax, dword [ebp + 8]
push eax
call sub.USER32.dll_IsWindowVisible
test eax, eax
jne 0x4d2184
mov edx, dword [0x4fd9ec]
mov dword [ebp + 8], edx
push 1
call sub.USER32.dll_GetKeyState
test ax, ax
jl 0x4d219c
push 2
call sub.USER32.dll_GetKeyState
test ax, ax
jge 0x4d21be
push 0x50be08
call sub.USER32.dll_GetKeyboardState
mov byte [0x50be09], 0
mov byte [0x50be0a], 0
push 0x50be08
call sub.USER32.dll_SetKeyboardState
mov ecx, dword [ebp + 0x14]
mov dword [0x4fc4dc], ecx
mov dword [ebp - 4], 1
mov dword [ebp - 0x10], 1
xor eax, eax
mov dword [0x4fc4e0], eax
mov dword [ebp - 8], 1
xor edx, edx
mov dword [0x4fc4e4], edx
xor ecx, ecx
mov dword [0x4fc4e8], ecx
cmp edi, 0xa
jl 0x4d2200
sub edi, 0xa
xor eax, eax
mov dword [ebp - 0x10], eax
push 0x180
push 0x51f79f
push 0x13ee
mov edx, dword [0x4fd9e8]
push edx
call sub.USER32.dll_LoadStringA
push 0x51f79f
call fcn.00401318
pop ecx
mov cl, byte [eax + 0x51f79e]
mov byte [ebp - 9], cl
xor edx, edx
mov eax, 0x51f79f
jmp 0x4d225a
cmp cl, byte [ebp - 9]
jne 0x4d2240
mov byte [eax], 0
cmp edx, 0x100
jb 0x4d2258
mov byte [0x51f89e], 0
mov byte [0x51f89f], 0
jmp 0x4d2260
inc edx
inc eax
mov cl, byte [eax]
test cl, cl
jne 0x4d2238
push esi
push edi
mov esi, 0x51f238
mov edi, 0x51f91f
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
cmp byte [0x51f238], 0
je 0x4d24ab
push 0x50d1f7
push 0x50d0f7
push 0x50cff7
push 0x50cff4
push 0x51f238
call fcn.00405b58
add esp, 0x14
push esi
push edi
mov esi, 0x51f238
mov edi, 0x50cff4
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
push 0x50cff7
push 0x51f238
call fcn.0040123c
add esp, 8
push esi
push edi
mov esi, 0x51f3b8
mov edi, 0x50d0f7
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
push 0x50d1f7
push 0x51f3b8
call fcn.0040123c
add esp, 8
push 0x50d1f7
call fcn.00408b88
pop ecx
push 0x4fc52e
push 0x50d1f7
call fcn.004015f8
add esp, 8
test eax, eax
je 0x4d2360
mov dword [ebp - 4], 2
jmp 0x4d24e7
push 0x4fc533
push 0x50d1f7
call fcn.004015f8
add esp, 8
test eax, eax
je 0x4d2382
mov dword [ebp - 4], 3
jmp 0x4d24e7
push 0x4fc538
push 0x50d1f7
call fcn.004015f8
add esp, 8
test eax, eax
je 0x4d23a4
mov dword [ebp - 4], 4
jmp 0x4d24e7
push 0x4fc53d
push 0x50d1f7
call fcn.004015f8
add esp, 8
test eax, eax
je 0x4d23c6
mov dword [ebp - 4], 4
jmp 0x4d24e7
push 0x4fc542
push 0x50d1f7
call fcn.004015f8
add esp, 8
test eax, eax
je 0x4d23e8
mov dword [ebp - 4], 5
jmp 0x4d24e7
push 0x4fc547
push 0x50d1f7
call fcn.004015f8
add esp, 8
test eax, eax
je 0x4d240a
mov dword [ebp - 4], 6
jmp 0x4d24e7
push 0x4fc54c
push 0x50d1f7
call fcn.004015f8
add esp, 8
test eax, eax
je 0x4d242c
mov dword [ebp - 4], 7
jmp 0x4d24e7
push 0x4fc551
push 0x50d1f7
call fcn.004015f8
add esp, 8
test eax, eax
je 0x4d244e
mov dword [ebp - 4], 8
jmp 0x4d24e7
push 0x4fc556
push 0x50d1f7
call fcn.004015f8
add esp, 8
test eax, eax
je 0x4d246d
mov dword [ebp - 4], 8
jmp 0x4d24e7
push 0x4fc55b
push 0x50d1f7
call fcn.004015f8
add esp, 8
test eax, eax
je 0x4d248c
mov dword [ebp - 4], 8
jmp 0x4d24e7
push 0x4fc560
push 0x50d1f7
call fcn.004015f8
add esp, 8
test eax, eax
je 0x4d24e7
mov dword [ebp - 4], 9
jmp 0x4d24e7
push esi
push edi
mov esi, 0x51f238
mov edi, 0x4f7cec
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
push esi
push edi
mov esi, 0x4fc565
mov edi, 0x51f3b8
mov eax, edi
movsd dword es:[edi], dword [esi]
pop edi
pop esi
push 2
push 0x51f238
call fcn.0041f620
test eax, eax
jne 0x4d2522
push esi
push edi
mov esi, 0x51f238
mov edi, 0x4f7cec
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
push 0x51f238
call fcn.00401318
pop ecx
mov edx, eax
cmp edx, 3
jbe 0x4d2544
cmp byte [edx + 0x51f237], 0x5c
jne 0x4d2544
mov byte [edx + 0x51f237], 0
push 0x4c
push 0
push esi
call fcn.00401198
add esp, 0xc
test edi, edi
jne 0x4d262c
cmp dword [0x515ee8], 0
je 0x4d25f6
cmp dword [ebp - 8], 0
je 0x4d25f6
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.004125c4
test eax, eax
je 0x4d25d4
mov esi, 0x51f91f
mov edi, 0x51f238
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0x51f91f
call fcn.00408b88
pop ecx
xor eax, eax
mov dword [0x4fc4f4], eax
cmp byte [0x51f91f], 0
jne 0x4d25ca
xor eax, eax
jmp 0x4d2a96
mov eax, 1
jmp 0x4d2a96
push esi
push edi
mov esi, 0x4fc56a
mov edi, 0x51f3b8
mov eax, edi
movsd dword es:[edi], dword [esi]
pop edi
pop esi
mov dword [esi + 0x34], 0xa0924
mov dword [0x4fc4e0], 1
cmp dword [0x4fc4e0], 0
jne 0x4d2620
push esi
push edi
mov esi, 0x4fc56f
mov edi, 0x51f3b8
mov eax, edi
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
pop edi
pop esi
mov dword [esi + 0x48], 0x54
mov dword [esi + 0x34], 0x64
mov dword [esi + 0x44], sym.mirc32.exe_FileHook2
jmp 0x4d2886
cmp edi, 1
jne 0x4d268e
cmp dword [0x515ee8], 0
je 0x4d265e
cmp dword [ebp - 8], 0
je 0x4d265e
mov dword [esi + 0x34], 0xa0824
cmp dword [ebp - 0x10], 0
je 0x4d2654
or dword [esi + 0x34], 0x1000
mov dword [0x4fc4e0], 1
cmp dword [0x4fc4e0], 0
jne 0x4d2682
mov dword [esi + 0x48], 0x53
mov dword [esi + 0x34], 0x864
cmp dword [ebp - 0x10], 0
je 0x4d2682
or dword [esi + 0x34], 0x1000
mov dword [esi + 0x44], sym.mirc32.exe_FileHook2
jmp 0x4d2886
cmp edi, 2
jne 0x4d26f7
cmp dword [0x515ee8], 0
je 0x4d26c7
cmp dword [ebp - 8], 0
je 0x4d26c7
mov dword [esi + 0x48], 0x51
mov dword [esi + 0x34], 0xa0a64
cmp dword [ebp - 0x10], 0
je 0x4d26bd
or dword [esi + 0x34], 0x1000
mov dword [0x4fc4e0], 1
cmp dword [0x4fc4e0], 0
jne 0x4d26eb
mov dword [esi + 0x48], 0x55
mov dword [esi + 0x34], 0xa64
cmp dword [ebp - 0x10], 0
je 0x4d26eb
or dword [esi + 0x34], 0x1000
mov dword [esi + 0x44], sym.mirc32.exe_FileHook
jmp 0x4d2886
cmp edi, 3
jne 0x4d2749
mov dword [0x4fc4e4], 1
cmp dword [0x515ee8], 0
je 0x4d2726
cmp dword [ebp - 8], 0
je 0x4d2726
mov dword [esi + 0x34], 0xa0824
mov dword [0x4fc4e0], 1
cmp dword [0x4fc4e0], 0
jne 0x4d273d
mov dword [esi + 0x48], 0x53
mov dword [esi + 0x34], 0x864
mov dword [esi + 0x44], sym.mirc32.exe_FileHook2
jmp 0x4d2886
cmp edi, 4
jne 0x4d27ab
cmp dword [0x515ee8], 0
je 0x4d277b
cmp dword [ebp - 8], 0
je 0x4d277b
mov dword [esi + 0x34], 0xa0824
cmp dword [ebp - 0x10], 0
je 0x4d2771
or dword [esi + 0x34], 0x1000
mov dword [0x4fc4e0], 1
cmp dword [0x4fc4e0], 0
jne 0x4d279f
mov dword [esi + 0x48], 0x56
mov dword [esi + 0x34], 0x864
cmp dword [ebp - 0x10], 0
je 0x4d279f
or dword [esi + 0x34], 0x1000
mov dword [esi + 0x44], sym.mirc32.exe_FileHook2
jmp 0x4d2886
cmp edi, 5
jne 0x4d280a
cmp dword [0x515ee8], 0
je 0x4d27dd
cmp dword [ebp - 8], 0
je 0x4d27dd
mov dword [esi + 0x34], 0xa0824
cmp dword [ebp - 0x10], 0
je 0x4d27d3
or dword [esi + 0x34], 0x1000
mov dword [0x4fc4e0], 1
cmp dword [0x4fc4e0], 0
jne 0x4d2801
mov dword [esi + 0x48], 0x57
mov dword [esi + 0x34], 0x864
cmp dword [ebp - 0x10], 0
je 0x4d2801
or dword [esi + 0x34], 0x1000
mov dword [esi + 0x44], sym.mirc32.exe_FileHook2
jmp 0x4d2886
cmp edi, 6
jne 0x4d2870
cmp dword [0x515ee8], 0
je 0x4d2843
cmp dword [ebp - 8], 0
je 0x4d2843
mov dword [esi + 0x48], 0x52
mov dword [esi + 0x34], 0xa0864
cmp dword [ebp - 0x10], 0
je 0x4d2839
or dword [esi + 0x34], 0x1000
mov dword [0x4fc4e0], 1
cmp dword [0x4fc4e0], 0
jne 0x4d2867
mov dword [esi + 0x48], 0x58
mov dword [esi + 0x34], 0x864
cmp dword [ebp - 0x10], 0
je 0x4d2867
or dword [esi + 0x34], 0x1000
mov dword [esi + 0x44], sym.mirc32.exe_FileHook3
jmp 0x4d2886
push 0
call sub.USER32.dll_MessageBeep
xor edx, edx
mov dword [0x4fc4f4], edx
xor eax, eax
jmp 0x4d2a96
mov edx, dword [ebp + 0x10]
cmp byte [edx], 0
je 0x4d2894
mov ecx, dword [ebp + 0x10]
mov dword [esi + 0x30], ecx
mov dword [esi], 0x4c
mov eax, dword [0x4fa6c4]
test eax, eax
je 0x4d28a8
mov dword [esi + 8], eax
jmp 0x4d28b1
mov edx, dword [0x4fd9e8]
mov dword [esi + 8], edx
mov ecx, dword [ebp + 8]
mov dword [esi + 4], ecx
mov dword [esi + 0xc], 0x51f79f
mov eax, dword [ebp - 4]
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], 0x51f3b8
mov dword [esi + 0x20], 0x3e7
mov dword [esi + 0x2c], 0x51f238
push 0x8001
call sub.KERNEL32.dll_SetErrorMode
call fcn.00407024
mov ebx, eax
push esi
call sub.COMDLG32.dll_GetOpenFileNameA
test eax, eax
je 0x4d2a55
push 0
call sub.KERNEL32.dll_SetErrorMode
cmp edi, 2
jne 0x4d29a1
push 0
push 1
push 0x51dae8
mov eax, dword [0x4f4f24]
push eax
call fcn.00498e1c
mov esi, eax
mov dword [0x51f234], esi
test esi, esi
je 0x4d292e
mov dword [0x4f4f24], esi
push 0x4f7dec
push 0x14
push 0x4fc583
push 0x4fc579
mov eax, dword [0x4f4f24]
push eax
call fcn.00483590
push 0x180
push 0x51db4c
call fcn.00405248
add esp, 8
push 0x51db4c
call fcn.00401318
pop ecx
mov edx, eax
test edx, edx
jbe 0x4d2988
cmp byte [edx + 0x51db4b], 0x5c
je 0x4d2988
push 0x4fc586
push 0x51db4c
call fcn.0040123c
add esp, 8
push ebx
call fcn.00407034
pop ecx
xor ecx, ecx
mov dword [0x4fc4f4], ecx
mov eax, 1
jmp 0x4d2a96
push 0x5c
mov edx, dword [esi + 0x1c]
push edx
call fcn.004015cc
add esp, 8
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
jne 0x4d29ce
push 0
call sub.USER32.dll_MessageBeep
xor ecx, ecx
mov dword [0x4fc4f4], ecx
xor eax, eax
jmp 0x4d2a96
inc dword [ebp - 0x14]
test edi, edi
je 0x4d2a00
mov edx, dword [ebp - 0x14]
push esi
push edi
mov esi, 0x51fa9f
mov edi, edx
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
mov eax, dword [ebp - 0x14]
mov byte [eax], 0
mov edx, dword [esi + 0x1c]
push esi
push edi
mov esi, 0x51f91f
mov edi, edx
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
test edi, edi
jne 0x4d2a40
push 0x51f91f
call fcn.00408b88
pop ecx
push ebx
call fcn.00407034
pop ecx
xor eax, eax
mov dword [0x4fc4f4], eax
mov eax, 1
jmp 0x4d2a96
push ebx
call fcn.00407034
pop ecx
push 0
call sub.KERNEL32.dll_SetErrorMode
cmp dword [ebp - 8], 0
je 0x4d2a8d
cmp dword [0x4fc4e0], 0
je 0x4d2a8d
call sub.COMDLG32.dll_CommDlgExtendedError
test eax, eax
je 0x4d2a8d
xor edx, edx
mov dword [ebp - 8], edx
xor ecx, ecx
mov dword [0x4fc4e0], ecx
jmp 0x4d2544
xor eax, eax
mov dword [0x4fc4f4], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10