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

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x50
mov r15, rdx
mov rdi, rcx
xor ebx, ebx
cmp byte [rcx], bl
je 0x140051a35
lea r13, [rcx + 0x28]
test byte [r13], 0x10
je 0x1400516d5
cmp word [rcx + 0x54], 0x2e
jne 0x1400516d5
movzx eax, word [rcx + 0x56]
test ax, ax
je 0x1400516ae
cmp ax, 0x2e
jne 0x1400516d5
cmp word [rcx + 0x58], bx
jne 0x1400516d5
mov rdx, r13
mov rcx, qword [rcx + 0x278]
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
setne al
mov byte [rdi], al
mov rdx, r15
mov rcx, rdi
call fcn.140051660
jmp 0x140051a37
add rcx, 8
lea rdx, [rbp + 0x58]
call fcn.140048220
nop
lea r8, [rdi + 0x54]
mov rdx, rax
lea rcx, [rbp + 0x50]
call fcn.14003ac90
nop
mov rdx, qword [rbp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, dword [rdx + 0x10]
mov esi, 0xffffffff
cmp eax, 0x7ffffc17
je 0x140051728
mov eax, dword [rdx + 0x10]
cmp eax, esi
je 0x14005171e
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140051728
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
test byte [r13], 0x10
je 0x140051738
lea rcx, [rbp + 0x50]
call fcn.140048c60
lea rdx, [rbp + 0x50]
lea rcx, [rbp - 0x20]
call fcn.1400080e0
nop
lea rax, vtable.JRPropertyMap.0
mov qword [rbp - 0x18], rax
mov qword [rbp - 0x10], rbx
mov byte [rbp - 8], 1
xor edx, edx
lea rcx, [rbp - 0x20]
call fcn.140045f20
nop
lea r14, [r15 + 8]
test r13, r13
je 0x14005183d
mov byte [r15], 1
lea rax, [rbp - 0x20]
cmp rax, r14
je 0x1400517a4
lea rdx, [rbp - 0x20]
mov rcx, r14
call fcn.1400333a0
lea rcx, [r14 + 8]
mov rax, qword [rcx]
lea rdx, [rbp - 0x18]
call qword [rax + 0x80]
movzx eax, byte [rbp - 8]
mov byte [r14 + 0x18], al
lea r8, [r15 + 0x28]
mov rax, r8
mov rcx, r13
mov edx, 4
nop dword [rax]
nop word [rax + rax]
movups xmm0, xmmword [rcx]
movups xmmword [rax], xmm0
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rax + 0x10], xmm1
movups xmm0, xmmword [rcx + 0x20]
movups xmmword [rax + 0x20], xmm0
movups xmm1, xmmword [rcx + 0x30]
movups xmmword [rax + 0x30], xmm1
movups xmm0, xmmword [rcx + 0x40]
movups xmmword [rax + 0x40], xmm0
movups xmm1, xmmword [rcx + 0x50]
movups xmmword [rax + 0x50], xmm1
movups xmm0, xmmword [rcx + 0x60]
movups xmmword [rax + 0x60], xmm0
lea rax, [rax + 0x80]
movups xmm1, xmmword [rcx + 0x70]
movups xmmword [rax - 0x10], xmm1
lea rcx, [rcx + 0x80]
sub rdx, 1
jne 0x1400517c0
movups xmm0, xmmword [rcx]
movups xmmword [rax], xmm0
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rax + 0x10], xmm1
movups xmm0, xmmword [rcx + 0x20]
movups xmmword [rax + 0x20], xmm0
movups xmm1, xmmword [rcx + 0x30]
movups xmmword [rax + 0x30], xmm1
movups xmm0, xmmword [rcx + 0x40]
movups xmmword [rax + 0x40], xmm0
jmp 0x140051978
mov byte [r15], 0
mov rcx, r14
call fcn.1400336e0
lea rcx, [r14 + 8]
mov rax, qword [rcx]
call qword [rax + 0x70]
lea r12, [r15 + 0x28]
xor edx, edx
mov r8d, 0x250
mov rcx, r12
call fcn.1400e24f0
mov rcx, qword [0x14019a6b8]
test rcx, rcx
je 0x140051881
mov rax, qword [rcx]
mov dl, 1
call qword [rax + 0x90]
mov rbx, rax
mov qword [rbp + 0x40], rbx
lea rdx, [rbp - 0x20]
lea rcx, [rbp - 0x30]
call fcn.1400080e0
nop
mov rax, qword [rbx]
xor r8d, r8d
mov rbx, qword [rbp - 0x30]
mov rdx, rbx
mov rcx, qword [rbp + 0x40]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov byte [rbp + 0x40], al
lea rdx, [rbx - 0x18]
mov ecx, dword [rdx + 0x10]
cmp ecx, 0x7ffffc17
je 0x1400518d7
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x1400518cd
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400518d7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov r8, r12
cmp byte [rbp + 0x40], 0
je 0x140051978
lea rdx, [rbp - 0x28]
lea rcx, [rbp - 0x20]
call fcn.140046c90
mov rdx, r12
mov rcx, qword [rax]
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov rbx, rax
mov rdx, qword [rbp - 0x28]
add rdx, 0xffffffffffffffe8
mov ecx, dword [rdx + 0x10]
cmp ecx, 0x7ffffc17
je 0x140051931
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140051927
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140051931
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov r8, r12
cmp rbx, 0xffffffffffffffff
je 0x140051978
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FindClose]
mov byte [r15], 1
lea rax, [rbp - 0x20]
cmp rax, r14
je 0x140051981
lea rdx, [rbp - 0x20]
mov rcx, r14
call fcn.1400333a0
lea rcx, [r14 + 8]
mov rax, qword [rcx]
lea rdx, [rbp - 0x18]
call qword [rax + 0x80]
movzx eax, byte [rbp - 8]
mov byte [r14 + 0x18], al
mov r8, r12
mov r12, r8
cmp byte [r15], 0
je 0x140051990
test byte [r12], 0x10
je 0x140051990
mov rcx, r14
call fcn.140048c60
mov byte [r15 + 0x20], 0
lea rax, vtable.JRPropertyMap.0
mov qword [rbp - 0x18], rax
mov rcx, qword [rbp - 0x10]
test rcx, rcx
je 0x1400519bb
mov rax, qword [rcx]
mov edx, 1
call qword [rax]
mov qword [rbp - 0x10], 0
mov rdx, qword [rbp - 0x20]
add rdx, 0xffffffffffffffe8
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x1400519eb
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x1400519e1
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400519eb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, r13
mov rcx, qword [rdi + 0x278]
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
setne al
mov byte [rdi], al
mov rdx, qword [rbp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x140051a31
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140051a26
lock xadd dword [rdx + 0x10], esi
sub esi, 1
jg 0x140051a31
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
nop
mov al, 1
jmp 0x140051a37
xor al, al
mov rbx, qword [rsp + 0x98]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret