Function at 0x140054240
Capabilities:
Get common file path

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x480
mov qword [rsp + 0x58], 0xfffffffffffffffe
mov qword [rsp + 0x4d8], rbx
mov rax, qword [0x14012ce40]
xor rax, rsp
mov qword [rsp + 0x470], rax
mov r15, r8
mov rbp, rdx
mov rsi, rcx
mov r14, qword [rsp + 0x4e0]
mov r13, qword [rcx + 0x430]
mov word [rsp + 0x270], 0
xor edx, edx
mov r8d, 0x1fe
lea rcx, [rsp + 0x272]
call fcn.1400b57e0
mov dword [r14], 0
mov word [rsp + 0x60], 0
xor edx, edx
mov r8d, 0x206
lea rcx, [rsp + 0x62]
call fcn.1400b57e0
mov rax, qword [0x1401370f0]
test rax, rax
jne 0x140054300
mov ecx, 0x310
call fcn.140084d88
mov qword [rsp + 0x30], rax
test rax, rax
je 0x1400542f7
mov rcx, rax
call fcn.140050830
jmp 0x1400542f9
xor eax, eax
mov qword [0x1401370f0], rax
xor r9d, r9d
mov r8, rbp
lea rdx, str.CopyDeleteFiles__s___deleteFiles_d
mov rcx, rax
call fcn.140050c00
mov rdx, rbp
mov rcx, rsi
call fcn.1400533a0
test eax, eax
jne 0x14005486f
xor ebx, ebx
xor r9d, r9d
xor edx, edx
lea r8d, [rbx + 2]
mov rcx, rbp
call qword [sym.imp.SETUPAPI.dll_SetupOpenInfFileW]
mov qword [rsi], rax
cmp rax, 0xffffffffffffffff
jne 0x140054394
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov rax, qword [0x1401370f0]
test rax, rax
jne 0x140054380
mov ecx, 0x310
call fcn.140084d88
mov qword [rsp + 0x30], rax
test rax, rax
je 0x140054377
mov rcx, rax
call fcn.140050830
jmp 0x140054379
xor eax, eax
mov qword [0x1401370f0], rax
mov r9, rbp
lea r8, str.Failed_to_open_inf_file__s
mov edx, ebx
mov rcx, rax
call fcn.140050e40
test ebx, ebx
je 0x140054410
mov eax, ebx
and eax, 0xe0000000
cmp eax, 0xe0000000
jne 0x1400543b1
movzx edi, bx
or edi, 0x800f0000
jmp 0x1400543c2
test ebx, ebx
jg 0x1400543b9
mov edi, ebx
jmp 0x1400543c2
movzx edi, bx
or edi, 0x80070000
mov rax, qword [0x1401370f0]
test rax, rax
jne 0x1400543f5
mov ecx, 0x310
call fcn.140084d88
mov qword [rsp + 0x30], rax
test rax, rax
je 0x1400543ec
mov rcx, rax
call fcn.140050830
jmp 0x1400543ee
xor eax, eax
mov qword [0x1401370f0], rax
mov r9, rbp
lea r8, str.Failed_to_open_inf_file__s
mov edx, edi
mov rcx, rax
call fcn.140050e40
mov eax, ebx
jmp 0x14005486f
call qword [sym.imp.SETUPAPI.dll_SetupOpenFileQueue]
mov r12, rax
cmp rax, 0xffffffffffffffff
jne 0x140054490
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov rax, qword [0x1401370f0]
test rax, rax
jne 0x14005445a
mov ecx, 0x310
call fcn.140084d88
mov qword [rsp + 0x30], rax
test rax, rax
je 0x140054451
mov rcx, rax
call fcn.140050830
jmp 0x140054453
xor eax, eax
mov qword [0x1401370f0], rax
lea r8, str.SetupOpenFileQueue___failed
mov edx, ebx
mov rcx, rax
call fcn.140050e40
mov rcx, qword [rsi]
cmp rcx, 0xffffffffffffffff
je 0x14005447a
call qword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
mov qword [rsi], 0xffffffffffffffff
mov qword [rsi + 8], 0
mov eax, ebx
jmp 0x14005486f
lea r9, [rsp + 0x40]
mov r8, r13
lea rdx, [rsi + 0x20]
mov rcx, qword [rsi]
call qword [sym.imp.SETUPAPI.dll_SetupFindFirstLineW]
test eax, eax
jne 0x140054526
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov ecx, eax
and ecx, 0xe0000000
cmp ecx, 0xe0000000
jne 0x1400544cc
movzx edi, ax
or edi, 0x800f0000
jmp 0x1400544dd
test eax, eax
jg 0x1400544d4
mov edi, eax
jmp 0x1400544dd
movzx edi, ax
or edi, 0x80070000
mov rax, qword [0x1401370f0]
test rax, rax
jne 0x140054510
mov ecx, 0x310
call fcn.140084d88
mov qword [rsp + 0x30], rax
test rax, rax
je 0x140054507
mov rcx, rax
call fcn.140050830
jmp 0x140054509
xor eax, eax
mov qword [0x1401370f0], rax
lea r8, str.SetupFindFirstLine___failed
mov edx, edi
mov rcx, rax
call fcn.140050e40
jmp 0x140054841
lea rax, [rsp + 0x38]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0x104
lea r9, [rsp + 0x60]
xor edx, edx
xor ecx, ecx
lea r8d, [rdx + 1]
call sub.WINSPOOL.DRV_GetPrinterDriverDirectoryW
lea r8, [rsp + 0x60]
mov edx, 0x101d0
mov rcx, qword [rsi]
call qword [sym.imp.SETUPAPI.dll_SetupSetDirectoryIdW]
test eax, eax
jne 0x1400545b1
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
and eax, 0xe0000000
cmp eax, 0xe0000000
jne 0x140054580
movzx edi, bx
or edi, 0x800f0000
jmp 0x140054591
test ebx, ebx
jg 0x140054588
mov edi, ebx
jmp 0x140054591
movzx edi, bx
or edi, 0x80070000
call fcn.1400507c0
mov rcx, rax
lea r9, [rsp + 0x60]
lea r8, str.SetupSetDirectoryId1__s__failed
mov edx, edi
call fcn.140050e40
jmp 0x140054841
lea rax, [rsp + 0x38]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0x104
lea r9, [rsp + 0x60]
xor edx, edx
xor ecx, ecx
lea r8d, [rdx + 1]
call sub.WINSPOOL.DRV_GetPrintProcessorDirectoryW
lea r8, [rsp + 0x60]
mov edx, 0x101d1
mov rcx, qword [rsi]
call qword [sym.imp.SETUPAPI.dll_SetupSetDirectoryIdW]
test eax, eax
jne 0x14005463c
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
and eax, 0xe0000000
cmp eax, 0xe0000000
jne 0x14005460b
movzx edi, bx
or edi, 0x800f0000
jmp 0x14005461c
test ebx, ebx
jg 0x140054613
mov edi, ebx
jmp 0x14005461c
movzx edi, bx
or edi, 0x80070000
call fcn.1400507c0
mov rcx, rax
lea r9, [rsp + 0x60]
lea r8, str.SetupSetDirectoryId2__s__failed
mov edx, edi
call fcn.140050e40
jmp 0x140054841
mov edx, 0x104
lea rcx, [rsp + 0x60]
call qword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
lea r8, [rsp + 0x60]
mov edx, 0x101d2
mov rcx, qword [rsi]
call qword [sym.imp.SETUPAPI.dll_SetupSetDirectoryIdW]
test eax, eax
jne 0x1400546b3
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
and eax, 0xe0000000
cmp eax, 0xe0000000
jne 0x140054682
movzx edi, bx
or edi, 0x800f0000
jmp 0x140054693
test ebx, ebx
jg 0x14005468a
mov edi, ebx
jmp 0x140054693
movzx edi, bx
or edi, 0x80070000
call fcn.1400507c0
mov rcx, rax
lea r9, [rsp + 0x60]
lea r8, str.SetupSetDirectoryId3__s__failed
mov edx, edi
call fcn.140050e40
jmp 0x140054841
lea rcx, [rsp + 0x40]
call qword [sym.imp.SETUPAPI.dll_SetupGetFieldCount]
mov ebp, eax
mov edi, 1
cmp eax, edi
jb 0x140054797
nop
mov qword [rsp + 0x20], 0
mov r9d, 0x100
lea r8, [rsp + 0x270]
mov edx, edi
lea rcx, [rsp + 0x40]
call qword [sym.imp.SETUPAPI.dll_SetupGetStringFieldW]
call fcn.1400507c0
mov rcx, rax
lea r8, [rsp + 0x270]
lea rdx, str.Copy_Section_files____s
call fcn.140050c00
mov dword [rsp + 0x28], 0x2400
lea rax, [rsp + 0x270]
mov qword [rsp + 0x20], rax
xor r9d, r9d
mov r8, qword [rsi]
mov rdx, r15
mov rcx, r12
call qword [sym.imp.SETUPAPI.dll_SetupQueueCopySectionW]
test eax, eax
je 0x140054744
add edi, 1
cmp edi, ebp
jbe 0x1400546d0
jmp 0x140054797
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
and eax, 0xe0000000
cmp eax, 0xe0000000
jne 0x140054763
movzx edi, bx
or edi, 0x800f0000
jmp 0x140054774
test ebx, ebx
jg 0x14005476b
mov edi, ebx
jmp 0x140054774
movzx edi, bx
or edi, 0x80070000
call fcn.1400507c0
mov rcx, rax
lea r9, [rsp + 0x270]
lea r8, str.SetupQueueCopySection__s_failed
mov edx, edi
call fcn.140050e40
jmp 0x140054841
xor ecx, ecx
call qword [sym.imp.SETUPAPI.dll_SetupInitDefaultQueueCallback]
mov r9, rax
mov r8, qword [sym.imp.SETUPAPI.dll_SetupDefaultQueueCallbackW]
mov rdx, r12
xor ecx, ecx
call qword [sym.imp.SETUPAPI.dll_SetupCommitFileQueueW]
test eax, eax
jne 0x14005482d
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
cmp eax, 0xbc2
je 0x14005480e
cmp eax, 0xbc3
je 0x14005480e
and eax, 0xe0000000
cmp eax, 0xe0000000
jne 0x1400547e5
movzx edi, bx
or edi, 0x800f0000
jmp 0x1400547f6
test ebx, ebx
jg 0x1400547ed
mov edi, ebx
jmp 0x1400547f6
movzx edi, bx
or edi, 0x80070000
call fcn.1400507c0
mov rcx, rax
lea r8, str.SetupCommitFileQueue___failed
mov edx, edi
call fcn.140050e40
jmp 0x140054841
call fcn.1400507c0
mov rcx, rax
lea rdx, str.SetupCommitFileQueue___Success__but_requires_a_REBOOT
call fcn.140050c00
mov dword [r14], 1
xor ebx, ebx
jmp 0x140054841
call fcn.1400507c0
mov rcx, rax
lea rdx, str.SetupCommitFileQueue___Success
call fcn.140050c00
test r12, r12
je 0x14005484f
mov rcx, r12
call qword [sym.imp.SETUPAPI.dll_SetupCloseFileQueue]
mov rcx, qword [rsi]
cmp rcx, 0xffffffffffffffff
je 0x14005485e
call qword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
mov qword [rsi], 0xffffffffffffffff
mov qword [rsi + 8], 0
mov eax, ebx
mov rcx, qword [rsp + 0x470]
xor rcx, rsp
call fcn.1400b09d0
mov rbx, qword [rsp + 0x4d8]
add rsp, 0x480
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret