// File: /workspace/github_c_makefile_star2_O0/dapogon[P]cellcoal/src/cellcoal.c
// Function: ReadUserTree
static void ReadUserTree (FILE *fp)
	{
	int			taxonNumber, numDigits;
	int			nextAvailableNode;
	int			i, j;
	int			digit, digit1, digit2, digit3;
	char		*tempString;
	TreeNode	*p, *q;
	
	p = q = NULL;
	
	/* allocate space for reading the tree string */
	treeString = (char*) calloc (MAX_LINE, sizeof(char));
	if (!treeString)
		{
		fprintf (stderr, "Could not allocate the treeString structure\n");
		exit (-1);
		}

	tempString = (char*) calloc (MAX_NAME, sizeof(char));
        if (!tempString)
            {
            fprintf (stderr, "Could not allocate the tempString structure\n");
            exit (-1);
            }
	
	/* allocate space for tree */
    treeNodes = (TreeNode *) calloc(numNodes, sizeof(TreeNode));
    if (!treeNodes)
        {
        fprintf (stderr, "Could not allocate nodes (%ld)\n", numNodes * sizeof(TreeNode));
        exit (-1);
        }
	
	/* allocate space for cellNames */
    cellNames = (char **) calloc(numCells, sizeof(char *));
    if (!cellNames)
        {
        fprintf (stderr, "Could not allocate cellNames (%ld)\n", numCells * sizeof(char *));
        exit (-1);
        }
   for (i=0; i<numCells; i++)
	   {
	   cellNames[i] = (char *) calloc(MAX_NAME, sizeof(char));
	   if (!cellNames[i])
		   {
		   fprintf (stderr, "Could not allocate cellNames[%d] (%ld)\n", i,  MAX_NAME * sizeof(char));
		   exit (-1);
		   }
	   }
	
	/* initialize tree nodes */
    for (i=0; i<numNodes; i++)
        {
        treeNodes[i].left = NULL;
        treeNodes[i].right = NULL;
        treeNodes[i].anc = NULL;
        treeNodes[i].time = 0.0;
        treeNodes[i].length = 0.0;
        treeNodes[i].index = -1;
        treeNodes[i].label = -1;
        treeNodes[i].isHealthyRoot = NO;
        treeNodes[i].isHealthyTip = NO;
		treeNodes[i].name = (char*) calloc (MAX_NAME, sizeof(char));
		if (!treeNodes[i].name)
			{
			fprintf (stderr, "Could not allocate the treeNodes[i].name structure\n");
			PrintUsage(stderr);
			}
		}

	/* open treefile */
	if ((fpUserTree = fopen(userTreeFile, "r")) == NULL)
		{
		fprintf (stderr, "\nERROR: Can't open user treefile \"%s\"\n", userTreeFile);
		PrintUsage(stderr);
		}

	/* read the tree string */
	fgets (treeString, MAX_LINE, fpUserTree);
	if (treeString == NULL)
		{
		fprintf (stderr, "\nERROR: Can't read tree string");
		PrintUsage(stderr);
		}
	fclose(fpUserTree);
	
	CheckTree(treeString);

	/* build the tree linked list */
    numCells = 0;
    nextAvailableNode = 0;
    i = 0;
    do
        {
        if (treeString[i] == '(')
            {
            if (nextAvailableNode == 0)
                {
				p = treeNodes + nextAvailableNode;
                coalTreeMRCA = p;
				p->index = nextAvailableNode;
				nextAvailableNode++;
				}
            else
                {
				q = treeNodes + nextAvailableNode;
				if (p->left == NULL)
					{
					p->left = q;
					q->anc = p;
					}
				else
					{
					p->right = q;
					q->anc = p;
					}
				p = q;
				p->index = nextAvailableNode;
                nextAvailableNode++;
				}
            }
        else if (treeString[i] == ')')
            {
            q = p->anc;
            p = q;
            }
        else if (treeString[i] == ',')
            {
            q = p->anc;
            p = q;
            }
		else if (treeString[i] == ':')
	        {
	        i++;
            for (j=0; j<10; j++)
                tempString[j] = ' ';
            j = 0;
	        while (treeString[i] != ',' && treeString[i] != ')' && treeString[i] != ':' && treeString[i] != ';' && treeString[i] != '(')
	        	tempString[j++] = treeString[i++];
	        i--;
	        sscanf (tempString, "%lf", &p->branchLength);
			
			if (p->left == NULL)
				p->numLeftDescendants = 1;
			
			if( p->right == NULL)
				p->numRightDescendants = 1;
			
			if (p->left != NULL && p->right != NULL)
				{
				p->numLeftDescendants += p->left->numLeftDescendants + p->left->numRightDescendants;
				p->numRightDescendants += p->right->numLeftDescendants + p->right->numRightDescendants;
				
				p->meanDepth = ((p->left->branchLength +  p->left->meanDepth) * p->numLeftDescendants
								+ (p->right->branchLength +  p->right->meanDepth) * p->numRightDescendants)
								/ (p->numLeftDescendants + p->numRightDescendants);
				}
			}
        else
        	/* now read taxon names*/
        	{
			if (/* DISABLES CODE */ (0)) /* let's read every name as a word */
            /* if (isdigit(treeString[i]) == YES)*/ /* taxon names are numbers */
            	{
	            numDigits = 0;
	            digit1 = digit2 = digit3 = 0;
	            while (treeString[i] != ',' && treeString[i] != ')' && treeString[i] != ':')
	                    {
	                    if      (treeString[i] == '0') digit = 0;
	                    else if (treeString[i] == '1') digit = 1;
	                    else if (treeString[i] == '2') digit = 2;
	                    else if (treeString[i] == '3') digit = 3;
	                    else if (treeString[i] == '4') digit = 4;
	                    else if (treeString[i] == '5') digit = 5;
	                    else if (treeString[i] == '6') digit = 6;
	                    else if (treeString[i] == '7') digit = 7;
	                    else if (treeString[i] == '8') digit = 8;
	                    else if (treeString[i] == '9') digit = 9;
	                    if      (numDigits == 0) digit1 = digit;
	                    else if (numDigits == 1) digit2 = digit;
	                    else if (numDigits == 2) digit3 = digit;
	                    numDigits++;
	                    i++;
	                    }
	            i--;
	            if (numDigits == 1)
	            	taxonNumber = digit1;
	            else if (numDigits == 2)
					taxonNumber = 10*digit1 + digit2;
	            else if (numDigits == 3)
	            	taxonNumber = 100*digit1 + 10*digit2 + digit3;
				}
			else /* taxon names are letters */
	            {
				taxonName = (char*) calloc (MAX_NAME, sizeof(char));
				if (!taxonName)
					{
					fprintf (stderr, "Could not allocate the taxonName structure\n");
					exit (-1);
					}
	           	taxonNamesAreChars = YES;
	            j = 0;
	            while (treeString[i] != ',' && treeString[i] != ')' && treeString[i] != ':')
	            	taxonName[j++] = treeString[i++];
	            i--;
				}
            q = treeNodes + nextAvailableNode;
			if (p->left == NULL)
				{
				p->left = q;
				q->anc = p;
				}
			else
				{
				p->right = q;
				q->anc = p;
				}
			strcpy(q->name,taxonName);
			strcpy(cellNames[numCells],taxonName);
            p = q;
			p->index = nextAvailableNode;
           	nextAvailableNode++;
            numCells++;
 			free (taxonName);
           }
        i++;
        } while (treeString[i] != ';');
	
	/* Connect the coalescent cell MRCA node with the outgroup ancestral cell */
	p = coalTreeMRCA;
	if (p->left != NULL && p->right != NULL)
		{
		p->numLeftDescendants += p->left->numLeftDescendants + p->left->numRightDescendants;
		p->numRightDescendants += p->right->numLeftDescendants + p->right->numRightDescendants;
		
		p->meanDepth = ((p->left->branchLength +  p->left->meanDepth) * p->numLeftDescendants
						 + (p->right->branchLength +  p->right->meanDepth) * p->numRightDescendants)
		/ (p->numLeftDescendants + p->numRightDescendants);
		}
	
    if (noisy > 2)
        fprintf (stderr, "\n>> Adding healthy root to user tree... ");
    healthyRoot = treeNodes + nextAvailableNode;
	healthyRoot->index = nextAvailableNode;
   	healthyRoot->left = coalTreeMRCA;
	healthyRoot->length = 0;
	healthyRoot->isHealthyRoot = YES;
	healthyRoot->name = "healthyroot";
	coalTreeMRCA->anc = healthyRoot;
	coalTreeMRCA->branchLength = coalTreeMRCA->meanDepth * transformingBranchLengthRatio;
    if (noisy > 2)
        fprintf (stderr, "DONE");

    nextAvailableNode++;
	
    /* Connect the healthy ancestral cell with the tip healthy cell*/
    if (noisy > 2)
        fprintf (stderr, "\n>> Adding healthy tip to user tree... ");
    healthyTip = treeNodes + nextAvailableNode;
    healthyTip->left = NULL;
    healthyTip->right = NULL;
    healthyTip->anc = healthyRoot;
    healthyRoot->right = healthyTip;
    healthyTip->time = 0;
    healthyTip->branchLength = (coalTreeMRCA->meanDepth + coalTreeMRCA->branchLength) * healthyTipBranchLengthRatio;
    healthyTip->isHealthyTip = YES;
	healthyTip->name = "healthy";
	healthyTip->index = nextAvailableNode;
   if (noisy > 2)
        fprintf (stderr, "DONE");

    /* Relabel nodes on tree (label tips with consecutive indexes) */
    if (noisy > 2)
        fprintf (stderr, "\n>> Relabeling nodes on tree ... ");

	TipNodeNum = 0;
	IntNodeNum = numCells+1;
	RelabelUserTree (healthyRoot);

    if (noisy > 2)
        fprintf (stderr, "DONE");

	numNodes = nextAvailableNode+1;

	/* reallocate tree nodes */
	treeNodes = (TreeNode *) realloc (treeNodes, numNodes * sizeof (TreeNode));
	if (treeNodes == NULL)
		{
		fprintf (stderr, "Could not reallocate treeNodes (%ld bytes)\n", numNodes * sizeof (TreeNode));
		PrintUsage(stderr);
		}

	fprintf (fpLog, "\n\nUser-defined tree: ");
	PrintTree (healthyRoot, fpLog);

	free (tempString);
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq $0x0, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movl $0x7a120, %edi          # imm = 0x7A120
movl $0x1, %esi
callq 0x2190
movq %rax, 0x444fe(%rip)     # 0x4f970
cmpq $0x0, 0x444f6(%rip)     # 0x4f970
jne 0xb49e
movq 0x42b75(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x358c3(%rip), %rsi     # 0x40d50
movb $0x0, %al
callq 0x21b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2290
movl $0x78, %edi
movl $0x1, %esi
callq 0x2190
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0xb4da
movq 0x42b39(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x358b4(%rip), %rsi     # 0x40d7d
movb $0x0, %al
callq 0x21b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2290
movslq 0x42ff7(%rip), %rdi     # 0x4e4d8
movl $0x60, %esi
callq 0x2190
movq %rax, 0x4436e(%rip)     # 0x4f860
cmpq $0x0, 0x44366(%rip)     # 0x4f860
jne 0xb529
movq 0x42af5(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movslq 0x42fcb(%rip), %rax     # 0x4e4d8
imulq $0x60, %rax, %rdx
leaq 0x353ff(%rip), %rsi     # 0x40917
movb $0x0, %al
callq 0x21b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2290
movslq 0x42ca4(%rip), %rdi     # 0x4e1d4
movl $0x8, %esi
callq 0x2190
movq %rax, 0x443af(%rip)     # 0x4f8f0
cmpq $0x0, 0x443a7(%rip)     # 0x4f8f0
jne 0xb578
movq 0x42aa6(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movslq 0x42c78(%rip), %rdx     # 0x4e1d4
shlq $0x3, %rdx
leaq 0x35843(%rip), %rsi     # 0x40daa
movb $0x0, %al
callq 0x21b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2290
movl $0x0, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl 0x42c4c(%rip), %eax     # 0x4e1d4
jge 0xb5f4
movl $0x78, %edi
movl $0x1, %esi
callq 0x2190
movq %rax, %rdx
movq 0x4434d(%rip), %rax     # 0x4f8f0
movslq -0x18(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x4433e(%rip), %rax     # 0x4f8f0
movslq -0x18(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jne 0xb5e7
movq 0x42a34(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movl -0x18(%rbp), %edx
leaq 0x357fd(%rip), %rsi     # 0x40dce
movl $0x78, %ecx
movb $0x0, %al
callq 0x21b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2290
jmp 0xb5e9
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0xb57f
movl $0x0, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl 0x42ed4(%rip), %eax     # 0x4e4d8
jge 0xb767
movq 0x4424f(%rip), %rax     # 0x4f860
movslq -0x18(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq $0x0, (%rax)
movq 0x44236(%rip), %rax     # 0x4f860
movslq -0x18(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq $0x0, 0x8(%rax)
movq 0x4421c(%rip), %rax     # 0x4f860
movslq -0x18(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq $0x0, 0x10(%rax)
movq 0x44202(%rip), %rax     # 0x4f860
movslq -0x18(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x38(%rax)
movq 0x441e8(%rip), %rax     # 0x4f860
movslq -0x18(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x30(%rax)
movq 0x441ce(%rip), %rax     # 0x4f860
movslq -0x18(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movl $0xffffffff, 0x18(%rax) # imm = 0xFFFFFFFF
movq 0x441b5(%rip), %rax     # 0x4f860
movslq -0x18(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movl $0xffffffff, 0x1c(%rax) # imm = 0xFFFFFFFF
movq 0x4419c(%rip), %rax     # 0x4f860
movslq -0x18(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movl $0x0, 0x24(%rax)
movq 0x44183(%rip), %rax     # 0x4f860
movslq -0x18(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movl $0x0, 0x20(%rax)
movl $0x78, %edi
movl $0x1, %esi
callq 0x2190
movq %rax, %rcx
movq 0x44158(%rip), %rax     # 0x4f860
movslq -0x18(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x58(%rax)
movq 0x44142(%rip), %rax     # 0x4f860
movslq -0x18(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
cmpq $0x0, 0x58(%rax)
jne 0xb757
movq 0x428c1(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x3521c(%rip), %rsi     # 0x4095d
movb $0x0, %al
callq 0x21b0
movq 0x428a9(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
callq 0x9f20
jmp 0xb759
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0xb5fb
leaq 0x43bc2(%rip), %rdi     # 0x4f330
leaq 0x33db3(%rip), %rsi     # 0x3f528
callq 0x2230
movq %rax, 0x43faf(%rip)     # 0x4f730
cmpq $0x0, %rax
jne 0xb7b5
movq 0x4286a(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x3565e(%rip), %rsi     # 0x40df6
leaq 0x43b91(%rip), %rdx     # 0x4f330
movb $0x0, %al
callq 0x21b0
movq 0x4284b(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
callq 0x9f20
movq 0x441b4(%rip), %rdi     # 0x4f970
movq 0x43f6d(%rip), %rdx     # 0x4f730
movl $0x7a120, %esi          # imm = 0x7A120
callq 0x2180
cmpq $0x0, 0x4419b(%rip)     # 0x4f970
jne 0xb7fe
movq 0x4281a(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x35635(%rip), %rsi     # 0x40e1d
movb $0x0, %al
callq 0x21b0
movq 0x42802(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
callq 0x9f20
movq 0x43f2b(%rip), %rdi     # 0x4f730
callq 0x20e0
movq 0x4415f(%rip), %rdi     # 0x4f970
callq 0x19810
movl $0x0, 0x429b4(%rip)     # 0x4e1d4
movl $0x0, -0x14(%rbp)
movl $0x0, -0x18(%rbp)
movq 0x4413b(%rip), %rax     # 0x4f970
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x28, %eax
jne 0xb8f3
cmpl $0x0, -0x14(%rbp)
jne 0xb882
movq 0x4400d(%rip), %rax     # 0x4f860
movslq -0x14(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq %rax, 0x43f03(%rip)     # 0x4f770
movl -0x14(%rbp), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x18(%rax)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0xb8ee
movq 0x43fd7(%rip), %rax     # 0x4f860
movslq -0x14(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x48(%rbp)
movq -0x40(%rbp), %rax
cmpq $0x0, (%rax)
jne 0xb8bb
movq -0x48(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, (%rax)
movq -0x40(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0xb8d3
movq -0x48(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x40(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x48(%rbp), %rax
movq %rax, -0x40(%rbp)
movl -0x14(%rbp), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x18(%rax)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0xbd10
movq 0x44076(%rip), %rax     # 0x4f970
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x29, %eax
jne 0xb920
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0xbd0e
movq 0x44049(%rip), %rax     # 0x4f970
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2c, %eax
jne 0xb94d
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0xbd0c
movq 0x4401c(%rip), %rax     # 0x4f970
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x3a, %eax
jne 0xbb6d
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
cmpl $0xa, -0x1c(%rbp)
jge 0xb992
movq -0x38(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movb $0x20, (%rax,%rcx)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0xb975
movl $0x0, -0x1c(%rbp)
movq 0x43fd0(%rip), %rax     # 0x4f970
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x2c, %ecx
movb %al, -0x49(%rbp)
je 0xba15
movq 0x43fb7(%rip), %rax     # 0x4f970
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x29, %ecx
movb %al, -0x49(%rbp)
je 0xba15
movq 0x43f9e(%rip), %rax     # 0x4f970
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x3a, %ecx
movb %al, -0x49(%rbp)
je 0xba15
movq 0x43f85(%rip), %rax     # 0x4f970
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x3b, %ecx
movb %al, -0x49(%rbp)
je 0xba15
movq 0x43f6c(%rip), %rax     # 0x4f970
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x28, %eax
setne %al
movb %al, -0x49(%rbp)
movb -0x49(%rbp), %al
testb $0x1, %al
jne 0xba1e
jmp 0xba50
movq 0x43f4b(%rip), %rax     # 0x4f970
movl -0x18(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x18(%rbp)
movslq %ecx, %rcx
movb (%rax,%rcx), %dl
movq -0x38(%rbp), %rax
movl -0x1c(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x1c(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
jmp 0xb999
movl -0x18(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x18(%rbp)
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %rdx
addq $0x40, %rdx
leaq 0x366b8(%rip), %rsi     # 0x42124
movb $0x0, %al
callq 0x2200
movq -0x40(%rbp), %rax
cmpq $0x0, (%rax)
jne 0xba88
movq -0x40(%rbp), %rax
movl $0x1, 0x28(%rax)
movq -0x40(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0xba9e
movq -0x40(%rbp), %rax
movl $0x1, 0x2c(%rax)
movq -0x40(%rbp), %rax
cmpq $0x0, (%rax)
je 0xbb68
movq -0x40(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0xbb68
movq -0x40(%rbp), %rax
movq (%rax), %rax
movl 0x28(%rax), %ecx
movq -0x40(%rbp), %rax
movq (%rax), %rax
addl 0x2c(%rax), %ecx
movq -0x40(%rbp), %rax
addl 0x28(%rax), %ecx
movl %ecx, 0x28(%rax)
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x28(%rax), %ecx
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
addl 0x2c(%rax), %ecx
movq -0x40(%rbp), %rax
addl 0x2c(%rax), %ecx
movl %ecx, 0x2c(%rax)
movq -0x40(%rbp), %rax
movq (%rax), %rax
movsd 0x40(%rax), %xmm0
movq -0x40(%rbp), %rax
movq (%rax), %rax
addsd 0x48(%rax), %xmm0
movq -0x40(%rbp), %rax
cvtsi2sdl 0x28(%rax), %xmm2
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
movsd 0x40(%rax), %xmm1
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
addsd 0x48(%rax), %xmm1
movq -0x40(%rbp), %rax
cvtsi2sdl 0x2c(%rax), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x40(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x40(%rbp), %rcx
addl 0x2c(%rcx), %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movq -0x40(%rbp), %rax
movsd %xmm0, 0x48(%rax)
jmp 0xbd0a
movl $0x78, %edi
movl $0x1, %esi
callq 0x2190
movq %rax, 0x43df5(%rip)     # 0x4f978
cmpq $0x0, 0x43ded(%rip)     # 0x4f978
jne 0xbbaf
movq 0x42464(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x3529e(%rip), %rsi     # 0x40e3c
movb $0x0, %al
callq 0x21b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2290
movl $0x1, 0x43dc7(%rip)     # 0x4f980
movl $0x0, -0x1c(%rbp)
movq 0x43da9(%rip), %rax     # 0x4f970
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x2c, %ecx
movb %al, -0x4a(%rbp)
je 0xbc0a
movq 0x43d90(%rip), %rax     # 0x4f970
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x29, %ecx
movb %al, -0x4a(%rbp)
je 0xbc0a
movq 0x43d77(%rip), %rax     # 0x4f970
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x3a, %eax
setne %al
movb %al, -0x4a(%rbp)
movb -0x4a(%rbp), %al
testb $0x1, %al
jne 0xbc13
jmp 0xbc48
movq 0x43d56(%rip), %rax     # 0x4f970
movl -0x18(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x18(%rbp)
movslq %ecx, %rcx
movb (%rax,%rcx), %dl
movq 0x43d46(%rip), %rax     # 0x4f978
movl -0x1c(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x1c(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
jmp 0xbbc0
movl -0x18(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x18(%rbp)
movq 0x43c08(%rip), %rax     # 0x4f860
movslq -0x14(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x48(%rbp)
movq -0x40(%rbp), %rax
cmpq $0x0, (%rax)
jne 0xbc8a
movq -0x48(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, (%rax)
movq -0x40(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0xbca2
movq -0x48(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x40(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x48(%rbp), %rax
movq 0x58(%rax), %rdi
movq 0x43cc7(%rip), %rsi     # 0x4f978
callq 0x2070
movq 0x43c33(%rip), %rax     # 0x4f8f0
movslq 0x42510(%rip), %rcx     # 0x4e1d4
movq (%rax,%rcx,8), %rdi
movq 0x43ca9(%rip), %rsi     # 0x4f978
callq 0x2070
movq -0x48(%rbp), %rax
movq %rax, -0x40(%rbp)
movl -0x14(%rbp), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x18(%rax)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
movl 0x424df(%rip), %eax     # 0x4e1d4
addl $0x1, %eax
movl %eax, 0x424d6(%rip)     # 0x4e1d4
movq 0x43c73(%rip), %rdi     # 0x4f978
callq 0x2030
jmp 0xbd0c
jmp 0xbd0e
jmp 0xbd10
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
movq 0x43c50(%rip), %rax     # 0x4f970
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x3b, %eax
jne 0xb82e
movq 0x43a38(%rip), %rax     # 0x4f770
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq $0x0, (%rax)
je 0xbe06
movq -0x40(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0xbe06
movq -0x40(%rbp), %rax
movq (%rax), %rax
movl 0x28(%rax), %ecx
movq -0x40(%rbp), %rax
movq (%rax), %rax
addl 0x2c(%rax), %ecx
movq -0x40(%rbp), %rax
addl 0x28(%rax), %ecx
movl %ecx, 0x28(%rax)
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x28(%rax), %ecx
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
addl 0x2c(%rax), %ecx
movq -0x40(%rbp), %rax
addl 0x2c(%rax), %ecx
movl %ecx, 0x2c(%rax)
movq -0x40(%rbp), %rax
movq (%rax), %rax
movsd 0x40(%rax), %xmm0
movq -0x40(%rbp), %rax
movq (%rax), %rax
addsd 0x48(%rax), %xmm0
movq -0x40(%rbp), %rax
cvtsi2sdl 0x28(%rax), %xmm2
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
movsd 0x40(%rax), %xmm1
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
addsd 0x48(%rax), %xmm1
movq -0x40(%rbp), %rax
cvtsi2sdl 0x2c(%rax), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x40(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x40(%rbp), %rcx
addl 0x2c(%rcx), %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movq -0x40(%rbp), %rax
movsd %xmm0, 0x48(%rax)
cmpl $0x2, 0x426db(%rip)     # 0x4e4e8
jle 0xbe27
movq 0x421e2(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x35048(%rip), %rsi     # 0x40e68
movb $0x0, %al
callq 0x21b0
movq 0x43a32(%rip), %rax     # 0x4f860
movslq -0x14(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x43940(%rip)     # 0x4f780
movl -0x14(%rbp), %ecx
movq 0x43936(%rip), %rax     # 0x4f780
movl %ecx, 0x18(%rax)
movq 0x4391c(%rip), %rcx     # 0x4f770
movq 0x43925(%rip), %rax     # 0x4f780
movq %rcx, (%rax)
movq 0x4391b(%rip), %rax     # 0x4f780
xorps %xmm0, %xmm0
movsd %xmm0, 0x30(%rax)
movq 0x4390c(%rip), %rax     # 0x4f780
movl $0x1, 0x24(%rax)
movq 0x438fe(%rip), %rax     # 0x4f780
leaq 0x335d0(%rip), %rcx     # 0x3f459
movq %rcx, 0x58(%rax)
movq 0x438ec(%rip), %rcx     # 0x4f780
movq 0x438d5(%rip), %rax     # 0x4f770
movq %rcx, 0x10(%rax)
movq 0x438ca(%rip), %rax     # 0x4f770
movsd 0x48(%rax), %xmm0
mulsd 0x42565(%rip), %xmm0    # 0x4e418
movq 0x438b6(%rip), %rax     # 0x4f770
movsd %xmm0, 0x40(%rax)
cmpl $0x2, 0x42622(%rip)     # 0x4e4e8
jle 0xbee0
movq 0x42129(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x33770(%rip), %rsi     # 0x3f649
movb $0x0, %al
callq 0x21b0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
cmpl $0x2, 0x425f8(%rip)     # 0x4e4e8
jle 0xbf0a
movq 0x420ff(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x34f8e(%rip), %rsi     # 0x40e91
movb $0x0, %al
callq 0x21b0
movq 0x4394f(%rip), %rax     # 0x4f860
movslq -0x14(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x43a05(%rip)     # 0x4f928
movq 0x439fe(%rip), %rax     # 0x4f928
movq $0x0, (%rax)
movq 0x439f0(%rip), %rax     # 0x4f928
movq $0x0, 0x8(%rax)
movq 0x43839(%rip), %rcx     # 0x4f780
movq 0x439da(%rip), %rax     # 0x4f928
movq %rcx, 0x10(%rax)
movq 0x439cf(%rip), %rcx     # 0x4f928
movq 0x43820(%rip), %rax     # 0x4f780
movq %rcx, 0x8(%rax)
movq 0x439bd(%rip), %rax     # 0x4f928
xorps %xmm0, %xmm0
movsd %xmm0, 0x38(%rax)
movq 0x437f6(%rip), %rax     # 0x4f770
movsd 0x48(%rax), %xmm0
movq 0x437ea(%rip), %rax     # 0x4f770
addsd 0x40(%rax), %xmm0
mulsd 0x4248d(%rip), %xmm0    # 0x4e420
movq 0x4398e(%rip), %rax     # 0x4f928
movsd %xmm0, 0x40(%rax)
movq 0x43982(%rip), %rax     # 0x4f928
movl $0x1, 0x20(%rax)
movq 0x43974(%rip), %rax     # 0x4f928
leaq 0x34efe(%rip), %rcx     # 0x40eb9
movq %rcx, 0x58(%rax)
movl -0x14(%rbp), %ecx
movq 0x4395f(%rip), %rax     # 0x4f928
movl %ecx, 0x18(%rax)
cmpl $0x2, 0x42515(%rip)     # 0x4e4e8
jle 0xbfed
movq 0x4201c(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x33663(%rip), %rsi     # 0x3f649
movb $0x0, %al
callq 0x21b0
cmpl $0x2, 0x424f4(%rip)     # 0x4e4e8
jle 0xc00e
movq 0x41ffb(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x34b8e(%rip), %rsi     # 0x40b95
movb $0x0, %al
callq 0x21b0
movl $0x0, 0x4396c(%rip)     # 0x4f984
movl 0x421b6(%rip), %eax     # 0x4e1d4
addl $0x1, %eax
movl %eax, 0x43961(%rip)     # 0x4f988
movq 0x43752(%rip), %rdi     # 0x4f780
callq 0x19c10
cmpl $0x2, 0x424ae(%rip)     # 0x4e4e8
jle 0xc054
movq 0x41fb5(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x335fc(%rip), %rsi     # 0x3f649
movb $0x0, %al
callq 0x21b0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, 0x42478(%rip)     # 0x4e4d8
movq 0x437f9(%rip), %rdi     # 0x4f860
movslq 0x4246a(%rip), %rax     # 0x4e4d8
imulq $0x60, %rax, %rsi
callq 0x2220
movq %rax, 0x437e2(%rip)     # 0x4f860
cmpq $0x0, 0x437da(%rip)     # 0x4f860
jne 0xc0ba
movq 0x41f69(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movslq 0x4243f(%rip), %rax     # 0x4e4d8
imulq $0x60, %rax, %rdx
leaq 0x34e1d(%rip), %rsi     # 0x40ec1
movb $0x0, %al
callq 0x21b0
movq 0x41f46(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
callq 0x9f20
movq 0x43667(%rip), %rdi     # 0x4f728
leaq 0x34e25(%rip), %rsi     # 0x40eed
movb $0x0, %al
callq 0x21b0
movq 0x436aa(%rip), %rdi     # 0x4f780
movq 0x4364b(%rip), %rsi     # 0x4f728
callq 0xdd10
movq -0x38(%rbp), %rdi
callq 0x2030
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)