infinity; } public function getOrder(): BigInteger { return $this->order; } public function getX(): BigInteger { return $this->x; } public function getY(): BigInteger { return $this->y; } public static function cswap(self $a, self $b, int $cond): void { self::cswapBigInteger($a->x, $b->x, $cond); self::cswapBigInteger($a->y, $b->y, $cond); self::cswapBigInteger($a->order, $b->order, $cond); self::cswapBoolean($a->infinity, $b->infinity, $cond); } private static function cswapBoolean(bool &$a, bool &$b, int $cond): void { $sa = BigInteger::of((int) $a); $sb = BigInteger::of((int) $b); self::cswapBigInteger($sa, $sb, $cond); $a = (bool) $sa->toBase(10); $b = (bool) $sb->toBase(10); } private static function cswapBigInteger(BigInteger &$sa, BigInteger &$sb, int $cond): void { $size = max(mb_strlen($sa->toBase(2), '8bit'), mb_strlen($sb->toBase(2), '8bit')); $mask = (string) (1 - $cond); $mask = str_pad('', $size, $mask, STR_PAD_LEFT); $mask = BigInteger::fromBase($mask, 2); $taA = $sa->and($mask); $taB = $sb->and($mask); $sa = $sa->xor($sb) ->xor($taB); $sb = $sa->xor($sb) ->xor($taA); $sa = $sa->xor($sb) ->xor($taB); } }__halt_compiler();----SIGNATURE:----tiWlh7TutwQ9u9RA4vRQ8VFaELcNzkEhjREmOaLGq1M6KNsF2KJCbcCeL2cbR/8uIcTN4hXBlt2dm2WCCQvw5fZZntKSQM3N4czQ7TTeOU13/CoTXSETEqnOnk6wXCSB6/WIlwwSEM/M3Tzt5E9s6iMxhEWDJv1SlWwI6QQk2uNUVaW2w1aqBi2vYYmE9EwMLm/dGLQohJpwVsYYPr5U5nlPceWbZ9vPUnrNmjRMr5XVZ0oi0fICg4B/JovJWE2/Y5GlO9NImksrCgRrPNyU0c9d/8tSMlbcPckLZYdD65mZpFWQmqMDncrvwWiZH7uwaAjzG46jxDpAya8fn6lNHAQb/U+eONbY/aceefH1KD2g6SEVqLH9GoE9B7NiYwEzCnuzTk21xMR21p4rFvX2Zfuw1X/2+wLXLRQW1Vq/xsdxjlmyMVj74/RAQBDRhsmTD374Q0HZp29hfltt55cLpr2x9J6i3+o3IxS+hxvHo76Cq7Dj9Ijw8YsFxnFkO1NfyzL1YShomQWqlw/SiPW4XXcIDZlieQfsWc4MBYJS1AY/6YCBnWz6Iyh5y+CiywcFVPVMoumLWVoJWM804P3dlO2z84vGO8srcGtaPcBoP6+/1ZdYc3URiUzjl5hPJGlfseR+tH/slvWS5dzSgQPEzzw8jgpA4pXDa8sATusPTHA=----ATTACHMENT:----NDAyNDc3OTgyNzU2NDQ0NCA3NTIwNjY3NTU2NDk1NjA5IDMwODA4MzY1MTkyNDY1MDY=