// File: /workspace/github_c_makefile_star2_O1/System-Glitch[P]ESGILinter-C/src/parsing_expressions.c
// Function: parse_expression
type_t parse_expression(char *line, int line_index, scope_t *scope, messages_t *messages) {
	type_t type;
	type_t return_type;
	function_t *function     = NULL;
	char       *expr         = NULL;
	char       *following    = NULL; //Used in parse_control "case"
	char       *tmp          = NULL;
	unsigned int start_index = 0;
	unsigned int end_index   = 0;
	unsigned int close_index = 0;
	int last_index           = -1; //Last index or quote for char and string literal
	unsigned char is_return  = 0;
	unsigned char is_for     = 0;
	int index                = 0;
	unsigned int sub_index   = 0;
	int length               = 0;
	int type_length;
	char c;

	type.name = strduplicate("NULL");
	type.is_pointer = 0;
	type.is_literal = 0;

	line   = str_remove_comments(line);
	length = strlen(line);
	tmp    = remove_parenthesis(line, length);
	if(tmp != NULL) {
		free(line);
		line   = tmp;
		length = strlen(tmp);
	}


	SKIP_WHITESPACES

	if(c == '(') {
		//Parenthesis -> cast

		index++;

		SKIP_WHITESPACES

		start_index = index;

		while((c = line[index]) != ')' && index < length) index++;

		if(c != ')') { //No closing parenthesis, syntax error
			if(tmp != NULL) free(tmp);
			else free(line);
			return type;
		}

		close_index = index;

		index++;

		//Check if something follows
		SKIP_WHITESPACES
		
		if(index >= length || is_whitespace(c) || c == ')') {
			if(tmp != NULL) free(tmp);
			else free(line);
			return type;
		}

		index = close_index;

		//Skip whitespaces backwards to find end of type
		while(is_whitespace(c = line[index]) && index > 0) { index--; }

		end_index = index;

		free(type.name);
		type_length     = end_index - start_index;
		type.name       = strsubstr(line, start_index, type_length);
		type.is_pointer = strcount(type.name, '*');
		sub_index       = strcountuntil(type.name, '*', 1, 1);

		//Remove stars
		type.name[type_length - sub_index] = '\0';

		//Check expression without cast
		expr = strsubstr(line, close_index + 1, length - close_index);
		parse_expression(expr, line_index, scope, messages);
		free(expr);


	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rcx, %r12
movq %rdx, 0x30(%rsp)
movl %esi, 0x2c(%rsp)
movq %rdi, %rbx
leaq 0x3219(%rip), %rdi      # 0xe8c0
callq 0x7d58
movq %rax, %r15
movq %rbx, %rdi
callq 0x7be4
movq %rax, %rbx
movq %rax, %rdi
callq 0x20b0
movq %rax, %r13
movq %rbx, %rdi
movl %r13d, %esi
callq 0x8401
testq %rax, %rax
movq %r15, 0x10(%rsp)
movq %r12, 0x50(%rsp)
je 0xb6f7
movq %rax, %r14
movq %rbx, %rdi
callq 0x2030
movq %r14, %rdi
callq 0x20b0
movq %r14, %rbx
jmp 0xb6fa
movq %r13, %rax
movq %rax, 0x38(%rsp)
cltq
movq %rax, (%rsp)
leaq -0x1(%rbx), %rcx
movl $0x1, %eax
movq $-0x1, %r14
movl $0xfffffffe, %r15d      # imm = 0xFFFFFFFE
xorl %r13d, %r13d
movq %rcx, 0x90(%rsp)
movq %rcx, 0x58(%rsp)
movq %rbx, 0x20(%rsp)
movq %rbx, 0x18(%rsp)
movq %r13, %rbx
movq %rax, %r12
movq 0x20(%rsp), %rax
movsbl (%rax,%r13), %ebp
movl %ebp, %edi
callq 0x7ed1
incq %r13
movq %r14, 0x8(%rsp)
incq %r14
incq 0x18(%rsp)
incq 0x58(%rsp)
incl %r15d
testb %al, %al
je 0xb773
leaq 0x1(%r12), %rax
cmpq (%rsp), %rbx
jl 0xb735
movzbl %bpl, %ebp
cmpl $0x22, %ebp
je 0xb917
cmpl $0x27, %ebp
je 0xb8f8
cmpl $0x28, %ebp
jne 0xb92e
movslq %r12d, %rax
movq %rax, %rbp
movq 0x20(%rsp), %rax
movsbl (%rax,%r12), %edi
callq 0x7ed1
leaq 0x1(%r12), %rbx
testb %al, %al
je 0xb7be
leaq 0x1(%rbp), %rax
cmpl %r12d, 0x38(%rsp)
movq %rbx, %r12
jg 0xb795
xorl %r14d, %r14d
movq %rbx, %rax
movq 0x20(%rsp), %rdx
movq 0x38(%rsp), %rsi
movq %rbp, %r13
movb -0x1(%rdx,%rax), %cl
incl %r14d
leaq 0x1(%rax), %r15
cmpb $0x29, %cl
je 0xb7ee
decl %eax
leaq 0x1(%r13), %rbp
cmpl %eax, %esi
movq %r15, %rax
jg 0xb7ce
cmpb $0x29, %cl
jne 0xc85c
decq %rbx
leaq -0x1(%r15), %rax
movq %rax, 0x18(%rsp)
cltq
movq %rax, %r12
movq 0x20(%rsp), %rax
movb (%rax,%r12), %al
movsbl %al, %ebp
movl %ebp, %edi
callq 0x7ed1
testb %al, %al
je 0xb82a
leaq 0x1(%r12), %rax
cmpq (%rsp), %r12
jl 0xb805
cmpq (%rsp), %r12
jge 0xc85c
movl %ebp, %edi
callq 0x7ed1
xorl %r12d, %r12d
cmpb $0x29, %bpl
je 0xc37c
testb %al, %al
jne 0xc37c
movq 0x20(%rsp), %r12
movsbl (%r12,%r13), %edi
callq 0x7ed1
decl %r14d
testq %r13, %r13
jle 0xb86e
decq %r13
testb %al, %al
jne 0xb855
movq 0x10(%rsp), %rdi
callq 0x2030
movq %r12, %rdi
movl %ebx, %esi
movl %r14d, %edx
callq 0x7db1
movq %rax, %r13
movq %rax, %rdi
movl $0x2a, %esi
callq 0x7e07
movl %eax, %ebx
movq %r13, %rdi
movl $0x2a, %esi
movl $0x1, %edx
movl $0x1, %ecx
callq 0x7e3f
subl %eax, %r14d
movb $0x0, (%r13,%r14)
movq 0x38(%rsp), %rdx
subl %r15d, %edx
addl $0x2, %edx
movq %r12, %rdi
movq 0x18(%rsp), %rsi
callq 0x7db1
movq %rax, %r14
movq %rax, %rdi
movl 0x2c(%rsp), %esi
movq 0x30(%rsp), %rdx
movq 0x50(%rsp), %rcx
callq 0xb680
movq %r14, %rdi
callq 0x2030
xorl %r12d, %r12d
jmp 0xc866
movq 0x20(%rsp), %r12
movq %r12, %rdi
movl $0x27, %esi
callq 0x7f88
cmpl %eax, %ebx
jne 0xba9d
cmpl $0x22, %ebp
jne 0xb92e
movq 0x20(%rsp), %rdi
movl $0x22, %esi
callq 0x7f88
cmpl %eax, %ebx
jne 0xba40
movl %ebp, 0x6c(%rsp)
movq 0x20(%rsp), %rax
leaq (%rax,%rbx), %rcx
movq %rcx, 0x88(%rsp)
movl %ebx, %ecx
addq %rax, %rcx
movq %rcx, 0x60(%rsp)
xorl %r12d, %r12d
cmpq $0x18, %r12
je 0xbaf6
leaq 0x746f(%rip), %rax      # 0x12dd0
movq (%r12,%rax), %rbp
movq %rbp, %rdi
callq 0x20b0
movq 0x60(%rsp), %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0x2070
addq $0x8, %r12
testl %eax, %eax
jne 0xb950
movq %rbp, %rdi
callq 0x20b0
movq %rax, 0x70(%rsp)
addl %r14d, %eax
movslq %eax, %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x48(%rsp)
addq %rcx, %rax
movq %rax, 0x40(%rsp)
xorl %ebx, %ebx
movq 0x48(%rsp), %rax
leaq (%rax,%rbx), %rbp
movq 0x40(%rsp), %rax
movb (%rax,%rbx), %r12b
movsbl %r12b, %edi
callq 0x7ed1
incq %rbx
cmpq (%rsp), %rbp
jge 0xb9d4
testb %al, %al
jne 0xb9ac
addl 0x70(%rsp), %r15d
addq %rbx, %r15
cmpb $0x28, %r12b
jne 0xbaf3
movq 0x20(%rsp), %r12
movq %r12, %rdi
movl $0x29, %esi
callq 0x7f88
cmpl %r15d, %eax
movq 0x18(%rsp), %rbp
jle 0xbdf8
movq 0x70(%rsp), %rcx
addl %ecx, %r14d
addl %ebx, %r14d
addl %ecx, %r13d
subl %r13d, %eax
subl %ebx, %eax
incl %eax
movq %r12, %rdi
movl %r14d, %esi
movl %eax, %edx
callq 0x7db1
movq %rax, %r15
movb $0x1, %al
movq %rax, 0x40(%rsp)
xorl %eax, %eax
movb $0x1, %cl
movq 0x10(%rsp), %r13
jmp 0xbe62
cltq
incq %rax
movq 0x20(%rsp), %r15
movq %rax, %rbx
movb (%r15,%rax), %r14b
movsbl %r14b, %ebp
movl %ebp, %edi
callq 0x7ed1
testb %al, %al
je 0xba6a
leaq 0x1(%rbx), %rax
cmpq (%rsp), %rbx
jl 0xba4a
cmpb $0x3b, %r14b
movq 0x10(%rsp), %r13
jne 0xbd21
movq %r13, %rdi
callq 0x2030
leaq 0x2e7e(%rip), %rdi      # 0xe906
callq 0x7d58
movq %rax, %r13
movb $0x1, %bl
movl $0x100, %r12d           # imm = 0x100
jmp 0xc866
cltq
incq %rax
movq %rax, %rbx
movb (%r12,%rax), %r14b
movsbl %r14b, %ebp
movl %ebp, %edi
callq 0x7ed1
testb %al, %al
je 0xbac2
leaq 0x1(%rbx), %rax
cmpq (%rsp), %rbx
jl 0xbaa2
cmpb $0x3b, %r14b
movq 0x10(%rsp), %r13
jne 0xbd3f
movq %r13, %rdi
callq 0x2030
leaq 0x2e26(%rip), %rdi      # 0xe906
callq 0x7d58
movq %rax, %r13
movl $0x100, %r12d           # imm = 0x100
jmp 0xc678
movl %r15d, %ebx
movq 0x20(%rsp), %r12
movq 0x18(%rsp), %rbp
movslq %ebx, %r14
addq %r12, %r14
leaq 0x2cc1(%rip), %rsi      # 0xe7ce
movl $0x4, %edx
movq %r14, %rdi
callq 0x2070
testl %eax, %eax
movq 0x10(%rsp), %r13
je 0xbc18
leaq 0x2cd2(%rip), %rsi      # 0xe800
movl $0x6, %edx
movq %r14, %rdi
callq 0x2070
testl %eax, %eax
je 0xbcd7
leaq 0x2c65(%rip), %rsi      # 0xe7af
movl $0x4, %edx
movq %r14, %rdi
callq 0x2070
testl %eax, %eax
je 0xbd5d
leaq 0x2c5d(%rip), %rsi      # 0xe7c3
movl $0x7, %edx
movq %r14, %rdi
callq 0x2070
testl %eax, %eax
je 0xbe00
leaq 0x14a8(%rip), %rsi      # 0xd02a
movl $0x3, %edx
movq %r14, %rdi
callq 0x2070
movb $0x1, %cl
movq %rcx, 0x40(%rsp)
testl %eax, %eax
jne 0xbe5b
addl $0x3, %ebx
movslq %ebx, %r14
movq %r14, %r15
movb (%r12,%r14), %bl
movsbl %bl, %edi
callq 0x7ed1
incq %r14
cmpq (%rsp), %r15
jge 0xbbc0
testb %al, %al
jne 0xbba4
cmpb $0x28, %bl
jne 0xbe5b
leal -0x1(%r14), %ebx
movq %r12, %rdi
movl $0x29, %esi
callq 0x7f88
cmpl %ebx, %eax
jle 0xbe5b
subl %r14d, %eax
movq %r12, %rdi
movl %r14d, %esi
movl %eax, %edx
callq 0x7db1
movq %rax, %r15
movq %rax, %rdi
movl $0x3b, %esi
callq 0x7e07
cmpl $0x1, %eax
ja 0xc8e0
movq %r15, %rdi
callq 0x2030
jmp 0xbe5b
leal 0x4(%rbx), %eax
movslq %eax, %rcx
xorl %r14d, %r14d
movq %rcx, %r15
movsbl (%r12,%rcx), %edi
callq 0x7ed1
leaq 0x1(%r15), %rcx
decl %r14d
cmpq (%rsp), %r15
jge 0xbc3f
testb %al, %al
jne 0xbc21
cmpl $-0x1, %r14d
je 0xbe54
movb $0x1, %al
movq %rax, 0x40(%rsp)
movq 0x90(%rsp), %rdi
addq %rcx, %rdi
leaq 0x2b82(%rip), %rsi      # 0xe7e4
movl $0x2, %edx
callq 0x2070
testl %eax, %eax
jne 0xbe5b
subl %r14d, %ebx
addl $0x5, %ebx
movslq %ebx, %r14
movq %r14, %r15
movb (%r12,%r14), %bl
movsbl %bl, %edi
callq 0x7ed1
incq %r14
cmpq (%rsp), %r15
jge 0xbc99
testb %al, %al
jne 0xbc7d
cmpb $0x28, %bl
jne 0xbe5b
leal -0x1(%r14), %ebx
movq %r12, %rdi
movl $0x29, %esi
callq 0x7f88
cmpl %ebx, %eax
jle 0xbe5b
subl %r14d, %eax
movq %r12, %rdi
movl %r14d, %esi
movl %eax, %edx
callq 0x7db1
movq %rax, %r15
xorl %eax, %eax
movb $0x1, %cl
jmp 0xbe62
leal 0x6(%rbx), %eax
movslq %eax, %r14
addl $0x5, %ebx
movsbl (%r12,%r14), %edi
callq 0x7ed1
incl %ebx
cmpq (%rsp), %r14
jge 0xbcf9
incq %r14
testb %al, %al
jne 0xbce0
movq 0x38(%rsp), %rax
movl %eax, %edx
subl %ebx, %edx
movq %r12, %rdi
movl %ebx, %esi
callq 0x7db1
movq %rax, %r15
movb $0x1, %cl
xorl %eax, %eax
movq $0x0, 0x40(%rsp)
jmp 0xbe62
movl %ebp, %edi
callq 0x7ed1
testb %al, %al
jne 0xba79
cmpq (%rsp), %rbx
jl 0xc675
jmp 0xba79
movl %ebp, %edi
callq 0x7ed1
testb %al, %al
jne 0xbad1
cmpq (%rsp), %rbx
jl 0xc675
jmp 0xbad1
addl $0x4, %ebx
movslq %ebx, %r15
movq %r15, %rbx
movsbl (%r12,%r15), %edi
callq 0x7ed1
incq %r15
cmpq (%rsp), %rbx
jge 0xbd7d
testb %al, %al
jne 0xbd63
leal -0x1(%r15), %r14d
movb $0x1, %al
movq %rax, 0x40(%rsp)
movq 0x38(%rsp), %rdx
cmpl %r14d, %edx
jle 0xbe5b
movl %r14d, %ebx
movslq %ebx, %rcx
leaq (%r12,%rcx), %rax
xorl %r12d, %r12d
leaq (%rcx,%r12), %rsi
movb (%rax,%r12), %dil
incq %r12
cmpq (%rsp), %rsi
jge 0xbdba
cmpb $0x3a, %dil
jne 0xbda3
cmpb $0x3a, %dil
jne 0xbdde
leaq (%r12,%rax), %rsi
decq %rsi
movq 0x20(%rsp), %rdi
callq 0x8291
movq 0x38(%rsp), %rdx
testb %al, %al
je 0xc75d
addl %r12d, %ebx
cmpl %edx, %ebx
movq 0x20(%rsp), %r12
jl 0xbd99
movb $0x1, %cl
xorl %r15d, %r15d
movq 0x8(%rsp), %r14
xorl %eax, %eax
jmp 0xbe67
movl %r15d, %ebx
jmp 0xbb00
addl $0x7, %ebx
movslq %ebx, %rsi
movq %rsi, %r14
movb (%r12,%rsi), %bl
movsbl %bl, %edi
callq 0x7ed1
leaq 0x1(%r14), %rsi
cmpq (%rsp), %r14
jge 0xbe23
testb %al, %al
jne 0xbe06
cmpb $0x3a, %bl
jne 0xbe54
movb $0x1, %al
movq %rax, 0x40(%rsp)
movq 0x38(%rsp), %rax
movl %eax, %edx
subl %esi, %edx
movq 0x8(%rsp), %r14
jle 0xc79f
movq %r12, %rdi
callq 0x7db1
movq %rax, %r15
xorl %eax, %eax
movb $0x1, %cl
jmp 0xbe67
movb $0x1, %al
movq %rax, 0x40(%rsp)
xorl %eax, %eax
movb $0x1, %cl
xorl %r15d, %r15d
movq 0x8(%rsp), %r14
testq %r15, %r15
je 0xbebf
movq %rcx, 0x18(%rsp)
movq %rax, (%rsp)
movq %r15, %rdi
movl 0x2c(%rsp), %r13d
movl %r13d, %esi
movq 0x30(%rsp), %rbp
movq %rbp, %rdx
movq 0x50(%rsp), %r12
movq %r12, %rcx
callq 0xb680
movq %rdx, %r14
leaq 0x2a21(%rip), %rsi      # 0xe8c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x2120
testl %eax, %eax
movq %r15, 0x48(%rsp)
je 0xc118
movq %rbx, %r13
jmp 0xc12f
movl 0x6c(%rsp), %ebx
movsbl %bl, %edi
callq 0x827b
cmpl $0x2e, %ebx
je 0xbf8c
testb %al, %al
jne 0xbf8c
movq 0x50(%rsp), %r15
cmpq $0x0, (%r15)
je 0xc675
movl 0x2c(%rsp), %ebx
movl %ebx, %edi
movq 0x88(%rsp), %rsi
callq 0xb150
testq %rax, %rax
je 0xc38b
movq %rax, %r14
movq 0x30(%rsp), %rbp
testq %rbp, %rbp
je 0xc714
movq (%r14), %rsi
movq %rbp, %rdi
xorl %edx, %edx
callq 0x6933
testq %rax, %rax
je 0xc7b7
movq %rax, %r12
movq %rbp, %rdi
callq 0x6915
movq (%r14), %rsi
movq %rax, %rdi
callq 0x6a36
cmpl %ebx, 0x28(%r12)
jl 0xbf5d
testq %rax, %rax
je 0xc7f3
cmpl %ebx, 0x28(%rax)
jge 0xc7f3
movq %r13, %rdi
callq 0x2030
cmpl $0x0, 0x2c(%r14)
jle 0xc88b
leaq 0x29ac(%rip), %rdi      # 0xe923
callq 0x7d58
movq %rax, 0x10(%rsp)
xorl %ebx, %ebx
jmp 0xc89f
testb %al, %al
je 0xbfa2
movsbl 0x1(%r12,%r14), %ebp
incq %r14
movl %ebp, %edi
callq 0x827b
cmpq (%rsp), %r14
jl 0xbf88
movzbl %bpl, %eax
leal -0x44(%rax), %ecx
cmpl $0x31, %ecx
ja 0xc67f
movabsq $0x2010500020105, %rbx  # imm = 0x2010500020105
btq %rcx, %rbx
jae 0xc67f
movq %r14, %rsi
xorl %r14d, %r14d
leaq 0x28ed(%rip), %r15      # 0xe8c0
movzbl (%r12,%rsi), %eax
leal -0x44(%rax), %ecx
movq %rbx, %rdx
shrq %cl, %rdx
movq %rsi, %rbp
cmpq (%rsp), %rsi
jge 0xc324
cmpb $0x31, %cl
ja 0xc324
testb $0x1, %dl
je 0xc324
cmpl $0x63, %eax
jg 0xc019
cmpl $0x4b, %eax
jg 0xc049
cmpl $0x44, %eax
je 0xc07c
cmpl $0x46, %eax
je 0xc02c
jmp 0xc0b8
cmpl $0x6b, %eax
jg 0xc055
cmpl $0x64, %eax
je 0xc07c
cmpl $0x66, %eax
jne 0xc0b8
movq %r13, %rdi
movq %r15, %rsi
callq 0x2120
testl %eax, %eax
leaq 0x2c7c(%rip), %r14      # 0xecbc
leaq 0x2c76(%rip), %rax      # 0xecbd
jmp 0xc0b4
cmpl $0x4c, %eax
je 0xc099
cmpl $0x55, %eax
je 0xc05f
jmp 0xc0b8
cmpl $0x6c, %eax
je 0xc099
cmpl $0x75, %eax
jne 0xc0b8
movq %r13, %rdi
movq %r15, %rsi
callq 0x2120
testl %eax, %eax
leaq 0x2c3f(%rip), %r14      # 0xecb2
leaq 0x2715(%rip), %rax      # 0xe78f
jmp 0xc0b4
movq %r13, %rdi
movq %r15, %rsi
callq 0x2120
testl %eax, %eax
leaq 0x28d3(%rip), %r14      # 0xe963
leaq 0x28cd(%rip), %rax      # 0xe964
jmp 0xc0b4
movq %r13, %rdi
movq %r15, %rsi
callq 0x2120
testl %eax, %eax
leaq 0x2882(%rip), %r14      # 0xe92f
leaq 0x287c(%rip), %rax      # 0xe930
cmoveq %rax, %r14
movq %r13, %rdi
movq %r15, %rsi
callq 0x2120
testl %eax, %eax
je 0xc0e2
movq %r14, %rdi
leaq 0x2be1(%rip), %rsi      # 0xecb2
callq 0x2120
testl %eax, %eax
je 0xc0f7
movq %r13, %rdi
movq %r14, %rsi
jmp 0xc0fd
movq %r13, %rdi
callq 0x2030
movq %r14, %rdi
callq 0x7d58
movq %rax, %r13
jmp 0xc10d
movq %r14, %rdi
movq %r13, %rsi
callq 0x7fbd
movq %r13, %rdi
movq %rax, %r13
callq 0x2030
movq %rbp, %rsi
incq %rsi
jmp 0xbfd3
movq %r15, %rdi
movl %r13d, %esi
movq %rbp, %rdx
movq %r12, %rcx
callq 0x7020
movq %rax, %r13
movq %rdx, %r14
movq 0x18(%rsp), %r15
cmpb $0x0, 0x40(%rsp)
jne 0xc1af
leaq 0x277e(%rip), %rsi      # 0xe8c0
movq %r13, %rdi
callq 0x2120
testl %eax, %eax
je 0xc1af
movq %r13, 0x78(%rsp)
movq %r14, 0x80(%rsp)
movq 0x30(%rsp), %rdi
callq 0x6921
movq (%rax), %rbx
testq %rbx, %rbx
je 0xc60d
movq 0x10(%rbx), %rdi
cmpq $0x0, 0x8(%rdi)
je 0xc60d
movq %rax, %r15
xorl %ebp, %ebp
movq %rbp, %rsi
callq 0x6c76
movq %rax, %r14
movl 0x28(%rax), %eax
cmpl 0x20(%r15), %eax
je 0xc595
incq %rbp
movq 0x10(%rbx), %rdi
cmpq 0x8(%rdi), %rbp
jb 0xc185
jmp 0xc60d
testb %r15b, %r15b
movl 0x2c(%rsp), %ebx
jne 0xc611
movq 0x48(%rsp), %r14
movq %r14, %rdi
callq 0x20b0
movq %r14, %rdi
xorl %esi, %esi
movq %rax, 0x18(%rsp)
movl %eax, %edx
callq 0xc9b4
cmpl $-0x1, %eax
je 0xc611
movl %eax, %ebp
movq %r12, %r14
movq 0x48(%rsp), %r12
movq %r12, %rdi
xorl %esi, %esi
movl %eax, %edx
callq 0x7db1
movq %rax, %r15
movq %rax, %rdi
movl %ebx, %esi
movq 0x30(%rsp), %rdx
movq %r14, %rcx
callq 0xb680
movq %rax, %r14
leaq 0x26a8(%rip), %rsi      # 0xe8c0
movq %rax, %rdi
callq 0x2120
testl %eax, %eax
jne 0xc23b
movq %r15, %rdi
movl %ebx, %esi
movq 0x30(%rsp), %rdx
movq 0x50(%rsp), %rcx
callq 0x7020
movq %rax, %r14
movq %r14, %rdi
callq 0x2030
incl %ebp
movq %r12, %rdi
movl %ebp, %esi
movq 0x18(%rsp), %rdx
callq 0xc9b4
cmpl $-0x1, %eax
movq 0x50(%rsp), %r12
je 0xc611
movl %eax, %r15d
movl %eax, %edx
subl %ebp, %edx
movq 0x48(%rsp), %rdi
movl %ebp, %esi
callq 0x7db1
movq %rax, %rbp
movq %rax, %rdi
movl %ebx, %esi
movq 0x30(%rsp), %rdx
movq %r12, %rcx
callq 0xb680
movq %rax, %r14
leaq 0x262c(%rip), %rsi      # 0xe8c0
movq %rax, %rdi
callq 0x2120
testl %eax, %eax
jne 0xc2b5
movq %rbp, %rdi
movl %ebx, %esi
movq 0x30(%rsp), %rdx
movq %r12, %rcx
callq 0x7020
movq %rax, %r14
movq %r14, %rdi
callq 0x2030
leal 0x1(%r15), %esi
notl %r15d
addl 0x18(%rsp), %r15d
movq 0x48(%rsp), %rdi
movl %r15d, %edx
callq 0x7db1
movq %rax, %r14
movq %rax, %rdi
movl %ebx, %esi
movq 0x30(%rsp), %rbp
movq %rbp, %rdx
movq %r12, %rcx
callq 0xb680
movq %rax, %r15
leaq 0x25c8(%rip), %rsi      # 0xe8c0
movq %rax, %rdi
callq 0x2120
testl %eax, %eax
jne 0xc317
movq %r14, %rdi
movl %ebx, %esi
movq %rbp, %rdx
movq %r12, %rcx
callq 0x7020
movq %rax, %r15
movq %r15, %rdi
callq 0x2030
jmp 0xc611
cmpq (%rsp), %rbp
jge 0xc33e
cmpb $0x3b, %al
je 0xc33e
movsbl %al, %edi
callq 0x7ed1
testb %al, %al
je 0xc6f8
leaq 0x244a(%rip), %rsi      # 0xe78f
movq %r13, %rdi
callq 0x2120
testl %eax, %eax
jne 0xc675
leaq 0x25c6(%rip), %rsi      # 0xe922
movq %r13, %rdi
callq 0x7fbd
movq %rax, %r14
movq %r13, %rdi
callq 0x2030
xorl %r12d, %r12d
xorl %ebx, %ebx
movq %r14, %r13
jmp 0xc866
movq 0x10(%rsp), %r13
movl $0x0, %ebx
jmp 0xc866
movq 0x60(%rsp), %rdi
callq 0x20b0
movq %rax, %r14
movslq %r14d, %r15
movq $-0x1, %rbx
xorl %r12d, %r12d
movsbl (%rbp,%rbx), %edi
callq 0x7ed1
leaq 0x1(%r12), %rcx
incq %rbx
testb %al, %al
je 0xc3c3
cmpq %r15, %r12
movq %rcx, %r12
jl 0xc3a5
cmpb $0x21, -0x1(%rbp,%rbx)
sete %al
cmpl %r14d, %ebx
setl %dl
andb %al, %dl
movb %dl, 0x38(%rsp)
cmpb $0x1, %dl
jne 0xc3f5
leaq (%rbx,%rbp), %rax
incq %rbx
cmpb $0x21, (%rax)
jne 0xc3f5
leal 0x1(%rcx), %edx
incq %rax
cmpl %r14d, %ecx
movl %edx, %ecx
jl 0xc3e0
movl %ebx, %r13d
addq $-0x2, %r13
movsbl 0x1(%rbp,%r13), %edi
callq 0x7ed1
incq %r13
testb %al, %al
je 0xc418
leal 0x1(%rbx), %eax
cmpl %r14d, %ebx
movl %eax, %ebx
jl 0xc3fc
movq %rbp, %r14
addq %r13, %r14
leaq 0x1788(%rip), %rsi      # 0xdbad
movl $0x2, %edx
movq %r14, %rdi
callq 0x2070
leaq 0x2(%r13), %rbx
testl %eax, %eax
je 0xc454
leaq 0x1779(%rip), %rsi      # 0xdbba
movl $0x2, %edx
movq %r14, %rdi
callq 0x2070
testl %eax, %eax
cmovneq %r13, %rbx
movq $0x0, (%rsp)
movq %rbx, 0x8(%rsp)
movslq %ebx, %rbx
leaq (%rbx,%rbp), %r12
xorl %r13d, %r13d
movsbl (%r12,%r13), %ebp
movl %ebp, %edi
callq 0x7ed1
leaq 0x1(%r13), %r14
testb %al, %al
je 0xc48e
leaq (%rbx,%r13), %rax
incq %rax
movq %r14, %r13
cmpq %r15, %rax
jl 0xc46b
movzbl %bpl, %ecx
movb $0x1, %al
cmpl $0x26, %ecx
je 0xc4a0
cmpl $0x2a, %ecx
jne 0xc4b4
movb $-0x1, %al
addq %r14, %rbx
movq (%rsp), %rcx
addb %al, %cl
movq %rcx, (%rsp)
movq 0x18(%rsp), %rbp
jmp 0xc45c
movslq 0x8(%rsp), %rbx
movq 0x58(%rsp), %r12
addq %rbx, %r12
movsbl (%r12,%r14), %edi
callq 0x7ed1
leaq 0x1(%r14), %rcx
testb %al, %al
je 0xc4de
addq %rbx, %r14
cmpq %r15, %r14
movq %rcx, %r14
jl 0xc4c1
movslq 0x8(%rsp), %rax
leaq (%rax,%rcx), %r12
addq $-0x2, %r12
movq %rcx, 0x58(%rsp)
addq %rcx, %rax
movq 0x18(%rsp), %rcx
leaq (%rcx,%rax), %rbp
addq $-0x3, %rbp
leaq (%rcx,%rax), %r13
addq $-0x2, %r13
movl $0x1, %ebx
incq %r12
movsbl (%r13), %edi
callq 0x825c
incq %rbp
decq %rbx
testb %al, %al
je 0xc52c
incq %r13
cmpq %r15, %r12
jl 0xc50d
movq %rbx, 0x18(%rsp)
movq %r12, %r14
movb (%rbp), %bl
movsbl %bl, %r13d
movl %r13d, %edi
callq 0x7ed1
testb %al, %al
je 0xc553
leaq 0x1(%r14), %r12
incq %rbp
cmpq %r15, %r14
jl 0xc531
cmpq %r15, %r14
jge 0xc725
cmpb $0x3b, %bl
je 0xc725
movl %r13d, %edi
callq 0x7ed1
xorl %r13d, %r13d
movq 0x18(%rsp), %rdx
testq %rdx, %rdx
movq 0x50(%rsp), %rbx
movq 0x30(%rsp), %r15
je 0xc81a
testb %al, %al
jne 0xc73d
jmp 0xc81a
leaq 0x8(%r14), %rdi
leaq 0x78(%rsp), %rsi
callq 0x67b4
testb %al, %al
jne 0xc60d
movl $0x10, %edi
callq 0x2140
movq %rax, %r15
movl $0x10, %edi
callq 0x2140
movq %rax, (%r15)
movq 0x8(%r14), %rdi
callq 0x7d58
movq (%r15), %rcx
movq %rax, (%rcx)
movb 0x10(%r14), %al
movb %al, 0x8(%rcx)
movl $0x10, %edi
callq 0x2140
movq %rax, 0x8(%r15)
movq 0x78(%rsp), %rdi
callq 0x7d58
movq 0x8(%r15), %rcx
movq %rax, (%rcx)
movb 0x80(%rsp), %al
movb %al, 0x8(%rcx)
movq 0x28(%r12), %rdi
movq %r15, %rsi
callq 0x6b96
movl 0x2c(%rsp), %ebx
movq %r13, %rdi
callq 0x2030
movq 0x48(%rsp), %rdi
callq 0x2030
movq (%rsp), %r15
testq %r15, %r15
je 0xc85c
movq %r15, %rdi
movl %ebx, %esi
movq 0x30(%rsp), %r14
movq %r14, %rdx
movq %r12, %rcx
callq 0xb680
leaq 0x2274(%rip), %rsi      # 0xe8c0
movq 0x10(%rsp), %r13
movq %r13, %rdi
callq 0x2120
testl %eax, %eax
jne 0xc66d
movq %r15, %rdi
movl %ebx, %esi
movq %r14, %rdx
movq %r12, %rcx
callq 0x7020
movq %r15, %rdi
callq 0x2030
xorl %r12d, %r12d
xorl %ebx, %ebx
jmp 0xc866
cmpl $0x2e, %eax
jne 0xc7ab
movsbl 0x1(%r12,%r14), %edi
callq 0x827b
testb %al, %al
je 0xc675
leaq 0x1(%r14), %rbx
movsbl (%r12,%rbx), %ebp
movl %ebp, %edi
callq 0x827b
incl %r14d
cmpq (%rsp), %rbx
jge 0xc6b7
incq %rbx
testb %al, %al
jne 0xc69b
movzbl %bpl, %r15d
xorl %eax, %eax
leaq 0x22a0(%rip), %rbx      # 0xe964
cmpl $0x3b, %r15d
je 0xc6e4
cmpl %r14d, 0x38(%rsp)
jle 0xc6e4
movsbl %bpl, %edi
callq 0x7ed1
testb %al, %al
je 0xc92b
xorl %eax, %eax
movq %rbx, %r14
testb %al, %al
jne 0xc675
movq %r13, %rdi
callq 0x2030
movq %r14, %rdi
jmp 0xc707
movq %r13, %rdi
callq 0x2030
leaq 0x21b9(%rip), %rdi      # 0xe8c0
callq 0x7d58
movq %rax, %r13
jmp 0xc675
movq 0x8(%r15), %rdi
movq %r14, %rsi
callq 0x6b96
jmp 0xc675
movq 0x18(%rsp), %rdx
testq %rdx, %rdx
movq 0x50(%rsp), %rbx
movq 0x30(%rsp), %r15
je 0xc817
movq 0x8(%rsp), %rsi
decl %esi
addq 0x58(%rsp), %rsi
negl %edx
movq 0x60(%rsp), %rdi
callq 0x7db1
movq %rax, %r13
jmp 0xc81a
movl %ebx, %eax
subl %r15d, %eax
leal (%r12,%rax), %edx
movq 0x20(%rsp), %r15
movq %r15, %rdi
movl %r14d, %esi
callq 0x7db1
movq 0x38(%rsp), %rcx
movq %rax, 0x48(%rsp)
movl %ebx, %esi
addq %r12, %rsi
cmpl %ecx, %esi
jge 0xc7dd
movl %ecx, %edx
subl %ebx, %edx
subl %r12d, %edx
movq %r15, %rdi
callq 0x7db1
movb $0x1, %cl
movq %r15, %r12
jmp 0xc7e4
xorl %eax, %eax
movb $0x1, %cl
xorl %r15d, %r15d
jmp 0xbe67
leaq 0x2171(%rip), %rdi      # 0xe923
jmp 0xbae0
movq 0x8(%r15), %rdi
movq %r14, %rsi
callq 0x6b96
xorl %r12d, %r12d
movq %rbp, %rdi
movq %r14, %rsi
xorl %edx, %edx
movl %ebx, %ecx
movq %r15, %r8
callq 0xb4db
jmp 0xc678
movb $0x1, %cl
movq %r15, %r12
xorl %eax, %eax
movq 0x8(%rsp), %r14
movq 0x48(%rsp), %r15
jmp 0xbe67
movq 0x8(%r15), %rdi
movq %r14, %rsi
callq 0x6b96
movq %rbp, %rdi
movq %r14, %rsi
movq %r12, %rdx
movl %ebx, %ecx
movq %r15, %r8
callq 0xb4db
jmp 0xc675
xorl %r13d, %r13d
testq %r13, %r13
je 0xc85c
movq %r13, %rdi
callq 0x6a8d
testb %al, %al
jne 0xc85c
movq %r15, %rdi
movq %r13, %rsi
callq 0x699d
testq %r15, %r15
je 0xc851
movq %rax, %r14
testq %rax, %rax
je 0xc851
movl 0x2c(%rsp), %eax
cmpl %eax, 0x20(%r14)
jle 0xc8e9
movq (%rbx), %rdi
movq %r13, %rsi
callq 0x6b96
xorl %r12d, %r12d
xorl %ebx, %ebx
movq 0x10(%rsp), %r13
movq 0x20(%rsp), %rdi
callq 0x2030
movzbl %bl, %edx
orq %r12, %rdx
movq %r13, %rax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%r12), %rdi
callq 0x7d58
movq %rax, 0x10(%rsp)
movb 0x10(%r12), %bl
movq 0x48(%r15), %r13
testq %r13, %r13
je 0xc8be
movq %r13, %rdi
movq %r12, %rsi
callq 0x6ce2
movq %r13, %rdi
movq %rax, %rsi
callq 0x6c87
movq %rbp, %rdi
movq %r14, %rsi
movq %r12, %rdx
movl 0x2c(%rsp), %ecx
movq %r15, %r8
callq 0xb4db
movq %r14, %rdi
callq 0xb661
xorl %r12d, %r12d
jmp 0xc861
xorl %eax, %eax
xorl %ecx, %ecx
jmp 0xbe62
movq 0x40(%rbx), %rdi
testq %rdi, %rdi
je 0xc90b
movq %r14, %rsi
callq 0x6ce2
cmpl $-0x1, %eax
je 0xc90b
movq 0x40(%rbx), %rdi
movslq %eax, %rsi
callq 0x6c87
cmpb $0x0, 0x38(%rsp)
movq 0x10(%rsp), %r13
je 0xc97f
movq %r13, %rdi
callq 0x2030
leaq 0x1ffd(%rip), %rdi      # 0xe923
jmp 0xc707
movb $0x1, %al
xorl %r14d, %r14d
addl $-0x44, %r15d
cmpl $0x28, %r15d
ja 0xc6e7
movabsq $0x100000001, %rcx      # imm = 0x100000001
btq %r15, %rcx
jb 0xc6e2
movabsq $0x400000004, %rcx      # imm = 0x400000004
btq %r15, %rcx
jb 0xc9a6
movabsq $0x10000000100, %rcx    # imm = 0x10000000100
btq %r15, %rcx
jae 0xc6e7
leaq 0x1fe2(%rip), %r14      # 0xe95f
jmp 0xc9ad
movq (%rsp), %rbx
addb 0x18(%r14), %bl
js 0xc675
movq %r13, %rdi
callq 0x2030
movq 0x10(%r14), %rdi
callq 0x7d58
movq %rax, %r13
jmp 0xb8f0
leaq 0x2310(%rip), %r14      # 0xecbd
xorl %eax, %eax
jmp 0xc6e7