// File: /workspace/github_cpp_makefile_star2_O1/estwings57[P]CasHMC/sources/HMCController.cpp
// Function: CasHMC::HMCController::LinkPowerExitManager()
void HMCController::LinkPowerExitManager()
{
	switch(LINK_POWER) {
		case NO_MANAGEMENT:{
			break;
		}
		case QUIESCE_SLEEP:{
			//Check the current link state (sleep or down)
			int link = 0;
			int linkState = 0;
			for(link=0; link<NUM_LINKS; link++) {
				if(downLinkMasters[link]->currentState == DOWN) {
					linkState = 1;
					break;
				}
				else if(downLinkMasters[link]->currentState == SLEEP) {
					linkState = 2;
					break;
				}
			}
			//Link is already waking up
			for(int l=0; l<NUM_LINKS; l++) {
				if(downLinkMasters[l]->currentState == TRANSITION_TO_RETRAIN
				|| downLinkMasters[l]->currentState == RETRAIN1
				|| downLinkMasters[l]->currentState == RETRAIN2) {
					linkState = 0;
					break;
				}
			}
			
			//If link is on down mode
			if(linkState == 1) {
				if(downBuffers.size() > 0 && currentClockCycle >= staySREF) {
					modeTransition[link] = currentClockCycle + ceil((double)(tPST+tTXD+tPSC)/CPU_CLK_PERIOD);
					downLinkMasters[link]->currentState = TRANSITION_TO_RETRAIN;
					DEBUG(ALI(33)<<header<<"Down) RETRAINING MODE transition after "<<modeTransition[link]<<" cycle (LM_D"<<link<<")");
				}
			}
			//If link is on sleep mode
			else if(linkState == 2) {
				if(downBuffers.size() >= AWAKE_REQ) {
					modeTransition[link] = currentClockCycle + ceil((double)(tPST+tTXD)/CPU_CLK_PERIOD);
					downLinkMasters[link]->currentState = TRANSITION_TO_RETRAIN;
					DEBUG(ALI(33)<<header<<"Down) RETRAINING MODE transition after "<<modeTransition[link]<<" cycle (LM_D"<<link<<")");
				}
			}
			
			//Retraining mode entry
			for(int l=0; l<NUM_LINKS; l++) {
				if(downLinkMasters[l]->currentState == TRANSITION_TO_RETRAIN) {
					if(currentClockCycle >= modeTransition[l]) {
						for(int k=0; k<NUM_LINKS; k++) {
							if(downLinkMasters[k]->currentState == DOWN) {
								downLinkMasters[k]->currentState = SLEEP;
							}
						}
						downLinkMasters[l]->firstNull = true;
						downLinkMasters[l]->currentState = RETRAIN1;
						stayActive[l] = currentClockCycle + ceil((double)tOP/CPU_CLK_PERIOD);
						DE_CR(ALI(33)<<header<<"Down) entering RETRAINING MODE (LM_D"<<l<<")");
					}
				}
			}
			break;
		}
		case MSHR:
		case LINK_MONITOR:
		case AUTONOMOUS:{
			//awake up links as many as sleepLink
			for(int l=0; l<NUM_LINKS-sleepLink; l++) {
				if(downLinkMasters[l]->currentState == SLEEP) {
					//Stagger transition between active mode and sleep modes in order to avoid supply voltage shifts
					if(currentClockCycle >= staggerActive) {
						uint64_t stag = 0;
						uint64_t tran = 0;
						if(staggeringActive[l]) {
							staggeringActive[l] = false;
							stag = ceil((double)tSS/CPU_CLK_PERIOD);
							tran = ceil((double)tTXD/CPU_CLK_PERIOD);
						}
						else {
							stag = ceil((double)(tPST+tSS)/CPU_CLK_PERIOD);
							tran = ceil((double)(tPST+tTXD)/CPU_CLK_PERIOD);
						}
						staggerActive = currentClockCycle + stag;
						modeTransition[l] = currentClockCycle + tran;
						downLinkMasters[l]->currentState = TRANSITION_TO_RETRAIN;
						DEBUG(ALI(33)<<header<<"Down) RETRAINING MODE transition after "<<modeTransition[l]<<" cycle (stagger : "<<staggerActive<<") (LM_D"<<l<<")");
					}
					else {
						staggeringActive[l] = true;
					}
				}
			}
			
			//Retraining mode entry
			for(int l=0; l<NUM_LINKS; l++) {
				if(downLinkMasters[l]->currentState == TRANSITION_TO_RETRAIN) {
					if(currentClockCycle >= modeTransition[l]) {
						for(int k=0; k<NUM_LINKS; k++) {
							if(downLinkMasters[k]->currentState == DOWN) {
								downLinkMasters[k]->currentState = SLEEP;
							}
						}
						downLinkMasters[l]->firstNull = true;
						downLinkMasters[l]->currentState = RETRAIN1;
						stayActive[l] = currentClockCycle + ceil((double)tOP/CPU_CLK_PERIOD);
						DE_CR(ALI(33)<<header<<"Down) entering RETRAINING MODE (LM_D"<<l<<")");
					}
				}
			}
			break;
		}
		default:{
			ERROR(header<<"   == Error - WRONG LINK_POWER parameter  (LINK_POWER : "<<LINK_POWER<<")");
			exit(0);
			break;
		}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
leaq 0x1cecc(%rip), %r14     # 0x3c4e8
movl (%r14), %eax
leal -0x2(%rax), %ecx
cmpl $0x3, %ecx
jae 0x1fad0
leaq 0x1ce76(%rip), %r12     # 0x3c4a8
movl (%r12), %eax
cmpl 0x258(%rbx), %eax
je 0x1f8e9
xorl %r14d, %r14d
leaq 0x1ce3c(%rip), %rbp     # 0x3c488
movq 0x1c97d(%rip), %r15     # 0x3bfd0
movq 0x208(%rbx), %rax
movq (%rax,%r14,8), %r13
cmpl $0x1, 0x200(%r13)
jne 0x1f8d3
movq 0x8(%rbx), %rdx
movl $0x1, %eax
movl %r14d, %ecx
shlq %cl, %rax
movq %r14, %rcx
shrq $0x6, %rcx
cmpq 0x278(%rbx), %rdx
jae 0x1f69b
movq 0x2f8(%rbx), %rdx
orq %rax, (%rdx,%rcx,8)
jmp 0x1f8d3
movq 0x2f8(%rbx), %rdx
movq (%rdx,%rcx,8), %rsi
testq %rax, %rsi
je 0x1f6ec
notq %rax
andq %rax, %rsi
movq %rsi, (%rdx,%rcx,8)
leaq 0x1ce74(%rip), %rax     # 0x3c530
movsd (%rax), %xmm0
leaq 0x1cdd1(%rip), %rax     # 0x3c498
movsd (%rax), %xmm1
movsd %xmm1, 0x18(%rsp)
divsd %xmm1, %xmm0
callq 0x4090
movapd %xmm0, (%rsp)
leaq 0x1ce72(%rip), %rax     # 0x3c558
movsd (%rax), %xmm0
jmp 0x1f73c
leaq 0x1ce2d(%rip), %rax     # 0x3c520
movsd (%rax), %xmm1
movsd %xmm1, 0x20(%rsp)
leaq 0x1ce2c(%rip), %rax     # 0x3c530
movsd (%rax), %xmm0
addsd %xmm1, %xmm0
leaq 0x1cd85(%rip), %rax     # 0x3c498
movsd (%rax), %xmm1
movsd %xmm1, 0x18(%rsp)
divsd %xmm1, %xmm0
callq 0x4090
movapd %xmm0, (%rsp)
movsd 0x20(%rsp), %xmm0
leaq 0x1ce20(%rip), %rax     # 0x3c558
addsd (%rax), %xmm0
divsd 0x18(%rsp), %xmm0
callq 0x4090
cvttsd2si %xmm0, %rax
movsd 0x13a94(%rip), %xmm1    # 0x331e8
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
movq %rax, %rdx
sarq $0x3f, %rdx
andq %rcx, %rdx
orq %rax, %rdx
movapd (%rsp), %xmm0
cvttsd2si %xmm0, %rax
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
movq %rax, %rsi
sarq $0x3f, %rsi
andq %rcx, %rsi
orq %rax, %rsi
movq 0x8(%rbx), %rax
addq %rax, %rsi
movq %rsi, 0x278(%rbx)
addq %rax, %rdx
movq 0x2b8(%rbx), %rax
movq %rdx, (%rax,%r14,8)
movl $0x7, 0x200(%r13)
cmpb $0x1, (%rbp)
jne 0x1f8d3
leaq 0x1ccc7(%rip), %rax     # 0x3c489
cmpb $0x0, (%rax)
jne 0x1f8d3
movq (%r15), %rax
movq -0x18(%rax), %rcx
movq $0x21, 0x10(%r15,%rcx)
movq -0x18(%rax), %rax
leaq (%r15,%rax), %r13
cmpb $0x0, 0xe1(%r15,%rax)
jne 0x1f80a
movq %r13, %rdi
movl $0x20, %esi
callq 0x42d0
movb %al, 0xe0(%r13)
movb $0x1, 0xe1(%r13)
movb $0x20, 0xe0(%r13)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
movq %r15, %rdi
callq 0x4340
movq %rax, %r13
movl $0x27, %edx
movq %rax, %rdi
leaq 0x13e03(%rip), %rsi     # 0x33637
callq 0x4340
movq 0x2b8(%rbx), %rax
movq (%rax,%r14,8), %rsi
movq %r13, %rdi
callq 0x41e0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x13cd0(%rip), %rsi     # 0x3352e
callq 0x4340
movq 0x278(%rbx), %rsi
movq %r13, %rdi
callq 0x41e0
movq %rax, %r13
movl $0x7, %edx
movq %rax, %rdi
leaq 0x13cbd(%rip), %rsi     # 0x33541
callq 0x4340
movq %r13, %rdi
movl %r14d, %esi
callq 0x4500
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x14bbb(%rip), %rsi     # 0x34461
callq 0x4340
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x42d0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
incq %r14
movl (%r12), %eax
subl 0x258(%rbx), %eax
cmpq %rax, %r14
jb 0x1f653
movl (%r12), %eax
testl %eax, %eax
jle 0x1ff59
xorl %r14d, %r14d
leaq 0x1cc49(%rip), %rbp     # 0x3c548
leaq 0x1cb92(%rip), %r13     # 0x3c498
leaq 0x1cb7b(%rip), %r15     # 0x3c488
movq 0x208(%rbx), %rdx
movq (%rdx,%r14,8), %rcx
cmpl $0x7, 0x200(%rcx)
jne 0x1fabb
movq 0x8(%rbx), %rsi
movq 0x2b8(%rbx), %rdi
cmpq (%rdi,%r14,8), %rsi
jb 0x1fabb
testl %eax, %eax
jle 0x1f963
movl %eax, %eax
xorl %edi, %edi
movq (%rdx,%rdi,8), %r8
cmpl $0x2, 0x200(%r8)
jne 0x1f95b
movl $0x1, 0x200(%r8)
incq %rdi
cmpq %rdi, %rax
jne 0x1f942
movb $0x1, 0x268(%rcx)
movl $0x3, 0x200(%rcx)
movq %rsi, %xmm0
punpckldq 0x1177f(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x11767(%rip), %xmm0    # 0x310f0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movapd %xmm1, (%rsp)
movsd (%rbp), %xmm0
divsd (%r13), %xmm0
callq 0x4090
addsd (%rsp), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rcx
sarq $0x3f, %rcx
subsd 0x13825(%rip), %xmm0    # 0x331e8
cvttsd2si %xmm0, %rdx
andq %rcx, %rdx
orq %rax, %rdx
movq 0x288(%rbx), %rax
movq %rdx, (%rax,%r14,8)
cmpb $0x0, (%r15)
je 0x1fabb
movq %r15, %r12
movq %r13, %r15
movq %rbp, %r13
movq 0x1c5dd(%rip), %rdx     # 0x3bfd0
movq (%rdx), %rax
movq -0x18(%rax), %rcx
movq $0x21, 0x10(%rdx,%rcx)
movq -0x18(%rax), %rax
leaq (%rdx,%rax), %rbp
cmpb $0x0, 0xe1(%rdx,%rax)
jne 0x1fa2f
movq %rbp, %rdi
movl $0x20, %esi
callq 0x42d0
movb %al, 0xe0(%rbp)
movb $0x1, 0xe1(%rbp)
movb $0x20, 0xe0(%rbp)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
movq 0x1c58b(%rip), %rdi     # 0x3bfd0
callq 0x4340
movq %rax, %rbp
movl $0x24, %edx
movq %rax, %rdi
leaq 0x13c10(%rip), %rsi     # 0x3366c
callq 0x4340
movq %rbp, %rdi
movl %r14d, %esi
callq 0x4500
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x149e3(%rip), %rsi     # 0x34461
callq 0x4340
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x42d0
movsbl %al, %esi
movq %rbp, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq %r13, %rbp
movq %r15, %r13
movq %r12, %r15
leaq 0x1c9ed(%rip), %r12     # 0x3c4a8
incq %r14
movslq (%r12), %rax
cmpq %rax, %r14
jl 0x1f90d
jmp 0x1ff59
testl %eax, %eax
je 0x1ff59
cmpl $0x1, %eax
jne 0x1ff68
leaq 0x1c9c0(%rip), %r12     # 0x3c4a8
movl (%r12), %eax
testl %eax, %eax
jle 0x1fb1d
movq 0x208(%rbx), %rcx
xorl %r14d, %r14d
movq (%rcx,%r14,8), %rdx
movl 0x200(%rdx), %edx
cmpl $0x1, %edx
je 0x1fb2b
cmpl $0x2, %edx
je 0x1fb24
incq %r14
cmpq %r14, %rax
jne 0x1fafa
xorl %ecx, %ecx
movl %eax, %r14d
jmp 0x1fb30
xorl %r14d, %r14d
xorl %ecx, %ecx
jmp 0x1fb30
movl $0x1, %ecx
jmp 0x1fb30
movl $0x2, %ecx
testl %eax, %eax
jle 0x1fb65
movq 0x208(%rbx), %rdx
xorl %esi, %esi
movl $0x98, %edi
movq (%rdx,%rsi,8), %r8
movl 0x200(%r8), %r8d
cmpl $0x7, %r8d
ja 0x1fb59
btl %r8d, %edi
jb 0x1fb63
incq %rsi
cmpq %rsi, %rax
jne 0x1fb42
jmp 0x1fb65
xorl %ecx, %ecx
cmpl $0x2, %ecx
je 0x1fbd4
cmpl $0x1, %ecx
jne 0x1fd77
movq 0x1d8(%rbx), %rax
cmpq 0x1d0(%rbx), %rax
je 0x1fd77
movq 0x8(%rbx), %rax
cmpq 0x280(%rbx), %rax
jb 0x1fd77
movq %rax, %xmm1
punpckldq 0x1155b(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x11543(%rip), %xmm1    # 0x310f0
movapd %xmm1, %xmm2
leaq 0x1c968(%rip), %rax     # 0x3c520
movsd (%rax), %xmm0
leaq 0x1c995(%rip), %rax     # 0x3c558
addsd (%rax), %xmm0
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
leaq 0x1c99e(%rip), %rax     # 0x3c570
jmp 0x1fc27
movq 0x1d8(%rbx), %rax
subq 0x1d0(%rbx), %rax
sarq $0x3, %rax
leaq 0x1c8ff(%rip), %rcx     # 0x3c4ec
movslq (%rcx), %rcx
cmpq %rcx, %rax
jb 0x1fd77
movsd 0x8(%rbx), %xmm1
unpcklps 0x114fb(%rip), %xmm1    # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x114e3(%rip), %xmm1    # 0x310f0
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
leaq 0x1c904(%rip), %rax     # 0x3c520
movsd (%rax), %xmm0
leaq 0x1c931(%rip), %rax     # 0x3c558
addsd (%rax), %xmm0
addsd %xmm1, %xmm2
movapd %xmm2, (%rsp)
leaq 0x1c85d(%rip), %rax     # 0x3c498
divsd (%rax), %xmm0
callq 0x4090
addsd (%rsp), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rcx
subsd 0x1358f(%rip), %xmm0    # 0x331e8
cvttsd2si %xmm0, %rdx
sarq $0x3f, %rcx
andq %rcx, %rdx
orq %rax, %rdx
movl %r14d, %r13d
movq 0x2b8(%rbx), %rax
movq %rdx, (%rax,%r13,8)
movq 0x208(%rbx), %rax
movq (%rax,%r13,8), %rax
movl $0x7, 0x200(%rax)
leaq 0x1c7f6(%rip), %rax     # 0x3c488
cmpb $0x1, (%rax)
jne 0x1fd77
leaq 0x1c7e7(%rip), %rax     # 0x3c489
cmpb $0x0, (%rax)
jne 0x1fd77
movq 0x1c31e(%rip), %rax     # 0x3bfd0
movq (%rax), %rcx
movq -0x18(%rcx), %rdx
movq $0x21, 0x10(%rax,%rdx)
movq -0x18(%rcx), %rcx
leaq (%rax,%rcx), %r15
cmpb $0x0, 0xe1(%rax,%rcx)
jne 0x1fcf0
movq %r15, %rdi
movl $0x20, %esi
callq 0x42d0
movb %al, 0xe0(%r15)
movb $0x1, 0xe1(%r15)
movb $0x20, 0xe0(%r15)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
movq 0x1c2c9(%rip), %rdi     # 0x3bfd0
callq 0x4340
movq %rax, %r15
leaq 0x13921(%rip), %rsi     # 0x33637
movl $0x27, %edx
movq %rax, %rdi
callq 0x4340
movq 0x2b8(%rbx), %rax
movq (%rax,%r13,8), %rsi
movq %r15, %rdi
callq 0x41e0
movq %rax, %r15
leaq 0x1391f(%rip), %rsi     # 0x3365f
movl $0xc, %edx
movq %rax, %rdi
callq 0x4340
movq %r15, %rdi
movl %r14d, %esi
callq 0x4500
movq %rax, %r14
leaq 0x146ff(%rip), %rsi     # 0x34461
movl $0x1, %edx
movq %rax, %rdi
callq 0x4340
movq %r14, %rdi
callq 0x4170
movl (%r12), %eax
testl %eax, %eax
jle 0x1ff59
xorl %r14d, %r14d
leaq 0x1c7bb(%rip), %rbp     # 0x3c548
leaq 0x1c704(%rip), %r13     # 0x3c498
leaq 0x1c6ed(%rip), %r15     # 0x3c488
movq 0x208(%rbx), %rdx
movq (%rdx,%r14,8), %rcx
cmpl $0x7, 0x200(%rcx)
jne 0x1ff49
movq 0x8(%rbx), %rsi
movq 0x2b8(%rbx), %rdi
cmpq (%rdi,%r14,8), %rsi
jb 0x1ff49
testl %eax, %eax
jle 0x1fdf1
movl %eax, %eax
xorl %edi, %edi
movq (%rdx,%rdi,8), %r8
cmpl $0x2, 0x200(%r8)
jne 0x1fde9
movl $0x1, 0x200(%r8)
incq %rdi
cmpq %rdi, %rax
jne 0x1fdd0
movb $0x1, 0x268(%rcx)
movl $0x3, 0x200(%rcx)
movq %rsi, %xmm0
punpckldq 0x112f1(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x112d9(%rip), %xmm0    # 0x310f0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movapd %xmm1, (%rsp)
movsd (%rbp), %xmm0
divsd (%r13), %xmm0
callq 0x4090
addsd (%rsp), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rcx
sarq $0x3f, %rcx
subsd 0x13397(%rip), %xmm0    # 0x331e8
cvttsd2si %xmm0, %rdx
andq %rcx, %rdx
orq %rax, %rdx
movq 0x288(%rbx), %rax
movq %rdx, (%rax,%r14,8)
cmpb $0x0, (%r15)
je 0x1ff49
movq %r12, %r15
movq %r13, %r12
movq %rbp, %r13
movq 0x1c14f(%rip), %rdx     # 0x3bfd0
movq (%rdx), %rax
movq -0x18(%rax), %rcx
movq $0x21, 0x10(%rdx,%rcx)
movq -0x18(%rax), %rax
leaq (%rdx,%rax), %rbp
cmpb $0x0, 0xe1(%rdx,%rax)
jne 0x1febd
movq %rbp, %rdi
movl $0x20, %esi
callq 0x42d0
movb %al, 0xe0(%rbp)
movb $0x1, 0xe1(%rbp)
movb $0x20, 0xe0(%rbp)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
movq 0x1c0fd(%rip), %rdi     # 0x3bfd0
callq 0x4340
movq %rax, %rbp
movl $0x24, %edx
movq %rax, %rdi
leaq 0x13782(%rip), %rsi     # 0x3366c
callq 0x4340
movq %rbp, %rdi
movl %r14d, %esi
callq 0x4500
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x14555(%rip), %rsi     # 0x34461
callq 0x4340
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x42d0
movsbl %al, %esi
movq %rbp, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq %r13, %rbp
movq %r12, %r13
movq %r15, %r12
leaq 0x1c53f(%rip), %r15     # 0x3c488
incq %r14
movslq (%r12), %rax
cmpq %rax, %r14
jl 0x1fd9b
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x1c081(%rip), %rdi     # 0x3bff0
leaq 0x110ac(%rip), %rsi     # 0x31022
callq 0x42e0
leaq 0x1341d(%rip), %rsi     # 0x3339f
movq %rax, %rdi
callq 0x42e0
leaq 0x118a6(%rip), %rsi     # 0x31837
movq %rax, %rdi
callq 0x42e0
movq %rax, %rdi
movl $0x2d0, %esi            # imm = 0x2D0
callq 0x4500
leaq 0x11094(%rip), %rsi     # 0x31041
movq %rax, %rdi
callq 0x42e0
addq $0x20, %rbx
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4290
leaq 0x135c1(%rip), %rsi     # 0x3358c
movq %rax, %rdi
callq 0x42e0
movl (%r14), %esi
movq %rax, %rdi
callq 0x4500
leaq 0x1447c(%rip), %rsi     # 0x34461
movq %rax, %rdi
callq 0x42e0
movq %rax, %rdi
callq 0x4170
xorl %edi, %edi
callq 0x4360