// File: pixlark[P]Badge/src/compiler.cc
// Function: Compiler::compile_operator(Operator, int)
void compile_operator(Operator op, Assoc_Ptr assoc)
	{
		switch (op) {
		case OP_NEGATE:
			push(BC::create(BC_NEGATE, assoc));
			break;
		case OP_ADD:
			push(BC::create(BC_ADD, assoc));
			break;
		case OP_SUBTRACT:
			push(BC::create(BC_SUBTRACT, assoc));
			break;
		case OP_MULTIPLY:
			push(BC::create(BC_MULTIPLY, assoc));
			break;
		case OP_DIVIDE:
			push(BC::create(BC_DIVIDE, assoc));
			break;
		case OP_EQUAL:
			push(BC::create(BC_EQUAL, assoc));
			break;
		case OP_NOT_EQUAL:
			push(BC::create(BC_NOT_EQUAL, assoc));
			break;
		case OP_LESS_THAN:
			push(BC::create(BC_LESS_THAN, assoc));
			break;
		case OP_GREATER_THAN:
			push(BC::create(BC_GREATER_THAN, assoc));
			break;
		case OP_LESS_THAN_OR_EQUAL_TO:
			push(BC::create(BC_LESS_THAN_OR_EQUAL_TO, assoc));
			break;
		case OP_GREATER_THAN_OR_EQUAL_TO:
			push(BC::create(BC_GREATER_THAN_OR_EQUAL_TO, assoc));
			break;
		case OP_AND:
			push(BC::create(BC_AND, assoc));
			break;
		case OP_OR:
			push(BC::create(BC_OR, assoc));
			break;
		case OP_NOT:
			push(BC::create(BC_NOT, assoc));
			break;
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x170(%rbp)
movl -0xc(%rbp), %eax
movq %rax, -0x168(%rbp)
subq $0xd, %rax
ja 0xc381
movq -0x168(%rbp), %rax
leaq 0x4412(%rip), %rcx      # 0x103e4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl -0x10(%rbp), %edx
leaq -0x28(%rbp), %rdi
movl $0xb, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0x28(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
jmp 0xc381
movl -0x10(%rbp), %edx
leaq -0x40(%rbp), %rdi
movl $0x7, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0x40(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
jmp 0xc381
movl -0x10(%rbp), %edx
leaq -0x58(%rbp), %rdi
movl $0x8, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0x58(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
jmp 0xc381
movl -0x10(%rbp), %edx
leaq -0x70(%rbp), %rdi
movl $0x9, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0x70(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
jmp 0xc381
movl -0x10(%rbp), %edx
leaq -0x88(%rbp), %rdi
movl $0xa, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0x88(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
jmp 0xc381
movl -0x10(%rbp), %edx
leaq -0xa0(%rbp), %rdi
movl $0xc, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0xa0(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
jmp 0xc381
movl -0x10(%rbp), %edx
leaq -0xb8(%rbp), %rdi
movl $0xd, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0xb8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
jmp 0xc381
movl -0x10(%rbp), %edx
leaq -0xd0(%rbp), %rdi
movl $0xf, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0xd0(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
jmp 0xc381
movl -0x10(%rbp), %edx
leaq -0xe8(%rbp), %rdi
movl $0xe, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0xe8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
jmp 0xc381
movl -0x10(%rbp), %edx
leaq -0x100(%rbp), %rdi
movl $0x11, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0x100(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
jmp 0xc381
movl -0x10(%rbp), %edx
leaq -0x118(%rbp), %rdi
movl $0x10, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0x118(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
jmp 0xc381
movl -0x10(%rbp), %edx
leaq -0x130(%rbp), %rdi
movl $0x17, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0x130(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
jmp 0xc381
movl -0x10(%rbp), %edx
leaq -0x148(%rbp), %rdi
movl $0x18, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0x148(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
jmp 0xc381
movl -0x10(%rbp), %edx
leaq -0x160(%rbp), %rdi
movl $0x19, %esi
callq 0xbf70
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x7f70
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
nopw (%rax,%rax)