// File: /workspace/github_cpp_makefile_star2_O3/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 0x1279c
leaq 0x282f(%rip), %rcx      # 0x14b58
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x2833(%rip), %rsi      # 0x14b6c
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3200
movl 0x18(%r14), %esi
movq %rbx, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x2812(%rip), %rsi      # 0x14b6e
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 0x123bc
movq %r12, %rdi
movl $0x20, %esi
callq 0x31b0
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 0x2788(%rip), %rsi      # 0x14b7a
movl $0x7, %edx
movq %r15, %rdi
callq 0x3200
movl 0x1c(%r14), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x276d(%rip), %rsi      # 0x14b82
movl $0x7, %edx
movq %rax, %rdi
callq 0x3200
movl 0x20(%r14), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x1bd6(%rip), %rsi      # 0x1400e
movl $0x2, %edx
movq %rax, %rdi
callq 0x3200
leaq 0x273e(%rip), %rax      # 0x14b8a
leaq 0x11dd(%rip), %rsi      # 0x13630
xorl %edx, %edx
cmpb $0x0, 0x30(%r14)
cmovneq %rax, %rsi
cmovneq %r13, %rdx
jmp 0x12787
leaq 0x26fe(%rip), %rsi      # 0x14b6c
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3200
movl 0x18(%r14), %esi
movq %rbx, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x272d(%rip), %rsi      # 0x14bbe
movl $0x14, %edx
jmp 0x125c5
leaq 0x26ca(%rip), %rsi      # 0x14b6c
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3200
movl 0x18(%r14), %esi
movq %rbx, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x26de(%rip), %rsi      # 0x14ba3
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 0x1251f
movq %r12, %rdi
movl $0x20, %esi
callq 0x31b0
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 0x2625(%rip), %rsi      # 0x14b7a
movl $0x7, %edx
movq %r15, %rdi
callq 0x3200
movl 0x1c(%r14), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x260a(%rip), %rsi      # 0x14b82
movl $0x7, %edx
movq %rax, %rdi
callq 0x3200
movl 0x20(%r14), %esi
movq %r15, %rdi
callq 0x3120
jmp 0x12644
leaq 0x25cf(%rip), %rsi      # 0x14b6c
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3200
movl 0x18(%r14), %esi
movq %rbx, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x25ef(%rip), %rsi      # 0x14baf
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 0x1261a
movq %r12, %rdi
movl $0x20, %esi
callq 0x31b0
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 0x1c2e(%rip), %rsi      # 0x14279
movl $0x1, %edx
movq %rax, %rdi
jmp 0x1278a
leaq 0x250d(%rip), %rsi      # 0x14b6c
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3200
movl 0x18(%r14), %esi
movq %rbx, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x2514(%rip), %rsi      # 0x14b96
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 0x126dc
movq %r12, %rdi
movl $0x20, %esi
callq 0x31b0
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 0x2468(%rip), %rsi      # 0x14b7a
movl $0x7, %edx
movq %r15, %rdi
callq 0x3200
movl 0x1c(%r14), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x244d(%rip), %rsi      # 0x14b82
movl $0x7, %edx
movq %rax, %rdi
callq 0x3200
movl 0x20(%r14), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x18b6(%rip), %rsi      # 0x1400e
movl $0x2, %edx
movq %rax, %rdi
callq 0x3200
leaq 0x241e(%rip), %rax      # 0x14b8a
leaq 0xebd(%rip), %rsi       # 0x13630
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 0x23c9(%rip), %rsi      # 0x14b6c
movq %rbx, %rdi
callq 0x31c0
movl 0x18(%r14), %esi
movq %rax, %rdi
callq 0x3260
leaq 0x2415(%rip), %rsi      # 0x14bd3
movq %rax, %rdi
callq 0x31c0
movl (%r14), %esi
movq %rax, %rdi
callq 0x3330
leaq 0x23ff(%rip), %rsi      # 0x14bd7
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 0x1a42(%rip), %rsi      # 0x14279
movq %rax, %rdi
callq 0x31c0
leaq 0x2398(%rip), %rsi      # 0x14bde
movq %rbx, %rdi
callq 0x31c0
movq %rax, %rdi
callq 0x30d0
xorl %edi, %edi
callq 0x3220