// File: neubig[P]egret/Egret/src/Forest-Berkeley-2.cpp
// Function: genUnaryNode_withoutLabel_berkeley(BerkeleyRuleSet const&, Node&, IorO)
bool genUnaryNode_withoutLabel_berkeley(const BerkeleyRuleSet& ruleSet, Node& node, IorO iot)
{
	if(node.useAllowState())
	{
		Node tempNode(node.start(),node.stop());
		tempNode.reset_scorePool(ruleSet.bsio());

		const AllowStateInfo& asi=node.allowStateInfo();
		const vector<pair<int,vector<int> > >& asi_inVector=asi.allowStateAndSubStates();

		for(int prIter=0;(size_t)prIter<asi_inVector.size();prIter++)
		{
			int pr=asi_inVector[prIter].first;
			
			for(int chIter=0;(size_t)chIter<asi_inVector.size();chIter++)
			{
				int ch=asi_inVector[chIter].first;	
		
				if(ch==pr)continue;

				const BerkeleyUnaryRule* rule=ruleSet.getUnaryRuleByRule(ch,pr);
				if(rule==NULL)continue;

				const vector<int>& chSubs=asi_inVector[chIter].second;
				const vector<int>& prSubs=asi_inVector[prIter].second;

				for(int chSubIter=0;(size_t)chSubIter<chSubs.size();chSubIter++)
				{
					int chsub=chSubs[chSubIter];
						
					for(int prSubIter=0;(size_t)prSubIter<prSubs.size();prSubIter++)
					{
						int prsub=prSubs[prSubIter];
						if(ch==pr&&chsub==prsub)continue;
						double ruleScore=rule->getScore(chsub,prsub);
						if(ruleScore>0)
						{
							if(iot==inside)
							{
								if(node.iScore(ch,chsub)<0)continue;
								/*if(node.iScore(pr,prsub)<0)node.iScore(pr,prsub)=0;
								node.iScore(pr,prsub)+=(node.iScore(ch,chsub)*ruleScore);
								*/
								if(tempNode.iScore(pr,prsub)<0)tempNode.iScore(pr,prsub)=0;
								tempNode.iScore(pr,prsub)+=(node.iScore(ch,chsub)*ruleScore);
							}
							else if(iot==outside)
							{
								if(node.oScore(pr,prsub)<0)continue;
								/*if(node.oScore(ch,chsub)<0)node.oScore(ch,chsub)=0;
								node.oScore(ch,chsub)+=(node.oScore(pr,prsub)*ruleScore);
								*/
								if(tempNode.oScore(ch,chsub)<0)tempNode.oScore(ch,chsub)=0;
								tempNode.oScore(ch,chsub)+=(node.oScore(pr,prsub)*ruleScore);
								if(node.oScore(ch,chsub)>1)
									cerr<<"error here "<<pr<<","<<prsub<<" -- "<<ch<<","<<chsub<<":"<<ruleScore<<endl;
							}					
						}
					}	
				}
			}
		}
		
		for(int chIter=0;(size_t)chIter<asi_inVector.size();chIter++)
		{
			int ch=asi_inVector[chIter].first;
			const vector<int>& chSubs=asi_inVector[chIter].second;
			for(int chSubIter=0;(size_t)chSubIter<chSubs.size();chSubIter++)
			{
				int chsub=chSubs[chSubIter];
				if(iot==inside)
				{
					if(node.iScore(ch,chsub)<0)
						node.iScore(ch,chsub)=tempNode.iScore(ch,chsub);
					else if(tempNode.iScore(ch,chsub)>0)
						node.iScore(ch,chsub)+=tempNode.iScore(ch,chsub);
				}
				else if(iot==outside)
				{
					if(node.oScore(ch,chsub)<0)
						node.oScore(ch,chsub)=tempNode.oScore(ch,chsub);
					else if(tempNode.oScore(ch,chsub)>0)
						node.oScore(ch,chsub)+=tempNode.oScore(ch,chsub);
				}
			}
		}
	}
	else
	{
		const BerkeleyStateInfoOfOneLevel& bsio=ruleSet.bsio();
		int numOfState=(int)bsio.numOfState();
		for(int pr=0;pr<numOfState;pr++)
		{
			for(int ch=0;ch<numOfState;ch++)	
			{
				const BerkeleyUnaryRule* rule=ruleSet.getUnaryRuleByRule(ch,pr);
				if(rule==NULL)continue;

				int ch_numOfSubState=bsio.state2numSubState(ch);
				int pr_numOfSubState=bsio.state2numSubState(pr);
				for(int chsub=0;chsub<ch_numOfSubState;chsub++)
				{
					for(int prsub=0;prsub<pr_numOfSubState;prsub++)
					{
						if(ch==pr&&chsub==prsub)continue;
						
						double ruleScore=rule->getScore(chsub,prsub);
						if(ruleScore>0)
						{
							if(iot==inside)
							{
								if(node.iScore(ch,chsub)<0)continue;
								if(node.iScore(pr,prsub)<0)node.iScore(pr,prsub)=0;
								node.iScore(pr,prsub)+=node.iScore(ch,chsub)*ruleScore;
								//cout<<ch<<","<<chsub<<" -- "<<pr<<","<<prsub<<":"<<ruleScore<<endl;
							}
							else if(iot==outside)
							{
								if(node.oScore(pr,prsub)<0)continue;
								if(node.oScore(ch,chsub)<0)node.oScore(ch,chsub)=0;
								node.oScore(ch,chsub)+=node.oScore(pr,prsub)*ruleScore;
								
							}
						}
					}
				}
			}
		}
		
	}
	const AllowStateInfo& asi=node.set_allowStateAndSubState_withoutLabel(1,0,0);
		//cout<<"allow State:"<<endl;
	//asi.print(cout);
	return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3b0, %rsp            # imm = 0x3B0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0x458f0
testb $0x1, %al
jne 0x43428
jmp 0x43ebd
movq -0x10(%rbp), %rdi
callq 0x45920
movl %eax, -0x1f4(%rbp)
movq -0x10(%rbp), %rdi
callq 0x45940
movl -0x1f4(%rbp), %esi
movl %eax, %edx
leaq -0x130(%rbp), %rdi
callq 0x45960
movq -0x8(%rbp), %rdi
callq 0x45690
movq %rax, -0x1f0(%rbp)
jmp 0x43466
movq -0x1f0(%rbp), %rsi
leaq -0x130(%rbp), %rdi
callq 0x79560
jmp 0x4347b
movq -0x10(%rbp), %rdi
callq 0x45a40
movq %rax, -0x200(%rbp)
jmp 0x4348d
movq -0x200(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x148(%rbp), %rdi
callq 0x7a7c0
movq %rax, -0x208(%rbp)
jmp 0x434b0
movq -0x208(%rbp), %rax
movq %rax, -0x150(%rbp)
movl $0x0, -0x154(%rbp)
movslq -0x154(%rbp), %rax
movq %rax, -0x210(%rbp)
movq -0x150(%rbp), %rdi
callq 0x45a60
movq %rax, %rcx
movq -0x210(%rbp), %rax
cmpq %rcx, %rax
jae 0x43b31
movq -0x150(%rbp), %rdi
movslq -0x154(%rbp), %rsi
callq 0x45a80
movl (%rax), %eax
movl %eax, -0x158(%rbp)
movl $0x0, -0x15c(%rbp)
movslq -0x15c(%rbp), %rax
movq %rax, -0x218(%rbp)
movq -0x150(%rbp), %rdi
callq 0x45a60
movq %rax, %rcx
movq -0x218(%rbp), %rax
cmpq %rcx, %rax
jae 0x43b1b
movq -0x150(%rbp), %rdi
movslq -0x15c(%rbp), %rsi
callq 0x45a80
movl (%rax), %eax
movl %eax, -0x160(%rbp)
movl -0x160(%rbp), %eax
cmpl -0x158(%rbp), %eax
jne 0x43598
jmp 0x43b07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x45b20
jmp 0x44228
movq -0x8(%rbp), %rdi
movl -0x160(%rbp), %esi
movl -0x158(%rbp), %edx
callq 0x456e0
movq %rax, -0x220(%rbp)
jmp 0x435b6
movq -0x220(%rbp), %rax
movq %rax, -0x168(%rbp)
cmpq $0x0, -0x168(%rbp)
jne 0x435d3
jmp 0x43b07
movq -0x150(%rbp), %rdi
movslq -0x15c(%rbp), %rsi
callq 0x45a80
addq $0x8, %rax
movq %rax, -0x170(%rbp)
movq -0x150(%rbp), %rdi
movslq -0x154(%rbp), %rsi
callq 0x45a80
addq $0x8, %rax
movq %rax, -0x178(%rbp)
movl $0x0, -0x17c(%rbp)
movslq -0x17c(%rbp), %rax
movq %rax, -0x228(%rbp)
movq -0x170(%rbp), %rdi
callq 0x16990
movq %rax, %rcx
movq -0x228(%rbp), %rax
cmpq %rcx, %rax
jae 0x43b05
movq -0x170(%rbp), %rdi
movslq -0x17c(%rbp), %rsi
callq 0x457e0
movl (%rax), %eax
movl %eax, -0x180(%rbp)
movl $0x0, -0x184(%rbp)
movslq -0x184(%rbp), %rax
movq %rax, -0x230(%rbp)
movq -0x178(%rbp), %rdi
callq 0x16990
movq %rax, %rcx
movq -0x230(%rbp), %rax
cmpq %rcx, %rax
jae 0x43aef
movq -0x178(%rbp), %rdi
movslq -0x184(%rbp), %rsi
callq 0x457e0
movl (%rax), %eax
movl %eax, -0x188(%rbp)
movl -0x160(%rbp), %eax
cmpl -0x158(%rbp), %eax
jne 0x436d4
movl -0x180(%rbp), %eax
cmpl -0x188(%rbp), %eax
jne 0x436d4
jmp 0x43adb
movq -0x168(%rbp), %rdi
movl -0x180(%rbp), %esi
movl -0x188(%rbp), %edx
callq 0x45710
movsd %xmm0, -0x238(%rbp)
jmp 0x436f6
movsd -0x238(%rbp), %xmm0
movsd %xmm0, -0x190(%rbp)
movsd -0x190(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x43ad9
cmpl $0x0, -0x14(%rbp)
jne 0x43846
movq -0x10(%rbp), %rdi
movl -0x160(%rbp), %esi
movl -0x180(%rbp), %edx
callq 0x45aa0
movq %rax, -0x240(%rbp)
jmp 0x43743
movq -0x240(%rbp), %rax
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
jbe 0x43758
jmp 0x43adb
movl -0x158(%rbp), %esi
movl -0x188(%rbp), %edx
leaq -0x130(%rbp), %rdi
callq 0x45aa0
movq %rax, -0x248(%rbp)
jmp 0x43779
movq -0x248(%rbp), %rax
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
jbe 0x437b8
movl -0x158(%rbp), %esi
movl -0x188(%rbp), %edx
leaq -0x130(%rbp), %rdi
callq 0x45aa0
movq %rax, -0x250(%rbp)
jmp 0x437aa
movq -0x250(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x160(%rbp), %esi
movl -0x180(%rbp), %edx
callq 0x45aa0
movq %rax, -0x258(%rbp)
jmp 0x437d6
movq -0x258(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x270(%rbp)
movsd -0x190(%rbp), %xmm0
movsd %xmm0, -0x268(%rbp)
movl -0x158(%rbp), %esi
movl -0x188(%rbp), %edx
leaq -0x130(%rbp), %rdi
callq 0x45aa0
movq %rax, -0x260(%rbp)
jmp 0x4381a
movq -0x260(%rbp), %rax
movsd -0x268(%rbp), %xmm2
movsd -0x270(%rbp), %xmm0
movsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
jmp 0x43ad7
cmpl $0x1, -0x14(%rbp)
jne 0x43ad5
movq -0x10(%rbp), %rdi
movl -0x158(%rbp), %esi
movl -0x188(%rbp), %edx
callq 0x45ae0
movq %rax, -0x278(%rbp)
jmp 0x4386e
movq -0x278(%rbp), %rax
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
jbe 0x43883
jmp 0x43adb
movl -0x160(%rbp), %esi
movl -0x180(%rbp), %edx
leaq -0x130(%rbp), %rdi
callq 0x45ae0
movq %rax, -0x280(%rbp)
jmp 0x438a4
movq -0x280(%rbp), %rax
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
jbe 0x438e3
movl -0x160(%rbp), %esi
movl -0x180(%rbp), %edx
leaq -0x130(%rbp), %rdi
callq 0x45ae0
movq %rax, -0x288(%rbp)
jmp 0x438d5
movq -0x288(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x158(%rbp), %esi
movl -0x188(%rbp), %edx
callq 0x45ae0
movq %rax, -0x290(%rbp)
jmp 0x43901
movq -0x290(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x2a8(%rbp)
movsd -0x190(%rbp), %xmm0
movsd %xmm0, -0x2a0(%rbp)
movl -0x160(%rbp), %esi
movl -0x180(%rbp), %edx
leaq -0x130(%rbp), %rdi
callq 0x45ae0
movq %rax, -0x298(%rbp)
jmp 0x43945
movq -0x298(%rbp), %rax
movsd -0x2a0(%rbp), %xmm2
movsd -0x2a8(%rbp), %xmm0
movsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x160(%rbp), %esi
movl -0x180(%rbp), %edx
callq 0x45ae0
movq %rax, -0x2b0(%rbp)
jmp 0x4398a
movq -0x2b0(%rbp), %rax
movsd (%rax), %xmm0
movsd 0x4c7cb(%rip), %xmm1    # 0x90168
ucomisd %xmm1, %xmm0
jbe 0x43ad3
movq 0x8b642(%rip), %rdi     # 0xceff0
leaq 0x4c973(%rip), %rsi     # 0x90328
callq 0x4380
movq %rax, -0x2b8(%rbp)
jmp 0x439c3
movq -0x2b8(%rbp), %rdi
movl -0x158(%rbp), %esi
callq 0x4630
movq %rax, -0x2c0(%rbp)
jmp 0x439de
movq -0x2c0(%rbp), %rdi
leaq 0x4c643(%rip), %rsi     # 0x9002f
callq 0x4380
movq %rax, -0x2c8(%rbp)
jmp 0x439fa
movq -0x2c8(%rbp), %rdi
movl -0x188(%rbp), %esi
callq 0x4630
movq %rax, -0x2d0(%rbp)
jmp 0x43a15
movq -0x2d0(%rbp), %rdi
leaq 0x4c911(%rip), %rsi     # 0x90334
callq 0x4380
movq %rax, -0x2d8(%rbp)
jmp 0x43a31
movq -0x2d8(%rbp), %rdi
movl -0x160(%rbp), %esi
callq 0x4630
movq %rax, -0x2e0(%rbp)
jmp 0x43a4c
movq -0x2e0(%rbp), %rdi
leaq 0x4c5d5(%rip), %rsi     # 0x9002f
callq 0x4380
movq %rax, -0x2e8(%rbp)
jmp 0x43a68
movq -0x2e8(%rbp), %rdi
movl -0x180(%rbp), %esi
callq 0x4630
movq %rax, -0x2f0(%rbp)
jmp 0x43a83
movq -0x2f0(%rbp), %rdi
leaq 0x4d237(%rip), %rsi     # 0x90cc8
callq 0x4380
movq %rax, -0x2f8(%rbp)
jmp 0x43a9f
movq -0x2f8(%rbp), %rdi
movsd -0x190(%rbp), %xmm0
callq 0x46b0
movq %rax, -0x300(%rbp)
jmp 0x43abc
movq -0x300(%rbp), %rdi
movq 0x8b4ee(%rip), %rsi     # 0xcefb8
callq 0x43d0
jmp 0x43ad1
jmp 0x43ad3
jmp 0x43ad5
jmp 0x43ad7
jmp 0x43ad9
jmp 0x43adb
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
jmp 0x4366b
jmp 0x43af1
movl -0x17c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x17c(%rbp)
jmp 0x43619
jmp 0x43b07
movl -0x15c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x15c(%rbp)
jmp 0x4351a
jmp 0x43b1d
movl -0x154(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x154(%rbp)
jmp 0x434c8
movl $0x0, -0x194(%rbp)
movslq -0x194(%rbp), %rax
movq %rax, -0x308(%rbp)
movq -0x150(%rbp), %rdi
callq 0x45a60
movq %rax, %rcx
movq -0x308(%rbp), %rax
cmpq %rcx, %rax
jae 0x43eac
movq -0x150(%rbp), %rdi
movslq -0x194(%rbp), %rsi
callq 0x45a80
movl (%rax), %eax
movl %eax, -0x198(%rbp)
movq -0x150(%rbp), %rdi
movslq -0x194(%rbp), %rsi
callq 0x45a80
addq $0x8, %rax
movq %rax, -0x1a0(%rbp)
movl $0x0, -0x1a4(%rbp)
movslq -0x1a4(%rbp), %rax
movq %rax, -0x310(%rbp)
movq -0x1a0(%rbp), %rdi
callq 0x16990
movq %rax, %rcx
movq -0x310(%rbp), %rax
cmpq %rcx, %rax
jae 0x43e96
movq -0x1a0(%rbp), %rdi
movslq -0x1a4(%rbp), %rsi
callq 0x457e0
movl (%rax), %eax
movl %eax, -0x1a8(%rbp)
cmpl $0x0, -0x14(%rbp)
jne 0x43d3a
movq -0x10(%rbp), %rdi
movl -0x198(%rbp), %esi
movl -0x1a8(%rbp), %edx
callq 0x45aa0
movq %rax, -0x318(%rbp)
jmp 0x43c1b
movq -0x318(%rbp), %rax
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
jbe 0x43c95
movl -0x198(%rbp), %esi
movl -0x1a8(%rbp), %edx
leaq -0x130(%rbp), %rdi
callq 0x45aa0
movq %rax, -0x320(%rbp)
jmp 0x43c4c
movq -0x320(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x330(%rbp)
movq -0x10(%rbp), %rdi
movl -0x198(%rbp), %esi
movl -0x1a8(%rbp), %edx
callq 0x45aa0
movq %rax, -0x328(%rbp)
jmp 0x43c7d
movq -0x328(%rbp), %rax
movsd -0x330(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x43d35
movl -0x198(%rbp), %esi
movl -0x1a8(%rbp), %edx
leaq -0x130(%rbp), %rdi
callq 0x45aa0
movq %rax, -0x338(%rbp)
jmp 0x43cb6
movq -0x338(%rbp), %rax
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x43d33
movl -0x198(%rbp), %esi
movl -0x1a8(%rbp), %edx
leaq -0x130(%rbp), %rdi
callq 0x45aa0
movq %rax, -0x340(%rbp)
jmp 0x43ceb
movq -0x340(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x350(%rbp)
movq -0x10(%rbp), %rdi
movl -0x198(%rbp), %esi
movl -0x1a8(%rbp), %edx
callq 0x45aa0
movq %rax, -0x348(%rbp)
jmp 0x43d1c
movq -0x348(%rbp), %rax
movsd -0x350(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
jmp 0x43d35
jmp 0x43e80
cmpl $0x1, -0x14(%rbp)
jne 0x43e7e
movq -0x10(%rbp), %rdi
movl -0x198(%rbp), %esi
movl -0x1a8(%rbp), %edx
callq 0x45ae0
movq %rax, -0x358(%rbp)
jmp 0x43d62
movq -0x358(%rbp), %rax
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
jbe 0x43ddc
movl -0x198(%rbp), %esi
movl -0x1a8(%rbp), %edx
leaq -0x130(%rbp), %rdi
callq 0x45ae0
movq %rax, -0x360(%rbp)
jmp 0x43d93
movq -0x360(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x370(%rbp)
movq -0x10(%rbp), %rdi
movl -0x198(%rbp), %esi
movl -0x1a8(%rbp), %edx
callq 0x45ae0
movq %rax, -0x368(%rbp)
jmp 0x43dc4
movq -0x368(%rbp), %rax
movsd -0x370(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x43e7c
movl -0x198(%rbp), %esi
movl -0x1a8(%rbp), %edx
leaq -0x130(%rbp), %rdi
callq 0x45ae0
movq %rax, -0x378(%rbp)
jmp 0x43dfd
movq -0x378(%rbp), %rax
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x43e7a
movl -0x198(%rbp), %esi
movl -0x1a8(%rbp), %edx
leaq -0x130(%rbp), %rdi
callq 0x45ae0
movq %rax, -0x380(%rbp)
jmp 0x43e32
movq -0x380(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x390(%rbp)
movq -0x10(%rbp), %rdi
movl -0x198(%rbp), %esi
movl -0x1a8(%rbp), %edx
callq 0x45ae0
movq %rax, -0x388(%rbp)
jmp 0x43e63
movq -0x388(%rbp), %rax
movsd -0x390(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
jmp 0x43e7c
jmp 0x43e7e
jmp 0x43e80
jmp 0x43e82
movl -0x1a4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1a4(%rbp)
jmp 0x43bab
jmp 0x43e98
movl -0x194(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x194(%rbp)
jmp 0x43b3b
leaq -0x130(%rbp), %rdi
callq 0x45b20
jmp 0x441fd
movq -0x8(%rbp), %rdi
callq 0x45690
movq %rax, -0x1b0(%rbp)
movq -0x1b0(%rbp), %rdi
callq 0xa270
movl %eax, -0x1b4(%rbp)
movl $0x0, -0x1b8(%rbp)
movl -0x1b8(%rbp), %eax
cmpl -0x1b4(%rbp), %eax
jge 0x441fb
movl $0x0, -0x1bc(%rbp)
movl -0x1bc(%rbp), %eax
cmpl -0x1b4(%rbp), %eax
jge 0x441e5
movq -0x8(%rbp), %rdi
movl -0x1bc(%rbp), %esi
movl -0x1b8(%rbp), %edx
callq 0x456e0
movq %rax, -0x1c8(%rbp)
cmpq $0x0, -0x1c8(%rbp)
jne 0x43f42
jmp 0x441d1
movq -0x1b0(%rbp), %rdi
movl -0x1bc(%rbp), %esi
callq 0x2de70
movl %eax, -0x1cc(%rbp)
movq -0x1b0(%rbp), %rdi
movl -0x1b8(%rbp), %esi
callq 0x2de70
movl %eax, -0x1d0(%rbp)
movl $0x0, -0x1d4(%rbp)
movl -0x1d4(%rbp), %eax
cmpl -0x1cc(%rbp), %eax
jge 0x441cf
movl $0x0, -0x1d8(%rbp)
movl -0x1d8(%rbp), %eax
cmpl -0x1d0(%rbp), %eax
jge 0x441b9
movl -0x1bc(%rbp), %eax
cmpl -0x1b8(%rbp), %eax
jne 0x43fcb
movl -0x1d4(%rbp), %eax
cmpl -0x1d8(%rbp), %eax
jne 0x43fcb
jmp 0x441a5
movq -0x1c8(%rbp), %rdi
movl -0x1d4(%rbp), %esi
movl -0x1d8(%rbp), %edx
callq 0x45710
movsd %xmm0, -0x1e0(%rbp)
movsd -0x1e0(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x441a3
cmpl $0x0, -0x14(%rbp)
jne 0x440d2
movq -0x10(%rbp), %rdi
movl -0x1bc(%rbp), %esi
movl -0x1d4(%rbp), %edx
callq 0x45aa0
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
jbe 0x4402d
jmp 0x441a5
movq -0x10(%rbp), %rdi
movl -0x1b8(%rbp), %esi
movl -0x1d8(%rbp), %edx
callq 0x45aa0
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
jbe 0x44067
movq -0x10(%rbp), %rdi
movl -0x1b8(%rbp), %esi
movl -0x1d8(%rbp), %edx
callq 0x45aa0
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x1bc(%rbp), %esi
movl -0x1d4(%rbp), %edx
callq 0x45aa0
movsd (%rax), %xmm0
movsd %xmm0, -0x3a0(%rbp)
movsd -0x1e0(%rbp), %xmm0
movsd %xmm0, -0x398(%rbp)
movq -0x10(%rbp), %rdi
movl -0x1b8(%rbp), %esi
movl -0x1d8(%rbp), %edx
callq 0x45aa0
movsd -0x3a0(%rbp), %xmm0
movsd -0x398(%rbp), %xmm2
movsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
jmp 0x441a1
cmpl $0x1, -0x14(%rbp)
jne 0x4419f
movq -0x10(%rbp), %rdi
movl -0x1b8(%rbp), %esi
movl -0x1d8(%rbp), %edx
callq 0x45ae0
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
jbe 0x440ff
jmp 0x441a5
movq -0x10(%rbp), %rdi
movl -0x1bc(%rbp), %esi
movl -0x1d4(%rbp), %edx
callq 0x45ae0
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
jbe 0x44139
movq -0x10(%rbp), %rdi
movl -0x1bc(%rbp), %esi
movl -0x1d4(%rbp), %edx
callq 0x45ae0
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x1b8(%rbp), %esi
movl -0x1d8(%rbp), %edx
callq 0x45ae0
movsd (%rax), %xmm0
movsd %xmm0, -0x3b0(%rbp)
movsd -0x1e0(%rbp), %xmm0
movsd %xmm0, -0x3a8(%rbp)
movq -0x10(%rbp), %rdi
movl -0x1bc(%rbp), %esi
movl -0x1d4(%rbp), %edx
callq 0x45ae0
movsd -0x3b0(%rbp), %xmm0
movsd -0x3a8(%rbp), %xmm2
movsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
jmp 0x441a1
jmp 0x441a3
jmp 0x441a5
movl -0x1d8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1d8(%rbp)
jmp 0x43f98
jmp 0x441bb
movl -0x1d4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1d4(%rbp)
jmp 0x43f7c
jmp 0x441d1
movl -0x1bc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1bc(%rbp)
jmp 0x43f05
jmp 0x441e7
movl -0x1b8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1b8(%rbp)
jmp 0x43ee9
jmp 0x441fd
movq -0x10(%rbp), %rdi
movsd 0x4bf5f(%rip), %xmm0    # 0x90168
xorps %xmm2, %xmm2
movaps %xmm2, %xmm1
callq 0x79700
movq %rax, -0x1e8(%rbp)
movb $0x1, %al
andb $0x1, %al
addq $0x3b0, %rsp            # imm = 0x3B0
popq %rbp
retq
movq -0x138(%rbp), %rdi
callq 0x4650
nopw %cs:(%rax,%rax)