// ************************************************************************** // // // // eses eses // // eses eses // // eses eseses esesese eses Embedded Systems Group // // ese ese ese ese ese // // ese eseseses eseseses ese Department of Computer Science // // eses eses ese eses // // eses eseses eseseses eses University of Kaiserslautern // // eses eses // // // // ************************************************************************** // [128]nat x; [128]nat y; [129]nat s; thread RadixBAddCarryLookahead128 { bool g0,g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11,g12,g13,g14,g15,g16,g17,g18,g19,g20,g21,g22,g23,g24,g25,g26,g27,g28,g29,g30,g31,g32,g33,g34,g35,g36,g37,g38,g39,g40,g41,g42,g43,g44,g45,g46,g47,g48,g49,g50,g51,g52,g53,g54,g55,g56,g57,g58,g59,g60,g61,g62,g63,g64,g65,g66,g67,g68,g69,g70,g71,g72,g73,g74,g75,g76,g77,g78,g79,g80,g81,g82,g83,g84,g85,g86,g87,g88,g89,g90,g91,g92,g93,g94,g95,g96,g97,g98,g99,g100,g101,g102,g103,g104,g105,g106,g107,g108,g109,g110,g111,g112,g113,g114,g115,g116,g117,g118,g119,g120,g121,g122,g123,g124,g125,g126,g127; bool p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127; nat x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31,x32,x33,x34,x35,x36,x37,x38,x39,x40,x41,x42,x43,x44,x45,x46,x47,x48,x49,x50,x51,x52,x53,x54,x55,x56,x57,x58,x59,x60,x61,x62,x63,x64,x65,x66,x67,x68,x69,x70,x71,x72,x73,x74,x75,x76,x77,x78,x79,x80,x81,x82,x83,x84,x85,x86,x87,x88,x89,x90,x91,x92,x93,x94,x95,x96,x97,x98,x99,x100,x101,x102,x103,x104,x105,x106,x107,x108,x109,x110,x111,x112,x113,x114,x115,x116,x117,x118,x119,x120,x121,x122,x123,x124,x125,x126,x127; nat y0,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y20,y21,y22,y23,y24,y25,y26,y27,y28,y29,y30,y31,y32,y33,y34,y35,y36,y37,y38,y39,y40,y41,y42,y43,y44,y45,y46,y47,y48,y49,y50,y51,y52,y53,y54,y55,y56,y57,y58,y59,y60,y61,y62,y63,y64,y65,y66,y67,y68,y69,y70,y71,y72,y73,y74,y75,y76,y77,y78,y79,y80,y81,y82,y83,y84,y85,y86,y87,y88,y89,y90,y91,y92,y93,y94,y95,y96,y97,y98,y99,y100,y101,y102,y103,y104,y105,y106,y107,y108,y109,y110,y111,y112,y113,y114,y115,y116,y117,y118,y119,y120,y121,y122,y123,y124,y125,y126,y127; nat s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128; x0 = x[0]; x1 = x[1]; x2 = x[2]; x3 = x[3]; x4 = x[4]; x5 = x[5]; x6 = x[6]; x7 = x[7]; x8 = x[8]; x9 = x[9]; x10 = x[10]; x11 = x[11]; x12 = x[12]; x13 = x[13]; x14 = x[14]; x15 = x[15]; x16 = x[16]; x17 = x[17]; x18 = x[18]; x19 = x[19]; x20 = x[20]; x21 = x[21]; x22 = x[22]; x23 = x[23]; x24 = x[24]; x25 = x[25]; x26 = x[26]; x27 = x[27]; x28 = x[28]; x29 = x[29]; x30 = x[30]; x31 = x[31]; x32 = x[32]; x33 = x[33]; x34 = x[34]; x35 = x[35]; x36 = x[36]; x37 = x[37]; x38 = x[38]; x39 = x[39]; x40 = x[40]; x41 = x[41]; x42 = x[42]; x43 = x[43]; x44 = x[44]; x45 = x[45]; x46 = x[46]; x47 = x[47]; x48 = x[48]; x49 = x[49]; x50 = x[50]; x51 = x[51]; x52 = x[52]; x53 = x[53]; x54 = x[54]; x55 = x[55]; x56 = x[56]; x57 = x[57]; x58 = x[58]; x59 = x[59]; x60 = x[60]; x61 = x[61]; x62 = x[62]; x63 = x[63]; x64 = x[64]; x65 = x[65]; x66 = x[66]; x67 = x[67]; x68 = x[68]; x69 = x[69]; x70 = x[70]; x71 = x[71]; x72 = x[72]; x73 = x[73]; x74 = x[74]; x75 = x[75]; x76 = x[76]; x77 = x[77]; x78 = x[78]; x79 = x[79]; x80 = x[80]; x81 = x[81]; x82 = x[82]; x83 = x[83]; x84 = x[84]; x85 = x[85]; x86 = x[86]; x87 = x[87]; x88 = x[88]; x89 = x[89]; x90 = x[90]; x91 = x[91]; x92 = x[92]; x93 = x[93]; x94 = x[94]; x95 = x[95]; x96 = x[96]; x97 = x[97]; x98 = x[98]; x99 = x[99]; x100 = x[100]; x101 = x[101]; x102 = x[102]; x103 = x[103]; x104 = x[104]; x105 = x[105]; x106 = x[106]; x107 = x[107]; x108 = x[108]; x109 = x[109]; x110 = x[110]; x111 = x[111]; x112 = x[112]; x113 = x[113]; x114 = x[114]; x115 = x[115]; x116 = x[116]; x117 = x[117]; x118 = x[118]; x119 = x[119]; x120 = x[120]; x121 = x[121]; x122 = x[122]; x123 = x[123]; x124 = x[124]; x125 = x[125]; x126 = x[126]; x127 = x[127]; y0 = y[0]; y1 = y[1]; y2 = y[2]; y3 = y[3]; y4 = y[4]; y5 = y[5]; y6 = y[6]; y7 = y[7]; y8 = y[8]; y9 = y[9]; y10 = y[10]; y11 = y[11]; y12 = y[12]; y13 = y[13]; y14 = y[14]; y15 = y[15]; y16 = y[16]; y17 = y[17]; y18 = y[18]; y19 = y[19]; y20 = y[20]; y21 = y[21]; y22 = y[22]; y23 = y[23]; y24 = y[24]; y25 = y[25]; y26 = y[26]; y27 = y[27]; y28 = y[28]; y29 = y[29]; y30 = y[30]; y31 = y[31]; y32 = y[32]; y33 = y[33]; y34 = y[34]; y35 = y[35]; y36 = y[36]; y37 = y[37]; y38 = y[38]; y39 = y[39]; y40 = y[40]; y41 = y[41]; y42 = y[42]; y43 = y[43]; y44 = y[44]; y45 = y[45]; y46 = y[46]; y47 = y[47]; y48 = y[48]; y49 = y[49]; y50 = y[50]; y51 = y[51]; y52 = y[52]; y53 = y[53]; y54 = y[54]; y55 = y[55]; y56 = y[56]; y57 = y[57]; y58 = y[58]; y59 = y[59]; y60 = y[60]; y61 = y[61]; y62 = y[62]; y63 = y[63]; y64 = y[64]; y65 = y[65]; y66 = y[66]; y67 = y[67]; y68 = y[68]; y69 = y[69]; y70 = y[70]; y71 = y[71]; y72 = y[72]; y73 = y[73]; y74 = y[74]; y75 = y[75]; y76 = y[76]; y77 = y[77]; y78 = y[78]; y79 = y[79]; y80 = y[80]; y81 = y[81]; y82 = y[82]; y83 = y[83]; y84 = y[84]; y85 = y[85]; y86 = y[86]; y87 = y[87]; y88 = y[88]; y89 = y[89]; y90 = y[90]; y91 = y[91]; y92 = y[92]; y93 = y[93]; y94 = y[94]; y95 = y[95]; y96 = y[96]; y97 = y[97]; y98 = y[98]; y99 = y[99]; y100 = y[100]; y101 = y[101]; y102 = y[102]; y103 = y[103]; y104 = y[104]; y105 = y[105]; y106 = y[106]; y107 = y[107]; y108 = y[108]; y109 = y[109]; y110 = y[110]; y111 = y[111]; y112 = y[112]; y113 = y[113]; y114 = y[114]; y115 = y[115]; y116 = y[116]; y117 = y[117]; y118 = y[118]; y119 = y[119]; y120 = y[120]; y121 = y[121]; y122 = y[122]; y123 = y[123]; y124 = y[124]; y125 = y[125]; y126 = y[126]; y127 = y[127]; // preliminary sum digits s0 = x0 + y0; s1 = x1 + y1; s2 = x2 + y2; s3 = x3 + y3; s4 = x4 + y4; s5 = x5 + y5; s6 = x6 + y6; s7 = x7 + y7; s8 = x8 + y8; s9 = x9 + y9; s10 = x10 + y10; s11 = x11 + y11; s12 = x12 + y12; s13 = x13 + y13; s14 = x14 + y14; s15 = x15 + y15; s16 = x16 + y16; s17 = x17 + y17; s18 = x18 + y18; s19 = x19 + y19; s20 = x20 + y20; s21 = x21 + y21; s22 = x22 + y22; s23 = x23 + y23; s24 = x24 + y24; s25 = x25 + y25; s26 = x26 + y26; s27 = x27 + y27; s28 = x28 + y28; s29 = x29 + y29; s30 = x30 + y30; s31 = x31 + y31; s32 = x32 + y32; s33 = x33 + y33; s34 = x34 + y34; s35 = x35 + y35; s36 = x36 + y36; s37 = x37 + y37; s38 = x38 + y38; s39 = x39 + y39; s40 = x40 + y40; s41 = x41 + y41; s42 = x42 + y42; s43 = x43 + y43; s44 = x44 + y44; s45 = x45 + y45; s46 = x46 + y46; s47 = x47 + y47; s48 = x48 + y48; s49 = x49 + y49; s50 = x50 + y50; s51 = x51 + y51; s52 = x52 + y52; s53 = x53 + y53; s54 = x54 + y54; s55 = x55 + y55; s56 = x56 + y56; s57 = x57 + y57; s58 = x58 + y58; s59 = x59 + y59; s60 = x60 + y60; s61 = x61 + y61; s62 = x62 + y62; s63 = x63 + y63; s64 = x64 + y64; s65 = x65 + y65; s66 = x66 + y66; s67 = x67 + y67; s68 = x68 + y68; s69 = x69 + y69; s70 = x70 + y70; s71 = x71 + y71; s72 = x72 + y72; s73 = x73 + y73; s74 = x74 + y74; s75 = x75 + y75; s76 = x76 + y76; s77 = x77 + y77; s78 = x78 + y78; s79 = x79 + y79; s80 = x80 + y80; s81 = x81 + y81; s82 = x82 + y82; s83 = x83 + y83; s84 = x84 + y84; s85 = x85 + y85; s86 = x86 + y86; s87 = x87 + y87; s88 = x88 + y88; s89 = x89 + y89; s90 = x90 + y90; s91 = x91 + y91; s92 = x92 + y92; s93 = x93 + y93; s94 = x94 + y94; s95 = x95 + y95; s96 = x96 + y96; s97 = x97 + y97; s98 = x98 + y98; s99 = x99 + y99; s100 = x100 + y100; s101 = x101 + y101; s102 = x102 + y102; s103 = x103 + y103; s104 = x104 + y104; s105 = x105 + y105; s106 = x106 + y106; s107 = x107 + y107; s108 = x108 + y108; s109 = x109 + y109; s110 = x110 + y110; s111 = x111 + y111; s112 = x112 + y112; s113 = x113 + y113; s114 = x114 + y114; s115 = x115 + y115; s116 = x116 + y116; s117 = x117 + y117; s118 = x118 + y118; s119 = x119 + y119; s120 = x120 + y120; s121 = x121 + y121; s122 = x122 + y122; s123 = x123 + y123; s124 = x124 + y124; s125 = x125 + y125; s126 = x126 + y126; s127 = x127 + y127; // initial generate conditions g0 = s0>255; g1 = s1>255; g2 = s2>255; g3 = s3>255; g4 = s4>255; g5 = s5>255; g6 = s6>255; g7 = s7>255; g8 = s8>255; g9 = s9>255; g10 = s10>255; g11 = s11>255; g12 = s12>255; g13 = s13>255; g14 = s14>255; g15 = s15>255; g16 = s16>255; g17 = s17>255; g18 = s18>255; g19 = s19>255; g20 = s20>255; g21 = s21>255; g22 = s22>255; g23 = s23>255; g24 = s24>255; g25 = s25>255; g26 = s26>255; g27 = s27>255; g28 = s28>255; g29 = s29>255; g30 = s30>255; g31 = s31>255; g32 = s32>255; g33 = s33>255; g34 = s34>255; g35 = s35>255; g36 = s36>255; g37 = s37>255; g38 = s38>255; g39 = s39>255; g40 = s40>255; g41 = s41>255; g42 = s42>255; g43 = s43>255; g44 = s44>255; g45 = s45>255; g46 = s46>255; g47 = s47>255; g48 = s48>255; g49 = s49>255; g50 = s50>255; g51 = s51>255; g52 = s52>255; g53 = s53>255; g54 = s54>255; g55 = s55>255; g56 = s56>255; g57 = s57>255; g58 = s58>255; g59 = s59>255; g60 = s60>255; g61 = s61>255; g62 = s62>255; g63 = s63>255; g64 = s64>255; g65 = s65>255; g66 = s66>255; g67 = s67>255; g68 = s68>255; g69 = s69>255; g70 = s70>255; g71 = s71>255; g72 = s72>255; g73 = s73>255; g74 = s74>255; g75 = s75>255; g76 = s76>255; g77 = s77>255; g78 = s78>255; g79 = s79>255; g80 = s80>255; g81 = s81>255; g82 = s82>255; g83 = s83>255; g84 = s84>255; g85 = s85>255; g86 = s86>255; g87 = s87>255; g88 = s88>255; g89 = s89>255; g90 = s90>255; g91 = s91>255; g92 = s92>255; g93 = s93>255; g94 = s94>255; g95 = s95>255; g96 = s96>255; g97 = s97>255; g98 = s98>255; g99 = s99>255; g100 = s100>255; g101 = s101>255; g102 = s102>255; g103 = s103>255; g104 = s104>255; g105 = s105>255; g106 = s106>255; g107 = s107>255; g108 = s108>255; g109 = s109>255; g110 = s110>255; g111 = s111>255; g112 = s112>255; g113 = s113>255; g114 = s114>255; g115 = s115>255; g116 = s116>255; g117 = s117>255; g118 = s118>255; g119 = s119>255; g120 = s120>255; g121 = s121>255; g122 = s122>255; g123 = s123>255; g124 = s124>255; g125 = s125>255; g126 = s126>255; g127 = s127>255; // initial propagate conditions p0 = s0==255; p1 = s1==255; p2 = s2==255; p3 = s3==255; p4 = s4==255; p5 = s5==255; p6 = s6==255; p7 = s7==255; p8 = s8==255; p9 = s9==255; p10 = s10==255; p11 = s11==255; p12 = s12==255; p13 = s13==255; p14 = s14==255; p15 = s15==255; p16 = s16==255; p17 = s17==255; p18 = s18==255; p19 = s19==255; p20 = s20==255; p21 = s21==255; p22 = s22==255; p23 = s23==255; p24 = s24==255; p25 = s25==255; p26 = s26==255; p27 = s27==255; p28 = s28==255; p29 = s29==255; p30 = s30==255; p31 = s31==255; p32 = s32==255; p33 = s33==255; p34 = s34==255; p35 = s35==255; p36 = s36==255; p37 = s37==255; p38 = s38==255; p39 = s39==255; p40 = s40==255; p41 = s41==255; p42 = s42==255; p43 = s43==255; p44 = s44==255; p45 = s45==255; p46 = s46==255; p47 = s47==255; p48 = s48==255; p49 = s49==255; p50 = s50==255; p51 = s51==255; p52 = s52==255; p53 = s53==255; p54 = s54==255; p55 = s55==255; p56 = s56==255; p57 = s57==255; p58 = s58==255; p59 = s59==255; p60 = s60==255; p61 = s61==255; p62 = s62==255; p63 = s63==255; p64 = s64==255; p65 = s65==255; p66 = s66==255; p67 = s67==255; p68 = s68==255; p69 = s69==255; p70 = s70==255; p71 = s71==255; p72 = s72==255; p73 = s73==255; p74 = s74==255; p75 = s75==255; p76 = s76==255; p77 = s77==255; p78 = s78==255; p79 = s79==255; p80 = s80==255; p81 = s81==255; p82 = s82==255; p83 = s83==255; p84 = s84==255; p85 = s85==255; p86 = s86==255; p87 = s87==255; p88 = s88==255; p89 = s89==255; p90 = s90==255; p91 = s91==255; p92 = s92==255; p93 = s93==255; p94 = s94==255; p95 = s95==255; p96 = s96==255; p97 = s97==255; p98 = s98==255; p99 = s99==255; p100 = s100==255; p101 = s101==255; p102 = s102==255; p103 = s103==255; p104 = s104==255; p105 = s105==255; p106 = s106==255; p107 = s107==255; p108 = s108==255; p109 = s109==255; p110 = s110==255; p111 = s111==255; p112 = s112==255; p113 = s113==255; p114 = s114==255; p115 = s115==255; p116 = s116==255; p117 = s117==255; p118 = s118==255; p119 = s119==255; p120 = s120==255; p121 = s121==255; p122 = s122==255; p123 = s123==255; p124 = s124==255; p125 = s125==255; p126 = s126==255; p127 = s127==255; // carry propagation prefix tree // up-level 1 g1 = g0 & p1 | g1; p1 = p1 & p0; g3 = g2 & p3 | g3; p3 = p3 & p2; g5 = g4 & p5 | g5; p5 = p5 & p4; g7 = g6 & p7 | g7; p7 = p7 & p6; g9 = g8 & p9 | g9; p9 = p9 & p8; g11 = g10 & p11 | g11; p11 = p11 & p10; g13 = g12 & p13 | g13; p13 = p13 & p12; g15 = g14 & p15 | g15; p15 = p15 & p14; g17 = g16 & p17 | g17; p17 = p17 & p16; g19 = g18 & p19 | g19; p19 = p19 & p18; g21 = g20 & p21 | g21; p21 = p21 & p20; g23 = g22 & p23 | g23; p23 = p23 & p22; g25 = g24 & p25 | g25; p25 = p25 & p24; g27 = g26 & p27 | g27; p27 = p27 & p26; g29 = g28 & p29 | g29; p29 = p29 & p28; g31 = g30 & p31 | g31; p31 = p31 & p30; g33 = g32 & p33 | g33; p33 = p33 & p32; g35 = g34 & p35 | g35; p35 = p35 & p34; g37 = g36 & p37 | g37; p37 = p37 & p36; g39 = g38 & p39 | g39; p39 = p39 & p38; g41 = g40 & p41 | g41; p41 = p41 & p40; g43 = g42 & p43 | g43; p43 = p43 & p42; g45 = g44 & p45 | g45; p45 = p45 & p44; g47 = g46 & p47 | g47; p47 = p47 & p46; g49 = g48 & p49 | g49; p49 = p49 & p48; g51 = g50 & p51 | g51; p51 = p51 & p50; g53 = g52 & p53 | g53; p53 = p53 & p52; g55 = g54 & p55 | g55; p55 = p55 & p54; g57 = g56 & p57 | g57; p57 = p57 & p56; g59 = g58 & p59 | g59; p59 = p59 & p58; g61 = g60 & p61 | g61; p61 = p61 & p60; g63 = g62 & p63 | g63; p63 = p63 & p62; g65 = g64 & p65 | g65; p65 = p65 & p64; g67 = g66 & p67 | g67; p67 = p67 & p66; g69 = g68 & p69 | g69; p69 = p69 & p68; g71 = g70 & p71 | g71; p71 = p71 & p70; g73 = g72 & p73 | g73; p73 = p73 & p72; g75 = g74 & p75 | g75; p75 = p75 & p74; g77 = g76 & p77 | g77; p77 = p77 & p76; g79 = g78 & p79 | g79; p79 = p79 & p78; g81 = g80 & p81 | g81; p81 = p81 & p80; g83 = g82 & p83 | g83; p83 = p83 & p82; g85 = g84 & p85 | g85; p85 = p85 & p84; g87 = g86 & p87 | g87; p87 = p87 & p86; g89 = g88 & p89 | g89; p89 = p89 & p88; g91 = g90 & p91 | g91; p91 = p91 & p90; g93 = g92 & p93 | g93; p93 = p93 & p92; g95 = g94 & p95 | g95; p95 = p95 & p94; g97 = g96 & p97 | g97; p97 = p97 & p96; g99 = g98 & p99 | g99; p99 = p99 & p98; g101 = g100 & p101 | g101; p101 = p101 & p100; g103 = g102 & p103 | g103; p103 = p103 & p102; g105 = g104 & p105 | g105; p105 = p105 & p104; g107 = g106 & p107 | g107; p107 = p107 & p106; g109 = g108 & p109 | g109; p109 = p109 & p108; g111 = g110 & p111 | g111; p111 = p111 & p110; g113 = g112 & p113 | g113; p113 = p113 & p112; g115 = g114 & p115 | g115; p115 = p115 & p114; g117 = g116 & p117 | g117; p117 = p117 & p116; g119 = g118 & p119 | g119; p119 = p119 & p118; g121 = g120 & p121 | g121; p121 = p121 & p120; g123 = g122 & p123 | g123; p123 = p123 & p122; g125 = g124 & p125 | g125; p125 = p125 & p124; g127 = g126 & p127 | g127; p127 = p127 & p126; // up-level 2 g3 = g1 & p3 | g3; p3 = p3 & p1; g7 = g5 & p7 | g7; p7 = p7 & p5; g11 = g9 & p11 | g11; p11 = p11 & p9; g15 = g13 & p15 | g15; p15 = p15 & p13; g19 = g17 & p19 | g19; p19 = p19 & p17; g23 = g21 & p23 | g23; p23 = p23 & p21; g27 = g25 & p27 | g27; p27 = p27 & p25; g31 = g29 & p31 | g31; p31 = p31 & p29; g35 = g33 & p35 | g35; p35 = p35 & p33; g39 = g37 & p39 | g39; p39 = p39 & p37; g43 = g41 & p43 | g43; p43 = p43 & p41; g47 = g45 & p47 | g47; p47 = p47 & p45; g51 = g49 & p51 | g51; p51 = p51 & p49; g55 = g53 & p55 | g55; p55 = p55 & p53; g59 = g57 & p59 | g59; p59 = p59 & p57; g63 = g61 & p63 | g63; p63 = p63 & p61; g67 = g65 & p67 | g67; p67 = p67 & p65; g71 = g69 & p71 | g71; p71 = p71 & p69; g75 = g73 & p75 | g75; p75 = p75 & p73; g79 = g77 & p79 | g79; p79 = p79 & p77; g83 = g81 & p83 | g83; p83 = p83 & p81; g87 = g85 & p87 | g87; p87 = p87 & p85; g91 = g89 & p91 | g91; p91 = p91 & p89; g95 = g93 & p95 | g95; p95 = p95 & p93; g99 = g97 & p99 | g99; p99 = p99 & p97; g103 = g101 & p103 | g103; p103 = p103 & p101; g107 = g105 & p107 | g107; p107 = p107 & p105; g111 = g109 & p111 | g111; p111 = p111 & p109; g115 = g113 & p115 | g115; p115 = p115 & p113; g119 = g117 & p119 | g119; p119 = p119 & p117; g123 = g121 & p123 | g123; p123 = p123 & p121; g127 = g125 & p127 | g127; p127 = p127 & p125; // up-level 3 g7 = g3 & p7 | g7; p7 = p7 & p3; g15 = g11 & p15 | g15; p15 = p15 & p11; g23 = g19 & p23 | g23; p23 = p23 & p19; g31 = g27 & p31 | g31; p31 = p31 & p27; g39 = g35 & p39 | g39; p39 = p39 & p35; g47 = g43 & p47 | g47; p47 = p47 & p43; g55 = g51 & p55 | g55; p55 = p55 & p51; g63 = g59 & p63 | g63; p63 = p63 & p59; g71 = g67 & p71 | g71; p71 = p71 & p67; g79 = g75 & p79 | g79; p79 = p79 & p75; g87 = g83 & p87 | g87; p87 = p87 & p83; g95 = g91 & p95 | g95; p95 = p95 & p91; g103 = g99 & p103 | g103; p103 = p103 & p99; g111 = g107 & p111 | g111; p111 = p111 & p107; g119 = g115 & p119 | g119; p119 = p119 & p115; g127 = g123 & p127 | g127; p127 = p127 & p123; // up-level 4 g15 = g7 & p15 | g15; p15 = p15 & p7; g31 = g23 & p31 | g31; p31 = p31 & p23; g47 = g39 & p47 | g47; p47 = p47 & p39; g63 = g55 & p63 | g63; p63 = p63 & p55; g79 = g71 & p79 | g79; p79 = p79 & p71; g95 = g87 & p95 | g95; p95 = p95 & p87; g111 = g103 & p111 | g111; p111 = p111 & p103; g127 = g119 & p127 | g127; p127 = p127 & p119; // up-level 5 g31 = g15 & p31 | g31; p31 = p31 & p15; g63 = g47 & p63 | g63; p63 = p63 & p47; g95 = g79 & p95 | g95; p95 = p95 & p79; g127 = g111 & p127 | g127; p127 = p127 & p111; // up-level 6 g63 = g31 & p63 | g63; p63 = p63 & p31; g127 = g95 & p127 | g127; p127 = p127 & p95; // up-level 7 g127 = g63 & p127 | g127; p127 = p127 & p63; // down-level 9 // down-level 10 g95 = g63 & p95 | g95; p95 = p95 & p63; // down-level 11 g47 = g31 & p47 | g47; p47 = p47 & p31; g79 = g63 & p79 | g79; p79 = p79 & p63; g111 = g95 & p111 | g111; p111 = p111 & p95; // down-level 12 g23 = g15 & p23 | g23; p23 = p23 & p15; g39 = g31 & p39 | g39; p39 = p39 & p31; g55 = g47 & p55 | g55; p55 = p55 & p47; g71 = g63 & p71 | g71; p71 = p71 & p63; g87 = g79 & p87 | g87; p87 = p87 & p79; g103 = g95 & p103 | g103; p103 = p103 & p95; g119 = g111 & p119 | g119; p119 = p119 & p111; // down-level 13 g11 = g7 & p11 | g11; p11 = p11 & p7; g19 = g15 & p19 | g19; p19 = p19 & p15; g27 = g23 & p27 | g27; p27 = p27 & p23; g35 = g31 & p35 | g35; p35 = p35 & p31; g43 = g39 & p43 | g43; p43 = p43 & p39; g51 = g47 & p51 | g51; p51 = p51 & p47; g59 = g55 & p59 | g59; p59 = p59 & p55; g67 = g63 & p67 | g67; p67 = p67 & p63; g75 = g71 & p75 | g75; p75 = p75 & p71; g83 = g79 & p83 | g83; p83 = p83 & p79; g91 = g87 & p91 | g91; p91 = p91 & p87; g99 = g95 & p99 | g99; p99 = p99 & p95; g107 = g103 & p107 | g107; p107 = p107 & p103; g115 = g111 & p115 | g115; p115 = p115 & p111; g123 = g119 & p123 | g123; p123 = p123 & p119; // down-level 14 g5 = g3 & p5 | g5; p5 = p5 & p3; g9 = g7 & p9 | g9; p9 = p9 & p7; g13 = g11 & p13 | g13; p13 = p13 & p11; g17 = g15 & p17 | g17; p17 = p17 & p15; g21 = g19 & p21 | g21; p21 = p21 & p19; g25 = g23 & p25 | g25; p25 = p25 & p23; g29 = g27 & p29 | g29; p29 = p29 & p27; g33 = g31 & p33 | g33; p33 = p33 & p31; g37 = g35 & p37 | g37; p37 = p37 & p35; g41 = g39 & p41 | g41; p41 = p41 & p39; g45 = g43 & p45 | g45; p45 = p45 & p43; g49 = g47 & p49 | g49; p49 = p49 & p47; g53 = g51 & p53 | g53; p53 = p53 & p51; g57 = g55 & p57 | g57; p57 = p57 & p55; g61 = g59 & p61 | g61; p61 = p61 & p59; g65 = g63 & p65 | g65; p65 = p65 & p63; g69 = g67 & p69 | g69; p69 = p69 & p67; g73 = g71 & p73 | g73; p73 = p73 & p71; g77 = g75 & p77 | g77; p77 = p77 & p75; g81 = g79 & p81 | g81; p81 = p81 & p79; g85 = g83 & p85 | g85; p85 = p85 & p83; g89 = g87 & p89 | g89; p89 = p89 & p87; g93 = g91 & p93 | g93; p93 = p93 & p91; g97 = g95 & p97 | g97; p97 = p97 & p95; g101 = g99 & p101 | g101; p101 = p101 & p99; g105 = g103 & p105 | g105; p105 = p105 & p103; g109 = g107 & p109 | g109; p109 = p109 & p107; g113 = g111 & p113 | g113; p113 = p113 & p111; g117 = g115 & p117 | g117; p117 = p117 & p115; g121 = g119 & p121 | g121; p121 = p121 & p119; g125 = g123 & p125 | g125; p125 = p125 & p123; // down-level 15 g2 = g1 & p2 | g2; p2 = p2 & p1; g4 = g3 & p4 | g4; p4 = p4 & p3; g6 = g5 & p6 | g6; p6 = p6 & p5; g8 = g7 & p8 | g8; p8 = p8 & p7; g10 = g9 & p10 | g10; p10 = p10 & p9; g12 = g11 & p12 | g12; p12 = p12 & p11; g14 = g13 & p14 | g14; p14 = p14 & p13; g16 = g15 & p16 | g16; p16 = p16 & p15; g18 = g17 & p18 | g18; p18 = p18 & p17; g20 = g19 & p20 | g20; p20 = p20 & p19; g22 = g21 & p22 | g22; p22 = p22 & p21; g24 = g23 & p24 | g24; p24 = p24 & p23; g26 = g25 & p26 | g26; p26 = p26 & p25; g28 = g27 & p28 | g28; p28 = p28 & p27; g30 = g29 & p30 | g30; p30 = p30 & p29; g32 = g31 & p32 | g32; p32 = p32 & p31; g34 = g33 & p34 | g34; p34 = p34 & p33; g36 = g35 & p36 | g36; p36 = p36 & p35; g38 = g37 & p38 | g38; p38 = p38 & p37; g40 = g39 & p40 | g40; p40 = p40 & p39; g42 = g41 & p42 | g42; p42 = p42 & p41; g44 = g43 & p44 | g44; p44 = p44 & p43; g46 = g45 & p46 | g46; p46 = p46 & p45; g48 = g47 & p48 | g48; p48 = p48 & p47; g50 = g49 & p50 | g50; p50 = p50 & p49; g52 = g51 & p52 | g52; p52 = p52 & p51; g54 = g53 & p54 | g54; p54 = p54 & p53; g56 = g55 & p56 | g56; p56 = p56 & p55; g58 = g57 & p58 | g58; p58 = p58 & p57; g60 = g59 & p60 | g60; p60 = p60 & p59; g62 = g61 & p62 | g62; p62 = p62 & p61; g64 = g63 & p64 | g64; p64 = p64 & p63; g66 = g65 & p66 | g66; p66 = p66 & p65; g68 = g67 & p68 | g68; p68 = p68 & p67; g70 = g69 & p70 | g70; p70 = p70 & p69; g72 = g71 & p72 | g72; p72 = p72 & p71; g74 = g73 & p74 | g74; p74 = p74 & p73; g76 = g75 & p76 | g76; p76 = p76 & p75; g78 = g77 & p78 | g78; p78 = p78 & p77; g80 = g79 & p80 | g80; p80 = p80 & p79; g82 = g81 & p82 | g82; p82 = p82 & p81; g84 = g83 & p84 | g84; p84 = p84 & p83; g86 = g85 & p86 | g86; p86 = p86 & p85; g88 = g87 & p88 | g88; p88 = p88 & p87; g90 = g89 & p90 | g90; p90 = p90 & p89; g92 = g91 & p92 | g92; p92 = p92 & p91; g94 = g93 & p94 | g94; p94 = p94 & p93; g96 = g95 & p96 | g96; p96 = p96 & p95; g98 = g97 & p98 | g98; p98 = p98 & p97; g100 = g99 & p100 | g100; p100 = p100 & p99; g102 = g101 & p102 | g102; p102 = p102 & p101; g104 = g103 & p104 | g104; p104 = p104 & p103; g106 = g105 & p106 | g106; p106 = p106 & p105; g108 = g107 & p108 | g108; p108 = p108 & p107; g110 = g109 & p110 | g110; p110 = p110 & p109; g112 = g111 & p112 | g112; p112 = p112 & p111; g114 = g113 & p114 | g114; p114 = p114 & p113; g116 = g115 & p116 | g116; p116 = p116 & p115; g118 = g117 & p118 | g118; p118 = p118 & p117; g120 = g119 & p120 | g120; p120 = p120 & p119; g122 = g121 & p122 | g122; p122 = p122 & p121; g124 = g123 & p124 | g124; p124 = p124 & p123; g126 = g125 & p126 | g126; p126 = p126 & p125; // compute final sum digits s[0] = s0 % 256; s[1] = (s1+(g0?1:0)) % 256; s[2] = (s2+(g1?1:0)) % 256; s[3] = (s3+(g2?1:0)) % 256; s[4] = (s4+(g3?1:0)) % 256; s[5] = (s5+(g4?1:0)) % 256; s[6] = (s6+(g5?1:0)) % 256; s[7] = (s7+(g6?1:0)) % 256; s[8] = (s8+(g7?1:0)) % 256; s[9] = (s9+(g8?1:0)) % 256; s[10] = (s10+(g9?1:0)) % 256; s[11] = (s11+(g10?1:0)) % 256; s[12] = (s12+(g11?1:0)) % 256; s[13] = (s13+(g12?1:0)) % 256; s[14] = (s14+(g13?1:0)) % 256; s[15] = (s15+(g14?1:0)) % 256; s[16] = (s16+(g15?1:0)) % 256; s[17] = (s17+(g16?1:0)) % 256; s[18] = (s18+(g17?1:0)) % 256; s[19] = (s19+(g18?1:0)) % 256; s[20] = (s20+(g19?1:0)) % 256; s[21] = (s21+(g20?1:0)) % 256; s[22] = (s22+(g21?1:0)) % 256; s[23] = (s23+(g22?1:0)) % 256; s[24] = (s24+(g23?1:0)) % 256; s[25] = (s25+(g24?1:0)) % 256; s[26] = (s26+(g25?1:0)) % 256; s[27] = (s27+(g26?1:0)) % 256; s[28] = (s28+(g27?1:0)) % 256; s[29] = (s29+(g28?1:0)) % 256; s[30] = (s30+(g29?1:0)) % 256; s[31] = (s31+(g30?1:0)) % 256; s[32] = (s32+(g31?1:0)) % 256; s[33] = (s33+(g32?1:0)) % 256; s[34] = (s34+(g33?1:0)) % 256; s[35] = (s35+(g34?1:0)) % 256; s[36] = (s36+(g35?1:0)) % 256; s[37] = (s37+(g36?1:0)) % 256; s[38] = (s38+(g37?1:0)) % 256; s[39] = (s39+(g38?1:0)) % 256; s[40] = (s40+(g39?1:0)) % 256; s[41] = (s41+(g40?1:0)) % 256; s[42] = (s42+(g41?1:0)) % 256; s[43] = (s43+(g42?1:0)) % 256; s[44] = (s44+(g43?1:0)) % 256; s[45] = (s45+(g44?1:0)) % 256; s[46] = (s46+(g45?1:0)) % 256; s[47] = (s47+(g46?1:0)) % 256; s[48] = (s48+(g47?1:0)) % 256; s[49] = (s49+(g48?1:0)) % 256; s[50] = (s50+(g49?1:0)) % 256; s[51] = (s51+(g50?1:0)) % 256; s[52] = (s52+(g51?1:0)) % 256; s[53] = (s53+(g52?1:0)) % 256; s[54] = (s54+(g53?1:0)) % 256; s[55] = (s55+(g54?1:0)) % 256; s[56] = (s56+(g55?1:0)) % 256; s[57] = (s57+(g56?1:0)) % 256; s[58] = (s58+(g57?1:0)) % 256; s[59] = (s59+(g58?1:0)) % 256; s[60] = (s60+(g59?1:0)) % 256; s[61] = (s61+(g60?1:0)) % 256; s[62] = (s62+(g61?1:0)) % 256; s[63] = (s63+(g62?1:0)) % 256; s[64] = (s64+(g63?1:0)) % 256; s[65] = (s65+(g64?1:0)) % 256; s[66] = (s66+(g65?1:0)) % 256; s[67] = (s67+(g66?1:0)) % 256; s[68] = (s68+(g67?1:0)) % 256; s[69] = (s69+(g68?1:0)) % 256; s[70] = (s70+(g69?1:0)) % 256; s[71] = (s71+(g70?1:0)) % 256; s[72] = (s72+(g71?1:0)) % 256; s[73] = (s73+(g72?1:0)) % 256; s[74] = (s74+(g73?1:0)) % 256; s[75] = (s75+(g74?1:0)) % 256; s[76] = (s76+(g75?1:0)) % 256; s[77] = (s77+(g76?1:0)) % 256; s[78] = (s78+(g77?1:0)) % 256; s[79] = (s79+(g78?1:0)) % 256; s[80] = (s80+(g79?1:0)) % 256; s[81] = (s81+(g80?1:0)) % 256; s[82] = (s82+(g81?1:0)) % 256; s[83] = (s83+(g82?1:0)) % 256; s[84] = (s84+(g83?1:0)) % 256; s[85] = (s85+(g84?1:0)) % 256; s[86] = (s86+(g85?1:0)) % 256; s[87] = (s87+(g86?1:0)) % 256; s[88] = (s88+(g87?1:0)) % 256; s[89] = (s89+(g88?1:0)) % 256; s[90] = (s90+(g89?1:0)) % 256; s[91] = (s91+(g90?1:0)) % 256; s[92] = (s92+(g91?1:0)) % 256; s[93] = (s93+(g92?1:0)) % 256; s[94] = (s94+(g93?1:0)) % 256; s[95] = (s95+(g94?1:0)) % 256; s[96] = (s96+(g95?1:0)) % 256; s[97] = (s97+(g96?1:0)) % 256; s[98] = (s98+(g97?1:0)) % 256; s[99] = (s99+(g98?1:0)) % 256; s[100] = (s100+(g99?1:0)) % 256; s[101] = (s101+(g100?1:0)) % 256; s[102] = (s102+(g101?1:0)) % 256; s[103] = (s103+(g102?1:0)) % 256; s[104] = (s104+(g103?1:0)) % 256; s[105] = (s105+(g104?1:0)) % 256; s[106] = (s106+(g105?1:0)) % 256; s[107] = (s107+(g106?1:0)) % 256; s[108] = (s108+(g107?1:0)) % 256; s[109] = (s109+(g108?1:0)) % 256; s[110] = (s110+(g109?1:0)) % 256; s[111] = (s111+(g110?1:0)) % 256; s[112] = (s112+(g111?1:0)) % 256; s[113] = (s113+(g112?1:0)) % 256; s[114] = (s114+(g113?1:0)) % 256; s[115] = (s115+(g114?1:0)) % 256; s[116] = (s116+(g115?1:0)) % 256; s[117] = (s117+(g116?1:0)) % 256; s[118] = (s118+(g117?1:0)) % 256; s[119] = (s119+(g118?1:0)) % 256; s[120] = (s120+(g119?1:0)) % 256; s[121] = (s121+(g120?1:0)) % 256; s[122] = (s122+(g121?1:0)) % 256; s[123] = (s123+(g122?1:0)) % 256; s[124] = (s124+(g123?1:0)) % 256; s[125] = (s125+(g124?1:0)) % 256; s[126] = (s126+(g125?1:0)) % 256; s[127] = (s127+(g126?1:0)) % 256; s[128] = (g127?1:0); }