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

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x4f8
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x470], 0xfffffffffffffffe
movdqu xmm0, xmmword [0x140125cb4]
movdqa xmmword [rbp + 0x2e0], xmm0
mov qword [rbp + 0x200], 0
lea rcx, [rbp + 0x2e0]
lea rdi, [rbp + 0x200]
xor edx, edx
xor r8d, r8d
mov r9, rdi
call qword [sym.imp.shell32.dll_SHGetKnownFolderPath]
mov rcx, qword [rbp + 0x200]
test eax, eax
je 0x140003a80
call qword [sym.imp.ole32.dll_CoTaskMemFree]
jmp 0x140003ad5
call qword [sym.imp.kernel32.dll_lstrlenW]
movsxd r8, eax
mov rdx, qword [rbp + 0x200]
lea rcx, [rbp - 0x50]
call fcn.1400e6d10
mov rcx, qword [rbp + 0x200]
call qword [sym.imp.ole32.dll_CoTaskMemFree]
mov rax, qword [rbp - 0x50]
movdqu xmm0, xmmword [rbp - 0x48]
movdqa xmmword [rbp + 0x3d0], xmm0
mov rcx, qword [rbp - 0x38]
mov qword [rbp + 0x3e0], rcx
movabs r15, 0x8000000000000000
cmp rax, r15
jne 0x140003f42
lea rax, [0x14014c9f8]
mov qword [rbp - 0x50], rax
mov qword [rbp - 0x48], 1
mov qword [rbp - 0x40], 8
pxor xmm0, xmm0
movdqu xmmword [rbp - 0x38], xmm0
lea rcx, [rbp - 0x50]
call fcn.1400eda90
mov eax, dword [0x140194314]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov rsi, qword [rax + 0x48]
test rsi, rsi
jne 0x140003b32
call fcn.140053050
test rax, rax
je 0x140004598
mov rsi, qword [rax]
inc qword [rsi]
je 0x14000462c
lea rdi, [rsi + 0x10]
lea rbx, [rsi + 0x120]
mov rax, qword [rsi + 0x110]
jmp 0x140003b72
mov rcx, rbx
mov rdx, rdi
call fcn.140050830
xor ecx, ecx
lea rax, [rcx + 1]
test dword [rsi + rcx*4 + 0x10], 0x40000000
mov qword [rsi + 0x110], rax
je 0x140003bab
mov rcx, rax
cmp rax, 0x40
jb 0x140003b5d
mov rax, qword [rsi + 0x158]
test rax, rax
jle 0x140003b50
cmp qword [rsi + 0x160], 0
js 0x140003b50
add rax, 0xffffffffffffff00
mov qword [rsi + 0x158], rax
mov rcx, rbx
mov rdx, rdi
call fcn.1400533d0
jmp 0x140003b5b
dec qword [rsi]
jne 0x140003bc7
dec qword [rsi + 8]
jne 0x140003bc7
mov rcx, qword [0x140194260]
xor edx, edx
mov r8, rsi
call sub.kernel32.dll_HeapFree
lea rdx, str.https:__quan.suning.com_getSysTime.dosysTime1
lea rcx, [rbp + 0x2e0]
mov r8d, 0x25
call fcn.140046430
mov rdi, qword [rbp + 0x2e0]
mov rsi, qword [rbp + 0x2e8]
cmp rdi, 3
je 0x14000451e
lea rdx, [rbp + 0x2f0]
lea rcx, [rbp + 0x210]
mov r8d, 0xb0
call fcn.140116da0
mov qword [rbp + 0x200], rdi
mov qword [rbp + 0x208], rsi
lea rcx, [rbp + 0x410]
lea rdx, [rbp + 0x200]
call fcn.140049c00
mov rbx, qword [rbp + 0x410]
mov rsi, qword [rbp + 0x418]
test rbx, rbx
je 0x14000451e
movdqu xmm0, xmmword [rbp + 0x420]
movdqu xmm1, xmmword [rbp + 0x430]
movdqu xmmword [rbp + 0x3c0], xmm1
movdqu xmmword [rbp + 0x3b0], xmm0
mov qword [rbp + 0x3a0], rbx
mov qword [rbp + 0x3a8], rsi
cmp qword [rbp + 0x3b8], 0
je 0x1400044fa
movups xmm0, xmmword [rbp + 0x3c0]
movaps xmmword [rbp + 0x2c0], xmm0
lea rcx, [rbp + 0x2c0]
call fcn.140045bc0
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 rdi, 0x31656d6954737973
and rax, rsi
movdqu xmm2, xmmword [rbx + rax]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb r8d, xmm3
nop word cs:[rax + rax]
test r8w, r8w
je 0x140003d30
tzcnt r9d, r8d
lea r10d, [r8 - 1]
and r10d, r8d
mov r8d, r10d
add r9, rax
and r9, rsi
neg r9
lea r9, [r9 + r9*2]
shl r9, 4
cmp qword [rcx + r9 + 0x10], 8
jne 0x140003cf0
lea r10, [rcx + r9]
mov r10, qword [r10 + 8]
cmp qword [r10], rdi
jne 0x140003cf0
jmp 0x140003d52
pcmpeqb xmm2, xmm1
pmovmskb r8d, xmm2
test r8d, r8d
jne 0x1400044fa
add rax, rdx
add rax, 0x10
add rdx, 0x10
jmp 0x140003ccc
mov rdx, qword [rbx + r9 - 0x10]
mov r8, qword [rbx + r9 - 8]
lea rcx, [rbp + 0x2e0]
call fcn.14000e9e0
cmp byte [rbp + 0x2e0], 0
jne 0x14000454a
mov ecx, 3
call fcn.1400e4db0
lea rdx, str.https:__quan.suning.com_getSysTime.dosysTime1
lea rcx, [rbp + 0x2e0]
mov r8d, 0x25
call fcn.140046430
mov rbx, qword [rbp + 0x2e0]
mov rsi, qword [rbp + 0x2e8]
cmp rbx, 3
je 0x140004512
lea rdx, [rbp + 0x2f0]
lea rcx, [rbp - 0x40]
mov r8d, 0xb0
call fcn.140116da0
mov qword [rbp - 0x50], rbx
mov qword [rbp - 0x48], rsi
lea rcx, [rbp + 0x410]
lea rdx, [rbp - 0x50]
call fcn.140049c00
mov rbx, qword [rbp + 0x410]
mov rsi, qword [rbp + 0x418]
test rbx, rbx
je 0x140004512
movdqu xmm0, xmmword [rbp + 0x420]
movdqu xmm1, xmmword [rbp + 0x430]
movdqu xmmword [rbp + 0x3f0], xmm1
movdqu xmmword [rbp + 0x3e0], xmm0
mov qword [rbp + 0x3d0], rbx
mov qword [rbp + 0x3d8], rsi
cmp qword [rbp + 0x3e8], 0
je 0x140004506
movups xmm0, xmmword [rbp + 0x3f0]
movaps xmmword [rbp + 0x2d0], xmm0
lea rcx, [rbp + 0x2d0]
call fcn.140045bc0
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
and rax, rsi
movdqu xmm2, xmmword [rbx + rax]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb r8d, xmm3
nop word cs:[rax + rax]
test r8w, r8w
je 0x140003ed0
tzcnt r9d, r8d
lea r10d, [r8 - 1]
and r10d, r8d
mov r8d, r10d
add r9, rax
and r9, rsi
neg r9
lea r9, [r9 + r9*2]
shl r9, 4
cmp qword [rcx + r9 + 0x10], 8
jne 0x140003e90
lea r10, [rcx + r9]
mov r10, qword [r10 + 8]
cmp qword [r10], rdi
jne 0x140003e90
jmp 0x140003ef2
pcmpeqb xmm2, xmm1
pmovmskb r8d, xmm2
test r8d, r8d
jne 0x140004506
add rax, rdx
add rax, 0x10
add rdx, 0x10
jmp 0x140003e6e
mov rdx, qword [rbx + r9 - 0x10]
mov r8, qword [rbx + r9 - 8]
lea rcx, [rbp + 0x2e0]
call fcn.14000e9e0
cmp byte [rbp + 0x2e0], 0
jne 0x140004560
lea rcx, [rbp + 0x3d0]
call fcn.1400443c0
lea rcx, [rbp + 0x3a0]
call fcn.1400443c0
nop
add rsp, 0x4f8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov qword [rbp + 0x2e0], rax
movdqa xmm0, xmmword [rbp + 0x3d0]
movdqu xmmword [rbp + 0x2e8], xmm0
mov rax, qword [rbp + 0x3e0]
mov qword [rbp + 0x2f8], rax
lea rdx, str.DesktopUsers_desktop_file_count:
lea rcx, [rbp + 0x2e0]
mov r8d, 7
call fcn.1400ea9b0
mov rdx, qword [rbp + 0x2e8]
mov r8, qword [rbp + 0x2f0]
lea rcx, [rbp - 0x50]
call fcn.140009b30
cmp qword [rbp - 0x50], 0
jne 0x1400045c3
mov r14, qword [rbp - 0x40]
test r14, r14
je 0x140004208
js 0x1400045cf
mov rsi, qword [rbp - 0x48]
movzx eax, byte [0x140194310]
xor ecx, ecx
mov rdx, r14
call fcn.1400eed30
test rax, rax
je 0x1400045d4
mov qword [rbp + 0x460], rax
mov rcx, rax
mov rdx, rsi
mov r8, r14
call fcn.140116da0
movzx eax, byte [0x140194310]
xor ecx, ecx
mov rdx, r14
call fcn.1400eed30
test rax, rax
je 0x1400045e1
mov rbx, rax
mov rcx, rax
mov rdx, rsi
mov r8, r14
call fcn.140116da0
mov qword [rbp - 0x50], r14
mov qword [rbp - 0x48], rbx
mov qword [rbp - 0x40], r14
mov byte [rbp - 0x38], 0
lea rdx, [0x14015b858]
lea rcx, [rbp - 0x50]
mov r8d, 1
call fcn.1400ea9b0
mov rax, qword [rbp - 0x50]
mov qword [rbp + 0x450], rax
mov rdx, qword [rbp - 0x48]
mov r8, qword [rbp - 0x40]
mov byte [rbp + 0x46e], 1
lea rcx, [rbp + 0x200]
mov qword [rbp + 0x458], rdx
call fcn.1400e8a40
mov rax, qword [rbp + 0x200]
mov rbx, qword [rbp + 0x208]
cmp rax, r15
je 0x1400040bd
mov rcx, qword [rbp + 0x210]
mov qword [rbp - 0x50], rax
mov qword [rbp - 0x48], rbx
mov qword [rbp - 0x40], rcx
mov byte [rbp + 0x46e], 1
lea rcx, [rbp + 0x410]
lea rdx, [rbp - 0x50]
call fcn.1400ea3a0
mov rsi, qword [rbp + 0x410]
mov r13, qword [rbp + 0x418]
cmp rsi, r15
jne 0x140004371
mov rbx, r13
cmp qword [rbp + 0x450], 0
mov r8, qword [rbp + 0x458]
je 0x1400040dc
mov rcx, qword [0x140194260]
xor edx, edx
call sub.kernel32.dll_HeapFree
mov r14d, 2
mov r13b, 1
mov r8, qword [rbp + 0x460]
mov rcx, qword [0x140194260]
xor edx, edx
call sub.kernel32.dll_HeapFree
test r13b, r13b
jne 0x140004212
cmp r14d, 2
je 0x140004212
cmp si, 0x2e
sete al
test r12w, r12w
sete cl
xor r12d, 0x2e
or r12w, r15w
sete r12b
or r12b, cl
and r12b, al
lea rdi, [rbp - 0x50]
mov r13, qword [sym.imp.kernel32.dll_FindNextFileW]
mov rsi, qword [sym.imp.kernel32.dll_GetLastError]
xor r15d, r15d
nop word cs:[rax + rax]
cmp qword [rbp + 0x448], 0xffffffffffffffff
je 0x1400042ce
cmp r14d, 1
setne al
or al, r12b
je 0x1400041c0
mov r8d, 0x250
mov rcx, rdi
xor edx, edx
call fcn.140117440
mov r14, qword [rbp + 0x448]
nop word cs:[rax + rax]
mov rcx, r14
mov rdx, rdi
call r13
test eax, eax
je 0x1400041f0
cmp word [rbp - 0x24], 0x2e
jne 0x1400041c0
movzx eax, word [rbp - 0x22]
test ax, ax
je 0x140004190
cmp ax, 0x2e
jne 0x1400041c0
cmp word [rbp - 0x20], 0
je 0x140004190
nop word [rax + rax]
lock inc qword [rbx]
jle 0x14000462c
inc r15
xor r14d, r14d
lock dec qword [rbx]
jne 0x140004150
mov rcx, rbx
call fcn.140040a70
jmp 0x140004150
call rsi
cmp eax, 0x12
je 0x1400042d8
call rsi
inc r15
xor r14d, r14d
jmp 0x140004150
movabs rbx, 0x300000002
mov qword [rbp + 0x410], rbx
lea rax, [rbp + 0x410]
mov qword [rbp + 0x200], rax
lea rax, [fcn.1400e9430]
mov qword [rbp + 0x208], rax
lea rax, str.Unable_to_read_the_users_desktop_file_list:
mov qword [rbp - 0x50], rax
mov qword [rbp - 0x48], 2
mov qword [rbp - 0x30], 0
mov qword [rbp - 0x40], rdi
mov qword [rbp - 0x38], 1
lea rcx, [rbp - 0x50]
call fcn.1400eda90
mov rax, qword [rbp + 0x410]
mov ecx, eax
and ecx, 3
cmp ecx, 1
jne 0x1400042bb
lea rsi, [rax - 1]
mov rdi, qword [rax - 1]
mov rbx, qword [rax + 7]
mov rcx, rdi
call qword [rbx]
cmp qword [rbx + 8], 0
je 0x1400042aa
cmp qword [rbx + 0x10], 0x11
jb 0x140004299
mov rdi, qword [rdi - 8]
mov rcx, qword [0x140194260]
xor edx, edx
mov r8, rdi
call sub.kernel32.dll_HeapFree
mov rcx, qword [0x140194260]
xor edx, edx
mov r8, rsi
call sub.kernel32.dll_HeapFree
cmp qword [rbp + 0x2e0], 0
jne 0x140004357
jmp 0x140003b02
xor r15d, r15d
mov r14, qword [rbp + 0x448]
mov rcx, r14
call qword [sym.imp.kernel32.dll_FindClose]
lock dec qword [rbx]
lea rsi, [rbp + 0x200]
jne 0x1400042f6
mov rcx, rbx
call fcn.140040a70
mov qword [rbp + 0x410], r15
lea rax, [rbp + 0x410]
mov qword [rbp + 0x200], rax
lea rax, [fcn.1400084f0]
mov qword [rbp + 0x208], rax
lea rax, [0x140123f98]
mov qword [rbp - 0x50], rax
mov qword [rbp - 0x48], 2
mov qword [rbp - 0x30], 0
mov qword [rbp - 0x40], rsi
mov qword [rbp - 0x38], 1
lea rcx, [rbp - 0x50]
call fcn.1400ed810
cmp qword [rbp + 0x2e0], 0
je 0x140003b02
mov r8, qword [rbp + 0x2e8]
mov rcx, qword [0x140194260]
xor edx, edx
call sub.kernel32.dll_HeapFree
jmp 0x140003b02
lea rbx, [rbp - 0x50]
mov r8d, 0x250
mov rcx, rbx
xor edx, edx
call fcn.140117440
mov rcx, r13
mov rdx, rbx
call qword [sym.imp.kernel32.dll_FindFirstFileW]
mov qword [rbp + 0x448], rax
cmp rax, 0xffffffffffffffff
je 0x140004422
mov qword [rbp + 0x440], rsi
movzx eax, byte [0x140194310]
mov edx, 0x30
xor ecx, ecx
call fcn.1400eed30
test rax, rax
je 0x1400045f7
mov rbx, rax
mov qword [rax], 1
mov qword [rax + 8], 1
mov qword [rax + 0x10], r14
mov rax, qword [rbp + 0x460]
mov qword [rbx + 0x18], rax
mov qword [rbx + 0x20], r14
mov byte [rbx + 0x28], 0
movzx esi, word [rbp - 0x24]
movzx r12d, word [rbp - 0x22]
movzx r15d, word [rbp - 0x20]
cmp qword [rbp + 0x440], 0
je 0x140004417
mov rcx, qword [0x140194260]
xor edx, edx
mov r8, r13
call sub.kernel32.dll_HeapFree
mov r14d, 1
xor r13d, r13d
jmp 0x1400044a0
call qword [sym.imp.kernel32.dll_GetLastError]
cmp eax, 2
jne 0x1400044ba
movzx eax, byte [0x140194310]
mov edx, 0x30
xor ecx, ecx
call fcn.1400eed30
test rax, rax
je 0x14000460f
mov rbx, rax
mov qword [rax], 1
mov qword [rax + 8], 1
mov qword [rax + 0x10], r14
mov rax, qword [rbp + 0x460]
mov qword [rbx + 0x18], rax
mov qword [rbx + 0x20], r14
mov byte [rbx + 0x28], 0
test rsi, rsi
je 0x14000448c
mov rcx, qword [0x140194260]
xor edx, edx
mov r8, r13
call sub.kernel32.dll_HeapFree
mov qword [rbp + 0x448], 0xffffffffffffffff
xor r13d, r13d
mov r14d, 0
cmp qword [rbp + 0x450], 0
mov r8, qword [rbp + 0x458]
jne 0x1400040ec
jmp 0x1400040fa
mov ebx, eax
shl rbx, 0x20
test rsi, rsi
mov r8, qword [rbp + 0x458]
je 0x1400044e3
mov rcx, qword [0x140194260]
xor edx, edx
mov rsi, r8
mov r8, r13
call sub.kernel32.dll_HeapFree
mov r8, rsi
or rbx, 2
cmp qword [rbp + 0x450], 0
jne 0x1400040ce
jmp 0x1400040dc
lea rcx, str.src_main.rs
call fcn.140117f80
lea rcx, str.src_main.rs
call fcn.140117f80
lea rcx, [rbp + 0x3a0]
call fcn.1400443c0
mov qword [rbp - 0x50], rsi
lea rax, str.src_main.rs
mov qword [rsp + 0x20], rax
lea rcx, [0x140183346]
lea r9, [0x140123d10]
lea r8, [rbp - 0x50]
mov edx, 0x2b
call fcn.140117ef0
movzx eax, byte [rbp + 0x2e1]
mov byte [rbp + 0x410], al
lea rax, str.src_main.rs
jmp 0x140004574
movzx eax, byte [rbp + 0x2e1]
mov byte [rbp + 0x410], al
lea rax, str.src_main.rs
mov qword [rsp + 0x20], rax
lea rcx, [0x140183346]
lea r9, [0x140123d30]
lea r8, [rbp + 0x410]
mov edx, 0x2b
call fcn.140117ef0
lea rax, [0x14015e6b0]
mov qword [rsp + 0x20], rax
lea rcx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_f9b16149208c8a8a349c32813312716f6603eb6flibrary_std_src_threadlocal.rs
lea r9, [0x14014d660]
lea r8, [rbp + 0x2e0]
mov edx, 0x46
call fcn.140117ef0
lea rcx, str.src_main.rs
call fcn.140117f80
call fcn.140006190
mov ecx, 1
mov rdx, r14
call fcn.1401178b0
mov byte [rbp + 0x46f], 1
mov ecx, 1
mov rdx, r14
call fcn.1401178b0
jmp 0x14000462c
mov qword [rbp + 0x408], r13
mov ecx, 8
mov edx, 0x30
call fcn.1401178d0
jmp 0x14000462c
mov qword [rbp + 0x440], rsi
mov qword [rbp + 0x408], r13
mov ecx, 8
mov edx, 0x30
call fcn.1401178d0
ud2