Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Translate this C++ code into MIPS-Mars 4_5. Please make sure there are comments

ID: 3597186 • Letter: T

Question

Translate this C++ code into MIPS-Mars 4_5. Please make sure there are comments and try to run it. Thank you.

#include<iostream>

#include<iomanip>

#include<fstream>

#include<string>

using namespace std;

//named constants - residential customers

const double RES_BILL_PROC_FEES = 4.50;

const double RES_BASIC_SERV_COST = 20.50;

const double RES_COST_PREM_CHANNEL = 7.50;

//named constants - bussiness customers

const double BUS_BILL_PROC_FEES = 15.00;

const double BUS_BASIC_SERV_COST = 75.00;

const double BUS_BASIC_CONN_COST = 5.00;

const double BUS_COST_PREM_CHANNEL = 50.00;

int main()

{

//varible declaration

int accountNumber;

int numOfPremChannels;

int numOfBasicServConn;

int countBillOfResidential = 0;

int countBillOfBussiness = 0;

double amountDue = 0.00;

double totalAmountResidential = 0.00;

double totalAmountBussiness = 0.00;

char customerType;

//read the file

ifstream inFile;

inFile.open("data.txt");

//check the input file exist

if(inFile.fail())

{

cout << "The file doesn't exist!" <<endl;

exit(1);

}

//create and write to another file

ofstream outFile;

outFile.open("Billing.txt");

outFile << fixed << showpoint;

outFile << setprecision(2);

outFile << "Customer Type" << setw (20) << "Account Number"

<< setw(35) << "Number of Service Connection"

<< setw(25) << "Number of Channel"

<< setw(20) << "Amount Due" << endl;

outFile << "----------------------------------------------------------------------------------------------------------------" <<endl;

while(!inFile.eof())

{

inFile >> customerType >> accountNumber >> numOfBasicServConn >> numOfPremChannels;

if (customerType == 'R' || customerType == 'r')

{

amountDue = RES_BILL_PROC_FEES + RES_BASIC_SERV_COST + (numOfPremChannels * RES_COST_PREM_CHANNEL);

outFile << "Residential"

<< setw(17) << accountNumber

//<< setw(27) << numOfBasicServConn

<< setw(55) << numOfPremChannels

<< setw(22) << "$" << amountDue <<endl;

countBillOfResidential++;

totalAmountResidential += amountDue;

}

else if (customerType == 'B' || customerType == 'b')

{

amountDue = 0.00;

if(numOfBasicServConn <= 10)

{

amountDue = BUS_BILL_PROC_FEES + BUS_BASIC_SERV_COST + (BUS_COST_PREM_CHANNEL * numOfPremChannels);

}

else

{

amountDue = BUS_BILL_PROC_FEES + BUS_BASIC_SERV_COST

+ ((numOfBasicServConn - 10) * BUS_BASIC_CONN_COST) + (BUS_COST_PREM_CHANNEL * numOfPremChannels);

}

outFile << "Bussiness"

<< setw(19) << accountNumber

<< setw(27) << numOfBasicServConn

<< setw(28) << numOfPremChannels

<< setw(22) << "$" << amountDue <<endl;

countBillOfBussiness++;

totalAmountBussiness += amountDue;

}

else

{

outFile << "Invalid Customer Type!" <<endl;

}

}

outFile << endl;

outFile << "SUMMARY INFORMATION" << endl;

outFile << "----------------------------------------------------------------------------------------------------------------" <<endl;

outFile << "Customer Type" << setw (20) << "Number of Bill"

<< setw(20) << "Total Amount"

<<setw(20) << "Average Amount" << endl;

outFile << "----------------------------------------------------------------------------------------------------------------" <<endl;

outFile << "Residential" << setw(16) << countBillOfResidential

<< setw(17) << "$" << totalAmountResidential

<< setw(15) << "$" << totalAmountResidential / countBillOfResidential << endl;

outFile << "Bussiness" << setw(18) << countBillOfBussiness

<< setw(17) << "$" << totalAmountBussiness

<< setw(14) << "$" << totalAmountBussiness / countBillOfBussiness << endl;

inFile.close();

outFile.close();

cout << "Waiting for computing." << endl;

return 0;

}

Here is the input file name data.text

B12345 16 4
R44212 0 3
B22314 12 5
R23341 0 2
B84772 8 1
B74682 5 2
R87864 0 4
R74621 0 11
B33123 10 7
B53622 7 4
R49124 0 8
B78747 15 5
R67232 0 14
R23427 0 4
B37834 7 12

Explanation / Answer

std::operator&(std::_Ios_Fmtflags, std::_Ios_Fmtflags):

push rbp

mov rbp, rsp

mov DWORD PTR [rbp-4], edi

mov DWORD PTR [rbp-8], esi

mov eax, DWORD PTR [rbp-4]

and eax, DWORD PTR [rbp-8]

pop rbp

ret

std::operator|(std::_Ios_Fmtflags, std::_Ios_Fmtflags):

push rbp

mov rbp, rsp

mov DWORD PTR [rbp-4], edi

mov DWORD PTR [rbp-8], esi

mov eax, DWORD PTR [rbp-4]

or eax, DWORD PTR [rbp-8]

pop rbp

ret

std::operator~(std::_Ios_Fmtflags):

push rbp

mov rbp, rsp

mov DWORD PTR [rbp-4], edi

mov eax, DWORD PTR [rbp-4]

not eax

pop rbp

ret

std::operator|=(std::_Ios_Fmtflags&, std::_Ios_Fmtflags):

push rbp

mov rbp, rsp

sub rsp, 16

mov QWORD PTR [rbp-8], rdi

mov DWORD PTR [rbp-12], esi

mov rax, QWORD PTR [rbp-8]

mov eax, DWORD PTR [rax]

mov edx, DWORD PTR [rbp-12]

mov esi, edx

mov edi, eax

call std::operator|(std::_Ios_Fmtflags, std::_Ios_Fmtflags)

mov edx, eax

mov rax, QWORD PTR [rbp-8]

mov DWORD PTR [rax], edx

mov rax, QWORD PTR [rbp-8]

leave

ret

std::operator&=(std::_Ios_Fmtflags&, std::_Ios_Fmtflags):

push rbp

mov rbp, rsp

sub rsp, 16

mov QWORD PTR [rbp-8], rdi

mov DWORD PTR [rbp-12], esi

mov rax, QWORD PTR [rbp-8]

mov eax, DWORD PTR [rax]

mov edx, DWORD PTR [rbp-12]

mov esi, edx

mov edi, eax

call std::operator&(std::_Ios_Fmtflags, std::_Ios_Fmtflags)

mov edx, eax

mov rax, QWORD PTR [rbp-8]

mov DWORD PTR [rax], edx

mov rax, QWORD PTR [rbp-8]

leave

ret

std::operator|(std::_Ios_Openmode, std::_Ios_Openmode):

push rbp

mov rbp, rsp

mov DWORD PTR [rbp-4], edi

mov DWORD PTR [rbp-8], esi

mov eax, DWORD PTR [rbp-4]

or eax, DWORD PTR [rbp-8]

pop rbp

ret

std::ios_base::setf(std::_Ios_Fmtflags):

push rbp

mov rbp, rsp

sub rsp, 32

mov QWORD PTR [rbp-24], rdi

mov DWORD PTR [rbp-28], esi

mov rax, QWORD PTR [rbp-24]

mov eax, DWORD PTR [rax+24]

mov DWORD PTR [rbp-4], eax

mov rax, QWORD PTR [rbp-24]

lea rdx, [rax+24]

mov eax, DWORD PTR [rbp-28]

mov esi, eax

mov rdi, rdx

call std::operator|=(std::_Ios_Fmtflags&, std::_Ios_Fmtflags)

mov eax, DWORD PTR [rbp-4]

leave

ret

std::ios_base::setf(std::_Ios_Fmtflags, std::_Ios_Fmtflags):

push rbp

mov rbp, rsp

sub rsp, 32

mov QWORD PTR [rbp-24], rdi

mov DWORD PTR [rbp-28], esi

mov DWORD PTR [rbp-32], edx

mov rax, QWORD PTR [rbp-24]

mov eax, DWORD PTR [rax+24]

mov DWORD PTR [rbp-4], eax

mov eax, DWORD PTR [rbp-32]

mov edi, eax

call std::operator~(std::_Ios_Fmtflags)

mov edx, eax

mov rax, QWORD PTR [rbp-24]

add rax, 24

mov esi, edx

mov rdi, rax

call std::operator&=(std::_Ios_Fmtflags&, std::_Ios_Fmtflags)

mov edx, DWORD PTR [rbp-32]

mov eax, DWORD PTR [rbp-28]

mov esi, edx

mov edi, eax

call std::operator&(std::_Ios_Fmtflags, std::_Ios_Fmtflags)

mov edx, eax

mov rax, QWORD PTR [rbp-24]

add rax, 24

mov esi, edx

mov rdi, rax

call std::operator|=(std::_Ios_Fmtflags&, std::_Ios_Fmtflags)

mov eax, DWORD PTR [rbp-4]

leave

ret

std::showpoint(std::ios_base&):

push rbp

mov rbp, rsp

sub rsp, 16

mov QWORD PTR [rbp-8], rdi

mov rax, QWORD PTR [rbp-8]

mov esi, 1024

mov rdi, rax

call std::ios_base::setf(std::_Ios_Fmtflags)

mov rax, QWORD PTR [rbp-8]

leave

ret

std::fixed(std::ios_base&):

push rbp

mov rbp, rsp

sub rsp, 16

mov QWORD PTR [rbp-8], rdi

mov rax, QWORD PTR [rbp-8]

mov edx, 260

mov esi, 4

mov rdi, rax

call std::ios_base::setf(std::_Ios_Fmtflags, std::_Ios_Fmtflags)

mov rax, QWORD PTR [rbp-8]

leave

ret

std::setprecision(int):

push rbp

mov rbp, rsp

mov DWORD PTR [rbp-4], edi

mov eax, DWORD PTR [rbp-4]

pop rbp

ret

std::setw(int):

push rbp

mov rbp, rsp

mov DWORD PTR [rbp-4], edi

mov eax, DWORD PTR [rbp-4]

pop rbp

ret

.LC1:

.string "data.txt"

.LC2:

.string "The file doesn't exist!"

.LC3:

.string "Billing.txt"

.LC4:

.string "Customer Type"

.LC5:

.string "Account Number"

.LC6:

.string "Number of Service Connection"

.LC7:

.string "Number of Channel"

.LC8:

.string "Amount Due"

.LC9:

.string "----------------------------------------------------------------------------------------------------------------"

.LC12:

.string "Residential"

.LC13:

.string "$"

.LC17:

.string "Bussiness"

.LC18:

.string "Invalid Customer Type!"

.LC19:

.string "SUMMARY INFORMATION"

.LC20:

.string "Number of Bill"

.LC21:

.string "Total Amount"

.LC22:

.string "Average Amount"

.LC23:

.string "Waiting for computing."

main:

push rbp

mov rbp, rsp

push rbx

sub rsp, 1112

mov DWORD PTR [rbp-20], 0

mov DWORD PTR [rbp-24], 0

pxor xmm0, xmm0

movsd QWORD PTR [rbp-32], xmm0

pxor xmm0, xmm0

movsd QWORD PTR [rbp-40], xmm0

pxor xmm0, xmm0

movsd QWORD PTR [rbp-48], xmm0

lea rax, [rbp-592]

mov rdi, rax

call std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream()

lea rax, [rbp-592]

mov edx, 8

mov esi, OFFSET FLAT:.LC1

mov rdi, rax

call std::basic_ifstream<char, std::char_traits<char> >::open(char const*, std::_Ios_Openmode)

lea rax, [rbp-592]

add rax, 256

mov rdi, rax

call std::basic_ios<char, std::char_traits<char> >::fail() const

test al, al

je .L26

mov esi, OFFSET FLAT:.LC2

mov edi, OFFSET FLAT:std::cout

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

mov edi, 1

call exit

.L26:

lea rax, [rbp-1104]

mov rdi, rax

call std::basic_ofstream<char, std::char_traits<char> >::basic_ofstream()

mov esi, 32

mov edi, 16

call std::operator|(std::_Ios_Openmode, std::_Ios_Openmode)

mov edx, eax

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:.LC3

mov rdi, rax

call std::basic_ofstream<char, std::char_traits<char> >::open(char const*, std::_Ios_Openmode)

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:std::fixed(std::ios_base&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::ios_base& (*)(std::ios_base&))

mov esi, OFFSET FLAT:std::showpoint(std::ios_base&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::ios_base& (*)(std::ios_base&))

mov edi, 2

call std::setprecision(int)

mov edx, eax

lea rax, [rbp-1104]

mov esi, edx

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setprecision)

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:.LC4

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rbx, rax

mov edi, 20

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov esi, OFFSET FLAT:.LC5

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rbx, rax

mov edi, 35

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov esi, OFFSET FLAT:.LC6

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rbx, rax

mov edi, 25

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov esi, OFFSET FLAT:.LC7

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rbx, rax

mov edi, 20

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov esi, OFFSET FLAT:.LC8

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:.LC9

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

.L35:

lea rax, [rbp-592]

add rax, 256

mov rdi, rax

call std::basic_ios<char, std::char_traits<char> >::eof() const

xor eax, 1

test al, al

je .L27

lea rdx, [rbp-61]

lea rax, [rbp-592]

mov rsi, rdx

mov rdi, rax

call std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char> >(std::basic_istream<char, std::char_traits<char> >&, char&)

mov rdx, rax

lea rax, [rbp-52]

mov rsi, rax

mov rdi, rdx

call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)

mov rdx, rax

lea rax, [rbp-60]

mov rsi, rax

mov rdi, rdx

call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)

mov rdx, rax

lea rax, [rbp-56]

mov rsi, rax

mov rdi, rdx

call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)

movzx eax, BYTE PTR [rbp-61]

cmp al, 82

je .L28

movzx eax, BYTE PTR [rbp-61]

cmp al, 114

jne .L29

.L28:

mov eax, DWORD PTR [rbp-56]

cvtsi2sd xmm0, eax

movsd xmm1, QWORD PTR .LC10[rip]

mulsd xmm0, xmm1

movsd xmm1, QWORD PTR .LC11[rip]

addsd xmm0, xmm1

movsd QWORD PTR [rbp-32], xmm0

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:.LC12

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rbx, rax

mov edi, 17

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov rdx, rax

mov eax, DWORD PTR [rbp-52]

mov esi, eax

mov rdi, rdx

call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)

mov rbx, rax

mov edi, 55

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov rdx, rax

mov eax, DWORD PTR [rbp-56]

mov esi, eax

mov rdi, rdx

call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)

mov rbx, rax

mov edi, 22

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov esi, OFFSET FLAT:.LC13

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rdx, rax

mov rax, QWORD PTR [rbp-32]

mov QWORD PTR [rbp-1112], rax

movsd xmm0, QWORD PTR [rbp-1112]

mov rdi, rdx

call std::basic_ostream<char, std::char_traits<char> >::operator<<(double)

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

add DWORD PTR [rbp-20], 1

movsd xmm0, QWORD PTR [rbp-40]

addsd xmm0, QWORD PTR [rbp-32]

movsd QWORD PTR [rbp-40], xmm0

jmp .L30

.L29:

movzx eax, BYTE PTR [rbp-61]

cmp al, 66

je .L31

movzx eax, BYTE PTR [rbp-61]

cmp al, 98

jne .L32

.L31:

pxor xmm0, xmm0

movsd QWORD PTR [rbp-32], xmm0

mov eax, DWORD PTR [rbp-60]

cmp eax, 10

jg .L33

mov eax, DWORD PTR [rbp-56]

cvtsi2sd xmm0, eax

movsd xmm1, QWORD PTR .LC14[rip]

mulsd xmm0, xmm1

movsd xmm1, QWORD PTR .LC15[rip]

addsd xmm0, xmm1

movsd QWORD PTR [rbp-32], xmm0

jmp .L34

.L33:

mov eax, DWORD PTR [rbp-60]

sub eax, 10

cvtsi2sd xmm0, eax

movsd xmm1, QWORD PTR .LC16[rip]

mulsd xmm0, xmm1

movsd xmm1, QWORD PTR .LC15[rip]

addsd xmm1, xmm0

mov eax, DWORD PTR [rbp-56]

cvtsi2sd xmm0, eax

movsd xmm2, QWORD PTR .LC14[rip]

mulsd xmm0, xmm2

addsd xmm0, xmm1

movsd QWORD PTR [rbp-32], xmm0

.L34:

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:.LC17

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rbx, rax

mov edi, 19

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov rdx, rax

mov eax, DWORD PTR [rbp-52]

mov esi, eax

mov rdi, rdx

call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)

mov rbx, rax

mov edi, 27

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov rdx, rax

mov eax, DWORD PTR [rbp-60]

mov esi, eax

mov rdi, rdx

call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)

mov rbx, rax

mov edi, 28

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov rdx, rax

mov eax, DWORD PTR [rbp-56]

mov esi, eax

mov rdi, rdx

call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)

mov rbx, rax

mov edi, 22

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov esi, OFFSET FLAT:.LC13

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rdx, rax

mov rax, QWORD PTR [rbp-32]

mov QWORD PTR [rbp-1112], rax

movsd xmm0, QWORD PTR [rbp-1112]

mov rdi, rdx

call std::basic_ostream<char, std::char_traits<char> >::operator<<(double)

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

add DWORD PTR [rbp-24], 1

movsd xmm0, QWORD PTR [rbp-48]

addsd xmm0, QWORD PTR [rbp-32]

movsd QWORD PTR [rbp-48], xmm0

jmp .L30

.L32:

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:.LC18

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

.L30:

jmp .L35

.L27:

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:.LC19

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:.LC9

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:.LC4

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rbx, rax

mov edi, 20

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov esi, OFFSET FLAT:.LC20

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rbx, rax

mov edi, 20

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov esi, OFFSET FLAT:.LC21

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rbx, rax

mov edi, 20

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov esi, OFFSET FLAT:.LC22

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:.LC9

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:.LC12

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rbx, rax

mov edi, 16

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov rdx, rax

mov eax, DWORD PTR [rbp-20]

mov esi, eax

mov rdi, rdx

call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)

mov rbx, rax

mov edi, 17

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov esi, OFFSET FLAT:.LC13

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rdx, rax

mov rax, QWORD PTR [rbp-40]

mov QWORD PTR [rbp-1112], rax

movsd xmm0, QWORD PTR [rbp-1112]

mov rdi, rdx

call std::basic_ostream<char, std::char_traits<char> >::operator<<(double)

mov rbx, rax

mov edi, 15

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov esi, OFFSET FLAT:.LC13

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

cvtsi2sd xmm0, DWORD PTR [rbp-20]

movsd xmm1, QWORD PTR [rbp-40]

divsd xmm1, xmm0

movapd xmm0, xmm1

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(double)

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

lea rax, [rbp-1104]

mov esi, OFFSET FLAT:.LC17

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rbx, rax

mov edi, 18

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov rdx, rax

mov eax, DWORD PTR [rbp-24]

mov esi, eax

mov rdi, rdx

call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)

mov rbx, rax

mov edi, 17

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov esi, OFFSET FLAT:.LC13

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov rdx, rax

mov rax, QWORD PTR [rbp-48]

mov QWORD PTR [rbp-1112], rax

movsd xmm0, QWORD PTR [rbp-1112]

mov rdi, rdx

call std::basic_ostream<char, std::char_traits<char> >::operator<<(double)

mov rbx, rax

mov edi, 14

call std::setw(int)

mov esi, eax

mov rdi, rbx

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setw)

mov esi, OFFSET FLAT:.LC13

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

cvtsi2sd xmm0, DWORD PTR [rbp-24]

movsd xmm1, QWORD PTR [rbp-48]

divsd xmm1, xmm0

movapd xmm0, xmm1

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(double)

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

lea rax, [rbp-592]

mov rdi, rax

call std::basic_ifstream<char, std::char_traits<char> >::close()

lea rax, [rbp-1104]

mov rdi, rax

call std::basic_ofstream<char, std::char_traits<char> >::close()

mov esi, OFFSET FLAT:.LC23

mov edi, OFFSET FLAT:std::cout

call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

mov rdi, rax

call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

mov ebx, 0

lea rax, [rbp-1104]

mov rdi, rax

call std::basic_ofstream<char, std::char_traits<char> >::~basic_ofstream()

lea rax, [rbp-592]

mov rdi, rax

call std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream()

mov eax, ebx

jmp .L41

mov rbx, rax

lea rax, [rbp-1104]

mov rdi, rax

call std::basic_ofstream<char, std::char_traits<char> >::~basic_ofstream()

jmp .L38

mov rbx, rax

.L38:

lea rax, [rbp-592]

mov rdi, rax

call std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream()

mov rax, rbx

mov rdi, rax

call _Unwind_Resume

.L41:

add rsp, 1112

pop rbx

pop rbp

ret

__static_initialization_and_destruction_0(int, int):

push rbp

mov rbp, rsp

sub rsp, 16

mov DWORD PTR [rbp-4], edi

mov DWORD PTR [rbp-8], esi

cmp DWORD PTR [rbp-4], 1

jne .L44

cmp DWORD PTR [rbp-8], 65535

jne .L44

mov edi, OFFSET FLAT:std::__ioinit

call std::ios_base::Init::Init()

mov edx, OFFSET FLAT:__dso_handle

mov esi, OFFSET FLAT:std::__ioinit

mov edi, OFFSET FLAT:std::ios_base::Init::~Init()

call __cxa_atexit

.L44:

nop

leave

ret

_GLOBAL__sub_I_main:

push rbp

mov rbp, rsp

mov esi, 65535

mov edi, 1

call __static_initialization_and_destruction_0(int, int)

pop rbp

ret

.LC10:

  .long 0

.long 1075707904

.LC11:

.long 0

.long 1077477376

.LC14:

.long 0

.long 1078525952

.LC15:

.long 0

.long 1079410688

.LC16:

.long 0

.long 1075052544

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote