Function at 0x14000d528
Capabilities:
Check if file exists
Enumerate files on windows
Enumerate files recursively
Get file attributes

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x208]
sub rsp, 0x308
mov rax, qword [0x14003f0b8]
xor rax, rsp
mov qword [rbp + 0x1f0], rax
mov qword [rsp + 0x70], r8
mov r14, rdx
mov qword [rsp + 0x68], rdx
mov r15, rcx
xor edx, edx
lea rcx, [rbp - 0x60]
mov r8d, 0x250
mov r13, r9
call sub.msvcrt.dll_memset
xor eax, eax
or rcx, 0xffffffffffffffff
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x78], rcx
mov rsi, rcx
mov r12d, eax
mov qword [rsp + 0x58], rax
mov edi, eax
inc rsi
cmp word [r15 + rsi*2], ax
jne 0x14000d596
add rsi, 0x106
lea rbx, [rsi + rsi]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
nop dword [rax + rax]
mov r8, rbx
mov ebx, 8
mov edx, ebx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
nop dword [rax + rax]
xor edx, edx
mov qword [rsp + 0x50], rax
test rax, rax
jne 0x14000d5e4
mov r12d, ebx
jmp 0x14000dc5c
test r14, r14
je 0x14000d63d
or rdi, 0xffffffffffffffff
inc rdi
cmp word [r14 + rdi*2], dx
jne 0x14000d5ed
add rdi, 0x106
lea rbx, [rdi + rdi]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
nop dword [rax + rax]
mov r8, rbx
mov ebx, 8
mov edx, ebx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
nop dword [rax + rax]
xor edx, edx
mov qword [rsp + 0x60], rax
test rax, rax
jne 0x14000d63d
mov r12d, ebx
mov edi, edx
jmp 0x14000dbf2
mov rcx, qword [rsp + 0x70]
or r14, 0xffffffffffffffff
inc r14
cmp word [rcx + r14*2], dx
jne 0x14000d646
add r14, 0x106
lea rbx, [r14 + r14]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
nop dword [rax + rax]
mov r8, rbx
mov edx, 8
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
nop dword [rax + rax]
xor ebx, ebx
mov qword [rbp - 0x80], rax
test rax, rax
jne 0x14000d694
lea r12d, [rax + 8]
mov edi, ebx
jmp 0x14000dbf2
mov rdx, rsi
lea r8, [0x1400315d0]
mov rsi, qword [rsp + 0x50]
mov r9, r15
mov rcx, rsi
call fcn.14000bdd4
or rax, 0xffffffffffffffff
inc rax
cmp word [rsi + rax*2], bx
jne 0x14000d6b2
mov r15, qword [rsp + 0x60]
lea rax, [rsi + rax*2]
mov qword [rbp - 0x78], rax
mov rax, qword [rsp + 0x68]
test rax, rax
je 0x14000d6fe
mov r9, rax
lea r8, [0x1400315d0]
mov rdx, rdi
mov rcx, r15
call fcn.14000bdd4
or rax, 0xffffffffffffffff
inc rax
cmp word [r15 + rax*2], bx
jne 0x14000d6eb
lea rax, [r15 + rax*2]
mov qword [rsp + 0x58], rax
mov rbx, qword [rsp + 0x70]
lea r8, [0x1400315d0]
mov rdx, r14
mov r9, rbx
mov r14, qword [rbp - 0x80]
mov rcx, r14
call fcn.14000bdd4
or rax, 0xffffffffffffffff
xor edi, edi
inc rax
cmp word [r14 + rax*2], di
jne 0x14000d722
mov rcx, qword [rbp - 0x78]
lea rax, [r14 + rax*2]
mov qword [rbp - 0x80], rax
test r13, r13
lea rax, [0x1400315d8]
mov edx, 0x105
cmovne rax, r13
mov r8, rax
mov qword [rbp - 0x70], rax
call fcn.140004c70
lea rdx, [rbp - 0x60]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
nop dword [rax + rax]
mov qword [rsp + 0x78], rax
cmp rax, 0xffffffffffffffff
je 0x14000d7c4
test rbx, rbx
je 0x14000d786
mov rcx, rbx
call fcn.140014790
mov edi, eax
jmp 0x14000d797
mov ecx, 0x57
call qword [sym.imp.KERNEL32.dll_SetLastError]
nop dword [rax + rax]
test edi, edi
jne 0x14000d7c4
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov r8, r14
lea rdx, str.Error_creating__s_path__Last_Error___x
mov r9d, eax
lea ecx, [rdi + 4]
mov r12d, eax
call fcn.14000f424
jmp 0x14000dbd2
mov r13d, dword [rbp + 0x278]
test r13d, r13d
je 0x14000d7eb
lea r8, str.O:_sG:_sD:P_A_CI_GA____s__A__0x1201bf___SY__A_IOCIOI_GA___SY__A__0x1201bf___BA__A_IOCIOI_GA___BA__A_CIOI_GRGX___BU__A_OICIIO_GA___CO_
xor edx, edx
mov rcx, rbx
call fcn.14000f930
mov edi, eax
test eax, eax
je 0x14000dbc3
mov edx, 0x80
mov rcx, rbx
call fcn.14000e660
mov edi, eax
test eax, eax
je 0x14000dbc3
mov rdi, qword [rbp - 0x78]
lea r8, [rbp - 0x34]
mov ebx, 0x105
mov rcx, rdi
mov edx, ebx
call fcn.140004c70
mov rcx, qword [rbp - 0x80]
lea r8, [rbp - 0x34]
mov edx, ebx
call fcn.140004c70
test byte [rbp - 0x60], 0x10
je 0x14000d8e2
xor edi, edi
cmp qword [rsp + 0x68], rdi
je 0x14000d84b
mov rcx, qword [rsp + 0x58]
lea r8, [rbp - 0x34]
mov edx, ebx
call fcn.140004c70
mov edx, dword [rbp + 0x288]
test edx, edx
je 0x14000db47
movzx ecx, word [rbp - 0x34]
cmp cx, word [0x140031634]
movzx eax, word [rbp - 0x32]
jne 0x14000d877
cmp ax, word [0x140031636]
je 0x14000db47
cmp cx, word [0x140031638]
jne 0x14000d89a
cmp ax, word [0x14003163a]
jne 0x14000d89a
movzx eax, word [rbp - 0x30]
cmp ax, word [0x14003163c]
je 0x14000db47
mov eax, dword [rbp + 0x290]
mov r8, r14
mov r9, qword [rbp - 0x70]
mov rcx, rsi
mov dword [rsp + 0x40], eax
mov eax, dword [rbp + 0x280]
mov dword [rsp + 0x38], edx
mov rdx, r15
mov dword [rsp + 0x30], eax
mov eax, dword [rbp + 0x270]
mov dword [rsp + 0x28], r13d
mov dword [rsp + 0x20], eax
call fcn.14000d528
mov edi, eax
test eax, eax
je 0x14000db91
jmp 0x14000db47
mov rbx, qword [rsp + 0x68]
xor r10d, r10d
test rbx, rbx
je 0x14000d8f8
mov rax, qword [rsp + 0x58]
mov word [rax], r10w
cmp dword [rbp + 0x280], r10d
je 0x14000d959
or rax, 0xffffffffffffffff
inc rax
cmp word [rdi + rax*2], r10w
jne 0x14000d905
cmp eax, 4
jb 0x14000d938
mov eax, eax
lea rdx, str..mui
add rax, 0xfffffffffffffffc
lea rcx, [rdi + rax*2]
call qword [sym.imp.msvcrt.dll__wcsicmp]
nop dword [rax + rax]
xor r10d, r10d
test eax, eax
je 0x14000d959
lea rdx, str.bootfix.bin
mov rcx, rdi
call qword [sym.imp.msvcrt.dll__wcsicmp]
nop dword [rax + rax]
xor r10d, r10d
test eax, eax
jne 0x14000db47
test r13d, r13d
je 0x14000d990
lea r8, str.O:_sG:_sD:P_A__FA____s__A__GRGX___BA__A__GRGX___SY__A__GRGX___BU_S:_AU_FASA_0x000D0116___WD_
xor edx, edx
mov rcx, r14
call fcn.14000f930
xor r10d, r10d
mov edi, eax
test eax, eax
jne 0x14000d990
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
cmp eax, 2
jne 0x14000db91
xor r10d, r10d
test rbx, rbx
je 0x14000daa6
mov edx, r10d
lea rax, [rbp - 0x34]
or rcx, 0xffffffffffffffff
inc rcx
cmp word [rax + rcx*2], r10w
jne 0x14000d9a4
test rcx, rcx
je 0x14000da89
mov rax, r10
lea rbx, [rbp - 0x34]
lea rbx, [rbx + rax*2]
cmp word [rbx], 0x2e
je 0x14000d9d6
inc edx
mov eax, edx
cmp rax, rcx
jb 0x14000d9ba
jmp 0x14000da89
mov rdi, qword [rsp + 0x58]
mov r11d, 0x105
mov eax, r11d
mov r8d, edx
mov rcx, rdi
cmp word [rcx], r10w
je 0x14000d9fa
add rcx, 2
sub rax, 1
jne 0x14000d9ea
test rax, rax
je 0x14000da07
mov rdx, r11
sub rdx, rax
jmp 0x14000da0a
mov rdx, r10
test rax, rax
je 0x14000da67
cmp r8, 0x7ffffffe
ja 0x14000da67
mov r9, r11
lea rcx, [rdi + rdx*2]
sub r9, rdx
je 0x14000da58
lea rax, [r9 + rdx]
lea rdx, [r8 - 0x105]
add rdx, rax
lea r8, [rbp - 0x34]
sub r8, rcx
test rdx, rdx
je 0x14000da58
movzx eax, word [rcx + r8]
test ax, ax
je 0x14000da58
mov word [rcx], ax
dec rdx
add rcx, 2
sub r9, 1
jne 0x14000da39
test r9, r9
lea rax, [rcx - 2]
cmovne rax, rcx
mov word [rax], r10w
lea r8, [0x140031640]
mov rdx, r11
mov rcx, rdi
call fcn.140004cf8
mov r8, rbx
mov edx, 0x105
mov rcx, rdi
call fcn.140004cf8
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
nop dword [rax + rax]
cmp eax, 0xffffffff
je 0x14000daa3
test al, 0x50
cmove rsi, r15
xor r10d, r10d
cmp dword [rbp + 0x290], r10d
jne 0x14000dacf
test rsi, rsi
je 0x14000dac8
mov r8d, dword [rbp + 0x270]
mov rdx, r14
mov rcx, rsi
call fcn.14000dffc
jmp 0x14000dacb
mov eax, r10d
test eax, eax
je 0x14000daf8
call fcn.140005120
mov ecx, 1
mov ebx, eax
call fcn.1400059a4
mov rdx, r14
mov rcx, rsi
call fcn.14000dc98
mov ecx, ebx
mov edi, eax
call fcn.1400059a4
test edi, edi
je 0x14000db6a
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
nop dword [rax + rax]
cmp eax, 0xffffffff
je 0x14000db42
test al, 0x50
jne 0x14000db42
mov edx, 0x80
mov rcx, r14
call fcn.14000e660
mov edi, eax
test eax, eax
je 0x14000db91
test r13d, r13d
je 0x14000db42
lea r8, str.O:_sG:_sD:P_A__FA____s__A__GRGX___BA__A__GRGX___SY__A__GRGX___BU_S:_AU_FASA_0x000D0116___WD_
mov edx, 1
mov rcx, r14
call fcn.14000f930
mov edi, eax
test eax, eax
je 0x14000db91
mov rsi, qword [rsp + 0x50]
mov rcx, qword [rsp + 0x78]
lea rdx, [rbp - 0x60]
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
nop dword [rax + rax]
mov edi, eax
xor eax, eax
test edi, edi
jne 0x14000d802
jmp 0x14000db91
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov r9, r14
lea rdx, str.Error_copying__s_to__s._Last_Error___x
mov r8, rsi
mov dword [rsp + 0x20], eax
mov ecx, 4
call fcn.14000f424
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
cmp eax, 0x12
jne 0x14000dbc3
lea edi, [rax - 0x11]
test r13d, r13d
je 0x14000dbd2
mov rcx, qword [rsp + 0x70]
lea r8, str.O:_sG:_sD:P_A_CI_GA____s__A__0x1201bf___SY__A_IOCIOI_GA___SY__A__0x1201bf___BA__A_IOCIOI_GA___BA__A_CIOI_GRGX___BU__A_OICIIO_GA___CO_
mov edx, edi
call fcn.14000f930
mov edi, eax
test eax, eax
jne 0x14000dbd2
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov r12d, eax
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
nop dword [rax + rax]
mov r8, r14
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
nop dword [rax + rax]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
nop dword [rax + rax]
mov r8, qword [rsp + 0x50]
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
nop dword [rax + rax]
mov rbx, qword [rsp + 0x60]
test rbx, rbx
je 0x14000dc3e
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
nop dword [rax + rax]
mov r8, rbx
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
nop dword [rax + rax]
mov rax, qword [rsp + 0x78]
cmp rax, 0xffffffffffffffff
je 0x14000dc58
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_FindClose]
nop dword [rax + rax]
test edi, edi
jne 0x14000dc6b
mov ecx, r12d
call qword [sym.imp.KERNEL32.dll_SetLastError]
nop dword [rax + rax]
mov eax, edi
mov rcx, qword [rbp + 0x1f0]
xor rcx, rsp
call fcn.140026f10
add rsp, 0x308
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret