// File: /workspace/github_c_makefile_star2_O2/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 0x1bb1(%rip), %r13      # 0x81a0
testq %r12, %r12
je 0x6e92
cmpl $0x6d, 0x8(%r12)
je 0x6e92
movq 0x18(%r12), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movl 0x8(%r12), %eax
addl $-0x49, %eax
cmpl $0x22, %eax
ja 0x670c
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 0x6685
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x4dc2
testl %eax, %eax
jne 0x6685
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x28(%rax), %rcx
cmpl $0x46, 0xc(%rcx)
jne 0x6685
movq 0x30(%rax), %rax
movq 0x28(%rax), %rax
cmpl $0x41, 0xc(%rax)
jne 0x6685
cmpl $0x0, 0x18851(%rip)     # 0x1eed0
je 0x6ea1
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x4dc2
testl %eax, %eax
jne 0x670c
cmpl $0x1, 0x18832(%rip)     # 0x1eed0
jne 0x670c
movl 0x1882e(%rip), %eax     # 0x1eed4
leal 0x1(%rax), %ecx
movl %ecx, 0x18825(%rip)     # 0x1eed4
cmpl $0x1, %eax
jg 0x670c
jmp 0x6f78
movq 0x30(%r12), %rax
movq 0x30(%rax), %rcx
movq 0x30(%rcx), %rax
movl 0x8(%rax), %esi
xorl $0x25, %esi
movl 0x187fe(%rip), %edx     # 0x1eed0
orl %edx, %esi
jne 0x66ef
movq 0x28(%rcx), %rcx
cmpl $0x46, 0xc(%rcx)
jne 0x670c
movq 0x28(%rax), %rax
cmpl $0x41, 0xc(%rax)
jne 0x670c
jmp 0x6ea1
cmpl $0x1, %edx
jne 0x670c
movl 0x187da(%rip), %eax     # 0x1eed4
leal 0x1(%rax), %ecx
movl %ecx, 0x187d1(%rip)     # 0x1eed4
cmpl $0x1, %eax
jle 0x6ea1
movq 0x28(%r12), %r12
jmp 0x65ef
cmpl $0x0, 0x187b3(%rip)     # 0x1eed0
jne 0x6e92
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2b, %ecx
jne 0x6789
movl $0x1, 0x1878e(%rip)     # 0x1eed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x1875e(%rip)     # 0x1eed0
andl $0x0, 0x1875b(%rip)     # 0x1eed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x31, %ecx
jne 0x67d3
movl $0x1, 0x18738(%rip)     # 0x1eed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x18704(%rip)     # 0x1eed0
andl $0x0, 0x18701(%rip)     # 0x1eed4
movl 0x18707(%rip), %ecx     # 0x1eee0
leaq 0x2afa(%rip), %rsi      # 0x92da
jmp 0x6e80
cmpl $0x0, 0x186e4(%rip)     # 0x1eed0
jne 0x6e92
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2b, %ecx
jne 0x6858
movl $0x1, 0x186bf(%rip)     # 0x1eed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x1868f(%rip)     # 0x1eed0
andl $0x0, 0x1868c(%rip)     # 0x1eed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x31, %ecx
jne 0x68a2
movl $0x1, 0x18669(%rip)     # 0x1eed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x18635(%rip)     # 0x1eed0
andl $0x0, 0x18632(%rip)     # 0x1eed4
movl 0x18638(%rip), %ecx     # 0x1eee0
leaq 0x29dc(%rip), %rsi      # 0x928b
jmp 0x6e80
cmpl $0x0, 0x18615(%rip)     # 0x1eed0
jne 0x6e92
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2b, %ecx
jne 0x6927
movl $0x1, 0x185f0(%rip)     # 0x1eed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x185c0(%rip)     # 0x1eed0
andl $0x0, 0x185bd(%rip)     # 0x1eed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x31, %ecx
jne 0x6971
movl $0x1, 0x1859a(%rip)     # 0x1eed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x18566(%rip)     # 0x1eed0
andl $0x0, 0x18563(%rip)     # 0x1eed4
movl 0x18569(%rip), %ecx     # 0x1eee0
leaq 0x29f8(%rip), %rsi      # 0x9376
jmp 0x6e80
cmpl $0x0, 0x18546(%rip)     # 0x1eed0
jne 0x6e92
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x26, %ecx
jne 0x69fa
movl $0x1, 0x18521(%rip)     # 0x1eed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x184ed(%rip)     # 0x1eed0
andl $0x0, 0x184ea(%rip)     # 0x1eed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x23, %ecx
jne 0x6a40
movl $0x1, 0x184c7(%rip)     # 0x1eed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x18497(%rip)     # 0x1eed0
andl $0x0, 0x18494(%rip)     # 0x1eed4
leaq 0x268e(%rip), %rdi      # 0x90d5
jmp 0x6ad3
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2a, %ecx
jne 0x6a9a
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x30, %ecx
jne 0x6acc
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
leaq 0x271c(%rip), %rdi      # 0x91ef
pushq $0x25
jmp 0x6fec
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2a, %ecx
jne 0x6b28
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x30, %ecx
jne 0x6b5a
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
leaq 0x26b4(%rip), %rdi      # 0x9215
pushq $0x26
jmp 0x6fec
cmpl $0x0, 0x18361(%rip)     # 0x1eed0
jne 0x6e92
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2b, %ecx
jne 0x6bdb
movl $0x1, 0x1833c(%rip)     # 0x1eed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x1830c(%rip)     # 0x1eed0
andl $0x0, 0x18309(%rip)     # 0x1eed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x31, %ecx
jne 0x6c25
movl $0x1, 0x182e6(%rip)     # 0x1eed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x182b2(%rip)     # 0x1eed0
andl $0x0, 0x182af(%rip)     # 0x1eed4
movl 0x182b5(%rip), %ecx     # 0x1eee0
leaq 0x26f6(%rip), %rsi      # 0x9328
jmp 0x6e80
movq 0x30(%r12), %rax
cmpl $0x1e, 0x8(%rax)
jne 0x6eb8
movq 0x28(%r12), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
leaq 0x2541(%rip), %rdi      # 0x91a1
pushq $0x27
jmp 0x6fec
cmpl $0x0, 0x18262(%rip)     # 0x1eed0
jne 0x6e92
leaq 0x2480(%rip), %rdi      # 0x90fb
leaq 0x247b(%rip), %rsi      # 0x90fd
leaq 0x2480(%rip), %rcx      # 0x9109
movl $0x133, %edx            # imm = 0x133
callq 0x20d0
cmpl $0x0, 0x18236(%rip)     # 0x1eed0
jne 0x6e92
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x29, %ecx
jne 0x6d0a
movl $0x1, 0x18211(%rip)     # 0x1eed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x181dd(%rip)     # 0x1eed0
andl $0x0, 0x181da(%rip)     # 0x1eed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x25, %ecx
jne 0x6d50
movl $0x1, 0x181b7(%rip)     # 0x1eed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x18187(%rip)     # 0x1eed0
andl $0x0, 0x18184(%rip)     # 0x1eed4
leaq 0x240c(%rip), %rdi      # 0x9163
pushq $0x3d
jmp 0x6fec
cmpl $0x0, 0x1816b(%rip)     # 0x1eed0
jne 0x6e92
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x25, %ecx
je 0x6fa2
cmpl $0x29, %ecx
jne 0x6fe3
movl $0x1, 0x18139(%rip)     # 0x1eed0
leaq 0x235d(%rip), %rdi      # 0x90fb
leaq 0x2358(%rip), %rsi      # 0x90fd
leaq 0x235d(%rip), %rcx      # 0x9109
movl $0xae, %edx
callq 0x20d0
cmpl $0x0, 0x18113(%rip)     # 0x1eed0
jne 0x6e92
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x2b, %ecx
jne 0x6e29
movl $0x1, 0x180ee(%rip)     # 0x1eed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x180be(%rip)     # 0x1eed0
andl $0x0, 0x180bb(%rip)     # 0x1eed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x31, %ecx
jne 0x6e73
movl $0x1, 0x18098(%rip)     # 0x1eed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x18064(%rip)     # 0x1eed0
andl $0x0, 0x18061(%rip)     # 0x1eed4
movl 0x18067(%rip), %ecx     # 0x1eee0
leaq 0x23bc(%rip), %rsi      # 0x923c
movq %rbx, %rdi
movl %ecx, %edx
xorl %eax, %eax
callq 0x2130
incl 0x1804e(%rip)           # 0x1eee0
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 0x21fd(%rip), %rsi      # 0x90b0
jmp 0x6f8a
cmpl $0x0, 0x18011(%rip)     # 0x1eed0
jne 0x6e92
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x26, %ecx
jne 0x6f26
movl $0x1, 0x17ff5(%rip)     # 0x1eed0
movq 0x18(%rax), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x17fc1(%rip)     # 0x1eed0
andl $0x0, 0x17fbe(%rip)     # 0x1eed4
movq 0x30(%r12), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rax
movl 0x8(%rax), %ecx
cmpl $0x23, %ecx
jne 0x6f6c
movl $0x1, 0x17f9b(%rip)     # 0x1eed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x17f6b(%rip)     # 0x1eed0
andl $0x0, 0x17f68(%rip)     # 0x1eed4
leaq 0x2256(%rip), %rdi      # 0x91c9
jmp 0x6ad3
movq (%r12), %rax
movq (%rax), %rdx
addq $0x1e, %rdx
leaq 0x213b(%rip), %rsi      # 0x90c5
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, 0x17f24(%rip)     # 0x1eed0
movq 0x18(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
movq 0x30(%r12), %rax
movq 0x28(%rax), %rsi
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x65ce
andl $0x0, 0x17ef4(%rip)     # 0x1eed0
andl $0x0, 0x17ef1(%rip)     # 0x1eed4
leaq 0x2156(%rip), %rdi      # 0x9140
pushq $0x22
popq %rsi
pushq $0x1
popq %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x21e0