Function at 0x45d3d0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
mov rbx, rcx
mov esi, edx
mov rcx, qword [rcx + 0x118]
mov edx, dword [rbx + 0x124]
mov dword [rcx + 0x24], 0
mov eax, dword [rcx + 0x3c]
mov r9, rcx
test edx, edx
jne 0x45d488
cmp eax, 1
je 0x45d560
test eax, eax
jne 0x45d580
mov r8d, dword [rcx + 0x4c]
test r8d, r8d
je 0x45d590
mov rax, qword [0x0049a060]
mov rdi, qword [rax + 0x18]
mov eax, 4
test rdi, rdi
cmove rdi, rax
jmp 0x45d44d
mov edx, 1
mov rcx, rbx
call fcn.00486860
mov rcx, rbx
mov rdx, rdi
call fcn.00485ae0
mov rcx, qword [rbx + 0x118]
mov eax, dword [rcx + 0xd0]
test eax, eax
jne 0x45d440
mov rax, qword [rcx + 0x98]
mov qword [rcx + 0xb0], rax
mov edx, dword [rbx + 0x124]
jmp 0x45d508
mov r8d, dword [rbx + 0x134]
mov qword [rbx + 0x138], 0
mov dword [rbx + 0x134], 0
cmp eax, 1
je 0x45d4e8
test eax, eax
jne 0x45d5b0
mov r11d, dword [rcx + 0x4c]
test r11d, r11d
je 0x45d61d
xor edx, edx
mov rcx, rbx
call fcn.0047ecd0
mov rcx, qword [rbx + 0x118]
mov rax, qword [rcx + 0x98]
mov qword [rcx + 0xb0], rax
mov edx, dword [rbx + 0x124]
jmp 0x45d508
mov ebp, dword [rcx + 0x4c]
mov rdi, qword [rcx + 0xb0]
test ebp, ebp
jne 0x45d720
test rdi, rdi
jne 0x45da20
nop dword [rax + rax]
call sym._gfortrani_fbuf_flush
mov r9, qword [rbx + 0x118]
mov eax, dword [r9 + 0x3c]
cmp eax, 3
je 0x45d542
test esi, esi
je 0x45d529
mov dword [r9 + 0x54], 3
mov dword [r9 + 0x28], 0
cmp eax, 1
je 0x45d5e0
add qword [r9 + 0xa0], 1
mov rdx, r9
test esi, esi
je 0x45d5c8
mov rcx, qword [rdx + 8]
mov rax, qword [rcx]
call qword [rax + 0x40]
nop
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov rdx, qword [r9 + 0xb0]
mov rcx, rbx
call fcn.00485ae0
mov edx, dword [rbx + 0x124]
mov rcx, qword [rbx + 0x118]
jmp 0x45d508
cmp eax, 3
jne 0x45d560
mov eax, dword [rcx + 0x4c]
test eax, eax
jne 0x45d508
mov eax, dword [rbx + 0x140]
test eax, eax
je 0x45d760
mov dword [rbx + 0x140], 0
jmp 0x45d508
cmp eax, 3
je 0x45d610
mov rdi, qword [rcx + 0xb0]
jmp 0x45d4fa
mov rcx, rbx
call fcn.004828e0
mov rdx, qword [rbx + 0x118]
jmp 0x45d549
mov rcx, qword [r9 + 8]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov r9, qword [rbx + 0x118]
mov rcx, qword [r9 + 0x98]
add rax, rcx
cqo
idiv rcx
sub rax, 1
mov qword [r9 + 0xa0], rax
jmp 0x45d542
mov r10d, dword [rcx + 0x4c]
test r10d, r10d
jne 0x45d508
test byte [rbx + 0x149], 0x20
je 0x45d7e8
cmp qword [rbx + 0x48], 0
movsxd rdi, r8d
je 0x45d920
mov r8, qword [r9 + 0xb0]
mov rax, qword [r9 + 0x98]
sub rax, r8
cmp rdi, rax
jbe 0x45d67e
mov rcx, qword [r9 + 8]
mov rdx, rdi
mov r8d, 1
sub rdx, rax
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
js 0x45db82
mov rax, qword [rbx + 0x118]
mov r8, qword [rax + 0x98]
sub r8, rdi
mov rcx, rbx
mov rdx, r8
mov rdi, r8
call sym._gfortrani_write_block
mov rcx, rax
test rax, rax
je 0x45d74c
mov r9, qword [rbx + 0x118]
cmp dword [r9 + 0x2c0], 4
je 0x45dbb6
mov r8, rdi
mov edx, 0x20
call sym.memset
mov r9, qword [rbx + 0x118]
mov rdx, qword [r9 + 0xf8]
mov rcx, rbx
lea r8, [rsp + 0x3c]
call sym._gfortrani_next_array_record
mov ecx, dword [rsp + 0x3c]
mov rdx, rax
mov rax, qword [rbx + 0x118]
test ecx, ecx
je 0x45d6ee
mov dword [rax + 0x34], 1
mov rcx, qword [rax + 8]
imul rdx, qword [rax + 0x98]
xor r8d, r8d
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
js 0x45db82
mov rcx, qword [rbx + 0x118]
jmp 0x45d469
test rdi, rdi
jle 0x45d508
mov rcx, qword [rcx + 8]
xor edx, edx
mov r8, rdi
call fcn.00485bc0
cmp rax, rdi
je 0x45d74c
xor r8d, r8d
mov edx, 0x1388
mov rcx, rbx
call sym._gfortran_generate_error
mov edx, dword [rbx + 0x124]
mov rcx, qword [rbx + 0x118]
jmp 0x45d508
test byte [rbx + 0x149], 0x20
jne 0x45d8a0
cmp dword [r9 + 0x80], 2
je 0x45d508
mov rdi, qword [sym.imp.msvcrt.dll__errno]
jmp 0x45d7ae
mov r8, qword [rax]
lea r9, [rdx + 1]
mov qword [rax + 0x18], r9
movzx eax, byte [r8 + rdx]
cmp dword [rcx + 0x3c], 3
jne 0x45d7a6
add qword [rcx + 0xb8], 1
cmp al, 0xa
je 0x45d477
call rdi
mov dword [rax], 0
mov rcx, qword [rbx + 0x118]
mov rax, qword [rcx + 0x290]
mov rdx, qword [rax + 0x18]
cmp rdx, qword [rax + 0x10]
jb 0x45d788
call sym._gfortrani_fbuf_getc_refill
cmp eax, 0xffffffff
je 0x45dae0
mov rcx, qword [rbx + 0x118]
jmp 0x45d798
mov eax, dword [r9 + 0x80]
cmp eax, 1
je 0x45d9b0
xor edi, edi
cmp eax, 2
mov rcx, r9
mov r8d, 2
setne dil
xor edx, edx
call sym._gfortrani_fbuf_seek
mov rcx, qword [rbx + 0x118]
add edi, edi
cmp dword [rcx + 0x80], 2
je 0x45d843
movsxd rdx, edi
call sym._gfortrani_fbuf_alloc
test rax, rax
je 0x45d73c
mov edx, 0xa0d
mov word [rax], dx
mov rcx, qword [rbx + 0x118]
cmp dword [rcx + 0x3c], 3
jne 0x45d477
movsxd rdi, edi
add rdi, qword [rcx + 0xb8]
mov qword [rcx + 0xb8], rdi
mov rcx, qword [rcx + 8]
mov rax, qword [rcx]
call qword [rax + 0x20]
cmp rdi, rax
jge 0x45d74c
mov rcx, qword [rbx + 0x118]
mov r8, rbx
mov rax, qword [rcx + 0xb8]
lea rdx, [rax - 1]
call sym._gfortrani_unit_truncate
mov edx, dword [rbx + 0x124]
mov rcx, qword [rbx + 0x118]
jmp 0x45d508
cmp qword [rbx + 0x48], 0
je 0x45da80
mov rdx, qword [r9 + 0xf8]
lea r8, [rsp + 0x3c]
mov rcx, rbx
call sym._gfortrani_next_array_record
mov rdx, rax
test esi, esi
jne 0x45d8d2
mov eax, dword [rsp + 0x3c]
test eax, eax
jne 0x45db9f
mov rax, qword [rbx + 0x118]
xor r8d, r8d
mov rcx, qword [rax + 8]
imul rdx, qword [rax + 0x98]
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
jns 0x45d70c
mov edx, 0x1395
mov rcx, rbx
xor r8d, r8d
call sym._gfortran_generate_error
mov edx, dword [rbx + 0x124]
mov rcx, qword [rbx + 0x118]
jmp 0x45d508
test esi, esi
je 0x45db30
mov r8, qword [r9 + 0xb0]
mov rax, qword [r9 + 0x98]
sub rax, r8
cmp rdi, rax
jbe 0x45db97
mov rcx, qword [r9 + 8]
mov rdx, rdi
mov r8d, 1
sub rdx, rax
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
js 0x45dbe5
mov r9, qword [rbx + 0x118]
mov rax, qword [r9 + 0x98]
sub rax, rdi
mov rdi, rax
test rdi, rdi
jne 0x45db35
mov edx, dword [rbx + 0x124]
mov rcx, r9
call sym._gfortrani_fbuf_flush
mov r9, qword [rbx + 0x118]
mov eax, dword [r9 + 0x3c]
mov rdx, r9
cmp eax, 3
jne 0x45d521
jmp 0x45d549
mov r8d, 2
xor edx, edx
mov rcx, r9
call sym._gfortrani_fbuf_seek
movzx eax, byte [rbx + 0x1d0]
test al, 0xc0
je 0x45d74c
shr al, 6
mov rcx, qword [rbx + 0x118]
movzx edx, al
call sym._gfortrani_fbuf_alloc
mov rdi, rax
test rax, rax
je 0x45dc27
movzx eax, byte [rbx + 0x1d4]
mov byte [rdi], al
cmp byte [rbx + 0x1d0], 0
jns 0x45d74c
mov byte [rdi + 1], al
mov edx, dword [rbx + 0x124]
mov rcx, qword [rbx + 0x118]
jmp 0x45d508
mov rcx, r9
mov r8d, 2
xor edx, edx
call sym._gfortrani_fbuf_seek
mov rcx, qword [rbx + 0x118]
mov edx, 1
call sym._gfortrani_fbuf_flush
mov rax, qword [rbx + 0x118]
mov edx, 0x20
mov rcx, qword [rax + 8]
mov r8, qword [rax + 0xb0]
call fcn.00485bc0
mov rcx, qword [rbx + 0x118]
cmp rax, qword [rcx + 0xb0]
jne 0x45d73c
jmp 0x45d477
mov rcx, qword [r9 + 8]
mov rbp, qword [r9 + 0xb0]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rdi, rax
mov rax, qword [rbx + 0x118]
mov rcx, qword [rax + 8]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov rdx, qword [rbx + 0x118]
mov r8d, 1
sub rdi, rax
mov rcx, qword [rdx + 8]
cmp rdi, rbp
mov rdx, rbp
cmovle rdx, rdi
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
jns 0x45d70c
jmp 0x45d8f7
call rdi
mov eax, dword [rax]
test eax, eax
jne 0x45d73c
mov rcx, qword [rbx + 0x118]
cmp dword [rcx + 0x3c], 3
je 0x45db16
cmp dword [rcx + 0x88], 1
je 0x45db16
mov rax, qword [rcx + 0x98]
cmp qword [rcx + 0xb0], rax
jne 0x45d477
mov rcx, rbx
call sym._gfortrani_hit_eof
mov edx, dword [rbx + 0x124]
mov rcx, qword [rbx + 0x118]
jmp 0x45d508
mov edi, 1
mov rdx, rdi
mov rcx, rbx
call sym._gfortrani_write_block
mov r9, rax
test rax, rax
je 0x45d74c
mov rcx, qword [rbx + 0x118]
cmp dword [rcx + 0x2c0], 4
je 0x45dc01
mov edx, 0x20
mov rcx, rax
mov r8, rdi
call sym.memset
mov edx, dword [rbx + 0x124]
mov rcx, qword [rbx + 0x118]
jmp 0x45d508
xor r8d, r8d
mov edx, 0x1395
mov rcx, rbx
call sym._gfortran_generate_error
jmp 0x45d74c
mov rdi, r8
jmp 0x45d975
mov rcx, rbx
mov qword [rsp + 0x28], rdx
call sym._gfortrani_hit_eof
mov rdx, qword [rsp + 0x28]
jmp 0x45d8d2
test edi, edi
jle 0x45d6c1
lea eax, [rdi - 1]
lea rax, [rcx + rax*4 + 4]
nop word cs:[rax + rax]
add rcx, 4
mov dword [rcx - 4], 0x20
cmp rax, rcx
jne 0x45dbd0
jmp 0x45d6ba
xor r8d, r8d
mov edx, 0x1395
mov rcx, rbx
call sym._gfortran_generate_error
mov r9, qword [rbx + 0x118]
jmp 0x45d97e
test edi, edi
jle 0x45d477
lea eax, [rdi - 1]
lea rax, [r9 + rax*4 + 4]
add r9, 4
mov dword [r9 - 4], 0x20
cmp r9, rax
jne 0x45dc11
jmp 0x45d74c
xor r8d, r8d
mov edx, 0x1388
mov rcx, rbx
call sym._gfortran_generate_error
jmp 0x45d9ed