Function at 0x431990
Capabilities:
Query environment variable

Disassembly:
push ebp
lea ebp, [esp - 0x64]
sub esp, 0x64
push 0xffffffffffffffff
push 0x4b6c5e
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
mov eax, dword [0x4d57fc]
xor eax, ebp
mov dword [ebp + 0x60], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ecx, dword [ebp + 0x7c]
mov esi, dword [ebp + 0x6c]
mov eax, dword [ebp + 0x70]
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp + 0x80]
mov dword [ebp - 0x30], ecx
mov ecx, esi
mov dword [ebp - 0x38], esi
push eax
mov dword [ebp - 4], 0
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x34], 0
call fcn.0041caf0
mov eax, 1
mov dword [ebp - 4], 0
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x34], eax
xor eax, eax
mov ecx, dword [ebp - 0x24]
mov ebx, ecx
cmp dword [ecx + 0x14], 8
mov edi, dword [ecx + 0x10]
jb 0x431a15
mov ebx, dword [ecx]
mov ecx, dword [esi + 0x10]
mov edx, esi
mov dword [ebp - 0x1c], esi
mov esi, dword [esi + 0x14]
mov dword [ebp - 0x14], esi
cmp esi, 8
jb 0x431a30
mov edx, dword [ebp - 0x10]
mov edx, dword [edx]
mov dword [ebp - 0x1c], edx
cmp edi, ecx
ja 0x431f04
sub ecx, edi
cmp eax, ecx
ja 0x431f04
test edi, edi
je 0x431ad7
inc ecx
lea edi, [edx + eax*2]
lea ecx, [edx + ecx*2]
mov dword [ebp - 0x18], ecx
movzx eax, word [ebx]
sub ecx, edi
sar ecx, 1
mov esi, 0
movzx edx, ax
je 0x431a84
movzx eax, word [edi]
cmp ax, dx
je 0x431a82
nop dword [eax]
cmp ecx, 1
je 0x431a84
movzx eax, word [edi + 2]
add edi, 2
dec ecx
cmp ax, dx
jne 0x431a70
mov esi, edi
mov edi, esi
mov dword [ebp - 0x20], edi
test edi, edi
je 0x431f04
mov ecx, dword [ebp - 0x24]
mov edx, ebx
movzx eax, word [edi]
mov esi, dword [ecx + 0x10]
movzx ecx, word [ebx]
cmp ax, cx
jb 0x431ac4
sub edi, ebx
cmp ax, cx
ja 0x431ac1
cmp esi, 1
je 0x431acc
movzx eax, word [edx + edi + 2]
add edx, 2
dec esi
movzx ecx, word [edx]
cmp ax, cx
jae 0x431aa9
mov edi, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x18]
add edi, 2
jmp 0x431a54
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
sar eax, 1
mov dword [ebp - 0x20], eax
cmp eax, 0xffffffff
je 0x431f04
mov ecx, dword [ebp + 0x74]
mov edi, dword [ecx]
mov ecx, dword [ebp - 0x30]
mov ecx, dword [ecx + 0x10]
test ecx, ecx
jne 0x431c3e
mov esi, dword [edi]
mov ebx, edi
cmp esi, edi
je 0x431ec4
mov ecx, dword [ebp - 0x24]
lea ebx, [esi + 0x10]
mov dword [ebp + 0x30], 0
mov dword [ebp + 0x40], 0
mov dword [ebp + 0x44], 7
mov ecx, dword [ecx + 0x10]
add ecx, eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x18], ecx
cmp dword [eax + 0x10], ecx
jb 0x432008
lfence
mov eax, dword [eax + 0x10]
mov edx, dword [esi + 0x20]
sub eax, ecx
cmp eax, edx
cmovb edx, eax
mov eax, dword [ebp - 0x10]
mov ecx, eax
cmp dword [ecx + 0x14], 8
mov ecx, dword [ebp - 0x18]
jb 0x431b51
mov eax, dword [eax]
lea eax, [eax + ecx*2]
push edx
push eax
lea ecx, [ebp + 0x30]
call fcn.00408a50
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebx + 0x10]
or eax, 2
cmp dword [ebx + 0x14], 8
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x34], eax
jb 0x431b75
mov ebx, dword [ebx]
cmp dword [ebp + 0x44], 8
lea ecx, [ebp + 0x30]
mov eax, dword [ebp + 0x30]
cmovae ecx, eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0x40]
cmp eax, edx
jne 0x431b9f
push eax
push ebx
push ecx
call fcn.0041faa0
add esp, 0xc
test eax, eax
jne 0x431b9f
mov bl, 1
jmp 0x431ba1
xor bl, bl
mov eax, dword [ebp + 0x44]
cmp eax, 8
jb 0x431bdb
mov ecx, dword [ebp - 0x18]
lea edx, [eax*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x431bd1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x432003
push edx
push ecx
call fcn.00461556
add esp, 8
mov edx, dword [ebp + 0x74]
test bl, bl
je 0x431bf0
cmp edi, dword [edx]
je 0x431bee
mov eax, dword [edi + 0x20]
cmp eax, dword [esi + 0x20]
jae 0x431bf0
mov edi, esi
mov eax, dword [esi + 8]
cmp byte [eax + 0xd], 0
je 0x431c16
mov eax, dword [esi + 4]
cmp byte [eax + 0xd], 0
jne 0x431c12
cmp esi, dword [eax + 8]
jne 0x431c12
mov esi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0xd], 0
je 0x431c02
mov esi, eax
jmp 0x431c2c
mov esi, eax
mov ecx, dword [esi]
cmp byte [ecx + 0xd], 0
jne 0x431c2c
mov eax, dword [ecx]
mov esi, ecx
mov ecx, eax
cmp byte [eax + 0xd], 0
je 0x431c20
mov ebx, dword [edx]
mov eax, dword [ebp - 0x20]
cmp esi, ebx
jne 0x431b02
jmp 0x431ec4
mov edi, dword [ebp - 0x24]
mov edx, dword [edi + 0x10]
add edx, eax
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x28], edx
mov ebx, eax
mov dword [ebp - 0x14], eax
cmp dword [eax + 0x14], 8
jb 0x431c5c
mov ebx, dword [eax]
mov dword [ebp - 0x14], ebx
mov edi, dword [ebp - 0x10]
cmp esi, 8
mov dword [ebp - 0x1c], edi
mov esi, edi
jb 0x431c6e
mov edi, dword [esi]
mov dword [ebp - 0x1c], edi
mov eax, dword [esi + 0x10]
cmp ecx, eax
ja 0x431f07
sub eax, ecx
cmp edx, eax
ja 0x431f07
inc eax
lea ecx, [edi + edx*2]
lea esi, [edi + eax*2]
mov dword [ebp - 0x18], esi
movzx eax, word [ebx]
mov edx, esi
sub edx, ecx
movzx esi, ax
sar edx, 1
mov edi, 0
je 0x431cbc
movzx eax, word [ecx]
cmp ax, si
je 0x431cba
cmp edx, 1
je 0x431cbc
movzx eax, word [ecx + 2]
add ecx, 2
dec edx
cmp ax, si
jne 0x431ca8
mov edi, ecx
mov ecx, edi
test ecx, ecx
je 0x431f04
mov eax, dword [ebp - 0x30]
mov edi, ebx
movzx edx, word [ebx]
mov esi, dword [eax + 0x10]
movzx eax, word [ecx]
cmp ax, dx
jb 0x431cfc
mov ebx, ecx
sub ebx, dword [ebp - 0x14]
cmp ax, dx
ja 0x431cf9
cmp esi, 1
je 0x431d04
movzx eax, word [edi + ebx + 2]
add edi, 2
dec esi
movzx edx, word [edi]
cmp ax, dx
jae 0x431ce1
mov ebx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x18]
add ecx, 2
jmp 0x431c8d
sub ecx, dword [ebp - 0x1c]
sar ecx, 1
cmp ecx, 0xffffffff
je 0x431f04
mov edx, dword [ebp - 0x24]
xor eax, eax
mov ebx, dword [ebp - 0x10]
mov dword [ebp + 0x48], 0
mov dword [ebp + 0x58], 0
sub ecx, dword [edx + 0x10]
sub ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x28]
mov dword [ebp + 0x5c], 7
mov word [ebp + 0x48], ax
cmp dword [ebx + 0x10], edx
jb 0x432008
lfence
mov eax, dword [ebx + 0x10]
sub eax, edx
cmp eax, ecx
cmovb ecx, eax
cmp dword [ebx + 0x14], 8
mov eax, ebx
jb 0x431d5c
mov eax, dword [ebx]
push ecx
lea eax, [eax + edx*2]
push eax
lea ecx, [ebp + 0x48]
call fcn.00408a50
mov eax, dword [ebp - 0x2c]
or eax, 4
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x34], eax
mov eax, dword [ebp + 0x74]
mov edx, dword [ebp + 0x58]
mov dword [ebp - 4], 1
mov eax, dword [eax]
mov edi, eax
mov ebx, eax
mov esi, dword [eax + 4]
mov eax, dword [ebp + 0x48]
mov dword [ebp - 0x1c], eax
cmp byte [esi + 0xd], 0
jne 0x431e03
nop word [eax + eax]
cmp dword [ebp + 0x5c], 8
lea ecx, [esi + 0x10]
mov ebx, dword [ecx + 0x10]
lea eax, [ebp + 0x48]
cmovae eax, dword [ebp - 0x1c]
cmp dword [ecx + 0x14], 8
mov dword [ebp - 0x28], eax
jb 0x431dbc
mov ecx, dword [ecx]
cmp edx, ebx
mov eax, ebx
cmovb eax, edx
push eax
push dword [ebp - 0x28]
push ecx
call fcn.0041faa0
mov edx, dword [ebp + 0x58]
add esp, 0xc
test eax, eax
jne 0x431de4
cmp edx, ebx
jbe 0x431de0
or eax, 0xffffffff
jmp 0x431de4
sbb eax, eax
neg eax
shr eax, 0x1f
test al, al
je 0x431df0
mov esi, dword [esi + 8]
jmp 0x431df4
mov edi, esi
mov esi, dword [esi]
cmp byte [esi + 0xd], 0
je 0x431da0
mov eax, dword [ebp + 0x74]
mov esi, dword [eax]
mov ebx, esi
jmp 0x431e05
mov esi, ebx
cmp byte [edi + 0xd], 0
jne 0x431e61
cmp dword [edi + 0x24], 8
lea eax, [edi + 0x10]
mov ecx, dword [eax + 0x10]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], ecx
jb 0x431e22
mov eax, dword [eax]
mov dword [ebp - 0x18], eax
cmp dword [ebp + 0x5c], 8
lea ecx, [ebp + 0x48]
mov eax, edx
cmovae ecx, dword [ebp - 0x1c]
cmp dword [ebp - 0x14], edx
cmovb eax, dword [ebp - 0x14]
push eax
push dword [ebp - 0x18]
push ecx
call fcn.0041faa0
add esp, 0xc
test eax, eax
jne 0x431e5a
mov eax, dword [ebp + 0x58]
mov ecx, dword [ebp - 0x14]
cmp ecx, eax
jbe 0x431e56
or eax, 0xffffffff
jmp 0x431e5a
sbb eax, eax
neg eax
shr eax, 0x1f
test al, al
je 0x431e65
mov edi, esi
mov ebx, esi
cmp edi, ebx
je 0x432028
mov eax, dword [ebp + 0x5c]
mov byte [ebp - 4], 0
cmp eax, 8
jb 0x431eb0
mov edx, dword [ebp - 0x1c]
lea ecx, [eax*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x431ea1
mov edx, dword [edx - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x432003
push ecx
push edx
call fcn.00461556
mov eax, dword [ebp + 0x74]
add esp, 8
mov ebx, dword [eax]
xor eax, eax
mov dword [ebp + 0x58], 0
mov dword [ebp + 0x5c], 7
mov word [ebp + 0x48], ax
cmp edi, ebx
je 0x43200d
mov edx, dword [ebp - 0x30]
lea eax, [edi + 0x28]
mov ecx, dword [edi + 0x20]
add ecx, dword [edx + 0x10]
mov edx, dword [ebp - 0x24]
add ecx, dword [edx + 0x10]
cmp dword [eax + 0x14], 8
mov edx, dword [eax + 0x10]
jb 0x431ee9
mov eax, dword [eax]
mov ebx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x10]
push edx
push eax
push ecx
push ebx
mov ecx, esi
call fcn.0042f720
mov eax, dword [edi + 0x38]
add eax, ebx
jmp 0x431a05
mov esi, dword [ebp - 0x10]
cmp byte [ebp + 0x78], 0
je 0x431fb2
cmp dword [esi + 0x10], 0
jbe 0x431fb2
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x431f25
mov eax, dword [esi]
push 0
push 0
push eax
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
test eax, eax
je 0x431fd1
push 0
push eax
lea ecx, [ebp + 0x48]
lfence
call fcn.0042e8d0
cmp dword [ebp + 0x5c], 8
lea eax, [ebp + 0x48]
mov dword [ebp - 4], 4
mov ecx, esi
cmovae eax, dword [ebp + 0x48]
cmp dword [esi + 0x14], 8
jb 0x431f62
mov ecx, dword [esi]
push dword [ebp + 0x58]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
test eax, eax
je 0x432066
mov ecx, dword [ebp + 0x58]
lea eax, [ebp + 0x48]
dec ecx
cmp dword [ebp + 0x5c], 8
mov dword [ebp + 0x58], ecx
cmovae eax, dword [ebp + 0x48]
xor edx, edx
mov word [eax + ecx*2], dx
lea eax, [ebp + 0x48]
cmp esi, eax
je 0x431faa
lfence
cmp dword [ebp + 0x5c], 8
mov ecx, esi
push dword [ebp + 0x58]
cmovae eax, dword [ebp + 0x48]
push eax
call fcn.00408a50
lea ecx, [ebp + 0x48]
call fcn.00402420
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x60]
xor ecx, ebp
call fcn.00461564
lea esp, [ebp + 0x64]
pop ebp
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp]
push eax
call fcn.0041b490
push eax
lea eax, [ebp + 0x18]
mov dword [ebp - 4], 7
push str.ExpandEnvironmentStringsW_failed__error:
push eax
call fcn.00419ce0
add esp, 0x14
mov byte [ebp - 4], 8
jmp 0x432090
call fcn.0046d841
call fcn.0041f850
push str.Unable_to_find_matching_variable
lea ecx, [ebp + 0x3c]
call fcn.004216f0
push 0x4cf5dc
lea eax, [ebp + 0x3c]
push eax
call fcn.00463df0
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp + 0x18]
push eax
call fcn.0042f1e0
push eax
lea eax, [ebp]
mov byte [ebp - 4], 2
push str.Unable_to_expand_variable:
push eax
call fcn.00419ce0
add esp, 0x14
push eax
lea ecx, [ebp + 0x3c]
mov byte [ebp - 4], 3
call fcn.00430dd0
push 0x4cf5dc
lea eax, [ebp + 0x3c]
push eax
call fcn.00463df0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp]
push eax
call fcn.0041b490
push eax
lea eax, [ebp + 0x18]
mov byte [ebp - 4], 5
push str.ExpandEnvironmentStringsW_failed__error:
push eax
call fcn.00419ce0
add esp, 0x14
mov byte [ebp - 4], 6
push eax
lea ecx, [ebp + 0x3c]
call fcn.0041a290
push 0x4ce944
lea eax, [ebp + 0x3c]
push eax
call fcn.00463df0
int3