// File: /workspace/github_cpp_makefile_star2_O3/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 $0x2a8, %rsp            # imm = 0x2A8
movl %esi, %r13d
movq %rdi, %rbx
movq 0x230(%rdi), %rcx
movq 0x238(%rdi), %rdx
movl 0x298(%rdi), %eax
cvtsi2ss %rax, %xmm1
movupd 0x268(%rdi), %xmm2
movss 0x248(%rdi), %xmm0
unpcklps %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
xorpd %xmm9, %xmm9
unpcklps %xmm9, %xmm2            # xmm2 = xmm2[0],xmm9[0],xmm2[1],xmm9[1]
movapd 0x8684(%rip), %xmm0     # 0x13050
orpd %xmm0, %xmm2
subpd %xmm0, %xmm2
movl 0x288(%rdi), %esi
cvtsi2ss %rsi, %xmm6
cvtpd2ps %xmm2, %xmm4
divss %xmm1, %xmm6
shufps $0x0, %xmm1, %xmm1      # xmm1 = xmm1[0,0,0,0]
divps %xmm1, %xmm4
xorps %xmm1, %xmm1
subq %rcx, %rdx
je 0xab44
sarq $0x2, %rdx
movq 0x250(%rbx), %r8
movq 0x270(%rbx), %r9
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
xorl %r10d, %r10d
xorpd %xmm10, %xmm10
xorl %esi, %esi
xorl %ebp, %ebp
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
xorl %r11d, %r11d
movl %r15d, %r12d
movl (%rcx,%r10,4), %r15d
cmpl %r11d, %r15d
cmoval %r15d, %r11d
cmpl %r15d, %r12d
cmovbl %r12d, %r15d
movl (%r8,%r10,4), %r12d
cmpl %esi, %r12d
cmoval %r12d, %esi
cmpl %edi, %r12d
cmovbl %r12d, %edi
movss (%rcx,%r10,4), %xmm2
movss (%r8,%r10,4), %xmm3
unpcklpd %xmm2, %xmm3            # xmm3 = xmm3[0],xmm2[0]
orpd %xmm0, %xmm3
subpd %xmm0, %xmm3
cvtpd2ps %xmm3, %xmm2
subps %xmm4, %xmm2
cvtps2pd %xmm2, %xmm2
movl (%r9,%r10,4), %r12d
cmpl %ebp, %r12d
cmoval %r12d, %ebp
cmpl %r14d, %r12d
cmovbl %r12d, %r14d
mulpd %xmm2, %xmm2
xorps %xmm3, %xmm3
cvtsi2ss %r12, %xmm3
addpd %xmm2, %xmm9
subss %xmm6, %xmm3
xorps %xmm2, %xmm2
cvtss2sd %xmm3, %xmm2
mulsd %xmm2, %xmm2
addsd %xmm2, %xmm10
incq %r10
movl %r10d, %r12d
cmpq %r12, %rdx
ja 0xaa2c
movd %ebp, %xmm0
movd %r14d, %xmm2
punpckldq %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
movd %r15d, %xmm0
movd %r11d, %xmm3
punpckldq %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]
punpcklqdq %xmm2, %xmm3    # xmm3 = xmm3[0],xmm2[0]
movdqa 0x8dfe(%rip), %xmm0     # 0x138e0
pand %xmm3, %xmm0
por 0x8e02(%rip), %xmm0     # 0x138f0
psrld $0x10, %xmm3
por 0x8e05(%rip), %xmm3     # 0x13900
subps 0x8e0e(%rip), %xmm3     # 0x13910
addps %xmm0, %xmm3
mulps 0x8e14(%rip), %xmm3     # 0x13920
cvtps2pd %xmm3, %xmm8
movhlps %xmm3, %xmm3            # xmm3 = xmm3[1,1]
cvtps2pd %xmm3, %xmm7
movl %edi, %ecx
xorps %xmm0, %xmm0
cvtsi2ss %rcx, %xmm0
movss 0x85cc(%rip), %xmm2     # 0x130f4
movl %esi, %ecx
xorps %xmm3, %xmm3
cvtsi2ss %rcx, %xmm3
mulss %xmm2, %xmm0
cvtss2sd %xmm0, %xmm5
mulss %xmm2, %xmm3
cvtss2sd %xmm3, %xmm3
jmp 0xab64
movsd 0x8d74(%rip), %xmm5     # 0x138c0
xorps %xmm8, %xmm8
movlhps %xmm5, %xmm8            # xmm8 = xmm8[0],xmm5[0]
movsd 0x8d64(%rip), %xmm7     # 0x138c0
xorps %xmm3, %xmm3
xorpd %xmm10, %xmm10
movl %eax, %eax
xorps %xmm2, %xmm2
cvtsi2sd %rax, %xmm2
movapd %xmm9, %xmm0
unpckhpd %xmm9, %xmm0            # xmm0 = xmm0[1],xmm9[1]
divsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
movaps %xmm4, 0x70(%rsp)
movsd %xmm3, 0x20(%rsp)
movaps %xmm5, 0x80(%rsp)
movss %xmm6, 0x18(%rsp)
movapd %xmm7, 0x60(%rsp)
movaps %xmm8, 0x50(%rsp)
movsd %xmm10, (%rsp)
jb 0xabb3
sqrtsd %xmm0, %xmm0
jmp 0xabc6
movapd %xmm9, 0x30(%rsp)
callq 0x3170
movapd 0x30(%rsp), %xmm9
movsd %xmm0, 0x40(%rsp)
movl 0x298(%rbx), %eax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd %xmm0, %xmm9
xorpd %xmm2, %xmm2
ucomisd %xmm2, %xmm9
jb 0xabf4
xorps %xmm0, %xmm0
sqrtsd %xmm9, %xmm0
jmp 0xac02
movapd %xmm9, %xmm0
callq 0x3170
xorpd %xmm2, %xmm2
movsd %xmm0, 0x30(%rsp)
movsd (%rsp), %xmm0
movl 0x298(%rbx), %eax
xorps %xmm1, %xmm1
cvtsi2sd %rax, %xmm1
divsd %xmm1, %xmm0
ucomisd %xmm2, %xmm0
jb 0xac2b
sqrtsd %xmm0, %xmm0
jmp 0xac30
callq 0x3170
movsd %xmm0, 0x48(%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 0x8469(%rip), %xmm2     # 0x130f4
movaps %xmm1, %xmm0
mulss %xmm2, %xmm0
cvtss2sd %xmm0, %xmm0
mulsd 0x8c2a(%rip), %xmm0     # 0x138c8
divsd %xmm0, %xmm3
mulsd 0x8496(%rip), %xmm3     # 0x13140
cvtsi2sd %rax, %xmm4
movl 0x294(%rbx), %eax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd %xmm0, %xmm4
mulsd 0x8c07(%rip), %xmm4     # 0x138d0
leaq 0x2b0(%rbx), %rax
movq %rax, 0x10(%rsp)
testq %rcx, %rcx
movl %r13d, 0x2c(%rsp)
movl %esi, 0x28(%rsp)
movss %xmm1, 0xc(%rsp)
movsd %xmm3, (%rsp)
movsd %xmm4, 0x90(%rsp)
js 0xad01
xorps %xmm0, %xmm0
cvtsi2ss %rcx, %xmm0
jmp 0xad19
movq %rcx, %rax
shrq %rax
andl $0x1, %ecx
orq %rax, %rcx
xorps %xmm0, %xmm0
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
mulss %xmm2, %xmm0
divss 0x83d3(%rip), %xmm0     # 0x130f8
cvtss2sd %xmm0, %xmm0
movq 0x10(%rsp), %rdi
callq 0x32e0
movq %rax, %r15
leaq 0x88a5(%rip), %r12      # 0x135e2
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 (%rsp), %xmm0
callq 0x32e0
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x3200
movaps 0x70(%rsp), %xmm0
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
mulss 0x8366(%rip), %xmm0     # 0x130f4
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x98(%rsp)
movq %r15, %rdi
callq 0x32e0
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x3200
movq %r15, %rdi
movsd 0x90(%rsp), %xmm0
callq 0x32e0
leaq 0x8fa1(%rip), %rsi      # 0x13d6f
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 0xe1c5(%rip), %r13      # 0x18fc8
leaq 0x8f68(%rip), %rsi      # 0x13d72
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 0x8f55(%rip), %rsi      # 0x13d8c
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 0x8f33(%rip), %rsi      # 0x13da5
movl $0x15, %edx
movq %r13, %rdi
callq 0x3200
movl 0x298(%rbx), %esi
movq %r13, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x8f24(%rip), %r14      # 0x13dbb
movl $0xa, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x3200
movl 0x290(%rbx), %esi
movq %r15, %rdi
callq 0x3120
movq %rax, %r15
leaq 0x830f(%rip), %rsi      # 0x131ce
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 0x81f9(%rip), %xmm0     # 0x130ec
cvtss2sd %xmm0, %xmm0
movq %r15, %rdi
callq 0x32e0
movq %rax, %r15
leaq 0x8ebd(%rip), %rsi      # 0x13dc6
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 0x8e77(%rip), %rsi      # 0x13dd2
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 0x8e47(%rip), %rsi      # 0x13de8
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 0x8e05(%rip), %rsi      # 0x13df2
movl $0x15, %edx
movq %r13, %rdi
callq 0x3200
movl 0x28c(%rbx), %esi
movq %r13, %rdi
callq 0x3120
movq %rax, %r14
leaq 0x8df6(%rip), %rsi      # 0x13e08
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 0x8dc7(%rip), %rsi      # 0x13e25
movl $0x15, %edx
movq %r13, %rdi
callq 0x3200
movq %r13, %rdi
movsd (%rsp), %xmm0
callq 0x32e0
movq %rax, %r14
leaq 0x8db9(%rip), %rsi      # 0x13e3b
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 0x8d86(%rip), %rsi      # 0x13e43
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 0x8d52(%rip), %rsi      # 0x13e59
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 0x8d31(%rip), %rsi      # 0x13e74
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movq %r13, %rdi
movsd 0x98(%rsp), %xmm0
callq 0x32e0
movq %rax, %r14
leaq 0x8d1c(%rip), %rbp      # 0x13e87
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 0x8ce2(%rip), %rsi      # 0x13e8b
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movsd 0x40(%rsp), %xmm0
mulsd 0x8714(%rip), %xmm0     # 0x138d8
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 0x8c91(%rip), %r12      # 0x13e9e
movl $0x12, %edx
movq %r13, %rdi
movq %r12, %rsi
callq 0x3200
movaps 0x50(%rsp), %xmm0
movhlps %xmm0, %xmm0            # xmm0 = xmm0[1,1]
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 0x8c43(%rip), %r14      # 0x13eb1
movl $0x12, %edx
movq %r13, %rdi
movq %r14, %rsi
callq 0x3200
movq %r13, %rdi
movaps 0x50(%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 0x8bf8(%rip), %rsi      # 0x13ec4
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movss 0x18(%rsp), %xmm0
mulss 0x7e0d(%rip), %xmm0     # 0x130f4
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 0x8ba3(%rip), %rsi      # 0x13ed7
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movsd 0x48(%rsp), %xmm0
mulsd 0x8589(%rip), %xmm0     # 0x138d8
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 0x8b62(%rip), %rsi      # 0x13eea
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movq %r13, %rdi
movaps 0x60(%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 0x8b1a(%rip), %rsi      # 0x13efd
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movaps 0x60(%rsp), %xmm0
movhlps %xmm0, %xmm0            # xmm0 = xmm0[1,1]
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 0x8acf(%rip), %rsi      # 0x13f10
movl $0x12, %edx
movq %r13, %rdi
callq 0x3200
movaps 0x70(%rsp), %xmm0
mulss 0x7c99(%rip), %xmm0     # 0x130f4
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 0x89db(%rip), %rsi      # 0x13e8b
callq 0x3200
movsd 0x30(%rsp), %xmm0
mulsd 0x8415(%rip), %xmm0     # 0x138d8
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
movaps 0x80(%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 0x20(%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 0x8965(%rip), %rsi      # 0x13f23
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 0x8964(%rip), %rsi      # 0x13f68
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
movq 0x170(%rbx), %rax
xorl %ebp, %ebp
leaq 0xa0(%rsp), %r12
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 0xb77c
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
xorpd %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 0xb6ea
jmp 0xb798
xorps %xmm5, %xmm5
xorps %xmm0, %xmm0
xorpd %xmm3, %xmm3
xorps %xmm8, %xmm8
xorps %xmm2, %xmm2
xorpd %xmm7, %xmm7
xorps %xmm6, %xmm6
xorpd %xmm4, %xmm4
movsd %xmm8, 0x18(%rsp)
movsd %xmm5, 0x30(%rsp)
movsd %xmm4, 0x80(%rsp)
movsd %xmm7, 0x20(%rsp)
movsd %xmm6, (%rsp)
movsd %xmm3, 0x50(%rsp)
movsd %xmm2, 0x60(%rsp)
xorps %xmm1, %xmm1
cvtsi2ss %rax, %xmm1
divss %xmm1, %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd 0x80f8(%rip), %xmm0     # 0x138d8
mulsd %xmm0, %xmm1
movsd %xmm1, 0x70(%rsp)
movq 0x10(%rsp), %rdi
movapd %xmm1, %xmm0
callq 0x32e0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x7ddb(%rip), %rsi      # 0x135e2
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 0x7840(%rip), %xmm6     # 0x13080
punpckldq %xmm6, %xmm0    # xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1]
movapd 0x7844(%rip), %xmm7     # 0x13090
subpd %xmm7, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movsd 0x18(%rsp), %xmm0
divsd %xmm1, %xmm0
movsd 0x8069(%rip), %xmm9     # 0x138d8
mulsd %xmm9, %xmm0
movq 0x1b8(%rbx), %rcx
movq 0x8(%rcx,%r13), %rdx
subq (%rcx,%r13), %rdx
sarq $0x2, %rdx
movq %rdx, %xmm2
punpckldq %xmm6, %xmm2    # xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1]
subpd %xmm7, %xmm2
movapd %xmm2, %xmm1
unpckhpd %xmm2, %xmm1            # xmm1 = xmm1[1],xmm2[1]
addsd %xmm2, %xmm1
movsd 0x30(%rsp), %xmm2
divsd %xmm1, %xmm2
mulsd %xmm9, %xmm2
movapd %xmm2, %xmm1
movq 0x218(%rbx), %rcx
movq 0x8(%rcx,%r13), %rdx
subq (%rcx,%r13), %rdx
sarq $0x2, %rdx
movq %rdx, %xmm2
punpckldq %xmm6, %xmm2    # xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1]
subpd %xmm7, %xmm2
movapd %xmm2, %xmm3
unpckhpd %xmm2, %xmm3            # xmm3 = xmm3[1],xmm2[1]
addsd %xmm2, %xmm3
movsd 0x80(%rsp), %xmm2
divsd %xmm3, %xmm2
movq 0x1e8(%rbx), %rcx
movq 0x8(%rcx,%r13), %rdx
subq (%rcx,%r13), %rdx
mulsd %xmm9, %xmm2
sarq $0x2, %rdx
movq %rdx, %xmm3
punpckldq %xmm6, %xmm3    # xmm3 = xmm3[0],xmm6[0],xmm3[1],xmm6[1]
subpd %xmm7, %xmm3
movapd %xmm3, %xmm4
unpckhpd %xmm3, %xmm4            # xmm4 = xmm4[1],xmm3[1]
addsd %xmm3, %xmm4
movsd 0x20(%rsp), %xmm3
divsd %xmm4, %xmm3
mulsd %xmm9, %xmm3
movq 0x200(%rbx), %rcx
movq 0x8(%rcx,%r13), %rdx
subq (%rcx,%r13), %rdx
sarq $0x2, %rdx
movq %rdx, %xmm4
punpckldq %xmm6, %xmm4    # xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1]
subpd %xmm7, %xmm4
movapd %xmm4, %xmm5
unpckhpd %xmm4, %xmm5            # xmm5 = xmm5[1],xmm4[1]
addsd %xmm4, %xmm5
movsd (%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 %xmm6, %xmm5    # xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1]
subpd %xmm7, %xmm5
movapd %xmm5, %xmm8
unpckhpd %xmm5, %xmm8            # xmm8 = xmm8[1],xmm5[1]
addsd %xmm5, %xmm8
movsd 0x50(%rsp), %xmm5
divsd %xmm8, %xmm5
mulsd %xmm9, %xmm5
movq 0x8(%rax,%r13), %rcx
subq (%rax,%r13), %rcx
sarq $0x2, %rcx
movq %rcx, %xmm8
punpckldq %xmm6, %xmm8    # xmm8 = xmm8[0],xmm6[0],xmm8[1],xmm6[1]
subpd %xmm7, %xmm8
movapd %xmm8, %xmm7
unpckhpd %xmm8, %xmm7            # xmm7 = xmm7[1],xmm8[1]
addsd %xmm8, %xmm7
movsd 0x60(%rsp), %xmm6
divsd %xmm7, %xmm6
mulsd %xmm9, %xmm6
movl $0x200, %esi            # imm = 0x200
movq %r12, %rdi
leaq 0x85c6(%rip), %rdx      # 0x13fb9
movl %ebp, %ecx
movsd 0x70(%rsp), %xmm7
movb $0x8, %al
callq 0x32d0
movq %r12, %rdi
callq 0x30c0
movq 0xd5b7(%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 0xba35
addq %r13, %rax
movq %rcx, 0x8(%rax)
movq 0x170(%rbx), %rax
movq (%rax,%r15,8), %rcx
cmpq %rcx, 0x8(%rax,%r15,8)
je 0xba4f
leaq (%rax,%r15,8), %rdx
movq %rcx, 0x8(%rdx)
movq 0x1b8(%rbx), %rdx
movq (%rdx,%r15,8), %rcx
cmpq %rcx, 0x8(%rdx,%r15,8)
je 0xba69
leaq (%rdx,%r15,8), %rdx
movq %rcx, 0x8(%rdx)
movq 0x1d0(%rbx), %rdx
movq (%rdx,%r15,8), %rcx
cmpq %rcx, 0x8(%rdx,%r15,8)
je 0xba83
leaq (%rdx,%r15,8), %rdx
movq %rcx, 0x8(%rdx)
movq 0x188(%rbx), %rdx
movq (%rdx,%r15,8), %rcx
cmpq %rcx, 0x8(%rdx,%r15,8)
je 0xba9d
leaq (%rdx,%r15,8), %rdx
movq %rcx, 0x8(%rdx)
movq 0x1a0(%rbx), %rdx
movq (%rdx,%r15,8), %rcx
cmpq %rcx, 0x8(%rdx,%r15,8)
je 0xbab7
leaq (%rdx,%r15,8), %rdx
movq %rcx, 0x8(%rdx)
movq 0x1e8(%rbx), %rdx
movq (%rdx,%r15,8), %rcx
cmpq %rcx, 0x8(%rdx,%r15,8)
je 0xbad1
leaq (%rdx,%r15,8), %rdx
movq %rcx, 0x8(%rdx)
movq 0x200(%rbx), %rdx
movq (%rdx,%r15,8), %rcx
cmpq %rcx, 0x8(%rdx,%r15,8)
je 0xbaeb
leaq (%rdx,%r15,8), %rdx
movq %rcx, 0x8(%rdx)
incq %rbp
cmpq $0x8, %rbp
jne 0xb64a
leaq 0x84ef(%rip), %rsi      # 0x13fee
movl $0x1f, %edx
movq 0xd4bd(%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 0xd68f(%rip), %r15      # 0x191d0
cmpl $0x0, (%r15)
je 0xbd45
xorl %r13d, %r13d
movq 0xd473(%rip), %r14      # 0x18fc8
xorl %ebp, %ebp
movl $0x1, %edx
movq %r14, %rdi
leaq 0x799b(%rip), %rsi      # 0x13501
callq 0x3200
movq %r14, %rdi
movq %rbp, %rsi
callq 0x3120
movl $0x2, %edx
movq %rax, %rdi
leaq 0x8489(%rip), %rsi      # 0x1400e
callq 0x3200
movl $0xa, %edx
movq %r14, %rdi
leaq 0x8478(%rip), %rsi      # 0x14011
callq 0x3200
movq 0xc8(%rbx), %rax
movl (%rax,%rbp,4), %eax
cvtsi2ss %rax, %xmm0
divss 0xc(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x7d11(%rip), %xmm1     # 0x138d0
mulsd %xmm1, %xmm0
movq %r14, %rdi
callq 0x32e0
movl $0x7, %edx
movq %rax, %rdi
leaq 0x8442(%rip), %r12      # 0x1401c
movq %r12, %rsi
callq 0x3200
movl $0xb, %edx
movq %r14, %rdi
leaq 0x8433(%rip), %rsi      # 0x14024
callq 0x3200
movq 0xe0(%rbx), %rax
movl (%rax,%rbp,4), %eax
xorps %xmm0, %xmm0
cvtsi2ss %rax, %xmm0
divss 0xc(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
mulsd 0x7cb6(%rip), %xmm0     # 0x138d0
movq %r14, %rdi
callq 0x32e0
movl $0x7, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x3200
movl $0x5, %edx
movq %r14, %rdi
leaq 0x83ef(%rip), %rsi      # 0x14030
callq 0x3200
movq 0x110(%rbx), %rax
movl (%rax,%rbp,4), %esi
movq %r14, %rdi
callq 0x3120
movl $0x6, %edx
movq %r14, %rdi
leaq 0x83cf(%rip), %rsi      # 0x14036
callq 0x3200
movq 0x128(%rbx), %rax
movl (%rax,%rbp,4), %esi
movq %r14, %rdi
callq 0x3120
movl $0x5, %edx
movq %r14, %rdi
leaq 0x83b0(%rip), %rsi      # 0x1403d
callq 0x3200
movq 0x140(%rbx), %rax
movl (%rax,%rbp,4), %esi
movq %r14, %rdi
callq 0x3120
movl $0x5, %edx
movq %r14, %rdi
leaq 0x8390(%rip), %rsi      # 0x14043
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 0xbb57
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 0xbd7c
movq %rax, 0x238(%rbx)
movq 0x250(%rbx), %rax
cmpq %rax, 0x258(%rbx)
movl 0x2c(%rsp), %ecx
movl 0x28(%rsp), %r8d
je 0xbd9c
movq %rax, 0x258(%rbx)
movq 0x270(%rbx), %rax
cmpq %rax, 0x278(%rbx)
je 0xbdb3
movq %rax, 0x278(%rbx)
movq 0x10(%rbx), %rdi
addq $0x4b0, %rbx            # imm = 0x4B0
movzbl %cl, %ecx
movq 0x10(%rsp), %rsi
movq %rbx, %rdx
callq 0x5bbc
addq $0x2a8, %rsp            # imm = 0x2A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq