Function at 0x404ff0
Capabilities:
Check if file exists
Get common file path

Disassembly:
sub esp, 0xc44
mov eax, dword [0x5685f0]
xor eax, esp
mov dword [esp + 0xc3c], eax
push ebx
push ebp
push esi
push edi
xor esi, esi
push 0x206
lea eax, [esp + 0xa46]
mov edi, ecx
push esi
push eax
mov dword [esp + 0x1c], edi
xor ebx, ebx
xor ebp, ebp
mov word [esp + 0xa4c], si
call fcn.0042faa0
add esp, 0xc
push 0x206
lea ecx, [esp + 0x636]
push esi
push ecx
mov word [esp + 0x63c], si
call fcn.0042faa0
add esp, 0xc
push 0x206
lea edx, [esp + 0x42e]
push esi
push edx
mov word [esp + 0x434], si
call fcn.0042faa0
add esp, 0xc
push 0x206
lea eax, [esp + 0x83e]
push esi
push eax
mov word [esp + 0x844], si
call fcn.0042faa0
add esp, 0xc
push 0x206
lea ecx, [esp + 0x226]
push esi
push ecx
mov word [esp + 0x22c], si
call fcn.0042faa0
add esp, 0xc
push 0x206
lea edx, [esp + 0x1e]
push esi
push edx
mov word [esp + 0x24], si
call fcn.0042faa0
add esp, 0xc
push esi
push 0x1a
lea eax, [esp + 0xa48]
push eax
push esi
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
xor eax, eax
jmp 0x4050e0
movzx ecx, word [esp + eax + 0xa40]
mov word [esp + eax + 0x220], cx
add eax, 2
cmp cx, si
jne 0x4050e0
lea ecx, [esp + 0x220]
push 0x5c
push ecx
call fcn.0042ab26
add esp, 8
cmp eax, esi
jne 0x405114
push edi
jmp 0x4052e8
mov word [eax], si
xor eax, eax
lea esp, [esp]
movzx ecx, word [esp + eax + 0x220]
mov word [esp + eax + 0x630], cx
add eax, 2
cmp cx, si
jne 0x405120
lea eax, [esp + 0x630]
add eax, 0xfffffffe
mov cx, word [eax + 2]
add eax, 2
cmp cx, si
jne 0x405142
mov edx, dword [str.Local]
mov ecx, dword [0x55c3d0]
mov edi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov dword [eax], edx
mov edx, dword [0x55c3d4]
mov dword [eax + 4], ecx
mov cx, word [0x55c3d8]
mov dword [eax + 8], edx
lea edx, [esp + 0x630]
push edx
mov word [eax + 0xc], cx
call edi
test eax, eax
je 0x40518c
mov ebx, 1
xor eax, eax
mov edi, edi
movzx ecx, word [esp + eax + 0x220]
mov word [esp + eax + 0x428], cx
add eax, 2
cmp cx, si
jne 0x405190
lea eax, [esp + 0x428]
add eax, 0xfffffffe
mov cx, word [eax + 2]
add eax, 2
cmp cx, si
jne 0x4051b2
mov ecx, dword [str.LocalLow]
mov edx, dword [0x55c3e0]
mov dword [eax], ecx
mov ecx, dword [0x55c3e4]
mov dword [eax + 4], edx
mov edx, dword [0x55c3e8]
mov dword [eax + 8], ecx
mov ecx, dword [0x55c3ec]
mov dword [eax + 0xc], edx
lea edx, [esp + 0x428]
push edx
mov dword [eax + 0x10], ecx
call edi
test eax, eax
je 0x4051fd
mov ebp, 1
xor eax, eax
nop
movzx ecx, word [esp + eax + 0x220]
mov word [esp + eax + 0x838], cx
add eax, 2
cmp cx, si
jne 0x405200
lea eax, [esp + 0x838]
add eax, 0xfffffffe
mov cx, word [eax + 2]
add eax, 2
cmp cx, si
jne 0x405222
mov ecx, dword [str.Roaming]
mov edx, dword [0x55c3f4]
mov dword [eax], ecx
mov ecx, dword [0x55c3f8]
mov dword [eax + 4], edx
mov edx, dword [0x55c3fc]
mov dword [eax + 8], ecx
mov cx, word [0x55c400]
mov dword [eax + 0xc], edx
lea edx, [esp + 0x838]
push edx
mov word [eax + 0x10], cx
call edi
test eax, eax
mov eax, 1
jne 0x405271
mov eax, esi
cmp ebx, esi
je 0x4052e3
cmp ebp, esi
je 0x4052e3
cmp eax, esi
je 0x4052e3
call fcn.00406e20
test eax, eax
je 0x4052e3
push str.SmartCloudIME.users
lea eax, [esp + 0x42c]
push eax
lea ecx, [esp + 0x20]
push 0x55c420
push ecx
call fcn.0042a2e5
add esp, 0x10
lea edx, [esp + 0x18]
push edx
call edi
test eax, eax
jne 0x4052b9
lea eax, [esp + 0x18]
call fcn.004074e0
lea eax, [esp + 0x18]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, si
jne 0x4052c0
mov esi, dword [esp + 0x10]
sub eax, edx
sar eax, 1
push eax
lea eax, [esp + 0x1c]
push eax
add esi, 0x24
call fcn.00401250
jmp 0x4052ed
mov ecx, dword [esp + 0x10]
push ecx
call fcn.004070f0
mov ecx, dword [esp + 0xc4c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00429fbb
add esp, 0xc44
ret