// File: /workspace/github_cpp_makefile_star2_O3/alexwarth[P]nothing/main.cpp
// Function: interp(int, int)
value_t interp(value_t prog, value_t retFp = Int(-1)) {
  ipb = prog;
  ip  = Int(0);
  while (1) {
    value_t instr = slotAt(ipb, ip), primIdx = IntValue(car(instr)), op = cdr(instr);
    dPrintf2("\n\n%S\nExecuting instruction <<%o %o>>\n", primNames[primIdx], op);
    if (0 <= primIdx && primIdx < numPrims) prims[primIdx](op);
    else                                    error("%d is not a valid primitive\n", primIdx);
    ip = Int(IntValue(ip) + 1);
    dPrintf2("\n%S\n\n\n");
    if (primIdx == IntValue(Halt))
      break;
    else if (primIdx == IntValue(Ret) && fp == retFp) {
      ip = Int(IntValue(ip) - 1); // undo increment of ip
      break;
    }
  }
  return _p(Pop);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %esi, %ebx
movl %edi, 0xc7fe(%rip)      # 0x13550
movl $0x1, 0xc7f8(%rip)      # 0x13554
movl 0xc7de(%rip), %eax      # 0x13540
leaq 0x8263(%rip), %r14      # 0xefcc
leaq 0x829f(%rip), %r15      # 0xf00f
movl 0xc7da(%rip), %esi      # 0x13550
testl %eax, %eax
sete %cl
testb $0x1, %sil
sete %dl
orb %cl, %dl
je 0x6fac
movl 0xc7c4(%rip), %edx      # 0x13554
testl %eax, %eax
setne %cl
testb $0x1, %dl
sete %dil
andb %cl, %dil
cmpb $0x1, %dil
je 0x6f9a
sarl %esi
sarl %edx
testl %eax, %eax
je 0x6ddf
testl %edx, %edx
js 0x6fa3
movq 0xc7f0(%rip), %rcx      # 0x135b0
movslq %esi, %rsi
leaq (%rsi,%rsi,2), %rdi
movl (%rcx,%rdi,8), %edi
testb $0x1, %dil
je 0x6f9a
sarl %edi
cmpl %edi, %edx
jl 0x6de9
jmp 0x6fa3
movq 0xc7ca(%rip), %rcx      # 0x135b0
movslq %esi, %rsi
leaq (%rsi,%rsi,2), %rsi
movq 0x10(%rcx,%rsi,8), %rsi
movslq %edx, %rdx
movl (%rsi,%rdx,4), %edx
testl %eax, %eax
je 0x6e07
movl %edx, %esi
andl $0x1, %esi
jne 0x6fac
sarl %edx
movslq %edx, %rdx
testl %eax, %eax
je 0x6e4f
leaq (%rdx,%rdx,2), %rdx
movl (%rcx,%rdx,8), %eax
testb $0x1, %al
je 0x6f9a
cmpl $0x1, %eax
jle 0x6fa3
movq 0x10(%rcx,%rdx,8), %rax
movl (%rax), %ebp
testb $0x1, %bpl
je 0x6f9a
movl (%rcx,%rdx,8), %ecx
testb $0x1, %cl
je 0x6f9a
cmpl $0x3, %ecx
jg 0x6e5a
jmp 0x6fa3
leaq (%rdx,%rdx,2), %rax
movq 0x10(%rcx,%rax,8), %rax
movl (%rax), %ebp
sarl %ebp
movl 0x4(%rax), %r12d
movslq %ebp, %r13
leaq 0xc416(%rip), %rax      # 0x13280
movq (%rax,%r13,8), %rsi
movq %r14, %rdi
movl %r12d, %edx
xorl %eax, %eax
callq 0x279f
testl %r13d, %r13d
js 0x6fcb
cmpq %r13, 0xc5f5(%rip)      # 0x13480
jbe 0x6fcb
movl %r12d, %edi
leaq 0xc1e5(%rip), %rax      # 0x13080
callq *(%rax,%r13,8)
movl 0xc6af(%rip), %eax      # 0x13554
cmpl $0x0, 0xc694(%rip)      # 0x13540
setne %cl
testb $0x1, %al
sete %dl
testb %dl, %cl
jne 0x6fdb
orl $0x1, %eax
addl $0x2, %eax
movl %eax, 0xc68c(%rip)      # 0x13554
movq %r15, %rdi
xorl %eax, %eax
callq 0x279f
movl 0xc62c(%rip), %ecx      # 0x13504
movl 0xc662(%rip), %eax      # 0x13540
testl %eax, %eax
setne %dl
testb $0x1, %cl
sete %sil
andb %dl, %sil
cmpb $0x1, %sil
je 0x6ffa
sarl %ecx
cmpl %ecx, %ebp
je 0x6f5d
testl %eax, %eax
setne %dl
movl 0xc5c4(%rip), %ecx      # 0x134cc
testb $0x1, %cl
sete %sil
andb %dl, %sil
cmpb $0x1, %sil
je 0x7019
sarl %ecx
cmpl %ecx, %ebp
jne 0x6d70
cmpl %ebx, 0xc62c(%rip)      # 0x13558
jne 0x6d70
testl %eax, %eax
setne %dl
movl 0xc617(%rip), %ecx      # 0x13554
testb $0x1, %cl
sete %sil
andb %dl, %sil
cmpb $0x1, %sil
je 0x7057
orl $0x1, %ecx
addl $-0x2, %ecx
movl %ecx, 0xc5f7(%rip)      # 0x13554
testl %eax, %eax
setne %cl
movl 0xc524(%rip), %eax      # 0x1348c
testb $0x1, %al
sete %dl
andb %cl, %dl
cmpb $0x1, %dl
je 0x7038
sarl %eax
cltq
movl 0xc5c6(%rip), %edi      # 0x13548
leaq 0xc0f7(%rip), %rcx      # 0x13080
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmpq *(%rcx,%rax,8)
leaq 0x51ed(%rip), %rdi      # 0xc18e
jmp 0x6fb3
leaq 0x7f54(%rip), %rdi      # 0xeefe
jmp 0x6fb3
leaq 0x50a7(%rip), %rdi      # 0xc05a
leaq 0x507d(%rip), %rsi      # 0xc037
leaq 0x7f1c(%rip), %rcx      # 0xeedd
movl $0x1cb, %edx            # imm = 0x1CB
callq 0x2060
leaq 0x8020(%rip), %rdi      # 0xeff2
movl %ebp, %esi
xorl %eax, %eax
callq 0x2835
leaq 0x51ac(%rip), %rdi      # 0xc18e
leaq 0x504e(%rip), %rsi      # 0xc037
leaq 0x7eed(%rip), %rcx      # 0xeedd
movl $0x1cf, %edx            # imm = 0x1CF
callq 0x2060
leaq 0x518d(%rip), %rdi      # 0xc18e
leaq 0x502f(%rip), %rsi      # 0xc037
leaq 0x7ece(%rip), %rcx      # 0xeedd
movl $0x1d1, %edx            # imm = 0x1D1
callq 0x2060
leaq 0x516e(%rip), %rdi      # 0xc18e
leaq 0x5010(%rip), %rsi      # 0xc037
leaq 0x7eaf(%rip), %rcx      # 0xeedd
movl $0x1d3, %edx            # imm = 0x1D3
callq 0x2060
leaq 0x514f(%rip), %rdi      # 0xc18e
leaq 0x4ff1(%rip), %rsi      # 0xc037
leaq 0x7e90(%rip), %rcx      # 0xeedd
movl $0x1d8, %edx            # imm = 0x1D8
callq 0x2060
leaq 0x5130(%rip), %rdi      # 0xc18e
leaq 0x4fd2(%rip), %rsi      # 0xc037
leaq 0x7e71(%rip), %rcx      # 0xeedd
movl $0x1d4, %edx            # imm = 0x1D4
callq 0x2060