// File: /workspace/github_cpp_makefile_star2_O1/dramninjasUMD[P]BOBSim/BOBWrapper.cpp
// Function: BOBSim::BOBWrapper::PrintStats(bool)
void BOBWrapper::PrintStats(bool finalPrint)
{
	float fullMean = (float)fullSum / returnedReads;
	float dramMean = (float)dramSum / returnedReads;
	float chanMean = (float)chanSum / returnedReads;

	//calculate standard deviation
	double fullstdsum = 0;
	double dramstdsum = 0;
	double chanstdsum = 0;
	unsigned fullLatMax = 0;
	unsigned fullLatMin = -1;//max unsigned value
	unsigned dramLatMax = 0;
	unsigned dramLatMin = -1;
	unsigned chanLatMax = 0;
	unsigned chanLatMin = -1;
	for(unsigned i=0; i<fullLatencies.size(); i++)
	{
		fullLatMax = max(fullLatencies[i],fullLatMax);
		fullLatMin = min(fullLatencies[i], fullLatMin);
		fullstdsum+=pow(fullLatencies[i]-fullMean,2);

		if(dramLatencies[i]>dramLatMax) dramLatMax = dramLatencies[i];
		if(dramLatencies[i]<dramLatMin) dramLatMin = dramLatencies[i];
		dramstdsum+=pow(dramLatencies[i]-dramMean,2);

		if(chanLatencies[i]>chanLatMax) chanLatMax = chanLatencies[i];
		if(chanLatencies[i]<chanLatMin) chanLatMin = chanLatencies[i];
		chanstdsum+=pow(chanLatencies[i]-chanMean,2);
	}
	double fullstddev = sqrt(fullstdsum/returnedReads);
	double dramstddev = sqrt(dramstdsum/returnedReads);
	double chanstddev = sqrt(chanstdsum/returnedReads);

	//
	//
	//check - 1E9 or 2E30????
	//
	//
	unsigned elapsedCycles;
	if(currentClockCycle%EPOCH_LENGTH==0)
	{
		elapsedCycles = EPOCH_LENGTH;
	}
	else
	{
		elapsedCycles = currentClockCycle%EPOCH_LENGTH;
	}


	double bandwidth = ((issuedWrites+returnedReads)*TRANSACTION_SIZE)/(double)(elapsedCycles*CPU_CLK_PERIOD*1E-9)/(1<<30);

	double rw_ratio = ((double)returnedReads/(double)committedWrites)*100.0f;

	statsOut  <<currentClockCycle*CPU_CLK_PERIOD/1000000<< ","<< setprecision(4) << bandwidth << "," << fullMean*CPU_CLK_PERIOD<<","<<rw_ratio<<",;";

	totalTransactionsServiced += (issuedWrites + returnedReads);
	totalReturnedReads += returnedReads;
	totalIssuedWrites += issuedWrites;

	PRINT("==================Epoch ["<<currentClockCycle/EPOCH_LENGTH<<"]=======================");
	PRINT("per epoch] reads   : "<<returnedReads<<" writes : "<<issuedWrites<<" ("<<(float)returnedReads/(float)(returnedReads+issuedWrites)*100<<"% Reads) : "<<returnedReads+issuedWrites);
	PRINT("lifetime ] reads   : "<<totalReturnedReads<<" writes : "<<totalIssuedWrites<<" total : "<<totalTransactionsServiced);
	PRINT("issued logic ops   : "<<issuedLogicOperations<< " returned logic responses : "<<totalLogicResponses);
	PRINT("bandwidth          : "<<bandwidth<<" GB/sec");
	PRINT("current cycle      : "<<currentClockCycle);
	PRINT("--------------------------");
	PRINT("full time mean  : "<<fullMean*CPU_CLK_PERIOD<<" ns");
	PRINT("          std   : "<<fullstddev*CPU_CLK_PERIOD<<" ns");
	PRINT("          min   : "<<fullLatMin*CPU_CLK_PERIOD<<" ns");
	PRINT("          max   : "<<fullLatMax*CPU_CLK_PERIOD<<" ns");
	PRINT("chan time mean  : "<<chanMean*CPU_CLK_PERIOD<<" ns");
	PRINT("           std  : "<<chanstddev*CPU_CLK_PERIOD);
	PRINT("           min  : "<<chanLatMin*CPU_CLK_PERIOD<<" ns");
	PRINT("           max  : "<<chanLatMax*CPU_CLK_PERIOD<<" ns");
	PRINT("dram time mean  : "<<dramMean*CPU_CLK_PERIOD<<" ns");
	PRINT("          std   : "<<dramstddev*CPU_CLK_PERIOD<<" ns");
	PRINT("          min   : "<<dramLatMin*CPU_CLK_PERIOD<<" ns");
	PRINT("          max   : "<<dramLatMax*CPU_CLK_PERIOD<<" ns");
	PRINT("-- Per Channel Latency Components in nanoseconds (All from READs) : ");
	maxReadsPerCycle = maxWritesPerCycle = 0;
	PRINT("      reqPort    reqLink     workQ    access     rrq    rspLink   rspPort  total");
	for(unsigned i=0; i<NUM_CHANNELS; i++)
	{
		float tempSum=0;
		unsigned tempMax=0;
		unsigned tempMin=-1;
		double stdsum=0;
		double mean=0;
		double reqLinkSum=0;
		double rspLinkSum=0;
		double reqPortSum=0;
		double rspPortSum=0;
		double vSum=0;
		double rrqSum=0;
		double workQSum=0;

		for(unsigned j=0; j<perChanFullLatencies[i].size(); j++)
		{
			if(perChanFullLatencies[i][j]>tempMax) tempMax = perChanFullLatencies[i][j];
			if(perChanFullLatencies[i][j]<tempMin) tempMin = perChanFullLatencies[i][j];

			tempSum+=perChanFullLatencies[i][j];
			reqLinkSum+=perChanReqLink[i][j];
			rspLinkSum+=perChanRspLink[i][j];
			reqPortSum+=perChanReqPort[i][j];
			rspPortSum+=perChanRspPort[i][j];
			vSum+=perChanAccess[i][j];
			rrqSum+=perChanRRQ[i][j];
			workQSum+=perChanWorkQTimes[i][j];
		}

		mean=tempSum/(float)perChanFullLatencies[i].size();

		//write per channel latency to stats file
		statsOut<<CPU_CLK_PERIOD*mean<<",";

		for(unsigned j=0; j<perChanFullLatencies[i].size(); j++)
		{
			stdsum+=pow(perChanFullLatencies[i][j]-mean,2);
		}

#define MAX_STR 512
		char tmp_str[MAX_STR];

		snprintf(tmp_str,MAX_STR,"%d]%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f\n",
		         i,
		         CPU_CLK_PERIOD*(reqPortSum/perChanReqPort[i].size()),
		         CPU_CLK_PERIOD*(reqLinkSum/perChanReqLink[i].size()),
		         CPU_CLK_PERIOD*(workQSum/perChanWorkQTimes[i].size()),
		         CPU_CLK_PERIOD*(vSum/perChanAccess[i].size()),
		         CPU_CLK_PERIOD*(rrqSum/perChanRRQ[i].size()),
		         CPU_CLK_PERIOD*(rspLinkSum/perChanRspLink[i].size()),
		         CPU_CLK_PERIOD*(rspPortSum/perChanRspPort[i].size()),
		         CPU_CLK_PERIOD*(mean));

		PRINTN(tmp_str);
		//clear
		perChanWorkQTimes[i].clear();
		perChanFullLatencies[i].clear();
		perChanReqLink[i].clear();
		perChanRspLink[i].clear();
		perChanReqPort[i].clear();
		perChanRspPort[i].clear();
		perChanAccess[i].clear();
		perChanRRQ[i].clear();
	}

	PRINT(" ---  Port stats (per epoch) : ");
	for(unsigned i=0; i<NUM_PORTS; i++)
	{
		PRINTN(" "<<i<<"] ");
		PRINTN(" request: "<<(float)requestPortEmptyCount[i]/(elapsedCycles)*100.0<<"\% idle ");
		PRINTN(" response: "<<(float)responsePortEmptyCount[i]/(elapsedCycles)*100.0<<"\% idle ");
		PRINTN(" rds:"<<readsPerPort[i]);
		PRINTN(" wrts:"<<writesPerPort[i]);
		PRINTN(" rtn:"<<returnsPerPort[i]);
		PRINT(" tot:"<<requestCounterPerPort[i]);

		//clear
		returnsPerPort[i]=0;
		writesPerPort[i]=0;
		readsPerPort[i]=0;
		responsePortEmptyCount[i]=0;
		requestPortEmptyCount[i]=0;
		requestCounterPerPort[i]=0;
	}

	issuedWrites = 0;
	returnedReads = 0;
	fullSum = 0;
	dramSum = 0;
	chanSum = 0;

	fullLatencies.clear();
	dramLatencies.clear();
	chanLatencies.clear();
	bob->PrintStats(statsOut, powerOut, finalPrint, elapsedCycles);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x298, %rsp            # imm = 0x298
movl %esi, %r12d
movq %rdi, %rbx
movq 0x230(%rdi), %rax
movq 0x238(%rdi), %rdx
movl 0x248(%rdi), %ecx
cvtsi2ss %rcx, %xmm12
movl 0x298(%rdi), %ecx
cvtsi2ss %rcx, %xmm0
divss %xmm0, %xmm12
movl 0x268(%rdi), %ecx
cvtsi2ss %rcx, %xmm5
movl 0x288(%rdi), %ecx
cvtsi2ss %rcx, %xmm7
divss %xmm0, %xmm5
divss %xmm0, %xmm7
xorpd %xmm1, %xmm1
subq %rax, %rdx
je 0xadb9
sarq $0x2, %rdx
movq 0x250(%rbx), %r9
movq 0x270(%rbx), %r10
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
xorl %r11d, %r11d
xorps %xmm0, %xmm0
xorpd %xmm14, %xmm14
xorpd %xmm13, %xmm13
xorl %esi, %esi
xorl %edi, %edi
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
xorl %ebp, %ebp
movl (%rax,%r11,4), %r15d
cmpl %ebp, %r15d
cmoval %r15d, %ebp
cmpl %r15d, %r14d
cmovael %r15d, %r14d
xorps %xmm2, %xmm2
cvtsi2ss %r15, %xmm2
subss %xmm12, %xmm2
cvtss2sd %xmm2, %xmm2
mulsd %xmm2, %xmm2
addsd %xmm2, %xmm0
movl (%r9,%r11,4), %r15d
cmpl %esi, %r15d
cmoval %r15d, %esi
cmpl %ecx, %r15d
xorps %xmm2, %xmm2
cvtsi2ss %r15, %xmm2
cmovbl %r15d, %ecx
subss %xmm5, %xmm2
movl (%r10,%r11,4), %r15d
cmpl %edi, %r15d
cmoval %r15d, %edi
cvtss2sd %xmm2, %xmm2
cmpl %r8d, %r15d
cmovbl %r15d, %r8d
mulsd %xmm2, %xmm2
xorps %xmm3, %xmm3
cvtsi2ss %r15, %xmm3
addsd %xmm2, %xmm14
subss %xmm7, %xmm3
xorps %xmm2, %xmm2
cvtss2sd %xmm3, %xmm2
mulsd %xmm2, %xmm2
addsd %xmm2, %xmm13
incq %r11
movl %r11d, %r15d
cmpq %r15, %rdx
ja 0xacaa
movl %r14d, %eax
xorps %xmm3, %xmm3
cvtsi2ss %rax, %xmm3
movss 0x8354(%rip), %xmm2     # 0x130a4
movl %ebp, %eax
cvtsi2ss %rax, %xmm4
mulss %xmm2, %xmm3
cvtss2sd %xmm3, %xmm11
mulss %xmm2, %xmm4
cvtss2sd %xmm4, %xmm10
movl %r8d, %eax
xorps %xmm3, %xmm3
cvtsi2ss %rax, %xmm3
movl %edi, %eax
xorps %xmm4, %xmm4
cvtsi2ss %rax, %xmm4
mulss %xmm2, %xmm3
cvtss2sd %xmm3, %xmm9
mulss %xmm2, %xmm4
cvtss2sd %xmm4, %xmm8
movl %ecx, %eax
xorps %xmm3, %xmm3
cvtsi2ss %rax, %xmm3
movl %esi, %eax
xorps %xmm4, %xmm4
cvtsi2ss %rax, %xmm4
mulss %xmm2, %xmm3
cvtss2sd %xmm3, %xmm6
mulss %xmm2, %xmm4
xorps %xmm3, %xmm3
cvtss2sd %xmm4, %xmm3
jmp 0xade2
movsd 0x8aae(%rip), %xmm11    # 0x13870
xorps %xmm10, %xmm10
movaps %xmm11, %xmm9
xorps %xmm8, %xmm8
movaps %xmm11, %xmm6
xorps %xmm3, %xmm3
xorpd %xmm13, %xmm13
xorpd %xmm14, %xmm14
xorps %xmm0, %xmm0
movl 0x298(%rbx), %eax
xorps %xmm2, %xmm2
cvtsi2sd %rax, %xmm2
divsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
movss %xmm5, 0x58(%rsp)
movsd %xmm3, 0x50(%rsp)
movsd %xmm6, 0x48(%rsp)
movss %xmm7, 0x40(%rsp)
movsd %xmm8, 0x38(%rsp)
movsd %xmm9, 0x30(%rsp)
movsd %xmm10, 0x88(%rsp)
movsd %xmm11, 0x80(%rsp)
movss %xmm12, 0x20(%rsp)
movsd %xmm13, 0x8(%rsp)
jb 0xae48
sqrtsd %xmm0, %xmm0
jmp 0xae5b
movsd %xmm14, 0x10(%rsp)
callq 0x3170
movsd 0x10(%rsp), %xmm14
movsd %xmm0, 0x68(%rsp)
movl 0x298(%rbx), %eax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd %xmm0, %xmm14
xorpd %xmm2, %xmm2
ucomisd %xmm2, %xmm14
jb 0xae89
xorps %xmm0, %xmm0
sqrtsd %xmm14, %xmm0
jmp 0xae97
movapd %xmm14, %xmm0
callq 0x3170
xorpd %xmm2, %xmm2
movsd %xmm0, 0x10(%rsp)
movsd 0x8(%rsp), %xmm0
movl 0x298(%rbx), %eax
xorps %xmm1, %xmm1
cvtsi2sd %rax, %xmm1
divsd %xmm1, %xmm0
ucomisd %xmm2, %xmm0
jb 0xaec1
sqrtsd %xmm0, %xmm0
jmp 0xaec6
callq 0x3170
movsd %xmm0, 0x70(%rsp)
movq 0x8(%rbx), %rcx
movabsq $0x431bde82d7b634db, %r14 # imm = 0x431BDE82D7B634DB
movq %rcx, %rax
mulq %r14
shrq $0x12, %rdx
imulq $0xf4240, %rdx, %rax    # imm = 0xF4240
movq %rcx, %rdx
subq %rax, %rdx
movl $0xf4240, %esi          # imm = 0xF4240
cmovnel %edx, %esi
movl 0x298(%rbx), %eax
movl 0x290(%rbx), %edx
addl %eax, %edx
shll $0x6, %edx
xorps %xmm3, %xmm3
cvtsi2sd %rdx, %xmm3
xorps %xmm1, %xmm1
cvtsi2ss %esi, %xmm1
movss 0x8183(%rip), %xmm2     # 0x130a4
movaps %xmm1, %xmm0
mulss %xmm2, %xmm0
cvtss2sd %xmm0, %xmm0
mulsd 0x8944(%rip), %xmm0     # 0x13878
divsd %xmm0, %xmm3
mulsd 0x81b0(%rip), %xmm3     # 0x130f0
xorps %xmm4, %xmm4
cvtsi2sd %rax, %xmm4
movl 0x294(%rbx), %eax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd %xmm0, %xmm4
mulsd 0x891e(%rip), %xmm4     # 0x13880
leaq 0x2b0(%rbx), %rax
movq %rax, 0x28(%rsp)
testq %rcx, %rcx
movl %r12d, 0x64(%rsp)
movl %esi, 0x60(%rsp)
movss %xmm1, 0x1c(%rsp)
movsd %xmm3, 0x8(%rsp)
movsd %xmm4, 0x78(%rsp)
js 0xaf98
xorps %xmm0, %xmm0
cvtsi2ss %rcx, %xmm0
jmp 0xafb0
movq %rcx, %rax
shrq %rax
andl $0x1, %ecx
orq %rax, %rcx
xorps %xmm0, %xmm0
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
mulss %xmm2, %xmm0
divss 0x80ec(%rip), %xmm0     # 0x130a8
cvtss2sd %xmm0, %xmm0
movq 0x28(%rsp), %rdi
callq 0x32e0
movq %rax, %r15
leaq 0x85be(%rip), %r12      # 0x13592
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x3200
movq (%r15), %rax
movq -0x18(%rax), %rax
movq $0x4, 0x8(%r15,%rax)
movq %r15, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x32e0
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x3200
movss 0x20(%rsp), %xmm0
mulss 0x8081(%rip), %xmm0     # 0x130a4
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x20(%rsp)
movq %r15, %rdi
callq 0x32e0
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x3200
movq %r15, %rdi
movsd 0x78(%rsp), %xmm0
callq 0x32e0
leaq 0x8c72(%rip), %rsi      # 0x13ccf
movl $0x2, %edx
movq %rax, %rdi
callq 0x3200
movl 0x290(%rbx), %eax
movl 0x298(%rbx), %ecx
leal (%rcx,%rax), %edx
addl %edx, 0x2a4(%rbx)
addl %ecx, 0x29c(%rbx)
addl %eax, 0x2a0(%rbx)
movq 0xdf36(%rip), %r13      # 0x18fc8
leaq 0x8c39(%rip), %rsi      # 0x13cd2
movl $0x19, %edx
movq %r13, %rdi
callq 0x3200
movq %r14, %rax
mulq 0x8(%rbx)
shrq $0x12, %rdx
movq %r13, %rdi
movq %rdx, %rsi
callq 0x3120
movq %rax, %r14
leaq 0x8c26(%rip), %rsi      # 0x13cec
movl $0x18, %edx
movq %rax, %rdi
callq 0x3200
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x8c04(%rip), %rsi      # 0x13d05
movl $0x15, %edx
movq %r13, %rdi
callq 0x3200
movl 0x298(%rbx), %esi
movq %r13, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x8bf5(%rip), %r14      # 0x13d1b
movl $0xa, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x3200
movl 0x290(%rbx), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x8030(%rip), %rsi      # 0x1317e
movl $0x2, %edx
movq %rax, %rdi
callq 0x3200
movl 0x298(%rbx), %eax
xorps %xmm0, %xmm0
cvtsi2ss %rax, %xmm0
movl 0x290(%rbx), %ecx
addl %eax, %ecx
cvtsi2ss %rcx, %xmm1
divss %xmm1, %xmm0
mulss 0x7f1a(%rip), %xmm0     # 0x1309c
cvtss2sd %xmm0, %xmm0
movq %r15, %rdi
callq 0x32e0
movq %rax, %r15
leaq 0x8b8e(%rip), %rsi      # 0x13d26
movl $0xb, %edx
movq %rax, %rdi
callq 0x3200
movl 0x290(%rbx), %esi
addl 0x298(%rbx), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x8b48(%rip), %rsi      # 0x13d32
movl $0x15, %edx
movq %r13, %rdi
callq 0x3200
movl 0x29c(%rbx), %esi
movq %r13, %rdi
callq 0x3120
movq %rax, %r15
movl $0xa, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x3200
movl 0x2a0(%rbx), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r14
leaq 0x8b18(%rip), %rsi      # 0x13d48
movl $0x9, %edx
movq %rax, %rdi
callq 0x3200
movl 0x2a4(%rbx), %esi
movq %r14, %rdi
callq 0x3120
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x8ad6(%rip), %rsi      # 0x13d52
movl $0x15, %edx
movq %r13, %rdi
callq 0x3200
movl 0x28c(%rbx), %esi
movq %r13, %rdi
callq 0x3120
movq %rax, %r14
leaq 0x8ac7(%rip), %rsi      # 0x13d68
movl $0x1c, %edx
movq %rax, %rdi
callq 0x3200
movl 0x2a8(%rbx), %esi
movq %r14, %rdi
callq 0x3120
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x8a98(%rip), %rsi      # 0x13d85
movl $0x15, %edx
movq %r13, %rdi
callq 0x3200
movq %r13, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x32e0
movq %rax, %r14
leaq 0x8a89(%rip), %rsi      # 0x13d9b
movl $0x7, %edx
movq %rax, %rdi
callq 0x3200
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x8a56(%rip), %rsi      # 0x13da3
movl $0x15, %edx
movq %r13, %rdi
callq 0x3200
movq 0x8(%rbx), %rsi
movq %r13, %rdi
callq 0x3120
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x8a22(%rip), %rsi      # 0x13db9
movl $0x1a, %edx
movq %r13, %rdi
callq 0x3200
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x8a01(%rip), %rsi      # 0x13dd4
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movq %r13, %rdi
movsd 0x20(%rsp), %xmm0
callq 0x32e0
movq %rax, %r14
leaq 0x89ef(%rip), %rbp      # 0x13de7
movl $0x3, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x3200
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x89b5(%rip), %rsi      # 0x13deb
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movsd 0x68(%rsp), %xmm0
mulsd 0x8437(%rip), %xmm0     # 0x13888
movq %r13, %rdi
callq 0x32e0
movq %rax, %r14
movl $0x3, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x3200
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x8964(%rip), %r12      # 0x13dfe
movl $0x12, %edx
movq %r13, %rdi
movq %r12, %rsi
callq 0x3200
movq %r13, %rdi
movsd 0x80(%rsp), %xmm0
callq 0x32e0
movq %rax, %r14
movl $0x3, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x3200
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x8915(%rip), %r14      # 0x13e11
movl $0x12, %edx
movq %r13, %rdi
movq %r14, %rsi
callq 0x3200
movq %r13, %rdi
movsd 0x88(%rsp), %xmm0
callq 0x32e0
movq %rax, %r15
movl $0x3, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x3200
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x88c6(%rip), %rsi      # 0x13e24
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movss 0x40(%rsp), %xmm0
mulss 0x7b2b(%rip), %xmm0     # 0x130a4
cvtss2sd %xmm0, %xmm0
movq %r13, %rdi
callq 0x32e0
movq %rax, %r15
movl $0x3, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x3200
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x8871(%rip), %rsi      # 0x13e37
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movsd 0x70(%rsp), %xmm0
mulsd 0x82a7(%rip), %xmm0     # 0x13888
movq %r13, %rdi
callq 0x32e0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x8830(%rip), %rsi      # 0x13e4a
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movq %r13, %rdi
movsd 0x30(%rsp), %xmm0
callq 0x32e0
movq %rax, %r15
movl $0x3, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x3200
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x87e7(%rip), %rsi      # 0x13e5d
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movq %r13, %rdi
movsd 0x38(%rsp), %xmm0
callq 0x32e0
movq %rax, %r15
movl $0x3, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x3200
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x879e(%rip), %rsi      # 0x13e70
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movss 0x58(%rsp), %xmm0
mulss 0x79b7(%rip), %xmm0     # 0x130a4
cvtss2sd %xmm0, %xmm0
movq %r13, %rdi
callq 0x32e0
movq %rax, %r15
movl $0x3, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x3200
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movl $0x12, %edx
movq %r13, %rdi
leaq 0x86a9(%rip), %rsi      # 0x13deb
callq 0x3200
movsd 0x10(%rsp), %xmm0
mulsd 0x8133(%rip), %xmm0     # 0x13888
movq %r13, %rdi
callq 0x32e0
movq %rax, %r15
movl $0x3, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x3200
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movl $0x12, %edx
movq %r13, %rdi
movq %r12, %rsi
callq 0x3200
movq %r13, %rdi
movsd 0x48(%rsp), %xmm0
callq 0x32e0
movq %rax, %r15
movl $0x3, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x3200
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movl $0x12, %edx
movq %r13, %rdi
movq %r14, %rsi
callq 0x3200
movq %r13, %rdi
movsd 0x50(%rsp), %xmm0
callq 0x32e0
movq %rax, %r14
movl $0x3, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x3200
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0x8635(%rip), %rsi      # 0x13e83
movl $0x44, %edx
movq %r13, %rdi
callq 0x3200
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
xorps %xmm0, %xmm0
movups %xmm0, 0xa8(%rbx)
leaq 0x8634(%rip), %rsi      # 0x13ec8
movl $0x50, %edx
movq %r13, %rdi
callq 0x3200
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
xorl %ebp, %ebp
leaq 0x90(%rsp), %r12
movq 0x170(%rbx), %rax
leaq (,%rbp,2), %r15
addq %rbp, %r15
movq (%rax,%r15,8), %rcx
movq 0x8(%rax,%r15,8), %rdx
movq %rdx, %rax
subq %rcx, %rax
sarq $0x2, %rax
cmpq %rcx, %rdx
je 0xba0b
movq 0x1b8(%rbx), %rdx
leaq (,%rbp,8), %rsi
leaq (%rsi,%rsi,2), %r11
movq (%rdx,%r11), %rdx
movq 0x1d0(%rbx), %rsi
movq (%rsi,%r11), %rsi
movq 0x188(%rbx), %rdi
movq 0x1a0(%rbx), %r8
movq (%rdi,%r11), %rdi
movq (%r8,%r11), %r8
movq 0x1e8(%rbx), %r9
movq (%r9,%r11), %r9
movq 0x200(%rbx), %r10
movq (%r10,%r11), %r10
movq 0x218(%rbx), %r13
movq (%r13,%r11), %r11
xorps %xmm0, %xmm0
xorpd %xmm4, %xmm4
xorl %r13d, %r13d
xorps %xmm6, %xmm6
xorps %xmm7, %xmm7
xorps %xmm2, %xmm2
xorps %xmm8, %xmm8
xorpd %xmm3, %xmm3
xorps %xmm5, %xmm5
movl (%rcx,%r13,4), %r14d
xorps %xmm1, %xmm1
cvtsi2ss %r14, %xmm1
addss %xmm1, %xmm0
movl (%rdx,%r13,4), %r14d
xorps %xmm1, %xmm1
cvtsi2sd %r14, %xmm1
addsd %xmm1, %xmm5
movl (%rsi,%r13,4), %r14d
xorps %xmm1, %xmm1
cvtsi2sd %r14, %xmm1
addsd %xmm1, %xmm3
movl (%rdi,%r13,4), %r14d
xorps %xmm1, %xmm1
cvtsi2sd %r14, %xmm1
addsd %xmm1, %xmm8
movl (%r8,%r13,4), %r14d
xorps %xmm1, %xmm1
cvtsi2sd %r14, %xmm1
addsd %xmm1, %xmm2
movl (%r9,%r13,4), %r14d
xorps %xmm1, %xmm1
cvtsi2sd %r14, %xmm1
addsd %xmm1, %xmm7
movl (%r10,%r13,4), %r14d
xorps %xmm1, %xmm1
cvtsi2sd %r14, %xmm1
addsd %xmm1, %xmm6
movl (%r11,%r13,4), %r14d
xorps %xmm1, %xmm1
cvtsi2sd %r14, %xmm1
addsd %xmm1, %xmm4
incq %r13
movl %r13d, %r14d
cmpq %r14, %rax
ja 0xb979
jmp 0xba26
xorps %xmm5, %xmm5
xorps %xmm0, %xmm0
xorpd %xmm3, %xmm3
xorps %xmm8, %xmm8
xorps %xmm2, %xmm2
xorps %xmm7, %xmm7
xorps %xmm6, %xmm6
xorpd %xmm4, %xmm4
testq %rax, %rax
movsd %xmm2, 0x8(%rsp)
movsd %xmm3, 0x58(%rsp)
movsd %xmm4, 0x50(%rsp)
movsd %xmm5, 0x48(%rsp)
movsd %xmm6, 0x40(%rsp)
movsd %xmm7, 0x10(%rsp)
movsd %xmm8, 0x38(%rsp)
js 0xba60
xorps %xmm1, %xmm1
cvtsi2ss %rax, %xmm1
jmp 0xba78
movq %rax, %rcx
shrq %rcx
andl $0x1, %eax
orq %rcx, %rax
xorps %xmm1, %xmm1
cvtsi2ss %rax, %xmm1
addss %xmm1, %xmm1
divss %xmm1, %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd 0x7dfd(%rip), %xmm0     # 0x13888
mulsd %xmm0, %xmm1
movsd %xmm1, 0x30(%rsp)
movq 0x28(%rsp), %rdi
movapd %xmm1, %xmm0
callq 0x32e0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x7ae0(%rip), %rsi      # 0x13592
callq 0x3200
leaq (,%rbp,8), %rax
leaq (%rax,%rax,2), %r13
movq 0x188(%rbx), %rcx
movq 0x1a0(%rbx), %rax
movq 0x8(%rcx,%r13), %rdx
subq (%rcx,%r13), %rdx
sarq $0x2, %rdx
movq %rdx, %xmm0
movq 0x7555(%rip), %xmm7     # 0x13040
punpckldq %xmm7, %xmm0    # xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1]
movapd 0x7558(%rip), %xmm8     # 0x13050
subpd %xmm8, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movsd 0x38(%rsp), %xmm0
divsd %xmm1, %xmm0
movsd 0x7d6c(%rip), %xmm9     # 0x13888
mulsd %xmm9, %xmm0
movq 0x1b8(%rbx), %rcx
movq 0x8(%rcx,%r13), %rdx
subq (%rcx,%r13), %rdx
sarq $0x2, %rdx
movq %rdx, %xmm1
punpckldq %xmm7, %xmm1    # xmm1 = xmm1[0],xmm7[0],xmm1[1],xmm7[1]
subpd %xmm8, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
movsd 0x48(%rsp), %xmm1
divsd %xmm2, %xmm1
mulsd %xmm9, %xmm1
movq 0x218(%rbx), %rcx
movq 0x8(%rcx,%r13), %rdx
subq (%rcx,%r13), %rdx
sarq $0x2, %rdx
movq %rdx, %xmm2
punpckldq %xmm7, %xmm2    # xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1]
subpd %xmm8, %xmm2
movapd %xmm2, %xmm5
unpckhpd %xmm2, %xmm5            # xmm5 = xmm5[1],xmm2[1]
addsd %xmm2, %xmm5
movsd 0x50(%rsp), %xmm2
divsd %xmm5, %xmm2
movq 0x1e8(%rbx), %rcx
movq 0x8(%rcx,%r13), %rdx
subq (%rcx,%r13), %rdx
mulsd %xmm9, %xmm2
sarq $0x2, %rdx
movq %rdx, %xmm3
punpckldq %xmm7, %xmm3    # xmm3 = xmm3[0],xmm7[0],xmm3[1],xmm7[1]
subpd %xmm8, %xmm3
movapd %xmm3, %xmm5
unpckhpd %xmm3, %xmm5            # xmm5 = xmm5[1],xmm3[1]
addsd %xmm3, %xmm5
movsd 0x10(%rsp), %xmm3
divsd %xmm5, %xmm3
mulsd %xmm9, %xmm3
movq 0x200(%rbx), %rcx
movq 0x8(%rcx,%r13), %rdx
subq (%rcx,%r13), %rdx
sarq $0x2, %rdx
movq %rdx, %xmm4
punpckldq %xmm7, %xmm4    # xmm4 = xmm4[0],xmm7[0],xmm4[1],xmm7[1]
subpd %xmm8, %xmm4
movapd %xmm4, %xmm5
unpckhpd %xmm4, %xmm5            # xmm5 = xmm5[1],xmm4[1]
addsd %xmm4, %xmm5
movsd 0x40(%rsp), %xmm4
divsd %xmm5, %xmm4
mulsd %xmm9, %xmm4
movq 0x1d0(%rbx), %rcx
movq 0x8(%rcx,%r13), %rdx
subq (%rcx,%r13), %rdx
sarq $0x2, %rdx
movq %rdx, %xmm5
punpckldq %xmm7, %xmm5    # xmm5 = xmm5[0],xmm7[0],xmm5[1],xmm7[1]
subpd %xmm8, %xmm5
movapd %xmm5, %xmm6
unpckhpd %xmm5, %xmm6            # xmm6 = xmm6[1],xmm5[1]
addsd %xmm5, %xmm6
movsd 0x58(%rsp), %xmm5
divsd %xmm6, %xmm5
mulsd %xmm9, %xmm5
movq 0x8(%rax,%r13), %rcx
subq (%rax,%r13), %rcx
sarq $0x2, %rcx
movq %rcx, %xmm6
punpckldq %xmm7, %xmm6    # xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1]
subpd %xmm8, %xmm6
movapd %xmm6, %xmm7
unpckhpd %xmm6, %xmm7            # xmm7 = xmm7[1],xmm6[1]
addsd %xmm6, %xmm7
movsd 0x8(%rsp), %xmm6
divsd %xmm7, %xmm6
mulsd %xmm9, %xmm6
movl $0x200, %esi            # imm = 0x200
movq %r12, %rdi
leaq 0x8282(%rip), %rdx      # 0x13f19
movl %ebp, %ecx
movsd 0x30(%rsp), %xmm7
movb $0x8, %al
callq 0x32d0
movq %r12, %rdi
callq 0x30c0
movq 0xd313(%rip), %rdi      # 0x18fc8
movq %r12, %rsi
movq %rax, %rdx
callq 0x3200
movq 0x218(%rbx), %rax
movq (%rax,%r13), %rcx
cmpq %rcx, 0x8(%rax,%r13)
je 0xbcd9
addq %r13, %rax
movq %rcx, 0x8(%rax)
movq 0x170(%rbx), %rcx
movq (%rcx,%r15,8), %rax
cmpq %rax, 0x8(%rcx,%r15,8)
je 0xbcf3
leaq (%rcx,%r15,8), %rcx
movq %rax, 0x8(%rcx)
movq 0x1b8(%rbx), %rcx
movq (%rcx,%r15,8), %rax
cmpq %rax, 0x8(%rcx,%r15,8)
je 0xbd0d
leaq (%rcx,%r15,8), %rcx
movq %rax, 0x8(%rcx)
movq 0x1d0(%rbx), %rcx
movq (%rcx,%r15,8), %rax
cmpq %rax, 0x8(%rcx,%r15,8)
je 0xbd27
leaq (%rcx,%r15,8), %rcx
movq %rax, 0x8(%rcx)
movq 0x188(%rbx), %rcx
movq (%rcx,%r15,8), %rax
cmpq %rax, 0x8(%rcx,%r15,8)
je 0xbd41
leaq (%rcx,%r15,8), %rcx
movq %rax, 0x8(%rcx)
movq 0x1a0(%rbx), %rcx
movq (%rcx,%r15,8), %rax
cmpq %rax, 0x8(%rcx,%r15,8)
je 0xbd5b
leaq (%rcx,%r15,8), %rcx
movq %rax, 0x8(%rcx)
movq 0x1e8(%rbx), %rcx
movq (%rcx,%r15,8), %rax
cmpq %rax, 0x8(%rcx,%r15,8)
je 0xbd75
leaq (%rcx,%r15,8), %rcx
movq %rax, 0x8(%rcx)
movq 0x200(%rbx), %rcx
movq (%rcx,%r15,8), %rax
cmpq %rax, 0x8(%rcx,%r15,8)
je 0xbd8f
leaq (%rcx,%r15,8), %rcx
movq %rax, 0x8(%rcx)
incq %rbp
cmpq $0x8, %rbp
jne 0xb8d3
leaq 0x81ab(%rip), %rsi      # 0x13f4e
movl $0x1f, %edx
movq 0xd219(%rip), %r14      # 0x18fc8
movq %r14, %rdi
callq 0x3200
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq 0xd3eb(%rip), %r15      # 0x191d0
cmpl $0x0, (%r15)
je 0xbfe9
xorl %r13d, %r13d
movq 0xd1cf(%rip), %r14      # 0x18fc8
xorl %ebp, %ebp
movl $0x1, %edx
movq %r14, %rdi
leaq 0x76a7(%rip), %rsi      # 0x134b1
callq 0x3200
movq %r14, %rdi
movq %rbp, %rsi
callq 0x3120
movl $0x2, %edx
movq %rax, %rdi
leaq 0x8145(%rip), %rsi      # 0x13f6e
callq 0x3200
movl $0xa, %edx
movq %r14, %rdi
leaq 0x8134(%rip), %rsi      # 0x13f71
callq 0x3200
movq 0xc8(%rbx), %rax
movl (%rax,%rbp,4), %eax
cvtsi2ss %rax, %xmm0
divss 0x1c(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x7a1d(%rip), %xmm1     # 0x13880
mulsd %xmm1, %xmm0
movq %r14, %rdi
callq 0x32e0
movl $0x7, %edx
movq %rax, %rdi
leaq 0x80fe(%rip), %r12      # 0x13f7c
movq %r12, %rsi
callq 0x3200
movl $0xb, %edx
movq %r14, %rdi
leaq 0x80ef(%rip), %rsi      # 0x13f84
callq 0x3200
movq 0xe0(%rbx), %rax
movl (%rax,%rbp,4), %eax
xorps %xmm0, %xmm0
cvtsi2ss %rax, %xmm0
divss 0x1c(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
mulsd 0x79c2(%rip), %xmm0     # 0x13880
movq %r14, %rdi
callq 0x32e0
movl $0x7, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x3200
movl $0x5, %edx
movq %r14, %rdi
leaq 0x80ab(%rip), %rsi      # 0x13f90
callq 0x3200
movq 0x110(%rbx), %rax
movl (%rax,%rbp,4), %esi
movq %r14, %rdi
callq 0x3120
movl $0x6, %edx
movq %r14, %rdi
leaq 0x808b(%rip), %rsi      # 0x13f96
callq 0x3200
movq 0x128(%rbx), %rax
movl (%rax,%rbp,4), %esi
movq %r14, %rdi
callq 0x3120
movl $0x5, %edx
movq %r14, %rdi
leaq 0x806c(%rip), %rsi      # 0x13f9d
callq 0x3200
movq 0x140(%rbx), %rax
movl (%rax,%rbp,4), %esi
movq %r14, %rdi
callq 0x3120
movl $0x5, %edx
movq %r14, %rdi
leaq 0x804c(%rip), %rsi      # 0x13fa3
callq 0x3200
movq 0xf8(%rbx), %rax
movl (%rax,%rbp,4), %esi
movq %r14, %rdi
callq 0x3120
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq 0x140(%rbx), %rax
movl %r13d, (%rax,%rbp,4)
movq 0x128(%rbx), %rax
movl %r13d, (%rax,%rbp,4)
movq 0x110(%rbx), %rax
movl %r13d, (%rax,%rbp,4)
movq 0xe0(%rbx), %rax
movl %r13d, (%rax,%rbp,4)
movq 0xc8(%rbx), %rax
movl %r13d, (%rax,%rbp,4)
movq 0xf8(%rbx), %rax
movl %r13d, (%rax,%rbp,4)
incq %rbp
movl (%r15), %eax
cmpq %rax, %rbp
jb 0xbdfb
xorl %eax, %eax
movl %eax, 0x290(%rbx)
movl %eax, 0x298(%rbx)
movl %eax, 0x248(%rbx)
movl %eax, 0x268(%rbx)
movl %eax, 0x288(%rbx)
movq 0x230(%rbx), %rax
cmpq %rax, 0x238(%rbx)
je 0xc020
movq %rax, 0x238(%rbx)
movq 0x250(%rbx), %rax
cmpq %rax, 0x258(%rbx)
movl 0x64(%rsp), %ecx
movl 0x60(%rsp), %r8d
je 0xc040
movq %rax, 0x258(%rbx)
movq 0x270(%rbx), %rax
cmpq %rax, 0x278(%rbx)
je 0xc057
movq %rax, 0x278(%rbx)
movq 0x10(%rbx), %rdi
addq $0x4b0, %rbx            # imm = 0x4B0
movzbl %cl, %ecx
movq 0x28(%rsp), %rsi
movq %rbx, %rdx
callq 0x5da6
addq $0x298, %rsp            # imm = 0x298
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq