Function at 0x401bbe
Capabilities:
Read file on windows
Write file on windows

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0x50
mov dword [rbp - 0xc], 0
mov dword [rbp - 0x10], 1
lea rdx, [0x00405315]
lea rcx, str.data.txt
call sym.fopen
mov qword [rbp - 0x18], rax
cmp qword [rbp - 0x18], 0
jne 0x401bfe
lea rcx, [0x00405317]
call sym.puts
jmp 0x401c48
mov eax, dword [rbp - 0xc]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 2
add rax, rdx
shl rax, 2
lea rdx, [0x00408a40]
add rax, rdx
mov rdx, qword [rbp - 0x18]
mov r9, rdx
mov r8d, 1
mov edx, 0x34
mov rcx, rax
call sym.fread
cmp rax, 1
jne 0x401c48
add dword [rbp - 0xc], 1
mov rax, qword [rbp - 0x18]
mov rcx, rax
call sym.feof
test eax, eax
je 0x401c00
mov rax, qword [rbp - 0x18]
mov rcx, rax
call sym.fclose
cmp dword [rbp - 0xc], 0
jne 0x401c82
lea rcx, [0x00405326]
call sym.puts
mov dword [rbp - 0x10], 0
jmp 0x401f02
lea rcx, [0x0040532f]
call sym.puts
lea rax, [rbp - 0x30]
mov rdx, rax
lea rcx, [0x00405261]
call sym.scanf
mov dword [rbp - 4], 0
jmp 0x401ceb
lea rcx, [0x00408a40]
mov eax, dword [rbp - 4]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 2
add rax, rdx
shl rax, 2
add rax, rcx
mov eax, dword [rax]
cdqe
mov rdx, rax
lea rax, [rbp - 0x30]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x401ce7
jmp 0x401cf3
add dword [rbp - 4], 1
mov eax, dword [rbp - 4]
cmp eax, dword [rbp - 0xc]
jl 0x401caa
mov eax, dword [rbp - 4]
cmp eax, dword [rbp - 0xc]
jge 0x401e51
lea rcx, [0x00405349]
call sym.puts
lea rcx, [0x00408a40]
mov eax, dword [rbp - 4]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 2
add rax, rdx
shl rax, 2
add rax, rcx
mov eax, dword [rax]
mov edx, eax
lea rcx, [0x00405261]
call sym.scanf
lea rcx, [0x00405357]
call sym.puts
mov eax, dword [rbp - 4]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 2
add rax, rdx
shl rax, 2
lea rdx, [0x00408a40]
add rax, rdx
add rax, 8
mov rdx, rax
lea rcx, [0x00405261]
call sym.scanf
lea rcx, [0x00405365]
call sym.puts
mov eax, dword [rbp - 4]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 2
add rax, rdx
shl rax, 2
lea rdx, [rax + 0x20]
lea rax, [0x00408a40]
add rax, rdx
add rax, 0xc
mov rdx, rax
lea rcx, [0x0040529e]
call sym.scanf
lea rcx, [0x00405373]
call sym.puts
mov eax, dword [rbp - 4]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 2
add rax, rdx
shl rax, 2
lea rdx, [rax + 0x30]
lea rax, [0x00408a40]
add rax, rdx
mov rdx, rax
lea rcx, [0x0040529e]
call sym.scanf
lea rcx, [0x00405381]
call sym.puts
mov eax, dword [rbp - 4]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 2
add rax, rdx
shl rax, 2
lea rdx, [rax + 0x20]
lea rax, [0x00408a40]
add rax, rdx
mov rdx, rax
lea rcx, [0x0040529e]
call sym.scanf
jmp 0x401e64
lea rcx, [0x0040538f]
call sym.printf
mov dword [rbp - 0x10], 0
lea rdx, [0x004053a7]
lea rcx, str.data.txt
call sym.fopen
mov qword [rbp - 0x18], rax
mov dword [rbp - 8], 0
jmp 0x401eda
mov eax, dword [rbp - 8]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 2
add rax, rdx
shl rax, 2
lea rdx, [0x00408a40]
add rax, rdx
mov rdx, qword [rbp - 0x18]
mov r9, rdx
mov r8d, 1
mov edx, 0x34
mov rcx, rax
call sym.fwrite
cmp rax, 1
je 0x401ed6
lea rcx, [0x004053a9]
call sym.puts
jmp 0x401ee2
add dword [rbp - 8], 1
mov eax, dword [rbp - 8]
cmp eax, dword [rbp - 0xc]
jl 0x401e84
mov dword [rbp - 0x10], 1
lea rcx, [0x004053b4]
call sym.puts
mov rax, qword [rbp - 0x18]
mov rcx, rax
call sym.fclose
nop
add rsp, 0x50
pop rbp
ret