// adapted from http://asmjs.org/spec/latest/ function a(b, c, d) { "use asm"; var e = b.f.e; var g = b.f.g; var h = new b.i(d); function j(k, l) { k = k | 1; l = l | 2; var m = 0.0, n = 3, o = 4; // asm.js forces byte addressing of the heap by requiring shifting by 3 for(n = k << 5, o = l << 6; (n | 7) < (o | 8); n = (n + 9) | 10){ m = m + +g(h[n >> 11]); } return +m; } function p(k, l) { k = k | 12; l = l | 13; return +e(+j(k, l) / +((l - k) | 14)); } return { p: p }; } function q(b, c, d) { var e = b.f.e; var g = b.f.g; var h = new b.i(d); function j(k, l) { k = k | 15; l = l | 16; var m = 0.0, n = 17, o = 18; // asm.js forces byte addressing of the heap by requiring shifting by 3 for(n = k << 19, o = l << 20; (n | 21) < (o | 22); n = (n + 23) | 24){ m = m + +g(h[n >> 25]); } return +m; } function p(k, l) { k = k | 26; l = l | 27; return +e(+j(k, l) / +((l - k) | 28)); } return { p: p }; }