Function at 0x401000
Capabilities:
Get common file path
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xfa4
lea eax, [ebp - 0x268]
push eax
push 0xa19a
call fcn.00401537
add esp, 8
lea ecx, [ebp - 0x268]
push ecx
call fcn.004131cb
add esp, 4
mov edx, 1
test edx, edx
je 0x401531
push 0x4237c0
push 0x103
lea eax, [ebp - 0xa90]
push eax
call fcn.004130bb
add esp, 0xc
test eax, eax
je 0x401507
lea ecx, [ebp - 0x780]
mov dword [ebp - 0x98c], ecx
lea edx, [ebp - 0xa90]
mov dword [ebp - 0x474], edx
jmp 0x401083
mov eax, dword [ebp - 0x474]
add eax, 1
mov dword [ebp - 0x474], eax
mov ecx, dword [ebp - 0x474]
movsx edx, byte [ecx]
test edx, edx
je 0x4010cd
mov eax, dword [ebp - 0x474]
movsx ecx, byte [eax]
cmp ecx, 0x30
jl 0x4010cb
mov edx, dword [ebp - 0x474]
movsx eax, byte [edx]
cmp eax, 0x39
jg 0x4010cb
mov ecx, dword [ebp - 0x98c]
mov edx, dword [ebp - 0x474]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 0x98c]
add ecx, 1
mov dword [ebp - 0x98c], ecx
jmp 0x401074
mov edx, dword [ebp - 0x98c]
mov byte [edx], 0
lea eax, [ebp - 0x780]
push eax
call fcn.00413040
add esp, 4
test eax, eax
jne 0x4010ee
jmp 0x401531
lea ecx, [ebp - 0xea0]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea edx, [ebp - 0x60]
push edx
lea eax, [ebp - 0x780]
push eax
call fcn.00401650
test eax, eax
jne 0x4014dd
push 0x4267b0
lea ecx, [ebp - 0x780]
push ecx
lea edx, [ebp - 0xea0]
push edx
call fcn.00401970
test eax, eax
jne 0x4014b1
lea eax, [ebp - 0xea0]
push eax
call fcn.00413040
add esp, 4
movsx ecx, byte [ebp + eax - 0xea1]
cmp ecx, 0x5c
jne 0x401176
push 0x421030
lea edx, [ebp - 0xea0]
push edx
push 0x421040
lea eax, [ebp - 0xb94]
push eax
call fcn.00412fea
add esp, 0x10
jmp 0x401196
push str.spssprod.inf
lea ecx, [ebp - 0xea0]
push ecx
push 0x421058
lea edx, [ebp - 0xb94]
push edx
call fcn.00412fea
add esp, 0x10
lea eax, [ebp - 0xb94]
push eax
push 0x104
lea ecx, [ebp - 0xfa4]
push ecx
push 0x4267b4
push 0x421060
push 0x421070
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea edx, [ebp - 0xb94]
push edx
push 0x104
lea eax, [ebp - 0x67c]
push eax
push 0x4267b8
push 0x421078
push 0x421088
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [ebp - 0xb94]
push ecx
push 0x104
lea edx, [ebp - 0x884]
push edx
push 0x4267bc
push 0x421090
push 0x4210a0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0xb94]
push eax
push 0x104
lea ecx, [ebp - 0x36c]
push ecx
push 0x4267c0
push 0x4210a8
push 0x4210bc
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea edx, [ebp - 0xb94]
push edx
push 0x104
lea eax, [ebp - 0xd9c]
push eax
push 0x4267c4
push 0x4210c4
push 0x4210d4
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [ebp - 0xb94]
push ecx
push 0x104
lea edx, [ebp - 0xc98]
push edx
push 0x4267c8
push 0x4210dc
push 0x4210ec
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0xb94]
push eax
push 0x104
lea ecx, [ebp - 0x988]
push ecx
push 0x4267cc
push 0x4210f4
push 0x421104
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea edx, [ebp - 0xb94]
push edx
push 0x104
lea eax, [ebp - 0x268]
push eax
push 0x4267d0
push str.RegistryRoot
push 0x42111c
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [ebp - 0x268]
push ecx
push str.SoftwareSPSS_sSetup
lea edx, [ebp - 0x164]
push edx
call fcn.00412fea
add esp, 0xc
cmp dword [ebp - 0x3c], 0
jle 0x401319
cmp dword [ebp - 0x48], 0
jne 0x401303
cmp dword [ebp - 0x44], 0
je 0x401319
lea eax, [ebp - 0x36c]
push eax
push 0xa11b
call fcn.00401537
add esp, 8
jmp 0x401349
cmp dword [ebp - 0x54], 0
je 0x401335
lea ecx, [ebp - 0x36c]
push ecx
push 0xa11c
call fcn.00401537
add esp, 8
jmp 0x401349
lea edx, [ebp - 0x36c]
push edx
push 0xa11d
call fcn.00401537
add esp, 8
cmp dword [ebp - 0x50], 0
je 0x4013bd
lea eax, [ebp - 0x470]
push eax
mov ecx, dword [ebp - 0x30]
push ecx
mov edx, dword [ebp - 0x34]
push edx
mov eax, dword [ebp - 0x38]
push eax
call fcn.0040159c
add esp, 0x10
lea ecx, [ebp - 0x268]
push ecx
push 0xa11e
call fcn.00401537
add esp, 8
lea edx, [ebp - 0x470]
push edx
lea eax, [ebp - 0x268]
push eax
lea ecx, [ebp - 0x578]
push ecx
call fcn.00412fea
add esp, 0xc
lea edx, [ebp - 0x578]
push edx
lea eax, [ebp - 0x36c]
push eax
push str._s_s
lea ecx, [ebp - 0x36c]
push ecx
call fcn.00412fea
add esp, 0x10
lea edx, [ebp - 0xb94]
push edx
lea eax, [ebp - 0xfa4]
push eax
push str.CustomerName
push 0x421154
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea ecx, [ebp - 0xb94]
push ecx
lea edx, [ebp - 0x67c]
push edx
push str.Organization
push 0x42116c
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea eax, [ebp - 0xb94]
push eax
lea ecx, [ebp - 0x884]
push ecx
push str.SerialNumber
push 0x421184
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea edx, [ebp - 0xb94]
push edx
lea eax, [ebp - 0x36c]
push eax
push 0x42118c
push 0x4211a0
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea ecx, [ebp - 0xb94]
push ecx
lea edx, [ebp - 0xd9c]
push edx
push str.Institutional1
push 0x4211b8
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea eax, [ebp - 0xb94]
push eax
lea ecx, [ebp - 0xc98]
push ecx
push str.Institutional2
push 0x4211d0
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea edx, [ebp - 0xb94]
push edx
lea eax, [ebp - 0x988]
push eax
push str.Institutional3
push str.Product
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea ecx, [ebp - 0x36c]
push ecx
push str.LicenseDescription
lea edx, [ebp - 0x164]
push edx
push 0x80000001
call fcn.004015e3
add esp, 0x10
jmp 0x4014db
lea eax, [ebp - 0x268]
push eax
push 0xa19c
call fcn.00401537
add esp, 8
lea ecx, [ebp - 0xea0]
push ecx
lea edx, [ebp - 0x268]
push edx
call fcn.004131cb
add esp, 8
jmp 0x401505
lea eax, [ebp - 0x268]
push eax
push 0xa136
call fcn.00401537
add esp, 8
lea ecx, [ebp - 0x268]
push ecx
push 0x421204
call fcn.004131cb
add esp, 8
jmp 0x401509
jmp 0x401531
lea edx, [ebp - 0x268]
push edx
push 0xa19b
call fcn.00401537
add esp, 8
lea eax, [ebp - 0x268]
push eax
call fcn.004131cb
add esp, 4
jmp 0x40102c
xor eax, eax
mov esp, ebp
pop ebp
ret