//==================================================================================== // Auto-generated code. Original source + changes are // sphere flake bvh raytracer (c) 2005, thierry berger-perrin // (c) 2010, azakai (Emscripten) // this code is released under the GNU Public License. // // Optimized using Closure Compiler //==================================================================================== function l() { return function() { } } function m() { } FUNCTION_TABLE = []; var o = []; function q(a, b) { if(!a) { b = "Assertion failed: " + b; print(b + ":\n" + Error().stack); throw"Assertion: " + b; } } ALLOC_NORMAL = 0; ALLOC_STACK = 1; ALLOC_STATIC = 2; function r(a, b, c) { function d(g) { if(!g || g.length === undefined || typeof g === "function") { return[g] } return g.map(d).reduce(function(i, j) { return i.concat(j) }, []) } b = b ? b : 0; if(a === HEAP) { return b } a = d(a); c = [_malloc, aa, u][c ? c : ALLOC_STATIC](Math.max(a.length - b, 1)); for(var e = 0;e < a.length - b;e++) { var h = a[b + e]; if(typeof h === "number" || typeof h === "boolean") { IHEAP[c + e] = h; FHEAP[c + e] = h }else { HEAP[c + e] = h } } return c } function ba(a) { a = {e:IHEAP, d:a}; for(var b = "", c = 0, d;;) { if(a.d + c >= a.e.length) { break } d = String.fromCharCode(a.e[a.d + c]); if(d == "\u0000") { break } b += d; c += 1 } return b } PAGE_SIZE = 4096; if(!this.f) { _malloc = u; _free = l() } __Znwm = __Znam = __Znaj = __Znwj = _malloc; __ZdaPv = __ZdlPv = _free; function ia() { HEAP = x("(null)"); this.TOTAL_MEMORY || (TOTAL_MEMORY = 52428800); if(this.Int32Array) { IHEAP = new Int32Array(TOTAL_MEMORY); for(var a = 0;a < HEAP.length;a++) { IHEAP[a] = HEAP[a] } }else { IHEAP = HEAP } FHEAP = this.Float64Array ? new Float64Array(TOTAL_MEMORY) : HEAP; STACK_ROOT = STACKTOP = Math.ceil(10 / PAGE_SIZE) * PAGE_SIZE; this.TOTAL_STACK || (TOTAL_STACK = 1048576); STACK_MAX = STACK_ROOT + TOTAL_STACK; STATICTOP = Math.ceil(STACK_MAX / PAGE_SIZE) * PAGE_SIZE } function ja(a, b, c) { for(var d = 0;d < c;d++) { HEAP[a + d] = HEAP[b + d]; IHEAP[a + d] = IHEAP[b + d]; FHEAP[a + d] = FHEAP[b + d] } } _llvm_memcpy_p0i8_p0i8_i32 = _llvm_memcpy_i64 = ja; _llvm_memset_p0i8_i32 = function(a, b, c) { for(var d = 0;d < c;d++) { HEAP[a + d] = IHEAP[a + d] = FHEAP[a + d] = b } }; PRINTBUFFER = ""; function x(a) { for(var b = [], c = 0;c < a.length;) { b.push(a.charCodeAt(c)); c += 1 } b.push(0); return b } function aa(a) { var b = STACKTOP; q(a > 0); STACKTOP += a; STACKTOP = Math.ceil(STACKTOP / 4) * 4; q(STACKTOP < STACK_ROOT + STACK_MAX); return b } function u(a) { var b = STATICTOP; q(a > 0); STATICTOP += a; STATICTOP = Math.ceil(STATICTOP / 4) * 4; return b } var ka = [0, 1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 15, 16]; this.__defineGetter__("_screen", function() { delete _screen; return _screen = r([0], 0, ALLOC_STATIC) }); this.__defineGetter__("__ZStL8__ioinit", function() { delete __ZStL8__ioinit; return __ZStL8__ioinit = r([0], 0, ALLOC_STATIC) }); var la = 0; this.__defineGetter__("__ZL5light", function() { delete __ZL5light; return __ZL5light = r([0, 0, 0], 0, ALLOC_STATIC) }); this.__defineGetter__("__ZL4pool", function() { delete __ZL4pool; return __ZL4pool = r([0], 0, ALLOC_STATIC) }); this.__defineGetter__("__ZL3end", function() { delete __ZL3end; return __ZL3end = r([0], 0, ALLOC_STATIC) }); this.__defineGetter__("__ZL4grid", function() { delete __ZL4grid; return __ZL4grid = r([[-1, -0.3333333333333333], [0.3333333333333333, -1], [-0.3333333333333333, 1], [1, 0.3333333333333333]], 0, ALLOC_STATIC) }); m = function() { B() }; _sqrt = Math.sqrt; __ZNSt8ios_base4InitC1Ev = function() { __ZSt4cout = 1; __ZSt4cerr = 2 }; ___cxa_atexit = function(a) { o.push(a) }; __ZNSt8ios_base4InitD1Ev = function() { __ZSt4cout = 1; __ZSt4cerr = 2 }; _cos = Math.cos; _sin = Math.sin; _SDL_LockSurface = function(a) { var b = SDL_SURFACES[a]; b.a = b.c.getImageData(0, 0, b.width, b.height); for(var c = b.a.data.length, d = 0;d < c;d++) { IHEAP[b.b + d] = b.a.data[d] } IHEAP[a + 5] = b.b }; _SDL_UnlockSurface = function(a) { a = SDL_SURFACES[a]; for(var b = a.a.data.length, c = 0;c < b;c++) { a.a.data[c] = IHEAP[a.b + c] } for(c = 0;c < b / 4;c++) { a.a.data[c * 4 + 3] = 255 } a.c.putImageData(a.a, 0, 0); a.a = null }; _SDL_Flip = l(); _SDL_Init = function() { SDL_SURFACES = {}; return 1 }; _SDL_SetVideoMode = function(a, b, c, d, e) { c = _malloc(14); SDL_SURFACES[c] = {width:a, height:b, canvas:e, c:e.getContext("2d"), g:c, b:_malloc(a * b * 4)}; return c }; _SDL_Delay = l(); _SDL_Quit = function() { return 1 }; function B() { C(1, 65535) } FUNCTION_TABLE[0] = B; FUNCTION_TABLE[1] = function(a, b) { return b }; FUNCTION_TABLE[2] = l(); function E(a, b) { return FHEAP[a] < FHEAP[b] ? b : a } FUNCTION_TABLE[3] = E; function F(a, b) { return IHEAP[a] < IHEAP[b] ? b : a } FUNCTION_TABLE[4] = F; var ma = 5; FUNCTION_TABLE[5] = function() { __ZNSt8ios_base4InitD1Ev(__ZStL8__ioinit) }; function G(a, b, c, d) { FHEAP[a] = b; FHEAP[a + 1] = c; FHEAP[a + 2] = d } FUNCTION_TABLE[6] = G; function H(a, b, c) { G(a, FHEAP[b] + FHEAP[c], FHEAP[b + 1] + FHEAP[c + 1], FHEAP[b + 2] + FHEAP[c + 2]) } FUNCTION_TABLE[7] = H; function I(a, b, c) { G(a, FHEAP[b] - FHEAP[c], FHEAP[b + 1] - FHEAP[c + 1], FHEAP[b + 2] - FHEAP[c + 2]) } FUNCTION_TABLE[8] = I; function J(a, b) { G(a, 0 - FHEAP[b], 0 - FHEAP[b + 1], 0 - FHEAP[b + 2]) } FUNCTION_TABLE[9] = J; function K(a, b, c) { G(a, FHEAP[b] * c, FHEAP[b + 1] * c, FHEAP[b + 2] * c) } FUNCTION_TABLE[10] = K; function L(a, b, c) { G(a, FHEAP[b + 1] * FHEAP[c + 2] - FHEAP[b + 2] * FHEAP[c + 1], FHEAP[b + 2] * FHEAP[c] - FHEAP[b] * FHEAP[c + 2], FHEAP[b] * FHEAP[c + 1] - FHEAP[b + 1] * FHEAP[c]) } FUNCTION_TABLE[11] = L; function M(a, b) { return FHEAP[a] * FHEAP[b] + FHEAP[a + 1] * FHEAP[b + 1] + FHEAP[a + 2] * FHEAP[b + 2] } FUNCTION_TABLE[12] = M; function P(a, b) { FHEAP[a] = FHEAP[b]; FHEAP[a + 1] = FHEAP[b + 1]; FHEAP[a + 2] = FHEAP[b + 2] } FUNCTION_TABLE[13] = P; function Q(a, b, c) { FHEAP[a] = FHEAP[b]; FHEAP[a + 1] = FHEAP[b + 1]; FHEAP[a + 2] = FHEAP[b + 2]; a = a + 3; FHEAP[a] = FHEAP[c]; FHEAP[a + 1] = FHEAP[c + 1]; FHEAP[a + 2] = FHEAP[c + 2] } FUNCTION_TABLE[14] = Q; function R(a) { G(a, 0, 0, 0); FHEAP[a + 3] = Infinity } FUNCTION_TABLE[15] = R; FUNCTION_TABLE[16] = l(); function S(a, b, c) { FHEAP[a] = FHEAP[b]; FHEAP[a + 1] = FHEAP[b + 1]; FHEAP[a + 2] = FHEAP[b + 2]; FHEAP[a + 3] = c } FUNCTION_TABLE[17] = S; function T(a, b, c) { var d = STACKTOP; STACKTOP += 3; var e = 1 / FHEAP[b + 3]; I(d, c, b); K(a, d, e); STACKTOP = d } FUNCTION_TABLE[18] = T; FUNCTION_TABLE[19] = l(); function U(a, b, c, d) { FHEAP[a] = FHEAP[b]; FHEAP[a + 1] = FHEAP[b + 1]; FHEAP[a + 2] = FHEAP[b + 2]; FHEAP[a + 3] = FHEAP[b + 3]; b = a + 4; FHEAP[b] = FHEAP[c]; FHEAP[b + 1] = FHEAP[c + 1]; FHEAP[b + 2] = FHEAP[c + 2]; FHEAP[b + 3] = FHEAP[c + 3]; IHEAP[a + 8] = d } FUNCTION_TABLE[20] = U; function V(a, b) { var c = STACKTOP; STACKTOP += 12; var d = c + 3, e = c + 6, h = c + 9; W(d, b); if((FHEAP[d] * FHEAP[d] != 1 != 0 & FHEAP[d + 1] * FHEAP[d + 1] != 1 != 0 & FHEAP[d + 2] * FHEAP[d + 2] != 1) != 0) { var g = a + 3; FHEAP[g] = FHEAP[d]; FHEAP[g + 1] = FHEAP[d + 1]; FHEAP[g + 2] = FHEAP[d + 2]; if(FHEAP[d + 1] * FHEAP[d + 1] > FHEAP[d] * FHEAP[d]) { if(FHEAP[d + 1] * FHEAP[d + 1] > FHEAP[d + 2] * FHEAP[d + 2]) { FHEAP[a + 3 + 1] = 0 - FHEAP[a + 3 + 1] }else { FHEAP[a + 3 + 2] = 0 - FHEAP[a + 3 + 2] } }else { if(FHEAP[d + 2] * FHEAP[d + 2] > FHEAP[d] * FHEAP[d]) { FHEAP[a + 3 + 2] = 0 - FHEAP[a + 3 + 2] }else { FHEAP[a + 3] = 0 - FHEAP[a + 3] } } }else { G(c, FHEAP[d + 2], FHEAP[d], FHEAP[d + 1]); g = a + 3; FHEAP[g] = FHEAP[c]; FHEAP[g + 1] = FHEAP[c + 1]; FHEAP[g + 2] = FHEAP[c + 2] } FHEAP[a] = FHEAP[d]; FHEAP[a + 1] = FHEAP[d + 1]; FHEAP[a + 2] = FHEAP[d + 2]; d = a + 6; L(e, a, a + 3); FHEAP[d] = FHEAP[e]; FHEAP[d + 1] = FHEAP[e + 1]; FHEAP[d + 2] = FHEAP[e + 2]; e = a + 3; L(h, a, a + 6); FHEAP[e] = FHEAP[h]; FHEAP[e + 1] = FHEAP[h + 1]; FHEAP[e + 2] = FHEAP[h + 2]; STACKTOP = c } FUNCTION_TABLE[21] = V; function X(a) { return M(a, a) } FUNCTION_TABLE[22] = X; function W(a, b) { var c = 1 / _sqrt(X(b)); K(a, b, c) } FUNCTION_TABLE[23] = W; function C(a, b) { var c = STACKTOP; STACKTOP += 3; var d = a == 1; a:do { if(d) { if(b != 65535) { break a } __ZNSt8ios_base4InitC1Ev(__ZStL8__ioinit); ___cxa_atexit(ma, 0, la); G(c, -0.5, -0.65, 0.9); W(__ZL5light, c) } }while(0); STACKTOP = c } FUNCTION_TABLE[24] = C; function Y(a, b) { var c = STACKTOP; STACKTOP += 3; var d, e, h; I(c, a, b); d = M(b + 3, c); e = d * d - X(c) + FHEAP[a + 3] * FHEAP[a + 3]; if(e < 0) { d = Infinity }else { h = _sqrt(e); e = d + h; d = d - h; if(e < 0) { d = Infinity }else { d = d = d > 0 ? d : e } } d = d; STACKTOP = c; return d } FUNCTION_TABLE[25] = Y; function Z(a, b) { var c = STACKTOP; STACKTOP += 9; var d = c + 3, e, h, g = c + 6; h = IHEAP[__ZL4pool]; a:for(;;) { if(!(h < IHEAP[__ZL3end])) { break a } e = Y(h, a) >= FHEAP[b + 3]; if(e != 0) { h += 9 * IHEAP[h + 8] }else { e = Y(h + 4, a); if(FHEAP[b + 3] > e) { FHEAP[b + 3] = e; K(c, a + 3, e); H(d, a, c); e = b; T(g, h + 4, d); FHEAP[e] = FHEAP[g]; FHEAP[e + 1] = FHEAP[g + 1]; FHEAP[e + 2] = FHEAP[g + 2] } h += 9 } } STACKTOP = c } FUNCTION_TABLE[26] = Z; function na(a, b) { var c, d, e, h; e = IHEAP[__ZL4pool]; a:for(;;) { if(!(e < IHEAP[__ZL3end])) { c = 7; break a } d = Y(e, a) >= FHEAP[b + 3]; if(d != 0) { e += 9 * IHEAP[e + 8] }else { h = Y(e + 4, a); if(FHEAP[b + 3] > h) { c = 4; break a } e += 9 } } if(c == 4) { FHEAP[b + 3] = h } } FUNCTION_TABLE[27] = na; function oa(a, b) { var c = STACKTOP; STACKTOP += 29; var d; d = c + 3; var e = c + 6, h = c + 9, g = c + 12, i = c + 15, j, k = c + 19, n = c + 25; R(i); Z(b, i); j = FHEAP[i + 3] != Infinity ? 0 - M(i, __ZL5light) : 0; if(j <= 0) { d = 0 }else { J(g, __ZL5light); K(e, i, 1.0E-12); K(c, b + 3, FHEAP[i + 3]); H(d, b, c); H(h, d, e); Q(k, h, g); R(n); na(k, n); d = d = FHEAP[n + 3] == Infinity ? j : 0 } d = d; STACKTOP = c; return d } FUNCTION_TABLE[28] = oa; function $(a, b, c, d, e, h) { var g = STACKTOP; STACKTOP += 67; var i = g + 3, j = g + 6, k = g + 9, n = g + 12, s = g + 15, ca = g + 18, y = g + 21, v = g + 24, da = g + 27, ea = g + 30, fa = g + 33, ga = g + 36, ha = g + 39, t = g + 42, p = g + 43, D, z = g + 44, w = g + 48, A = g + 52, N = g + 61, O = g + 64; a = a; c = c; S(w, d, h * 2); S(z, d, h); D = a; if(D != 0) { a = b > 1 ? c : 1; U(D, w, z, a) } a = D + 9; if(!(b <= 1)) { IHEAP[p] = 1; IHEAP[t] = Math.floor((c - 9) / 9); c = IHEAP[F(t, p)]; V(A, e); t = h / 3; z = p = 0; a:for(;;) { if(!(z <= 5)) { break a } w = _cos(p); K(ga, A + 6, w); w = _sin(p); K(ea, A + 3, w); K(da, e, -0.2); H(fa, da, ea); H(ha, fa, ga); W(N, ha); K(y, N, h + t); H(v, d, y); a = $(a, b - 1, c, v, N, t); p += 1.0471975511965976; z += 1 } p -= 0.3490658503988659; y = 0; a:for(;;) { if(!(y <= 2)) { break a } v = _cos(p); K(s, A + 6, v); v = _sin(p); K(k, A + 3, v); K(j, e, 0.6); H(n, j, k); H(ca, n, s); W(O, ca); K(g, O, h + t); H(i, d, g); a = $(a, b - 1, c, i, O, t); p += 2.0943951023931953; y += 1 } } b = a; STACKTOP = g; return b } FUNCTION_TABLE[29] = $; function pa(a, b, c) { var d = STACKTOP; STACKTOP += 35; var e = d + 3, h; h = d + 6; var g = d + 9, i = d + 10, j = d + 11, k = d + 17, n = d + 29, s = d + 32; FHEAP[g] = a; FHEAP[i] = b; G(h, 0, 0, -4.5); P(j, h); h = k; b = 3; a:for(;;) { if(b == -1) { break a } h += 3; b -= 1 } b = 0; a:for(;;) { if(!(b <= 3)) { break a } h = b; G(e, FHEAP[__ZL4grid + b * 2] * 0.5 + FHEAP[g] / -2, FHEAP[__ZL4grid + b * 2 + 1] * 0.5 + FHEAP[i] / -2, 0); h = k + h * 3; FHEAP[h] = FHEAP[e]; FHEAP[h + 1] = FHEAP[e + 1]; FHEAP[h + 2] = FHEAP[e + 2]; b += 1 } G(n, 0, c, FHEAP[E(g, i)]); _SDL_LockSurface(IHEAP[_screen]); c = a; a:for(;;) { if(c == 0) { break a } g = e = 0; b:for(;;) { if(!(g <= 3)) { break b } H(d, n, k + g * 3); i = j + 3; W(s, d); FHEAP[i] = FHEAP[s]; FHEAP[i + 1] = FHEAP[s + 1]; FHEAP[i + 2] = FHEAP[s + 2]; e = oa(IHEAP[__ZL4pool], j) + e; g += 1 } g = 0; b:for(;;) { if(!(g <= 2)) { break b } IHEAP[IHEAP[IHEAP[_screen] + ka[5]] + Math.floor((a - FHEAP[n + 1]) * a * 4 + FHEAP[n] * 4) + g] = Math.floor(e * 64); g += 1 } FHEAP[n] += 1; c -= 1 } _SDL_UnlockSurface(IHEAP[_screen]); STACKTOP = d } FUNCTION_TABLE[30] = pa; function qa(a, b) { var c = STACKTOP; STACKTOP += 11; var d = c + 3, e = c + 6, h, g, i, j = c + 9, k = c + 10; if(a == 2) { IHEAP[k] = 2; g = Math.floor(Number(ba(IHEAP[b + 1]))); IHEAP[j] = g; j = IHEAP[F(j, k)] }else { j = 6 } j = j; k = 9; i = j; a:for(;;) { i -= 1; g = i > 1; if(g == 0) { break a } k = (k + 1) * 9 } k += 1; h = k; g = i = __Znaj(h * 68); h = h - 1; a:for(;;) { if(h == -1) { break a } g += 9; h -= 1 } IHEAP[__ZL4pool] = i; IHEAP[__ZL3end] = IHEAP[__ZL4pool] + 9 * k; G(d, 0.25, 1, -0.5); W(e, d); G(c, 0, 0, 0); $(IHEAP[__ZL4pool], j, k, c, e, 1); return; // XXX _SDL_Init(32); d = _SDL_SetVideoMode(512, 512, 32, 0); IHEAP[_screen] = d; d = 511; a:for(;;) { if(!(d >= 0)) { break a } pa(512, 512, d); d -= 1 } STACKTOP = c; return 0 } FUNCTION_TABLE[31] = qa; function ra(a) { function b() { for(var h = 0;h < 0;h++) { d.push(0) } } ia(); var c = a.length + 1, d = [r(x("/bin/this.program"), null)]; b(); for(var e = 0;e < c - 1;e += 1) { d.push(r(x(a[e]), null)); b() } d = r(d, null); m(); for(qa(c, d);o.length > 0;) { a = o.pop(); if(typeof a === "number") { a = FUNCTION_TABLE[a] } a() } } run = ra; __ZL10trace_lineiii = pa;