Function at 0x40c770
Capabilities:
Delete registry key
Delete registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4546a8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x18
push ebx
push esi
push edi
push 0x45e470
lea ecx, [ebp - 0x10]
mov dword [ebp - 0x14], SysStringLen
call fcn.00401560
mov dword [ebp - 4], 0
mov eax, dword [section..data]
mov ecx, section..data
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov eax, dword [section..data]
mov ecx, section..data
mov dword [ebp - 0x24], esi
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov eax, dword [section..data]
mov ecx, section..data
mov dword [ebp - 0x20], edi
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 4], 1
cmp dword [ebx - 0xc], 0
jne 0x40c82a
cmp dword [edi - 0xc], 0
jne 0x40c803
lea ecx, [ebp - 0x24]
call fcn.0040a6e0
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x24]
mov edi, dword [ebp - 0x20]
cmp dword [esi - 0xc], 0
jne 0x40c817
lea ecx, [ebp - 0x24]
call fcn.0040a6e0
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x24]
test esi, esi
je 0x40c82a
lea eax, [ebp - 0x1c]
push eax
push edi
mov ecx, esi
call fcn.0040a5a0
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x40c852
cmp word [ebx], 0
je 0x40c852
push 0x45e470
push ebx
lea eax, [ebp - 0x10]
push 0x45be14
push eax
mov dword [ebp - 0x14], reloc.WS2_32.dll_closesocket
call fcn.004012e0
add esp, 0x10
mov esi, dword [sym.imp.SHLWAPI.dll_SHDeleteKeyW]
push 0x45e470
push reloc.OLEAUT32.dll_SysReAllocString
call esi
push dword [ebp - 0x10]
mov edi, dword [ebp - 0x14]
push edi
call esi
push str.SoftwareMicrosoftWindowsCurrentVersionUninstall_bfAppStore
push reloc.OLEAUT32.dll_SysReAllocString
call esi
push str.bfpkgFile
push closesocket
call esi
push str..bfpkg
push closesocket
call esi
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
call fcn.00402bb0
add eax, 0x10
mov dword [ebp - 0x18], eax
push 0xa
push str.CrashInfo
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 2
call fcn.0040a080
mov esi, dword [ebp - 0x18]
push str.CurCount
push esi
push edi
mov edi, dword [sym.imp.SHLWAPI.dll_SHDeleteValueW]
call edi
push str.Data
push esi
push dword [ebp - 0x14]
call edi
lea edx, [esi - 0x10]
or esi, 0xffffffff
mov byte [ebp - 4], 1
lea ecx, [edx + 0xc]
mov eax, esi
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x40c8f2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add ebx, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [ebx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40c90f
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x20]
add edx, 0xfffffff0
mov ecx, esi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40c92b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
mov ecx, esi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40c947
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], esi
dec esi
pop edi
test esi, esi
pop esi
pop ebx
jg 0x40c96b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret