// File: /workspace/github_c_makefile_star2_O1/been-jamming[P]MinimalCC/expression.c
// Function: compile_variable
void compile_variable(value *output, char **c, unsigned char dereference, unsigned char force_stack, FILE *output_file){
	char *start;
	char varname[32] = {0};
	unsigned int varname_length = 0;
	variable *var;
	int i;

	skip_whitespace(c);
	start = *c;
	while(alphanumeric(**c) && varname_length < 31){
		++*c;
		varname_length++;
	}
	memcpy(varname, start, varname_length);
	varname[31] = '\0';

	for(i = current_scope; i >= 0; i--){
		var = read_dictionary(*local_variables[i], varname, 0);
		if(var){
			break;
		}
	}

	if(!var){
		var = read_dictionary(global_variables, varname, 0);
		if(!var){
			snprintf(error_message, sizeof(error_message), "Unrecognized variable '%s'", varname);
			do_error(1);
		}
		compile_global_variable(output, var, dereference, force_stack, output_file);
	} else {
		compile_local_variable(output, var, dereference, force_stack, output_file);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %r8, 0x48(%rsp)
movl %ecx, 0x58(%rsp)
movl %edx, %ebp
movq %rsi, %r12
movq %rdi, %rbx
xorps %xmm0, %xmm0
movaps %xmm0, 0xb0(%rsp)
movaps %xmm0, 0xa0(%rsp)
movq %rsi, %rdi
callq 0x799f
movq (%r12), %r14
movsbl (%r14), %edi
callq 0x753d
testb %al, %al
je 0x2e32
xorl %r13d, %r13d
movq (%r12), %rax
leaq 0x1(%rax), %rcx
movq %rcx, (%r12)
movsbl 0x1(%rax), %edi
callq 0x753d
leaq 0x1(%r13), %rdx
testb %al, %al
je 0x2e34
cmpl $0x1e, %r13d
movq %rdx, %r13
jb 0x2e0a
jmp 0x2e34
xorl %edx, %edx
leaq 0xa0(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x1130
movb $0x0, 0x1f(%r12)
movslq 0xa474(%rip), %r12      # 0xd2c8
testq %r12, %r12
js 0x2e9e
movl %ebp, %r15d
leaq 0xa46d(%rip), %rax      # 0xd2d0
leaq (%rax,%r12,8), %rbp
incq %r12
leaq 0xa0(%rsp), %r14
xorl %r13d, %r13d
movq (%rbp), %rsi
movl $0x9, %ecx
movq %rsp, %rdi
rep  movsq (%rsi), %es:(%rdi)
movq %r14, %rdi
xorl %esi, %esi
callq 0x734d
testq %rax, %rax
jne 0x2ea3
addq $-0x8, %rbp
decq %r12
jg 0x2e75
jmp 0x2ea6
xorl %r13d, %r13d
jmp 0x2ea9
movq %rax, %r13
movl %r15d, %ebp
testq %r13, %r13
je 0x2fa1
movl %ebp, %r15d
leaq 0x8(%r13), %rbp
movups 0x8(%r13), %xmm0
movups 0x18(%r13), %xmm1
movups 0x28(%r13), %xmm2
movups 0x38(%r13), %xmm3
movaps %xmm3, 0x90(%rsp)
movaps %xmm2, 0x80(%rsp)
movaps %xmm1, 0x70(%rsp)
movaps %xmm0, 0x60(%rsp)
movzbl 0x58(%rsp), %edi
callq 0x1505
movq %rax, %r12
leaq 0x10(%rbx), %rax
movq %rax, 0x58(%rsp)
movaps 0x60(%rsp), %xmm0
movaps 0x70(%rsp), %xmm1
movaps 0x80(%rsp), %xmm2
movaps 0x90(%rsp), %xmm3
movups %xmm0, 0x10(%rbx)
movups %xmm1, 0x20(%rbx)
movups %xmm2, 0x30(%rbx)
movups %xmm3, 0x40(%rbx)
movq %r12, (%rbx)
movq %r12, %r14
shrq $0x20, %r14
movl %edx, 0x54(%rsp)
movl %edx, 0x8(%rbx)
movq %rbp, %rdi
movl %r15d, %ebp
callq 0x7a61
testb %bpl, %bpl
je 0x3067
cmpl $0x7, %eax
jne 0x30b6
cmpl $0x1, %r12d
je 0x321b
testl %r12d, %r12d
movq 0x58(%rsp), %r15
jne 0x326e
leaq 0xa2d8(%rip), %rax      # 0xd24c
movl (%rax), %ecx
leaq 0xa2cb(%rip), %rax      # 0xd248
addl (%rax), %ecx
subl 0x48(%r13), %ecx
addl $-0x4, %ecx
leaq 0x6b94(%rip), %rsi      # 0x9b21
movq 0x48(%rsp), %rdi
movl %r14d, %edx
xorl %eax, %eax
callq 0x1710
jmp 0x326e
leaq 0xa2d8(%rip), %rsi      # 0xd280
movl $0x9, %ecx
movq %rsp, %rdi
rep  movsq (%rsi), %es:(%rdi)
leaq 0xa0(%rsp), %rdi
xorl %esi, %esi
callq 0x734d
movq %rax, %r12
testq %rax, %rax
jne 0x2ff6
leaq 0xa50f(%rip), %rdi      # 0xd4e0
leaq 0x660e(%rip), %rdx      # 0x95e6
leaq 0xa0(%rsp), %rcx
movl $0x100, %esi            # imm = 0x100
xorl %eax, %eax
callq 0x10c0
movl $0x1, %edi
callq 0x5ae0
movups 0x8(%r12), %xmm0
movups 0x18(%r12), %xmm1
movups 0x28(%r12), %xmm2
movups 0x38(%r12), %xmm3
movaps %xmm3, 0x90(%rsp)
movaps %xmm2, 0x80(%rsp)
movaps %xmm1, 0x70(%rsp)
movaps %xmm0, 0x60(%rsp)
movzbl 0x58(%rsp), %edi
callq 0x1505
movq %rax, %r15
movl %edx, %r14d
movq %rax, %r13
shrq $0x20, %r13
movq (%r12), %rcx
testl %r15d, %r15d
je 0x310c
leaq 0x6ac2(%rip), %rsi      # 0x9b15
movq 0x48(%rsp), %rdi
movq %rcx, %rdx
xorl %eax, %eax
callq 0x1710
jmp 0x3122
cmpl $0x7, %eax
cmpl $0x1, %r12d
movq 0x58(%rsp), %r15
je 0x31cb
testl %r12d, %r12d
jne 0x3279
leaq 0xa1c3(%rip), %rax      # 0xd24c
movl (%rax), %ecx
leaq 0xa1b6(%rip), %rax      # 0xd248
addl (%rax), %ecx
subl 0x48(%r13), %ecx
addl $-0x4, %ecx
leaq 0x6a7f(%rip), %rsi      # 0x9b21
movq 0x48(%rsp), %rdi
movl %r14d, %edx
xorl %eax, %eax
callq 0x1710
jmp 0x3279
cmpl $0x1, %r12d
je 0x329f
testl %r12d, %r12d
jne 0x3286
leaq 0x60(%rsp), %rdi
xorl %esi, %esi
callq 0x1984
cmpl $0x4, %eax
je 0x3343
cmpl $0x1, %eax
jne 0x3286
leaq 0xa15e(%rip), %rax      # 0xd24c
movl (%rax), %ecx
leaq 0xa151(%rip), %rax      # 0xd248
addl (%rax), %ecx
subl 0x48(%r13), %ecx
addl $-0x4, %ecx
leaq 0x6a41(%rip), %rsi      # 0x9b48
jmp 0x3363
leaq 0x69f5(%rip), %rsi      # 0x9b08
movq 0x48(%rsp), %rdi
movl %r13d, %edx
xorl %eax, %eax
callq 0x1710
movq %r15, (%rbx)
movl %r14d, 0x8(%rbx)
testb %bpl, %bpl
sete 0x50(%rbx)
je 0x313a
cmpb $0x0, 0x48(%r12)
je 0x319e
leaq 0x60(%rsp), %rdi
movl $0x4, %esi
callq 0x7568
cmpl $0x1, %r15d
jne 0x316f
movq %r15, %rdi
movl %r14d, %esi
callq 0x15ba
leaq 0x6474(%rip), %rsi      # 0x95d5
movq 0x48(%rsp), %rdi
movl %eax, %edx
xorl %eax, %eax
callq 0x1710
movaps 0x60(%rsp), %xmm0
movaps 0x70(%rsp), %xmm1
movaps 0x80(%rsp), %xmm2
movaps 0x90(%rsp), %xmm3
movups %xmm3, 0x40(%rbx)
movups %xmm2, 0x30(%rbx)
movups %xmm1, 0x20(%rbx)
movups %xmm0, 0x10(%rbx)
jmp 0x328d
leaq 0x60(%rsp), %rdi
callq 0x7a61
cmpl $0x7, %eax
jne 0x3300
leaq 0x60(%rsp), %r12
movq %r12, %rdi
callq 0x7a79
decl 0x38(%r12)
movq %r12, %rdi
jmp 0x313f
leaq 0xa07a(%rip), %rax      # 0xd24c
movl (%rax), %edx
leaq 0xa06d(%rip), %rax      # 0xd248
addl (%rax), %edx
subl 0x48(%r13), %edx
addl $-0x4, %edx
leaq 0x694a(%rip), %rsi      # 0x9b35
movq 0x48(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x1710
movq %r12, %rdi
movl 0x54(%rsp), %esi
callq 0x15ba
leaq 0x63c8(%rip), %rsi      # 0x95d5
movq %r14, %rdi
movl %eax, %edx
xorl %eax, %eax
callq 0x1710
jmp 0x3279
leaq 0xa02a(%rip), %rax      # 0xd24c
movl (%rax), %edx
leaq 0xa01d(%rip), %rax      # 0xd248
addl (%rax), %edx
subl 0x48(%r13), %edx
addl $-0x4, %edx
leaq 0x68fa(%rip), %rsi      # 0x9b35
movq 0x48(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x1710
movq %r12, %rdi
movl 0x54(%rsp), %esi
callq 0x15ba
leaq 0x6378(%rip), %rsi      # 0x95d5
movq %r14, %rdi
movl %eax, %edx
xorl %eax, %eax
callq 0x1710
movq 0x58(%rsp), %r15
movq %r15, %rdi
callq 0x7a79
decl 0x48(%rbx)
movq %r15, %rdi
movl $0x4, %esi
callq 0x7568
testb %bpl, %bpl
sete 0x50(%rbx)
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x60(%rsp), %rdi
xorl %esi, %esi
callq 0x1984
cmpl $0x4, %eax
je 0x3377
cmpl $0x1, %eax
jne 0x3286
leaq 0x9f8c(%rip), %rax      # 0xd24c
movl (%rax), %edx
leaq 0x9f7f(%rip), %rax      # 0xd248
addl (%rax), %edx
subl 0x48(%r13), %edx
addl $-0x4, %edx
leaq 0x63c2(%rip), %rsi      # 0x969b
movq 0x48(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x1710
movq %r12, %rdi
movl 0x54(%rsp), %esi
callq 0x15ba
leaq 0x6482(%rip), %rsi      # 0x977d
jmp 0x33b9
testl %r15d, %r15d
je 0x33ca
cmpl $0x1, %r15d
jne 0x316f
leaq 0x6474(%rip), %rsi      # 0x978e
movq 0x48(%rsp), %r12
movq %r12, %rdi
xorl %eax, %eax
callq 0x1710
movq %r15, %rdi
movl %r14d, %esi
callq 0x15ba
leaq 0x629a(%rip), %rsi      # 0x95d5
movq %r12, %rdi
jmp 0x3166
leaq 0x9f02(%rip), %rax      # 0xd24c
movl (%rax), %ecx
leaq 0x9ef5(%rip), %rax      # 0xd248
addl (%rax), %ecx
subl 0x48(%r13), %ecx
addl $-0x4, %ecx
leaq 0x5ccf(%rip), %rsi      # 0x9032
movq 0x48(%rsp), %rdi
movl %r14d, %edx
xorl %eax, %eax
callq 0x1710
jmp 0x3286
leaq 0x9ece(%rip), %rax      # 0xd24c
movl (%rax), %edx
leaq 0x9ec1(%rip), %rax      # 0xd248
addl (%rax), %edx
subl 0x48(%r13), %edx
addl $-0x4, %edx
leaq 0x62cf(%rip), %rsi      # 0x9666
movq 0x48(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x1710
movq %r12, %rdi
movl 0x54(%rsp), %esi
callq 0x15ba
leaq 0x621c(%rip), %rsi      # 0x95d5
movq %r14, %rdi
movl %eax, %edx
xorl %eax, %eax
callq 0x1710
jmp 0x3286
leaq 0x638a(%rip), %rsi      # 0x975b
movq 0x48(%rsp), %rdi
movl %r13d, %edx
movl %r13d, %ecx
xorl %eax, %eax
callq 0x1710
jmp 0x316f