Function at 0x408e30
Capabilities:
Query environment variable

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov eax, dword [0x413100]
mov dword [0x41b144], 0
test eax, eax
jne 0x4090a0
mov dword [0x413100], 1
mov eax, 1
mov dword [esp], str.POSIXLY_CORRECT
mov dword [0x41b148], eax
mov dword [0x41b14c], eax
mov dword [0x41b158], 0
call sub.msvcrt.dll_getenv
mov edi, dword [esp + 0x78]
mov dword [0x41b150], eax
movzx edx, byte [edi]
cmp dl, 0x2d
je 0x408fb2
cmp dl, 0x2b
je 0x4092d0
test eax, eax
sete al
movzx eax, al
mov dword [0x41b154], eax
mov dword [0x41b140], 1
mov ebp, dword [0x41b158]
test ebp, ebp
je 0x408fd0
movzx eax, byte [ebp]
mov byte [esp + 0x2c], al
test al, al
je 0x408fd0
mov ecx, dword [esp + 0x7c]
test ecx, ecx
je 0x408f17
mov eax, dword [0x413100]
lea edi, [eax*4]
mov dword [esp + 0x38], eax
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x74]
mov eax, dword [edi + eax*4]
movzx ecx, byte [eax + 1]
mov dword [esp + 0x44], eax
mov byte [esp + 0x43], cl
cmp cl, 0x2d
je 0x4091c3
mov edx, dword [esp + 0x84]
test edx, edx
jne 0x409190
mov eax, dword [esp + 0x78]
lea edi, [ebp + 1]
movsx ebx, byte [esp + 0x2c]
mov dword [0x41b158], edi
movzx eax, byte [eax]
test al, al
je 0x408f57
cmp byte [esp + 0x2c], al
je 0x4092e4
mov eax, dword [esp + 0x78]
movzx ecx, byte [esp + 0x2c]
jmp 0x408f4d
cmp dl, cl
je 0x4092f0
add eax, 1
movzx edx, byte [eax]
test dl, dl
jne 0x408f45
cmp byte [ebp + 1], 0
jne 0x408f64
add dword [0x413100], 1
mov ecx, dword [0x4130fc]
test ecx, ecx
je 0x408fa2
mov eax, dword [esp + 0x74]
mov edx, dword [0x41b150]
mov eax, dword [eax]
test edx, edx
mov dword [esp + 0xc], ebx
mov dword [esp + 8], eax
je 0x4097bb
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 4], str._s:_illegal_option_____c_n
add eax, 0x40
mov dword [esp], eax
call fcn.00408e00
mov dword [0x4130f8], ebx
mov ebx, 0x3f
jmp 0x409094
mov dword [0x41b154], 2
add dword [esp + 0x78], 1
jmp 0x408ea8
mov eax, dword [0x413100]
cmp dword [0x41b148], eax
jle 0x408fe2
mov dword [0x41b148], eax
cmp eax, dword [0x41b14c]
jge 0x408fef
mov dword [0x41b14c], eax
mov ebx, dword [0x41b154]
cmp ebx, 1
je 0x4090e0
cmp dword [esp + 0x70], eax
je 0x4090b3
mov edi, dword [esp + 0x74]
mov ecx, 3
mov edx, dword [edi + eax*4]
mov edi, 0x415f08
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
seta cl
sbb cl, 0
test cl, cl
jne 0x409070
mov edx, dword [0x41b14c]
mov ecx, dword [0x41b148]
add eax, 1
mov dword [0x413100], eax
cmp edx, ecx
je 0x4094b0
cmp eax, ecx
je 0x409056
mov eax, dword [esp + 0x74]
call fcn.00408d40
mov edx, dword [0x41b14c]
mov eax, dword [esp + 0x70]
mov dword [0x41b148], eax
mov dword [0x413100], eax
jmp 0x4090c2
cmp byte [edx], 0x2d
je 0x409150
test ebx, ebx
je 0x4095bc
add eax, 1
mov dword [0x41b144], edx
mov ebx, 1
mov dword [0x413100], eax
add esp, 0x5c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, dword [0x41b140]
test esi, esi
je 0x408e5d
jmp 0x408eb2
mov eax, dword [0x41b148]
mov edx, dword [0x41b14c]
mov dword [esp + 0x70], eax
cmp dword [esp + 0x70], edx
je 0x4095bc
mov dword [0x413100], edx
mov ebx, 0xffffffff
jmp 0x409094
mov edx, dword [0x41b148]
cmp dword [0x41b14c], edx
je 0x4092b0
cmp eax, edx
je 0x409105
mov eax, dword [esp + 0x74]
call fcn.00408d40
mov edx, dword [0x413100]
cmp dword [esp + 0x70], edx
jle 0x4092c4
mov esi, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
jmp 0x409131
add edx, 1
mov dword [0x413100], edx
cmp edx, esi
je 0x4092c4
mov eax, dword [ecx + edx*4]
cmp byte [eax], 0x2d
jne 0x409120
cmp byte [eax + 1], 0
je 0x409120
mov eax, dword [0x413100]
mov dword [0x41b148], edx
jmp 0x408ffe
movzx ecx, byte [edx + 1]
test cl, cl
je 0x409079
mov ebx, dword [esp + 0x7c]
test ebx, ebx
setne bl
xor eax, eax
cmp cl, 0x2d
sete al
and eax, ebx
lea ebp, [edx + eax + 1]
movzx eax, byte [ebp]
mov dword [0x41b158], ebp
mov byte [esp + 0x2c], al
jmp 0x408ed0
cmp byte [eax + 2], 0
jne 0x4091c3
mov eax, dword [esp + 0x78]
movzx eax, byte [eax]
test al, al
je 0x4091c3
cmp cl, al
je 0x4095a9
mov edx, dword [esp + 0x78]
mov ebx, ecx
jmp 0x4091b9
cmp bl, cl
je 0x4095a9
add edx, 1
movzx ecx, byte [edx]
test cl, cl
jne 0x4091b1
movzx eax, byte [esp + 0x2c]
mov esi, ebp
test al, al
jne 0x4091da
jmp 0x4091de
add esi, 1
movzx eax, byte [esi]
test al, al
je 0x4091de
cmp al, 0x3d
jne 0x4091d0
mov eax, dword [esp + 0x7c]
mov edi, dword [eax]
test edi, edi
je 0x4094d3
mov eax, esi
xor ecx, ecx
mov dword [esp + 0x28], ebp
mov ebx, dword [esp + 0x7c]
sub eax, ebp
mov dword [esp + 0x48], esi
mov ebp, edi
mov esi, ecx
mov dword [esp + 0x3c], 0xffffffff
mov edi, eax
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
jmp 0x409234
mov dword [esp + 0x34], 1
add ebx, 0x10
mov ebp, dword [ebx]
add esi, 1
test ebp, ebp
je 0x409280
mov eax, dword [esp + 0x28]
mov dword [esp + 8], edi
mov dword [esp], ebp
mov dword [esp + 4], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x409228
mov dword [esp], ebp
call sub.msvcrt.dll_strlen
cmp eax, edi
je 0x409442
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x409220
mov dword [esp + 0x30], ebx
add ebx, 0x10
mov ebp, dword [ebx]
mov dword [esp + 0x3c], esi
add esi, 1
test ebp, ebp
jne 0x409234
lea esi, [esi]
nop
mov eax, dword [esp + 0x34]
mov ebp, dword [esp + 0x28]
mov esi, dword [esp + 0x48]
test eax, eax
jne 0x4095d0
mov ebx, dword [esp + 0x30]
test ebx, ebx
je 0x4094d3
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x28], eax
jmp 0x40944e
cmp eax, edx
je 0x409105
mov dword [0x41b14c], eax
mov edx, eax
jmp 0x409105
mov eax, edx
jmp 0x409144
mov dword [0x41b154], 0
add dword [esp + 0x78], 1
jmp 0x408ea8
mov eax, dword [esp + 0x78]
lea esi, [esi]
nop
cmp byte [esp + 0x2c], 0x3a
sete dl
test eax, eax
sete cl
or edx, ecx
cmp byte [ebp + 1], 0
jne 0x40930c
add dword [0x413100], 1
test dl, dl
jne 0x408f64
cmp byte [eax], 0x57
movzx edx, byte [eax + 1]
je 0x409360
cmp dl, 0x3a
jne 0x409094
cmp byte [eax + 2], 0x3a
movzx edx, byte [ebp + 1]
je 0x40958f
mov eax, dword [0x413100]
test dl, dl
je 0x409663
add eax, 1
mov dword [0x41b144], edi
mov dword [0x413100], eax
mov dword [0x41b158], 0
jmp 0x409094
cmp dl, 0x3b
jne 0x40931d
cmp byte [ebp + 1], 0
mov eax, dword [0x413100]
je 0x409736
add eax, 1
mov dword [0x41b144], edi
mov dword [0x413100], eax
movzx ebx, byte [edi]
mov dword [0x41b158], edi
mov ebp, edi
test bl, bl
jne 0x40939e
jmp 0x4093a3
add ebp, 1
movzx ebx, byte [ebp]
test bl, bl
je 0x4093a3
cmp bl, 0x3d
jne 0x409393
mov eax, dword [esp + 0x7c]
mov esi, dword [eax]
test esi, esi
je 0x40997a
mov eax, ebp
xor ecx, ecx
mov byte [esp + 0x38], bl
mov ebx, dword [esp + 0x7c]
sub eax, edi
mov dword [esp + 0x3c], ebp
mov ebp, ecx
mov dword [esp + 0x28], edi
mov edi, esi
mov esi, eax
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
jmp 0x409408
mov dword [esp + 0x30], 1
add ebx, 0x10
mov edi, dword [ebx]
add ebp, 1
test edi, edi
je 0x4096b3
mov eax, dword [esp + 0x28]
mov dword [esp + 8], esi
mov dword [esp], edi
mov dword [esp + 4], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x4093f8
mov dword [esp], edi
call sub.msvcrt.dll_strlen
cmp eax, esi
je 0x409880
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x4093f0
mov dword [esp + 0x34], ebp
mov dword [esp + 0x2c], ebx
jmp 0x4093f8
mov ebp, dword [esp + 0x28]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x38]
mov edx, dword [ebx + 4]
add eax, 1
mov dword [0x413100], eax
cmp byte [esi], 0
jne 0x4094c0
cmp edx, 1
je 0x409687
mov dword [esp], ebp
call sub.msvcrt.dll_strlen
mov edi, dword [esp + 0x80]
add eax, ebp
mov dword [0x41b158], eax
test edi, edi
je 0x409492
mov eax, dword [esp + 0x80]
mov edi, dword [esp + 0x28]
mov dword [eax], edi
mov eax, dword [ebx + 8]
mov ebx, dword [ebx + 0xc]
test eax, eax
je 0x409094
mov dword [eax], ebx
xor ebx, ebx
jmp 0x409094
mov dword [0x41b14c], eax
mov edx, eax
jmp 0x409056
test edx, edx
je 0x4095ee
add esi, 1
mov dword [0x41b144], esi
jmp 0x40946b
mov esi, dword [esp + 0x84]
test esi, esi
je 0x4097d8
cmp byte [esp + 0x43], 0x2d
je 0x409914
mov eax, dword [esp + 0x78]
movzx eax, byte [eax]
test al, al
je 0x409522
movzx ecx, byte [esp + 0x2c]
cmp cl, al
je 0x409a54
mov eax, dword [esp + 0x78]
jmp 0x409518
cmp dl, cl
je 0x409799
add eax, 1
movzx edx, byte [eax]
test dl, dl
jne 0x409510
mov eax, dword [0x4130fc]
test eax, eax
je 0x409565
mov eax, dword [esp + 0x44]
mov dword [esp + 0x10], ebp
movsx eax, byte [eax]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x74]
mov eax, dword [eax]
mov dword [esp + 4], str._s:_unrecognized_option___c_s_n
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e00
mov eax, dword [0x413100]
mov dword [esp + 0x38], eax
mov dword [0x41b158], 0x415ff4
mov eax, dword [esp + 0x38]
mov ebx, 0x3f
mov dword [0x4130f8], 0
add eax, 1
mov dword [0x413100], eax
jmp 0x409094
test dl, dl
je 0x4097ac
mov dword [0x41b144], edi
add dword [0x413100], 1
jmp 0x40934f
lea edi, [ebp + 1]
movsx ebx, byte [esp + 0x2c]
mov dword [0x41b158], edi
jmp 0x408f30
mov ebx, 0xffffffff
jmp 0x409094
mov eax, dword [0x4130fc]
test eax, eax
jne 0x40975b
mov dword [esp], ebp
call sub.msvcrt.dll_strlen
add eax, ebp
mov dword [0x41b158], eax
jmp 0x40956f
mov eax, dword [0x4130fc]
test eax, eax
je 0x40946b
mov eax, dword [esp + 0x74]
mov edi, dword [esp + 0x38]
mov ecx, dword [ebx]
mov edx, dword [eax + edi*4]
mov eax, dword [eax]
cmp byte [edx + 1], 0x2d
je 0x409a2f
mov dword [esp + 0x10], ecx
movsx edx, byte [edx]
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 0xc], edx
add eax, 0x40
mov dword [esp + 4], str._s:_option___c_s_doesnt_allow_an_argument_n
mov dword [esp], eax
call fcn.00408e00
mov esi, dword [0x41b158]
mov dword [esp], esi
call sub.msvcrt.dll_strlen
add esi, eax
mov eax, dword [ebx + 0xc]
mov ebx, 0x3f
mov dword [0x41b158], esi
mov dword [0x4130f8], eax
jmp 0x409094
cmp dword [esp + 0x70], eax
je 0x409857
mov edi, dword [esp + 0x74]
lea edx, [eax + 1]
mov dword [0x413100], edx
mov eax, dword [edi + eax*4]
mov dword [0x41b144], eax
jmp 0x40934f
cmp eax, dword [esp + 0x70]
jge 0x4098a4
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x4c]
add eax, 2
mov dword [0x413100], eax
mov eax, dword [esp + 0x74]
mov eax, dword [eax + edi + 4]
mov dword [0x41b144], eax
jmp 0x40946b
mov eax, dword [esp + 0x30]
movzx ebx, byte [esp + 0x38]
mov ebp, dword [esp + 0x3c]
mov edi, dword [esp + 0x28]
test eax, eax
jne 0x4098df
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x40997a
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 4]
test bl, bl
je 0x409825
test eax, eax
je 0x40998e
add ebp, 1
mov dword [0x41b144], ebp
mov dword [esp], edi
call sub.msvcrt.dll_strlen
mov ebx, dword [esp + 0x80]
add eax, edi
mov dword [0x41b158], eax
test ebx, ebx
je 0x40971f
mov eax, dword [esp + 0x80]
mov edi, dword [esp + 0x34]
mov dword [eax], edi
mov edi, dword [esp + 0x2c]
mov eax, dword [edi + 8]
mov ebx, dword [edi + 0xc]
test eax, eax
jne 0x4094a0
jmp 0x409094
cmp dword [esp + 0x70], eax
je 0x409927
mov edi, dword [esp + 0x74]
lea edx, [eax + 1]
mov dword [0x413100], edx
mov edi, dword [edi + eax*4]
mov dword [0x41b144], edi
jmp 0x409382
mov eax, dword [esp + 0x44]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x74]
mov eax, dword [eax]
mov dword [esp + 4], str._s:_option___s_is_ambiguous_n
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e00
mov eax, dword [0x413100]
mov ebp, dword [0x41b158]
mov dword [esp + 0x38], eax
jmp 0x4095dd
lea edi, [ebp + 1]
movsx ebx, byte [esp + 0x2c]
mov dword [0x41b158], edi
jmp 0x408f3a
mov dword [0x41b144], 0
jmp 0x40934f
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 4], str._s:_invalid_option_____c_n
add eax, 0x40
mov dword [esp], eax
call fcn.00408e00
jmp 0x408fa2
mov ebx, dword [0x4130fc]
test ebx, ebx
je 0x409565
cmp byte [esp + 0x43], 0x2d
jne 0x40952b
mov eax, dword [esp + 0x74]
mov dword [esp + 0xc], ebp
mov eax, dword [eax]
mov dword [esp + 4], str._s:_unrecognized_option_____s_n
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e00
mov eax, dword [0x413100]
mov dword [esp + 0x38], eax
jmp 0x409565
cmp eax, 1
jne 0x4096f8
mov eax, dword [0x413100]
cmp eax, dword [esp + 0x70]
jge 0x409a6b
mov esi, dword [esp + 0x74]
lea edx, [eax + 1]
mov dword [0x413100], edx
mov eax, dword [esi + eax*4]
mov dword [0x41b144], eax
jmp 0x4096f8
mov ecx, dword [0x4130fc]
test ecx, ecx
jne 0x40994f
mov eax, dword [esp + 0x78]
mov dword [0x4130f8], ebx
xor ebx, ebx
cmp byte [eax], 0x3a
setne bl
lea ebx, [ebx + ebx*4 + 0x3a]
jmp 0x40934f
mov eax, ebp
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x7c]
movzx ebx, byte [esp + 0x38]
mov dword [esp + 0x2c], eax
jmp 0x4096d8
mov eax, dword [0x4130fc]
test eax, eax
jne 0x4099b5
mov dword [esp], ebp
call sub.msvcrt.dll_strlen
add eax, ebp
mov dword [0x41b158], eax
mov eax, dword [ebx + 0xc]
mov dword [0x4130f8], eax
mov eax, dword [esp + 0x78]
cmp byte [eax], 0x3a
jne 0x408fa8
mov ebx, 0x3a
jmp 0x409094
mov eax, dword [0x4130fc]
mov ebx, dword [0x413100]
test eax, eax
jne 0x4099f1
mov dword [esp], edi
add ebx, 1
call sub.msvcrt.dll_strlen
mov dword [0x413100], ebx
mov ebx, 0x3f
add eax, edi
mov dword [0x41b158], eax
jmp 0x409094
mov edx, dword [0x4130fc]
test edx, edx
jne 0x4097f1
jmp 0x409565
mov eax, dword [0x4130fc]
test eax, eax
jne 0x409aa1
mov eax, dword [esp + 0x78]
mov dword [0x4130f8], ebx
xor ebx, ebx
cmp byte [eax], 0x3a
setne bl
lea ebx, [ebx + ebx*4 + 0x3a]
jmp 0x409094
mov eax, dword [esp + 0x74]
mov dword [esp + 0xc], ebx
mov eax, dword [eax]
mov dword [esp + 4], str._s:_option_requires_an_argument_____c_n
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e00
jmp 0x409865
mov dword [0x41b158], 0
mov ebx, 0x57
jmp 0x409094
mov ebp, dword [0x4130fc]
test ebp, ebp
jne 0x409acc
mov dword [esp], edi
mov ebx, 0x3f
call sub.msvcrt.dll_strlen
add eax, edi
mov dword [0x41b158], eax
jmp 0x409094
mov eax, dword [esp + 0x74]
mov edi, dword [esp + 0x38]
mov eax, dword [eax + edi*4]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x74]
mov eax, dword [eax]
mov dword [esp + 4], str._s:_option___s_requires_an_argument_n
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e00
mov ebp, dword [0x41b158]
jmp 0x4098b1
mov eax, dword [esp + 0x74]
mov eax, dword [eax + ebx*4]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x74]
mov eax, dword [eax]
mov dword [esp + 4], str._s:_option___W__s_is_ambiguous_n
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e00
mov edi, dword [0x41b158]
mov ebx, dword [0x413100]
jmp 0x4098f2
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 0xc], ecx
add eax, 0x40
mov dword [esp + 4], str._s:_option_____s_doesnt_allow_an_argument_n
mov dword [esp], eax
call fcn.00408e00
jmp 0x40963b
lea edi, [ebp + 1]
movsx ebx, byte [esp + 0x2c]
mov eax, dword [esp + 0x78]
mov dword [0x41b158], edi
jmp 0x4092f0
mov esi, dword [0x4130fc]
test esi, esi
jne 0x409b03
mov ebx, dword [0x41b158]
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
add ebx, eax
mov eax, dword [esp + 0x78]
mov dword [0x41b158], ebx
cmp byte [eax], 0x3a
jne 0x408fa8
jmp 0x4098d5
mov eax, dword [esp + 0x74]
mov dword [esp + 0xc], ebx
mov eax, dword [eax]
mov dword [esp + 4], str._s:_option_requires_an_argument_____c_n
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e00
jmp 0x409934
mov eax, dword [esp + 0x2c]
mov eax, dword [eax]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x74]
mov eax, dword [eax]
mov dword [esp + 4], str._s:_option___W__s_doesnt_allow_an_argument_n
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e00
mov edi, dword [0x41b158]
jmp 0x40999c
mov edi, dword [esp + 0x74]
mov eax, dword [edi + eax*4 - 4]
mov dword [esp + 0xc], eax
mov eax, dword [edi]
mov dword [esp + 4], str._s:_option___s_requires_an_argument_n
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e00
jmp 0x409a79