// File: /workspace/github_cpp_makefile_star2_O2/estwings57[P]CasHMC/sources/Transaction.cpp
// Function: CasHMC::operator<<(std::ostream&, CasHMC::Transaction const&)
ostream& operator<<(ostream &out, const Transaction &t)
{
	string header;
	stringstream id;
	id << t.transactionID;

	switch(t.transactionType) {
		case DATA_READ:		header = "[T" + id.str() + "-Read]";	break;
		case DATA_WRITE:	header = "[T" + id.str() + "-Write]";	break;
		case RETURN_DATA:	header = "[T" + id.str() + "-Data]";	break;
		//ATOMICS commands for HMC
		case ATM_2ADD8:		header = "[T" + id.str() + "-2ADD8]";	break;		case ATM_ADD16:		header = "[T" + id.str() + "-ADD16]";	break;
		case ATM_P_2ADD8:	header = "[T" + id.str() + "-P_2ADD8]";	break;		case ATM_P_ADD16:	header = "[T" + id.str() + "-P_ADD16]";	break;
		case ATM_2ADDS8R:	header = "[T" + id.str() + "-2ADDS8R]";	break;		case ATM_ADDS16R:	header = "[T" + id.str() + "-ADDS16R]";	break;
		case ATM_INC8:		header = "[T" + id.str() + "-INC8]";	break;		case ATM_P_INC8:	header = "[T" + id.str() + "-P_INC8]";	break;
		case ATM_XOR16:		header = "[T" + id.str() + "-XOR16]";	break;		case ATM_OR16:		header = "[T" + id.str() + "-OR16]";	break;
		case ATM_NOR16:		header = "[T" + id.str() + "-NOR16]";	break;		case ATM_AND16:		header = "[T" + id.str() + "-AND16]";	break;
		case ATM_NAND16:	header = "[T" + id.str() + "-NAND16]";	break;		case ATM_CASGT8:	header = "[T" + id.str() + "-CASGT8]";	break;
		case ATM_CASLT8:	header = "[T" + id.str() + "-CASLT8]";	break;		case ATM_CASGT16:	header = "[T" + id.str() + "-CASGT16]";	break;
		case ATM_CASLT16:	header = "[T" + id.str() + "-CASLT16]";	break;		case ATM_CASEQ8:	header = "[T" + id.str() + "-CASEQ8]";	break;
		case ATM_CASZERO16:	header = "[T" + id.str() + "-CASZR16]";	break;		case ATM_EQ16:		header = "[T" + id.str() + "-EQ16]";	break;
		case ATM_EQ8:		header = "[T" + id.str() + "-EQ8]";		break;		case ATM_BWR:		header = "[T" + id.str() + "-BWR]";		break;
		case ATM_P_BWR:		header = "[T" + id.str() + "-P_BWR]";	break;		case ATM_BWR8R:		header = "[T" + id.str() + "-BWR8R]";	break;
		case ATM_SWAP16:	header = "[T" + id.str() + "-SWAP16]";	break;
		default:
			ERROR(" (TS) == Error - Trying to print unknown kind of transaction type");
			ERROR("         T"<<t.transactionID<<" [?"<<t.transactionType<<"?] [0x"<<hex<<setw(16)<<setfill('0')<<t.address<<dec<<"]");
			exit(0);
	}
	out<<header;
	return out;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x70(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x80(%rsp), %rdi
callq 0x4230
leaq 0x90(%rsp), %rdi
movl 0x24(%r14), %esi
callq 0x4210
movl 0x10(%r14), %eax
cmpq $0x1b, %rax
ja 0x2125e
leaq 0x6d92(%rip), %rcx      # 0x278b0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6df9(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x6de8(%rip), %rdx      # 0x2793a
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6dba(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x67ab(%rip), %rdx      # 0x2733c
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6d7b(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x6710(%rip), %rdx      # 0x272e0
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6d3c(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x66c0(%rip), %rdx      # 0x272cf
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6cfd(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x666a(%rip), %rdx      # 0x272b8
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6cbe(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x65eb(%rip), %rdx      # 0x27278
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6c7f(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x65f4(%rip), %rdx      # 0x272c0
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6c40(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x659d(%rip), %rdx      # 0x272a8
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6c01(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x65e2(%rip), %rdx      # 0x2732c
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6bc2(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x659d(%rip), %rdx      # 0x27326
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6b83(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x6b81(%rip), %rdx      # 0x27949
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6b44(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x64d0(%rip), %rdx      # 0x272d7
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6b05(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x642a(%rip), %rdx      # 0x27270
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6ac6(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x640f(%rip), %rdx      # 0x27294
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6a87(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x6a7d(%rip), %rdx      # 0x27941
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6a48(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x63e6(%rip), %rdx      # 0x272e9
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6a09(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x63c4(%rip), %rdx      # 0x27306
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x69ca(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x62ff(%rip), %rdx      # 0x27280
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x698b(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x634f(%rip), %rdx      # 0x2730f
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x694c(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x62c8(%rip), %rdx      # 0x272c7
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x690d(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x624c(%rip), %rdx      # 0x2728a
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x68ce(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x6275(%rip), %rdx      # 0x272f2
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x688f(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x61f3(%rip), %rdx      # 0x272af
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6850(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x61a3(%rip), %rdx      # 0x2729e
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6811(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x61df(%rip), %rdx      # 0x27319
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x67d2(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x6183(%rip), %rdx      # 0x272fc
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x6796(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x616b(%rip), %rdx      # 0x27320
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
jmp 0x21200
leaq 0x98(%rsp), %rsi
movq %rsp, %rdi
callq 0x4450
leaq 0x675a(%rip), %rsi      # 0x27937
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xdcaa
leaq 0x6143(%rip), %rdx      # 0x27334
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xdeea
leaq 0x60(%rsp), %rdi
leaq 0x40(%rsp), %r14
movq %r14, %rsi
callq 0x4380
movq %r14, %rdi
callq 0x4598
leaq 0x20(%rsp), %rdi
callq 0x4598
movq %rsp, %rdi
callq 0x4598
leaq 0x60(%rsp), %rsi
movq %rbx, %rdi
callq 0x42b0
leaq 0x80(%rsp), %rdi
callq 0x4260
leaq 0x60(%rsp), %rdi
callq 0x4598
movq %rbx, %rax
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r14
retq
movq 0xfd8b(%rip), %rdi      # 0x30ff0
leaq 0x2db6(%rip), %rsi      # 0x24022
callq 0x4300
leaq 0x66d8(%rip), %rsi      # 0x27950
movq %rax, %rdi
callq 0x4300
leaq 0x35f0(%rip), %rsi      # 0x24877
movq %rax, %rdi
callq 0x4300
pushq $0x47
popq %rsi
movq %rax, %rdi
callq 0x44f0
leaq 0x2da0(%rip), %rsi      # 0x24041
movq %rax, %rdi
callq 0x4300
leaq 0x66b8(%rip), %rsi      # 0x27968
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
movq 0xfd29(%rip), %rdi      # 0x30ff0
leaq 0x2d54(%rip), %rsi      # 0x24022
callq 0x4300
leaq 0x6676(%rip), %rsi      # 0x27950
movq %rax, %rdi
callq 0x4300
leaq 0x358e(%rip), %rsi      # 0x24877
movq %rax, %rdi
callq 0x4300
pushq $0x48
popq %rsi
movq %rax, %rdi
callq 0x44f0
leaq 0x2d3e(%rip), %rsi      # 0x24041
movq %rax, %rdi
callq 0x4300
leaq 0x6698(%rip), %rsi      # 0x279aa
movq %rax, %rdi
callq 0x4300
movl 0x24(%r14), %esi
movq %rax, %rdi
callq 0x4210
leaq 0x60ef(%rip), %rsi      # 0x2741c
movq %rax, %rdi
callq 0x4300
movl 0x10(%r14), %esi
movq %rax, %rdi
callq 0x44f0
leaq 0x666d(%rip), %rsi      # 0x279b5
movq %rax, %rdi
callq 0x4300
movq (%rax), %rcx
movq -0x18(%rcx), %rdx
movl 0x18(%rax,%rdx), %esi
andl $-0x4b, %esi
orl $0x8, %esi
movl %esi, 0x18(%rax,%rdx)
movq -0x18(%rcx), %rcx
movq $0x10, 0x10(%rax,%rcx)
pushq $0x30
popq %rsi
movq %rax, %rdi
callq 0x4440
movq 0x18(%r14), %rsi
movq %rax, %rdi
callq 0x4210
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x46b5(%rip), %rsi      # 0x25a5a
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
xorl %edi, %edi
callq 0x4370
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
jmp 0x213f2
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x4598
jmp 0x2143a
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
jmp 0x21437
movq %rax, %rbx
movq %rsp, %rdi
callq 0x4598
jmp 0x21484
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
jmp 0x21481
movq %rax, %rbx
jmp 0x21491
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x4260
leaq 0x60(%rsp), %rdi
callq 0x4598
movq %rbx, %rdi
callq 0x4520
nop