// File: /workspace/github_c_makefile_star2_O2/LangProc[P]langproc-2020-cw/src/compiler.cpp
// Function: main
int main()
{
	std::cout << "f:" << std::endl;
	std::cout << "PUSH0:" << std::endl;
	std::cout << "addiu $sp, $sp, -44" << std::endl;
	std::cout << "sw $ra, 40($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "sw $fp, 36($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "sw $s0, 4($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "sw $s1, 8($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "sw $s2, 12($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "sw $s3, 16($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "sw $s4, 20($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "sw $s5, 24($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "sw $s6, 28($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "sw $s7, 32($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "move $fp, $sp" << std::endl;
	std::cout << "body2:" << std::endl;
	std::cout << "li $v0, 42" << std::endl;
	std::cout << "addiu $sp, $sp, 0" << std::endl;
	std::cout << "move $fp, $sp" << std::endl;
	std::cout << "b POP1" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "addiu $sp, $sp, 0" << std::endl;
	std::cout << "move $fp, $sp" << std::endl;
	std::cout << "POP1:" << std::endl;
	std::cout << "mtc1 $v0, $f0" << std::endl;
	std::cout << "lw $s0, 4($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "lw $s1, 8($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "lw $s2, 12($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "lw $s3, 16($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "lw $s4, 20($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "lw $s5, 24($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "lw $s6, 28($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "lw $s7, 32($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "lw $ra, 40($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "lw $fp, 36($sp)" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << "move $sp, $fp" << std::endl;
	std::cout << "jr $ra" << std::endl;
	std::cout << "nop" << std::endl;
	std::cout << ".global f" << std::endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq 0x2e1a(%rip), %rbx      # 0x3fd8
leaq 0xe3f(%rip), %rsi       # 0x2004
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xe2b(%rip), %rsi       # 0x2007
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xe1b(%rip), %rsi       # 0x200e
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xe18(%rip), %rsi       # 0x2022
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xe11(%rip), %r14       # 0x2032
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xdfb(%rip), %rsi       # 0x2036
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xde1(%rip), %rsi       # 0x2046
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xdc6(%rip), %rsi       # 0x2055
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xdab(%rip), %rsi       # 0x2064
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xd91(%rip), %rsi       # 0x2074
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xd77(%rip), %rsi       # 0x2084
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xd5d(%rip), %rsi       # 0x2094
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xd43(%rip), %rsi       # 0x20a4
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xd29(%rip), %rsi       # 0x20b4
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xd0f(%rip), %r15       # 0x20c4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xd03(%rip), %rsi       # 0x20d2
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xcf3(%rip), %rsi       # 0x20d9
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xce7(%rip), %r12       # 0x20e4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xccc(%rip), %rsi       # 0x20f6
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r12, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xc83(%rip), %rsi       # 0x20fd
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xc72(%rip), %rsi       # 0x2103
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xc69(%rip), %rsi       # 0x2111
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xc4e(%rip), %rsi       # 0x2120
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xc33(%rip), %rsi       # 0x212f
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xc19(%rip), %rsi       # 0x213f
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xbff(%rip), %rsi       # 0x214f
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xbe5(%rip), %rsi       # 0x215f
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xbcb(%rip), %rsi       # 0x216f
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xbb1(%rip), %rsi       # 0x217f
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xb97(%rip), %rsi       # 0x218f
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xb7d(%rip), %rsi       # 0x219f
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xb63(%rip), %rsi       # 0x21af
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xb5a(%rip), %rsi       # 0x21bd
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
movq %rax, %rdi
callq 0x1030
leaq 0xb37(%rip), %rsi       # 0x21c4
movq %rbx, %rdi
callq 0x1050
movq %rax, %rdi
callq 0x1030
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq