         Edinburgh IMP77 Compiler - Version 8.4
    1 ! i77 collatz.imp
		.Ltext0:
		_imp_PROMPT:
		.LFB69:
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%esi
				pushl	%ebx
				subl	$12, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				subl	$12, %esp
				leal	__PRETTY_FUNCTION__.5536@GOTOFF(%ebx), %eax
				pushl	%eax
				call	check_instream@PLT
				addl	$16, %esp
				leal	8(%ebp), %edx
				movl	_imp_promptstr@GOT(%ebx), %eax
				movl	%edx, %ebx
				movl	$256, %edx
				movl	(%ebx), %ecx
				movl	%ecx, (%eax)
				movl	-4(%ebx,%edx), %ecx
				movl	%ecx, -4(%eax,%edx)
				leal	4(%eax), %edi
				andl	$-4, %edi
				subl	%edi, %eax
				subl	%eax, %ebx
				addl	%eax, %edx
				andl	$-4, %edx
				movl	%edx, %eax
				shrl	$2, %eax
				movl	%ebx, %esi
				movl	%eax, %ecx
				rep movsl
				nop
				leal	-12(%ebp), %esp
				popl	%ebx
				popl	%esi
				popl	%edi
				popl	%ebp
				ret
		.LFE69:
		EVENCOLLATZ.6031:
		.LFB191:
    2 ! ./collatz
    3 ! 837799
    4 ! ./collatz
    5 ! 8400511
    6
    7 ! https://www.reddit.com/r/C_Programming/comments/1eoc0v3/does_any_c_compiler_other_than_gcc_support_nested/
    8
    9 ! This is an imp77 source that corresponds more or less to
   10 ! the example C source in the accompanying ccollatz.c file.
   11
   12 %begin
				leal	4(%esp), %ecx
				andl	$-16, %esp
				pushl	-4(%ecx)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%esi
				pushl	%ebx
				pushl	%ecx
				subl	$824, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ecx, %eax
				movl	4(%eax), %edx
				movl	%edx, -828(%ebp)
				movl	%gs:20, %esi
				movl	%esi, -28(%ebp)
				xorl	%esi, %esi
				leal	8(%ebp), %edx
				movl	%edx, -800(%ebp)
				subl	$8, %esp
				pushl	-828(%ebp)
				pushl	(%eax)
				call	_imp_initialise@PLT
				addl	$16, %esp
   13   %integer odd1 = 1, odd2 = 2
				movl	$1, %eax
				movl	%eax, -808(%ebp)
				movl	$2, %eax
				movl	%eax, -804(%ebp)
		.LBB49:
   14   %const %integer final value = 0, MAX FACTOR = (((~0)>>1)-1)//3
   15                                   ! The integer overflow test here will trigger
   16                                   ! at 0x7FFFFFFF rather than 0xFFFFFFFF because
   17                                   ! this imp77 does not support unsigned 32-bit
   18                                   ! integers.  Other than that case, this code
   19                                   ! should give the same results as the C version.
   20
   21   %const %integer terminating value = 1
   22
   23   %routine show collatz length(%integer i, %integername max)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%esi
				pushl	%ebx
				subl	$2364, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ebx, %edi
				movl	%edi, -2368(%ebp)
				movl	12(%ebp), %eax
				movl	%ecx, %ebx
				movl	%ebx, -2372(%ebp)
				movl	%ecx, -2364(%ebp)
				movl	%gs:20, %esi
				movl	%esi, -28(%ebp)
				xorl	%esi, %esi
				leal	8(%ebp), %edx
				movl	%edx, -2336(%ebp)
				movl	%eax, -2340(%ebp)
				movl	%ebx, -2344(%ebp)
   24     ! Returns 0 for the length if there was an integer overflow.
   25
   26     %integer base value = final value + 1
				movl	$1, %eax
				movl	%eax, -2348(%ebp)
		.LBB31:
   27
   28     %integerfnspec odd collatz(%integer i); ! mutual recursion requires a forward declaration!
   29
   30     %integerfn even collatz(%integer i)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%ebx
				subl	$20, %esp
				call	__x86.get_pc_thunk.ax
				addl	$_GLOBAL_OFFSET_TABLE_, %eax
				movl	%ecx, %ebx
				movl	%ecx, -12(%ebp)
   31       %if i < terminating value %then %result = final value
				cmpl	$0, 8(%ebp)
				jg	.L12
				movl	$0, %eax
				jmp	.L5
		.L12:
				nop
		.L4:
   32       %if i > max %then max = i
				movl	8(%ebx), %eax
				movl	(%eax), %eax
				cmpl	%eax, 8(%ebp)
				jle	.L13
				movl	8(%ebx), %eax
				movl	8(%ebp), %edx
				movl	%edx, (%eax)
				jmp	.L7
		.L13:
				nop
		.L7:
   33       %if i&odd2 # 0 %start ;! 'optimization' :-)
				movl	4(%ebx), %eax
				movl	4(%eax), %eax
				testl	%eax, %eax
				sete	%al
				movzbl	%al, %eax
				andl	8(%ebp), %eax
				testl	%eax, %eax
				jne	.L14
				nop
		.L9:
   34         %result = base value+odd collatz(i>>1); !  (really just an excuse to justify this use of mutual recursion)
				movl	8(%ebp), %eax
				shrl	%eax
				subl	$12, %esp
				pushl	%eax
				movl	%ebx, %ecx
				call	ODDCOLLATZ.6029
				addl	$16, %esp
				movl	%eax, %edx
				movl	(%ebx), %eax
				addl	%edx, %eax
				jmp	.L5
		.L14:
   35       %finish %else %start
   36         %result = base value+even collatz(i>>1)
				movl	8(%ebp), %eax
				shrl	%eax
				subl	$12, %esp
				pushl	%eax
				movl	%ebx, %ecx
				call	EVENCOLLATZ.6031
				addl	$16, %esp
				movl	%eax, %edx
				movl	(%ebx), %eax
				addl	%edx, %eax
		.L5:
   37       %finish
   38     %end
				movl	-4(%ebp), %ebx
				leave
				ret
		.LFE191:
				.section	.rodata
				.align 32
		.LC2:
				.byte	24
				.string	"The Collatz sequence for"
				.zero	230
				.align 32
		.LC3:
				.byte	6
				.string	" takes"
				.zero	248
				.align 32
		.LC4:
				.byte	56
				.string	" an unknown number of steps (we hit an integer overflow)"
				.zero	198
				.align 32
		.LC5:
				.byte	40
				.string	" steps and the largest value reached was"
				.zero	214
		SHOWCOLLATZLENGTH.6025:
		.LFB190:
   39
   40     %integerfn odd collatz(%integer i)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%esi
				pushl	%ebx
				subl	$812, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ecx, -816(%ebp)
				movl	%ecx, -812(%ebp)
				movl	%gs:20, %eax
				movl	%eax, -28(%ebp)
				xorl	%eax, %eax
   41       %if i <= terminating value %then %result = final value
				cmpl	$1, 8(%ebp)
				jg	.L51
				movl	$0, %eax
				jmp	.L40
		.L51:
				nop
		.L39:
   42       %if i > max %then max = i
				movl	-816(%ebp), %eax
				movl	8(%eax), %eax
				movl	(%eax), %eax
				cmpl	%eax, 8(%ebp)
				jle	.L52
				movl	-816(%ebp), %eax
				movl	8(%eax), %eax
				movl	8(%ebp), %edx
				movl	%edx, (%eax)
				jmp	.L42
		.L52:
				nop
		.L42:
   43       %if i > MAX FACTOR %then %signal 15,1,1; ! next call would cause integer overflow...
				cmpl	$715827882, 8(%ebp)
				jle	.L53
				leal	-540(%ebp), %eax
				subl	$8, %esp
				leal	.LC6@GOTOFF(%ebx), %edx
				pushl	%edx
				pushl	%eax
				call	_imp_c2istr@PLT
				addl	$12, %esp
				movl	_imp_current_line@GOT(%ebx), %eax
				movl	(%eax), %eax
				testl	%eax, %eax
				je	.L45
				movl	_imp_current_line@GOT(%ebx), %eax
				movl	(%eax), %eax
				movl	%eax, -820(%ebp)
				jmp	.L46
		.L45:
				movl	$43, -820(%ebp)
		.L46:
				movl	_imp_current_file@GOT(%ebx), %eax
				movl	(%eax), %eax
				testl	%eax, %eax
				je	.L47
				movl	_imp_current_file@GOT(%ebx), %eax
				movl	(%eax), %edx
				leal	-284(%ebp), %eax
				subl	$8, %esp
				pushl	%edx
				pushl	%eax
				call	_imp_c2istr@PLT
				addl	$12, %esp
				jmp	.L48
		.L47:
		.LBB59:
				leal	-284(%ebp), %eax
				leal	.LC0@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-796(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE59:
				leal	-284(%ebp), %eax
				leal	-796(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.L48:
				pushl	$1
				pushl	$1
				pushl	$15
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-540(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				pushl	-820(%ebp)
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-284(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_signal_event@PLT
				addl	$528, %esp
				jmp	.L44
		.L53:
				nop
		.L44:
   44       %result = base value+even collatz((i<<1)+i+1)
				movl	8(%ebp), %eax
				leal	(%eax,%eax), %edx
				movl	8(%ebp), %eax
				addl	%edx, %eax
				addl	$1, %eax
				subl	$12, %esp
				pushl	%eax
				movl	-816(%ebp), %esi
				movl	%esi, %ecx
				call	EVENCOLLATZ.6031
				addl	$16, %esp
				movl	%eax, %edx
				movl	%esi, %eax
				movl	(%eax), %eax
				addl	%edx, %eax
		.L40:
   45     %end
				movl	-28(%ebp), %edi
				xorl	%gs:20, %edi
				je	.L49
				call	__stack_chk_fail_local
		.L49:
				leal	-12(%ebp), %esp
				popl	%ebx
				popl	%esi
				popl	%edi
				popl	%ebp
				ret
		.LFE192:
				.section	.rodata
				.align 4
		__PRETTY_FUNCTION__.5536:
				.string	"_imp_PROMPT"
				.section	.text.__x86.get_pc_thunk.ax,"axG",@progbits,__x86.get_pc_thunk.ax,comdat
				.globl	__x86.get_pc_thunk.ax
				.hidden	__x86.get_pc_thunk.ax
		__x86.get_pc_thunk.ax:
		.LFB193:
				movl	(%esp), %eax
				ret
		.LFE193:
				.section	.text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat
				.globl	__x86.get_pc_thunk.bx
				.hidden	__x86.get_pc_thunk.bx
		__x86.get_pc_thunk.bx:
		.LFB194:
				movl	(%esp), %ebx
				ret
		.LFE194:
		.Letext0:
   46
   47     print string("The Collatz sequence for")
				leal	-284(%ebp), %eax
				movl	%edi, %ebx
				leal	.LC2@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2332(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1052(%ebp), %eax
				leal	-2332(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE31:
		.LBB32:
		.LBB33:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1052(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				movl	%ebx, %edi
				movl	%edi, %ebx
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE33:
		.LBE32:
   48     write(i, 1)
				subl	$8, %esp
				pushl	$1
				pushl	8(%ebp)
				movl	%edi, %ebx
				call	_imp_writeint@PLT
				addl	$16, %esp
		.LBB34:
   49     print string(" takes")
				leal	-284(%ebp), %eax
				movl	%edi, %ebx
				leal	.LC3@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2076(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-796(%ebp), %eax
				leal	-2076(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE34:
		.LBB35:
		.LBB36:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-796(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				movl	%ebx, %esi
				movl	%esi, %ebx
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE36:
		.LBE35:
   50
   51     %onevent 15 %start
				subl	$8, %esp
				pushl	$1
				movl	%esi, %ebx
				movl	_imp_event@GOT(%ebx), %eax
				leal	532(%eax), %eax
				pushl	%eax
				movl	%esi, %ebx
				call	__sigsetjmp@PLT
				addl	$16, %esp
				testl	%eax, %eax
				jne	.L17
		.LBB37:
				movl	$15, -1564(%ebp)
				movl	$0, -2356(%ebp)
		.LBB38:
				movl	$0, -2352(%ebp)
				jmp	.L18
		.L19:
				movl	-2352(%ebp), %eax
				movl	-1564(%ebp,%eax,4), %eax
				movl	$1, %edx
				movl	%eax, %ecx
				sall	%cl, %edx
				movl	%edx, %eax
				orl	%eax, -2356(%ebp)
				addl	$1, -2352(%ebp)
		.L18:
				cmpl	$0, -2352(%ebp)
				je	.L19
		.LBE38:
				movl	-2356(%ebp), %eax
		.LBE37:
				subl	$8, %esp
				pushl	%eax
				movl	-2368(%ebp), %ebx
				movl	_imp_event@GOT(%ebx), %eax
				pushl	%eax
				call	_imp_on_event_enter@PLT
				addl	$16, %esp
				testl	%eax, %eax
				jne	.L29
		.L17:
		.LBB39:
				nop
		.L20:
   52       print string(" an unknown number of steps (we hit an integer overflow)")
				leal	-1564(%ebp), %eax
				movl	-2368(%ebp), %ebx
				leal	.LC4@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1820(%ebp), %eax
				leal	-1564(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-540(%ebp), %eax
				leal	-1820(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE39:
		.LBB40:
		.LBB41:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-540(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				movl	%ebx, %edi
				movl	%edi, %ebx
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE41:
		.LBE40:
		.LBB42:
		.LBB43:
				movl	%edi, %ebx
				call	_imp_newline@PLT
		.LBE43:
		.LBE42:
   53       newline
   54       %return
				jmp	.L15
		.L29:
   55     %finish
   56
   57     %if i&odd1 # 0 %then write(odd collatz(i), 1) %else write(even collatz(i), 1)
				movl	-2372(%ebp), %eax
				movl	(%eax), %eax
				testl	%eax, %eax
				sete	%al
				movzbl	%al, %eax
				andl	8(%ebp), %eax
				testl	%eax, %eax
				jne	.L30
				subl	$12, %esp
				leal	-2348(%ebp), %eax
				pushl	8(%ebp)
				movl	%eax, %ecx
				call	ODDCOLLATZ.6029
				addl	$16, %esp
				subl	$8, %esp
				pushl	$1
				pushl	%eax
				movl	-2368(%ebp), %ebx
				call	_imp_writeint@PLT
				addl	$16, %esp
				jmp	.L24
		.L23:
		.L30:
				nop
				subl	$12, %esp
				leal	-2348(%ebp), %eax
				pushl	8(%ebp)
				movl	%eax, %ecx
				call	EVENCOLLATZ.6031
				addl	$16, %esp
				subl	$8, %esp
				pushl	$1
				pushl	%eax
				movl	-2368(%ebp), %ebx
				call	_imp_writeint@PLT
				addl	$16, %esp
		.L24:
		.LBB44:
   58     print string(" steps and the largest value reached was")
				leal	-1564(%ebp), %eax
				movl	-2368(%ebp), %ebx
				leal	.LC5@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1308(%ebp), %eax
				leal	-1564(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-284(%ebp), %eax
				leal	-1308(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE44:
		.LBB45:
		.LBB46:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-284(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				movl	%ebx, %esi
				movl	%esi, %ebx
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE46:
		.LBE45:
   59     write(max, 1)
				movl	-2340(%ebp), %eax
				movl	(%eax), %eax
				subl	$8, %esp
				pushl	$1
				pushl	%eax
				movl	%esi, %ebx
				call	_imp_writeint@PLT
				addl	$16, %esp
		.LBB47:
		.LBB48:
				movl	%esi, %ebx
				call	_imp_newline@PLT
		.LBE48:
		.LBE47:
   60     newline
   61   %end
				nop
		.L15:
				movl	-28(%ebp), %eax
				xorl	%gs:20, %eax
				je	.L25
				call	__stack_chk_fail_local
		.L25:
				leal	-12(%ebp), %esp
				popl	%ebx
				popl	%esi
				popl	%edi
				popl	%ebp
				ret
		.LFE190:
				.section	.rodata
				.align 32
		.LC1:
				.byte	37
				.string	"Parameter must be a positive integer."
				.zero	217
				.globl	main
		main:
		.LFB189:
   62
   63   %integer highest, seed
   64
   65   prompt("Integer seed value: ")
				leal	-284(%ebp), %edx
				movl	$0, %eax
				movl	$64, %ecx
				movl	%edx, %edi
				rep stosl
				movb	$20, -284(%ebp)
				movl	$1702129225, -283(%ebp)
				movl	$544367975, -279(%ebp)
				movl	$1684366707, -275(%ebp)
				movw	$30240, -271(%ebp)
				movb	$97, -269(%ebp)
				leal	-796(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE49:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-796(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_PROMPT
				addl	$256, %esp
   66   read(seed)
				subl	$12, %esp
				leal	-820(%ebp), %eax
				pushl	%eax
				call	_imp_readint@PLT
				addl	$16, %esp
   67
   68   %if seed < 0 %start
				movl	-820(%ebp), %eax
				testl	%eax, %eax
				jns	.L36
		.LBB50:
				nop
		.L33:
   69     print string("Parameter must be a positive integer."); newline
				leal	-284(%ebp), %eax
				leal	.LC1@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-540(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-284(%ebp), %eax
				leal	-540(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE50:
		.LBB51:
		.LBB52:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-284(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE52:
		.LBE51:
		.LBB53:
		.LBB54:
				call	_imp_newline@PLT
				movl	$0, -816(%ebp)
		.LBE54:
		.LBE53:
		.LBB55:
		.LBB56:
				subl	$12, %esp
				pushl	-816(%ebp)
				call	exit@PLT
		.L36:
		.LBE56:
		.LBE55:
   70     %stop
   71   %finish
   72
   73   highest = 0; show collatz length(seed-1, highest)
				movl	$0, -824(%ebp)
				movl	-820(%ebp), %eax
				leal	-1(%eax), %ecx
				subl	$8, %esp
				leal	-808(%ebp), %eax
				leal	-824(%ebp), %edx
				pushl	%edx
				pushl	%ecx
				movl	%eax, %ecx
				call	SHOWCOLLATZLENGTH.6025
				addl	$16, %esp
   74   highest = 0; show collatz length(seed,   highest)
				movl	$0, -824(%ebp)
				movl	-820(%ebp), %edx
				subl	$8, %esp
				leal	-808(%ebp), %eax
				leal	-824(%ebp), %ecx
				pushl	%ecx
				pushl	%edx
				movl	%eax, %ecx
				call	SHOWCOLLATZLENGTH.6025
				addl	$16, %esp
   75   highest = 0; show collatz length(seed+1, highest)
				movl	$0, -824(%ebp)
				movl	-820(%ebp), %eax
				leal	1(%eax), %ecx
				subl	$8, %esp
				leal	-808(%ebp), %eax
				leal	-824(%ebp), %edx
				pushl	%edx
				pushl	%ecx
				movl	%eax, %ecx
				call	SHOWCOLLATZLENGTH.6025
				addl	$16, %esp
				movl	$0, -812(%ebp)
		.LBB57:
		.LBB58:
				subl	$12, %esp
				pushl	-812(%ebp)
				call	exit@PLT
		.LBE58:
		.LBE57:
		.LFE189:
				.section	.rodata
		.LC6:
				.string	""
				.align 32
		.LC0:
				.byte	19
				.string	"test-in/collatz.imp"
				.zero	235
		ODDCOLLATZ.6029:
		.LFB192:
   76
   77 %endofprogram
   50 Statements compiled
