Function at 0x42ca20
Capabilities:
Query environment variable

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov edx, dword [0x478680]
mov dword [0x478684], 0
test edx, edx
je 0x42cba8
mov eax, dword [0x459020]
test eax, eax
je 0x42cba8
mov eax, dword [0x478698]
mov dword [esp + 0x28], eax
test eax, eax
je 0x42cb00
movzx ecx, byte [eax]
test cl, cl
je 0x42cb00
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x42ccb0
mov eax, dword [esp + 0x74]
mov esi, dword [0x459020]
mov edx, dword [eax + esi*4]
movzx eax, byte [edx + 1]
mov byte [esp + 0x34], al
cmp al, 0x2d
je 0x42cdc0
mov eax, dword [esp + 0x84]
test eax, eax
je 0x42ccb0
cmp byte [edx + 2], 0
jne 0x42cdc0
mov eax, dword [esp + 0x78]
movzx eax, byte [eax]
test al, al
je 0x42cdc0
mov ebx, dword [esp + 0x78]
mov ebp, eax
mov dword [esp + 0x2c], ebx
mov ebx, eax
mov edi, dword [esp + 0x2c]
movzx eax, byte [esp + 0x34]
jmp 0x42cadf
movzx ebx, byte [edi + 1]
add edi, 1
test bl, bl
je 0x42cdc0
cmp bl, al
jne 0x42cad0
mov eax, ebp
mov esi, dword [esp + 0x28]
lea edi, [esi + 1]
movzx ebx, byte [esi + 1]
mov dword [0x478698], edi
jmp 0x42ccd0
mov esi, dword [0x459020]
cmp dword [0x478688], esi
jle 0x42cb14
mov dword [0x478688], esi
cmp esi, dword [0x47868c]
jge 0x42cb22
mov dword [0x47868c], esi
mov ebx, dword [0x478694]
cmp ebx, 1
je 0x42cc58
cmp dword [esp + 0x70], esi
je 0x42cc30
mov eax, dword [esp + 0x74]
mov edx, dword [eax + esi*4]
cmp byte [edx], 0x2d
jne 0x42cc80
cmp byte [edx + 1], 0x2d
jne 0x42cc80
cmp byte [edx + 2], 0
jne 0x42cc80
mov eax, dword [0x47868c]
mov edx, dword [0x478688]
add esi, 1
mov dword [0x459020], esi
cmp eax, edx
je 0x42d180
cmp esi, edx
je 0x42cb8d
mov eax, dword [esp + 0x74]
call sym._exchange
mov eax, dword [0x47868c]
mov edi, dword [esp + 0x70]
mov dword [0x478688], edi
mov dword [0x459020], edi
jmp 0x42cc3f
mov dword [esp], str.POSIXLY_CORRECT
mov dword [0x459020], 1
mov dword [0x478688], 1
mov dword [0x47868c], 1
mov dword [0x478698], 0
call sym._getenv
mov edi, dword [esp + 0x78]
mov dword [0x478690], eax
movzx edx, byte [edi]
cmp dl, 0x2d
je 0x42cc08
test eax, eax
sete al
movzx eax, al
cmp dl, 0x2b
jne 0x42cc12
add dword [esp + 0x78], 1
xor eax, eax
jmp 0x42cc12
add dword [esp + 0x78], 1
mov eax, 2
mov dword [0x478694], eax
mov dword [0x459020], 1
mov dword [0x478680], 1
jmp 0x42ca4c
mov edi, dword [0x478688]
mov eax, dword [0x47868c]
mov dword [esp + 0x70], edi
cmp eax, dword [esp + 0x70]
je 0x42cc4a
mov dword [0x459020], eax
mov ebx, 0xffffffff
jmp 0x42cca1
mov eax, dword [0x478688]
cmp dword [0x47868c], eax
je 0x42cec8
cmp esi, eax
jne 0x42cee0
mov eax, esi
jmp 0x42ceee
cmp byte [edx], 0x2d
je 0x42cd70
test ebx, ebx
je 0x42cc4a
add esi, 1
mov dword [0x478684], edx
mov ebx, 1
mov dword [0x459020], esi
add esp, 0x5c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x78]
movzx eax, byte [eax]
mov esi, dword [esp + 0x28]
lea edi, [esi + 1]
movzx ebx, byte [esi + 1]
mov dword [0x478698], edi
test al, al
je 0x42cf40
mov edx, dword [esp + 0x78]
jmp 0x42ccef
movzx eax, byte [edx + 1]
add edx, 1
test al, al
je 0x42cf40
cmp al, cl
jne 0x42cce0
test edx, edx
sete al
cmp cl, 0x3a
mov ebp, eax
sete al
mov esi, eax
mov eax, ebp
or eax, esi
test bl, bl
jne 0x42cd11
add dword [0x459020], 1
test al, al
jne 0x42cf4b
cmp byte [edx], 0x57
movzx eax, byte [edx + 1]
je 0x42cfa0
movsx ebx, cl
cmp al, 0x3a
jne 0x42cca1
mov eax, dword [esp + 0x28]
cmp byte [edx + 2], 0x3a
movzx eax, byte [eax + 1]
je 0x42d158
mov edx, dword [0x459020]
test al, al
je 0x42d1e8
add edx, 1
mov dword [0x478684], edi
mov dword [0x459020], edx
mov dword [0x478698], 0
jmp 0x42cca1
movzx eax, byte [edx + 1]
mov byte [esp + 0x34], al
test al, al
je 0x42cc89
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x42d1d0
cmp byte [esp + 0x34], 0x2d
je 0x42cda9
lea eax, [edx + 1]
movzx ecx, byte [esp + 0x34]
mov dword [esp + 0x28], eax
mov dword [0x478698], eax
jmp 0x42ca91
lea eax, [edx + 2]
movzx ecx, byte [edx + 2]
mov dword [esp + 0x28], eax
mov dword [0x478698], eax
lea esi, [esi]
mov eax, dword [esp + 0x28]
test cl, cl
je 0x42cde0
cmp cl, 0x3d
je 0x42cde0
lea esi, [esi]
movzx ebx, byte [eax + 1]
add eax, 1
test bl, bl
je 0x42cde0
cmp bl, 0x3d
jne 0x42cdd0
mov edi, dword [esp + 0x7c]
mov ebx, dword [edi]
test ebx, ebx
je 0x42d108
mov ebp, dword [esp + 0x28]
mov edi, eax
mov dword [esp + 0x40], esi
mov dword [esp + 0x38], 0xffffffff
sub edi, ebp
mov dword [esp + 0x30], 0
mov ebp, dword [esp + 0x7c]
mov dword [esp + 0x3c], edi
xor edi, edi
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x2c], 0
mov byte [esp + 0x4b], cl
mov dword [esp + 0x4c], edx
mov dword [esp + 0x44], eax
jmp 0x42ce45
mov dword [esp + 0x30], 1
mov ebx, dword [ebp + 0x10]
add ebp, 0x10
add edi, 1
test ebx, ebx
je 0x42ce90
mov eax, dword [esp + 0x28]
mov dword [esp + 8], esi
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._strncmp
test eax, eax
jne 0x42ce38
mov dword [esp], ebx
call sym._strlen
cmp eax, esi
je 0x42d090
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x42ce30
mov dword [esp + 0x2c], ebp
mov ebx, dword [ebp + 0x10]
add ebp, 0x10
mov dword [esp + 0x38], edi
add edi, 1
test ebx, ebx
jne 0x42ce45
lea esi, [esi]
mov ebx, dword [esp + 0x30]
movzx ecx, byte [esp + 0x4b]
mov esi, dword [esp + 0x40]
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x44]
test ebx, ebx
jne 0x42d190
mov ebp, dword [esp + 0x2c]
test ebp, ebp
je 0x42d108
mov edi, dword [esp + 0x38]
jmp 0x42d098
cmp esi, eax
je 0x42cc71
mov dword [0x47868c], esi
mov eax, esi
jmp 0x42ceee
mov eax, dword [esp + 0x74]
call sym._exchange
mov eax, dword [0x459020]
cmp dword [esp + 0x70], eax
jle 0x42cf38
mov esi, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
jmp 0x42cf0c
add eax, 1
mov dword [0x459020], eax
cmp eax, esi
je 0x42cf38
mov edx, dword [ecx + eax*4]
cmp byte [edx], 0x2d
jne 0x42cf00
cmp byte [edx + 1], 0
je 0x42cf00
mov esi, dword [0x459020]
mov dword [0x478688], eax
cmp dword [esp + 0x70], esi
jne 0x42cb3b
jmp 0x42cc30
mov esi, eax
jmp 0x42cf20
test bl, bl
jne 0x42cf4b
add dword [0x459020], 1
mov eax, dword [0x45901c]
movsx ebx, cl
test eax, eax
je 0x42cf8f
mov eax, dword [esp + 0x74]
mov esi, dword [eax]
mov eax, dword [0x478690]
mov dword [esp], 2
test eax, eax
je 0x42d397
call dword [0x459154]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], esi
mov dword [esp + 4], str._s:_illegal_option_____c_n
mov dword [esp], eax
call sym._fprintf_5
mov dword [0x459018], ebx
mov ebx, 0x3f
jmp 0x42cca1
cmp al, 0x3b
jne 0x42cd26
mov esi, dword [esp + 0x28]
mov eax, dword [0x459020]
cmp byte [esi + 1], 0
je 0x42d2b2
add eax, 1
mov dword [0x478684], edi
mov dword [0x459020], eax
movzx eax, byte [edi]
mov dword [0x478698], edi
mov ebp, edi
test al, al
jne 0x42cfeb
jmp 0x42cfef
movzx eax, byte [ebp + 1]
add ebp, 1
test al, al
je 0x42cfef
cmp al, 0x3d
jne 0x42cfe0
mov ecx, dword [esp + 0x7c]
mov esi, dword [ecx]
test esi, esi
je 0x42d5b4
mov ecx, ebp
xor edx, edx
mov dword [esp + 0x28], edi
xor ebx, ebx
sub ecx, edi
mov dword [esp + 0x40], ebp
mov edi, esi
mov ebp, dword [esp + 0x7c]
mov dword [esp + 0x38], ecx
xor ecx, ecx
mov esi, dword [esp + 0x38]
mov dword [esp + 0x34], 0
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], ecx
mov byte [esp + 0x3c], al
jmp 0x42d051
mov dword [esp + 0x30], 1
mov edi, dword [ebp + 0x10]
add ebp, 0x10
add ebx, 1
test edi, edi
je 0x42d22f
mov eax, dword [esp + 0x28]
mov dword [esp + 8], esi
mov dword [esp], edi
mov dword [esp + 4], eax
call sym._strncmp
test eax, eax
jne 0x42d040
mov dword [esp], edi
call sym._strlen
cmp eax, esi
je 0x42d47e
mov edi, dword [esp + 0x2c]
test edi, edi
jne 0x42d038
mov dword [esp + 0x34], ebx
mov dword [esp + 0x2c], ebp
jmp 0x42d040
mov esi, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
lea ebx, [esi + 1]
mov edx, dword [ebp + 4]
mov dword [0x459020], ebx
cmp byte [eax], 0
jne 0x42d0f0
cmp edx, 1
je 0x42d20b
mov esi, dword [esp + 0x28]
mov dword [esp], esi
call sym._strlen
add eax, esi
mov esi, dword [esp + 0x80]
mov dword [0x478698], eax
test esi, esi
je 0x42d0d9
mov eax, dword [esp + 0x80]
mov dword [eax], edi
mov eax, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
test eax, eax
je 0x42cca1
mov dword [eax], ebx
xor ebx, ebx
jmp 0x42cca1
test edx, edx
je 0x42d31f
add eax, 1
mov dword [0x478684], eax
jmp 0x42d0b2
mov ebx, dword [esp + 0x84]
test ebx, ebx
je 0x42d3ba
cmp byte [esp + 0x34], 0x2d
je 0x42d505
mov eax, dword [esp + 0x78]
movzx eax, byte [eax]
test al, al
je 0x42d546
mov ebx, dword [esp + 0x78]
mov edi, ebx
mov ebx, eax
mov esi, edi
jmp 0x42d14f
movzx ebx, byte [esi + 1]
add esi, 1
test bl, bl
je 0x42d546
cmp bl, cl
jne 0x42d140
jmp 0x42cae5
test al, al
je 0x42d318
add dword [0x459020], 1
mov dword [0x478684], edi
mov dword [0x478698], 0
jmp 0x42cca1
mov dword [0x47868c], esi
mov eax, esi
jmp 0x42cb8d
mov eax, dword [0x45901c]
test eax, eax
jne 0x42d2d7
mov edi, dword [esp + 0x28]
mov dword [esp], edi
call sym._strlen
add dword [0x459020], 1
mov dword [0x459018], 0
add eax, edi
mov dword [0x478698], eax
jmp 0x42cf95
lea eax, [edx + 1]
movzx ecx, byte [esp + 0x34]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x78]
movzx eax, byte [eax]
jmp 0x42ccb7
cmp dword [esp + 0x70], edx
je 0x42d456
lea eax, [edx + 1]
mov dword [0x459020], eax
mov eax, dword [esp + 0x74]
mov eax, dword [eax + edx*4]
mov dword [0x478684], eax
jmp 0x42cd60
cmp ebx, dword [esp + 0x70]
jge 0x42d49c
mov eax, dword [esp + 0x74]
add esi, 2
mov dword [0x459020], esi
mov eax, dword [eax + ebx*4]
mov dword [0x478684], eax
jmp 0x42d0b2
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
movzx eax, byte [esp + 0x3c]
mov ebp, dword [esp + 0x40]
test ecx, ecx
jne 0x42d4dc
test edx, edx
je 0x42d5b4
mov ecx, dword [edx + 4]
test al, al
je 0x42d424
test ecx, ecx
je 0x42d639
add ebp, 1
mov dword [0x478684], ebp
mov dword [esp], edi
mov dword [esp + 0x28], edx
call sym._strlen
mov edx, dword [esp + 0x80]
add eax, edi
test edx, edx
mov dword [0x478698], eax
mov edx, dword [esp + 0x28]
je 0x42d29f
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x34]
mov dword [eax], ecx
mov eax, dword [edx + 8]
mov ebx, dword [edx + 0xc]
test eax, eax
jne 0x42d0e7
jmp 0x42cca1
cmp dword [esp + 0x70], eax
je 0x42d558
mov ecx, dword [esp + 0x74]
lea edx, [eax + 1]
mov dword [0x459020], edx
mov edi, dword [ecx + eax*4]
mov dword [0x478684], edi
jmp 0x42cfc9
mov eax, dword [esp + 0x74]
mov dword [esp + 0x28], edx
mov ebx, dword [eax]
mov dword [esp], 2
call dword [0x459154]
mov edx, dword [esp + 0x28]
mov dword [esp + 4], str._s:_option___s_is_ambiguous_n
mov dword [esp + 8], ebx
mov dword [esp + 0xc], edx
mov dword [esp], eax
call sym._fprintf_5
mov eax, dword [0x478698]
mov dword [esp + 0x28], eax
jmp 0x42d19d
xor edi, edi
jmp 0x42d167
mov eax, dword [0x45901c]
test eax, eax
je 0x42d377
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x74]
mov eax, dword [eax + esi*4]
mov ebx, dword [ecx]
mov esi, dword [ebp]
cmp byte [eax + 1], 0x2d
je 0x42d606
movsx edi, byte [eax]
mov dword [esp], 2
call dword [0x459154]
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], edi
mov dword [esp + 8], ebx
mov dword [esp + 4], str._s:_option___c_s_doesnt_allow_an_argument_n
mov dword [esp], eax
call sym._fprintf_5
mov eax, dword [0x478698]
mov dword [esp + 0x28], eax
mov edi, dword [esp + 0x28]
mov dword [esp], edi
call sym._strlen
add eax, edi
mov dword [0x478698], eax
mov eax, dword [ebp + 0xc]
mov dword [0x459018], eax
jmp 0x42cf95
call dword [0x459154]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], esi
mov dword [esp + 4], str._s:_invalid_option_____c_n
mov dword [esp], eax
call sym._fprintf_5
jmp 0x42cf8f
mov eax, dword [0x45901c]
test eax, eax
je 0x42d404
cmp byte [esp + 0x34], 0x2d
je 0x42d512
mov eax, dword [esp + 0x74]
movsx esi, byte [edx]
mov ebx, dword [eax]
mov dword [esp], 2
call dword [0x459154]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0xc], esi
mov dword [esp + 8], ebx
mov dword [esp + 0x10], ecx
mov dword [esp + 4], str._s:_unrecognized_option___c_s_n
mov dword [esp], eax
call sym._fprintf_5
add dword [0x459020], 1
mov dword [0x478698], 0x463ffc
mov dword [0x459018], 0
jmp 0x42cf95
cmp ecx, 1
jne 0x42d270
mov eax, dword [0x459020]
cmp eax, dword [esp + 0x70]
jge 0x42d697
lea ecx, [eax + 1]
mov dword [0x459020], ecx
mov ecx, dword [esp + 0x74]
mov eax, dword [ecx + eax*4]
mov dword [0x478684], eax
jmp 0x42d270
mov eax, dword [0x45901c]
test eax, eax
jne 0x42d584
mov eax, dword [esp + 0x78]
mov dword [0x459018], ebx
xor ebx, ebx
cmp byte [eax], 0x3a
setne bl
lea ebx, [ebx + ebx*4 + 0x3a]
jmp 0x42cd60
mov edi, dword [esp + 0x28]
movzx eax, byte [esp + 0x3c]
mov dword [esp + 0x7c], ebp
mov ebp, dword [esp + 0x40]
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x34], ebx
jmp 0x42d254
mov edi, dword [0x45901c]
test edi, edi
jne 0x42d65b
mov edi, dword [esp + 0x28]
mov dword [esp], edi
call sym._strlen
add eax, edi
mov dword [0x478698], eax
mov eax, dword [ebp + 0xc]
mov dword [0x459018], eax
mov eax, dword [esp + 0x78]
cmp byte [eax], 0x3a
jne 0x42cf95
mov ebx, 0x3a
jmp 0x42cca1
mov esi, dword [0x45901c]
test esi, esi
jne 0x42d5c8
mov dword [esp], edi
call sym._strlen
add dword [0x459020], 1
add eax, edi
mov dword [0x478698], eax
jmp 0x42cf95
mov eax, dword [0x45901c]
test eax, eax
je 0x42d404
mov eax, dword [esp + 0x74]
mov ebx, dword [eax]
mov dword [esp], 2
call dword [0x459154]
mov ecx, dword [esp + 0x28]
mov dword [esp + 4], str._s:_unrecognized_option_____s_n
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ecx
mov dword [esp], eax
call sym._fprintf_5
jmp 0x42d404
mov eax, dword [0x45901c]
test eax, eax
jne 0x42d3ce
jmp 0x42d404
mov ebp, dword [0x45901c]
movsx ebx, cl
test ebp, ebp
jne 0x42d6cd
mov eax, dword [esp + 0x78]
mov dword [0x459018], ebx
xor ebx, ebx
cmp byte [eax], 0x3a
setne bl
lea ebx, [ebx + ebx*4 + 0x3a]
jmp 0x42cca1
mov eax, dword [esp + 0x74]
mov esi, dword [eax]
mov dword [esp], 2
call dword [0x459154]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], esi
mov dword [esp + 4], str._s:_option_requires_an_argument_____c_n
mov dword [esp], eax
call sym._fprintf_5
jmp 0x42d463
mov dword [0x478698], 0
mov ebx, 0x57
jmp 0x42cca1
mov ecx, dword [esp + 0x74]
mov eax, dword [0x459020]
mov ebx, dword [ecx]
mov esi, dword [ecx + eax*4]
mov dword [esp], 2
call dword [0x459154]
mov dword [esp + 4], str._s:_option___W__s_is_ambiguous_n
mov dword [esp + 0xc], esi
mov dword [esp + 8], ebx
mov dword [esp], eax
call sym._fprintf_5
mov edi, dword [0x478698]
jmp 0x42d4ea
mov dword [esp], 2
call dword [0x459154]
mov dword [esp + 0xc], esi
mov dword [esp + 8], ebx
mov dword [esp + 4], str._s:_option_____s_doesnt_allow_an_argument_n
mov dword [esp], eax
call sym._fprintf_5
mov eax, dword [0x478698]
mov dword [esp + 0x28], eax
jmp 0x42d377
mov ebx, dword [0x45901c]
test ebx, ebx
jne 0x42d6fd
mov dword [esp], edi
call sym._strlen
add eax, edi
mov dword [0x478698], eax
jmp 0x42cf95
mov eax, dword [esp + 0x74]
mov esi, dword [eax + esi*4]
mov ebx, dword [eax]
mov dword [esp], 2
call dword [0x459154]
mov dword [esp + 4], str._s:_option___s_requires_an_argument_n
mov dword [esp + 0xc], esi
mov dword [esp + 8], ebx
mov dword [esp], eax
call sym._fprintf_5
mov eax, dword [0x478698]
mov dword [esp + 0x28], eax
jmp 0x42d4aa
mov ecx, dword [0x45901c]
test ecx, ecx
jne 0x42d735
mov ebx, dword [0x478698]
mov dword [esp], ebx
call sym._strlen
add ebx, eax
mov eax, dword [esp + 0x78]
mov dword [0x478698], ebx
cmp byte [eax], 0x3a
jne 0x42cf95
jmp 0x42d4d2
mov eax, dword [esp + 0x74]
mov esi, dword [eax]
mov dword [esp], 2
call dword [0x459154]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], esi
mov dword [esp + 4], str._s:_option_requires_an_argument_____c_n
mov dword [esp], eax
call sym._fprintf_5
jmp 0x42d569
mov eax, dword [esp + 0x74]
mov esi, dword [edx]
mov ebx, dword [eax]
mov dword [esp], 2
call dword [0x459154]
mov dword [esp + 0xc], esi
mov dword [esp + 8], ebx
mov dword [esp + 4], str._s:_option___W__s_doesnt_allow_an_argument_n
mov dword [esp], eax
call sym._fprintf_5
mov edi, dword [0x478698]
jmp 0x42d647
mov ecx, dword [esp + 0x74]
mov esi, dword [ecx + eax*4 - 4]
mov ebx, dword [ecx]
mov dword [esp], 2
call dword [0x459154]
mov dword [esp + 4], str._s:_option___s_requires_an_argument_n
mov dword [esp + 0xc], esi
mov dword [esp + 8], ebx
mov dword [esp], eax
call sym._fprintf_5
jmp 0x42d6a5