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

Disassembly:
sub esp, 0x218
mov eax, dword [0x482888]
mov dword [esp + 0x214], eax
mov eax, dword [0x482d00]
push esi
xor esi, esi
test eax, eax
push edi
mov edi, esi
mov byte [esp + 0x11c], 0
mov byte [esp + 0x1c], 0
je 0x42e23b
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [0x482d00], esi
push ebx
push ebp
mov ebp, dword [esp + 0x22c]
push ebp
call fcn.0042de40
mov ebx, eax
mov al, byte [esp + 0x234]
add esp, 4
test al, 1
mov dword [esp + 0x20], edx
jne 0x42e376
lea eax, [esp + 0x10]
push eax
push 0x20019
push 0
push str.SOFTWARE_aheadShared
push reloc.DSOUND.dll_DirectSoundEnumerateA
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x42e376
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 0x42e2c3
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x42e376
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 0x42e2d5
sub eax, edx
cmp eax, 0xf3
jae 0x42e376
push 0xff
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x12c]
push edx
call dword [sym.imp.MSVCR71.dll__mbsnbcpy]
lea eax, [esp + 0x130]
push eax
mov byte [esp + 0x233], 0
call dword [sym.imp.MSVCR71.dll__mbclen]
mov cl, byte [esp + eax + 0x133]
lea eax, [esp + eax + 0x133]
add esp, 0x10
cmp cl, 0x5c
jne 0x42e330
mov byte [eax], 0
lea edi, [esp + 0x124]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42e338
mov ecx, dword [str.NeroAPI.dll]
mov edx, dword [0x46bb34]
mov eax, dword [0x46bb38]
mov dword [edi], ecx
mov cl, byte [0x46bb3c]
mov dword [edi + 4], edx
lea edx, [esp + 0x124]
mov dword [edi + 8], eax
push edx
mov byte [edi + 0xc], cl
call fcn.0042de40
add esp, 4
mov edi, eax
mov esi, edx
test ebp, ebp
je 0x42e4ab
mov edx, dword [esp + 0x20]
push esi
push edi
push edx
push ebx
call fcn.0042df10
add esp, 0x10
test eax, eax
je 0x42e4ab
push esi
push edi
push edx
push ebx
call fcn.0042df60
add esp, 0x10
test eax, eax
je 0x42e3b4
test byte [esp + 0x230], 2
jne 0x42e4ab
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__mbsrchr]
add esp, 0x10
test eax, eax
je 0x42e3e1
mov byte [eax], 0
push edi
mov eax, ebx
call fcn.0042dfb0
add esp, 4
test eax, eax
jne 0x42e49b
mov eax, edi
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42e400
sub eax, edx
mov edx, eax
mov eax, ebx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42e410
sub eax, esi
lea eax, [eax + edx + 2]
push eax
call dword [sym.imp.MSVCR71.dll_malloc]
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x42e494
mov edx, ebp
mov eax, edi
sub edx, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x42e433
mov edi, ebp
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42e440
mov cx, word [0x46b524]
mov eax, ebx
mov word [edi], cx
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x42e456
mov edi, ebp
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x42e464
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 0x42e598
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 0x42e4c2
sub eax, edx
mov dword [esp + 0x18], eax
je 0x42e590
lea edx, [esp + 0x24]
push edx
mov eax, ebx
call fcn.0042dfb0
add esp, 4
test eax, eax
jne 0x42e590
lea eax, [esp + 0x24]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42e4f3
sub eax, edx
mov edx, eax
mov eax, ebx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42e503
sub eax, esi
lea eax, [eax + edx + 2]
push eax
call dword [sym.imp.MSVCR71.dll_malloc]
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x42e590
lea eax, [esp + 0x24]
mov edx, ebp
mov ecx, eax
sub edx, ecx
lea ebx, [ebx]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x42e530
mov edi, ebp
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42e540
mov dx, word [0x46b524]
mov eax, ebx
mov word [edi], dx
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x42e556
mov edi, ebp
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x42e564
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 [0x482d00], eax
pop ebx
je 0x42e5f0
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.NeroSetExpectedAPIVersionEx
push eax
call esi
test eax, eax
je 0x42e5cc
push 0
push 6
push 5
push 0
push 7
call eax
add esp, 0x14
jmp 0x42e5eb
mov eax, dword [0x482d00]
test eax, eax
je 0x42e5f0
push str.NeroSetExpectedAPIVersion
push eax
call esi
test eax, eax
je 0x42e5eb
push 0x1b90
call eax
add esp, 4
mov eax, dword [0x482d00]
xor ecx, ecx
test eax, eax
setne cl
pop edi
pop esi
mov eax, ecx
mov ecx, dword [esp + 0x214]
call fcn.0045a0a1
add esp, 0x218
ret