Function at 0x40c070
Capabilities:
Delete registry key

Disassembly:
sub esp, 0x40c
mov eax, dword [str._q_]
xor eax, esp
push ebx
push ebp
push edi
mov ebp, ecx
mov dword [esp + 0x414], eax
mov eax, dword [ebp]
push str.Start_uninstallation...
push eax
call fcn.00404120
add esp, 8
push 0x71
mov ecx, 0x4224e8
call fcn.00408bf0
mov ecx, dword [ebp]
push str.Stopping_Agent_Service...
push ecx
call fcn.00404120
mov eax, dword [0x4225c0]
xor ebx, ebx
add esp, 8
cmp eax, ebx
je 0x40c0ca
cmp dword [0x4225d4], ebx
je 0x40c10f
mov eax, dword [0x4224e8]
mov edi, dword [sym.imp.USER32.dll_LoadStringA]
push 0x200
lea edx, [esp + 0x10]
push edx
push 0x73
push eax
mov byte [esp + 0x1c], bl
call edi
mov eax, dword [0x4224f4]
cmp eax, ebx
je 0x40c102
lea ecx, [esp + 0xc]
push ecx
push 0x3e9
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
push ebx
mov ecx, 0x4224f0
call fcn.0040d030
jmp 0x40c115
mov edi, dword [sym.imp.USER32.dll_LoadStringA]
mov ecx, ebp
call fcn.004091a0
cmp dword [0x4225c0], ebx
je 0x40c12c
cmp dword [0x4225d4], ebx
je 0x40c16a
mov eax, dword [0x4224e8]
push 0x200
lea edx, [esp + 0x10]
push edx
push 0x73
push eax
mov byte [esp + 0x1c], bl
call edi
mov eax, dword [0x4224f4]
cmp eax, ebx
je 0x40c15e
lea ecx, [esp + 0xc]
push ecx
push 0x3e9
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
push 5
mov ecx, 0x4224f0
call fcn.0040d030
push esi
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0xbb8
call esi
mov edx, dword [ebp]
push str.Stopping_user_interface_modules...
push edx
call fcn.00404120
mov eax, dword [0x4225c0]
add esp, 8
cmp eax, ebx
je 0x40c19a
cmp dword [0x4225d4], ebx
je 0x40c1d9
mov ecx, dword [0x4224e8]
push 0x200
lea eax, [esp + 0x14]
push eax
push 0x74
push ecx
mov byte [esp + 0x20], bl
call edi
mov eax, dword [0x4224f4]
cmp eax, ebx
je 0x40c1cd
lea edx, [esp + 0x10]
push edx
push 0x3e9
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
push 0xa
mov ecx, 0x4224f0
call fcn.0040d030
mov ecx, ebp
call fcn.00409580
cmp dword [0x4225c0], ebx
je 0x40c1f0
cmp dword [0x4225d4], ebx
je 0x40c22f
mov ecx, dword [0x4224e8]
push 0x200
lea eax, [esp + 0x14]
push eax
push 0x74
push ecx
mov byte [esp + 0x20], bl
call edi
mov eax, dword [0x4224f4]
cmp eax, ebx
je 0x40c223
lea edx, [esp + 0x10]
push edx
push 0x3e9
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
push 0xf
mov ecx, 0x4224f0
call fcn.0040d030
push 0xbb8
call esi
mov eax, dword [ebp]
push str.Removing_service...
push eax
call fcn.00404120
mov eax, dword [0x4225c0]
add esp, 8
cmp eax, ebx
je 0x40c258
cmp dword [0x4225d4], ebx
je 0x40c297
mov edx, dword [0x4224e8]
push 0x200
lea ecx, [esp + 0x14]
push ecx
push 0x75
push edx
mov byte [esp + 0x20], bl
call edi
mov eax, dword [0x4224f4]
cmp eax, ebx
je 0x40c28b
lea ecx, [esp + 0x10]
push ecx
push 0x3e9
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
push 0x14
mov ecx, 0x4224f0
call fcn.0040d030
mov ecx, ebp
call fcn.00409430
mov edx, dword [ebp]
push str.Removing_files...
push edx
call fcn.00404120
mov eax, dword [str._TARGETDIR_]
add esp, 8
xor esi, esi
cmp eax, ebx
je 0x40c32e
xor eax, eax
mov ecx, 0x421050
xor edi, edi
test byte [eax + 0x421058], 2
je 0x40c2da
mov eax, dword [ecx + 4]
mov ecx, dword [ecx]
push eax
push ecx
mov ecx, ebp
call fcn.0040b210
mov ecx, dword [0x4225c0]
mov eax, 0x3159721f
imul edi
sar edx, 4
mov eax, edx
shr eax, 0x1f
cmp ecx, ebx
lea eax, [edx + eax + 0x14]
je 0x40c2ff
cmp dword [0x4225d4], ebx
je 0x40c30e
cmp eax, ebx
jl 0x40c30e
push eax
mov ecx, 0x4224f0
call fcn.0040d030
inc esi
lea eax, [esi + esi*2]
shl eax, 2
mov edx, dword [eax + 0x421050]
lea ecx, [eax + 0x421050]
add edi, 0x3c
cmp edx, ebx
jne 0x40c2c3
mov edi, dword [sym.imp.USER32.dll_LoadStringA]
cmp dword [0x4225c0], ebx
pop esi
je 0x40c33f
cmp dword [0x4225d4], ebx
je 0x40c37e
mov edx, dword [0x4224e8]
push 0x200
lea ecx, [esp + 0x10]
push ecx
push 0x77
push edx
mov byte [esp + 0x1c], bl
call edi
mov eax, dword [0x4224f4]
cmp eax, ebx
je 0x40c372
lea ecx, [esp + 0xc]
push ecx
push 0x3e9
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
push 0x50
mov ecx, 0x4224f0
call fcn.0040d030
mov ecx, ebp
call fcn.0040bd80
mov edx, dword [ebp]
push str.Removing_registry...
push edx
call fcn.00404120
mov eax, dword [0x4225c0]
add esp, 8
cmp eax, ebx
je 0x40c3a7
cmp dword [0x4225d4], ebx
je 0x40c3e6
mov ecx, dword [0x4224e8]
push 0x200
lea eax, [esp + 0x10]
push eax
push 0x76
push ecx
mov byte [esp + 0x1c], bl
call edi
mov eax, dword [0x4224f4]
cmp eax, ebx
je 0x40c3da
lea edx, [esp + 0xc]
push edx
push 0x3e9
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
push 0x5a
mov ecx, 0x4224f0
call fcn.0040d030
mov ecx, ebp
call fcn.00409e10
mov eax, dword [ebp]
push str.Removing_shortcut_and_folder...
push eax
call fcn.00404120
add esp, 8
mov ecx, ebp
call fcn.0040abd0
mov ecx, dword [ebp]
push str.Remove_uninstallation_key...
push ecx
call fcn.00404120
mov eax, dword [0x4225c0]
add esp, 8
cmp eax, ebx
je 0x40c427
cmp dword [0x4225d4], ebx
je 0x40c465
mov eax, dword [0x4224e8]
push 0x200
lea edx, [esp + 0x10]
push edx
push 0x78
push eax
mov byte [esp + 0x1c], bl
call edi
mov eax, dword [0x4224f4]
cmp eax, ebx
je 0x40c459
lea ecx, [esp + 0xc]
push ecx
push 0x3e9
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
push 0x5f
mov ecx, 0x4224f0
call fcn.0040d030
mov edx, dword [ebp]
mov eax, dword [edx + 0x1c]
push eax
lea ecx, [esp + 0x210]
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstallKA_s
push ecx
call fcn.0040f6f9
add esp, 0xc
lea edx, [esp + 0x20c]
push edx
push 0x80000002
call dword [sym.imp.SHLWAPI.dll_SHDeleteKeyA]
mov ecx, dword [ebp]
call fcn.004043b0
test eax, eax
jne 0x40c4b8
mov eax, dword [ebp]
push str.This_is_the_last_agent_on_the_machine.
push eax
call fcn.00404120
add esp, 8
mov ecx, ebp
call fcn.0040a7e0
mov ecx, dword [ebp]
push str.Setup_finished.
push ecx
call fcn.00404120
mov ecx, dword [esp + 0x41c]
add esp, 8
pop edi
pop ebp
pop ebx
xor ecx, esp
xor eax, eax
call fcn.0040f175
add esp, 0x40c
ret