From 664761624f4b0e3d6d1593b99e576854beec5949 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Tue, 6 May 2025 13:44:10 -0700 Subject: Chapter 23: Methods and Revisiting Types --- .../java/com/seaofnodes/simple/Chapter04Test.java | 2 +- .../java/com/seaofnodes/simple/Chapter06Test.java | 16 +- .../java/com/seaofnodes/simple/Chapter09Test.java | 8 +- .../java/com/seaofnodes/simple/Chapter10Test.java | 8 +- .../java/com/seaofnodes/simple/Chapter13Test.java | 97 +- .../java/com/seaofnodes/simple/Chapter15Test.java | 18 +- .../java/com/seaofnodes/simple/Chapter16Test.java | 16 +- .../java/com/seaofnodes/simple/Chapter17Test.java | 35 +- .../java/com/seaofnodes/simple/Chapter18Test.java | 16 +- .../java/com/seaofnodes/simple/Chapter19Test.java | 6 +- .../java/com/seaofnodes/simple/Chapter20Test.java | 8 +- .../java/com/seaofnodes/simple/Chapter21Test.java | 5 +- .../java/com/seaofnodes/simple/Chapter23Test.java | 118 + src/test/java/com/seaofnodes/simple/Eval2.java | 45 +- src/test/java/com/seaofnodes/simple/EvalArm64.java | 1 + src/test/java/com/seaofnodes/simple/EvalRisc5.java | 1 + .../java/com/seaofnodes/simple/MergeSortTest.java | 1 + src/test/java/com/seaofnodes/simple/Simple.java | 8 +- src/test/java/com/seaofnodes/simple/TestC.java | 2 + src/test/java/com/seaofnodes/simple/TypeTest.java | 88 +- .../com/seaofnodes/simple/evaluator/Evaluator.java | 7 +- .../com/seaofnodes/simple/evaluator/Scheduler.java | 3 +- .../java/com/seaofnodes/simple/fuzzer/Fuzzer.java | 8 +- .../com/seaofnodes/simple/fuzzer/FuzzerUtils.java | 4 +- src/test/java/com/seaofnodes/simple/progs/jig.smp | 23 +- .../java/com/seaofnodes/simple/progs/large.smp | 5344 ++++++++++++++++++++ .../com/seaofnodes/simple/progs/stringHash.smp | 5 +- 27 files changed, 5722 insertions(+), 171 deletions(-) create mode 100644 src/test/java/com/seaofnodes/simple/Chapter23Test.java create mode 100644 src/test/java/com/seaofnodes/simple/progs/large.smp (limited to 'src/test/java/com/seaofnodes') diff --git a/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/src/test/java/com/seaofnodes/simple/Chapter04Test.java index c6199193..1361d8b6 100644 --- a/src/test/java/com/seaofnodes/simple/Chapter04Test.java +++ b/src/test/java/com/seaofnodes/simple/Chapter04Test.java @@ -63,7 +63,7 @@ public class Chapter04Test { // Adding functions means `main` does not constant fold the incoming arg value @Ignore @Test public void testConstantArg() { - CodeGen code = new CodeGen("return arg; ", TypeInteger.constant(2), 123L).parse(); + CodeGen code = new CodeGen("return arg; ", TypeInteger.constant(2), 123L, true).parse(); assertEquals("return 2;", code.expr().in(1).toString()); } diff --git a/src/test/java/com/seaofnodes/simple/Chapter06Test.java b/src/test/java/com/seaofnodes/simple/Chapter06Test.java index b6bc2bf3..1ff875b4 100644 --- a/src/test/java/com/seaofnodes/simple/Chapter06Test.java +++ b/src/test/java/com/seaofnodes/simple/Chapter06Test.java @@ -104,7 +104,7 @@ else if( arg==3 ) else a=5; return a; -""", TypeInteger.constant(2), 123L).parse().opto(); +""", TypeInteger.constant(2), 123L, true).parse().opto(); assertEquals("return 5;", code.print()); } @@ -124,7 +124,7 @@ else if( arg==3 ) else a=5; return a; -""", TypeInteger.constant(1), 123L).parse().opto(); +""", TypeInteger.constant(1), 123L, true).parse().opto(); assertEquals("return 3;", code.print()); } @@ -164,7 +164,7 @@ else if( arg==3 ) else a=5; return a; -""", TypeInteger.constant(1), 123L); +""", TypeInteger.constant(1), 123L, true); code.parse().opto(); assertEquals("return 3;", code.print()); } @@ -185,7 +185,7 @@ else if( arg==3 ) else a=5; return a; -""", TypeInteger.constant(3), 123L); +""", TypeInteger.constant(3), 123L, true); code.parse().opto(); assertEquals("return 4;", code.print()); } @@ -220,7 +220,7 @@ if( arg ) { else b = 3; } return a+b; -""", TypeInteger.constant(1), 123L); +""", TypeInteger.constant(1), 123L, true); code.parse().opto(); assertEquals("return 4;", code.print()); } @@ -238,7 +238,7 @@ if( arg ) { else b = 3; } return a+b; -""", TypeInteger.constant(0), 123L); +""", TypeInteger.constant(0), 123L, true); code.parse().opto(); assertEquals("return 1;", code.print()); } @@ -277,7 +277,7 @@ if( arg ) { else b = 3; } return a+b+c; -""", TypeInteger.constant(1), 123L); +""", TypeInteger.constant(1), 123L, true); code.parse().opto(); assertEquals("return 6;", code.print()); } @@ -297,7 +297,7 @@ if( arg ) { else b = 3; } return a+b+c; -""", TypeInteger.constant(2), 123L); +""", TypeInteger.constant(2), 123L, true); code.parse().opto(); assertEquals("return 5;", code.print()); } diff --git a/src/test/java/com/seaofnodes/simple/Chapter09Test.java b/src/test/java/com/seaofnodes/simple/Chapter09Test.java index d4d02aa9..54a14a25 100644 --- a/src/test/java/com/seaofnodes/simple/Chapter09Test.java +++ b/src/test/java/com/seaofnodes/simple/Chapter09Test.java @@ -126,9 +126,10 @@ while(v1+arg) { v0=1; v1=v2; } +return 0; """); code.parse().opto(); - assertEquals("return Top;", code.print()); + assertEquals("return 0;", code.print()); } @Test @@ -208,7 +209,7 @@ return -0+0+0; @Test public void testFuzz3() { - CodeGen code = new CodeGen("int v0=0; while(0==69) while(v0) return 0;"); + CodeGen code = new CodeGen("int v0=0; while(0==69) while(v0) return 0; return 0;"); code.parse().opto(); assertEquals("return 0;", code.print()); } @@ -254,9 +255,10 @@ return 0!=0; int v0=0; while(0==1) while(v0) v0=1+v0; +return 0; """); code.parse().opto(); - assertEquals("Stop[ ]", code.print()); + assertEquals("return 0;", code.print()); } @Test diff --git a/src/test/java/com/seaofnodes/simple/Chapter10Test.java b/src/test/java/com/seaofnodes/simple/Chapter10Test.java index 712704db..ec363239 100644 --- a/src/test/java/com/seaofnodes/simple/Chapter10Test.java +++ b/src/test/java/com/seaofnodes/simple/Chapter10Test.java @@ -115,7 +115,7 @@ if (arg) bar = null; bar.a = 1; return bar.a; """); - try { code.parse().opto(); fail(); } + try { code.parse().opto().typeCheck(); fail(); } catch( Exception e ) { assertEquals("Type null is not of declared type *Bar",e.getMessage()); } } @@ -141,7 +141,7 @@ if (arg) bar = null; bar.a = 1; return bar.a; """); - try { code.parse(); fail(); } + try { code.parse().opto().typeCheck(); fail(); } catch( Exception e ) { assertEquals("Type null is not of declared type *Bar", e.getMessage()); } } @@ -290,7 +290,7 @@ return new s0; int v0=null.f0; """); try { code.parse(); fail(); } - catch( Exception e ) { assertEquals("Accessing unknown field 'f0' from 'null'",e.getMessage()); } + catch( Exception e ) { assertEquals("Syntax error, expected ;: .",e.getMessage()); } } @Test @@ -349,7 +349,7 @@ s0 v1 = v0; return v1; """); code.parse().opto(); - assertEquals("return (const)s0;", code.print()); + assertEquals("return s0;", code.print()); } diff --git a/src/test/java/com/seaofnodes/simple/Chapter13Test.java b/src/test/java/com/seaofnodes/simple/Chapter13Test.java index a19f85e3..4e1db3b4 100644 --- a/src/test/java/com/seaofnodes/simple/Chapter13Test.java +++ b/src/test/java/com/seaofnodes/simple/Chapter13Test.java @@ -40,22 +40,22 @@ return head.next.i; public void testLinkedList1() { CodeGen code = new CodeGen( """ -struct LLI { LLI? next; int i; }; +struct LLI { LLI? next; int q; }; LLI? !head = null; while( arg ) { LLI !x = new LLI; x.next = head; - x.i = arg; + x.q = arg; head = x; arg = arg-1; } if( !head ) return 0; LLI? next = head.next; if( next==null ) return 1; -return next.i; +return next.q; """); - code.parse().opto(); - assertEquals("return Phi(Region,0,1,.i);", code.print()); + code.parse().opto().typeCheck(); + assertEquals("return Phi(Region,0,1,.q);", code.print()); assertEquals("2", Eval2.eval(code, 3)); } @@ -108,10 +108,10 @@ return n.next; """ struct M { int m; }; struct N { M next; int i; }; -N n = new N { next = null; } +N n = new N { next = null; }; return n.next; """); - try { code.parse().opto(); fail(); } + try { code.parse().opto().typeCheck(); fail(); } catch( Exception e ) { assertEquals("Type null is not of declared type *M",e.getMessage()); } } @@ -124,15 +124,15 @@ N !n = new N; n.i = 3.14; return n.i; """); - try { code.parse().opto(); fail(); } - catch( Exception e ) { assertEquals("Type 3.14 is not of declared type int",e.getMessage()); } + try { code.parse().opto().typeCheck(); fail(); } + catch( Exception e ) { assertEquals("Type 3.14 is not of declared type i64",e.getMessage()); } } @Test public void testNullRef4() { CodeGen code = new CodeGen("return -null-5/null-5;"); try { code.parse().opto().typeCheck(); fail(); } - catch( Exception e ) { assertEquals("Cannot '+' null",e.getMessage()); } + catch( Exception e ) { assertEquals("Cannot '//' null",e.getMessage()); } } @Test public void testNullRef5() { @@ -180,7 +180,7 @@ return new S1.s=new S2; public void testcheckNull() { CodeGen code = new CodeGen( """ -struct I {int i;}; +struct I { int i; }; struct P { I? pi; }; P !p1 = new P; P !p2 = new P; @@ -197,32 +197,52 @@ return p1.pi.i + 1; public void testCoRecur2() { CodeGen code = new CodeGen( """ -struct A { L? a; T? b; F? c; }; A? !a = new A; -struct B { M? a; U? b; G? c; }; B? !b = new B; -struct C { N? a; V? b; H? c; }; C? !c = new C; -struct D { O? a; W? b; I? c; }; D? !d = new D; -struct E { P? a; X? b; J? c; }; E? !e = new E; -struct F { Q? a; Y? b; K? c; }; F? !f = new F; -struct G { R? a; Z? b; L? c; }; G? !g = new G; -struct H { S? a; A? b; M? c; }; H? !h = new H; -struct I { T? a; B? b; N? c; }; I? !i = new I; -struct J { U? a; C? b; O? c; }; J? !j = new J; -struct K { V? a; D? b; P? c; }; K? !k = new K; -struct L { W? a; E? b; Q? c; }; L? !l = new L; -struct M { X? a; F? b; R? c; }; M? !m = new M; -struct N { Y? a; G? b; S? c; }; N? !n = new N; -struct O { Z? a; H? b; T? c; }; O? !o = new O; -struct P { A? a; I? b; U? c; }; P? !p = new P; -struct Q { B? a; J? b; V? c; }; Q? !q = new Q; -struct R { C? a; K? b; W? c; }; R? !r = new R; -struct S { D? a; L? b; X? c; }; S? !s = new S; -struct T { E? a; M? b; Y? c; }; T? !t = new T; -struct U { F? a; N? b; Z? c; }; U? !u = new U; -struct V { G? a; O? b; A? c; }; V? !v = new V; -struct W { H? a; P? b; B? c; }; W? !w = new W; -struct X { I? a; Q? b; C? c; }; X? !x = new X; -struct Y { J? a; R? b; D? c; }; Y? !y = new Y; -struct Z { K? a; S? b; E? c; }; Z? !z = new Z; +struct A { B? f0; C? f1; }; A !a = new A; +struct B { C? f0; A? f1; }; B !b = new B; +struct C { A? f0; B? f1; }; C !c = new C; + +a.f0=b; a.f1=c; +b.f0=c; b.f1=a; +c.f0=a; c.f1=b; + +return a.f0.f1.f0.f1.f0; + +"""); + code.parse().opto().typeCheck().GCM().localSched(); + assertEquals("return B;", code._stop.toString()); + assertEquals("B{f0=C},f1=A{f0=$cyclic,f1=$cyclic}}", Eval2.eval(code, 0)); + } + + @Test + public void testCoRecur3() { + CodeGen code = new CodeGen( +""" +struct A { L? a; T? b; F? c; }; A !a = new A; +struct B { M? a; U? b; G? c; }; B !b = new B; +struct C { N? a; V? b; H? c; }; C !c = new C; +struct D { O? a; W? b; I? c; }; D !d = new D; +struct E { P? a; X? b; J? c; }; E !e = new E; +struct F { Q? a; Y? b; K? c; }; F !f = new F; +struct G { R? a; Z? b; L? c; }; G !g = new G; +struct H { S? a; A? b; M? c; }; H !h = new H; +struct I { T? a; B? b; N? c; }; I !i = new I; +struct J { U? a; C? b; O? c; }; J !j = new J; +struct K { V? a; D? b; P? c; }; K !k = new K; +struct L { W? a; E? b; Q? c; }; L !l = new L; +struct M { X? a; F? b; R? c; }; M !m = new M; +struct N { Y? a; G? b; S? c; }; N !n = new N; +struct O { Z? a; H? b; T? c; }; O !o = new O; +struct P { A? a; I? b; U? c; }; P !p = new P; +struct Q { B? a; J? b; V? c; }; Q !q = new Q; +struct R { C? a; K? b; W? c; }; R !r = new R; +struct S { D? a; L? b; X? c; }; S !s = new S; +struct T { E? a; M? b; Y? c; }; T !t = new T; +struct U { F? a; N? b; Z? c; }; U !u = new U; +struct V { G? a; O? b; A? c; }; V !v = new V; +struct W { H? a; P? b; B? c; }; W !w = new W; +struct X { I? a; Q? b; C? c; }; X !x = new X; +struct Y { J? a; R? b; D? c; }; Y !y = new Y; +struct Z { K? a; S? b; E? c; }; Z !z = new Z; a.a=l; a.b=t; a.c=f; b.a=m; b.b=u; b.c=g; @@ -256,7 +276,6 @@ return a.b.c.a.b.c.a.b.c.a.b.c.a.b.c.a.b.c; """); code.parse().opto().typeCheck().GCM().localSched(); assertEquals("return R;", code._stop.toString()); - assertEquals("R{a=C{a=N{a=Y{a=J{a=U{a=F{a=Q{a=B{a=M{a=X{a=I{a=T{a=E{a=P{a=A{a=L{a=W{a=H{a=S{a=D{a=O{a=Z{a=K{a=V{a=G{a=$cyclic,b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic},b=$cyclic,c=$cyclic}", Eval2.eval(code, 0)); + assertEquals("R{a=C{a=N},b=V},c=H}},b=K{a=$cyclic,b=D{a=O},b=W},c=I}},c=P}},c=$cyclic}", Eval2.eval(code, 0)); } - } diff --git a/src/test/java/com/seaofnodes/simple/Chapter15Test.java b/src/test/java/com/seaofnodes/simple/Chapter15Test.java index a98e62d8..6ba4e2b1 100644 --- a/src/test/java/com/seaofnodes/simple/Chapter15Test.java +++ b/src/test/java/com/seaofnodes/simple/Chapter15Test.java @@ -5,6 +5,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import org.junit.Test; +import org.junit.Ignore; import static org.junit.Assert.*; public class Chapter15Test { @@ -49,7 +50,7 @@ output[i] = 1; return output; """); code.parse().opto(); - assertEquals("return [u8];", code.print()); + assertEquals("return []u8;", code.print()); assertEquals("\u0001", Eval2.eval(code, 0)); } @@ -101,8 +102,8 @@ A?[] !a = new A?[2]; return a; """); code.parse().opto(); - assertEquals("return [*A?];", code.print()); - assertEquals("*A {int !i; }?[ null,null]", Eval2.eval(code, 0)); + assertEquals("return []*A?;", code.print()); + assertEquals("*A {i64 !i; }?[ null,null]", Eval2.eval(code, 0)); } @Test @@ -174,7 +175,7 @@ return root; """); code.parse().opto(); assertEquals("return Tree;", code.print()); - assertEquals("Tree{_kids=*Tree?[ Tree{_kids=null},null]}", Eval2.eval(code, 0)); + assertEquals("Tree{_kids=*Tree {*[]*Tree?? !_kids; }?[ Tree{_kids=null},null]}", Eval2.eval(code, 0)); } @Test @@ -212,12 +213,12 @@ return ary[1] * 1000 + ary[3]; // 1 * 1000 + 6 assertEquals("1006", Eval2.eval(code, 4)); } - @Test + @Test @Ignore public void sieveOEratosthenes() throws IOException { String src = Files.readString(Path.of("src/test/java/com/seaofnodes/simple/progs/sieve.smp")); CodeGen code = new CodeGen(src+"return sieve(arg);"); code.parse().opto(); - assertEquals("return [u32];", code.print()); + assertEquals("return []u32;", code.print()); assertEquals("u32[ 2,3,5,7,11,13,17,19]",Eval2.eval(code, 20)); } @@ -254,9 +255,10 @@ return new flt; CodeGen code = new CodeGen( """ flt is = new int[2]; +return is; """); - try { code.parse().opto(); fail(); } - catch( Exception e ) { assertEquals("Type *[int] is not of declared type flt",e.getMessage()); } + try { code.parse().opto().typeCheck(); fail(); } + catch( Exception e ) { assertEquals("Type *[]i64 is not of declared type flt",e.getMessage()); } } @Test diff --git a/src/test/java/com/seaofnodes/simple/Chapter16Test.java b/src/test/java/com/seaofnodes/simple/Chapter16Test.java index 58bb4148..2623fee5 100644 --- a/src/test/java/com/seaofnodes/simple/Chapter16Test.java +++ b/src/test/java/com/seaofnodes/simple/Chapter16Test.java @@ -1,8 +1,6 @@ package com.seaofnodes.simple; import com.seaofnodes.simple.codegen.CodeGen; -import com.seaofnodes.simple.evaluator.Evaluator; -import com.seaofnodes.simple.node.StopNode; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; @@ -115,7 +113,7 @@ Point p = new Point { x=3; y=4; }; return p; """); code.parse().opto(); - assertEquals("return (const)Point;", code.print()); + assertEquals("return Point;", code.print()); assertEquals("Point{x=3,y=4}", Eval2.eval(code, 0)); } @@ -123,24 +121,24 @@ return p; public void testStructFinal1() { CodeGen code = new CodeGen(""" struct Point { int x=3, y=4; }; -Point p = new Point { x=5; y=6; }; +val p = new Point { x=5; y=6; }; p.x++; return p; """); try { code.parse().opto().typeCheck(); fail(); } - catch( Exception e ) { assertEquals("Cannot reassign final 'x'",e.getMessage()); } + catch( Exception e ) { assertEquals("Cannot modify final field 'x'",e.getMessage()); } } @Test public void testStructFinal2() { CodeGen code = new CodeGen(""" struct Point { int x=3, y=4; }; -Point p = new Point; +val p = new Point; p.x++; return p; """); try { code.parse().opto().typeCheck(); fail(); } - catch( Exception e ) { assertEquals("Cannot reassign final 'x'",e.getMessage()); } + catch( Exception e ) { assertEquals("Cannot modify final field 'x'",e.getMessage()); } } @Test @@ -163,8 +161,8 @@ Point p = new Point; p.x++; return p; """); - try { code.parse().opto(); fail(); } - catch( Exception e ) { assertEquals("Cannot reassign final 'x'",e.getMessage()); } + try { code.parse().opto().typeCheck(); fail(); } + catch( Exception e ) { assertEquals("Cannot modify final field 'x'",e.getMessage()); } } @Test diff --git a/src/test/java/com/seaofnodes/simple/Chapter17Test.java b/src/test/java/com/seaofnodes/simple/Chapter17Test.java index bdeb645c..53c23ecd 100644 --- a/src/test/java/com/seaofnodes/simple/Chapter17Test.java +++ b/src/test/java/com/seaofnodes/simple/Chapter17Test.java @@ -123,8 +123,8 @@ return s.x; @Test public void testInt10() { CodeGen code = new CodeGen("flt x = 1.5; x++; int i = x; return i;"); - try { code.parse().opto(); fail(); } - catch( Exception e ) { assertEquals("Type 2.5f is not of declared type int",e.getMessage()); } + try { code.parse().opto().typeCheck(); fail(); } + catch( Exception e ) { assertEquals("Type 2.5f is not of declared type i64",e.getMessage()); } } @@ -170,15 +170,15 @@ return s.x; } @Test public void testVar6() { - CodeGen code = new CodeGen("struct S{int x;}; S s=new S; s.x++; return s.x; // Error initializer so x is immutable "); + CodeGen code = new CodeGen("struct S{int x;}; val s = new S; s.x++; return s.x; // Error initializer so x is immutable "); try { code.parse().opto().typeCheck(); fail(); } - catch( Exception e ) { assertEquals("Cannot reassign final 'x'",e.getMessage()); } + catch( Exception e ) { assertEquals("Cannot modify final field 'x'",e.getMessage()); } } @Test public void testVar7() { - CodeGen code = new CodeGen("struct S{int x;}; S s=new S{x=3;}; s.x++; return s.x; // Error initializer so x is immutable "); + CodeGen code = new CodeGen("struct S{int x;}; val s = new S{x=3;}; s.x++; return s.x; // Error initializer so x is immutable "); try { code.parse().opto().typeCheck(); fail(); } - catch( Exception e ) { assertEquals("Cannot reassign final 'x'",e.getMessage()); } + catch( Exception e ) { assertEquals("Cannot modify final field 'x'",e.getMessage()); } } @Test public void testVar8() { @@ -198,7 +198,7 @@ return s.x; @Test public void testVar10() { CodeGen code = new CodeGen("struct S{int x;}; val s=new S; s.x++; return s.x; // Error, has val so x is immutable "); try { code.parse().opto().typeCheck(); fail(); } - catch( Exception e ) { assertEquals("Cannot reassign final 'x'",e.getMessage()); } + catch( Exception e ) { assertEquals("Cannot modify final field 'x'",e.getMessage()); } } @Test public void testVar11() { @@ -214,9 +214,10 @@ foo.bar.x++; // Ok foo and foo.bar and foo.bar.x are all mutable val xfoo = foo; // Throw away mutability xfoo.bar.x++; // Error, cannot mutate through xfoo +return xfoo.bar.x; """); try { code.parse().opto().typeCheck(); fail(); } - catch( Exception e ) { assertEquals("Cannot reassign final 'x'",e.getMessage()); } + catch( Exception e ) { assertEquals("Cannot modify final field 'x'",e.getMessage()); } } @Test public void testVar12() { @@ -274,7 +275,7 @@ return new A { if (arg) b = new B; // Constructor ends with partial init of b }.b; """); - try { code.parse().opto(); fail(); } + try { code.parse(); fail(); } catch( Exception e ) { assertEquals("'A' is not fully initialized, field 'b' needs to be set in a constructor",e.getMessage()); } } @@ -307,7 +308,7 @@ focus(me); return me; """ ); - try { code.parse().opto().typeCheck(); fail(); } + try { code.parse(); fail(); } catch( Exception e ) { assertEquals("Syntax error, expected =expression: ;",e.getMessage()); } } @@ -491,15 +492,15 @@ return new A; @Test public void testForward1() { CodeGen code = new CodeGen(""" -struct A{ +struct A { B?[]? nil_array_of_b; - B?[] not_array_of_b = new B?[0]; + B?[] array_of_b; }; -return new A.not_array_of_b; +return new A{array_of_b = new B?[0]; }.array_of_b; """); code.parse().opto(); - assertEquals("return (const)[*B?];", code.print()); - assertEquals("*B?[]", Eval2.eval(code,0)); + assertEquals("return (const)[]*B?;", code.print()); + assertEquals("*B {... }?[]", Eval2.eval(code,0)); } // --------------------------------------------------------------- @@ -548,8 +549,8 @@ for( int j=0; j int #1}", Eval2.eval(code, 3)); } @@ -78,7 +78,7 @@ var sq = { int x -> return sq(arg)+sq(3); """); code.driver(Phase.LocalSched); - assertEquals("Stop[ return (Parm_x(sq,int)*x); return (#2+#2); ]", code._stop.toString()); + assertEquals("Stop[ return (#2+#2); return (Parm_x(sq,i64)*x); ]", code._stop.toString()); assertEquals("13", Eval2.eval(code, 2)); } @@ -116,7 +116,7 @@ var fcn = arg ? { int x -> x*x; } : { int x -> x+x; }; return fcn(3); """); code.parse().opto(); - assertEquals("Stop[ return (Parm_x($fun2,int,3)<<1); return (Parm_x($fun1,int,3)*x); return #2; ]", code._stop.toString()); + assertEquals("Stop[ return #2; return (Parm_x($fun21,i64,3)*x); return (Parm_x($fun22,i64,3)<<1); ]", code._stop.toString()); assertEquals("6", Eval2.eval(code, 0)); assertEquals("9", Eval2.eval(code, 1)); } @@ -126,7 +126,7 @@ return fcn(3); public void testFcn5() { CodeGen code = new CodeGen("val fact = { int x -> x <= 1 ? 1 : x*fact(x-1); }; return fact(arg);"); code.parse().opto().typeCheck(); - assertEquals("Stop[ return Phi(Region,1,(Parm_x(fact,int,arg,(x-1))*#2)); return #2; ]", code._stop.toString()); + assertEquals("Stop[ return #2; return Phi(Region,1,(Parm_x(fact,i64,arg,(x-1))*#2)); ]", code._stop.toString()); assertEquals( "1", Eval2.eval(code, 0)); assertEquals( "1", Eval2.eval(code, 1)); assertEquals( "2", Eval2.eval(code, 2)); @@ -158,7 +158,7 @@ val g = {->2;}; return 2; """); code.parse().opto().typeCheck().GCM(); - assertEquals("Stop[ return 2; return 1; return 1; ]", code._stop.toString()); + assertEquals("Stop[ return 1; return 1; return 2; ]", code._stop.toString()); assertEquals("1", Eval2.eval(code, 0)); } @@ -176,7 +176,7 @@ for(;;) { } """); code.driver(Phase.LocalSched); - assertEquals("Stop[ return Parm_i(x,int); return #2; ]", code._stop.toString()); + assertEquals("Stop[ return #2; return Parm_i(x,i64); ]", code._stop.toString()); assertEquals("3", Eval2.eval(code, 0)); } @@ -252,7 +252,7 @@ for(;;) { return 0; """); try { code.parse().opto().typeCheck(); fail(); } - catch( Exception e ) { assertEquals("Might be null calling { int -> int #1}?",e.getMessage()); } + catch( Exception e ) { assertEquals("Might be null calling { i64 -> i64 #21}?",e.getMessage()); } } @@ -348,7 +348,7 @@ if (i2i) return i2i(arg); return f2f(o)(1); """); code.driver(Phase.LocalSched); - assertEquals("Stop[ return Parm_i(i2i.o,int); return Phi(Region,#2,#2); ]", code._stop.toString()); + assertEquals("Stop[ return Phi(Region,#2,#2); return Parm_i(i2i.o,i64); ]", code._stop.toString()); assertEquals("1", Eval2.eval(code, 2)); } diff --git a/src/test/java/com/seaofnodes/simple/Chapter19Test.java b/src/test/java/com/seaofnodes/simple/Chapter19Test.java index b8ef22d7..e2a155ce 100644 --- a/src/test/java/com/seaofnodes/simple/Chapter19Test.java +++ b/src/test/java/com/seaofnodes/simple/Chapter19Test.java @@ -303,7 +303,7 @@ return A[1]; public void sieveOfEratosthenes() throws IOException { String src = Files.readString(Path.of("src/test/java/com/seaofnodes/simple/progs/sieve.smp")); CodeGen code = new CodeGen(src).driver(Phase.LocalSched,"x86_64_v2", "SystemV"); - assertEquals("return [u32];", code.print()); + assertEquals("return []u32;", code.print()); //assertEquals("u32[ 2,3,5,7,11,13,17,19]",Eval2.eval(code, 20)); } @@ -316,7 +316,7 @@ val fcn = arg ? { int x -> x*x; } : { int x -> x+x; }; return fcn(2)*10 + fcn(3); """); code.driver(Phase.LocalSched,"x86_64_v2", "SystemV"); - assertEquals("Stop[ return (shli,Parm_x($fun2,int)); return (mul,Parm_x($fun1,int),x); return (add,#2,(muli,#2)); ]", code.print()); + assertEquals("Stop[ return (add,#2,(muli,#2)); return (mul,Parm_x($fun21,i64),x); return (shli,Parm_x($fun22,i64)); ]", code.print()); } @Test @@ -327,6 +327,6 @@ val sq = { int x -> x*x; }; return sq(arg) + sq(3); """); code.driver(Phase.LocalSched,"x86_64_v2", "SystemV"); - assertEquals("Stop[ return (mul,Parm_x(sq,int),x); return (add,#2,#2); ]", code.print()); + assertEquals("Stop[ return (add,#2,#2); return (mul,Parm_x(sq,i64),x); ]", code.print()); } } diff --git a/src/test/java/com/seaofnodes/simple/Chapter20Test.java b/src/test/java/com/seaofnodes/simple/Chapter20Test.java index f442ae1a..dcea5c87 100644 --- a/src/test/java/com/seaofnodes/simple/Chapter20Test.java +++ b/src/test/java/com/seaofnodes/simple/Chapter20Test.java @@ -38,9 +38,9 @@ public class Chapter20Test { } @Test public void testAlloc0() { - testCPU("return new u8[arg];","x86_64_v2", "SystemV",3,"return [u8];"); - testCPU("return new u8[arg];","riscv" , "SystemV",5,"return [u8];"); - testCPU("return new u8[arg];","arm" , "SystemV",5,"return [u8];"); + testCPU("return new u8[arg];","x86_64_v2", "SystemV",3,"return []u8;"); + testCPU("return new u8[arg];","riscv" , "SystemV",5,"return []u8;"); + testCPU("return new u8[arg];","arm" , "SystemV",5,"return []u8;"); } @Test public void testBasic1() { @@ -103,7 +103,7 @@ return sqrt(arg) + sqrt(cast_int); public void testString() throws IOException { String src = Files.readString(Path.of("src/test/java/com/seaofnodes/simple/progs/stringHash.smp")); testCPU(src,"x86_64_v2", "SystemV", 9,null); - testCPU(src,"riscv" , "SystemV", 5,null); + testCPU(src,"riscv" , "SystemV", 3,null); testCPU(src,"arm" , "SystemV", 3,null); } diff --git a/src/test/java/com/seaofnodes/simple/Chapter21Test.java b/src/test/java/com/seaofnodes/simple/Chapter21Test.java index 77d1e337..7f4898e0 100644 --- a/src/test/java/com/seaofnodes/simple/Chapter21Test.java +++ b/src/test/java/com/seaofnodes/simple/Chapter21Test.java @@ -3,6 +3,7 @@ package com.seaofnodes.simple; import com.seaofnodes.simple.codegen.CodeGen; import com.seaofnodes.simple.node.cpus.arm.arm; import com.seaofnodes.simple.node.cpus.riscv.riscv; +import com.seaofnodes.simple.util.SB; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -12,7 +13,7 @@ import static org.junit.Assert.*; public class Chapter21Test { - @Test @Ignore + @Test public void testJig() throws IOException { String src = Files.readString(Path.of("src/test/java/com/seaofnodes/simple/progs/jig.smp")); testCPU(src,"x86_64_v2", "Win64" ,-1,null); @@ -65,7 +66,7 @@ public class Chapter21Test { public void testString() throws IOException { String src = Files.readString(Path.of("src/test/java/com/seaofnodes/simple/progs/stringHash.smp")); testCPU(src,"x86_64_v2", "SystemV", 9,null); - testCPU(src,"riscv" , "SystemV", 5,null); + testCPU(src,"riscv" , "SystemV", 3,null); testCPU(src,"arm" , "SystemV", 3,null); } diff --git a/src/test/java/com/seaofnodes/simple/Chapter23Test.java b/src/test/java/com/seaofnodes/simple/Chapter23Test.java new file mode 100644 index 00000000..20a506fb --- /dev/null +++ b/src/test/java/com/seaofnodes/simple/Chapter23Test.java @@ -0,0 +1,118 @@ +package com.seaofnodes.simple; + +import com.seaofnodes.simple.codegen.CodeGen; +import com.seaofnodes.simple.type.TypeInteger; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import org.junit.Ignore; +import org.junit.Test; +import static org.junit.Assert.*; + +public class Chapter23Test { + + @Test + public void testJig() throws IOException { + //String src = Files.readString(Path.of("src/test/java/com/seaofnodes/simple/progs/jig.smp")); + String src = Files.readString(Path.of("docs/examples/BubbleSort.smp")); + testCPU(src,"x86_64_v2", "Win64" ,-1,null); + testCPU(src,"riscv" , "SystemV",-1,null); + testCPU(src,"arm" , "SystemV",-1,null); + } + + static CodeGen testCPU( String src, String cpu, String os, int spills, String stop ) { + CodeGen code = new CodeGen(src).driver(CodeGen.Phase.Encoding,cpu,os); + int delta = spills>>3; + if( delta==0 ) delta = 1; + if( spills != -1 ) + assertEquals("Expect spills:",spills,code._regAlloc._spillScaled,delta); + if( stop != null ) + assertEquals(stop, code._stop.toString()); + return code; + } + + @Test + public void testFRefFields() { + String src = +""" +// A hypothetical scanner class +struct Scan { + int !x; + u8[~] buf; + // Skip whitespace + val skip = { Scan s -> + while( s.buf[s.x] <= ' ' ) + s.x++; + }; + // Peek a character; if matched consume it, else false. + val peek = { Scan s, u8 c -> + skip(s); + if( s.buf[s.x] != c ) return false; + s.x++; + return true; + }; +}; +Scan !s = new Scan{ buf = " q"; }; +return Scan.peek(s,'q'); + """; + + CodeGen code = new CodeGen(src).parse().opto().typeCheck(); + assertEquals("return Phi(Region,0,1);", code._stop.toString()); + assertEquals("1", Eval2.eval(code, 0)); + testCPU(src,"x86_64_v2", "Win64" ,17,null); + }; + + @Test + public void testFRefFields2() { + String src = +""" +// A hypothetical scanner class +struct Scan { + int !x; + u8[~] buf; + // Skip whitespace + val skip = { -> + while( buf[x] <= ' ' ) + x++; + return self; + }; +}; +val s = new Scan{ buf = " q"; }; +return s.skip().x; + """; + + try { new CodeGen(src).parse().opto().typeCheck(); fail(); } + catch( Exception e ) { assertEquals("Argument #0 isa *Scan {i64 x; *[]u8 buf; { *Scan -> *Scan {i64 !x; *[]u8 buf; {21} skip; } #21} skip; }, but must be a *Scan {i64 !x; *[]u8 buf; ... }",e.getMessage()); } + }; + + + @Test + public void testMethod() { + String src = +""" +// A hypothetical scanner class +struct Scan { + int !x; + u8[~] buf; + // Skip whitespace + val skip = { -> + while( buf[x] <= ' ' ) + x++; + }; + val require = { u8 ch -> + skip(); + buf[x++]==ch; + }; +}; +Scan !s = new Scan{ buf = " [1,2]"; }; +return s.require('['); + """; + + CodeGen code = new CodeGen(src).parse().opto().typeCheck(); + assertEquals("return (.[]==91);", code._stop.toString()); + assertEquals("1", Eval2.eval(code, 0)); + testCPU(src,"x86_64_v2", "Win64" ,16,null); + }; + + +} diff --git a/src/test/java/com/seaofnodes/simple/Eval2.java b/src/test/java/com/seaofnodes/simple/Eval2.java index 86f0e9db..094b5143 100644 --- a/src/test/java/com/seaofnodes/simple/Eval2.java +++ b/src/test/java/com/seaofnodes/simple/Eval2.java @@ -4,6 +4,8 @@ import com.seaofnodes.simple.codegen.CodeGen; import com.seaofnodes.simple.node.*; import com.seaofnodes.simple.print.IRPrinter; import com.seaofnodes.simple.type.*; +import com.seaofnodes.simple.util.SB; +import com.seaofnodes.simple.util.Utils; import java.util.*; public abstract class Eval2 { @@ -115,7 +117,7 @@ public abstract class Eval2 { public static String eval( CodeGen code, long arg ) { return eval(code,arg,1000); } public static String eval( CodeGen code, long arg, int timeout ) { if( code._start.uctrl()==null ) return ""; // The empty program - SB trace = null; // new SB(); // TRACE, set to null for off, new SB() for on + SB trace = null; // = new SB(); // TRACE, set to null for off, new SB() for on // Force local scheduling phase code.driver(CodeGen.Phase.LocalSched); // Set global, so don't have to pass everywhere @@ -302,9 +304,20 @@ public abstract class Eval2 { return switch ( t ) { case TypeInteger i -> i.isConstant() ? (Long )i.value() : "INT"; case TypeFloat f -> f.isConstant() ? (Double)f.value() : "FLT"; - case TypeMemPtr tmp -> tmp; case TypeFunPtr tfp -> tfp; case TypeMem mem -> "MEM"; + case TypeMemPtr tmp -> { + if( tmp._obj.isAry() ) { // Constant array ptr + TypeConAry con = (TypeConAry)tmp._obj.field("[]")._t; + Object[] xs = new Object[con.len()]; + for( int i=0; i null; }; } @@ -313,8 +326,7 @@ public abstract class Eval2 { private static int offToIdx( long off, TypeStruct t) { off -= t.aryBase(); int scale = t.aryScale(); - long mask = (1L << scale)-1; - assert (off & mask) == 0; + assert (off & ((1L << scale)-1)) == 0; return (int)(off>>scale); } @@ -328,7 +340,7 @@ public abstract class Eval2 { if( n!=x || n<0 ) throw new NegativeArraySizeException(""+n); Object[] ary = new Object[n]; // Array body - var elem = type._fields[1]._type; + var elem = type._fields[1]._t; if (elem instanceof TypeInteger) { Arrays.fill( ary, 0L ); } else if (elem instanceof TypeFloat) { @@ -342,7 +354,7 @@ public abstract class Eval2 { int num = type._fields.length; Object[] ptr = new Object[num]; for( int i=0; i { if( visit.containsKey(x) ) yield sb.p("$cyclic"); visit.put(x,x); - // Since never can close the type cycle, without cyclic types, have - // to handle FRefs even here - if( tmp.isFRef() ) - tmp = tmp.makeFrom(((TypeMemPtr)Parser.TYPES.get(tmp._obj._name))._obj); + assert !tmp.isFRef(); Object[] xs = (Object[])x; // Array of fields if( tmp._obj.isAry() ) { - Type elem = tmp._obj._fields[1]._type; + Type elem = tmp._obj._fields[1]._t; if( elem == TypeInteger.U8 ) { // Shortcut u8[] as a String for( Object o : xs ) @@ -427,6 +437,7 @@ public abstract class Eval2 { } else { // Array of elements elem.print(sb).p("[ "); + if( elem instanceof TypeConAry ) elem = TypeInteger.ZERO; for( Object o : xs ) _print( elem, o, sb, visit ).p( "," ); sb.unchar().p("]"); @@ -435,7 +446,7 @@ public abstract class Eval2 { sb.p(tmp._obj._name).p("{"); Field[] flds = tmp._obj._fields; for( int i=0; i 0L; case TypeFloat tf -> 0; default -> null; diff --git a/src/test/java/com/seaofnodes/simple/evaluator/Scheduler.java b/src/test/java/com/seaofnodes/simple/evaluator/Scheduler.java index 7ba9272f..fee0f2a8 100644 --- a/src/test/java/com/seaofnodes/simple/evaluator/Scheduler.java +++ b/src/test/java/com/seaofnodes/simple/evaluator/Scheduler.java @@ -1,9 +1,8 @@ package com.seaofnodes.simple.evaluator; -import com.seaofnodes.simple.Utils; import com.seaofnodes.simple.node.*; import com.seaofnodes.simple.type.Type; - +import com.seaofnodes.simple.util.Utils; import java.util.*; /** diff --git a/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java b/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java index 30a548ad..77e61b42 100644 --- a/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java +++ b/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java @@ -22,7 +22,7 @@ import java.util.function.Consumer; */ public class Fuzzer { - private static final int EVAL_TIMEOUT = 1000; + private static final int EVAL_TIMEOUT = 10000; /** * List of exceptions already encountered. @@ -82,10 +82,10 @@ public class Fuzzer { private static void runCheck(String script, boolean valid) { CodeGen code1; try { - code1 = FuzzerUtils.parse(script, 123); + code1 = FuzzerUtils.parse(script, 123, true); } catch (RuntimeException e1) { try { - FuzzerUtils.parse(script, 456); + FuzzerUtils.parse(script, 456, false); } catch (RuntimeException e2) { if (FuzzerUtils.isExceptionFromSameCause(e1, e2)) { if (!valid || e1.getClass() == Parser.ParseException.class) return; @@ -95,7 +95,7 @@ public class Fuzzer { } throw e1; } - CodeGen code2 = FuzzerUtils.parse(script, 456); + CodeGen code2 = FuzzerUtils.parse(script, 456, false); checkGraphs(code1, code2, 0); checkGraphs(code1, code2, 1); checkGraphs(code1, code2, 10); diff --git a/src/test/java/com/seaofnodes/simple/fuzzer/FuzzerUtils.java b/src/test/java/com/seaofnodes/simple/fuzzer/FuzzerUtils.java index b90b663d..e08b73fc 100644 --- a/src/test/java/com/seaofnodes/simple/fuzzer/FuzzerUtils.java +++ b/src/test/java/com/seaofnodes/simple/fuzzer/FuzzerUtils.java @@ -94,13 +94,13 @@ class FuzzerUtils { /** * Parse script with peepholes enabled or disabled */ - public static CodeGen parse(String script, long workListSeed) { + public static CodeGen parse(String script, long workListSeed, boolean reset) { var err = System.err; var out = System.out; try { System.setErr(NULL_PRINT_STREAM); System.setOut(NULL_PRINT_STREAM); - var code = new CodeGen(script, TypeInteger.BOT, workListSeed); + var code = new CodeGen(script, TypeInteger.BOT, workListSeed, reset); return code.driver(CodeGen.Phase.LocalSched); } finally { System.setErr(err); diff --git a/src/test/java/com/seaofnodes/simple/progs/jig.smp b/src/test/java/com/seaofnodes/simple/progs/jig.smp index fd3e7b9c..001e8eae 100644 --- a/src/test/java/com/seaofnodes/simple/progs/jig.smp +++ b/src/test/java/com/seaofnodes/simple/progs/jig.smp @@ -1,6 +1,19 @@ // -*- mode: java; -*- -// Should fold away sign extend -struct Person { i8 age;}; -Person !p = new Person; -p.age = (arg<<48)>>48; -return 0; +//2298769344378917493 +//========= Reduced ========= +struct s0 { + bool v1; + i16 v2; + int v3; + i8 v4; + byte v5; +}; +while(new s0.v3) + while(new s0.v5< int } read = "C"; // fill 'data' with 'size' bytes. return number of bytes actually read + { i64 int -> int } skip = "C"; // skip the next 'n' bytes, or 'unget' the last -n bytes if negative + { i64 -> int } eof = "C"; // returns nonzero if we are at end of file/data +}; + +struct stbi__context { + u32 img_x, img_y; + int img_n, img_out_n; + + stbi_io_callbacks io; + u8[]io_user_data; + + int read_from_callbacks; + int buflen; + u8[] buffer_start; + int callback_already_read; + + u8[] img_buffer; + int img_buffer_end; + u8[] img_buffer_original; + int img_buffer_original_end; +}; + +{ stbi__context -> u8 } stbi__get8 = "C"; + +val sample = { stbi__context s, int pal_len -> + var palette = new u8[1024]; + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + for (int i=0; i < pal_len; ++i) { + palette[i*4+3] = 0; + + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + for (int j=0; j < pal_len; ++j) { + palette[j*4+3] = 0; + + palette[j*4+0] = stbi__get8(s); + palette[j*4+1] = stbi__get8(s); + palette[j*4+2] = stbi__get8(s); + palette[j*4+3] = 255; + } + } + + return palette; +}; diff --git a/src/test/java/com/seaofnodes/simple/progs/stringHash.smp b/src/test/java/com/seaofnodes/simple/progs/stringHash.smp index dafa7456..3fa2174c 100644 --- a/src/test/java/com/seaofnodes/simple/progs/stringHash.smp +++ b/src/test/java/com/seaofnodes/simple/progs/stringHash.smp @@ -23,9 +23,8 @@ val hashCode = { String self -> val _hashCodeString = { String self -> int hash=0; - if( self.cs ) - for( int i=0; i< self.cs#; i++ ) - hash = hash*31 + self.cs[i]; + for( int i=0; i< self.cs#; i++ ) + hash = hash*31 + self.cs[i]; if( !hash ) hash = 123456789; return hash; }; -- cgit v1.2.3