Function at 0x424402
Capabilities:
Query environment variable
Set environment variable

Disassembly:
push 0x2a4
mov eax, 0x48f5a6
call fcn.00458f67
mov ebx, ecx
mov al, byte [ebp + 0x18]
mov esi, dword [ebx + 0xc]
mov edx, dword [ebp + 0xc]
mov ecx, dword [0x4c12e0]
mov byte [ebp - 0x285], al
mov eax, dword [ebp + 8]
mov dword [ebp - 0x290], eax
mov dword [ebp - 0x284], edx
test esi, esi
je 0x424461
test ecx, ecx
je 0x424461
cmp dword [0x4c3630], 0
je 0x424461
mov eax, dword [esi]
push str.In_CInfFile::_ReadVarsImplement__
push esi
call dword [eax + 0x10]
mov edx, dword [ebp - 0x284]
pop ecx
pop ecx
mov ecx, dword [0x4c12e0]
mov eax, dword [str._reg_]
lea edi, [ebp - 0x34]
mov esi, str.ofsname
mov dword [ebp - 0x28], eax
mov ax, word [0x49631c]
mov word [ebp - 0x24], ax
mov eax, dword [str.key]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x18], eax
mov al, byte [0x496324]
mov byte [ebp - 0x14], al
mov eax, dword [str.name]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x20], eax
mov ax, word [0x49632c]
push 0x3a
movsb byte es:[edi], byte [esi]
mov esi, str._default_
mov word [ebp - 0x1c], ax
lea edi, [ebp - 0x40]
pop eax
mov word [ebp - 0x298], ax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov esi, dword [ebp - 0x290]
test esi, esi
je 0x424b66
cmp byte [esi], 0
je 0x424b66
test edx, edx
je 0x424b66
cmp byte [edx], 0
je 0x424b66
mov edi, dword [ebx + 0xc]
test edi, edi
je 0x424508
test ecx, ecx
je 0x424508
cmp dword [0x4c3630], 0
je 0x424508
mov eax, dword [edi]
push edx
push esi
push str...Reading_variable_from__s_s
push edi
call dword [eax + 0x10]
mov edx, dword [ebp - 0x284]
add esp, 0x10
push edx
call fcn.00465f76
pop ecx
test eax, eax
jne 0x424536
mov ecx, dword [ebx + 0xc]
test ecx, ecx
je 0x42452f
cmp dword [0x4c12e0], eax
je 0x42452f
mov eax, dword [ecx]
push str.FATAL._Could_not_allocate_memory
push ecx
call dword [eax + 0x1c]
pop ecx
pop ecx
push 8
jmp 0x424b80
push eax
call fcn.00467acc
mov edi, eax
lea eax, [ebp - 0x28]
push eax
push edi
mov dword [ebp - 0x2ac], edi
call fcn.00467e0f
add esp, 0xc
test eax, eax
je 0x42488a
lea eax, [ebp - 0x18]
push eax
push edi
call fcn.00467e0f
mov edi, eax
pop ecx
pop ecx
test edi, edi
jne 0x424599
mov ecx, dword [ebx + 0xc]
test ecx, ecx
je 0x424b28
cmp dword [0x4c12e0], eax
je 0x424b28
lea edx, [ebp - 0x18]
mov eax, dword [ecx]
push edx
push str...Inf_Env_Var_section_has_incorrect_syntax._Line_does_not_contain__s
push ecx
call dword [eax + 0x14]
add esp, 0xc
jmp 0x424b28
lea eax, [ebp - 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add edi, eax
lea eax, [ebp - 0x298]
push eax
push edi
call fcn.00467e0f
pop ecx
pop ecx
test eax, eax
jne 0x4245d7
mov ecx, dword [ebx + 0xc]
test ecx, ecx
je 0x424b28
cmp dword [0x4c12e0], eax
je 0x424b28
lea edx, [ebp - 0x298]
jmp 0x424585
and dword [ebp - 0x284], 0
lea ecx, [ebp - 0x34]
mov byte [eax], 0
inc eax
push ecx
push eax
mov dword [ebp - 0x29c], eax
call fcn.00467e0f
mov esi, eax
pop ecx
pop ecx
test esi, esi
je 0x424610
lea eax, [ebp - 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov dword [ebp - 0x284], 1
jmp 0x424635
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x29c]
call fcn.00467e0f
mov esi, eax
pop ecx
pop ecx
test esi, esi
je 0x424866
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add esi, eax
mov eax, 0x208
push eax
mov dword [ebp - 0x2a4], eax
lea eax, [ebp - 0x250]
push 0
push eax
call fcn.0045b1d0
mov eax, dword [ebx]
mov ecx, esi
add esp, 0xc
mov dword [ebp - 0x26c], 0xf
and dword [ebp - 0x270], 0
mov byte [ebp - 0x280], 0
mov eax, dword [eax + 0x5c]
lea edx, [ecx + 1]
mov dword [ebp - 0x29c], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x42467c
sub ecx, edx
push ecx
push esi
lea ecx, [ebp - 0x280]
call fcn.0040a9d0
mov ecx, edi
mov dword [ebp - 0x254], 0xf
xor eax, eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x258], eax
mov byte [ebp - 0x268], al
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4246b2
sub ecx, edx
push ecx
push edi
lea ecx, [ebp - 0x268]
call fcn.0040a9d0
movzx eax, byte [ebp - 0x285]
mov ecx, ebx
shl eax, 8
push eax
push dword [ebp - 0x284]
lea eax, [ebp - 0x2a4]
mov byte [ebp - 4], 1
push eax
lea eax, [ebp - 0x250]
push eax
lea eax, [ebp - 0x2b0]
push eax
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x268]
push eax
push 0x80000002
call dword [ebp - 0x29c]
neg eax
sbb al, al
inc al
mov dword [ebp - 0x29c], eax
mov eax, dword [ebp - 0x254]
cmp eax, 0x10
jb 0x424768
mov ecx, dword [ebp - 0x268]
inc eax
mov dword [ebp - 0x284], eax
mov dword [ebp - 0x294], ecx
cmp eax, 0x1000
jb 0x42475f
lea eax, [ebp - 0x284]
push eax
lea eax, [ebp - 0x294]
push eax
call fcn.00403184
mov eax, dword [ebp - 0x284]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x294]
push eax
push ecx
call fcn.00458ecf
pop ecx
pop ecx
and dword [ebp - 0x258], 0
or dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x26c]
mov dword [ebp - 0x254], 0xf
mov byte [ebp - 0x268], 0
cmp eax, 0x10
jb 0x4247d3
mov ecx, dword [ebp - 0x280]
inc eax
mov dword [ebp - 0x284], eax
mov dword [ebp - 0x294], ecx
cmp eax, 0x1000
jb 0x4247ca
lea eax, [ebp - 0x284]
push eax
lea eax, [ebp - 0x294]
push eax
call fcn.00403184
mov eax, dword [ebp - 0x284]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x294]
push eax
push ecx
call fcn.00458ecf
pop ecx
pop ecx
cmp byte [ebp - 0x29c], 0
je 0x42484b
mov edx, dword [ebx + 0xc]
test edx, edx
je 0x424830
cmp dword [0x4c12e0], 0
je 0x424830
cmp dword [0x4c3630], 0
je 0x424830
push dword [ebp - 0x290]
cmp byte [ebp - 0x285], 0
mov eax, 0x49643c
mov ecx, dword [edx]
push esi
push edi
mov dword [ebp - 0x284], 0x496440
cmove eax, dword [ebp - 0x284]
push eax
lea eax, [ebp - 0x250]
push eax
push str...Successfully_read_variable__s_from__s_bit_registry_key__s_and_value_name__s._Assigning_it_to__s
push edx
call dword [ecx + 0x10]
add esp, 0x1c
push esi
push edi
lea eax, [ebp - 0x250]
mov ecx, ebx
push eax
push dword [ebp - 0x290]
call fcn.0041405f
jmp 0x424b28
mov eax, dword [ebx]
lea ecx, [ebp - 0x250]
push esi
push edi
push ecx
push dword [ebp - 0x290]
mov ecx, ebx
call dword [eax + 0x54]
jmp 0x424b28
mov ecx, dword [ebx + 0xc]
test ecx, ecx
je 0x424b28
cmp dword [0x4c12e0], 0
je 0x424b28
lea edx, [ebp - 0x34]
push edx
lea edx, [ebp - 0x20]
jmp 0x424b19
lea eax, [ebp - 0x40]
push eax
push edi
call fcn.00467e0f
pop ecx
pop ecx
test eax, eax
je 0x424b02
push esi
lea ecx, [ebp - 0x28c]
call fcn.0040d7d2
push dword [ebp - 0x284]
lea ecx, [ebp - 0x2a0]
mov dword [ebp - 4], 2
call fcn.0040d7d2
push 0x25
lea ecx, [ebp - 0x28c]
mov byte [ebp - 4], 3
call fcn.004167bb
push 5
lea eax, [ebp - 0x48]
push eax
push dword [ebp - 0x28c]
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
test eax, eax
je 0x42493b
mov ecx, dword [ebx + 0xc]
test ecx, ecx
je 0x424916
cmp dword [0x4c12e0], 0
je 0x424916
cmp dword [0x4c3630], 0
je 0x424916
push dword [ebp - 0x28c]
mov eax, dword [ecx]
push str...Environment_variable__s_is_already_set.__New_value_will_not_be_set.
push ecx
call dword [eax + 0x10]
add esp, 0xc
mov ecx, dword [ebp - 0x2a0]
lea ecx, [ecx - 0x10]
call fcn.0040c5fb
mov ecx, dword [ebp - 0x28c]
or dword [ebp - 4], 0xffffffff
lea ecx, [ecx - 0x10]
call fcn.0040c5fb
jmp 0x424b28
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xcb
je 0x42496b
mov ecx, dword [ebx + 0xc]
test ecx, ecx
je 0x424916
cmp dword [0x4c12e0], 0
je 0x424916
push dword [ebp - 0x28c]
mov eax, dword [ecx]
push str...Could_not_retrieve_value_for_environment_variable__s.__New_value_will_not_be_set.
push ecx
call dword [eax + 0x18]
jmp 0x424913
push 0x4b597d
lea ecx, [ebp - 0x290]
call fcn.0040d7d2
lea eax, [ebp - 0x298]
mov byte [ebp - 4], 4
push eax
lea ecx, [ebp - 0x294]
call fcn.0040d7d2
mov esi, 0x4953a0
mov byte [ebp - 4], 5
push esi
call fcn.00461890
pop ecx
push eax
push esi
lea ecx, [ebp - 0x294]
call fcn.004141e9
and dword [ebp - 0x284], 0
lea eax, [ebp - 0x284]
push eax
push dword [ebp - 0x294]
lea eax, [ebp - 0x29c]
push eax
lea ecx, [ebp - 0x2a0]
call fcn.00416c6f
push str.value
push dword [ebp - 0x29c]
mov byte [ebp - 4], 6
call fcn.004660fd
pop ecx
pop ecx
test eax, eax
jne 0x424a2c
lea eax, [ebp - 0x284]
push eax
lea eax, [ebp - 0x298]
push eax
lea eax, [ebp - 0x2a8]
push eax
lea ecx, [ebp - 0x2a0]
call fcn.00416c6f
push eax
lea ecx, [ebp - 0x290]
mov byte [ebp - 4], 7
call fcn.0040d89a
mov ecx, dword [ebp - 0x2a8]
lea ecx, [ecx - 0x10]
call fcn.0040c5fb
mov ecx, dword [ebp - 0x29c]
mov byte [ebp - 4], 5
lea ecx, [ecx - 0x10]
call fcn.0040c5fb
cmp dword [ebp - 0x284], 0xffffffff
jne 0x4249b5
mov eax, dword [ebp - 0x290]
mov edx, dword [ebx + 0xc]
cmp dword [eax - 0xc], 0
jne 0x424a95
test edx, edx
je 0x424a74
cmp dword [0x4c12e0], 0
je 0x424a74
mov eax, dword [edx]
push str...No_new_value_specified.__New_value_will_not_be_set.
push edx
call dword [eax + 0x18]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x294]
lea ecx, [ecx - 0x10]
call fcn.0040c5fb
mov ecx, dword [ebp - 0x290]
lea ecx, [ecx - 0x10]
call fcn.0040c5fb
jmp 0x424916
test edx, edx
je 0x424ac6
cmp dword [0x4c12e0], 0
je 0x424ac6
cmp dword [0x4c3630], 0
je 0x424ac6
push dword [ebp - 0x28c]
mov ecx, dword [edx]
push eax
push str...Successfully_read_value__s._Assigning_it_to__s
push edx
call dword [ecx + 0x10]
mov eax, dword [ebp - 0x290]
add esp, 0x10
push eax
push dword [ebp - 0x28c]
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
test eax, eax
jne 0x424a74
mov edi, dword [ebx + 0xc]
test edi, edi
je 0x424a74
cmp dword [0x4c12e0], eax
je 0x424a74
mov eax, dword [edi]
mov esi, dword [eax + 0x18]
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str...Could_not_set_environment_variable.__Error:__d
push edi
call esi
add esp, 0xc
jmp 0x424a74
mov ecx, dword [ebx + 0xc]
test ecx, ecx
je 0x424b28
cmp dword [0x4c12e0], 0
je 0x424b28
lea edx, [ebp - 0x40]
push edx
lea edx, [ebp - 0x28]
mov eax, dword [ecx]
push edx
push str...Inf_Env_Var_section_has_incorrect_syntax._Line_does_not_contain__s_or__s
push ecx
call dword [eax + 0x14]
add esp, 0x10
mov eax, dword [ebp - 0x2ac]
test eax, eax
je 0x424b39
push eax
call fcn.0045f1d9
pop ecx
mov ecx, dword [ebx + 0xc]
test ecx, ecx
je 0x424b62
cmp dword [0x4c12e0], 0
je 0x424b62
cmp dword [0x4c3630], 0
je 0x424b62
mov eax, dword [ecx]
push 0
push str.CInfFile::_ReadVarsImplement___returns__d
push ecx
call dword [eax + 0x10]
add esp, 0xc
xor eax, eax
jmp 0x424b81
mov edx, dword [ebx + 0xc]
test edx, edx
je 0x424b7e
test ecx, ecx
je 0x424b7e
mov eax, dword [edx]
push str.Parameters_to_CInfFile::_ReadVarsImplement___are_incorrect
push edx
call dword [eax + 0x14]
pop ecx
pop ecx
push 0x57
pop eax
call fcn.00458f11
ret 0x14