Function at 0x140001690
Capabilities:
Check if file exists
Enumerate files on windows
Get file attributes
Move file

Disassembly:
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r14
push r15
lea rbp, [rsp - 0x4b98]
mov eax, 0x4c98
call fcn.140004220
sub rsp, rax
xor r15d, r15d
mov r14, rcx
mov rsi, rdx
mov qword [rbp - 0x40], r15
lea ecx, [r15 + 0x50]
call fcn.1400041c8
mov edi, r15d
mov qword [rbp + 0x4be0], r15
mov r9, r14
mov qword [rax], rax
mov qword [rax + 8], rax
mov qword [rax + 0x10], rax
mov word [rax + 0x18], 0x101
cmp qword [r14 + 0x18], 8
mov qword [rbp - 0x48], rax
jb 0x1400016f9
mov r9, qword [r14]
mov qword [rsp + 0x4c90], r12
lea r8, [0x140021910]
mov edx, 0x104
mov qword [rsp + 0x4c88], r13
lea rcx, [rbp + 0x280]
call fcn.140002d10
lea rdx, [rbp + 0x6e0]
lea rcx, [rbp + 0x280]
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov qword [rbp - 0x18], rax
mov rbx, rax
test rax, rax
je 0x140001d97
nop word [rax + rax]
lea rdx, [rbp + 0x30]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
je 0x14000178a
mov rcx, r15
nop dword [rax]
nop dword [rax + rax]
movzx eax, word [rbp + rcx + 0x5c]
mov word [rbp + rcx + 0xb80], ax
lea rcx, [rcx + 2]
test ax, ax
jne 0x140001770
mov al, 1
jmp 0x14000178c
xor al, al
test al, al
je 0x140001d87
movzx ecx, word [rbp + 0xb80]
movzx eax, word [rbp + 0xb82]
cmp cx, 0x2e
jne 0x1400017c1
test ax, ax
je 0x140001750
cmp cx, cx
jne 0x1400017c1
cmp ax, cx
jne 0x1400017c1
cmp word [rbp + 0xb84], 0
je 0x140001750
lea rdx, str.trash
lea rcx, [rbp + 0xb80]
call fcn.140011be0
test eax, eax
je 0x140001750
lea r8, [0x140021524]
mov rdx, r14
lea rcx, [rbp - 0x80]
call section..text
lea rcx, [rbp + 0xb80]
mov r8, 0xffffffffffffffff
nop dword [rax]
inc r8
cmp word [rcx + r8*2], 0
jne 0x140001800
lea rdx, [rbp + 0xb80]
mov rcx, rax
call fcn.1400028e0
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x58], r15
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x40], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x50], xmm1
mov qword [rax + 0x10], r15
mov qword [rax + 0x18], 7
mov word [rax], r15w
mov rdx, qword [rbp - 0x68]
cmp rdx, 8
jb 0x140001885
mov rcx, qword [rbp - 0x80]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x140001880
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14000225f
mov rcx, r8
call fcn.140004204
cmp qword [rsp + 0x58], 8
lea rcx, [rsp + 0x40]
cmovae rcx, qword [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x140001c4e
test al, 0x10
je 0x140001c4e
mov qword [rbp], r15
lea rax, [rbp + 0xb80]
mov qword [rbp + 8], 7
mov r8, 0xffffffffffffffff
mov word [rbp - 0x10], r15w
nop dword [rax]
inc r8
cmp word [rax + r8*2], 0
jne 0x1400018d0
lea rdx, [rbp + 0xb80]
lea rcx, [rbp - 0x10]
call fcn.140002a60
cmp qword [rsp + 0x58], 8
lea r9, [rsp + 0x40]
lea r8, [0x140021910]
mov qword [rbp + 0x10], r15
cmovae r9, qword [rsp + 0x40]
lea rcx, [rbp + 0x30]
mov edx, 0x104
mov qword [rbp + 0x18], r15
mov r13, r15
mov r12, r15
call fcn.140002d10
lea rdx, [rbp + 0x930]
lea rcx, [rbp + 0x30]
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov qword [rbp + 0x4be8], rax
mov rbx, rax
test rax, rax
je 0x140001bef
nop dword [rax]
nop word [rax + rax]
lea rdx, [rbp + 0x490]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
je 0x14000198d
mov rcx, r15
nop word [rax + rax]
movzx eax, word [rbp + rcx + 0x4bc]
mov word [rbp + rcx + 0x2b80], ax
lea rcx, [rcx + 2]
test ax, ax
jne 0x140001970
mov al, 1
jmp 0x14000198f
xor al, al
test al, al
je 0x140001bd8
cmp word [rbp + 0x2b80], 0x2e
jne 0x1400019c9
cmp word [rbp + 0x2b82], 0
je 0x140001950
cmp word [rbp + 0x2b80], 0x2e
jne 0x1400019c9
cmp word [rbp + 0x2b82], 0x2e
jne 0x1400019c9
cmp word [rbp + 0x2b84], 0
je 0x140001950
mov r14, qword [rsp + 0x50]
movabs rcx, 0x7ffffffffffffffe
mov rax, rcx
sub rax, r14
cmp rax, 1
jb 0x140002271
cmp qword [rsp + 0x58], 8
lea r15, [rsp + 0x40]
lea rsi, [r14 + 1]
mov ebx, 7
cmovae r15, qword [rsp + 0x40]
lea rdi, [rbp - 0x80]
xor eax, eax
mov qword [rbp - 0x70], rax
mov qword [rbp - 0x68], rax
cmp rsi, rbx
jbe 0x140001a47
mov rbx, rsi
or rbx, 7
cmp rbx, rcx
jbe 0x140001a26
mov rbx, rcx
jmp 0x140001a33
cmp rbx, 0xa
mov eax, 0xa
cmovb rbx, rax
lea rdx, [rbx + 1]
lea rcx, [rbp - 0x80]
call fcn.140002870
mov rdi, rax
mov qword [rbp - 0x80], rax
mov qword [rbp - 0x68], rbx
mov rdx, r15
lea rbx, [r14 + r14]
mov qword [rbp - 0x70], rsi
mov r8, rbx
mov rcx, rdi
call fcn.140004dd0
mov eax, 0x5c
xor r15d, r15d
mov word [rdi + rbx], ax
mov r8, 0xffffffffffffffff
mov word [rdi + rsi*2], r15w
lea rax, [rbp + 0x2b80]
inc r8
cmp word [rax + r8*2], r15w
jne 0x140001a80
lea rdx, [rbp + 0x2b80]
lea rcx, [rbp - 0x80]
call fcn.1400028e0
mov qword [rsp + 0x70], r15
mov qword [rsp + 0x78], r15
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x60], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x70], xmm1
mov qword [rax + 0x10], r15
mov qword [rax + 0x18], 7
mov word [rax], r15w
mov rdx, qword [rbp - 0x68]
cmp rdx, 8
jb 0x140001b05
mov rcx, qword [rbp - 0x80]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x140001b00
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140002265
mov rcx, r8
call fcn.140004204
cmp qword [rsp + 0x78], 8
lea rcx, [rsp + 0x60]
mov qword [rsp + 0x30], r15
cmovae rcx, qword [rsp + 0x60]
xor r9d, r9d
xor r8d, r8d
mov dword [rsp + 0x28], r15d
xor edx, edx
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rcx, rax
lea rdx, [rbp - 0x80]
mov rdi, rax
call qword [sym.imp.KERNEL32.dll_GetFileInformationByHandle]
mov ecx, dword [rbp - 0x5c]
mov ebx, eax
mov r14d, dword [rbp - 0x60]
mov esi, dword [rbp - 0x70]
shl r14, 0x20
add r14, rcx
shl rsi, 0x20
mov ecx, dword [rbp - 0x74]
add rsi, rcx
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
je 0x140001c99
mov rdx, qword [rsp + 0x78]
add r13, r14
mov rbx, qword [rbp + 0x4be8]
cmp r12, rsi
mov qword [rbp + 0x10], r13
cmovb r12, rsi
mov qword [rbp + 0x18], r12
cmp rdx, 8
jb 0x140001950
mov rcx, qword [rsp + 0x60]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x140001bce
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14000226b
mov rcx, r8
call fcn.140004204
jmp 0x140001950
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FindClose]
mov rdi, qword [rbp + 0x4be0]
mov r14, qword [rbp + 0x4bd0]
add rdi, r13
lea r8, [rbp - 0x10]
lea rdx, [rbp + 0x20]
mov qword [rbp + 0x4be0], rdi
lea rcx, [rbp - 0x48]
call fcn.140001110
mov rdx, qword [rbp + 8]
cmp rdx, 8
jb 0x140001c4a
mov rcx, qword [rbp - 0x10]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x140001c45
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140002277
mov rcx, r8
call fcn.140004204
mov rbx, qword [rbp - 0x18]
mov rdx, qword [rsp + 0x58]
cmp rdx, 8
jb 0x140001750
mov rcx, qword [rsp + 0x40]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x140001c8f
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140002277
mov rcx, r8
call fcn.140004204
jmp 0x140001750
lea rcx, [0x140021528]
call fcn.140008068
mov rdx, qword [rsp + 0x78]
cmp rdx, 8
jb 0x140001ce7
mov rcx, qword [rsp + 0x60]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x140001ce2
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14000226b
mov rcx, r8
call fcn.140004204
mov rdx, qword [rbp + 8]
mov qword [rsp + 0x70], r15
mov qword [rsp + 0x78], 7
mov word [rsp + 0x60], r15w
cmp rdx, 8
jb 0x140001d3b
mov rcx, qword [rbp - 0x10]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x140001d36
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14000226b
mov rcx, r8
call fcn.140004204
mov rdx, qword [rsp + 0x58]
cmp rdx, 8
jb 0x140001d7d
mov rcx, qword [rsp + 0x40]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x140001d78
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14000226b
mov rcx, r8
call fcn.140004204
mov esi, 0xff
jmp 0x1400021da
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FindClose]
mov rsi, qword [rbp + 0x4bd8]
mov rdx, rdi
lea rcx, str.Total_cache_size__zu_n
call fcn.1400038a0
lea r8, [0x140021524]
mov rdx, r14
lea rcx, [rbp - 0x80]
call section..text
mov r8d, 5
lea rdx, str.trash
mov rcx, rax
call fcn.1400028e0
movups xmm0, xmmword [rax]
movups xmmword [rbp - 0x38], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp - 0x28], xmm1
mov qword [rax + 0x10], r15
mov qword [rax + 0x18], 7
mov word [rax], r15w
mov rdx, qword [rbp - 0x68]
cmp rdx, 8
jb 0x140001e2d
mov rcx, qword [rbp - 0x80]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x140001e28
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14000227d
mov rcx, r8
call fcn.140004204
cmp qword [rbp - 0x20], 8
lea rcx, [rbp - 0x38]
cmovae rcx, qword [rbp - 0x38]
call fcn.140002c20
mov rax, qword [rbp - 0x48]
mov rbx, qword [rax]
cmp rdi, rsi
jbe 0x140002164
cmp rbx, rax
je 0x140002151
lea r8, [0x140021524]
mov rdx, r14
lea rcx, [rbp - 0x80]
lea rsi, [rbx + 0x20]
call section..text
cmp qword [rsi + 0x18], 8
mov rdx, rsi
jb 0x140001e7d
mov rdx, qword [rsi]
mov r8, qword [rsi + 0x10]
mov rcx, rax
call fcn.1400028e0
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x58], r15
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x40], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x50], xmm1
mov qword [rax + 0x10], r15
mov qword [rax + 0x18], 7
mov word [rax], r15w
mov rdx, qword [rbp - 0x68]
cmp rdx, 8
jb 0x140001ef4
mov rcx, qword [rbp - 0x80]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x140001eef
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140002283
mov rcx, r8
call fcn.140004204
mov r12, qword [rbp - 0x28]
movabs rcx, 0x7ffffffffffffffe
mov rax, rcx
sub rax, r12
cmp rax, 1
jb 0x140002253
cmp qword [rbp - 0x20], 8
lea r13, [rbp - 0x38]
mov qword [rbp - 0x70], r15
lea r14, [rbp - 0x80]
cmovae r13, qword [rbp - 0x38]
mov edi, 7
mov qword [rbp - 0x68], r15
lea r15, [r12 + 1]
cmp r15, rdi
jbe 0x140001f6d
mov rdi, r15
or rdi, 7
cmp rdi, rcx
jbe 0x140001f4c
mov rdi, rcx
jmp 0x140001f59
cmp rdi, 0xa
mov eax, 0xa
cmovb rdi, rax
lea rdx, [rdi + 1]
lea rcx, [rbp - 0x80]
call fcn.140002870
mov r14, rax
mov qword [rbp - 0x80], rax
mov qword [rbp - 0x68], rdi
mov rdx, r13
lea rdi, [r12 + r12]
mov qword [rbp - 0x70], r15
mov r8, rdi
mov rcx, r14
call fcn.140004dd0
mov eax, 0x5c
mov word [rdi + r14], ax
xor eax, eax
mov word [r14 + r15*2], ax
cmp qword [rsi + 0x18], 8
mov r8, qword [rsi + 0x10]
jb 0x140001fa6
mov rsi, qword [rsi]
mov rdx, rsi
lea rcx, [rbp - 0x80]
call fcn.1400028e0
xor r15d, r15d
mov qword [rsp + 0x70], r15
mov qword [rsp + 0x78], r15
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x60], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x70], xmm1
mov qword [rax + 0x10], r15
mov qword [rax + 0x18], 7
mov word [rax], r15w
mov rdx, qword [rbp - 0x68]
cmp rdx, 8
jb 0x140002020
mov rcx, qword [rbp - 0x80]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x14000201b
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140002289
mov rcx, r8
call fcn.140004204
cmp qword [rsp + 0x78], 8
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x40]
cmovae rdx, qword [rsp + 0x60]
cmp qword [rsp + 0x58], 8
cmovae rcx, qword [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_MoveFileW]
mov rdi, qword [rbp + 0x4be0]
sub rdi, qword [rbx + 0x40]
mov rax, qword [rbx + 0x10]
mov qword [rbp + 0x4be0], rdi
cmp byte [rax + 0x19], r15b
je 0x140002088
mov rax, qword [rbx + 8]
cmp byte [rax + 0x19], r15b
jne 0x140002083
nop
cmp rbx, qword [rax + 0x10]
jne 0x140002083
mov rbx, rax
mov rax, qword [rax + 8]
cmp byte [rax + 0x19], r15b
je 0x140002070
mov rbx, rax
jmp 0x1400020a0
mov rbx, rax
mov rax, qword [rax]
cmp byte [rax + 0x19], r15b
jne 0x1400020a0
mov rbx, rax
mov rax, qword [rax]
cmp byte [rax + 0x19], r15b
je 0x140002094
mov rdx, qword [rsp + 0x78]
cmp rdx, 8
jb 0x1400020e2
mov rcx, qword [rsp + 0x60]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x1400020dd
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14000228f
mov rcx, r8
call fcn.140004204
mov rdx, qword [rsp + 0x58]
mov qword [rsp + 0x70], r15
mov qword [rsp + 0x78], 7
mov word [rsp + 0x60], r15w
cmp rdx, 8
jb 0x140002138
mov rcx, qword [rsp + 0x40]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x140002133
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14000228f
mov rcx, r8
call fcn.140004204
cmp rdi, qword [rbp + 0x4bd8]
jbe 0x140002164
mov rax, qword [rbp - 0x48]
mov r14, qword [rbp + 0x4bd0]
jmp 0x140001e50
lea rcx, str.Reached_end_of_iterator__but_cache_is_not_empty.
call fcn.140008068
mov esi, 0xff
jmp 0x140002189
cmp qword [rbp - 0x20], 8
lea rcx, [rbp - 0x38]
cmovae rcx, qword [rbp - 0x38]
call fcn.140002b90
mov rdx, rdi
lea rcx, str.Total_cache_size_after_purge__zu_n
call fcn.1400038a0
mov esi, r15d
mov rdx, qword [rbp - 0x20]
cmp rdx, 8
jb 0x1400021c9
mov rcx, qword [rbp - 0x38]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x1400021c4
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140002259
mov rcx, r8
call fcn.140004204
mov qword [rbp - 0x28], r15
mov qword [rbp - 0x20], 7
mov word [rbp - 0x38], r15w
mov rcx, qword [rbp - 0x48]
mov rdi, qword [rcx + 8]
cmp byte [rdi + 0x19], 0
jne 0x140002227
nop dword [rax + rax]
mov r8, qword [rdi + 0x10]
lea rdx, [rbp - 0x48]
lea rcx, [rbp - 0x48]
call fcn.140001370
mov rbx, rdi
mov rdi, qword [rdi]
lea rcx, [rbx + 0x20]
call fcn.1400027e0
mov edx, 0x50
mov rcx, rbx
call fcn.140004204
cmp byte [rdi + 0x19], 0
je 0x1400021f0
mov rcx, qword [rbp - 0x48]
mov edx, 0x50
call fcn.140004204
mov r13, qword [rsp + 0x4c88]
mov eax, esi
mov r12, qword [rsp + 0x4c90]
add rsp, 0x4c98
pop r15
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret
call fcn.140002850
int3
call fcn.140007e48
int3
call fcn.140007e48
int3
call fcn.140007e48
int3
call fcn.140007e48
int3
call fcn.140002850
int3
call fcn.140007e48
int3
call fcn.140007e48
int3
call fcn.140007e48
int3
call fcn.140007e48
int3
call fcn.140007e48
int3