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

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbx
push rsi
push rdi
sub rsp, 0x50
mov rdi, rcx
or rcx, 0xffffffffffffffff
xor eax, eax
repne scasw ax, word [rdi]
mov rdi, qword [rsp + 0x70]
mov eax, 0x1f3
not rcx
mov rbx, r9
mov rsi, rdx
dec rcx
sub eax, ecx
mov qword [rsp + 0x38], rcx
mov rcx, rdi
mov dword [rsp + 0x20], eax
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov rcx, rax
mov qword [rsp + 0x28], rax
cmp rax, 0xffffffffffffffff
jne 0x180031655
lea eax, [rcx + 2]
add rsp, 0x50
pop rdi
pop rsi
pop rbx
ret
movsxd rdx, dword [rsp + 0x38]
mov qword [rsp + 0x78], rbp
xor r8d, r8d
mov qword [rsp + 0x30], rdx
mov ebp, 1
nop dword [rax]
test byte [rsi], 0x10
je 0x1800317d5
cmp word [rsi + 0x2c], 0x2e
jne 0x18003169e
movzx eax, word [rsi + 0x2e]
cmp ax, 0x2e
jne 0x180031695
cmp word [rsi + 0x30], 0
je 0x180031828
test ax, ax
je 0x18003181e
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsi + 0x2c]
repne scasw ax, word [rdi]
not rcx
dec rcx
mov qword [rsp + 0x40], rcx
lea eax, [rcx + 1]
cmp dword [rsp + 0x20], eax
jb 0x18003180a
mov rdi, qword [rsp + 0x70]
mov r9, qword [rsp + 0x88]
mov word [rdi + rdx*2 - 2], r8w
lea rdx, [rsi + 0x2c]
mov r8d, 0x10002
mov rcx, rdi
call qword [rsp + 0x80]
mov ebp, eax
test eax, eax
je 0x180031855
xor eax, eax
or rcx, 0xffffffffffffffff
repne scasw ax, word [rdi]
xor ecx, ecx
nop
movzx eax, word [rsi + rcx + 0x2c]
add rcx, 2
mov word [rdi + rcx - 4], ax
test ax, ax
jne 0x180031700
mov rdi, qword [rsp + 0x70]
mov r9, qword [rsp + 0x88]
mov r8, qword [rsp + 0x80]
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdx, rsi
repne scasw ax, word [rdi]
mov eax, dword [0x1800f664c]
mov dword [rdi - 2], eax
movzx eax, word [0x1800f6650]
mov word [rdi + 2], ax
mov rdi, qword [rsp + 0x70]
mov rcx, rdi
call fcn.1800315f0
mov ebp, eax
test eax, eax
je 0x180031855
lea rcx, [rsi + 0x2c]
xor edx, edx
mov r8d, 0x208
call fcn.18004a760
mov eax, dword [rsp + 0x38]
mov r8d, dword [rsp + 0x40]
lea rdx, [rdi + rax*2 - 2]
lea rcx, [rsi + 0x2c]
call fcn.18004a580
mov rax, qword [rsp + 0x30]
mov r9, qword [rsp + 0x88]
xor ecx, ecx
lea rdx, [rsi + 0x2c]
mov r8d, 0x20002
mov word [rdi + rax*2 - 2], cx
mov rcx, rdi
call qword [rsp + 0x80]
mov rdx, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x88]
mov rcx, qword [rsp + 0x28]
mov ebp, eax
mov eax, 0x2a
mov word [rdi + rdx*2 - 2], ax
xor eax, eax
mov word [rdi + rdx*2], ax
jmp 0x180031830
mov word [rdi + rdx*2 - 2], r8w
lea rdx, [rsi + 0x2c]
mov r9, rbx
mov r8d, 1
mov rcx, rdi
call qword [rsp + 0x80]
mov ecx, 0x2a
mov ebp, eax
mov rax, qword [rsp + 0x30]
mov word [rdi + rax*2 - 2], cx
mov rcx, qword [rsp + 0x28]
jmp 0x180031830
mov rdi, qword [rsp + 0x70]
mov rbx, qword [rsp + 0x88]
mov rcx, qword [rsp + 0x28]
jmp 0x180031830
mov rbx, qword [rsp + 0x88]
jmp 0x180031830
mov rbx, qword [rsp + 0x88]
test ebp, ebp
je 0x180031855
mov rdx, rsi
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
mov rdx, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x28]
mov r8d, 0
test eax, eax
jne 0x180031670
mov rcx, qword [rsp + 0x28]
call qword [sym.imp.KERNEL32.dll_FindClose]
mov eax, ebp
mov rbp, qword [rsp + 0x78]
add rsp, 0x50
pop rdi
pop rsi
pop rbx
ret