Function at 0x140020580
Capabilities:
Delete registry key

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1ff0]
mov eax, 0x20f0
call fcn.14019e810
sub rsp, rax
mov qword [rbp + 0x58], 0xfffffffffffffffe
mov qword [rsp + 0x2140], rbx
mov rax, qword [0x14026fdb0]
xor rax, rsp
mov qword [rbp + 0x1fe0], rax
mov r14, rdx
mov rdi, rcx
mov qword [rbp - 0x68], rcx
xor r8d, r8d
lea rdx, str.Tool_DeletePrinter
lea rcx, [rsp + 0x30]
call fcn.140001190
nop
xor r12d, r12d
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], r14
mov r9, rdi
lea r8, str.hWnd___08x__lpszPrinter___s__bJob___d
mov r13d, 1
mov edx, r13d
lea rcx, [rsp + 0x30]
call fcn.140001370
mov qword [rsp + 0x58], r12
mov dword [rsp + 0x50], r12d
xor edx, edx
mov r8d, 0x860
lea rcx, [rbp + 0x1780]
call fcn.14019d7c0
mov dword [rbp - 0x70], r12d
xor edx, edx
mov r8d, 0x410
lea rcx, [rbp + 0x1370]
call fcn.14019d7c0
mov dword [rbp - 0x80], r13d
mov dword [rsp + 0x68], r12d
mov dword [rsp + 0x70], r13d
call fcn.140059f20
mov rsi, qword [rax + 8]
mov qword [rsp + 0x48], rsi
xor r9d, r9d
xor r8d, r8d
mov edx, r13d
mov rcx, r14
call fcn.140023ca0
cmp eax, r13d
jne 0x1400206a3
lea r9d, [r12 + 3]
lea r8, str.return___08x
lea edx, [r12 + 2]
lea rcx, [rsp + 0x30]
call fcn.140001370
nop
lea rcx, [rsp + 0x30]
call fcn.140001320
lea eax, [r12 + 3]
jmp 0x140021889
mov dword [rbp - 0x6c], r12d
test r14, r14
je 0x1400206bf
mov rax, qword [rsi + 0x7a0]
mov rcx, r14
call qword [rax + 0x148]
mov dword [rbp - 0x6c], eax
xor eax, eax
mov qword [rbp - 0x40], rax
mov qword [rbp - 0x38], rax
mov qword [rbp - 0x30], rax
mov qword [rbp - 0x40], r12
mov qword [rbp - 0x38], r12
mov dword [rbp - 0x30], 0xf000c
lea r8, [rbp - 0x40]
lea rdx, [rsp + 0x58]
mov rcx, r14
call qword [sym.imp.WINSPOOL.DRV_OpenPrinterW]
test eax, eax
jne 0x14002073a
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea r8, str.return___08x
mov edx, 2
lea rcx, [rsp + 0x30]
cmp eax, 5
jne 0x14002072c
lea r9d, [rdx + 2]
call fcn.140001370
nop
lea rcx, [rsp + 0x30]
call fcn.140001320
mov eax, 4
jmp 0x140021889
mov r9d, r13d
call fcn.140001370
nop
jmp 0x14002187c
call fcn.1400166e0
mov dword [rsp + 0x54], eax
lea rdx, [rbp + 0x1370]
mov rcx, r14
call fcn.140024420
mov rcx, qword [rsp + 0x58]
cmp eax, 0xffffffff
jne 0x140020781
call qword [sym.imp.WINSPOOL.DRV_ClosePrinter]
mov r9d, r13d
lea r8, str.return___08x
mov edx, 2
lea rcx, [rsp + 0x30]
call fcn.140001370
nop
jmp 0x14002187c
mov dword [rsp + 0x50], r12d
lea rax, [rsp + 0x50]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r12d
xor r9d, r9d
xor edx, edx
lea r8d, [r9 + 3]
call qword [sym.imp.WINSPOOL.DRV_GetPrinterDriverW]
test eax, eax
jne 0x1400207dd
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
je 0x1400207dd
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.WINSPOOL.DRV_ClosePrinter]
mov r9d, r13d
lea r8, str.return___08x
mov edx, 2
lea rcx, [rsp + 0x30]
call fcn.140001370
nop
jmp 0x14002187c
mov edx, dword [rsp + 0x50]
mov ecx, 0x40
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov r15, rax
mov rcx, qword [rsp + 0x58]
test rax, rax
jne 0x14002081d
call qword [sym.imp.WINSPOOL.DRV_ClosePrinter]
mov r9d, r13d
lea r8, str.return___08x
lea edx, [r15 + 2]
lea rcx, [rsp + 0x30]
call fcn.140001370
nop
jmp 0x14002187c
lea rax, [rsp + 0x50]
mov qword [rsp + 0x28], rax
mov eax, dword [rsp + 0x50]
mov dword [rsp + 0x20], eax
mov r9, r15
xor edx, edx
lea r8d, [rdx + 3]
call qword [sym.imp.WINSPOOL.DRV_GetPrinterDriverW]
test eax, eax
jne 0x140020875
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_GlobalFree]
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.WINSPOOL.DRV_ClosePrinter]
mov r9d, r13d
lea r8, str.return___08x
mov edx, 2
lea rcx, [rsp + 0x30]
call fcn.140001370
nop
jmp 0x14002187c
xor edx, edx
mov rcx, qword [r15 + 0x38]
call fcn.140016d10
cmp eax, r13d
jne 0x140020a22
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_GlobalFree]
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.WINSPOOL.DRV_ClosePrinter]
call fcn.140056384
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x1400208bd
mov ecx, 0x80004005
call fcn.140004550
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rsi, [rax + 0x18]
mov qword [rbp - 0x78], rsi
call fcn.140056384
mov rcx, rax
test rax, rax
setne r12b
test r12d, r12d
jne 0x1400208ed
mov ecx, 0x80004005
call fcn.140004550
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rbp - 0x18], rdi
mov ecx, 2
call fcn.140056158
test rax, rax
je 0x140020920
mov r8d, 2
mov rdx, rax
lea rcx, [rbp - 0x78]
call fcn.140005730
mov rsi, qword [rbp - 0x78]
mov ecx, 3
call fcn.140056158
test rax, rax
je 0x140020945
mov r8d, 3
mov rdx, rax
lea rcx, [rbp - 0x18]
call fcn.140005730
mov rdi, qword [rbp - 0x18]
call fcn.140059f20
mov rbx, qword [rax + 8]
mov rax, qword [rbx + 0x260]
cmp dword [rax + 0x4c], 0
je 0x1400209a1
mov rdx, rdi
mov rcx, qword [rbx + 0x268]
call fcn.140012770
mov edx, 0xa
lea r8d, [rdx + 0x16]
lea rcx, [rbp - 0x78]
call fcn.140014570
mov rdx, qword [rbp - 0x78]
mov rcx, qword [rbx + 0x268]
call fcn.140012770
lea rdx, [0x14021dbc0]
mov rcx, qword [rbx + 0x268]
call fcn.140012770
jmp 0x1400209b7
mov r9d, 0x30
mov r8, rdi
mov rdx, rsi
mov rcx, qword [rbp - 0x68]
call qword [sym.imp.USER32.dll_MessageBoxW]
mov r9d, 2
lea r8, str.return___08x
mov edx, r9d
lea rcx, [rsp + 0x30]
call fcn.140001370
nop
lea rdx, [rdi - 0x18]
or rbx, 0xffffffffffffffff
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400209f1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x78]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x140020a0e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rsp + 0x30]
call fcn.140001320
mov eax, 2
jmp 0x140021889
xor edx, edx
mov r8d, 0x80
lea rcx, [rbp + 0x90]
call fcn.14019d7c0
mov r9d, r13d
mov r8d, 0x40
lea rdx, [rbp + 0x90]
mov rcx, qword [r15 + 0x18]
call fcn.140017a50
test eax, eax
jne 0x140020a86
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_GlobalFree]
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.WINSPOOL.DRV_ClosePrinter]
mov r9d, r13d
lea r8, str.return___08x
mov edx, 2
lea rcx, [rsp + 0x30]
call fcn.140001370
nop
jmp 0x14002187c
xor edx, edx
mov r8d, 0x820
lea rcx, [rbp + 0x530]
call fcn.14019d7c0
mov dword [rsp + 0x6c], r12d
lea r8, [rsp + 0x6c]
lea rdx, [rbp + 0x530]
mov rcx, r14
call fcn.140015b60
mov edi, dword [rsi + 0x7a8]
or rbx, 0xffffffffffffffff
cmp dword [rsp + 0x54], 0xa
jne 0x140020b21
mov qword [rbp + 0x78], 7
mov qword [rbp + 0x70], r12
mov word [rbp + 0x60], r12w
xor eax, eax
mov rcx, rbx
mov rdi, r14
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
mov rdx, r14
lea rcx, [rbp + 0x60]
call fcn.140003200
nop
lea r9, [rsp + 0x58]
lea r8, [rbp + 0x530]
mov edx, dword [rsp + 0x6c]
lea rcx, [rbp + 0x60]
call fcn.1400218c0
mov edi, eax
cmp qword [rbp + 0x78], 8
jb 0x140020b4f
mov rcx, qword [rbp + 0x60]
call fcn.14005605c
jmp 0x140020b4f
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.WINSPOOL.DRV_ClosePrinter]
lea rcx, [rsi + 0x790]
mov eax, dword [rsp + 0x6c]
mov dword [rsp + 0x20], eax
lea r9, [rbp + 0x530]
mov r8d, edi
mov rdx, r14
call fcn.140050ff0
mov edi, eax
test edi, edi
jne 0x140021859
call fcn.140056384
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x140020b77
mov ecx, 0x80004005
call fcn.140004550
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x40], rax
call fcn.140056384
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x140020ba9
mov ecx, 0x80004005
call fcn.140004550
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x60], rax
call fcn.140056384
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x140020bdb
mov ecx, 0x80004005
call fcn.140004550
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x58], rax
call fcn.140056384
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x140020c0c
mov ecx, 0x80004005
call fcn.140004550
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x48], rax
mov rdx, qword [r15 + 8]
lea rcx, [rsp + 0x78]
call fcn.1400054e0
nop
mov r8d, 5
lea rdx, [rbp + 0x38]
lea rcx, [rsp + 0x78]
call fcn.140012140
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0x78]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x140020ca4
cmp dword [rdi + 0x10], 0
jl 0x140020c95
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140020c95
call fcn.140006db0
mov rsi, rax
mov ecx, ebx
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x140020c85
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 + 0x78], rax
mov rsi, qword [rsp + 0x48]
jmp 0x140020ca4
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x78]
call fcn.1400059f0
nop
mov rdx, qword [rbp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140020cc2
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, qword [r15 + 8]
lea rcx, [rbp - 0x60]
call fcn.1400054e0
nop
call fcn.140056384
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x140020cf0
mov ecx, 0x80004005
call fcn.140004550
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x68], rax
mov rcx, qword [rbp - 0x60]
add rcx, 0xffffffffffffffe8
call fcn.140006db0
add rax, 0x18
mov qword [rbp + 0x40], rax
lea rdx, [rbp - 0x68]
lea rcx, [rbp + 0x40]
call fcn.140025570
xor eax, eax
lea rdi, [0x140220448]
mov rsi, qword [rsi + 0x788]
mov ecx, 4
repe cmpsw word [rsi], word [rdi]
je 0x140020d42
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x140020d63
lea r8, [rbp + 0x90]
mov rdx, qword [r15 + 8]
mov rcx, r14
call fcn.14002f040
jmp 0x14002116f
mov rdx, r14
lea rcx, [rbp - 0x50]
call fcn.1400054e0
nop
mov r8d, 2
lea rdx, [0x140220450]
mov rcx, r14
call fcn.140199c9c
test eax, eax
jne 0x140020f60
mov rax, qword [rbp - 0x50]
mov r8d, dword [rax - 0x10]
dec r8d
lea rdx, [rbp + 0x20]
lea rcx, [rbp - 0x50]
call fcn.140012140
nop
mov rsi, qword [rsp + 0x48]
add rsi, 0x1d8
mov qword [rbp - 8], rsi
mov r8, rax
mov rdx, rsi
lea rcx, [rbp + 0x50]
call fcn.140012280
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0x40]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x140020e28
cmp dword [rdi + 0x10], 0
jl 0x140020e19
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140020e19
call fcn.140006db0
mov rsi, rax
mov ecx, ebx
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x140020e0a
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
mov rsi, qword [rbp - 8]
jmp 0x140020e28
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x40]
call fcn.1400059f0
nop
mov rdx, qword [rbp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140020e47
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp + 0x20]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140020e65
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, qword [rsi]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0x60]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x140020ec2
cmp dword [rdi + 0x10], 0
jl 0x140020eb4
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140020eb4
call fcn.140006db0
mov rsi, rax
mov ecx, ebx
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x140020ea9
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 + 0x60], rax
jmp 0x140020ec2
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x60]
call fcn.1400059f0
mov rdi, qword [rsp + 0x40]
mov rdx, rdi
mov rcx, 0xffffffff80000001
call fcn.1400222d0
mov rdx, rdi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov edx, 0x5c
mov rcx, rdi
call fcn.14019a074
test rax, rax
jne 0x140020efc
mov eax, ebx
jmp 0x140020f02
sub rax, rdi
sar rax, 1
mov r8d, eax
lea rdx, [rbp + 0x48]
lea rcx, [rsp + 0x40]
call fcn.1400121e0
nop
mov rdi, qword [rbp + 0x48]
mov rdx, rdi
mov rcx, 0xffffffff80000001
call fcn.1400224a0
cmp eax, 1
jne 0x140020f3d
mov rdx, rdi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
nop
lea rdx, [rdi - 0x18]
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400210fb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x1400210fb
mov rdx, r14
lea rcx, [rbp - 0x10]
call fcn.1400054e0
nop
mov rsi, qword [rsp + 0x48]
lea rdx, [rsi + 0x1d0]
mov r8, rax
lea rcx, [rbp + 0x30]
call fcn.140012280
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0x40]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x140020fe9
cmp dword [rdi + 0x10], 0
jl 0x140020fda
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140020fda
call fcn.140006db0
mov rsi, rax
mov ecx, ebx
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x140020fca
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
mov rsi, qword [rsp + 0x48]
jmp 0x140020fe9
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x40]
call fcn.1400059f0
nop
mov rdx, qword [rbp + 0x30]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140021008
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x10]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140021026
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, qword [rsi + 0x1d8]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0x60]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x14002108c
cmp dword [rdi + 0x10], 0
jl 0x14002107e
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14002107e
call fcn.140006db0
mov rsi, rax
mov ecx, ebx
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x14002106e
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 + 0x60], rax
mov rsi, qword [rsp + 0x48]
jmp 0x14002108c
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x60]
call fcn.1400059f0
mov rdi, qword [rsp + 0x40]
mov rdx, rdi
mov rcx, 0xffffffff80000001
call fcn.1400222d0
mov rdx, rdi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
xor eax, eax
lea rdi, str.CAPT
mov rsi, qword [rsi + 0x788]
mov ecx, 5
repe cmpsw word [rsi], word [rdi]
je 0x1400210cf
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x1400210fb
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
je 0x1400210fb
mov rcx, qword [rsp + 0x48]
cmp dword [rcx + 0x810], 0
je 0x1400210fb
mov rcx, r14
call fcn.140032f20
mov rdi, qword [rsp + 0x60]
mov rdx, rdi
mov rcx, 0xffffffff80000001
call fcn.1400224a0
cmp eax, 1
jne 0x140021151
mov rdx, rdi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
lea rdx, str.SOFTWARECANON_
mov rcx, 0xffffffff80000001
call fcn.1400224a0
cmp eax, 1
jne 0x140021151
lea rdx, str.SOFTWARECANON_
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
nop
mov rdx, qword [rbp - 0x50]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14002116f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor edx, edx
mov r8d, 0x208
lea rcx, [rbp + 0x320]
call fcn.14019d7c0
mov rdx, r14
mov rcx, qword [r15 + 8]
call fcn.140021b10
test eax, eax
jne 0x14002149d
lea rdx, [rbp + 0x320]
mov rcx, qword [r15 + 8]
call fcn.140025010
mov dword [rsp + 0x68], eax
mov word [rbp + 0x110], r12w
xor edx, edx
mov r8d, 0x206
lea rcx, [rbp + 0x112]
call fcn.14019d7c0
mov qword [rbp], r12
mov qword [rbp + 8], r12
mov qword [rbp + 0x10], r12
mov rdi, qword [rsp + 0x48]
cmp dword [rdi + 0xa84], 0
je 0x140021206
call fcn.140019870
lea rcx, str.SPOOLER
call fcn.140019a70
call fcn.14001f9a0
mov ecx, r12d
cmp eax, 0xb
sete cl
mov dword [rdi + 0xa84], ecx
lea rcx, [rbp]
call fcn.14000cb60
lea rdx, [rbp]
mov qword [rsp + 0x20], rdx
xor r9d, r9d
xor r8d, r8d
lea rdx, [rbp + 0x110]
mov rcx, qword [r15 + 8]
call fcn.14002af70
call fcn.14002db90
test eax, eax
je 0x140021242
cmp eax, 2
mov r14d, 5
je 0x140021245
mov r14d, dword [r15]
xor eax, eax
lea rdi, str.CAPT
mov rdx, qword [rsp + 0x48]
mov rsi, qword [rdx + 0x788]
mov ecx, 5
repe cmpsw word [rsi], word [rdi]
je 0x140021269
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x140021293
cmp dword [rdx + 0x810], 0
je 0x140021293
call fcn.140030770
mov ecx, dword [rsp + 0x70]
test eax, eax
cmove ecx, r12d
mov dword [rsp + 0x70], ecx
mov rdx, qword [rsp + 0x48]
lea rcx, [rdx + 0x790]
mov eax, dword [rsp + 0x6c]
mov dword [rsp + 0x28], eax
lea rax, [rbp + 0x530]
mov qword [rsp + 0x20], rax
mov r9d, dword [rdx + 0x7a8]
mov r8, qword [r15 + 8]
mov edx, r14d
call fcn.140050960
mov r14d, r12d
test eax, eax
sete r14b
mov dword [rbp - 0x80], r14d
test r14d, r14d
je 0x14002130f
lea rsi, [rbp + 0x110]
lea rdi, [0x1402209ac]
mov rcx, r13
repe cmpsw word [rsi], word [rdi]
je 0x14002130f
lea rax, [rbp]
mov qword [rsp + 0x20], rax
lea r9, [0x1402209ac]
mov r8d, r13d
lea rdx, [rbp + 0x110]
lea rcx, [0x1402209ac]
call fcn.14002af70
cmp r14d, 1
jne 0x14002134e
cmp dword [rsp + 0x54], 0xa
jne 0x140021335
mov rcx, qword [rsp + 0x48]
add rcx, 0x2b0
mov r8, qword [r15 + 8]
mov rdx, qword [rcx + 0x10]
call fcn.14005920c
cmp dword [rsp + 0x68], 0
jne 0x140021354
lea rcx, [rbp + 0x320]
call fcn.140025240
mov dword [rbp - 0x70], r13d
jmp 0x140021354
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [rsp + 0x54], r13d
mov dword [rsp + 0x68], r13d
mov r14, qword [rbp]
test r14, r14
je 0x1400213a3
mov rdi, r14
mov rsi, qword [rbp + 8]
cmp r14, rsi
je 0x14002139b
cmp qword [rdi + 0x18], 8
jb 0x140021382
mov rcx, qword [rdi]
call fcn.14005605c
mov qword [rdi + 0x18], 7
mov qword [rdi + 0x10], r12
mov word [rdi], r12w
add rdi, 0x28
cmp rdi, rsi
jne 0x140021373
mov rcx, r14
call fcn.14005605c
mov rdi, qword [rsp + 0x48]
mov rax, qword [rdi + 0x260]
cmp dword [rax + 0x88], 0
jne 0x1400214a2
mov rcx, qword [r15 + 8]
call fcn.140017f40
test eax, eax
je 0x14002140b
call fcn.140018650
mov qword [rbp - 0x28], r12
lea rax, [rbp - 0x28]
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 0x14002140b
mov r14d, r12d
mov rcx, qword [rbp - 0x28]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x140021410
mov r14d, dword [rsp + 0x54]
call fcn.14001d4a0
test eax, eax
je 0x1400214ac
call fcn.14001cf50
mov qword [rbp - 0x20], r12
mov word [rbp + 0xd50], r12w
xor edx, edx
mov r8d, 0x616
lea rcx, [rbp + 0xd52]
call fcn.14019d7c0
lea r9, str.DIASUser
lea r8, str.SOFTWARECanonDIASSETUP
lea rdx, str._s_s
lea rcx, [rbp + 0xd50]
call qword [sym.imp.USER32.dll_wsprintfW]
lea rdx, [rbp - 0x20]
mov qword [rsp + 0x20], rdx
mov r9d, 0x2011f
xor r8d, r8d
lea rdx, [rbp + 0xd50]
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x1400214ac
mov r13d, r12d
mov rcx, qword [rbp - 0x20]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x1400214ac
mov rdi, qword [rsp + 0x48]
mov r14d, r13d
cmp dword [rsp + 0x68], 0
je 0x1400214b5
call fcn.140030320
mov esi, eax
jmp 0x1400214b8
mov esi, r13d
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_GlobalFree]
cmp dword [rbp - 0x6c], 1
jne 0x1400214ec
lea rcx, [rbp + 0x1780]
call fcn.140023f00
cmp eax, 1
jne 0x1400214ec
mov rax, qword [rdi + 0x7a0]
lea rcx, [rbp + 0x1780]
call qword [rax + 0x110]
cmp dword [rbp - 0x70], 1
jne 0x140021503
call fcn.140019870
lea rcx, str.SPOOLER
call fcn.140019a70
mov rdi, qword [rbp - 0x68]
add rdi, 0xffffffffffffffe8
mov rcx, rdi
call fcn.140006db0
add rax, 0x18
mov qword [rbp + 0x28], rax
lea rcx, [rbp + 0x28]
call fcn.140026290
cmp dword [rbp - 0x80], 0
jne 0x140021633
mov r9d, 6
lea r8, str.return___08x
lea edx, [r9 - 4]
lea rcx, [rsp + 0x30]
call fcn.140001370
nop
mov eax, ebx
lock xadd dword [rdi + 0x10], eax
dec eax
test eax, eax
jg 0x140021564
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x60]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140021583
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400215a3
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x48]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400215c2
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x58]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400215e1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140021601
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14002161f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rsp + 0x30]
call fcn.140001320
mov eax, 6
jmp 0x140021889
test r14d, r14d
je 0x140021757
test r13d, r13d
je 0x140021757
test esi, esi
je 0x140021757
cmp dword [rsp + 0x70], 0
je 0x140021757
xor r9d, r9d
lea r8, str.return___08x
lea edx, [r9 + 2]
lea rcx, [rsp + 0x30]
call fcn.140001370
nop
mov eax, ebx
lock xadd dword [rdi + 0x10], eax
dec eax
test eax, eax
jg 0x14002168b
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x60]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400216aa
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400216ca
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x48]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400216e9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x58]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140021708
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140021728
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x140021746
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rsp + 0x30]
call fcn.140001320
xor eax, eax
jmp 0x140021889
mov r9d, 5
lea r8, str.return___08x
lea edx, [r9 - 3]
lea rcx, [rsp + 0x30]
call fcn.140001370
nop
mov eax, ebx
lock xadd dword [rdi + 0x10], eax
dec eax
test eax, eax
jg 0x14002178d
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x60]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400217ac
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400217cc
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x48]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400217eb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x58]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14002180a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14002182a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x140021848
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rsp + 0x30]
call fcn.140001320
mov eax, 5
jmp 0x140021889
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_GlobalFree]
mov r9d, r13d
lea r8, str.return___08x
mov edx, 2
lea rcx, [rsp + 0x30]
call fcn.140001370
nop
lea rcx, [rsp + 0x30]
call fcn.140001320
mov eax, r13d
mov rcx, qword [rbp + 0x1fe0]
xor rcx, rsp
call fcn.140198b40
mov rbx, qword [rsp + 0x2140]
add rsp, 0x20f0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret