// File: /workspace/github_c_makefile_star2_O0/System-Glitch[P]ESGILinter-C/src/parsing_expressions.c
// Function: parse_variable_expression
static void parse_variable_expression(char *line, char **name, char *is_pointer, int *negate_operator) {
	unsigned int start_index = 0;
	unsigned int end_index   = 0;
	int index                = 0;
	int length               = strlen(line);
	char c;

	SKIP_WHITESPACES

	//Check ! operator
	while((c = line[index]) == '!' && index < length) {
		index++;
		(*negate_operator)++;
	}

	//Pre incrementing / decrementing
	SKIP_WHITESPACES

	if(strstr(line + index, "++") == line + index || strstr(line + index, "--") == line + index) {
		//Skip operation
		index++;	
	} else if(index >= 0) {
		index--;
		c = line[index];
	}	

	//Check referencing
	do {
		index++;
		SKIP_WHITESPACES

		if(c == '*') (*is_pointer)--;
		if(c == '&') (*is_pointer)++;
	} while(c == '*' || c == '&');

	SKIP_WHITESPACES

	start_index = index;

	//Until not alphanumeric
	while(is_alphanumeric(c = line[index]) && index < length) {
		index++;
	}

	end_index = index;

	//Check if name is followed by anything
	SKIP_WHITESPACES
	if(index < length && c != ';' && !is_whitespace(c)) {
		return;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
movl $0x0, -0x28(%rbp)
movl $0x0, -0x2c(%rbp)
movq -0x8(%rbp), %rdi
callq 0x2090
movl %eax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x31(%rbp)
movsbl %al, %edi
callq 0xa7d0
movsbl %al, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x32(%rbp)
je 0x11cc8
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
setl %al
movb %al, -0x32(%rbp)
movb -0x32(%rbp), %al
testb $0x1, %al
jne 0x11cd1
jmp 0x11cdc
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x11c99
jmp 0x11cde
movq -0x8(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x31(%rbp)
movsbl %al, %ecx
xorl %eax, %eax
cmpl $0x21, %ecx
movb %al, -0x33(%rbp)
jne 0x11d05
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
setl %al
movb %al, -0x33(%rbp)
movb -0x33(%rbp), %al
testb $0x1, %al
jne 0x11d0e
jmp 0x11d24
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
jmp 0x11cde
jmp 0x11d26
movq -0x8(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x31(%rbp)
movsbl %al, %edi
callq 0xa7d0
movsbl %al, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x34(%rbp)
je 0x11d55
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
setl %al
movb %al, -0x34(%rbp)
movb -0x34(%rbp), %al
testb $0x1, %al
jne 0x11d5e
jmp 0x11d69
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x11d26
movq -0x8(%rbp), %rdi
movslq -0x2c(%rbp), %rax
addq %rax, %rdi
leaq 0x1e34(%rip), %rsi      # 0x13baf
callq 0x2190
movq -0x8(%rbp), %rcx
movslq -0x2c(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
je 0x11db7
movq -0x8(%rbp), %rdi
movslq -0x2c(%rbp), %rax
addq %rax, %rdi
leaq 0x1e1a(%rip), %rsi      # 0x13bbc
callq 0x2190
movq -0x8(%rbp), %rcx
movslq -0x2c(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jne 0x11dc2
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x11de1
cmpl $0x0, -0x2c(%rbp)
jl 0x11ddf
movl -0x2c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x2c(%rbp)
movq -0x8(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x31(%rbp)
jmp 0x11de1
jmp 0x11de3
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
movq -0x8(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x31(%rbp)
movsbl %al, %edi
callq 0xa7d0
movsbl %al, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x35(%rbp)
je 0x11e1b
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
setl %al
movb %al, -0x35(%rbp)
movb -0x35(%rbp), %al
testb $0x1, %al
jne 0x11e24
jmp 0x11e2f
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x11dec
movsbl -0x31(%rbp), %eax
cmpl $0x2a, %eax
jne 0x11e43
movq -0x18(%rbp), %rax
movb (%rax), %cl
addb $-0x1, %cl
movb %cl, (%rax)
movsbl -0x31(%rbp), %eax
cmpl $0x26, %eax
jne 0x11e57
movq -0x18(%rbp), %rax
movb (%rax), %cl
addb $0x1, %cl
movb %cl, (%rax)
jmp 0x11e59
movsbl -0x31(%rbp), %ecx
movb $0x1, %al
cmpl $0x2a, %ecx
movb %al, -0x36(%rbp)
je 0x11e74
movsbl -0x31(%rbp), %eax
cmpl $0x26, %eax
sete %al
movb %al, -0x36(%rbp)
movb -0x36(%rbp), %al
testb $0x1, %al
jne 0x11de3
jmp 0x11e81
movq -0x8(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x31(%rbp)
movsbl %al, %edi
callq 0xa7d0
movsbl %al, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x37(%rbp)
je 0x11eb0
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
setl %al
movb %al, -0x37(%rbp)
movb -0x37(%rbp), %al
testb $0x1, %al
jne 0x11eb9
jmp 0x11ec4
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x11e81
movl -0x2c(%rbp), %eax
movl %eax, -0x24(%rbp)
movq -0x8(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x31(%rbp)
movsbl %al, %edi
callq 0xada0
movsbl %al, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x38(%rbp)
je 0x11ef9
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
setl %al
movb %al, -0x38(%rbp)
movb -0x38(%rbp), %al
testb $0x1, %al
jne 0x11f02
jmp 0x11f0d
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x11eca
movl -0x2c(%rbp), %eax
movl %eax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x31(%rbp)
movsbl %al, %edi
callq 0xa7d0
movsbl %al, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x39(%rbp)
je 0x11f42
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
setl %al
movb %al, -0x39(%rbp)
movb -0x39(%rbp), %al
testb $0x1, %al
jne 0x11f4b
jmp 0x11f56
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x11f13
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
jge 0x11f76
movsbl -0x31(%rbp), %eax
cmpl $0x3b, %eax
je 0x11f76
movsbl -0x31(%rbp), %edi
callq 0xa7d0
cmpb $0x0, %al
jne 0x11f76
jmp 0x11f9a
movl -0x28(%rbp), %eax
cmpl -0x24(%rbp), %eax
je 0x11f9a
movq -0x8(%rbp), %rdi
movl -0x24(%rbp), %esi
movl -0x28(%rbp), %edx
subl -0x24(%rbp), %edx
callq 0xa5e0
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
addq $0x40, %rsp
popq %rbp
retq