Function at 0x401000
Capabilities:
Query environment variable

Disassembly:
sub esp, 0x34
mov eax, dword [esp + 0x3c]
push ebx
xor ebx, ebx
push ebp
mov ebp, dword [esp + 0x40]
cmp ebp, 1
push esi
push edi
mov dword [esp + 0x28], ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x34], ebx
mov byte [esp + 0x13], bl
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], eax
mov dword [esp + 0x24], ebx
mov byte [esp + 0x11], bl
mov byte [esp + 0x12], bl
mov edx, str.java
mov dword [esp + 0x2c], 1
jle 0x4010ff
add eax, 4
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
cmp byte [eax], 0x2d
je 0x40108d
mov edi, 0x406218
mov esi, edx
mov ecx, 4
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x401089
mov esi, edx
mov edi, 0x40621c
mov ecx, 0xb
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x4010ed
mov edx, eax
jmp 0x4010d1
mov edi, 0x406228
mov esi, eax
mov ecx, 8
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
mov edx, eax
je 0x4010cc
mov edi, 0x406230
mov esi, eax
mov ecx, 7
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x4010cc
mov esi, eax
mov edi, 0x406238
mov ecx, 5
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x4010d1
mov byte [esp + 0x12], 1
jmp 0x4010d1
mov byte [esp + 0x11], 1
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
inc eax
add esi, 4
cmp eax, ebp
mov dword [esp + 0x2c], eax
mov dword [esp + 0x1c], esi
jl 0x40105a
mov al, byte [esp + 0x12]
test al, al
je 0x4010fd
mov dword [esp + 0x34], str.j9vm
xor ebx, ebx
push str._JAVA_LAUNCHER_DEBUG
call dword [sym.imp.MSVCRT.dll_getenv]
add esp, 4
test eax, eax
je 0x401124
push 0x406260
mov byte [esp + 0x15], 1
call dword [sym.imp.MSVCRT.dll_printf]
add esp, 4
mov ebp, dword [esp + 0x48]
xor edx, edx
cmp ebp, ebx
jle 0x401148
mov esi, dword [esp + 0x4c]
mov edi, dword [esi]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
add esi, 4
dec ebp
lea edx, [edx + ecx + 1]
jne 0x401132
push 1
push edx
call dword [sym.imp.MSVCRT.dll_calloc]
mov ebp, eax
add esp, 8
cmp ebp, ebx
je 0x40126c
mov ecx, dword [esp + 0x4c]
mov edi, dword [ecx]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
shr ecx, 2
mov esi, edi
mov edi, ebp
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x48]
mov edx, 1
cmp eax, edx
jle 0x4011d6
or ecx, 0xffffffff
xor eax, eax
mov edi, ebp
repne scasb al, byte es:[edi]
mov ax, word [0x406298]
mov word [edi - 1], ax
mov ecx, dword [esp + 0x4c]
mov edi, dword [ecx + edx*4]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov ebx, ecx
or ecx, 0xffffffff
mov esi, edi
mov edi, ebp
repne scasb al, byte es:[edi]
dec edi
mov ecx, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x48]
inc edx
cmp edx, eax
jl 0x40118e
or ecx, 0xffffffff
xor eax, eax
mov edi, ebp
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edx, ecx
or ecx, 0xffffffff
mov edi, str.IBM_JAVA_COMMAND_LINE
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [edx + ecx + 2]
push 1
push eax
call dword [sym.imp.MSVCRT.dll_calloc]
mov edx, eax
add esp, 8
test edx, edx
je 0x40126c
or ecx, 0xffffffff
xor eax, eax
mov edi, str.IBM_JAVA_COMMAND_LINE
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
xor eax, eax
mov edi, edx
repne scasb al, byte es:[edi]
mov cx, word [0x40629c]
mov word [edi - 1], cx
mov edi, ebp
push edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov ebx, ecx
or ecx, 0xffffffff
mov esi, edi
mov edi, edx
repne scasb al, byte es:[edi]
mov ecx, ebx
shr ecx, 2
dec edi
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.MSVCRT.dll__putenv]
add esp, 4
cmp dword [esp + 0x48], 1
jle 0x401293
mov edx, dword [esp + 0x4c]
mov esi, dword [edx + 4]
mov edi, str._classic
mov ecx, 9
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x401293
mov esi, 0x4062ac
mov bl, 1
jmp 0x40129b
mov bl, byte [esp + 0x13]
mov esi, dword [esp + 0x34]
call fcn.004037c0
lea ecx, [esp + 0x2c]
push ecx
xor ebp, ebp
push esi
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], ebp
call fcn.00403860
add esp, 8
test al, al
jne 0x4012c9
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x34
ret
push 0x402e80
push 0x4062b4
call fcn.00401900
mov eax, dword [esp + 0x54]
mov ecx, dword [eax]
add eax, 4
push 0x5c
push ecx
mov dword [0x407218], ecx
mov dword [esp + 0x5c], eax
call dword [sym.imp.MSVCRT.dll_strrchr]
add esp, 0x10
cmp eax, ebp
je 0x401301
inc eax
mov dword [0x407218], eax
mov ecx, dword [esp + 0x48]
dec ecx
test bl, bl
mov dword [esp + 0x48], ecx
je 0x401322
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x48]
add ecx, 4
dec eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x48], eax
mov esi, dword [sym.imp.MSVCRT.dll_getenv]
push str.CLASSPATH
call esi
add esp, 4
cmp eax, ebp
mov dword [0x407240], eax
jne 0x40134b
cmp dword [esp + 0x20], ebp
je 0x40134b
mov dword [0x407240], 0x4062cc
push str.IBM_JAVA_OPTIONS
call esi
push eax
call fcn.00401ad0
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x60]
push edx
lea eax, [esp + 0x60]
push eax
call fcn.00401b50
add esp, 0x1c
test al, al
je 0x4018e6
mov eax, dword [0x407234]
mov esi, 1
cmp eax, esi
jne 0x4013d1
mov ebx, dword [esp + 0x38]
cmp ebx, esi
mov dword [0x407234], ebp
jle 0x4013d1
mov ecx, dword [esp + 0x3c]
mov ebp, dword [sym.imp.MSVCRT.dll_strstr]
lea edi, [ecx + 4]
mov edx, dword [edi]
push 0x4062e4
push edx
call ebp
add esp, 8
test eax, eax
jne 0x4013c5
inc esi
add edi, 4
cmp esi, ebx
jl 0x4013aa
jmp 0x4013cf
mov dword [0x407234], 1
xor ebp, ebp
mov eax, dword [0x407240]
mov ecx, dword [0x40723c]
push eax
push ecx
call fcn.004019d0
mov bl, byte [esp + 0x19]
add esp, 8
test bl, bl
je 0x4013f9
call fcn.00403e50
mov edi, eax
mov esi, edx
jmp 0x401401
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x30]
push ecx
call fcn.004023b0
add esp, 0xc
test al, al
jne 0x401429
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x34
ret
mov al, byte [0x407221]
test al, al
jne 0x40143f
mov al, byte [0x407222]
test al, al
je 0x4014cc
mov edx, dword [esp + 0x14]
push edx
call fcn.00402d50
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
add esp, 4
push eax
call dword [ecx + 0x3c]
test eax, eax
je 0x401489
mov eax, dword [esp + 0x14]
mov esi, 1
mov dword [0x407244], esi
mov edx, dword [eax]
push eax
call dword [edx + 0x40]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c], esi
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
mov al, byte [0x407221]
test al, al
je 0x4014ac
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c], ebp
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
mov al, byte [0x407222]
test al, al
je 0x4014cc
mov eax, dword [sym.imp.MSVCRT.dll__iob]
add eax, 0x40
push 0x4062e8
push eax
call dword [sym.imp.MSVCRT.dll_fprintf]
add esp, 8
cmp dword [esp + 0x20], ebp
jne 0x4014f3
cmp dword [esp + 0x18], ebp
jne 0x4014f3
call fcn.00402d90
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
test bl, bl
je 0x401569
call fcn.00403e50
sub eax, edi
sbb edx, esi
push edx
push eax
call fcn.00403ea0
mov edi, dword [sym.imp.MSVCRT.dll_printf]
push eax
push str._ld_micro_seconds_to_Initialize_the_JVM_n
call edi
mov eax, dword [esp + 0x28]
add esp, 0x10
cmp eax, ebp
jne 0x401525
mov eax, 0x40724c
push eax
push str.Entry_point_Java_class:__s_n
call edi
mov ecx, dword [esp + 0x50]
push ecx
push str.Number_of_arguments___:__d_n
call edi
push str._____Argument_list______n
call edi
mov eax, dword [esp + 0x5c]
add esp, 0x14
xor esi, esi
cmp eax, ebp
jle 0x401569
mov edx, dword [esp + 0x4c]
mov eax, dword [edx + esi*4]
push eax
push esi
push str.____argv__2d__:__s_n
call edi
mov eax, dword [esp + 0x54]
add esp, 0xc
inc esi
cmp esi, eax
jl 0x40154d
mov eax, dword [esp + 0x14]
mov ebx, 1
push str.java_lang_String
mov dword [esp + 0x20], ebx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x18]
cmp eax, ebp
mov dword [0x407224], eax
jne 0x4015b0
mov eax, dword [esp + 0x14]
mov dword [0x407244], ebx
mov edx, dword [eax]
push eax
call dword [edx + 0x40]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
mov eax, dword [esp + 0x20]
cmp eax, ebp
je 0x4016b3
push eax
mov dword [esp + 0x38], ebp
call dword [sym.imp.MSVCRT.dll__strdup]
mov ecx, dword [esp + 0x18]
mov esi, eax
mov eax, dword [0x407234]
push eax
push esi
push ecx
call fcn.00402520
push esi
mov edi, eax
call dword [sym.imp.MSVCRT.dll_free]
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x48]
push edx
push edi
push eax
call fcn.00402bd0
mov esi, eax
add esp, 0x20
cmp esi, ebp
mov dword [esp + 0x24], esi
jne 0x401645
mov ecx, dword [esp + 0x14]
push ebp
push ebp
push edi
push ecx
call fcn.004031a0
mov edx, dword [esp + 0x44]
mov ecx, dword [sym.imp.MSVCRT.dll__iob]
add esp, 8
push eax
mov eax, dword [edx*4 + 0x406198]
push eax
add ecx, 0x40
push ecx
call fcn.00403640
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax]
add esp, 0x14
push eax
call dword [ecx + 0xc]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
push edi
push eax
call dword [edx + 0x5c]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push ebp
push esi
push eax
call dword [ecx + 0x2a4]
cmp eax, ebp
mov dword [esp + 0x18], eax
jne 0x40168d
mov eax, dword [esp + 0x14]
mov dword [0x407244], ebx
mov edx, dword [eax]
push eax
call dword [edx + 0x40]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
push ebp
push eax
mov eax, dword [esp + 0x1c]
push eax
call fcn.00402920
mov edx, dword [esp + 0x24]
add esp, 0xc
push edx
mov edi, eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
push esi
push eax
call dword [ecx + 0x2a8]
jmp 0x4016d6
mov ecx, dword [0x407234]
mov edx, dword [esp + 0x14]
xor eax, eax
cmp ecx, 3
mov ecx, dword [esp + 0x18]
setne al
push eax
push ecx
push edx
call fcn.00402920
add esp, 0xc
mov edi, eax
cmp edi, ebp
je 0x4018dc
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push str.__Ljava_lang_String__V
push str.main
push edi
push eax
call dword [ecx + 0x1c4]
mov ebx, eax
test ebx, ebx
jne 0x401733
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x401716
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
push ecx
push eax
call dword [edx + 0x29c]
mov edx, dword [esp + 0x14]
push 0
push 0
push eax
push edx
call fcn.004031a0
add esp, 8
push eax
push str.No.main.method.in.class
jmp 0x4017e6
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push 1
push ebx
push edi
push eax
call dword [ecx + 0x24]
push 0x4063d4
mov ebp, eax
mov eax, dword [esp + 0x18]
mov esi, dword [eax]
push str.getModifiers
push ebp
push eax
call dword [esi + 0x7c]
mov edx, dword [esp + 0x1c]
push eax
push edx
call dword [esi + 0x84]
mov esi, eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x3c]
test eax, eax
je 0x40179e
mov eax, dword [esp + 0x14]
mov dword [0x407244], 1
mov edx, dword [eax]
push eax
call dword [edx + 0x40]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push esi
push ebp
push eax
call dword [ecx + 0xc4]
add esp, 0xc
test al, 1
jne 0x40180d
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x4017ce
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
push ecx
push eax
call dword [edx + 0x29c]
mov edx, dword [esp + 0x14]
push 0
push 0
push eax
push edx
call fcn.004031a0
add esp, 8
push eax
push str.main.not.public.in.class
mov eax, dword [sym.imp.MSVCRT.dll__iob]
add eax, 0x40
push eax
call fcn.00403640
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax]
add esp, 0x14
push eax
call dword [ecx + 0xc]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x14]
push ecx
push edx
push eax
call fcn.004028a0
add esp, 0xc
test eax, eax
mov dword [0x407244], 1
jne 0x401852
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x40]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx]
push eax
push ebx
push edi
push ecx
call dword [edx + 0x234]
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
add esp, 0x10
push eax
call dword [ecx + 0x3c]
test eax, eax
je 0x401893
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
push eax
call dword [edx + 0x40]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x14]
test eax, eax
je 0x4018d4
mov edx, dword [sym.imp.MSVCRT.dll__iob]
push 0
push 0
push 0
add edx, 0x40
push str.Thread.detach.error
push edx
call fcn.00403640
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax]
add esp, 0x14
push eax
call dword [ecx + 0xc]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret