Function at 0x450850
Capabilities:
Delete file

Disassembly:
push r13
push r12
push rbx
add rsp, 0xffffffffffffff80
mov ebx, dword [rcx]
mov r12, rcx
call sym._gfortrani_library_start
mov eax, ebx
and eax, 0x1000000
je 0x450874
mov eax, dword [r12 + 0x130]
mov dword [rsp + 0x78], eax
mov eax, 4
test bh, 4
jne 0x450e40
mov dword [rsp + 0x30], eax
mov eax, 3
test bh, 0x40
jne 0x450e10
mov dword [rsp + 0x34], eax
mov eax, 3
test ebx, 0x2000000
jne 0x450de0
mov dword [rsp + 0x74], eax
mov eax, 2
test ebx, 0x4000000
jne 0x450db0
mov dword [rsp + 0x70], eax
mov eax, 2
test bh, 0x10
jne 0x450d80
mov dword [rsp + 0x38], eax
mov eax, 3
test bh, 0x80
jne 0x450d50
mov dword [rsp + 0x3c], eax
mov eax, 2
test ebx, 0x10000
jne 0x450d20
mov dword [rsp + 0x50], eax
mov eax, 2
test ebx, 0x40000
jne 0x450cf0
mov dword [rsp + 0x5c], eax
mov eax, 2
test ebx, 0x80000
jne 0x450cc0
mov dword [rsp + 0x60], eax
mov eax, 2
test ebx, 0x400000
jne 0x450c90
mov dword [rsp + 0x6c], eax
mov eax, 0xc
test ebx, 0x100000
jne 0x450c60
mov dword [rsp + 0x64], eax
mov eax, 3
test ebx, 0x200000
jne 0x450c30
mov dword [rsp + 0x68], eax
mov eax, 2
test bh, 8
jne 0x450c00
mov dword [rsp + 0x40], eax
mov eax, 3
test bh, 0x20
jne 0x450b98
mov dword [rsp + 0x48], eax
mov eax, 5
test bh, 2
jne 0x450bd5
mov ecx, dword [r12 + 4]
mov dword [rsp + 0x4c], eax
call sym._gfortrani_get_unformatted_convert
cmp eax, 0xffffffff
je 0x450b20
cmp eax, 2
je 0x450b3f
jg 0x450b10
cmp eax, 1
ja 0x450f99
cmp dword [rsp + 0x48], 3
mov dword [rsp + 0x54], eax
je 0x4509df
cmp dword [rsp + 0x30], 1
je 0x450ee0
mov eax, dword [rsp + 0x78]
test eax, eax
je 0x450a00
mov eax, dword [rsp + 0x34]
cmp eax, 3
je 0x450a00
test eax, eax
jne 0x450e90
nop dword [rax + rax]
cmp dword [rsp + 0x30], 2
mov eax, dword [rsp + 0x48]
je 0x450b50
cmp eax, 3
jne 0x450a1c
mov dword [rsp + 0x48], 0
mov eax, dword [r12]
test al, 3
jne 0x450ae0
test eax, 0x800000
jne 0x450ec8
mov ecx, dword [r12 + 4]
test ecx, ecx
js 0x450f30
call sym._gfortrani_find_or_create_unit
mov r13, rax
cmp qword [r13 + 8], 0
je 0x450ab9
test dword [r12], 0x100
je 0x450eb0
mov rdx, qword [r12 + 0x40]
mov r8, qword [r12 + 0x38]
mov rcx, r13
call sym._gfortrani_compare_file_filename
test eax, eax
jne 0x450eb0
mov rcx, qword [r13 + 8]
mov rax, qword [rcx]
call qword [rax + 0x38]
cmp eax, 0xffffffff
je 0x450f60
mov rcx, qword [r13 + 0x108]
mov qword [r13 + 8], 0
test rcx, rcx
je 0x450aa9
cmp dword [r13 + 0x58], 3
je 0x450f88
call sym.free
mov qword [r13 + 0x108], 0
mov rcx, r12
lea r8, [rsp + 0x30]
mov rdx, r13
call sym._gfortrani_new_unit
mov rcx, rax
test rax, rax
je 0x450ae0
call sym._gfortrani_unlock_unit
nop word cs:[rax + rax]
mov eax, dword [r12]
and eax, 0x800003
cmp eax, 0x800000
jne 0x450aff
mov edx, dword [r12 + 4]
mov rax, qword [r12 + 0x128]
mov dword [rax], edx
sub rsp, 0xffffffffffffff80
pop rbx
pop r12
pop r13
ret
cmp eax, 3
jne 0x450f99
xor eax, eax
jmp 0x4509c9
and ebx, 0x20000
jne 0x450f00
mov rax, qword [0x0049a060]
mov eax, dword [rax + 0xc]
cmp eax, 2
jne 0x4509ba
mov eax, 1
jmp 0x4509c9
sub eax, 2
cmp eax, 1
ja 0x450e70
lea r8, str.Extension:_APPEND_as_a_value_for_ACCESS_in_OPEN_statement
mov edx, 0x20
mov rcx, r12
call sym._gfortrani_notify_std
mov eax, dword [r12]
mov dword [rsp + 0x30], 0
mov dword [rsp + 0x48], 2
test al, 3
jne 0x450ae0
jmp 0x450a28
lea rax, str.Bad_POSITION_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0x88]
mov rcx, r12
mov r8, qword [r12 + 0x90]
mov qword [rsp + 0x20], rax
lea r9, str.asis
call sym._gfortrani_find_option
mov dword [rsp + 0x48], eax
mov eax, 5
test bh, 2
je 0x45099a
lea rax, str.Bad_STATUS_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0x48]
mov r8, qword [r12 + 0x50]
mov rcx, r12
mov qword [rsp + 0x20], rax
lea r9, str.unknown
call sym._gfortrani_find_option
jmp 0x45099a
lea rax, str.Bad_FORM_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0x68]
mov r8, qword [r12 + 0x70]
mov rcx, r12
mov qword [rsp + 0x20], rax
lea r9, str.formatted
call sym._gfortrani_find_option
jmp 0x450976
lea rax, str.Bad_SIGN_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0x108]
mov rcx, r12
mov r8, qword [r12 + 0x110]
mov qword [rsp + 0x20], rax
lea r9, [0x0049aca0]
call sym._gfortrani_find_option
jmp 0x450964
lea rax, str.Bad_ROUND_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0x100]
mov rcx, r12
mov r8, qword [r12 + 0xf8]
mov qword [rsp + 0x20], rax
lea r9, [0x0049ab60]
call sym._gfortrani_find_option
jmp 0x45094f
lea rax, str.Bad_ASYNCHRONOUS_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0x120]
mov rcx, r12
mov r8, qword [r12 + 0x118]
mov qword [rsp + 0x20], rax
lea r9, [0x0049a3c0]
call sym._gfortrani_find_option
jmp 0x45093a
lea rax, str.Bad_ENCODING_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0xe8]
mov rcx, r12
mov r8, qword [r12 + 0xf0]
mov qword [rsp + 0x20], rax
lea r9, str.utf_8
call sym._gfortrani_find_option
jmp 0x450925
lea rax, str.Bad_DECIMAL_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0xe0]
mov rcx, r12
mov r8, qword [r12 + 0xd8]
mov qword [rsp + 0x20], rax
lea r9, [0x0049a6a0]
call sym._gfortrani_find_option
jmp 0x450910
lea rax, str.Bad_PAD_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0xc0]
mov rcx, r12
mov r8, qword [r12 + 0xb8]
mov qword [rsp + 0x20], rax
lea r9, [0x0049a980]
call sym._gfortrani_find_option
jmp 0x4508fb
lea rax, str.Bad_DELIM_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0xa8]
mov rcx, r12
mov r8, qword [r12 + 0xb0]
mov qword [rsp + 0x20], rax
lea r9, [0x0049a720]
call sym._gfortrani_find_option
jmp 0x4508e6
lea rax, str.Bad_BLANK_parameter_in_OPEN_statement
mov r8, qword [r12 + 0x78]
mov rcx, r12
mov rdx, qword [r12 + 0x80]
mov qword [rsp + 0x20], rax
lea r9, [0x0049a4c0]
call sym._gfortrani_find_option
jmp 0x4508d4
lea rax, str.Bad_SHARE_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0x148]
mov rcx, r12
mov r8, qword [r12 + 0x150]
mov qword [rsp + 0x20], rax
lea r9, str.denyrw
call sym._gfortrani_find_option
jmp 0x4508c2
lea rax, str.Bad_CARRIAGECONTROL_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0x140]
mov rcx, r12
mov r8, qword [r12 + 0x138]
mov qword [rsp + 0x20], rax
lea r9, str.list
call sym._gfortrani_find_option
jmp 0x4508ad
lea rax, str.Bad_ACTION_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0xa0]
mov rcx, r12
mov r8, qword [r12 + 0x98]
mov qword [rsp + 0x20], rax
lea r9, [0x0049a340]
call sym._gfortrani_find_option
jmp 0x450898
lea rax, str.Bad_ACCESS_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0x60]
mov r8, qword [r12 + 0x58]
mov rcx, r12
mov qword [rsp + 0x20], rax
lea r9, str.sequential
call sym._gfortrani_find_option
jmp 0x450886
lea r8, str.Conflicting_ACCESS_and_POSITION_flags_in_OPEN_statement
mov edx, 0x138a
mov rcx, r12
call sym._gfortran_generate_error
jmp 0x450b5c
lea r8, str.ACTION_conflicts_with_READONLY_in_OPEN_statement
mov edx, 0x138a
mov rcx, r12
call sym._gfortran_generate_error
jmp 0x450a00
lea r8, [rsp + 0x30]
mov rdx, r13
mov rcx, r12
call fcn.00465630
jmp 0x450ae0
call sym._gfortrani_newunit_alloc
mov dword [r12 + 4], eax
mov ecx, eax
jmp 0x450a40
lea r8, str.Cannot_use_POSITION_with_direct_access_files
mov edx, 0x138a
mov rcx, r12
call sym._gfortran_generate_error
jmp 0x4509df
lea rax, str.Bad_CONVERT_parameter_in_OPEN_statement
mov rdx, qword [r12 + 0xc8]
mov rcx, r12
mov r8, qword [r12 + 0xd0]
mov qword [rsp + 0x20], rax
lea r9, [0x0049a640]
call sym._gfortrani_find_option
jmp 0x4509b1
call sym._gfortrani_find_unit
mov r13, rax
test rax, rax
jne 0x450a48
lea r8, str.Bad_unit_number_in_OPEN_statement
mov edx, 0x138a
mov rcx, r12
call sym._gfortran_generate_error
jmp 0x450aff
mov rcx, r13
call sym._gfortrani_unlock_unit
lea r8, str.Error_closing_file_in_OPEN_statement
mov edx, 0x1388
mov rcx, r12
call sym._gfortran_generate_error
jmp 0x450ae0
call sym.remove
mov rcx, qword [r13 + 0x108]
jmp 0x450aa9
lea rdx, [0x00490f78]
mov rcx, r12
call sym._gfortrani_internal_error
nop
nop
nop
nop
nop
nop
nop
nop