Function at 0x14008a150
Capabilities:
Copy file
Delete file
Get common file path
Get file version info

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x368
mov qword [rsp + 0x90], 0xfffffffffffffffe
mov rax, qword [0x1401787a0]
xor rax, rsp
mov qword [rsp + 0x350], rax
mov r15, r9
mov r13, r8
mov r12, rdx
mov rsi, rcx
mov qword [rsp + 0x68], rcx
mov rax, qword [rsp + 0x3d0]
mov qword [rsp + 0x58], rax
xor r14d, r14d
mov dword [r9], r14d
call fcn.140097090
mov rcx, rax
xor eax, eax
test rcx, rcx
setne al
test eax, eax
jne 0x14008a1c5
mov ecx, 0x80004005
call fcn.140001a00
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x30], rax
mov r9d, 1
lea r8, [rsp + 0x30]
mov rdx, r12
mov rcx, r13
call fcn.1400672b0
mov ebp, eax
call fcn.140097090
mov rcx, rax
xor eax, eax
test rcx, rcx
setne al
test eax, eax
jne 0x14008a20b
mov ecx, 0x80004005
call fcn.140001a00
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
lea rdx, [rsp + 0x38]
mov rcx, qword [rsp + 0x30]
call fcn.140066e20
test eax, eax
jne 0x14008a29e
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, eax
xor edx, edx
lea rcx, str.CCandidateDriverInfomation::kGetDriverFileVersion___return___d___1__LastError_u_kGetShortPathName_returned_FALSE._n
call fcn.140062f80
mov rdx, qword [rsp + 0x30]
lea rcx, str.__strDriverFilePath__s__n
call fcn.140062f80
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
or rbx, 0xffffffffffffffff
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14008a27a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14008a297
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x14008ab3e
mov rdx, qword [rsp + 0x38]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0x30]
add rdi, 0xffffffffffffffe8
or rbx, 0xffffffffffffffff
cmp rcx, rdi
je 0x14008a306
cmp dword [rdi + 0x10], 0
jl 0x14008a2f8
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14008a2f8
call fcn.140001a90
mov rsi, rax
mov eax, ebx
lock xadd dword [rdi + 0x10], eax
dec eax
test eax, eax
jg 0x14008a2e8
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rsi + 0x18]
mov qword [rsp + 0x30], rax
mov rsi, qword [rsp + 0x68]
jmp 0x14008a306
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x30]
call fcn.1400017b0
test ebp, ebp
jne 0x14008a384
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, eax
xor edx, edx
lea rcx, str.CCandidateDriverInfomation::kGetDriverFileVersion___return___d___2__LastError_u_kStdAfxSearchFile_returned_FALSE._n
call fcn.140062f80
mov rdx, r13
lea rcx, str.__strSearchPath__s__n
call fcn.140062f80
mov rdx, r12
lea rcx, str.__strDriverFile__s__n
call fcn.140062f80
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14008a360
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14008a37d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x14008ab3e
lea rdx, [rsp + 0x240]
mov ecx, 0x104
call qword [sym.imp.KERNEL32.dll_GetTempPathA]
test eax, eax
jne 0x14008a3f7
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, eax
xor edx, edx
lea rcx, str.CCandidateDriverInfomation::kGetDriverFileVersion___return___d___3__LastError_u_GetTempPath_returned_zero._n
call fcn.140062f80
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14008a3d3
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14008a3f0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x14008ab3e
lea r9, [rsp + 0x130]
xor r8d, r8d
lea rdx, [0x1401339f4]
lea rcx, [rsp + 0x240]
call qword [sym.imp.KERNEL32.dll_GetTempFileNameA]
test eax, eax
jne 0x14008a48b
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, eax
xor edx, edx
lea rcx, str.CCandidateDriverInfomation::kGetDriverFileVersion___return___d___4__LastError_u_GetTempFileName_returned_zero._n
call fcn.140062f80
lea rdx, [rsp + 0x240]
lea rcx, str.__szWinTempPath__s__n
call fcn.140062f80
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14008a467
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14008a484
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x14008ab3e
mov rax, qword [rsi + 8]
lea rcx, [rsp + 0x48]
mov qword [rsp + 0x28], rcx
lea rcx, [rsp + 0x88]
mov qword [rsp + 0x20], rcx
lea r9, [rsp + 0x8c]
lea r8, [rsp + 0x98]
mov rdx, qword [rsp + 0x30]
mov rcx, qword [rax + 0x50]
call fcn.140095800
test eax, eax
jne 0x14008a575
cmp dword [rsp + 0x48], eax
jne 0x14008a575
xor r8d, r8d
lea rdx, [rsp + 0x130]
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
jne 0x14008a956
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, eax
xor edx, edx
lea rcx, str.CCandidateDriverInfomation::kGetDriverFileVersion___return___d___5__LastError_u_CopyFile_returned_FALSE._n
call fcn.140062f80
mov rdx, qword [rsp + 0x30]
lea rcx, str.__strDriverFilePath__s__n
call fcn.140062f80
lea rdx, [rsp + 0x130]
lea rcx, str.__szTempFileName__s__n
call fcn.140062f80
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14008a551
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14008a56e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x14008ab3e
mov byte [rsp + 0xa0], 0x88
xor r8d, r8d
lea rdx, [rsp + 0xa0]
mov rcx, qword [rsp + 0x30]
call sub.LZ32.dll_LZOpenFileA
mov esi, eax
mov edx, eax
lea rcx, str.CCandidateDriverInfomation::kGetDriverFileVersion____6__LZOpenFile_returned___X_._n
call fcn.140062f80
mov rdx, qword [rsp + 0x30]
lea rcx, str.__strDriverFilePath__s__n
call fcn.140062f80
test esi, esi
jns 0x14008a7c7
mov rcx, qword [rsp + 0x30]
add rcx, 0xffffffffffffffe8
call fcn.140001a90
lea rdi, [rax + 0x18]
mov qword [rsp + 0x40], rdi
mov r8d, dword [rdi - 0x10]
dec r8d
lea rdx, [rsp + 0x78]
lea rcx, [rsp + 0x40]
call fcn.140010a90
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x14008a642
cmp dword [rdi + 0x10], 0
jl 0x14008a633
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14008a633
call fcn.140001a90
mov rsi, rax
mov eax, ebx
lock xadd dword [rdi + 0x10], eax
dec eax
test eax, eax
jg 0x14008a628
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rsi + 0x18]
mov qword [rsp + 0x40], rax
jmp 0x14008a642
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x40]
call fcn.1400017b0
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14008a661
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea r8, [0x140127fd0]
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x80]
call fcn.140003480
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0x40]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x14008a6d9
cmp dword [rdi + 0x10], 0
jl 0x14008a6ca
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14008a6ca
call fcn.140001a90
mov rsi, rax
mov eax, ebx
lock xadd dword [rdi + 0x10], eax
dec eax
test eax, eax
jg 0x14008a6bf
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rsi + 0x18]
mov qword [rsp + 0x40], rax
jmp 0x14008a6d9
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x40]
call fcn.1400017b0
nop
mov rdx, qword [rsp + 0x80]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14008a6fb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rcx, [rsp + 0x38]
call fcn.140001350
lea rdx, [rsp + 0x38]
mov rdi, qword [rsp + 0x40]
mov rcx, rdi
call fcn.140066e20
test eax, eax
je 0x14008a77a
mov rdx, qword [rsp + 0x38]
lea rcx, [rdx - 0x18]
lea rsi, [rdi - 0x18]
cmp rcx, rsi
je 0x14008a77a
cmp dword [rsi + 0x10], 0
jl 0x14008a767
mov rax, qword [rsi]
cmp qword [rcx], rax
jne 0x14008a767
call fcn.140001a90
mov rdi, rax
mov eax, ebx
lock xadd dword [rsi + 0x10], eax
dec eax
test eax, eax
jg 0x14008a75c
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
jmp 0x14008a77a
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x40]
call fcn.1400017b0
mov rdi, qword [rsp + 0x40]
xor r8d, r8d
lea rdx, [rsp + 0xa0]
mov rcx, rdi
call sub.LZ32.dll_LZOpenFileA
mov esi, eax
mov edx, eax
lea rcx, str.CCandidateDriverInfomation::kGetDriverFileVersion____7__LZOpenFile_returned___X_._n
call fcn.140062f80
mov rdx, rdi
lea rcx, str.__strCompressName__s__n
call fcn.140062f80
nop
lea rdx, [rdi - 0x18]
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14008a7c7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov byte [rsp + 0xa0], 0x88
mov r8d, 0x1000
lea rdx, [rsp + 0xa0]
lea rcx, [rsp + 0x130]
call sub.LZ32.dll_LZOpenFileA
mov edi, eax
mov edx, eax
lea rcx, str.CCandidateDriverInfomation::kGetDriverFileVersion____8__LZOpenFile_returned___X_._n
call fcn.140062f80
lea rdx, [rsp + 0x130]
lea rcx, str.__szTempFileName__s__n
call fcn.140062f80
test esi, esi
js 0x14008a8ca
test edi, edi
js 0x14008a8c3
mov edx, edi
mov ecx, esi
call sub.LZ32.dll_LZCopy
mov ebp, eax
test eax, eax
jns 0x14008a8c3
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r9d, ebp
mov r8d, eax
xor edx, edx
lea rcx, str.CCandidateDriverInfomation::kGetDriverFileVersion___return___d___9__LastError_u_LZCopy_returned___d_._n
call fcn.140062f80
mov rdx, qword [rsp + 0x30]
lea rcx, str.__strDriverFilePath__s__n
call fcn.140062f80
lea rdx, [rsp + 0x130]
lea rcx, str.__szTempFileName__s__n
call fcn.140062f80
mov ecx, esi
call sub.LZ32.dll_LZClose
mov ecx, edi
call sub.LZ32.dll_LZClose
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14008a89f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14008a8bc
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x14008ab3e
mov ecx, esi
call sub.LZ32.dll_LZClose
test edi, edi
js 0x14008a8d5
mov ecx, edi
call sub.LZ32.dll_LZClose
lea rcx, [rsp + 0x130]
call fcn.1400634d0
test eax, eax
jne 0x14008a956
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, eax
xor edx, edx
lea rcx, str.CCandidateDriverInfomation::kGetDriverFileVersion___return___d___10__LastError_u_kResetReadOnly_returned_FALSE._n
call fcn.140062f80
lea rdx, [rsp + 0x130]
lea rcx, str.__szTempFileName__s__n
call fcn.140062f80
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14008a932
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14008a94f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x14008ab3e
lea rdx, [rsp + 0x4c]
lea rcx, [rsp + 0x130]
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov edi, eax
test eax, eax
je 0x14008aab5
mov rcx, rdi
call fcn.140096bcc
mov rsi, rax
mov r9, rax
mov r8d, edi
mov edx, dword [rsp + 0x4c]
lea rcx, [rsp + 0x130]
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
je 0x14008aaad
xor edi, edi
mov qword [rsp + 0x60], rdi
mov dword [rsp + 0x50], edi
lea r9, [rsp + 0x50]
lea r8, [rsp + 0x60]
lea rdx, [0x140126f40]
mov rcx, rsi
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x14008aaad
mov rdx, qword [rsp + 0x60]
mov ecx, dword [rdx + 0x20]
mov eax, ecx
and eax, 1
cmp al, 1
jne 0x14008aa0b
lea r14d, [rdi + 1]
mov dword [r15], edi
xor eax, eax
mov rcx, rbx
lea rdi, str.NTx86
repne scasb al, byte [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.NTx86
mov rcx, qword [rsp + 0x58]
call fcn.1400017b0
jmp 0x14008aaad
and ecx, 4
cmp cl, 4
jne 0x14008aaad
movzx eax, word [rdx + 8]
sub eax, 2
je 0x14008aa7a
cmp eax, 1
jne 0x14008aaad
mov r14d, eax
mov dword [r15], 3
lea r8, [rsp + 0x130]
lea rdx, [rsp + 0x70]
mov rcx, qword [rsp + 0x68]
call fcn.140088bd0
nop
mov rdx, rax
mov rcx, qword [rsp + 0x58]
call fcn.1400018b0
nop
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14008aaad
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14008aaad
mov r14d, 1
mov dword [r15], 2
xor eax, eax
mov rcx, rbx
lea rdi, str.NTx86
repne scasb al, byte [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.NTx86
mov rcx, qword [rsp + 0x58]
call fcn.1400017b0
mov rcx, rsi
call fcn.140096bc4
lea rcx, [rsp + 0x130]
call qword [sym.imp.KERNEL32.dll_DeleteFileA]
lea rcx, [rsp + 0x130]
call qword [sym.imp.KERNEL32.dll_DeleteFileA]
test eax, eax
jne 0x14008aafe
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea rcx, str.CCandidateDriverInfomation::kGetDriverFileVersion____11__LastError_u_DeleteFile_fail._n
call fcn.140062f80
lea rdx, [rsp + 0x130]
lea rcx, str.__szTempFileName__s__n
call fcn.140062f80
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14008ab1e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14008ab3b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, r14d
mov rcx, qword [rsp + 0x350]
xor rcx, rsp
call fcn.1400c6ac0
add rsp, 0x368
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret