public static function ParagonIE_Sodium_Core32_Curve25519::sc_muladd in Automatic Updates 8
Same name and namespace in other branches
- 7 vendor/paragonie/sodium_compat/src/Core32/Curve25519.php \ParagonIE_Sodium_Core32_Curve25519::sc_muladd()
Calculates (ab + c) mod l where l = 2^252 + 27742317777372353535851937790883648493
@internal You should not use this directly from another application
Parameters
string $a:
string $b:
string $c:
Return value
string
Throws
SodiumException
TypeError
1 call to ParagonIE_Sodium_Core32_Curve25519::sc_muladd()
- ParagonIE_Sodium_Core32_Ed25519::sign_detached in vendor/
paragonie/ sodium_compat/ src/ Core32/ Ed25519.php - @internal You should not use this directly from another application
File
- vendor/
paragonie/ sodium_compat/ src/ Core32/ Curve25519.php, line 2283
Class
- ParagonIE_Sodium_Core32_Curve25519
- Class ParagonIE_Sodium_Core32_Curve25519
Code
public static function sc_muladd($a, $b, $c) {
$a0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 0, 3)));
$a1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($a, 2, 4)) >> 5);
$a2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 5, 3)) >> 2);
$a3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($a, 7, 4)) >> 7);
$a4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($a, 10, 4)) >> 4);
$a5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 13, 3)) >> 1);
$a6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($a, 15, 4)) >> 6);
$a7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 18, 3)) >> 3);
$a8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 21, 3)));
$a9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($a, 23, 4)) >> 5);
$a10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 26, 3)) >> 2);
$a11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & self::load_4(self::substr($a, 28, 4)) >> 7);
$b0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 0, 3)));
$b1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($b, 2, 4)) >> 5);
$b2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 5, 3)) >> 2);
$b3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($b, 7, 4)) >> 7);
$b4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($b, 10, 4)) >> 4);
$b5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 13, 3)) >> 1);
$b6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($b, 15, 4)) >> 6);
$b7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 18, 3)) >> 3);
$b8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 21, 3)));
$b9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($b, 23, 4)) >> 5);
$b10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 26, 3)) >> 2);
$b11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & self::load_4(self::substr($b, 28, 4)) >> 7);
$c0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 0, 3)));
$c1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($c, 2, 4)) >> 5);
$c2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 5, 3)) >> 2);
$c3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($c, 7, 4)) >> 7);
$c4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($c, 10, 4)) >> 4);
$c5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 13, 3)) >> 1);
$c6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($c, 15, 4)) >> 6);
$c7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 18, 3)) >> 3);
$c8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 21, 3)));
$c9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($c, 23, 4)) >> 5);
$c10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 26, 3)) >> 2);
$c11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & self::load_4(self::substr($c, 28, 4)) >> 7);
/* Can't really avoid the pyramid here: */
/**
* @var ParagonIE_Sodium_Core32_Int64 $s0
* @var ParagonIE_Sodium_Core32_Int64 $s1
* @var ParagonIE_Sodium_Core32_Int64 $s2
* @var ParagonIE_Sodium_Core32_Int64 $s3
* @var ParagonIE_Sodium_Core32_Int64 $s4
* @var ParagonIE_Sodium_Core32_Int64 $s5
* @var ParagonIE_Sodium_Core32_Int64 $s6
* @var ParagonIE_Sodium_Core32_Int64 $s7
* @var ParagonIE_Sodium_Core32_Int64 $s8
* @var ParagonIE_Sodium_Core32_Int64 $s9
* @var ParagonIE_Sodium_Core32_Int64 $s10
* @var ParagonIE_Sodium_Core32_Int64 $s11
* @var ParagonIE_Sodium_Core32_Int64 $s12
* @var ParagonIE_Sodium_Core32_Int64 $s13
* @var ParagonIE_Sodium_Core32_Int64 $s14
* @var ParagonIE_Sodium_Core32_Int64 $s15
* @var ParagonIE_Sodium_Core32_Int64 $s16
* @var ParagonIE_Sodium_Core32_Int64 $s17
* @var ParagonIE_Sodium_Core32_Int64 $s18
* @var ParagonIE_Sodium_Core32_Int64 $s19
* @var ParagonIE_Sodium_Core32_Int64 $s20
* @var ParagonIE_Sodium_Core32_Int64 $s21
* @var ParagonIE_Sodium_Core32_Int64 $s22
* @var ParagonIE_Sodium_Core32_Int64 $s23
*/
$s0 = $c0
->addInt64($a0
->mulInt64($b0, 24));
$s1 = $c1
->addInt64($a0
->mulInt64($b1, 24))
->addInt64($a1
->mulInt64($b0, 24));
$s2 = $c2
->addInt64($a0
->mulInt64($b2, 24))
->addInt64($a1
->mulInt64($b1, 24))
->addInt64($a2
->mulInt64($b0, 24));
$s3 = $c3
->addInt64($a0
->mulInt64($b3, 24))
->addInt64($a1
->mulInt64($b2, 24))
->addInt64($a2
->mulInt64($b1, 24))
->addInt64($a3
->mulInt64($b0, 24));
$s4 = $c4
->addInt64($a0
->mulInt64($b4, 24))
->addInt64($a1
->mulInt64($b3, 24))
->addInt64($a2
->mulInt64($b2, 24))
->addInt64($a3
->mulInt64($b1, 24))
->addInt64($a4
->mulInt64($b0, 24));
$s5 = $c5
->addInt64($a0
->mulInt64($b5, 24))
->addInt64($a1
->mulInt64($b4, 24))
->addInt64($a2
->mulInt64($b3, 24))
->addInt64($a3
->mulInt64($b2, 24))
->addInt64($a4
->mulInt64($b1, 24))
->addInt64($a5
->mulInt64($b0, 24));
$s6 = $c6
->addInt64($a0
->mulInt64($b6, 24))
->addInt64($a1
->mulInt64($b5, 24))
->addInt64($a2
->mulInt64($b4, 24))
->addInt64($a3
->mulInt64($b3, 24))
->addInt64($a4
->mulInt64($b2, 24))
->addInt64($a5
->mulInt64($b1, 24))
->addInt64($a6
->mulInt64($b0, 24));
$s7 = $c7
->addInt64($a0
->mulInt64($b7, 24))
->addInt64($a1
->mulInt64($b6, 24))
->addInt64($a2
->mulInt64($b5, 24))
->addInt64($a3
->mulInt64($b4, 24))
->addInt64($a4
->mulInt64($b3, 24))
->addInt64($a5
->mulInt64($b2, 24))
->addInt64($a6
->mulInt64($b1, 24))
->addInt64($a7
->mulInt64($b0, 24));
$s8 = $c8
->addInt64($a0
->mulInt64($b8, 24))
->addInt64($a1
->mulInt64($b7, 24))
->addInt64($a2
->mulInt64($b6, 24))
->addInt64($a3
->mulInt64($b5, 24))
->addInt64($a4
->mulInt64($b4, 24))
->addInt64($a5
->mulInt64($b3, 24))
->addInt64($a6
->mulInt64($b2, 24))
->addInt64($a7
->mulInt64($b1, 24))
->addInt64($a8
->mulInt64($b0, 24));
$s9 = $c9
->addInt64($a0
->mulInt64($b9, 24))
->addInt64($a1
->mulInt64($b8, 24))
->addInt64($a2
->mulInt64($b7, 24))
->addInt64($a3
->mulInt64($b6, 24))
->addInt64($a4
->mulInt64($b5, 24))
->addInt64($a5
->mulInt64($b4, 24))
->addInt64($a6
->mulInt64($b3, 24))
->addInt64($a7
->mulInt64($b2, 24))
->addInt64($a8
->mulInt64($b1, 24))
->addInt64($a9
->mulInt64($b0, 24));
$s10 = $c10
->addInt64($a0
->mulInt64($b10, 24))
->addInt64($a1
->mulInt64($b9, 24))
->addInt64($a2
->mulInt64($b8, 24))
->addInt64($a3
->mulInt64($b7, 24))
->addInt64($a4
->mulInt64($b6, 24))
->addInt64($a5
->mulInt64($b5, 24))
->addInt64($a6
->mulInt64($b4, 24))
->addInt64($a7
->mulInt64($b3, 24))
->addInt64($a8
->mulInt64($b2, 24))
->addInt64($a9
->mulInt64($b1, 24))
->addInt64($a10
->mulInt64($b0, 24));
$s11 = $c11
->addInt64($a0
->mulInt64($b11, 24))
->addInt64($a1
->mulInt64($b10, 24))
->addInt64($a2
->mulInt64($b9, 24))
->addInt64($a3
->mulInt64($b8, 24))
->addInt64($a4
->mulInt64($b7, 24))
->addInt64($a5
->mulInt64($b6, 24))
->addInt64($a6
->mulInt64($b5, 24))
->addInt64($a7
->mulInt64($b4, 24))
->addInt64($a8
->mulInt64($b3, 24))
->addInt64($a9
->mulInt64($b2, 24))
->addInt64($a10
->mulInt64($b1, 24))
->addInt64($a11
->mulInt64($b0, 24));
$s12 = $a1
->mulInt64($b11, 24)
->addInt64($a2
->mulInt64($b10, 24))
->addInt64($a3
->mulInt64($b9, 24))
->addInt64($a4
->mulInt64($b8, 24))
->addInt64($a5
->mulInt64($b7, 24))
->addInt64($a6
->mulInt64($b6, 24))
->addInt64($a7
->mulInt64($b5, 24))
->addInt64($a8
->mulInt64($b4, 24))
->addInt64($a9
->mulInt64($b3, 24))
->addInt64($a10
->mulInt64($b2, 24))
->addInt64($a11
->mulInt64($b1, 24));
$s13 = $a2
->mulInt64($b11, 24)
->addInt64($a3
->mulInt64($b10, 24))
->addInt64($a4
->mulInt64($b9, 24))
->addInt64($a5
->mulInt64($b8, 24))
->addInt64($a6
->mulInt64($b7, 24))
->addInt64($a7
->mulInt64($b6, 24))
->addInt64($a8
->mulInt64($b5, 24))
->addInt64($a9
->mulInt64($b4, 24))
->addInt64($a10
->mulInt64($b3, 24))
->addInt64($a11
->mulInt64($b2, 24));
$s14 = $a3
->mulInt64($b11, 24)
->addInt64($a4
->mulInt64($b10, 24))
->addInt64($a5
->mulInt64($b9, 24))
->addInt64($a6
->mulInt64($b8, 24))
->addInt64($a7
->mulInt64($b7, 24))
->addInt64($a8
->mulInt64($b6, 24))
->addInt64($a9
->mulInt64($b5, 24))
->addInt64($a10
->mulInt64($b4, 24))
->addInt64($a11
->mulInt64($b3, 24));
$s15 = $a4
->mulInt64($b11, 24)
->addInt64($a5
->mulInt64($b10, 24))
->addInt64($a6
->mulInt64($b9, 24))
->addInt64($a7
->mulInt64($b8, 24))
->addInt64($a8
->mulInt64($b7, 24))
->addInt64($a9
->mulInt64($b6, 24))
->addInt64($a10
->mulInt64($b5, 24))
->addInt64($a11
->mulInt64($b4, 24));
$s16 = $a5
->mulInt64($b11, 24)
->addInt64($a6
->mulInt64($b10, 24))
->addInt64($a7
->mulInt64($b9, 24))
->addInt64($a8
->mulInt64($b8, 24))
->addInt64($a9
->mulInt64($b7, 24))
->addInt64($a10
->mulInt64($b6, 24))
->addInt64($a11
->mulInt64($b5, 24));
$s17 = $a6
->mulInt64($b11, 24)
->addInt64($a7
->mulInt64($b10, 24))
->addInt64($a8
->mulInt64($b9, 24))
->addInt64($a9
->mulInt64($b8, 24))
->addInt64($a10
->mulInt64($b7, 24))
->addInt64($a11
->mulInt64($b6, 24));
$s18 = $a7
->mulInt64($b11, 24)
->addInt64($a8
->mulInt64($b10, 24))
->addInt64($a9
->mulInt64($b9, 24))
->addInt64($a10
->mulInt64($b8, 24))
->addInt64($a11
->mulInt64($b7, 24));
$s19 = $a8
->mulInt64($b11, 24)
->addInt64($a9
->mulInt64($b10, 24))
->addInt64($a10
->mulInt64($b9, 24))
->addInt64($a11
->mulInt64($b8, 24));
$s20 = $a9
->mulInt64($b11, 24)
->addInt64($a10
->mulInt64($b10, 24))
->addInt64($a11
->mulInt64($b9, 24));
$s21 = $a10
->mulInt64($b11, 24)
->addInt64($a11
->mulInt64($b10, 24));
$s22 = $a11
->mulInt64($b11, 24);
$s23 = new ParagonIE_Sodium_Core32_Int64();
$carry0 = $s0
->addInt(1 << 20)
->shiftRight(21);
$s1 = $s1
->addInt64($carry0);
$s0 = $s0
->subInt64($carry0
->shiftLeft(21));
$carry2 = $s2
->addInt(1 << 20)
->shiftRight(21);
$s3 = $s3
->addInt64($carry2);
$s2 = $s2
->subInt64($carry2
->shiftLeft(21));
$carry4 = $s4
->addInt(1 << 20)
->shiftRight(21);
$s5 = $s5
->addInt64($carry4);
$s4 = $s4
->subInt64($carry4
->shiftLeft(21));
$carry6 = $s6
->addInt(1 << 20)
->shiftRight(21);
$s7 = $s7
->addInt64($carry6);
$s6 = $s6
->subInt64($carry6
->shiftLeft(21));
$carry8 = $s8
->addInt(1 << 20)
->shiftRight(21);
$s9 = $s9
->addInt64($carry8);
$s8 = $s8
->subInt64($carry8
->shiftLeft(21));
$carry10 = $s10
->addInt(1 << 20)
->shiftRight(21);
$s11 = $s11
->addInt64($carry10);
$s10 = $s10
->subInt64($carry10
->shiftLeft(21));
$carry12 = $s12
->addInt(1 << 20)
->shiftRight(21);
$s13 = $s13
->addInt64($carry12);
$s12 = $s12
->subInt64($carry12
->shiftLeft(21));
$carry14 = $s14
->addInt(1 << 20)
->shiftRight(21);
$s15 = $s15
->addInt64($carry14);
$s14 = $s14
->subInt64($carry14
->shiftLeft(21));
$carry16 = $s16
->addInt(1 << 20)
->shiftRight(21);
$s17 = $s17
->addInt64($carry16);
$s16 = $s16
->subInt64($carry16
->shiftLeft(21));
$carry18 = $s18
->addInt(1 << 20)
->shiftRight(21);
$s19 = $s19
->addInt64($carry18);
$s18 = $s18
->subInt64($carry18
->shiftLeft(21));
$carry20 = $s20
->addInt(1 << 20)
->shiftRight(21);
$s21 = $s21
->addInt64($carry20);
$s20 = $s20
->subInt64($carry20
->shiftLeft(21));
$carry22 = $s22
->addInt(1 << 20)
->shiftRight(21);
$s23 = $s23
->addInt64($carry22);
$s22 = $s22
->subInt64($carry22
->shiftLeft(21));
$carry1 = $s1
->addInt(1 << 20)
->shiftRight(21);
$s2 = $s2
->addInt64($carry1);
$s1 = $s1
->subInt64($carry1
->shiftLeft(21));
$carry3 = $s3
->addInt(1 << 20)
->shiftRight(21);
$s4 = $s4
->addInt64($carry3);
$s3 = $s3
->subInt64($carry3
->shiftLeft(21));
$carry5 = $s5
->addInt(1 << 20)
->shiftRight(21);
$s6 = $s6
->addInt64($carry5);
$s5 = $s5
->subInt64($carry5
->shiftLeft(21));
$carry7 = $s7
->addInt(1 << 20)
->shiftRight(21);
$s8 = $s8
->addInt64($carry7);
$s7 = $s7
->subInt64($carry7
->shiftLeft(21));
$carry9 = $s9
->addInt(1 << 20)
->shiftRight(21);
$s10 = $s10
->addInt64($carry9);
$s9 = $s9
->subInt64($carry9
->shiftLeft(21));
$carry11 = $s11
->addInt(1 << 20)
->shiftRight(21);
$s12 = $s12
->addInt64($carry11);
$s11 = $s11
->subInt64($carry11
->shiftLeft(21));
$carry13 = $s13
->addInt(1 << 20)
->shiftRight(21);
$s14 = $s14
->addInt64($carry13);
$s13 = $s13
->subInt64($carry13
->shiftLeft(21));
$carry15 = $s15
->addInt(1 << 20)
->shiftRight(21);
$s16 = $s16
->addInt64($carry15);
$s15 = $s15
->subInt64($carry15
->shiftLeft(21));
$carry17 = $s17
->addInt(1 << 20)
->shiftRight(21);
$s18 = $s18
->addInt64($carry17);
$s17 = $s17
->subInt64($carry17
->shiftLeft(21));
$carry19 = $s19
->addInt(1 << 20)
->shiftRight(21);
$s20 = $s20
->addInt64($carry19);
$s19 = $s19
->subInt64($carry19
->shiftLeft(21));
$carry21 = $s21
->addInt(1 << 20)
->shiftRight(21);
$s22 = $s22
->addInt64($carry21);
$s21 = $s21
->subInt64($carry21
->shiftLeft(21));
$s11 = $s11
->addInt64($s23
->mulInt(666643, 20));
$s12 = $s12
->addInt64($s23
->mulInt(470296, 19));
$s13 = $s13
->addInt64($s23
->mulInt(654183, 20));
$s14 = $s14
->subInt64($s23
->mulInt(997805, 20));
$s15 = $s15
->addInt64($s23
->mulInt(136657, 18));
$s16 = $s16
->subInt64($s23
->mulInt(683901, 20));
$s10 = $s10
->addInt64($s22
->mulInt(666643, 20));
$s11 = $s11
->addInt64($s22
->mulInt(470296, 19));
$s12 = $s12
->addInt64($s22
->mulInt(654183, 20));
$s13 = $s13
->subInt64($s22
->mulInt(997805, 20));
$s14 = $s14
->addInt64($s22
->mulInt(136657, 18));
$s15 = $s15
->subInt64($s22
->mulInt(683901, 20));
$s9 = $s9
->addInt64($s21
->mulInt(666643, 20));
$s10 = $s10
->addInt64($s21
->mulInt(470296, 19));
$s11 = $s11
->addInt64($s21
->mulInt(654183, 20));
$s12 = $s12
->subInt64($s21
->mulInt(997805, 20));
$s13 = $s13
->addInt64($s21
->mulInt(136657, 18));
$s14 = $s14
->subInt64($s21
->mulInt(683901, 20));
$s8 = $s8
->addInt64($s20
->mulInt(666643, 20));
$s9 = $s9
->addInt64($s20
->mulInt(470296, 19));
$s10 = $s10
->addInt64($s20
->mulInt(654183, 20));
$s11 = $s11
->subInt64($s20
->mulInt(997805, 20));
$s12 = $s12
->addInt64($s20
->mulInt(136657, 18));
$s13 = $s13
->subInt64($s20
->mulInt(683901, 20));
$s7 = $s7
->addInt64($s19
->mulInt(666643, 20));
$s8 = $s8
->addInt64($s19
->mulInt(470296, 19));
$s9 = $s9
->addInt64($s19
->mulInt(654183, 20));
$s10 = $s10
->subInt64($s19
->mulInt(997805, 20));
$s11 = $s11
->addInt64($s19
->mulInt(136657, 18));
$s12 = $s12
->subInt64($s19
->mulInt(683901, 20));
$s6 = $s6
->addInt64($s18
->mulInt(666643, 20));
$s7 = $s7
->addInt64($s18
->mulInt(470296, 19));
$s8 = $s8
->addInt64($s18
->mulInt(654183, 20));
$s9 = $s9
->subInt64($s18
->mulInt(997805, 20));
$s10 = $s10
->addInt64($s18
->mulInt(136657, 18));
$s11 = $s11
->subInt64($s18
->mulInt(683901, 20));
$carry6 = $s6
->addInt(1 << 20)
->shiftRight(21);
$s7 = $s7
->addInt64($carry6);
$s6 = $s6
->subInt64($carry6
->shiftLeft(21));
$carry8 = $s8
->addInt(1 << 20)
->shiftRight(21);
$s9 = $s9
->addInt64($carry8);
$s8 = $s8
->subInt64($carry8
->shiftLeft(21));
$carry10 = $s10
->addInt(1 << 20)
->shiftRight(21);
$s11 = $s11
->addInt64($carry10);
$s10 = $s10
->subInt64($carry10
->shiftLeft(21));
$carry12 = $s12
->addInt(1 << 20)
->shiftRight(21);
$s13 = $s13
->addInt64($carry12);
$s12 = $s12
->subInt64($carry12
->shiftLeft(21));
$carry14 = $s14
->addInt(1 << 20)
->shiftRight(21);
$s15 = $s15
->addInt64($carry14);
$s14 = $s14
->subInt64($carry14
->shiftLeft(21));
$carry16 = $s16
->addInt(1 << 20)
->shiftRight(21);
$s17 = $s17
->addInt64($carry16);
$s16 = $s16
->subInt64($carry16
->shiftLeft(21));
$carry7 = $s7
->addInt(1 << 20)
->shiftRight(21);
$s8 = $s8
->addInt64($carry7);
$s7 = $s7
->subInt64($carry7
->shiftLeft(21));
$carry9 = $s9
->addInt(1 << 20)
->shiftRight(21);
$s10 = $s10
->addInt64($carry9);
$s9 = $s9
->subInt64($carry9
->shiftLeft(21));
$carry11 = $s11
->addInt(1 << 20)
->shiftRight(21);
$s12 = $s12
->addInt64($carry11);
$s11 = $s11
->subInt64($carry11
->shiftLeft(21));
$carry13 = $s13
->addInt(1 << 20)
->shiftRight(21);
$s14 = $s14
->addInt64($carry13);
$s13 = $s13
->subInt64($carry13
->shiftLeft(21));
$carry15 = $s15
->addInt(1 << 20)
->shiftRight(21);
$s16 = $s16
->addInt64($carry15);
$s15 = $s15
->subInt64($carry15
->shiftLeft(21));
$s5 = $s5
->addInt64($s17
->mulInt(666643, 20));
$s6 = $s6
->addInt64($s17
->mulInt(470296, 19));
$s7 = $s7
->addInt64($s17
->mulInt(654183, 20));
$s8 = $s8
->subInt64($s17
->mulInt(997805, 20));
$s9 = $s9
->addInt64($s17
->mulInt(136657, 18));
$s10 = $s10
->subInt64($s17
->mulInt(683901, 20));
$s4 = $s4
->addInt64($s16
->mulInt(666643, 20));
$s5 = $s5
->addInt64($s16
->mulInt(470296, 19));
$s6 = $s6
->addInt64($s16
->mulInt(654183, 20));
$s7 = $s7
->subInt64($s16
->mulInt(997805, 20));
$s8 = $s8
->addInt64($s16
->mulInt(136657, 18));
$s9 = $s9
->subInt64($s16
->mulInt(683901, 20));
$s3 = $s3
->addInt64($s15
->mulInt(666643, 20));
$s4 = $s4
->addInt64($s15
->mulInt(470296, 19));
$s5 = $s5
->addInt64($s15
->mulInt(654183, 20));
$s6 = $s6
->subInt64($s15
->mulInt(997805, 20));
$s7 = $s7
->addInt64($s15
->mulInt(136657, 18));
$s8 = $s8
->subInt64($s15
->mulInt(683901, 20));
$s2 = $s2
->addInt64($s14
->mulInt(666643, 20));
$s3 = $s3
->addInt64($s14
->mulInt(470296, 19));
$s4 = $s4
->addInt64($s14
->mulInt(654183, 20));
$s5 = $s5
->subInt64($s14
->mulInt(997805, 20));
$s6 = $s6
->addInt64($s14
->mulInt(136657, 18));
$s7 = $s7
->subInt64($s14
->mulInt(683901, 20));
$s1 = $s1
->addInt64($s13
->mulInt(666643, 20));
$s2 = $s2
->addInt64($s13
->mulInt(470296, 19));
$s3 = $s3
->addInt64($s13
->mulInt(654183, 20));
$s4 = $s4
->subInt64($s13
->mulInt(997805, 20));
$s5 = $s5
->addInt64($s13
->mulInt(136657, 18));
$s6 = $s6
->subInt64($s13
->mulInt(683901, 20));
$s0 = $s0
->addInt64($s12
->mulInt(666643, 20));
$s1 = $s1
->addInt64($s12
->mulInt(470296, 19));
$s2 = $s2
->addInt64($s12
->mulInt(654183, 20));
$s3 = $s3
->subInt64($s12
->mulInt(997805, 20));
$s4 = $s4
->addInt64($s12
->mulInt(136657, 18));
$s5 = $s5
->subInt64($s12
->mulInt(683901, 20));
$s12 = new ParagonIE_Sodium_Core32_Int64();
$carry0 = $s0
->addInt(1 << 20)
->shiftRight(21);
$s1 = $s1
->addInt64($carry0);
$s0 = $s0
->subInt64($carry0
->shiftLeft(21));
$carry2 = $s2
->addInt(1 << 20)
->shiftRight(21);
$s3 = $s3
->addInt64($carry2);
$s2 = $s2
->subInt64($carry2
->shiftLeft(21));
$carry4 = $s4
->addInt(1 << 20)
->shiftRight(21);
$s5 = $s5
->addInt64($carry4);
$s4 = $s4
->subInt64($carry4
->shiftLeft(21));
$carry6 = $s6
->addInt(1 << 20)
->shiftRight(21);
$s7 = $s7
->addInt64($carry6);
$s6 = $s6
->subInt64($carry6
->shiftLeft(21));
$carry8 = $s8
->addInt(1 << 20)
->shiftRight(21);
$s9 = $s9
->addInt64($carry8);
$s8 = $s8
->subInt64($carry8
->shiftLeft(21));
$carry10 = $s10
->addInt(1 << 20)
->shiftRight(21);
$s11 = $s11
->addInt64($carry10);
$s10 = $s10
->subInt64($carry10
->shiftLeft(21));
$carry1 = $s1
->addInt(1 << 20)
->shiftRight(21);
$s2 = $s2
->addInt64($carry1);
$s1 = $s1
->subInt64($carry1
->shiftLeft(21));
$carry3 = $s3
->addInt(1 << 20)
->shiftRight(21);
$s4 = $s4
->addInt64($carry3);
$s3 = $s3
->subInt64($carry3
->shiftLeft(21));
$carry5 = $s5
->addInt(1 << 20)
->shiftRight(21);
$s6 = $s6
->addInt64($carry5);
$s5 = $s5
->subInt64($carry5
->shiftLeft(21));
$carry7 = $s7
->addInt(1 << 20)
->shiftRight(21);
$s8 = $s8
->addInt64($carry7);
$s7 = $s7
->subInt64($carry7
->shiftLeft(21));
$carry9 = $s9
->addInt(1 << 20)
->shiftRight(21);
$s10 = $s10
->addInt64($carry9);
$s9 = $s9
->subInt64($carry9
->shiftLeft(21));
$carry11 = $s11
->addInt(1 << 20)
->shiftRight(21);
$s12 = $s12
->addInt64($carry11);
$s11 = $s11
->subInt64($carry11
->shiftLeft(21));
$s0 = $s0
->addInt64($s12
->mulInt(666643, 20));
$s1 = $s1
->addInt64($s12
->mulInt(470296, 19));
$s2 = $s2
->addInt64($s12
->mulInt(654183, 20));
$s3 = $s3
->subInt64($s12
->mulInt(997805, 20));
$s4 = $s4
->addInt64($s12
->mulInt(136657, 18));
$s5 = $s5
->subInt64($s12
->mulInt(683901, 20));
$s12 = new ParagonIE_Sodium_Core32_Int64();
$carry0 = $s0
->shiftRight(21);
$s1 = $s1
->addInt64($carry0);
$s0 = $s0
->subInt64($carry0
->shiftLeft(21));
$carry1 = $s1
->shiftRight(21);
$s2 = $s2
->addInt64($carry1);
$s1 = $s1
->subInt64($carry1
->shiftLeft(21));
$carry2 = $s2
->shiftRight(21);
$s3 = $s3
->addInt64($carry2);
$s2 = $s2
->subInt64($carry2
->shiftLeft(21));
$carry3 = $s3
->shiftRight(21);
$s4 = $s4
->addInt64($carry3);
$s3 = $s3
->subInt64($carry3
->shiftLeft(21));
$carry4 = $s4
->shiftRight(21);
$s5 = $s5
->addInt64($carry4);
$s4 = $s4
->subInt64($carry4
->shiftLeft(21));
$carry5 = $s5
->shiftRight(21);
$s6 = $s6
->addInt64($carry5);
$s5 = $s5
->subInt64($carry5
->shiftLeft(21));
$carry6 = $s6
->shiftRight(21);
$s7 = $s7
->addInt64($carry6);
$s6 = $s6
->subInt64($carry6
->shiftLeft(21));
$carry7 = $s7
->shiftRight(21);
$s8 = $s8
->addInt64($carry7);
$s7 = $s7
->subInt64($carry7
->shiftLeft(21));
$carry8 = $s8
->shiftRight(21);
$s9 = $s9
->addInt64($carry8);
$s8 = $s8
->subInt64($carry8
->shiftLeft(21));
$carry9 = $s9
->shiftRight(21);
$s10 = $s10
->addInt64($carry9);
$s9 = $s9
->subInt64($carry9
->shiftLeft(21));
$carry10 = $s10
->shiftRight(21);
$s11 = $s11
->addInt64($carry10);
$s10 = $s10
->subInt64($carry10
->shiftLeft(21));
$carry11 = $s11
->shiftRight(21);
$s12 = $s12
->addInt64($carry11);
$s11 = $s11
->subInt64($carry11
->shiftLeft(21));
$s0 = $s0
->addInt64($s12
->mulInt(666643, 20));
$s1 = $s1
->addInt64($s12
->mulInt(470296, 19));
$s2 = $s2
->addInt64($s12
->mulInt(654183, 20));
$s3 = $s3
->subInt64($s12
->mulInt(997805, 20));
$s4 = $s4
->addInt64($s12
->mulInt(136657, 18));
$s5 = $s5
->subInt64($s12
->mulInt(683901, 20));
$carry0 = $s0
->shiftRight(21);
$s1 = $s1
->addInt64($carry0);
$s0 = $s0
->subInt64($carry0
->shiftLeft(21));
$carry1 = $s1
->shiftRight(21);
$s2 = $s2
->addInt64($carry1);
$s1 = $s1
->subInt64($carry1
->shiftLeft(21));
$carry2 = $s2
->shiftRight(21);
$s3 = $s3
->addInt64($carry2);
$s2 = $s2
->subInt64($carry2
->shiftLeft(21));
$carry3 = $s3
->shiftRight(21);
$s4 = $s4
->addInt64($carry3);
$s3 = $s3
->subInt64($carry3
->shiftLeft(21));
$carry4 = $s4
->shiftRight(21);
$s5 = $s5
->addInt64($carry4);
$s4 = $s4
->subInt64($carry4
->shiftLeft(21));
$carry5 = $s5
->shiftRight(21);
$s6 = $s6
->addInt64($carry5);
$s5 = $s5
->subInt64($carry5
->shiftLeft(21));
$carry6 = $s6
->shiftRight(21);
$s7 = $s7
->addInt64($carry6);
$s6 = $s6
->subInt64($carry6
->shiftLeft(21));
$carry7 = $s7
->shiftRight(21);
$s8 = $s8
->addInt64($carry7);
$s7 = $s7
->subInt64($carry7
->shiftLeft(21));
$carry8 = $s10
->shiftRight(21);
$s9 = $s9
->addInt64($carry8);
$s8 = $s8
->subInt64($carry8
->shiftLeft(21));
$carry9 = $s9
->shiftRight(21);
$s10 = $s10
->addInt64($carry9);
$s9 = $s9
->subInt64($carry9
->shiftLeft(21));
$carry10 = $s10
->shiftRight(21);
$s11 = $s11
->addInt64($carry10);
$s10 = $s10
->subInt64($carry10
->shiftLeft(21));
$S0 = $s0
->toInt();
$S1 = $s1
->toInt();
$S2 = $s2
->toInt();
$S3 = $s3
->toInt();
$S4 = $s4
->toInt();
$S5 = $s5
->toInt();
$S6 = $s6
->toInt();
$S7 = $s7
->toInt();
$S8 = $s8
->toInt();
$S9 = $s9
->toInt();
$S10 = $s10
->toInt();
$S11 = $s11
->toInt();
/**
* @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),
(int) (0xff & $S11 >> 17),
);
return self::intArrayToString($arr);
}