Function at 0x401000
Capabilities:
Get common file path
Persist via app paths registry key
Set registry value
Terminate process

Disassembly:
sub esp, 0x238
push ebx
push ebp
push esi
push edi
push str.Setting_up_the_registry_...._r_n
call fcn.00401590
add esp, 4
lea eax, [esp + 0x148]
push eax
push 0xff
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea ecx, [esp + 0x18]
lea edx, [esp + 0x10]
push ecx
push edx
push 0
push 0xf003f
push 0
push 0
push 0
push str.SOFTWAREDelphineSoftMotoRacer2CurrentVersionMoto
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
mov ebx, dword [sym.imp.KERNEL32.dll_ExitProcess]
test eax, eax
je 0x401075
push 0
push str.Error_
push str.Error_creating_key_
push 0
call esi
push 0
call ebx
lea eax, [esp + 0x148]
lea ecx, [esp + 0x1c]
push eax
push 0x406298
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
lea edi, [esp + 0x28]
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
mov ebp, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
lea edx, [esp + 0x1c]
push ecx
push edx
push 1
push eax
mov eax, dword [esp + 0x20]
push str.DataPath
push eax
call ebp
test eax, eax
je 0x4010d0
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
lea ecx, [esp + 0x148]
lea edx, [esp + 0x1c]
push ecx
push 0x406270
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
lea edi, [esp + 0x28]
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
lea eax, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x14]
push eax
push 1
push 0
push str.SavingPath
push ecx
call ebp
test eax, eax
je 0x401126
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x14]
push 4
push edx
push 4
push 0
push str.InstallType
push eax
mov dword [esp + 0x2c], 2
call ebp
test eax, eax
je 0x40115d
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, str.ENGLISH
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
mov ecx, dword [esp + 0x14]
push str.ENGLISH
push 1
push eax
push str.Language
push ecx
call ebp
test eax, eax
je 0x401198
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x14]
push 4
push edx
push 4
push 0
push str.Version
push eax
mov dword [esp + 0x2c], 0
call ebp
test eax, eax
je 0x4011cf
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x14]
push 4
push ecx
push 4
push 0
push 0x406238
push edx
mov dword [esp + 0x2c], 0x8af6be5
call ebp
test eax, eax
je 0x401206
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0x18]
lea edx, [esp + 0x10]
push ecx
push edx
push 0
push 0xf003f
push 0
push 0
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionApp_PathsMoto.exe
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x401250
push 0
push str.Error_
push str.Error_creating_key_
push 0
call esi
push 0
call ebx
lea eax, [esp + 0x148]
lea ecx, [esp + 0x1c]
push eax
push 0x406270
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
lea edi, [esp + 0x28]
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
lea edx, [esp + 0x1c]
push ecx
push edx
push 1
push eax
mov eax, dword [esp + 0x20]
push str.Path
push eax
call ebp
test eax, eax
je 0x4012a5
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
lea ecx, [esp + 0x148]
lea edx, [esp + 0x1c]
push ecx
push str._sMoto.exe
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
lea edi, [esp + 0x28]
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
lea eax, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x14]
push eax
push 1
push 0
push 0
push ecx
call ebp
test eax, eax
je 0x4012f8
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [esp + 0x18]
lea ecx, [esp + 0x10]
push eax
push ecx
push 0
push 0xf003f
push 0
push 0
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstallMotoRacer2CurVer
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x401342
push 0
push str.Error_
push str.Error_creating_key_
push 0
call esi
push 0
call ebx
mov edi, str.C:WINDOWSuninst.exe__f_C:Program_FilesMotoRacer2DeIsL2.isu_
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
push ecx
push str.C:WINDOWSuninst.exe__f_C:Program_FilesMotoRacer2DeIsL2.isu_
push 1
push eax
push str.UninstallString
push edx
call ebp
test eax, eax
je 0x40137d
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, str.Moto_Racer_2
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push str.Moto_Racer_2
push 1
push eax
mov eax, dword [esp + 0x20]
push str.DisplayName
push eax
call ebp
test eax, eax
je 0x4013b8
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea edx, [esp + 0x18]
lea eax, [esp + 0x10]
push edx
push eax
push 0
push 0xf003f
push 0
push 0
push 0
push str.SOFTWAREMicrosoftDirectPlayApplicationsMoroRacer2
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x401402
push 0
push str.Error_
push str.Error_creating_key_
push 0
call esi
push 0
call ebx
mov edi, str._lobby
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
mov ecx, dword [esp + 0x14]
push str._lobby
push 1
push eax
push str.CommandLine
push ecx
call ebp
test eax, eax
je 0x40143d
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
lea edx, [esp + 0x148]
lea eax, [esp + 0x1c]
push edx
push 0x406270
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
lea edi, [esp + 0x28]
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
mov edx, dword [esp + 0x10]
not ecx
push ecx
lea ecx, [esp + 0x20]
push ecx
push 1
push eax
push str.CurrentDirectory
push edx
call ebp
test eax, eax
je 0x401492
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, str.Moto.exe
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push str.Moto.exe
push 1
push eax
mov eax, dword [esp + 0x20]
push str.File
push eax
call ebp
test eax, eax
je 0x4014cd
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, str.DF0343E3_FEF9_11d1_82BF_00A0C99899A2
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
mov ecx, dword [esp + 0x14]
push str.DF0343E3_FEF9_11d1_82BF_00A0C99899A2
push 1
push eax
push str.Guid
push ecx
call ebp
test eax, eax
je 0x401508
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
lea edx, [esp + 0x148]
lea eax, [esp + 0x1c]
push edx
push 0x406270
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
lea edi, [esp + 0x28]
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
mov edx, dword [esp + 0x10]
not ecx
push ecx
lea ecx, [esp + 0x20]
push ecx
push 1
push eax
push str.Path
push edx
call ebp
test eax, eax
je 0x40155d
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
push str.Registry_successfully_updated_r_nSetup.exe_was_created_using_RegLex__c__brainski_1998_r_n
call fcn.00401590
add esp, 4
push 0xbb8
call dword [sym.imp.KERNEL32.dll_Sleep]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x238
ret