// File: estwings57[P]CasHMC/sources/Packet.cpp
// Function: CasHMC::Packet::Packet(CasHMC::Packet const&)
Packet::Packet(const Packet &f)
{
	trace = f.trace;
	packetType = f.packetType;
	bufPopDelay = f.bufPopDelay;
	chkCRC = f.chkCRC;
	chkRRP = f.chkRRP;
	segment = f.segment;
	reqDataSize = f.reqDataSize;
	
	CUB = f.CUB;	TAG = f.TAG;
	LNG = f.LNG;	CMD = f.CMD;
	
	CRC = f.CRC;	RTC = f.RTC;
	SLID = f.SLID;	SEQ = f.SEQ;
	FRP = f.FRP;	RRP = f.RRP;
	
	ADRS = f.ADRS;	Pb = f.Pb;
	
	AF = f.AF;		ERRSTAT = f.ERRSTAT;
	DINV = f.DINV;
	
	if(CRC_CHECK) {
		if(LNG>1) {
			DATA = new uint64_t[(LNG-1)*2];
			uint64_t tempData;
			for(int i=0; i<(LNG-1)*2; i++) {
				tempData = rand();
				tempData = (tempData<<32)|rand();
				DATA[i] = tempData;
			}
		}
		else {
			DATA = NULL;
		}
		MakeCRCtable(CRCtable, 0xEB31D82E);
	}
	else {
		DATA = NULL;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq 0x21cd9(%rip), %rcx     # 0x65ce8
addq $0x10, %rcx
movq %rcx, (%rax)
movq -0x10(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rcx
movl 0x10(%rcx), %ecx
movl %ecx, 0x10(%rax)
movq -0x10(%rbp), %rcx
movl 0x14(%rcx), %ecx
movl %ecx, 0x14(%rax)
movq -0x10(%rbp), %rcx
movb 0x420(%rcx), %cl
andb $0x1, %cl
movb %cl, 0x420(%rax)
movq -0x10(%rbp), %rcx
movb 0x421(%rcx), %cl
andb $0x1, %cl
movb %cl, 0x421(%rax)
movq -0x10(%rbp), %rcx
movb 0x422(%rcx), %cl
andb $0x1, %cl
movb %cl, 0x422(%rax)
movq -0x10(%rbp), %rcx
movl 0x424(%rcx), %ecx
movl %ecx, 0x424(%rax)
movq -0x10(%rbp), %rcx
movl 0x428(%rcx), %ecx
movl %ecx, 0x428(%rax)
movq -0x10(%rbp), %rcx
movl 0x42c(%rcx), %ecx
movl %ecx, 0x42c(%rax)
movq -0x10(%rbp), %rcx
movl 0x430(%rcx), %ecx
movl %ecx, 0x430(%rax)
movq -0x10(%rbp), %rcx
movl 0x434(%rcx), %ecx
movl %ecx, 0x434(%rax)
movq -0x10(%rbp), %rcx
movl 0x438(%rcx), %ecx
movl %ecx, 0x438(%rax)
movq -0x10(%rbp), %rcx
movl 0x43c(%rcx), %ecx
movl %ecx, 0x43c(%rax)
movq -0x10(%rbp), %rcx
movl 0x440(%rcx), %ecx
movl %ecx, 0x440(%rax)
movq -0x10(%rbp), %rcx
movl 0x444(%rcx), %ecx
movl %ecx, 0x444(%rax)
movq -0x10(%rbp), %rcx
movl 0x448(%rcx), %ecx
movl %ecx, 0x448(%rax)
movq -0x10(%rbp), %rcx
movl 0x44c(%rcx), %ecx
movl %ecx, 0x44c(%rax)
movq -0x10(%rbp), %rcx
movq 0x450(%rcx), %rcx
movq %rcx, 0x450(%rax)
movq -0x10(%rbp), %rcx
movl 0x458(%rcx), %ecx
movl %ecx, 0x458(%rax)
movq -0x10(%rbp), %rcx
movl 0x45c(%rcx), %ecx
movl %ecx, 0x45c(%rax)
movq -0x10(%rbp), %rcx
movl 0x460(%rcx), %ecx
movl %ecx, 0x460(%rax)
movq -0x10(%rbp), %rcx
movl 0x464(%rcx), %ecx
movl %ecx, 0x464(%rax)
leaq 0x223f4(%rip), %rax     # 0x6656c
testb $0x1, (%rax)
je 0x4425c
movq -0x28(%rbp), %rax
cmpl $0x1, 0x430(%rax)
jbe 0x44239
movq -0x28(%rbp), %rax
movl 0x430(%rax), %eax
subl $0x1, %eax
shll %eax
movl %eax, %eax
movl $0x8, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x4030
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x18(%rax)
movl $0x0, -0x1c(%rbp)
movq -0x28(%rbp), %rcx
movl -0x1c(%rbp), %eax
movl 0x430(%rcx), %ecx
subl $0x1, %ecx
shll %ecx
cmpl %ecx, %eax
jae 0x44237
callq 0x4120
cltq
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
shlq $0x20, %rax
movq %rax, -0x30(%rbp)
callq 0x4120
movq -0x30(%rbp), %rcx
movl %eax, %edx
movq -0x28(%rbp), %rax
movslq %edx, %rdx
orq %rdx, %rcx
movq %rcx, -0x18(%rbp)
movq -0x18(%rbp), %rdx
movq 0x18(%rax), %rax
movslq -0x1c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x441d6
jmp 0x44245
movq -0x28(%rbp), %rax
movq $0x0, 0x18(%rax)
movq -0x28(%rbp), %rdi
movq %rdi, %rsi
addq $0x20, %rsi
movl $0xeb31d82e, %edx       # imm = 0xEB31D82E
callq 0x43cf0
jmp 0x44268
movq -0x28(%rbp), %rax
movq $0x0, 0x18(%rax)
addq $0x30, %rsp
popq %rbp
retq
nop