Function at 0x140027120
Capabilities:
Enumerate files on windows
Get common file path

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0xca8]
sub rsp, 0xd80
mov qword [rbp - 0x78], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov rax, qword [0x140260d50]
xor rax, rsp
mov qword [rbp + 0xc70], rax
xor r8d, r8d
lea rdx, str.Tool_EnumDriverStoreInf
lea rcx, [rsp + 0x70]
call fcn.14000b870
nop
xor r13d, r13d
mov word [rbp + 0x430], r13w
xor edx, edx
mov r8d, 0x206
lea rcx, [rbp + 0x432]
call fcn.140193010
mov word [rbp + 0x640], r13w
xor edx, edx
mov r8d, 0x206
lea rcx, [rbp + 0x642]
call fcn.140193010
call fcn.140050920
mov r14, qword [rax + 8]
mov qword [rsp + 0x50], r14
mov edx, 0x104
lea rcx, [rbp + 0x430]
call qword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
jne 0x1400271fc
xor r9d, r9d
lea r8, str.return___08x
lea edx, [rax + 2]
lea rcx, [rsp + 0x70]
call fcn.14000ba50
nop
lea rcx, [rsp + 0x70]
call fcn.14000ba00
xor eax, eax
jmp 0x1400278d8
lea rdx, str.DriverStoreFileRepository_
lea rcx, [rbp + 0x430]
call qword [sym.imp.KERNEL32.dll_lstrcatW]
lea r8, [rbp + 0x430]
mov edx, 0x104
lea rcx, [rbp + 0x640]
call fcn.140190fb0
lea rdx, [0x140215674]
lea rcx, [rbp + 0x430]
call qword [sym.imp.KERNEL32.dll_lstrcatW]
lea rdx, [rbp - 0x70]
lea rcx, [rbp + 0x430]
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov qword [rsp + 0x60], rax
cmp rax, 0xffffffffffffffff
je 0x1400278b1
movsxd rax, dword [r14 + 0x350]
mov qword [rsp + 0x68], rax
lea rsi, [0x1402145dc]
mov rdi, qword [rsp + 0x60]
cmp dword [rbp - 0x70], 0x10
jne 0x1400277f2
call fcn.14004cde4
mov ecx, r13d
test rax, rax
setne cl
test ecx, ecx
je 0x140027896
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x48], rbx
lea rcx, [rbp - 0x44]
lea rax, [rbp - 0x44]
test rax, 0xffffffffffff0000
jne 0x1400272e3
movzx edi, cx
mov ecx, edi
call fcn.14004cbb8
test rax, rax
je 0x1400273d0
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x48]
call fcn.1400012a0
mov rbx, qword [rsp + 0x48]
jmp 0x1400273d0
xor eax, eax
or rcx, 0xffffffffffffffff
lea rdi, [rbp - 0x44]
repne scasw ax, word [rdi]
not rcx
dec rcx
mov rdi, rcx
test ecx, ecx
jne 0x140027353
lea rdx, [rbx - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], eax
je 0x1400273d0
cmp dword [rdx + 0x10], eax
jge 0x140027328
cmp dword [rbx - 0xc], eax
jl 0x14002780c
mov dword [rbx - 0x10], r13d
mov word [rbx], r13w
jmp 0x1400273d0
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14002733f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x48], rbx
jmp 0x1400273d0
mov r12d, dword [rbx - 0x10]
lea rsi, [rbp - 0x44]
sub rsi, rbx
sar rsi, 1
test ecx, ecx
js 0x14002788b
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, ecx
jge 0x14002738b
mov edx, edi
lea rcx, [rsp + 0x48]
call fcn.1400015c0
mov rbx, qword [rsp + 0x48]
movsxd rax, edi
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
add rdx, rdx
cmp rsi, r12
lea r12, [rax + rax]
mov r9, r12
ja 0x1400273af
lea r8, [rbx + rsi*2]
call fcn.14018e5f0
jmp 0x1400273b8
lea r8, [rbp - 0x44]
call fcn.14018e7d0
cmp edi, dword [rbx - 0xc]
jg 0x140027880
mov dword [rbx - 0x10], edi
mov word [r12 + rbx], r13w
lea rsi, [0x1402145dc]
call fcn.14004cde4
mov ecx, r13d
test rax, rax
setne cl
test ecx, ecx
je 0x140027875
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x40], rdi
test rsi, 0xffffffffffff0000
jne 0x140027422
movzx esi, si
mov ecx, esi
call fcn.14004cbb8
test rax, rax
je 0x140027437
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.1400012a0
jmp 0x140027432
xor r8d, r8d
mov rdx, rsi
lea rcx, [rsp + 0x40]
call fcn.1400014d0
mov rdi, qword [rsp + 0x40]
movsxd rsi, dword [rbx - 0x10]
test esi, esi
js 0x14002786a
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, esi
or eax, ecx
jge 0x140027465
mov edx, esi
lea rcx, [rsp + 0x48]
call fcn.1400015c0
mov rbx, qword [rsp + 0x48]
lea eax, [rsi + 1]
movsxd rdx, eax
mov rcx, rbx
call fcn.14019178c
cmp esi, dword [rbx - 0xc]
jg 0x14002785f
lea r15, [rbx - 0x10]
mov qword [rbp - 0x80], r15
mov dword [r15], esi
mov word [rbx + rsi*2], r13w
mov r12, r13
mov qword [rsp + 0x58], r13
cmp qword [rsp + 0x68], 0
jle 0x1400276a3
test r12, r12
js 0x140027859
cmp r12, qword [r14 + 0x350]
jge 0x140027859
mov rax, qword [r14 + 0x348]
mov r14, qword [rax + r12*8]
lea rcx, [r14 - 0x18]
lea rsi, [rdi - 0x18]
cmp rcx, rsi
je 0x14002760a
cmp dword [rsi + 0x10], 0
jl 0x140027515
mov rax, qword [rsi]
cmp qword [rcx], rax
jne 0x140027515
call fcn.140001620
mov rdi, rax
or ecx, 0xffffffff
lock xadd dword [rsi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x140027502
mov rcx, qword [rsi]
mov rax, qword [rcx]
mov rdx, rsi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
add rdi, 0x18
mov qword [rsp + 0x40], rdi
mov rbx, qword [rsp + 0x48]
jmp 0x14002760a
movsxd r12, dword [r14 - 0x10]
test r12d, r12d
jne 0x14002757f
mov r12, qword [rsi]
cmp dword [rsi + 8], 0
je 0x140027605
cmp dword [rsi + 0x10], 0
jge 0x140027548
cmp dword [rdi - 0xc], 0
jl 0x140027817
mov dword [rdi - 0x10], r13d
mov word [rdi], r13w
jmp 0x140027605
or eax, 0xffffffff
lock xadd dword [rsi + 0x10], eax
dec eax
test eax, eax
jg 0x140027562
mov rcx, qword [rsi]
mov rax, qword [rcx]
mov rdx, rsi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [r12]
mov rcx, r12
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x40], rdi
mov rbx, qword [rsp + 0x48]
jmp 0x140027605
test r14, r14
je 0x140027838
mov r15d, dword [rdi - 0x10]
mov r13, r14
sub r13, rdi
sar r13, 1
test r12d, r12d
js 0x14002782d
mov ecx, 1
sub ecx, dword [rsi + 0x10]
mov eax, dword [rsi + 0xc]
sub eax, r12d
or eax, ecx
jge 0x1400275c2
mov edx, r12d
lea rcx, [rsp + 0x40]
call fcn.1400015c0
mov rdi, qword [rsp + 0x40]
lea rsi, [r12 + r12]
movsxd rdx, dword [rdi - 0xc]
mov rcx, rdi
mov r9, rsi
add rdx, rdx
cmp r13, r15
ja 0x1400275e3
lea r8, [rdi + r13*2]
call fcn.14018e5f0
jmp 0x1400275eb
mov r8, r14
call fcn.14018e7d0
cmp r12d, dword [rdi - 0xc]
jg 0x140027822
mov dword [rdi - 0x10], r12d
xor r13d, r13d
mov word [rsi + rdi], r13w
mov r15, qword [rbp - 0x80]
mov r12, qword [rsp + 0x58]
movsxd rsi, dword [rdi - 0x10]
test esi, esi
js 0x14002784e
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
sub eax, esi
or eax, ecx
jge 0x140027638
mov edx, esi
lea rcx, [rsp + 0x40]
call fcn.1400015c0
mov rdi, qword [rsp + 0x40]
lea eax, [rsi + 1]
movsxd rdx, eax
mov rcx, rdi
call fcn.14019178c
cmp esi, dword [rdi - 0xc]
jg 0x140027843
mov dword [rdi - 0x10], esi
mov word [rdi + rsi*2], r13w
cmp dword [r15], 0
jl 0x140027678
mov rdx, rdi
mov rcx, rbx
call fcn.140190f4c
test rax, rax
je 0x140027678
sub rax, rbx
sar rax, 1
cmp eax, 0xffffffff
jg 0x14002769e
inc r12
mov qword [rsp + 0x58], r12
mov rsi, qword [rsp + 0x68]
cmp r12, rsi
mov r14, qword [rsp + 0x50]
jl 0x1400274a0
test rsi, rsi
jne 0x1400277a5
jmp 0x1400276a3
mov r14, qword [rsp + 0x50]
mov word [rbp + 0x850], r13w
xor edx, edx
mov r8d, 0x206
lea rcx, [rbp + 0x852]
call fcn.140193010
mov word [rbp + 0xa60], r13w
xor edx, edx
mov r8d, 0x206
lea rcx, [rbp + 0xa62]
call fcn.140193010
lea r11, [rbp - 0x44]
mov qword [rsp + 0x28], r11
lea rax, [rbp + 0x640]
mov qword [rsp + 0x20], rax
lea r9, [0x140215678]
or r8, 0xffffffffffffffff
mov edx, 0x104
lea rcx, [rbp + 0x850]
call fcn.14019119c
lea rdx, [rbp + 0x1e0]
lea rcx, [rbp + 0x850]
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov rsi, rax
cmp rax, 0xffffffffffffffff
je 0x1400277a5
nop dword [rax]
lea rax, [rbp + 0x20c]
mov qword [rsp + 0x30], rax
lea rax, [rbp - 0x44]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x640]
mov qword [rsp + 0x20], rax
lea r9, str._s_s_s
or r8, 0xffffffffffffffff
mov edx, 0x104
lea rcx, [rbp + 0xa60]
call fcn.14019119c
lea r8, [rbp + 0xa60]
mov rdx, qword [r14 + 0x328]
lea rcx, [r14 + 0x318]
call fcn.14004fc0c
lea rdx, [rbp + 0x1e0]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x140027730
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindClose]
nop
lea rdx, [rdi - 0x18]
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400277c1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400277e1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rsi, [0x1402145dc]
mov rdi, qword [rsp + 0x60]
mov r14, qword [rsp + 0x50]
lea rdx, [rbp - 0x70]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
je 0x1400278a1
jmp 0x140027274
mov ecx, 0x80070057
call fcn.140001000
nop
mov ecx, 0x80070057
call fcn.140001000
int3
mov ecx, 0x80070057
call fcn.140001000
int3
mov ecx, 0x80070057
call fcn.140001000
int3
mov ecx, 0x80070057
call fcn.140001000
int3
mov ecx, 0x80070057
call fcn.140001000
int3
mov ecx, 0x80070057
call fcn.140001000
int3
call fcn.14004d690
int3
mov ecx, 0x80070057
call fcn.140001000
int3
mov ecx, 0x80070057
call fcn.140001000
nop
mov ecx, 0x80004005
call fcn.140001000
nop
mov ecx, 0x80070057
call fcn.140001000
int3
mov ecx, 0x80070057
call fcn.140001000
nop
mov ecx, 0x80004005
call fcn.140001000
int3
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FindClose]
mov r13d, dword [r14 + 0x328]
mov r9d, r13d
lea r8, str.return___08x
mov edx, 2
lea rcx, [rsp + 0x70]
call fcn.14000ba50
nop
lea rcx, [rsp + 0x70]
call fcn.14000ba00
mov eax, r13d
mov rcx, qword [rbp + 0xc70]
xor rcx, rsp
call fcn.14018e5d0
lea r11, [rsp + 0xd80]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret