// File: /workspace/github_cpp_makefile_star2_O2/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, 0xc9e5(%rip)      # 0x13550
movl $0x1, 0xc9df(%rip)      # 0x13554
movl 0xc9c5(%rip), %eax      # 0x13540
leaq 0x744a(%rip), %r14      # 0xdfcc
leaq 0x7486(%rip), %r15      # 0xe00f
movl 0xc9c1(%rip), %ecx      # 0x13550
testl %eax, %eax
sete %dl
testb $0x1, %cl
sete %sil
orb %dl, %sil
je 0x6dc6
movl 0xc9aa(%rip), %edx      # 0x13554
testl %eax, %eax
setne %sil
testb $0x1, %dl
sete %dil
andb %sil, %dil
cmpb $0x1, %dil
je 0x6db4
sarl %ecx
sarl %edx
movslq %ecx, %rsi
testl %eax, %eax
je 0x6bfa
testl %edx, %edx
js 0x6dbd
movq 0xc9d2(%rip), %rcx      # 0x135b0
imulq $0x18, %rsi, %rdi
movl (%rcx,%rdi), %edi
testb $0x1, %dil
je 0x6db4
sarl %edi
cmpl %edi, %edx
jl 0x6c01
jmp 0x6dbd
movq 0xc9af(%rip), %rcx      # 0x135b0
imulq $0x18, %rsi, %rsi
movq 0x10(%rcx,%rsi), %rsi
movslq %edx, %rdx
movl (%rsi,%rdx,4), %edx
testl %eax, %eax
je 0x6c1f
movl %edx, %esi
andl $0x1, %esi
jne 0x6dc6
sarl %edx
movslq %edx, %rdx
testl %eax, %eax
je 0x6c42
imulq $0x18, %rdx, %rsi
movl (%rcx,%rsi), %esi
testb $0x1, %sil
je 0x6db4
cmpl $0x1, %esi
jle 0x6dbd
imulq $0x18, %rdx, %rsi
movq 0x10(%rcx,%rsi), %rdx
movl (%rdx), %ebp
testl %eax, %eax
je 0x6c5c
movl %ebp, %edi
andl $0x1, %edi
je 0x6db4
testl %eax, %eax
je 0x6c74
movl (%rcx,%rsi), %eax
testb $0x1, %al
je 0x6db4
cmpl $0x3, %eax
jle 0x6dbd
sarl %ebp
movl 0x4(%rdx), %r12d
movslq %ebp, %r13
leaq 0xc5fc(%rip), %rax      # 0x13280
movq (%rax,%r13,8), %rsi
movq %r14, %rdi
movl %r12d, %edx
xorl %eax, %eax
callq 0x2786
testl %r13d, %r13d
js 0x6e23
cmpq %r13, 0xc7db(%rip)      # 0x13480
jbe 0x6e23
movl %r12d, %edi
leaq 0xc3cb(%rip), %rax      # 0x13080
callq *(%rax,%r13,8)
movl 0xc895(%rip), %eax      # 0x13554
cmpl $0x0, 0xc87a(%rip)      # 0x13540
setne %cl
testb $0x1, %al
sete %dl
testb %dl, %cl
jne 0x6e04
orl $0x1, %eax
addl $0x2, %eax
movl %eax, 0xc872(%rip)      # 0x13554
movq %r15, %rdi
xorl %eax, %eax
callq 0x2786
movl 0xc812(%rip), %ecx      # 0x13504
movl 0xc848(%rip), %eax      # 0x13540
testl %eax, %eax
setne %dl
testb $0x1, %cl
sete %sil
andb %dl, %sil
cmpb $0x1, %sil
je 0x6de5
sarl %ecx
cmpl %ecx, %ebp
je 0x6d77
testl %eax, %eax
setne %dl
movl 0xc7aa(%rip), %ecx      # 0x134cc
testb $0x1, %cl
sete %sil
andb %dl, %sil
cmpb $0x1, %sil
je 0x6e33
sarl %ecx
cmpl %ecx, %ebp
jne 0x6b89
cmpl %ebx, 0xc812(%rip)      # 0x13558
jne 0x6b89
testl %eax, %eax
setne %dl
movl 0xc7fd(%rip), %ecx      # 0x13554
testb $0x1, %cl
sete %sil
andb %dl, %sil
cmpb $0x1, %sil
je 0x6e71
orl $0x1, %ecx
addl $-0x2, %ecx
movl %ecx, 0xc7dd(%rip)      # 0x13554
testl %eax, %eax
setne %cl
movl 0xc70a(%rip), %eax      # 0x1348c
testb $0x1, %al
sete %dl
andb %cl, %dl
cmpb $0x1, %dl
je 0x6e52
sarl %eax
cltq
movl 0xc7ac(%rip), %edi      # 0x13548
leaq 0xc2dd(%rip), %rcx      # 0x13080
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmpq *(%rcx,%rax,8)
leaq 0x43d3(%rip), %rdi      # 0xb18e
jmp 0x6dcd
leaq 0x713a(%rip), %rdi      # 0xdefe
jmp 0x6dcd
leaq 0x428d(%rip), %rdi      # 0xb05a
leaq 0x4263(%rip), %rsi      # 0xb037
leaq 0x7102(%rip), %rcx      # 0xdedd
movl $0x1cb, %edx            # imm = 0x1CB
callq 0x2060
leaq 0x43a2(%rip), %rdi      # 0xb18e
leaq 0x4244(%rip), %rsi      # 0xb037
leaq 0x70e3(%rip), %rcx      # 0xdedd
movl $0x1d1, %edx            # imm = 0x1D1
callq 0x2060
leaq 0x4383(%rip), %rdi      # 0xb18e
leaq 0x4225(%rip), %rsi      # 0xb037
leaq 0x70c4(%rip), %rcx      # 0xdedd
movl $0x1cf, %edx            # imm = 0x1CF
callq 0x2060
leaq 0x71c8(%rip), %rdi      # 0xdff2
movl %ebp, %esi
xorl %eax, %eax
callq 0x281c
leaq 0x4354(%rip), %rdi      # 0xb18e
leaq 0x41f6(%rip), %rsi      # 0xb037
leaq 0x7095(%rip), %rcx      # 0xdedd
movl $0x1d3, %edx            # imm = 0x1D3
callq 0x2060
leaq 0x4335(%rip), %rdi      # 0xb18e
leaq 0x41d7(%rip), %rsi      # 0xb037
leaq 0x7076(%rip), %rcx      # 0xdedd
movl $0x1d8, %edx            # imm = 0x1D8
callq 0x2060
leaq 0x4316(%rip), %rdi      # 0xb18e
leaq 0x41b8(%rip), %rsi      # 0xb037
leaq 0x7057(%rip), %rcx      # 0xdedd
movl $0x1d4, %edx            # imm = 0x1D4
callq 0x2060