ParagonIE_Sodium_Core_Curve25519::sc_muladd() │ public static │ WP 1.0

Calculates (ab + c) mod l where l = 2^252 + 27742317777372353535851937790883648493

{} Это метод класса: ParagonIE_Sodium_Core_Curve25519{}

Хуков нет.

Возвращает

`Строку`.

Использование

`\$result = ParagonIE_Sodium_Core_Curve25519::sc_muladd( \$a, \$b, \$c );`
\$a(строка) (обязательный)
-
\$b(строка) (обязательный)
-
\$c(строка) (обязательный)
-

```public static function sc_muladd(\$a, \$b, \$c)
{
\$a0 = 2097151 & self::load_3(self::substr(\$a, 0, 3));
\$a1 = 2097151 & (self::load_4(self::substr(\$a, 2, 4)) >> 5);
\$a2 = 2097151 & (self::load_3(self::substr(\$a, 5, 3)) >> 2);
\$a3 = 2097151 & (self::load_4(self::substr(\$a, 7, 4)) >> 7);
\$a4 = 2097151 & (self::load_4(self::substr(\$a, 10, 4)) >> 4);
\$a5 = 2097151 & (self::load_3(self::substr(\$a, 13, 3)) >> 1);
\$a6 = 2097151 & (self::load_4(self::substr(\$a, 15, 4)) >> 6);
\$a7 = 2097151 & (self::load_3(self::substr(\$a, 18, 3)) >> 3);
\$a8 = 2097151 & self::load_3(self::substr(\$a, 21, 3));
\$a9 = 2097151 & (self::load_4(self::substr(\$a, 23, 4)) >> 5);
\$a10 = 2097151 & (self::load_3(self::substr(\$a, 26, 3)) >> 2);
\$a11 = (self::load_4(self::substr(\$a, 28, 4)) >> 7);

\$b0 = 2097151 & self::load_3(self::substr(\$b, 0, 3));
\$b1 = 2097151 & (self::load_4(self::substr(\$b, 2, 4)) >> 5);
\$b2 = 2097151 & (self::load_3(self::substr(\$b, 5, 3)) >> 2);
\$b3 = 2097151 & (self::load_4(self::substr(\$b, 7, 4)) >> 7);
\$b4 = 2097151 & (self::load_4(self::substr(\$b, 10, 4)) >> 4);
\$b5 = 2097151 & (self::load_3(self::substr(\$b, 13, 3)) >> 1);
\$b6 = 2097151 & (self::load_4(self::substr(\$b, 15, 4)) >> 6);
\$b7 = 2097151 & (self::load_3(self::substr(\$b, 18, 3)) >> 3);
\$b8 = 2097151 & self::load_3(self::substr(\$b, 21, 3));
\$b9 = 2097151 & (self::load_4(self::substr(\$b, 23, 4)) >> 5);
\$b10 = 2097151 & (self::load_3(self::substr(\$b, 26, 3)) >> 2);
\$b11 = (self::load_4(self::substr(\$b, 28, 4)) >> 7);

\$c0 = 2097151 & self::load_3(self::substr(\$c, 0, 3));
\$c1 = 2097151 & (self::load_4(self::substr(\$c, 2, 4)) >> 5);
\$c2 = 2097151 & (self::load_3(self::substr(\$c, 5, 3)) >> 2);
\$c3 = 2097151 & (self::load_4(self::substr(\$c, 7, 4)) >> 7);
\$c4 = 2097151 & (self::load_4(self::substr(\$c, 10, 4)) >> 4);
\$c5 = 2097151 & (self::load_3(self::substr(\$c, 13, 3)) >> 1);
\$c6 = 2097151 & (self::load_4(self::substr(\$c, 15, 4)) >> 6);
\$c7 = 2097151 & (self::load_3(self::substr(\$c, 18, 3)) >> 3);
\$c8 = 2097151 & self::load_3(self::substr(\$c, 21, 3));
\$c9 = 2097151 & (self::load_4(self::substr(\$c, 23, 4)) >> 5);
\$c10 = 2097151 & (self::load_3(self::substr(\$c, 26, 3)) >> 2);
\$c11 = (self::load_4(self::substr(\$c, 28, 4)) >> 7);

/* Can't really avoid the pyramid here: */
\$s0 = \$c0 + self::mul(\$a0, \$b0, 24);
\$s1 = \$c1 + self::mul(\$a0, \$b1, 24) + self::mul(\$a1, \$b0, 24);
\$s2 = \$c2 + self::mul(\$a0, \$b2, 24) + self::mul(\$a1, \$b1, 24) + self::mul(\$a2, \$b0, 24);
\$s3 = \$c3 + self::mul(\$a0, \$b3, 24) + self::mul(\$a1, \$b2, 24) + self::mul(\$a2, \$b1, 24) + self::mul(\$a3, \$b0, 24);
\$s4 = \$c4 + self::mul(\$a0, \$b4, 24) + self::mul(\$a1, \$b3, 24) + self::mul(\$a2, \$b2, 24) + self::mul(\$a3, \$b1, 24) +
self::mul(\$a4, \$b0, 24);
\$s5 = \$c5 + self::mul(\$a0, \$b5, 24) + self::mul(\$a1, \$b4, 24) + self::mul(\$a2, \$b3, 24) + self::mul(\$a3, \$b2, 24) +
self::mul(\$a4, \$b1, 24) + self::mul(\$a5, \$b0, 24);
\$s6 = \$c6 + self::mul(\$a0, \$b6, 24) + self::mul(\$a1, \$b5, 24) + self::mul(\$a2, \$b4, 24) + self::mul(\$a3, \$b3, 24) +
self::mul(\$a4, \$b2, 24) + self::mul(\$a5, \$b1, 24) + self::mul(\$a6, \$b0, 24);
\$s7 = \$c7 + self::mul(\$a0, \$b7, 24) + self::mul(\$a1, \$b6, 24) + self::mul(\$a2, \$b5, 24) + self::mul(\$a3, \$b4, 24) +
self::mul(\$a4, \$b3, 24) + self::mul(\$a5, \$b2, 24) + self::mul(\$a6, \$b1, 24) + self::mul(\$a7, \$b0, 24);
\$s8 = \$c8 + self::mul(\$a0, \$b8, 24) + self::mul(\$a1, \$b7, 24) + self::mul(\$a2, \$b6, 24) + self::mul(\$a3, \$b5, 24) +
self::mul(\$a4, \$b4, 24) + self::mul(\$a5, \$b3, 24) + self::mul(\$a6, \$b2, 24) + self::mul(\$a7, \$b1, 24) +
self::mul(\$a8, \$b0, 24);
\$s9 = \$c9 + self::mul(\$a0, \$b9, 24) + self::mul(\$a1, \$b8, 24) + self::mul(\$a2, \$b7, 24) + self::mul(\$a3, \$b6, 24) +
self::mul(\$a4, \$b5, 24) + self::mul(\$a5, \$b4, 24) + self::mul(\$a6, \$b3, 24) + self::mul(\$a7, \$b2, 24) +
self::mul(\$a8, \$b1, 24) + self::mul(\$a9, \$b0, 24);
\$s10 = \$c10 + self::mul(\$a0, \$b10, 24) + self::mul(\$a1, \$b9, 24) + self::mul(\$a2, \$b8, 24) + self::mul(\$a3, \$b7, 24) +
self::mul(\$a4, \$b6, 24) + self::mul(\$a5, \$b5, 24) + self::mul(\$a6, \$b4, 24) + self::mul(\$a7, \$b3, 24) +
self::mul(\$a8, \$b2, 24) + self::mul(\$a9, \$b1, 24) + self::mul(\$a10, \$b0, 24);
\$s11 = \$c11 + self::mul(\$a0, \$b11, 24) + self::mul(\$a1, \$b10, 24) + self::mul(\$a2, \$b9, 24) + self::mul(\$a3, \$b8, 24) +
self::mul(\$a4, \$b7, 24) + self::mul(\$a5, \$b6, 24) + self::mul(\$a6, \$b5, 24) + self::mul(\$a7, \$b4, 24) +
self::mul(\$a8, \$b3, 24) + self::mul(\$a9, \$b2, 24) + self::mul(\$a10, \$b1, 24) + self::mul(\$a11, \$b0, 24);
\$s12 = self::mul(\$a1, \$b11, 24) + self::mul(\$a2, \$b10, 24) + self::mul(\$a3, \$b9, 24) + self::mul(\$a4, \$b8, 24) +
self::mul(\$a5, \$b7, 24) + self::mul(\$a6, \$b6, 24) + self::mul(\$a7, \$b5, 24) + self::mul(\$a8, \$b4, 24) +
self::mul(\$a9, \$b3, 24) + self::mul(\$a10, \$b2, 24) + self::mul(\$a11, \$b1, 24);
\$s13 = self::mul(\$a2, \$b11, 24) + self::mul(\$a3, \$b10, 24) + self::mul(\$a4, \$b9, 24) + self::mul(\$a5, \$b8, 24) +
self::mul(\$a6, \$b7, 24) + self::mul(\$a7, \$b6, 24) + self::mul(\$a8, \$b5, 24) + self::mul(\$a9, \$b4, 24) +
self::mul(\$a10, \$b3, 24) + self::mul(\$a11, \$b2, 24);
\$s14 = self::mul(\$a3, \$b11, 24) + self::mul(\$a4, \$b10, 24) + self::mul(\$a5, \$b9, 24) + self::mul(\$a6, \$b8, 24) +
self::mul(\$a7, \$b7, 24) + self::mul(\$a8, \$b6, 24) + self::mul(\$a9, \$b5, 24) + self::mul(\$a10, \$b4, 24) +
self::mul(\$a11, \$b3, 24);
\$s15 = self::mul(\$a4, \$b11, 24) + self::mul(\$a5, \$b10, 24) + self::mul(\$a6, \$b9, 24) + self::mul(\$a7, \$b8, 24) +
self::mul(\$a8, \$b7, 24) + self::mul(\$a9, \$b6, 24) + self::mul(\$a10, \$b5, 24) + self::mul(\$a11, \$b4, 24);
\$s16 = self::mul(\$a5, \$b11, 24) + self::mul(\$a6, \$b10, 24) + self::mul(\$a7, \$b9, 24) + self::mul(\$a8, \$b8, 24) +
self::mul(\$a9, \$b7, 24) + self::mul(\$a10, \$b6, 24) + self::mul(\$a11, \$b5, 24);
\$s17 = self::mul(\$a6, \$b11, 24) + self::mul(\$a7, \$b10, 24) + self::mul(\$a8, \$b9, 24) + self::mul(\$a9, \$b8, 24) +
self::mul(\$a10, \$b7, 24) + self::mul(\$a11, \$b6, 24);
\$s18 = self::mul(\$a7, \$b11, 24) + self::mul(\$a8, \$b10, 24) + self::mul(\$a9, \$b9, 24) + self::mul(\$a10, \$b8, 24) +
self::mul(\$a11, \$b7, 24);
\$s19 = self::mul(\$a8, \$b11, 24) + self::mul(\$a9, \$b10, 24) + self::mul(\$a10, \$b9, 24) + self::mul(\$a11, \$b8, 24);
\$s20 = self::mul(\$a9, \$b11, 24) + self::mul(\$a10, \$b10, 24) + self::mul(\$a11, \$b9, 24);
\$s21 = self::mul(\$a10, \$b11, 24) + self::mul(\$a11, \$b10, 24);
\$s22 = self::mul(\$a11, \$b11, 24);
\$s23 = 0;

\$carry0 = (\$s0 + (1 << 20)) >> 21;
\$s1 += \$carry0;
\$s0 -= \$carry0 << 21;
\$carry2 = (\$s2 + (1 << 20)) >> 21;
\$s3 += \$carry2;
\$s2 -= \$carry2 << 21;
\$carry4 = (\$s4 + (1 << 20)) >> 21;
\$s5 += \$carry4;
\$s4 -= \$carry4 << 21;
\$carry6 = (\$s6 + (1 << 20)) >> 21;
\$s7 += \$carry6;
\$s6 -= \$carry6 << 21;
\$carry8 = (\$s8 + (1 << 20)) >> 21;
\$s9 += \$carry8;
\$s8 -= \$carry8 << 21;
\$carry10 = (\$s10 + (1 << 20)) >> 21;
\$s11 += \$carry10;
\$s10 -= \$carry10 << 21;
\$carry12 = (\$s12 + (1 << 20)) >> 21;
\$s13 += \$carry12;
\$s12 -= \$carry12 << 21;
\$carry14 = (\$s14 + (1 << 20)) >> 21;
\$s15 += \$carry14;
\$s14 -= \$carry14 << 21;
\$carry16 = (\$s16 + (1 << 20)) >> 21;
\$s17 += \$carry16;
\$s16 -= \$carry16 << 21;
\$carry18 = (\$s18 + (1 << 20)) >> 21;
\$s19 += \$carry18;
\$s18 -= \$carry18 << 21;
\$carry20 = (\$s20 + (1 << 20)) >> 21;
\$s21 += \$carry20;
\$s20 -= \$carry20 << 21;
\$carry22 = (\$s22 + (1 << 20)) >> 21;
\$s23 += \$carry22;
\$s22 -= \$carry22 << 21;

\$carry1 = (\$s1 + (1 << 20)) >> 21;
\$s2 += \$carry1;
\$s1 -= \$carry1 << 21;
\$carry3 = (\$s3 + (1 << 20)) >> 21;
\$s4 += \$carry3;
\$s3 -= \$carry3 << 21;
\$carry5 = (\$s5 + (1 << 20)) >> 21;
\$s6 += \$carry5;
\$s5 -= \$carry5 << 21;
\$carry7 = (\$s7 + (1 << 20)) >> 21;
\$s8 += \$carry7;
\$s7 -= \$carry7 << 21;
\$carry9 = (\$s9 + (1 << 20)) >> 21;
\$s10 += \$carry9;
\$s9 -= \$carry9 << 21;
\$carry11 = (\$s11 + (1 << 20)) >> 21;
\$s12 += \$carry11;
\$s11 -= \$carry11 << 21;
\$carry13 = (\$s13 + (1 << 20)) >> 21;
\$s14 += \$carry13;
\$s13 -= \$carry13 << 21;
\$carry15 = (\$s15 + (1 << 20)) >> 21;
\$s16 += \$carry15;
\$s15 -= \$carry15 << 21;
\$carry17 = (\$s17 + (1 << 20)) >> 21;
\$s18 += \$carry17;
\$s17 -= \$carry17 << 21;
\$carry19 = (\$s19 + (1 << 20)) >> 21;
\$s20 += \$carry19;
\$s19 -= \$carry19 << 21;
\$carry21 = (\$s21 + (1 << 20)) >> 21;
\$s22 += \$carry21;
\$s21 -= \$carry21 << 21;

\$s11 += self::mul(\$s23, 666643, 20);
\$s12 += self::mul(\$s23, 470296, 19);
\$s13 += self::mul(\$s23, 654183, 20);
\$s14 -= self::mul(\$s23, 997805, 20);
\$s15 += self::mul(\$s23, 136657, 18);
\$s16 -= self::mul(\$s23, 683901, 20);

\$s10 += self::mul(\$s22, 666643, 20);
\$s11 += self::mul(\$s22, 470296, 19);
\$s12 += self::mul(\$s22, 654183, 20);
\$s13 -= self::mul(\$s22, 997805, 20);
\$s14 += self::mul(\$s22, 136657, 18);
\$s15 -= self::mul(\$s22, 683901, 20);

\$s9  += self::mul(\$s21,  666643, 20);
\$s10 += self::mul(\$s21,  470296, 19);
\$s11 += self::mul(\$s21,  654183, 20);
\$s12 -= self::mul(\$s21,  997805, 20);
\$s13 += self::mul(\$s21,  136657, 18);
\$s14 -= self::mul(\$s21,  683901, 20);

\$s8  += self::mul(\$s20,  666643, 20);
\$s9  += self::mul(\$s20,  470296, 19);
\$s10 += self::mul(\$s20,  654183, 20);
\$s11 -= self::mul(\$s20,  997805, 20);
\$s12 += self::mul(\$s20,  136657, 18);
\$s13 -= self::mul(\$s20,  683901, 20);

\$s7  += self::mul(\$s19,  666643, 20);
\$s8  += self::mul(\$s19,  470296, 19);
\$s9  += self::mul(\$s19,  654183, 20);
\$s10 -= self::mul(\$s19,  997805, 20);
\$s11 += self::mul(\$s19,  136657, 18);
\$s12 -= self::mul(\$s19,  683901, 20);

\$s6  += self::mul(\$s18,  666643, 20);
\$s7  += self::mul(\$s18,  470296, 19);
\$s8  += self::mul(\$s18,  654183, 20);
\$s9  -= self::mul(\$s18,  997805, 20);
\$s10 += self::mul(\$s18,  136657, 18);
\$s11 -= self::mul(\$s18,  683901, 20);

\$carry6 = (\$s6 + (1 << 20)) >> 21;
\$s7 += \$carry6;
\$s6 -= \$carry6 << 21;
\$carry8 = (\$s8 + (1 << 20)) >> 21;
\$s9 += \$carry8;
\$s8 -= \$carry8 << 21;
\$carry10 = (\$s10 + (1 << 20)) >> 21;
\$s11 += \$carry10;
\$s10 -= \$carry10 << 21;
\$carry12 = (\$s12 + (1 << 20)) >> 21;
\$s13 += \$carry12;
\$s12 -= \$carry12 << 21;
\$carry14 = (\$s14 + (1 << 20)) >> 21;
\$s15 += \$carry14;
\$s14 -= \$carry14 << 21;
\$carry16 = (\$s16 + (1 << 20)) >> 21;
\$s17 += \$carry16;
\$s16 -= \$carry16 << 21;

\$carry7 = (\$s7 + (1 << 20)) >> 21;
\$s8 += \$carry7;
\$s7 -= \$carry7 << 21;
\$carry9 = (\$s9 + (1 << 20)) >> 21;
\$s10 += \$carry9;
\$s9 -= \$carry9 << 21;
\$carry11 = (\$s11 + (1 << 20)) >> 21;
\$s12 += \$carry11;
\$s11 -= \$carry11 << 21;
\$carry13 = (\$s13 + (1 << 20)) >> 21;
\$s14 += \$carry13;
\$s13 -= \$carry13 << 21;
\$carry15 = (\$s15 + (1 << 20)) >> 21;
\$s16 += \$carry15;
\$s15 -= \$carry15 << 21;

\$s5  += self::mul(\$s17,  666643, 20);
\$s6  += self::mul(\$s17,  470296, 19);
\$s7  += self::mul(\$s17,  654183, 20);
\$s8  -= self::mul(\$s17,  997805, 20);
\$s9  += self::mul(\$s17,  136657, 18);
\$s10 -= self::mul(\$s17,  683901, 20);

\$s4 += self::mul(\$s16,  666643, 20);
\$s5 += self::mul(\$s16,  470296, 19);
\$s6 += self::mul(\$s16,  654183, 20);
\$s7 -= self::mul(\$s16,  997805, 20);
\$s8 += self::mul(\$s16,  136657, 18);
\$s9 -= self::mul(\$s16,  683901, 20);

\$s3 += self::mul(\$s15,  666643, 20);
\$s4 += self::mul(\$s15,  470296, 19);
\$s5 += self::mul(\$s15,  654183, 20);
\$s6 -= self::mul(\$s15,  997805, 20);
\$s7 += self::mul(\$s15,  136657, 18);
\$s8 -= self::mul(\$s15,  683901, 20);

\$s2 += self::mul(\$s14,  666643, 20);
\$s3 += self::mul(\$s14,  470296, 19);
\$s4 += self::mul(\$s14,  654183, 20);
\$s5 -= self::mul(\$s14,  997805, 20);
\$s6 += self::mul(\$s14,  136657, 18);
\$s7 -= self::mul(\$s14,  683901, 20);

\$s1 += self::mul(\$s13,  666643, 20);
\$s2 += self::mul(\$s13,  470296, 19);
\$s3 += self::mul(\$s13,  654183, 20);
\$s4 -= self::mul(\$s13,  997805, 20);
\$s5 += self::mul(\$s13,  136657, 18);
\$s6 -= self::mul(\$s13,  683901, 20);

\$s0 += self::mul(\$s12,  666643, 20);
\$s1 += self::mul(\$s12,  470296, 19);
\$s2 += self::mul(\$s12,  654183, 20);
\$s3 -= self::mul(\$s12,  997805, 20);
\$s4 += self::mul(\$s12,  136657, 18);
\$s5 -= self::mul(\$s12,  683901, 20);
\$s12 = 0;

\$carry0 = (\$s0 + (1 << 20)) >> 21;
\$s1 += \$carry0;
\$s0 -= \$carry0 << 21;
\$carry2 = (\$s2 + (1 << 20)) >> 21;
\$s3 += \$carry2;
\$s2 -= \$carry2 << 21;
\$carry4 = (\$s4 + (1 << 20)) >> 21;
\$s5 += \$carry4;
\$s4 -= \$carry4 << 21;
\$carry6 = (\$s6 + (1 << 20)) >> 21;
\$s7 += \$carry6;
\$s6 -= \$carry6 << 21;
\$carry8 = (\$s8 + (1 << 20)) >> 21;
\$s9 += \$carry8;
\$s8 -= \$carry8 << 21;
\$carry10 = (\$s10 + (1 << 20)) >> 21;
\$s11 += \$carry10;
\$s10 -= \$carry10 << 21;

\$carry1 = (\$s1 + (1 << 20)) >> 21;
\$s2 += \$carry1;
\$s1 -= \$carry1 << 21;
\$carry3 = (\$s3 + (1 << 20)) >> 21;
\$s4 += \$carry3;
\$s3 -= \$carry3 << 21;
\$carry5 = (\$s5 + (1 << 20)) >> 21;
\$s6 += \$carry5;
\$s5 -= \$carry5 << 21;
\$carry7 = (\$s7 + (1 << 20)) >> 21;
\$s8 += \$carry7;
\$s7 -= \$carry7 << 21;
\$carry9 = (\$s9 + (1 << 20)) >> 21;
\$s10 += \$carry9;
\$s9 -= \$carry9 << 21;
\$carry11 = (\$s11 + (1 << 20)) >> 21;
\$s12 += \$carry11;
\$s11 -= \$carry11 << 21;

\$s0 += self::mul(\$s12,  666643, 20);
\$s1 += self::mul(\$s12,  470296, 19);
\$s2 += self::mul(\$s12,  654183, 20);
\$s3 -= self::mul(\$s12,  997805, 20);
\$s4 += self::mul(\$s12,  136657, 18);
\$s5 -= self::mul(\$s12,  683901, 20);
\$s12 = 0;

\$carry0 = \$s0 >> 21;
\$s1 += \$carry0;
\$s0 -= \$carry0 << 21;
\$carry1 = \$s1 >> 21;
\$s2 += \$carry1;
\$s1 -= \$carry1 << 21;
\$carry2 = \$s2 >> 21;
\$s3 += \$carry2;
\$s2 -= \$carry2 << 21;
\$carry3 = \$s3 >> 21;
\$s4 += \$carry3;
\$s3 -= \$carry3 << 21;
\$carry4 = \$s4 >> 21;
\$s5 += \$carry4;
\$s4 -= \$carry4 << 21;
\$carry5 = \$s5 >> 21;
\$s6 += \$carry5;
\$s5 -= \$carry5 << 21;
\$carry6 = \$s6 >> 21;
\$s7 += \$carry6;
\$s6 -= \$carry6 << 21;
\$carry7 = \$s7 >> 21;
\$s8 += \$carry7;
\$s7 -= \$carry7 << 21;
\$carry8 = \$s8 >> 21;
\$s9 += \$carry8;
\$s8 -= \$carry8 << 21;
\$carry9 = \$s9 >> 21;
\$s10 += \$carry9;
\$s9 -= \$carry9 << 21;
\$carry10 = \$s10 >> 21;
\$s11 += \$carry10;
\$s10 -= \$carry10 << 21;
\$carry11 = \$s11 >> 21;
\$s12 += \$carry11;
\$s11 -= \$carry11 << 21;

\$s0 += self::mul(\$s12,  666643, 20);
\$s1 += self::mul(\$s12,  470296, 19);
\$s2 += self::mul(\$s12,  654183, 20);
\$s3 -= self::mul(\$s12,  997805, 20);
\$s4 += self::mul(\$s12,  136657, 18);
\$s5 -= self::mul(\$s12,  683901, 20);

\$carry0 = \$s0 >> 21;
\$s1 += \$carry0;
\$s0 -= \$carry0 << 21;
\$carry1 = \$s1 >> 21;
\$s2 += \$carry1;
\$s1 -= \$carry1 << 21;
\$carry2 = \$s2 >> 21;
\$s3 += \$carry2;
\$s2 -= \$carry2 << 21;
\$carry3 = \$s3 >> 21;
\$s4 += \$carry3;
\$s3 -= \$carry3 << 21;
\$carry4 = \$s4 >> 21;
\$s5 += \$carry4;
\$s4 -= \$carry4 << 21;
\$carry5 = \$s5 >> 21;
\$s6 += \$carry5;
\$s5 -= \$carry5 << 21;
\$carry6 = \$s6 >> 21;
\$s7 += \$carry6;
\$s6 -= \$carry6 << 21;
\$carry7 = \$s7 >> 21;
\$s8 += \$carry7;
\$s7 -= \$carry7 << 21;
\$carry8 = \$s8 >> 21;
\$s9 += \$carry8;
\$s8 -= \$carry8 << 21;
\$carry9 = \$s9 >> 21;
\$s10 += \$carry9;
\$s9 -= \$carry9 << 21;
\$carry10 = \$s10 >> 21;
\$s11 += \$carry10;
\$s10 -= \$carry10 << 21;

/**
* @var array<int, int>
*/
\$arr = array(
(int) (0xff & (\$s0 >> 0)),
(int) (0xff & (\$s0 >> 8)),
(int) (0xff & ((\$s0 >> 16) | \$s1 << 5)),
(int) (0xff & (\$s1 >> 3)),
(int) (0xff & (\$s1 >> 11)),
(int) (0xff & ((\$s1 >> 19) | \$s2 << 2)),
(int) (0xff & (\$s2 >> 6)),
(int) (0xff & ((\$s2 >> 14) | \$s3 << 7)),
(int) (0xff & (\$s3 >> 1)),
(int) (0xff & (\$s3 >> 9)),
(int) (0xff & ((\$s3 >> 17) | \$s4 << 4)),
(int) (0xff & (\$s4 >> 4)),
(int) (0xff & (\$s4 >> 12)),
(int) (0xff & ((\$s4 >> 20) | \$s5 << 1)),
(int) (0xff & (\$s5 >> 7)),
(int) (0xff & ((\$s5 >> 15) | \$s6 << 6)),
(int) (0xff & (\$s6 >> 2)),
(int) (0xff & (\$s6 >> 10)),
(int) (0xff & ((\$s6 >> 18) | \$s7 << 3)),
(int) (0xff & (\$s7 >> 5)),
(int) (0xff & (\$s7 >> 13)),
(int) (0xff & (\$s8 >> 0)),
(int) (0xff & (\$s8 >> 8)),
(int) (0xff & ((\$s8 >> 16) | \$s9 << 5)),
(int) (0xff & (\$s9 >> 3)),
(int) (0xff & (\$s9 >> 11)),
(int) (0xff & ((\$s9 >> 19) | \$s10 << 2)),
(int) (0xff & (\$s10 >> 6)),
(int) (0xff & ((\$s10 >> 14) | \$s11 << 7)),
(int) (0xff & (\$s11 >> 1)),
(int) (0xff & (\$s11 >> 9)),
0xff & (\$s11 >> 17)
);
return self::intArrayToString(\$arr);
}```