Function at 0x401000
Capabilities:
Get common file path
Set registry value
Terminate process

Disassembly:
sub esp, 0x238
push ebx
push esi
push edi
push str.Setting_up_the_registry_...._r_n
call fcn.00401c90
add esp, 4
lea eax, [esp + 0x144]
push eax
push 0xff
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea ecx, [esp + 0x14]
lea edx, [esp + 0xc]
push ecx
mov edi, dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
push edx
push 0
push 0xf003f
push 0
push 0
push 0
push str.SoftwareMicrosoftMicrosoft_Games
push 0x80000002
call edi
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
mov ebx, dword [sym.imp.KERNEL32.dll_ExitProcess]
test eax, eax
je 0x401076
push 0
push str.Error_
push str.Error_creating_key_
push 0
call esi
push 0
call ebx
mov eax, dword [esp + 0xc]
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_CloseHandle]
push eax
call ebp
lea ecx, [esp + 0x18]
lea edx, [esp + 0x10]
push ecx
push edx
push 0
push 0xf003f
push 0
push 0
push 0
push str.SoftwareMicrosoftMicrosoft_GamesAge_of_Empires
push 0x80000002
call edi
test eax, eax
je 0x4010bf
push 0
push str.Error_
push str.Error_creating_key_
push 0
call esi
push 0
call ebx
mov eax, dword [esp + 0x10]
push eax
call ebp
lea ecx, [esp + 0x18]
lea edx, [esp + 0x10]
push ecx
push edx
push 0
push 0xf003f
push 0
push 0
push 0
push str.SoftwareMicrosoftMicrosoft_GamesAge_of_Empires2.0
push 0x80000002
call edi
test eax, eax
je 0x401101
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 0x4084dc
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.CDPath
push eax
call ebp
test eax, eax
je 0x40115c
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, str.00000_000_0000000_00000
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
mov ecx, dword [esp + 0x14]
push str.00000_000_0000000_00000
push 1
push eax
push 0x4084a0
push ecx
call ebp
test eax, eax
je 0x401197
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, 0x40849c
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
push ecx
push 0x40849c
push 1
push eax
push str.InstallType
push edx
call ebp
test eax, eax
je 0x4011d2
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
lea eax, [esp + 0x148]
lea ecx, [esp + 0x1c]
push eax
push 0x4084dc
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.InstallationDirectory
push eax
call ebp
test eax, eax
je 0x401227
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, str.http:__www.zone.com_asp_aoe2redir.asp
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
mov ecx, dword [esp + 0x14]
push str.http:__www.zone.com_asp_aoe2redir.asp
push 1
push eax
push str.Zone
push ecx
call ebp
test eax, eax
je 0x401262
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, 0x408444
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
push ecx
push 0x408444
push 1
push eax
push str.Version
push edx
call ebp
test eax, eax
je 0x40129d
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, 0x40849c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push 0x40849c
push 1
push eax
mov eax, dword [esp + 0x20]
push str.Launched
push eax
call ebp
test eax, eax
je 0x4012d8
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 0x4084dc
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.EXE_Path
push ecx
call ebp
test eax, eax
je 0x40132e
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, str.RetailVersion
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
push ecx
push str.RetailVersion
push 1
push eax
push str.VersionType
push edx
call ebp
test eax, eax
je 0x401369
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, 0x40849c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push 0x40849c
push 1
push eax
mov eax, dword [esp + 0x20]
push str.InstalledGroup
push eax
call ebp
test eax, eax
je 0x4013a4
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 str.LangID
push edx
mov dword [esp + 0x2c], 9
call ebp
test eax, eax
je 0x4013db
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x14]
push 4
push eax
push 4
push 0
push str.Processor_Speed
push ecx
mov dword [esp + 0x2c], 0x10a
call ebp
test eax, eax
je 0x401412
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.Custom_Mouse
push eax
mov dword [esp + 0x2c], 0
call ebp
test eax, eax
je 0x401449
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov ecx, dword [esp + 0x10]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push ecx
call edi
lea edx, [esp + 0x18]
lea eax, [esp + 0x10]
push edx
push eax
push 0
push 0xf003f
push 0
push 0
push 0
push str.SoftwareMicrosoftMicrosoft_GamesAge_of_Empires2.0EULA
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x401495
push 0
push str.Error_
push str.Error_creating_key_
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 str.FIRSTRUN
push edx
mov dword [esp + 0x2c], 1
call ebp
test eax, eax
je 0x4014cc
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 edi
lea ecx, [esp + 0x18]
lea edx, [esp + 0x10]
push ecx
push edx
push 0
push 0xf003f
push 0
push 0
push 0
push str.SoftwareMicrosoftMicrosoft_GamesAge_of_Empires_II:_The_Conquerors_Expansion
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x401512
push 0
push str.Error_
push str.Error_creating_key_
push 0
call esi
push 0
call ebx
mov eax, dword [esp + 0x10]
push eax
call edi
lea ecx, [esp + 0x18]
lea edx, [esp + 0x10]
push ecx
push edx
push 0
push 0xf003f
push 0
push 0
push 0
push str.SoftwareMicrosoftMicrosoft_GamesAge_of_Empires_II:_The_Conquerors_Expansion1.0
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x401558
push 0
push str.Error_
push str.Error_creating_key_
push 0
call esi
push 0
call ebx
mov edi, str.http:__www.zone.com_conquerors
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push str.http:__www.zone.com_conquerors
push 1
push eax
mov eax, dword [esp + 0x20]
push str.Zone
push eax
call ebp
test eax, eax
je 0x401593
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, 0x40849c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
mov ecx, dword [esp + 0x14]
push 0x40849c
push 1
push eax
push str.Version
push ecx
call ebp
test eax, eax
je 0x4015ce
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, 0x40849c
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
push ecx
push 0x40849c
push 1
push eax
push str.Launched
push edx
call ebp
test eax, eax
je 0x401609
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, str.53532_442_9107722_25172
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push str.53532_442_9107722_25172
push 1
push eax
mov eax, dword [esp + 0x20]
push 0x4084a0
push eax
call ebp
test eax, eax
je 0x401644
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 0x4084dc
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.EXE_Path
push ecx
call ebp
test eax, eax
je 0x40169a
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 0x4084dc
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.CDPath
push edx
call ebp
test eax, eax
je 0x4016ef
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, str.RetailVersion
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push str.RetailVersion
push 1
push eax
mov eax, dword [esp + 0x20]
push str.VersionType
push eax
call ebp
test eax, eax
je 0x40172a
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, 0x4082a8
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
mov ecx, dword [esp + 0x14]
push 0x4082a8
push 1
push eax
push str.InstalledGroup
push ecx
call ebp
test eax, eax
je 0x401765
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.LangID
push eax
mov dword [esp + 0x2c], 9
call ebp
test eax, eax
je 0x40179c
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov ecx, dword [esp + 0x10]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push ecx
call edi
lea edx, [esp + 0x18]
lea eax, [esp + 0x10]
push edx
push eax
push 0
push 0xf003f
push 0
push 0
push 0
push str.SoftwareMicrosoftMicrosoft_GamesAge_of_Empires_II:_The_Conquerors_Expansion1.0EULA
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x4017e8
push 0
push str.Error_
push str.Error_creating_key_
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 str.FIRSTRUN
push edx
mov dword [esp + 0x2c], 1
call ebp
test eax, eax
je 0x40181f
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 edi
lea ecx, [esp + 0x18]
lea edx, [esp + 0x10]
push ecx
push edx
push 0
push 0xf003f
push 0
push 0
push 0
push str.SoftwareMicrosoftDirectPlayApplicationsAge_of_Empires_II
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x401865
push 0
push str.Error_
push str.Error_creating_key_
push 0
call esi
push 0
call ebx
mov edi, str.FB69A260_5031_11d3_A2D4_006097BA6550
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push str.FB69A260_5031_11d3_A2D4_006097BA6550
push 1
push eax
mov eax, dword [esp + 0x20]
push str.Guid
push eax
call ebp
test eax, eax
je 0x4018a0
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, str.Empires2.Exe
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
mov ecx, dword [esp + 0x14]
push str.Empires2.Exe
push 1
push eax
push str.Launcher
push ecx
call ebp
test eax, eax
je 0x4018db
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, str.Empires2.Exe
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
push ecx
push str.Empires2.Exe
push 1
push eax
push str.File
push edx
call ebp
test eax, eax
je 0x401916
push 0
push str.Error_
push str.Error_setting_value...
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
push str.lobby
push 1
push eax
mov eax, dword [esp + 0x20]
push str.CommandLine
push eax
call ebp
test eax, eax
je 0x401951
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 0x4084dc
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.Path
push ecx
call ebp
test eax, eax
je 0x4019a7
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 0x4084dc
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 0x4019fc
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.SoftwareMicrosoftDirectPlayApplicationsAge_of_Empires_II___The_Conquerors_Expansion
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x401a46
push 0
push str.Error_
push str.Error_creating_key_
push 0
call esi
push 0
call ebx
mov edi, str.5DE93F3F_FC90_4ee1_AE5A_63DAFA055950
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push str.5DE93F3F_FC90_4ee1_AE5A_63DAFA055950
push 1
push eax
mov eax, dword [esp + 0x20]
push str.Guid
push eax
call ebp
test eax, eax
je 0x401a81
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, str._age2_x1.Exe
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
mov ecx, dword [esp + 0x14]
push str._age2_x1.Exe
push 1
push eax
push str.Launcher
push ecx
call ebp
test eax, eax
je 0x401abc
push 0
push str.Error_
push str.Error_setting_value...
push 0
call esi
push 0
call ebx
mov edi, str._age2_x1.exe
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
push ecx
push str._age2_x1.exe
push 1
push eax
push str.File
push edx
call ebp
test eax, eax
je 0x401af7
push 0
push str.Error_
push str.Error_setting_value...
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
push str.lobby
push 1
push eax
mov eax, dword [esp + 0x20]
push str.CommandLine
push eax
call ebp
test eax, eax
je 0x401b32
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 0x4084dc
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.Path
push ecx
call ebp
test eax, eax
je 0x401b88
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 0x4084dc
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 0x401bdd
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..DEFAULTSoftwareMicrosoftMicrosoft_GamesAge_of_Empires_II:_The_Conquerors_Expansion1.0EULA
push 0x80000003
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x401c27
push 0
push str.Error_
push str.Error_creating_key_
push 0
call esi
push 0
call ebx
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x14]
push 4
push eax
push 4
push 0
push str.FIRSTRUN
push ecx
mov dword [esp + 0x2c], 1
call ebp
test eax, eax
pop ebp
je 0x401c5f
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_____________________n
call fcn.00401c90
add esp, 4
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x238
ret