      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 )

   0010:                        ACKERMANN.0:
  
      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)

   0014: 85C0     		testl	%eax, %eax
   0016: 7504     		jne	.L11
   0018: 8D4201   		leal	1(%edx), %eax
   001b: C3       		ret
                          .L11

   001c: 53       	        pushl   %ebx
   001d: 83EC08   		subl	$8, %esp
   0020: 89C3     		movl	%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)
   
   002c: 85D2     		testl	%edx, %edx
   002e: 7512     		jne	.L12
   0030: 8D40FF   		leal	-1(%eax), %eax
   0033: BA01000000		movl	$1, %edx
   0038: E8C3FFFFFF		call	ACKERMANN.0
   003d: 83C408   		addl	$8, %esp
   0040: 5B       		popl	%ebx
   0041: C3       		ret

      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
   
   004c: 83EA01   		subl	$1, %edx
   004f: E8ACFFFFFF		call	ACKERMANN.0
   0054: 89C2     		movl	%eax, %edx
   0056: 8D43FF   		leal	-1(%ebx), %eax
   0059: E8A2FFFFFF		call	ACKERMANN.0
   005e: EBDD     		jmp	.L1

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

                 	main:
   0060: 8D4C2404 		leal	4(%esp), %ecx
   0064: 83E4F0   		andl	$-16, %esp
   0067: FF71FC   		pushl	-4(%ecx)
   006a: 55       		pushl	%ebp
   006b: 89E5     		movl	%esp, %ebp
   006d: 51       		pushl	%ecx
   006e: 83EC0C   		subl	$12, %esp
   0071: FF7104   		pushl	4(%ecx)
   0074: FF31     		pushl	(%ecx)
   0076: E8FCFFFFFF		call	_imp_initialise

     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

   007b: BA04000000		movl	$4, %edx
   0080: B803000000		movl	$3, %eax
   0085: E876FFFFFF		call	ACKERMANN.0
   009e: 83C410   		addl	$16, %esp

     16
     17  %ENDOFPROGRAM
                        // O LINE 17  OPD_STACK = 0  file=test2/ack.imp
                        // ; END
                        // ; END
   00a1: B800000000		movl	$0, %eax
   00a6: 8B4DFC   		movl	-4(%ebp), %ecx
   00a9: C9       		leave
   00aa: 8D61FC   		leal	-4(%ecx), %esp
   00ad: C3       		ret
