Function at 0x14003ab80
Capabilities:
Delete registry key

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov eax, 0x2310
call fcn.1400a28a0
sub rsp, rax
mov qword [rsp + 0x150], 0xfffffffffffffffe
mov qword [rsp + 0x2360], rbx
mov rax, qword [0x1400e71f0]
xor rax, rsp
mov qword [rsp + 0x2300], rax
mov edi, r8d
mov r15, rdx
mov rbp, rcx
xor r14d, r14d
mov qword [rsp + 0x30], r14
mov dword [rsp + 0x38], r14d
mov dword [rsp + 0x78], r14d
mov r12d, 1
mov dword [rsp + 0x54], r12d
call fcn.140069504
mov rsi, qword [rax + 8]
mov qword [rsp + 0x60], rsi
xor r9d, r9d
xor r8d, r8d
mov edx, r12d
mov rcx, r15
call fcn.140022a60
cmp eax, r12d
jne 0x14003ac15
test edi, edi
jne 0x14003ac15
lea eax, [rdi + 3]
jmp 0x14003be57
lea rax, [rsi + 0xb90]
mov qword [rsp + 0x110], rax
mov rdx, r15
mov rcx, rax
call fcn.140060a10
mov dword [rsp + 0x98], eax
mov qword [rsp + 0x138], r14
mov qword [rsp + 0x140], r14
mov dword [rsp + 0x148], 0xf000c
lea r8, [rsp + 0x138]
lea rdx, [rsp + 0x30]
mov rcx, r15
call sub.WINSPOOL.DRV_OpenPrinterW
test eax, eax
jne 0x14003ac84
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, 4
cmp eax, 5
cmove r12d, ecx
mov eax, r12d
jmp 0x14003be57
call fcn.140015a10
mov ebx, eax
mov dword [rsp + 0xa8], eax
cmp eax, 2
je 0x14003acb0
cmp eax, 3
je 0x14003acb0
lea rdx, [rsp + 0x640]
mov rcx, r15
call fcn.14002a7b0
mov esi, eax
jmp 0x14003acc4
lea rdx, [rsp + 0x640]
mov rcx, qword [rsp + 0x30]
call fcn.1400233c0
mov esi, eax
cmp esi, 0xffffffff
jne 0x14003acdb
mov rcx, qword [rsp + 0x30]
call sub.WINSPOOL.DRV_ClosePrinter
mov eax, r12d
jmp 0x14003be57
mov dword [rsp + 0x38], r14d
lea rax, [rsp + 0x38]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r14d
xor r9d, r9d
xor edx, edx
lea r8d, [r9 + 3]
mov rcx, qword [rsp + 0x30]
call sub.WINSPOOL.DRV_GetPrinterDriverW
test eax, eax
jne 0x14003ad23
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
je 0x14003ad23
mov rcx, qword [rsp + 0x30]
call sub.WINSPOOL.DRV_ClosePrinter
mov eax, r12d
jmp 0x14003be57
mov edx, dword [rsp + 0x38]
mov ecx, 0x40
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov r13, rax
test rax, rax
jne 0x14003ad4c
mov rcx, qword [rsp + 0x30]
call sub.WINSPOOL.DRV_ClosePrinter
mov eax, r12d
jmp 0x14003be57
lea rax, [rsp + 0x38]
mov qword [rsp + 0x28], rax
mov eax, dword [rsp + 0x38]
mov dword [rsp + 0x20], eax
mov r9, r13
xor edx, edx
lea r8d, [rdx + 3]
mov rcx, qword [rsp + 0x30]
call sub.WINSPOOL.DRV_GetPrinterDriverW
test eax, eax
jne 0x14003ad90
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GlobalFree]
mov rcx, qword [rsp + 0x30]
call sub.WINSPOOL.DRV_ClosePrinter
mov eax, r12d
jmp 0x14003be57
mov dword [rsp + 0x20], r14d
xor r9d, r9d
mov r8, qword [r13 + 8]
mov rdx, r15
mov rcx, qword [r13 + 0x38]
call fcn.14001fdb0
cmp eax, r12d
jne 0x14003af33
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GlobalFree]
mov rcx, qword [rsp + 0x30]
call sub.WINSPOOL.DRV_ClosePrinter
call fcn.1400696cc
mov rcx, rax
mov eax, r14d
test rcx, rcx
setne al
test eax, eax
jne 0x14003ade4
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
lea rsi, [rax + 0x18]
mov qword [rsp + 0x70], rsi
call fcn.1400696cc
mov rcx, rax
test rax, rax
setne r14b
test r14d, r14d
jne 0x14003ae12
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0xc0], rdi
mov ecx, 2
call fcn.1400696b8
test rax, rax
je 0x14003ae4b
mov r8d, 2
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.140003a40
mov rsi, qword [rsp + 0x70]
mov ecx, 3
call fcn.1400696b8
test rax, rax
je 0x14003ae78
mov r8d, 3
mov rdx, rax
lea rcx, [rsp + 0xc0]
call fcn.140003a40
mov rdi, qword [rsp + 0xc0]
call fcn.140069504
mov rbx, qword [rax + 8]
mov rax, qword [rbx + 0x660]
cmp dword [rax + 0x44], 0
je 0x14003aed6
mov rdx, rdi
mov rcx, qword [rbx + 0x668]
call fcn.14000f3b0
mov r8w, 0x20
mov dx, 0xa
lea rcx, [rsp + 0x70]
call fcn.14000ffe0
mov rdx, qword [rsp + 0x70]
mov rcx, qword [rbx + 0x668]
call fcn.14000f3b0
lea rdx, [0x1400a5440]
mov rcx, qword [rbx + 0x668]
call fcn.14000f3b0
jmp 0x14003aeec
mov r9d, 0x30
mov r8, rdi
mov rdx, rsi
mov rcx, rbp
call qword [sym.imp.USER32.dll_MessageBoxW]
nop
lea rdx, [rdi - 0x18]
or rbp, 0xffffffffffffffff
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, ebp
test eax, eax
jg 0x14003af0b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x14003af29
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, 2
jmp 0x14003be57
mov r8d, r12d
lea rdx, [rsp + 0x1a0]
mov rcx, qword [r13 + 0x18]
call fcn.140015bf0
test eax, eax
jne 0x14003af66
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GlobalFree]
mov rcx, qword [rsp + 0x30]
call sub.WINSPOOL.DRV_ClosePrinter
mov eax, r12d
jmp 0x14003be57
xor eax, eax
or rbp, 0xffffffffffffffff
mov rcx, rbp
lea rdi, [rsp + 0x640]
repne scasw ax, word [rdi]
not rcx
cmp rcx, r12
je 0x14003afbc
test sil, 8
je 0x14003afbc
lea rdx, [rsp + 0x640]
xor ecx, ecx
call fcn.140021df0
test eax, eax
jne 0x14003afbc
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GlobalFree]
mov rcx, qword [rsp + 0x30]
call sub.WINSPOOL.DRV_ClosePrinter
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov eax, r12d
jmp 0x14003be57
xor eax, eax
mov dword [rsp + 0x198], eax
mov byte [rsp + 0x19c], al
lea rdx, [rsp + 0x198]
mov rcx, r15
call fcn.140015140
mov dword [rsp + 0x58], eax
xor edx, edx
mov r8d, 0x820
lea rcx, [rsp + 0x1280]
call fcn.140080d50
mov dword [rsp + 0x50], r14d
lea r9, [rsp + 0x50]
mov r8d, 0x410
lea rdx, [rsp + 0x1280]
mov rcx, r15
call fcn.140015570
mov rsi, qword [rsp + 0x60]
mov edi, dword [rsi + 0xba8]
cmp ebx, 0xa
jne 0x14003b07d
mov rcx, qword [rsp + 0x30]
call fcn.14002d5b0
mov edi, eax
mov rcx, qword [rsp + 0x30]
call sub.WINSPOOL.DRV_ClosePrinter
test edi, edi
jne 0x14003b063
mov eax, dword [rsp + 0x50]
mov dword [rsp + 0x20], eax
lea r9, [rsp + 0x1280]
xor r8d, r8d
mov rdx, r15
lea rcx, [rsi + 0xb90]
call fcn.140060ba0
jmp 0x14003b0a9
lea rdx, [rsp + 0x1280]
mov rcx, r15
call fcn.140023060
mov rcx, r15
call fcn.140014fe0
jmp 0x14003b0a9
mov rcx, qword [rsp + 0x30]
call sub.WINSPOOL.DRV_ClosePrinter
mov edx, dword [rsp + 0x50]
mov dword [rsp + 0x20], edx
lea r9, [rsp + 0x1280]
mov r8d, edi
mov rdx, r15
lea rcx, [rsi + 0xb90]
call fcn.140060ba0
test eax, eax
jne 0x14003be4b
cmp ebx, 2
je 0x14003b0bb
cmp ebx, 3
jne 0x14003b12b
mov ecx, 0x1f4
call qword [sym.imp.KERNEL32.dll_Sleep]
mov dword [rsp + 0x20], r12d
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x168]
call qword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x14003b12b
nop
nop
nop
lea rcx, [rsp + 0x168]
call qword [sym.imp.USER32.dll_TranslateMessage]
lea rcx, [rsp + 0x168]
call qword [sym.imp.USER32.dll_DispatchMessageW]
mov dword [rsp + 0x20], r12d
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x168]
call qword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
jne 0x14003b0f0
call fcn.1400696cc
mov rcx, rax
mov eax, r14d
test rcx, rcx
setne al
test eax, eax
jne 0x14003b14b
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x48], rax
call fcn.1400696cc
mov rcx, rax
mov eax, r14d
test rcx, rcx
setne al
test eax, eax
jne 0x14003b17a
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x40], rax
call fcn.1400696cc
mov rcx, rax
mov eax, r14d
test rcx, rcx
setne al
test eax, eax
jne 0x14003b1a9
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x90], rax
call fcn.1400696cc
mov rcx, rax
mov eax, r14d
test rcx, rcx
setne al
test eax, eax
jne 0x14003b1db
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x88], rax
mov rdx, qword [r13 + 8]
lea rcx, [rsp + 0x68]
call fcn.140004ec0
nop
mov r8d, 5
lea rdx, [rsp + 0x108]
lea rcx, [rsp + 0x68]
call fcn.140003710
nop
mov rdx, rax
lea rcx, [rsp + 0x68]
call fcn.1400047a0
nop
mov rdx, qword [rsp + 0x108]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003b246
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, qword [r13 + 8]
lea rcx, [rsp + 0xb0]
call fcn.140004ec0
nop
call fcn.1400696cc
mov rcx, rax
mov eax, r14d
test rcx, rcx
setne al
test eax, eax
jne 0x14003b278
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x80], rax
lea rdx, [rsp + 0xb0]
lea rcx, [rsp + 0x158]
call fcn.1400034d0
lea rdx, [rsp + 0x80]
mov rcx, rax
call fcn.140027420
xor eax, eax
lea rdi, [0x1400a8f20]
mov rsi, qword [rsi + 0xb88]
mov ecx, 4
repe cmpsw word [rsi], word [rdi]
je 0x14003b2ce
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x14003b304
lea rax, [rsp + 0x198]
mov qword [rsp + 0x20], rax
mov r9d, dword [rsp + 0x58]
lea r8, [rsp + 0x1a0]
mov rdx, qword [r13 + 8]
mov rcx, r15
call fcn.14002f2f0
mov esi, eax
jmp 0x14003b83f
cmp ebx, 2
je 0x14003b584
cmp ebx, 3
je 0x14003b584
mov esi, r14d
mov rdx, r15
lea rcx, [rsp + 0xa0]
call fcn.140004ec0
nop
mov r8d, 2
lea rdx, [0x1400a7c88]
mov rcx, r15
call fcn.140085210
test eax, eax
jne 0x14003b494
mov rax, qword [rsp + 0xa0]
mov r8d, dword [rax - 0x10]
add r8d, 0xffffffff
lea rdx, [rsp + 0xe8]
lea rcx, [rsp + 0xa0]
call fcn.140003710
nop
mov rdi, qword [rsp + 0x60]
mov r8, rax
lea rdx, [rdi + 0x5d8]
lea rcx, [rsp + 0x100]
call fcn.140003ec0
nop
mov rdx, rax
lea rcx, [rsp + 0x48]
call fcn.1400047a0
nop
mov rdx, qword [rsp + 0x100]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003b3bc
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xe8]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003b3df
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [rdi + 0x5d8]
lea rcx, [rsp + 0x40]
call fcn.1400047a0
mov rdi, qword [rsp + 0x48]
mov rdx, rdi
mov rcx, 0xffffffff80000001
call fcn.1400222b0
mov rdx, rdi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov dx, 0x5c
mov rcx, rdi
call fcn.140080890
test rax, rax
jne 0x14003b429
mov eax, ebp
jmp 0x14003b42f
sub rax, rdi
sar rax, 1
mov r8d, eax
lea rdx, [rsp + 0xf8]
lea rcx, [rsp + 0x48]
call fcn.1400038a0
mov rdi, qword [rsp + 0xf8]
mov rdx, rdi
mov rcx, 0xffffffff80000001
call fcn.1400223e0
cmp eax, 1
jne 0x14003b470
mov rdx, rdi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
lea rdx, [rdi - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003b54d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14003b54d
mov rdx, r15
lea rcx, [rsp + 0xd8]
call fcn.140004ec0
nop
mov rdi, qword [rsp + 0x60]
lea rdx, [rdi + 0x5d0]
mov r8, rax
lea rcx, [rsp + 0xd0]
call fcn.140003ec0
nop
mov rdx, rax
lea rcx, [rsp + 0x48]
call fcn.1400047a0
nop
mov rdx, qword [rsp + 0xd0]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003b4f4
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xd8]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003b517
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [rdi + 0x5d8]
lea rcx, [rsp + 0x40]
call fcn.1400047a0
mov rdi, qword [rsp + 0x48]
mov rdx, rdi
mov rcx, 0xffffffff80000001
call fcn.1400222b0
mov rdx, rdi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
nop
mov rdx, qword [rsp + 0xa0]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003b57a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdi, qword [rsp + 0x40]
jmp 0x14003b7ef
mov rdi, qword [rsp + 0x40]
jmp 0x14003b7ef
cmp dword [rsp + 0x58], 1
jne 0x14003b598
lea rcx, [rsp + 0x198]
call fcn.140015340
lea rdx, [0x1400a8300]
mov rcx, qword [rsp + 0x68]
call fcn.1400807e0
test eax, eax
je 0x14003b5ec
lea rdx, [0x1400a8300]
mov rcx, qword [rsp + 0x68]
call fcn.1400807e0
test eax, eax
je 0x14003b5df
mov rdi, qword [rsp + 0x60]
mov rdx, qword [rdi + 0x580]
lea rcx, [rsp + 0x1a0]
call fcn.14002cc30
test eax, eax
jns 0x14003b5f1
mov esi, r12d
mov rdi, qword [rsp + 0x40]
jmp 0x14003b7c0
mov rdi, qword [rsp + 0x60]
mov esi, r14d
mov dword [rsp + 0x7c], r14d
mov rdx, r15
lea rcx, [rsp + 0xf0]
call fcn.140004ec0
nop
lea rdx, [rdi + 0x5d0]
mov r8, rax
lea rcx, [rsp + 0xe0]
call fcn.140003ec0
nop
mov rdx, rax
lea rcx, [rsp + 0x48]
call fcn.1400047a0
nop
mov rdx, qword [rsp + 0xe0]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003b654
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xf0]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003b677
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [rdi + 0x5d8]
lea rcx, [rsp + 0x40]
call fcn.1400047a0
lea rdx, [rdi + 0x5f0]
lea rcx, [rsp + 0x90]
call fcn.1400047a0
lea rdx, [rdi + 0x5e8]
lea rcx, [rsp + 0x88]
call fcn.1400047a0
mov rbx, qword [rsp + 0x48]
mov rdx, rbx
mov rcx, 0xffffffff80000002
call fcn.1400222b0
mov rdx, rbx
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov rdi, qword [rsp + 0x40]
mov rdx, rdi
mov rcx, 0xffffffff80000002
call fcn.1400223e0
cmp eax, 1
je 0x14003b6fc
call fcn.14002bb20
test eax, eax
jne 0x14003b79a
jmp 0x14003b70c
mov rdx, rdi
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov rsi, qword [rsp + 0x90]
mov rdx, rsi
mov rcx, 0xffffffff80000002
call fcn.1400223e0
cmp eax, 1
jne 0x14003b738
mov rdx, rsi
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov rsi, qword [rsp + 0x88]
mov rdx, rsi
mov rcx, 0xffffffff80000002
call fcn.1400223e0
cmp eax, 1
jne 0x14003b764
mov rdx, rsi
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
lea rdx, str.SOFTWARECANON_
mov rcx, 0xffffffff80000002
call fcn.1400223e0
cmp eax, 1
jne 0x14003b796
lea rdx, str.SOFTWARECANON_
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov esi, dword [rsp + 0x7c]
jmp 0x14003b79a
mov esi, dword [rsp + 0x7c]
mov rdx, rbx
mov rcx, 0xffffffff80000001
call fcn.1400222b0
mov rdx, rbx
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov ebx, dword [rsp + 0xa8]
cmp dword [rsp + 0x58], 0
je 0x14003b7ef
lea rdx, [rsp + 0x198]
lea rcx, str.EnumLPTENUM
call fcn.140023af0
lea rdx, [rsp + 0x198]
lea rcx, str.EnumUSBPRINT
call fcn.140023af0
mov rdx, rdi
mov rcx, 0xffffffff80000001
call fcn.1400223e0
cmp eax, 1
jne 0x14003b83f
mov rdx, rdi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
lea rdx, str.SOFTWARECANON_
mov rcx, 0xffffffff80000001
call fcn.1400223e0
cmp eax, 1
jne 0x14003b83f
lea rdx, str.SOFTWARECANON_
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
cmp ebx, 2
je 0x14003ba48
cmp ebx, 3
je 0x14003ba48
cmp ebx, 6
je 0x14003b877
cmp ebx, 0xa
je 0x14003b877
mov rdx, r15
mov rcx, qword [r13 + 8]
call fcn.140021fe0
test eax, eax
jne 0x14003bbbe
mov edi, r12d
jmp 0x14003bac5
mov rdx, r15
mov rcx, qword [r13 + 8]
call fcn.140021fe0
test eax, eax
jne 0x14003bbbe
xor edx, edx
mov r8d, 0x208
lea rcx, [rsp + 0x430]
call fcn.140080d50
xor r9d, r9d
mov r8d, 0x104
lea rdx, [rsp + 0x430]
mov rcx, qword [r13 + 8]
call fcn.1400231d0
mov edi, eax
mov word [rsp + 0x220], 0
xor edx, edx
mov r8d, 0x206
lea rcx, [rsp + 0x222]
call fcn.140080d50
mov qword [rsp + 0x120], r14
mov qword [rsp + 0x128], r14
mov qword [rsp + 0x130], r14
mov rsi, qword [rsp + 0x60]
cmp dword [rsi + 0xdf4], 0
je 0x14003b92d
lea rcx, str.SPOOLER
call fcn.140016250
lea rcx, str.SPOOLER
call fcn.140021630
call fcn.1400176c0
mov ecx, r14d
cmp eax, 0xb
sete cl
mov dword [rsi + 0xdf4], ecx
lea rcx, [rsp + 0x118]
call fcn.1400123f0
lea r11, [rsp + 0x118]
mov qword [rsp + 0x20], r11
xor r9d, r9d
xor r8d, r8d
lea rdx, [rsp + 0x220]
mov rcx, qword [r13 + 8]
call fcn.140038fd0
call fcn.140023990
mov edx, eax
test eax, eax
je 0x14003b987
sub edx, 1
je 0x14003b980
cmp edx, 1
je 0x14003b979
mov ecx, dword [r13]
jmp 0x14003b98b
mov ecx, 5
jmp 0x14003b98b
mov ecx, 4
jmp 0x14003b98b
mov ecx, dword [r13]
mov eax, dword [rsp + 0x50]
mov dword [rsp + 0x28], eax
lea rax, [rsp + 0x1280]
mov qword [rsp + 0x20], rax
mov r9d, dword [rsi + 0xba8]
mov r8, qword [r13 + 8]
mov edx, ecx
lea rcx, [rsi + 0xb90]
call fcn.140060e50
mov r15d, r14d
test eax, eax
sete r15b
mov dword [rsp + 0x54], r15d
test r15d, r15d
je 0x14003b9f7
lea rax, [rsp + 0x118]
mov qword [rsp + 0x20], rax
lea r9, [0x1400a4510]
mov r8d, r12d
lea rdx, [rsp + 0x220]
lea rcx, [0x1400a4510]
call fcn.140038fd0
cmp r15d, 1
jne 0x14003ba30
cmp ebx, 0xa
jne 0x14003ba16
lea rcx, [rsi + 0x6a8]
mov r8, qword [r13 + 8]
mov rdx, qword [rcx + 0x10]
call fcn.140068584
test edi, edi
jne 0x14003ba36
xor edx, edx
lea rcx, [rsp + 0x430]
call fcn.14002b650
mov dword [rsp + 0x78], r12d
jmp 0x14003ba36
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, r12d
lea rcx, [rsp + 0x118]
call fcn.140012360
jmp 0x14003bac5
mov rdx, r15
mov rcx, qword [r13 + 8]
call fcn.140021fe0
test eax, eax
jne 0x14003bbbe
lea rdx, [rsp + 0xa50]
mov rcx, r13
call fcn.140029fe0
mov edi, eax
mov r8, qword [r13 + 8]
xor edx, edx
xor ecx, ecx
call sub.WINSPOOL.DRV_DeletePrinterDriverW
mov dword [rsp + 0x54], eax
cmp eax, 1
jne 0x14003babc
test esi, esi
je 0x14003ba91
mov rcx, qword [r13 + 8]
call fcn.14002a160
test edi, edi
jne 0x14003baa9
xor r8d, r8d
mov rdx, qword [r13 + 0x40]
lea rcx, [rsp + 0xa50]
call fcn.1400224c0
mov rdx, qword [r13 + 8]
mov rcx, qword [r13 + 0x38]
call fcn.140036480
mov dword [rsp + 0x54], eax
jmp 0x14003bac2
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, r12d
xor edx, edx
mov rcx, qword [r13 + 8]
call fcn.140019190
test eax, eax
je 0x14003bb20
call fcn.14001b2d0
mov qword [rsp + 0xc8], r14
lea rax, [rsp + 0xc8]
mov qword [rsp + 0x20], rax
mov r9d, 0x2011f
xor r8d, r8d
lea rdx, str.SOFTWARECanonVDCSETUPVDCUser
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x14003bb20
mov edi, r14d
mov rcx, qword [rsp + 0xc8]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
call fcn.140019b50
test eax, eax
je 0x14003bbc1
call fcn.14001ee00
mov qword [rsp + 0xb8], r14
mov word [rsp + 0xc60], 0
xor edx, edx
mov r8d, 0x616
lea rcx, [rsp + 0xc62]
call fcn.140080d50
lea r9, str.DIASUser
lea r8, str.SOFTWARECanonDIASSETUP
lea rdx, [0x1400a3e08]
lea rcx, [rsp + 0xc60]
call qword [sym.imp.USER32.dll_wsprintfW]
lea rdx, [rsp + 0xb8]
mov qword [rsp + 0x20], rdx
mov r9d, 0x2011f
xor r8d, r8d
lea rdx, [rsp + 0xc60]
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x14003bbc1
mov r12d, r14d
mov rcx, qword [rsp + 0xb8]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x14003bbc1
mov edi, r12d
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GlobalFree]
cmp dword [rsp + 0x98], 1
jne 0x14003bbfb
lea rcx, [rsp + 0x1aa0]
call fcn.140022c30
cmp eax, 1
jne 0x14003bbfb
lea rdx, [rsp + 0x1aa0]
mov rcx, qword [rsp + 0x110]
call fcn.1400609f0
cmp ebx, 6
je 0x14003bc05
cmp ebx, 0xa
jne 0x14003bc24
cmp dword [rsp + 0x78], 1
jne 0x14003bc24
lea rcx, str.SPOOLER
call fcn.140016250
lea rcx, str.SPOOLER
call fcn.140021630
lea rdx, [rsp + 0x80]
lea rcx, [rsp + 0x160]
call fcn.1400034d0
mov rcx, rax
call fcn.140025ad0
cmp dword [rsp + 0x54], 0
je 0x14003bd54
test edi, edi
je 0x14003bd54
test r12d, r12d
je 0x14003bd54
mov rdx, qword [rsp + 0x80]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003bc81
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xb0]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003bca5
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003bcc6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x88]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003bcea
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x90]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003bd0e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003bd2f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x14003bd4d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x14003be57
mov rdx, qword [rsp + 0x80]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003bd78
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xb0]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003bd9c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003bdbd
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x88]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003bde1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x90]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003be05
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14003be26
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x14003be44
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, 5
jmp 0x14003be57
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GlobalFree]
mov eax, r12d
mov rcx, qword [rsp + 0x2300]
xor rcx, rsp
call fcn.140081050
mov rbx, qword [rsp + 0x2360]
add rsp, 0x2310
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret