Function at 0x401ba4
Capabilities:
Query environment variable

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov eax, dword [ebp + 0x24]
or dword [ebp - 0x1c], 0xffffffff
push ebx
push esi
xor esi, esi
push edi
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x18], esi
mov dword [eax], esi
call fcn.004030ac
mov edi, eax
mov eax, dword [ebp + 0x18]
mov ebx, dword [ebp + 0x20]
neg edi
sbb edi, edi
inc edi
cmp dword [eax], esi
mov dword [ebp - 0xc], edi
je 0x401be2
cmp dword [ebx], esi
jne 0x40216e
push str.JAVAWS_VM_ARGS
call dword [sym.imp.MSVCRT.dll_getenv]
mov esi, eax
pop ecx
test esi, esi
je 0x401c2d
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
call dword [sym.imp.MSVCRT.dll_malloc]
pop ecx
mov edx, eax
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
mov dword [ebx], edx
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [ebp - 0xc]
push 1
pop esi
cmp dword [ebp + 8], esi
mov dword [ebp - 4], esi
jle 0x401f19
mov eax, dword [ebp + 0xc]
lea ebx, [eax + 4]
mov dword [ebp - 8], ebx
cmp dword [ebp - 0x10], 0
jne 0x401efe
mov edx, dword [ebx]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
test ecx, ecx
jle 0x401ee2
cmp byte [edx], 0x2d
je 0x401c98
mov eax, edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x10], eax
cmp byte [eax], 0x40
jne 0x401ee2
inc eax
push eax
call fcn.00402173
test eax, eax
pop ecx
mov dword [ebp - 0x10], eax
jne 0x401ee2
mov eax, dword [ebx]
mov dword [ebp - 0x10], eax
jmp 0x401ee2
mov esi, edx
mov eax, 0x4143d4
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x401cc1
test cl, cl
je 0x401cbd
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x401cc1
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x401c9f
xor eax, eax
jmp 0x401cc6
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401cd2
push 1
pop eax
mov dword [ebp - 0x18], eax
jmp 0x401d07
mov esi, edx
mov eax, 0x4143e0
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x401cfb
test cl, cl
je 0x401cf7
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x401cfb
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x401cd9
xor eax, eax
jmp 0x401d00
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401d12
push 1
pop eax
mov ecx, dword [ebp + 0x38]
mov dword [ebp - 0xc], eax
jmp 0x401ee0
mov esi, edx
mov eax, 0x4143f0
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x401d3b
test cl, cl
je 0x401d37
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x401d3b
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x401d19
xor eax, eax
jmp 0x401d40
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401d50
mov dword [ebp - 0xc], 1
jmp 0x401ee2
mov esi, edx
mov eax, str._import
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x401d79
test cl, cl
je 0x401d75
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x401d79
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x401d57
xor eax, eax
jmp 0x401d7e
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401d92
mov ecx, dword [ebp + 0x38]
push 1
pop eax
mov dword [ecx], eax
mov dword [ebp - 0x20], eax
jmp 0x401ee2
mov esi, edx
mov eax, str._wait
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x401dbb
test cl, cl
je 0x401db7
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x401dbb
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x401d99
xor eax, eax
jmp 0x401dc0
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401dd2
mov eax, dword [ebp + 0x38]
mov dword [eax], 1
jmp 0x401ee2
mov esi, edx
mov eax, str._silent
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x401dfb
test cl, cl
je 0x401df7
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x401dfb
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x401dd9
xor eax, eax
jmp 0x401e00
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401e09
mov eax, dword [ebp + 0x44]
jmp 0x401dc7
mov esi, edx
mov eax, str._open
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x401e32
test cl, cl
je 0x401e2e
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x401e32
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x401e10
xor eax, eax
jmp 0x401e37
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401e47
inc dword [ebp - 4]
add dword [ebp - 8], 4
jmp 0x401ee2
mov esi, edx
mov eax, str._print
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x401e70
test cl, cl
je 0x401e6c
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x401e70
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x401e4e
xor eax, eax
jmp 0x401e75
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x401e3b
mov esi, dword [sym.imp.MSVCRT.dll_strstr]
push str._perflogfile:
push edx
call esi
pop ecx
test eax, eax
pop ecx
je 0x401eb0
mov eax, dword [ebp - 8]
or ecx, 0xffffffff
mov edx, dword [eax]
xor eax, eax
mov edi, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 0xe
jbe 0x401eb0
push edx
call dword [sym.imp.MSVCRT.dll__strdup]
pop ecx
mov ecx, dword [ebp + 0x48]
jmp 0x401ee0
mov edi, dword [ebp - 8]
push str._launchTime
push dword [edi]
call esi
pop ecx
test eax, eax
pop ecx
je 0x401ee2
mov edx, dword [edi]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 0xc
jbe 0x401ee2
push edx
call dword [sym.imp.MSVCRT.dll__strdup]
pop ecx
mov ecx, dword [ebp + 0x4c]
mov dword [ecx], eax
mov esi, dword [ebp - 4]
mov ebx, dword [ebp - 8]
mov edi, dword [ebp - 0xc]
inc esi
add ebx, 4
cmp esi, dword [ebp + 8]
mov dword [ebp - 4], esi
mov dword [ebp - 8], ebx
jl 0x401c45
push 1
xor ebx, ebx
pop eax
cmp dword [ebp - 0x20], eax
je 0x401f0d
cmp dword [ebp - 0x18], eax
jne 0x401f19
mov ecx, dword [ebp + 0x44]
cmp dword [ecx], eax
jne 0x401f19
mov dword [ebp - 0xc], eax
jmp 0x401f24
mov eax, dword [ebp + 0x44]
xor ebx, ebx
cmp edi, ebx
mov dword [eax], ebx
je 0x401f30
mov eax, dword [ebp + 0x28]
mov dword [eax], ebx
mov eax, dword [ebp + 0x2c]
mov dword [eax], ebx
jmp 0x401f47
push dword [ebp + 0x2c]
xor eax, eax
cmp dword [ebp - 0x10], ebx
push dword [ebp + 0x28]
sete al
push eax
call fcn.00406a02
add esp, 0xc
mov eax, dword [ebp - 0x10]
cmp eax, ebx
je 0x40216e
cmp dword [ebp - 0x18], ebx
je 0x401f65
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 0x1c]
mov dword [ecx + edx*4], eax
jmp 0x40216e
lea ecx, [ebp - 0x14]
push ecx
push eax
call fcn.00406ae6
cmp dword [ebp - 0x14], ebx
pop ecx
pop ecx
mov edi, eax
je 0x40201a
call fcn.00405696
push edi
mov esi, eax
push dword [ebp - 0x14]
push esi
call fcn.00406b7d
add esp, 0xc
test eax, eax
jne 0x401fb8
push 0x414444
call dword [sym.imp.MSVCRT.dll_getenv]
test eax, eax
pop ecx
je 0x401fcf
push str.Failed_to_copy_argument
call fcn.00406bcc
push esi
call fcn.00406bcc
pop ecx
pop ecx
jmp 0x401fcf
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x1c]
mov dword [ecx + eax*4], esi
mov ecx, dword [ebp + 0x24]
mov dword [ecx], 1
mov ecx, dword [ebp + 0x40]
mov dword [ecx], eax
push edi
push dword [ebp - 0x14]
call fcn.00406bd7
pop ecx
test eax, eax
pop ecx
je 0x401feb
push dword [ebp - 0x14]
call fcn.00403191
pop ecx
mov esi, eax
jmp 0x401ff7
push ebx
call fcn.00403191
mov esi, eax
pop ecx
mov dword [esi + 8], ebx
push dword [ebp - 0x14]
mov edi, dword [sym.imp.MSVCRT.dll__strdup]
call edi
pop ecx
mov ecx, dword [ebp + 0x10]
mov dword [ecx], eax
mov eax, dword [esi + 0x10]
cmp eax, ebx
je 0x40202c
push eax
call edi
pop ecx
mov ecx, dword [ebp + 0x14]
mov dword [ecx], eax
jmp 0x40202c
push ebx
call fcn.00403191
mov esi, eax
mov eax, dword [ebp - 0x10]
pop ecx
mov dword [esi + 0xc], eax
mov dword [esi + 8], ebx
cmp dword [esi + 0x1c], ebx
mov dword [ebp - 4], ebx
jle 0x40209b
lea ebx, [esi + 0x20]
cmp dword [ebx], 0
je 0x40208d
mov eax, dword [ebp + 0x20]
cmp dword [eax], 0
jne 0x40204a
mov dword [eax], 0x41c458
mov eax, dword [ebp + 0x20]
or ecx, 0xffffffff
mov edi, dword [eax]
xor eax, eax
repne scasb al, byte es:[edi]
mov edi, dword [ebx]
not ecx
dec ecx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [edx + ecx + 4]
push eax
call dword [sym.imp.MSVCRT.dll_malloc]
push dword [ebx]
mov edi, eax
mov eax, dword [ebp + 0x20]
push dword [eax]
push str._s__s
push edi
call dword [sym.imp.MSVCRT.dll_sprintf]
mov eax, dword [ebp + 0x20]
add esp, 0x14
mov dword [eax], edi
inc dword [ebp - 4]
add ebx, 4
mov eax, dword [ebp - 4]
cmp eax, dword [esi + 0x1c]
jl 0x402037
mov ecx, dword [ebp + 0x54]
mov eax, dword [esi + 0x70]
xor edx, edx
mov dword [ecx], eax
cmp dword [esi + 0x70], edx
jle 0x4020c0
mov ecx, dword [ebp + 0x50]
lea eax, [esi + 0x74]
mov edi, dword [eax]
inc edx
mov dword [ecx], edi
add eax, 4
add ecx, 4
cmp edx, dword [esi + 0x70]
jl 0x4020b0
cmp dword [esi], 0
mov edi, dword [sym.imp.MSVCRT.dll_free]
je 0x402104
mov ebx, dword [ebp + 0x18]
mov eax, dword [ebx]
test eax, eax
je 0x4020d8
push eax
call edi
pop ecx
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax]
test eax, eax
je 0x4020e5
push eax
call edi
pop ecx
push dword [esi]
mov edi, dword [sym.imp.MSVCRT.dll__strdup]
call edi
mov dword [ebx], eax
mov eax, dword [esi + 4]
test eax, eax
pop ecx
je 0x40210a
push eax
call edi
pop ecx
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], eax
jmp 0x40210a
mov edi, dword [sym.imp.MSVCRT.dll__strdup]
mov eax, dword [esi + 0x14]
xor ebx, ebx
cmp eax, ebx
je 0x40211c
push eax
call edi
pop ecx
mov ecx, dword [ebp + 0x30]
mov dword [ecx], eax
mov eax, dword [esi + 0x18]
cmp eax, ebx
je 0x40212c
push eax
call edi
pop ecx
mov ecx, dword [ebp + 0x34]
mov dword [ecx], eax
cmp dword [ebp - 0xc], ebx
jne 0x40214f
push dword [ebp + 0x2c]
cmp dword [esi + 0x10], ebx
push dword [ebp + 0x28]
je 0x402144
push esi
call fcn.00406a39
jmp 0x40214c
push dword [esi + 8]
call fcn.00406a02
add esp, 0xc
cmp dword [esi + 8], ebx
je 0x40215d
mov eax, dword [ebp + 0x3c]
mov dword [eax], 1
push esi
call fcn.00403928
push dword [ebp - 0x14]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
pop ecx
pop edi
pop esi
pop ebx
leave
ret