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

Disassembly:
sub esp, 0x210
mov eax, dword [0x484894]
push ebx
push ebp
push esi
push edi
xor esi, esi
mov dword [esp + 0x21c], eax
mov edi, esi
mov byte [esp + 0x11c], 0
mov byte [esp + 0x1c], 0
call fcn.0042e570
mov eax, dword [esp + 0x224]
push eax
call fcn.0042e340
mov ebp, eax
mov al, byte [esp + 0x22c]
add esp, 4
test al, 1
mov ebx, edx
jne 0x42e8b1
lea ecx, [esp + 0x10]
push ecx
push 0x20019
push esi
push str.SOFTWAREAheadShared
push reloc.DSOUND.dll_DirectSoundEnumerateA
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x42e8b1
lea edx, [esp + 0x14]
push edx
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x20]
push edx
push esi
push str.NeroAPI
push eax
mov dword [esp + 0x2c], 0xff
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
je 0x42e7fe
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x42e8b1
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [esp + 0x1c]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42e810
sub eax, edx
cmp eax, 0xf3
jae 0x42e8b1
push 0xff
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x124]
push eax
call dword [sym.imp.MSVCR71.dll__mbsnbcpy]
lea ecx, [esp + 0x128]
push ecx
mov byte [esp + 0x22b], 0
call dword [sym.imp.MSVCR71.dll__mbclen]
mov cl, byte [esp + eax + 0x12b]
lea eax, [esp + eax + 0x12b]
add esp, 0x10
cmp cl, 0x5c
jne 0x42e86b
mov byte [eax], 0
lea edi, [esp + 0x11c]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42e873
mov edx, dword [str.NeroAPI.dll]
mov eax, dword [0x46cbbc]
mov ecx, dword [0x46cbc0]
mov dword [edi], edx
mov dl, byte [0x46cbc4]
mov dword [edi + 4], eax
lea eax, [esp + 0x11c]
mov dword [edi + 8], ecx
push eax
mov byte [edi + 0xc], dl
call fcn.0042e340
add esp, 4
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0x224]
test eax, eax
je 0x42e9e9
push esi
push edi
push ebx
push ebp
call fcn.0042e410
add esp, 0x10
test eax, eax
je 0x42e9e9
push esi
push edi
push ebx
push ebp
call fcn.0042e460
add esp, 0x10
test eax, eax
je 0x42e8f2
test byte [esp + 0x228], 2
jne 0x42e9e9
push str.PATH
call dword [sym.imp.MSVCR71.dll_getenv]
mov ecx, dword [esp + 0x228]
push ecx
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 0x42e926
mov byte [eax], 0
push edi
mov eax, ebx
call fcn.0042e4b0
add esp, 4
test eax, eax
jne 0x42e9d3
mov eax, edi
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42e940
sub eax, edx
mov edx, eax
mov eax, ebx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42e950
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 0x42e9d3
mov edx, ebp
mov eax, edi
sub edx, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x42e973
mov edi, ebp
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42e980
mov ax, word [0x46c57c]
mov word [edi], ax
mov eax, ebx
mov ecx, ebx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x42e995
mov edi, ebp
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x42e9a3
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
push edi
call dword [sym.imp.MSVCR71.dll_free]
mov ecx, dword [esp + 0x228]
add esp, 4
jmp 0x42ecdd
push str.PATH
call dword [sym.imp.MSVCR71.dll_getenv]
mov esi, eax
lea eax, [esp + 0x20]
add esp, 4
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42ea00
sub eax, edx
mov ebx, eax
je 0x42ecd6
lea edx, [esp + 0x1c]
push edx
mov eax, esi
call fcn.0042e4b0
add esp, 4
test eax, eax
jne 0x42eabc
mov eax, esi
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42ea30
sub eax, edx
lea eax, [eax + ebx + 2]
push eax
call dword [sym.imp.MSVCR71.dll_malloc]
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x42eabc
lea eax, [esp + 0x1c]
mov edx, ebp
mov ecx, eax
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x42ea57
mov edi, ebp
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42ea64
mov dx, word [0x46c57c]
mov eax, esi
mov word [edi], dx
mov ecx, eax
lea ebx, [ebx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x42ea80
mov edi, ebp
sub eax, ecx
mov esi, ecx
dec edi
mov edi, edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x42ea90
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 + 0x1c]
push 0x3b
push eax
call dword [sym.imp.MSVCR71.dll__mbschr]
add esp, 8
test eax, eax
je 0x42ecd6
lea ecx, [ebx + 0xd]
push ecx
call dword [sym.imp.MSVCR71.dll_malloc]
mov esi, eax
add esp, 4
test esi, esi
je 0x42eb4c
lea eax, [esp + 0x1c]
mov edx, esi
mov ecx, eax
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x42eaf1
mov edi, esi
dec edi
mov edi, edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42eb00
mov dx, word [0x4681e4]
mov word [edi], dx
mov edi, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42eb15
mov eax, dword [str.NeroErr.dll]
mov dword [edi], eax
mov ecx, dword [0x46cba8]
mov dword [edi + 4], ecx
mov edx, dword [0x46cbac]
push esi
mov dword [edi + 8], edx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push esi
mov dword [0x484d40], eax
call dword [sym.imp.MSVCR71.dll_free]
add esp, 4
lea ebp, [ebx + 0xc]
push ebp
call dword [sym.imp.MSVCR71.dll_malloc]
mov esi, eax
add esp, 4
test esi, esi
je 0x42ebd6
lea eax, [esp + 0x1c]
mov edx, esi
mov ecx, eax
sub edx, ecx
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x42eb70
mov edi, esi
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42eb80
mov dx, word [0x4681e4]
mov word [edi], dx
mov edi, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42eb95
mov eax, dword [str.newtrf.dll]
mov dword [edi], eax
mov ecx, dword [0x46cb9c]
mov dword [edi + 4], ecx
mov dx, word [0x46cba0]
mov word [edi + 8], dx
mov al, byte [0x46cba2]
push esi
mov byte [edi + 0xa], al
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push esi
mov dword [0x484d3c], eax
call dword [sym.imp.MSVCR71.dll_free]
add esp, 4
push ebp
call dword [sym.imp.MSVCR71.dll_malloc]
mov esi, eax
add esp, 4
test esi, esi
je 0x42ec56
lea eax, [esp + 0x1c]
mov edx, esi
mov ecx, eax
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x42ebf0
mov edi, esi
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42ec00
mov dx, word [0x4681e4]
mov word [edi], dx
mov edi, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42ec15
mov eax, dword [str.NeRSDB.dll]
mov dword [edi], eax
mov ecx, dword [0x46cb90]
mov dword [edi + 4], ecx
mov dx, word [0x46cb94]
mov word [edi + 8], dx
mov al, byte [0x46cb96]
push esi
mov byte [edi + 0xa], al
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push esi
mov dword [0x484d48], eax
call dword [sym.imp.MSVCR71.dll_free]
add esp, 4
push ebp
call dword [sym.imp.MSVCR71.dll_malloc]
mov esi, eax
add esp, 4
test esi, esi
je 0x42ecd6
lea eax, [esp + 0x1c]
mov edx, esi
mov ecx, eax
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x42ec70
mov edi, esi
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42ec80
mov dx, word [0x4681e4]
mov word [edi], dx
mov edi, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42ec95
mov eax, dword [str.CDCopy.dll]
mov dword [edi], eax
mov ecx, dword [0x46cb84]
mov dword [edi + 4], ecx
mov dx, word [0x46cb88]
mov word [edi + 8], dx
mov al, byte [0x46cb8a]
push esi
mov byte [edi + 0xa], al
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push esi
mov dword [0x484d38], eax
call dword [sym.imp.MSVCR71.dll_free]
add esp, 4
lea ecx, [esp + 0x11c]
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
mov dword [0x484d44], eax
je 0x42ed31
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.NeroSetExpectedAPIVersionEx
push eax
call esi
test eax, eax
je 0x42ed10
push 0
push 1
push 0
push 5
push 7
call eax
add esp, 0x14
jmp 0x42ed36
mov eax, dword [0x484d44]
test eax, eax
je 0x42ed36
push str.NeroSetExpectedAPIVersion
push eax
call esi
test eax, eax
je 0x42ed36
push 0x1d4d
call eax
add esp, 4
jmp 0x42ed36
call fcn.0042e570
mov ecx, dword [0x484d44]
pop edi
xor eax, eax
pop esi
test ecx, ecx
mov ecx, dword [esp + 0x214]
pop ebp
setne al
pop ebx
call fcn.0045b711
add esp, 0x210
ret