// File: /workspace/github_c_makefile_star2_O3/been-jamming[P]MinimalCC/compile.c
// Function: compile_statement
void compile_statement(char **c, FILE *output_file){
	value expression_output;
	unsigned int label_num0;
	unsigned int label_num1;
	unsigned int label_num2;
	unsigned int label_num3;
	int prev_break_label;
	int prev_continue_label;
	int prev_loop_variables_size;

	skip_whitespace(c);
	if(!strncmp(*c, "if", 2) && !alphanumeric((*c)[2])){
		*c += 2;
		skip_whitespace(c);
		if(**c != '('){
			snprintf(error_message, sizeof(error_message), "Expected '('");
			do_error(1);;
		}
		++*c;
		compile_root_expression(&expression_output, c, 1, 0, output_file);
		cast(&expression_output, INT_TYPE, 0, output_file);
		reset_stack_pos(&expression_output, output_file);
		label_num0 = num_labels;
		num_labels++;
		if(expression_output.data.type == data_register){
			fprintf(output_file, "beq $s%d, $zero, __L%d\n", expression_output.data.reg, label_num0);
		} else if(expression_output.data.type == data_stack){
			fprintf(output_file, "beq $t0, $zero, __L%d\n", label_num0);
		}
		deallocate(expression_output.data);
		skip_whitespace(c);
		if(**c != ')'){
			snprintf(error_message, sizeof(error_message), "Expected ')'");
			do_error(1);
		}
		++*c;
		skip_whitespace(c);
		compile_statement(c, output_file);
		skip_whitespace(c);
		if(!strncmp(*c, "else", 2) && !alphanumeric((*c)[4])){
			*c += 4;
			label_num1 = num_labels;
			num_labels++;
			fprintf(output_file, "j __L%d\n", label_num1);
			fprintf(output_file, "\n__L%d:\n", label_num0);
			skip_whitespace(c);
			compile_statement(c, output_file);
			fprintf(output_file, "\n__L%d:\n", label_num1);
		} else {
			fprintf(output_file, "\n__L%d:\n", label_num0);
		}
	} else if(!strncmp(*c, "while", 5) && !alphanumeric((*c)[5])){
		*c += 5;
		skip_whitespace(c);
		if(**c != '('){
			snprintf(error_message, sizeof(error_message), "Expected '('");
			do_error(1);
		}
		++*c;
		label_num0 = num_labels;
		label_num1 = num_labels + 1;
		num_labels += 2;

		prev_break_label = break_label;
		prev_continue_label = continue_label;
		prev_loop_variables_size = loop_variables_size;
		break_label = label_num1;
		continue_label = label_num0;
		loop_variables_size = variables_size;

		fprintf(output_file, "\n__L%d:\n", label_num0);
		compile_root_expression(&expression_output, c, 1, 0, output_file);
		cast(&expression_output, INT_TYPE, 0, output_file);
		reset_stack_pos(&expression_output, output_file);
		if(expression_output.data.type == data_register){
			fprintf(output_file, "beq $s%d, $zero, __L%d\n", expression_output.data.reg, label_num1);
		} else if(expression_output.data.type == data_stack){
			fprintf(output_file, "beq $t0, $zero, __L%d\n", label_num1);
		}
		deallocate(expression_output.data);
		skip_whitespace(c);
		if(**c != ')'){
			snprintf(error_message, sizeof(error_message), "Expected ')'");
			do_error(1);
		}
		++*c;
		skip_whitespace(c);
		compile_statement(c, output_file);
		fprintf(output_file, "j __L%d\n", label_num0);
		fprintf(output_file, "\n__L%d:\n", label_num1);

		loop_variables_size = prev_loop_variables_size;
		break_label = prev_break_label;
		continue_label = prev_continue_label;
	} else if(!strncmp(*c, "for", 3) && !alphanumeric((*c)[3])){
		*c += 3;
		skip_whitespace(c);
		if(**c != '('){
			snprintf(error_message, sizeof(error_message), "Expected '('");
			do_error(1);
		}
		++*c;
		label_num0 = num_labels;
		label_num1 = num_labels + 1;
		label_num2 = num_labels + 2;
		label_num3 = num_labels + 3;
		num_labels += 4;

		prev_break_label = break_label;
		prev_continue_label = continue_label;
		prev_loop_variables_size = loop_variables_size;
		break_label = label_num1;
		continue_label = label_num3;
		loop_variables_size = variables_size;

		skip_whitespace(c);
		if(**c != ';'){
			compile_root_expression(&expression_output, c, 1, 0, output_file);
			reset_stack_pos(&expression_output, output_file);
			deallocate(expression_output.data);
			skip_whitespace(c);
			if(**c != ';'){
				snprintf(error_message, sizeof(error_message), "Expected ';'");
				do_error(1);
			}
		}
		++*c;
		fprintf(output_file, "\n__L%d:\n", label_num0);
		skip_whitespace(c);
		if(**c != ';'){
			compile_root_expression(&expression_output, c, 1, 0, output_file);
			cast(&expression_output, INT_TYPE, 0, output_file);
			reset_stack_pos(&expression_output, output_file);
			if(expression_output.data.type == data_register){
				fprintf(output_file, "beq $s%d, $zero, __L%d\n", expression_output.data.reg, label_num1);
			} else if(expression_output.data.type == data_stack){
				fprintf(output_file, "beq $t0, $zero, __L%d\n", label_num1);
			}
			deallocate(expression_output.data);
			skip_whitespace(c);
			if(**c != ';'){
				snprintf(error_message, sizeof(error_message), "Expected ';'");
				do_error(1);
			}
		}
		++*c;
		fprintf(output_file, "j __L%d\n\n__L%d:\n", label_num2, label_num3);
		skip_whitespace(c);
		if(**c != ')'){
			compile_root_expression(&expression_output, c, 1, 0, output_file);
			reset_stack_pos(&expression_output, output_file);
			deallocate(expression_output.data);
			skip_whitespace(c);
			if(**c != ')'){
				snprintf(error_message, sizeof(error_message), "Expected '('");
				do_error(1);
			}
		}
		++*c;
		fprintf(output_file, "j __L%d\n\n__L%d:\n", label_num0, label_num2);
		skip_whitespace(c);
		compile_statement(c, output_file);
		fprintf(output_file, "j __L%d\n\n__L%d:\n", label_num3, label_num1);

		loop_variables_size = prev_loop_variables_size;
		break_label = prev_break_label;
		continue_label = prev_continue_label;
	} else if(!strncmp(*c, "return", 6) && !alphanumeric((*c)[6])){
		*c += 6;
		skip_whitespace(c);
		if(types_equal(&return_type, &VOID_TYPE)){
			if(**c != ';'){
				snprintf(error_message, sizeof(error_message), "Expected ';' for return in void function");
				do_error(1);
			}
			++*c;
		} else {
			compile_root_expression(&expression_output, c, 1, 0, output_file);
			if(**c != ';'){
				snprintf(error_message, sizeof(error_message), "Expected ';'");
				do_error(1);
			}
			++*c;
			cast(&expression_output, return_type, 1, output_file);
			reset_stack_pos(&expression_output, output_file);
			if(expression_output.data.type == data_register){
				fprintf(output_file, "sw $s%d, %d($sp)\n", expression_output.data.reg, variables_size);
			} else if(expression_output.data.type == data_stack){
				fprintf(output_file, "sw $t0, %d($sp)\n", variables_size);
			}
			deallocate(expression_output.data);
		}
		fprintf(output_file, "addi $sp, $sp, %d\n", variables_size - num_args*4);
		fprintf(output_file, "lw $ra, %d($sp)\n", 4 + num_args*4);
		fprintf(output_file, "jr $ra\n");
	} else if(!strncmp(*c, "break", 5) && !alphanumeric((*c)[5])){
		*c += 5;
		skip_whitespace(c);
		if(**c != ';'){
			snprintf(error_message, sizeof(error_message), "Expected ';' after break");
			do_error(1);
		}
		if(break_label < 0){
			snprintf(error_message, sizeof(error_message), "No loop to break out of");
			do_error(1);
		}
		if(variables_size != loop_variables_size)
			fprintf(output_file, "addi $sp, $sp, %d\n", variables_size - loop_variables_size);
		fprintf(output_file, "j __L%d\n", break_label);
	} else if(!strncmp(*c, "continue", 8) && !alphanumeric((*c)[8])){
		*c += 8;
		skip_whitespace(c);
		if(**c != ';'){
			snprintf(error_message, sizeof(error_message), "Expected ';' after continue");
			do_error(1);
		}
		if(continue_label < 0){
			snprintf(error_message, sizeof(error_message), "No loop to continue in");
			do_error(1);
		}
		if(variables_size != loop_variables_size)
			fprintf(output_file, "addi $sp, $sp, %d\n", variables_size - loop_variables_size);
		fprintf(output_file, "j __L%d\n", continue_label);
	} else if(**c == ';'){
		//Empty statement, so pass
		++*c;
	} else if(**c == '{'){
		++*c;
		compile_block(c, 0, output_file);
		if(**c != '}'){
			snprintf(error_message, sizeof(error_message), "Expected '}'");
			do_error(1);
		}
		++*c;
	} else {
		compile_root_expression(&expression_output, c, 1, 0, output_file);
		reset_stack_pos(&expression_output, output_file);
		deallocate(expression_output.data);
		if(**c == ';'){
			++*c;
		} else {
			snprintf(error_message, sizeof(error_message), "Expected ';'");
			do_error(1);
		}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rsi, %rbx
movq %rdi, %r14
callq 0x79e2
movq (%r14), %r15
cmpb $0x69, (%r15)
jne 0x6526
cmpb $0x66, 0x1(%r15)
jne 0x6526
movsbl 0x2(%r15), %edi
callq 0x7581
movq (%r14), %r15
testb %al, %al
je 0x67db
leaq 0x3856(%rip), %rsi      # 0x9d83
movl $0x5, %edx
movq %r15, %rdi
callq 0x1040
testl %eax, %eax
jne 0x6553
movsbl 0x5(%r15), %edi
callq 0x7581
movq (%r14), %r15
testb %al, %al
je 0x668e
cmpb $0x66, (%r15)
jne 0x657c
cmpb $0x6f, 0x1(%r15)
jne 0x657c
cmpb $0x72, 0x2(%r15)
jne 0x657c
movsbl 0x3(%r15), %edi
callq 0x7581
movq (%r14), %r15
testb %al, %al
je 0x6a9a
leaq 0x3817(%rip), %rsi      # 0x9d9a
movl $0x6, %edx
movq %r15, %rdi
callq 0x1040
testl %eax, %eax
jne 0x65a9
movsbl 0x6(%r15), %edi
callq 0x7581
movq (%r14), %r15
testb %al, %al
je 0x679a
leaq 0x382d(%rip), %rsi      # 0x9ddd
movl $0x5, %edx
movq %r15, %rdi
callq 0x1040
testl %eax, %eax
jne 0x65d6
movsbl 0x5(%r15), %edi
callq 0x7581
movq (%r14), %r15
testb %al, %al
je 0x689c
leaq 0x3831(%rip), %rsi      # 0x9e0e
movl $0x8, %edx
movq %r15, %rdi
callq 0x1040
testl %eax, %eax
jne 0x6603
movsbl 0x8(%r15), %edi
callq 0x7581
movq (%r14), %r15
testb %al, %al
je 0x68f1
movzbl (%r15), %eax
cmpl $0x7b, %eax
je 0x661c
cmpl $0x3b, %eax
jne 0x6646
incq %r15
movq %r15, (%r14)
jmp 0x6eab
incq %r15
movq %r15, (%r14)
movq %r14, %rdi
xorl %esi, %esi
movq %rbx, %rdx
callq 0x630a
movq (%r14), %rax
cmpb $0x7d, (%rax)
je 0x6683
movabsq $0x277d2720646574, %rax # imm = 0x277D2720646574
jmp 0x6edf
leaq 0x50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x5a18
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5aaa
movq (%r15), %rdi
movl 0x8(%r15), %esi
callq 0x156a
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6ec9
incq %rax
movq %rax, (%r14)
jmp 0x6eab
addq $0x5, %r15
movq %r15, (%r14)
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x28, (%rax)
jne 0x6ebd
incq %rax
movq %rax, (%r14)
leaq 0x6bba(%rip), %rax      # 0xd270
movl (%rax), %r15d
leal 0x1(%r15), %ebp
leal 0x2(%r15), %ecx
movl %ecx, (%rax)
movl 0x6aaf(%rip), %eax      # 0xd178
movl %eax, 0x40(%rsp)
movl 0x6aa9(%rip), %eax      # 0xd17c
movl %eax, 0x44(%rsp)
movl 0x6f6a(%rip), %r13d     # 0xd648
movl %ebp, 0x6a94(%rip)      # 0xd178
movl %r15d, 0x6a91(%rip)     # 0xd17c
leaq 0x6b56(%rip), %rax      # 0xd248
movl (%rax), %eax
movl %eax, 0x6f4e(%rip)      # 0xd648
leaq 0x3690(%rip), %rsi      # 0x9d91
movq %rbx, %rdi
movl %r15d, %edx
xorl %eax, %eax
callq 0x1100
leaq 0x50(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x5a18
leaq 0x6a51(%rip), %rax      # 0xd180
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups 0x20(%rax), %xmm2
movups 0x30(%rax), %xmm3
movups %xmm3, 0x30(%rsp)
movups %xmm2, 0x20(%rsp)
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq %r12, %rdi
xorl %esi, %esi
movq %rbx, %rdx
callq 0x340d
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5aaa
movl (%r12), %eax
cmpl $0x1, %eax
je 0x6966
testl %eax, %eax
jne 0x6979
movl 0x54(%rsp), %edx
leaq 0x342c(%rip), %rsi      # 0x9bb5
movq %rbx, %rdi
movl %ebp, %ecx
xorl %eax, %eax
callq 0x1100
jmp 0x6979
addq $0x6, %r15
movq %r15, (%r14)
movq %r14, %rdi
callq 0x79e2
leaq 0x6e58(%rip), %rdi      # 0xd608
leaq 0x6a09(%rip), %rsi      # 0xd1c0
callq 0x7aec
testb %al, %al
je 0x69eb
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6f6c
incq %rax
movq %rax, (%r14)
jmp 0x6cd7
addq $0x2, %r15
movq %r15, (%r14)
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x28, (%rax)
jne 0x6ebd
incq %rax
movq %rax, (%r14)
leaq 0x50(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x5a18
leaq 0x6963(%rip), %rax      # 0xd180
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups 0x20(%rax), %xmm2
movups 0x30(%rax), %xmm3
movups %xmm3, 0x30(%rsp)
movups %xmm2, 0x20(%rsp)
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq %r12, %rdi
xorl %esi, %esi
movq %rbx, %rdx
callq 0x340d
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5aaa
leaq 0x6a12(%rip), %r13      # 0xd270
movl (%r13), %r15d
leal 0x1(%r15), %eax
movl %eax, (%r13)
movl (%r12), %eax
cmpl $0x1, %eax
je 0x6c20
testl %eax, %eax
jne 0x6c34
movl 0x54(%rsp), %edx
leaq 0x332b(%rip), %rsi      # 0x9bb5
movq %rbx, %rdi
movl %r15d, %ecx
xorl %eax, %eax
callq 0x1100
jmp 0x6c34
addq $0x5, %r15
movq %r15, (%r14)
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6efc
movl 0x68bb(%rip), %edx      # 0xd178
testl %edx, %edx
js 0x6f13
leaq 0x697c(%rip), %rax      # 0xd248
movl (%rax), %eax
subl 0x6d74(%rip), %eax      # 0xd648
je 0x6944
leaq 0x2f07(%rip), %rsi      # 0x97e4
movq %rbx, %rdi
movl %eax, %edx
xorl %eax, %eax
callq 0x1100
movl 0x6889(%rip), %edx      # 0xd178
jmp 0x6944
addq $0x8, %r15
movq %r15, (%r14)
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6f34
movl 0x686a(%rip), %edx      # 0xd17c
testl %edx, %edx
js 0x6f4b
leaq 0x6927(%rip), %rax      # 0xd248
movl (%rax), %eax
subl 0x6d1f(%rip), %eax      # 0xd648
je 0x6944
leaq 0x2eb2(%rip), %rsi      # 0x97e4
movq %rbx, %rdi
movl %eax, %edx
xorl %eax, %eax
callq 0x1100
movl 0x6838(%rip), %edx      # 0xd17c
leaq 0x342f(%rip), %rsi      # 0x9d7a
movq %rbx, %rdi
xorl %eax, %eax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1100
leaq 0x3260(%rip), %rsi      # 0x9bcd
movq %rbx, %rdi
movl %ebp, %edx
xorl %eax, %eax
callq 0x1100
movq 0x50(%rsp), %rdi
movl 0x58(%rsp), %esi
callq 0x156a
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x29, (%rax)
jne 0x6ed5
incq %rax
movq %rax, (%r14)
movq %r14, %rdi
callq 0x79e2
movq %r14, %rdi
movq %rbx, %rsi
callq 0x64e5
leaq 0x33bf(%rip), %rsi      # 0x9d7a
movq %rbx, %rdi
movl %r15d, %edx
xorl %eax, %eax
callq 0x1100
leaq 0x33c2(%rip), %rsi      # 0x9d91
movq %rbx, %rdi
movl %ebp, %edx
xorl %eax, %eax
callq 0x1100
movl %r13d, 0x6c66(%rip)     # 0xd648
movl 0x40(%rsp), %eax
jmp 0x6e9b
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x5a18
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6ec9
incq %rax
movq %rax, (%r14)
movups 0x6c1d(%rip), %xmm0     # 0xd638
movups %xmm0, 0x30(%rsp)
movups 0x6c01(%rip), %xmm0     # 0xd628
movups %xmm0, 0x20(%rsp)
movups 0x6be5(%rip), %xmm0     # 0xd618
movups %xmm0, 0x10(%rsp)
movups 0x6bc9(%rip), %xmm0     # 0xd608
movups %xmm0, (%rsp)
leaq 0x50(%rsp), %r14
movq %r14, %rdi
movl $0x1, %esi
movq %rbx, %rdx
callq 0x340d
movq %r14, %rdi
movq %rbx, %rsi
callq 0x5aaa
movl (%r14), %eax
cmpl $0x1, %eax
je 0x6caf
testl %eax, %eax
jne 0x6cc9
movl 0x54(%rsp), %edx
leaq 0x67c6(%rip), %rax      # 0xd248
movl (%rax), %ecx
leaq 0x2595(%rip), %rsi      # 0x9020
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1100
jmp 0x6cc9
addq $0x3, %r15
movq %r15, (%r14)
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x28, (%rax)
jne 0x6ebd
incq %rax
movq %rax, (%r14)
leaq 0x67ae(%rip), %rax      # 0xd270
movl (%rax), %r12d
leal 0x1(%r12), %ebp
leal 0x3(%r12), %edx
leal 0x4(%r12), %ecx
movl %ecx, (%rax)
movl 0x669b(%rip), %r15d     # 0xd178
movl 0x6699(%rip), %eax      # 0xd17c
movl %eax, 0x44(%rsp)
movl 0x6b5b(%rip), %eax      # 0xd648
movl %eax, 0x4c(%rsp)
movl %ebp, 0x6681(%rip)      # 0xd178
movl %edx, 0x40(%rsp)
movl %edx, 0x667b(%rip)      # 0xd17c
leaq 0x6740(%rip), %rax      # 0xd248
movl (%rax), %eax
movl %eax, 0x6b38(%rip)      # 0xd648
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x3b, (%rax)
je 0x6b66
leaq 0x50(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x5a18
movq %r13, %rdi
movq %rbx, %rsi
callq 0x5aaa
movq (%r13), %rdi
movl 0x8(%r13), %esi
callq 0x156a
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6ec9
incq %rax
movq %rax, (%r14)
leaq 0x321e(%rip), %rsi      # 0x9d91
movq %rbx, %rdi
movl %r12d, %edx
xorl %eax, %eax
callq 0x1100
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x3b, (%rax)
je 0x6dca
leaq 0x50(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x5a18
leaq 0x65cb(%rip), %rax      # 0xd180
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups 0x20(%rax), %xmm2
movups 0x30(%rax), %xmm3
movups %xmm3, 0x30(%rsp)
movups %xmm2, 0x20(%rsp)
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq %r13, %rdi
xorl %esi, %esi
movq %rbx, %rdx
callq 0x340d
movq %r13, %rdi
movq %rbx, %rsi
callq 0x5aaa
movl (%r13), %eax
cmpl $0x1, %eax
je 0x6d95
testl %eax, %eax
jne 0x6da8
movl 0x54(%rsp), %edx
leaq 0x2fa6(%rip), %rsi      # 0x9bb5
movq %rbx, %rdi
movl %ebp, %ecx
xorl %eax, %eax
callq 0x1100
jmp 0x6da8
leaq 0x2fa6(%rip), %rsi      # 0x9bcd
movq %rbx, %rdi
movl %r15d, %edx
xorl %eax, %eax
callq 0x1100
movq 0x50(%rsp), %rdi
movl 0x58(%rsp), %esi
callq 0x156a
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x29, (%rax)
jne 0x6ed5
incq %rax
movq %rax, (%r14)
movq %r14, %rdi
callq 0x79e2
movq %r14, %rdi
movq %rbx, %rsi
callq 0x64e5
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x65, (%rax)
jne 0x6c96
cmpb $0x6c, 0x1(%rax)
jne 0x6c96
movsbl 0x4(%rax), %edi
callq 0x7581
testb %al, %al
je 0x6d38
leaq 0x30f4(%rip), %rsi      # 0x9d91
movq %rbx, %rdi
movl %r15d, %edx
xorl %eax, %eax
callq 0x1100
jmp 0x6eab
leaq 0x6592(%rip), %rax      # 0xd248
movl (%rax), %edx
leaq 0x2916(%rip), %rsi      # 0x95d5
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1100
movq 0x50(%rsp), %rdi
movl 0x58(%rsp), %esi
callq 0x156a
leaq 0x656a(%rip), %rax      # 0xd248
movl (%rax), %edx
movl 0x66ee(%rip), %eax      # 0xd3d4
shll $0x2, %eax
subl %eax, %edx
leaq 0x2af2(%rip), %rsi      # 0x97e4
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1100
movl 0x66d2(%rip), %eax      # 0xd3d4
leal 0x4(,%rax,4), %edx
leaq 0x302e(%rip), %rsi      # 0x9d3e
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1100
leaq 0x302e(%rip), %rdi      # 0x9d4f
movl $0x7, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x1190
jmp 0x6eab
addq $0x4, (%r14)
movl (%r13), %r12d
leal 0x1(%r12), %eax
movl %eax, (%r13)
leaq 0x302a(%rip), %rsi      # 0x9d7a
movq %rbx, %rdi
movl %r12d, %edx
xorl %eax, %eax
callq 0x1100
leaq 0x302d(%rip), %r13      # 0x9d91
movq %rbx, %rdi
movq %r13, %rsi
movl %r15d, %edx
xorl %eax, %eax
callq 0x1100
movq %r14, %rdi
callq 0x79e2
movq %r14, %rdi
movq %rbx, %rsi
callq 0x64e5
movq %rbx, %rdi
movq %r13, %rsi
movl %r12d, %edx
jmp 0x6ca3
leaq 0x2e31(%rip), %rsi      # 0x9bcd
movq %rbx, %rdi
movl %ebp, %edx
xorl %eax, %eax
callq 0x1100
movq 0x50(%rsp), %rdi
movl 0x58(%rsp), %esi
callq 0x156a
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6ec9
movl %r15d, 0x48(%rsp)
movl %ebp, %r15d
leal 0x2(%r12), %r13d
incq %rax
movq %rax, (%r14)
leaq 0x2fa5(%rip), %rsi      # 0x9d89
movq %rbx, %rdi
movl %r13d, %edx
movl 0x40(%rsp), %ecx
xorl %eax, %eax
callq 0x1100
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x29, (%rax)
je 0x6e46
leaq 0x50(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x5a18
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x5aaa
movq (%rbp), %rdi
movl 0x8(%rbp), %esi
callq 0x156a
movq %r14, %rdi
callq 0x79e2
movq (%r14), %rax
cmpb $0x29, (%rax)
jne 0x6ebd
incq %rax
movq %rax, (%r14)
leaq 0x2f36(%rip), %rbp      # 0x9d89
movq %rbx, %rdi
movq %rbp, %rsi
movl %r12d, %edx
movl %r13d, %ecx
xorl %eax, %eax
callq 0x1100
movq %r14, %rdi
callq 0x79e2
movq %r14, %rdi
movq %rbx, %rsi
callq 0x64e5
movq %rbx, %rdi
movq %rbp, %rsi
movl 0x40(%rsp), %edx
movl %r15d, %ecx
xorl %eax, %eax
callq 0x1100
movl 0x4c(%rsp), %eax
movl %eax, 0x67b1(%rip)      # 0xd648
movl 0x48(%rsp), %eax
movl %eax, 0x62d7(%rip)      # 0xd178
movl 0x44(%rsp), %eax
movl %eax, 0x62d1(%rip)      # 0xd17c
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movabsq $0x27282720646574, %rax # imm = 0x27282720646574
jmp 0x6edf
movabsq $0x273b2720646574, %rax # imm = 0x273B2720646574
jmp 0x6edf
movabsq $0x27292720646574, %rax # imm = 0x27292720646574
movq %rax, 0x65ff(%rip)      # 0xd4e5
movabsq $0x6465746365707845, %rax # imm = 0x6465746365707845
movq %rax, 0x65e9(%rip)      # 0xd4e0
jmp 0x6f96
movups 0x2ed0(%rip), %xmm0     # 0x9dd3
movups %xmm0, 0x65df(%rip)     # 0xd4e9
movups 0x2eb9(%rip), %xmm0     # 0x9dca
jmp 0x6f8f
movups 0x2ec9(%rip), %xmm0     # 0x9de3
movaps %xmm0, 0x65bf(%rip)     # 0xd4e0
movabsq $0x666f2074756f20, %rax # imm = 0x666F2074756F20
movq %rax, 0x65be(%rip)      # 0xd4f0
jmp 0x6f96
movups 0x2ecc(%rip), %xmm0     # 0x9e07
movups %xmm0, 0x65aa(%rip)     # 0xd4ec
movups 0x2eb2(%rip), %xmm0     # 0x9dfb
jmp 0x6f8f
movups 0x2ec5(%rip), %xmm0     # 0x9e17
movaps %xmm0, 0x6587(%rip)     # 0xd4e0
movabsq $0x6e692065756e69, %rax # imm = 0x6E692065756E69
movq %rax, 0x6585(%rip)      # 0xd4ef
jmp 0x6f96
movups 0x2e47(%rip), %xmm0     # 0x9dba
movups %xmm0, 0x657f(%rip)     # 0xd4f9
movups 0x2e30(%rip), %xmm0     # 0x9db1
movaps %xmm0, 0x6568(%rip)     # 0xd4f0
movups 0x2e12(%rip), %xmm0     # 0x9da1
movaps %xmm0, 0x654a(%rip)     # 0xd4e0
movl $0x1, %edi
callq 0x5b10