Function at 0x40f450
Capabilities:
Delete registry key

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x43ceb1
mov eax, dword fs:[0]
push eax
sub esp, 0x29c
mov eax, dword [0x451430]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x284], eax
xor eax, eax
mov byte [ebp - 0x269], 0
mov dword [ebp - 0x288], eax
mov dword [ebp - 0x270], eax
push 0x4424cc
mov dword [ebp - 4], eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov ebx, eax
mov dword [ebp - 0x274], ebx
mov esi, dword [ebp + 0x14]
cmp esi, 0x400
mov byte [ebp - 4], 1
jne 0x40f4d8
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
push ebx
call esi
push 0
call esi
mov al, 1
jmp 0x40f9d2
cmp esi, 8
je 0x40f4c4
cmp esi, 4
je 0x40f4c4
cmp esi, 0x2000
je 0x40f4c4
cmp esi, 0x40
je 0x40f4c4
cmp esi, 0x80
je 0x40f4c4
cmp esi, 0x100
je 0x40f4c4
cmp esi, 0x200
je 0x40f4c4
cmp esi, 0x800
je 0x40f4c4
cmp esi, 0x10
je 0x40f4c4
mov ecx, dword [ebp - 0x284]
push ecx
push esi
push str.Registry_action__x_key__S_n
call fcn.0040c2f0
mov edx, dword [edi]
mov ecx, dword [edx + 0xb0]
add esp, 0xc
lea eax, [ebp - 0x2a8]
push eax
push ebx
push edi
call ecx
test eax, eax
jl 0x40f659
cmp word [ebp - 0x2a8], 1
je 0x40f659
mov edx, dword [ebp - 0x2a0]
push edx
lea ecx, [ebp - 0x280]
call fcn.0040c130
push eax
lea ecx, [ebp - 0x270]
call fcn.0040d1f0
mov eax, dword [ebp - 0x280]
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp - 0x270]
test eax, eax
je 0x40f5cd
push eax
call dword [sym.imp.OLEAUT32.dll_VariantInit]
cmp eax, 5
jbe 0x40f5cd
mov ecx, dword [ebp - 0x270]
push 5
push str.HKLM_
push ecx
call fcn.0042f322
add esp, 0xc
test eax, eax
jne 0x40f5cd
mov edx, dword [ebp - 0x270]
add edx, 0xa
push edx
push 0x44249c
push 0x12c
lea eax, [ebp - 0x268]
push eax
jmp 0x40f679
mov eax, dword [ebp - 0x284]
test eax, eax
jne 0x40f5e6
push str.no_rootKeyPath__n
call fcn.0040c2f0
jmp 0x40f9a2
push eax
push 0x44249c
lea ecx, [ebp - 0x268]
push 0x12c
push ecx
call fcn.00422b20
lea edx, [ebp - 0x268]
push edx
call fcn.00420840
add esp, 0x14
cmp word [ebp + eax*2 - 0x268], 0x5c
je 0x40f63c
mov eax, dword [ebp - 0x270]
cmp word [eax], 0x5c
je 0x40f63c
push 0x43fd14
lea ecx, [ebp - 0x268]
push 0x12c
push ecx
call fcn.00421b60
add esp, 0xc
mov edx, dword [ebp - 0x270]
push edx
lea eax, [ebp - 0x268]
push 0x12c
push eax
call fcn.00421b60
add esp, 0xc
jmp 0x40f681
mov eax, dword [ebp - 0x284]
test eax, eax
je 0x40f5d7
push eax
push 0x44249c
push 0x12c
lea ecx, [ebp - 0x268]
push ecx
call fcn.00422b20
add esp, 0x10
lea edx, [ebp - 0x268]
push edx
push str.Registry_key_path_set_to__S_n
call fcn.0040c2f0
mov eax, esi
add esp, 8
and eax, 1
mov dword [ebp - 0x298], eax
je 0x40f6e0
lea eax, [ebp - 0x268]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.00422dc0
add esp, 8
test eax, eax
mov dword [ebp - 0x288], eax
jne 0x40f6e0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x268]
push ecx
push str.Failed_to_open_or_create__S:__u_n
call fcn.0040c2f0
add esp, 0xc
jmp 0x40f992
mov edx, dword [edi]
mov ecx, dword [edx + 0x58]
lea eax, [ebp - 0x28c]
push eax
push edi
call ecx
test eax, eax
mov ebx, dword [ebp + 0x10]
jl 0x40f8a6
cmp word [ebp - 0x28c], 0xffff
jne 0x40f8a6
mov edx, dword [edi]
mov ecx, dword [edx + 0x30]
lea eax, [ebp - 0x290]
push eax
push edi
call ecx
test eax, eax
jl 0x40f894
xor edi, edi
cmp dword [ebp - 0x290], edi
je 0x40f894
mov eax, dword [ebp - 0x290]
mov edx, dword [eax]
mov edx, dword [edx + 0x24]
lea ecx, [ebp - 0x280]
push ecx
push eax
call edx
test eax, eax
jl 0x40f8af
mov eax, dword [ebp - 0x280]
cmp eax, edi
je 0x40f8af
mov ecx, dword [eax]
lea edx, [ebp - 0x294]
push edx
push eax
mov eax, dword [ecx + 0x28]
call eax
cmp eax, edi
jl 0x40f8af
cmp dword [ebp - 0x294], 1
jne 0x40f72d
mov dword [ebp - 0x278], edi
mov ecx, dword [ebp - 0x280]
push ecx
lea ecx, [ebp - 0x278]
mov byte [ebp - 4], 2
call fcn.0040d100
mov eax, dword [ebp - 0x280]
mov edx, dword [eax]
mov edx, dword [edx + 0x1c]
lea ecx, [ebp - 0x27c]
push ecx
push eax
call edx
cmp eax, edi
jl 0x40f859
mov eax, dword [ebp - 0x27c]
push str.Value
push eax
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x40f7f1
mov ecx, dword [ebp - 0x278]
push esi
push ebx
push ecx
lea edx, [ebp - 0x268]
push edx
call fcn.0040e870
test al, al
mov byte [ebp - 0x269], al
jne 0x40f7f1
cmp esi, 2
jne 0x40f885
mov eax, dword [ebp - 0x27c]
push str.Registry
push eax
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x40f82d
mov ecx, dword [ebp - 0x278]
push esi
push ebx
push ecx
lea edx, [ebp - 0x268]
push edx
call fcn.0040f450
test al, al
mov byte [ebp - 0x269], al
jne 0x40f82d
cmp esi, 2
jne 0x40f885
mov eax, dword [ebp - 0x27c]
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp - 0x278]
cmp eax, edi
mov byte [ebp - 4], 1
je 0x40f72d
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
jmp 0x40f72d
push str.Failed_to_get_child_elements_name_n
call fcn.0040c2f0
add esp, 4
mov eax, dword [ebp - 0x278]
cmp eax, edi
mov byte [ebp - 4], 1
je 0x40f98c
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
jmp 0x40f98c
mov eax, dword [ebp - 0x27c]
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
jmp 0x40f866
push str.Failed_to_get_elements_child_nodes_n
call fcn.0040c2f0
add esp, 4
jmp 0x40f98c
mov byte [ebp - 0x269], 1
xor edi, edi
mov eax, dword [ebp - 0x288]
cmp eax, edi
je 0x40f8c8
push eax
call fcn.00422c60
add esp, 4
mov dword [ebp - 0x288], edi
test bl, bl
je 0x40f98c
mov edi, dword [ebp - 0x284]
test edi, edi
je 0x40f98c
cmp dword [ebp - 0x270], 0
je 0x40f98c
cmp dword [ebp - 0x298], 0
je 0x40f90c
mov eax, dword [0x452540]
push eax
lea ecx, [ebp - 0x268]
push ecx
call fcn.00408cf0
mov byte [ebp - 0x269], al
cmp esi, 2
jne 0x40f98c
mov edx, dword [0x452540]
push edx
lea eax, [ebp - 0x268]
push eax
call fcn.00408d20
push 1
lea ecx, [ebp - 0x268]
push ecx
mov byte [ebp - 0x269], al
call fcn.00407200
test eax, eax
jne 0x40f98c
push edi
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.00422c80
mov esi, eax
add esp, 8
test esi, esi
je 0x40f98c
call fcn.0040c210
mov edi, eax
push edi
call fcn.00401070
mov ebx, dword [ebp - 0x270]
push ebx
push esi
call dword [sym.imp.SHLWAPI.dll_SHDeleteKeyW]
test eax, eax
je 0x40f97d
push ebx
push str.Failed_to_delete_fully_dereferenced_tree__S_n
call fcn.0040c2f0
add esp, 8
push esi
call fcn.00422c60
add esp, 4
push edi
call fcn.00401050
mov ebx, dword [ebp - 0x274]
mov eax, dword [ebp - 0x288]
test eax, eax
je 0x40f9a5
push eax
call fcn.00422c60
add esp, 4
movzx edx, byte [ebp - 0x269]
push edx
push str.parseRegistry_returning__u_n
call fcn.0040c2f0
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
add esp, 8
push ebx
call esi
mov eax, dword [ebp - 0x270]
push eax
call esi
mov al, byte [ebp - 0x269]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0042d845
mov esp, ebp
pop ebp
ret 0x10