Function at 0x1400d0443
Capabilities:
Query environment variable

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x78
xor eax, eax
cmp dword [0x1400ed298], 0
mov qword [0x1401f9178], rax
mov qword [rsp + 0xd8], r9
mov esi, ecx
mov r13, rdx
mov rbx, r8
je 0x1400d0480
cmp dword [0x1401f9170], 0
je 0x1400d048a
jmp 0x1400d04ee
mov dword [0x1400ed298], 1
mov eax, dword [0x1400ed298]
lea rcx, str.POSIXLY_CORRECT
mov dword [0x1401f9180], eax
mov dword [0x1401f9184], eax
xor eax, eax
mov qword [0x1401f9198], rax
call sub.msvcrt.dll_getenv
mov dl, byte [rbx]
mov qword [0x1401f9188], rax
cmp dl, 0x2d
jne 0x1400d04c9
inc rbx
mov eax, 2
jmp 0x1400d04de
cmp dl, 0x2b
jne 0x1400d04d5
inc rbx
xor eax, eax
jmp 0x1400d04de
test rax, rax
sete al
movzx eax, al
mov dword [0x1401f9190], eax
mov dword [0x1401f9170], 1
mov rax, qword [0x1401f9198]
test rax, rax
je 0x1400d0503
cmp byte [rax], 0
jne 0x1400d0658
mov eax, dword [0x1400ed298]
cmp dword [0x1401f9180], eax
jle 0x1400d0517
mov dword [0x1401f9180], eax
cmp eax, dword [0x1401f9184]
jge 0x1400d0525
mov dword [0x1401f9184], eax
mov ebp, dword [0x1401f9190]
cmp ebp, 1
jne 0x1400d0585
mov edx, dword [0x1401f9180]
cmp dword [0x1401f9184], edx
je 0x1400d054c
cmp eax, edx
je 0x1400d056d
mov rcx, r13
call fcn.1400d0360
jmp 0x1400d056d
cmp eax, edx
je 0x1400d056d
mov dword [0x1401f9184], eax
jmp 0x1400d056d
movsxd rdx, eax
mov rdx, qword [r13 + rdx*8]
cmp byte [rdx], 0x2d
je 0x1400d0579
inc eax
mov dword [0x1400ed298], eax
mov eax, dword [0x1400ed298]
cmp eax, esi
jl 0x1400d0558
jmp 0x1400d057f
cmp byte [rdx + 1], 0
je 0x1400d0565
mov dword [0x1401f9180], eax
mov edi, dword [0x1400ed298]
cmp edi, esi
je 0x1400d05dd
movsxd rax, edi
lea rdx, [0x1401dc0e0]
mov rcx, qword [r13 + rax*8]
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x1400d05dd
inc edi
mov eax, dword [0x1401f9180]
cmp dword [0x1401f9184], eax
mov dword [0x1400ed298], edi
je 0x1400d05cb
cmp edi, eax
je 0x1400d05d1
mov rcx, r13
call fcn.1400d0360
jmp 0x1400d05d1
mov dword [0x1401f9184], edi
mov dword [0x1401f9180], esi
mov dword [0x1400ed298], esi
mov eax, dword [0x1400ed298]
cmp eax, esi
jne 0x1400d0603
mov eax, dword [0x1401f9184]
cmp eax, dword [0x1401f9180]
je 0x1400d05fb
mov dword [0x1400ed298], eax
or eax, 0xffffffff
jmp 0x1400d0eae
movsxd rdx, eax
mov rdx, qword [r13 + rdx*8]
cmp byte [rdx], 0x2d
jne 0x1400d0617
mov cl, byte [rdx + 1]
test cl, cl
jne 0x1400d0634
test ebp, ebp
je 0x1400d05fb
inc eax
mov qword [0x1401f9178], rdx
mov dword [0x1400ed298], eax
mov eax, 1
jmp 0x1400d0eae
cmp cl, 0x2d
sete cl
xor eax, eax
cmp qword [rsp + 0xd8], 0
setne al
and eax, ecx
inc eax
cdqe
add rdx, rax
mov qword [0x1401f9198], rdx
cmp qword [rsp + 0xd8], 0
je 0x1400d0a20
movsxd rax, dword [0x1400ed298]
mov r14, qword [r13 + rax*8]
lea rdi, [rax*8]
mov dword [rsp + 0x38], eax
mov qword [rsp + 0x58], rdi
mov al, byte [r14 + 1]
mov byte [rsp + 0x30], al
cmp al, 0x2d
je 0x1400d06bd
cmp dword [rsp + 0xe8], 0
je 0x1400d0a20
cmp byte [r14 + 2], 0
mov rax, rbx
jne 0x1400d06bd
mov dl, byte [rax]
test dl, dl
je 0x1400d06bd
cmp byte [rsp + 0x30], dl
je 0x1400d0a20
inc rax
jmp 0x1400d06a8
mov rbp, qword [0x1401f9198]
mov r15, rbp
mov al, byte [r15]
test al, al
je 0x1400d06d7
cmp al, 0x3d
je 0x1400d06d7
inc r15
jmp 0x1400d06c7
xor eax, eax
xor edi, edi
mov r9, qword [rsp + 0xd8]
or r12d, 0xffffffff
mov dword [rsp + 0x48], eax
mov rax, r15
sub rax, rbp
mov dword [rsp + 0x40], edi
xor edi, edi
mov qword [rsp + 0x50], rax
mov rcx, qword [r9]
test rcx, rcx
je 0x1400d075e
mov r8, qword [rsp + 0x50]
mov rdx, rbp
mov qword [rsp + 0x60], r9
mov qword [rsp + 0x68], rcx
call sub.msvcrt.dll_strncmp
mov r9, qword [rsp + 0x60]
test eax, eax
jne 0x1400d0754
mov rcx, qword [rsp + 0x68]
call sub.msvcrt.dll_strlen
cmp dword [rsp + 0x50], eax
mov r9, qword [rsp + 0x60]
je 0x1400d07c2
test rdi, rdi
je 0x1400d074c
mov dword [rsp + 0x48], 1
jmp 0x1400d0754
mov r12d, dword [rsp + 0x40]
mov rdi, r9
inc dword [rsp + 0x40]
add r9, 0x20
jmp 0x1400d06fc
cmp dword [rsp + 0x48], 0
je 0x1400d07b7
cmp dword [0x1400ed294], 0
je 0x1400d0799
mov r8, qword [r13]
mov ecx, 2
mov qword [rsp + 0x30], r8
call qword [fcn.1400e7db0]
mov r8, qword [rsp + 0x30]
mov r9, r14
lea rdx, str._s:_option___s_is_ambiguous_n
mov rcx, rax
call fcn.1400d0421
mov rbx, qword [0x1401f9198]
mov rcx, rbx
call sub.msvcrt.dll_strlen
add rbx, rax
mov qword [0x1401f9198], rbx
jmp 0x1400d0a0b
test rdi, rdi
je 0x1400d0960
jmp 0x1400d07ca
mov r12d, dword [rsp + 0x40]
mov rdi, r9
mov eax, dword [rsp + 0x38]
mov edx, dword [rdi + 8]
inc eax
mov dword [0x1400ed298], eax
cmp byte [r15], 0
je 0x1400d0897
test edx, edx
je 0x1400d07f6
inc r15
mov qword [0x1401f9178], r15
jmp 0x1400d092c
cmp dword [0x1400ed294], 0
je 0x1400d092c
cmp byte [r14 + 1], 0x2d
mov rbx, qword [rdi]
mov r8, qword [r13]
mov rax, qword [fcn.1400e7db0]
jne 0x1400d083d
mov qword [rsp + 0x30], r8
mov ecx, 2
call rax
mov r8, qword [rsp + 0x30]
mov r9, rbx
lea rdx, str._s:_option_____s_doesnt_allow_an_argument_n
mov rcx, rax
call fcn.1400d0421
jmp 0x1400d0870
movsx r9d, byte [r14]
mov qword [rsp + 0x38], r8
mov ecx, 2
mov dword [rsp + 0x30], r9d
call rax
mov qword [rsp + 0x20], rbx
mov r9d, dword [rsp + 0x30]
lea rdx, str._s:_option___c_s_doesnt_allow_an_argument_n
mov r8, qword [rsp + 0x38]
mov rcx, rax
call fcn.1400d0421
mov rbx, qword [0x1401f9198]
mov rcx, rbx
call sub.msvcrt.dll_strlen
add rbx, rax
mov eax, dword [rdi + 0x18]
mov qword [0x1401f9198], rbx
mov dword [0x1400ed290], eax
jmp 0x1400d0b41
dec edx
jne 0x1400d092c
cmp eax, esi
jge 0x1400d08c3
mov eax, dword [rsp + 0x38]
add eax, 2
mov dword [0x1400ed298], eax
mov rax, qword [rsp + 0x58]
mov rax, qword [r13 + rax + 8]
mov qword [0x1401f9178], rax
jmp 0x1400d092c
cmp dword [0x1400ed294], 0
je 0x1400d08f7
mov r8, qword [r13]
mov ecx, 2
mov qword [rsp + 0x30], r8
call qword [fcn.1400e7db0]
mov r8, qword [rsp + 0x30]
mov r9, r14
lea rdx, str._s:_option___s_requires_an_argument_n
mov rcx, rax
call fcn.1400d0421
mov rsi, qword [0x1401f9198]
mov rcx, rsi
call sub.msvcrt.dll_strlen
add rsi, rax
mov eax, dword [rdi + 0x18]
mov qword [0x1401f9198], rsi
mov dword [0x1400ed290], eax
cmp byte [rbx], 0x3a
mov eax, 0x3a
jne 0x1400d0b41
jmp 0x1400d0eae
mov rcx, rbp
call sub.msvcrt.dll_strlen
add rax, rbp
cmp qword [rsp + 0xe0], 0
mov qword [0x1401f9198], rax
je 0x1400d0954
mov rax, qword [rsp + 0xe0]
mov dword [rax], r12d
mov rdx, qword [rdi + 0x10]
mov eax, dword [rdi + 0x18]
jmp 0x1400d0dce
cmp dword [rsp + 0xe8], 0
je 0x1400d098a
cmp byte [rsp + 0x30], 0x2d
je 0x1400d098a
mov cl, byte [rbp]
mov rax, rbx
mov dl, byte [rax]
test dl, dl
je 0x1400d098a
cmp cl, dl
je 0x1400d0a20
inc rax
jmp 0x1400d0977
cmp dword [0x1400ed294], 0
je 0x1400d09fd
cmp byte [rsp + 0x30], 0x2d
mov r8, qword [r13]
mov rax, qword [fcn.1400e7db0]
jne 0x1400d09ca
mov qword [rsp + 0x30], r8
mov ecx, 2
call rax
mov r8, qword [rsp + 0x30]
mov r9, rbp
lea rdx, str._s:_unrecognized_option_____s_n
mov rcx, rax
call fcn.1400d0421
jmp 0x1400d09fd
movsx r9d, byte [r14]
mov qword [rsp + 0x38], r8
mov ecx, 2
mov dword [rsp + 0x30], r9d
call rax
mov qword [rsp + 0x20], rbp
mov r9d, dword [rsp + 0x30]
lea rdx, str._s:_unrecognized_option___c_s_n
mov r8, qword [rsp + 0x38]
mov rcx, rax
call fcn.1400d0421
lea rax, [0x1401dc1c1]
mov qword [0x1401f9198], rax
xor r11d, r11d
inc dword [0x1400ed298]
mov dword [0x1400ed290], r11d
jmp 0x1400d0b41
mov rcx, qword [0x1401f9198]
mov rdx, rbx
lea r8, [rcx + 1]
movsx edi, byte [rcx]
mov qword [0x1401f9198], r8
mov eax, edi
movsx r9d, byte [rdx]
test r9b, r9b
je 0x1400d0a4d
cmp edi, r9d
je 0x1400d0a4f
inc rdx
jmp 0x1400d0a3a
xor edx, edx
cmp byte [rcx + 1], 0
jne 0x1400d0a5b
inc dword [0x1400ed298]
test rdx, rdx
je 0x1400d0a64
cmp al, 0x3a
jne 0x1400d0ac3
cmp dword [0x1400ed294], 0
je 0x1400d0abb
mov r8, qword [r13]
cmp qword [0x1401f9188], 0
mov ecx, 2
mov rax, qword [fcn.1400e7db0]
mov qword [rsp + 0x30], r8
je 0x1400d0aa2
call rax
mov r8, qword [rsp + 0x30]
mov r9d, edi
lea rdx, str._s:_illegal_option_____c_n
mov rcx, rax
jmp 0x1400d0ab6
call rax
mov r8, qword [rsp + 0x30]
mov r9d, edi
lea rdx, str._s:_invalid_option_____c_n
mov rcx, rax
call fcn.1400d0421
mov dword [0x1400ed290], edi
jmp 0x1400d0b41
cmp byte [rdx], 0x57
mov r9b, byte [rdx + 1]
jne 0x1400d0df4
cmp r9b, 0x3b
jne 0x1400d0df4
cmp byte [rcx + 1], 0
movsxd rax, dword [0x1400ed298]
je 0x1400d0af8
inc eax
mov qword [0x1401f9178], r8
mov dword [0x1400ed298], eax
jmp 0x1400d0b60
cmp esi, eax
jne 0x1400d0b4b
cmp dword [0x1400ed294], 0
je 0x1400d0b30
mov r8, qword [r13]
mov ecx, 2
mov qword [rsp + 0x30], r8
call qword [fcn.1400e7db0]
mov r8, qword [rsp + 0x30]
mov r9d, edi
lea rdx, str._s:_option_requires_an_argument_____c_n
mov rcx, rax
call fcn.1400d0421
mov dword [0x1400ed290], edi
movsx eax, byte [rbx]
cmp al, 0x3a
je 0x1400d0eae
mov eax, 0x3f
jmp 0x1400d0eae
lea edx, [rax + 1]
mov rax, qword [r13 + rax*8]
mov dword [0x1400ed298], edx
mov qword [0x1401f9178], rax
mov rdi, qword [0x1401f9178]
mov qword [0x1401f9198], rdi
mov rbp, rdi
mov r14b, byte [rbp]
test r14b, r14b
je 0x1400d0b85
cmp r14b, 0x3d
je 0x1400d0b85
inc rbp
jmp 0x1400d0b71
mov rax, rbp
xor r9d, r9d
xor r10d, r10d
xor r12d, r12d
sub rax, rdi
mov dword [rsp + 0x30], r9d
xor r15d, r15d
mov qword [rsp + 0x40], rax
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x38], r10d
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0xd8]
mov rcx, qword [rax]
test rcx, rcx
je 0x1400d0c15
mov r8, qword [rsp + 0x40]
mov rdx, rdi
mov qword [rsp + 0x50], rcx
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x1400d0c06
mov rcx, qword [rsp + 0x50]
call sub.msvcrt.dll_strlen
cmp qword [rsp + 0x48], rax
je 0x1400d0c87
test r15, r15
je 0x1400d0bf9
mov dword [rsp + 0x38], 1
jmp 0x1400d0c06
mov r12d, dword [rsp + 0x30]
mov r15, qword [rsp + 0xd8]
add qword [rsp + 0xd8], 0x20
inc dword [rsp + 0x30]
jmp 0x1400d0baf
cmp dword [rsp + 0x38], 0
je 0x1400d0c94
cmp dword [0x1400ed294], 0
je 0x1400d0c63
movsxd rax, dword [0x1400ed298]
mov r8, qword [r13]
mov ecx, 2
mov r9, qword [r13 + rax*8]
mov qword [rsp + 0x30], r8
mov qword [rsp + 0x38], r9
call qword [fcn.1400e7db0]
mov r9, qword [rsp + 0x38]
mov r8, qword [rsp + 0x30]
lea rdx, str._s:_option___W__s_is_ambiguous_n
mov rcx, rax
call fcn.1400d0421
mov rbx, qword [0x1401f9198]
mov rcx, rbx
call sub.msvcrt.dll_strlen
inc dword [0x1400ed298]
add rbx, rax
mov qword [0x1401f9198], rbx
jmp 0x1400d0b41
mov r12d, dword [rsp + 0x30]
mov r15, qword [rsp + 0xd8]
test r15, r15
je 0x1400d0de0
mov eax, dword [r15 + 8]
test r14b, r14b
je 0x1400d0d16
test eax, eax
je 0x1400d0cba
lea r11, [rbp + 1]
mov qword [0x1401f9178], r11
jmp 0x1400d0d9e
cmp dword [0x1400ed294], 0
je 0x1400d0cf8
mov r9, qword [r15]
mov r8, qword [r13]
mov ecx, 2
mov qword [rsp + 0x38], r9
mov qword [rsp + 0x30], r8
call qword [fcn.1400e7db0]
mov r9, qword [rsp + 0x38]
mov r8, qword [rsp + 0x30]
lea rdx, str._s:_option___W__s_doesnt_allow_an_argument_n
mov rcx, rax
call fcn.1400d0421
mov rbx, qword [0x1401f9198]
mov rcx, rbx
call sub.msvcrt.dll_strlen
add rbx, rax
mov qword [0x1401f9198], rbx
jmp 0x1400d0b41
dec eax
jne 0x1400d0d9e
movsxd rax, dword [0x1400ed298]
cmp eax, esi
jge 0x1400d0d40
lea edx, [rax + 1]
mov rax, qword [r13 + rax*8]
mov dword [0x1400ed298], edx
mov qword [0x1401f9178], rax
jmp 0x1400d0d9e
cmp dword [0x1400ed294], 0
je 0x1400d0d80
mov r9, qword [r13 + rax*8 - 8]
mov r8, qword [r13]
mov ecx, 2
mov qword [rsp + 0x38], r9
mov qword [rsp + 0x30], r8
call qword [fcn.1400e7db0]
mov r9, qword [rsp + 0x38]
mov r8, qword [rsp + 0x30]
lea rdx, str._s:_option___s_requires_an_argument_n
mov rcx, rax
call fcn.1400d0421
mov rsi, qword [0x1401f9198]
mov rcx, rsi
call sub.msvcrt.dll_strlen
add rsi, rax
mov qword [0x1401f9198], rsi
jmp 0x1400d0919
mov rcx, rdi
call sub.msvcrt.dll_strlen
add rdi, rax
cmp qword [rsp + 0xe0], 0
mov qword [0x1401f9198], rdi
je 0x1400d0dc6
mov rax, qword [rsp + 0xe0]
mov dword [rax], r12d
mov rdx, qword [r15 + 0x10]
mov eax, dword [r15 + 0x18]
test rdx, rdx
je 0x1400d0eae
mov dword [rdx], eax
xor eax, eax
jmp 0x1400d0eae
xor r8d, r8d
mov eax, 0x57
mov qword [0x1401f9198], r8
jmp 0x1400d0eae
cmp r9b, 0x3a
jne 0x1400d0eae
cmp byte [rdx + 2], 0x3a
mov cl, byte [rcx + 1]
jne 0x1400d0e28
test cl, cl
je 0x1400d0e1d
inc dword [0x1400ed298]
mov qword [0x1401f9178], r8
jmp 0x1400d0ea5
xor ecx, ecx
mov qword [0x1401f9178], rcx
jmp 0x1400d0ea5
movsxd rdx, dword [0x1400ed298]
test cl, cl
je 0x1400d0e44
inc edx
mov qword [0x1401f9178], r8
mov dword [0x1400ed298], edx
jmp 0x1400d0ea5
cmp esi, edx
jne 0x1400d0e90
cmp dword [0x1400ed294], 0
je 0x1400d0e7c
mov r8, qword [r13]
mov ecx, 2
mov qword [rsp + 0x30], r8
call qword [fcn.1400e7db0]
mov r8, qword [rsp + 0x30]
mov r9d, edi
lea rdx, str._s:_option_requires_an_argument_____c_n
mov rcx, rax
call fcn.1400d0421
mov dword [0x1400ed290], edi
movsx eax, byte [rbx]
cmp al, 0x3a
je 0x1400d0ea5
mov eax, 0x3f
jmp 0x1400d0ea5
lea ecx, [rdx + 1]
mov rdx, qword [r13 + rdx*8]
mov dword [0x1400ed298], ecx
mov qword [0x1401f9178], rdx
xor edx, edx
mov qword [0x1401f9198], rdx
add rsp, 0x78
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret