Function at 0x14004bbb0
Capabilities:
Enumerate files on windows
Get common file path
Set current directory

Disassembly:
mov rax, rsp
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x520
mov qword [rsp + 0x98], 0xfffffffffffffffe
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rsi
mov rax, qword [0x140260d50]
xor rax, rsp
mov qword [rsp + 0x510], rax
mov rbx, rdx
mov r15, rcx
lea rcx, [rsp + 0x40]
call fcn.140001110
nop
call fcn.14004cde4
mov rcx, rax
xor r13d, r13d
mov edx, r13d
test rax, rax
setne dl
test edx, edx
jne 0x14004bc1d
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
call fcn.14004cde4
mov rdx, rax
mov ecx, r13d
test rax, rax
setne cl
test ecx, ecx
jne 0x14004bc4c
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x30], rax
lea rdx, [rsp + 0x300]
mov ecx, 0x104
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov r8d, 1
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x40]
call fcn.1400166b0
xor edx, edx
lea rdi, [0x14021120c]
mov rsi, qword [rax]
mov ecx, 2
repe cmpsw word [rsi], word [rdi]
je 0x14004bca1
sbb edx, edx
sbb edx, 0xffffffff
test edx, edx
setne dil
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
or r14, 0xffffffffffffffff
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14004bccb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test dil, dil
je 0x14004bce7
mov r8d, 1
lea rdx, [0x14021120c]
lea rcx, [rsp + 0x40]
call fcn.140006350
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
test eax, eax
jne 0x14004bd5e
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14004bd15
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14004bd36
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
mov ecx, r14d
lock xadd dword [rdx + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x14004bd56
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, r14d
jmp 0x14004c1f8
mov qword [rsp + 0xb0], 0x927
mov qword [rsp + 0xb8], r13
mov qword [rsp + 0xc0], r13
mov dword [rsp + 0xc8], r13d
mov dword [rsp + 0xcc], 0xffffffff
mov qword [rsp + 0xd0], r13
mov dword [rsp + 0xd8], r13d
lea rdx, [rsp + 0xb0]
lea rcx, str.oem.inf
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov r12, rax
mov qword [rsp + 0x48], rax
mov ebx, r13d
cmp rax, 0xffffffffffffffff
setne bl
lea rcx, [r15 + 0x58]
mov r8, r14
xor edx, edx
call fcn.14004f634
lea rcx, [r15 + 0x30]
mov r8, r14
xor edx, edx
call fcn.140064fbc
mov rsi, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x30]
nop word [rax + rax]
test ebx, ebx
je 0x14004c16c
lea r8, [rsp + 0xdc]
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x68]
call fcn.140006ef0
nop
mov r13, qword [rax]
lea rcx, [r13 - 0x18]
lea rdi, [rsi - 0x18]
cmp rcx, rdi
je 0x14004bf61
cmp dword [rdi + 0x10], 0
jl 0x14004be5d
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14004be5d
call fcn.140001620
mov rsi, rax
mov ecx, r14d
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x14004be54
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rsi + 0x18]
jmp 0x14004bf5c
movsxd rbx, dword [r13 - 0x10]
test ebx, ebx
jne 0x14004bec4
mov rbx, qword [rdi]
cmp dword [rdi + 8], 0
je 0x14004bf61
cmp dword [rdi + 0x10], 0
jge 0x14004be98
cmp dword [rsi - 0xc], 0
jge 0x14004be88
mov ecx, 0x80070057
call fcn.140001000
xor r13d, r13d
mov dword [rsi - 0x10], r13d
mov word [rsi], r13w
jmp 0x14004bf64
mov eax, r14d
lock xadd dword [rdi + 0x10], eax
dec eax
test eax, eax
jg 0x14004beb2
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x18]
add rax, 0x18
jmp 0x14004bf5c
test r13, r13
jne 0x14004bed3
mov ecx, 0x80070057
call fcn.140001000
mov eax, dword [rsi - 0x10]
mov dword [rsp + 0x50], eax
mov r12, r13
sub r12, rsi
sar r12, 1
test ebx, ebx
jns 0x14004bef1
mov ecx, 0x80070057
call fcn.140001000
mov ecx, 1
sub ecx, dword [rdi + 0x10]
mov eax, dword [rdi + 0xc]
sub eax, ebx
or eax, ecx
jge 0x14004bf13
mov edx, ebx
lea rcx, [rsp + 0x38]
call fcn.1400015c0
mov rsi, qword [rsp + 0x38]
mov eax, dword [rsp + 0x50]
lea rdi, [rbx + rbx]
movsxd rdx, dword [rsi - 0xc]
mov rcx, rsi
mov r9, rdi
add rdx, rdx
cmp r12, rax
ja 0x14004bf38
lea r8, [rsi + r12*2]
call fcn.14018e5f0
jmp 0x14004bf40
mov r8, r13
call fcn.14018e7d0
cmp ebx, dword [rsi - 0xc]
jg 0x14004bf52
mov dword [rsi - 0x10], ebx
xor r13d, r13d
mov word [rdi + rsi], r13w
jmp 0x14004bf64
mov ecx, 0x80070057
call fcn.140001000
mov qword [rsp + 0x38], rax
xor r13d, r13d
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14004bf84
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
mov rcx, r14
lea rdi, [rsp + 0xdc]
repne scasw ax, word [rdi]
not rcx
dec rcx
mov rsi, rcx
mov rdi, qword [rsp + 0x30]
test ecx, ecx
jne 0x14004c005
lea rdx, [rdi - 0x18]
mov rsi, qword [rdx]
cmp dword [rdx + 8], eax
je 0x14004c089
cmp dword [rdx + 0x10], eax
jge 0x14004bfd7
cmp dword [rdi - 0xc], eax
jge 0x14004bfca
mov ecx, 0x80070057
call fcn.140001000
mov dword [rdi - 0x10], r13d
mov word [rdi], r13w
jmp 0x14004c089
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14004bfee
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x30], rdi
jmp 0x14004c089
mov r12d, dword [rdi - 0x10]
lea rbx, [rsp + 0xdc]
sub rbx, rdi
sar rbx, 1
test ecx, ecx
jns 0x14004c025
mov ecx, 0x80070057
call fcn.140001000
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
sub eax, esi
or eax, ecx
jge 0x14004c047
mov edx, esi
lea rcx, [rsp + 0x30]
call fcn.1400015c0
mov rdi, qword [rsp + 0x30]
movsxd rax, esi
movsxd rdx, dword [rdi - 0xc]
mov rcx, rdi
add rdx, rdx
cmp rbx, r12
lea r12, [rax + rax]
mov r9, r12
ja 0x14004c06b
lea r8, [rdi + rbx*2]
call fcn.14018e5f0
jmp 0x14004c078
lea r8, [rsp + 0xdc]
call fcn.14018e7d0
cmp esi, dword [rdi - 0xc]
jg 0x14004c161
mov dword [rdi - 0x10], esi
mov word [r12 + rdi], r13w
mov rsi, qword [rsp + 0x38]
mov rdx, rsi
mov rcx, r15
call fcn.140049af0
test eax, eax
je 0x14004c144
mov ecx, 0x328
call fcn.14004ca70
mov qword [rsp + 0x50], rax
test rax, rax
je 0x14004c0e6
lea rcx, [r15 + 0x28]
lea rdx, [r15 + 0x20]
lea r9, [r15 + 0x18]
lea r8, [r15 + 0x10]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], rdx
lea rdx, [rsp + 0x30]
mov rcx, rax
call fcn.140048d10
mov rbx, rax
mov rdi, qword [rsp + 0x30]
jmp 0x14004c0e9
mov rbx, r13
lea rax, [r15 + 0x380]
lea rcx, [r15 + 0x358]
lea r9, [r15 + 0x330]
lea r8, [r15 + 0x308]
lea rdx, [r15 + 0x2e0]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rcx
mov rcx, rbx
call fcn.140049130
lea rcx, [r15 + 0x30]
mov r8, rbx
mov rdx, qword [rcx + 0x10]
call fcn.1400651ec
lea rcx, [r15 + 0x58]
lea r8, [rsp + 0xdc]
mov rdx, qword [rcx + 0x10]
call fcn.14004fc0c
nop
lea rdx, [rsp + 0xb0]
mov r12, qword [rsp + 0x48]
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
mov ebx, eax
jmp 0x14004bdf0
mov ecx, 0x80070057
call fcn.140001000
nop
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_FindClose]
lea rcx, [rsp + 0x300]
call qword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
je 0x14004c195
lea rcx, [rsp + 0x300]
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov rsi, qword [r15 + 0x68]
lea rdx, [rdi - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14004c1b5
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14004c1d6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r14d
dec r14d
test r14d, r14d
jg 0x14004c1f6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, esi
mov rcx, qword [rsp + 0x510]
xor rcx, rsp
call fcn.14018e5d0
lea r11, [rsp + 0x520]
mov rbx, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret