Function at 0x423840
Capabilities:
Query environment variable
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x4e0
mov esi, esp
mov dword [esi + 0x4c8], ebp
lea eax, [esi + 0x4d0]
mov dword [eax - 4], esp
or dword [eax + 8], 0xffffffff
mov dword [eax + 4], 0x424c20
mov edi, dword fs:[0]
mov dword [eax], edi
mov dword fs:[0], eax
mov dword [esi + 0x68], ecx
mov dword [esi + 0x6c], edx
lock inc dword [0x4369d4]
jle 0x424044
mov eax, dword [0x436a38]
mov edi, dword fs:[0x2c]
mov eax, dword [edi + eax*4]
cmp byte [eax + 0x24], 0
jne 0x42407b
mov eax, dword [0x436a38]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
inc dword [eax + 0x20]
mov byte [eax + 0x24], 1
mov edi, dword [0x4369c4]
mov ecx, edi
call fcn.00424480
cmp eax, 1
jne 0x4238ea
mov eax, edi
lock cmpxchg dword [0x4369c4], edx
mov edi, eax
jne 0x4238cb
jmp 0x423a82
lea eax, [esi + 0x3c]
xorps xmm0, xmm0
mov dword [esi + 0x10], 0
movaps xmmword [eax - 0xc], xmm0
and word [eax + 4], 0
mov ebx, dword [0x4369c4]
mov ecx, ebx
call fcn.00424480
cmp eax, 1
je 0x4239ef
cmp dword [esi + 0x10], 7
setb al
test bl, 2
sete cl
test cl, al
jne 0x423a03
cmp dword [esi + 0x3c], 0
jne 0x42396c
and dword [esi + 0x4d8], 0
mov dword [esi + 0x14], ebx
call fcn.0041eed7
test eax, eax
jne 0x423949
call fcn.0041ed11
lea edi, [esi + 0x20]
lea edx, [esi + 0x3c]
mov ecx, edi
push eax
call fcn.0041ed32
pop eax
cmp dword [esi + 0x20], 0
jne 0x423a44
mov ecx, edi
call fcn.0041ed58
mov ebx, dword [esi + 0x14]
mov ecx, ebx
and dword [esi + 0x34], 0
mov eax, ebx
mov edi, ebx
mov byte [esi + 0x40], 0
and ecx, 1
and eax, 0xfffffff8
test bl, 2
lea edx, [esi + ecx + 0x32]
mov dword [esi + 0x30], eax
jne 0x423994
lea eax, [esi + 0x30]
mov dword [esi + 0x38], eax
jmp 0x42399e
add edx, 4
mov dword [esi + 0x38], 0
mov eax, edi
lock cmpxchg dword [0x4369c4], edx
mov ebx, eax
jne 0x423906
mov ecx, edi
and ecx, 6
cmp ecx, 2
jne 0x4239ce
mov ecx, 0x4369c4
mov dword [esi + 0x4d8], 2
call fcn.004223c3
mov al, byte [esi + 0x40]
test al, al
jne 0x423a23
cmp dword [esi + 0x3c], 0
mov dword [esi + 0x4d8], 2
je 0x423a35
lea ecx, [esi + 0x3c]
call fcn.0041fbf9
jmp 0x4239ce
mov eax, ebx
lock cmpxchg dword [0x4369c4], edx
mov ebx, eax
jne 0x423906
jmp 0x423a7a
xor eax, eax
mov edx, eax
mov ecx, dword [esi + 0x10]
shr edx, cl
test edx, edx
jne 0x423a15
pause
inc eax
jmp 0x423a05
mov ebx, dword [0x4369c4]
inc dword [esi + 0x10]
jmp 0x423906
mov ebx, dword [0x4369c4]
mov dword [esi + 0x10], 0
jmp 0x423906
mov ecx, 0x408bb8
call fcn.00433a2c
jmp 0x423f39
xor eax, eax
lea ecx, [esi + 0xc8]
mov edx, 0x406a00
inc eax
mov dword [ecx], 0x406984
mov dword [ecx + 4], eax
and dword [ecx + 0x10], 0
mov dword [ecx + 8], 4
and dword [ecx + 0xc], 0
mov dword [esi + 0x4d8], eax
call fcn.00433815
jmp 0x423f39
lea ecx, [esi + 0x3c]
call fcn.0041ed66
lea eax, [0x4369cc]
mov cl, byte [eax - 4]
cmp dword [eax], 0
mov ecx, 0x4369c4
mov dword [esi + 0x9c], eax
mov dword [esi + 0x4d8], 3
mov dword [esi + 0xa0], ecx
jne 0x423ad9
mov eax, dword [esi + 0x68]
mov ecx, dword [esi + 0x6c]
mov dword [esi + 0x78], eax
push eax
mov dword [esi + 0x74], ecx
call dword [ecx + 0x14]
add esp, 4
mov ebx, dword [ebp + 8]
cmp byte [ebp + 0x10], 0
mov edi, edx
mov dword [esi + 0x50], eax
je 0x423b5b
mov byte [esi + 0xf], 3
jmp 0x423ba7
mov eax, dword [esi + 0x68]
mov ecx, dword [esi + 0x6c]
mov dword [esi + 0x78], eax
push eax
mov dword [esi + 0x74], ecx
call dword [ecx + 0x14]
add esp, 4
lea ecx, [esi + 0xc8]
mov dword [ecx], eax
mov eax, dword [ebp + 8]
mov dword [ecx + 4], edx
mov dword [ecx + 8], eax
mov al, byte [ebp + 0xc]
mov byte [ecx + 0xc], al
mov al, byte [ebp + 0x10]
mov byte [ecx + 0xd], al
mov eax, dword [0x4369d0]
push ecx
push dword [0x4369cc]
call dword [eax + 0x14]
add esp, 8
or dword [esi + 0x4d8], 0xffffffff
lea ecx, [esi + 0x9c]
call fcn.00422355
mov eax, dword [0x436a38]
mov ecx, dword fs:[0x2c]
cmp byte [ebp + 0xc], 0
mov eax, dword [ecx + eax*4]
mov byte [eax + 0x24], 0
je 0x4240fb
mov eax, dword [esi + 0x74]
mov ecx, dword [esi + 0x78]
mov edx, dword [eax + 0x10]
call fcn.004222bc
mov edx, dword [0x436a38]
mov ecx, dword fs:[0x2c]
mov ecx, dword [ecx + edx*4]
cmp dword [ecx + 0x20], 1
jbe 0x423b7a
mov byte [esi + 0xf], 1
jmp 0x423ba7
mov dword [esi + 0x94], ebx
mov bl, byte [0x4369b8]
dec bl
cmp bl, 3
jae 0x423c5a
mov byte [esi + 0xf], bl
mov eax, dword [esi + 0x50]
mov ebx, dword [esi + 0x94]
mov dword [esi + 0x4d8], 3
mov dword [esi + 0xa4], ebx
lea ecx, [esi + 0xb8]
mov edx, dword [edi + 0xc]
push eax
push ecx
mov dword [esi + 0x10], edx
call edx
mov ebx, dword [esi + 0x50]
add esp, 8
mov eax, dword [esi + 0xc4]
mov ecx, dword [esi + 0xc0]
mov edx, dword [esi + 0xb8]
mov edi, dword [esi + 0xbc]
xor edi, 0xb98b1b71
xor eax, 0x63eb502c
xor edx, 0x57a64178
xor ecx, 0xd6cb5d6d
or eax, edi
or ecx, edx
or ecx, eax
je 0x423c53
lea eax, [esi + 0xa8]
push ebx
push eax
call dword [esi + 0x10]
mov ebx, dword [esi + 0x50]
add esp, 8
mov eax, dword [esi + 0xb4]
mov ecx, dword [esi + 0xb0]
mov edx, dword [esi + 0xa8]
mov edi, dword [esi + 0xac]
xor edi, 0xcb48699b
xor eax, 0x25dd4277
xor edx, 0x968f3038
xor ecx, 0x4952bb49
or eax, edi
or ecx, edx
or ecx, eax
je 0x423cc9
mov eax, 0x407e3c
push 0xc
pop ecx
jmp 0x423cd6
push 4
pop ecx
mov eax, ebx
jmp 0x423cd1
lea ecx, [esi + 0xc8]
mov edx, 0x40712e
push 0xe
mov dword [esi + 0x90], edi
call fcn.0042022b
pop eax
mov ecx, dword [esi + 0xc8]
mov eax, ecx
neg eax
jno 0x423e36
mov ecx, dword [esi + 0xcc]
mov edx, dword [esi + 0xd0]
call fcn.0041ce62
mov cl, 3
mov bl, 2
xor eax, eax
lock cmpxchg byte [0x4369b8], cl
mov edi, dword [esi + 0x90]
je 0x423b91
mov bl, 3
cmp al, 3
ja 0x423b91
shl al, 3
mov ebx, 0x2010003
mov ecx, eax
shr ebx, cl
jmp 0x423b91
mov eax, ebx
add eax, 4
push 8
pop ecx
mov eax, dword [eax]
mov ecx, dword [ebx + ecx]
mov dword [esi + 0x5c], eax
mov dword [esi + 0x60], ecx
call fcn.0041eed7
test eax, eax
mov dword [esi + 0x58], eax
jne 0x423cec
xor eax, eax
jmp 0x423cf3
mov ecx, eax
call fcn.004201e4
test eax, eax
mov ecx, 0x407d34
cmovne ecx, eax
push 9
pop eax
lea edi, [esi + 0x80]
cmove edx, eax
mov dword [esi + 0x4d8], eax
mov dword [edi], ecx
lea ecx, [esi + 0xa4]
mov dword [esi + 0xc8], edi
mov dword [edi + 4], edx
mov dword [esi + 0xcc], ecx
lea ecx, [esi + 0x5c]
mov dword [esi + 0xd0], ecx
lea ecx, [esi + 0xf]
mov dword [esi + 0xd4], ecx
xor ecx, ecx
call fcn.004203d9
lea ecx, [esi + 0x24]
test eax, eax
mov dword [esi + 0x14], eax
mov dword [ecx - 4], eax
sete ah
test edx, edx
mov dword [ecx], edx
setne cl
and cl, ah
mov byte [esi + 0x10], cl
je 0x423de1
lea edi, [esi + 0x30]
mov dword [esi + 0x7c], edx
add edx, 8
mov ecx, edi
call fcn.004221cd
mov eax, dword [edi + 4]
mov cl, byte [edi + 8]
mov dword [esi + 0x4d8], 8
mov byte [esi + 0x1c], cl
mov dword [esi + 0x14], eax
lea edx, [eax + 8]
lea ecx, [esi + 0xc8]
push fcn.004221f6
call fcn.004244a0
pop eax
movzx edx, byte [esi + 0x1c]
mov ecx, dword [esi + 0x14]
call fcn.00420abc
mov ecx, dword [esi + 0x7c]
mov byte [esi + 0x1b], 0
mov dword [esi + 0x4d8], 7
call fcn.004203d9
mov ecx, eax
xor ecx, 1
cmp eax, 1
mov dword [esi + 0x30], ecx
mov dword [esi + 0x34], edx
je 0x423dd3
lea ecx, [esi + 0x34]
call fcn.00420221
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x24]
mov dword [esi + 0x14], eax
mov dword [esi + 0x1c], ecx
jmp 0x423e09
mov dword [esi + 0x1c], edx
lea edx, [esi + 0x30]
mov dword [esi + 0x4d8], 6
lea ecx, [esi + 0xc8]
and dword [edx], 0
mov byte [edx + 4], 0
push fcn.0041e6aa
call fcn.004244a0
pop eax
lea ecx, [esi + 0x58]
call fcn.0041ed66
cmp dword [esi + 0x1c], 0
sete al
or al, byte [esi + 0x14]
or al, byte [esi + 0x10]
test al, 1
jne 0x423e2a
lea ecx, [esi + 0x24]
call fcn.004203cc
or dword [esi + 0x4d8], 0xffffffff
jmp 0x423b1b
mov eax, dword [esi + 0xcc]
mov edi, 0x200
mov dword [esi + 0x70], ecx
mov dword [esi + 0x14], 0
mov dword [esi + 0x10], eax
lea eax, [esi + 0x5c]
and dword [eax], 0
mov dword [eax + 4], 2
and dword [eax + 8], 0
push 2
pop eax
mov dword [esi + 0x54], eax
cmp edi, 0x201
jae 0x423e80
lea eax, [esi + 0xc8]
mov ebx, edi
mov dword [esi + 0x1c], 0x200
mov edi, eax
jmp 0x423eab
sub edi, dword [esi + 0x14]
lea ecx, [esi + 0x5c]
mov dword [esi + 0x4d8], 5
mov edx, edi
call fcn.0041dec6
mov eax, dword [esi + 0x60]
mov ebx, dword [esi + 0x5c]
mov edi, eax
mov dword [esi + 0x64], ebx
mov dword [esi + 0x54], eax
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x14], ebx
push 0
call dword [sym.imp.kernel32.dll_SetLastError]
push ebx
mov dword [esi + 0x98], edi
push edi
push dword [esi + 0x10]
call dword [sym.imp.kernel32.dll_GetEnvironmentVariableW]
mov edi, eax
test eax, eax
jne 0x423ed4
call dword [sym.imp.kernel32.dll_GetLastError]
test eax, eax
jne 0x423f3b
cmp edi, ebx
jne 0x423ef5
call dword [sym.imp.kernel32.dll_GetLastError]
cmp eax, 0x7a
jne 0x423f1c
lea edi, [ebx + ebx]
test ebx, ebx
mov eax, 0xffffffff
cmovs edi, eax
jmp 0x423e65
ja 0x423e65
cmp edi, dword [esi + 0x1c]
mov dword [esi + 0x4d8], 5
jbe 0x423f82
mov edx, dword [esi + 0x1c]
mov ecx, edi
push 0x4087e0
call fcn.0043384f
pop eax
jmp 0x423f39
mov dword [esi + 0x4d8], 5
push 0x28
pop edx
mov ecx, 0x406b6c
push 0x4087f0
call fcn.00433858
pop eax
ud2
lea edi, [esi + 0x24]
mov ecx, edi
call fcn.0040e7ab
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x54]
mov dword [edi - 4], 0x80000000
call fcn.0041deb9
mov dword [esi + 0x4d8], 4
mov ecx, dword [esi + 0x24]
mov edx, dword [esi + 0x28]
mov dword [esi + 0x80], 0x80000000
mov dword [esi + 0x4d8], 4
call fcn.0041ce62
jmp 0x423fd2
mov edx, dword [esi + 0x98]
lea ecx, [esi + 0x30]
push edi
call fcn.0041d6d9
pop eax
movsd xmm0, qword [esi + 0x30]
movsd xmm1, qword [esi + 0x38]
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x54]
movsd qword [esi + 0x28], xmm1
movsd qword [esi + 0x20], xmm0
call fcn.0041deb9
xor eax, eax
cmp eax, dword [esi + 0x20]
jo 0x423f61
movsd xmm0, qword [esi + 0x20]
movsd xmm1, qword [esi + 0x28]
movsd qword [esi + 0x88], xmm1
movsd qword [esi + 0x80], xmm0
mov ecx, dword [esi + 0x70]
mov edx, dword [esi + 0x10]
call fcn.0041deb9
mov edi, dword [esi + 0x80]
mov eax, edi
neg eax
jo 0x423c94
lea ecx, [esi + 0x80]
mov edx, 0x40712d
push 1
call fcn.004222d6
pop ecx
test al, al
je 0x424016
mov edx, dword [esi + 0x84]
mov ecx, edi
call fcn.00416352
jmp 0x423c94
lea ecx, [esi + 0x80]
mov edx, 0x40772a
push 4
call fcn.004222d6
pop ecx
lea ecx, [esi + 0x80]
mov ebx, eax
mov edx, dword [ecx + 4]
mov ecx, edi
call fcn.00416352
mov ecx, ebx
inc cl
jmp 0x423c98
lea eax, [esi + 0x80]
lea ecx, [ebp + 8]
lea edx, [esi + 0x30]
and dword [eax], 0
mov dword [edx], ecx
lea ecx, [esi + 0x68]
mov dword [edx + 4], 0x41e007
mov byte [eax + 4], 0
mov dword [edx + 8], ecx
lea ecx, [esi + 0xc8]
mov dword [edx + 0xc], 0x416cba
mov dword [ecx], 0x407e64
jmp 0x4240c7
push ecx
call dword [edx + 0x18]
add esp, 4
xor ecx, ecx
lea edi, [esi + 0x80]
inc ecx
test eax, eax
cmovne ecx, eax
cmove edx, eax
lea eax, [esi + 0x5c]
and dword [eax], 0
mov dword [edi], ecx
mov dword [edi + 4], edx
lea ecx, [ebp + 8]
lea edx, [esi + 0x30]
mov byte [eax + 4], 0
mov dword [edx], ecx
lea ecx, [esi + 0xc8]
mov dword [edx + 4], 0x41e007
mov dword [edx + 8], edi
mov dword [edx + 0xc], fcn.00416ca6
mov dword [ecx], 0x407eb0
mov dword [ecx + 4], 3
and dword [ecx + 0x10], 0
mov dword [ecx + 8], edx
mov dword [ecx + 0xc], 2
lea edi, [esi + 0x20]
push ecx
push eax
push edi
call fcn.0041e6aa
add esp, 0xc
mov ecx, dword [edi]
mov edx, dword [edi + 4]
call fcn.0041e69b
push 7
pop ecx
int 0x29
ud2
lea eax, [esi + 0x20]
lea ecx, [esi + 0xc8]
lea edi, [esi + 0x30]
and dword [eax], 0
mov dword [ecx], 0x407ef8
mov dword [ecx + 4], 1
and dword [ecx + 0x10], 0
mov dword [ecx + 8], 4
and dword [ecx + 0xc], 0
mov byte [eax + 4], 0
push ecx
push eax
push edi
call fcn.0041e6aa
add esp, 0xc
mov ecx, dword [edi]
mov edx, dword [edi + 4]
call fcn.0041e69b
push 7
pop ecx
int 0x29
ud2