Function at 0x4638d0
Capabilities:
Delete registry key
Persist via default file association registry key
Print debug messages
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x591e95
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x928
push ebx
push esi
push edi
mov edi, str.None._First_operations_failed.
mov dword [ebp - 0x14], 0
push dword [ebp + 8]
lea eax, [ebp - 0x14]
mov dword [ebp - 4], 0
push str.SoftwareClasses_s
push eax
call fcn.0046ac80
movzx esi, byte [ebp + 0x10]
add esp, 0xc
mov eax, dword [ebp - 0x14]
xor esi, 1
sub esi, 0x7fffffff
mov dword [ebp - 0x10], 0
test eax, eax
mov dword [ebp - 0x20], esi
mov ebx, 0x594544
mov dword [ebp - 0x18], 0
mov ecx, ebx
mov byte [ebp + 0x13], 0
cmovne ecx, eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x10]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
push ecx
push esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne 0x463ba0
mov edi, str.Created_steam_key_in_HKCROOT
mov dword [ebp - 0x1c], eax
push dword [ebp + 8]
lea eax, [ebp - 0x1c]
mov byte [ebp - 4], 1
push str.URL:_s_protocol
push eax
call fcn.0046ac80
mov eax, dword [ebp - 0x1c]
add esp, 0xc
test eax, eax
jne 0x46399c
lea edx, [eax + 1]
mov eax, ebx
jmp 0x4639af
mov edx, eax
lea ecx, [edx + 1]
mov dword [ebp - 0x24], ecx
mov cl, byte [edx]
inc edx
test cl, cl
jne 0x4639a4
sub edx, dword [ebp - 0x24]
inc edx
push edx
push eax
push 1
push 0
push 0x594544
push dword [ebp - 0x10]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
jne 0x463b7f
push eax
push 0x594544
push 1
push eax
push str.URL_Protocol
push dword [ebp - 0x10]
mov edi, str.Created_default_value_for_URL:
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
jne 0x463b7f
push dword [ebp - 0x10]
mov edi, str.Created_empty_URL_Protocol_value
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x14]
mov ecx, ebx
test eax, eax
mov dword [ebp - 0x10], 0
cmovne ecx, eax
lea eax, [ebp - 0x134]
push ecx
push str._sDefaultIcon
push 0x104
push eax
call fcn.00469da0
add esp, 0x10
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x10]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
lea eax, [ebp - 0x134]
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne 0x463b7f
push 0xc
lea eax, [ebp - 0x30]
mov edi, str.Created_default_icon_key
push eax
push dword [ebp + 0xc]
call fcn.00468ed0
push 0x800
lea eax, [ebp - 0x934]
push eax
push dword [ebp + 0xc]
call fcn.00468ff0
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x934]
push eax
push str._s._s
push 0x800
push eax
call fcn.00469da0
lea ecx, [ebp - 0x934]
add esp, 0x2c
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x463aa1
sub ecx, edx
lea eax, [ecx + 1]
push eax
lea eax, [ebp - 0x934]
push eax
push 1
push 0
push 0x594544
push dword [ebp - 0x10]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
jne 0x463b7f
push dword [ebp - 0x10]
mov edi, str.Created_default_icon_value
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x14]
mov ecx, ebx
test eax, eax
mov dword [ebp - 0x10], 0
cmovne ecx, eax
lea eax, [ebp - 0x134]
push ecx
push str._sShellOpenCommand
push 0x104
push eax
call fcn.00469da0
add esp, 0x10
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x10]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
lea eax, [ebp - 0x134]
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne 0x463b7f
push dword [ebp + 0xc]
lea eax, [ebp - 0x934]
mov edi, str.Created_Shell_Open_key
push str.__s________1_
push 0x800
push eax
call fcn.00469da0
lea eax, [ebp - 0x934]
push eax
push 0x594544
push dword [ebp - 0x10]
call fcn.00463ea0
add esp, 0x1c
mov esi, eax
push dword [ebp - 0x10]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
mov esi, dword [ebp - 0x20]
jne 0x463b7f
mov edi, str.Created_Shell_Open_value__full_success__
mov byte [ebp + 0x13], 1
mov byte [ebp - 4], 2
call fcn.0047f9f0
push 0
push dword [ebp - 0x1c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x1c]
mov ecx, eax
call edx
cmp byte [ebp + 0x13], 0
je 0x463ba0
mov bl, 1
jmp 0x463bc7
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x463bae
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x14]
test eax, eax
cmovne ebx, eax
push ebx
push esi
call dword [sym.imp.SHLWAPI.dll_SHDeleteKeyA]
push edi
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
xor bl, bl
mov dword [ebp - 4], 4
call fcn.0047f9f0
push 0
push dword [ebp - 0x14]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x1c]
mov ecx, dword [ebp - 0xc]
mov al, bl
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret