// File: /workspace/github_cpp_makefile_star2_O2/estwings57[P]CasHMC/sources/CrossbarSwitch.cpp
// Function: CasHMC::CrossbarSwitch::Update()
void CrossbarSwitch::Update()
{	
	//Downstream buffer state
	if(bufPopDelay == 0) {
		for(int i=0; i<downBuffers.size(); i++) {
			if(downBuffers[i] != NULL) {
				//Check request size and the maximum block size
				if(downBuffers[i]->reqDataSize > ADDRESS_MAPPING) {
					int segPacket = ceil((double)downBuffers[i]->reqDataSize/ADDRESS_MAPPING);
					downBuffers[i]->reqDataSize = ADDRESS_MAPPING;
					DEBUG(ALI(18)<<header<<ALI(15)<<*downBuffers[i]<<"Down) Packet is DIVIDED into "<<segPacket<<" segment packets by max block size");
					
					//the packet is divided into segment packets.
					Packet *tempPacket = downBuffers[i];
					downBuffers.erase(downBuffers.begin()+i, downBuffers.begin()+i+downBuffers[i]->LNG);
					if(tempPacket->LNG > 1)	tempPacket->LNG = 1 + ADDRESS_MAPPING/16;	//one flit is 16 bytes
					for(int j=0; j<segPacket; j++) {
						Packet *vaultPacket = new Packet(*tempPacket);
						vaultPacket->ADRS += j*ADDRESS_MAPPING;
						if(j>0)	vaultPacket->trace = NULL;
						downBuffers.insert(downBuffers.begin()+i, vaultPacket);
						for(int k=1; k<vaultPacket->LNG; k++) {		//Virtual tail packet
							downBuffers.insert(downBuffers.begin()+i+1, NULL);
						}
						i += vaultPacket->LNG;
						vaultPacket->segment = true;
						pendingSegTag.push_back(vaultPacket->TAG);
					}
					delete tempPacket;
				}
				else {
					unsigned vaultMap = (downBuffers[i]->ADRS >> _log2(ADDRESS_MAPPING)) & (NUM_VAULTS-1);
					if(downBufferDest[vaultMap]->ReceiveDown(downBuffers[i])) {
						DEBUG(ALI(18)<<header<<ALI(15)<<*downBuffers[i]<<"Down) SENDING packet to vault controller "<<vaultMap<<" (VC_"<<vaultMap<<")");
						downBuffers.erase(downBuffers.begin()+i, downBuffers.begin()+i+downBuffers[i]->LNG);
						i--;
					}
					else {
						//DEBUG(ALI(18)<<header<<ALI(15)<<*downBuffers[i]<<"Down) Vault controller buffer FULL");	
					}
				}
			}
		}
	}
	
	//Upstream buffer state
	for(int i=0; i<upBuffers.size(); i++) {
		if(upBuffers[i] != NULL) {
			//If the segment packet is arrived
			if(upBuffers[i]->segment) {
				//Check a stored segment packet tag
				bool foundSeg = false;
				bool foundLastSeg = true;
				for(int j=0; j<pendingSegTag.size(); j++) {
					if(upBuffers[i]->TAG == pendingSegTag[j]) {
						pendingSegTag.erase(pendingSegTag.begin()+j);
						foundSeg = true;
						//Check whether upBuffers[i] packet is the last segment packet or not 
						for(int k=j; k<pendingSegTag.size(); k++) {
							if(upBuffers[i]->TAG == pendingSegTag[k]) {
								DEBUG(ALI(18)<<header<<ALI(15)<<*upBuffers[i]<<"Up)   Segment packet is WAITING for the others");
								foundLastSeg = false;
								break;
							}
						}
						if(foundLastSeg) {
							DEBUG(ALI(18)<<header<<ALI(15)<<*upBuffers[i]<<"Up)   The LAST segment packet is arrived");
						}
						break;
					}
				}
				if(!foundSeg) {
					ERROR(header<<"  == Error - pendingSegTag doesn't have segment packet tag ["<<*upBuffers[i]<<"]");
					exit(0);
				}
				
				//Segment packets are combined together
				foundSeg = false;
				for(int j=0; j<pendingSegPacket.size(); j++) {
					if(upBuffers[i]->TAG == pendingSegPacket[j]->TAG) {
						if(upBuffers[i]->LNG > 1)	pendingSegPacket[j]->LNG += ADDRESS_MAPPING/16;
						if(upBuffers[i]->trace != NULL) { //It is the first segment packet
							pendingSegPacket[j]->trace = upBuffers[i]->trace;
							pendingSegPacket[j]->ADRS = upBuffers[i]->ADRS;
						}
						//Delete a segment packet
						int packetLNG = upBuffers[i]->LNG;
						delete upBuffers[i];
						upBuffers.erase(upBuffers.begin()+i, upBuffers.begin()+i+packetLNG);
						foundSeg = true;
						//All segment packets are combined
						if(foundLastSeg) {
							Packet *combPacket = new Packet(*pendingSegPacket[j]);
							delete pendingSegPacket[j];
							pendingSegPacket.erase(pendingSegPacket.begin()+j);
							combPacket->segment = false;
							upBuffers.insert(upBuffers.begin(), combPacket);
							for(int k=1; k<combPacket->LNG; k++) {	//Virtual tail packet
								upBuffers.insert(upBuffers.begin()+1, NULL);
							}
						}
						else {
							i--;
						}
						break;
					}
				}
				//Thr first arrived segment packet
				if(!foundSeg) {
					pendingSegPacket.push_back(upBuffers[i]);
					upBuffers.erase(upBuffers.begin()+i, upBuffers.begin()+i+upBuffers[i]->LNG);
					i--;
				}
			}
			else {
				for(int l=0; l<NUM_LINKS; l++) {
					int link = FindAvailableLink(inServiceLink, upBufferDest);
					if(link == -1) {
						//DEBUG(ALI(18)<<header<<ALI(15)<<*upBuffers[i]<<"Up)   all packet buffer FULL");
					}
					else if(upBufferDest[link]->currentState != ACTIVE
					&& upBufferDest[link]->currentState != LINK_RETRY) {
						continue;
						//DEBUG(ALI(18)<<header<<ALI(15)<<*downBuffers[0]<<"Down) link "<<l<<" is not ACTIVE mode ["<<downLinkMasters[link]->powerMode<<"]");
					}
					else {
						if(upBufferDest[link]->Receive(upBuffers[i])) {
							DEBUG(ALI(18)<<header<<ALI(15)<<*upBuffers[i]<<"Up)   SENDING packet to link master "<<link<<" (LM_U"<<link<<")");
							upBuffers.erase(upBuffers.begin()+i, upBuffers.begin()+i+upBuffers[i]->LNG);
							i--;
							break;
						}
						else {
							//DEBUG(ALI(18)<<header<<ALI(15)<<*upBuffers[i]<<"Up)   Link master buffer FULL");
						}
					}
				}
			}
		}
	}
	
	Step();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, 0x8(%rsp)
cmpl $0x0, 0x200(%rdi)
je 0x129bf
movq 0x8(%rsp), %r12
leaq 0x1e8(%r12), %r14
leaq 0x238(%r12), %rax
movq %rax, 0x20(%rsp)
leaq 0x220(%r12), %r13
leaq 0x20(%r12), %rax
movq %rax, 0x30(%rsp)
leaq 0x240(%r12), %rax
movq %rax, 0x28(%rsp)
leaq 0x258(%r12), %rax
movq %rax, 0x40(%rsp)
xorl %ebp, %ebp
movslq %ebp, %rbx
movq 0x1e8(%r12), %rax
movq 0x1f0(%r12), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rbx, %rcx
jbe 0x129a8
movq (%rax,%rbx,8), %rax
testq %rax, %rax
je 0x129a1
cmpb $0x0, 0x422(%rax)
movq %rbp, (%rsp)
je 0x1259b
movq 0x240(%r12), %rsi
movq 0x248(%r12), %rcx
subq %rsi, %rcx
sarq $0x2, %rcx
xorl %r15d, %r15d
cmpq %r15, %rcx
je 0x12d58
movl 0x42c(%rax), %edx
cmpl (%rsi), %edx
je 0x125f2
incq %r15
addq $0x4, %rsi
jmp 0x1257f
xorl %ebp, %ebp
leaq 0x1ef04(%rip), %rax     # 0x314a8
cmpl (%rax), %ebp
jge 0x12674
movq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x1c4f5
cmpl $-0x1, %eax
je 0x125ee
movl %eax, %r15d
cltq
movq (%r13), %rcx
movq (%rcx,%rax,8), %rdi
movl 0x200(%rdi), %eax
cmpl $0xb, %eax
je 0x125da
testl %eax, %eax
jne 0x125ee
movq (%r14), %rax
movq (%rax,%rbx,8), %rsi
callq 0x13460
testb %al, %al
jne 0x128bf
incl %ebp
jmp 0x1259d
movq 0x28(%rsp), %rdi
callq 0x111a8
movq 0x248(%r12), %rax
movq 0x1e8(%r12), %rcx
movq 0x240(%r12), %rdx
subq %rdx, %rax
sarq $0x2, %rax
cmpq %r15, %rax
movq %r15, %rsi
cmovaq %rax, %rsi
cmpq %r15, %rsi
je 0x1267d
movq (%rcx,%rbx,8), %rdi
movl 0x42c(%rdi), %r8d
leaq 0x1(%r15), %rdi
cmpl (%rdx,%r15,4), %r8d
movq %rdi, %r15
jne 0x12625
decq %rdi
cmpq %rdi, %rax
seta %r9b
leaq 0x1ee35(%rip), %rax     # 0x31488
cmpb $0x1, (%rax)
jne 0x1271b
leaq 0x1ee26(%rip), %rax     # 0x31489
cmpb $0x0, (%rax)
leaq 0x13814(%rip), %r15     # 0x25e81
je 0x126a7
jmp 0x1271b
movq (%rsp), %rbp
jmp 0x129a1
cmpq %r15, %rax
seta %r9b
leaq 0x1edfd(%rip), %rax     # 0x31488
cmpb $0x1, (%rax)
jne 0x1271b
leaq 0x1edee(%rip), %rax     # 0x31489
cmpb $0x0, (%rax)
leaq 0x1380b(%rip), %r15     # 0x25eb0
jne 0x1271b
movb %r9b, 0x18(%rsp)
movq 0x1e91d(%rip), %rdi     # 0x30fd0
movq (%rdi), %rax
movq -0x18(%rax), %rax
movq $0x12, 0x10(%rdi,%rax)
pushq $0x20
popq %rbp
movl %ebp, %esi
callq 0x4440
movq %rax, %rdi
movq 0x30(%rsp), %rsi
callq 0x42b0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movq $0xf, 0x10(%rax,%rcx)
movq %rax, %rdi
movl %ebp, %esi
callq 0x4440
movq (%r14), %rcx
movq (%rcx,%rbx,8), %rsi
movq %rax, %rdi
callq 0x1e2c8
movq %rax, %rdi
movq %r15, %rsi
callq 0x4300
movq %rax, %rdi
callq 0x4180
movb 0x18(%rsp), %r9b
movq 0x258(%r12), %rcx
movq 0x260(%r12), %rax
subq %rcx, %rax
sarq $0x3, %rax
leaq (,%rbx,8), %r15
movq 0x1e8(%r12), %rsi
addq %r15, %rsi
pushq $0x8
popq %rbp
xorl %r12d, %r12d
cmpq %r12, %rax
je 0x12889
movq (%rsi), %rdi
movl 0x42c(%rdi), %edx
movq (%rcx,%r12,8), %r8
incq %r12
addq $-0x8, %rbp
cmpl 0x42c(%r8), %edx
jne 0x1274b
movb %r9b, 0x18(%rsp)
cmpl $0x2, 0x430(%rdi)
jb 0x12797
leaq 0x1ee06(%rip), %rax     # 0x3158c
movl (%rax), %eax
cltd
pushq $0x10
popq %r9
idivl %r9d
addl %eax, 0x430(%r8)
movq 0x8(%rdi), %rax
testq %rax, %rax
je 0x127ba
movq %rax, 0x8(%r8)
movq (%rsi), %rdi
movq 0x450(%rdi), %rax
movq -0x8(%rcx,%r12,8), %rcx
movq %rax, 0x450(%rcx)
movslq 0x430(%rdi), %rbx
movq (%rdi), %rax
callq *0x8(%rax)
addq (%r14), %r15
leaq (%r15,%rbx,8), %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0x132b4
cmpb $0x0, 0x18(%rsp)
jne 0x128af
movl $0x468, %edi            # imm = 0x468
callq 0x4310
movq %rax, %rbx
movq 0x40(%rsp), %r15
movq (%r15), %rax
movq -0x8(%rax,%r12,8), %rsi
movq %rbx, %rdi
callq 0x1df98
movq %rbx, 0x10(%rsp)
movq (%r15), %rsi
movq -0x8(%rsi,%r12,8), %rdi
testq %rdi, %rdi
movq %r15, %rbx
je 0x12824
movq (%rdi), %rax
callq *0x8(%rax)
movq (%rbx), %rsi
subq %rbp, %rsi
movq %rbx, %rdi
callq 0x13408
movq 0x10(%rsp), %rax
movb $0x0, 0x422(%rax)
movq (%r14), %rsi
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x132ba
pushq $0x1
popq %rbx
movq 0x8(%rsp), %r12
leaq 0x38(%rsp), %r15
movq (%rsp), %rbp
movq 0x10(%rsp), %rax
cmpl 0x430(%rax), %ebx
jae 0x129a1
movq (%r14), %rsi
addq $0x8, %rsi
andq $0x0, 0x38(%rsp)
movq %r14, %rdi
movq %r15, %rdx
callq 0x13aaa
incl %ebx
jmp 0x1285c
movq 0x40(%rsp), %rdi
callq 0x13442
movq (%r14), %rax
leaq (%rax,%rbx,8), %rsi
movq (%rsi), %rax
movl 0x430(%rax), %eax
leaq (%rsi,%rax,8), %rdx
movq %r14, %rdi
callq 0x132b4
movq (%rsp), %rbp
decl %ebp
movq 0x8(%rsp), %r12
jmp 0x129a1
leaq 0x1ebc2(%rip), %rax     # 0x31488
cmpb $0x1, (%rax)
jne 0x12981
leaq 0x1ebb3(%rip), %rax     # 0x31489
cmpb $0x0, (%rax)
jne 0x12981
movq 0x1e6ea(%rip), %rdi     # 0x30fd0
movq (%rdi), %rax
movq -0x18(%rax), %rax
movq $0x12, 0x10(%rdi,%rax)
pushq $0x20
popq %rbp
movl %ebp, %esi
callq 0x4440
movq %rax, %rdi
movq 0x30(%rsp), %rsi
callq 0x42b0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movq $0xf, 0x10(%rax,%rcx)
movq %rax, %rdi
movl %ebp, %esi
callq 0x4440
movq (%r14), %rcx
movq (%rcx,%rbx,8), %rsi
movq %rax, %rdi
callq 0x1e2c8
movq %rax, %rdi
leaq 0x135f1(%rip), %rsi     # 0x25f31
callq 0x4300
movq %rax, %rdi
movl %r15d, %esi
callq 0x44f0
movq %rax, %rdi
leaq 0x135fc(%rip), %rsi     # 0x25f56
callq 0x4300
movq %rax, %rdi
movl %r15d, %esi
callq 0x44f0
movq %rax, %rdi
leaq 0x14b5d(%rip), %rsi     # 0x274d1
callq 0x4300
movq %rax, %rdi
callq 0x4180
movq (%r14), %rax
leaq (%rax,%rbx,8), %rsi
movq (%rsi), %rax
movl 0x430(%rax), %eax
leaq (%rsi,%rax,8), %rdx
movq %r14, %rdi
callq 0x132b4
decl %ebx
movl %ebx, %ebp
incl %ebp
jmp 0x12528
movq %r12, %rdi
callq 0x13508
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%rsp), %rax
leaq 0x1d0(%rax), %r14
leaq 0x20(%rax), %rcx
movq %rcx, 0x28(%rsp)
addq $0x240, %rax            # imm = 0x240
movq %rax, 0x18(%rsp)
xorl %r12d, %r12d
leaq 0x38(%rsp), %r15
movslq %r12d, %rbp
movq 0x8(%rsp), %rcx
movq 0x1d0(%rcx), %rax
movq 0x1d8(%rcx), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rbp, %rcx
jbe 0x124e0
movq (%rax,%rbp,8), %r13
testq %r13, %r13
je 0x12d50
movl 0x424(%r13), %eax
leaq 0x1eb64(%rip), %rcx     # 0x3158c
movl (%rcx), %ebx
cmpl %ebx, %eax
jbe 0x12c0e
movl %eax, %eax
cvtsi2sd %rax, %xmm0
cvtsi2sd %ebx, %xmm1
divsd %xmm1, %xmm0
callq 0x4080
cvttsd2si %xmm0, %eax
movl %eax, (%rsp)
movl %ebx, 0x424(%r13)
leaq 0x1ea2d(%rip), %rax     # 0x31488
cmpb $0x1, (%rax)
jne 0x12afc
leaq 0x1ea1e(%rip), %rax     # 0x31489
cmpb $0x0, (%rax)
jne 0x12afc
movq 0x1e555(%rip), %rdi     # 0x30fd0
movq (%rdi), %rax
movq -0x18(%rax), %rax
movq $0x12, 0x10(%rdi,%rax)
pushq $0x20
popq %rbx
movl %ebx, %esi
callq 0x4440
movq %rax, %rdi
movq 0x28(%rsp), %rsi
callq 0x42b0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movq $0xf, 0x10(%rax,%rcx)
movq %rax, %rdi
movl %ebx, %esi
callq 0x4440
movq (%r14), %rcx
movq (%rcx,%rbp,8), %rsi
movq %rax, %rdi
callq 0x1e2c8
movq %rax, %rdi
leaq 0x13341(%rip), %rsi     # 0x25e16
callq 0x4300
movq %rax, %rdi
movl (%rsp), %esi
callq 0x44f0
movq %rax, %rdi
leaq 0x13345(%rip), %rsi     # 0x25e34
callq 0x4300
movq %rax, %rdi
callq 0x4180
movl %r12d, 0x20(%rsp)
movq (%r14), %rax
leaq (%rax,%rbp,8), %rsi
movq (%rsi), %rbp
movl 0x430(%rbp), %eax
leaq (%rsi,%rax,8), %rdx
movq %r14, %rdi
callq 0x132b4
cmpl $0x2, 0x430(%rbp)
jb 0x12b3d
leaq 0x1ea5f(%rip), %rax     # 0x3158c
movl (%rax), %eax
cltd
pushq $0x10
popq %rcx
idivl %ecx
incl %eax
movl %eax, 0x430(%rbp)
xorl %r13d, %r13d
movl (%rsp), %eax
testl %eax, %eax
cmovlel %r13d, %eax
movl %eax, (%rsp)
cmpl (%rsp), %r13d
je 0x12d3c
movl $0x468, %edi            # imm = 0x468
callq 0x4310
movq %rax, %rbx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x1df98
movq %rbp, %r12
movq %rbx, 0x10(%rsp)
leaq 0x1ea0f(%rip), %rax     # 0x3158c
movslq (%rax), %rax
movslq %r13d, %rcx
imulq %rax, %rcx
addq %rcx, 0x450(%rbx)
testl %r13d, %r13d
je 0x12b98
andq $0x0, 0x8(%rbx)
movslq 0x20(%rsp), %rbx
leaq (,%rbx,8), %rsi
addq (%r14), %rsi
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x132ba
pushq $0x1
popq %rbp
movq 0x10(%rsp), %rsi
movl 0x430(%rsi), %eax
cmpl %eax, %ebp
jae 0x12be7
movq (%r14), %rax
leaq (%rax,%rbx,8), %rsi
addq $0x8, %rsi
andq $0x0, 0x38(%rsp)
movq %r14, %rdi
movq %r15, %rdx
callq 0x13aaa
incl %ebp
jmp 0x12bb8
addl %eax, 0x20(%rsp)
movb $0x1, 0x422(%rsi)
addq $0x42c, %rsi            # imm = 0x42C
movq 0x18(%rsp), %rdi
callq 0xe58e
incl %r13d
movq %r12, %rbp
jmp 0x12b4c
movq 0x450(%r13), %r13
movl %ebx, %edi
callq 0x13324
movl %eax, %ecx
shrq %cl, %r13
leaq 0x1e954(%rip), %rax     # 0x3157c
movl (%rax), %eax
decl %eax
andl %eax, %r13d
movq 0x8(%rsp), %rcx
movq 0x1d0(%rcx), %rax
movq 0x208(%rcx), %rcx
movq (%rcx,%r13,8), %rdi
movq (%rax,%rbp,8), %rsi
callq 0x13340
testb %al, %al
je 0x12d50
leaq 0x1e82a(%rip), %rax     # 0x31488
cmpb $0x1, (%rax)
jne 0x12d19
leaq 0x1e81b(%rip), %rax     # 0x31489
cmpb $0x0, (%rax)
jne 0x12d19
movq 0x1e352(%rip), %rdi     # 0x30fd0
movq (%rdi), %rax
movq -0x18(%rax), %rax
movq $0x12, 0x10(%rdi,%rax)
pushq $0x20
popq %rbx
movl %ebx, %esi
callq 0x4440
movq %rax, %rdi
movq 0x28(%rsp), %rsi
callq 0x42b0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movq $0xf, 0x10(%rax,%rcx)
movq %rax, %rdi
movl %ebx, %esi
callq 0x4440
movq (%r14), %rcx
movq (%rcx,%rbp,8), %rsi
movq %rax, %rdi
callq 0x1e2c8
movq %rax, %rdi
leaq 0x1317f(%rip), %rsi     # 0x25e57
callq 0x4300
movq %rax, %rdi
movq %r13, %rsi
callq 0x4210
movq %rax, %rdi
leaq 0x14eb8(%rip), %rsi     # 0x27baa
callq 0x4300
movq %rax, %rdi
movq %r13, %rsi
callq 0x4210
movq %rax, %rdi
leaq 0x147c5(%rip), %rsi     # 0x274d1
callq 0x4300
movq %rax, %rdi
callq 0x4180
movq (%r14), %rax
leaq (%rax,%rbp,8), %rsi
movq (%rsi), %rax
movl 0x430(%rax), %eax
leaq (%rsi,%rax,8), %rdx
movq %r14, %rdi
callq 0x132b4
decl %ebp
movl %ebp, %r12d
jmp 0x12d50
testq %rbp, %rbp
movl 0x20(%rsp), %r12d
je 0x12d50
movq (%rbp), %rax
movq %rbp, %rdi
callq *0x8(%rax)
incl %r12d
jmp 0x129e7
movq 0x1e291(%rip), %rdi     # 0x30ff0
leaq 0x112bc(%rip), %rsi     # 0x24022
callq 0x4300
leaq 0x13167(%rip), %rsi     # 0x25ed9
movq %rax, %rdi
callq 0x4300
leaq 0x11af6(%rip), %rsi     # 0x24877
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
movl $0x85, %esi
callq 0x44f0
leaq 0x112a4(%rip), %rsi     # 0x24041
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
movq 0x30(%rsp), %rsi
callq 0x42b0
leaq 0x1313b(%rip), %rsi     # 0x25ef4
movq %rax, %rdi
callq 0x4300
movq (%r14), %rcx
movq (%rcx,%rbx,8), %rsi
movq %rax, %rdi
callq 0x1e2c8
leaq 0x12c83(%rip), %rsi     # 0x25a5a
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
xorl %edi, %edi
callq 0x4370
jmp 0x12df0
movq %rax, %r14
movl $0x468, %esi            # imm = 0x468
movq %rbx, %rdi
callq 0x4320
movq %r14, %rdi
callq 0x4520