Function at 0x140003f40
Capabilities:
Check if file exists
Enumerate files on windows
Get common file path

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x4a8
movabs r14, 0x8000000000000000
movdqu xmm0, xmmword [0x14014b80c]
movdqa xmmword [rsp + 0x1a0], xmm0
mov qword [rsp + 0xd0], 0
lea rcx, [rsp + 0x1a0]
lea r15, [rsp + 0xd0]
xor edx, edx
xor r8d, r8d
mov r9, r15
call sub.shell32.dll_SHGetKnownFolderPath
mov rcx, qword [rsp + 0xd0]
test eax, eax
je 0x140003faa
call sub.ole32.dll_CoTaskMemFree
jmp 0x140003fdc
call sub.kernel32.dll_lstrlenW
movsxd r8, eax
mov rdx, qword [rsp + 0xd0]
lea rcx, [rsp + 0x70]
call fcn.1400f01b0
mov rcx, qword [rsp + 0xd0]
call sub.ole32.dll_CoTaskMemFree
cmp qword [rsp + 0x70], r14
jne 0x140004502
lea rax, str.Home_directory_could_not_be_determined._nx
mov qword [rsp + 0x1a0], rax
mov qword [rsp + 0x1a8], 1
mov qword [rsp + 0x1b0], 8
pxor xmm0, xmm0
movdqu xmmword [rsp + 0x1b8], xmm0
lea rcx, [rsp + 0x1a0]
call fcn.140119ae0
call fcn.140063020
test rax, rax
je 0x140004cab
mov rsi, qword [rax]
inc qword [rsi]
je 0x140004d1f
lea rdi, [rsi + 0x10]
lea rbx, [rsi + 0x120]
mov rax, qword [rsi + 0x110]
jmp 0x140004072
mov rcx, rbx
mov rdx, rdi
call fcn.140062ec0
xor ecx, ecx
lea rax, [rcx + 1]
test dword [rsi + rcx*4 + 0x10], 0x40000000
mov qword [rsi + 0x110], rax
je 0x1400040ab
mov rcx, rax
cmp rax, 0x40
jb 0x14000405d
mov rax, qword [rsi + 0x158]
test rax, rax
jle 0x140004050
cmp qword [rsi + 0x160], 0
js 0x140004050
add rax, 0xffffffffffffff00
mov qword [rsi + 0x158], rax
mov rcx, rbx
mov rdx, rdi
call fcn.1400633d0
jmp 0x14000405b
dec qword [rsi]
jne 0x1400040b8
mov rcx, rsi
call fcn.140063390
lea rdx, str.https:__quan.suning.com_getSysTime.dosysTime1Error_in_time_check:
lea rsi, [rsp + 0xd0]
mov r8d, 0x25
mov rcx, rsi
call fcn.1400590c0
mov rbx, qword [rsp + 0xd0]
mov rdi, qword [rsp + 0xd8]
cmp rbx, 3
je 0x1400043c2
lea rdx, [rsp + 0xe0]
lea rcx, [rsp + 0x400]
mov r8d, 0xa0
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov qword [rsp + 0x3f0], rbx
mov qword [rsp + 0x3f8], rdi
lea rcx, [rsp + 0x70]
lea rdx, [rsp + 0x3f0]
call fcn.14005c840
mov rbx, qword [rsp + 0x70]
mov rdi, qword [rsp + 0x78]
test rbx, rbx
je 0x1400043c2
movdqu xmm0, xmmword [rsp + 0x80]
movdqu xmm1, xmmword [rsp + 0x90]
movdqu xmmword [rsp + 0xc0], xmm1
movdqu xmmword [rsp + 0xb0], xmm0
mov qword [rsp + 0xa0], rbx
mov qword [rsp + 0xa8], rdi
cmp qword [rsp + 0xb8], 0
je 0x140004238
movups xmm0, xmmword [rsp + 0xc0]
movaps xmmword [rsp + 0x190], xmm0
lea rcx, [rsp + 0x190]
call fcn.140055ea0
mov rcx, rax
shr rcx, 0x39
movd xmm0, ecx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
lea rcx, [rbx - 0x30]
xor edx, edx
pcmpeqd xmm1, xmm1
movabs r8, 0x31656d6954737973
and rax, rdi
movdqu xmm2, xmmword [rbx + rax]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb r9d, xmm3
test r9d, r9d
je 0x14000421d
tzcnt r10d, r9d
add r10, rax
and r10, rdi
neg r10
lea r10, [r10 + r10*2]
shl r10, 4
cmp qword [rcx + r10 + 0x10], 8
jne 0x140004210
add r10, rcx
mov r10, qword [r10 + 8]
cmp qword [r10], r8
je 0x140004238
lea r10d, [r9 - 1]
and r10w, r9w
mov r9d, r10d
jne 0x1400041e6
pcmpeqb xmm2, xmm1
pmovmskb r9d, xmm2
test r9d, r9d
jne 0x140004238
add rax, rdx
add rax, 0x10
add rdx, 0x10
jmp 0x1400041cc
mov ecx, 3
call fcn.140114990
lea rdx, str.https:__quan.suning.com_getSysTime.dosysTime1Error_in_time_check:
lea rcx, [rsp + 0xd0]
mov r8d, 0x25
call fcn.1400590c0
mov rbx, qword [rsp + 0xd0]
mov rdi, qword [rsp + 0xd8]
cmp rbx, 3
je 0x1400043b5
lea rdx, [rsp + 0xe0]
lea rcx, [rsp + 0x1b0]
mov r8d, 0xa0
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov qword [rsp + 0x1a0], rbx
mov qword [rsp + 0x1a8], rdi
lea rcx, [rsp + 0x70]
lea rdx, [rsp + 0x1a0]
call fcn.14005c840
mov rbx, qword [rsp + 0x70]
mov rdi, qword [rsp + 0x78]
test rbx, rbx
je 0x1400043b5
movdqu xmm0, xmmword [rsp + 0x80]
movdqu xmm1, xmmword [rsp + 0x90]
movdqu xmmword [rsp + 0x60], xmm1
movdqu xmmword [rsp + 0x50], xmm0
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x48], rdi
cmp qword [rsp + 0x58], 0
je 0x14000458b
movups xmm0, xmmword [rsp + 0x60]
movaps xmmword [rsp + 0x180], xmm0
lea rcx, [rsp + 0x180]
call fcn.140055ea0
mov rcx, rax
shr rcx, 0x39
movd xmm0, ecx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
lea rcx, [rbx - 0x30]
xor edx, edx
pcmpeqd xmm1, xmm1
movabs r8, 0x31656d6954737973
and rax, rdi
movdqu xmm2, xmmword [rbx + rax]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb r9d, xmm3
test r9d, r9d
je 0x140004396
tzcnt r10d, r9d
add r10, rax
and r10, rdi
neg r10
lea r10, [r10 + r10*2]
shl r10, 4
cmp qword [rcx + r10 + 0x10], 8
jne 0x140004389
add r10, rcx
mov r10, qword [r10 + 8]
cmp qword [r10], r8
je 0x14000458b
lea r10d, [r9 - 1]
and r10w, r9w
mov r9d, r10d
jne 0x14000435b
pcmpeqb xmm2, xmm1
pmovmskb r9d, xmm2
test r9d, r9d
jne 0x14000458b
add rax, rdx
add rax, 0x10
add rdx, 0x10
jmp 0x140004341
lea rcx, [rsp + 0xa0]
call fcn.140056200
mov qword [rsp + 0x3f0], rdi
lea rax, [rsp + 0x3f0]
mov qword [rsp + 0xd0], rax
lea rax, [0x14008dfa0]
mov qword [rsp + 0xd8], rax
lea rax, [0x1401498f8]
mov qword [rsp + 0x1a0], rax
mov qword [rsp + 0x1a8], 2
mov qword [rsp + 0x1c0], 0
mov qword [rsp + 0x1b0], rsi
mov qword [rsp + 0x1b8], 1
lea rcx, [rsp + 0x1a0]
call fcn.140119ae0
mov rsi, qword [rsp + 0x3f0]
mov rdi, qword [rsi + 0x58]
test rdi, rdi
je 0x140004477
mov rbx, qword [rsi + 0x60]
mov rax, qword [rbx]
test rax, rax
je 0x140004453
mov rcx, rdi
call rax
cmp qword [rbx + 8], 0
je 0x140004477
cmp qword [rbx + 0x10], 0x11
jb 0x140004465
mov rdi, qword [rdi - 8]
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, rdi
call sub.kernel32.dll_HeapFree
mov rax, qword [rsi]
cmp rax, r14
je 0x14000449a
test rax, rax
je 0x14000449a
mov rdi, qword [rsi + 8]
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, rdi
call sub.kernel32.dll_HeapFree
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, rsi
call sub.kernel32.dll_HeapFree
lea rax, str.Conditions_not_met._n
mov qword [rsp + 0x1a0], rax
mov qword [rsp + 0x1a8], 1
mov qword [rsp + 0x1b0], 8
pxor xmm0, xmm0
movdqu xmmword [rsp + 0x1b8], xmm0
lea rcx, [rsp + 0x1a0]
call fcn.1401197f0
nop
add rsp, 0x4a8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movabs r13, 0x300000002
movdqu xmm0, xmmword [rsp + 0x70]
movdqu xmm1, xmmword [rsp + 0x80]
movdqa xmmword [rsp + 0x400], xmm1
movdqa xmmword [rsp + 0x3f0], xmm0
lea rdx, str.DesktopUnable_to_read_the_users_desktop_file_list._n
lea rcx, [rsp + 0x3f0]
mov r8d, 7
call fcn.1401171f0
mov rdx, qword [rsp + 0x3f8]
mov r8, qword [rsp + 0x400]
lea rcx, [rsp + 0x1a0]
call fcn.14000b510
test byte [rsp + 0x1a0], 1
je 0x1400045a7
mov qword [rsp + 0xa0], 1
mov qword [rsp + 0xa8], 0
jmp 0x140004711
lea rcx, [rsp + 0x40]
call fcn.140056200
lea rcx, [rsp + 0xa0]
call fcn.140056200
jmp 0x1400044ac
mov rsi, qword [rsp + 0x1a8]
mov rbp, qword [rsp + 0x1b0]
mov qword [rsp + 0xa0], rsi
mov qword [rsp + 0xa8], rbp
test rbp, rbp
je 0x140004711
js 0x140004cd7
movzx eax, byte [0x1401aa178]
xor ecx, ecx
mov rdx, rbp
call fcn.14011ab20
test rax, rax
je 0x140004ce3
mov rbx, rax
mov rcx, rax
mov rdx, rsi
mov r8, rbp
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
movzx eax, byte [0x1401aa178]
xor ecx, ecx
mov rdx, rbp
call fcn.14011ab20
test rax, rax
je 0x140004cf0
mov rdi, rax
mov rcx, rax
mov rdx, rsi
mov r8, rbp
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov qword [rsp + 0x1a0], rbp
mov qword [rsp + 0x1a8], rdi
mov qword [rsp + 0x1b0], rbp
mov byte [rsp + 0x1b8], 0
lea rdx, [0x14018fb38]
lea rcx, [rsp + 0x1a0]
mov r8d, 1
call fcn.1401171f0
mov rdi, qword [rsp + 0x1a0]
mov r12, qword [rsp + 0x1a8]
mov r8, qword [rsp + 0x1b0]
lea rcx, [rsp + 0xd0]
mov rdx, r12
call fcn.14010dea0
mov rax, qword [rsp + 0xd0]
mov r13, qword [rsp + 0xd8]
cmp rax, r14
je 0x1400046e8
mov rcx, qword [rsp + 0xe0]
mov qword [rsp + 0x1a0], rax
mov qword [rsp + 0x1a8], r13
mov qword [rsp + 0x1b0], rcx
lea rcx, [rsp + 0x40]
lea rdx, [rsp + 0x1a0]
call fcn.14010e1c0
mov rsi, qword [rsp + 0x40]
mov r13, qword [rsp + 0x48]
cmp rsi, r14
jne 0x140004865
test rdi, rdi
je 0x1400046ff
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, r12
call sub.kernel32.dll_HeapFree
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, rbx
call sub.kernel32.dll_HeapFree
mov qword [rsp + 0x40], r13
lea rax, [rsp + 0xa0]
mov qword [rsp + 0xd0], rax
lea rax, [0x14002ad20]
mov qword [rsp + 0xd8], rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0xe0], rax
lea rax, [fcn.140116440]
mov qword [rsp + 0xe8], rax
lea rax, str.Error_reading_directory_:
mov qword [rsp + 0x1a0], rax
mov qword [rsp + 0x1a8], 3
mov qword [rsp + 0x1c0], 0
mov qword [rsp + 0x1b0], r15
mov qword [rsp + 0x1b8], 2
lea rcx, [rsp + 0x1a0]
call fcn.140119ae0
mov rsi, qword [rsp + 0x40]
mov eax, esi
and eax, 3
cmp eax, 1
jne 0x1400047f6
mov rdi, qword [rsi - 1]
mov rbx, qword [rsi + 7]
mov rax, qword [rbx]
test rax, rax
je 0x1400047bd
mov rcx, rdi
call rax
dec rsi
cmp qword [rbx + 8], 0
je 0x1400047e4
cmp qword [rbx + 0x10], 0x11
jb 0x1400047d2
mov rdi, qword [rdi - 8]
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, rdi
call sub.kernel32.dll_HeapFree
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, rsi
call sub.kernel32.dll_HeapFree
lea rax, [0x140149828]
mov qword [rsp + 0x1a0], rax
mov qword [rsp + 0x1a8], 1
mov qword [rsp + 0x1b0], 8
pxor xmm0, xmm0
movdqu xmmword [rsp + 0x1b8], xmm0
lea rcx, [rsp + 0x1a0]
call fcn.140119ae0
cmp qword [rsp + 0x3f0], 0
je 0x14000401d
mov rsi, qword [rsp + 0x3f8]
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, rsi
call sub.kernel32.dll_HeapFree
jmp 0x14000401d
lea r14, [rsp + 0x1a0]
mov r8d, 0x250
mov rcx, r14
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov rcx, r13
mov edx, 1
mov r8, r14
xor r9d, r9d
call sub.kernel32.dll_FindFirstFileExW
cmp rax, 0xffffffffffffffff
je 0x140004959
mov r14, rax
movzx eax, byte [0x1401aa178]
mov edx, 0x30
xor ecx, ecx
call fcn.14011ab20
test rax, rax
je 0x140004cff
mov r15, rax
mov qword [rax], 1
mov qword [rax + 8], 1
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rbp
mov byte [rax + 0x28], 0
mov rbp, qword [rsp + 0x1a0]
movzx eax, word [rsp + 0x1cc]
mov word [rsp + 0x36], ax
movzx ebx, word [rsp + 0x1ce]
movzx eax, word [rsp + 0x1d0]
mov word [rsp + 0x38], ax
test rsi, rsi
je 0x14000492d
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, r13
call sub.kernel32.dll_HeapFree
mov r13d, 1
test rdi, rdi
je 0x14000494a
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, r12
call sub.kernel32.dll_HeapFree
movzx edx, word [rsp + 0x38]
movzx eax, word [rsp + 0x36]
jmp 0x140004a3b
call sub.kernel32.dll_GetLastError
cmp eax, 2
jne 0x1400049db
movzx eax, byte [0x1401aa178]
mov edx, 0x30
xor ecx, ecx
call fcn.14011ab20
test rax, rax
je 0x140004d10
mov r15, rax
mov qword [rax], 1
mov qword [rax + 8], 1
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rbp
mov byte [rax + 0x28], 0
test rsi, rsi
je 0x1400049b8
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, r13
call sub.kernel32.dll_HeapFree
mov r14, 0xffffffffffffffff
test rdi, rdi
je 0x140004a38
call sub.kernel32.dll_GetProcessHeap
xor r13d, r13d
mov rcx, rax
xor edx, edx
mov r8, r12
call sub.kernel32.dll_HeapFree
jmp 0x140004a3b
mov r14d, eax
test rsi, rsi
je 0x1400049f5
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, r13
call sub.kernel32.dll_HeapFree
shl r14, 0x20
test rdi, rdi
je 0x140004a10
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, r12
call sub.kernel32.dll_HeapFree
or r14, 2
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, rbx
call sub.kernel32.dll_HeapFree
mov r13, r14
movabs r14, 0x8000000000000000
jmp 0x140004711
xor r13d, r13d
cmp ax, 0x2e
sete al
test bx, bx
sete cl
xor ebx, 0x2e
or bx, dx
sete sil
or sil, cl
and sil, al
lea rbx, [rsp + 0x1a0]
xor edi, edi
mov qword [rsp + 0x38], rbp
jmp 0x140004aa0
call sub.kernel32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, r13
call sub.kernel32.dll_HeapFree
dec r12
call sub.kernel32.dll_GetProcessHeap
xor r13d, r13d
mov rcx, rax
xor edx, edx
mov r8, r12
call sub.kernel32.dll_HeapFree
mov rbp, qword [rsp + 0x38]
nop dword [rax + rax]
cmp r14, 0xffffffffffffffff
je 0x140004bfd
cmp r13d, 1
setne al
or al, sil
test al, 1
je 0x140004b40
mov r8d, 0x250
mov rcx, rbx
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
nop dword [rax]
mov rcx, r14
mov rdx, rbx
call sub.kernel32.dll_FindNextFileW
test eax, eax
je 0x140004b79
cmp word [rsp + 0x1cc], 0x2e
jne 0x140004b0c
movzx eax, word [rsp + 0x1ce]
test ax, ax
je 0x140004ad0
cmp ax, 0x2e
jne 0x140004b0c
cmp word [rsp + 0x1d0], 0
je 0x140004ad0
lock inc qword [r15]
jle 0x140004d1f
mov rax, qword [rsp + 0x1a0]
mov qword [rsp + 0x40], rax
lea rcx, [rsp + 0xd0]
mov rax, r15
mov qword [rcx], rax
mov rcx, qword [rsp + 0xd0]
test rcx, rcx
jne 0x140004b5f
jmp 0x140004bac
lock inc qword [r15]
jle 0x140004d1f
mov qword [rsp + 0x40], rbp
mov qword [rsp + 0xd0], r15
mov rcx, r15
test rcx, rcx
je 0x140004bac
inc rdi
xor r13d, r13d
lock dec qword [rcx]
jne 0x140004aa0
call fcn.140112fc0
jmp 0x140004aa0
call sub.kernel32.dll_GetLastError
cmp eax, 0x12
je 0x140004bfd
shl rax, 0x20
or rax, 2
mov qword [rsp + 0xd0], 0
lea rcx, [rsp + 0x40]
mov qword [rcx], rax
mov rcx, qword [rsp + 0xd0]
test rcx, rcx
jne 0x140004b5f
mov r12, qword [rsp + 0x40]
inc rdi
mov eax, r12d
and eax, 3
xor r13d, r13d
cmp eax, 1
jne 0x140004aa0
mov r13, qword [r12 - 1]
mov rbp, qword [r12 + 7]
mov rax, qword [rbp]
test rax, rax
je 0x140004bde
mov rcx, r13
call rax
cmp qword [rbp + 8], 0
je 0x140004a7b
cmp qword [rbp + 0x10], 0x11
jb 0x140004a69
mov r13, qword [r13 - 8]
jmp 0x140004a69
mov rcx, r14
call sub.kernel32.dll_FindClose
lock dec qword [r15]
jne 0x140004c13
mov rcx, r15
call fcn.140112fc0
test rdi, rdi
movabs r14, 0x8000000000000000
je 0x1400047f6
mov qword [rsp + 0x40], rdi
lea rax, [rsp + 0x40]
mov qword [rsp + 0xd0], rax
lea rax, [fcn.140009ae0]
mov qword [rsp + 0xd8], rax
lea rax, str.Users_desktop_file_count:
mov qword [rsp + 0x1a0], rax
mov qword [rsp + 0x1a8], 2
mov qword [rsp + 0x1c0], 0
lea rax, [rsp + 0xd0]
mov qword [rsp + 0x1b0], rax
mov qword [rsp + 0x1b8], 1
lea rcx, [rsp + 0x1a0]
call fcn.1401197f0
cmp qword [rsp + 0x3f0], 0
jne 0x140004846
jmp 0x14000401d
lea rax, [0x140193b30]
mov qword [rsp + 0x20], rax
lea rcx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destructionC:UsersUser.rustup_toolchains_nightly_x86_64_pc_windows_gnulib_rustlib_src_rustlibrary_std_src_threadlocal.rs
lea r9, [0x140193a50]
lea r8, [rsp + 0xd0]
mov edx, 0x46
call fcn.14000bd90
lea rcx, str._rustc_d4025ee454169fbd22f5773f54348310ab6a47bblibrary_alloc_src_slice.rs
call fcn.140006e30
mov ecx, 1
mov rdx, rbp
call fcn.140006e69
mov ecx, 1
mov rdx, rbp
call fcn.140006e69
jmp 0x140004d1f
mov ecx, 8
mov edx, 0x30
call fcn.140006e69
jmp 0x140004d1f
mov ecx, 8
mov edx, 0x30
call fcn.140006e69
ud2