Function at 0x41d6c0
Capabilities:
Delete registry key

Disassembly:
push 0xffffffffffffffff
push 0x423e5b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x3c
mov al, byte [esp + 3]
push esi
push 0
lea ecx, [esp + 0x24]
mov byte [esp + 0x24], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov cl, byte [0x42ca4f]
mov esi, dword [0x42ca7c]
movsx dx, byte [0x42ca48]
mov eax, dword [0x42ca84]
add edx, esi
neg cl
mov byte [0x42ca4c], cl
mov ecx, dword [0x42ca78]
push eax
push ecx
mov dword [esp + 0x50], 0
mov word [0x42ca62], dx
call fcn.0040e9f0
lea edx, [esp + 0x28]
mov byte [0x42ca4d], al
push edx
push 0
call fcn.0040ea80
add esp, 0x10
test eax, eax
je 0x41da82
mov al, byte [esp + 7]
push ebp
push 0
lea ecx, [esp + 0x18]
mov byte [esp + 0x18], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
movsx ecx, byte [0x42ca4b]
push ecx
push 0x1f57ffff
mov byte [esp + 0x54], 1
call fcn.0040e9f0
mov cl, byte [0x42ca4c]
mov ebp, dword [0x42ca84]
add cl, al
lea edx, [esp + 0x1c]
mov byte [0x42ca4c], cl
lea eax, [esp + 0x18]
push edx
lea ecx, [esp + 0x30]
sub ebp, 0x2c200001
push eax
push ecx
mov dword [0x42ca84], ebp
call fcn.0041df30
add esp, 0x14
test eax, eax
je 0x41da58
mov edx, dword [0x42ca70]
push ebx
push edx
push 0x41d5ffff
call fcn.0040e9b0
mov bl, byte [0x42ca4a]
add esp, 8
add bl, al
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov byte [0x42ca4a], bl
push 1
mov eax, dword [eax]
lea ecx, [esp + 0x13]
push eax
push ecx
lea ecx, [esp + 0x24]
mov byte [esp + 0x1b], 0x5c
call dword [sym.imp.MSVCP60.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::rfind_char_const___unsigned_int__unsigned_int_const]
mov bl, byte [0x42ca4b]
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
dec bl
mov esi, eax
mov byte [0x42ca4b], bl
mov eax, dword [edx]
lea ecx, [esi + 1]
push eax
lea edx, [esp + 0x3c]
push ecx
push edx
lea ecx, [esp + 0x24]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::substr_unsigned_int__unsigned_int_]
movsx eax, byte [0x42ca4e]
push eax
push 0x36f7ffff
mov byte [esp + 0x58], 2
call fcn.0040e960
mov dl, byte [0x42ca4c]
push 0xc39bffff
add dl, al
push 0xa773ffff
mov byte [0x42ca4c], dl
call fcn.0040e910
mov bl, byte [0x42ca49]
mov dl, byte [0x42ca50]
add bl, al
xor eax, eax
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
add esp, 0x10
cmp word [0x42ca56], ax
mov byte [0x42ca49], bl
setne al
add dl, al
mov eax, dword [esp + 0x20]
mov byte [0x42ca50], dl
mov ebp, dword [ecx]
cmp eax, esi
jae 0x41d899
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xran_void_]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x41d8dd
mov cl, byte [edx - 1]
test cl, cl
je 0x41d8dd
cmp cl, 0xff
je 0x41d8dd
push edi
push 1
lea ecx, [esp + 0x20]
mov ebx, edx
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push ebx
lea ecx, [esp + 0x24]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
pop edi
mov ecx, eax
sub ecx, esi
cmp ecx, ebp
jae 0x41d8e7
mov ebp, ecx
test ebp, ebp
jbe 0x41d928
sub eax, ebp
lea ecx, [edx + ebp]
sub eax, esi
add ecx, esi
add edx, esi
push eax
push ecx
push edx
call dword [sym.imp.MSVCRT.dll_memmove]
mov esi, dword [esp + 0x2c]
add esp, 0xc
sub esi, ebp
lea ecx, [esp + 0x18]
push 0
push esi
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x41d924
push esi
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Eos_unsigned_int_]
mov edx, dword [esp + 0x1c]
mov al, byte [0x42ca68]
mov bl, byte [0x42ca51]
mov cl, byte [0x42ca4a]
sub bl, al
mov ax, word [0x42ca8c]
dec cl
sub word [0x42ca5c], ax
mov byte [0x42ca51], bl
test edx, edx
mov byte [0x42ca50], cl
pop ebx
jne 0x41d961
mov edx, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
lea ecx, [esp + 0xc]
push ecx
push 0x2001f
push 0
push edx
mov edx, dword [esp + 0x20]
push edx
call dword [0x42d018]
test eax, eax
jne 0x41d9d9
movsx eax, word [0x42ca52]
movsx ecx, byte [0x42ca4f]
mov esi, dword [0x42ca78]
mov edx, dword [0x42ca70]
and eax, 0x15e7ffff
and ecx, esi
mov dword [0x42ca7c], eax
mov eax, dword [esp + 0x38]
add edx, ecx
test eax, eax
mov dword [0x42ca70], edx
jne 0x41d9b8
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov edx, dword [esp + 0xc]
push eax
push edx
call dword [sym.imp.SHLWAPI.dll_SHDeleteKeyA]
mov al, byte [0x42ca5c]
mov cl, byte [0x42ca49]
inc al
add cl, al
mov byte [0x42ca49], cl
movsx cx, byte [0x42ca4f]
mov edx, dword [esp + 0xc]
dec ecx
push edx
mov word [0x42ca5c], cx
mov dword [0x42ca80], 0x424e0000
call fcn.0041c7a0
movsx eax, word [0x42ca64]
movsx ecx, word [0x42ca5e]
push eax
push ecx
call fcn.0040e890
movsx edx, word [0x42ca5e]
add word [0x42ca5a], ax
push edx
push 0x7b3bffff
call fcn.0040e8d0
mov byte [0x42ca4e], al
mov eax, dword [esp + 0x4c]
add esp, 0x14
test eax, eax
je 0x41da58
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x41da4f
cmp al, 0xff
je 0x41da4f
dec al
mov byte [ecx], al
jmp 0x41da58
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov ecx, dword [esp + 0x18]
mov byte [esp + 0x4c], 0
test ecx, ecx
pop ebp
je 0x41da82
mov al, byte [ecx - 1]
test al, al
je 0x41da78
cmp al, 0xff
je 0x41da78
dec al
mov byte [ecx - 1], al
jmp 0x41da82
dec ecx
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
push 0x5325ffff
push 0xa60dffff
call fcn.0040e7e0
mov edx, dword [0x42ca84]
mov cl, byte [0x42ca4d]
add esp, 8
add edx, eax
inc cl
mov dword [0x42ca84], edx
mov byte [0x42ca4d], cl
mov ecx, dword [esp + 0x24]
test ecx, ecx
pop esi
je 0x41dae2
mov al, byte [ecx - 1]
test al, al
je 0x41dad8
cmp al, 0xff
je 0x41dad8
dec al
mov byte [ecx - 1], al
mov ecx, dword [esp + 0x3c]
mov dword fs:[0], ecx
add esp, 0x48
ret
dec ecx
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov ecx, dword [esp + 0x3c]
mov dword fs:[0], ecx
add esp, 0x48
ret