Function at 0x140054520
Capabilities:
Delete registry key

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
sub rsp, 0xa0
mov qword [rsp + 0x90], 0xfffffffffffffffe
mov qword [rsp + 0xd0], rbx
mov rbx, rdx
call fcn.1400696cc
mov rdx, rax
xor ebp, ebp
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x140054567
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0xe0], rax
call fcn.1400696cc
mov rdx, rax
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x14005459b
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0xe8], rax
call fcn.1400696cc
mov rdx, rax
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x1400545cf
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x20], rax
call fcn.140069504
mov r12, qword [rax + 8]
call fcn.1400696cc
mov rdx, rax
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x140054609
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x30], rax
or rsi, 0xffffffffffffffff
test rbx, rbx
je 0x140054662
test rbx, 0xffffffffffff0000
jne 0x14005464e
movzx edi, bx
mov ecx, edi
call fcn.1400696b8
test rax, rax
je 0x140054675
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.140003a40
jmp 0x140054675
xor eax, eax
mov rcx, rsi
mov rdi, rbx
repne scasw ax, word [rdi]
not rcx
sub rcx, 1
jmp 0x140054664
mov ecx, ebp
mov r8d, ecx
mov rdx, rbx
lea rcx, [rsp + 0x30]
call fcn.140003c40
nop
mov rax, qword [rsp + 0x30]
mov r13d, dword [rax - 0x10]
call fcn.1400696cc
mov rdx, rax
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x14005469d
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x28], rdi
test rbx, rbx
je 0x1400546f7
test rbx, 0xffffffffffff0000
jne 0x1400546e3
movzx ebx, bx
mov ecx, ebx
call fcn.1400696b8
test rax, rax
je 0x14005470e
mov r8d, ebx
mov rdx, rax
lea rcx, [rsp + 0x28]
call fcn.140003a40
mov rdi, qword [rsp + 0x28]
jmp 0x14005470e
xor eax, eax
mov rcx, rsi
mov rdi, rbx
repne scasw ax, word [rdi]
not rcx
sub rcx, 1
jmp 0x1400546f9
mov ecx, ebp
mov r8d, ecx
mov rdx, rbx
lea rcx, [rsp + 0x28]
call fcn.140003c40
mov rdi, qword [rsp + 0x28]
mov dx, 0x5c
mov rcx, rdi
call fcn.140080890
test rax, rax
jne 0x140054723
mov eax, esi
jmp 0x140054729
sub rax, rdi
sar rax, 1
lea r8d, [rax + 1]
lea rdx, [rsp + 0x78]
lea rcx, [rsp + 0x28]
call fcn.140003e50
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x140054797
cmp dword [rdi + 0x10], 0
jl 0x140054788
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140054788
call fcn.1400031e0
mov rbx, rax
mov ecx, esi
lock xadd dword [rdi + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x14005477d
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x28], rax
jmp 0x140054797
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x28]
call fcn.140003c40
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400547b7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
call fcn.1400696cc
mov rcx, rax
test rax, rax
setne bpl
test ebp, ebp
jne 0x1400547d5
mov ecx, 0x80004005
call fcn.140001000
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
mov rbp, qword [rsp + 0x28]
mov rcx, qword [rbp - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rbp - 8], 0
jl 0x14005480d
cmp rax, qword [rbp - 0x18]
jne 0x14005480d
lea rdi, [rbp - 0x18]
lock add dword [rbp - 8], 1
jmp 0x14005484b
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rbp - 0x10]
call qword [rax]
mov rdi, rax
test rax, rax
jne 0x140054829
call fcn.1400019f0
int3
mov eax, dword [rbp - 0x10]
mov dword [rdi + 8], eax
mov eax, dword [rbp - 0x10]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
mov r8, rbp
add rdx, rdx
lea rcx, [rdi + 0x18]
call fcn.140080540
lea rax, [rdi + 0x18]
mov qword [rsp + 0x88], rax
lea rdx, [rsp + 0x38]
lea rcx, [rsp + 0x88]
call fcn.140027420
lea rdx, str.NONE
mov rcx, qword [rsp + 0x38]
call fcn.1400807e0
test eax, eax
je 0x140054b59
lea rdx, [r12 + 0x5d8]
lea r8, [0x1400a81a8]
lea rcx, [rsp + 0x58]
call fcn.14000b5c0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0xe8]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x140054904
cmp dword [rdi + 0x10], 0
jl 0x1400548f2
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x1400548f2
call fcn.1400031e0
mov rbx, rax
mov ecx, esi
lock xadd dword [rdi + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x1400548e4
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [rsp + 0xe8], rax
jmp 0x140054904
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0xe8]
call fcn.140003c40
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140054924
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea r8d, [r13 - 1]
lea rdx, [rsp + 0x68]
lea rcx, [rsp + 0x30]
call fcn.140003710
nop
mov r8, rax
lea rdx, [rsp + 0xe8]
lea rcx, [rsp + 0x40]
call fcn.140003ec0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0xe0]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x1400549b6
cmp dword [rdi + 0x10], 0
jl 0x1400549a4
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x1400549a4
call fcn.1400031e0
mov rbx, rax
mov ecx, esi
lock xadd dword [rdi + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x140054996
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [rsp + 0xe0], rax
jmp 0x1400549b6
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0xe0]
call fcn.140003c40
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400549d7
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, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400549f7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov dx, 0x5c
mov rdi, qword [rsp + 0xe0]
mov rcx, rdi
call fcn.140080890
test rax, rax
jne 0x140054a14
mov eax, esi
jmp 0x140054a1a
sub rax, rdi
sar rax, 1
mov r8d, eax
lea rdx, [rsp + 0x48]
lea rcx, [rsp + 0xe0]
call fcn.1400038a0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0x20]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x140054a8f
cmp dword [rdi + 0x10], 0
jl 0x140054a80
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140054a80
call fcn.1400031e0
mov rbx, rax
mov ecx, esi
lock xadd dword [rdi + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x140054a75
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x20], rax
jmp 0x140054a8f
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x20]
call fcn.140003c40
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140054aaf
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0xe0]
mov rdx, rbx
mov rcx, 0xffffffff80000001
call fcn.1400222b0
mov rdx, rbx
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov rdi, qword [rsp + 0x20]
mov rdx, rdi
mov rcx, 0xffffffff80000001
call fcn.1400223e0
cmp eax, 1
jne 0x140054aff
mov rdx, rdi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov rdi, qword [rsp + 0xe8]
mov rdx, rdi
mov rcx, 0xffffffff80000001
call fcn.1400223e0
cmp eax, 1
jne 0x140054b69
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 0x140054b69
lea rdx, str.SOFTWARECANON_
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
jmp 0x140054b69
mov rbx, qword [rsp + 0xe0]
mov rdi, qword [rsp + 0xe8]
mov rdx, qword [r12 + 0x5d8]
lea rcx, [rdx - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x140054bd5
cmp dword [rdi + 0x10], 0
jl 0x140054bc4
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140054bc4
call fcn.1400031e0
mov rbx, rax
mov ecx, esi
lock xadd dword [rdi + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x140054bae
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [rsp + 0xe8], rax
mov rbx, qword [rsp + 0xe0]
jmp 0x140054bd5
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0xe8]
call fcn.140003c40
lea r8d, [r13 - 1]
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x30]
call fcn.140003710
nop
mov r8, rax
lea rdx, [r12 + 0x5d8]
lea rcx, [rsp + 0x50]
call fcn.140003ec0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rbx, 0xffffffffffffffe8
cmp rcx, rbx
je 0x140054c5f
cmp dword [rbx + 0x10], 0
jl 0x140054c4d
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x140054c4d
call fcn.1400031e0
mov rdi, rax
mov ecx, esi
lock xadd dword [rbx + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x140054c3f
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rdi + 0x18]
mov qword [rsp + 0xe0], rax
jmp 0x140054c5f
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0xe0]
call fcn.140003c40
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140054c80
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, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140054ca0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov dx, 0x5c
mov rdi, qword [rsp + 0xe0]
mov rcx, rdi
call fcn.140080890
test rax, rax
jne 0x140054cbd
mov eax, esi
jmp 0x140054cc3
sub rax, rdi
sar rax, 1
mov r8d, eax
lea rdx, [rsp + 0x70]
lea rcx, [rsp + 0xe0]
call fcn.1400038a0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0x20]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x140054d38
cmp dword [rdi + 0x10], 0
jl 0x140054d29
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140054d29
call fcn.1400031e0
mov rbx, rax
mov ecx, esi
lock xadd dword [rdi + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x140054d1e
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x20], rax
jmp 0x140054d38
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x20]
call fcn.140003c40
nop
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140054d58
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdi, qword [rsp + 0xe0]
mov rdx, rdi
mov rcx, 0xffffffff80000001
call fcn.1400222b0
mov rdx, rdi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov rdi, qword [rsp + 0x20]
mov rdx, rdi
mov rcx, 0xffffffff80000001
call fcn.1400223e0
cmp eax, 1
jne 0x140054da8
mov rdx, rdi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov rdi, qword [rsp + 0xe8]
mov rdx, rdi
mov rcx, 0xffffffff80000001
call fcn.1400223e0
cmp eax, 1
jne 0x140054e00
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 0x140054e00
lea rdx, str.SOFTWARECANON_
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov rdi, qword [rsp + 0x38]
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi - 8], 0
jl 0x140054e29
cmp rax, qword [rdi - 0x18]
jne 0x140054e29
lea rbx, [rdi - 0x18]
lock add dword [rdi - 8], 1
jmp 0x140054e67
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rdi - 0x10]
call qword [rax]
mov rbx, rax
test rax, rax
jne 0x140054e45
call fcn.1400019f0
int3
mov eax, dword [rdi - 0x10]
mov dword [rbx + 8], eax
mov eax, dword [rdi - 0x10]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
mov r8, rdi
add rdx, rdx
lea rcx, [rbx + 0x18]
call fcn.140080540
lea rax, [rbx + 0x18]
mov qword [rsp + 0x80], rax
lea rcx, [rsp + 0x80]
call fcn.140025ad0
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140054ea2
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov eax, esi
lock xadd dword [rbp - 8], eax
add eax, 0xffffffff
test eax, eax
jg 0x140054ebf
mov rcx, qword [rbp - 0x18]
mov rax, qword [rcx]
lea rdx, [rbp - 0x18]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140054ee0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140054f01
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, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140054f25
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xe0]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x140054f46
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, 1
mov rbx, qword [rsp + 0xd0]
add rsp, 0xa0
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret