Function at 0x490470
Capabilities:
Check if file exists
Get file attributes
Log keystrokes via polling

Disassembly:
mov eax, 0x3000
call fcn.00531740
mov edx, dword [0x553d9c]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x3018]
mov ebp, dword [sym.imp.KERNEL32.dll_lstrlenW]
push edi
mov ecx, 0x3ff
xor eax, eax
lea edi, [esp + 0x1014]
mov dword [esp + 0x1010], edx
mov dword [esp + 0x2010], edx
rep stosd dword es:[edi], eax
mov ecx, 0x3ff
lea edi, [esp + 0x2014]
test esi, esi
rep stosd dword es:[edi], eax
jne 0x4904c5
xor ebx, ebx
jmp 0x4904ca
push esi
call ebp
mov ebx, eax
mov edi, dword [0x55cef4]
mov ecx, dword [edi - 0xc]
lea eax, [edi - 0xc]
cmp ecx, 1
jg 0x4904e0
cmp ebx, dword [edi - 4]
jle 0x49054e
mov ecx, dword [0x546564]
add edi, 0xfffffff4
cmp edi, ecx
je 0x490515
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x490509
mov eax, dword [0x55cef4]
add eax, 0xfffffff4
push eax
call fcn.00531732
add esp, 4
mov ecx, dword [0x546560]
mov dword [0x55cef4], ecx
test ebx, ebx
jne 0x490521
mov edi, dword [0x546560]
jmp 0x490548
lea edx, [ebx + ebx + 0xe]
push edx
call fcn.00531ba5
add esp, 4
test eax, eax
je 0x490576
mov dword [eax], 1
mov word [eax + ebx*2 + 0xc], 0
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
lea edi, [eax + 0xc]
mov dword [0x55cef4], edi
lea eax, [ebx + ebx]
mov ecx, eax
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 ecx, dword [0x55cef4]
mov dword [ecx - 8], ebx
mov edx, dword [0x55cef4]
mov word [eax + edx], 0
mov eax, dword [esp + 0x3018]
push eax
call fcn.004907a0
mov esi, dword [sym.imp.KERNEL32.dll_lstrcpyW]
add esp, 4
mov ebx, eax
lea ecx, [esp + 0x2010]
push ebx
push ecx
call esi
lea edx, [esp + 0x1010]
push ebx
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatW]
lea eax, [esp + 0x1010]
push eax
call ebp
test eax, eax
jg 0x4905c3
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x3000
ret
mov ecx, dword [0x553d9c]
xor eax, eax
mov dword [esp + 0x10], ecx
mov ecx, 0x3ff
lea edi, [esp + 0x14]
lea edx, [esp + 0x1010]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x10]
push edx
push eax
call esi
lea ecx, [esp + 0x10]
push ecx
call fcn.00490800
lea edx, [esp + 0x14]
push edx
call fcn.00490930
add esp, 8
test eax, eax
jle 0x490645
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, dword [esp + 0x3014]
shr eax, 0xf
and eax, 1
test ecx, ecx
je 0x49061f
mov eax, ecx
neg eax
sbb eax, eax
push 0
and eax, 0x547140
push eax
lea eax, [esp + 0x18]
push 0
push eax
call fcn.004909f0
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3000
ret
push ebx
call ebp
xor edi, edi
cmp word [ebx], 0x22
jne 0x49066a
mov ecx, 1
cmp eax, ecx
jle 0x49066a
lea edx, [ebx + 2]
cmp word [edx], 0x22
je 0x490682
inc ecx
add edx, 2
cmp ecx, eax
jl 0x49065c
xor ecx, ecx
test eax, eax
jle 0x490699
mov edx, ebx
cmp word [edx], 0x20
je 0x49068f
inc ecx
add edx, 2
cmp ecx, eax
jl 0x490672
jmp 0x490699
mov word [ebx + ecx*2 + 2], 0
lea edi, [ebx + ecx*2 + 4]
jmp 0x490699
lea edi, [ebx + ecx*2 + 2]
mov word [ebx + ecx*2], 0
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov si, ax
mov eax, dword [esp + 0x3014]
shr esi, 0xf
and esi, 1
test eax, eax
je 0x4906b7
mov esi, eax
push edi
call fcn.00490800
add esp, 4
lea ecx, [esp + 0x1010]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4906fd
neg esi
sbb esi, esi
push 0
and esi, 0x547140
lea edx, [esp + 0x1014]
push esi
push 0
push edx
call fcn.004909f0
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3000
ret
mov ax, word [ebx]
cmp ax, 0x73
je 0x49070c
cmp ax, 0x53
jne 0x49077d
mov ax, word [ebx + 2]
cmp ax, 0x68
je 0x49071c
cmp ax, 0x48
jne 0x49077d
mov ax, word [ebx + 4]
cmp ax, 0x65
je 0x49072c
cmp ax, 0x45
jne 0x49077d
mov ax, word [ebx + 6]
cmp ax, 0x6c
je 0x49073c
cmp ax, 0x4c
jne 0x49077d
mov ax, word [ebx + 8]
cmp ax, 0x6c
je 0x49074c
cmp ax, 0x4c
jne 0x49077d
cmp word [ebx + 0xa], 0x3a
jne 0x49077d
neg esi
sbb esi, esi
push 0
and esi, 0x547140
lea eax, [esp + 0x2014]
push esi
push 0
push eax
call fcn.004909f0
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3000
ret
neg esi
sbb esi, esi
push 0
and esi, 0x547140
push esi
push edi
push ebx
call fcn.004909f0
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3000
ret