Function at 0x4016ee
Capabilities:
Execute command
Read file on windows
Write and execute a file
Write file on windows

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0x40
mov dword [rbp - 8], 0
lea rdx, [0x00405218]
lea rcx, str.data.txt
call sym.fopen
mov qword [rbp - 0x10], rax
jmp 0x40175e
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 - 0x10]
mov r9, rdx
mov r8d, 1
mov edx, 0x34
mov rcx, rax
call sym.fread
cmp rax, 1
jne 0x40175e
add dword [rbp - 8], 1
mov rax, qword [rbp - 0x10]
mov rcx, rax
call sym.feof
test eax, eax
je 0x401716
mov rax, qword [rbp - 0x10]
mov rcx, rax
call sym.fclose
cmp dword [rbp - 8], 0
jne 0x40178e
lea rcx, [0x00405224]
call sym.puts
jmp 0x40179f
lea rcx, section..rdata
call sym.system
call sym.show
lea rdx, [0x00405218]
lea rcx, str.data.txt
call sym.fopen
mov qword [rbp - 0x10], rax
cmp qword [rbp - 0x10], 0
jne 0x4017ce
lea rcx, [0x00405233]
call sym.puts
jmp 0x401b82
lea rcx, [0x00405250]
call sym.puts
lea rax, [rbp - 0x20]
mov rdx, rax
lea rcx, [0x00405261]
call sym.scanf
jmp 0x401b3f
lea rcx, [0x00405264]
call sym.printf
lea rcx, [0x00408a40]
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
add rax, rcx
mov eax, dword [rax]
mov edx, eax
lea rcx, [0x00405261]
call sym.scanf
mov dword [rbp - 4], 0
jmp 0x4018b9
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]
lea rcx, [rax + rdx]
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, rcx
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x4018b5
lea rcx, [0x00405274]
call sym.puts
call sym.getch
mov rax, qword [rbp - 0x10]
mov rcx, rax
call sym.fclose
jmp 0x401b82
add dword [rbp - 4], 1
mov eax, dword [rbp - 4]
cmp eax, dword [rbp - 8]
jl 0x40183b
lea rcx, [0x0040527d]
call sym.puts
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
add rax, 8
mov rdx, rax
lea rcx, [0x00405261]
call sym.scanf
lea rcx, [0x0040528e]
call sym.puts
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, [rax + 0x20]
lea rax, [0x00408a40]
add rax, rdx
add rax, 0xc
mov rdx, rax
lea rcx, [0x0040529e]
call sym.scanf
lea rcx, [0x004052a1]
call sym.puts
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, [rax + 0x30]
lea rax, [0x00408a40]
add rax, rdx
mov rdx, rax
lea rcx, [0x0040529e]
call sym.scanf
lea rcx, [0x004052b1]
call sym.puts
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, [rax + 0x20]
lea rax, [0x00408a40]
add rax, rdx
mov rdx, rax
lea rcx, [0x004051ed]
call sym.scanf
lea rcx, [0x00408a40]
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
add rax, rcx
add rax, 0x20
movss xmm1, dword [rax + 0xc]
lea rcx, [0x00408a40]
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
add rax, rcx
add rax, 0x30
movss xmm0, dword [rax]
addss xmm1, xmm0
lea rcx, [0x00408a40]
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
add rax, rcx
add rax, 0x20
mov eax, dword [rax]
pxor xmm0, xmm0
cvtsi2ss xmm0, eax
addss xmm0, xmm1
cvttss2si ecx, xmm0
lea r8, [0x00408a40]
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
add rax, r8
mov dword [rax + 4], ecx
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 - 0x10]
mov r9, rdx
mov r8d, 1
mov edx, 0x34
mov rcx, rax
call sym.fwrite
cmp rax, 1
je 0x401ae5
lea rcx, [0x004052c1]
call sym.printf
jmp 0x401b20
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
add rax, 8
mov rdx, rax
lea rcx, [0x004052de]
call sym.printf
add dword [rbp - 8], 1
lea rcx, [0x004052ec]
call sym.printf
lea rax, [rbp - 0x20]
mov rdx, rax
lea rcx, [0x00405261]
call sym.scanf
lea rax, [rbp - 0x20]
lea rdx, [0x00405301]
mov rcx, rax
call sym.strcmp
test eax, eax
je 0x4017f2
lea rax, [rbp - 0x20]
lea rdx, [0x00405303]
mov rcx, rax
call sym.strcmp
test eax, eax
je 0x4017f2
mov rax, qword [rbp - 0x10]
mov rcx, rax
call sym.fclose
nop
add rsp, 0x40
pop rbp
ret