         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
		.Ltext0:
		TEST.6424:
		.LFB186:
		.LVL16:
				pushq	%rbp
				pushq	%rbx
				subq	$2376, %rsp
				movq	%fs:40, %rax
				movq	%rax, 2360(%rsp)
				xorl	%eax, %eax
				leaq	2400(%rsp), %rax
				movq	%rax, 8(%rsp)
    2 %owninteger swopped =0
				call	_imp_initialise@PLT
		.LVL17:
				leaq	1584(%rsp), %rdi
				movl	$96, %ecx
				movl	$0, %eax
				rep stosq
				movb	$9, 2096(%rsp)
				movabsq	$7234312004649317160, %rax
				movq	%rax, 2097(%rsp)
				movw	$41, 2105(%rsp)
    3 %recordformat f1(%integer i %or %byte b0,b1,b2,b3 %or %string(3)s)
    4 %recordformat f2(%integer i,%record(f1)f)
    5 %recordformat f3(%integer k,%record(f2)f)
    6 %integer i,fail,j,k
    7 %routine test(%integer exp,swexp,act)
		.LVL0:
				pushq	%r15
				pushq	%r14
				pushq	%r13
				pushq	%r12
				pushq	%rbp
				pushq	%rbx
				subq	$1064, %rsp
				movl	%edi, 12(%rsp)
				movl	%edx, %r15d
				movq	%r10, %rbp
				movq	%fs:40, %rax
				movq	%rax, 1048(%rsp)
				xorl	%eax, %eax
    8 %if swopped=0 %start
				movl	SWOPPED.6387(%rip), %eax
				testl	%eax, %eax
				jne	.L5
    9       %if exp=act %then swopped=-1
				cmpl	%edx, %edi
				je	.L13
   10       %if swexp=act %then swopped=1
				cmpl	%esi, %edx
				je	.L10
		.L9:
		.LVL1:
		.LBB17:
				movl	$-1, SWOPPED.6387(%rip)
				cmpl	%esi, %edx
				jne	.L1
		.L10:
   11 %finish
				movl	$1, SWOPPED.6387(%rip)
				jmp	.L1
		.L2:
		.L5:
   12 %if swopped=-1 %and exp=act %then %return
   13 %if swopped=1 %and swexp=act %then %return
				cmpl	%edx, 12(%rsp)
				jne	.L7
				cmpl	$-1, %eax
				je	.L1
		.L7:
   14       printstring("expected="); write(exp,5)
				movabsq	$7234316346693023845, %rax
				movl	$61, %edx
		.LVL2:
				movq	%rax, 785(%rsp)
				movq	%rdx, 793(%rsp)
				movb	$0, 801(%rsp)
				movw	$0, 802(%rsp)
				movl	$0, 804(%rsp)
				leaq	808(%rsp), %rdi
		.LVL3:
				movl	$29, %ecx
				movl	$0, %eax
				rep stosq
				movb	$9, 784(%rsp)
				movq	784(%rsp), %rax
				movq	792(%rsp), %rdx
				movq	%rax, 16(%rsp)
				movq	%rdx, 24(%rsp)
				movdqa	800(%rsp), %xmm0
				movaps	%xmm0, 32(%rsp)
				movdqa	816(%rsp), %xmm1
				movaps	%xmm1, 48(%rsp)
				movdqa	832(%rsp), %xmm2
				movaps	%xmm2, 64(%rsp)
				movdqa	848(%rsp), %xmm3
				movaps	%xmm3, 80(%rsp)
				movdqa	864(%rsp), %xmm4
				movaps	%xmm4, 96(%rsp)
				movdqa	880(%rsp), %xmm5
				movaps	%xmm5, 112(%rsp)
				movdqa	896(%rsp), %xmm6
				movaps	%xmm6, 128(%rsp)
				movdqa	912(%rsp), %xmm7
				movaps	%xmm7, 144(%rsp)
				movdqa	928(%rsp), %xmm0
				movaps	%xmm0, 160(%rsp)
				movdqa	944(%rsp), %xmm1
				movaps	%xmm1, 176(%rsp)
				movq	960(%rsp), %r13
				movq	968(%rsp), %r14
				movq	%r13, 192(%rsp)
				movq	%r14, 200(%rsp)
				movq	976(%rsp), %rsi
		.LVL4:
				movq	984(%rsp), %rdi
				movq	%rsi, 208(%rsp)
				movq	%rdi, 216(%rsp)
				movq	992(%rsp), %r9
				movq	1000(%rsp), %r10
				movq	%r9, 224(%rsp)
				movq	%r10, 232(%rsp)
				movq	1008(%rsp), %rcx
				movq	1016(%rsp), %rbx
				movq	%rcx, 240(%rsp)
				movq	%rbx, 248(%rsp)
				movq	1024(%rsp), %r11
				movq	1032(%rsp), %r12
				movq	%r11, 256(%rsp)
				movq	%r12, 264(%rsp)
		.LVL5:
				movb	$9, 16(%rsp)
				movq	16(%rsp), %rax
				movq	24(%rsp), %rdx
				movq	%rax, 784(%rsp)
				movq	%rdx, 792(%rsp)
		.LBE17:
		.LBB18:
		.LBB19:
				pushq	%r12
				pushq	%r11
				pushq	%rbx
				pushq	%rcx
				pushq	%r10
				pushq	%r9
				pushq	%rdi
				pushq	%rsi
				pushq	%r14
				pushq	%r13
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	1032(%rsp)
				pushq	%rdx
				pushq	%rax
				call	_imp_printstring@PLT
		.LVL6:
		.LBE19:
		.LBE18:
				cmpl	%esi, %r15d
				jne	.L9
				cmpl	$1, %eax
				jne	.L9
				jmp	.L1
		.LVL14:
		.L14:
				call	__stack_chk_fail@PLT
		.LVL15:
		.LFE186:
				.globl	main
		main:
		.LFB185:
   15       printstring(" actual="); write(act,5); newline
				addq	$256, %rsp
				movl	$5, %esi
				movl	12(%rsp), %edi
				call	_imp_writeint@PLT
		.LVL7:
		.LBB20:
				movabsq	$4426019690890092832, %rbx
				movl	$0, %esi
				movq	%rbx, 529(%rsp)
				movq	%rsi, 537(%rsp)
				movb	$0, 545(%rsp)
				movw	$0, 546(%rsp)
				movl	$0, 548(%rsp)
				leaq	552(%rsp), %rdi
				movl	$29, %ecx
				movl	$0, %eax
				rep stosq
				movb	$8, 528(%rsp)
				movq	528(%rsp), %rax
				movq	536(%rsp), %rdx
				movq	%rax, 272(%rsp)
				movq	%rdx, 280(%rsp)
				movdqa	544(%rsp), %xmm2
				movaps	%xmm2, 288(%rsp)
				movdqa	560(%rsp), %xmm3
				movaps	%xmm3, 304(%rsp)
				movdqa	576(%rsp), %xmm4
				movaps	%xmm4, 320(%rsp)
				movdqa	592(%rsp), %xmm5
				movaps	%xmm5, 336(%rsp)
				movdqa	608(%rsp), %xmm6
				movaps	%xmm6, 352(%rsp)
				movdqa	624(%rsp), %xmm7
				movaps	%xmm7, 368(%rsp)
				movdqa	640(%rsp), %xmm0
				movaps	%xmm0, 384(%rsp)
				movdqa	656(%rsp), %xmm1
				movaps	%xmm1, 400(%rsp)
				movdqa	672(%rsp), %xmm2
				movaps	%xmm2, 416(%rsp)
				movdqa	688(%rsp), %xmm3
				movaps	%xmm3, 432(%rsp)
				movq	704(%rsp), %r13
				movq	712(%rsp), %r14
				movq	%r13, 448(%rsp)
				movq	%r14, 456(%rsp)
				movq	720(%rsp), %rcx
				movq	728(%rsp), %rbx
				movq	%rcx, 464(%rsp)
				movq	%rbx, 472(%rsp)
				movq	736(%rsp), %rsi
				movq	744(%rsp), %rdi
				movq	%rsi, 480(%rsp)
				movq	%rdi, 488(%rsp)
				movq	752(%rsp), %r9
				movq	760(%rsp), %r10
				movq	%r9, 496(%rsp)
				movq	%r10, 504(%rsp)
				movq	768(%rsp), %r11
				movq	776(%rsp), %r12
				movq	%r11, 512(%rsp)
				movq	%r12, 520(%rsp)
		.LVL8:
				movb	$8, 272(%rsp)
				movq	272(%rsp), %rax
				movq	280(%rsp), %rdx
				movq	%rax, 528(%rsp)
				movq	%rdx, 536(%rsp)
		.LBE20:
		.LBB21:
		.LBB22:
				pushq	%r12
				pushq	%r11
				pushq	%r10
				pushq	%r9
				pushq	%rdi
				pushq	%rsi
				pushq	%rbx
				pushq	%rcx
				pushq	%r14
				pushq	%r13
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	%rdx
				pushq	%rax
				call	_imp_printstring@PLT
		.LVL9:
		.LBE22:
		.LBE21:
   16       fail=fail+1
				addq	$256, %rsp
				movl	$5, %esi
				movl	%r15d, %edi
				call	_imp_writeint@PLT
		.LVL10:
		.LBB23:
		.LBB24:
				call	_imp_newline@PLT
		.LVL11:
		.LBE24:
		.LBE23:
				addl	$1, 0(%rbp)
		.L1:
   17       %monitor
   18 %end
   19 %conststring(11) %array tx(-1:1)="","","(swopped)";
				movq	1048(%rsp), %rax
				xorq	%fs:40, %rax
				jne	.L14
				addq	$1064, %rsp
				popq	%rbx
				popq	%rbp
				popq	%r12
				popq	%r13
				popq	%r14
				popq	%r15
		.LVL12:
				ret
		.LVL13:
		.L13:
   20 %record(f1) r1
   21 %record(f2) r2
   22 %record(f3) r3
   23 fail=0
				movl	$0, (%rsp)
		.LVL18:
		.LDL1:
   24       j=0
   25 l1:
   26 r1_i=0
				movl	$0, 16(%rsp)
		.LVL19:
   27 k=r1_I+j
   28 r1_b3=5
				movb	$5, 19(%rsp)
   29 test(5,X'05000000',r1_i)
				movl	16(%rsp), %ebp
				movq	%rsp, %rbx
				movq	%rbx, %r10
				movl	%ebp, %edx
				movl	$83886080, %esi
				movl	$5, %edi
				call	TEST.6424
		.LVL20:
   30 test(5,x'05000000',r1_i+j)
				movq	%rbx, %r10
				movl	%ebp, %edx
				movl	$83886080, %esi
				movl	$5, %edi
				call	TEST.6424
		.LVL21:
   31 r2_f_i=1
				movl	$1, 1044(%rsp)
   32 r2_f_b3=6
				movb	$6, 1047(%rsp)
   33 test(6,x'06000001',r2_f_i)
				movq	%rbx, %r10
				movl	1044(%rsp), %edx
				movl	$100663297, %esi
				movl	$6, %edi
				call	TEST.6424
		.LVL22:
   34 r3_f_f_i=1
				movl	$1, 1320(%rsp)
   35 r3_f_f_b3=6
				movb	$6, 1323(%rsp)
   36 test(6,x'06000001',r3_f_f_i)
				movq	%rbx, %r10
				movl	1320(%rsp), %edx
				movl	$100663297, %esi
				movl	$6, %edi
				call	TEST.6424
		.LVL23:
   37 %if fail=0 %then printstring("Test ok ".tx(swopped))
				cmpl	$0, (%rsp)
				je	.L19
		.L16:
		.LVL24:
		.LBB25:
		.LBB26:
				movl	$0, %edi
				call	exit@PLT
		.LVL25:
		.L19:
		.LBE26:
		.LBE25:
		.LBB27:
		.LBB28:
   38 %endofprogram
?L1 unused
?I unused
   40 Statements compiled
				movl	SWOPPED.6387(%rip), %eax
				addl	$1, %eax
				cltq
				salq	$8, %rax
				leaq	1584(%rsp,%rax), %rdx
				leaq	784(%rsp), %rbx
				leaq	528(%rsp), %rsi
				movq	%rbx, %rdi
				call	_imp_join@PLT
		.LVL26:
				leaq	272(%rsp), %rsi
				movl	$32, %ecx
				movq	%rbx, %rdi
				rep movsq
		.LBE28:
		.LBE27:
		.LBB29:
		.LBB30:
				subq	$256, %rsp
				movl	$32, %ecx
				movq	%rsp, %rdi
				movq	%rbx, %rsi
				rep movsq
				call	_imp_printstring@PLT
		.LVL27:
				addq	$256, %rsp
				jmp	.L16
		.LBE30:
		.LBE29:
		.LFE185:
				.comm	SWOPPED.6387,4,4
		.Letext0:
