Function at 0x14015f650
Capabilities:
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb8
mov r12, qword [0x140207460]
mov r10d, dword [rsp + 0x128]
mov rbx, qword [rsp + 0x120]
mov rax, qword [r12]
mov qword [rsp + 0xa8], rax
xor eax, eax
mov dword [rcx + 0x10], edx
mov qword [rcx], r8
test r10b, 0x20
jne 0x14015f6a1
sub edx, 1
lea rax, [r8 + 8]
mov dword [rcx + 0x10], edx
mov qword [rcx], rax
mov eax, r10d
mov qword [rcx + 8], r8
mov r8d, dword [rbx]
shr eax, 2
mov dword [rcx + 0x18], edx
and eax, 1
mov qword [rcx + 0x30], r9
mov dword [rcx + 0x14], eax
mov dword [rcx + 0x28], r10d
test r8d, r8d
je 0x14015f7d0
mov rdx, rbx
mov eax, r8d
jmp 0x14015f6df
mov eax, dword [rdx + 0x58]
add rdx, 0x58
test eax, eax
je 0x14015f7d0
cmp eax, 4
jne 0x14015f6d0
mov dword [rcx + 0x2c], 1
test r10b, 2
jne 0x14015faed
test r10b, 0x80
je 0x14015fa00
mov eax, r10d
and eax, 0x2a
cmp eax, 0xa
je 0x14015fad5
not r10d
and r10d, 0x24
je 0x14015faa0
lea rdx, [rsp + 0x20]
mov ecx, 0x10
xor eax, eax
mov rdi, rdx
rep stosq qword [rdi], rax
test r8d, r8d
je 0x14015f85e
xor ebp, ebp
lea r13, str.uses_incompatible_flags_LASTARG_DEFAULT_and_OPTARG
lea rsi, [0x1401f6004]
lea rdi, [0x1401f5fb3]
nop dword [rax]
mov eax, dword [rbx + 0x28]
not eax
test al, 0x11
je 0x14015f990
mov ecx, dword [rbx + 4]
test ecx, ecx
je 0x14015f786
cmp ecx, 0x7e
jg 0x14015f9a8
movsxd rdx, ecx
movzx eax, byte [rsp + rdx + 0x20]
lea r8d, [rax + 1]
mov byte [rsp + rdx + 0x20], r8b
test al, al
jne 0x14015f9c0
mov eax, dword [rbx + 0x28]
test al, 0x20
je 0x14015f7ad
and eax, 7
mov rdx, qword [rbx + 8]
cmp eax, 6
jne 0x14015f79e
test rdx, rdx
je 0x14015f7ad
mov ecx, dword [rbx + 4]
lea r8, str.uses_feature_not_supported_for_dashless_options
call fcn.14015f5c0
mov eax, dword [rbx]
cmp eax, 9
je 0x14015f948
cmp eax, 0xe
ja case.0x14015f7c4.0
movsxd rax, dword [rsi + rax*4]
add rax, rsi
jmp rax
mov dword [rcx + 0x2c], 0
test r10b, 0x80
je 0x14015f6ff
lea r8, str.Using_PARSE_OPT_SUBCOMMAND_OPTIONAL_without_subcommands
mov edx, 0x22d
lea rcx, str.parse_options.c
call fcn.1400a0ca0
nop dword [rax]
mov rdx, qword [rbx + 8]
mov ecx, dword [rbx + 4]
lea r8, str.OPT_ALIAS___should_not_remain_at_this_point._Are_you_using_parse_options_step___directly__nThat_case_is_not_supported_yet.
call fcn.14015f5c0
nop dword [rax + rax]
mov r14, qword [rbx + 0x18]
test r14, r14
je 0x14015f84f
mov rcx, r14
mov rdx, rdi
call sub.msvcrt.dll_strcspn
mov rcx, r14
mov r15, rax
call sub.msvcrt.dll_strlen
cmp r15, rax
je 0x14015f84f
mov rdx, qword [rbx + 8]
mov ecx, dword [rbx + 4]
lea r8, str.multi_word_argh_should_use_dash_to_separate_words
call fcn.14015f5c0
mov eax, dword [rbx + 0x58]
add rbx, 0x58
test eax, eax
jne 0x14015f750
mov rax, qword [0x140207620]
mov edx, dword [rax]
test edx, edx
jne 0x14015fabd
mov rax, qword [rsp + 0xa8]
sub rax, qword [r12]
jne 0x14015fab8
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp qword [rbx + 0x40], 0
je 0x14015fa80
cmp qword [rbx + 0x30], 0
je case.0x14015f7c4.0
mov rdx, qword [rbx + 8]
mov ecx, dword [rbx + 4]
lea r8, str.OPTION_LOWLEVEL_CALLBACK_needs_no_high_level_callback
call fcn.14015f5c0
jmp case.0x14015f7c4.0
cmp qword [rbx + 0x30], 0
mov rax, qword [rbx + 0x40]
je 0x14015fa40
test rax, rax
je case.0x14015f7c4.0
mov rdx, qword [rbx + 8]
mov ecx, dword [rbx + 4]
lea r8, str.OPTION_CALLBACK_cant_have_two_callbacks
call fcn.14015f5c0
jmp case.0x14015f7c4.0
mov rax, qword [rbx + 0x10]
test rax, rax
je 0x14015f9d8
cmp qword [rbx + 0x50], 0
je 0x14015f9d8
test rbp, rbp
je 0x14015f9f8
cmp rbp, rax
je case.0x14015f7c4.0
mov rdx, qword [rbx + 8]
mov ecx, dword [rbx + 4]
lea r8, str.all_OPTION_SUBCOMMANDs_need_the_same_value
call fcn.14015f5c0
jmp case.0x14015f7c4.0
cmp qword [rbx + 0x38], 0
mov eax, dword [rbx + 0x28]
jne 0x14015f963
mov rdx, qword [rbx + 8]
test rdx, rdx
je 0x14015f963
test al, 4
je 0x14015fa68
and eax, 3
cmp eax, 2
je case.0x14015f7c4.0
mov rdx, qword [rbx + 8]
mov ecx, dword [rbx + 4]
lea r8, str.should_not_accept_an_argument
call fcn.14015f5c0
jmp case.0x14015f7c4.0
mov rdx, qword [rbx + 8]
mov ecx, dword [rbx + 4]
mov r8, r13
call fcn.14015f5c0
jmp 0x14015f75d
mov rdx, qword [rbx + 8]
lea r8, str.invalid_short_name
call fcn.14015f5c0
jmp 0x14015f786
mov rdx, qword [rbx + 8]
lea r8, str.short_name_already_used
call fcn.14015f5c0
jmp 0x14015f786
mov rdx, qword [rbx + 8]
mov ecx, dword [rbx + 4]
lea r8, str.OPTION_SUBCOMMAND_needs_a_value_and_a_subcommand_function
call fcn.14015f5c0
mov rax, qword [rbx + 0x10]
test rbp, rbp
jne 0x14015f921
mov rbp, rax
jmp case.0x14015f7c4.0
test r10b, 8
jne 0x14015fb05
test r10b, 1
jne 0x14015fb1d
not r10d
and r10d, 0x24
je 0x14015faa0
lea rdx, [rsp + 0x20]
mov ecx, 0x10
xor eax, eax
mov rdi, rdx
rep stosq qword [rdi], rax
jmp 0x14015f736
test rax, rax
jne case.0x14015f7c4.0
mov rdx, qword [rbx + 8]
mov ecx, dword [rbx + 4]
lea r8, str.OPTION_CALLBACK_needs_one_callback
call fcn.14015f5c0
jmp case.0x14015f7c4.0
mov ecx, dword [rbx + 4]
lea r8, str.OPTION_SET_INT_0_should_not_be_negatable
call fcn.14015f5c0
mov eax, dword [rbx]
jmp 0x14015f7b8
mov rdx, qword [rbx + 8]
mov ecx, dword [rbx + 4]
lea r8, str.OPTION_LOWLEVEL_CALLBACK_needs_a_callback
call fcn.14015f5c0
jmp 0x14015f8a3
mov eax, dword [rbx + 0x28]
jmp 0x14015f963
lea r8, str.Cant_keep_argv0_if_you_dont_have_it
mov edx, 0x23e
lea rcx, str.parse_options.c
call fcn.1400a0ca0
call fcn.1401be670
lea r8, str.invalid_struct_option
mov edx, 0x210
lea rcx, str.parse_options.c
call fcn.1400a0ca0
lea r8, str.STOP_AT_NON_OPTION_and_KEEP_UNKNOWN_dont_go_together
mov edx, 0x23b
lea rcx, str.parse_options.c
call fcn.1400a0ca0
lea r8, str.subcommands_are_incompatible_with_PARSE_OPT_STOP_AT_NON_OPTION
mov edx, 0x230
lea rcx, str.parse_options.c
call fcn.1400a0ca0
lea r8, str.subcommands_are_incompatible_with_PARSE_OPT_KEEP_UNKNOWN_OPT_unless_in_combination_with_PARSE_OPT_SUBCOMMAND_OPTIONAL
mov edx, 0x233
lea rcx, str.parse_options.c
call fcn.1400a0ca0
lea r8, str.subcommands_are_incompatible_with_PARSE_OPT_KEEP_DASHDASH_unless_in_combination_with_PARSE_OPT_SUBCOMMAND_OPTIONAL
mov edx, 0x235
lea rcx, str.parse_options.c
call fcn.1400a0ca0
nop
nop word cs:[rax + rax]