LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/conf.c
// Function: recursive_activation
void recursive_activation(FILE *src, arraylist_t *conf){
    if(src == NULL) return;

    char *line;
    char *get; //fgets return
    int found;
    int enable;
    enable = 0;
    rule_t *e;

    line = malloc(sizeof(char) * 1048);

    get = fgets(line, 1048, src);
    if(get == NULL) { //Unexpected EOF reached
        free(line);
        return;
    }
    if(!is_whitespace(line[0]) && line[0] != '#'){

        found = find_rule_index(conf, "recursive");

        if(strstr(line, "true")){
            enable = 1;
        }
        if(strstr(line, "false")){
            enable = 0;
        }

        if(found >= 0){
            ((rule_t*)(conf->array[found]))->enable= enable;
        }else if(found == -1){
            e = malloc(sizeof(rule_t));

            e->name = malloc(sizeof(char) * 1048);

            strcpy(e->name, "recursive");
            e->value = 0;
            e->enable = enable;
            arraylist_add(conf, e);
        }
    }
    free(line);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
testq %rdi, %rdi
je 0x5f7c
movq %rsi, %r14
movq %rdi, %r15
movl $0x418, %edi            # imm = 0x418
callq 0x2140
movq %rax, %rbx
movq %rax, %rdi
movl $0x418, %esi            # imm = 0x418
movq %r15, %rdx
callq 0x2110
testq %rax, %rax
je 0x5fce
movsbl (%rbx), %edi
callq 0x7f3a
testb %al, %al
jne 0x5fce
cmpb $0x23, (%rbx)
je 0x5fce
leaq 0x8837(%rip), %rsi      # 0xe764
movq %r14, %rdi
callq 0x5b57
movl %eax, %ebp
leaq 0x8830(%rip), %rsi      # 0xe76e
movq %rbx, %rdi
callq 0x21c0
testq %rax, %rax
setne %r15b
leaq 0x881f(%rip), %rsi      # 0xe773
movq %rbx, %rdi
callq 0x21c0
testq %rax, %rax
sete %al
andb %r15b, %al
movzbl %al, %r12d
testl %ebp, %ebp
js 0x5f85
movq (%r14), %rax
movl %ebp, %ecx
movq (%rax,%rcx,8), %rax
movl %r12d, 0x8(%rax)
jmp 0x5fce
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
cmpl $-0x1, %ebp
jne 0x5fce
movl $0x10, %edi
callq 0x2140
movq %rax, %r15
movl $0x418, %edi            # imm = 0x418
callq 0x2140
movq %rax, (%r15)
movabsq $0x7669737275636572, %rcx # imm = 0x7669737275636572
movq %rcx, (%rax)
movw $0x65, 0x8(%rax)
movl $0x0, 0xc(%r15)
movl %r12d, 0x8(%r15)
movq %r14, %rdi
movq %r15, %rsi
callq 0x6c26
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2030
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/conf.c
// Function: get_rule
rule_t *get_rule(arraylist_t *conf, char *name){
    if(conf == NULL || strlen(name) <= 0) return NULL;
    int index = find_rule_index(conf, name);
    if(index >= 0) return ((rule_t*)(arraylist_get(conf, (unsigned int)index)));
    return NULL;
}

// Assembly:
pushq %rbx
testq %rdi, %rdi
je 0x6032
cmpb $0x0, (%rsi)
je 0x6032
movq %rdi, %rbx
callq 0x5b57
testl %eax, %eax
js 0x6032
movl %eax, %esi
movq %rbx, %rdi
popq %rbx
jmp 0x6d0c
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/conf.c
// Function: exclude_filepath
void exclude_filepath(arraylist_t *conf, char *filepath){
    if(strlen(filepath) <= 0) return;

    rule_t *e;

    e = malloc(sizeof(rule_t));
    e->name = malloc(sizeof(char) * 1048);

    strcpy(e->name, "incfilepath_");
    strcat(e->name, filepath);

    e->enable = 1;
    e->value = 0;
    arraylist_add(conf, e);
}

// Assembly:
cmpb $0x0, (%rsi)
je 0x609e
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
movl $0x10, %edi
callq 0x2140
movq %rax, %r15
movl $0x418, %edi            # imm = 0x418
callq 0x2140
movq %rax, (%r15)
movabsq $0x70656c6966636e69, %rcx # imm = 0x70656C6966636E69
movq %rcx, (%rax)
movabsq $0x5f68746170656c, %rcx # imm = 0x5F68746170656C
movq %rcx, 0x5(%rax)
movq %rax, %rdi
movq %r14, %rsi
callq 0x2180
movq $0x1, 0x8(%r15)
movq %rbx, %rdi
movq %r15, %rsi
popq %rbx
popq %r14
popq %r15
jmp 0x6c26
retq
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/conf.c
// Function: free_conf
void free_conf(arraylist_t *conf) {
    if(!conf) return;
    for(size_t i = 0; i < conf->size; i++){
        free(((rule_t*)(arraylist_get(conf,i)))->name);
        free(conf->array[i]);
    }
    arraylist_free(conf, 0);
}

// Assembly:
testq %rdi, %rdi
je 0x6141
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpq $0x0, 0x8(%rdi)
je 0x6130
xorl %r14d, %r14d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x6d0c
movq (%rax), %rdi
callq 0x2030
movq (%rbx), %rax
movq (%rax,%r14,8), %rdi
callq 0x2030
incq %r14
cmpq 0x8(%rbx), %r14
jb 0x6108
movq %rbx, %rdi
xorl %esi, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x6d97
retq
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/scopetree.c
// Function: field_init
field_t *field_init(char *name, char *type, char type_is_pointer, int line_index) {
	field_t *field = malloc(sizeof(field_t));

	if(field != NULL) {
		field->name            = name;
		field->type.name       = type;
		field->type.is_pointer = type_is_pointer;
		field->type.is_literal = 0;
		field->line            = line_index;
		field->is_param        = 0;
		field->value           = NULL;
	}
	return field;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %ecx, %ebx
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %r15
movl $0x28, %edi
callq 0x2140
testq %rax, %rax
je 0x619a
movq %r15, (%rax)
movq %r14, 0x10(%rax)
movb %bpl, 0x18(%rax)
xorl %ecx, %ecx
movb %cl, 0x19(%rax)
movl %ebx, 0x20(%rax)
movb %cl, 0x24(%rax)
movq $0x0, 0x8(%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/scopetree.c
// Function: scope_init
scope_t *scope_init(scope_t *parent) {
	scope_t *scope = malloc(sizeof(scope_t));

	if(scope != NULL) {
		scope->parent    = parent;
		scope->children  = linkedlist_init();
		scope->variables = arraylist_init(10);
		scope->functions = arraylist_init(10);
		scope->from_line = -1;
		scope->to_line   = -1;
		scope->from_char = -1;
		scope->to_char   = -1;
	}

	return scope;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
movl $0x30, %edi
callq 0x2140
movq %rax, %rbx
testq %rax, %rax
je 0x61f1
movq %r14, (%rbx)
xorl %eax, %eax
callq 0x8dd0
movq %rax, 0x8(%rbx)
movl $0xa, %edi
callq 0x6b58
movq %rax, 0x18(%rbx)
movl $0xa, %edi
callq 0x6b58
movq %rax, 0x10(%rbx)
pcmpeqd %xmm0, %xmm0
movdqu %xmm0, 0x20(%rbx)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/scopetree.c
// Function: is_in_child_scope
scope_t *is_in_child_scope(scope_t *scope, int line) {
	scope_t *child;
	node_t * current = scope->children->head;
	if(current != NULL) {
		do {
			child = (scope_t*) current->val;
			if(line >= child->from_line && line <= child->to_line)
				return child;
		} while ((current = current->next) != NULL);
	}

	return NULL;
}

// Assembly:
movq 0x8(%rdi), %rax
movq 0x8(%rax), %rcx
testq %rcx, %rcx
je 0x621c
movq (%rcx), %rax
cmpl %esi, 0x20(%rax)
jg 0x6216
cmpl %esi, 0x28(%rax)
jge 0x621e
movq 0x8(%rcx), %rcx
jmp 0x6204
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/scopetree.c
// Function: parse_scope_content
static void parse_scope_content(arraylist_t *file, scope_t *scope) {
	char *line;
	arraylist_t *variables;

	for(int i = scope->from_line ; i <= scope->to_line ; i++) {
		if(is_in_child_scope(scope, i)) continue; //Ignore lines inside child scopes
		line = (char*) arraylist_get(file, i);
		variables = get_variables_from_declaration(i,line);
		if(variables != NULL) {
			arraylist_add_all(scope->variables, variables);
			arraylist_free(variables, 0);
			variables = NULL;
		}
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movslq 0x20(%rsi), %r15
cmpl 0x28(%rsi), %r15d
jg 0x67d5
movq %rsi, %rbx
movq %rdi, %r14
movq 0x8(%rbx), %rax
movq 0x8(%rax), %rax
testq %rax, %rax
je 0x6791
movq (%rax), %rcx
movslq 0x20(%rcx), %rdx
cmpq %rdx, %r15
jl 0x6771
movslq 0x28(%rcx), %rcx
cmpq %rcx, %r15
jg 0x6771
jmp 0x67c5
movq %r14, %rdi
movq %r15, %rsi
callq 0x6d0c
movl %r15d, %edi
movq %rax, %rsi
callq 0x8934
testq %rax, %rax
je 0x67c5
movq %rax, %r12
movq 0x18(%rbx), %rdi
movq %rax, %rsi
callq 0x6cd6
movq %r12, %rdi
xorl %esi, %esi
callq 0x6d97
leaq 0x1(%r15), %rax
movslq 0x28(%rbx), %rcx
cmpq %rcx, %r15
movq %rax, %r15
jl 0x676d
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/scopetree.c
// Function: scope_free
void scope_free(scope_t *scope) {
	node_t * current;

	//Don't free parent !
	
	//Recursively free children
	current = scope->children->head;
	while (current != NULL) {
		scope_free(current->val);
		current->val = NULL;
		current = current->next;
	}
	linkedlist_free(scope->children);

	//Free functions
	for(size_t i = 0 ; i < scope->functions->size; i++) {
		function_free(scope->functions->array[i]);
		scope->functions->array[i] = NULL;
	}
	arraylist_free(scope->functions, 1);

	//Free variables
	field_list_free(scope->variables);

	free(scope);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x8(%rdi), %rdi
movq 0x8(%rdi), %r14
testq %r14, %r14
je 0x6811
movq (%r14), %rdi
callq 0x67e1
movq $0x0, (%r14)
movq 0x8(%r14), %r14
testq %r14, %r14
jne 0x67f5
movq 0x8(%rbx), %rdi
callq 0x8fe7
movq 0x10(%rbx), %rdi
cmpq $0x0, 0x8(%rdi)
je 0x684c
xorl %r14d, %r14d
movq (%rdi), %rax
movq (%rax,%r14,8), %rdi
callq 0xb760
movq 0x10(%rbx), %rax
movq (%rax), %rax
movq $0x0, (%rax,%r14,8)
incq %r14
movq 0x10(%rbx), %rdi
cmpq 0x8(%rdi), %r14
jb 0x6824
movl $0x1, %esi
callq 0x6d97
movq 0x18(%rbx), %rdi
callq 0x6953
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x2030
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/scopetree.c
// Function: type_exists
unsigned char type_exists(char *type) {
	static const char *known_types[] = {"char","short","int","unsigned","signed","long","signed","float","double","size_t","void"};
	for(unsigned i = 0 ; i < 11 ; i++)
		if(!strcmp(type, known_types[i]))
			return 1;

	return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
leaq 0x8013(%rip), %rsi      # 0xe8f6
callq 0x2120
testl %eax, %eax
je 0x691f
xorl %ecx, %ecx
leaq 0x7f5f(%rip), %r14      # 0xe854
movq %rcx, %r15
cmpq $0xa, %rcx
je 0x6916
movslq 0x4(%r14,%r15,4), %rsi
addq %r14, %rsi
movq %rbx, %rdi
callq 0x2120
leaq 0x1(%r15), %rcx
testl %eax, %eax
jne 0x68f5
cmpq $0xa, %r15
setb %al
jmp 0x6921
movb $0x1, %al
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/scopetree.c
// Function: field_free
void field_free(field_t *field) {
	free(field->name);
	if(field->value != NULL) {
		free(field->value);
	}
	free(field->type.name);
	free(field);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rdi
callq 0x2030
movq 0x8(%rbx), %rdi
testq %rdi, %rdi
je 0x6941
callq 0x2030
movq 0x10(%rbx), %rdi
callq 0x2030
movq %rbx, %rdi
popq %rbx
jmp 0x2030
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/scopetree.c
// Function: field_list_free
void field_list_free(arraylist_t *list) {
	field_t *field = NULL;
	for(unsigned int i = 0 ; i < list->size ; i++) {
		field = arraylist_get(list, i);
		field_free(field);
	}
	arraylist_free(list, 0);
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpq $0x0, 0x8(%rdi)
je 0x6981
movl $0x1, %ebp
xorl %esi, %esi
movq %rbx, %rdi
callq 0x6d0c
movq %rax, %rdi
callq 0x6927
movl %ebp, %esi
incl %ebp
cmpq %rsi, 0x8(%rbx)
ja 0x6967
movq %rbx, %rdi
xorl %esi, %esi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x6d97
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/scopetree.c
// Function: function_list_free
void function_list_free(arraylist_t *list) {
	function_t *function = NULL;
	for(unsigned int i = 0 ; i < list->size ; i++) {
		function = arraylist_get(list, i);
		function_free(function);
	}
	arraylist_free(list, 0);
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpq $0x0, 0x8(%rdi)
je 0x69bf
movl $0x1, %ebp
xorl %esi, %esi
movq %rbx, %rdi
callq 0x6d0c
movq %rax, %rdi
callq 0xb760
movl %ebp, %esi
incl %ebp
cmpq %rsi, 0x8(%rbx)
ja 0x69a5
movq %rbx, %rdi
xorl %esi, %esi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x6d97
// File: /workspace/github_c_makefile_star2_O3/System-Glitch[P]ESGILinter-C/src/scopetree.c
// Function: find_function
function_t *find_function(scope_t *scope, char *name, unsigned char allow_prototypes) {
	scope_t *root = get_root_scope(scope);
	function_t *function = NULL;
	for(size_t i = 0 ; i < root->functions->size ; i++) {
		function = arraylist_get(root->functions, i);
		if(!strcmp(name, function->name) && (allow_prototypes || !function->is_prototype))
			return function;
	}
	return NULL;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movl %edx, %ebx
movq %rsi, %r14
movq %rdi, %r13
movq (%rdi), %rdi
testq %rdi, %rdi
jne 0x6a07
movq 0x10(%r13), %rdi
cmpq $0x0, 0x8(%rdi)
je 0x6a53
xorl %r15d, %r15d
movq %r15, %rsi
callq 0x6d0c
movq %rax, %r12
movq (%rax), %rsi
movq %r14, %rdi
callq 0x2120
testl %eax, %eax
jne 0x6a46
testb %bl, %bl
jne 0x6a56
cmpb $0x0, 0x18(%r12)
je 0x6a56
incq %r15
movq 0x10(%r13), %rdi
cmpq 0x8(%rdi), %r15
jb 0x6a20
xorl %r12d, %r12d
movq %r12, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/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 %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x6ab3
movq %rsi, %rbx
movq %rdi, %r14
movq 0x18(%r14), %rdi
cmpq $0x0, 0x8(%rdi)
je 0x6aab
xorl %r15d, %r15d
movq %r15, %rsi
callq 0x6d0c
movq %rax, %r12
movq (%rax), %rsi
movq %rbx, %rdi
callq 0x2120
testl %eax, %eax
je 0x6ab6
incq %r15
movq 0x18(%r14), %rdi
cmpq 0x8(%rdi), %r15
jb 0x6a84
movq (%r14), %r14
testq %r14, %r14
jne 0x6a76
xorl %r12d, %r12d
movq %r12, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x10(%rdi), %r14
cmpq $0x0, 0x8(%r14)
je 0x6b0a
movq %rsi, %rbx
xorl %r15d, %r15d
movq %r14, %rdi
movq %r15, %rsi
callq 0x6d0c
cmpb $0x0, 0x18(%rax)
je 0x6b01
movq %rax, %r12
movq (%rax), %rdi
movq %rbx, %rsi
callq 0x2120
testl %eax, %eax
je 0x6b0d
incq %r15
cmpq 0x8(%r14), %r15
jb 0x6ade
xorl %r12d, %r12d
movq %r12, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/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 %r14
pushq %rbx
movl %edi, %ebp
movl $0x18, %edi
callq 0x2140
testq %rax, %rax
je 0x6bae
movq %rax, %rbx
movq $0x0, 0x8(%rax)
movl %ebp, %r14d
movq %r14, 0x10(%rax)
shlq $0x3, %r14
movq %r14, %rdi
callq 0x2140
movq %rax, (%rbx)
testq %rax, %rax
je 0x6ba6
testl %ebp, %ebp
je 0x6bb0
movq %rax, %rdi
xorl %esi, %esi
movq %r14, %rdx
callq 0x20f0
jmp 0x6bb0
movq %rbx, %rdi
callq 0x2030
xorl %ebx, %ebx
movq %rbx, %rax
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/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
movl $0x18, %edi
callq 0x2140
testq %rax, %rax
je 0x6c1b
movq %rax, %rbx
movq 0x8(%r14), %rax
movq %rax, 0x8(%rbx)
movq 0x10(%r14), %r15
movq %r15, 0x10(%rbx)
leaq (,%r15,8), %rdi
callq 0x2140
movq %rax, (%rbx)
testq %rax, %rax
je 0x6c13
testq %r15, %r15
je 0x6c1d
movq (%r14), %rcx
xorl %edx, %edx
movq (%rcx,%rdx,8), %rsi
movq %rsi, (%rax,%rdx,8)
incq %rdx
cmpq %rdx, %r15
jne 0x6c01
jmp 0x6c1d
movq %rbx, %rdi
callq 0x2030
xorl %ebx, %ebx
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x6d6c
movq (%rdi), %rax
movq (%rax,%rsi,8), %rax
testq %rax, %rax
je 0x6d6c
leaq 0x8(,%rsi,8), %rsi
xorl %r8d, %r8d
movq (%rdi), %r9
addq %rsi, %r9
movq (%r9,%r8,8), %r10
movq %r10, -0x8(%r9,%r8,8)
incq %r8
cmpq %rdx, %r8
jb 0x6d40
movq (%rdi), %rdx
leaq -0x1(%rcx), %rsi
movq %rsi, 0x8(%rdi)
movq $0x0, -0x8(%rdx,%rcx,8)
retq
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O3/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), %rcx
movq $-0x1, %rax
testq %rcx, %rcx
je 0x6d92
movq (%rdi), %rdi
xorl %edx, %edx
cmpq %rsi, (%rdi,%rdx,8)
je 0x6d93
incq %rdx
cmpq %rdx, %rcx
jne 0x6d84
retq
movq %rdx, %rax
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x6dcb
movq 0x8(%rbx), %rax
testq %rax, %rax
je 0x6dcb
xorl %r14d, %r14d
movq (%rbx), %rcx
movq (%rcx,%r14,8), %rdi
testq %rdi, %rdi
je 0x6dc3
callq 0x2030
movq 0x8(%rbx), %rax
incq %r14
cmpq %rax, %r14
jb 0x6dae
movq (%rbx), %rdi
callq 0x2030
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x2030
nop
// File: /workspace/github_c_makefile_star2_O3/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 0x70b0
movq %rax, %r15
movq %rdx, %r13
leaq 0x6dc5(%rip), %rsi      # 0xe8b0
movq %rax, %rdi
callq 0x2120
testl %eax, %eax
jne 0x7b15
movq %r15, %rdi
callq 0x2030
movq %r12, %rdi
movl %ebp, %esi
movq %r14, %rdx
movq %rbx, %rcx
callq 0xb780
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_O3/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 %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %rbx
movl $0x10, %edi
callq 0x2140
movq %rax, %r15
movl $0x10, %edi
callq 0x2140
movq %rax, %r13
movq %rax, (%r15)
movq (%r12), %rdi
callq 0x7dc1
movq %rax, (%r13)
movb 0x8(%r12), %al
movb %al, 0x8(%r13)
movl $0x10, %edi
callq 0x2140
movq %rax, %r12
movq %rax, 0x8(%r15)
movq (%r14), %rdi
callq 0x7dc1
movq %rax, (%r12)
movb 0x8(%r14), %al
movb %al, 0x8(%r12)
movq %rbx, %rdi
movq %r15, %rsi
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x6c26
// File: /workspace/github_c_makefile_star2_O3/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 %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x6cf2(%rip), %rsi      # 0xe8b0
callq 0x2120
testl %eax, %eax
je 0x7c40
leaq 0x6ce2(%rip), %rsi      # 0xe8b0
movq %rbx, %rdi
callq 0x2120
testl %eax, %eax
je 0x7c40
leaq 0xb09f(%rip), %r12      # 0x12c80
xorl %r15d, %r15d
movq (%r12), %rdi
movq %r14, %rsi
callq 0x2120
testl %eax, %eax
je 0x7c07
incq %r15
addq $0x8, %r12
cmpq $0x11, %r15
jne 0x7be4
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
leaq 0xb072(%rip), %r12      # 0x12c80
xorl %r14d, %r14d
movq (%r12), %rdi
movq %rbx, %rsi
callq 0x2120
testl %eax, %eax
je 0x7c34
incq %r14
addq $0x8, %r12
cmpq $0x11, %r14
jne 0x7c11
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
cmpl %r14d, %r15d
cmovgl %r15d, %r14d
movl %r14d, %eax
jmp 0x7c45
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O3/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 0x7e0e
movq %rdi, %rbx
callq 0x20b0
movq %rax, %r14
shlq $0x20, %r14
movabsq $0x100000000, %rdi      # imm = 0x100000000
addq %r14, %rdi
sarq $0x20, %rdi
callq 0x2140
testq %rax, %rax
je 0x7e0e
movq %rax, %r15
movq %rax, %rdi
movq %rbx, %rsi
callq 0x2080
sarq $0x20, %r14
movb $0x0, (%r15,%r14)
jmp 0x7e11
xorl %r15d, %r15d
movq %r15, %rax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x7e60
movl %edx, %r15d
movl %esi, %ebp
movq %rdi, %r14
leal 0x1(%r15), %eax
movslq %eax, %rdi
callq 0x2140
testq %rax, %rax
je 0x7e60
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 0x7e62
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/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
testl %eax, %eax
je 0x7e9e
movl %eax, %ecx
xorl %edx, %edx
xorl %eax, %eax
xorl %esi, %esi
cmpb %bl, (%r14,%rdx)
sete %sil
addl %esi, %eax
incq %rdx
cmpq %rdx, %rcx
jne 0x7e88
jmp 0x7ea0
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O3/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
testb %r15b, %r15b
je 0x7efa
movl %ecx, %eax
decl %eax
js 0x7f2d
movl %eax, %eax
addq %rax, %r14
xorl %eax, %eax
movzbl (%r14), %edx
cmpb %bpl, %dl
je 0x7ee8
testb %bl, %bl
je 0x7f2f
leal -0x9(%rdx), %esi
cmpl $0x5, %esi
jae 0x7ef3
incl %eax
decq %r14
cmpl %eax, %ecx
jne 0x7ed3
jmp 0x7f29
cmpl $0x20, %edx
je 0x7ee8
jmp 0x7f2f
testl %ecx, %ecx
je 0x7f2d
movl %ecx, %edx
xorl %eax, %eax
movzbl (%r14,%rax), %esi
cmpb %bpl, %sil
je 0x7f18
testb %bl, %bl
je 0x7f2f
leal -0x9(%rsi), %edi
cmpl $0x5, %edi
jae 0x7f22
incq %rax
cmpq %rax, %rdx
jne 0x7f02
jmp 0x7f29
cmpl $0x20, %esi
je 0x7f18
jmp 0x7f2f
movl %ecx, %eax
jmp 0x7f2f
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x7c54
movq %rax, %rbx
movq %rax, %rdi
callq 0x20b0
testl %eax, %eax
je 0x7fa7
movl %eax, %eax
xorl %ecx, %ecx
movabsq $0x100003a00, %rdx      # imm = 0x100003A00
xorl %ebp, %ebp
movzbl (%rbx,%rcx), %esi
cmpq $0x20, %rsi
ja 0x7fa9
btq %rsi, %rdx
jae 0x7f9d
incq %rcx
cmpq %rcx, %rax
jne 0x7f83
jmp 0x7fa9
cmpq $0xa, %rsi
jne 0x7fa9
incl %ebp
jmp 0x7f93
xorl %ebp, %ebp
movq %rbx, %rdi
callq 0x2030
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/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
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
testq %rcx, %rcx
je 0x7fe9
xorl %edx, %edx
cmpb %bl, (%r14,%rdx)
je 0x7fe7
incq %rdx
cmpq %rdx, %rcx
jne 0x7fd7
jmp 0x7fe9
movl %edx, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O3/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
movl %ecx, %eax
subl $0x1, %eax
jb 0x8019
movl %ecx, %edx
movl %eax, %ecx
cmpb %bl, (%r14,%rdx)
jne 0x8006
incl %eax
jmp 0x801e
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x8046
movq %r14, %rdi
callq 0x20b0
movq %rax, %r15
jmp 0x8049
xorl %r15d, %r15d
testq %rbx, %rbx
je 0x8059
movq %rbx, %rdi
callq 0x20b0
addl %eax, %r15d
leal 0x1(%r15), %edi
callq 0x2140
movq %rax, %r12
testq %rax, %rax
je 0x80a2
decl %r15d
xorl %eax, %eax
movb %al, (%r12)
movb %al, (%r12,%r15)
testq %r14, %r14
je 0x8087
movq %r12, %rdi
movq %r14, %rsi
callq 0x2180
testq %rbx, %rbx
je 0x80a2
movq %r12, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x2180
movq %r12, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/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
subq $0x18, %rsp
testq %rdi, %rdi
sete %al
testq %rdx, %rdx
sete %cl
xorl %r15d, %r15d
orb %al, %cl
jne 0x8179
movq %rdx, %rbx
movl %esi, %r13d
movq %rdi, %r14
movl %esi, %ebp
testl %esi, %esi
je 0x8104
xorl %r12d, %r12d
xorl %r15d, %r15d
movq (%r14,%r12,8), %rdi
testq %rdi, %rdi
je 0x80fc
callq 0x20b0
addl %eax, %r15d
incq %r12
cmpq %r12, %rbp
jne 0x80eb
leal -0x1(%r13), %r12d
movq %rbx, %rdi
callq 0x20b0
movq %r13, 0x10(%rsp)
movq %rax, %r13
movl %r12d, 0xc(%rsp)
imull %r12d, %r13d
leal (%r15,%r13), %edi
incl %edi
callq 0x2140
testq %rax, %rax
je 0x8179
movq %rax, %r12
addl %r15d, %r13d
decl %r13d
xorl %eax, %eax
movb %al, (%r12)
movb %al, (%r12,%r13)
cmpl $0x0, 0x10(%rsp)
je 0x817c
movl 0xc(%rsp), %r15d
xorl %r13d, %r13d
movq (%r14,%r13,8), %rsi
movq %r12, %rdi
callq 0x2180
cmpq %r15, %r13
jae 0x816f
movq %r12, %rdi
movq %rbx, %rsi
callq 0x2180
incq %r13
cmpq %r13, %rbp
jne 0x8153
jmp 0x817c
xorl %r12d, %r12d
movq %r12, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x2140
movq %rax, %r15
testq %rax, %rax
je 0x81fc
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_O3/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
movzbl (%rbx,%rcx), %edx
leal -0x9(%rdx), %esi
cmpl $0x5, %esi
jae 0x822c
cmpq %rax, %rcx
jae 0x8231
incq %rcx
jmp 0x8216
cmpl $0x20, %edx
je 0x8222
addq %rcx, %rbx
movq %rbx, %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/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
movq %rdi, %rbx
callq 0x20b0
movq %rax, %rcx
addq %rbx, %rcx
movzbl (%rbx), %edx
leal -0x9(%rdx), %esi
cmpl $0x5, %esi
jae 0x825e
subq $0x1, %rax
jb 0x8265
incq %rbx
jmp 0x8248
cmpl $0x20, %edx
je 0x8253
jmp 0x8268
movq %rcx, %rbx
movq %rbx, %rdi
callq 0x7dc1
movq %rax, %rbx
movq %rax, %rdi
callq 0x20b0
movq %rax, %rdx
movq %rdx, %rcx
movzbl -0x1(%rbx,%rdx), %edx
leal -0x9(%rdx), %esi
cmpl $0x5, %esi
jae 0x8299
leaq -0x1(%rcx), %rdx
cmpq %rax, %rdx
jb 0x827e
jmp 0x829e
cmpl $0x20, %edx
je 0x828e
movb $0x0, (%rbx,%rcx)
movq %rbx, %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/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
testl %esi, %esi
js 0x832a
movl %esi, %eax
movl %eax, %ecx
cmpb $0x22, (%rdi,%rcx)
je 0x82f8
leal -0x1(%rax), %ecx
testl %eax, %eax
movl %ecx, %eax
jg 0x82e5
jmp 0x832a
cmpl %edx, %esi
jge 0x832a
andl $0x7fffffff, %esi       # imm = 0x7FFFFFFF
movb $0x1, %al
cmpb $0x22, (%rdi,%rsi)
je 0x8329
movslq %edx, %rax
incq %rsi
movl %edx, %ecx
movq %rsi, %rdx
cmpl %edx, %ecx
je 0x8323
leaq 0x1(%rdx), %rsi
cmpb $0x22, (%rdi,%rdx)
jne 0x8312
cmpq %rax, %rdx
setl %al
retq
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O3/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:
movq %rsi, %rax
subq %rdi, %rax
testl %eax, %eax
js 0x83cf
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %edx, %ebx
movq %rdi, %r15
movq %rax, 0x10(%rsp)
movq %rax, %r12
andl $0x7fffffff, %r12d      # imm = 0x7FFFFFFF
movq %rsi, 0x8(%rsp)
movl %esi, %ebp
subl %r15d, %ebp
andl $0x7fffffff, %ebp       # imm = 0x7FFFFFFF
incl %ebp
leaq (%rdi,%r12), %r13
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
movzbl (%r13), %eax
cmpl $0x28, %eax
je 0x839f
cmpl $0x29, %eax
jne 0x83b5
movq %r15, %rdi
movq %r13, %rsi
movl %ebx, %edx
callq 0x82dc
decb %al
movsbl %al, %eax
addl %eax, %r14d
jmp 0x83b5
movq %r15, %rdi
movq %r13, %rsi
movl %ebx, %edx
callq 0x82dc
testb %al, %al
jne 0x83b5
incl %r14d
je 0x83d2
decl %ebp
decq %r13
testl %ebp, %ebp
jg 0x8379
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %eax, %eax
retq
cmpl %ebx, 0x10(%rsp)
jge 0x83be
addq %r15, %r12
movq 0x8(%rsp), %r14
subl %r15d, %r14d
andl $0x7fffffff, %r14d      # imm = 0x7FFFFFFF
movl $0x1, %ebp
movzbl (%r12), %eax
cmpl $0x29, %eax
je 0x8414
cmpl $0x28, %eax
jne 0x8429
movq %r15, %rdi
movq %r12, %rsi
movl %ebx, %edx
callq 0x82dc
xorb $0x1, %al
movzbl %al, %eax
addl %eax, %ebp
jmp 0x8429
movq %r15, %rdi
movq %r12, %rsi
movl %ebx, %edx
callq 0x82dc
testb %al, %al
jne 0x8429
decl %ebp
je 0x8438
incq %r12
incl %r14d
xorl %eax, %eax
cmpl %ebx, %r14d
jl 0x83ef
jmp 0x83c0
movb $0x1, %al
jmp 0x83c0
// File: /workspace/github_c_makefile_star2_O3/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, %rcx
xorl %eax, %eax
xorl %r8d, %r8d
movzbl (%rdi,%r8), %edx
leal -0x9(%rdx), %r9d
cmpl $0x5, %r9d
jae 0x8461
leaq 0x1(%r8), %rdx
cmpq %rcx, %r8
movq %rdx, %r8
jl 0x8444
jmp 0x84a7
cmpl $0x20, %edx
je 0x8453
cmpl $0x28, %edx
jne 0x84a7
leaq 0x1(%r8), %rcx
xorl %eax, %eax
cmpl %esi, %ecx
jge 0x84a7
leal -0x1(%rsi), %r9d
movl $0x1, %r10d
xorl %edx, %edx
movzbl 0x1(%rdi,%r8), %r11d
cmpl $0x29, %r11d
je 0x8498
cmpl $0x28, %r11d
jne 0x849d
incl %r10d
jmp 0x849d
decl %r10d
je 0x84af
incq %r8
incl %edx
cmpl %r8d, %r9d
jne 0x8481
retq
cmpl $0x20, %eax
je 0x84bf
jmp 0x84f0
movzbl 0x2(%rdi,%r8), %eax
leal -0x9(%rax), %r9d
cmpl $0x5, %r9d
jae 0x84a8
incq %r8
leal 0x1(%r8), %eax
cmpl %esi, %eax
jl 0x84af
pushq %rbx
movl %ecx, %esi
callq 0x7e1a
movq %rax, %rbx
movq %rax, %rdi
callq 0x20b0
movq %rbx, %rdi
movl %eax, %esi
callq 0x843c
testq %rax, %rax
cmoveq %rbx, %rax
popq %rbx
retq
addl $0x2, %r8d
cmpl %esi, %r8d
jge 0x84ca
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O3/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 %rbp
pushq %r14
pushq %rbx
movl %esi, %r14d
movl %edi, %ebp
leal 0x1(%r14), %edi
callq 0x2140
movq %rax, %rbx
testl %r14d, %r14d
je 0x852a
movl %r14d, %r14d
movzbl %bpl, %esi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x20f0
jmp 0x852d
xorl %r14d, %r14d
movb $0x0, (%rbx,%r14)
movq %rbx, %rax
popq %rbx
popq %r14
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/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
movl $0x10, %edi
callq 0x2140
testq %rax, %rax
je 0x8dee
movl $0x0, (%rax)
movq $0x0, 0x8(%rax)
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x8e4e
movl (%rbx), %ecx
testl %ecx, %ecx
je 0x8e26
jle 0x8e31
movl $0x1, %eax
movq %rbx, %r15
movq 0x8(%r15), %r15
cmpl %ecx, %eax
jge 0x8e34
incl %eax
testq %r15, %r15
jne 0x8e15
jmp 0x8e34
movq %rax, 0x8(%rbx)
movl $0x1, %eax
jmp 0x8e46
xorl %r15d, %r15d
movq %r14, %rdi
xorl %esi, %esi
callq 0x8e4e
movq %rax, 0x8(%r15)
movl (%rbx), %eax
incl %eax
movl %eax, (%rbx)
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/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
movl $0x10, %edi
callq 0x2140
testq %rax, %rax
je 0x8e76
movq %r14, (%rax)
movq %rbx, 0x8(%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movl $0x1, %edi
callq 0x21a0
// File: /workspace/github_c_makefile_star2_O3/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 0x8eec
movq %rdi, %rbx
testl %esi, %esi
je 0x8ef4
movl $0x1, %ecx
movq %rbx, %rax
movq 0x8(%rax), %rax
cmpl %esi, %ecx
jge 0x8ec9
incl %ecx
testq %rax, %rax
jne 0x8eba
movq 0x8(%rax), %r14
movq 0x8(%r14), %rcx
movq %rcx, 0x8(%rax)
movq (%r14), %rdi
testq %rdi, %rdi
je 0x8ee2
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 0x8f03
// File: /workspace/github_c_makefile_star2_O3/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 0x8f3d
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x8(%rdi), %rdi
movq (%rdi), %rax
movq 0x8(%rdi), %r14
testq %rax, %rax
je 0x8f2b
movq %rax, %rdi
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_O3/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 %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl %esi, (%rdi)
jne 0x8f85
movq %rbx, %rdi
movq %rdx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x8df0
testl %esi, %esi
je 0x8fb2
movl $0x1, %eax
movq %rbx, %r14
movq 0x8(%r14), %r14
cmpl %esi, %eax
jae 0x8fa0
incl %eax
testq %r14, %r14
jne 0x8f91
movq 0x8(%r14), %rsi
movq %rdx, %rdi
callq 0x8e4e
movq %rax, 0x8(%r14)
jmp 0x8fc2
movq 0x8(%rbx), %rsi
movq %rdx, %rdi
callq 0x8e4e
movq %rax, 0x8(%rbx)
incl (%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x8e4e
movq %rax, 0x8(%rbx)
incl (%rbx)
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x902a
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x8(%rbx), %r14
testq %r14, %r14
je 0x901b
movq 0x8(%r14), %rax
movq %rax, 0x8(%rbx)
movq (%r14), %rdi
testq %rdi, %rdi
je 0x9011
callq 0x2030
movq %r14, %rdi
callq 0x2030
jmp 0x8ff3
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x2030
retq
nop
// File: /workspace/github_c_makefile_star2_O3/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 0x90e7
movq %rdi, %r14
cmpq $0x0, 0x8(%rdi)
je 0x90ee
movq %rsi, %rbx
xorl %r15d, %r15d
leaq 0x5900(%rip), %r12      # 0xe95b
xorl %ebp, %ebp
movq %r14, %rdi
movq %r15, %rsi
callq 0x6d0c
movq %rax, %r13
movq %rax, %rdi
movl $0xa, %esi
callq 0x7ff1
movl $0x0, %edx
testl %eax, %eax
jle 0x90d6
movl %eax, %ecx
movb -0x1(%r13,%rcx), %dl
cmpb $0x20, %dl
jne 0x90b9
movq %r13, %rdi
callq 0x8239
movq %rax, %r13
leal 0x1(%r15), %esi
movq %rbx, %rdi
movq %rax, %rdx
movq %r12, %rcx
callq 0x585c
movq %r13, %rdi
callq 0x2030
movl $0x1, %edx
jmp 0x90d6
cmpl $0x1, %eax
sete %al
cmpb $0xd, %dl
setne %dl
orb %al, %dl
movl $0x0, %edx
jne 0x90d6
cmpb $0x20, -0x2(%r13,%rcx)
je 0x908d
addl %edx, %ebp
incq %r15
cmpq 0x8(%r14), %r15
jb 0x905d
jmp 0x90f0
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
jmp 0x90f0
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)