On Wed, 2009-11-18 at 14:02 -0500, Taylor R Campbell wrote:
Date: Wed, 18 Nov 2009 13:05:41 -0500 From: Bradley Lucier lucier@math.purdue.edu
By the way this slowdown is due to the 16-bit algorithms which are used to perform the computations without overflowing the fixnums. The C version probably does 32-bit operations, which is at least a factor of 2 faster, and probably more when shifts are involved.
Common Lisp systems are capable of open-coding modular arithmetic up to the machine word width; all you need to do is insert the occasional (LOGAND #xFFFF...) into your usual generic arithmetic expressions. It's unfortunate that no Scheme system -- to my knowledge -- does this. Instead the extent of any abstraction for `fast integers' provided by Scheme systems is fixnums -- to the ridiculous point that they have been formalized in the R6RS.
Even this wouldn't be so bad except that the gambit compiler puts only the first five WORD variables in registers (even locally-declared variables are put on the stack after the first five) so you get code like I include at the bottom from digest-update-sha-256. It would help to have a 32-bit version for use on 64-bit machines.
Brad
From digest.i (using -cc-options "-save-temps"):
___L6_digest_23_digest_2d_update_2d_sha_2d_256: ___fp[-(-3)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-6)])))); ___fp[-(-6)]=((((___fp[-(-6)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+(___fp[-(-6)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-9)]=(((long)((___fp[-(-9)])+(___fp[-(-3)])))); ___r1=(((long)((___r1)+(___fp[-(-7)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-9)])))); ___fp[-(-9)]=((((___fp[-(-9)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___r1=(((long)((___r1)+(___fp[-(-9)])))); ___r1=(((long)(((((long)(65535L))<<2))&(___r1)))); ___fp[-(-15)]=(((long)((___fp[-(-15)])+(___fp[-(-5)])))); ___fp[-(-9)]=(((long)((___fp[-(-8)])+(___fp[-(-4)])))); ___fp[-(-8)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-15)])))); ___fp[-(-15)]=((((___fp[-(-15)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-15)]=(((long)((___fp[-(-9)])+(___fp[-(-15)])))); ___fp[-(-15)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-15)])))); ___fp[-(-17)]=(((long)((___fp[-(-7)])+(___fp[-(-17)])))); ___fp[-(-16)]=(((long)((___r1)+(___fp[-(-16)])))); ___fp[-(-9)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-17)])))); ___fp[-(-17)]=((((___fp[-(-17)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-17)]=(((long)((___fp[-(-16)])+(___fp[-(-17)])))); ___fp[-(-17)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-17)])))); ___fp[-(-16)]=(((long)((___fp[-(-7)])+(___fp[-(-8)])))); ___r1=(((long)((___r1)+(___fp[-(-15)])))); ___fp[-(-15)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-16)])))); ___fp[-(-16)]=((((___fp[-(-16)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___r1=(((long)((___r1)+(___fp[-(-16)])))); ___r1=(((long)(((((long)(65535L))<<2))&(___r1)))); ___fp[-(-16)]=((((___fp[-(-15)])>>(((((long)(2L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-8)]=(((long)((___r1)&((((long)(3L))<<2))))); ___fp[-(-8)]=(((___fp[-(-8)])<<(((((long)(14L))<<2))>>2))); ___fp[-(-16)]=(((long)((___fp[-(-8)])|(___fp[-(-16)])))); ___fp[-(-8)]=((((___r1)>>(((((long)(2L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-15)])&((((long)(3L))<<2))))); ___fp[-(-7)]=(((___fp[-(-7)])<<(((((long)(14L))<<2))>>2))); ___fp[-(-8)]=(((long)((___fp[-(-7)])|(___fp[-(-8)])))); ___fp[-(-7)]=((((___fp[-(-15)])>>(((((long)(13L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___r1)&((((long)(8191L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(3L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___r1)>>(((((long)(13L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-15)])&((((long)(8191L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(3L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-16)]=(((long)((___fp[-(-16)])^(___fp[-(-7)])))); ___fp[-(-8)]=(((long)((___fp[-(-8)])^(___fp[-(-6)])))); ___fp[-(-7)]=((((___r1)>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___fp[-(-15)])&((((long)(63L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___fp[-(-15)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___r1)&((((long)(63L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-16)]=(((long)((___fp[-(-16)])^(___fp[-(-7)])))); ___fp[-(-8)]=(((long)((___fp[-(-8)])^(___fp[-(-6)])))); ___fp[-(-7)]=((((___fp[-(-9)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___fp[-(-17)])&((((long)(63L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___fp[-(-17)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-9)])&((((long)(63L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-5)]=((((___fp[-(-9)])>>(((((long)(11L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-4)]=(((long)((___fp[-(-17)])&((((long)(2047L))<<2))))); ___fp[-(-4)]=(((___fp[-(-4)])<<(((((long)(5L))<<2))>>2))); ___fp[-(-5)]=(((long)((___fp[-(-4)])|(___fp[-(-5)])))); ___fp[-(-4)]=((((___fp[-(-17)])>>(((((long)(11L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-3)]=(((long)((___fp[-(-9)])&((((long)(2047L))<<2))))); ___fp[-(-3)]=(((___fp[-(-3)])<<(((((long)(5L))<<2))>>2))); ___fp[-(-4)]=(((long)((___fp[-(-3)])|(___fp[-(-4)])))); ___fp[-(-7)]=(((long)((___fp[-(-7)])^(___fp[-(-5)])))); ___fp[-(-6)]=(((long)((___fp[-(-6)])^(___fp[-(-4)])))); ___fp[-(-5)]=((((___fp[-(-17)])>>(((((long)(9L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-4)]=(((long)((___fp[-(-9)])&((((long)(511L))<<2))))); ___fp[-(-4)]=(((___fp[-(-4)])<<(((((long)(7L))<<2))>>2))); ___fp[-(-5)]=(((long)((___fp[-(-4)])|(___fp[-(-5)])))); ___fp[-(-4)]=((((___fp[-(-9)])>>(((((long)(9L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-3)]=(((long)((___fp[-(-17)])&((((long)(511L))<<2))))); ___fp[-(-3)]=(((___fp[-(-3)])<<(((((long)(7L))<<2))>>2))); ___fp[-(-4)]=(((long)((___fp[-(-3)])|(___fp[-(-4)])))); ___fp[-(-7)]=(((long)((___fp[-(-7)])^(___fp[-(-5)])))); ___fp[-(-6)]=(((long)((___fp[-(-6)])^(___fp[-(-4)])))); ___fp[-(-5)]=(((long)((___fp[-(-15)])|(___r3)))); ___fp[-(-4)]=(((long)((___r1)|(___r2)))); ___fp[-(-5)]=(((long)((___fp[-(-21)])&(___fp[-(-5)])))); ___fp[-(-4)]=(((long)((___fp[-(-20)])&(___fp[-(-4)])))); ___fp[-(-3)]=(((long)((___fp[-(-15)])&(___r3)))); ___fp[-(-2)]=(((long)((___r1)&(___r2)))); ___fp[-(-5)]=(((long)((___fp[-(-5)])|(___fp[-(-3)])))); ___fp[-(-4)]=(((long)((___fp[-(-4)])|(___fp[-(-2)])))); ___fp[-(-3)]=(((long)((___fp[-(-14)])^(___fp[-(-13)])))); ___fp[-(-2)]=(((long)((___r4)^(___fp[-(-12)])))); ___fp[-(-3)]=(((long)((___fp[-(-9)])&(___fp[-(-3)])))); ___fp[-(-2)]=(((long)((___fp[-(-17)])&(___fp[-(-2)])))); ___fp[-(-3)]=(((long)((___fp[-(-13)])^(___fp[-(-3)])))); ___fp[-(-2)]=(((long)((___fp[-(-12)])^(___fp[-(-2)])))); ___fp[-(-1)]=(*(long*)(((long)(((long*)((___fp[-(-22)])-(1)))+1))+(((((long)(4L))<<2))<<(3 -2)))); ___fp[-(0)]=(*(long*)(((long)(((long*)((___fp[-(-22)])-(1)))+1))+(((((long)(5L))<<2))<<(3 -2)))); ___fp[-(-7)]=(((long)((___fp[-(-1)])+(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(0)])+(___fp[-(-6)])))); ___fp[-(-1)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-7)]=((((___fp[-(-7)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-6)])+(___fp[-(-7)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(-3)])+(___fp[-(-1)])))); ___fp[-(-7)]=(((long)((___fp[-(-2)])+(___fp[-(-7)])))); ___fp[-(-3)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-6)])))); ___fp[-(-6)]=((((___fp[-(-6)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+(___fp[-(-6)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(-3)])+((((long)(64463L))<<2))))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+((((long)(46528L))<<2))))); ___fp[-(-3)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-6)])))); ___fp[-(-6)]=((((___fp[-(-6)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+(___fp[-(-6)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-11)]=(((long)((___fp[-(-11)])+(___fp[-(-3)])))); ___fp[-(-10)]=(((long)((___fp[-(-10)])+(___fp[-(-7)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-11)])))); ___fp[-(-11)]=((((___fp[-(-11)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-11)]=(((long)((___fp[-(-10)])+(___fp[-(-11)])))); ___fp[-(-11)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-11)])))); ___fp[-(-16)]=(((long)((___fp[-(-16)])+(___fp[-(-5)])))); ___fp[-(-10)]=(((long)((___fp[-(-8)])+(___fp[-(-4)])))); ___fp[-(-8)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-16)])))); ___fp[-(-16)]=((((___fp[-(-16)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-16)]=(((long)((___fp[-(-10)])+(___fp[-(-16)])))); ___fp[-(-16)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-16)])))); ___fp[-(-19)]=(((long)((___fp[-(-7)])+(___fp[-(-19)])))); ___fp[-(-18)]=(((long)((___fp[-(-11)])+(___fp[-(-18)])))); ___fp[-(-10)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-19)])))); ___fp[-(-19)]=((((___fp[-(-19)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-19)]=(((long)((___fp[-(-18)])+(___fp[-(-19)])))); ___fp[-(-19)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-19)])))); ___fp[-(-18)]=(((long)((___fp[-(-7)])+(___fp[-(-8)])))); ___fp[-(-16)]=(((long)((___fp[-(-11)])+(___fp[-(-16)])))); ___fp[-(-11)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-18)])))); ___fp[-(-18)]=((((___fp[-(-18)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-18)]=(((long)((___fp[-(-16)])+(___fp[-(-18)])))); ___fp[-(-18)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-18)])))); ___fp[-(-16)]=((((___fp[-(-11)])>>(((((long)(2L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-8)]=(((long)((___fp[-(-18)])&((((long)(3L))<<2))))); ___fp[-(-8)]=(((___fp[-(-8)])<<(((((long)(14L))<<2))>>2))); ___fp[-(-16)]=(((long)((___fp[-(-8)])|(___fp[-(-16)])))); ___fp[-(-8)]=((((___fp[-(-18)])>>(((((long)(2L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-11)])&((((long)(3L))<<2))))); ___fp[-(-7)]=(((___fp[-(-7)])<<(((((long)(14L))<<2))>>2))); ___fp[-(-8)]=(((long)((___fp[-(-7)])|(___fp[-(-8)])))); ___fp[-(-7)]=((((___fp[-(-11)])>>(((((long)(13L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___fp[-(-18)])&((((long)(8191L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(3L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___fp[-(-18)])>>(((((long)(13L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-11)])&((((long)(8191L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(3L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-16)]=(((long)((___fp[-(-16)])^(___fp[-(-7)])))); ___fp[-(-8)]=(((long)((___fp[-(-8)])^(___fp[-(-6)])))); ___fp[-(-7)]=((((___fp[-(-18)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___fp[-(-11)])&((((long)(63L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___fp[-(-11)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-18)])&((((long)(63L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-16)]=(((long)((___fp[-(-16)])^(___fp[-(-7)])))); ___fp[-(-8)]=(((long)((___fp[-(-8)])^(___fp[-(-6)])))); ___fp[-(-7)]=((((___fp[-(-10)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___fp[-(-19)])&((((long)(63L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___fp[-(-19)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-10)])&((((long)(63L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-5)]=((((___fp[-(-10)])>>(((((long)(11L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-4)]=(((long)((___fp[-(-19)])&((((long)(2047L))<<2))))); ___fp[-(-4)]=(((___fp[-(-4)])<<(((((long)(5L))<<2))>>2))); ___fp[-(-5)]=(((long)((___fp[-(-4)])|(___fp[-(-5)])))); ___fp[-(-4)]=((((___fp[-(-19)])>>(((((long)(11L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-3)]=(((long)((___fp[-(-10)])&((((long)(2047L))<<2))))); ___fp[-(-3)]=(((___fp[-(-3)])<<(((((long)(5L))<<2))>>2))); ___fp[-(-4)]=(((long)((___fp[-(-3)])|(___fp[-(-4)])))); ___fp[-(-7)]=(((long)((___fp[-(-7)])^(___fp[-(-5)])))); ___fp[-(-6)]=(((long)((___fp[-(-6)])^(___fp[-(-4)])))); ___fp[-(-5)]=((((___fp[-(-19)])>>(((((long)(9L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-4)]=(((long)((___fp[-(-10)])&((((long)(511L))<<2))))); ___fp[-(-4)]=(((___fp[-(-4)])<<(((((long)(7L))<<2))>>2))); ___fp[-(-5)]=(((long)((___fp[-(-4)])|(___fp[-(-5)])))); ___fp[-(-4)]=((((___fp[-(-10)])>>(((((long)(9L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-3)]=(((long)((___fp[-(-19)])&((((long)(511L))<<2))))); ___fp[-(-3)]=(((___fp[-(-3)])<<(((((long)(7L))<<2))>>2))); ___fp[-(-4)]=(((long)((___fp[-(-3)])|(___fp[-(-4)])))); ___fp[-(-7)]=(((long)((___fp[-(-7)])^(___fp[-(-5)])))); ___fp[-(-6)]=(((long)((___fp[-(-6)])^(___fp[-(-4)])))); ___fp[-(-5)]=(((long)((___fp[-(-11)])|(___fp[-(-15)])))); ___fp[-(-4)]=(((long)((___fp[-(-18)])|(___r1)))); ___fp[-(-5)]=(((long)((___r3)&(___fp[-(-5)])))); ___fp[-(-4)]=(((long)((___r2)&(___fp[-(-4)])))); ___fp[-(-3)]=(((long)((___fp[-(-11)])&(___fp[-(-15)])))); ___fp[-(-2)]=(((long)((___fp[-(-18)])&(___r1)))); ___fp[-(-5)]=(((long)((___fp[-(-5)])|(___fp[-(-3)])))); ___fp[-(-4)]=(((long)((___fp[-(-4)])|(___fp[-(-2)])))); ___fp[-(-3)]=(((long)((___fp[-(-9)])^(___fp[-(-14)])))); ___fp[-(-2)]=(((long)((___fp[-(-17)])^(___r4)))); ___fp[-(-3)]=(((long)((___fp[-(-10)])&(___fp[-(-3)])))); ___fp[-(-2)]=(((long)((___fp[-(-19)])&(___fp[-(-2)])))); ___fp[-(-3)]=(((long)((___fp[-(-14)])^(___fp[-(-3)])))); ___fp[-(-2)]=(((long)((___r4)^(___fp[-(-2)])))); ___fp[-(-1)]=(*(long*)(((long)(((long*)((___fp[-(-22)])-(1)))+1))+(((((long)(6L))<<2))<<(3 -2)))); ___fp[-(0)]=(*(long*)(((long)(((long*)((___fp[-(-22)])-(1)))+1))+(((((long)(7L))<<2))<<(3 -2)))); ___fp[-(-7)]=(((long)((___fp[-(-1)])+(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(0)])+(___fp[-(-6)])))); ___fp[-(-1)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-7)]=((((___fp[-(-7)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-6)])+(___fp[-(-7)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(-3)])+(___fp[-(-1)])))); ___fp[-(-7)]=(((long)((___fp[-(-2)])+(___fp[-(-7)])))); ___fp[-(-3)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-6)])))); ___fp[-(-6)]=((((___fp[-(-6)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+(___fp[-(-6)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(-3)])+((((long)(56229L))<<2))))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+((((long)(59829L))<<2))))); ___fp[-(-3)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-6)])))); ___fp[-(-6)]=((((___fp[-(-6)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+(___fp[-(-6)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-13)]=(((long)((___fp[-(-13)])+(___fp[-(-3)])))); ___fp[-(-12)]=(((long)((___fp[-(-12)])+(___fp[-(-7)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-13)])))); ___fp[-(-13)]=((((___fp[-(-13)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-13)]=(((long)((___fp[-(-12)])+(___fp[-(-13)])))); ___fp[-(-13)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-13)])))); ___fp[-(-16)]=(((long)((___fp[-(-16)])+(___fp[-(-5)])))); ___fp[-(-12)]=(((long)((___fp[-(-8)])+(___fp[-(-4)])))); ___fp[-(-8)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-16)])))); ___fp[-(-16)]=((((___fp[-(-16)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-16)]=(((long)((___fp[-(-12)])+(___fp[-(-16)])))); ___fp[-(-16)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-16)])))); ___fp[-(-21)]=(((long)((___fp[-(-7)])+(___fp[-(-21)])))); ___fp[-(-20)]=(((long)((___fp[-(-13)])+(___fp[-(-20)])))); ___fp[-(-12)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-21)])))); ___fp[-(-21)]=((((___fp[-(-21)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-21)]=(((long)((___fp[-(-20)])+(___fp[-(-21)])))); ___fp[-(-21)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-21)])))); ___fp[-(-20)]=(((long)((___fp[-(-7)])+(___fp[-(-8)])))); ___fp[-(-16)]=(((long)((___fp[-(-13)])+(___fp[-(-16)])))); ___fp[-(-13)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-20)])))); ___fp[-(-20)]=((((___fp[-(-20)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-20)]=(((long)((___fp[-(-16)])+(___fp[-(-20)])))); ___fp[-(-20)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-20)])))); ___fp[-(-16)]=((((___fp[-(-13)])>>(((((long)(2L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-8)]=(((long)((___fp[-(-20)])&((((long)(3L))<<2))))); ___fp[-(-8)]=(((___fp[-(-8)])<<(((((long)(14L))<<2))>>2))); ___fp[-(-16)]=(((long)((___fp[-(-8)])|(___fp[-(-16)])))); ___fp[-(-8)]=((((___fp[-(-20)])>>(((((long)(2L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-13)])&((((long)(3L))<<2))))); ___fp[-(-7)]=(((___fp[-(-7)])<<(((((long)(14L))<<2))>>2))); ___fp[-(-8)]=(((long)((___fp[-(-7)])|(___fp[-(-8)])))); ___fp[-(-7)]=((((___fp[-(-13)])>>(((((long)(13L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___fp[-(-20)])&((((long)(8191L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(3L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___fp[-(-20)])>>(((((long)(13L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-13)])&((((long)(8191L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(3L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-16)]=(((long)((___fp[-(-16)])^(___fp[-(-7)])))); ___fp[-(-8)]=(((long)((___fp[-(-8)])^(___fp[-(-6)])))); ___fp[-(-7)]=((((___fp[-(-20)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___fp[-(-13)])&((((long)(63L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___fp[-(-13)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-20)])&((((long)(63L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-16)]=(((long)((___fp[-(-16)])^(___fp[-(-7)])))); ___fp[-(-8)]=(((long)((___fp[-(-8)])^(___fp[-(-6)])))); ___fp[-(-7)]=((((___fp[-(-12)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___fp[-(-21)])&((((long)(63L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___fp[-(-21)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-12)])&((((long)(63L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-5)]=((((___fp[-(-12)])>>(((((long)(11L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-4)]=(((long)((___fp[-(-21)])&((((long)(2047L))<<2))))); ___fp[-(-4)]=(((___fp[-(-4)])<<(((((long)(5L))<<2))>>2))); ___fp[-(-5)]=(((long)((___fp[-(-4)])|(___fp[-(-5)])))); ___fp[-(-4)]=((((___fp[-(-21)])>>(((((long)(11L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-3)]=(((long)((___fp[-(-12)])&((((long)(2047L))<<2))))); ___fp[-(-3)]=(((___fp[-(-3)])<<(((((long)(5L))<<2))>>2))); ___fp[-(-4)]=(((long)((___fp[-(-3)])|(___fp[-(-4)])))); ___fp[-(-7)]=(((long)((___fp[-(-7)])^(___fp[-(-5)])))); ___fp[-(-6)]=(((long)((___fp[-(-6)])^(___fp[-(-4)])))); ___fp[-(-5)]=((((___fp[-(-21)])>>(((((long)(9L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-4)]=(((long)((___fp[-(-12)])&((((long)(511L))<<2))))); ___fp[-(-4)]=(((___fp[-(-4)])<<(((((long)(7L))<<2))>>2))); ___fp[-(-5)]=(((long)((___fp[-(-4)])|(___fp[-(-5)])))); ___fp[-(-4)]=((((___fp[-(-12)])>>(((((long)(9L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-3)]=(((long)((___fp[-(-21)])&((((long)(511L))<<2))))); ___fp[-(-3)]=(((___fp[-(-3)])<<(((((long)(7L))<<2))>>2))); ___fp[-(-4)]=(((long)((___fp[-(-3)])|(___fp[-(-4)])))); ___fp[-(-7)]=(((long)((___fp[-(-7)])^(___fp[-(-5)])))); ___fp[-(-6)]=(((long)((___fp[-(-6)])^(___fp[-(-4)])))); ___fp[-(-5)]=(((long)((___fp[-(-13)])|(___fp[-(-11)])))); ___fp[-(-4)]=(((long)((___fp[-(-20)])|(___fp[-(-18)])))); ___fp[-(-5)]=(((long)((___fp[-(-15)])&(___fp[-(-5)])))); ___fp[-(-4)]=(((long)((___r1)&(___fp[-(-4)])))); ___fp[-(-3)]=(((long)((___fp[-(-13)])&(___fp[-(-11)])))); ___fp[-(-2)]=(((long)((___fp[-(-20)])&(___fp[-(-18)])))); ___fp[-(-5)]=(((long)((___fp[-(-5)])|(___fp[-(-3)])))); ___fp[-(-4)]=(((long)((___fp[-(-4)])|(___fp[-(-2)])))); ___fp[-(-3)]=(((long)((___fp[-(-10)])^(___fp[-(-9)])))); ___fp[-(-2)]=(((long)((___fp[-(-19)])^(___fp[-(-17)])))); ___fp[-(-3)]=(((long)((___fp[-(-12)])&(___fp[-(-3)])))); ___fp[-(-2)]=(((long)((___fp[-(-21)])&(___fp[-(-2)])))); ___fp[-(-3)]=(((long)((___fp[-(-9)])^(___fp[-(-3)])))); ___fp[-(-2)]=(((long)((___fp[-(-17)])^(___fp[-(-2)])))); ___fp[-(-1)]=(*(long*)(((long)(((long*)((___fp[-(-22)])-(1)))+1))+(((((long)(8L))<<2))<<(3 -2)))); ___fp[-(0)]=(*(long*)(((long)(((long*)((___fp[-(-22)])-(1)))+1))+(((((long)(9L))<<2))<<(3 -2)))); ___fp[-(-7)]=(((long)((___fp[-(-1)])+(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(0)])+(___fp[-(-6)])))); ___fp[-(-1)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-7)]=((((___fp[-(-7)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-6)])+(___fp[-(-7)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(-3)])+(___fp[-(-1)])))); ___fp[-(-7)]=(((long)((___fp[-(-2)])+(___fp[-(-7)])))); ___fp[-(-3)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-6)])))); ___fp[-(-6)]=((((___fp[-(-6)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+(___fp[-(-6)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(-3)])+((((long)(49755L))<<2))))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+((((long)(14678L))<<2))))); ___fp[-(-3)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-6)])))); ___fp[-(-6)]=((((___fp[-(-6)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+(___fp[-(-6)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-14)]=(((long)((___fp[-(-14)])+(___fp[-(-3)])))); ___r4=(((long)((___r4)+(___fp[-(-7)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-14)])))); ___fp[-(-14)]=((((___fp[-(-14)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___r4=(((long)((___r4)+(___fp[-(-14)])))); ___r4=(((long)(((((long)(65535L))<<2))&(___r4)))); ___fp[-(-16)]=(((long)((___fp[-(-16)])+(___fp[-(-5)])))); ___fp[-(-14)]=(((long)((___fp[-(-8)])+(___fp[-(-4)])))); ___fp[-(-8)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-16)])))); ___fp[-(-16)]=((((___fp[-(-16)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-16)]=(((long)((___fp[-(-14)])+(___fp[-(-16)])))); ___fp[-(-16)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-16)])))); ___r3=(((long)((___fp[-(-7)])+(___r3)))); ___r2=(((long)((___r4)+(___r2)))); ___fp[-(-14)]=(((long)(((((long)(65535L))<<2))&(___r3)))); ___r3=((((___r3)>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___r2=(((long)((___r2)+(___r3)))); ___r2=(((long)(((((long)(65535L))<<2))&(___r2)))); ___r3=(((long)((___fp[-(-7)])+(___fp[-(-8)])))); ___r4=(((long)((___r4)+(___fp[-(-16)])))); ___fp[-(-16)]=(((long)(((((long)(65535L))<<2))&(___r3)))); ___r3=((((___r3)>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___r3=(((long)((___r4)+(___r3)))); ___r3=(((long)(((((long)(65535L))<<2))&(___r3)))); ___r4=((((___fp[-(-16)])>>(((((long)(2L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-8)]=(((long)((___r3)&((((long)(3L))<<2))))); ___fp[-(-8)]=(((___fp[-(-8)])<<(((((long)(14L))<<2))>>2))); ___r4=(((long)((___fp[-(-8)])|(___r4)))); ___fp[-(-8)]=((((___r3)>>(((((long)(2L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-16)])&((((long)(3L))<<2))))); ___fp[-(-7)]=(((___fp[-(-7)])<<(((((long)(14L))<<2))>>2))); ___fp[-(-8)]=(((long)((___fp[-(-7)])|(___fp[-(-8)])))); ___fp[-(-7)]=((((___fp[-(-16)])>>(((((long)(13L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___r3)&((((long)(8191L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(3L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___r3)>>(((((long)(13L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-16)])&((((long)(8191L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(3L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___r4=(((long)((___r4)^(___fp[-(-7)])))); ___fp[-(-8)]=(((long)((___fp[-(-8)])^(___fp[-(-6)])))); ___fp[-(-7)]=((((___r3)>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___fp[-(-16)])&((((long)(63L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___fp[-(-16)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___r3)&((((long)(63L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___r4=(((long)((___r4)^(___fp[-(-7)])))); ___fp[-(-8)]=(((long)((___fp[-(-8)])^(___fp[-(-6)])))); ___fp[-(-7)]=((((___fp[-(-14)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___r2)&((((long)(63L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___r2)>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-14)])&((((long)(63L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-5)]=((((___fp[-(-14)])>>(((((long)(11L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-4)]=(((long)((___r2)&((((long)(2047L))<<2))))); ___fp[-(-4)]=(((___fp[-(-4)])<<(((((long)(5L))<<2))>>2))); ___fp[-(-5)]=(((long)((___fp[-(-4)])|(___fp[-(-5)])))); ___fp[-(-4)]=((((___r2)>>(((((long)(11L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-3)]=(((long)((___fp[-(-14)])&((((long)(2047L))<<2))))); ___fp[-(-3)]=(((___fp[-(-3)])<<(((((long)(5L))<<2))>>2))); ___fp[-(-4)]=(((long)((___fp[-(-3)])|(___fp[-(-4)])))); ___fp[-(-7)]=(((long)((___fp[-(-7)])^(___fp[-(-5)])))); ___fp[-(-6)]=(((long)((___fp[-(-6)])^(___fp[-(-4)])))); ___fp[-(-5)]=((((___r2)>>(((((long)(9L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-4)]=(((long)((___fp[-(-14)])&((((long)(511L))<<2))))); ___fp[-(-4)]=(((___fp[-(-4)])<<(((((long)(7L))<<2))>>2))); ___fp[-(-5)]=(((long)((___fp[-(-4)])|(___fp[-(-5)])))); ___fp[-(-4)]=((((___fp[-(-14)])>>(((((long)(9L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-3)]=(((long)((___r2)&((((long)(511L))<<2))))); ___fp[-(-3)]=(((___fp[-(-3)])<<(((((long)(7L))<<2))>>2))); ___fp[-(-4)]=(((long)((___fp[-(-3)])|(___fp[-(-4)])))); ___fp[-(-7)]=(((long)((___fp[-(-7)])^(___fp[-(-5)])))); ___fp[-(-6)]=(((long)((___fp[-(-6)])^(___fp[-(-4)])))); ___fp[-(-5)]=(((long)((___fp[-(-16)])|(___fp[-(-13)])))); ___fp[-(-4)]=(((long)((___r3)|(___fp[-(-20)])))); ___fp[-(-5)]=(((long)((___fp[-(-11)])&(___fp[-(-5)])))); ___fp[-(-4)]=(((long)((___fp[-(-18)])&(___fp[-(-4)])))); ___fp[-(-3)]=(((long)((___fp[-(-16)])&(___fp[-(-13)])))); ___fp[-(-2)]=(((long)((___r3)&(___fp[-(-20)])))); ___fp[-(-5)]=(((long)((___fp[-(-5)])|(___fp[-(-3)])))); ___fp[-(-4)]=(((long)((___fp[-(-4)])|(___fp[-(-2)])))); ___fp[-(-3)]=(((long)((___fp[-(-12)])^(___fp[-(-10)])))); ___fp[-(-2)]=(((long)((___fp[-(-21)])^(___fp[-(-19)])))); ___fp[-(-3)]=(((long)((___fp[-(-14)])&(___fp[-(-3)])))); ___fp[-(-2)]=(((long)((___r2)&(___fp[-(-2)])))); ___fp[-(-3)]=(((long)((___fp[-(-10)])^(___fp[-(-3)])))); ___fp[-(-2)]=(((long)((___fp[-(-19)])^(___fp[-(-2)])))); ___fp[-(-1)]=(*(long*)(((long)(((long*)((___fp[-(-22)])-(1)))+1))+(((((long)(10L))<<2))<<(3 -2)))); ___fp[-(0)]=(*(long*)(((long)(((long*)((___fp[-(-22)])-(1)))+1))+(((((long)(11L))<<2))<<(3 -2)))); ___fp[-(-7)]=(((long)((___fp[-(-1)])+(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(0)])+(___fp[-(-6)])))); ___fp[-(-1)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-7)]=((((___fp[-(-7)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-6)])+(___fp[-(-7)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(-3)])+(___fp[-(-1)])))); ___fp[-(-7)]=(((long)((___fp[-(-2)])+(___fp[-(-7)])))); ___fp[-(-3)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-6)])))); ___fp[-(-6)]=((((___fp[-(-6)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+(___fp[-(-6)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(-3)])+((((long)(4593L))<<2))))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+((((long)(23025L))<<2))))); ___fp[-(-3)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-6)])))); ___fp[-(-6)]=((((___fp[-(-6)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+(___fp[-(-6)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-9)]=(((long)((___fp[-(-9)])+(___fp[-(-3)])))); ___fp[-(-17)]=(((long)((___fp[-(-17)])+(___fp[-(-7)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-9)])))); ___fp[-(-9)]=((((___fp[-(-9)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-17)]=(((long)((___fp[-(-17)])+(___fp[-(-9)])))); ___fp[-(-17)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-17)])))); ___r4=(((long)((___r4)+(___fp[-(-5)])))); ___fp[-(-9)]=(((long)((___fp[-(-8)])+(___fp[-(-4)])))); ___fp[-(-8)]=(((long)(((((long)(65535L))<<2))&(___r4)))); ___r4=((((___r4)>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___r4=(((long)((___fp[-(-9)])+(___r4)))); ___r4=(((long)(((((long)(65535L))<<2))&(___r4)))); ___fp[-(-15)]=(((long)((___fp[-(-7)])+(___fp[-(-15)])))); ___r1=(((long)((___fp[-(-17)])+(___r1)))); ___fp[-(-9)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-15)])))); ___fp[-(-15)]=((((___fp[-(-15)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___r1=(((long)((___r1)+(___fp[-(-15)])))); ___r1=(((long)(((((long)(65535L))<<2))&(___r1)))); ___fp[-(-15)]=(((long)((___fp[-(-7)])+(___fp[-(-8)])))); ___r4=(((long)((___fp[-(-17)])+(___r4)))); ___fp[-(-17)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-15)])))); ___fp[-(-15)]=((((___fp[-(-15)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___r4=(((long)((___r4)+(___fp[-(-15)])))); ___r4=(((long)(((((long)(65535L))<<2))&(___r4)))); ___fp[-(-15)]=((((___fp[-(-17)])>>(((((long)(2L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-8)]=(((long)((___r4)&((((long)(3L))<<2))))); ___fp[-(-8)]=(((___fp[-(-8)])<<(((((long)(14L))<<2))>>2))); ___fp[-(-15)]=(((long)((___fp[-(-8)])|(___fp[-(-15)])))); ___fp[-(-8)]=((((___r4)>>(((((long)(2L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-17)])&((((long)(3L))<<2))))); ___fp[-(-7)]=(((___fp[-(-7)])<<(((((long)(14L))<<2))>>2))); ___fp[-(-8)]=(((long)((___fp[-(-7)])|(___fp[-(-8)])))); ___fp[-(-7)]=((((___fp[-(-17)])>>(((((long)(13L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___r4)&((((long)(8191L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(3L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___r4)>>(((((long)(13L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-17)])&((((long)(8191L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(3L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-15)]=(((long)((___fp[-(-15)])^(___fp[-(-7)])))); ___fp[-(-8)]=(((long)((___fp[-(-8)])^(___fp[-(-6)])))); ___fp[-(-7)]=((((___r4)>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___fp[-(-17)])&((((long)(63L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___fp[-(-17)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___r4)&((((long)(63L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-15)]=(((long)((___fp[-(-15)])^(___fp[-(-7)])))); ___fp[-(-8)]=(((long)((___fp[-(-8)])^(___fp[-(-6)])))); ___fp[-(-7)]=((((___fp[-(-9)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___r1)&((((long)(63L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___r1)>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-9)])&((((long)(63L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-5)]=((((___fp[-(-9)])>>(((((long)(11L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-4)]=(((long)((___r1)&((((long)(2047L))<<2))))); ___fp[-(-4)]=(((___fp[-(-4)])<<(((((long)(5L))<<2))>>2))); ___fp[-(-5)]=(((long)((___fp[-(-4)])|(___fp[-(-5)])))); ___fp[-(-4)]=((((___r1)>>(((((long)(11L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-3)]=(((long)((___fp[-(-9)])&((((long)(2047L))<<2))))); ___fp[-(-3)]=(((___fp[-(-3)])<<(((((long)(5L))<<2))>>2))); ___fp[-(-4)]=(((long)((___fp[-(-3)])|(___fp[-(-4)])))); ___fp[-(-7)]=(((long)((___fp[-(-7)])^(___fp[-(-5)])))); ___fp[-(-6)]=(((long)((___fp[-(-6)])^(___fp[-(-4)])))); ___fp[-(-5)]=((((___r1)>>(((((long)(9L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-4)]=(((long)((___fp[-(-9)])&((((long)(511L))<<2))))); ___fp[-(-4)]=(((___fp[-(-4)])<<(((((long)(7L))<<2))>>2))); ___fp[-(-5)]=(((long)((___fp[-(-4)])|(___fp[-(-5)])))); ___fp[-(-4)]=((((___fp[-(-9)])>>(((((long)(9L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-3)]=(((long)((___r1)&((((long)(511L))<<2))))); ___fp[-(-3)]=(((___fp[-(-3)])<<(((((long)(7L))<<2))>>2))); ___fp[-(-4)]=(((long)((___fp[-(-3)])|(___fp[-(-4)])))); ___fp[-(-7)]=(((long)((___fp[-(-7)])^(___fp[-(-5)])))); ___fp[-(-6)]=(((long)((___fp[-(-6)])^(___fp[-(-4)])))); ___fp[-(-5)]=(((long)((___fp[-(-17)])|(___fp[-(-16)])))); ___fp[-(-4)]=(((long)((___r4)|(___r3)))); ___fp[-(-5)]=(((long)((___fp[-(-13)])&(___fp[-(-5)])))); ___fp[-(-4)]=(((long)((___fp[-(-20)])&(___fp[-(-4)])))); ___fp[-(-3)]=(((long)((___fp[-(-17)])&(___fp[-(-16)])))); ___fp[-(-2)]=(((long)((___r4)&(___r3)))); ___fp[-(-5)]=(((long)((___fp[-(-5)])|(___fp[-(-3)])))); ___fp[-(-4)]=(((long)((___fp[-(-4)])|(___fp[-(-2)])))); ___fp[-(-3)]=(((long)((___fp[-(-14)])^(___fp[-(-12)])))); ___fp[-(-2)]=(((long)((___r2)^(___fp[-(-21)])))); ___fp[-(-3)]=(((long)((___fp[-(-9)])&(___fp[-(-3)])))); ___fp[-(-2)]=(((long)((___r1)&(___fp[-(-2)])))); ___fp[-(-3)]=(((long)((___fp[-(-12)])^(___fp[-(-3)])))); ___fp[-(-2)]=(((long)((___fp[-(-21)])^(___fp[-(-2)])))); ___fp[-(-1)]=(*(long*)(((long)(((long*)((___fp[-(-22)])-(1)))+1))+(((((long)(12L))<<2))<<(3 -2)))); ___fp[-(0)]=(*(long*)(((long)(((long*)((___fp[-(-22)])-(1)))+1))+(((((long)(13L))<<2))<<(3 -2)))); ___fp[-(-7)]=(((long)((___fp[-(-1)])+(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(0)])+(___fp[-(-6)])))); ___fp[-(-1)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-7)]=((((___fp[-(-7)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-6)])+(___fp[-(-7)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(-3)])+(___fp[-(-1)])))); ___fp[-(-7)]=(((long)((___fp[-(-2)])+(___fp[-(-7)])))); ___fp[-(-3)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-6)])))); ___fp[-(-6)]=((((___fp[-(-6)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+(___fp[-(-6)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(-3)])+((((long)(33444L))<<2))))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+((((long)(37439L))<<2))))); ___fp[-(-3)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-6)])))); ___fp[-(-6)]=((((___fp[-(-6)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+(___fp[-(-6)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-10)]=(((long)((___fp[-(-10)])+(___fp[-(-3)])))); ___fp[-(-19)]=(((long)((___fp[-(-19)])+(___fp[-(-7)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-10)])))); ___fp[-(-10)]=((((___fp[-(-10)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-19)]=(((long)((___fp[-(-19)])+(___fp[-(-10)])))); ___fp[-(-19)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-19)])))); ___fp[-(-15)]=(((long)((___fp[-(-15)])+(___fp[-(-5)])))); ___fp[-(-10)]=(((long)((___fp[-(-8)])+(___fp[-(-4)])))); ___fp[-(-8)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-15)])))); ___fp[-(-15)]=((((___fp[-(-15)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-15)]=(((long)((___fp[-(-10)])+(___fp[-(-15)])))); ___fp[-(-15)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-15)])))); ___fp[-(-11)]=(((long)((___fp[-(-7)])+(___fp[-(-11)])))); ___fp[-(-18)]=(((long)((___fp[-(-19)])+(___fp[-(-18)])))); ___fp[-(-10)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-11)])))); ___fp[-(-11)]=((((___fp[-(-11)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-18)]=(((long)((___fp[-(-18)])+(___fp[-(-11)])))); ___fp[-(-18)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-18)])))); ___fp[-(-11)]=(((long)((___fp[-(-7)])+(___fp[-(-8)])))); ___fp[-(-19)]=(((long)((___fp[-(-19)])+(___fp[-(-15)])))); ___fp[-(-15)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-11)])))); ___fp[-(-11)]=((((___fp[-(-11)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-19)]=(((long)((___fp[-(-19)])+(___fp[-(-11)])))); ___fp[-(-19)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-19)])))); ___fp[-(-11)]=((((___fp[-(-15)])>>(((((long)(2L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-8)]=(((long)((___fp[-(-19)])&((((long)(3L))<<2))))); ___fp[-(-8)]=(((___fp[-(-8)])<<(((((long)(14L))<<2))>>2))); ___fp[-(-11)]=(((long)((___fp[-(-8)])|(___fp[-(-11)])))); ___fp[-(-8)]=((((___fp[-(-19)])>>(((((long)(2L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-15)])&((((long)(3L))<<2))))); ___fp[-(-7)]=(((___fp[-(-7)])<<(((((long)(14L))<<2))>>2))); ___fp[-(-8)]=(((long)((___fp[-(-7)])|(___fp[-(-8)])))); ___fp[-(-7)]=((((___fp[-(-15)])>>(((((long)(13L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___fp[-(-19)])&((((long)(8191L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(3L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___fp[-(-19)])>>(((((long)(13L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-15)])&((((long)(8191L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(3L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-11)]=(((long)((___fp[-(-11)])^(___fp[-(-7)])))); ___fp[-(-8)]=(((long)((___fp[-(-8)])^(___fp[-(-6)])))); ___fp[-(-7)]=((((___fp[-(-19)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___fp[-(-15)])&((((long)(63L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___fp[-(-15)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-19)])&((((long)(63L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-11)]=(((long)((___fp[-(-11)])^(___fp[-(-7)])))); ___fp[-(-8)]=(((long)((___fp[-(-8)])^(___fp[-(-6)])))); ___fp[-(-7)]=((((___fp[-(-10)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-6)]=(((long)((___fp[-(-18)])&((((long)(63L))<<2))))); ___fp[-(-6)]=(((___fp[-(-6)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-7)]=(((long)((___fp[-(-6)])|(___fp[-(-7)])))); ___fp[-(-6)]=((((___fp[-(-18)])>>(((((long)(6L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-5)]=(((long)((___fp[-(-10)])&((((long)(63L))<<2))))); ___fp[-(-5)]=(((___fp[-(-5)])<<(((((long)(10L))<<2))>>2))); ___fp[-(-6)]=(((long)((___fp[-(-5)])|(___fp[-(-6)])))); ___fp[-(-5)]=((((___fp[-(-10)])>>(((((long)(11L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-4)]=(((long)((___fp[-(-18)])&((((long)(2047L))<<2))))); ___fp[-(-4)]=(((___fp[-(-4)])<<(((((long)(5L))<<2))>>2))); ___fp[-(-5)]=(((long)((___fp[-(-4)])|(___fp[-(-5)])))); ___fp[-(-4)]=((((___fp[-(-18)])>>(((((long)(11L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-3)]=(((long)((___fp[-(-10)])&((((long)(2047L))<<2))))); ___fp[-(-3)]=(((___fp[-(-3)])<<(((((long)(5L))<<2))>>2))); ___fp[-(-4)]=(((long)((___fp[-(-3)])|(___fp[-(-4)])))); ___fp[-(-7)]=(((long)((___fp[-(-7)])^(___fp[-(-5)])))); ___fp[-(-6)]=(((long)((___fp[-(-6)])^(___fp[-(-4)])))); ___fp[-(-5)]=((((___fp[-(-18)])>>(((((long)(9L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-4)]=(((long)((___fp[-(-10)])&((((long)(511L))<<2))))); ___fp[-(-4)]=(((___fp[-(-4)])<<(((((long)(7L))<<2))>>2))); ___fp[-(-5)]=(((long)((___fp[-(-4)])|(___fp[-(-5)])))); ___fp[-(-4)]=((((___fp[-(-10)])>>(((((long)(9L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-3)]=(((long)((___fp[-(-18)])&((((long)(511L))<<2))))); ___fp[-(-3)]=(((___fp[-(-3)])<<(((((long)(7L))<<2))>>2))); ___fp[-(-4)]=(((long)((___fp[-(-3)])|(___fp[-(-4)])))); ___fp[-(-7)]=(((long)((___fp[-(-7)])^(___fp[-(-5)])))); ___fp[-(-6)]=(((long)((___fp[-(-6)])^(___fp[-(-4)])))); ___fp[-(-5)]=(((long)((___fp[-(-15)])|(___fp[-(-17)])))); ___fp[-(-4)]=(((long)((___fp[-(-19)])|(___r4)))); ___fp[-(-5)]=(((long)((___fp[-(-16)])&(___fp[-(-5)])))); ___fp[-(-4)]=(((long)((___r3)&(___fp[-(-4)])))); ___fp[-(-3)]=(((long)((___fp[-(-15)])&(___fp[-(-17)])))); ___fp[-(-2)]=(((long)((___fp[-(-19)])&(___r4)))); ___fp[-(-5)]=(((long)((___fp[-(-5)])|(___fp[-(-3)])))); ___fp[-(-4)]=(((long)((___fp[-(-4)])|(___fp[-(-2)])))); ___fp[-(-3)]=(((long)((___fp[-(-9)])^(___fp[-(-14)])))); ___fp[-(-2)]=(((long)((___r1)^(___r2)))); ___fp[-(-3)]=(((long)((___fp[-(-10)])&(___fp[-(-3)])))); ___fp[-(-2)]=(((long)((___fp[-(-18)])&(___fp[-(-2)])))); ___fp[-(-3)]=(((long)((___fp[-(-14)])^(___fp[-(-3)])))); ___fp[-(-2)]=(((long)((___r2)^(___fp[-(-2)])))); ___fp[-(-1)]=(*(long*)(((long)(((long*)((___fp[-(-22)])-(1)))+1))+(((((long)(14L))<<2))<<(3 -2)))); ___fp[-(0)]=(*(long*)(((long)(((long*)((___fp[-(-22)])-(1)))+1))+(((((long)(15L))<<2))<<(3 -2)))); ___fp[-(-7)]=(((long)((___fp[-(-1)])+(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(0)])+(___fp[-(-6)])))); ___fp[-(-1)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-7)]=((((___fp[-(-7)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-6)])+(___fp[-(-7)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(-3)])+(___fp[-(-1)])))); ___fp[-(-7)]=(((long)((___fp[-(-2)])+(___fp[-(-7)])))); ___fp[-(-3)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-6)])))); ___fp[-(-6)]=((((___fp[-(-6)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+(___fp[-(-6)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-6)]=(((long)((___fp[-(-3)])+((((long)(24277L))<<2))))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+((((long)(43804L))<<2))))); ___fp[-(-3)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-6)])))); ___fp[-(-6)]=((((___fp[-(-6)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-7)]=(((long)((___fp[-(-7)])+(___fp[-(-6)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-7)])))); ___fp[-(-12)]=(((long)((___fp[-(-12)])+(___fp[-(-3)])))); ___fp[-(-21)]=(((long)((___fp[-(-21)])+(___fp[-(-7)])))); ___fp[-(-7)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-12)])))); ___fp[-(-12)]=((((___fp[-(-12)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-21)]=(((long)((___fp[-(-21)])+(___fp[-(-12)])))); ___fp[-(-21)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-21)])))); ___fp[-(-12)]=(((long)((___fp[-(-11)])+(___fp[-(-5)])))); ___fp[-(-11)]=(((long)((___fp[-(-8)])+(___fp[-(-4)])))); ___fp[-(-8)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-12)])))); ___fp[-(-12)]=((((___fp[-(-12)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-12)]=(((long)((___fp[-(-11)])+(___fp[-(-12)])))); ___fp[-(-12)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-12)])))); ___fp[-(-13)]=(((long)((___fp[-(-7)])+(___fp[-(-13)])))); ___fp[-(-20)]=(((long)((___fp[-(-21)])+(___fp[-(-20)])))); ___fp[-(-11)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-13)])))); ___fp[-(-13)]=((((___fp[-(-13)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-20)]=(((long)((___fp[-(-20)])+(___fp[-(-13)])))); ___fp[-(-20)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-20)])))); ___fp[-(-13)]=(((long)((___fp[-(-7)])+(___fp[-(-8)])))); ___fp[-(-21)]=(((long)((___fp[-(-21)])+(___fp[-(-12)])))); ___fp[-(-12)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-13)])))); ___fp[-(-13)]=((((___fp[-(-13)])>>(((((long)(16L))<<2))>>2))&~((1<<2)-1))); ___fp[-(-21)]=(((long)((___fp[-(-21)])+(___fp[-(-13)])))); ___fp[-(-21)]=(((long)(((((long)(65535L))<<2))&(___fp[-(-21)])))); ___fp[-(-13)]=(___fp[-(-21)]); ___fp[-(-21)]=(___fp[-(-12)]); ___fp[-(-12)]=(___fp[-(-20)]); ___fp[-(-20)]=(___fp[-(-13)]); ___fp[-(-13)]=(___fp[-(-19)]); ___fp[-(-19)]=(___fp[-(-15)]); ___fp[-(-15)]=(___fp[-(-18)]); ___fp[-(-18)]=(___fp[-(-13)]); ___fp[-(-13)]=(___fp[-(-16)]); ___fp[-(-16)]=(___r4); ___fp[-(-8)]=(___fp[-(-15)]); ___fp[-(-15)]=(___fp[-(-13)]); ___fp[-(-13)]=(___fp[-(-14)]); ___fp[-(-14)]=(___r3); ___fp[-(-7)]=(___fp[-(-13)]); ___fp[-(-13)]=(___fp[-(-11)]); ___fp[-(-11)]=(___fp[-(-10)]); ___fp[-(-10)]=(___fp[-(-8)]); ___r3=(___r2); ___r2=(___fp[-(-7)]); ___fp-=(-9);