Bug#589389: FTBFS on ia64

Emilio Pozuelo Monfort pochu at debian.org
Sun Aug 8 16:23:38 UTC 2010


reassign 589389 gcc-4.4
affects 589389 genius
thanks

Hi,

Short summary: genius FTBFS on ia64 (and only there) with this problem:

cd ../lib && ../src/genius --maxerrors=0 --compile loader.gel > temp.cgel && mv -f temp.cgel lib.cgel
/bin/bash: line 1:  7761 Segmentation fault      ../src/genius --maxerrors=0 --compile loader.gel > temp.cgel
make[4]: *** [lib.cgel] Error 139

I've debugged it on merulo and it builds fine with gcc-4.3 and gcc-snapshot,
only fails with gcc-4.4. However with -O0 and -O1 it builds fine with
gcc-4.4, only -O2 fails.

Here's the source, the backtrace and the disassemble. Please let me know if
there's missing information or anything I can do to help fix this. I'm not
used to these kind of bugs.

Regards,
Emilio


(sid)pochu at merulo:~/genius-1.0.9/src$ cat test.gel 
function FrobeniusNumber(v,arg...) = (
	if IsNull (arg) then
		m = [v];
);

function GreedyAlgorithm(n,v) = (

	elts = elements(v);

	if elts == 1 then (
		if Divides (v@(1), n) then
			return [floor(n / v@(1))]
		else
			return null
	);
);
(sid)pochu at merulo:~/genius-1.0.9/src$ gdb --args ./genius --compile test.gel 
GNU gdb (GDB) 7.0.1-debian
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "ia64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/pochu/genius-1.0.9/src/genius...done.
(gdb) r
Starting program: /home/pochu/genius-1.0.9/src/genius --compile test.gel
[Thread debugging using libthread_db enabled]
CGEL 1.0.9
F;62;FrobeniusNumber;*;n2;v1;p0;o0;l0;e0;b0;-;-;v;arg
T;5;0;2;5;23;2;5;58;2;6;IsNull;6;arg;5;1;2;6;m;2;1x1;0;N;6;v;0

Program received signal SIGSEGV, Segmentation fault.
0x4000000000120480 in gel_compile_node (t=<value optimized out>, gs=0x600000000002f4a0)
    at compil.c:108
108					GelETree *tt = gel_matrixw_get_index(t->mat.matrix,i,j);
(gdb) bt
#0  0x4000000000120480 in gel_compile_node (t=<value optimized out>, gs=0x600000000002f4a0)
    at compil.c:108
#1  0x400000000011feb0 in gel_compile_node (t=0x6000000000057130, gs=0x600000000002f4a0)
    at compil.c:122
#2  0x400000000011fef0 in gel_compile_node (t=0x6000000000039c70, gs=0x600000000002f4a0)
    at compil.c:122
#3  0x400000000011fef0 in gel_compile_node (t=0x6000000000039d10, gs=0x600000000002f4a0)
    at compil.c:122
#4  0x400000000011fef0 in gel_compile_node (t=0x6000000000039ea0, gs=0x600000000002f4a0)
    at compil.c:122
#5  0x4000000000120b10 in gel_compile_tree (t=0x6000000000039ea0) at compil.c:204
#6  0x4000000000011d70 in compile_funcs_in_dict (outfile=0x2000000000846998, 
    dict=0x600000000002eb00, is_extra_dict=2162690) at calc.c:1836
#7  0x4000000000012920 in gel_compile_all_user_funcs (outfile=0x2000000000846998) at calc.c:1943
#8  0x4000000000067690 in main (argc=<value optimized out>, argv=<value optimized out>)
    at genius.c:685
(gdb) disassemble 
Dump of assembler code for function gel_compile_node:
0x400000000011f840 <gel_compile_node+0>:	[MMB]       alloc r40=ar.pfs,18,10,0
0x400000000011f841 <gel_compile_node+1>:	            adds r12=-48,r12
0x400000000011f842 <gel_compile_node+2>:	            nop.b 0x0
0x400000000011f850 <gel_compile_node+16>:	[MMI]       addl r43=13464,r1
0x400000000011f851 <gel_compile_node+17>:	            mov r41=r1
0x400000000011f852 <gel_compile_node+18>:	            mov r39=b0;;
0x400000000011f860 <gel_compile_node+32>:	[MMI]       ld4 r44=[r32]
0x400000000011f861 <gel_compile_node+33>:	            nop.m 0x0
0x400000000011f862 <gel_compile_node+34>:	            mov r42=r33
0x400000000011f870 <gel_compile_node+48>:	[MMB]       ld8 r43=[r43]
0x400000000011f871 <gel_compile_node+49>:	            nop.m 0x0
0x400000000011f872 <gel_compile_node+50>:	            br.call.sptk.many b0=0x400000000000f0a0;;
0x400000000011f880 <gel_compile_node+64>:	[MMI]       ld4 r14=[r32]
0x400000000011f881 <gel_compile_node+65>:	            nop.m 0x0
0x400000000011f882 <gel_compile_node+66>:	            mov r1=r41;;
0x400000000011f890 <gel_compile_node+80>:	[MIB]       nop.m 0x0
0x400000000011f891 <gel_compile_node+81>:	            cmp4.ltu p6,p7=11,r14
0x400000000011f892 <gel_compile_node+82>:	      (p07) br.cond.dptk.few 0x400000000011f8e0 <gel_compile_node+160>
0x400000000011f8a0 <gel_compile_node+96>:	[MMI]       addl r17=13560,r1
0x400000000011f8a1 <gel_compile_node+97>:	            addl r35=13568,r1
0x400000000011f8a2 <gel_compile_node+98>:	            nop.i 0x0
0x400000000011f8b0 <gel_compile_node+112>:	[MMI]       addl r41=13712,r1
0x400000000011f8b1 <gel_compile_node+113>:	            mov r44=192
0x400000000011f8b2 <gel_compile_node+114>:	            mov r46=r0;;
0x400000000011f8c0 <gel_compile_node+128>:	[MMI]       ld8 r42=[r17]
0x400000000011f8c1 <gel_compile_node+129>:	            ld8 r43=[r35]
0x400000000011f8c2 <gel_compile_node+130>:	            nop.i 0x0;;
---Type <return> to continue, or q <return> to quit---
0x400000000011f8d0 <gel_compile_node+144>:	[MIB]       ld8 r45=[r41]
0x400000000011f8d1 <gel_compile_node+145>:	            nop.i 0x0
0x400000000011f8d2 <gel_compile_node+146>:	            br.call.sptk.many b0=0x400000000000eb80
0x400000000011f8e0 <gel_compile_node+160>:	[MMI]       addl r9=13696,r1;;
0x400000000011f8e1 <gel_compile_node+161>:	            ld8 r3=[r9]
0x400000000011f8e2 <gel_compile_node+162>:	            nop.i 0x0;;
0x400000000011f8f0 <gel_compile_node+176>:	[MMI]       shladd r14=r14,3,r3;;
0x400000000011f8f1 <gel_compile_node+177>:	            ld8 r2=[r14]
0x400000000011f8f2 <gel_compile_node+178>:	            nop.i 0x0;;
0x400000000011f900 <gel_compile_node+192>:	[MMI]       nop.m 0x0
0x400000000011f901 <gel_compile_node+193>:	            add r15=r14,r2
0x400000000011f902 <gel_compile_node+194>:	            nop.i 0x0;;
0x400000000011f910 <gel_compile_node+208>:	[MIB]       nop.m 0x0
0x400000000011f911 <gel_compile_node+209>:	            mov b6=r15
0x400000000011f912 <gel_compile_node+210>:	            br.few b6;;
0x400000000011f920 <gel_compile_node+224>:	[MMI]       ld8 r14=[r34];;
0x400000000011f921 <gel_compile_node+225>:	            adds r46=24,r14
0x400000000011f922 <gel_compile_node+226>:	            nop.i 0x0;;
0x400000000011f930 <gel_compile_node+240>:	[MMI]       nop.m 0x0
0x400000000011f931 <gel_compile_node+241>:	            ld8 r35=[r46]
0x400000000011f932 <gel_compile_node+242>:	            nop.i 0x0;;
0x400000000011f940 <gel_compile_node+256>:	[MIB]       nop.m 0x0
0x400000000011f941 <gel_compile_node+257>:	            cmp.eq p6,p7=0,r35
0x400000000011f942 <gel_compile_node+258>:	      (p06) br.cond.dpnt.few 0x400000000011f9c0 <gel_compile_node+384>;;
0x400000000011f950 <gel_compile_node+272>:	[MMI]       nop.m 0x0
0x400000000011f951 <gel_compile_node+273>:	            nop.m 0x0
0x400000000011f952 <gel_compile_node+274>:	            nop.i 0x0
0x400000000011f960 <gel_compile_node+288>:	[MMI]       ld8 r47=[r35],8
---Type <return> to continue, or q <return> to quit---
0x400000000011f961 <gel_compile_node+289>:	            addl r48=13504,r1
0x400000000011f962 <gel_compile_node+290>:	            mov r42=r33;;
0x400000000011f970 <gel_compile_node+304>:	[MMI]       nop.m 0x0
0x400000000011f971 <gel_compile_node+305>:	            ld8 r43=[r48]
0x400000000011f972 <gel_compile_node+306>:	            nop.i 0x0;;
0x400000000011f980 <gel_compile_node+320>:	[MIB]       ld8 r44=[r47]
0x400000000011f981 <gel_compile_node+321>:	            nop.i 0x0
0x400000000011f982 <gel_compile_node+322>:	            br.call.sptk.many b0=0x400000000000f0a0;;
0x400000000011f990 <gel_compile_node+336>:	[MMI]       ld8 r35=[r35]
0x400000000011f991 <gel_compile_node+337>:	            nop.m 0x0
0x400000000011f992 <gel_compile_node+338>:	            mov r1=r41;;
0x400000000011f9a0 <gel_compile_node+352>:	[MIB]       nop.m 0x0
0x400000000011f9a1 <gel_compile_node+353>:	            cmp.eq p7,p6=0,r35
0x400000000011f9a2 <gel_compile_node+354>:	      (p06) br.cond.dptk.few 0x400000000011f960 <gel_compile_node+288>
0x400000000011f9b0 <gel_compile_node+368>:	[MMI]       ld8 r14=[r34]
0x400000000011f9b1 <gel_compile_node+369>:	            nop.m 0x0
0x400000000011f9b2 <gel_compile_node+370>:	            nop.i 0x0;;
0x400000000011f9c0 <gel_compile_node+384>:	[MII]       adds r34=56,r14
0x400000000011f9c1 <gel_compile_node+385>:	            mov r43=r33;;
0x400000000011f9c2 <gel_compile_node+386>:	            nop.i 0x0
0x400000000011f9d0 <gel_compile_node+400>:	[MMB]       ld8 r42=[r34]
0x400000000011f9d1 <gel_compile_node+401>:	            nop.m 0x0
0x400000000011f9d2 <gel_compile_node+402>:	            br.call.sptk.many b0=0x400000000011f840 <gel_compile_node>;;
0x400000000011f9e0 <gel_compile_node+416>:	[MMI]       mov r1=r41
0x400000000011f9e1 <gel_compile_node+417>:	            nop.m 0x0
0x400000000011f9e2 <gel_compile_node+418>:	            nop.i 0x0;;
0x400000000011f9f0 <gel_compile_node+432>:	[MMI]       nop.m 0x0
---Type <return> to continue, or q <return> to quit---
0x400000000011f9f1 <gel_compile_node+433>:	            nop.m 0x0
0x400000000011f9f2 <gel_compile_node+434>:	            nop.i 0x0
0x400000000011fa00 <gel_compile_node+448>:	[MII]       nop.m 0x0
0x400000000011fa01 <gel_compile_node+449>:	            mov.i ar.pfs=r40;;
0x400000000011fa02 <gel_compile_node+450>:	            mov b0=r39
0x400000000011fa10 <gel_compile_node+464>:	[MMB]       nop.m 0x0
0x400000000011fa11 <gel_compile_node+465>:	            adds r12=48,r12
0x400000000011fa12 <gel_compile_node+466>:	            br.ret.sptk.many b0
0x400000000011fa20 <gel_compile_node+480>:	[MMI]       mov r44=r0
0x400000000011fa21 <gel_compile_node+481>:	            mov r45=r0
0x400000000011fa22 <gel_compile_node+482>:	            mov r46=r0
0x400000000011fa30 <gel_compile_node+496>:	[MMI]       mov r47=r0
0x400000000011fa31 <gel_compile_node+497>:	            mov r48=10
0x400000000011fa32 <gel_compile_node+498>:	            mov r49=1;;
0x400000000011fa40 <gel_compile_node+512>:	[MIB]       adds r42=16,r32
0x400000000011fa41 <gel_compile_node+513>:	            mov r43=r0
0x400000000011fa42 <gel_compile_node+514>:	            br.call.sptk.many b0=0x40000000000c5880 <mpw_getstring>;;
0x400000000011fa50 <gel_compile_node+528>:	[MMI]       mov r34=r8
0x400000000011fa51 <gel_compile_node+529>:	            adds r15=8,r33
0x400000000011fa52 <gel_compile_node+530>:	            adds r10=16,r33
0x400000000011fa60 <gel_compile_node+544>:	[MMI]       mov r1=r41
0x400000000011fa61 <gel_compile_node+545>:	            mov r19=59
0x400000000011fa62 <gel_compile_node+546>:	            mov r42=r33;;
0x400000000011fa70 <gel_compile_node+560>:	[MMI]       nop.m 0x0
0x400000000011fa71 <gel_compile_node+561>:	            ld8 r16=[r15]
0x400000000011fa72 <gel_compile_node+562>:	            mov r43=r34
0x400000000011fa80 <gel_compile_node+576>:	[MMI]       ld8 r17=[r10];;
0x400000000011fa81 <gel_compile_node+577>:	            adds r14=1,r16
---Type <return> to continue, or q <return> to quit---
0x400000000011fa82 <gel_compile_node+578>:	            nop.i 0x0;;
0x400000000011fa90 <gel_compile_node+592>:	[MIB]       cmp.ltu p7,p6=r14,r17
0x400000000011fa91 <gel_compile_node+593>:	            nop.i 0x0
0x400000000011fa92 <gel_compile_node+594>:	      (p06) br.cond.dpnt.few 0x4000000000120530 <gel_compile_node+3312>;;
0x400000000011faa0 <gel_compile_node+608>:	[MII]       ld8 r20=[r33]
0x400000000011faa1 <gel_compile_node+609>:	            nop.i 0x0;;
0x400000000011faa2 <gel_compile_node+610>:	            add r18=r20,r16
0x400000000011fab0 <gel_compile_node+624>:	[MMI]       ld8.a r16=[r33];;
0x400000000011fab1 <gel_compile_node+625>:	            st1 [r18]=r19
0x400000000011fab2 <gel_compile_node+626>:	            add r11=r16,r14
0x400000000011fac0 <gel_compile_node+640>:	[MMI]       st8 [r15]=r14
0x400000000011fac1 <gel_compile_node+641>:	            chk.a.clr r16,0x4000000000120a00 <gel_compile_node+4544>
0x400000000011fac2 <gel_compile_node+642>:	            nop.i 0x0
0x400000000011fad0 <gel_compile_node+656>:	[MMI]       nop.m 0x0
0x400000000011fad1 <gel_compile_node+657>:	            nop.m 0x0
0x400000000011fad2 <gel_compile_node+658>:	            nop.i 0x0;;
0x400000000011fae0 <gel_compile_node+672>:	[MIB]       st1 [r11]=r0
0x400000000011fae1 <gel_compile_node+673>:	            nop.i 0x0
0x400000000011fae2 <gel_compile_node+674>:	            br.call.sptk.many b0=0x400000000000f040;;
0x400000000011faf0 <gel_compile_node+688>:	[MMI]       nop.m 0x0
0x400000000011faf1 <gel_compile_node+689>:	            mov r1=r41
0x400000000011faf2 <gel_compile_node+690>:	            mov r42=r34
0x400000000011fb00 <gel_compile_node+704>:	[MMB]       nop.m 0x0
0x400000000011fb01 <gel_compile_node+705>:	            nop.m 0x0
0x400000000011fb02 <gel_compile_node+706>:	            br.call.sptk.many b0=0x400000000000cf00;;
0x400000000011fb10 <gel_compile_node+720>:	[MMI]       mov r1=r41
0x400000000011fb11 <gel_compile_node+721>:	            nop.m 0x0
---Type <return> to continue, or q <return> to quit---
0x400000000011fb12 <gel_compile_node+722>:	            nop.i 0x0
0x400000000011fb20 <gel_compile_node+736>:	[MII]       nop.m 0x0
0x400000000011fb21 <gel_compile_node+737>:	            mov.i ar.pfs=r40;;
0x400000000011fb22 <gel_compile_node+738>:	            mov b0=r39
0x400000000011fb30 <gel_compile_node+752>:	[MMB]       nop.m 0x0
0x400000000011fb31 <gel_compile_node+753>:	            adds r12=48,r12
0x400000000011fb32 <gel_compile_node+754>:	            br.ret.sptk.many b0
0x400000000011fb40 <gel_compile_node+768>:	[MMI]       adds r34=16,r32
0x400000000011fb41 <gel_compile_node+769>:	            addl r23=13472,r1
0x400000000011fb42 <gel_compile_node+770>:	            adds r32=24,r32
0x400000000011fb50 <gel_compile_node+784>:	[MMI]       mov r42=r33
0x400000000011fb51 <gel_compile_node+785>:	            mov r35=r0
0x400000000011fb52 <gel_compile_node+786>:	            mov r36=r0;;
0x400000000011fb60 <gel_compile_node+800>:	[MMI]       ld8 r25=[r34]
0x400000000011fb61 <gel_compile_node+801>:	            ld8 r43=[r23]
0x400000000011fb62 <gel_compile_node+802>:	            nop.i 0x0;;
0x400000000011fb70 <gel_compile_node+816>:	[MMI]       adds r26=32,r25
0x400000000011fb71 <gel_compile_node+817>:	            ld4 r46=[r32]
0x400000000011fb72 <gel_compile_node+818>:	            nop.i 0x0;;
0x400000000011fb80 <gel_compile_node+832>:	[MMI]       ld8 r24=[r26];;
0x400000000011fb81 <gel_compile_node+833>:	            nop.m 0x0
0x400000000011fb82 <gel_compile_node+834>:	            tbit.z p6,p7=r24,0;;
0x400000000011fb90 <gel_compile_node+848>:	[MMI] (p07) adds r24=24,r25
0x400000000011fb91 <gel_compile_node+849>:	      (p06) adds r24=28,r25
0x400000000011fb92 <gel_compile_node+850>:	      (p07) adds r25=28,r25
0x400000000011fba0 <gel_compile_node+864>:	[MMI] (p06) adds r25=24,r25;;
0x400000000011fba1 <gel_compile_node+865>:	      (p07) ld4 r44=[r25]
0x400000000011fba2 <gel_compile_node+866>:	            nop.i 0x0
0x400000000011fbb0 <gel_compile_node+880>:	[MMI] (p07) ld4 r45=[r24];;
---Type <return> to continue, or q <return> to quit---
0x400000000011fbb1 <gel_compile_node+881>:	      (p06) ld4 r44=[r25]
0x400000000011fbb2 <gel_compile_node+882>:	            nop.i 0x0
0x400000000011fbc0 <gel_compile_node+896>:	[MMB] (p06) ld4 r45=[r24]
0x400000000011fbc1 <gel_compile_node+897>:	            nop.m 0x0
0x400000000011fbc2 <gel_compile_node+898>:	            br.call.sptk.many b0=0x400000000000f0a0;;
0x400000000011fbd0 <gel_compile_node+912>:	[MII]       ld8 r14=[r34]
0x400000000011fbd1 <gel_compile_node+913>:	            mov r1=r41;;
0x400000000011fbd2 <gel_compile_node+914>:	            adds r22=32,r14;;
0x400000000011fbe0 <gel_compile_node+928>:	[MII]       ld8 r21=[r22]
0x400000000011fbe1 <gel_compile_node+929>:	            nop.i 0x0;;
0x400000000011fbe2 <gel_compile_node+930>:	            and r15=1,r21;;
0x400000000011fbf0 <gel_compile_node+944>:	[MMI]       nop.m 0x0
0x400000000011fbf1 <gel_compile_node+945>:	            nop.m 0x0
0x400000000011fbf2 <gel_compile_node+946>:	            nop.i 0x0
0x400000000011fc00 <gel_compile_node+960>:	[MMI]       cmp.eq p10,p11=0,r15
0x400000000011fc01 <gel_compile_node+961>:	            mov r32=r0
0x400000000011fc02 <gel_compile_node+962>:	            mov r37=r0;;
0x400000000011fc10 <gel_compile_node+976>:	[MMI] (p11) adds r16=28,r14;;
0x400000000011fc11 <gel_compile_node+977>:	      (p11) ld4 r16=[r16]
0x400000000011fc12 <gel_compile_node+978>:	            nop.i 0x0;;
0x400000000011fc20 <gel_compile_node+992>:	[MMI] (p10) adds r16=24,r14;;
0x400000000011fc21 <gel_compile_node+993>:	      (p10) ld4 r16=[r16]
0x400000000011fc22 <gel_compile_node+994>:	            nop.i 0x0;;
0x400000000011fc30 <gel_compile_node+1008>:	[MIB]       cmp4.lt p7,p6=r36,r16
0x400000000011fc31 <gel_compile_node+1009>:	            nop.i 0x0
0x400000000011fc32 <gel_compile_node+1010>:	      (p06) br.cond.dpnt.few 0x400000000011fa00 <gel_compile_node+448>;;
0x400000000011fc40 <gel_compile_node+1024>:	[MMI]       cmp.eq p6,p7=0,r15;;
0x400000000011fc41 <gel_compile_node+1025>:	      (p07) adds r16=24,r14
---Type <return> to continue, or q <return> to quit---
0x400000000011fc42 <gel_compile_node+1026>:	      (p06) adds r16=28,r14;;
0x400000000011fc50 <gel_compile_node+1040>:	[MMI] (p07) ld4 r16=[r16]
0x400000000011fc51 <gel_compile_node+1041>:	      (p06) ld4 r16=[r16]
0x400000000011fc52 <gel_compile_node+1042>:	            nop.i 0x0;;
0x400000000011fc60 <gel_compile_node+1056>:	[MIB]       nop.m 0x0
0x400000000011fc61 <gel_compile_node+1057>:	            cmp4.lt p8,p9=r32,r16
0x400000000011fc62 <gel_compile_node+1058>:	      (p09) br.cond.dpnt.few 0x400000000011fe10 <gel_compile_node+1488>;;
0x400000000011fc70 <gel_compile_node+1072>:	[MMI]       nop.m 0x0
0x400000000011fc71 <gel_compile_node+1073>:	            nop.m 0x0
0x400000000011fc72 <gel_compile_node+1074>:	            nop.i 0x0
0x400000000011fc80 <gel_compile_node+1088>:	[MIB]       nop.m 0x0
0x400000000011fc81 <gel_compile_node+1089>:	            nop.i 0x0
0x400000000011fc82 <gel_compile_node+1090>:	      (p06) br.cond.dptk.few 0x40000000001203f0 <gel_compile_node+2992>
0x400000000011fc90 <gel_compile_node+1104>:	[MMI]       mov r38=r14
0x400000000011fc91 <gel_compile_node+1105>:	            nop.m 0x0
0x400000000011fc92 <gel_compile_node+1106>:	            adds r28=16,r14;;
0x400000000011fca0 <gel_compile_node+1120>:	[MMI]       ld8 r16=[r38],8
0x400000000011fca1 <gel_compile_node+1121>:	            ld8 r27=[r28]
0x400000000011fca2 <gel_compile_node+1122>:	            nop.i 0x0;;
0x400000000011fcb0 <gel_compile_node+1136>:	[MMI]       ld8 r29=[r38]
0x400000000011fcb1 <gel_compile_node+1137>:	            adds r14=16,r16
0x400000000011fcb2 <gel_compile_node+1138>:	            adds r31=8,r16;;
0x400000000011fcc0 <gel_compile_node+1152>:	[MMI]       cmp.eq p7,p6=0,r29
0x400000000011fcc1 <gel_compile_node+1153>:	            ld4 r2=[r14]
0x400000000011fcc2 <gel_compile_node+1154>:	            nop.i 0x0
0x400000000011fcd0 <gel_compile_node+1168>:	[MMI]       ld8 r30=[r31];;
0x400000000011fcd1 <gel_compile_node+1169>:	      (p06) add r29=r29,r37
---Type <return> to continue, or q <return> to quit---
0x400000000011fcd2 <gel_compile_node+1170>:	            nop.i 0x0
0x400000000011fce0 <gel_compile_node+1184>:	[MMI] (p07) setf.sig f6=r32
0x400000000011fce1 <gel_compile_node+1185>:	            setf.sig f9=r2
0x400000000011fce2 <gel_compile_node+1186>:	            nop.i 0x0;;
0x400000000011fcf0 <gel_compile_node+1200>:	[MMI] (p06) ld4 r29=[r29]
0x400000000011fcf1 <gel_compile_node+1201>:	            ld8 r17=[r30]
0x400000000011fcf2 <gel_compile_node+1202>:	            nop.i 0x0;;
0x400000000011fd00 <gel_compile_node+1216>:	[MMI] (p06) setf.sig f6=r29
0x400000000011fd01 <gel_compile_node+1217>:	            nop.m 0x0
0x400000000011fd02 <gel_compile_node+1218>:	            cmp.eq p7,p6=0,r27;;
0x400000000011fd10 <gel_compile_node+1232>:	[MMI] (p06) add r27=r27,r35
0x400000000011fd11 <gel_compile_node+1233>:	      (p07) setf.sig f7=r36
0x400000000011fd12 <gel_compile_node+1234>:	            nop.i 0x0;;
0x400000000011fd20 <gel_compile_node+1248>:	[MMI] (p06) ld4 r27=[r27];;
0x400000000011fd21 <gel_compile_node+1249>:	      (p06) setf.sig f7=r27
0x400000000011fd22 <gel_compile_node+1250>:	            nop.i 0x0;;
0x400000000011fd30 <gel_compile_node+1264>:	[MMF]       nop.m 0x0
0x400000000011fd31 <gel_compile_node+1265>:	            nop.m 0x0
0x400000000011fd32 <gel_compile_node+1266>:	            xma.l f8=f7,f9,f6;;
0x400000000011fd40 <gel_compile_node+1280>:	[MMI]       getf.sig r15=f8;;
0x400000000011fd41 <gel_compile_node+1281>:	            nop.m 0x0
0x400000000011fd42 <gel_compile_node+1282>:	            sxt4 r43=r15;;
0x400000000011fd50 <gel_compile_node+1296>:	[MMI]       shladd r49=r43,3,r17;;
0x400000000011fd51 <gel_compile_node+1297>:	            ld8 r38=[r49]
0x400000000011fd52 <gel_compile_node+1298>:	            nop.i 0x0;;
0x400000000011fd60 <gel_compile_node+1312>:	[MIB]       nop.m 0x0
0x400000000011fd61 <gel_compile_node+1313>:	            cmp.eq p7,p6=0,r38
0x400000000011fd62 <gel_compile_node+1314>:	      (p07) br.cond.dpnt.few 0x40000000001204d0 <gel_compile_node+3216>
---Type <return> to continue, or q <return> to quit---
0x400000000011fd70 <gel_compile_node+1328>:	[MMI]       addl r8=13488,r1
0x400000000011fd71 <gel_compile_node+1329>:	            nop.m 0x0
0x400000000011fd72 <gel_compile_node+1330>:	            mov r42=r33
0x400000000011fd80 <gel_compile_node+1344>:	[MMI]       adds r32=1,r32
0x400000000011fd81 <gel_compile_node+1345>:	            nop.m 0x0
0x400000000011fd82 <gel_compile_node+1346>:	            adds r37=4,r37;;
0x400000000011fd90 <gel_compile_node+1360>:	[MIB]       ld8 r43=[r8]
0x400000000011fd91 <gel_compile_node+1361>:	            nop.i 0x0
0x400000000011fd92 <gel_compile_node+1362>:	            br.call.sptk.many b0=0x400000000000f040;;
0x400000000011fda0 <gel_compile_node+1376>:	[MMI]       mov r1=r41
0x400000000011fda1 <gel_compile_node+1377>:	            nop.m 0x0
0x400000000011fda2 <gel_compile_node+1378>:	            mov r42=r38
0x400000000011fdb0 <gel_compile_node+1392>:	[MMB]       mov r43=r33
0x400000000011fdb1 <gel_compile_node+1393>:	            nop.m 0x0
0x400000000011fdb2 <gel_compile_node+1394>:	            br.call.sptk.many b0=0x400000000011f840 <gel_compile_node>;;
0x400000000011fdc0 <gel_compile_node+1408>:	[MII]       ld8 r14=[r34]
0x400000000011fdc1 <gel_compile_node+1409>:	            mov r1=r41;;
0x400000000011fdc2 <gel_compile_node+1410>:	            adds r17=32,r14;;
0x400000000011fdd0 <gel_compile_node+1424>:	[MII]       ld8 r9=[r17]
0x400000000011fdd1 <gel_compile_node+1425>:	            nop.i 0x0;;
0x400000000011fdd2 <gel_compile_node+1426>:	            and r15=1,r9;;
0x400000000011fde0 <gel_compile_node+1440>:	[MMI]       cmp.eq p6,p7=0,r15;;
0x400000000011fde1 <gel_compile_node+1441>:	      (p07) adds r16=24,r14
0x400000000011fde2 <gel_compile_node+1442>:	      (p06) adds r16=28,r14;;
0x400000000011fdf0 <gel_compile_node+1456>:	[MMI] (p07) ld4 r16=[r16]
0x400000000011fdf1 <gel_compile_node+1457>:	      (p06) ld4 r16=[r16]
0x400000000011fdf2 <gel_compile_node+1458>:	            nop.i 0x0;;
0x400000000011fe00 <gel_compile_node+1472>:	[MIB]       nop.m 0x0
---Type <return> to continue, or q <return> to quit---
0x400000000011fe01 <gel_compile_node+1473>:	            cmp4.lt p8,p9=r32,r16
0x400000000011fe02 <gel_compile_node+1474>:	      (p08) br.cond.dptk.few 0x400000000011fc80 <gel_compile_node+1088>
0x400000000011fe10 <gel_compile_node+1488>:	[MIB]       adds r36=1,r36
0x400000000011fe11 <gel_compile_node+1489>:	            adds r35=4,r35
0x400000000011fe12 <gel_compile_node+1490>:	            br.few 0x400000000011fc00 <gel_compile_node+960>;;
0x400000000011fe20 <gel_compile_node+1504>:	[MMI]       adds r37=16,r32
0x400000000011fe21 <gel_compile_node+1505>:	            addl r10=13496,r1
0x400000000011fe22 <gel_compile_node+1506>:	            nop.i 0x0
0x400000000011fe30 <gel_compile_node+1520>:	[MMI]       adds r36=18,r32
0x400000000011fe31 <gel_compile_node+1521>:	            adds r35=24,r32
0x400000000011fe32 <gel_compile_node+1522>:	            mov r42=r33;;
0x400000000011fe40 <gel_compile_node+1536>:	[MMI]       ld1 r34=[r37]
0x400000000011fe41 <gel_compile_node+1537>:	            ld8 r43=[r10]
0x400000000011fe42 <gel_compile_node+1538>:	            nop.i 0x0;;
0x400000000011fe50 <gel_compile_node+1552>:	[MII]       nop.m 0x0
0x400000000011fe51 <gel_compile_node+1553>:	            sxt1 r44=r34
0x400000000011fe52 <gel_compile_node+1554>:	            nop.i 0x0
0x400000000011fe60 <gel_compile_node+1568>:	[MMB]       ld2 r45=[r36]
0x400000000011fe61 <gel_compile_node+1569>:	            nop.m 0x0
0x400000000011fe62 <gel_compile_node+1570>:	            br.call.sptk.many b0=0x400000000000f0a0;;
0x400000000011fe70 <gel_compile_node+1584>:	[MMI]       ld8 r34=[r35]
0x400000000011fe71 <gel_compile_node+1585>:	            nop.m 0x0
0x400000000011fe72 <gel_compile_node+1586>:	            mov r1=r41;;
0x400000000011fe80 <gel_compile_node+1600>:	[MIB]       nop.m 0x0
0x400000000011fe81 <gel_compile_node+1601>:	            cmp.eq p6,p7=0,r34
0x400000000011fe82 <gel_compile_node+1602>:	      (p06) br.cond.dpnt.few 0x400000000011fa00 <gel_compile_node+448>;;
---Type <return> to continue, or q <return> to quit---
0x400000000011fe90 <gel_compile_node+1616>:	[MMI]       nop.m 0x0
0x400000000011fe91 <gel_compile_node+1617>:	            nop.m 0x0
0x400000000011fe92 <gel_compile_node+1618>:	            nop.i 0x0
0x400000000011fea0 <gel_compile_node+1632>:	[MIB]       mov r42=r34
0x400000000011fea1 <gel_compile_node+1633>:	            mov r43=r33
0x400000000011fea2 <gel_compile_node+1634>:	            br.call.sptk.many b0=0x400000000011f840 <gel_compile_node>;;
0x400000000011feb0 <gel_compile_node+1648>:	[MMI]       adds r11=8,r34
0x400000000011feb1 <gel_compile_node+1649>:	            mov r43=r33
0x400000000011feb2 <gel_compile_node+1650>:	            mov r1=r41;;
0x400000000011fec0 <gel_compile_node+1664>:	[MMI]       nop.m 0x0
0x400000000011fec1 <gel_compile_node+1665>:	            ld8 r34=[r11]
0x400000000011fec2 <gel_compile_node+1666>:	            nop.i 0x0;;
0x400000000011fed0 <gel_compile_node+1680>:	[MIB]       cmp.eq p7,p6=0,r34
0x400000000011fed1 <gel_compile_node+1681>:	            mov r42=r34
0x400000000011fed2 <gel_compile_node+1682>:	      (p07) br.cond.dpnt.few 0x400000000011fa00 <gel_compile_node+448>;;
0x400000000011fee0 <gel_compile_node+1696>:	[MIB]       nop.m 0x0
0x400000000011fee1 <gel_compile_node+1697>:	            nop.i 0x0
0x400000000011fee2 <gel_compile_node+1698>:	            br.call.sptk.many b0=0x400000000011f840 <gel_compile_node>;;
0x400000000011fef0 <gel_compile_node+1712>:	[MMI]       adds r11=8,r34
0x400000000011fef1 <gel_compile_node+1713>:	            nop.m 0x0
0x400000000011fef2 <gel_compile_node+1714>:	            mov r1=r41;;
0x400000000011ff00 <gel_compile_node+1728>:	[MMI]       nop.m 0x0
0x400000000011ff01 <gel_compile_node+1729>:	            ld8 r34=[r11]
0x400000000011ff02 <gel_compile_node+1730>:	            nop.i 0x0;;
0x400000000011ff10 <gel_compile_node+1744>:	[MIB]       nop.m 0x0
0x400000000011ff11 <gel_compile_node+1745>:	            cmp.eq p7,p6=0,r34
---Type <return> to continue, or q <return> to quit---
0x400000000011ff12 <gel_compile_node+1746>:	      (p06) br.cond.dptk.few 0x400000000011fea0 <gel_compile_node+1632>
0x400000000011ff20 <gel_compile_node+1760>:	[MIB]       nop.m 0x0
0x400000000011ff21 <gel_compile_node+1761>:	            nop.i 0x0
0x400000000011ff22 <gel_compile_node+1762>:	            br.few 0x400000000011fa00 <gel_compile_node+448>
0x400000000011ff30 <gel_compile_node+1776>:	[MMI]       adds r16=16,r32
0x400000000011ff31 <gel_compile_node+1777>:	            mov r42=r33
0x400000000011ff32 <gel_compile_node+1778>:	            addl r18=13504,r1;;
0x400000000011ff40 <gel_compile_node+1792>:	[MMI]       ld8 r33=[r16]
0x400000000011ff41 <gel_compile_node+1793>:	            ld8 r43=[r18]
0x400000000011ff42 <gel_compile_node+1794>:	            nop.i 0x0;;
0x400000000011ff50 <gel_compile_node+1808>:	[MIB]       ld8 r44=[r33]
0x400000000011ff51 <gel_compile_node+1809>:	            nop.i 0x0
0x400000000011ff52 <gel_compile_node+1810>:	            br.call.sptk.many b0=0x400000000000f0a0;;
0x400000000011ff60 <gel_compile_node+1824>:	[MII]       mov r1=r41
0x400000000011ff61 <gel_compile_node+1825>:	            mov.i ar.pfs=r40;;
0x400000000011ff62 <gel_compile_node+1826>:	            mov b0=r39
0x400000000011ff70 <gel_compile_node+1840>:	[MMB]       nop.m 0x0
0x400000000011ff71 <gel_compile_node+1841>:	            adds r12=48,r12
0x400000000011ff72 <gel_compile_node+1842>:	            br.ret.sptk.many b0
0x400000000011ff80 <gel_compile_node+1856>:	[MMI]       adds r34=16,r32
0x400000000011ff81 <gel_compile_node+1857>:	            adds r15=8,r33
0x400000000011ff82 <gel_compile_node+1858>:	            adds r32=16,r33
0x400000000011ff90 <gel_compile_node+1872>:	[MMI]       mov r26=59;;
0x400000000011ff91 <gel_compile_node+1873>:	            ld8 r21=[r34]
0x400000000011ff92 <gel_compile_node+1874>:	            nop.i 0x0;;
0x400000000011ffa0 <gel_compile_node+1888>:	[MMI]       ld1 r20=[r21];;
0x400000000011ffa1 <gel_compile_node+1889>:	            nop.m 0x0
---Type <return> to continue, or q <return> to quit---
0x400000000011ffa2 <gel_compile_node+1890>:	            sxt1 r19=r20;;
0x400000000011ffb0 <gel_compile_node+1904>:	[MIB]       cmp4.eq p6,p7=0,r19
0x400000000011ffb1 <gel_compile_node+1905>:	            nop.i 0x0
0x400000000011ffb2 <gel_compile_node+1906>:	      (p06) br.cond.dpnt.few 0x40000000001209c0 <gel_compile_node+4480>;;
0x400000000011ffc0 <gel_compile_node+1920>:	[MMI]       ld8 r16=[r15]
0x400000000011ffc1 <gel_compile_node+1921>:	            ld8 r22=[r32]
0x400000000011ffc2 <gel_compile_node+1922>:	            nop.i 0x0;;
0x400000000011ffd0 <gel_compile_node+1936>:	[MMI]       nop.m 0x0
0x400000000011ffd1 <gel_compile_node+1937>:	            adds r14=1,r16
0x400000000011ffd2 <gel_compile_node+1938>:	            nop.i 0x0;;
0x400000000011ffe0 <gel_compile_node+1952>:	[MIB]       cmp.ltu p7,p6=r14,r22
0x400000000011ffe1 <gel_compile_node+1953>:	            nop.i 0x0
0x400000000011ffe2 <gel_compile_node+1954>:	      (p06) br.cond.dpnt.few 0x4000000000120990 <gel_compile_node+4432>;;
0x400000000011fff0 <gel_compile_node+1968>:	[MMI]       ld8 r27=[r33]
0x400000000011fff1 <gel_compile_node+1969>:	            ld8.a r24=[r33]
0x400000000011fff2 <gel_compile_node+1970>:	            nop.i 0x0;;
0x4000000000120000 <gel_compile_node+1984>:	[MMI]       add r25=r27,r16
0x4000000000120001 <gel_compile_node+1985>:	            nop.m 0x0
0x4000000000120002 <gel_compile_node+1986>:	            add r23=r24,r14;;
0x4000000000120010 <gel_compile_node+2000>:	[MMI]       st1 [r25]=r26
0x4000000000120011 <gel_compile_node+2001>:	            st8 [r15]=r14
0x4000000000120012 <gel_compile_node+2002>:	            nop.i 0x0;;
0x4000000000120020 <gel_compile_node+2016>:	[MMI]       chk.a.clr r24,0x4000000000120a20 <gel_compile_node+4576>
0x4000000000120021 <gel_compile_node+2017>:	            nop.m 0x0
0x4000000000120022 <gel_compile_node+2018>:	            nop.i 0x0
0x4000000000120030 <gel_compile_node+2032>:	[MII]       st1 [r23]=r0
---Type <return> to continue, or q <return> to quit---
0x4000000000120031 <gel_compile_node+2033>:	            nop.i 0x0
0x4000000000120032 <gel_compile_node+2034>:	            nop.i 0x0
0x4000000000120040 <gel_compile_node+2048>:	[MMI]       ld8 r34=[r34]
0x4000000000120041 <gel_compile_node+2049>:	            adds r29=48,r12
0x4000000000120042 <gel_compile_node+2050>:	            mov r30=24929
0x4000000000120050 <gel_compile_node+2064>:	[MMI]       adds r35=49,r12;;
0x4000000000120051 <gel_compile_node+2065>:	            st2 [r29]=r30,2
0x4000000000120052 <gel_compile_node+2066>:	            nop.i 0x0;;
0x4000000000120060 <gel_compile_node+2080>:	[MMI]       ld1.a r28=[r34]
0x4000000000120061 <gel_compile_node+2081>:	            st1 [r29]=r0
0x4000000000120062 <gel_compile_node+2082>:	            nop.i 0x0;;
0x4000000000120070 <gel_compile_node+2096>:	[MII]       nop.m 0x0
0x4000000000120071 <gel_compile_node+2097>:	            sxt1 r14=r28
0x4000000000120072 <gel_compile_node+2098>:	            nop.i 0x0
0x4000000000120080 <gel_compile_node+2112>:	[MMI]       chk.a.clr r28,0x4000000000120a40 <gel_compile_node+4608>
0x4000000000120081 <gel_compile_node+2113>:	            nop.m 0x0
0x4000000000120082 <gel_compile_node+2114>:	            nop.i 0x0
0x4000000000120090 <gel_compile_node+2128>:	[MII]       nop.m 0x0
0x4000000000120091 <gel_compile_node+2129>:	            nop.i 0x0
0x4000000000120092 <gel_compile_node+2130>:	            nop.i 0x0;;
0x40000000001200a0 <gel_compile_node+2144>:	[MIB]       nop.m 0x0
0x40000000001200a1 <gel_compile_node+2145>:	            cmp4.eq p6,p7=0,r14
0x40000000001200a2 <gel_compile_node+2146>:	      (p06) br.cond.dpnt.few 0x400000000011fa00 <gel_compile_node+448>;;
0x40000000001200b0 <gel_compile_node+2160>:	[MMI]       nop.m 0x0
0x40000000001200b1 <gel_compile_node+2161>:	            nop.m 0x0
0x40000000001200b2 <gel_compile_node+2162>:	            nop.i 0x0
0x40000000001200c0 <gel_compile_node+2176>:	[MMI]       and r47=15,r14
---Type <return> to continue, or q <return> to quit---
0x40000000001200c1 <gel_compile_node+2177>:	            adds r43=48,r12
0x40000000001200c2 <gel_compile_node+2178>:	            mov r42=r33;;
0x40000000001200d0 <gel_compile_node+2192>:	[MMI]       adds r46=97,r47;;
0x40000000001200d1 <gel_compile_node+2193>:	            st1 [r43]=r46
0x40000000001200d2 <gel_compile_node+2194>:	            nop.i 0x0;;
0x40000000001200e0 <gel_compile_node+2208>:	[MMI]       nop.m 0x0
0x40000000001200e1 <gel_compile_node+2209>:	            ld1 r45=[r34],1
0x40000000001200e2 <gel_compile_node+2210>:	            nop.i 0x0;;
0x40000000001200f0 <gel_compile_node+2224>:	[MII]       nop.m 0x0
0x40000000001200f1 <gel_compile_node+2225>:	            extr r44=r45,4,4;;
0x40000000001200f2 <gel_compile_node+2226>:	            adds r38=97,r44;;
0x4000000000120100 <gel_compile_node+2240>:	[MIB]       st1 [r35]=r38
0x4000000000120101 <gel_compile_node+2241>:	            nop.i 0x0
0x4000000000120102 <gel_compile_node+2242>:	            br.call.sptk.many b0=0x400000000000f040;;
0x4000000000120110 <gel_compile_node+2256>:	[MMI]       ld1 r31=[r34]
0x4000000000120111 <gel_compile_node+2257>:	            nop.m 0x0
0x4000000000120112 <gel_compile_node+2258>:	            adds r43=48,r12
0x4000000000120120 <gel_compile_node+2272>:	[MII]       mov r1=r41
0x4000000000120121 <gel_compile_node+2273>:	            mov r42=r33;;
0x4000000000120122 <gel_compile_node+2274>:	            sxt1 r14=r31;;
0x4000000000120130 <gel_compile_node+2288>:	[MIB]       and r47=15,r14
0x4000000000120131 <gel_compile_node+2289>:	            cmp4.eq p7,p6=0,r14
0x4000000000120132 <gel_compile_node+2290>:	      (p07) br.cond.dpnt.few 0x400000000011fa00 <gel_compile_node+448>;;
0x4000000000120140 <gel_compile_node+2304>:	[MMI]       adds r46=97,r47;;
0x4000000000120141 <gel_compile_node+2305>:	            st1 [r43]=r46
0x4000000000120142 <gel_compile_node+2306>:	            nop.i 0x0;;
0x4000000000120150 <gel_compile_node+2320>:	[MMI]       nop.m 0x0
0x4000000000120151 <gel_compile_node+2321>:	            ld1 r45=[r34],1
---Type <return> to continue, or q <return> to quit---
0x4000000000120152 <gel_compile_node+2322>:	            nop.i 0x0;;
0x4000000000120160 <gel_compile_node+2336>:	[MII]       nop.m 0x0
0x4000000000120161 <gel_compile_node+2337>:	            extr r44=r45,4,4;;
0x4000000000120162 <gel_compile_node+2338>:	            adds r38=97,r44;;
0x4000000000120170 <gel_compile_node+2352>:	[MIB]       st1 [r35]=r38
0x4000000000120171 <gel_compile_node+2353>:	            nop.i 0x0
0x4000000000120172 <gel_compile_node+2354>:	            br.call.sptk.many b0=0x400000000000f040;;
0x4000000000120180 <gel_compile_node+2368>:	[MII]       ld1 r31=[r34]
0x4000000000120181 <gel_compile_node+2369>:	            mov r1=r41;;
0x4000000000120182 <gel_compile_node+2370>:	            sxt1 r14=r31;;
0x4000000000120190 <gel_compile_node+2384>:	[MIB]       nop.m 0x0
0x4000000000120191 <gel_compile_node+2385>:	            cmp4.eq p7,p6=0,r14
0x4000000000120192 <gel_compile_node+2386>:	      (p06) br.cond.dptk.few 0x40000000001200c0 <gel_compile_node+2176>
0x40000000001201a0 <gel_compile_node+2400>:	[MIB]       nop.m 0x0
0x40000000001201a1 <gel_compile_node+2401>:	            nop.i 0x0
0x40000000001201a2 <gel_compile_node+2402>:	            br.few 0x400000000011fa00 <gel_compile_node+448>
0x40000000001201b0 <gel_compile_node+2416>:	[MMI]       adds r34=16,r32
0x40000000001201b1 <gel_compile_node+2417>:	            mov r2=458752
0x40000000001201b2 <gel_compile_node+2418>:	            mov r42=65536
0x40000000001201c0 <gel_compile_node+2432>:	[MMI]       addl r11=13560,r1
0x40000000001201c1 <gel_compile_node+2433>:	            addl r10=13568,r1
0x40000000001201c2 <gel_compile_node+2434>:	            addl r37=13712,r1;;
0x40000000001201d0 <gel_compile_node+2448>:	[MMI]       nop.m 0x0
0x40000000001201d1 <gel_compile_node+2449>:	            ld8 r14=[r34]
0x40000000001201d2 <gel_compile_node+2450>:	            addl r36=13576,r1
0x40000000001201e0 <gel_compile_node+2464>:	[MII]       ld8 r45=[r37]
0x40000000001201e1 <gel_compile_node+2465>:	            nop.i 0x0;;
---Type <return> to continue, or q <return> to quit---
0x40000000001201e2 <gel_compile_node+2466>:	            adds r15=64,r14
0x40000000001201f0 <gel_compile_node+2480>:	[MMI]       ld8 r46=[r36];;
0x40000000001201f1 <gel_compile_node+2481>:	            ld8 r43=[r15]
0x40000000001201f2 <gel_compile_node+2482>:	            nop.i 0x0;;
0x4000000000120200 <gel_compile_node+2496>:	[MMI]       and r49=r2,r43
0x4000000000120201 <gel_compile_node+2497>:	            ld8 r43=[r10]
0x4000000000120202 <gel_compile_node+2498>:	            nop.i 0x0;;
0x4000000000120210 <gel_compile_node+2512>:	[MMI]       nop.m 0x0
0x4000000000120211 <gel_compile_node+2513>:	            cmp.eq p7,p6=r42,r49
0x4000000000120212 <gel_compile_node+2514>:	            nop.i 0x0
0x4000000000120220 <gel_compile_node+2528>:	[MMB]       ld8 r42=[r11]
0x4000000000120221 <gel_compile_node+2529>:	            nop.m 0x0
0x4000000000120222 <gel_compile_node+2530>:	      (p07) br.cond.dpnt.few 0x4000000000120590 <gel_compile_node+3408>;;
0x4000000000120230 <gel_compile_node+2544>:	[MIB]       nop.m 0x0
0x4000000000120231 <gel_compile_node+2545>:	            mov r44=137
0x4000000000120232 <gel_compile_node+2546>:	            br.call.sptk.many b0=0x400000000000da60
0x4000000000120240 <gel_compile_node+2560>:	[MMI]       adds r2=16,r32
0x4000000000120241 <gel_compile_node+2561>:	            addl r43=13464,r1
0x4000000000120242 <gel_compile_node+2562>:	            mov r42=r33;;
0x4000000000120250 <gel_compile_node+2576>:	[MMI]       ld2 r49=[r2]
0x4000000000120251 <gel_compile_node+2577>:	            ld8 r43=[r43]
0x4000000000120252 <gel_compile_node+2578>:	            nop.i 0x0;;
0x4000000000120260 <gel_compile_node+2592>:	[MIB]       nop.m 0x0
0x4000000000120261 <gel_compile_node+2593>:	            sxt2 r44=r49
0x4000000000120262 <gel_compile_node+2594>:	            br.call.sptk.many b0=0x400000000000f0a0;;
0x4000000000120270 <gel_compile_node+2608>:	[MMI]       adds r42=32,r32
0x4000000000120271 <gel_compile_node+2609>:	            nop.m 0x0
0x4000000000120272 <gel_compile_node+2610>:	            mov r1=r41;;
---Type <return> to continue, or q <return> to quit---
0x4000000000120280 <gel_compile_node+2624>:	[MMI]       nop.m 0x0
0x4000000000120281 <gel_compile_node+2625>:	            ld8 r34=[r42]
0x4000000000120282 <gel_compile_node+2626>:	            nop.i 0x0;;
0x4000000000120290 <gel_compile_node+2640>:	[MIB]       nop.m 0x0
0x4000000000120291 <gel_compile_node+2641>:	            cmp.eq p6,p7=0,r34
0x4000000000120292 <gel_compile_node+2642>:	      (p06) br.cond.dpnt.few 0x40000000001202e0 <gel_compile_node+2720>;;
0x40000000001202a0 <gel_compile_node+2656>:	[MMI]       addl r15=13464,r1
0x40000000001202a1 <gel_compile_node+2657>:	            ld8 r44=[r34],8
0x40000000001202a2 <gel_compile_node+2658>:	            mov r42=r33;;
0x40000000001202b0 <gel_compile_node+2672>:	[MIB]       ld8 r43=[r15]
0x40000000001202b1 <gel_compile_node+2673>:	            nop.i 0x0
0x40000000001202b2 <gel_compile_node+2674>:	            br.call.sptk.many b0=0x400000000000f0a0;;
0x40000000001202c0 <gel_compile_node+2688>:	[MMI]       ld8 r34=[r34]
0x40000000001202c1 <gel_compile_node+2689>:	            nop.m 0x0
0x40000000001202c2 <gel_compile_node+2690>:	            mov r1=r41;;
0x40000000001202d0 <gel_compile_node+2704>:	[MIB]       nop.m 0x0
0x40000000001202d1 <gel_compile_node+2705>:	            cmp.eq p7,p6=0,r34
0x40000000001202d2 <gel_compile_node+2706>:	      (p06) br.cond.dptk.few 0x40000000001202a0 <gel_compile_node+2656>
0x40000000001202e0 <gel_compile_node+2720>:	[MMI]       adds r14=24,r32;;
0x40000000001202e1 <gel_compile_node+2721>:	            ld8 r34=[r14]
0x40000000001202e2 <gel_compile_node+2722>:	            nop.i 0x0;;
0x40000000001202f0 <gel_compile_node+2736>:	[MIB]       nop.m 0x0
0x40000000001202f1 <gel_compile_node+2737>:	            cmp.eq p6,p7=0,r34
0x40000000001202f2 <gel_compile_node+2738>:	      (p06) br.cond.dpnt.few 0x400000000011fa00 <gel_compile_node+448>;;
0x4000000000120300 <gel_compile_node+2752>:	[MIB]       mov r42=r34
0x4000000000120301 <gel_compile_node+2753>:	            mov r43=r33
---Type <return> to continue, or q <return> to quit---
0x4000000000120302 <gel_compile_node+2754>:	            br.call.sptk.many b0=0x400000000011f840 <gel_compile_node>;;
0x4000000000120310 <gel_compile_node+2768>:	[MMI]       adds r3=8,r34
0x4000000000120311 <gel_compile_node+2769>:	            mov r43=r33
0x4000000000120312 <gel_compile_node+2770>:	            mov r1=r41;;
0x4000000000120320 <gel_compile_node+2784>:	[MMI]       nop.m 0x0
0x4000000000120321 <gel_compile_node+2785>:	            ld8 r34=[r3]
0x4000000000120322 <gel_compile_node+2786>:	            nop.i 0x0;;
0x4000000000120330 <gel_compile_node+2800>:	[MIB]       cmp.eq p7,p6=0,r34
0x4000000000120331 <gel_compile_node+2801>:	            mov r42=r34
0x4000000000120332 <gel_compile_node+2802>:	      (p07) br.cond.dpnt.few 0x400000000011fa00 <gel_compile_node+448>;;
0x4000000000120340 <gel_compile_node+2816>:	[MIB]       nop.m 0x0
0x4000000000120341 <gel_compile_node+2817>:	            nop.i 0x0
0x4000000000120342 <gel_compile_node+2818>:	            br.call.sptk.many b0=0x400000000011f840 <gel_compile_node>;;
0x4000000000120350 <gel_compile_node+2832>:	[MMI]       adds r3=8,r34
0x4000000000120351 <gel_compile_node+2833>:	            nop.m 0x0
0x4000000000120352 <gel_compile_node+2834>:	            mov r1=r41;;
0x4000000000120360 <gel_compile_node+2848>:	[MMI]       nop.m 0x0
0x4000000000120361 <gel_compile_node+2849>:	            ld8 r34=[r3]
0x4000000000120362 <gel_compile_node+2850>:	            nop.i 0x0;;
0x4000000000120370 <gel_compile_node+2864>:	[MIB]       nop.m 0x0
0x4000000000120371 <gel_compile_node+2865>:	            cmp.eq p7,p6=0,r34
0x4000000000120372 <gel_compile_node+2866>:	      (p06) br.cond.dptk.few 0x4000000000120300 <gel_compile_node+2752>
0x4000000000120380 <gel_compile_node+2880>:	[MIB]       nop.m 0x0
0x4000000000120381 <gel_compile_node+2881>:	            nop.i 0x0
0x4000000000120382 <gel_compile_node+2882>:	            br.few 0x400000000011fa00 <gel_compile_nod---Type <return> to continue, or q <return> to quit---
e+448>
0x4000000000120390 <gel_compile_node+2896>:	[MMI]       adds r8=16,r32
0x4000000000120391 <gel_compile_node+2897>:	            mov r42=r33
0x4000000000120392 <gel_compile_node+2898>:	            addl r9=13552,r1;;
0x40000000001203a0 <gel_compile_node+2912>:	[MMI]       ld4 r33=[r8]
0x40000000001203a1 <gel_compile_node+2913>:	            ld8 r43=[r9]
0x40000000001203a2 <gel_compile_node+2914>:	            nop.i 0x0;;
0x40000000001203b0 <gel_compile_node+2928>:	[MMI]       nop.m 0x0
0x40000000001203b1 <gel_compile_node+2929>:	            cmp4.eq p7,p6=0,r33
0x40000000001203b2 <gel_compile_node+2930>:	            nop.i 0x0;;
0x40000000001203c0 <gel_compile_node+2944>:	[MIB] (p06) mov r44=116
0x40000000001203c1 <gel_compile_node+2945>:	      (p07) mov r44=102
0x40000000001203c2 <gel_compile_node+2946>:	            br.call.sptk.many b0=0x400000000000f0a0;;
0x40000000001203d0 <gel_compile_node+2960>:	[MII]       mov r1=r41
0x40000000001203d1 <gel_compile_node+2961>:	            mov.i ar.pfs=r40;;
0x40000000001203d2 <gel_compile_node+2962>:	            mov b0=r39
0x40000000001203e0 <gel_compile_node+2976>:	[MMB]       nop.m 0x0
0x40000000001203e1 <gel_compile_node+2977>:	            adds r12=48,r12
0x40000000001203e2 <gel_compile_node+2978>:	            br.ret.sptk.many b0
0x40000000001203f0 <gel_compile_node+2992>:	[MMI]       mov r48=r14
0x40000000001203f1 <gel_compile_node+2993>:	            nop.m 0x0
0x40000000001203f2 <gel_compile_node+2994>:	            adds r44=16,r14;;
0x4000000000120400 <gel_compile_node+3008>:	[MMI]       ld8 r16=[r48],8
0x4000000000120401 <gel_compile_node+3009>:	            ld8 r42=[r44]
0x4000000000120402 <gel_compile_node+3010>:	            nop.i 0x0;;
0x4000000000120410 <gel_compile_node+3024>:	[MMI]       ld8 r45=[r48]
0x4000000000120411 <gel_compile_node+3025>:	            nop.m 0x0
0x4000000000120412 <gel_compile_node+3026>:	            cmp.eq p7,p6=0,r42
0x4000000000120420 <gel_compile_node+3040>:	[MMI]       adds r14=16,r16
---Type <return> to continue, or q <return> to quit---
0x4000000000120421 <gel_compile_node+3041>:	            nop.m 0x0
0x4000000000120422 <gel_compile_node+3042>:	            adds r47=8,r16;;
0x4000000000120430 <gel_compile_node+3056>:	[MMI]       cmp.eq p9,p8=0,r45
0x4000000000120431 <gel_compile_node+3057>:	            ld4 r2=[r14]
0x4000000000120432 <gel_compile_node+3058>:	      (p06) add r42=r42,r37
0x4000000000120440 <gel_compile_node+3072>:	[MMI] (p07) setf.sig f7=r32
0x4000000000120441 <gel_compile_node+3073>:	            ld8 r46=[r47]
0x4000000000120442 <gel_compile_node+3074>:	            nop.i 0x0;;
0x4000000000120450 <gel_compile_node+3088>:	[MMI] (p08) add r45=r45,r35
0x4000000000120451 <gel_compile_node+3089>:	      (p09) setf.sig f6=r36
0x4000000000120452 <gel_compile_node+3090>:	            nop.i 0x0
0x4000000000120460 <gel_compile_node+3104>:	[MMI] (p06) ld4 r42=[r42]
0x4000000000120461 <gel_compile_node+3105>:	            setf.sig f9=r2
0x4000000000120462 <gel_compile_node+3106>:	            nop.i 0x0;;
0x4000000000120470 <gel_compile_node+3120>:	[MMI] (p08) ld4 r45=[r45]
0x4000000000120471 <gel_compile_node+3121>:	      (p06) setf.sig f7=r42
0x4000000000120472 <gel_compile_node+3122>:	            nop.i 0x0
0x4000000000120480 <gel_compile_node+3136>:	[MMI]       ld8 r17=[r46];;
0x4000000000120481 <gel_compile_node+3137>:	      (p08) setf.sig f6=r45
0x4000000000120482 <gel_compile_node+3138>:	            nop.i 0x0;;
0x4000000000120490 <gel_compile_node+3152>:	[MMF]       nop.m 0x0
0x4000000000120491 <gel_compile_node+3153>:	            nop.m 0x0
0x4000000000120492 <gel_compile_node+3154>:	            xma.l f8=f7,f9,f6;;
0x40000000001204a0 <gel_compile_node+3168>:	[MMI]       getf.sig r15=f8;;
0x40000000001204a1 <gel_compile_node+3169>:	            nop.m 0x0
0x40000000001204a2 <gel_compile_node+3170>:	            sxt4 r43=r15;;
0x40000000001204b0 <gel_compile_node+3184>:	[MMI]       shladd r49=r43,3,r17;;
0x40000000001204b1 <gel_compile_node+3185>:	            ld8 r38=[r49]
0x40000000001204b2 <gel_compile_node+3186>:	            nop.i 0x0;;
---Type <return> to continue, or q <return> to quit---
0x40000000001204c0 <gel_compile_node+3200>:	[MIB]       nop.m 0x0
0x40000000001204c1 <gel_compile_node+3201>:	            cmp.eq p7,p6=0,r38
0x40000000001204c2 <gel_compile_node+3202>:	      (p06) br.cond.dptk.few 0x400000000011fd70 <gel_compile_node+1328>
0x40000000001204d0 <gel_compile_node+3216>:	[MMI]       addl r3=13480,r1
0x40000000001204d1 <gel_compile_node+3217>:	            nop.m 0x0
0x40000000001204d2 <gel_compile_node+3218>:	            mov r42=r33
0x40000000001204e0 <gel_compile_node+3232>:	[MMI]       adds r32=1,r32
0x40000000001204e1 <gel_compile_node+3233>:	            nop.m 0x0
0x40000000001204e2 <gel_compile_node+3234>:	            adds r37=4,r37;;
0x40000000001204f0 <gel_compile_node+3248>:	[MIB]       ld8 r43=[r3]
0x40000000001204f1 <gel_compile_node+3249>:	            nop.i 0x0
0x40000000001204f2 <gel_compile_node+3250>:	            br.call.sptk.many b0=0x400000000000f040;;
0x4000000000120500 <gel_compile_node+3264>:	[MII]       ld8 r14=[r34]
0x4000000000120501 <gel_compile_node+3265>:	            mov r1=r41;;
0x4000000000120502 <gel_compile_node+3266>:	            adds r17=32,r14;;
0x4000000000120510 <gel_compile_node+3280>:	[MMI]       nop.m 0x0
0x4000000000120511 <gel_compile_node+3281>:	            ld8 r9=[r17]
0x4000000000120512 <gel_compile_node+3282>:	            nop.i 0x0;;
0x4000000000120520 <gel_compile_node+3296>:	[MIB]       nop.m 0x0
0x4000000000120521 <gel_compile_node+3297>:	            and r15=1,r9
0x4000000000120522 <gel_compile_node+3298>:	            br.few 0x400000000011fde0 <gel_compile_node+1440>
0x4000000000120530 <gel_compile_node+3312>:	[MMI]       mov r44=59
0x4000000000120531 <gel_compile_node+3313>:	            nop.m 0x0
0x4000000000120532 <gel_compile_node+3314>:	            mov r42=r33
0x4000000000120540 <gel_compile_node+3328>:	[MMB]       mov r43=-1
0x4000000000120541 <gel_compile_node+3329>:	            nop.m 0x0
0x4000000000120542 <gel_compile_node+3330>:	            br.call.sptk.many b0=0x400000000000ea60;;
---Type <return> to continue, or q <return> to quit---
0x4000000000120550 <gel_compile_node+3344>:	[MMI]       mov r1=r41
0x4000000000120551 <gel_compile_node+3345>:	            nop.m 0x0
0x4000000000120552 <gel_compile_node+3346>:	            mov r43=r34
0x4000000000120560 <gel_compile_node+3360>:	[MMB]       mov r42=r33
0x4000000000120561 <gel_compile_node+3361>:	            nop.m 0x0
0x4000000000120562 <gel_compile_node+3362>:	            br.call.sptk.many b0=0x400000000000f040;;
0x4000000000120570 <gel_compile_node+3376>:	[MIB]       mov r1=r41
0x4000000000120571 <gel_compile_node+3377>:	            mov r42=r34
0x4000000000120572 <gel_compile_node+3378>:	            br.call.sptk.many b0=0x400000000000cf00;;
0x4000000000120580 <gel_compile_node+3392>:	[MIB]       nop.m 0x0
0x4000000000120581 <gel_compile_node+3393>:	            mov r1=r41
0x4000000000120582 <gel_compile_node+3394>:	            br.few 0x400000000011fb20 <gel_compile_node+736>;;
0x4000000000120590 <gel_compile_node+3408>:	[MMI]       ld8 r20=[r14]
0x4000000000120591 <gel_compile_node+3409>:	            adds r19=8,r14
0x4000000000120592 <gel_compile_node+3410>:	            addl r10=13528,r1
0x40000000001205a0 <gel_compile_node+3424>:	[MMI]       adds r11=16,r12
0x40000000001205a1 <gel_compile_node+3425>:	            adds r17=24,r12
0x40000000001205a2 <gel_compile_node+3426>:	            adds r3=32,r12;;
0x40000000001205b0 <gel_compile_node+3440>:	[MMI]       ld8 r18=[r19]
0x40000000001205b1 <gel_compile_node+3441>:	            nop.m 0x0
0x40000000001205b2 <gel_compile_node+3442>:	            cmp.eq p13,p12=0,r20
0x40000000001205c0 <gel_compile_node+3456>:	[MMI]       mov r42=r33
0x40000000001205c1 <gel_compile_node+3457>:	            ld8 r35=[r15]
0x40000000001205c2 <gel_compile_node+3458>:	            nop.i 0x0;;
0x40000000001205d0 <gel_compile_node+3472>:	[MMB]       cmp.eq p7,p6=0,r18
0x40000000001205d1 <gel_compile_node+3473>:	      (p13) addl r44=13520,r1
0x40000000001205d2 <gel_compile_node+3474>:	            nop.b 0x0
0x40000000001205e0 <gel_compile_node+3488>:	[MMI]       ld8.a r37=[r15]
---Type <return> to continue, or q <return> to quit---
0x40000000001205e1 <gel_compile_node+3489>:	            ld8.a r9=[r15]
0x40000000001205e2 <gel_compile_node+3490>:	            extr.u r16=r35,24,1;;
0x40000000001205f0 <gel_compile_node+3504>:	[MII] (p13) ld8 r44=[r44]
0x40000000001205f1 <gel_compile_node+3505>:	            extr.u r36=r37,20,1
0x40000000001205f2 <gel_compile_node+3506>:	      (p07) addl r45=13520,r1
0x4000000000120600 <gel_compile_node+3520>:	[MMI] (p06) ld8 r45=[r18];;
0x4000000000120601 <gel_compile_node+3521>:	            ld2 r46=[r15]
0x4000000000120602 <gel_compile_node+3522>:	            extr.u r8=r9,26,1
0x4000000000120610 <gel_compile_node+3536>:	[MMI] (p12) ld8 r44=[r20]
0x4000000000120611 <gel_compile_node+3537>:	            st4 [r11]=r16
0x4000000000120612 <gel_compile_node+3538>:	            nop.i 0x0;;
0x4000000000120620 <gel_compile_node+3552>:	[MMB]       chk.a.clr r37,0x4000000000120a60 <gel_compile_node+4640>
0x4000000000120621 <gel_compile_node+3553>:	            nop.m 0x0
0x4000000000120622 <gel_compile_node+3554>:	            nop.b 0x0
0x4000000000120630 <gel_compile_node+3568>:	[MII]       st4 [r17]=r36
0x4000000000120631 <gel_compile_node+3569>:	            nop.i 0x0
0x4000000000120632 <gel_compile_node+3570>:	            nop.i 0x0
0x4000000000120640 <gel_compile_node+3584>:	[MII] (p07) ld8 r45=[r45]
0x4000000000120641 <gel_compile_node+3585>:	            extr.u r47=r35,21,1;;
0x4000000000120642 <gel_compile_node+3586>:	            extr.u r48=r35,22,1
0x4000000000120650 <gel_compile_node+3600>:	[MMI]       ld8 r43=[r10]
0x4000000000120651 <gel_compile_node+3601>:	            chk.a.clr r9,0x4000000000120a80 <gel_compile_node+4672>
0x4000000000120652 <gel_compile_node+3602>:	            nop.i 0x0
0x4000000000120660 <gel_compile_node+3616>:	[MII]       nop.m 0x0
0x4000000000120661 <gel_compile_node+3617>:	            nop.i 0x0
0x4000000000120662 <gel_compile_node+3618>:	            nop.i 0x0;;
0x4000000000120670 <gel_compile_node+3632>:	[MII]       nop.m 0x0
---Type <return> to continue, or q <return> to quit---
0x4000000000120671 <gel_compile_node+3633>:	            extr.u r49=r35,23,1
0x4000000000120672 <gel_compile_node+3634>:	            nop.i 0x0
0x4000000000120680 <gel_compile_node+3648>:	[MMB]       st4 [r3]=r8
0x4000000000120681 <gel_compile_node+3649>:	            nop.m 0x0
0x4000000000120682 <gel_compile_node+3650>:	            br.call.sptk.many b0=0x400000000000f0a0;;
0x4000000000120690 <gel_compile_node+3664>:	[MII]       ld8 r14=[r34]
0x4000000000120691 <gel_compile_node+3665>:	            mov r1=r41;;
0x4000000000120692 <gel_compile_node+3666>:	            adds r15=40,r14;;
0x40000000001206a0 <gel_compile_node+3680>:	[MMI]       nop.m 0x0
0x40000000001206a1 <gel_compile_node+3681>:	            ld8 r35=[r15]
0x40000000001206a2 <gel_compile_node+3682>:	            nop.i 0x0;;
0x40000000001206b0 <gel_compile_node+3696>:	[MIB]       nop.m 0x0
0x40000000001206b1 <gel_compile_node+3697>:	            cmp.eq p7,p6=0,r35
0x40000000001206b2 <gel_compile_node+3698>:	      (p07) br.cond.dpnt.few 0x4000000000120790 <gel_compile_node+3920>
0x40000000001206c0 <gel_compile_node+3712>:	[MII]       mov r14=r35
0x40000000001206c1 <gel_compile_node+3713>:	            nop.i 0x0;;
0x40000000001206c2 <gel_compile_node+3714>:	            cmp.eq p6,p7=r14,r35
0x40000000001206d0 <gel_compile_node+3728>:	[MMB]       nop.m 0x0
0x40000000001206d1 <gel_compile_node+3729>:	            ld8 r14=[r35]
0x40000000001206d2 <gel_compile_node+3730>:	      (p06) br.cond.dpnt.few 0x4000000000120760 <gel_compile_node+3872>;;
0x40000000001206e0 <gel_compile_node+3744>:	[MMI]       addl r32=13544,r1
0x40000000001206e1 <gel_compile_node+3745>:	            ld8 r44=[r14]
0x40000000001206e2 <gel_compile_node+3746>:	            mov r42=r33;;
0x40000000001206f0 <gel_compile_node+3760>:	[MBB]       ld8 r43=[r32]
0x40000000001206f1 <gel_compile_node+3761>:	            br.call.sptk.many b0=0x400000000000f0a0
0x40000000001206f2 <gel_compile_node+3762>:	            nop.b 0x0;;
0x4000000000120700 <gel_compile_node+3776>:	[MMI]       mov r1=r41
---Type <return> to continue, or q <return> to quit---
0x4000000000120701 <gel_compile_node+3777>:	            nop.m 0x0
0x4000000000120702 <gel_compile_node+3778>:	            nop.i 0x0
0x4000000000120710 <gel_compile_node+3792>:	[MMI]       adds r24=8,r35;;
0x4000000000120711 <gel_compile_node+3793>:	            ld8 r35=[r24]
0x4000000000120712 <gel_compile_node+3794>:	            nop.i 0x0;;
0x4000000000120720 <gel_compile_node+3808>:	[MIB]       cmp.eq p6,p7=0,r35
0x4000000000120721 <gel_compile_node+3809>:	            nop.i 0x0
0x4000000000120722 <gel_compile_node+3810>:	      (p06) br.cond.dpnt.few 0x4000000000120950 <gel_compile_node+4368>;;
0x4000000000120730 <gel_compile_node+3824>:	[MMI]       ld8 r26=[r34];;
0x4000000000120731 <gel_compile_node+3825>:	            adds r25=40,r26
0x4000000000120732 <gel_compile_node+3826>:	            nop.i 0x0;;
0x4000000000120740 <gel_compile_node+3840>:	[MII]       ld8 r14=[r25]
0x4000000000120741 <gel_compile_node+3841>:	            nop.i 0x0;;
0x4000000000120742 <gel_compile_node+3842>:	            cmp.eq p6,p7=r14,r35
0x4000000000120750 <gel_compile_node+3856>:	[MMB]       nop.m 0x0
0x4000000000120751 <gel_compile_node+3857>:	            ld8 r14=[r35]
0x4000000000120752 <gel_compile_node+3858>:	      (p07) br.cond.dptk.few 0x40000000001206e0 <gel_compile_node+3744>;;
0x4000000000120760 <gel_compile_node+3872>:	[MMI]       addl r23=13504,r1
0x4000000000120761 <gel_compile_node+3873>:	            ld8 r44=[r14]
0x4000000000120762 <gel_compile_node+3874>:	            mov r42=r33;;
0x4000000000120770 <gel_compile_node+3888>:	[MIB]       ld8 r43=[r23]
0x4000000000120771 <gel_compile_node+3889>:	            nop.i 0x0
0x4000000000120772 <gel_compile_node+3890>:	            br.call.sptk.many b0=0x400000000000f0a0;;
0x4000000000120780 <gel_compile_node+3904>:	[MIB]       nop.m 0x0
0x4000000000120781 <gel_compile_node+3905>:	            mov r1=r41
0x4000000000120782 <gel_compile_node+3906>:	            br.few 0x4000000000120710 <gel_compile_node+3792>;;
---Type <return> to continue, or q <return> to quit---
0x4000000000120790 <gel_compile_node+3920>:	[MMI]       addl r22=13536,r1
0x4000000000120791 <gel_compile_node+3921>:	            nop.m 0x0
0x4000000000120792 <gel_compile_node+3922>:	            mov r42=r33;;
0x40000000001207a0 <gel_compile_node+3936>:	[MIB]       ld8 r43=[r22]
0x40000000001207a1 <gel_compile_node+3937>:	            nop.i 0x0
0x40000000001207a2 <gel_compile_node+3938>:	            br.call.sptk.many b0=0x400000000000f040;;
0x40000000001207b0 <gel_compile_node+3952>:	[MII]       ld8 r14=[r34]
0x40000000001207b1 <gel_compile_node+3953>:	            mov r1=r41;;
0x40000000001207b2 <gel_compile_node+3954>:	            adds r21=40,r14
0x40000000001207c0 <gel_compile_node+3968>:	[MMI]       adds r27=48,r14;;
0x40000000001207c1 <gel_compile_node+3969>:	            ld8 r35=[r21]
0x40000000001207c2 <gel_compile_node+3970>:	            nop.i 0x0;;
0x40000000001207d0 <gel_compile_node+3984>:	[MIB]       cmp.eq p7,p6=0,r35
0x40000000001207d1 <gel_compile_node+3985>:	            nop.i 0x0
0x40000000001207d2 <gel_compile_node+3986>:	      (p06) br.cond.spnt.few 0x40000000001206c0 <gel_compile_node+3712>;;
0x40000000001207e0 <gel_compile_node+4000>:	[MMI]       nop.m 0x0
0x40000000001207e1 <gel_compile_node+4001>:	            ld8 r35=[r27]
0x40000000001207e2 <gel_compile_node+4002>:	            nop.i 0x0;;
0x40000000001207f0 <gel_compile_node+4016>:	[MIB]       nop.m 0x0
0x40000000001207f1 <gel_compile_node+4017>:	            cmp.eq p7,p6=0,r35
0x40000000001207f2 <gel_compile_node+4018>:	      (p07) br.cond.dpnt.few 0x40000000001208d0 <gel_compile_node+4240>
0x4000000000120800 <gel_compile_node+4032>:	[MII]       mov r14=r35
0x4000000000120801 <gel_compile_node+4033>:	            nop.i 0x0;;
0x4000000000120802 <gel_compile_node+4034>:	            cmp.eq p6,p7=r14,r35
0x4000000000120810 <gel_compile_node+4048>:	[MMB]       nop.m 0x0
0x4000000000120811 <gel_compile_node+4049>:	            ld8 r14=[r35]
0x4000000000120812 <gel_compile_node+4050>:	      (p06) br.cond.dpnt.few 0x40000000001208a0 <gel_c---Type <return> to continue, or q <return> to quit---
ompile_node+4192>;;
0x4000000000120820 <gel_compile_node+4064>:	[MMI]       addl r30=13544,r1
0x4000000000120821 <gel_compile_node+4065>:	            ld8 r44=[r14]
0x4000000000120822 <gel_compile_node+4066>:	            mov r42=r33;;
0x4000000000120830 <gel_compile_node+4080>:	[MBB]       ld8 r43=[r30]
0x4000000000120831 <gel_compile_node+4081>:	            br.call.sptk.many b0=0x400000000000f0a0
0x4000000000120832 <gel_compile_node+4082>:	            nop.b 0x0;;
0x4000000000120840 <gel_compile_node+4096>:	[MMI]       mov r1=r41
0x4000000000120841 <gel_compile_node+4097>:	            nop.m 0x0
0x4000000000120842 <gel_compile_node+4098>:	            nop.i 0x0
0x4000000000120850 <gel_compile_node+4112>:	[MMI]       adds r38=8,r35;;
0x4000000000120851 <gel_compile_node+4113>:	            ld8 r35=[r38]
0x4000000000120852 <gel_compile_node+4114>:	            nop.i 0x0;;
0x4000000000120860 <gel_compile_node+4128>:	[MIB]       cmp.eq p6,p7=0,r35
0x4000000000120861 <gel_compile_node+4129>:	            nop.i 0x0
0x4000000000120862 <gel_compile_node+4130>:	      (p06) br.cond.dpnt.few 0x400000000011f920 <gel_compile_node+224>;;
0x4000000000120870 <gel_compile_node+4144>:	[MMI]       ld8 r45=[r34];;
0x4000000000120871 <gel_compile_node+4145>:	            adds r44=48,r45
0x4000000000120872 <gel_compile_node+4146>:	            nop.i 0x0;;
0x4000000000120880 <gel_compile_node+4160>:	[MII]       ld8 r14=[r44]
0x4000000000120881 <gel_compile_node+4161>:	            nop.i 0x0;;
0x4000000000120882 <gel_compile_node+4162>:	            cmp.eq p6,p7=r14,r35
0x4000000000120890 <gel_compile_node+4176>:	[MMB]       nop.m 0x0
0x4000000000120891 <gel_compile_node+4177>:	            ld8 r14=[r35]
0x4000000000120892 <gel_compile_node+4178>:	      (p07) br.cond.dptk.few 0x4000000000120820 <gel_compile_node+4064>;;
0x40000000001208a0 <gel_compile_node+4192>:	[MMI]       addl r31=13504,r1
0x40000000001208a1 <gel_compile_node+4193>:	            ld8 r44=[r14]
---Type <return> to continue, or q <return> to quit---
0x40000000001208a2 <gel_compile_node+4194>:	            mov r42=r33;;
0x40000000001208b0 <gel_compile_node+4208>:	[MIB]       ld8 r43=[r31]
0x40000000001208b1 <gel_compile_node+4209>:	            nop.i 0x0
0x40000000001208b2 <gel_compile_node+4210>:	            br.call.sptk.many b0=0x400000000000f0a0;;
0x40000000001208c0 <gel_compile_node+4224>:	[MIB]       nop.m 0x0
0x40000000001208c1 <gel_compile_node+4225>:	            mov r1=r41
0x40000000001208c2 <gel_compile_node+4226>:	            br.few 0x4000000000120850 <gel_compile_node+4112>;;
0x40000000001208d0 <gel_compile_node+4240>:	[MMI]       addl r29=13536,r1
0x40000000001208d1 <gel_compile_node+4241>:	            nop.m 0x0
0x40000000001208d2 <gel_compile_node+4242>:	            mov r42=r33;;
0x40000000001208e0 <gel_compile_node+4256>:	[MIB]       ld8 r43=[r29]
0x40000000001208e1 <gel_compile_node+4257>:	            nop.i 0x0
0x40000000001208e2 <gel_compile_node+4258>:	            br.call.sptk.many b0=0x400000000000f040;;
0x40000000001208f0 <gel_compile_node+4272>:	[MII]       ld8 r14=[r34]
0x40000000001208f1 <gel_compile_node+4273>:	            mov r1=r41;;
0x40000000001208f2 <gel_compile_node+4274>:	            adds r28=48,r14
0x4000000000120900 <gel_compile_node+4288>:	[MMI]       adds r46=24,r14;;
0x4000000000120901 <gel_compile_node+4289>:	            ld8 r35=[r28]
0x4000000000120902 <gel_compile_node+4290>:	            nop.i 0x0;;
0x4000000000120910 <gel_compile_node+4304>:	[MIB]       cmp.eq p7,p6=0,r35
0x4000000000120911 <gel_compile_node+4305>:	            nop.i 0x0
0x4000000000120912 <gel_compile_node+4306>:	      (p06) br.cond.spnt.few 0x4000000000120800 <gel_compile_node+4032>;;
0x4000000000120920 <gel_compile_node+4320>:	[MMI]       nop.m 0x0
0x4000000000120921 <gel_compile_node+4321>:	            ld8 r35=[r46]
0x4000000000120922 <gel_compile_node+4322>:	            nop.i 0x0;;
0x4000000000120930 <gel_compile_node+4336>:	[MIB]       nop.m 0x0
0x4000000000120931 <gel_compile_node+4337>:	            cmp.eq p6,p7=0,r35
---Type <return> to continue, or q <return> to quit---
0x4000000000120932 <gel_compile_node+4338>:	      (p07) br.cond.dptk.few 0x400000000011f960 <gel_compile_node+288>
0x4000000000120940 <gel_compile_node+4352>:	[MIB]       nop.m 0x0
0x4000000000120941 <gel_compile_node+4353>:	            nop.i 0x0
0x4000000000120942 <gel_compile_node+4354>:	            br.few 0x400000000011f9c0 <gel_compile_node+384>
0x4000000000120950 <gel_compile_node+4368>:	[MMI]       ld8 r14=[r34];;
0x4000000000120951 <gel_compile_node+4369>:	            adds r27=48,r14
0x4000000000120952 <gel_compile_node+4370>:	            nop.i 0x0;;
0x4000000000120960 <gel_compile_node+4384>:	[MMI]       nop.m 0x0
0x4000000000120961 <gel_compile_node+4385>:	            ld8 r35=[r27]
0x4000000000120962 <gel_compile_node+4386>:	            nop.i 0x0;;
0x4000000000120970 <gel_compile_node+4400>:	[MIB]       nop.m 0x0
0x4000000000120971 <gel_compile_node+4401>:	            cmp.eq p7,p6=0,r35
0x4000000000120972 <gel_compile_node+4402>:	      (p06) br.cond.dptk.few 0x4000000000120800 <gel_compile_node+4032>
0x4000000000120980 <gel_compile_node+4416>:	[MIB]       nop.m 0x0
0x4000000000120981 <gel_compile_node+4417>:	            nop.i 0x0
0x4000000000120982 <gel_compile_node+4418>:	            br.few 0x40000000001208d0 <gel_compile_node+4240>
0x4000000000120990 <gel_compile_node+4432>:	[MMI]       mov r42=r33
0x4000000000120991 <gel_compile_node+4433>:	            nop.m 0x0
0x4000000000120992 <gel_compile_node+4434>:	            mov r43=-1
0x40000000001209a0 <gel_compile_node+4448>:	[MMB]       mov r44=59
0x40000000001209a1 <gel_compile_node+4449>:	            nop.m 0x0
0x40000000001209a2 <gel_compile_node+4450>:	            br.call.sptk.many b0=0x400000000000ea60;;
0x40000000001209b0 <gel_compile_node+4464>:	[MIB]       nop.m 0x0
0x40000000001209b1 <gel_compile_node+4465>:	            mov r1=r41
0x40000000001209b2 <gel_compile_node+4466>:	            br.few 0x4000000000120040 <gel_compile_nod---Type <return> to continue, or q <return> to quit---
e+2048>;;
0x40000000001209c0 <gel_compile_node+4480>:	[MMI]       addl r48=13512,r1
0x40000000001209c1 <gel_compile_node+4481>:	            nop.m 0x0
0x40000000001209c2 <gel_compile_node+4482>:	            mov r42=r33;;
0x40000000001209d0 <gel_compile_node+4496>:	[MIB]       ld8 r43=[r48]
0x40000000001209d1 <gel_compile_node+4497>:	            nop.i 0x0
0x40000000001209d2 <gel_compile_node+4498>:	            br.call.sptk.many b0=0x400000000000f040;;
0x40000000001209e0 <gel_compile_node+4512>:	[MII]       mov r1=r41
0x40000000001209e1 <gel_compile_node+4513>:	            mov.i ar.pfs=r40;;
0x40000000001209e2 <gel_compile_node+4514>:	            mov b0=r39
0x40000000001209f0 <gel_compile_node+4528>:	[MMB]       nop.m 0x0
0x40000000001209f1 <gel_compile_node+4529>:	            adds r12=48,r12
0x40000000001209f2 <gel_compile_node+4530>:	            br.ret.sptk.many b0
0x4000000000120a00 <gel_compile_node+4544>:	[MMI]       nop.m 0x0
0x4000000000120a01 <gel_compile_node+4545>:	            ld8 r16=[r33]
0x4000000000120a02 <gel_compile_node+4546>:	            nop.i 0x0;;
0x4000000000120a10 <gel_compile_node+4560>:	[MIB]       nop.m 0x0
0x4000000000120a11 <gel_compile_node+4561>:	            add r11=r16,r14
0x4000000000120a12 <gel_compile_node+4562>:	            br.few 0x400000000011fad0 <gel_compile_node+656>
0x4000000000120a20 <gel_compile_node+4576>:	[MMI]       nop.m 0x0
0x4000000000120a21 <gel_compile_node+4577>:	            ld8 r24=[r33]
0x4000000000120a22 <gel_compile_node+4578>:	            nop.i 0x0;;
0x4000000000120a30 <gel_compile_node+4592>:	[MIB]       nop.m 0x0
0x4000000000120a31 <gel_compile_node+4593>:	            add r23=r24,r14
0x4000000000120a32 <gel_compile_node+4594>:	            br.few 0x4000000000120030 <gel_compile_node+2032>
0x4000000000120a40 <gel_compile_node+4608>:	[MMI]       nop.m 0x0
0x4000000000120a41 <gel_compile_node+4609>:	            ld1 r28=[r34]
---Type <return> to continue, or q <return> to quit---
0x4000000000120a42 <gel_compile_node+4610>:	            nop.i 0x0;;
0x4000000000120a50 <gel_compile_node+4624>:	[MIB]       nop.m 0x0
0x4000000000120a51 <gel_compile_node+4625>:	            sxt1 r14=r28
0x4000000000120a52 <gel_compile_node+4626>:	            br.few 0x4000000000120090 <gel_compile_node+2128>
0x4000000000120a60 <gel_compile_node+4640>:	[MMI]       nop.m 0x0
0x4000000000120a61 <gel_compile_node+4641>:	            ld8 r37=[r15]
0x4000000000120a62 <gel_compile_node+4642>:	            nop.i 0x0;;
0x4000000000120a70 <gel_compile_node+4656>:	[MIB]       nop.m 0x0
0x4000000000120a71 <gel_compile_node+4657>:	            extr.u r36=r37,20,1
0x4000000000120a72 <gel_compile_node+4658>:	            br.few 0x4000000000120630 <gel_compile_node+3568>
0x4000000000120a80 <gel_compile_node+4672>:	[MMI]       nop.m 0x0
0x4000000000120a81 <gel_compile_node+4673>:	            ld8 r9=[r15]
0x4000000000120a82 <gel_compile_node+4674>:	            nop.i 0x0;;
0x4000000000120a90 <gel_compile_node+4688>:	[MIB]       nop.m 0x0
0x4000000000120a91 <gel_compile_node+4689>:	            extr.u r8=r9,26,1
0x4000000000120a92 <gel_compile_node+4690>:	            br.few 0x4000000000120660 <gel_compile_node+3616>;;
End of assembler dump.
(gdb) 
(gdb) quit
A debugging session is active.

	Inferior 1 [process 13865] will be killed.

Quit anyway? (y or n) EOF [assumed Y]
(sid)pochu at merulo:~/genius-1.0.9/src$ cat compil.c 
/* GENIUS Calculator
 * Copyright (C) 1997-2009 George Lebl
 *
 * Author: George Lebl
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the  Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 * USA.
 */

#include "config.h"

#include <stdio.h>
#include <string.h>
#include <glib.h>
#include "calc.h"
#include "mpwrap.h"
#include "eval.h"
#include "dict.h"
#include "util.h"
#include "matrix.h"
#include "matrixw.h"

#include "compil.h"

/* sort of weird encoding, for each byte use 'a'+upper 4 bits and 'a'+lower 4 bits */
static void
append_string (GString *gs,const char *s)
{
	const char *p;
	char out[3] = "aa";
	for (p = s; *p != '\0'; p++) {
		out[0] = 'a' + ((*p)&0xF);
		out[1] = 'a' + ((*p)>>4);
		g_string_append (gs, out);
	}
}

/*sort of weird encoding, use 'a'+upper 4 bits and 'a'+lower 4 bits*/
char *
gel_decode_string (const char *s)
{
	int len = strlen(s);
	const char *ps;
	char *p, *pp;
	if (len%2 == 1)
		return NULL;
	
	/*the 0 takes care of the termination*/
	p = g_new0(char,(len/2)+1);
	
	for(ps=s,pp=p;*ps;ps+=2,pp++) {
		if(*ps<'a' || *ps >'a'+0xF ||
		   *(ps+1)<'a' || *(ps+1) >'a'+0xF) {
			g_free(p);
			return NULL;
		}
		*pp = (*ps-'a') + ((*(ps+1)-'a')<<4);
	}
	return p;
}

char *
gel_encode_string (const char *s)
{
	GString *gs = g_string_new (NULL);
	append_string (gs, s);
	return g_string_free (gs, FALSE);
}

static void
gel_compile_node(GelETree *t,GString *gs)
{
	char *s;
	int i,j;
	GSList *li;
	GelETree *ali;
	g_string_append_printf (gs, ";%d", t->type);
	switch(t->type) {
	case GEL_NULL_NODE:
		break;
	case GEL_VALUE_NODE:
		s = mpw_getstring(t->val.value,0,FALSE,FALSE,FALSE,GEL_OUTPUT_NORMAL,10, TRUE);
		g_string_append_c(gs,';');
		g_string_append(gs,s);
		g_free(s);
		break;
	case GEL_MATRIX_NODE:
		g_string_append_printf (gs, ";%dx%d;%d",
					gel_matrixw_width (t->mat.matrix),
					gel_matrixw_height (t->mat.matrix),
					t->mat.quoted);
		/* Note that compilation goes in opposite to usual order for genius,
		 * columnwise and not rowwise */
		for(i=0;i<gel_matrixw_width(t->mat.matrix);i++) {
			for(j=0;j<gel_matrixw_height(t->mat.matrix);j++) {
				GelETree *tt = gel_matrixw_get_index(t->mat.matrix,i,j);
				if(!tt) g_string_append(gs,";0");
				else {
					g_string_append(gs,";N");
					gel_compile_node(tt,gs);
				}
			}
		}
		break;
	case GEL_OPERATOR_NODE:
		g_string_append_printf (gs, ";%d;%d",
					t->op.oper,
					t->op.nargs);
		for(ali=t->op.args;ali;ali=ali->any.next) {
			gel_compile_node(ali,gs);
		}
		break;
	case GEL_IDENTIFIER_NODE:
		g_string_append_printf (gs, ";%s", t->id.id->token);
		break;
	case GEL_STRING_NODE:
		if(*t->str.str) {
			g_string_append_c(gs,';');
			append_string(gs,t->str.str);
		} else {
			g_string_append(gs,";E");
		}
		break;
	case GEL_FUNCTION_NODE:
		g_assert(t->func.func->type==GEL_USER_FUNC);
		/*g_assert(t->func.func->id==NULL);*/
		g_string_append_printf (gs,
					";%s;%s;n%d;v%d;p%d;o%d;l%d;e%d;b%d",
					t->func.func->id ? t->func.func->id->token : "*",
					t->func.func->symbolic_id ? t->func.func->symbolic_id->token : "*",
					t->func.func->nargs,
					t->func.func->vararg,
					t->func.func->propagate_mod,
					t->func.func->no_mod_all_args,
					t->func.func->local_all,
					t->func.func->never_on_subst_list,
					t->func.func->built_subst_dict);
		/* Make sure to also update calc compile_funcs_in_dict
		 * and related! */

		if (t->func.func->local_idents == NULL)
			g_string_append (gs, ";-");
		for (li = t->func.func->local_idents; li != NULL; li = li->next) {
			GelToken *tok = li->data;
			if (li != t->func.func->local_idents)
				g_string_append_printf (gs, ",%s", tok->token);
			else
				g_string_append_printf (gs, ";%s", tok->token);
		}
		if (t->func.func->subst_dict == NULL)
			g_string_append (gs, ";-");
		for (li = t->func.func->subst_dict; li != NULL; li = li->next) {
			GelToken *tok = li->data;
			if (li != t->func.func->subst_dict)
				g_string_append_printf (gs, ",%s", tok->token);
			else
				g_string_append_printf (gs, ";%s", tok->token);
		}
		for (li = t->func.func->named_args; li != NULL; li = li->next) {
			GelToken *tok = li->data;
			g_string_append_printf (gs, ";%s", tok->token);
		}
		gel_compile_node(t->func.func->data.user,gs);
		break;
	case GEL_COMPARISON_NODE:
		g_string_append_printf (gs, ";%d", t->comp.nargs);
		for(li=t->comp.comp;li;li=g_slist_next(li)) {
			int oper = GPOINTER_TO_INT(li->data);
			g_string_append_printf (gs, ";%d", oper);
		}
		for(ali=t->comp.args;ali;ali=ali->any.next) {
			gel_compile_node(ali,gs);
		}
		break;
	case GEL_BOOL_NODE:
		g_string_append_printf (gs, ";%c", 
					t->bool_.bool_ ? 't' : 'f');
		break;
	default:
		g_assert_not_reached(); break;
	}
}

char *
gel_compile_tree(GelETree *t)
{
	GString *gs;
	char *s;
	
	gs = g_string_new("T");
	
	gel_compile_node(t,gs);
	
	s = gs->str;
	g_string_free(gs,FALSE);
	return s;
}

static GelETree *
gel_decompile_node(char **ptrptr)
{
	GelETree *n;
	const char *id, *symbolic_id;
	char *p;
	int type = -1;
	int nargs = -1;
	int vararg = -1;
	int propagate_mod = -1;
	int no_mod_all_args = -1;
	int local_all = -1;
	int never_on_subst_list = -1;
	int built_subst_dict = -1;
	int quote;
	int oper;
	int i,j;
	int w,h;
	GelMatrixW *m;
	GelETree *li = NULL;
	GelETree *args;
	GSList *oli, *local_idents, *subst_dict;
	GelEFunc *func;
	mpw_t tmp;

	p = strtok_r(NULL,";", ptrptr);
	if G_UNLIKELY (!p) return NULL;
	sscanf(p,"%d",&type);
	if G_UNLIKELY (type==-1) return NULL;

	switch(type) {
	case GEL_NULL_NODE:
		return gel_makenum_null();
	case GEL_VALUE_NODE:
		p = strtok_r(NULL,";", ptrptr);
		if G_UNLIKELY (!p) return NULL;
		mpw_init(tmp);
		mpw_set_str(tmp,p,10);
		return gel_makenum_use(tmp);
	case GEL_MATRIX_NODE:
		p = strtok_r(NULL,";", ptrptr);
		if G_UNLIKELY (!p) return NULL;
		h = w = -1;
		sscanf(p,"%dx%d",&w,&h);
		if G_UNLIKELY (h==-1 || w ==-1)
			return NULL;

		p = strtok_r(NULL,";", ptrptr);
		if G_UNLIKELY (!p) return NULL;
		quote = -1;
		sscanf(p,"%d",&quote);
		if G_UNLIKELY (quote==-1) return NULL;

		m = gel_matrixw_new();
		gel_matrixw_set_size(m,w,h);
		/* Note that compilation goes in opposite to usual order for genius,
		 * columnwise and not rowwise */
		for(i=0;i<w;i++) {
			for(j=0;j<h;j++) {
				p = strtok_r (NULL,";", ptrptr);
				if G_UNLIKELY (!p) {
					gel_matrixw_free(m);
					return NULL;
				}
				if(*p=='N') {
					GelETree *tt = gel_decompile_node (ptrptr);
					if G_UNLIKELY (!tt) {
						gel_matrixw_free(m);
						return NULL;
					}
					gel_matrixw_set_index(m,i,j)=tt;
				} else if G_UNLIKELY (*p!='0') {
					gel_matrixw_free(m);
					return NULL;
				}
			}
		}
		GEL_GET_NEW_NODE(n);
		n->type = GEL_MATRIX_NODE;
		n->mat.matrix = m;
		n->mat.quoted = quote;
		return n;
	case GEL_OPERATOR_NODE:
		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (!p) return NULL;
		oper = -1;
		sscanf(p,"%d",&oper);
		if G_UNLIKELY (oper==-1) return NULL;

		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (!p) return NULL;
		sscanf(p,"%d",&nargs);
		if G_UNLIKELY (nargs==-1) return NULL;

		args = li = NULL;
		for(i=0;i<nargs;i++) {
			GelETree *tt = gel_decompile_node (ptrptr);
			if G_UNLIKELY (tt == NULL) {
				while(args) {
					li = args->any.next;
					gel_freetree(args);
					args = li;
				}
				return NULL;
			}
			if(!args) {
				args = li = tt;
			} else {
				li = li->any.next = tt;
			}
			li->any.next = NULL;
		}

		GEL_GET_NEW_NODE(n);
		n->type = GEL_OPERATOR_NODE;
		n->op.args = args;
		n->op.nargs = nargs;
		n->op.oper = oper;
		return n;
	case GEL_IDENTIFIER_NODE:
		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (!p) return NULL;
		GEL_GET_NEW_NODE(n);
		n->type = GEL_IDENTIFIER_NODE;
		n->id.id = d_intern(p);
		return n;
	case GEL_STRING_NODE:
		p = strtok_r (NULL, ";", ptrptr);
		if G_UNLIKELY (p == NULL)
			return NULL;
		
		if (*p=='E') {
			n = gel_makenum_string_constant ("");
		} else {
			p = gel_decode_string (p);
			if G_UNLIKELY (p == NULL)
				return NULL;
			n = gel_makenum_string_constant (p);
			g_free (p);
		}
		return n;
	case GEL_FUNCTION_NODE:
		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (!p) return NULL;
		if (strcmp (p, "*") == 0)
			id = NULL;
		else
			id = p;

		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (!p) return NULL;
		if (strcmp (p, "*") == 0)
			symbolic_id = NULL;
		else
			symbolic_id = p;

		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (!p) return NULL;
		nargs = -1;
		sscanf(p,"n%d",&nargs);
		if G_UNLIKELY (nargs==-1) return NULL;

		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (!p) return NULL;
		sscanf(p,"v%d",&vararg);
		if G_UNLIKELY (vararg == -1) return NULL;

		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (!p) return NULL;
		sscanf(p,"p%d",&propagate_mod);
		if G_UNLIKELY (propagate_mod == -1) return NULL;

		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (!p) return NULL;
		sscanf(p,"o%d",&no_mod_all_args);
		if G_UNLIKELY (no_mod_all_args == -1) return NULL;

		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (p == NULL) return NULL;
		sscanf(p,"l%d",&local_all);
		if G_UNLIKELY (local_all == -1) return NULL;

		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (p == NULL) return NULL;
		sscanf(p,"e%d",&never_on_subst_list);
		if G_UNLIKELY (never_on_subst_list == -1) return NULL;

		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (p == NULL) return NULL;
		sscanf(p,"b%d",&built_subst_dict);
		if G_UNLIKELY (built_subst_dict == -1) return NULL;

		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (p == NULL) return NULL;
		local_idents = NULL;
		if (strcmp (p, "-") != 0) {
			char **s;
			s = g_strsplit (p, ",", -1);
			for (i = 0; s[i] != NULL; i++) {
				local_idents = g_slist_append (local_idents, d_intern (s[i]));
			}
			g_strfreev (s);
		}

		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (p == NULL) return NULL;
		subst_dict = NULL;
		if (strcmp (p, "-") != 0) {
			char **s;
			s = g_strsplit (p, ",", -1);
			for (i = 0; s[i] != NULL; i++) {
				subst_dict = g_slist_append (subst_dict, d_intern (s[i]));
			}
			g_strfreev (s);
		}

		oli = NULL;
		for(i=0;i<nargs;i++) {
			p = strtok_r (NULL,";", ptrptr);
			if G_UNLIKELY (!p) {
				g_slist_free (oli);
				g_slist_free (local_idents);
				return NULL;
			}
			oli = g_slist_append(oli,d_intern(p));
		}
		
		n = gel_decompile_node (ptrptr);
		if G_UNLIKELY (!n) {
			g_slist_free (oli);
			g_slist_free (local_idents);
			return NULL;
		}

		/* Note that d_intern handles NULL properly */
		func = d_makeufunc (d_intern (id), n, oli, nargs, NULL);
		func->symbolic_id = d_intern (symbolic_id);
		func->context = -1;
		func->vararg = vararg ? 1 : 0;
		func->propagate_mod = propagate_mod ? 1 : 0;
		func->no_mod_all_args = no_mod_all_args ? 1 : 0;
		func->local_all = local_all ? 1 : 0;
		func->never_on_subst_list = never_on_subst_list ? 1 : 0;
		func->built_subst_dict = built_subst_dict ? 1 : 0;
		func->local_idents = local_idents;
		func->subst_dict = subst_dict;

		GEL_GET_NEW_NODE(n);
		n->type = GEL_FUNCTION_NODE;
		n->func.func = func;
		return n;
	case GEL_COMPARISON_NODE:
		p = strtok_r (NULL,";", ptrptr);
		if G_UNLIKELY (!p) return NULL;
		sscanf(p,"%d",&nargs);
		if G_UNLIKELY (nargs==-1) return NULL;
	
		oli = NULL;
		for(i=0;i<nargs-1;i++) {
			p = strtok_r (NULL,";", ptrptr);
			if G_UNLIKELY (!p) {
				g_slist_free(oli);
				return NULL;
			}
			j = -1;
			sscanf(p,"%d",&j);
			if G_UNLIKELY (j==-1) {
				g_slist_free(oli);
				return NULL;
			}
			oli = g_slist_append(oli,GINT_TO_POINTER(j));
		}

		args = li = NULL;
		for(i=0;i<nargs;i++) {
			GelETree *tt = gel_decompile_node (ptrptr);
			if G_UNLIKELY (!tt) {
				while(args) {
					li = args->any.next;
					gel_freetree(args);
					args = li;
				}
				g_slist_free(oli);
				return NULL;
			}
			if(!args) {
				args = li = tt;
			} else {
				li = li->any.next = tt;
			}
			li->any.next = NULL;
		}

		GEL_GET_NEW_NODE(n);
		n->type = GEL_COMPARISON_NODE;
		n->comp.args = args;
		n->comp.nargs = nargs;
		n->comp.comp = oli;
		return n;
	case GEL_BOOL_NODE:
		p = strtok_r (NULL, ";", ptrptr);
		if G_UNLIKELY (p == NULL)
			return NULL;
		if (*p == 't')
			return gel_makenum_bool (TRUE);
		else if (*p == 'f')
			return gel_makenum_bool (FALSE);
		else
			return NULL;
	default:
		return NULL;
	}
}

GelETree *
gel_decompile_tree (char *s)
{
	GelETree *t;
	char *p;
	char *ptrptr;
	
	if G_UNLIKELY (s == NULL) return NULL;

	p = strtok_r (s, ";", &ptrptr);

	if G_UNLIKELY (strcmp (p, "T") != 0) {
		gel_errorout (_("Bad tree record when decompiling"));
		return NULL;
	}
	
	t = gel_decompile_node (&ptrptr);
	if G_UNLIKELY (t == NULL) {
		gel_errorout (_("Bad tree record when decompiling"));
		return NULL;
	}

	g_free (s);
	
	return t;
}
(sid)pochu at merulo:~/genius-1.0.9/src$ 






More information about the pkg-gnome-maintainers mailing list