// File: /workspace/github_c_makefile_star2_O3/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, 0x50(%rsp)
movl %esi, 0x14(%rsp)
movq %rdi, %rbx
leaq 0x3109(%rip), %rdi      # 0xe8b0
callq 0x7dc1
movq %rax, %r15
movq %rbx, %rdi
callq 0x7c54
movq %rax, %rbx
movq %rax, %rdi
callq 0x20b0
movq %rax, %r13
movq %rbx, %rdi
movl %r13d, %esi
callq 0x843c
testq %rax, %rax
movq %rax, 0x18(%rsp)
movq %r15, 0x8(%rsp)
movq %r12, 0x40(%rsp)
je 0xb7fd
movq %rax, %r14
movq %rbx, %rdi
callq 0x2030
movq %r14, %rdi
callq 0x20b0
movq %rax, %r13
movq %r14, %rbx
movq %r13, 0x38(%rsp)
movslq %r13d, %rax
movq %rax, 0x28(%rsp)
leaq -0x1(%rbx), %rax
movq %rax, 0x48(%rsp)
movl $0x1, %eax
movq $-0x1, %r14
movl $0xfffffffe, %r12d      # imm = 0xFFFFFFFE
xorl %ebp, %ebp
movq %rbx, (%rsp)
movq %rbx, 0x20(%rsp)
movq %rbp, %rbx
movq %rax, %r15
movq (%rsp), %rax
movsbl (%rax,%rbp), %r13d
movl %r13d, %edi
callq 0x7f3a
movq %r14, %rcx
incq %rbp
incq %r14
incq 0x20(%rsp)
incq 0x48(%rsp)
incl %r12d
testb %al, %al
je 0xb86c
leaq 0x1(%r15), %rax
cmpq 0x28(%rsp), %rbx
jl 0xb830
movzbl %r13b, %r13d
cmpl $0x22, %r13d
movq %rcx, 0x88(%rsp)
je 0xb983
cmpl $0x27, %r13d
je 0xb918
cmpl $0x28, %r13d
jne 0xb999
movslq %r15d, %rax
movq 0x38(%rsp), %rbx
movq %rax, %r13
movq (%rsp), %rax
movsbl (%rax,%r15), %edi
callq 0x7f3a
leaq 0x1(%r15), %rcx
testb %al, %al
je 0xb8c3
leaq 0x1(%r13), %rax
cmpl %r15d, %ebx
movq %rcx, %r15
jg 0xb89e
leaq -0x1(%rcx), %r12
xorl %r14d, %r14d
movq (%rsp), %rdi
movq %r13, %rbp
movb -0x1(%rdi,%rcx), %al
incl %r14d
leaq 0x1(%rcx), %rbx
cmpb $0x29, %al
je 0xb8ef
decl %ecx
leaq 0x1(%rbp), %r13
cmpl %ecx, 0x38(%rsp)
movq %rbx, %rcx
jg 0xb8ce
cmpb $0x29, %al
je 0xbcd4
movq 0x18(%rsp), %rax
testq %rax, %rax
movq 0x8(%rsp), %r14
je 0xb909
movq %rax, %rdi
callq 0x2030
xorl %ebx, %ebx
xorl %r13d, %r13d
jmp 0xc99e
movq (%rsp), %rdi
movl $0x27, %esi
callq 0x7ff1
cmpl %eax, %ebx
je 0xb999
cltq
incq %rax
movq (%rsp), %r15
movq 0x28(%rsp), %r12
movq %rax, %rbx
movb (%r15,%rax), %r14b
movsbl %r14b, %ebp
movl %ebp, %edi
callq 0x7f3a
testb %al, %al
je 0xb957
leaq 0x1(%rbx), %rax
cmpq %r12, %rbx
jl 0xb938
cmpb $0x3b, %r14b
jne 0xc11f
movq 0x8(%rsp), %rdi
callq 0x2030
leaq 0x2f84(%rip), %rdi      # 0xe8f6
callq 0x7dc1
movq %rax, 0x8(%rsp)
movb $0x1, %bl
jmp 0xc7dc
movq (%rsp), %rdi
movl $0x22, %esi
callq 0x7ff1
cmpl %eax, %ebx
jne 0xbc78
movl %r13d, 0x64(%rsp)
movq (%rsp), %rax
leaq (%rax,%rbx), %rcx
movq %rcx, 0x80(%rsp)
movl %ebx, %ecx
addq %rax, %rcx
movq %rcx, 0x58(%rsp)
xorl %r13d, %r13d
cmpq $0x18, %r13
je 0xbaa6
leaq 0x7404(%rip), %rax      # 0x12dd0
movq (%r13,%rax), %r15
movq %r15, %rdi
callq 0x20b0
movq 0x58(%rsp), %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x2070
addq $0x8, %r13
testl %eax, %eax
jne 0xb9bb
movq %r15, %rdi
callq 0x20b0
movq %rax, 0x78(%rsp)
addl %r14d, %eax
movslq %eax, %rcx
movq (%rsp), %rax
movq %rcx, 0x30(%rsp)
addq %rcx, %rax
movq %rax, 0x90(%rsp)
xorl %r15d, %r15d
movq 0x30(%rsp), %rax
leaq (%rax,%r15), %r13
movq 0x90(%rsp), %rax
movb (%rax,%r15), %bl
movsbl %bl, %edi
callq 0x7f3a
incq %r15
cmpq 0x28(%rsp), %r13
jge 0xba46
testb %al, %al
jne 0xba1b
movq 0x78(%rsp), %r13
addl %r13d, %r12d
addq %r15, %r12
cmpb $0x28, %bl
jne 0xbaa3
movq (%rsp), %rbx
movq %rbx, %rdi
movl $0x29, %esi
callq 0x7ff1
cmpl %r12d, %eax
jle 0xbaa3
addl %r13d, %r14d
addl %r15d, %r14d
addl %r13d, %ebp
subl %ebp, %eax
subl %r15d, %eax
incl %eax
movq %rbx, %rdi
movl %r14d, %esi
movl %eax, %edx
callq 0x7e1a
movq %rax, %r14
movb $0x1, %bl
movq $0x0, 0x30(%rsp)
movb $0x1, %al
movq 0x28(%rsp), %r12
jmp 0xbe15
movl %r12d, %ebx
movslq %ebx, %r14
movq (%rsp), %r15
addq %r15, %r14
leaq 0x2d14(%rip), %rsi      # 0xe7cb
movl $0x4, %edx
movq %r14, %rdi
callq 0x2070
testl %eax, %eax
movq 0x28(%rsp), %r12
movq 0x38(%rsp), %r13
je 0xbbce
leaq 0x2d20(%rip), %rsi      # 0xe7fd
movl $0x6, %edx
movq %r14, %rdi
callq 0x2070
testl %eax, %eax
je 0xbdd5
leaq 0x2cb3(%rip), %rsi      # 0xe7ac
movl $0x4, %edx
movq %r14, %rdi
callq 0x2070
testl %eax, %eax
je 0xc099
leaq 0x2cab(%rip), %rsi      # 0xe7c0
movl $0x7, %edx
movq %r14, %rdi
callq 0x2070
testl %eax, %eax
je 0xc159
cmpb $0x66, (%r14)
movq 0x20(%rsp), %r13
jne 0xc1ae
cmpb $0x6f, 0x1(%r14)
jne 0xc1ae
cmpb $0x72, 0x2(%r14)
jne 0xc1ae
addl $0x3, %ebx
movslq %ebx, %r14
movq %r14, %r15
movq (%rsp), %rax
movb (%rax,%r14), %bl
movsbl %bl, %edi
callq 0x7f3a
incq %r14
cmpq %r12, %r15
jge 0xbb74
testb %al, %al
jne 0xbb55
cmpb $0x28, %bl
jne 0xc1ae
leal -0x1(%r14), %ebx
movq (%rsp), %rdi
movl $0x29, %esi
callq 0x7ff1
cmpl %ebx, %eax
jle 0xc1ae
subl %r14d, %eax
movq (%rsp), %rdi
movl %r14d, %esi
movl %eax, %edx
callq 0x7e1a
movq %rax, %r14
movq %rax, %rdi
movl $0x3b, %esi
callq 0x7e70
cmpl $0x1, %eax
ja 0xcafd
movq %r14, %rdi
callq 0x2030
jmp 0xc1ae
leal 0x4(%rbx), %eax
movslq %eax, %rcx
xorl %ebp, %ebp
movq %rcx, %r14
movsbl (%r15,%rcx), %edi
callq 0x7f3a
leaq 0x1(%r14), %rcx
decl %ebp
cmpq %r12, %r14
jge 0xbbf2
testb %al, %al
jne 0xbbd6
cmpl $-0x1, %ebp
movq 0x20(%rsp), %r13
je 0xc1ae
movq (%rsp), %rax
cmpb $0x69, -0x1(%rax,%rcx)
jne 0xc1ae
movq (%rsp), %rax
cmpb $0x66, (%rax,%rcx)
jne 0xc1ae
subl %ebp, %ebx
addl $0x5, %ebx
movslq %ebx, %r14
movq %r14, %r15
movq (%rsp), %rax
movb (%rax,%r14), %bl
movsbl %bl, %edi
callq 0x7f3a
incq %r14
cmpq %r12, %r15
jge 0xbc44
testb %al, %al
jne 0xbc25
cmpb $0x28, %bl
jne 0xc1ae
leal -0x1(%r14), %ebx
movq (%rsp), %rdi
movl $0x29, %esi
callq 0x7ff1
cmpl %ebx, %eax
jle 0xc1ae
subl %r14d, %eax
movq (%rsp), %rdi
movl %r14d, %esi
movl %eax, %edx
jmp 0xc194
cltq
incq %rax
movq (%rsp), %r15
movq 0x28(%rsp), %r12
movq %rax, %rbx
movb (%r15,%rax), %r14b
movsbl %r14b, %ebp
movl %ebp, %edi
callq 0x7f3a
testb %al, %al
je 0xbca5
leaq 0x1(%rbx), %rax
cmpq %r12, %rbx
jl 0xbc86
cmpb $0x3b, %r14b
jne 0xc13c
movq 0x8(%rsp), %rdi
callq 0x2030
leaq 0x2c36(%rip), %rdi      # 0xe8f6
callq 0x7dc1
movq %rax, 0x8(%rsp)
movb $0x1, %bl
movb $0x1, %r13b
jmp 0xc982
leaq -0x1(%rbx), %rax
movq %rax, 0x20(%rsp)
cltq
movq %rax, %r13
movq (%rsp), %rax
movb (%rax,%r13), %al
movsbl %al, %r15d
movl %r15d, %edi
callq 0x7f3a
testb %al, %al
je 0xbd05
leaq 0x1(%r13), %rax
cmpq 0x28(%rsp), %r13
jl 0xbcdf
cmpq 0x28(%rsp), %r13
jge 0xbf05
movl %r15d, %edi
callq 0x7f3a
cmpb $0x29, %r15b
je 0xbf05
testb %al, %al
jne 0xbf05
movq (%rsp), %r15
movsbl (%r15,%rbp), %edi
callq 0x7f3a
decl %r14d
testq %rbp, %rbp
jle 0xbd47
decq %rbp
testb %al, %al
jne 0xbd2e
movq 0x8(%rsp), %rdi
callq 0x2030
movq %r15, %rdi
movl %r12d, %esi
movl %r14d, %edx
callq 0x7e1a
movq %rax, %r12
movq %rax, %rdi
movl $0x2a, %esi
callq 0x7e70
movl %eax, %r13d
movq %r12, %rdi
movl $0x2a, %esi
movl $0x1, %edx
movl $0x1, %ecx
callq 0x7ea8
subl %eax, %r14d
movq %r12, 0x8(%rsp)
movb $0x0, (%r12,%r14)
movq 0x38(%rsp), %rdx
subl %ebx, %edx
addl $0x2, %edx
movq %r15, %rdi
movq 0x20(%rsp), %rsi
callq 0x7e1a
movq %rax, %r14
movq %rax, %rdi
movl 0x14(%rsp), %esi
movq 0x50(%rsp), %rdx
movq 0x40(%rsp), %rcx
callq 0xb780
movq %r14, %rdi
callq 0x2030
xorl %ebx, %ebx
jmp 0xc982
leal 0x6(%rbx), %eax
movslq %eax, %r14
addl $0x5, %ebx
movsbl (%r15,%r14), %edi
callq 0x7f3a
incl %ebx
cmpq %r12, %r14
jge 0xbdf6
incq %r14
testb %al, %al
jne 0xbdde
movl %r13d, %edx
subl %ebx, %edx
movq %r15, %rdi
movl %ebx, %esi
callq 0x7e1a
movq %rax, %r14
movb $0x1, %al
movq $0x0, 0x30(%rsp)
xorl %ebx, %ebx
movq 0x20(%rsp), %r13
testq %r14, %r14
je 0xc1ae
movq %rax, 0x48(%rsp)
movq %r14, %rdi
movl 0x14(%rsp), %r12d
movl %r12d, %esi
movq 0x50(%rsp), %r13
movq %r13, %rdx
movq 0x40(%rsp), %rbp
movq %rbp, %rcx
callq 0xb780
movq %rdx, %r15
leaq 0x2a5e(%rip), %rsi      # 0xe8b0
movq %rax, 0x28(%rsp)
movq %rax, %rdi
callq 0x2120
testl %eax, %eax
movq %r14, 0x20(%rsp)
jne 0xbe81
movq %r14, %rdi
movl %r12d, %esi
movq %r13, %rdx
movq %rbp, %rcx
callq 0x70b0
movq %rax, 0x28(%rsp)
movq %rdx, %r15
movq 0x30(%rsp), %r12
testb %bl, %bl
jne 0xbf22
leaq 0x2a1b(%rip), %rsi      # 0xe8b0
movq 0x28(%rsp), %rdi
callq 0x2120
testl %eax, %eax
je 0xbf22
movq 0x28(%rsp), %rax
movq %rax, 0x68(%rsp)
movq %r15, 0x70(%rsp)
movq %r13, %rdi
callq 0x69db
movq (%rax), %rbx
testq %rbx, %rbx
je 0xc90a
movq 0x10(%rbx), %rdi
cmpq $0x0, 0x8(%rdi)
je 0xc90a
movq %rax, %r14
xorl %r15d, %r15d
movq %r15, %rsi
callq 0x6d0c
movq %rax, %rbp
movl 0x28(%rax), %eax
cmpl 0x20(%r14), %eax
je 0xc891
incq %r15
movq 0x10(%rbx), %rdi
cmpq 0x8(%rdi), %r15
jb 0xbedb
jmp 0xc90a
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
jne 0xbf13
movq (%rsp), %rdi
callq 0x2030
xorl %ebx, %ebx
xorl %r13d, %r13d
jmp 0xc999
cmpb $0x0, 0x48(%rsp)
jne 0xc90a
movq 0x20(%rsp), %rbx
movq %rbx, %rdi
callq 0x20b0
movq %rbx, %rdi
xorl %esi, %esi
movq %rax, 0x48(%rsp)
movl %eax, %edx
callq 0xcb4d
cmpl $-0x1, %eax
je 0xc90a
movl %eax, %ebp
movq 0x20(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
movl %eax, %edx
callq 0x7e1a
movq %rax, %r14
movq %rax, %rdi
movl 0x14(%rsp), %esi
movq %r13, %rdx
movq 0x40(%rsp), %rcx
callq 0xb780
movq %rax, %r15
leaq 0x2928(%rip), %rsi      # 0xe8b0
movq %rax, %rdi
callq 0x2120
testl %eax, %eax
jne 0xbfab
movq %r14, %rdi
movl 0x14(%rsp), %esi
movq %r13, %rdx
movq 0x40(%rsp), %rcx
callq 0x70b0
movq %rax, %r15
movq %r15, %rdi
callq 0x2030
incl %ebp
movq %rbx, %rdi
movl %ebp, %esi
movq 0x48(%rsp), %rdx
callq 0xcb4d
cmpl $-0x1, %eax
je 0xc90a
movl %eax, %r14d
movl %eax, %edx
subl %ebp, %edx
movq 0x20(%rsp), %r12
movq %r12, %rdi
movl %ebp, %esi
callq 0x7e1a
movq %rax, %r15
movq %rax, %rdi
movl 0x14(%rsp), %esi
movq %r13, %rdx
movq 0x40(%rsp), %rbx
movq %rbx, %rcx
callq 0xb780
movq %rax, %rbp
leaq 0x28a9(%rip), %rsi      # 0xe8b0
movq %rax, %rdi
callq 0x2120
testl %eax, %eax
jne 0xc028
movq %r15, %rdi
movl 0x14(%rsp), %esi
movq %r13, %rdx
movq %rbx, %rcx
callq 0x70b0
movq %rax, %rbp
movq %rbp, %rdi
callq 0x2030
leal 0x1(%r14), %esi
notl %r14d
addl 0x48(%rsp), %r14d
movq %r12, %rdi
movl %r14d, %edx
callq 0x7e1a
movq %rax, %r14
movq %rax, %rdi
movl 0x14(%rsp), %esi
movq %r13, %rdx
movq %rbx, %rcx
callq 0xb780
movq %rax, %r15
leaq 0x284a(%rip), %rsi      # 0xe8b0
movq %rax, %rdi
callq 0x2120
testl %eax, %eax
jne 0xc087
movq %r14, %rdi
movl 0x14(%rsp), %esi
movq %r13, %rdx
movq %rbx, %rcx
callq 0x70b0
movq %rax, %r15
movq %r15, %rdi
callq 0x2030
movq 0x30(%rsp), %r12
jmp 0xc90a
addl $0x4, %ebx
movslq %ebx, %rbx
movq %rbx, %r14
movsbl (%r15,%rbx), %edi
callq 0x7f3a
incq %rbx
cmpq %r12, %r14
jge 0xc0b8
testb %al, %al
jne 0xc09f
leal -0x1(%rbx), %r14d
cmpl %r14d, %r13d
movq 0x20(%rsp), %r13
jle 0xc1ae
movl %r14d, %ebp
movslq %ebp, %rcx
movq (%rsp), %rax
addq %rcx, %rax
xorl %r15d, %r15d
leaq (%rcx,%r15), %rsi
movb (%rax,%r15), %dl
incq %r15
cmpq %r12, %rsi
jge 0xc0ef
cmpb $0x3a, %dl
jne 0xc0da
cmpb $0x3a, %dl
jne 0xc111
leaq (%r15,%rax), %rsi
decq %rsi
movq (%rsp), %rdi
movq 0x38(%rsp), %rdx
callq 0x82dc
testb %al, %al
je 0xc823
addl %r15d, %ebp
cmpl 0x38(%rsp), %ebp
jl 0xc0cd
jmp 0xc1ae
movl %ebp, %edi
callq 0x7f3a
testb %al, %al
jne 0xb961
cmpq %r12, %rbx
jl 0xc7da
jmp 0xb961
movl %ebp, %edi
callq 0x7f3a
testb %al, %al
jne 0xbcaf
cmpq %r12, %rbx
jl 0xc7da
jmp 0xbcaf
addl $0x7, %ebx
movslq %ebx, %rsi
movq 0x20(%rsp), %r13
movq %rsi, %r14
movb (%r15,%rsi), %bl
movsbl %bl, %edi
callq 0x7f3a
leaq 0x1(%r14), %rsi
cmpq %r12, %r14
jge 0xc180
testb %al, %al
jne 0xc164
cmpb $0x3a, %bl
jne 0xc1ae
movq 0x38(%rsp), %rax
movl %eax, %edx
subl %esi, %edx
jle 0xc1ae
movq (%rsp), %rdi
callq 0x7e1a
movq %rax, %r14
movb $0x1, %bl
movq $0x0, 0x30(%rsp)
movb $0x1, %al
jmp 0xbe1a
movl 0x64(%rsp), %ebx
movsbl %bl, %edi
callq 0x82c6
cmpl $0x2e, %ebx
je 0xc281
testb %al, %al
jne 0xc281
movq 0x40(%rsp), %rbp
cmpq $0x0, (%rbp)
je 0xc979
movl 0x14(%rsp), %r12d
movl %r12d, %edi
movq 0x80(%rsp), %rsi
callq 0xb239
testq %rax, %rax
movq (%rsp), %r15
je 0xc436
movq %rax, %r14
movq 0x50(%rsp), %r13
testq %r13, %r13
je 0xc6d1
movq (%r14), %rsi
movq %r13, %rdi
xorl %edx, %edx
callq 0x69f9
testq %rax, %rax
je 0xc784
movq %rax, %rbx
movq %r13, %rdi
callq 0x69cf
movq (%r14), %rsi
movq %rax, %rdi
callq 0x6ac5
cmpl %r12d, 0x28(%rbx)
jl 0xc253
testq %rax, %rax
je 0xc86a
cmpl %r12d, 0x28(%rax)
jge 0xc86a
movq 0x8(%rsp), %rdi
callq 0x2030
cmpl $0x0, 0x2c(%r14)
jle 0xc9c0
leaq 0x26a4(%rip), %rdi      # 0xe913
callq 0x7dc1
movq %rax, 0x8(%rsp)
xorl %r13d, %r13d
jmp 0xc9d2
movq (%rsp), %r15
movq 0x88(%rsp), %rdx
movsbl 0x1(%r15,%rdx), %r14d
incq %rdx
movl %r14d, %edi
movq %rdx, %rbx
callq 0x82c6
movq %rbx, %rdx
cmpq %r12, %rbx
jge 0xc2ad
testb %al, %al
jne 0xc28d
movzbl %r14b, %eax
leal -0x44(%rax), %ecx
cmpl $0x31, %ecx
movq 0x38(%rsp), %rbp
ja 0xc634
movabsq $0x2010500020105, %rbx  # imm = 0x2010500020105
btq %rcx, %rbx
jae 0xc634
xorl %r14d, %r14d
leaq 0x25d0(%rip), %r12      # 0xe8b0
leaq 0x29bb(%rip), %r13      # 0xeca2
movzbl (%r15,%rdx), %eax
leal -0x44(%rax), %ecx
cmpl $0x31, %ecx
ja 0xc7a7
btq %rcx, %rbx
jae 0xc7a7
cmpq 0x28(%rsp), %rdx
jge 0xc7c2
cmpl $0x63, %eax
jg 0xc32e
cmpl $0x4b, %eax
movq 0x8(%rsp), %r15
movq %rdx, %rbp
jg 0xc366
cmpl $0x44, %eax
je 0xc395
cmpl $0x46, %eax
je 0xc349
jmp 0xc3d1
cmpl $0x6b, %eax
movq 0x8(%rsp), %r15
movq %rdx, %rbp
jg 0xc372
cmpl $0x64, %eax
je 0xc395
cmpl $0x66, %eax
jne 0xc3d1
movq %r15, %rdi
movq %r12, %rsi
callq 0x2120
testl %eax, %eax
leaq 0x294f(%rip), %r14      # 0xecac
leaq 0x2949(%rip), %rax      # 0xecad
jmp 0xc3cd
cmpl $0x4c, %eax
je 0xc3b2
cmpl $0x55, %eax
je 0xc37c
jmp 0xc3d1
cmpl $0x6c, %eax
je 0xc3b2
cmpl $0x75, %eax
jne 0xc3d1
movq %r15, %rdi
movq %r12, %rsi
callq 0x2120
testl %eax, %eax
movq %r13, %r14
leaq 0x23f9(%rip), %rax      # 0xe78c
jmp 0xc3cd
movq %r15, %rdi
movq %r12, %rsi
callq 0x2120
testl %eax, %eax
leaq 0x25aa(%rip), %r14      # 0xe953
leaq 0x25a4(%rip), %rax      # 0xe954
jmp 0xc3cd
movq %r15, %rdi
movq %r12, %rsi
callq 0x2120
testl %eax, %eax
leaq 0x2559(%rip), %r14      # 0xe91f
leaq 0x2553(%rip), %rax      # 0xe920
cmoveq %rax, %r14
movq %r15, %rdi
movq %r12, %rsi
callq 0x2120
testl %eax, %eax
je 0xc3f7
movq %r14, %rdi
movq %r13, %rsi
callq 0x2120
testl %eax, %eax
je 0xc40c
movq %r15, %rdi
movq %r14, %rsi
jmp 0xc412
movq %r15, %rdi
callq 0x2030
movq %r14, %rdi
callq 0x7dc1
movq %rax, %r15
jmp 0xc422
movq %r14, %rdi
movq %r15, %rsi
callq 0x8026
movq %r15, %rdi
movq %rax, %r15
callq 0x2030
movq %rbp, %rdx
incq %rdx
movq %r15, 0x8(%rsp)
movq (%rsp), %r15
jmp 0xc2e7
movq 0x58(%rsp), %rdi
callq 0x20b0
movq %rax, %r14
movslq %r14d, %r12
movq $-0x1, %rbx
xorl %r15d, %r15d
movsbl (%r13,%rbx), %edi
callq 0x7f3a
leaq 0x1(%r15), %rcx
incq %rbx
testb %al, %al
je 0xc46e
cmpq %r12, %r15
movq %rcx, %r15
jl 0xc450
cmpb $0x21, -0x1(%r13,%rbx)
sete %al
cmpl %r14d, %ebx
setl %dl
andb %al, %dl
movb %dl, 0x30(%rsp)
cmpb $0x1, %dl
jne 0xc4a3
leaq (%rbx,%r13), %rax
incq %rbx
cmpb $0x21, (%rax)
jne 0xc4a1
leal 0x1(%rcx), %edx
incq %rax
cmpl %r14d, %ecx
movl %edx, %ecx
jl 0xc48c
movl %ebx, %ebx
leaq -0x1(%rbx), %r15
movsbl (%r13,%r15), %edi
callq 0x7f3a
incq %r15
testb %al, %al
je 0xc4c3
leal 0x1(%rbx), %eax
cmpl %r14d, %ebx
movl %eax, %ebx
jl 0xc4a7
movzbl -0x1(%r13,%r15), %eax
cmpl $0x2d, %eax
je 0xc80d
cmpl $0x2b, %eax
jne 0xc4e4
movl $0x1, %eax
cmpb $0x2b, (%r13,%r15)
je 0xc4eb
movq $-0x1, %rax
addq %r15, %rax
movq $0x0, 0x28(%rsp)
movq %rax, 0x38(%rsp)
movslq %eax, %r15
addq %r15, %r13
xorl %ebp, %ebp
movsbl (%r13,%rbp), %r14d
movl %r14d, %edi
callq 0x7f3a
leaq 0x1(%rbp), %rbx
testb %al, %al
je 0xc529
leaq (%r15,%rbp), %rax
incq %rax
movq %rbx, %rbp
cmpq %r12, %rax
jl 0xc504
movzbl %r14b, %ecx
movb $0x1, %al
cmpl $0x26, %ecx
movq 0x20(%rsp), %r13
je 0xc540
cmpl $0x2a, %ecx
jne 0xc554
movb $-0x1, %al
addq %rbx, %r15
movq 0x28(%rsp), %rcx
addb %al, %cl
movq %rcx, 0x28(%rsp)
movq %r15, %rax
jmp 0xc4f7
movslq 0x38(%rsp), %r14
movq 0x48(%rsp), %r15
addq %r14, %r15
movsbl (%r15,%rbx), %edi
callq 0x7f3a
leaq 0x1(%rbx), %rcx
testb %al, %al
je 0xc57e
addq %r14, %rbx
cmpq %r12, %rbx
movq %rcx, %rbx
jl 0xc561
movslq 0x38(%rsp), %rax
leaq (%rax,%rcx), %r13
addq $-0x2, %r13
movq %rcx, 0x48(%rsp)
addq %rcx, %rax
movq 0x20(%rsp), %rcx
leaq (%rcx,%rax), %rbx
addq $-0x3, %rbx
leaq (%rcx,%rax), %r15
addq $-0x2, %r15
movl $0x1, %r14d
incq %r13
movsbl (%r15), %edi
callq 0x82a7
incq %rbx
decq %r14
testb %al, %al
je 0xc5cc
incq %r15
cmpq %r12, %r13
jl 0xc5ae
movq %r14, 0x20(%rsp)
movq %r13, %r14
movb (%rbx), %bpl
movsbl %bpl, %r15d
movl %r15d, %edi
callq 0x7f3a
testb %al, %al
je 0xc5f3
leaq 0x1(%r14), %r13
incq %rbx
cmpq %r12, %r14
jl 0xc5d1
cmpq %r12, %r14
jge 0xc6e2
cmpb $0x3b, %bpl
je 0xc6e2
movl %r15d, %edi
callq 0x7f3a
xorl %ebx, %ebx
movq 0x20(%rsp), %rdx
testq %rdx, %rdx
movq 0x18(%rsp), %r14
je 0xca16
testb %al, %al
movq (%rsp), %r15
jne 0xc6f9
jmp 0xc974
cmpl $0x2e, %eax
jne 0xc778
movsbl 0x1(%r15,%rdx), %edi
movq %rdx, %r12
callq 0x82c6
testb %al, %al
movq 0x18(%rsp), %r14
je 0xc972
movq %r14, %r13
leaq 0x1(%r12), %rbx
movq %r12, %rcx
movsbl (%r15,%rbx), %r12d
movl %r12d, %edi
movq %rcx, %r14
callq 0x82c6
movq %r14, %rcx
incl %ecx
cmpq 0x28(%rsp), %rbx
jge 0xc686
incq %rbx
testb %al, %al
jne 0xc663
movzbl %r12b, %r15d
leaq 0x22c3(%rip), %r14      # 0xe954
cmpl $0x3b, %r15d
je 0xc6ac
cmpl %ecx, %ebp
jle 0xc6ac
movsbl %r12b, %edi
callq 0x7f3a
testb %al, %al
je 0xca52
movq (%rsp), %r15
movq 0x8(%rsp), %rdi
callq 0x2030
movq %r14, %rdi
callq 0x7dc1
movq %rax, 0x8(%rsp)
xorl %ebx, %ebx
movq %r13, %r14
jmp 0xc974
movq 0x8(%rbp), %rdi
movq %r14, %rsi
callq 0x6c26
jmp 0xc7da
movq 0x20(%rsp), %rdx
testq %rdx, %rdx
movq (%rsp), %r15
movq 0x18(%rsp), %r14
je 0xc972
movq 0x38(%rsp), %rsi
decl %esi
addq 0x48(%rsp), %rsi
negl %edx
movq 0x58(%rsp), %rdi
callq 0x7e1a
testq %rax, %rax
je 0xc972
movq %rax, %r13
movq %rax, %rdi
callq 0x6b1c
testb %al, %al
jne 0xc972
movq %r14, %r12
movq 0x50(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x6a63
testq %rbx, %rbx
je 0xc75b
movq %rax, %r14
testq %rax, %rax
je 0xc75b
movl 0x14(%rsp), %eax
cmpl %eax, 0x20(%r14)
jle 0xcaaa
movq 0x40(%rsp), %rax
movq (%rax), %rdi
movq %r13, %rsi
callq 0x6c26
xorl %ebx, %ebx
xorl %r13d, %r13d
movq %r12, %r14
jmp 0xc987
leaq 0x2194(%rip), %rdi      # 0xe913
jmp 0xb972
movq 0x8(%rbp), %rdi
movq %r14, %rsi
callq 0x6c26
xorl %ebx, %ebx
movq %r13, %rdi
movq %r14, %rsi
xorl %edx, %edx
movl %r12d, %ecx
movq %rbp, %r8
callq 0xb5da
jmp 0xc7dc
cmpq 0x28(%rsp), %rdx
jge 0xc7c2
cmpb $0x3b, %al
je 0xc7c2
movsbl %al, %edi
callq 0x7f3a
testb %al, %al
je 0xca32
leaq 0x1fc3(%rip), %rsi      # 0xe78c
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x2120
testl %eax, %eax
je 0xc7e4
xorl %ebx, %ebx
xorl %r13d, %r13d
jmp 0xc982
leaq 0x2127(%rip), %rsi      # 0xe912
movq %rbx, %rdi
callq 0x8026
movq %rax, %r14
movq %rbx, %rdi
callq 0x2030
xorl %ebx, %ebx
xorl %r13d, %r13d
movq %r14, 0x8(%rsp)
jmp 0xc982
movl $0x1, %eax
cmpb $0x2d, (%r13,%r15)
jne 0xc4e4
jmp 0xc4eb
movl %ebp, %eax
subl %ebx, %eax
leal (%r15,%rax), %edx
movq (%rsp), %r13
movq %r13, %rdi
movl %r14d, %esi
callq 0x7e1a
movq %rax, %r14
movl %ebp, %esi
addq %r15, %rsi
movb $0x1, %bl
movq 0x38(%rsp), %rax
cmpl %eax, %esi
jge 0xca22
movl %eax, %edx
subl %ebp, %edx
subl %r15d, %edx
movq %r13, %rdi
callq 0x7e1a
movq %rax, 0x30(%rsp)
jmp 0xca2b
movq 0x8(%rbp), %rdi
movq %r14, %rsi
callq 0x6c26
movq 0x50(%rsp), %rdi
movq %r14, %rsi
movq %rbx, %rdx
movl %r12d, %ecx
movq %rbp, %r8
callq 0xb5da
jmp 0xc7da
leaq 0x8(%rbp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x686e
testb %al, %al
jne 0xc90a
movl $0x10, %edi
callq 0x2140
movq %rax, %r14
movl $0x10, %edi
callq 0x2140
movq %rax, %r15
movq %rax, (%r14)
movq 0x8(%rbp), %rdi
callq 0x7dc1
movq %rax, (%r15)
movb 0x10(%rbp), %al
movb %al, 0x8(%r15)
movl $0x10, %edi
callq 0x2140
movq %rax, %r15
movq %rax, 0x8(%r14)
movq 0x68(%rsp), %rdi
callq 0x7dc1
movq %rax, (%r15)
movb 0x70(%rsp), %al
movb %al, 0x8(%r15)
movq 0x40(%rsp), %rax
movq 0x28(%rax), %rdi
movq %r14, %rsi
callq 0x6c26
movq 0x28(%rsp), %rdi
callq 0x2030
movq 0x20(%rsp), %rdi
callq 0x2030
testq %r12, %r12
je 0xc979
movq %r12, %rdi
movl 0x14(%rsp), %ebp
movl %ebp, %esi
movq %r13, %rdx
movq 0x40(%rsp), %rbx
movq %rbx, %rcx
callq 0xb780
leaq 0x1f6d(%rip), %rsi      # 0xe8b0
movq 0x8(%rsp), %rdi
callq 0x2120
testl %eax, %eax
movq (%rsp), %r15
movq 0x18(%rsp), %r14
jne 0xc96a
movq %r12, %rdi
movl %ebp, %esi
movq %r13, %rdx
movq %rbx, %rcx
callq 0x70b0
movq %r12, %rdi
callq 0x2030
xorl %ebx, %ebx
xorl %r13d, %r13d
jmp 0xc987
xorl %ebx, %ebx
xorl %r13d, %r13d
movq (%rsp), %r15
movq 0x18(%rsp), %r14
testq %r14, %r14
je 0xc991
movq %r14, %rdi
jmp 0xc994
movq %r15, %rdi
callq 0x2030
movq 0x8(%rsp), %r14
movzbl %bl, %eax
shll $0x8, %eax
movzbl %r13b, %edx
orq %rax, %rdx
movq %r14, %rax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%rbx), %rdi
callq 0x7dc1
movq %rax, 0x8(%rsp)
movb 0x10(%rbx), %r13b
movq 0x48(%rbp), %r15
testq %r15, %r15
je 0xc9f1
movq %r15, %rdi
movq %rbx, %rsi
callq 0x6d6f
movq %r15, %rdi
movq %rax, %rsi
callq 0x6d1d
movq 0x50(%rsp), %rdi
movq %r14, %rsi
movq %rbx, %rdx
movl %r12d, %ecx
movq %rbp, %r8
callq 0xb5da
movq %r14, %rdi
callq 0xb760
xorl %ebx, %ebx
jmp 0xc97e
xorl %r13d, %r13d
movq (%rsp), %r15
jmp 0xc987
movq $0x0, 0x30(%rsp)
movb $0x1, %al
jmp 0xbe15
movq 0x8(%rsp), %rdi
callq 0x2030
leaq 0x1e6d(%rip), %rdi      # 0xe8b0
callq 0x7dc1
movq %rax, 0x8(%rsp)
jmp 0xc7da
xorl %ebx, %ebx
addl $-0x44, %r15d
cmpl $0x28, %r15d
ja 0xcb44
movabsq $0x100000001, %rax      # imm = 0x100000001
btq %r15, %rax
jb 0xc6ac
movabsq $0x400000004, %rax      # imm = 0x400000004
btq %r15, %rax
jb 0xcb38
movabsq $0x10000000100, %rax    # imm = 0x10000000100
btq %r15, %rax
jae 0xcb44
leaq 0x1eaa(%rip), %r14      # 0xe94f
jmp 0xc6ac
movq 0x40(%rsp), %rbx
movq 0x40(%rbx), %rdi
testq %rdi, %rdi
je 0xcad1
movq %r14, %rsi
callq 0x6d6f
cmpl $-0x1, %eax
je 0xcad1
movq 0x40(%rbx), %rdi
movslq %eax, %rsi
callq 0x6d1d
cmpb $0x0, 0x30(%rsp)
movq 0x28(%rsp), %r13
je 0xcb0f
movq 0x8(%rsp), %rdi
callq 0x2030
leaq 0x1e25(%rip), %rdi      # 0xe913
callq 0x7dc1
movq %rax, 0x8(%rsp)
jmp 0xc76b
movb $0x1, %bl
movq $0x0, 0x30(%rsp)
xorl %eax, %eax
jmp 0xbe1a
addb 0x18(%r14), %r13b
js 0xc76b
movq 0x8(%rsp), %rdi
callq 0x2030
movq 0x10(%r14), %rdi
callq 0x7dc1
movq %rax, 0x8(%rsp)
xorl %ebx, %ebx
jmp 0xc770
leaq 0x216e(%rip), %r14      # 0xecad
jmp 0xc6ac
movq (%rsp), %r15
jmp 0xc6c9