// File: /workspace/github_c_makefile_star2_O1/Gaurang18[P]Compiler-Project-BITS-Pilani/./codegen.c
// Function: ExpressionCode
void ExpressionCode(FILE *fpdummy, parsetree head, FILE *fp, char *scope)
{
	
	int noField,i,nofield1,nofield2;

	if(head==NULL || head->value==109)
		return;



	ExpressionCode(fpdummy,head->child, fp, scope);

	// printf("%s \n", terms[head->value]);



	switch(head->value){
	
		case 107:
			// printf("Here I am %d\n", head->parent->parent->value);
			if(head->parent->parent->parent->value==37 && expstate == 0){
				// assert(0);
				if(head->parent->parent->right->rule ==70 && head->parent->parent->parent->right->rule==65)
				{	
				 // assert(0);
				// expstate =1;
				fprintf(fp,"mov eax,%s\npush eax\n",head->Lex->tk->value);
				// expstate = 0;
				return;
				}}




			if(expstate==1){
				// printf(" expstate before fprintf %d\n", expstate);
				opcount++;
				if(opcount<=2){
				fprintf(fp,"mov eax,%s\npush eax\n",head->Lex->tk->value);
				return;
			}
			

			}

			break;
			

		case 106:
			if(head->parent->parent->parent->value==37){
			if((TypeChecker(fpdummy,head, scope))==0 && head->parent->parent->right->rule ==70 && head->parent->parent->parent->right->rule==65 && expstate==0)
			{	
				// assert(0);
				// expstate =1;
				fprintf(fp,"mov eax,%s\npush eax\n",head->Lex->tk->value);
				// expstate = 0;
				return;
			}}

			if((TypeChecker(fpdummy,head, scope))==0 && expstate ==1)
				{
					opcount++;
				if(opcount<=2){
					fprintf(fp,"push dword[%s]\n",head->Lex->tk->value);
					return;
					}
					
				}
				else
				{
					
				}

				break;
		
		case 82:

			// printf("%d %s %s %s \n", head->parent->parent->parent->value, terms[head->parent->parent->parent->value], terms[head->parent->parent->value], terms[head->parent->value]);
			if(!expstate){
			if(head->parent->parent->parent->value==38){
            			// printf("%s %s \n", head->parent->parent->parent->child->right, head->parent->right);
					expstate = 1;
					// assert(0);
					ExpressionCode(fpdummy,head->parent->parent->parent->child->right,fp,scope);
					ExpressionCode(fpdummy,head->parent->right,fp,scope);
					//assert(0);
					expstate = 0;
					opcount = 0;
					// printf(" expstate %d\n", expstate);
            	}

					if(head->parent->parent->parent->value==35){
						// printf("%s %s \n", terms[head->parent->parent->parent->child->value], terms[head->parent->right->value]);
						// assert(0);
						expstate = 1;
						ExpressionCode(fpdummy,head->parent->parent->parent->child,fp,scope);

						ExpressionCode(fpdummy,head->parent->right,fp,scope);
						expstate = 0;
						opcount = 0;
						// printf(" expstate %d\n", expstate);
					}
		
			
				fprintf(fp,"pop ebx\npop eax\nadd eax,ebx\npush eax\n");
			}
				return;
		
		case 84:
		if(!expstate){
		if(head->parent->parent->parent->value==41){
            			// printf("%s %s \n", head->parent->parent->parent->child->right, head->parent->right);
					expstate = 1;
					assert(0);
					ExpressionCode(fpdummy,head->parent->parent->parent->child->right,fp,scope);
					ExpressionCode(fpdummy,head->parent->right,fp,scope);
					expstate = 0;
					opcount = 0;
            	}

					if(head->parent->parent->parent->value==37){
						// printf("%s %s \n", terms[head->parent->parent->parent->child->value], terms[head->parent->right->value]);
						expstate = 1;
						
						ExpressionCode(fpdummy,head->parent->parent->parent->child,fp,scope);
						// assert(0);
						ExpressionCode(fpdummy,head->parent->right,fp,scope);
						// assert(0);
						expstate = 0;
						opcount = 0;
						
					}
		
			fprintf(fp,"pop ebx\npop eax\nimul ebx\npush eax\n");
		}
			return;

		case 85:
		if(!expstate){
		if(head->parent->parent->parent->value==41){
            			// printf("%s %s \n", head->parent->parent->parent->child->right, head->parent->right);
					expstate = 1;

					ExpressionCode(fpdummy,head->parent->parent->parent->child->right,fp,scope);
					ExpressionCode(fpdummy,head->parent->right,fp,scope);
					expstate = 0;
					opcount = 0;
            	}

					if(head->parent->parent->parent->value==37){
						// printf("%s %s \n", terms[head->parent->parent->parent->child->value], terms[head->parent->right->value]);
						expstate = 1;

						ExpressionCode(fpdummy,head->parent->parent->parent->child,fp,scope);
						ExpressionCode(fpdummy,head->parent->right,fp,scope);
						expstate = 0;
						opcount = 0;
					}

		
			fprintf(fp,"pop ebx\npop eax\npush edx\nmov edx,0\nidiv ebx\npop edx\npush eax\n");
		}
			return;
	
		case 83:

		if(head->value==83 && head->parent->value==30)
            	{		
            			ExpressionCode(fpdummy,head->right, fp, scope);
            			// noField = ExpressionCode(fpdummy,head->children[0],fp,scope);
						fprintf(fp,"pop ebx\nmov eax,0\nsub eax,ebx\npush eax\n");
						return;
						}
						



		else
		{	if(!expstate){
			if(head->parent->parent->parent->value==38){
            			// printf("%s %s \n", head->parent->parent->parent->child->right, head->parent->right);
					expstate = 1;
					ExpressionCode(fpdummy,head->parent->parent->parent->child->right,fp,scope);
					ExpressionCode(fpdummy,head->parent->right,fp,scope);
					expstate = 0;
					opcount = 0;
            	}

			if(head->parent->parent->parent->value==35){
						// printf("%s %s \n", terms[head->parent->parent->parent->child->value], terms[head->parent->right->value]);
						expstate = 1;
						ExpressionCode(fpdummy,head->parent->parent->parent->child,fp,scope);
						ExpressionCode(fpdummy,head->parent->right,fp,scope);
						expstate = 0;
						opcount = 0;
				}

			
				fprintf(fp,"pop ebx\npop eax\nsub eax,ebx\npush eax\n");
			}
				return;
			
			
		}

		case 74:
		// if(!expstate){
				if(head->parent->parent->parent->value==42){
						ExpressionCode(fpdummy,head->parent->parent->parent->child,fp,scope);
						ExpressionCode(fpdummy,head->parent->right,fp,scope);
					}


					if(head->parent->parent->parent->value==48){

						ExpressionCode(fpdummy,head->parent->parent->parent->child->right,fp,scope);
						ExpressionCode(fpdummy,head->parent->right,fp,scope);

				}
		
		fprintf(fp,"pop ebx\npop eax\nor eax, ebx\npush eax\n");

	// }
		return;

		case 73:
		// if(!expstate){
		if(head->parent->parent->parent->value==42){
						ExpressionCode(fpdummy,head->parent->parent->parent->child,fp,scope);
						ExpressionCode(fpdummy,head->parent->right,fp,scope);
					}


					if(head->parent->parent->parent->value==48){

						ExpressionCode(fpdummy,head->parent->parent->parent->child->right,fp,scope);
						ExpressionCode(fpdummy,head->parent->right,fp,scope);
					
				}
		
		fprintf(fp,"pop ebx\npop eax\nand eax, ebx\npush eax\n");
		// }
		return;

		case 86:
				if(!expstate){
					assert(0);
				if(head->parent->parent->parent->value==43){

					expstate = 1;
					ExpressionCode(fpdummy,head->parent->parent->parent->child,fp,scope);
					ExpressionCode(fpdummy,head->parent->right,fp,scope);
					expstate = 0;
					opcount = 0;
				}

				if(head->parent->parent->parent->value==49){
					expstate = 1;
					ExpressionCode(fpdummy,head->parent->parent->parent->child->right,fp,scope);
					ExpressionCode(fpdummy,head->parent->right,fp,scope);
					expstate = 0;
					opcount = 0;
				}
		
		fprintf(fp,"pop ebx\npop eax\npush 0ffffh\ncmp eax,ebx\njl .rel%d\npop eax\npush 0000h\n.rel%d:\n",relnum,relnum);
		relnum++;
	}
		return;

		case 87:

			if(!expstate){
			if(head->parent->parent->parent->value==43){
				expstate = 1;
				ExpressionCode(fpdummy,head->parent->parent->parent->child,fp,scope);
				ExpressionCode(fpdummy,head->parent->right,fp,scope);
				expstate = 0;
				opcount = 0;
			}

			if(head->parent->parent->parent->value==49){
				expstate = 1;
				ExpressionCode(fpdummy,head->parent->parent->parent->child->right,fp,scope);
				ExpressionCode(fpdummy,head->parent->right,fp,scope);
				expstate = 0;
				opcount = 0;
			}
		fprintf(fp,"pop ebx\npop eax\npush 0ffffh\ncmp eax,ebx\njle .rel%d\npop eax\npush 0000h\n.rel%d:\n",relnum,relnum);
		relnum++;
	}
		return;

		case 88:

		if(!expstate){
		if(head->parent->parent->parent->value==43){
				expstate = 1;
				ExpressionCode(fpdummy,head->parent->parent->parent->child,fp,scope);
				ExpressionCode(fpdummy,head->parent->right,fp,scope);
				expstate = 0;
				opcount = 0;
				
			}

			if(head->parent->parent->parent->value==49){
				expstate = 1;
				ExpressionCode(fpdummy,head->parent->parent->parent->child->right,fp,scope);
				ExpressionCode(fpdummy,head->parent->right,fp,scope);
				expstate = 0;
				opcount = 0;
			}

		fprintf(fp,"pop ebx\npop eax\npush 0ffffh\ncmp eax,ebx\njge .rel%d\npop eax\npush 0000h\n.rel%d:\n",relnum,relnum);
		relnum++;
	}
		return;

		case 89:
		if(!expstate){
		if(head->parent->parent->parent->value==43){
				expstate = 1;
				ExpressionCode(fpdummy,head->parent->parent->parent->child,fp,scope);
				ExpressionCode(fpdummy,head->parent->right,fp,scope);
				expstate = 0;
				opcount = 0;
				
			}

			if(head->parent->parent->parent->value==49){
				expstate = 1;
				ExpressionCode(fpdummy,head->parent->parent->parent->child->right,fp,scope);
				ExpressionCode(fpdummy,head->parent->right,fp,scope);
				expstate = 0;
				opcount = 0;
			}
		fprintf(fp,"pop ebx\npop eax\npush 0ffffh\ncmp eax,ebx\njg .rel%d\npop eax\npush 0000h\n.rel%d:\n",relnum,relnum);
		relnum++;
	}
		return;
		
		case 90:
		if(!expstate){
			if(head->parent->parent->parent->value==43){
				expstate = 1;
				ExpressionCode(fpdummy,head->parent->parent->parent->child,fp,scope);
				ExpressionCode(fpdummy,head->parent->right,fp,scope);
				expstate = 0;
				opcount = 0;
			}

			if(head->parent->parent->parent->value==49){
				expstate = 1;
				ExpressionCode(fpdummy,head->parent->parent->parent->child->right,fp,scope);
				ExpressionCode(fpdummy,head->parent->right,fp,scope);
				expstate = 0;
				opcount = 0;
			}
		fprintf(fp,"pop ebx\npop eax\npush 0ffffh\ncmp eax,ebx\nje .rel%d\npop eax\npush 0000h\n.rel%d:\n",relnum,relnum);
		relnum++;
	}
		return;
		
		case 91:
			if(!expstate){
			if(head->parent->parent->parent->value==43){
				expstate = 1;
				ExpressionCode(fpdummy,head->parent->parent->parent->child,fp,scope);
				ExpressionCode(fpdummy,head->parent->right,fp,scope);
				expstate = 0;
				opcount = 0;
				
			}

			if(head->parent->parent->parent->value==49){
				expstate = 1;
				ExpressionCode(fpdummy,head->parent->parent->parent->child->right,fp,scope);
				ExpressionCode(fpdummy,head->parent->right,fp,scope);
				expstate = 0;
				opcount = 0;
			}

		fprintf(fp,"pop ebx\npop eax\npush 0ffffh\ncmp eax,ebx\njne .rel%d\npop eax\npush 0000h\n.rel%d:\n",relnum,relnum);
		relnum++;
	}
		return;

		default: break;

		

}

ExpressionCode(fpdummy,head->right, fp, scope);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %r14
movq %rdx, %rbx
movq %rsi, %r12
movq %rdi, %r15
leaq 0x246f(%rip), %r13      # 0x91a0
testq %r12, %r12
je 0x75bb
cmpl $0x6d, 0x8(%r12)
je 0x75bb
movq 0x18(%r12), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movl 0x8(%r12), %eax
addl $-0x49, %eax
cmpl $0x22, %eax
ja 0x6e4d
movslq (%r13,%rax,4), %rax
addq %r13, %rax
jmpq *%rax
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x25, 0x8(%rax)
jne 0x6dc7
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x5427
testl %eax, %eax
jne 0x6dc7
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x28(%rax), %rcx
cmpl $0x46, 0xc(%rcx)
jne 0x6dc7
movq 0x30(%rax), %rax
movq 0x28(%rax), %rax
cmpl $0x41, 0xc(%rax)
jne 0x6dc7
cmpl $0x0, 0x1910f(%rip)     # 0x1fed0
je 0x75ca
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x5427
testl %eax, %eax
jne 0x6e4d
cmpl $0x1, 0x190f0(%rip)     # 0x1fed0
jne 0x6e4d
movl 0x190ec(%rip), %eax     # 0x1fed4
leal 0x1(%rax), %ecx
movl %ecx, 0x190e3(%rip)     # 0x1fed4
cmpl $0x1, %eax
jg 0x6e4d
jmp 0x769d
movq 0x30(%r12), %rax
movq 0x30(%rax), %rdx
movq 0x30(%rdx), %rcx
movl 0x8(%rcx), %esi
xorl $0x25, %esi
movl 0x190bc(%rip), %eax     # 0x1fed0
orl %eax, %esi
jne 0x6e30
movq 0x28(%rdx), %rdx
cmpl $0x46, 0xc(%rdx)
jne 0x6e30
movq 0x28(%rcx), %rcx
cmpl $0x41, 0xc(%rcx)
je 0x75ca
cmpl $0x1, %eax
jne 0x6e4d
movl 0x19099(%rip), %eax     # 0x1fed4
leal 0x1(%rax), %ecx
movl %ecx, 0x19090(%rip)     # 0x1fed4
cmpl $0x1, %eax
jle 0x75ca
movq 0x28(%r12), %r12
jmp 0x6d31
cmpl $0x0, 0x19072(%rip)     # 0x1fed0
jne 0x75bb
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x2b, 0x8(%rax)
jne 0x6eb8
movl $0x1, 0x1904f(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x1901e(%rip)     # 0x1fed0
movl %eax, 0x1901c(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x31, 0x8(%rax)
jne 0x6f10
movl $0x1, 0x18ffb(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18fc6(%rip)     # 0x1fed0
movl %eax, 0x18fc4(%rip)     # 0x1fed4
movl 0x18fca(%rip), %ecx     # 0x1fee0
leaq 0x33bd(%rip), %rsi      # 0xa2da
jmp 0x75a9
cmpl $0x0, 0x18fa7(%rip)     # 0x1fed0
jne 0x75bb
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x2b, 0x8(%rax)
jne 0x6f83
movl $0x1, 0x18f84(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18f53(%rip)     # 0x1fed0
movl %eax, 0x18f51(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x31, 0x8(%rax)
jne 0x6fdb
movl $0x1, 0x18f30(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18efb(%rip)     # 0x1fed0
movl %eax, 0x18ef9(%rip)     # 0x1fed4
movl 0x18eff(%rip), %ecx     # 0x1fee0
leaq 0x32a3(%rip), %rsi      # 0xa28b
jmp 0x75a9
cmpl $0x0, 0x18edc(%rip)     # 0x1fed0
jne 0x75bb
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x2b, 0x8(%rax)
jne 0x704e
movl $0x1, 0x18eb9(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18e88(%rip)     # 0x1fed0
movl %eax, 0x18e86(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x31, 0x8(%rax)
jne 0x70a6
movl $0x1, 0x18e65(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18e30(%rip)     # 0x1fed0
movl %eax, 0x18e2e(%rip)     # 0x1fed4
movl 0x18e34(%rip), %ecx     # 0x1fee0
leaq 0x32c3(%rip), %rsi      # 0xa376
jmp 0x75a9
cmpl $0x0, 0x18e11(%rip)     # 0x1fed0
jne 0x75bb
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x26, 0x8(%rax)
jne 0x711d
movl $0x1, 0x18dee(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18db9(%rip)     # 0x1fed0
movl %eax, 0x18db7(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x23, 0x8(%rax)
jne 0x7171
movl $0x1, 0x18d96(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18d65(%rip)     # 0x1fed0
movl %eax, 0x18d63(%rip)     # 0x1fed4
leaq 0x2f5d(%rip), %rdi      # 0xa0d5
jmp 0x7200
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x2a, 0x8(%rax)
jne 0x71b9
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x30, 0x8(%rax)
jne 0x71f9
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
leaq 0x2fef(%rip), %rdi      # 0xa1ef
movl $0x25, %esi
jmp 0x7714
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x2a, 0x8(%rax)
jne 0x7246
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x30, 0x8(%rax)
jne 0x7286
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
leaq 0x2f88(%rip), %rdi      # 0xa215
movl $0x26, %esi
jmp 0x7714
cmpl $0x0, 0x18c32(%rip)     # 0x1fed0
jne 0x75bb
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x2b, 0x8(%rax)
jne 0x72f8
movl $0x1, 0x18c0f(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18bde(%rip)     # 0x1fed0
movl %eax, 0x18bdc(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x31, 0x8(%rax)
jne 0x7350
movl $0x1, 0x18bbb(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18b86(%rip)     # 0x1fed0
movl %eax, 0x18b84(%rip)     # 0x1fed4
movl 0x18b8a(%rip), %ecx     # 0x1fee0
leaq 0x2fcb(%rip), %rsi      # 0xa328
jmp 0x75a9
movq 0x30(%r12), %rax
cmpl $0x1e, 0x8(%rax)
jne 0x75e1
movq 0x28(%r12), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
leaq 0x2e16(%rip), %rdi      # 0xa1a1
movl $0x27, %esi
jmp 0x7714
cmpl $0x0, 0x18b34(%rip)     # 0x1fed0
jne 0x75bb
leaq 0x2d52(%rip), %rdi      # 0xa0fb
leaq 0x2d4d(%rip), %rsi      # 0xa0fd
leaq 0x2d52(%rip), %rcx      # 0xa109
movl $0x133, %edx            # imm = 0x133
callq 0x20d0
cmpl $0x0, 0x18b08(%rip)     # 0x1fed0
jne 0x75bb
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x29, 0x8(%rax)
jne 0x7426
movl $0x1, 0x18ae5(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18ab0(%rip)     # 0x1fed0
movl %eax, 0x18aae(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x25, 0x8(%rax)
jne 0x747a
movl $0x1, 0x18a8d(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18a5c(%rip)     # 0x1fed0
movl %eax, 0x18a5a(%rip)     # 0x1fed4
leaq 0x2ce2(%rip), %rdi      # 0xa163
movl $0x3d, %esi
jmp 0x7714
cmpl $0x0, 0x18a3e(%rip)     # 0x1fed0
jne 0x75bb
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x25, %ecx
je 0x76c7
cmpl $0x29, %ecx
jne 0x7708
movl $0x1, 0x18a0c(%rip)     # 0x1fed0
leaq 0x2c30(%rip), %rdi      # 0xa0fb
leaq 0x2c2b(%rip), %rsi      # 0xa0fd
leaq 0x2c30(%rip), %rcx      # 0xa109
movl $0xae, %edx
callq 0x20d0
cmpl $0x0, 0x189e6(%rip)     # 0x1fed0
jne 0x75bb
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x2b, 0x8(%rax)
jne 0x7544
movl $0x1, 0x189c3(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18992(%rip)     # 0x1fed0
movl %eax, 0x18990(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x31, 0x8(%rax)
jne 0x759c
movl $0x1, 0x1896f(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x1893a(%rip)     # 0x1fed0
movl %eax, 0x18938(%rip)     # 0x1fed4
movl 0x1893e(%rip), %ecx     # 0x1fee0
leaq 0x2c93(%rip), %rsi      # 0xa23c
movq %rbx, %rdi
movl %ecx, %edx
xorl %eax, %eax
callq 0x2130
incl 0x18925(%rip)           # 0x1fee0
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%r12), %rax
movq (%rax), %rdx
addq $0x1e, %rdx
leaq 0x2ad4(%rip), %rsi      # 0xa0b0
jmp 0x76af
cmpl $0x0, 0x188e8(%rip)     # 0x1fed0
jne 0x75bb
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x26, 0x8(%rax)
jne 0x763d
movl $0x1, 0x188ce(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18899(%rip)     # 0x1fed0
movl %eax, 0x18897(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
cmpl $0x23, 0x8(%rax)
jne 0x7691
movl $0x1, 0x18876(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x18845(%rip)     # 0x1fed0
movl %eax, 0x18843(%rip)     # 0x1fed4
leaq 0x2b31(%rip), %rdi      # 0xa1c9
jmp 0x7200
movq (%r12), %rax
movq (%rax), %rdx
addq $0x1e, %rdx
leaq 0x2a16(%rip), %rsi      # 0xa0c5
movq %rbx, %rdi
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2130
movl $0x1, 0x187ff(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6d10
xorl %eax, %eax
movl %eax, 0x187ce(%rip)     # 0x1fed0
movl %eax, 0x187cc(%rip)     # 0x1fed4
leaq 0x2a31(%rip), %rdi      # 0xa140
movl $0x22, %esi
movl $0x1, %edx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x21d0