Function at 0x505500
Capabilities:
Get common file path
Log keystrokes via polling
Set current directory

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffbac
push ebx
push esi
push edi
mov ebx, dword [ebp + 0x14]
cmp dword [0x56bbcc], 0
je 0x505526
push 0
call fcn.0042c4bf
xor eax, eax
jmp 0x505c0e
mov dword [0x56bbcc], 1
cmp dword [ebp + 8], 0
je 0x50555a
push dword [ebp + 8]
call sub.USER32.dll_IsWindow
test eax, eax
je 0x50555a
push dword [ebp + 8]
call sub.USER32.dll_IsIconic
test eax, eax
jne 0x50555a
push dword [ebp + 8]
call sub.USER32.dll_IsWindowVisible
test eax, eax
jne 0x505563
mov edx, dword [0x56cee8]
mov dword [ebp + 8], edx
push 1
call sub.USER32.dll_GetKeyState
movsx ecx, ax
and ecx, 0x8000
cmp ecx, 0x8000
je 0x505591
push 2
call sub.USER32.dll_GetKeyState
movsx eax, ax
and eax, 0x8000
cmp eax, 0x8000
jne 0x5055b7
lea edx, [ebp - 0x454]
push edx
call sub.USER32.dll_GetKeyboardState
mov byte [ebp - 0x453], 0
mov byte [ebp - 0x452], 0
lea ecx, [ebp - 0x454]
push ecx
call sub.USER32.dll_SetKeyboardState
push 0x1e
push 0x586c5b
call fcn.0042e3f0
push 0x180
push 0x5863f4
call fcn.0042e3f0
push 0x3e7
push 0x586574
call fcn.0042e3f0
push 0x180
lea eax, [ebp - 0x188]
push eax
call fcn.0042e3f0
mov edx, dword [ebp + 0x18]
mov dword [0x56bbc0], edx
mov dword [ebp - 8], 1
xor ecx, ecx
mov dword [0x56bbc4], ecx
xor eax, eax
mov dword [0x56bbc8], eax
test ebx, ebx
je 0x505622
push ebx
push 0x1e
push 0x586c5b
call fcn.0042e322
cmp dword [ebp + 0xc], 0xa
jl 0x505631
sub dword [ebp + 0xc], 0xa
xor edx, edx
mov dword [ebp - 8], edx
push 0x180
lea ecx, [ebp - 0x188]
push ecx
call fcn.0042e3f0
push 0x180
lea eax, [ebp - 0x188]
push eax
push 0x13ee
push dword [0x56cee4]
call sub.USER32.dll_LoadStringA
lea edx, [ebp - 0x188]
push edx
call fcn.0054c2d0
pop ecx
mov dl, byte [ebp + eax - 0x189]
xor esi, esi
lea eax, [ebp - 0x188]
jmp 0x5056a3
cmp dl, cl
jne 0x505683
mov byte [eax], 0
cmp esi, 0x104
jb 0x5056a1
xor edx, edx
mov byte [ebp - 0x84], dl
mov byte [ebp - 0x85], dl
mov byte [ebp - 0x86], dl
jmp 0x5056a9
inc esi
inc eax
mov cl, byte [eax]
test cl, cl
jne 0x50567c
mov esi, 0x5863f4
mov edi, 0x58695b
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 0x586e7f
push 0x586d7f
push 0x586c7f
push 0x586c7c
push 0x5863f4
call fcn.0050ca44
add esp, 0x14
cmp byte [0x5863f4], 0
je 0x505798
mov esi, 0x5863f4
mov edi, 0x586c7c
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 0x586c7f
push 0x5863f4
call fcn.0054c1f4
add esp, 8
mov esi, 0x586574
mov edi, 0x586d7f
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 0x586e7f
push 0x586574
call fcn.0054c1f4
add esp, 8
push 0x56bbe8
push 0x586574
call fcn.0054c494
add esp, 8
test eax, eax
jne 0x50578f
mov dword [ebp - 4], 2
jmp 0x5057cd
mov dword [ebp - 4], 1
jmp 0x5057cd
mov esi, 0x5863f4
mov edi, 0x57fd38
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]
mov byte [0x586574], 0
mov dword [ebp - 4], 2
push 0x586e7f
call fcn.0054c2d0
pop ecx
cmp eax, 3
jb 0x50584b
mov edi, 2
lea esi, [ebp - 0x188]
jmp 0x505842
mov ebx, esi
jmp 0x5057ef
inc ebx
cmp byte [ebx], 0
jne 0x5057ee
mov eax, edi
and eax, 0x80000001
jns 0x505802
dec eax
or eax, 0xfffffffe
inc eax
test eax, eax
je 0x50583e
push 0x586e7f
push esi
call fcn.0042d3c0
test eax, eax
je 0x50583e
push 0x56bbed
push 0x586d7f
call fcn.0054c494
add esp, 8
test eax, eax
jne 0x505832
mov byte [0x586574], 0
sar edi, 1
jns 0x505839
adc edi, 0
mov dword [ebp - 4], edi
jmp 0x50584b
inc edi
mov esi, ebx
inc esi
test esi, esi
je 0x50584b
cmp byte [esi], 0
jne 0x5057ea
push 2
push 0x5863f4
call fcn.0042c9b5
test eax, eax
jne 0x505882
mov esi, 0x5863f4
mov edi, 0x57fd38
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 0x5863f4
call fcn.0054c2d0
pop ecx
mov esi, eax
cmp esi, 3
jbe 0x5058a4
cmp byte [esi + 0x5863f3], 0x5c
jne 0x5058a4
mov byte [esi + 0x5863f3], 0
push 0x4c
push 0
lea eax, [ebp - 0x1d4]
push eax
call fcn.0054c150
add esp, 0xc
cmp dword [ebp + 0xc], 0
jne 0x50593a
push dword [ebp + 0x10]
push dword [ebp + 8]
call fcn.00415090
test eax, eax
je 0x505914
mov esi, 0x58695b
mov edi, 0x5863f4
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 [0x56bbcc], eax
cmp byte [0x58695b], 0
jne 0x50590a
xor eax, eax
jmp 0x505c0e
mov eax, 1
jmp 0x505c0e
mov esi, 0x56bbf0
mov edi, 0x586574
mov eax, edi
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x1a0], 0xa0924
mov dword [ebp - 0x190], 0x5067bd
jmp 0x505a1d
cmp dword [ebp + 0xc], 1
je 0x50594c
cmp dword [ebp + 0xc], 4
je 0x50594c
cmp dword [ebp + 0xc], 5
jne 0x505975
mov dword [ebp - 0x1a0], 0xa0824
cmp dword [ebp - 8], 0
je 0x505966
or dword [ebp - 0x1a0], 0x1000
mov dword [ebp - 0x190], 0x5067bd
jmp 0x505a1d
cmp dword [ebp + 0xc], 2
jne 0x5059ab
mov dword [ebp - 0x18c], 0x14a
mov dword [ebp - 0x1a0], 0xa0a64
cmp dword [ebp - 8], 0
je 0x50599f
or dword [ebp - 0x1a0], 0x1000
mov dword [ebp - 0x190], 0x506309
jmp 0x505a1d
cmp dword [ebp + 0xc], 3
jne 0x5059d1
mov dword [0x56bbc4], 1
mov dword [ebp - 0x1a0], 0xa0824
mov dword [ebp - 0x190], 0x5067bd
jmp 0x505a1d
cmp dword [ebp + 0xc], 6
jne 0x505a07
mov dword [ebp - 0x18c], 0x154
mov dword [ebp - 0x1a0], 0xa0864
cmp dword [ebp - 8], 0
je 0x5059fb
or dword [ebp - 0x1a0], 0x1000
mov dword [ebp - 0x190], 0x506b3b
jmp 0x505a1d
push 0
call fcn.0042c4bf
xor edx, edx
mov dword [0x56bbcc], edx
xor eax, eax
jmp 0x505c0e
mov edx, dword [ebp + 0x10]
cmp byte [edx], 0
je 0x505a2e
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x1a4], ecx
mov dword [ebp - 0x1d4], 0x4c
mov eax, dword [0x55cffc]
test eax, eax
je 0x505a49
mov dword [ebp - 0x1cc], eax
jmp 0x505a55
mov edx, dword [0x56cee4]
mov dword [ebp - 0x1cc], edx
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x1d0], ecx
lea eax, [ebp - 0x188]
mov dword [ebp - 0x1c8], eax
mov edx, dword [ebp - 4]
mov dword [ebp - 0x1bc], edx
mov dword [ebp - 0x1b8], 0x586574
mov dword [ebp - 0x1b4], 0x3e7
mov dword [ebp - 0x1a8], 0x5863f4
lea ecx, [ebp - 0x354]
push ecx
push 0x180
call sub.KERNEL32.dll_GetCurrentDirectoryA
test eax, eax
jne 0x505ace
lea esi, [ebp - 0x354]
mov edi, 0x57fd38
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]
lea eax, [ebp - 0x1d4]
push eax
call sub.COMDLG32.dll_GetOpenFileNameA
test eax, eax
je 0x505bf8
cmp dword [ebp + 0xc], 2
jne 0x505b58
push 0
push 1
push 0x585c44
push dword [0x562134]
call fcn.004c6b77
test eax, eax
je 0x505b05
mov dword [0x562134], eax
push 0x57fc34
push 0x14
push 0x56bbff
push str.dccnicks
push dword [0x562134]
call fcn.004ace90
push 0x585ca8
push 0x180
call sub.KERNEL32.dll_GetCurrentDirectoryA
push 0x585ca8
call fcn.0042e417
lea edx, [ebp - 0x354]
push edx
call sub.KERNEL32.dll_SetCurrentDirectoryA
xor ecx, ecx
mov dword [0x56bbcc], ecx
mov eax, 1
jmp 0x505c0e
push 0x5c
push dword [ebp - 0x1b8]
call fcn.0054c5b8
add esp, 8
mov esi, eax
test esi, esi
jne 0x505b83
push 0
call fcn.0042c4bf
xor eax, eax
mov dword [0x56bbcc], eax
xor eax, eax
jmp 0x505c0e
inc esi
cmp dword [ebp + 0xc], 0
je 0x505bb0
push esi
mov edi, esi
mov esi, 0x586adb
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 esi
mov byte [esi], 0
mov eax, dword [ebp - 0x1b8]
mov esi, 0x58695b
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]
lea eax, [ebp - 0x354]
push eax
call sub.KERNEL32.dll_SetCurrentDirectoryA
xor edx, edx
mov dword [0x56bbcc], edx
mov eax, 1
jmp 0x505c0e
lea edx, [ebp - 0x354]
push edx
call sub.KERNEL32.dll_SetCurrentDirectoryA
xor ecx, ecx
mov dword [0x56bbcc], ecx
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14