Function at 0x10001a20
Capabilities:
Delete registry key

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
lea ecx, [ebp + 8]
sub esp, 0x230
mov ebx, dword [ecx]
mov edi, dword [ecx + 4]
test byte [0x1000c018], 8
jne 0x10001b78
test edi, edi
je 0x10001b64
mov edx, dword [section..bss]
lea esi, [ebp - 0x210]
test edx, edx
jne 0x10001a6d
jmp 0x10001c48
call dword [eax + 0x20]
sub esp, 0x10
test eax, eax
js 0x10001aab
add edi, 8
mov eax, dword [edi]
test eax, eax
je 0x10001ac0
mov edx, dword [edi + 4]
cmp eax, 1
movdqu xmm0, xmmword [edx]
mov edx, dword [section..bss]
movups xmmword [ebp - 0x210], xmm0
mov eax, dword [edx]
mov dword [esp + 0xc], esi
mov dword [esp + 8], 1
mov dword [esp + 4], ebx
mov dword [esp], edx
jne 0x10001a60
call dword [eax + 0x18]
sub esp, 0x10
test eax, eax
jns 0x10001a6a
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 0xc
movdqu xmm1, xmmword [str.CLSID_]
xor eax, eax
lea edi, [ebp - 0x200]
mov ecx, 0x7c
movups xmmword [ebp - 0x210], xmm1
rep stosd dword es:[edi], eax
lea edi, [ebp - 0x204]
mov dword [esp], ebx
mov dword [esp + 8], 0x40
mov dword [esp + 4], edi
call dword [sym.imp.ole32.dll_StringFromGUID2]
lea ebx, [edi + eax*2 - 2]
mov eax, 0x5c
sub esp, 0xc
mov word [ebx], ax
xor eax, eax
lea esi, [esi]
movzx edx, word [eax + str.Implemented_Categories]
mov word [ebx + eax + 2], dx
add eax, 2
test dx, dx
jne 0x10001b10
mov dword [esp + 4], esi
mov edi, dword [sym.imp.advapi32.dll_RegDeleteKeyW]
mov dword [esp], 0x80000000
call edi
xor eax, eax
sub esp, 8
lea esi, [esi]
movzx edx, word [eax + str.Required_Categories]
mov word [ebx + eax + 2], dx
add eax, 2
test dx, dx
jne 0x10001b40
mov dword [esp + 4], esi
mov dword [esp], 0x80000000
call edi
sub esp, 8
lea esp, [ebp - 0x10]
xor eax, eax
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 0xc
test ebx, ebx
je 0x10001caa
mov eax, ebx
shr eax, 0x10
je 0x10001c30
movzx eax, byte [ebx + 0xf]
mov dword [esp + 0x2c], eax
movzx eax, byte [ebx + 0xe]
mov dword [esp + 0x28], eax
movzx eax, byte [ebx + 0xd]
mov dword [esp + 0x24], eax
movzx eax, byte [ebx + 0xc]
mov dword [esp + 0x20], eax
movzx eax, byte [ebx + 0xb]
mov dword [esp + 0x1c], eax
movzx eax, byte [ebx + 0xa]
mov dword [esp + 0x18], eax
movzx eax, byte [ebx + 9]
mov dword [esp + 0x14], eax
movzx eax, byte [ebx + 8]
mov dword [esp + 0x10], eax
movzx eax, word [ebx + 6]
mov dword [esp + 0xc], eax
movzx eax, word [ebx + 4]
mov dword [esp + 8], eax
mov eax, dword [ebx]
mov dword [esp], 0x1000e028
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.__s__p__x__n
mov dword [esp + 8], str.AtlRegisterClassCategoriesHelper
mov dword [esp + 4], 0x1000c018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x10001a42
mov dword [esp + 4], ebx
mov dword [esp], 0x1000e017
call sym._wine_dbg_sprintf
jmp 0x10001bed
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], 0x100153e8
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov dword [esp], 0x100152c8
call dword [sym.imp.ole32.dll_CoCreateInstance]
sub esp, 0x14
test eax, eax
js 0x10001aab
mov edx, dword [ebp - 0x210]
xor eax, eax
lock cmpxchg dword [section..bss], edx
test eax, eax
je 0x10001a6d
mov eax, dword [ebp - 0x210]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
sub esp, 4
jmp 0x10001a6d
mov eax, section..rdata
jmp 0x10001bed