// File: dcarrey[P]hgt-detection/./fonctions.cpp
// Function: bestRFNeighbor(InputTree*, InputTree*, int)
int	bestRFNeighbor(struct InputTree *geneTree,struct InputTree *speciesTree,int position){
	int choix=position;
	int v1=-1,v2=-1,v3=-1,v4=-1,i;
	struct InputTree tmpTree;	//= arbre temporaire qui va etre modifier pour calculer RF
	struct CRITERIA aCrit;		//== struture of all the criteria
	int min= (int) INFINI;

	initInputTree(&tmpTree);	

	//== recherche des voisins
	for(i=1;i<=2*geneTree->size-3-geneTree->kt;i++){

		if( (geneTree->ARETE[2*i-1] == geneTree->ARETE[2*position-1] || geneTree->ARETE[2*i-2] == geneTree->ARETE[2*position-1] || 
		     geneTree->ARETE[2*i-1] == geneTree->ARETE[2*position-2] || geneTree->ARETE[2*i-2] == geneTree->ARETE[2*position-2] ) && (i!=position) && (v1==-1)){
		
			v1 = i; //printf("\n(v1=%d,",i);
		}
		else if( (geneTree->ARETE[2*i-1] == geneTree->ARETE[2*position-1] || geneTree->ARETE[2*i-2] == geneTree->ARETE[2*position-1] || 
		     geneTree->ARETE[2*i-1] == geneTree->ARETE[2*position-2] || geneTree->ARETE[2*i-2] == geneTree->ARETE[2*position-2] ) && (i!=position) && (v2==-1)){
		
			v2 = i; //printf("v2=%d,",i);
		}
		else if( (geneTree->ARETE[2*i-1] == geneTree->ARETE[2*position-1] || geneTree->ARETE[2*i-2] == geneTree->ARETE[2*position-1] || 
		     geneTree->ARETE[2*i-1] == geneTree->ARETE[2*position-2] || geneTree->ARETE[2*i-2] == geneTree->ARETE[2*position-2] ) && (i!=position) && (v3==-1)){
		
			v3 = i; //printf("v2=%d,",i);
		}
		else if( (geneTree->ARETE[2*i-1] == geneTree->ARETE[2*position-1] || geneTree->ARETE[2*i-2] == geneTree->ARETE[2*position-1] || 
		     geneTree->ARETE[2*i-1] == geneTree->ARETE[2*position-2] || geneTree->ARETE[2*i-2] == geneTree->ARETE[2*position-2] ) && (i!=position) && (v4==-1)){
		
			v4 = i; //printf("v3=%d)",i);
		}
	}
	
	//printf("\n Selection de la racine :");

	copyInputTree(&tmpTree,(*geneTree),1,1);
	addLeafAndUpdate(&tmpTree,position);
	tmpTree.Root = tmpTree.size;
		
	InitCriteria(&aCrit,tmpTree.size);
	computeCriteria(speciesTree->ADD,tmpTree.ADD,tmpTree.size,&aCrit,speciesTree->LONGUEUR,speciesTree->ARETE,tmpTree.LONGUEUR,tmpTree.ARETE);

	//printf("\n(%d), %d--%d = %d",position,geneTree->ARETE[2*position-1],geneTree->ARETE[2*position-2],aCrit.RF);
	if(aCrit.RF < min){
		min=aCrit.RF;
		choix = position;
	}
		
	copyInputTree(&tmpTree,(*geneTree),1,0);
	addLeafAndUpdate(&tmpTree,v1);
	tmpTree.Root = tmpTree.size;
		
	FreeCriteria(&aCrit,tmpTree.size);
	InitCriteria(&aCrit,tmpTree.size);

	computeCriteria(speciesTree->ADD,tmpTree.ADD,tmpTree.size,&aCrit,speciesTree->LONGUEUR,speciesTree->ARETE,tmpTree.LONGUEUR,tmpTree.ARETE);

	//printf("\n(%d), %d--%d = %d",v1,geneTree->ARETE[2*v1-1],geneTree->ARETE[2*v1-2],aCrit.RF);
	if(aCrit.RF < min){
		min=aCrit.RF;
		choix = v1;
	}
	
	copyInputTree(&tmpTree,(*geneTree),1,0);
	addLeafAndUpdate(&tmpTree,v2);
	tmpTree.Root = tmpTree.size;
		
	FreeCriteria(&aCrit,tmpTree.size);
	InitCriteria(&aCrit,tmpTree.size);
	computeCriteria(speciesTree->ADD,tmpTree.ADD,tmpTree.size,&aCrit,speciesTree->LONGUEUR,speciesTree->ARETE,tmpTree.LONGUEUR,tmpTree.ARETE);

	//printf("\n(%d), %d--%d = %d",v2,geneTree->ARETE[2*v2-1],geneTree->ARETE[2*v2-2],aCrit.RF);
	if(aCrit.RF < min){
		min=aCrit.RF;
		choix = v2;
	}
		
	copyInputTree(&tmpTree,(*geneTree),1,0);
	addLeafAndUpdate(&tmpTree,v3);
	tmpTree.Root = tmpTree.size;
		
	FreeCriteria(&aCrit,tmpTree.size);
	InitCriteria(&aCrit,tmpTree.size);
	computeCriteria(speciesTree->ADD,tmpTree.ADD,tmpTree.size,&aCrit,speciesTree->LONGUEUR,speciesTree->ARETE,tmpTree.LONGUEUR,tmpTree.ARETE);
	//printf("\n(%d), %d--%d = %d",v3,geneTree->ARETE[2*v3-1],geneTree->ARETE[2*v3-2],aCrit.RF);
	if(aCrit.RF < min){
		min=aCrit.RF;
		choix = v3;
	}
	
	copyInputTree(&tmpTree,(*geneTree),1,0);
	addLeafAndUpdate(&tmpTree,v4);
	tmpTree.Root = tmpTree.size;
		
	FreeCriteria(&aCrit,tmpTree.size);
	InitCriteria(&aCrit,tmpTree.size);
	computeCriteria(speciesTree->ADD,tmpTree.ADD,tmpTree.size,&aCrit,speciesTree->LONGUEUR,speciesTree->ARETE,tmpTree.LONGUEUR,tmpTree.ARETE);
	//printf("\n(%d), %d--%d = %d",v4,geneTree->ARETE[2*v4-1],geneTree->ARETE[2*v4-2],aCrit.RF);
	if(aCrit.RF < min){
		min=aCrit.RF;
		choix = v4;
	}
	
	
	FreeCriteria(&aCrit,tmpTree.size);
	return choix;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x300, %rsp            # imm = 0x300
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x18(%rbp)
movl $0xffffffff, -0x1c(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x20(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x24(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x28(%rbp) # imm = 0xFFFFFFFF
movl $0xf423f, -0xec(%rbp)   # imm = 0xF423F
leaq -0x88(%rbp), %rdi
callq 0xd040
movl $0x1, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movq -0x8(%rbp), %rcx
movl (%rcx), %ecx
shll %ecx
subl $0x3, %ecx
movq -0x8(%rbp), %rdx
subl 0x48(%rdx), %ecx
cmpl %ecx, %eax
jg 0x1a987
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x1, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x1a6c6
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x2, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x1, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x1a6c6
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x2, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x1a6c6
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x2, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x2, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
jne 0x1a6df
movl -0x2c(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0x1a6df
cmpl $-0x1, -0x1c(%rbp)
jne 0x1a6df
movl -0x2c(%rbp), %eax
movl %eax, -0x1c(%rbp)
jmp 0x1a977
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x1, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x1a7a3
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x2, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x1, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x1a7a3
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x2, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x1a7a3
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x2, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x2, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
jne 0x1a7bc
movl -0x2c(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0x1a7bc
cmpl $-0x1, -0x20(%rbp)
jne 0x1a7bc
movl -0x2c(%rbp), %eax
movl %eax, -0x20(%rbp)
jmp 0x1a975
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x1, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x1a880
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x2, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x1, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x1a880
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x2, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x1a880
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x2, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x2, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
jne 0x1a899
movl -0x2c(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0x1a899
cmpl $-0x1, -0x24(%rbp)
jne 0x1a899
movl -0x2c(%rbp), %eax
movl %eax, -0x24(%rbp)
jmp 0x1a973
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x1, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x1a95d
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x2, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x1, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x1a95d
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x2, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x1a95d
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
shll %ecx
subl $0x2, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movl -0x14(%rbp), %edx
shll %edx
subl $0x2, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
jne 0x1a971
movl -0x2c(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0x1a971
cmpl $-0x1, -0x28(%rbp)
jne 0x1a971
movl -0x2c(%rbp), %eax
movl %eax, -0x28(%rbp)
jmp 0x1a973
jmp 0x1a975
jmp 0x1a977
jmp 0x1a979
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x1a5e5
movq -0x8(%rbp), %rsi
leaq -0x148(%rbp), %rdi
movl $0x58, %edx
callq 0x1070
movq -0xf8(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x50(%rax)
movups -0x108(%rbp), %xmm0
movups %xmm0, 0x40(%rax)
movups -0x148(%rbp), %xmm0
movups -0x138(%rbp), %xmm1
movups -0x128(%rbp), %xmm2
movups -0x118(%rbp), %xmm3
movups %xmm3, 0x30(%rax)
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x88(%rbp), %rdi
movl $0x1, %edx
movl %edx, %esi
callq 0x12530
movl -0x14(%rbp), %esi
leaq -0x88(%rbp), %rdi
callq 0xbc50
movl -0x88(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x88(%rbp), %esi
leaq -0xe8(%rbp), %rdi
callq 0x14520
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x80(%rbp), %rsi
movl -0x88(%rbp), %edx
movq -0x10(%rbp), %rax
movq 0x38(%rax), %r8
movq -0x10(%rbp), %rax
movq 0x30(%rax), %r9
movq -0x50(%rbp), %r10
movq -0x58(%rbp), %rax
leaq -0xe8(%rbp), %rcx
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0xea10
movl -0xb8(%rbp), %eax
cmpl -0xec(%rbp), %eax
jge 0x1aa7c
movl -0xb8(%rbp), %eax
movl %eax, -0xec(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rsi
leaq -0x1a0(%rbp), %rdi
movl $0x58, %edx
callq 0x1070
xorl %eax, %eax
movq -0x150(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x50(%rax)
movups -0x160(%rbp), %xmm0
movups %xmm0, 0x40(%rax)
movups -0x1a0(%rbp), %xmm0
movups -0x190(%rbp), %xmm1
movups -0x180(%rbp), %xmm2
movups -0x170(%rbp), %xmm3
movups %xmm3, 0x30(%rax)
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x88(%rbp), %rdi
movl $0x1, %esi
xorl %edx, %edx
callq 0x12530
movl -0x1c(%rbp), %esi
leaq -0x88(%rbp), %rdi
callq 0xbc50
movl -0x88(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x88(%rbp), %esi
leaq -0xe8(%rbp), %rdi
callq 0x14650
movl -0x88(%rbp), %esi
leaq -0xe8(%rbp), %rdi
callq 0x14520
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x80(%rbp), %rsi
movl -0x88(%rbp), %edx
movq -0x10(%rbp), %rax
movq 0x38(%rax), %r8
movq -0x10(%rbp), %rax
movq 0x30(%rax), %r9
movq -0x50(%rbp), %r10
movq -0x58(%rbp), %rax
leaq -0xe8(%rbp), %rcx
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0xea10
movl -0xb8(%rbp), %eax
cmpl -0xec(%rbp), %eax
jge 0x1ab85
movl -0xb8(%rbp), %eax
movl %eax, -0xec(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rsi
leaq -0x1f8(%rbp), %rdi
movl $0x58, %edx
callq 0x1070
xorl %eax, %eax
movq -0x1a8(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x50(%rax)
movups -0x1b8(%rbp), %xmm0
movups %xmm0, 0x40(%rax)
movups -0x1f8(%rbp), %xmm0
movups -0x1e8(%rbp), %xmm1
movups -0x1d8(%rbp), %xmm2
movups -0x1c8(%rbp), %xmm3
movups %xmm3, 0x30(%rax)
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x88(%rbp), %rdi
movl $0x1, %esi
xorl %edx, %edx
callq 0x12530
movl -0x20(%rbp), %esi
leaq -0x88(%rbp), %rdi
callq 0xbc50
movl -0x88(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x88(%rbp), %esi
leaq -0xe8(%rbp), %rdi
callq 0x14650
movl -0x88(%rbp), %esi
leaq -0xe8(%rbp), %rdi
callq 0x14520
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x80(%rbp), %rsi
movl -0x88(%rbp), %edx
movq -0x10(%rbp), %rax
movq 0x38(%rax), %r8
movq -0x10(%rbp), %rax
movq 0x30(%rax), %r9
movq -0x50(%rbp), %r10
movq -0x58(%rbp), %rax
leaq -0xe8(%rbp), %rcx
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0xea10
movl -0xb8(%rbp), %eax
cmpl -0xec(%rbp), %eax
jge 0x1ac8e
movl -0xb8(%rbp), %eax
movl %eax, -0xec(%rbp)
movl -0x20(%rbp), %eax
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rsi
leaq -0x250(%rbp), %rdi
movl $0x58, %edx
callq 0x1070
xorl %eax, %eax
movq -0x200(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x50(%rax)
movups -0x210(%rbp), %xmm0
movups %xmm0, 0x40(%rax)
movups -0x250(%rbp), %xmm0
movups -0x240(%rbp), %xmm1
movups -0x230(%rbp), %xmm2
movups -0x220(%rbp), %xmm3
movups %xmm3, 0x30(%rax)
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x88(%rbp), %rdi
movl $0x1, %esi
xorl %edx, %edx
callq 0x12530
movl -0x24(%rbp), %esi
leaq -0x88(%rbp), %rdi
callq 0xbc50
movl -0x88(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x88(%rbp), %esi
leaq -0xe8(%rbp), %rdi
callq 0x14650
movl -0x88(%rbp), %esi
leaq -0xe8(%rbp), %rdi
callq 0x14520
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x80(%rbp), %rsi
movl -0x88(%rbp), %edx
movq -0x10(%rbp), %rax
movq 0x38(%rax), %r8
movq -0x10(%rbp), %rax
movq 0x30(%rax), %r9
movq -0x50(%rbp), %r10
movq -0x58(%rbp), %rax
leaq -0xe8(%rbp), %rcx
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0xea10
movl -0xb8(%rbp), %eax
cmpl -0xec(%rbp), %eax
jge 0x1ad97
movl -0xb8(%rbp), %eax
movl %eax, -0xec(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rsi
leaq -0x2a8(%rbp), %rdi
movl $0x58, %edx
callq 0x1070
xorl %eax, %eax
movq -0x258(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x50(%rax)
movups -0x268(%rbp), %xmm0
movups %xmm0, 0x40(%rax)
movups -0x2a8(%rbp), %xmm0
movups -0x298(%rbp), %xmm1
movups -0x288(%rbp), %xmm2
movups -0x278(%rbp), %xmm3
movups %xmm3, 0x30(%rax)
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x88(%rbp), %rdi
movl $0x1, %esi
xorl %edx, %edx
callq 0x12530
movl -0x28(%rbp), %esi
leaq -0x88(%rbp), %rdi
callq 0xbc50
movl -0x88(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x88(%rbp), %esi
leaq -0xe8(%rbp), %rdi
callq 0x14650
movl -0x88(%rbp), %esi
leaq -0xe8(%rbp), %rdi
callq 0x14520
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x80(%rbp), %rsi
movl -0x88(%rbp), %edx
movq -0x10(%rbp), %rax
movq 0x38(%rax), %r8
movq -0x10(%rbp), %rax
movq 0x30(%rax), %r9
movq -0x50(%rbp), %r10
movq -0x58(%rbp), %rax
leaq -0xe8(%rbp), %rcx
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0xea10
movl -0xb8(%rbp), %eax
cmpl -0xec(%rbp), %eax
jge 0x1aea0
movl -0xb8(%rbp), %eax
movl %eax, -0xec(%rbp)
movl -0x28(%rbp), %eax
movl %eax, -0x18(%rbp)
movl -0x88(%rbp), %esi
leaq -0xe8(%rbp), %rdi
callq 0x14650
movl -0x18(%rbp), %eax
addq $0x300, %rsp            # imm = 0x300
popq %rbp
retq
nop