Function at 0x18000e504
Capabilities:
Enumerate files on windows
Enumerate files recursively

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x200]
sub rsp, 0x300
mov rax, qword [0x1800d61f8]
xor rax, rsp
mov qword [rbp + 0x1f0], rax
mov qword [rsp + 0x50], r9
mov rbx, r8
mov rsi, rdx
mov qword [rsp + 0x78], rcx
mov r12, rcx
call fcn.180005ccc
mov rdx, rsi
mov qword [rsp + 0x70], rax
mov rcx, r12
mov r13, rax
call sym.JkDefrag.dll_public:_void___cdecl_JKDefragLib::SlowDown_struct_DefragDataStruct____ptr64____ptr64
mov rcx, rbx
call fcn.1800544cc
xor edi, edi
mov qword [rsp + 0x68], rax
mov r15, rax
test rax, rax
je 0x18000ec89
lea edx, [rdi + 0x5c]
mov rcx, rax
call fcn.1800178a0
test rax, rax
je 0x18000e58d
mov word [rax], di
mov r9, qword [rsi + 0x240]
xor r8d, r8d
mov rcx, r13
mov qword [rsp + 0x20], rbx
mov r9, qword [r9 + 0xb8]
lea edx, [r8 + 3]
call fcn.180004968
lea rcx, [rbp - 0x78]
call qword [sym.imp.KERNEL32.dll_GetSystemTime]
lea rdx, [rbp - 0x80]
lea rcx, [rbp - 0x78]
call qword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
lea rdx, [rbp - 0x60]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov qword [rsp + 0x40], rax
cmp rax, 0xffffffffffffffff
jne 0x18000e5e7
mov rcx, r15
jmp 0x18000ec84
xor ebx, ebx
mov r14, rax
mov rax, qword [rsi + 8]
cmp dword [rax], ebx
jne 0x18000ec17
lea rdx, [0x1800bc114]
lea rcx, [rbp - 0x34]
call fcn.180025a40
test eax, eax
je 0x18000ebfe
lea rdx, [0x1800bc844]
lea rcx, [rbp - 0x34]
call fcn.180025a40
test eax, eax
je 0x18000ebfe
test dword [rbp - 0x60], 0x400
jne 0x18000ebfe
test rdi, rdi
je 0x18000e696
mov rcx, qword [rdi + 0x30]
test rcx, rcx
je 0x18000e648
call fcn.180053d58
mov rcx, qword [rdi + 0x28]
test rcx, rcx
je 0x18000e656
call fcn.180053d58
mov rcx, qword [rdi + 0x20]
test rcx, rcx
je 0x18000e664
call fcn.180053d58
mov rcx, qword [rdi + 0x18]
test rcx, rcx
je 0x18000e672
call fcn.180053d58
cmp qword [rdi + 0x60], rbx
je 0x18000e68e
mov rcx, qword [rdi + 0x60]
mov rbx, qword [rcx + 0x10]
call fcn.180053d58
mov qword [rdi + 0x60], rbx
test rbx, rbx
jne 0x18000e678
mov rcx, rdi
call fcn.180053d58
mov ecx, 0x88
call fcn.180026bf8
mov rdi, rax
test rax, rax
je 0x18000ec17
mov rcx, r15
mov qword [rax + 0x30], rbx
mov qword [rax + 0x28], rbx
mov qword [rax + 0x20], rbx
mov qword [rax + 0x18], rbx
mov qword [rax + 0x60], rbx
call fcn.1800264d8
lea rcx, [rbp - 0x34]
mov rbx, rax
call fcn.1800264d8
add rax, 2
add rbx, rax
lea rcx, [rbx + rbx]
call fcn.180026bf8
mov qword [rdi + 0x20], rax
test rax, rax
je 0x18000ec15
lea rcx, [rbp - 0x34]
mov r9, r15
mov qword [rsp + 0x20], rcx
lea r8, [0x1800bc850]
mov rcx, rax
mov rdx, rbx
call fcn.180003248
lea rcx, [rbp - 0x34]
call fcn.1800544cc
xor ebx, ebx
mov qword [rdi + 0x18], rax
test rax, rax
je 0x18000ec17
mov rcx, r15
call fcn.1800264d8
lea rcx, [rbp + 0x1d4]
mov rbx, rax
call fcn.1800264d8
add rax, 2
add rbx, rax
lea rcx, [rbx + rbx]
call fcn.180026bf8
mov qword [rdi + 0x30], rax
test rax, rax
je 0x18000ec15
lea rcx, [rbp + 0x1d4]
mov r9, r15
mov qword [rsp + 0x20], rcx
lea r8, [0x1800bc850]
mov rcx, rax
mov rdx, rbx
call fcn.180003248
lea rcx, [rbp + 0x1d4]
call fcn.1800544cc
xor ebx, ebx
mov qword [rdi + 0x28], rax
test rax, rax
je 0x18000ec17
mov eax, dword [rbp - 0x40]
mov r8, rdi
mov ecx, dword [rbp - 0x44]
mov rdx, rsi
shl rcx, 0x20
add rcx, rax
mov dword [rdi + 0x78], ebx
mov rax, qword [rsp + 0x50]
mov qword [rdi + 0x70], rax
mov eax, ebx
mov qword [rdi + 0x38], rcx
lea ecx, [rbx + 1]
mov qword [rdi + 0x40], rbx
mov qword [rdi + 0x48], rbx
mov qword [rdi + 0x58], rbx
mov qword [rdi + 0x50], rbx
test byte [rbp - 0x60], 0x10
mov qword [rdi + 0x7c], rbx
cmovne eax, ecx
mov dword [rdi + 0x84], ebx
mov rcx, r12
mov dword [rdi + 0x78], eax
call fcn.18000cfb4
mov r14, rax
test rax, rax
je 0x18000ebf9
mov r9, rax
mov r8, rdi
mov rdx, rsi
mov rcx, r12
call fcn.18000bd14
mov rcx, r14
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
je 0x18000ebf7
mov r14d, 1
xor r8d, r8d
add qword [rsi + 0x1d8], r14
mov rdx, rdi
mov rax, qword [rdi + 0x38]
mov rcx, r12
add qword [rsi + 0x1e8], rax
mov rax, qword [rdi + 0x40]
add qword [rsi + 0x1f8], rax
mov rbx, qword [rdi + 0x40]
mov r9, rbx
call sym.JkDefrag.dll_public:_int___cdecl_JKDefragLib::IsFragmented_struct_ItemStruct____ptr64__unsigned_long_long_unsigned___int64___unsigned_long_long_unsigned___int64_____ptr64
cmp eax, r14d
jne 0x18000e879
add qword [rsi + 0x1e0], r14
mov rax, qword [rdi + 0x38]
add qword [rsi + 0x1f0], rax
mov rax, qword [rdi + 0x40]
add qword [rsi + 0x200], rax
mov rbx, qword [rdi + 0x40]
add qword [rsi + 0x218], rbx
mov r8, rdi
mov rdx, rsi
mov rcx, r13
call fcn.1800048a8
cmp dword [rdi + 0x78], r14d
jne 0x18000e8fe
add qword [rsi + 0x1d0], r14
mov rcx, r15
call fcn.1800264d8
lea rcx, [rbp - 0x34]
mov rbx, rax
call fcn.1800264d8
lea r14, [rax + 4]
add r14, rbx
lea rcx, [r14 + r14]
call fcn.180026bf8
mov rbx, rax
test rax, rax
je 0x18000e8fe
lea rax, [rbp - 0x34]
mov r9, r15
lea r8, [0x1800bc860]
mov qword [rsp + 0x20], rax
mov rdx, r14
mov rcx, rbx
call fcn.180003248
mov r9, rdi
mov r8, rbx
mov rdx, rsi
mov rcx, r12
call fcn.18000e504
mov rcx, rbx
call fcn.180053d58
xor ebx, ebx
cmp qword [rdi + 0x40], rbx
je 0x18000ebf9
cmp qword [rdi + 0x60], rbx
je 0x18000ebf9
call fcn.180005ccc
mov r9, qword [rdi + 0x40]
xor r8d, r8d
mov rdx, rdi
mov qword [rsp + 0x60], rax
mov rcx, r12
call sym.JkDefrag.dll_public:_int___cdecl_JKDefragLib::IsFragmented_struct_ItemStruct____ptr64__unsigned_long_long_unsigned___int64___unsigned_long_long_unsigned___int64_____ptr64
mov r14, qword [rdi + 0x60]
mov r8d, eax
mov dword [rsp + 0x48], eax
mov r12d, ebx
test r14, r14
je 0x18000ea22
mov r13, qword [rsp + 0x60]
mov r15d, ebx
cmp qword [r14], 0xffffffffffffffff
mov rcx, qword [r14 + 8]
je 0x18000e9ec
mov rax, rcx
mov rdx, r12
sub rax, r15
add rax, r12
cmp r12, rax
jae 0x18000e9e3
sub rcx, r15
lea rbx, [r12 + rcx]
mov ecx, 7
lea r9d, [rcx - 6]
cmp dword [rdi + 0x84], r9d
lea eax, [rcx - 5]
cmovne ecx, eax
cmp r8d, r9d
lea eax, [r9 + 3]
cmove ecx, eax
cmp dword [rdi + 0x7c], r9d
lea eax, [r9 + 2]
cmove ecx, eax
cmp dword [rdi + 0x80], r9d
cmove ecx, eax
mov rax, qword [r14]
sub rax, r12
mov dword [rsp + 0x20], ecx
mov rcx, r13
lea r8, [rax + rdx]
mov rdx, rsi
lea r9, [rax + rbx]
call fcn.180003778
mov rcx, qword [r14 + 8]
mov rdx, rbx
mov r8d, dword [rsp + 0x48]
mov rax, rcx
sub rax, r15
add rax, r12
cmp rbx, rax
jb 0x18000e96e
xor ebx, ebx
mov rax, rcx
sub rax, r15
add r12, rax
mov rax, qword [r14 + 0x10]
mov r15, rcx
mov r14, rax
test rax, rax
jne 0x18000e94f
mov r14, qword [rdi + 0x60]
mov r15, qword [rsp + 0x68]
mov r13, qword [rsp + 0x70]
jmp 0x18000ea1d
cmp qword [r14], 0xffffffffffffffff
jne 0x18000ebef
mov r14, qword [r14 + 0x10]
test r14, r14
jne 0x18000ea0f
mov rcx, rbx
mov rax, qword [rdi + 0x38]
mov r14d, 4
mov r9, qword [rsi + 0x240]
mov r8, rdi
mov qword [rsp + 0x30], rax
mov edx, r14d
mov rax, qword [rdi + 0x40]
mov qword [rsp + 0x28], rcx
mov rcx, r13
mov r9, qword [r9 + 0x80]
mov qword [rsp + 0x20], rax
call fcn.180004968
mov eax, dword [rbp - 0x60]
bt eax, 0xb
jae 0x18000ea86
mov r9, qword [rsi + 0x240]
mov r8, rdi
mov edx, r14d
mov rcx, r13
mov r9, qword [r9 + 0x88]
call fcn.180004968
mov eax, dword [rbp - 0x60]
bt eax, 0xe
jae 0x18000eaab
mov r9, qword [rsi + 0x240]
mov r8, rdi
mov edx, r14d
mov rcx, r13
mov r9, qword [r9 + 0x90]
call fcn.180004968
mov eax, dword [rbp - 0x60]
bt eax, 0xc
jae 0x18000ead0
mov r9, qword [rsi + 0x240]
mov r8, rdi
mov edx, r14d
mov rcx, r13
mov r9, qword [r9 + 0x98]
call fcn.180004968
mov eax, dword [rbp - 0x60]
mov ecx, 1
test cl, al
je 0x18000eaf8
mov r9, qword [rsi + 0x240]
mov r8, rdi
mov edx, r14d
mov rcx, r13
mov r9, qword [r9 + 0xa0]
call fcn.180004968
mov eax, dword [rbp - 0x60]
bt eax, 9
jae 0x18000eb1d
mov r9, qword [rsi + 0x240]
mov r8, rdi
mov edx, r14d
mov rcx, r13
mov r9, qword [r9 + 0xa8]
call fcn.180004968
mov eax, dword [rbp - 0x60]
bt eax, 8
jae 0x18000eb3f
mov r9, qword [rsi + 0x240]
mov r8, rdi
mov edx, r14d
mov rcx, r13
mov r9, qword [r9 + 0xb0]
call fcn.180004968
mov rcx, qword [rdi + 0x18]
test rcx, rcx
je 0x18000eb6b
mov rdx, qword [rdi + 0x28]
test rdx, rdx
je 0x18000eb6b
call fcn.180053bdc
test eax, eax
jne 0x18000eb6b
mov rcx, qword [rdi + 0x28]
call fcn.180053d58
mov rax, qword [rdi + 0x18]
mov qword [rdi + 0x28], rax
mov rax, qword [rdi + 0x18]
test rax, rax
jne 0x18000eb81
mov rax, qword [rdi + 0x28]
test rax, rax
je 0x18000eb8b
mov qword [rdi + 0x18], rax
cmp qword [rdi + 0x28], rbx
jne 0x18000eb8b
mov qword [rdi + 0x28], rax
mov rcx, qword [rdi + 0x20]
test rcx, rcx
je 0x18000ebb7
mov rdx, qword [rdi + 0x30]
test rdx, rdx
je 0x18000ebb7
call fcn.180053bdc
test eax, eax
jne 0x18000ebb7
mov rcx, qword [rdi + 0x30]
call fcn.180053d58
mov rax, qword [rdi + 0x20]
mov qword [rdi + 0x30], rax
mov rax, qword [rdi + 0x20]
test rax, rax
jne 0x18000ebcd
mov rax, qword [rdi + 0x30]
test rax, rax
je 0x18000ebd7
mov qword [rdi + 0x20], rax
cmp qword [rdi + 0x30], rbx
jne 0x18000ebd7
mov qword [rdi + 0x30], rax
mov r12, qword [rsp + 0x78]
mov r8, rdi
mov rcx, r12
mov rdx, rsi
call sym.JkDefrag.dll_public:_void___cdecl_JKDefragLib::TreeInsert_struct_DefragDataStruct____ptr64__struct_ItemStruct____ptr64____ptr64
mov rdi, rbx
jmp 0x18000ebf9
mov rcx, qword [r14]
jmp 0x18000ea25
xor ebx, ebx
mov r14, qword [rsp + 0x40]
lea rdx, [rbp - 0x60]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x18000e5ec
jmp 0x18000ec17
xor ebx, ebx
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_FindClose]
mov rcx, r15
call fcn.180053d58
test rdi, rdi
je 0x18000ec89
mov rcx, qword [rdi + 0x30]
test rcx, rcx
je 0x18000ec3b
call fcn.180053d58
mov rcx, qword [rdi + 0x28]
test rcx, rcx
je 0x18000ec49
call fcn.180053d58
mov rcx, qword [rdi + 0x20]
test rcx, rcx
je 0x18000ec57
call fcn.180053d58
mov rcx, qword [rdi + 0x18]
test rcx, rcx
je 0x18000ec65
call fcn.180053d58
cmp qword [rdi + 0x60], rbx
je 0x18000ec81
mov rcx, qword [rdi + 0x60]
mov rbx, qword [rcx + 0x10]
call fcn.180053d58
mov qword [rdi + 0x60], rbx
test rbx, rbx
jne 0x18000ec6b
mov rcx, rdi
call fcn.180053d58
mov rcx, qword [rbp + 0x1f0]
xor rcx, rsp
call fcn.1800149a0
mov rbx, qword [rsp + 0x358]
add rsp, 0x300
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret