Function at 0x14006e780
Capabilities:
Enumerate files on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov rsi, rcx
mov r12, rdx
test rcx, rcx
je 0x14006ec20
test rdx, rdx
je 0x14006ec20
mov rdi, qword [sym.imp.msvcrt.dll__errno]
call rdi
mov r13, qword [rsi]
mov dword [rax], 0
test r13, r13
je 0x14006e8a0
mov rcx, qword [r13 + 0x250]
mov rdx, r13
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
je 0x14006ec90
mov r12, qword [rsi]
cmp word [r12 + 0x2c], 0
lea r8, [r12 + 0x2c]
je 0x14006ecb5
xor eax, eax
jmp 0x14006e804
cmp rax, 0xff
je 0x14006ec34
mov rdx, rax
add rax, 1
cmp word [r12 + rax*2 + 0x2c], 0
jne 0x14006e7f8
lea rbx, [rdx + 2]
mov r9d, ebx
lea rax, [r12 + 0x258]
xor edx, edx
xor ecx, ecx
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0x100
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
jne 0x14006e871
xor eax, eax
nop word [rax + rax]
movzx ecx, word [r12 + rax*2 + 0x2c]
mov rdx, qword [rsi]
mov byte [rdx + rax + 0x258], cl
add rax, 1
cmp rax, rbx
jne 0x14006e858
mov rax, qword [rsi]
mov byte [rax + 0x357], 0
mov r13, qword [rsi]
add r13, 0x258
mov rax, r13
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp byte [r12], 0
je 0x14006ec98
mov rdx, r12
xor eax, eax
jmp 0x14006e8c3
cmp eax, 0x80000000
je 0x14006ec98
add rdx, 1
add eax, 1
cmp byte [rdx], 0
jne 0x14006e8b8
and eax, 0x7fffffff
mov ebx, eax
je 0x14006ec98
mov edx, 1
mov ecx, 0x358
call sub.msvcrt.dll_calloc
mov qword [rsp + 0x48], rax
mov qword [rsi], rax
test rax, rax
je 0x14006ecea
movzx ebp, byte [r12 + rbx - 1]
xor r14d, r14d
cmp bpl, 0x2a
jne 0x14006eba0
cmp byte [r12], 0
je 0x14006eca5
mov rax, r12
xor r9d, r9d
jmp 0x14006e935
cmp r9d, 0x80000000
je 0x14006eca5
add rax, 1
add r9d, 1
cmp byte [rax], 0
jne 0x14006e928
and r9d, 0x7fffffff
lea r15d, [r9 + 1]
mov rbx, r15
mov edx, 2
mov rcx, r15
call sub.msvcrt.dll_calloc
mov rbp, rax
test rax, rax
je 0x14006eccc
xor edx, edx
xor ecx, ecx
mov dword [rsp + 0x28], ebx
mov r9d, ebx
mov qword [rsp + 0x20], rax
mov r8, r12
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jne 0x14006eb40
lea rax, [r15 - 1]
cmp rax, 0xe
jbe 0x14006ecc5
mov rdx, r15
xor eax, eax
pxor xmm3, xmm3
and edx, 0xfffffff0
nop dword [rax]
movdqu xmm0, xmmword [r12 + rax]
movdqa xmm1, xmm3
pcmpgtb xmm1, xmm0
movdqa xmm2, xmm0
punpcklbw xmm2, xmm1
punpckhbw xmm0, xmm1
movups xmmword [rbp + rax*2], xmm2
movups xmmword [rbp + rax*2 + 0x10], xmm0
add rax, 0x10
cmp rax, rdx
jne 0x14006e9a8
mov rax, r15
and rax, 0xfffffffffffffff0
cmp rax, r15
je 0x14006eb40
movsx dx, byte [r12 + rax]
mov word [rbp + rax*2], dx
lea rdx, [rax + 1]
cmp rdx, r15
jae 0x14006eb40
movsx cx, byte [r12 + rax + 1]
mov word [rbp + rdx*2], cx
lea rdx, [rax + 2]
cmp rdx, r15
jae 0x14006eb40
movsx cx, byte [r12 + rax + 2]
mov word [rbp + rdx*2], cx
lea rdx, [rax + 3]
cmp r15, rdx
jbe 0x14006eb40
movsx cx, byte [r12 + rax + 3]
mov word [rbp + rdx*2], cx
lea rdx, [rax + 4]
cmp r15, rdx
jbe 0x14006eb40
movsx cx, byte [r12 + rax + 4]
mov word [rbp + rdx*2], cx
lea rdx, [rax + 5]
cmp r15, rdx
jbe 0x14006eb40
movsx cx, byte [r12 + rax + 5]
mov word [rbp + rdx*2], cx
lea rdx, [rax + 6]
cmp r15, rdx
jbe 0x14006eb40
movsx cx, byte [r12 + rax + 6]
mov word [rbp + rdx*2], cx
lea rdx, [rax + 7]
cmp r15, rdx
jbe 0x14006eb40
movsx cx, byte [r12 + rax + 7]
mov word [rbp + rdx*2], cx
lea rdx, [rax + 8]
cmp r15, rdx
jbe 0x14006eb40
movsx cx, byte [r12 + rax + 8]
mov word [rbp + rdx*2], cx
lea rdx, [rax + 9]
cmp r15, rdx
jbe 0x14006eb40
movsx cx, byte [r12 + rax + 9]
mov word [rbp + rdx*2], cx
lea rdx, [rax + 0xa]
cmp r15, rdx
jbe 0x14006eb40
movsx cx, byte [r12 + rax + 0xa]
mov word [rbp + rdx*2], cx
lea rdx, [rax + 0xb]
cmp r15, rdx
jbe 0x14006eb40
movsx cx, byte [r12 + rax + 0xb]
mov word [rbp + rdx*2], cx
lea rdx, [rax + 0xc]
cmp r15, rdx
jbe 0x14006eb40
movsx cx, byte [r12 + rax + 0xc]
mov word [rbp + rdx*2], cx
lea rdx, [rax + 0xd]
cmp r15, rdx
jbe 0x14006eb40
movsx cx, byte [r12 + rax + 0xd]
mov word [rbp + rdx*2], cx
lea rdx, [rax + 0xe]
cmp r15, rdx
jbe 0x14006eb40
movsx ax, byte [r12 + rax + 0xe]
mov word [rbp + rdx*2], ax
nop word cs:[rax + rax]
mov rbx, qword [rsi]
mov rcx, rbp
mov rdx, rbx
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov rcx, rbp
mov qword [rbx + 0x250], rax
call sub.msvcrt.dll_free
test r14, r14
je 0x14006eb6b
mov rcx, r14
call sub.msvcrt.dll_free
mov r12, qword [rsi]
cmp qword [r12 + 0x250], 0xffffffffffffffff
jne 0x14006e7de
mov rcx, r12
call sub.msvcrt.dll_free
mov qword [rsi], 0
call rdi
mov dword [rax], 0x16
jmp 0x14006e885
lea rcx, [rbx + 3]
call sub.msvcrt.dll_malloc
mov r14, rax
test rax, rax
je 0x14006ecd9
mov rdx, r12
mov rcx, rax
cmp bpl, 0x2f
je 0x14006ec44
cmp bpl, 0x5c
je 0x14006ec44
call sub.msvcrt.dll_strcpy
mov r12, r14
mov rdx, r14
mov ecx, dword [rdx]
add rdx, 4
lea eax, [rcx - 0x1010101]
not ecx
and eax, ecx
and eax, 0x80808080
je 0x14006ebd6
mov ecx, eax
shr ecx, 0x10
test eax, 0x8080
cmove eax, ecx
lea rcx, [rdx + 2]
cmove rdx, rcx
mov ecx, 0x2a2f
mov ebx, eax
add bl, al
sbb rdx, 3
mov word [rdx], cx
mov byte [rdx + 2], 0
jmp 0x14006e90f
call qword [sym.imp.msvcrt.dll__errno]
xor r13d, r13d
mov dword [rax], 0x16
jmp 0x14006e885
mov ebx, 0x100
mov r9d, 0x100
jmp 0x14006e81b
call sub.msvcrt.dll_strcpy
mov r12, rax
mov rdx, rax
mov ecx, dword [rdx]
add rdx, 4
lea eax, [rcx - 0x1010101]
not ecx
and eax, ecx
and eax, 0x80808080
je 0x14006ec4f
mov ecx, eax
shr ecx, 0x10
test eax, 0x8080
cmove eax, ecx
lea rcx, [rdx + 2]
cmove rdx, rcx
mov ebx, eax
add bl, al
mov eax, 0x2a
sbb rdx, 3
mov word [rdx], ax
jmp 0x14006e90f
xor r13d, r13d
jmp 0x14006e885
call rdi
mov dword [rax], 2
jmp 0x14006e885
mov r15d, 1
mov ebx, 1
jmp 0x14006e950
mov ebx, 1
mov r9d, 1
jmp 0x14006e81b
xor eax, eax
jmp 0x14006e9e5
test r14, r14
je 0x14006ecd9
mov rcx, r14
call sub.msvcrt.dll_free
mov rcx, qword [rsp + 0x48]
call sub.msvcrt.dll_free
mov qword [rsi], 0
call rdi
xor r13d, r13d
mov dword [rax], 0xc
jmp 0x14006e885