Function at 0x140027990
Capabilities:
Copy file
Delete file
Get common file path
Read .ini file
Set file attributes

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
sub rsp, 0x6b8
mov qword [rsp + 0x688], 0xfffffffffffffffe
mov rax, qword [0x1402aa808]
xor rax, rsp
mov qword [rsp + 0x6a8], rax
mov dword [rsp + 0x580], 0x100
mov eax, dword [rsp + 0x580]
mov dword [rsp + 0x5b0], eax
mov dword [rsp + 0x310], 0
mov qword [rsp + 0x308], 0
mov qword [rsp + 0x300], 0
lea rcx, [rsp + 0x320]
call fcn.140003370
nop
lea rcx, [rsp + 0x2d0]
call fcn.140062470
nop
lea rcx, [rsp + 0x560]
call fcn.14002ef50
nop
lea rcx, [rsp + 0x318]
call fcn.14002f6a0
lea rcx, [rsp + 0x588]
call fcn.140003370
nop
lea rdx, str.CPrinterDriverInf::AllocAndGetValue__________________________IN._n
mov ecx, 5
call fcn.14001c160
cmp qword [rsp + 0x6c8], 0
je 0x140027a71
cmp qword [rsp + 0x6d0], 0
jne 0x140027a81
mov ecx, 0x57
call qword [sym.imp.KERNEL32.dll_SetLastError]
jmp 0x1400281b6
lea rdx, str.CPrinterDriverInf::AllocAndGetValue__OK__pSection__pKey._n
mov ecx, 5
call fcn.14001c160
mov r8, qword [rsp + 0x6c8]
lea rdx, str.CPrinterDriverInf::AllocAndGetValue_pSection___1_s_._n
mov ecx, 5
call fcn.14001c160
mov r8, qword [rsp + 0x6d0]
lea rdx, str.CPrinterDriverInf::AllocAndGetValue_pKey___1_s_._n
mov ecx, 5
call fcn.14001c160
mov rax, qword [rsp + 0x6c0]
add rax, 0x10
mov rdx, rax
lea rcx, [rsp + 0x588]
call fcn.1400104f0
mov r8d, 0x20a
xor edx, edx
lea rcx, [rsp + 0x350]
call fcn.1401ac6a0
mov r8d, 0x20a
xor edx, edx
lea rcx, [rsp + 0xc0]
call fcn.1401ac6a0
lea rdx, [rsp + 0x350]
mov ecx, 0x105
call qword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
je 0x140027bb2
lea r9, [rsp + 0xc0]
xor r8d, r8d
lea rdx, [0x1401ee5e8]
lea rcx, [rsp + 0x350]
call qword [sym.imp.KERNEL32.dll_GetTempFileNameW]
test eax, eax
je 0x140027bb2
mov rax, qword [rsp + 0x6c0]
add rax, 0x10
mov rcx, rax
call fcn.140003530
xor r8d, r8d
lea rdx, [rsp + 0xc0]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x140027bb2
lea r9, [rsp + 0xc0]
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
mov edx, 0x80
lea rcx, [rsp + 0xc0]
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
lea rdx, [rsp + 0xc0]
lea rcx, [rsp + 0x588]
call fcn.140010520
lea rcx, [rsp + 0x588]
call fcn.140003530
mov r8, rax
lea rdx, str.CPrinterDriverInf::AllocAndGetValue_strTargetInfFile___1_s__IN_n
mov ecx, 5
call fcn.14001c160
mov eax, dword [rsp + 0x5b0]
shl rax, 1
mov r8d, 0xf5c
lea rdx, [0x1401ef908]
mov rcx, rax
call fcn.140047520
mov qword [rsp + 0x300], rax
cmp qword [rsp + 0x300], 0
je 0x140027cd6
lea rcx, [rsp + 0x588]
call fcn.140003530
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 2
lea r9, [rsp + 0x5b8]
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea rcx, [rsp + 0x588]
call fcn.140003530
mov r9, rax
mov r8d, dword [rsp + 0x5b0]
mov rdx, qword [rsp + 0x300]
mov rcx, qword [rsp + 0x6c8]
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
mov dword [rsp + 0x310], eax
mov eax, dword [rsp + 0x5b0]
sub eax, 2
cmp eax, dword [rsp + 0x310]
jne 0x140027ccf
mov rcx, qword [rsp + 0x300]
call fcn.140047560
mov eax, dword [rsp + 0x580]
mov ecx, dword [rsp + 0x5b0]
add ecx, eax
mov eax, ecx
mov dword [rsp + 0x5b0], eax
mov eax, dword [rsp + 0x5b0]
shl rax, 1
mov r8d, 0xf66
lea rdx, [0x1401efa68]
mov rcx, rax
call fcn.140047520
mov qword [rsp + 0x300], rax
jmp 0x140027cd1
jmp 0x140027cd6
jmp 0x140027bfa
lea rdx, str.CPrinterDriverInf::AllocAndGetValue_Get_section_items_finished._n
mov ecx, 5
call fcn.14001c160
movzx eax, word [rsp + 0xc0]
test eax, eax
je 0x140027d2d
lea r8, [rsp + 0xc0]
lea rdx, str.CPrinterDriverInf::AllocAndGetValue_Delete_the_temp_file.___1_s___n
mov ecx, 5
call fcn.14001c160
mov edx, 0x80
lea rcx, [rsp + 0xc0]
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
lea rcx, [rsp + 0xc0]
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
cmp qword [rsp + 0x300], 0
jne 0x140027d88
mov qword [rsp + 0x640], 0
lea rcx, [rsp + 0x588]
call fcn.140003430
nop
lea rcx, [rsp + 0x560]
call fcn.14002eab0
nop
lea rcx, [rsp + 0x2d0]
call fcn.1400629e0
nop
lea rcx, [rsp + 0x320]
call fcn.140003430
mov rax, qword [rsp + 0x640]
jmp 0x14002822b
mov rdx, qword [rsp + 0x300]
lea rcx, [rsp + 0x2d0]
call fcn.1400628a0
test eax, eax
jne 0x140027db7
lea rdx, str.CPrinterDriverInf::AllocAndGetValue__NG__dnlSectionItems.Set._n
mov ecx, 5
call fcn.14001c160
jmp 0x1400281b6
lea rdx, str.CPrinterDriverInf::AllocAndGetValue__OK__dnlSectionItems.Set._n
mov ecx, 5
call fcn.14001c160
mov dword [rsp + 0x5b4], 0
jmp 0x140027de5
mov eax, dword [rsp + 0x5b4]
inc eax
mov dword [rsp + 0x5b4], eax
mov eax, dword [rsp + 0x5b4]
mov qword [rsp + 0x690], rax
lea rcx, [rsp + 0x2d0]
call fcn.140062550
mov rcx, qword [rsp + 0x690]
cmp rcx, rax
jae 0x140027f05
lea rcx, [rsp + 0x5c0]
call fcn.140063cb0
nop
mov eax, dword [rsp + 0x5b4]
mov edx, eax
lea rcx, [rsp + 0x2d0]
call fcn.1400627c0
mov rdx, rax
lea rcx, [rsp + 0x5c0]
call fcn.140063df0
lea rcx, [rsp + 0x5c0]
call fcn.140063dc0
mov rcx, qword [rsp + 0x6c0]
add rcx, 0x48
mov rdx, rax
call fcn.140063680
mov qword [rsp + 0x648], rax
lea rcx, [rsp + 0x5c0]
call fcn.140063d90
mov rcx, qword [rsp + 0x6c0]
add rcx, 0x48
mov rdx, rax
call fcn.140063680
mov qword [rsp + 0x650], rax
lea r8, [rsp + 0x648]
lea rdx, [rsp + 0x650]
lea rcx, [rsp + 0x40]
call fcn.1400334e0
mov qword [rsp + 0x698], rax
mov rax, qword [rsp + 0x698]
mov qword [rsp + 0x6a0], rax
mov r8, qword [rsp + 0x6a0]
lea rdx, [rsp + 0x658]
lea rcx, [rsp + 0x560]
call fcn.140033530
nop
lea rcx, [rsp + 0x40]
call fcn.14002ead0
nop
lea rcx, [rsp + 0x5c0]
call fcn.140063d20
jmp 0x140027dd5
lea rdx, str.CPrinterDriverInf::AllocAndGetValue__OK__prepare_mapSectionItems._n
mov ecx, 5
call fcn.14001c160
mov rdx, qword [rsp + 0x6d0]
lea rcx, [rsp + 0x90]
call fcn.1400033c0
nop
lea r8, [rsp + 0x90]
lea rdx, [rsp + 0x668]
lea rcx, [rsp + 0x560]
call fcn.14002efe0
mov rax, qword [rax]
mov qword [rsp + 0x318], rax
lea rcx, [rsp + 0x90]
call fcn.140003430
lea rdx, [rsp + 0x670]
lea rcx, [rsp + 0x560]
call fcn.14002efb0
mov rdx, rax
lea rcx, [rsp + 0x318]
call fcn.14002f9b0
movzx eax, al
test eax, eax
je 0x14002804a
lea rdx, str.CPrinterDriverInf::AllocAndGetValue_pKey_is_not_found_on_the_section._n
mov ecx, 5
call fcn.14001c160
cmp qword [rsp + 0x6d8], 0
jne 0x140027fcb
mov rcx, qword [rsp + 0x300]
call fcn.140047560
mov qword [rsp + 0x300], 0
jmp 0x1400281b6
mov rcx, qword [rsp + 0x6d8]
call qword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cdqe
shl rax, 1
mov r8d, 0xf8c
lea rdx, [0x1401eff68]
mov rcx, rax
call fcn.140047520
mov qword [rsp + 0x308], rax
lea rdx, [0x1401f87f0]
mov ecx, 5
call fcn.14001c160
cmp qword [rsp + 0x308], 0
jne 0x14002802f
lea rdx, [0x1401f8870]
mov ecx, 2
call fcn.14001c160
jmp 0x1400281b6
mov rdx, qword [rsp + 0x6d8]
mov rcx, qword [rsp + 0x308]
call qword [sym.imp.KERNEL32.dll_lstrcpyW]
jmp 0x14002812a
lea rdx, str.CPrinterDriverInf::AllocAndGetValue_pKey_has_been_found_on_the_section._n
mov ecx, 5
call fcn.14001c160
lea rcx, [rsp + 0x318]
call fcn.140052060
add rax, 0x28
mov rcx, rax
call fcn.140003530
mov r8, rax
lea rdx, str.CPrinterDriverInf::AllocAndGetValue_iter__second.data______1_s__._n
mov ecx, 5
call fcn.14001c160
lea rcx, [rsp + 0x318]
call fcn.140052060
add rax, 0x28
mov rcx, rax
call fcn.140003550
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cdqe
shl rax, 1
mov r8d, 0xf97
lea rdx, [0x1401f02f8]
mov rcx, rax
call fcn.140047520
mov qword [rsp + 0x308], rax
lea rdx, str.CPrinterDriverInf::AllocAndGetValue_return_buffer_allocated._n
mov ecx, 5
call fcn.14001c160
cmp qword [rsp + 0x308], 0
jne 0x140028100
lea rdx, str.CPrinterDriverInf::AllocAndGetValue_Memory_allocation_error.__pBufferReplaced__n
mov ecx, 2
call fcn.14001c160
jmp 0x1400281b6
lea rcx, [rsp + 0x318]
call fcn.140052060
add rax, 0x28
mov rcx, rax
call fcn.140003530
mov rdx, rax
mov rcx, qword [rsp + 0x308]
call qword [sym.imp.KERNEL32.dll_lstrcpyW]
lea rdx, str.CPrinterDriverInf::AllocAndGetValue_buffer_copied._n
mov ecx, 5
call fcn.14001c160
mov rcx, qword [rsp + 0x300]
call fcn.140047560
mov qword [rsp + 0x300], 0
lea rdx, str.CPrinterDriverInf::AllocAndGetValue__________________________OUT._n
mov ecx, 5
call fcn.14001c160
mov rax, qword [rsp + 0x308]
mov qword [rsp + 0x678], rax
lea rcx, [rsp + 0x588]
call fcn.140003430
nop
lea rcx, [rsp + 0x560]
call fcn.14002eab0
nop
lea rcx, [rsp + 0x2d0]
call fcn.1400629e0
nop
lea rcx, [rsp + 0x320]
call fcn.140003430
mov rax, qword [rsp + 0x678]
jmp 0x14002822b
lea rdx, str.CPrinterDriverInf::AllocAndGetValue__________________________Error_OUT._n
mov ecx, 5
call fcn.14001c160
mov rcx, qword [rsp + 0x300]
call fcn.140047560
mov qword [rsp + 0x300], 0
mov qword [rsp + 0x680], 0
lea rcx, [rsp + 0x588]
call fcn.140003430
nop
lea rcx, [rsp + 0x560]
call fcn.14002eab0
nop
lea rcx, [rsp + 0x2d0]
call fcn.1400629e0
nop
lea rcx, [rsp + 0x320]
call fcn.140003430
mov rax, qword [rsp + 0x680]
mov rcx, qword [rsp + 0x6a8]
xor rcx, rsp
call fcn.1401ab2d0
add rsp, 0x6b8
ret