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

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
sub rsp, 0x290
mov rax, qword [0x140073010]
xor rax, rsp
mov qword [rsp + 0x280], rax
mov rbx, rdx
mov rbp, rcx
xor esi, esi
nop dword [rax]
mov rcx, qword [0x140076f30]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x140044921
nop word [rax + rax]
mov rcx, qword [0x140076e68]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x140044850
lea rcx, [0x140076e70]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
movsxd rdx, dword [0x140076eac]
lea rcx, [0x140076e70]
mov rax, qword [0x140076ea0]
mov rdi, qword [rax + rdx*8]
lea eax, [rdx + 1]
cdq
idiv dword [0x140076e98]
mov dword [0x140076eac], edx
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rcx, qword [0x140076e60]
xor r8d, r8d
lea edx, [r8 + 1]
call qword [sym.imp.KERNEL32.dll_ReleaseSemaphore]
test rdi, rdi
je 0x140044850
lea rdx, [rsp + 0x24]
mov dword [rsp + 0x24], esi
mov rcx, rdi
call fcn.1400435a0
test eax, eax
je 0x140044900
inc dword [rbx + 0x14]
mov edx, eax
mov rcx, rdi
call fcn.140023600
jmp 0x14004490a
inc dword [rbx + 0x18]
mov eax, dword [rsp + 0x24]
add dword [rbx + 0x10], eax
mov rcx, qword [0x140076e58]
mov r8, rdi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x140044870
lea rcx, [0x140076f40]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov r9, rsi
test rbp, rbp
je 0x140044997
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov rcx, qword [0x140076e58]
mov edx, 8
lea eax, [rax*2 + 2]
mov r8d, eax
mov edi, eax
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [rsp + 0x20], esi
mov r9, rax
movsxd rcx, dword [rsp + 0x20]
cmp rcx, rdi
jae 0x140044997
nop
movsxd r8, dword [rsp + 0x20]
movsxd rcx, dword [rsp + 0x20]
movzx eax, byte [r8 + rbp]
mov byte [rcx + r9], al
mov eax, dword [rsp + 0x20]
inc eax
mov dword [rsp + 0x20], eax
movsxd rax, dword [rsp + 0x20]
cmp rax, rdi
jb 0x140044970
movsxd r8, dword [0x140076f78]
lea rcx, [0x140076f40]
mov rax, qword [0x140076f70]
mov qword [rax + r8*8], r9
mov eax, dword [0x140076f78]
inc eax
cdq
idiv dword [0x140076f68]
mov dword [0x140076f78], edx
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rcx, qword [0x140076f38]
xor r8d, r8d
lea edx, [r8 + 1]
call qword [sym.imp.KERNEL32.dll_ReleaseSemaphore]
mov rcx, qword [0x140076e58]
mov edx, 8
mov r8d, 0x10000
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rdi, rax
test rax, rax
je 0x140044b1d
mov rdx, rbp
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_lstrcpyW]
lea rdx, [0x14001a4fc]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_lstrcatW]
lea rdx, [rsp + 0x30]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov rsi, rax
cmp rax, 0xffffffffffffffff
je 0x140044b0b
nop word [rax + rax]
mov ecx, dword [rsp + 0x30]
and ecx, 0x1410
cmp ecx, 0x10
jne 0x140044aec
lea rcx, [rsp + 0x5c]
call qword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
je 0x140044aec
lea ecx, [rax - 1]
movsxd rdx, ecx
movzx r8d, word [rsp + rdx*2 + 0x5c]
movsxd rdx, eax
add rdx, rdx
cmp r8w, 0x2e
jne 0x140044a87
cmp word [rsp + rdx + 0x5c], 0
je 0x140044aec
cmp eax, 1
jle 0x140044aa9
add eax, 0xfffffffe
movsxd rcx, eax
cmp word [rsp + rcx*2 + 0x5c], 0x2e
jne 0x140044aa9
cmp r8w, 0x2e
jne 0x140044aa9
cmp word [rsp + rdx + 0x5c], 0
je 0x140044aec
lea rcx, [rsp + 0x5c]
call fcn.1400413f0
test al, al
jne 0x140044aec
mov rdx, rbp
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_lstrcpyW]
lea rdx, [0x14001a4d4]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_lstrcatW]
lea rdx, [rsp + 0x5c]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_lstrcatW]
mov rdx, rbx
mov rcx, rdi
call fcn.140044820
lea rdx, [rsp + 0x30]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x140044a40
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindClose]
mov rcx, qword [0x140076e58]
mov r8, rdi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rcx, qword [rsp + 0x280]
xor rcx, rsp
call fcn.140048740
mov rbx, qword [rsp + 0x2c0]
add rsp, 0x290
pop rdi
pop rsi
pop rbp
ret