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

Disassembly:
sub esp, 0x218
mov eax, dword [0x4697fc]
mov dword [esp + 0x214], eax
mov eax, dword [0x46dabc]
push esi
xor esi, esi
test eax, eax
push edi
mov edi, esi
mov byte [esp + 0x11c], 0
mov byte [esp + 0x1c], 0
je 0x407efb
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [0x46dabc], esi
push ebx
push ebp
mov ebp, dword [esp + 0x22c]
push ebp
call fcn.00407bb0
mov ebx, eax
mov al, byte [esp + 0x234]
add esp, 4
test al, 1
mov dword [esp + 0x20], edx
jne 0x40803d
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 0x40803d
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 0x407f83
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x40803d
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 0x407f95
sub eax, edx
cmp eax, 0xf3
jae 0x40803d
push 0xff
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x12c]
push edx
call fcn.0042f800
lea eax, [esp + 0x130]
add esp, 0xc
mov byte [esp + 0x223], 0
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x407fd5
sub eax, edx
mov cl, byte [esp + eax + 0x123]
cmp cl, 0x5c
lea eax, [esp + eax + 0x123]
jne 0x407ff4
mov byte [eax], 0
lea edi, [esp + 0x124]
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x408000
mov eax, dword [str.NeroAPI.dll]
mov ecx, dword [0x4533e4]
mov edx, dword [0x4533e8]
mov dword [edi], eax
mov al, byte [0x4533ec]
mov dword [edi + 4], ecx
lea ecx, [esp + 0x124]
mov dword [edi + 8], edx
push ecx
mov byte [edi + 0xc], al
call fcn.00407bb0
add esp, 4
mov edi, eax
mov esi, edx
test ebp, ebp
je 0x408168
mov edx, dword [esp + 0x20]
push esi
push edi
push edx
push ebx
call fcn.00407c80
add esp, 0x10
test eax, eax
je 0x408168
push esi
push edi
push edx
push ebx
call fcn.00407cd0
add esp, 0x10
test eax, eax
je 0x40807b
test byte [esp + 0x230], 2
jne 0x408168
push str.PATH
call fcn.0043015e
push ebp
mov ebx, eax
call fcn.004313cc
mov edi, eax
push 0x5c
push edi
mov dword [esp + 0x24], edi
call fcn.004300b0
add esp, 0x10
test eax, eax
je 0x4080a5
mov byte [eax], 0
push edi
mov eax, ebx
call fcn.00407d20
add esp, 4
test eax, eax
jne 0x408159
mov eax, edi
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4080c0
sub eax, edx
mov edx, eax
mov eax, ebx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4080d0
sub eax, esi
lea edx, [eax + edx + 2]
push edx
call fcn.0042ffc6
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x408152
mov edx, ebp
mov eax, edi
sub edx, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x4080f2
mov edi, ebp
dec edi
nop
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x408100
mov ax, word [0x4533d4]
mov word [edi], ax
mov eax, ebx
mov ecx, ebx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x408115
mov edi, ebp
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x408123
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 fcn.0042e976
mov edi, dword [esp + 0x18]
add esp, 4
mov ebp, dword [esp + 0x22c]
push edi
call fcn.0042e976
add esp, 4
push ebp
jmp 0x408253
push str.PATH
call fcn.0043015e
mov ebx, eax
lea eax, [esp + 0x28]
add esp, 4
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x408180
sub eax, edx
mov dword [esp + 0x18], eax
je 0x40824b
lea ecx, [esp + 0x24]
push ecx
mov eax, ebx
call fcn.00407d20
add esp, 4
test eax, eax
jne 0x40824b
lea eax, [esp + 0x24]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4081b1
sub eax, edx
mov edx, eax
mov eax, ebx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4081c1
sub eax, esi
lea edx, [eax + edx + 2]
push edx
call fcn.0042ffc6
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x40824b
lea eax, [esp + 0x24]
mov edx, ebp
mov ecx, eax
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x4081e7
mov edi, ebp
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4081f4
mov dx, word [0x4533d4]
mov eax, ebx
mov word [edi], dx
mov ecx, eax
lea ebx, [ebx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x408210
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 0x408220
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 fcn.0042e976
add esp, 4
lea eax, [esp + 0x124]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
pop ebp
mov dword [0x46dabc], eax
pop ebx
je 0x4082ab
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.NeroSetExpectedAPIVersionEx
push eax
call esi
test eax, eax
je 0x408287
push 0
push 6
push 5
push 0
push 7
call eax
add esp, 0x14
jmp 0x4082a6
mov eax, dword [0x46dabc]
test eax, eax
je 0x4082ab
push str.NeroSetExpectedAPIVersion
push eax
call esi
test eax, eax
je 0x4082a6
push 0x1b90
call eax
add esp, 4
mov eax, dword [0x46dabc]
xor ecx, ecx
test eax, eax
setne cl
pop edi
pop esi
mov eax, ecx
mov ecx, dword [esp + 0x214]
call fcn.0042ea18
add esp, 0x218
ret