// File: /workspace/github_c_makefile_star2_O1/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 0x799f
movq (%r14), %r15
leaq 0x389b(%rip), %rsi      # 0x9d6d
movl $0x2, %edx
movq %r15, %rdi
callq 0x1040
testl %eax, %eax
jne 0x64f5
movsbl 0x2(%r15), %edi
callq 0x753d
testb %al, %al
je 0x6632
movq (%r14), %r15
leaq 0x388c(%rip), %rsi      # 0x9d8b
movl $0x5, %edx
movq %r15, %rdi
callq 0x1040
testl %eax, %eax
jne 0x6522
movsbl 0x5(%r15), %edi
callq 0x753d
testb %al, %al
je 0x6714
movq (%r14), %r15
leaq 0x3865(%rip), %rsi      # 0x9d91
movl $0x3, %edx
movq %r15, %rdi
callq 0x1040
testl %eax, %eax
jne 0x654f
movsbl 0x3(%r15), %edi
callq 0x753d
testb %al, %al
je 0x681a
movq (%r14), %r15
leaq 0x384d(%rip), %rsi      # 0x9da6
movl $0x6, %edx
movq %r15, %rdi
callq 0x1040
testl %eax, %eax
jne 0x657c
movsbl 0x6(%r15), %edi
callq 0x753d
testb %al, %al
je 0x6997
movq (%r14), %r15
leaq 0x3863(%rip), %rsi      # 0x9de9
movl $0x5, %edx
movq %r15, %rdi
callq 0x1040
testl %eax, %eax
jne 0x65a9
movsbl 0x5(%r15), %edi
callq 0x753d
testb %al, %al
je 0x69d2
movq (%r14), %r15
leaq 0x3867(%rip), %rsi      # 0x9e1a
movl $0x8, %edx
movq %r15, %rdi
callq 0x1040
testl %eax, %eax
jne 0x65d6
movsbl 0x8(%r15), %edi
callq 0x753d
testb %al, %al
je 0x6a21
movq (%r14), %rax
movzbl (%rax), %ecx
cmpl $0x7b, %ecx
je 0x66ed
cmpl $0x3b, %ecx
je 0x6627
leaq 0x50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x59e8
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5a7a
movq (%r15), %rdi
movl 0x8(%r15), %esi
callq 0x156a
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6e71
incq %rax
movq %rax, (%r14)
jmp 0x6e53
addq $0x2, (%r14)
movq %r14, %rdi
callq 0x799f
movq (%r14), %rax
cmpb $0x28, (%rax)
jne 0x6e65
incq (%r14)
leaq 0x50(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x59e8
leaq 0x6b12(%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 0x33e8
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5a7a
leaq 0x6bc1(%rip), %r13      # 0xd270
movl (%r13), %r15d
leal 0x1(%r15), %eax
movl %eax, (%r13)
movl (%r12), %eax
cmpl $0x1, %eax
je 0x6a90
testl %eax, %eax
jne 0x6aa4
movl 0x54(%rsp), %edx
leaq 0x34da(%rip), %rsi      # 0x9bb5
movq %rbx, %rdi
movl %r15d, %ecx
xorl %eax, %eax
callq 0x1100
jmp 0x6aa4
incq %rax
movq %rax, (%r14)
movq %r14, %rdi
xorl %esi, %esi
movq %rbx, %rdx
callq 0x62d2
movq (%r14), %rax
cmpb $0x7d, (%rax)
jne 0x6e89
incq (%r14)
jmp 0x6e53
addq $0x5, (%r14)
movq %r14, %rdi
callq 0x799f
movq (%r14), %rax
cmpb $0x28, (%rax)
jne 0x6e65
incq (%r14)
leaq 0x6b3a(%rip), %rax      # 0xd270
movl (%rax), %r15d
leal 0x1(%r15), %ebp
leal 0x2(%r15), %ecx
movl %ecx, (%rax)
movl 0x6a2f(%rip), %eax      # 0xd178
movl %eax, 0x40(%rsp)
movl 0x6a29(%rip), %eax      # 0xd17c
movl %eax, 0x44(%rsp)
movl 0x6eea(%rip), %r13d     # 0xd648
movl %ebp, 0x6a14(%rip)      # 0xd178
movl %r15d, 0x6a11(%rip)     # 0xd17c
leaq 0x6ad6(%rip), %rax      # 0xd248
movl (%rax), %eax
movl %eax, 0x6ece(%rip)      # 0xd648
leaq 0x361c(%rip), %rsi      # 0x9d9d
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 0x59e8
leaq 0x69d1(%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 0x33e8
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5a7a
movl (%r12), %eax
cmpl $0x1, %eax
je 0x6b2b
testl %eax, %eax
jne 0x6b3e
movl 0x54(%rsp), %edx
leaq 0x33ac(%rip), %rsi      # 0x9bb5
movq %rbx, %rdi
movl %ebp, %ecx
xorl %eax, %eax
callq 0x1100
jmp 0x6b3e
addq $0x3, (%r14)
movq %r14, %rdi
callq 0x799f
movq (%r14), %rax
cmpb $0x28, (%rax)
jne 0x6e65
incq (%r14)
leaq 0x6a34(%rip), %rax      # 0xd270
movl (%rax), %r12d
leal 0x1(%r12), %ebp
leal 0x3(%r12), %edx
leal 0x4(%r12), %ecx
movl %ecx, (%rax)
movl 0x6921(%rip), %r15d     # 0xd178
movl 0x691f(%rip), %eax      # 0xd17c
movl %eax, 0x44(%rsp)
movl 0x6de1(%rip), %eax      # 0xd648
movl %eax, 0x4c(%rsp)
movl %ebp, 0x6907(%rip)      # 0xd178
movl %edx, 0x40(%rsp)
movl %edx, 0x6901(%rip)      # 0xd17c
leaq 0x69c6(%rip), %rax      # 0xd248
movl (%rax), %eax
movl %eax, 0x6dbe(%rip)      # 0xd648
movq %r14, %rdi
callq 0x799f
movq (%r14), %rax
cmpb $0x3b, (%rax)
je 0x68e0
leaq 0x50(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x59e8
movq %r13, %rdi
movq %rbx, %rsi
callq 0x5a7a
movq (%r13), %rdi
movl 0x8(%r13), %esi
callq 0x156a
movq %r14, %rdi
callq 0x799f
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6e71
incq (%r14)
leaq 0x34b3(%rip), %rsi      # 0x9d9d
movq %rbx, %rdi
movl %r12d, %edx
xorl %eax, %eax
callq 0x1100
movq %r14, %rdi
callq 0x799f
movq (%r14), %rax
cmpb $0x3b, (%rax)
je 0x6ceb
leaq 0x50(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x59e8
leaq 0x6854(%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 0x33e8
movq %r13, %rdi
movq %rbx, %rsi
callq 0x5a7a
movl (%r13), %eax
cmpl $0x1, %eax
je 0x6cb6
testl %eax, %eax
jne 0x6cc9
movl 0x54(%rsp), %edx
leaq 0x322f(%rip), %rsi      # 0x9bb5
movq %rbx, %rdi
movl %ebp, %ecx
xorl %eax, %eax
callq 0x1100
jmp 0x6cc9
addq $0x6, (%r14)
movq %r14, %rdi
callq 0x799f
leaq 0x6c5e(%rip), %rdi      # 0xd608
leaq 0x680f(%rip), %rsi      # 0xd1c0
callq 0x7ab1
testb %al, %al
je 0x6bad
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6f25
incq (%r14)
jmp 0x6df7
addq $0x5, (%r14)
movq %r14, %rdi
callq 0x799f
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6eb5
cmpl $0x0, 0x6787(%rip)      # 0xd178
js 0x6ecc
leaq 0x684a(%rip), %rax      # 0xd248
movl (%rax), %edx
subl 0x6c42(%rip), %edx      # 0xd648
je 0x6a19
leaq 0x2dd5(%rip), %rsi      # 0x97e4
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1100
movl 0x6759(%rip), %edx      # 0xd178
jmp 0x6a6e
addq $0x8, (%r14)
movq %r14, %rdi
callq 0x799f
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6eed
cmpl $0x0, 0x673c(%rip)      # 0xd17c
js 0x6f04
leaq 0x67fb(%rip), %rax      # 0xd248
movl (%rax), %edx
subl 0x6bf3(%rip), %edx      # 0xd648
je 0x6a68
leaq 0x2d86(%rip), %rsi      # 0x97e4
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1100
movl 0x670e(%rip), %edx      # 0xd17c
leaq 0x330d(%rip), %rsi      # 0x9d82
movq %rbx, %rdi
xorl %eax, %eax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1100
leaq 0x3136(%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 0x799f
movq (%r14), %rax
cmpb $0x29, (%rax)
jne 0x6e7d
incq (%r14)
movq %r14, %rdi
callq 0x799f
movq %r14, %rdi
movq %rbx, %rsi
callq 0x64ac
movq %r14, %rdi
callq 0x799f
movq (%r14), %r12
leaq 0x328f(%rip), %rsi      # 0x9d7d
movl $0x2, %edx
movq %r12, %rdi
callq 0x1040
testl %eax, %eax
jne 0x6b12
movsbl 0x4(%r12), %edi
callq 0x753d
testb %al, %al
je 0x6c59
leaq 0x3284(%rip), %rsi      # 0x9d9d
movq %rbx, %rdi
movl %r15d, %edx
xorl %eax, %eax
callq 0x1100
jmp 0x6e53
leaq 0x309b(%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 0x799f
movq (%r14), %rax
cmpb $0x29, (%rax)
jne 0x6e7d
incq (%r14)
movq %r14, %rdi
callq 0x799f
movq %r14, %rdi
movq %rbx, %rsi
callq 0x64ac
leaq 0x3205(%rip), %rsi      # 0x9d82
movq %rbx, %rdi
movl %r15d, %edx
xorl %eax, %eax
callq 0x1100
leaq 0x320c(%rip), %rsi      # 0x9d9d
movq %rbx, %rdi
movl %ebp, %edx
xorl %eax, %eax
callq 0x1100
movl %r13d, 0x6aa4(%rip)     # 0xd648
movl 0x40(%rsp), %eax
jmp 0x6dba
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x59e8
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6e71
incq (%r14)
movups 0x6a5e(%rip), %xmm0     # 0xd638
movups %xmm0, 0x30(%rsp)
movups 0x6a42(%rip), %xmm0     # 0xd628
movups %xmm0, 0x20(%rsp)
movups 0x6a26(%rip), %xmm0     # 0xd618
movups %xmm0, 0x10(%rsp)
movups 0x6a0a(%rip), %xmm0     # 0xd608
movups %xmm0, (%rsp)
leaq 0x50(%rsp), %r14
movq %r14, %rdi
movl $0x1, %esi
movq %rbx, %rdx
callq 0x33e8
movq %r14, %rdi
movq %rbx, %rsi
callq 0x5a7a
movl (%r14), %eax
cmpl $0x1, %eax
je 0x6dcf
testl %eax, %eax
jne 0x6de9
movl 0x54(%rsp), %edx
leaq 0x6607(%rip), %rax      # 0xd248
movl (%rax), %ecx
leaq 0x23d6(%rip), %rsi      # 0x9020
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1100
jmp 0x6de9
addq $0x4, (%r14)
movl (%r13), %r12d
leal 0x1(%r12), %eax
movl %eax, (%r13)
leaq 0x3111(%rip), %rsi      # 0x9d82
movq %rbx, %rdi
movl %r12d, %edx
xorl %eax, %eax
callq 0x1100
leaq 0x3118(%rip), %r13      # 0x9d9d
movq %rbx, %rdi
movq %r13, %rsi
movl %r15d, %edx
xorl %eax, %eax
callq 0x1100
movq %r14, %rdi
callq 0x799f
movq %r14, %rdi
movq %rbx, %rsi
callq 0x64ac
movq %rbx, %rdi
movq %r13, %rsi
movl %r12d, %edx
jmp 0x6b1f
leaq 0x2f10(%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 0x799f
movq (%r14), %rax
cmpb $0x3b, (%rax)
jne 0x6e71
movl %r15d, 0x48(%rsp)
movl %ebp, %r15d
leal 0x2(%r12), %r13d
incq (%r14)
leaq 0x3093(%rip), %rsi      # 0x9d95
movq %rbx, %rdi
movl %r13d, %edx
movl 0x40(%rsp), %ecx
xorl %eax, %eax
callq 0x1100
movq %r14, %rdi
callq 0x799f
movq (%r14), %rax
cmpb $0x29, (%rax)
je 0x6d68
leaq 0x50(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x59e8
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x5a7a
movq (%rbp), %rdi
movl 0x8(%rbp), %esi
callq 0x156a
movq %r14, %rdi
callq 0x799f
movq (%r14), %rax
cmpb $0x29, (%rax)
jne 0x6e65
incq (%r14)
leaq 0x3023(%rip), %rbp      # 0x9d95
movq %rbx, %rdi
movq %rbp, %rsi
movl %r12d, %edx
movl %r13d, %ecx
xorl %eax, %eax
callq 0x1100
movq %r14, %rdi
callq 0x799f
movq %r14, %rdi
movq %rbx, %rsi
callq 0x64ac
movq %rbx, %rdi
movq %rbp, %rsi
movl 0x40(%rsp), %edx
movl %r15d, %ecx
xorl %eax, %eax
callq 0x1100
movl 0x4c(%rsp), %eax
movl %eax, 0x6892(%rip)      # 0xd648
movl 0x48(%rsp), %eax
movl %eax, 0x63b8(%rip)      # 0xd178
movl 0x44(%rsp), %eax
movl %eax, 0x63b2(%rip)      # 0xd17c
jmp 0x6e53
leaq 0x6472(%rip), %rax      # 0xd248
movl (%rax), %edx
leaq 0x27f6(%rip), %rsi      # 0x95d5
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1100
movq 0x50(%rsp), %rdi
movl 0x58(%rsp), %esi
callq 0x156a
leaq 0x644a(%rip), %rax      # 0xd248
movl (%rax), %edx
movl 0x65ce(%rip), %eax      # 0xd3d4
shll $0x2, %eax
subl %eax, %edx
leaq 0x29d2(%rip), %rsi      # 0x97e4
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1100
movl 0x65b2(%rip), %eax      # 0xd3d4
leal 0x4(,%rax,4), %edx
leaq 0x2f0e(%rip), %rsi      # 0x9d3e
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1100
leaq 0x2f0e(%rip), %rdi      # 0x9d4f
movl $0x7, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x1190
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movabsq $0x27282720646574, %rax # imm = 0x27282720646574
jmp 0x6e93
movabsq $0x273b2720646574, %rax # imm = 0x273B2720646574
jmp 0x6e93
movabsq $0x27292720646574, %rax # imm = 0x27292720646574
jmp 0x6e93
movabsq $0x277d2720646574, %rax # imm = 0x277D2720646574
movq %rax, 0x664b(%rip)      # 0xd4e5
movabsq $0x6465746365707845, %rax # imm = 0x6465746365707845
movq %rax, 0x6635(%rip)      # 0xd4e0
movl $0x1, %edi
callq 0x5ae0
movups 0x2f23(%rip), %xmm0     # 0x9ddf
movups %xmm0, 0x6626(%rip)     # 0xd4e9
movups 0x2f0c(%rip), %xmm0     # 0x9dd6
jmp 0x6f48
movups 0x2f1c(%rip), %xmm0     # 0x9def
movaps %xmm0, 0x6606(%rip)     # 0xd4e0
movabsq $0x666f2074756f20, %rax # imm = 0x666F2074756F20
movq %rax, 0x6605(%rip)      # 0xd4f0
jmp 0x6eab
movups 0x2f1f(%rip), %xmm0     # 0x9e13
movups %xmm0, 0x65f1(%rip)     # 0xd4ec
movups 0x2f05(%rip), %xmm0     # 0x9e07
jmp 0x6f48
movups 0x2f18(%rip), %xmm0     # 0x9e23
movaps %xmm0, 0x65ce(%rip)     # 0xd4e0
movabsq $0x6e692065756e69, %rax # imm = 0x6E692065756E69
movq %rax, 0x65cc(%rip)      # 0xd4ef
jmp 0x6eab
movups 0x2e9a(%rip), %xmm0     # 0x9dc6
movups %xmm0, 0x65c6(%rip)     # 0xd4f9
movups 0x2e83(%rip), %xmm0     # 0x9dbd
movaps %xmm0, 0x65af(%rip)     # 0xd4f0
movups 0x2e65(%rip), %xmm0     # 0x9dad
movaps %xmm0, 0x6591(%rip)     # 0xd4e0
jmp 0x6eab