Function at 0x44fe10
Capabilities:
Check if file exists
Create directory
Log keystrokes via polling

Disassembly:
push 0xffffffffffffffff
push 0x494aa8
mov eax, dword fs:[0]
push eax
sub esp, 0x18
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4bea30]
xor eax, esp
push eax
lea eax, [esp + 0x2c]
mov dword fs:[0], eax
mov ebx, ecx
push str.DownloadIdeaWithMotecoFramework_12
push 0x4ab404
call fcn.0042af10
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
add esp, 8
push 0x10
call esi
test ax, ax
jge 0x44fe6b
push 0x11
call esi
test ax, ax
mov dword [esp + 0x20], 1
jl 0x44fe73
mov dword [esp + 0x20], 0
xor ebp, ebp
mov dword [esp + 0x28], ebp
call fcn.00434a50
mov edi, eax
cmp edi, ebp
je 0x450255
call fcn.0045525d
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x44fea2
push 0x80004005
call fcn.004022b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov dword [esp + 0x34], ebp
call fcn.0045525d
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x44fed0
push 0x80004005
call fcn.004022b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
mov byte [esp + 0x34], 1
call fcn.0045525d
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x44feff
push 0x80004005
call fcn.004022b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
push edi
mov byte [esp + 0x38], 2
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
mov esi, eax
cmp esi, ebp
je 0x44ff43
push esi
call dword [sym.imp.SHLWAPI.dll_PathRemoveExtensionW]
mov eax, esi
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x44ff30
sub eax, edx
sar eax, 1
push eax
push esi
jmp 0x44ff4a
push 0x10
push str.EpsonInstallNavi
lea ecx, [esp + 0x20]
call fcn.00404b00
push edi
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
mov eax, edi
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x44ff60
sub eax, edx
sar eax, 1
push eax
push edi
lea ecx, [esp + 0x24]
call fcn.00404b00
push edi
call fcn.0045505b
mov esi, dword [esp + 0x40]
mov eax, dword [esi + 8]
mov ecx, dword [eax + 0x1c]
add esp, 4
cmp dword [eax + 0xc], ecx
jle 0x44ffa0
test ecx, ecx
jl 0x44ff9b
cmp ecx, dword [eax + 0xc]
jl 0x44ffa0
call fcn.00455154
test ebx, ebx
jne 0x44ffa8
xor eax, eax
jmp 0x44ffbf
mov eax, ebx
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x44ffb0
sub eax, edx
sar eax, 1
push eax
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404b00
mov edx, dword [esi + 8]
lea ecx, [esp + 0x14]
push ecx
push edx
call fcn.00435540
lea edi, [esp + 0x14]
call fcn.00433870
mov esi, dword [esp + 0x14]
lea eax, [esp + 0x1c]
push eax
mov ebx, esi
call fcn.004339c0
mov ecx, dword [esp + 0x20]
add esp, 4
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ebx, eax
test ebx, ebx
mov dword [esp + 0x24], ebx
je 0x4501e7
push str.Download
push ebx
mov dword [0x4c3744], 1
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ebp, eax
test ebp, ebp
je 0x4501e1
push str.TEMP
mov edx, edi
push str.___s__
push edx
call fcn.004045e0
mov esi, dword [esp + 0x48]
mov ecx, dword [esi + 8]
add esp, 0xc
mov eax, edi
push eax
push ecx
call fcn.00435540
call fcn.00433870
mov ebx, dword [esp + 0x18]
mov edx, edi
push edx
call fcn.004339c0
add esp, 4
mov eax, edi
push eax
lea ecx, [esp + 0x1c]
call fcn.00405560
mov edi, dword [esp + 0x18]
call fcn.0044f9d0
mov ecx, dword [esp + 0x14]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov edx, dword [esp + 0x40]
push edx
lea ecx, [esp + 0x18]
call fcn.00404a80
mov ecx, dword [esi + 8]
lea eax, [esp + 0x14]
push eax
push ecx
call fcn.00435540
cmp dword [esp + 0x20], 0
mov esi, dword [esp + 0x14]
je 0x450105
lea ecx, [esp + 0x3c]
call fcn.00402380
push esi
mov byte [esp + 0x38], 3
mov edx, dword [esp + 0x20]
push edi
push edx
lea eax, [esp + 0x48]
push str.Library_Downloader:__s__nDownload_Folder:__s__nEdition:__s_
push eax
call fcn.004045e0
mov ebx, dword [esp + 0x50]
add esp, 0x14
push 0
push 0
push ebx
call fcn.0045d96d
lea eax, [ebx - 0x10]
mov byte [esp + 0x34], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x450105
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push esi
push edi
call ebp
mov ebx, eax
push ebx
push str.MotecoReturned
call fcn.0042b540
add esp, 8
cmp dword [esp + 0x20], 0
je 0x450177
lea ecx, [esp + 0x3c]
call fcn.00402380
push ebx
push esi
mov byte [esp + 0x3c], 4
mov ecx, dword [esp + 0x24]
push edi
push ecx
lea edx, [esp + 0x4c]
push str.Library_Downloader:__s__nDownload_Folder:__s__nEdition:__s__nReturned:_ld
push edx
call fcn.004045e0
mov ebp, dword [esp + 0x54]
add esp, 0x18
push 0
push 0
push ebp
call fcn.0045d96d
lea eax, [ebp - 0x10]
mov byte [esp + 0x34], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x450177
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test ebx, ebx
jne 0x4501c6
mov ebp, dword [esp + 0x44]
mov eax, dword [ebp]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
lea ecx, [esp + 0x18]
push ecx
mov ebx, eax
call fcn.004339c0
mov edi, dword [esp + 0x1c]
add esp, 4
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
mov dword [esp + 0x28], eax
je 0x4501c6
lea edx, [esp + 0x18]
push edx
mov ecx, 0x4c3810
call fcn.00405560
lea eax, [esp + 0x18]
push eax
mov ecx, ebp
call fcn.00405560
mov ebx, dword [esp + 0x24]
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov ebp, dword [esp + 0x28]
mov dword [0x4c3744], 0
jmp 0x4501eb
mov edi, dword [esp + 0x18]
jmp 0x4501ca
mov edi, dword [esp + 0x18]
add esi, 0xfffffff0
mov byte [esp + 0x34], 1
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45020c
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
mov byte [esp + 0x34], 0
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x450231
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add edi, 0xfffffff0
mov dword [esp + 0x34], 0xffffffff
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x450255
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [esp + 0x44]
mov esi, dword [eax]
push str.Path
call fcn.0042b470
add esp, 4
push ebp
push str.DownloadIdeaWithMotecoFramework_12
push 0x4ab404
call fcn.0042b190
add esp, 0xc
mov eax, ebp
mov ecx, dword [esp + 0x2c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0xc