Function at 0x690031c0
Capabilities:
Delete registry key

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0x248
test byte [0x6900d018], 8
mov ebx, dword [ecx]
mov edi, dword [ecx + 4]
mov esi, dword [ecx + 8]
jne 0x690033d0
test edi, edi
je 0x690033bc
mov ecx, dword [section..bss]
test ecx, ecx
je 0x69003495
mov ecx, dword [edi]
lea eax, [ebp - 0x218]
mov dword [ebp - 0x21c], eax
test ecx, ecx
jne 0x69003237
jmp 0x690032c0
call dword [ecx + 0x1c]
sub esp, 0x10
test eax, eax
js 0x69003290
add edi, 8
mov ecx, dword [edi]
test ecx, ecx
je 0x690032c0
mov eax, dword [edi + 4]
cmp ecx, 1
mov edx, dword [eax]
mov dword [ebp - 0x218], edx
mov edx, dword [eax + 4]
mov dword [ebp - 0x214], edx
mov edx, dword [eax + 8]
mov dword [ebp - 0x210], edx
mov eax, dword [eax + 0xc]
mov edx, dword [ebp - 0x21c]
mov dword [ebp - 0x20c], eax
mov eax, dword [section..bss]
mov ecx, dword [eax]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 1
mov dword [esp + 4], ebx
mov dword [esp], eax
je 0x690032a0
test esi, esi
jne 0x69003220
call dword [ecx + 0x20]
sub esp, 0x10
test eax, eax
jns 0x6900322a
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0xc
test esi, esi
je 0x690032b0
call dword [ecx + 0x14]
sub esp, 0x10
jmp 0x69003226
call dword [ecx + 0x18]
sub esp, 0x10
jmp 0x69003226
test esi, esi
jne 0x690033bc
mov eax, dword [str.CLSID_]
lea edi, [ebp - 0x208]
mov ecx, 0x7c
mov dword [ebp - 0x218], eax
mov eax, dword [0x6900f274]
mov dword [ebp - 0x214], eax
mov eax, dword [0x6900f278]
mov dword [ebp - 0x210], eax
movzx eax, word [0x6900f27c]
mov word [ebp - 0x20c], ax
xor eax, eax
mov word [ebp - 0x20a], ax
mov eax, esi
lea esi, [ebp - 0x20c]
rep stosd dword es:[edi], eax
mov dword [esp], ebx
mov dword [esp + 8], 0x40
mov dword [esp + 4], esi
call sub.ole32.dll_StringFromGUID2
lea eax, [eax + eax - 2]
mov edx, 0x5c
sub esp, 0xc
lea ebx, [esi + eax + 2]
mov word [ebp + eax - 0x20c], dx
mov eax, str.Implemented_Categories
mov edx, ebx
nop
lea esi, [esi]
add eax, 2
movzx ecx, word [eax - 2]
add edx, 2
test cx, cx
mov word [edx - 2], cx
jne 0x69003350
lea eax, [ebp - 0x218]
mov dword [esp], 0x80000000
mov dword [esp + 4], eax
mov dword [ebp - 0x21c], eax
call sub.advapi32.dll_RegDeleteKeyW
mov eax, str.Required_Categories
sub esp, 8
mov esi, esi
lea edi, [edi]
add eax, 2
movzx edx, word [eax - 2]
add ebx, 2
test dx, dx
mov word [ebx - 2], dx
jne 0x69003390
mov eax, dword [ebp - 0x21c]
mov dword [esp], 0x80000000
mov dword [esp + 4], eax
call sub.advapi32.dll_RegDeleteKeyW
sub esp, 8
lea esp, [ebp - 0x10]
xor eax, eax
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0xc
test ebx, ebx
je 0x690034fc
mov eax, ebx
shr eax, 0x10
test eax, eax
je 0x69003480
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], 0x6900f070
mov dword [esp + 4], eax
call fcn.69001680
mov dword [esp + 0x18], esi
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], 0x6900d018
mov dword [esp], 3
call fcn.690018d0
jmp 0x690031ec
movzx eax, bx
mov dword [esp], 0x6900f061
mov dword [esp + 4], eax
call fcn.69001680
jmp 0x69003447
lea eax, [ebp - 0x218]
mov dword [esp + 0xc], 0x69015da8
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov dword [esp], 0x69015c88
mov dword [esp + 0x10], eax
call sub.ole32.dll_CoCreateInstance
sub esp, 0x14
test eax, eax
js 0x69003290
mov ecx, dword [ebp - 0x218]
xor eax, eax
lock cmpxchg dword [section..bss], ecx
test eax, eax
je 0x69003202
mov eax, dword [ebp - 0x218]
mov ecx, dword [eax]
mov dword [esp], eax
call dword [ecx + 8]
sub esp, 4
jmp 0x69003202
mov eax, section..rdata
jmp 0x69003447