Function at 0x463260
Capabilities:
Query environment variable
Query or enumerate registry value
Set environment variable

Disassembly:
sub esp, 0x218
mov eax, dword [0x5f3edc]
mov dword [esp + 0x214], eax
mov eax, dword [0x5fe31c]
push esi
xor esi, esi
test eax, eax
push edi
mov edi, esi
mov byte [esp + 0x11c], 0
mov byte [esp + 0x1c], 0
je 0x46329b
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [0x5fe31c], esi
push ebx
push ebp
mov ebp, dword [esp + 0x22c]
push ebp
call fcn.00462630
mov ebx, eax
mov al, byte [esp + 0x234]
add esp, 4
test al, 1
mov dword [esp + 0x20], edx
jne 0x4633ad
lea eax, [esp + 0x10]
push eax
push 0x20019
push 0
push str.SOFTWARE_aheadShared
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4633ad
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x28]
push edx
lea ecx, [esp + 0x20]
push ecx
push 0
push str.NeroAPI
push eax
mov dword [esp + 0x2c], 0xff
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
je 0x463323
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x4633ad
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [esp + 0x24]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x463335
sub eax, edx
cmp eax, 0xf3
jae 0x4633ad
push 0xff
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x12c]
push edx
call dword [sym.imp.MSVCR71.dll_strncpy]
lea edi, [esp + 0x130]
add esp, 0xc
mov byte [esp + 0x223], 0
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x463370
mov eax, dword [str.NeroAPI.dll]
mov ecx, dword [0x5a1a98]
mov edx, dword [0x5a1a9c]
mov dword [edi], eax
mov al, byte [0x5a1aa0]
mov dword [edi + 4], ecx
lea ecx, [esp + 0x124]
mov dword [edi + 8], edx
push ecx
mov byte [edi + 0xc], al
call fcn.00462630
add esp, 4
mov edi, eax
mov esi, edx
test ebp, ebp
je 0x4634da
mov edx, dword [esp + 0x20]
push esi
push edi
push edx
push ebx
call fcn.00462700
add esp, 0x10
test eax, eax
je 0x4634da
push esi
push edi
push edx
push ebx
call fcn.00462750
add esp, 0x10
test eax, eax
je 0x4633eb
test byte [esp + 0x230], 2
jne 0x4634da
push str.PATH
call dword [sym.imp.MSVCR71.dll_getenv]
push ebp
mov ebx, eax
call dword [sym.imp.MSVCR71.dll__strdup]
mov edi, eax
push 0x5c
push edi
mov dword [esp + 0x24], edi
call dword [sym.imp.MSVCR71.dll_strrchr]
add esp, 0x10
test eax, eax
je 0x463418
mov byte [eax], 0
push edi
mov eax, ebx
call fcn.004627a0
add esp, 4
test eax, eax
jne 0x4634ca
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x463430
sub eax, edx
mov edx, eax
mov eax, ebx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x463440
sub eax, esi
lea edx, [eax + edx + 2]
push edx
call dword [sym.imp.MSVCR71.dll_malloc]
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x4634c3
mov edx, ebp
mov eax, edi
sub edx, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x463463
mov edi, ebp
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x463470
mov ax, word [0x5a1a88]
mov word [edi], ax
mov eax, ebx
mov ecx, ebx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x463485
mov edi, ebp
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x463493
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebp
and ecx, 3
push str.PATH
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
push ebp
call dword [sym.imp.MSVCR71.dll_free]
mov edi, dword [esp + 0x18]
add esp, 4
mov ebp, dword [esp + 0x22c]
push edi
call dword [sym.imp.MSVCR71.dll_free]
add esp, 4
push ebp
jmp 0x4635c8
push str.PATH
call dword [sym.imp.MSVCR71.dll_getenv]
mov ebx, eax
lea eax, [esp + 0x28]
add esp, 4
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4634f1
sub eax, edx
mov dword [esp + 0x18], eax
je 0x4635c0
lea ecx, [esp + 0x24]
push ecx
mov eax, ebx
call fcn.004627a0
add esp, 4
test eax, eax
jne 0x4635c0
lea eax, [esp + 0x24]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x463522
sub eax, edx
mov edx, eax
mov eax, ebx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x463532
sub eax, esi
lea edx, [eax + edx + 2]
push edx
call dword [sym.imp.MSVCR71.dll_malloc]
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x4635c0
lea eax, [esp + 0x24]
mov edx, ebp
mov ecx, eax
sub edx, ecx
lea ecx, [ecx]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x463560
mov edi, ebp
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x463570
mov dx, word [0x5a1a88]
mov eax, ebx
mov word [edi], dx
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x463586
mov edi, ebp
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x463594
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebp
and ecx, 3
push str.PATH
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
push ebp
call dword [sym.imp.MSVCR71.dll_free]
add esp, 4
lea eax, [esp + 0x124]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
pop ebp
mov dword [0x5fe31c], eax
pop ebx
je 0x463620
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.NeroSetExpectedAPIVersionEx
push eax
call esi
test eax, eax
je 0x4635fc
push 0
push 0
push 0
push 0
push 7
call eax
add esp, 0x14
jmp 0x46361b
mov eax, dword [0x5fe31c]
test eax, eax
je 0x463620
push str.NeroSetExpectedAPIVersion
push eax
call esi
test eax, eax
je 0x46361b
push 0x1b58
call eax
add esp, 4
mov eax, dword [0x5fe31c]
xor ecx, ecx
test eax, eax
setne cl
pop edi
pop esi
mov eax, ecx
mov ecx, dword [esp + 0x214]
call fcn.00558076
add esp, 0x218
ret