LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/scopetree.c
// Function: find_variable
field_t *find_variable(scope_t *scope, char *name) {
	field_t *variable = NULL;

	while(scope != NULL) {
		for(size_t i = 0 ; i < scope->variables->size ; i++) {
			variable = arraylist_get(scope->variables, i);
			if(!strcmp(name, variable->name))
				return variable;
		}
		scope = scope->parent;
	}
	return NULL;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rsi, %r14
movq %rdi, %r15
xorl %ebx, %ebx
testq %r15, %r15
je 0x6747
xorl %r12d, %r12d
movq 0x18(%r15), %rdi
cmpq 0x8(%rdi), %r12
jae 0x673f
movq %r12, %rsi
callq 0x6978
movq %rax, %r13
movq (%rax), %rsi
movq %r14, %rdi
callq 0x2110
incq %r12
testl %eax, %eax
jne 0x6716
jmp 0x6744
movq (%r15), %r15
jmp 0x670e
movq %r13, %rbx
movq %rbx, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/scopetree.c
// Function: find_function_prototype
function_t *find_function_prototype(scope_t *root_scope, char *name) {

	arraylist_t *functions = root_scope->functions;
	function_t *prototype  = NULL;

	for(size_t j = 0 ; j < functions->size ; j++) {
		prototype = arraylist_get(functions, j);
		if(prototype->is_prototype && !strcmp(prototype->name, name)) {
			return prototype;
		}
	}

	return NULL;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq 0x10(%rdi), %r14
xorl %r15d, %r15d
cmpq 0x8(%r14), %r15
jae 0x6794
movq %r14, %rdi
movq %r15, %rsi
callq 0x6978
cmpb $0x0, 0x18(%rax)
je 0x678f
movq %rax, %r12
movq (%rax), %rdi
movq %rbx, %rsi
callq 0x2110
testl %eax, %eax
je 0x6797
incq %r15
jmp 0x6766
xorl %r12d, %r12d
movq %r12, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/arraylist.c
// Function: arraylist_init
arraylist_t *arraylist_init(unsigned int initial_capacity) {
	arraylist_t *list = malloc(sizeof(arraylist_t));
	
	if(list != NULL) {
		list->size = 0;
		list->capacity = initial_capacity;
		list->array = malloc(list->capacity * sizeof(void*));
		if(list->array == NULL) {
			free(list);
			list = NULL;
		} else {
			arraylist_set_null(list);
		}
	}
	return list;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %edi, %ebp
pushq $0x18
popq %rdi
callq 0x2130
testq %rax, %rax
je 0x6827
movq %rax, %rbx
andq $0x0, 0x8(%rax)
movl %ebp, %edi
movq %rdi, 0x10(%rax)
shlq $0x3, %rdi
callq 0x2130
movq %rax, (%rbx)
testq %rax, %rax
je 0x681f
movq %rbx, %rdi
callq 0x6833
jmp 0x6829
movq %rbx, %rdi
callq 0x2030
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/arraylist.c
// Function: arraylist_copy
arraylist_t *arraylist_copy(arraylist_t *list) {
	arraylist_t *copy = malloc(sizeof(arraylist_t));

	if(copy != NULL) {
		copy->size = list->size; 
		copy->capacity = list->capacity;
		copy->array = malloc(copy->capacity * sizeof(void*));
		if(copy->array == NULL) {
			free(copy);
			copy = NULL;
		} else {
			for(size_t i = 0 ; i < list->capacity ; i++)
				copy->array[i] = list->array[i];
		}
	}
	return copy;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %r14
pushq $0x18
popq %rdi
callq 0x2130
testq %rax, %rax
je 0x68aa
movq %rax, %rbx
movq 0x8(%r14), %rax
movq %rax, 0x8(%rbx)
movq 0x10(%r14), %r15
movq %r15, 0x10(%rbx)
leaq (,%r15,8), %rdi
callq 0x2130
movq %rax, (%rbx)
testq %rax, %rax
je 0x68a2
xorl %ecx, %ecx
cmpq %rcx, %r15
je 0x68ac
movq (%r14), %rdx
movq (%rdx,%rcx,8), %rdx
movq %rdx, (%rax,%rcx,8)
incq %rcx
jmp 0x688d
movq %rbx, %rdi
callq 0x2030
xorl %ebx, %ebx
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/arraylist.c
// Function: arraylist_remove
void *arraylist_remove(arraylist_t *list, size_t index) {
	void *value = arraylist_get(list, index);
	size_t num_moved;

	if(value == NULL) return NULL;

	num_moved = list->size - index;
	if(num_moved > 0) {
		for(size_t i = 1 ; i <= num_moved ; i++) {
			list->array[index + i - 1] = list->array[index + i];
		}
	}
	list->array[--(list->size)] = NULL;
	return value;
}

// Assembly:
movq 0x8(%rdi), %rcx
movq %rcx, %rdx
subq %rsi, %rdx
jbe 0x69c2
movq (%rdi), %rax
movq (%rax,%rsi,8), %rax
testq %rax, %rax
je 0x69c2
shlq $0x3, %rsi
pushq $0x1
popq %r8
movq (%rdi), %r9
cmpq %rdx, %r8
ja 0x69c5
addq %rsi, %r9
movq (%r9,%r8,8), %r10
movq %r10, -0x8(%r9,%r8,8)
incq %r8
jmp 0x69a9
xorl %eax, %eax
retq
leaq -0x1(%rcx), %rdx
movq %rdx, 0x8(%rdi)
andq $0x0, -0x8(%r9,%rcx,8)
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/arraylist.c
// Function: arraylist_index_of
size_t arraylist_index_of(arraylist_t *list, void *value) {
	for(size_t i = 0 ; i < list->size ; i++) {
		if(value == list->array[i]) {
			return i;
		}
	}
	return -1;
}

// Assembly:
movq 0x8(%rdi), %rdx
xorl %ecx, %ecx
pushq $-0x1
popq %rax
cmpq %rdx, %rcx
jae 0x69f3
movq (%rdi), %r8
cmpq %rsi, (%r8,%rcx,8)
je 0x69f0
incq %rcx
jmp 0x69dd
movq %rcx, %rax
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/arraylist.c
// Function: arraylist_free
void arraylist_free(arraylist_t *list, unsigned char free_content) {
	if(free_content) {
		for(size_t i = 0 ; i < list->size ; i++) {
			if(list->array[i] != NULL)
				free(list->array[i]);
		}
	}
	free(list->array);
	free(list);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
testl %esi, %esi
je 0x6a19
xorl %r14d, %r14d
cmpq 0x8(%rbx), %r14
jae 0x6a19
movq (%rbx), %rax
movq (%rax,%r14,8), %rdi
callq 0x2030
incq %r14
jmp 0x6a02
movq (%rbx), %rdi
callq 0x2030
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x2030
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/parsing_operations.c
// Function: is_operator_first
static unsigned char is_operator_first(char *line, int length, char *occurrence) {
	int index = 0;
	char c;

	SKIP_WHITESPACES

	return occurrence == line + index; 
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rdi, %r14
movslq %esi, %r15
decq %r14
xorl %r12d, %r12d
movsbl 0x1(%r14), %edi
incq %r14
callq 0x7ace
cmpq %r15, %r12
jge 0x7617
incq %r12
testb %al, %al
jne 0x75fe
cmpq %rbx, %r14
sete %al
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/parsing_operations.c
// Function: parse_operand
static type_t parse_operand(char *operand, int line_index, scope_t *scope, messages_t *messages) {

	type_t type = parse_operation(operand, line_index, scope, messages);

	if(!strcmp(type.name, "NULL")) {
		free(type.name);
		type = parse_expression(operand, line_index, scope, messages);
	}

	return type;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %rbx
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %r12
callq 0x6ce0
movq %rax, %r15
movq %rdx, %r13
leaq 0x725f(%rip), %rsi      # 0xe8b0
movq %rax, %rdi
callq 0x2110
testl %eax, %eax
jne 0x767b
movq %r15, %rdi
callq 0x2030
movq %r12, %rdi
movl %ebp, %esi
movq %r14, %rdx
movq %rbx, %rcx
callq 0xaf1c
movq %rax, %r15
movq %rdx, %r13
movq %r15, %rax
movq %r13, %rdx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/parsing_operations.c
// Function: add_wrong_type_message
static void add_wrong_type_message(arraylist_t *messages, type_t *type_left, type_t *type_right) {
	wrong_type_t *assignment              = malloc(sizeof(wrong_type_t));
	assignment->expected_type             = malloc(sizeof(type_t));
	assignment->expected_type->name       = strduplicate(type_left->name);
	assignment->expected_type->is_pointer = type_left->is_pointer;
	assignment->actual_type               = malloc(sizeof(type_t));
	assignment->actual_type->name         = strduplicate(type_right->name);
	assignment->actual_type->is_pointer   = type_right->is_pointer;
	arraylist_add(messages, assignment);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %rbx
pushq $0x10
popq %r13
movq %r13, %rdi
callq 0x2130
movq %rax, %r15
movq %r13, %rdi
callq 0x2130
movq %rax, %rbp
movq %rax, (%r15)
movq (%r12), %rdi
callq 0x794d
movq %rax, (%rbp)
movb 0x8(%r12), %al
movb %al, 0x8(%rbp)
movq %r13, %rdi
callq 0x2130
movq %rax, %r12
movq %rax, 0x8(%r15)
movq (%r14), %rdi
callq 0x794d
movq %rax, (%r12)
movb 0x8(%r14), %al
movb %al, 0x8(%r12)
movq %rbx, %rdi
movq %r15, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x68b5
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/parsing_operations.c
// Function: get_highest_rank
static int get_highest_rank(char *type1, char *type2) {

	if(!strcmp(type1, "NULL") || !strcmp(type2, "NULL"))
		return -1;

	int rank1 = find_type_rank(type1);
	int rank2 = find_type_rank(type2);
	return rank1 > rank2 ? rank1 : rank2;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x718c(%rip), %rsi      # 0xe8b0
callq 0x2110
testl %eax, %eax
je 0x7759
leaq 0x717c(%rip), %rsi      # 0xe8b0
movq %rbx, %rdi
callq 0x2110
testl %eax, %eax
je 0x7759
movq %r14, %rdi
callq 0x7791
movl %eax, %ebp
movq %rbx, %rdi
callq 0x7791
cmpl %eax, %ebp
cmovgl %ebp, %eax
jmp 0x775c
pushq $-0x1
popq %rax
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/parsing_operations.c
// Function: find_type_rank
static int find_type_rank(char *type) {
	int i = 0;
	const char *t = NULL;
	while((t = type_rank[i]) != NULL) {
		if(!strcmp(type_rank[i], type))
			return i;
		i++;
	}
	return -1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r14
leaq 0xb59d(%rip), %r12      # 0x12d40
xorl %r15d, %r15d
pushq $-0x1
popq %rbx
cmpq $0x11, %r15
je 0x77cb
movq (%r12), %rdi
movq %r14, %rsi
callq 0x2110
testl %eax, %eax
je 0x77c8
incq %r15
addq $0x8, %r12
jmp 0x77a9
movl %r15d, %ebx
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: strduplicate
char *strduplicate(char *str) {
	char *result = NULL;
	int len;

	if(str == NULL) return NULL;

	len = strlen(str);
	result = malloc((len + 1) * sizeof(char));

	if(result == NULL) return NULL;

	strcpy(result, str);
	result[len] = '\0';

	return result;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
testq %rdi, %rdi
je 0x799a
movq %rdi, %rbx
callq 0x20b0
movq %rax, %r14
shlq $0x20, %r14
movabsq $0x100000000, %rdi      # imm = 0x100000000
addq %r14, %rdi
sarq $0x20, %rdi
callq 0x2130
testq %rax, %rax
je 0x799a
movq %rax, %r15
movq %rax, %rdi
movq %rbx, %rsi
callq 0x2080
sarq $0x20, %r14
movb $0x0, (%r15,%r14)
jmp 0x799d
xorl %r15d, %r15d
movq %r15, %rax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: strsubstr
char *strsubstr(char *str , int from, int count) {
	char *result;
	if(str == NULL) return NULL;

	result = malloc((count+1) * sizeof(char));

	if(result == NULL) return NULL;

	strncpy(result, str+from, count);
	result[count] = '\0';
	return result;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x79ec
movl %edx, %r15d
movl %esi, %ebp
movq %rdi, %r14
leal 0x1(%r15), %eax
movslq %eax, %rdi
callq 0x2130
testq %rax, %rax
je 0x79ec
movq %rax, %rbx
movslq %ebp, %rax
addq %rax, %r14
movslq %r15d, %r15
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x2060
movb $0x0, (%rbx,%r15)
jmp 0x79ee
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: strcount
unsigned int strcount(char *str, char chr) {

	unsigned int length = strlen(str);
	unsigned int count = 0;

	for(unsigned int i = 0 ; i < length ; i++) {
		if(str[i] == chr)
			count++;
	}
	return count;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebx
movq %rdi, %r14
callq 0x20b0
movl %eax, %ecx
xorl %edx, %edx
xorl %eax, %eax
cmpq %rdx, %rcx
je 0x7a26
xorl %esi, %esi
cmpb %bl, (%r14,%rdx)
sete %sil
addl %esi, %eax
incq %rdx
jmp 0x7a10
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: strcountuntil
unsigned int strcountuntil(char *str, char chr, char reverse, char ignore_whitespace) {

	unsigned int length = strlen(str);
	unsigned int count = 0;

	if(!reverse) {
		for(unsigned int i = 0 ; i < length ; i++) {
			if(str[i] == chr || (ignore_whitespace && is_whitespace(str[i])))
				count++;
			else
				break;
		}
	} else {
		for(int i = length - 1 ; i >= 0 ; i--) {
			if(str[i] == chr || (ignore_whitespace && is_whitespace(str[i])))
				count++;
			else
				break;
		}
	}
	return count;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %ecx, %ebx
movl %edx, %r15d
movl %esi, %ebp
movq %rdi, %r14
callq 0x20b0
movq %rax, %rcx
movl %ecx, %edx
testb %r15b, %r15b
je 0x7a8f
decq %rdx
xorl %eax, %eax
movabsq $0x100003e00, %rcx      # imm = 0x100003E00
leaq (%rdx,%rax), %rsi
testl %esi, %esi
js 0x7a8b
andl $0x7fffffff, %esi       # imm = 0x7FFFFFFF
movzbl (%r14,%rsi), %esi
cmpb %bpl, %sil
je 0x7a86
testb %bl, %bl
je 0x7a8b
cmpl $0x20, %esi
ja 0x7a8b
movl %esi, %esi
btq %rsi, %rcx
jae 0x7a8b
decq %rax
jmp 0x7a5d
negl %eax
jmp 0x7ac3
xorl %eax, %eax
movabsq $0x100003e00, %rsi      # imm = 0x100003E00
cmpq %rax, %rdx
je 0x7ac0
movzbl (%r14,%rax), %edi
cmpb %bpl, %dil
je 0x7abb
testb %bl, %bl
je 0x7ac3
cmpl $0x20, %edi
ja 0x7ac3
movl %edi, %edi
btq %rdi, %rsi
jae 0x7ac3
incq %rax
jmp 0x7a9b
movq %rcx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: strcount_heading_line_breaks
unsigned int strcount_heading_line_breaks(char *str) {

	char *tmp = str_remove_comments(str);
	unsigned int length = strlen(tmp);
	unsigned int count = 0;

	for(unsigned int i = 0 ; i < length ; i++) {
		if(tmp[i] == '\n')
			count++;
		else if(!is_whitespace(tmp[i]))
			break;
	}
	free(tmp);
	return count;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
callq 0x77dc
movq %rax, %rbx
movq %rax, %rdi
callq 0x20b0
movl %eax, %eax
xorl %ecx, %ecx
movabsq $0x100003a00, %rdx      # imm = 0x100003A00
xorl %ebp, %ebp
cmpq %rcx, %rax
je 0x7b37
movzbl (%rbx,%rcx), %esi
cmpq $0x20, %rsi
ja 0x7b37
btq %rsi, %rdx
jae 0x7b2d
incq %rcx
jmp 0x7b13
cmpq $0xa, %rsi
jne 0x7b37
incl %ebp
jmp 0x7b28
movq %rbx, %rdi
callq 0x2030
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: strindexof
int strindexof(char *str, char chr) {

	size_t length = strlen(str);

	for(size_t i = 0 ; i < length ; i++) {
		if(str[i] == chr)
			return (int)i;
	}
	return -1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebx
movq %rdi, %r14
callq 0x20b0
movq %rax, %rcx
xorl %edx, %edx
pushq $-0x1
popq %rax
cmpq %rdx, %rcx
je 0x7b70
cmpb %bl, (%r14,%rdx)
je 0x7b6e
incq %rdx
jmp 0x7b5e
movl %edx, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: strlastindexof
int strlastindexof(char *str, char chr) {

	int length = strlen(str);

	for(unsigned int i = length-1 ; i > 0 ; i--) {
		if(str[i] == chr)
			return i;
	}
	return -1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebx
movq %rdi, %r14
callq 0x20b0
movq %rax, %rcx
decl %ecx
pushq $-0x1
popq %rax
movl %ecx, %edx
subl $0x1, %edx
jb 0x7ba3
movl %ecx, %esi
movl %edx, %ecx
cmpb %bl, (%r14,%rsi)
jne 0x7b90
incl %edx
movl %edx, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: strconcat
char *strconcat(char *str1, char *str2) {
	char *result;
	unsigned int length = 0;

	if(str1 != NULL) length += strlen(str1);
	if(str2 != NULL) length += strlen(str2);

	result = malloc((length + 1) * sizeof(char));

	if(result != NULL) {

		result[0] = '\0';
		result[length - 1] = '\0';

		if(str1 != NULL) strcat(result, str1);
		if(str2 != NULL) strcat(result, str2);

	}

	return result;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
testq %rdi, %rdi
je 0x7bcb
movq %r14, %rdi
callq 0x20b0
movq %rax, %r15
jmp 0x7bce
xorl %r15d, %r15d
testq %rbx, %rbx
je 0x7bde
movq %rbx, %rdi
callq 0x20b0
addl %eax, %r15d
leal 0x1(%r15), %edi
callq 0x2130
movq %rax, %r12
testq %rax, %rax
je 0x7c27
decl %r15d
xorl %eax, %eax
movb %al, (%r12)
movb %al, (%r12,%r15)
testq %r14, %r14
je 0x7c0c
movq %r12, %rdi
movq %r14, %rsi
callq 0x2170
testq %rbx, %rbx
je 0x7c27
movq %r12, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x2170
movq %r12, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: strjoin
char *strjoin(char **strings, unsigned int count, char *join) {
	char *result;
	unsigned int length = 0;

	if(strings == NULL || join == NULL) return NULL;

	//Calculate length
	for(unsigned int i = 0 ; i < count ; i++)
		if(strings[i] != NULL)
			length += strlen(strings[i]);

	length += (count-1) * strlen(join); //Join characters

	result = malloc((length + 1) * sizeof(char));

	if(result != NULL) {

		result[0] = '\0';
		result[length - 1] = '\0';

		//Concat
		for(unsigned int i = 0 ; i < count ; i++) {
			strcat(result, strings[i]);
			if(i < count - 1)
				strcat(result, join);
		}
	}

	return result;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
sete %al
testq %rdx, %rdx
sete %cl
xorl %ebp, %ebp
orb %al, %cl
jne 0x7ce6
movq %rdx, %rbx
movl %esi, %r12d
movq %rdi, %r14
movl %esi, %r13d
xorl %r15d, %r15d
cmpq %r15, %r13
je 0x7c80
movq (%r14,%r15,8), %rdi
testq %rdi, %rdi
je 0x7c7b
callq 0x20b0
addl %eax, %ebp
incq %r15
jmp 0x7c66
decl %r12d
movq %rbx, %rdi
callq 0x20b0
movl %r12d, %ecx
movq %rax, %r12
movl %ecx, 0x4(%rsp)
imull %ecx, %r12d
leal (%r12,%rbp), %edi
incl %edi
callq 0x2130
testq %rax, %rax
je 0x7ce6
movq %rax, %r15
addl %ebp, %r12d
xorl %ebp, %ebp
movb %bpl, (%rax)
decl %r12d
movb %bpl, (%rax,%r12)
movl 0x4(%rsp), %r12d
cmpq %rbp, %r13
je 0x7ce9
movq (%r14,%rbp,8), %rsi
movq %r15, %rdi
callq 0x2170
cmpq %r12, %rbp
jae 0x7ce1
movq %r15, %rdi
movq %rbx, %rsi
callq 0x2170
incq %rbp
jmp 0x7cc0
xorl %r15d, %r15d
movq %r15, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: substr_match
char *substr_match(char *source, match_t match) {
	int length = match.index_end - match.index_start;
	char *substr = malloc((length + 1) * sizeof(char));

	if(substr != NULL) {
		strncpy(substr, source + match.index_start, length);
		substr[length] = '\0';
	}

	return substr;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
movq %rsi, %r12
shrq $0x20, %r12
subl %r14d, %r12d
leal 0x1(%r12), %eax
movslq %eax, %rdi
callq 0x2130
movq %rax, %r15
testq %rax, %rax
je 0x7d69
movl %r14d, %eax
addq %rax, %rbx
movslq %r12d, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x2060
movb $0x0, (%r15,%r14)
movq %r15, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: trim_heading_whitespaces
char *trim_heading_whitespaces(char *line) {
	size_t index = 0;
	size_t length = strlen(line);
	char *trimmed = line;

	while(is_whitespace(*trimmed) && index < length) {
		trimmed++;
		index++;
	}

	return trimmed;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x20b0
xorl %ecx, %ecx
movabsq $0x100003e00, %rdx      # imm = 0x100003E00
movzbl (%rbx,%rcx), %esi
cmpq $0x20, %rsi
ja 0x7da7
btq %rsi, %rdx
jae 0x7da7
cmpq %rax, %rcx
jae 0x7da7
incq %rcx
jmp 0x7d8d
addq %rcx, %rbx
movq %rbx, %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: trim
char *trim(char *line) {
	char *trimmed = strduplicate(trim_heading_whitespaces(line));
	size_t index  = 0;
	size_t length = strlen(trimmed);

	index = length - 1;
	while(is_whitespace(trimmed[index]) && index < length) {
		index--;
	}

	trimmed[index + 1] = '\0';

	return trimmed;
}

// Assembly:
pushq %rbx
callq 0x7d78
movq %rax, %rdi
callq 0x794d
movq %rax, %rbx
movq %rax, %rdi
callq 0x20b0
movabsq $0x100003e00, %rcx      # imm = 0x100003E00
movq %rax, %rsi
movq %rsi, %rdx
movzbl -0x1(%rbx,%rsi), %esi
cmpq $0x20, %rsi
ja 0x7df2
btq %rsi, %rcx
jae 0x7df2
leaq -0x1(%rdx), %rsi
cmpq %rax, %rsi
jb 0x7dd5
movb $0x0, (%rbx,%rdx)
movq %rbx, %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: check_quotes
unsigned char check_quotes(char *line, char *occurrence, int length) {
	unsigned char found_before = 0;

	//Find quote before
	for(int i = occurrence - line ; i >= 0 ; i--) {
		if(line[i] == '"') {
			found_before = 1;
			break;
		}
	}

	if(!found_before) return 0;

	//Find quote after
	for(int i = occurrence - line ; i < length ; i++) {
		if(line[i] == '"') {
			return 1;
		}
	}

	return 0;
}

// Assembly:
subq %rdi, %rsi
movl %esi, %eax
testl %eax, %eax
js 0x7e60
movl %eax, %ecx
decl %eax
cmpb $0x22, (%rdi,%rcx)
jne 0x7e33
movslq %esi, %rsi
movslq %edx, %rax
movq %rsi, %rcx
cmpq %rax, %rsi
jge 0x7e59
leaq 0x1(%rcx), %rsi
cmpb $0x22, (%rdi,%rcx)
jne 0x7e47
cmpq %rax, %rcx
setl %al
retq
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: check_parenthesis
unsigned char check_parenthesis(char *line, char *occurrence, int length) {
	unsigned char found_before = 0;
	int  level                 = -1; 

	//Find parenthesis before
	for(int i = occurrence - line ; i >= 0 ; i--) {
		if(line[i] == ')' && !check_quotes(line, line + i, length)) {
			level--;
		}
		if(line[i] == '(' && !check_quotes(line, line + i, length)) {
			level++;
			if(level == 0) {
				found_before = 1;
				break;
			}
		}
	}

	if(!found_before) return 0;
	level = 1;

	//Find parenthesis after
	for(int i = occurrence - line ; i < length ; i++) {
		if(line[i] == '(' && !check_quotes(line, line + i, length)) {
			level++;
		} 
		if(line[i] == ')' && !check_quotes(line, line + i, length)) {
			level--;
			if(level == 0)
				return 1;
		}
	}

	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %edx, %ebx
movq %rsi, %r15
movq %rdi, %r14
subq %rdi, %r15
pushq $-0x1
popq %rbp
movl %r15d, %r12d
testl %r12d, %r12d
js 0x7ec1
movl %r12d, %eax
leaq (%r14,%rax), %rsi
movzbl (%r14,%rax), %eax
cmpl $0x28, %eax
je 0x7eaa
cmpl $0x29, %eax
jne 0x7ebc
movq %r14, %rdi
movl %ebx, %edx
callq 0x7e2e
decb %al
movsbl %al, %eax
addl %eax, %ebp
jmp 0x7ebc
movq %r14, %rdi
movl %ebx, %edx
callq 0x7e2e
testb %al, %al
jne 0x7ebc
incl %ebp
je 0x7ecc
decl %r12d
jmp 0x7e7c
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movslq %r15d, %r15
movslq %ebx, %r12
pushq $0x1
popq %rbp
cmpq %r12, %r15
jge 0x7f17
leaq (%r14,%r15), %rsi
movzbl (%r14,%r15), %eax
cmpl $0x29, %eax
je 0x7f00
cmpl $0x28, %eax
jne 0x7f12
movq %r14, %rdi
movl %ebx, %edx
callq 0x7e2e
xorb $0x1, %al
movzbl %al, %eax
addl %eax, %ebp
jmp 0x7f12
movq %r14, %rdi
movl %ebx, %edx
callq 0x7e2e
testb %al, %al
jne 0x7f12
decl %ebp
je 0x7f17
incq %r15
jmp 0x7ed5
cmpq %r12, %r15
setl %al
jmp 0x7ec3
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: remove_parenthesis
char *remove_parenthesis(char *line, int length) {
	int level       = 0;
	int index       = 0;
	int start_index = 0;
	int end_index   = 0;
	char *sub       = NULL;
	char *tmp       = NULL;
	char c;

	while(is_whitespace(c = line[index]) && index < length) { index++; }

	if(c == '(') {

		level++;

		start_index = ++index;

		while(index < length) {
			c = line[index];
			if(c == '(') level++;
			else if(c == ')') {
				level--;
				if(level == 0) { //Check if end

					end_index = index;
					index++;

					while(is_whitespace(c = line[index]) && index < length) { index++; }

					if(index >= length) {
						sub = strsubstr(line, start_index, end_index - start_index);
						tmp = remove_parenthesis(sub, strlen(sub));
						return tmp != NULL ? tmp : sub;
					} else {
						return NULL;
					}

				}
			}
			index++;
		}
	}

	return NULL;
}

// Assembly:
movslq %esi, %rax
xorl %r8d, %r8d
movabsq $0x100003e00, %r9       # imm = 0x100003E00
movq %r8, %r10
movb (%rdi,%r8), %cl
movq %r9, %rdx
shrq %cl, %rdx
incq %r8
cmpq %rax, %r10
jge 0x7f4e
cmpb $0x20, %cl
ja 0x7f4e
testb $0x1, %dl
jne 0x7f2f
cmpb $0x28, %cl
jne 0x7f8f
pushq %rbx
leaq (%rdi,%r8), %rcx
incq %rcx
pushq $0x1
popq %r10
xorl %eax, %eax
xorl %edx, %edx
leal (%r8,%rdx), %r11d
cmpl %esi, %r11d
jge 0x7fda
movzbl -0x1(%rcx), %r11d
cmpl $0x29, %r11d
je 0x7f82
cmpl $0x28, %r11d
jne 0x7f87
incl %r10d
jmp 0x7f87
decl %r10d
je 0x7f92
incq %rcx
incq %rdx
jmp 0x7f63
xorl %eax, %eax
retq
leal (%r8,%rdx), %eax
incl %eax
movzbl (%rcx), %r10d
cmpq $0x20, %r10
ja 0x7fdc
btq %r10, %r9
jae 0x7fdc
leal 0x1(%rax), %r10d
incq %rcx
cmpl %esi, %eax
movl %r10d, %eax
jl 0x7f98
movl %r8d, %esi
callq 0x79a6
movq %rax, %rbx
movq %rax, %rdi
callq 0x20b0
movq %rbx, %rdi
movl %eax, %esi
callq 0x7f1f
testq %rax, %rax
cmoveq %rbx, %rax
popq %rbx
retq
cmpl %esi, %eax
jge 0x7fb6
xorl %eax, %eax
jmp 0x7fda
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/stringutils.c
// Function: generate_char_sequence
char *generate_char_sequence(char c, unsigned int count) {
	char *seq = malloc((count + 1)*sizeof(char));
	for(unsigned int i = 0 ; i < count ; i++) {
		seq[i] = c;
	}
	seq[count] = '\0';
	return seq;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %r14d
movl %edi, %ebx
leal 0x1(%r14), %edi
callq 0x2130
movl %r14d, %ecx
xorl %edx, %edx
cmpq %rdx, %rcx
je 0x8008
movb %bl, (%rax,%rdx)
incq %rdx
jmp 0x7ffb
movb $0x0, (%rax,%rcx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/linkedlist.c
// Function: linkedlist_init
linkedlist_t *linkedlist_init() {
	linkedlist_t *list = malloc(sizeof(linkedlist_t));
	if(list == NULL) return NULL;
	list->length = 0;
	list->head = NULL;
	return list;
}

// Assembly:
pushq %rax
pushq $0x10
popq %rdi
callq 0x2130
testq %rax, %rax
je 0x8826
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/linkedlist.c
// Function: linkedlist_add
void linkedlist_add(linkedlist_t *list, void *value) {
	node_t * node = linkedlist_create_node(value, NULL);
	if(list->length) {
		node_t *last = linkedlist_get_node(list, list->length-1);
		last->next = linkedlist_create_node(value,NULL);
	} else {
		list->head = node;
	}
	list->length++;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
movq %rsi, %rdi
xorl %esi, %esi
callq 0x8873
movl (%rbx), %esi
testl %esi, %esi
je 0x8864
decl %esi
movq %rbx, %rdi
callq 0x88a1
movq %rax, %r15
movq %r14, %rdi
xorl %esi, %esi
callq 0x8873
movq %rax, 0x8(%r15)
movl (%rbx), %eax
incl %eax
jmp 0x886b
movq %rax, 0x8(%rbx)
pushq $0x1
popq %rax
movl %eax, (%rbx)
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/linkedlist.c
// Function: linkedlist_create_node
node_t * linkedlist_create_node(void *value, node_t *next) {
	node_t * node = NULL;
	node = malloc(sizeof(node_t));
	if(node == NULL) {
		exit(1);
	}
	node->val = value;
	node->next = next;
	return node;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
pushq $0x10
popq %rdi
callq 0x2130
testq %rax, %rax
je 0x8899
movq %r14, (%rax)
movq %rbx, 0x8(%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
pushq $0x1
popq %rdi
callq 0x2190
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/linkedlist.c
// Function: linkedlist_remove_index
void linkedlist_remove_index(linkedlist_t *list, int index) {

	if(list->length == 0) return;

	if(!index) {
		linkedlist_pop(list);
		return;
	}

	node_t * current = list->head;
	node_t * temp_node = NULL;
	for(int i = 1; i < index && current != NULL ; i++) {
		current = current->next;
	}

	temp_node = current->next;
	current->next = temp_node->next;
	if(temp_node->val != NULL)
		free(temp_node->val);
	free(temp_node);

	list->length--;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
cmpl $0x0, (%rdi)
je 0x8904
movq %rdi, %rbx
testl %esi, %esi
je 0x890c
pushq $0x1
popq %rcx
movq %rbx, %rax
movq 0x8(%rax), %rax
cmpl %esi, %ecx
jge 0x88e6
incl %ecx
testq %rax, %rax
jne 0x88d7
movq 0x8(%rax), %r14
movq 0x8(%r14), %rcx
movq %rcx, 0x8(%rax)
movq (%r14), %rdi
callq 0x2030
movq %r14, %rdi
callq 0x2030
decl (%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x891b
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/linkedlist.c
// Function: linkedlist_pop
void linkedlist_pop(linkedlist_t *list) {
	if(!list->length) return;
	node_t * next_node = NULL;
	node_t ** head = &list->head;

	next_node = (*head)->next;
	if((*head)->val != NULL)
		free((*head)->val);
	free(*head);
	*head = next_node;
	list->length--;
}

// Assembly:
cmpl $0x0, (%rdi)
je 0x894d
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x8(%rdi), %rax
movq (%rax), %rdi
movq 0x8(%rax), %r14
callq 0x2030
movq 0x8(%rbx), %rdi
callq 0x2030
movq %r14, 0x8(%rbx)
decl (%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/linkedlist.c
// Function: linkedlist_insert
void linkedlist_insert(linkedlist_t *list, int index, void *value) {
	if(index == list->length) {
		linkedlist_add(list,value);
	} else if(!index) {
		linkedlist_push(list,value);
	} else {
		node_t * previous = linkedlist_get_node(list, index-1);
		previous->next = linkedlist_create_node(value,previous->next);

		list->length++;
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %r14
movq %rdi, %rbx
cmpl %esi, (%rdi)
jne 0x8981
movq %rbx, %rdi
movq %r14, %rsi
popq %rbx
popq %r14
popq %r15
jmp 0x8828
testl %esi, %esi
je 0x89aa
decl %esi
movq %rbx, %rdi
callq 0x88a1
movq %rax, %r15
movq 0x8(%rax), %rsi
movq %r14, %rdi
callq 0x8873
movq %rax, 0x8(%r15)
incl (%rbx)
popq %rbx
popq %r14
popq %r15
retq
movq %rbx, %rdi
movq %r14, %rsi
popq %rbx
popq %r14
popq %r15
jmp 0x89ba
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/linkedlist.c
// Function: linkedlist_push
void linkedlist_push(linkedlist_t *list, void *value) {
	node_t ** head = &list->head;
	node_t * newNode = linkedlist_create_node(value,*head);
	*head = newNode;
	list->length++;
}

// Assembly:
pushq %rbx
movq %rsi, %rax
movq %rdi, %rbx
movq 0x8(%rdi), %rsi
movq %rax, %rdi
callq 0x8873
movq %rax, 0x8(%rbx)
incl (%rbx)
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/linkedlist.c
// Function: linkedlist_free
void linkedlist_free(linkedlist_t *list) {
	if(list == NULL) return;
	node_t * current;
	while ((current = list->head) != NULL) {
		list->head = list->head->next;
		if(current->val != NULL)
			free (current->val);
		free (current);
	}
	free(list);
}

// Assembly:
testq %rdi, %rdi
je 0x8a13
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x8(%rbx), %r14
testq %r14, %r14
je 0x8a04
movq 0x8(%r14), %rax
movq %rax, 0x8(%rbx)
movq (%r14), %rdi
callq 0x2030
movq %r14, %rdi
callq 0x2030
jmp 0x89e1
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x2030
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/rules/no_trailing_spaces.c
// Function: no_trailing_spaces
int no_trailing_spaces(arraylist_t *file, char *filename) {
	if(!file) return -1;
	unsigned int counter = 0;
	for(size_t i = 0 ; i < file->size ; i++){
		counter += no_trailing_spaces_check(arraylist_get(file, i), i, filename);
	}
	return counter;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x8abe
movq %rsi, %r14
movq %rdi, %r15
xorl %ebx, %ebx
pushq $0xa
popq %rbp
xorl %r13d, %r13d
cmpq 0x8(%r15), %r13
jae 0x8ac1
movq %r15, %rdi
movq %r13, %rsi
callq 0x6978
movq %rax, %r12
movq %rax, %rdi
movl %ebp, %esi
callq 0x7b78
xorl %ecx, %ecx
testl %eax, %eax
jle 0x8ab4
movl %eax, %edx
movb -0x1(%r12,%rdx), %sil
cmpb $0x20, %sil
jne 0x8a99
movq %r12, %rdi
callq 0x7daf
movq %rax, %r12
leal 0x1(%r13), %esi
movq %r14, %rdi
movq %rax, %rdx
leaq 0x5ed4(%rip), %rcx      # 0xe95b
callq 0x560c
movq %r12, %rdi
callq 0x2030
pushq $0x1
popq %rcx
jmp 0x8ab4
cmpl $0x1, %eax
sete %al
cmpb $0xd, %sil
setne %sil
orb %al, %sil
jne 0x8ab4
cmpb $0x20, -0x2(%r12,%rdx)
je 0x8a6b
addl %ecx, %ebx
incq %r13
jmp 0x8a36
pushq $-0x1
popq %rbx
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/rules/max_file_line_numbers.c
// Function: max_file_line_numbers
unsigned int max_file_line_numbers(arraylist_t *file, unsigned int n, char *filename){

  if(file->size > n){
    char size_string[12];
    char n_string[12];
    sprintf(size_string, "%ld", file->size);
    sprintf(n_string, "%d", n);

    char *tmp0 = strconcat("Too many lines, actual: ", size_string);
    char *tmp1 = strconcat(tmp0, ", max: ");
    free(tmp0);
    tmp0 = strconcat(tmp1, n_string);

    print_warning(filename, n, NULL, tmp0);

    free(tmp1);
    free(tmp0);
    return 1;
  }
  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x20, %rsp
movq %rdx, %r14
movq 0x8(%rdi), %rdx
movl %esi, %ecx
xorl %eax, %eax
cmpq %rcx, %rdx
jbe 0x8e15
movl %esi, %ebx
leaq 0x5c01(%rip), %rsi      # 0xe993
leaq 0x14(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2180
leaq 0x5bef(%rip), %rsi      # 0xe997
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movl %ebx, %edx
xorl %eax, %eax
callq 0x2180
leaq 0x5bda(%rip), %rdi      # 0xe99a
movq %r15, %rsi
callq 0x7bab
movq %rax, %r15
leaq 0x5be1(%rip), %rsi      # 0xe9b3
movq %rax, %rdi
callq 0x7bab
movq %rax, %r13
movq %r15, %rdi
callq 0x2030
movq %r13, %rdi
movq %r12, %rsi
callq 0x7bab
movq %rax, %r15
movq %r14, %rdi
movl %ebx, %esi
xorl %edx, %edx
movq %rax, %rcx
callq 0x560c
movq %r13, %rdi
callq 0x2030
movq %r15, %rdi
callq 0x2030
pushq $0x1
popq %rax
addq $0x20, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
nop
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/rules/no_multi_declaration.c
// Function: list_contains
static unsigned char list_contains(arraylist_t *list, int value) {
	for(size_t i = 0 ; i < list->size ; i++) {
		if(*(int*)arraylist_get(list, i) == value)
			return 1;
	}
	return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movl %esi, %ebx
movq %rdi, %r14
xorl %ecx, %ecx
movq %rcx, %r15
movq 0x8(%r14), %r12
cmpq %r12, %rcx
jae 0x8fea
movq %r14, %rdi
movq %r15, %rsi
callq 0x6978
leaq 0x1(%r15), %rcx
cmpl %ebx, (%rax)
jne 0x8fcb
cmpq %r12, %r15
setb %al
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/rules/indent.c
// Function: is_expression
int is_expression(char *line, char *tmp){
    size_t index = 0;
    size_t length;
    char c;

    length = strlen(line);

    while (is_whitespace(c = line[index]) && index < length) { index++; };
    if(!strcmp(tmp, line+index)) return 1;
    return 0;

}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
callq 0x20b0
movq %rax, %r15
decq %r14
xorl %r12d, %r12d
movsbl 0x1(%r14), %edi
incq %r14
callq 0x7ace
testb %al, %al
je 0x9334
leaq 0x1(%r12), %rax
cmpq %r15, %r12
movq %rax, %r12
jb 0x9316
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2110
xorl %ecx, %ecx
testl %eax, %eax
sete %cl
movl %ecx, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/rules/indent.c
// Function: check_expression
void check_expression(char *line, const char *expr, int *adding, int *special){
    char *tmp = NULL;
    size_t tmp_length;
    size_t index;
    char c;

    tmp = strstr(line, expr);
    index = strlen(expr);
    if(tmp) {
        if(!is_expression(line, tmp)) return;
        tmp_length = strlen(tmp);
        while (is_whitespace(c = tmp[index]) && index < tmp_length) { index++; };
        if (*adding == 0 && tmp[index] == '(') {
            (*adding) += 1;
            (*special) = 1;
        }
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rcx, %rbx
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %r13
callq 0x21b0
movq %rax, %r15
movq %r12, %rdi
callq 0x20b0
testq %r15, %r15
je 0x93cc
movq %rax, %r12
movq %r13, %rdi
movq %r15, %rsi
callq 0x92fa
testl %eax, %eax
je 0x93cc
movq %r15, %rdi
callq 0x20b0
movq %rax, %r13
movsbl (%r15,%r12), %edi
callq 0x7ace
leaq 0x1(%r12), %rcx
testb %al, %al
je 0x93b6
cmpq %r13, %r12
movq %rcx, %r12
jb 0x939b
cmpl $0x0, (%r14)
jne 0x93cc
cmpb $0x28, -0x1(%r15,%rcx)
jne 0x93cc
pushq $0x1
popq %rax
movl %eax, (%r14)
movl %eax, (%rbx)
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
nop
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/rules/comma_spacing.c
// Function: comma_spacing
unsigned int comma_spacing(arraylist_t *buffer, arraylist_t *real_file){
    char *line = NULL;
    size_t length;
    unsigned int counter = 0;
    line_t *e;
    char *display = NULL;
    unsigned int breaks = 0;

    for(size_t i = 0; i < buffer->size; i++){
        e = get_line(buffer, i);
        line = str_remove_comments(e->line);
        length = strlen(line);
        for(size_t j = 0; j < length; j++){
            if(line[j] == ',' && !check_quotes(line, line+j, (int)length) && line[j+1] != ' '){
                counter++;
                breaks = strcount_heading_line_breaks(e->line) + (e->start_real_line == 0 ? 1 : 0);
                display = trim(arraylist_get(real_file, e->start_real_line + breaks - 1));
                print_warning(e->source, e->start_real_line + breaks, display, "No space after a comma");
                free(display);
            }
        }
        free(line);
    }
    return counter;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, 0x20(%rsp)
movq $0x0, 0x8(%rsp)
xorl %esi, %esi
movq %rdi, 0x10(%rsp)
cmpq 0x8(%rdi), %rsi
jae 0x94d4
movq %rsi, 0x18(%rsp)
callq 0x2a1e
movq %rax, %rbp
movq (%rax), %rdi
callq 0x77dc
movq %rax, %r12
movq %rax, %rdi
callq 0x20b0
movq %rax, %r15
xorl %r14d, %r14d
cmpq %r14, %r15
je 0x94ba
cmpb $0x2c, (%r12,%r14)
jne 0x94b2
leaq (%r12,%r14), %rsi
movq %r12, %rdi
movl %r15d, %edx
callq 0x7e2e
testb %al, %al
jne 0x94b2
cmpb $0x20, 0x1(%r12,%r14)
je 0x94b2
movq (%rbp), %rdi
callq 0x7af0
movl %eax, %ebx
movl 0x10(%rbp), %r13d
movl %r13d, %esi
subl $0x1, %esi
adcl %eax, %esi
movq 0x20(%rsp), %rdi
callq 0x6978
movq %rax, %rdi
callq 0x7daf
cmpl $0x1, %r13d
adcl 0x10(%rbp), %ebx
movq %rax, %r13
movq 0x8(%rsp), %rax
incl %eax
movq %rax, 0x8(%rsp)
movq 0x8(%rbp), %rdi
movl %ebx, %esi
movq %r13, %rdx
leaq 0x5546(%rip), %rcx      # 0xe9eb
callq 0x560c
movq %r13, %rdi
callq 0x2030
incq %r14
jmp 0x942b
movq %r12, %rdi
callq 0x2030
movq 0x18(%rsp), %rsi
incq %rsi
movq 0x10(%rsp), %rdi
jmp 0x93fb
movq 0x8(%rsp), %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/rules/max_line_numbers.c
// Function: check_max_line_length
unsigned int check_max_line_length(arraylist_t *file, unsigned int n, char *filename){
	unsigned int counter = 0;

	for(unsigned int i = 0; i < file->size; i++){
		counter += line_length_check(arraylist_get(file, i), n, i, filename);
	}
	return counter;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdx, 0x18(%rsp)
movq %rdi, %r14
movl %esi, 0xc(%rsp)
movl %esi, %r15d
pushq $0x1
popq %rax
movl %eax, %ebx
xorl %r13d, %r13d
movq %r15, 0x10(%rsp)
leal -0x1(%rbx), %esi
cmpq %rsi, 0x8(%r14)
jbe 0x97cf
movq %r14, %rdi
callq 0x6978
movq %rax, %r12
movq %rax, %rdi
callq 0x20b0
xorl %ecx, %ecx
testq %rax, %rax
je 0x97c5
xorl %edx, %edx
cmpb $0xa, -0x1(%r12,%rax)
sete %dl
subq %rdx, %rax
cmpq %r15, %rax
jbe 0x97c5
leaq 0x30(%rsp), %rbp
movq %rbp, %rdi
leaq 0x5268(%rip), %rsi      # 0xe993
movq %rax, %rdx
xorl %eax, %eax
callq 0x2180
leaq 0x24(%rsp), %rdi
leaq 0x5256(%rip), %rsi      # 0xe997
movl 0xc(%rsp), %edx
xorl %eax, %eax
callq 0x2180
leaq 0x52d8(%rip), %rdi      # 0xea2b
movq %rbp, %rsi
callq 0x7bab
movq %rax, %r15
movq %rax, %rdi
leaq 0x524b(%rip), %rsi      # 0xe9b3
callq 0x7bab
movq %rax, %rbp
movq %r15, %rdi
callq 0x2030
movq %rbp, %rdi
leaq 0x24(%rsp), %rsi
callq 0x7bab
movq %rax, %r15
movq %rbp, %rdi
callq 0x2030
movq %r12, %rdi
callq 0x7daf
movq %rax, %r12
movq 0x18(%rsp), %rdi
movl %ebx, %esi
movq %rax, %rdx
movq %r15, %rcx
callq 0x560c
movq %r15, %rdi
movq 0x10(%rsp), %r15
callq 0x2030
movq %r12, %rdi
callq 0x2030
pushq $0x1
popq %rcx
addl %ecx, %r13d
incl %ebx
jmp 0x96da
movl %r13d, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/rules/parsing.c
// Function: fill_variables_list
static void fill_variables_list(scope_t *scope, arraylist_t *variables) {
	node_t  *current = scope->children->head;
	field_t *field   = NULL;

	for(size_t i = 0 ; i < scope->variables->size ; i++) {
		field = arraylist_get(scope->variables, i);
		arraylist_add(variables, field);
	}

	if(current != NULL) {
		do {
			fill_variables_list((scope_t*)current->val, variables);
		} while ((current = current->next) != NULL);
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq 0x8(%rdi), %rax
movq 0x8(%rax), %r12
xorl %r15d, %r15d
movq 0x18(%r14), %rdi
cmpq 0x8(%rdi), %r15
jae 0xa26a
movq %r15, %rsi
callq 0x6978
movq %rbx, %rdi
movq %rax, %rsi
callq 0x68b5
incq %r15
jmp 0xa237
movq (%r12), %rdi
movq %rbx, %rsi
callq 0xa21e
movq 0x8(%r12), %r12
testq %r12, %r12
jne 0xa259
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/rules/parsing.c
// Function: build_wrong_type_message
static char *build_wrong_type_message(wrong_type_t *wrong_type, unsigned char message_type) {
	static const char* message_types[] = {
		"Invalid assignment: expected ",
		"Invalid return type: expected ",
		"Ternary condition operands must have the same type: left is "
	};
	char *message = NULL;
	char *tmp = NULL;
	char *seq = NULL;

	message = strconcat((char*)message_types[message_type] , wrong_type->expected_type->name);
	seq = generate_char_sequence('*', wrong_type->expected_type->is_pointer);
	tmp = strconcat(message, seq);
	free(seq);
	free(message);

	message = strconcat(tmp, (char*)(message_type == WRONG_TYPE_TERNARY ? ", right is " : ", actual "));
	free(tmp);
	tmp = strconcat(message, wrong_type->actual_type->name);
	free(message);
	seq = generate_char_sequence('*', wrong_type->actual_type->is_pointer);
	message = strconcat(tmp, seq);
	free(seq);
	free(tmp);

	return message;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %esi, %r14d
movq %rdi, %rbx
movl %esi, %eax
leaq 0x49d7(%rip), %rcx      # 0xec6c
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x7bab
movq %rax, %r15
movq (%rbx), %rax
movsbl 0x8(%rax), %esi
pushq $0x2a
popq %rbp
movl %ebp, %edi
callq 0x7fe4
movq %rax, %r12
movq %r15, %rdi
movq %rax, %rsi
callq 0x7bab
movq %rax, %r13
movq %r12, %rdi
callq 0x2030
movq %r15, %rdi
callq 0x2030
cmpl $0x2, %r14d
leaq 0x496c(%rip), %rax      # 0xec53
leaq 0x4971(%rip), %rsi      # 0xec5f
cmoveq %rax, %rsi
movq %r13, %rdi
callq 0x7bab
movq %rax, %r14
movq %r13, %rdi
callq 0x2030
movq 0x8(%rbx), %rax
movq (%rax), %rsi
movq %r14, %rdi
callq 0x7bab
movq %rax, %r15
movq %r14, %rdi
callq 0x2030
movq 0x8(%rbx), %rax
movsbl 0x8(%rax), %esi
movl %ebp, %edi
callq 0x7fe4
movq %rax, %rbx
movq %r15, %rdi
movq %rax, %rsi
callq 0x7bab
movq %rax, %r14
movq %rbx, %rdi
callq 0x2030
movq %r15, %rdi
callq 0x2030
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/rules/parsing.c
// Function: free_wrong_type_list
static void free_wrong_type_list(arraylist_t *list) {
	wrong_type_t *wrong_type = NULL;

	for(size_t i = 0 ; i < list->size ; i++) {
		wrong_type = arraylist_get(list, i);
		free(wrong_type->expected_type->name);
		free(wrong_type->expected_type);
		free(wrong_type->actual_type->name);
		free(wrong_type->actual_type);
	}

	arraylist_free(list, 1);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
xorl %r14d, %r14d
cmpq 0x8(%rbx), %r14
jae 0xa3ad
movq %rbx, %rdi
movq %r14, %rsi
callq 0x6978
movq %rax, %r15
movq (%rax), %rax
movq (%rax), %rdi
callq 0x2030
movq (%r15), %rdi
callq 0x2030
movq 0x8(%r15), %rax
movq (%rax), %rdi
callq 0x2030
movq 0x8(%r15), %rdi
callq 0x2030
incq %r14
jmp 0xa36c
pushq $0x1
popq %rsi
movq %rbx, %rdi
popq %rbx
popq %r14
popq %r15
jmp 0x69f4
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O2/System-Glitch[P]ESGILinter-C/src/rules/comments_header.c
// Function: check_comments_header
unsigned int check_comments_header(arraylist_t *file, char *filename) {
	int index = 0;
	int length;
	char *line;

	for(size_t i = 0 ; i < file->size ; i++){
		line = arraylist_get(file, i);
		length = strlen(line);
		index = 0;
		while(is_whitespace(line[index]) && index < length) {
			index++;
		}
		if(index < length - 1) {
			if(line[index] == '/' && line[index + 1] == '*') {
				return 0;
			} else {
				print_warning(filename, i + 1, NULL, "File doesn't start with a comments header");
				return 1;
			}
		}
	}
	print_warning(filename, file->size, NULL, "File doesn't start with a comments header");
	return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, (%rsp)
movq %rdi, %r15
xorl %r14d, %r14d
movq 0x8(%r15), %rax
cmpq %rax, %r14
jae 0xa426
movq %r15, %rdi
movq %r14, %rsi
callq 0x6978
movq %rax, %r12
movq %rax, %rdi
callq 0x20b0
movq %rax, %r13
movslq %r13d, %rbp
xorl %ebx, %ebx
movsbl (%r12,%rbx), %edi
callq 0x7ace
leaq 0x1(%rbx), %rcx
testb %al, %al
je 0xa416
cmpq %rbp, %rbx
movq %rcx, %rbx
jl 0xa3fc
leal -0x1(%rcx), %eax
decl %r13d
cmpl %eax, %r13d
jg 0xa42b
incq %r14
jmp 0xa3d5
movl %eax, %r14d
jmp 0xa43f
cmpb $0x2f, -0x1(%r12,%rcx)
jne 0xa43c
xorl %eax, %eax
cmpb $0x2a, (%r12,%rcx)
je 0xa457
incl %r14d
leaq 0x4832(%rip), %rcx      # 0xec78
movq (%rsp), %rdi
movl %r14d, %esi
xorl %edx, %edx
callq 0x560c
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop