Function at 0x471930
Capabilities:
Query environment variable

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov eax, dword [0x483044]
mov dword [0x4b23fc], 0
test eax, eax
jne 0x4719b0
mov dword [0x483044], 1
mov eax, 1
mov dword [esp], str.POSIXLY_CORRECT
mov dword [0x4b2400], eax
mov dword [0x4b2404], eax
mov dword [0x4b2410], 0
call sub.msvcrt.dll_getenv
mov edi, dword [esp + 0x78]
mov dword [0x4b2408], eax
movzx edx, byte [edi]
cmp dl, 0x2d
je 0x471b10
test eax, eax
sete al
movzx eax, al
cmp dl, 0x2b
jne 0x471b1a
add dword [esp + 0x78], 1
xor eax, eax
jmp 0x471b1a
mov edx, dword [0x4b23f8]
test edx, edx
je 0x471959
mov eax, dword [0x4b2410]
mov dword [esp + 0x28], eax
test eax, eax
je 0x471a70
movzx ecx, byte [eax]
test cl, cl
je 0x471a70
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x471ba8
mov eax, dword [esp + 0x74]
mov esi, dword [0x483044]
mov edx, dword [eax + esi*4]
movzx eax, byte [edx + 1]
mov byte [esp + 0x34], al
cmp al, 0x2d
je 0x471cb0
mov eax, dword [esp + 0x84]
test eax, eax
je 0x471ba8
cmp byte [edx + 2], 0
jne 0x471cb0
mov eax, dword [esp + 0x78]
movzx eax, byte [eax]
test al, al
je 0x471cb0
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 0x471a4f
movzx ebx, byte [edi + 1]
add edi, 1
test bl, bl
je 0x471cb0
cmp bl, al
jne 0x471a40
mov eax, ebp
mov esi, dword [esp + 0x28]
lea edi, [esi + 1]
movzx ebx, byte [esi + 1]
mov dword [0x4b2410], edi
jmp 0x471bc8
mov esi, dword [0x483044]
cmp dword [0x4b2400], esi
jle 0x471a84
mov dword [0x4b2400], esi
cmp esi, dword [0x4b2404]
jge 0x471a92
mov dword [0x4b2404], esi
mov ebx, dword [0x4b240c]
cmp ebx, 1
je 0x471b30
cmp dword [esp + 0x70], esi
je 0x471b50
mov eax, dword [esp + 0x74]
mov edx, dword [eax + esi*4]
cmp byte [edx], 0x2d
jne 0x471b78
cmp byte [edx + 1], 0x2d
jne 0x471b78
cmp byte [edx + 2], 0
jne 0x471b78
mov eax, dword [0x4b2404]
mov edx, dword [0x4b2400]
add esi, 1
mov dword [0x483044], esi
cmp eax, edx
je 0x472070
cmp esi, edx
je 0x471afd
mov eax, dword [esp + 0x74]
call fcn.00471810
mov eax, dword [0x4b2404]
mov edi, dword [esp + 0x70]
mov dword [0x4b2400], edi
mov dword [0x483044], edi
jmp 0x471b5f
add dword [esp + 0x78], 1
mov eax, 2
mov dword [0x4b240c], eax
mov dword [0x4b23f8], 1
jmp 0x4719ba
mov eax, dword [0x4b2400]
cmp dword [0x4b2404], eax
je 0x471db8
cmp esi, eax
jne 0x471dd0
mov eax, esi
jmp 0x471dde
mov edi, dword [0x4b2400]
mov eax, dword [0x4b2404]
mov dword [esp + 0x70], edi
cmp eax, dword [esp + 0x70]
je 0x471b6a
mov dword [0x483044], eax
mov ebx, 0xffffffff
jmp 0x471b99
cmp byte [edx], 0x2d
je 0x471c60
test ebx, ebx
je 0x471b6a
add esi, 1
mov dword [0x4b23fc], edx
mov ebx, 1
mov dword [0x483044], 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 [0x4b2410], edi
test al, al
je 0x471e30
mov edx, dword [esp + 0x78]
jmp 0x471bdf
movzx eax, byte [edx + 1]
add edx, 1
test al, al
je 0x471e30
cmp al, cl
jne 0x471bd0
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 0x471c01
add dword [0x483044], 1
test al, al
jne 0x471e3b
cmp byte [edx], 0x57
movzx eax, byte [edx + 1]
je 0x471e90
movsx ebx, cl
cmp al, 0x3a
jne 0x471b99
mov eax, dword [esp + 0x28]
cmp byte [edx + 2], 0x3a
movzx eax, byte [eax + 1]
je 0x472048
mov edx, dword [0x483044]
test al, al
je 0x47214e
add edx, 1
mov dword [0x4b23fc], edi
mov dword [0x483044], edx
mov dword [0x4b2410], 0
jmp 0x471b99
movzx eax, byte [edx + 1]
mov byte [esp + 0x34], al
test al, al
je 0x471b81
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x4720c0
cmp byte [esp + 0x34], 0x2d
je 0x471c99
lea eax, [edx + 1]
movzx ecx, byte [esp + 0x34]
mov dword [esp + 0x28], eax
mov dword [0x4b2410], eax
jmp 0x4719ff
lea eax, [edx + 2]
movzx ecx, byte [edx + 2]
mov dword [esp + 0x28], eax
mov dword [0x4b2410], eax
lea esi, [esi]
mov eax, dword [esp + 0x28]
test cl, cl
je 0x471cd0
cmp cl, 0x3d
je 0x471cd0
lea esi, [esi]
movzx ebx, byte [eax + 1]
add eax, 1
test bl, bl
je 0x471cd0
cmp bl, 0x3d
jne 0x471cc0
mov edi, dword [esp + 0x7c]
mov ebx, dword [edi]
test ebx, ebx
je 0x471ff8
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 0x471d35
mov dword [esp + 0x30], 1
mov ebx, dword [ebp + 0x10]
add ebp, 0x10
add edi, 1
test ebx, ebx
je 0x471d80
mov eax, dword [esp + 0x28]
mov dword [esp + 8], esi
mov dword [esp], ebx
mov dword [esp + 4], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x471d28
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
cmp eax, esi
je 0x471f80
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x471d20
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 0x471d35
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 0x472080
mov ebp, dword [esp + 0x2c]
test ebp, ebp
je 0x471ff8
mov edi, dword [esp + 0x38]
jmp 0x471f88
cmp esi, eax
je 0x471b49
mov dword [0x4b2404], esi
mov eax, esi
jmp 0x471dde
mov eax, dword [esp + 0x74]
call fcn.00471810
mov eax, dword [0x483044]
cmp dword [esp + 0x70], eax
jle 0x471e28
mov esi, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
jmp 0x471dfc
add eax, 1
mov dword [0x483044], eax
cmp eax, esi
je 0x471e28
mov edx, dword [ecx + eax*4]
cmp byte [edx], 0x2d
jne 0x471df0
cmp byte [edx + 1], 0
je 0x471df0
mov esi, dword [0x483044]
mov dword [0x4b2400], eax
cmp dword [esp + 0x70], esi
jne 0x471aab
jmp 0x471b50
mov esi, eax
jmp 0x471e10
test bl, bl
jne 0x471e3b
add dword [0x483044], 1
mov eax, dword [0x483040]
movsx ebx, cl
test eax, eax
je 0x471e7f
mov eax, dword [esp + 0x74]
mov esi, dword [eax]
mov eax, dword [0x4b2408]
mov dword [esp], 2
test eax, eax
je 0x472285
call dword [0x483230]
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 fcn.00471900
mov dword [0x48303c], ebx
mov ebx, 0x3f
jmp 0x471b99
cmp al, 0x3b
jne 0x471c16
mov esi, dword [esp + 0x28]
mov eax, dword [0x483044]
cmp byte [esi + 1], 0
je 0x472218
add eax, 1
mov dword [0x4b23fc], edi
mov dword [0x483044], eax
movzx eax, byte [edi]
mov dword [0x4b2410], edi
mov ebp, edi
test al, al
jne 0x471edb
jmp 0x471edf
movzx eax, byte [ebp + 1]
add ebp, 1
test al, al
je 0x471edf
cmp al, 0x3d
jne 0x471ed0
mov ecx, dword [esp + 0x7c]
mov esi, dword [ecx]
test esi, esi
je 0x4724a2
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 0x471f41
mov dword [esp + 0x30], 1
mov edi, dword [ebp + 0x10]
add ebp, 0x10
add ebx, 1
test edi, edi
je 0x472195
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 0x471f30
mov dword [esp], edi
call sub.msvcrt.dll_strlen
cmp eax, esi
je 0x47236c
mov edi, dword [esp + 0x2c]
test edi, edi
jne 0x471f28
mov dword [esp + 0x34], ebx
mov dword [esp + 0x2c], ebp
jmp 0x471f30
mov esi, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
lea ebx, [esi + 1]
mov edx, dword [ebp + 4]
mov dword [0x483044], ebx
cmp byte [eax], 0
jne 0x471fe0
cmp edx, 1
je 0x472171
mov esi, dword [esp + 0x28]
mov dword [esp], esi
call sub.msvcrt.dll_strlen
add eax, esi
mov esi, dword [esp + 0x80]
mov dword [0x4b2410], eax
test esi, esi
je 0x471fc9
mov eax, dword [esp + 0x80]
mov dword [eax], edi
mov eax, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
test eax, eax
je 0x471b99
mov dword [eax], ebx
xor ebx, ebx
jmp 0x471b99
test edx, edx
je 0x4720d8
add eax, 1
mov dword [0x4b23fc], eax
jmp 0x471fa2
mov ebx, dword [esp + 0x84]
test ebx, ebx
je 0x4722a8
cmp byte [esp + 0x34], 0x2d
je 0x4723f3
mov eax, dword [esp + 0x78]
movzx eax, byte [eax]
test al, al
je 0x472434
mov ebx, dword [esp + 0x78]
mov edi, ebx
mov ebx, eax
mov esi, edi
jmp 0x47203f
movzx ebx, byte [esi + 1]
add esi, 1
test bl, bl
je 0x472434
cmp bl, cl
jne 0x472030
jmp 0x471a55
test al, al
je 0x47227e
add dword [0x483044], 1
mov dword [0x4b23fc], edi
mov dword [0x4b2410], 0
jmp 0x471b99
mov dword [0x4b2404], esi
mov eax, esi
jmp 0x471afd
mov eax, dword [0x483040]
test eax, eax
jne 0x47223d
mov edi, dword [esp + 0x28]
mov dword [esp], edi
call sub.msvcrt.dll_strlen
add dword [0x483044], 1
mov dword [0x48303c], 0
add eax, edi
mov dword [0x4b2410], eax
jmp 0x471e85
lea eax, [edx + 1]
movzx ecx, byte [esp + 0x34]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x78]
movzx eax, byte [eax]
jmp 0x471baf
mov eax, dword [0x483040]
test eax, eax
je 0x471fa2
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 0x4724d8
movsx edi, byte [eax]
mov dword [esp], 2
call dword [0x483230]
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 fcn.00471900
mov ebx, dword [0x4b2410]
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
add ebx, eax
mov eax, dword [ebp + 0xc]
mov dword [0x4b2410], ebx
mov dword [0x48303c], eax
jmp 0x471e85
cmp dword [esp + 0x70], edx
je 0x472344
lea eax, [edx + 1]
mov dword [0x483044], eax
mov eax, dword [esp + 0x74]
mov eax, dword [eax + edx*4]
mov dword [0x4b23fc], eax
jmp 0x471c50
cmp ebx, dword [esp + 0x70]
jge 0x47238a
mov eax, dword [esp + 0x74]
add esi, 2
mov dword [0x483044], esi
mov eax, dword [eax + ebx*4]
mov dword [0x4b23fc], eax
jmp 0x471fa2
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 0x4723ca
test edx, edx
je 0x4724a2
mov ecx, dword [edx + 4]
test al, al
je 0x472312
test ecx, ecx
je 0x4724b6
add ebp, 1
mov dword [0x4b23fc], ebp
mov dword [esp], edi
mov dword [esp + 0x28], edx
call sub.msvcrt.dll_strlen
mov edx, dword [esp + 0x80]
add eax, edi
test edx, edx
mov dword [0x4b2410], eax
mov edx, dword [esp + 0x28]
je 0x472205
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 0x471fd7
jmp 0x471b99
cmp dword [esp + 0x70], eax
je 0x472446
mov ecx, dword [esp + 0x74]
lea edx, [eax + 1]
mov dword [0x483044], edx
mov edi, dword [ecx + eax*4]
mov dword [0x4b23fc], edi
jmp 0x471eb9
mov eax, dword [esp + 0x74]
mov dword [esp + 0x28], edx
mov ebx, dword [eax]
mov dword [esp], 2
call dword [0x483230]
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 fcn.00471900
mov eax, dword [0x4b2410]
mov dword [esp + 0x28], eax
jmp 0x47208d
xor edi, edi
jmp 0x472057
call dword [0x483230]
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 fcn.00471900
jmp 0x471e7f
mov eax, dword [0x483040]
test eax, eax
je 0x4722f2
cmp byte [esp + 0x34], 0x2d
je 0x472400
mov eax, dword [esp + 0x74]
movsx esi, byte [edx]
mov ebx, dword [eax]
mov dword [esp], 2
call dword [0x483230]
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 fcn.00471900
add dword [0x483044], 1
mov dword [0x4b2410], 0x495f18
mov dword [0x48303c], 0
jmp 0x471e85
cmp ecx, 1
jne 0x4721d6
mov eax, dword [0x483044]
cmp eax, dword [esp + 0x70]
jge 0x4725ac
lea ecx, [eax + 1]
mov dword [0x483044], ecx
mov ecx, dword [esp + 0x74]
mov eax, dword [ecx + eax*4]
mov dword [0x4b23fc], eax
jmp 0x4721d6
mov eax, dword [0x483040]
test eax, eax
jne 0x472472
mov eax, dword [esp + 0x78]
mov dword [0x48303c], ebx
xor ebx, ebx
cmp byte [eax], 0x3a
setne bl
lea ebx, [ebx + ebx*4 + 0x3a]
jmp 0x471c50
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 0x4721ba
mov edi, dword [0x483040]
test edi, edi
jne 0x472540
mov edi, dword [esp + 0x28]
mov dword [esp], edi
call sub.msvcrt.dll_strlen
add eax, edi
mov dword [0x4b2410], eax
mov eax, dword [ebp + 0xc]
mov dword [0x48303c], eax
mov eax, dword [esp + 0x78]
cmp byte [eax], 0x3a
jne 0x471e85
mov ebx, 0x3a
jmp 0x471b99
mov esi, dword [0x483040]
test esi, esi
jne 0x472502
mov dword [esp], edi
call sub.msvcrt.dll_strlen
add dword [0x483044], 1
add eax, edi
mov dword [0x4b2410], eax
jmp 0x471e85
mov eax, dword [0x483040]
test eax, eax
je 0x4722f2
mov eax, dword [esp + 0x74]
mov ebx, dword [eax]
mov dword [esp], 2
call dword [0x483230]
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 fcn.00471900
jmp 0x4722f2
mov eax, dword [0x483040]
test eax, eax
jne 0x4722bc
jmp 0x4722f2
mov ebp, dword [0x483040]
movsx ebx, cl
test ebp, ebp
jne 0x47257c
mov eax, dword [esp + 0x78]
mov dword [0x48303c], ebx
xor ebx, ebx
cmp byte [eax], 0x3a
setne bl
lea ebx, [ebx + ebx*4 + 0x3a]
jmp 0x471b99
mov eax, dword [esp + 0x74]
mov esi, dword [eax]
mov dword [esp], 2
call dword [0x483230]
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 fcn.00471900
jmp 0x472351
mov dword [0x4b2410], 0
mov ebx, 0x57
jmp 0x471b99
mov ebx, dword [0x483040]
test ebx, ebx
jne 0x4725de
mov dword [esp], edi
call sub.msvcrt.dll_strlen
add eax, edi
mov dword [0x4b2410], eax
jmp 0x471e85
mov dword [esp], 2
call dword [0x483230]
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 fcn.00471900
jmp 0x47212b
mov ecx, dword [esp + 0x74]
mov eax, dword [0x483044]
mov ebx, dword [ecx]
mov esi, dword [ecx + eax*4]
mov dword [esp], 2
call dword [0x483230]
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 fcn.00471900
mov edi, dword [0x4b2410]
jmp 0x4723d8
mov eax, dword [esp + 0x74]
mov esi, dword [eax + esi*4]
mov ebx, dword [eax]
mov dword [esp], 2
call dword [0x483230]
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 fcn.00471900
mov eax, dword [0x4b2410]
mov dword [esp + 0x28], eax
jmp 0x472398
mov eax, dword [esp + 0x74]
mov esi, dword [eax]
mov dword [esp], 2
call dword [0x483230]
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 fcn.00471900
jmp 0x472457
mov ecx, dword [0x483040]
test ecx, ecx
jne 0x472616
mov ebx, dword [0x4b2410]
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
add ebx, eax
mov eax, dword [esp + 0x78]
mov dword [0x4b2410], ebx
cmp byte [eax], 0x3a
jne 0x471e85
jmp 0x4723c0
mov eax, dword [esp + 0x74]
mov esi, dword [edx]
mov ebx, dword [eax]
mov dword [esp], 2
call dword [0x483230]
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 fcn.00471900
mov edi, dword [0x4b2410]
jmp 0x4724c4
mov ecx, dword [esp + 0x74]
mov esi, dword [ecx + eax*4 - 4]
mov ebx, dword [ecx]
mov dword [esp], 2
call dword [0x483230]
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 fcn.00471900
jmp 0x4725b6