Function at 0x4f7e78
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push esi
push edi
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 0xc]
mov edi, 0x588227
cmp dword [0x55998c], 0
jne 0x4f7ea4
push str.commdlg_FileNameOK
call sub.USER32.dll_RegisterWindowMessageA
mov dword [0x55998c], eax
cmp dword [0x559990], 0
jne 0x4f7ebc
push str.commdlg_LBSelChangedNotify
call sub.USER32.dll_RegisterWindowMessageA
mov dword [0x559990], eax
cmp dword [0x55998c], 0
je 0x4f7ece
cmp dword [0x559990], 0
jne 0x4f7edc
push 0
call fcn.0041c2be
xor eax, eax
jmp 0x4f862a
cmp dword [0x559994], 0
je 0x4f7ef3
push 0
call fcn.0041c2be
xor eax, eax
jmp 0x4f862a
mov dword [0x559994], 1
cmp dword [ebp + 8], 0
je 0x4f7f27
push dword [ebp + 8]
call sub.USER32.dll_IsWindow
test eax, eax
je 0x4f7f27
push dword [ebp + 8]
call sub.USER32.dll_IsIconic
test eax, eax
jne 0x4f7f27
push dword [ebp + 8]
call sub.USER32.dll_IsWindowVisible
test eax, eax
jne 0x4f7f30
mov edx, dword [0x55b3c8]
mov dword [ebp + 8], edx
push 1
call sub.USER32.dll_GetKeyState
test ax, ax
jl 0x4f7f48
push 2
call sub.USER32.dll_GetKeyState
test ax, ax
jge 0x4f7f6a
push 0x571674
call sub.USER32.dll_GetKeyboardState
mov byte [0x571675], 0
mov byte [0x571676], 0
push 0x571674
call sub.USER32.dll_SetKeyboardState
mov ecx, dword [ebp + 0x18]
mov dword [0x55997c], ecx
mov dword [ebp - 0xc], 1
xor eax, eax
mov dword [0x559980], eax
mov dword [ebp - 4], 1
xor edx, edx
mov dword [0x559984], edx
xor ecx, ecx
mov dword [0x559988], ecx
mov byte [0x588213], 0
test ebx, ebx
je 0x4f7fba
push 0xf
push ebx
push 0x588213
call fcn.005397c4
add esp, 0xc
mov byte [0x588222], 0
cmp esi, 0xa
jl 0x4f7fc7
sub esi, 0xa
xor eax, eax
mov dword [ebp - 0xc], eax
push 0x180
push 0x587d93
push 0x13ee
push dword [0x55b3c4]
call sub.USER32.dll_LoadStringA
push 0x587d93
call fcn.005395b8
pop ecx
mov dl, byte [eax + 0x587d92]
mov byte [ebp - 5], dl
xor edx, edx
mov eax, 0x587d93
jmp 0x4f8020
cmp cl, byte [ebp - 5]
jne 0x4f8006
mov byte [eax], 0
cmp edx, 0x104
jb 0x4f801e
mov byte [0x587e96], 0
mov byte [0x587e97], 0
jmp 0x4f8026
inc edx
inc eax
mov cl, byte [eax]
test cl, cl
jne 0x4f7ffe
push esi
push edi
mov esi, 0x58782c
mov edi, 0x587f13
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 [0x58782c], 0
je 0x4f811d
push 0x572713
push 0x572613
push 0x572513
push 0x572510
push 0x58782c
call fcn.0053e8e0
add esp, 0x14
push esi
push edi
mov esi, 0x58782c
mov edi, 0x572510
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 0x572513
push 0x58782c
call fcn.005394dc
add esp, 8
push esi
push edi
mov esi, 0x5879ac
mov edi, 0x572613
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 0x572713
push 0x5879ac
call fcn.005394dc
add esp, 8
push 0x5599d2
push 0x5879ac
call fcn.0053977c
add esp, 8
test eax, eax
jne 0x4f8116
mov ebx, 2
jmp 0x4f8154
mov ebx, 1
jmp 0x4f8154
push esi
push edi
mov esi, 0x58782c
mov edi, 0x553318
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 byte [0x5879ac], 0
mov ebx, 2
push 2
push 0x58782c
call fcn.0041c947
test eax, eax
jne 0x4f818f
push esi
push edi
mov esi, 0x58782c
mov edi, 0x553318
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 0x58782c
call fcn.005395b8
pop ecx
mov edx, eax
cmp edx, 3
jbe 0x4f81b1
cmp byte [edx + 0x58782b], 0x5c
jne 0x4f81b1
mov byte [edx + 0x58782b], 0
push 0x4c
push 0
push edi
call fcn.00539438
add esp, 0xc
test esi, esi
jne 0x4f8284
cmp dword [0x556164], 0
je 0x4f824e
cmp dword [ebp - 4], 0
je 0x4f824e
push dword [ebp + 0x10]
push dword [ebp + 8]
call fcn.0040c4b8
test eax, eax
je 0x4f822c
mov esi, 0x587f13
mov edi, 0x58782c
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]
xor eax, eax
mov dword [0x559994], eax
cmp byte [0x587f13], 0
jne 0x4f8222
xor eax, eax
jmp 0x4f862a
mov eax, 1
jmp 0x4f862a
push esi
push edi
mov esi, 0x5599d7
mov edi, 0x5879ac
mov eax, edi
movsd dword es:[edi], dword [esi]
pop edi
pop esi
mov dword [edi + 0x34], 0xa0924
mov dword [0x559980], 1
cmp dword [0x559980], 0
jne 0x4f8278
push esi
push edi
mov esi, str.jnukjnuk
mov edi, 0x5879ac
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 [edi + 0x48], 0x168
mov dword [edi + 0x34], 0x64
mov dword [edi + 0x44], sym.mirc32.exe_FileHook2
jmp 0x4f8424
cmp esi, 1
je 0x4f8293
cmp esi, 4
je 0x4f8293
cmp esi, 5
jne 0x4f82f0
cmp dword [0x556164], 0
je 0x4f82c0
cmp dword [ebp - 4], 0
je 0x4f82c0
mov dword [edi + 0x34], 0xa0824
cmp dword [ebp - 0xc], 0
je 0x4f82b6
or dword [edi + 0x34], 0x1000
mov dword [0x559980], 1
cmp dword [0x559980], 0
jne 0x4f82e4
mov dword [edi + 0x48], 0x15e
mov dword [edi + 0x34], 0x864
cmp dword [ebp - 0xc], 0
je 0x4f82e4
or dword [edi + 0x34], 0x1000
mov dword [edi + 0x44], sym.mirc32.exe_FileHook2
jmp 0x4f8424
cmp esi, 2
jne 0x4f8359
cmp dword [0x556164], 0
je 0x4f8329
cmp dword [ebp - 4], 0
je 0x4f8329
mov dword [edi + 0x48], 0x14a
mov dword [edi + 0x34], 0xa0a64
cmp dword [ebp - 0xc], 0
je 0x4f831f
or dword [edi + 0x34], 0x1000
mov dword [0x559980], 1
cmp dword [0x559980], 0
jne 0x4f834d
mov dword [edi + 0x48], 0x172
mov dword [edi + 0x34], 0xa64
cmp dword [ebp - 0xc], 0
je 0x4f834d
or dword [edi + 0x34], 0x1000
mov dword [edi + 0x44], sym.mirc32.exe_FileHook
jmp 0x4f8424
cmp esi, 3
jne 0x4f83a8
mov dword [0x559984], 1
cmp dword [0x556164], 0
je 0x4f8388
cmp dword [ebp - 4], 0
je 0x4f8388
mov dword [edi + 0x34], 0xa0824
mov dword [0x559980], 1
cmp dword [0x559980], 0
jne 0x4f839f
mov dword [edi + 0x48], 0x15e
mov dword [edi + 0x34], 0x864
mov dword [edi + 0x44], sym.mirc32.exe_FileHook2
jmp 0x4f8424
cmp esi, 6
jne 0x4f840e
cmp dword [0x556164], 0
je 0x4f83e1
cmp dword [ebp - 4], 0
je 0x4f83e1
mov dword [edi + 0x48], 0x154
mov dword [edi + 0x34], 0xa0864
cmp dword [ebp - 0xc], 0
je 0x4f83d7
or dword [edi + 0x34], 0x1000
mov dword [0x559980], 1
cmp dword [0x559980], 0
jne 0x4f8405
mov dword [edi + 0x48], 0x190
mov dword [edi + 0x34], 0x864
cmp dword [ebp - 0xc], 0
je 0x4f8405
or dword [edi + 0x34], 0x1000
mov dword [edi + 0x44], sym.mirc32.exe_FileHook3
jmp 0x4f8424
push 0
call fcn.0041c2be
xor edx, edx
mov dword [0x559994], edx
xor eax, eax
jmp 0x4f862a
mov edx, dword [ebp + 0x10]
cmp byte [edx], 0
je 0x4f8432
mov ecx, dword [ebp + 0x10]
mov dword [edi + 0x30], ecx
mov dword [edi], 0x4c
mov eax, dword [0x556198]
test eax, eax
je 0x4f8446
mov dword [edi + 8], eax
jmp 0x4f844f
mov edx, dword [0x55b3c4]
mov dword [edi + 8], edx
mov ecx, dword [ebp + 8]
mov dword [edi + 4], ecx
mov dword [edi + 0xc], 0x587d93
mov dword [edi + 0x18], ebx
mov dword [edi + 0x1c], 0x5879ac
mov dword [edi + 0x20], 0x3e7
mov dword [edi + 0x2c], 0x58782c
push 0x8001
call sub.KERNEL32.dll_SetErrorMode
call fcn.00540040
mov dword [ebp - 0x10], eax
push edi
call sub.COMDLG32.dll_GetOpenFileNameA
test eax, eax
je 0x4f85e7
push 0
call sub.KERNEL32.dll_SetErrorMode
cmp esi, 2
jne 0x4f853e
push 0
push 1
push 0x5850dc
push dword [0x54fbdc]
call fcn.004b0e61
mov ebx, eax
mov dword [0x587828], ebx
test ebx, ebx
je 0x4f84ca
mov dword [0x54fbdc], ebx
push str.mirc.ini
push 0x14
push 0x5599f0
push str.dccnicks
push dword [0x54fbdc]
call fcn.00498a16
push 0x180
push 0x585140
call fcn.0053d624
add esp, 8
push 0x585140
call fcn.005395b8
pop ecx
mov edx, eax
test edx, edx
jbe 0x4f8524
cmp byte [edx + 0x58513f], 0x5c
je 0x4f8524
push 0x5599f3
push 0x585140
call fcn.005394dc
add esp, 8
push dword [ebp - 0x10]
call fcn.00540050
pop ecx
xor eax, eax
mov dword [0x559994], eax
mov eax, 1
jmp 0x4f862a
push 0x5c
push dword [edi + 0x1c]
call fcn.005398a0
add esp, 8
mov ebx, eax
test ebx, ebx
jne 0x4f8566
push 0
call fcn.0041c2be
xor eax, eax
mov dword [0x559994], eax
xor eax, eax
jmp 0x4f862a
inc ebx
test esi, esi
je 0x4f8593
push esi
push edi
mov esi, 0x588093
mov edi, ebx
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 byte [ebx], 0
mov eax, dword [edi + 0x1c]
push esi
push edi
mov esi, 0x587f13
mov edi, eax
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 esi, esi
jne 0x4f85d0
push 0x587f13
call fcn.00541e38
pop ecx
push dword [ebp - 0x10]
call fcn.00540050
pop ecx
xor eax, eax
mov dword [0x559994], eax
mov eax, 1
jmp 0x4f862a
push dword [ebp - 0x10]
call fcn.00540050
pop ecx
push 0
call sub.KERNEL32.dll_SetErrorMode
cmp dword [ebp - 4], 0
je 0x4f8621
cmp dword [0x559980], 0
je 0x4f8621
call sub.COMDLG32.dll_CommDlgExtendedError
test eax, eax
je 0x4f8621
xor edx, edx
mov dword [ebp - 4], edx
xor ecx, ecx
mov dword [0x559980], ecx
jmp 0x4f81b1
xor eax, eax
mov dword [0x559994], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14