// File: /workspace/github_c_makefile_star2_O3/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
testq %rsi, %rsi
je 0x750d
movq %rcx, %r14
movq %rdx, %rbx
movq %rsi, %r12
movq %rdi, %r15
leaq 0x255f(%rip), %r13      # 0x91a0
cmpl $0x6d, 0x8(%r12)
je 0x750d
movq 0x18(%r12), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movl 0x8(%r12), %eax
addl $-0x49, %eax
cmpl $0x22, %eax
ja 0x6d55
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 0x6cce
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x5333
testl %eax, %eax
jne 0x6cce
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x28(%rax), %rcx
cmpl $0x46, 0xc(%rcx)
jne 0x6cce
movq 0x30(%rax), %rax
movq 0x28(%rax), %rax
cmpl $0x41, 0xc(%rax)
jne 0x6cce
cmpl $0x0, 0x19208(%rip)     # 0x1fed0
je 0x74f0
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x5333
testl %eax, %eax
jne 0x6d55
cmpl $0x1, 0x191e9(%rip)     # 0x1fed0
jne 0x6d55
movl 0x191e5(%rip), %eax     # 0x1fed4
leal 0x1(%rax), %ecx
movl %ecx, 0x191dc(%rip)     # 0x1fed4
cmpl $0x1, %eax
jg 0x6d55
jmp 0x751c
movq 0x30(%r12), %rax
movq 0x30(%rax), %rcx
movq 0x30(%rcx), %rax
movl 0x8(%rax), %esi
xorl $0x25, %esi
movl 0x191b5(%rip), %edx     # 0x1fed0
orl %edx, %esi
jne 0x6d38
movq 0x28(%rcx), %rcx
cmpl $0x46, 0xc(%rcx)
jne 0x6d55
movq 0x28(%rax), %rax
cmpl $0x41, 0xc(%rax)
jne 0x6d55
jmp 0x74f0
cmpl $0x1, %edx
jne 0x6d55
movl 0x19191(%rip), %eax     # 0x1fed4
leal 0x1(%rax), %ecx
movl %ecx, 0x19188(%rip)     # 0x1fed4
cmpl $0x1, %eax
jle 0x74f0
movq 0x28(%r12), %r12
testq %r12, %r12
jne 0x6c41
jmp 0x750d
cmpl $0x0, 0x19161(%rip)     # 0x1fed0
jne 0x750d
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2b, %ecx
jne 0x6ddb
movl $0x1, 0x1913c(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x1910b(%rip)     # 0x1fed0
movl %eax, 0x19109(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x31, %ecx
jne 0x6e25
movl $0x1, 0x190e6(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x190b1(%rip)     # 0x1fed0
movl %eax, 0x190af(%rip)     # 0x1fed4
movl 0x190b5(%rip), %ecx     # 0x1fee0
leaq 0x340a(%rip), %rsi      # 0xa23c
jmp 0x7410
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2a, %ecx
jne 0x6e85
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x30, %ecx
jne 0x6eb7
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
leaq 0x3331(%rip), %rdi      # 0xa1ef
jmp 0x75f8
cmpl $0x0, 0x19006(%rip)     # 0x1fed0
jne 0x750d
leaq 0x3224(%rip), %rdi      # 0xa0fb
leaq 0x321f(%rip), %rsi      # 0xa0fd
leaq 0x3224(%rip), %rcx      # 0xa109
movl $0x133, %edx            # imm = 0x133
callq 0x20d0
movq 0x30(%r12), %rax
cmpl $0x1e, 0x8(%rax)
jne 0x7504
movq 0x28(%r12), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
leaq 0x3289(%rip), %rdi      # 0xa1a1
movl $0x27, %esi
jmp 0x75fd
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2a, %ecx
jne 0x6f70
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x30, %ecx
jne 0x6fa2
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
leaq 0x326c(%rip), %rdi      # 0xa215
movl $0x26, %esi
jmp 0x75fd
cmpl $0x0, 0x18f16(%rip)     # 0x1fed0
jne 0x750d
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x25, %ecx
je 0x7618
cmpl $0x29, %ecx
jne 0x7659
movl $0x1, 0x18ee4(%rip)     # 0x1fed0
leaq 0x3108(%rip), %rdi      # 0xa0fb
leaq 0x3103(%rip), %rsi      # 0xa0fd
leaq 0x3108(%rip), %rcx      # 0xa109
movl $0xae, %edx
callq 0x20d0
cmpl $0x0, 0x18ebe(%rip)     # 0x1fed0
jne 0x750d
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2b, %ecx
jne 0x707e
movl $0x1, 0x18e99(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x18e68(%rip)     # 0x1fed0
movl %eax, 0x18e66(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x31, %ecx
jne 0x70c8
movl $0x1, 0x18e43(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x18e0e(%rip)     # 0x1fed0
movl %eax, 0x18e0c(%rip)     # 0x1fed4
movl 0x18e12(%rip), %ecx     # 0x1fee0
leaq 0x31b6(%rip), %rsi      # 0xa28b
jmp 0x7410
cmpl $0x0, 0x18def(%rip)     # 0x1fed0
jne 0x750d
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2b, %ecx
jne 0x714d
movl $0x1, 0x18dca(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x18d99(%rip)     # 0x1fed0
movl %eax, 0x18d97(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x31, %ecx
jne 0x7197
movl $0x1, 0x18d74(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x18d3f(%rip)     # 0x1fed0
movl %eax, 0x18d3d(%rip)     # 0x1fed4
movl 0x18d43(%rip), %ecx     # 0x1fee0
leaq 0x3136(%rip), %rsi      # 0xa2da
jmp 0x7410
cmpl $0x0, 0x18d20(%rip)     # 0x1fed0
jne 0x750d
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x29, %ecx
jne 0x7220
movl $0x1, 0x18cfb(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x18cc6(%rip)     # 0x1fed0
movl %eax, 0x18cc4(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x25, %ecx
jne 0x7266
movl $0x1, 0x18ca1(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x18c70(%rip)     # 0x1fed0
movl %eax, 0x18c6e(%rip)     # 0x1fed4
leaq 0x2ef6(%rip), %rdi      # 0xa163
movl $0x3d, %esi
jmp 0x75fd
cmpl $0x0, 0x18c52(%rip)     # 0x1fed0
jne 0x750d
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2b, %ecx
jne 0x72ea
movl $0x1, 0x18c2d(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x18bfc(%rip)     # 0x1fed0
movl %eax, 0x18bfa(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x31, %ecx
jne 0x7334
movl $0x1, 0x18bd7(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x18ba2(%rip)     # 0x1fed0
movl %eax, 0x18ba0(%rip)     # 0x1fed4
movl 0x18ba6(%rip), %ecx     # 0x1fee0
leaq 0x3035(%rip), %rsi      # 0xa376
jmp 0x7410
cmpl $0x0, 0x18b83(%rip)     # 0x1fed0
jne 0x750d
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2b, %ecx
jne 0x73b9
movl $0x1, 0x18b5e(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x18b2d(%rip)     # 0x1fed0
movl %eax, 0x18b2b(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x31, %ecx
jne 0x7403
movl $0x1, 0x18b08(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x18ad3(%rip)     # 0x1fed0
movl %eax, 0x18ad1(%rip)     # 0x1fed4
movl 0x18ad7(%rip), %ecx     # 0x1fee0
leaq 0x2f18(%rip), %rsi      # 0xa328
movq %rbx, %rdi
movl %ecx, %edx
xorl %eax, %eax
callq 0x2130
incl 0x18abe(%rip)           # 0x1fee0
jmp 0x750d
cmpl $0x0, 0x18aa2(%rip)     # 0x1fed0
jne 0x750d
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x26, %ecx
jne 0x749e
movl $0x1, 0x18a7d(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x18a48(%rip)     # 0x1fed0
movl %eax, 0x18a46(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x23, %ecx
jne 0x74e4
movl $0x1, 0x18a23(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x189f2(%rip)     # 0x1fed0
movl %eax, 0x189f0(%rip)     # 0x1fed4
leaq 0x2bea(%rip), %rdi      # 0xa0d5
jmp 0x75f8
movq (%r12), %rax
movq (%rax), %rdx
addq $0x1e, %rdx
leaq 0x2bae(%rip), %rsi      # 0xa0b0
jmp 0x752e
cmpl $0x0, 0x189c5(%rip)     # 0x1fed0
je 0x7546
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 0x2b97(%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
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x26, %ecx
jne 0x75ab
movl $0x1, 0x18970(%rip)     # 0x1fed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x1893b(%rip)     # 0x1fed0
movl %eax, 0x18939(%rip)     # 0x1fed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x23, %ecx
jne 0x75f1
movl $0x1, 0x18916(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x188e5(%rip)     # 0x1fed0
movl %eax, 0x188e3(%rip)     # 0x1fed4
leaq 0x2bd1(%rip), %rdi      # 0xa1c9
movl $0x25, %esi
movl $0x1, %edx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x21d0
movl $0x1, 0x188ae(%rip)     # 0x1fed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x6c17
xorl %eax, %eax
movl %eax, 0x1887d(%rip)     # 0x1fed0
movl %eax, 0x1887b(%rip)     # 0x1fed4
leaq 0x2ae0(%rip), %rdi      # 0xa140
movl $0x22, %esi
jmp 0x75fd