Function at 0x404600
Capabilities:
Delete registry key
Delete registry value
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x23c
mov eax, dword [0x4262b8]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
lea eax, [ebp - 0x234]
xor edi, edi
push eax
push 0x20119
push edi
push str.Applications_app.exe_shellopencommand
push 0x80000000
mov dword [ebp - 0x234], edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4047a9
push 0x122
mov dword [ebp - 0x230], 0x122
call sub.mfc140.dll_Ordinal_265
add esp, 4
mov esi, eax
lea eax, [ebp - 0x230]
push eax
push esi
lea eax, [ebp - 0x22c]
push eax
push edi
push edi
push dword [ebp - 0x234]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x404790
cmp dword [ebp - 0x22c], 1
jne 0x404790
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__strupr]
push 0x41aaf4
push esi
call dword [sym.imp.VCRUNTIME140.dll_strstr]
add esp, 0xc
test eax, eax
je 0x404790
push 0x104
mov byte [eax + 7], 0
call sub.mfc140.dll_Ordinal_265
push 0x104
mov ebx, eax
call sub.mfc140.dll_Ordinal_265
push 0x104
mov dword [ebp - 0x220], eax
call sub.mfc140.dll_Ordinal_265
mov ecx, dword [ebp - 0x220]
add esp, 0xc
mov byte [ebx], 0
mov dword [ebp - 0x224], eax
push 0x104
push ebx
mov byte [ecx], 0
push esi
mov byte [eax], 0
call dword [sym.imp.KERNEL32.dll_GetLongPathNameA]
push 0x104
push dword [ebp - 0x220]
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x104
push dword [ebp - 0x224]
push dword [ebp - 0x220]
call dword [sym.imp.KERNEL32.dll_GetLongPathNameA]
push ebx
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__strupr]
push dword [ebp - 0x224]
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__strupr]
mov ecx, dword [ebp - 0x224]
add esp, 8
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x404762
test dl, dl
je 0x40475e
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x404762
add eax, 2
add ecx, 2
test dl, dl
jne 0x404742
xor eax, eax
jmp 0x404767
sbb eax, eax
or eax, 1
test eax, eax
mov ecx, 1
push ebx
cmove edi, ecx
call sub.mfc140.dll_Ordinal_266
push dword [ebp - 0x220]
call sub.mfc140.dll_Ordinal_266
push dword [ebp - 0x224]
call sub.mfc140.dll_Ordinal_266
add esp, 0xc
push esi
call sub.mfc140.dll_Ordinal_266
add esp, 4
push dword [ebp - 0x234]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
jne 0x4047b9
push str.Applications_app.exe
push 0x80000000
call dword [sym.imp.SHLWAPI.dll_SHDeleteKeyA]
mov esi, dword [sym.imp.ADVAPI32.dll_RegEnumValueA]
xor ebx, ebx
mov dword [ebp - 0x230], ebx
nop word [eax + eax]
mov dword [ebp - 0x220], 0
lea eax, [ebp - 0x220]
push eax
push 0x2011b
push 0
test ebx, ebx
jne 0x404806
push str.SoftwareMicrosoftWindowsShellNoRoamMUICache
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4049f8
jmp 0x40481e
push str.Local_SettingsSoftwareMicrosoftWindowsShellMUICache
push 0x80000000
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x404a08
lea eax, [ebp - 0x238]
mov dword [ebp - 0x23c], 0x118
push eax
lea eax, [ebp - 0x21c]
mov dword [ebp - 0x238], 0x100
push eax
lea eax, [ebp - 0x22c]
xor edi, edi
push eax
push edi
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x11c]
push eax
push edi
push dword [ebp - 0x220]
call esi
test eax, eax
jne 0x4049ec
nop dword [eax]
xor esi, esi
cmp dword [ebp - 0x22c], 1
jne 0x40497c
lea eax, [ebp - 0x11c]
push eax
call fcn.00406580
mov esi, eax
add esp, 4
test esi, esi
je 0x40497c
push 0x104
call sub.mfc140.dll_Ordinal_265
push 0x104
mov ebx, eax
call sub.mfc140.dll_Ordinal_265
push 0x104
mov dword [ebp - 0x224], eax
call sub.mfc140.dll_Ordinal_265
mov ecx, dword [ebp - 0x224]
add esp, 0xc
mov byte [ebx], 0
mov dword [ebp - 0x228], eax
push 0x104
mov byte [ecx], 0
mov byte [eax], 0
lea eax, [ebp - 0x11c]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetLongPathNameA]
push 0x104
push dword [ebp - 0x224]
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x104
push dword [ebp - 0x228]
push dword [ebp - 0x224]
call dword [sym.imp.KERNEL32.dll_GetLongPathNameA]
push ebx
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__strupr]
push dword [ebp - 0x228]
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__strupr]
mov eax, dword [ebp - 0x228]
add esp, 8
mov ecx, ebx
mov dl, byte [ecx]
cmp dl, byte [eax]
jne 0x404951
test dl, dl
je 0x40494d
mov dl, byte [ecx + 1]
cmp dl, byte [eax + 1]
jne 0x404951
add ecx, 2
add eax, 2
test dl, dl
jne 0x404931
xor eax, eax
jmp 0x404956
sbb eax, eax
or eax, 1
xor ecx, ecx
test eax, eax
push ebx
cmove esi, ecx
call sub.mfc140.dll_Ordinal_266
push dword [ebp - 0x224]
call sub.mfc140.dll_Ordinal_266
push dword [ebp - 0x228]
call sub.mfc140.dll_Ordinal_266
add esp, 0xc
mov dword [ebp - 0x23c], 0x118
mov dword [ebp - 0x238], 0x100
test esi, esi
je 0x4049a9
lea eax, [ebp - 0x11c]
push eax
push dword [ebp - 0x220]
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueA]
jmp 0x4049aa
inc edi
mov esi, dword [sym.imp.ADVAPI32.dll_RegEnumValueA]
lea eax, [ebp - 0x238]
push eax
lea eax, [ebp - 0x21c]
push eax
lea eax, [ebp - 0x22c]
push eax
push 0
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x11c]
push eax
push edi
push dword [ebp - 0x220]
call esi
test eax, eax
je 0x404870
mov ebx, dword [ebp - 0x230]
push dword [ebp - 0x220]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
inc ebx
mov dword [ebp - 0x230], ebx
cmp ebx, 2
jl 0x4047d0
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00413da6
mov esp, ebp
pop ebp
ret