// File: /workspace/github_cpp_makefile_star2_O1/dramninjasUMD[P]BOBSim/Transaction.cpp
// Function: BOBSim::operator<<(std::ostream&, BOBSim::Transaction const&)
ostream& operator<<(ostream &out, const Transaction &t)
{
	if(t.transactionType == DATA_READ)
	{
		out <<"T"<<t.transactionID<<" [Read] [0x" << hex << setw(8)<<setfill('0')<<t.address << dec << "] port["<<t.portID<<"] core["<<t.coreID<<"] "<<((t.originatedFromLogicOp)?"[FromLogic]":"");
	}
	else if(t.transactionType == DATA_WRITE)
	{
		out <<"T"<<t.transactionID<<" [Write] [0x" << hex << setw(8)<<setfill('0')<<t.address << dec << "] port["<<t.portID<<"] core["<<t.coreID<<"] "<<((t.originatedFromLogicOp)?"[FromLogic]":"");
	}
	else if(t.transactionType == RETURN_DATA)
	{
		out << "T"<<t.transactionID<<" [Data] [0x" << hex << setw(8)<<setfill('0')<<t.address << dec << "] port["<<t.portID<<"] core["<<t.coreID<<"]";
	}
	else if(t.transactionType == LOGIC_OPERATION)
	{
		out << "T" << t.transactionID << " [LogicOp] [0x" << hex << setw(8) << setfill('0') << t.address << dec << "]";
	}
	else if(t.transactionType == LOGIC_RESPONSE)
	{
		out << "T" << t.transactionID << " [LogicResponse] [0x" << hex << setw(8) << setfill('0') << t.address << dec<<"]";
	}
	else
	{
		out << "T" << t.transactionID << " [?"<<t.transactionType<<"?] [0x" << hex << setw(8) << setfill('0') << t.address << dec<<"]";
		out << "unknown transaction type"<<endl;;
		exit(0);
	}

	return out;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
movl (%rsi), %eax
cmpq $0x4, %rax
ja 0x128f0
leaq 0x2603(%rip), %rcx      # 0x14a60
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x2607(%rip), %rsi      # 0x14a74
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3200
movl 0x18(%r14), %esi
movq %rbx, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x25e6(%rip), %rsi      # 0x14a76
movl $0xb, %r13d
movl $0xb, %edx
movq %rax, %rdi
callq 0x3200
movq (%r15), %rax
movq -0x18(%rax), %rcx
movl 0x18(%r15,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%r15,%rcx)
movq -0x18(%rax), %rcx
movq $0x8, 0x10(%r15,%rcx)
movq -0x18(%rax), %rax
leaq (%r15,%rax), %r12
cmpb $0x0, 0xe1(%r15,%rax)
jne 0x124f8
movq %r12, %rdi
movl $0x20, %esi
callq 0x31b0
movb %al, 0xe0(%r12)
movb $0x1, 0xe1(%r12)
movb $0x30, 0xe0(%r12)
movq 0x8(%r14), %rsi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%r15,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%r15,%rax)
leaq 0x2554(%rip), %rsi      # 0x14a82
movl $0x7, %edx
movq %r15, %rdi
callq 0x3200
movl 0x1c(%r14), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x2539(%rip), %rsi      # 0x14a8a
movl $0x7, %edx
movq %rax, %rdi
callq 0x3200
movl 0x20(%r14), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x19fa(%rip), %rsi      # 0x13f6e
movl $0x2, %edx
movq %rax, %rdi
callq 0x3200
leaq 0x250a(%rip), %rax      # 0x14a92
leaq 0x1051(%rip), %rsi      # 0x135e0
xorl %edx, %edx
cmpb $0x0, 0x30(%r14)
cmovneq %rax, %rsi
cmovneq %r13, %rdx
jmp 0x128db
leaq 0x24ca(%rip), %rsi      # 0x14a74
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3200
movl 0x18(%r14), %esi
movq %rbx, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x24f9(%rip), %rsi      # 0x14ac6
movl $0x14, %edx
jmp 0x12709
leaq 0x2496(%rip), %rsi      # 0x14a74
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3200
movl 0x18(%r14), %esi
movq %rbx, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x24aa(%rip), %rsi      # 0x14aab
movl $0xb, %edx
movq %rax, %rdi
callq 0x3200
movq (%r15), %rax
movq -0x18(%rax), %rcx
movl 0x18(%r15,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%r15,%rcx)
movq -0x18(%rax), %rcx
movq $0x8, 0x10(%r15,%rcx)
movq -0x18(%rax), %rax
leaq (%r15,%rax), %r12
cmpb $0x0, 0xe1(%r15,%rax)
jne 0x12663
movq %r12, %rdi
movl $0x20, %esi
callq 0x31b0
movb %al, 0xe0(%r12)
movb $0x1, 0xe1(%r12)
movb $0x30, 0xe0(%r12)
movq 0x8(%r14), %rsi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%r15,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%r15,%rax)
leaq 0x23e9(%rip), %rsi      # 0x14a82
movl $0x7, %edx
movq %r15, %rdi
callq 0x3200
movl 0x1c(%r14), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x23ce(%rip), %rsi      # 0x14a8a
movl $0x7, %edx
movq %rax, %rdi
callq 0x3200
movl 0x20(%r14), %esi
movq %r15, %rdi
callq 0x3120
jmp 0x12790
leaq 0x2393(%rip), %rsi      # 0x14a74
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3200
movl 0x18(%r14), %esi
movq %rbx, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x23b3(%rip), %rsi      # 0x14ab7
movl $0xe, %edx
movq %rax, %rdi
callq 0x3200
movq (%r15), %rax
movq -0x18(%rax), %rcx
movl 0x18(%r15,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%r15,%rcx)
movq -0x18(%rax), %rcx
movq $0x8, 0x10(%r15,%rcx)
movq -0x18(%rax), %rax
leaq (%r15,%rax), %r12
cmpb $0x0, 0xe1(%r15,%rax)
jne 0x12766
movq %r12, %rdi
movl $0x20, %esi
callq 0x31b0
movb %al, 0xe0(%r12)
movb $0x1, 0xe1(%r12)
movb $0x30, 0xe0(%r12)
movq 0x8(%r14), %rsi
movq %r15, %rdi
callq 0x3120
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x1a42(%rip), %rsi      # 0x141d9
movl $0x1, %edx
movq %rax, %rdi
jmp 0x128de
leaq 0x22c9(%rip), %rsi      # 0x14a74
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3200
movl 0x18(%r14), %esi
movq %rbx, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x22d0(%rip), %rsi      # 0x14a9e
movl $0xc, %edx
movq %rax, %rdi
callq 0x3200
movq (%r15), %rax
movq -0x18(%rax), %rcx
movl 0x18(%r15,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%r15,%rcx)
movq -0x18(%rax), %rcx
movq $0x8, 0x10(%r15,%rcx)
movq -0x18(%rax), %rax
leaq (%r15,%rax), %r12
cmpb $0x0, 0xe1(%r15,%rax)
jne 0x12830
movq %r12, %rdi
movl $0x20, %esi
callq 0x31b0
movb %al, 0xe0(%r12)
movb $0x1, 0xe1(%r12)
movb $0x30, 0xe0(%r12)
movq 0x8(%r14), %rsi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%r15,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%r15,%rax)
leaq 0x221c(%rip), %rsi      # 0x14a82
movl $0x7, %edx
movq %r15, %rdi
callq 0x3200
movl 0x1c(%r14), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x2201(%rip), %rsi      # 0x14a8a
movl $0x7, %edx
movq %rax, %rdi
callq 0x3200
movl 0x20(%r14), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x16c2(%rip), %rsi      # 0x13f6e
movl $0x2, %edx
movq %rax, %rdi
callq 0x3200
leaq 0x21d2(%rip), %rax      # 0x14a92
leaq 0xd19(%rip), %rsi       # 0x135e0
xorl %ecx, %ecx
cmpb $0x0, 0x30(%r14)
cmovneq %rax, %rsi
movl $0xb, %edx
cmoveq %rcx, %rdx
movq %r15, %rdi
callq 0x3200
movq %rbx, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
leaq 0x217d(%rip), %rsi      # 0x14a74
movq %rbx, %rdi
callq 0x31c0
movl 0x18(%r14), %esi
movq %rax, %rdi
callq 0x3260
leaq 0x21c9(%rip), %rsi      # 0x14adb
movq %rax, %rdi
callq 0x31c0
movl (%r14), %esi
movq %rax, %rdi
callq 0x3330
leaq 0x21b3(%rip), %rsi      # 0x14adf
movq %rax, %rdi
callq 0x31c0
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 $0x8, 0x10(%rax,%rcx)
movq %rax, %rdi
movl $0x30, %esi
callq 0x32c0
movq 0x8(%r14), %rsi
movq %rax, %rdi
callq 0x3060
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x184e(%rip), %rsi      # 0x141d9
movq %rax, %rdi
callq 0x31c0
leaq 0x214c(%rip), %rsi      # 0x14ae6
movq %rbx, %rdi
callq 0x31c0
movq %rax, %rdi
callq 0x30d0
xorl %edi, %edi
callq 0x3220