      1  %CONTROL X'10000000' ; ! Decode
                        // O LINE 1  OPD_STACK = 0  file=test2/ack.imp
                        // z CONTROL 0
      2  %BEGIN
                        // O LINE 2  OPD_STACK = 0  file=test2/ack.imp
                        // H BEGIN
      3    %INTEGERFN ACKERMANN(%INTEGER M, N)
                        // O LINE 3  OPD_STACK = 0  file=test2/ack.imp
                        // $ DEF ACKERMANN (V_0074) a=24 b=1 c=16  
                        // { START (
                        // $ DEF M (V_0075) a=17 b=1 c=0  
                        // $ DEF N (V_0076) a=17 b=1 c=0  
                        // } FINISH )

00000000 <ACKERMANN.8324>:

      4  
      5     %RESULT = N+1 %IF M = 0 
                        // O LINE 5  OPD_STACK = 0  file=test2/ack.imp
                        // @ PUSH M (tag=V_0075)  OPD_STACK = 2
                        // N PUSHI #0  OPD_STACK = 3
                        // ? JUMPIF # L_0002
                        // @ PUSH N (tag=V_0076)  OPD_STACK = 3
                        // N PUSHI #1  OPD_STACK = 4
                        // + ADD
                        // V RESULT
                        // : LOCATE  (labtag=0004, lab=L_0002)
                        
   0:	85 c0                	test   %eax,%eax
   2:	74 21                	je     25 <ACKERMANN.8324+0x25>

   4:	53                   	push   %ebx
   5:	83 ec 08             	sub    $0x8,%esp
   8:	89 c3                	mov    %eax,%ebx
   
      6  
      7     %RESULT = ACKERMANN(M-1, 1) %IF N = 0
                        // O LINE 7  OPD_STACK = 0  file=test2/ack.imp
                        // @ PUSH N (tag=V_0076)  OPD_STACK = 2
                        // N PUSHI #0  OPD_STACK = 3
                        // ? JUMPIF # L_0003
                        // @ PUSH ACKERMANN (tag=V_0074)  OPD_STACK = 3
                        // @ PUSH M (tag=V_0075)  OPD_STACK = 4
                        // N PUSHI #1  OPD_STACK = 5
                        // - SUB
                        // p ASSPAR
                        // N PUSHI #1  OPD_STACK = 5
                        // p ASSPAR
                        // E CALL
                        // V RESULT
                        // : LOCATE  (labtag=0004, lab=L_0003)
   a:	85 d2                	test   %edx,%edx
   c:	74 1b                	je     29 <ACKERMANN.8324+0x29>
      8  
      9     %RESULT = ACKERMANN(M-1, ACKERMANN(M, N-1))
                        // O LINE 9  OPD_STACK = 0  file=test2/ack.imp
                        // @ PUSH ACKERMANN (tag=V_0074)  OPD_STACK = 2
                        // @ PUSH M (tag=V_0075)  OPD_STACK = 3
                        // N PUSHI #1  OPD_STACK = 4
                        // - SUB
                        // p ASSPAR
                        // @ PUSH ACKERMANN (tag=V_0074)  OPD_STACK = 4
                        // @ PUSH M (tag=V_0075)  OPD_STACK = 5
                        // p ASSPAR
                        // @ PUSH N (tag=V_0076)  OPD_STACK = 6
                        // N PUSHI #1  OPD_STACK = 7
                        // - SUB
                        // p ASSPAR
                        // E CALL
                        // p ASSPAR
                        // E CALL
                        // V RESULT
   e:	83 ea 01             	sub    $0x1,%edx
  11:	e8 ea ff ff ff       	call   0 <ACKERMANN.8324>
  16:	89 c2                	mov    %eax,%edx
  18:	8d 43 ff             	lea    -0x1(%ebx),%eax
  1b:	e8 e0 ff ff ff       	call   0 <ACKERMANN.8324>
  20:	83 c4 08             	add    $0x8,%esp
  23:	5b                   	pop    %ebx
  24:	c3                   	ret    

  25:	8d 42 01             	lea    0x1(%edx),%eax
  28:	c3                   	ret    

  29:	8d 40 ff             	lea    -0x1(%eax),%eax
  2c:	ba 01 00 00 00       	mov    $0x1,%edx
  31:	e8 ca ff ff ff       	call   0 <ACKERMANN.8324>
  36:	eb e8                	jmp    20 <ACKERMANN.8324+0x20>

     10  
     11    %END
                        // O LINE 11  OPD_STACK = 0  file=test2/ack.imp
                        // ; END

00000038 <main>:
  38:	8d 4c 24 04          	lea    0x4(%esp),%ecx
  3c:	83 e4 f0             	and    $0xfffffff0,%esp
  3f:	ff 71 fc             	pushl  -0x4(%ecx)
  42:	55                   	push   %ebp
  43:	89 e5                	mov    %esp,%ebp
  45:	53                   	push   %ebx
  46:	51                   	push   %ecx
  47:	e8 fc ff ff ff       	call   48 <main+0x10>
  4c:	81 c3 02 00 00 00    	add    $0x2,%ebx

  52:	83 ec 08             	sub    $0x8,%esp
  55:	ff 71 04             	pushl  0x4(%ecx)
  58:	ff 31                	pushl  (%ecx)
  5a:	e8 fc ff ff ff       	call   5b <main+0x23>

     12  
     13    %INTEGER I
                        // O LINE 13  OPD_STACK = 0  file=test2/ack.imp
                        // $ DEF I (V_0075) a=17 b=1 c=0  
     14  
     15    I = ACKERMANN(3,4)
                        // O LINE 15  OPD_STACK = 0  file=test2/ack.imp
                        // @ PUSH I (tag=V_0075)  OPD_STACK = 2
                        // @ PUSH ACKERMANN (tag=V_0074)  OPD_STACK = 3
                        // N PUSHI #3  OPD_STACK = 4
                        // p ASSPAR
                        // N PUSHI #4  OPD_STACK = 5
                        // p ASSPAR
                        // E CALL
                        // S ASSVAL
                        
  5f:	ba 04 00 00 00       	mov    $0x4,%edx
  64:	b8 03 00 00 00       	mov    $0x3,%eax
  69:	e8 92 ff ff ff       	call   0 <ACKERMANN.8324>
  6e:	83 c4 10             	add    $0x10,%esp
  
     16  
     17  %ENDOFPROGRAM
                        // O LINE 17  OPD_STACK = 0  file=test2/ack.imp
                        // ; END
                        // ; END
  71:	b8 00 00 00 00       	mov    $0x0,%eax
  76:	8d 65 f8             	lea    -0x8(%ebp),%esp
  79:	59                   	pop    %ecx
  7a:	5b                   	pop    %ebx
  7b:	5d                   	pop    %ebp
  7c:	8d 61 fc             	lea    -0x4(%ecx),%esp
  7f:	c3                   	ret    
