3v4l.org

run code in 500+ PHP versions simultaneously
<?php class CTFCodec { private string $key; // ----------------------------------------------------- // Constructeur : on dérive la clé en SHA256 (32 octets) // ----------------------------------------------------- public function __construct(string $key) { $this->key = hash("sha256", $key, true); } // ----------------------------------------------------- // Rotation gauche sur 8 bits // ----------------------------------------------------- private function rotl(int $b, int $n): int { return (($b << $n) & 0xFF) | ($b >> (8 - $n)); } // ----------------------------------------------------- // Rotation droite sur 8 bits // ----------------------------------------------------- private function rotr(int $b, int $n): int { return (($b >> $n) | ($b << (8 - $n))) & 0xFF; } // ----------------------------------------------------- // Masque pseudo-aléatoire dépendant clé + seed + index // ----------------------------------------------------- private function mask(int $i, int $seed): int { $h = hash("sha256", $this->key . chr($seed) . pack("N", $i), true); return ord($h[$i % 32]); } // ----------------------------------------------------- // Layer 1 : XOR + rotations // ----------------------------------------------------- private function L1E(string $data, int $seed): string { $out = ""; foreach (str_split($data) as $i => $c) { $b = ord($c); $b = $this->rotl($b, ($i + $seed) % 7); $b ^= $this->mask($i, $seed); $b = $this->rotr($b, ($seed + $i) % 5); $out .= chr($b); } return $out; } private function L1D(string $data, int $seed): string { $out = ""; foreach (str_split($data) as $i => $c) { $b = ord($c); $b = $this->rotl($b, ($seed + $i) % 5); $b ^= $this->mask($i, $seed); $b = $this->rotr($b, ($i + $seed) % 7); $out .= chr($b); } return $out; } // ----------------------------------------------------- // Layer 2 : shuffle pseudo-chaotique (inversible) // ----------------------------------------------------- private function L2E(string $data, int $seed): string { $a = str_split($data); $n = count($a); for ($i = 0; $i < $n; $i++) { $j = ($this->mask($i, $seed) + $seed) % $n; [$a[$i], $a[$j]] = [$a[$j], $a[$i]]; } return implode("", $a); } private function L2D(string $data, int $seed): string { $a = str_split($data); $n = count($a); for ($i = $n - 1; $i >= 0; $i--) { $j = ($this->mask($i, $seed) + $seed) % $n; [$a[$i], $a[$j]] = [$a[$j], $a[$i]]; } return implode("", $a); } // ----------------------------------------------------- // Encodage final : Base64URL stable // ----------------------------------------------------- private function b64u_encode(string $d): string { return rtrim(strtr(base64_encode($d), "+/", "-_"), "="); } private function b64u_decode(string $d): string { $pad = 4 - (strlen($d) % 4); if ($pad < 4) $d .= str_repeat("=", $pad); return base64_decode(strtr($d, "-_", "+/")); } // ----------------------------------------------------- // ENCODE // ----------------------------------------------------- public function encode(string $msg): string { $seed = random_int(0, 255); // seed mutation $msg = $this->L1E($msg, $seed); $msg = $this->L2E($msg, $seed); $msg = $this->b64u_encode($msg); return sprintf("%02X", $seed) . "." . $msg; } // ----------------------------------------------------- // DECODE // ----------------------------------------------------- public function decode(string $cipher): string { list($hex, $data) = explode(".", $cipher, 2); $seed = hexdec($hex); $data = $this->b64u_decode($data); $data = $this->L2D($data, $seed); $data = $this->L1D($data, $seed); return $data; } } /*********************************************** * TEST * ***********************************************/ $codec = new CTFCodec(""); $input = ""; $enc = $codec->encode($input); $dec = $codec->decode($enc); echo "Original : $input\n"; echo "Encodé : $enc\n"; echo "Décodé : $dec\n"; ?>
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/3Nju4
function name:  (null)
number of ops:  26
compiled vars:  !0 = $codec, !1 = $input, !2 = $enc, !3 = $dec
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
  140     0  E >   NEW                                                  $4      'CTFCodec'
          1        SEND_VAL_EX                                                  ''
          2        DO_FCALL                                          0          
          3        ASSIGN                                                       !0, $4
  142     4        ASSIGN                                                       !1, ''
  144     5        INIT_METHOD_CALL                                             !0, 'encode'
          6        SEND_VAR_EX                                                  !1
          7        DO_FCALL                                          0  $8      
          8        ASSIGN                                                       !2, $8
  145     9        INIT_METHOD_CALL                                             !0, 'decode'
         10        SEND_VAR_EX                                                  !2
         11        DO_FCALL                                          0  $10     
         12        ASSIGN                                                       !3, $10
  147    13        ROPE_INIT                                         3  ~13     'Original+%3A+'
         14        ROPE_ADD                                          1  ~13     ~13, !1
         15        ROPE_END                                          2  ~12     ~13, '%0A'
         16        ECHO                                                         ~12
  148    17        ROPE_INIT                                         3  ~16     'Encod%C3%A9+%3A+'
         18        ROPE_ADD                                          1  ~16     ~16, !2
         19        ROPE_END                                          2  ~15     ~16, '%0A'
         20        ECHO                                                         ~15
  149    21        ROPE_INIT                                         3  ~19     'D%C3%A9cod%C3%A9+%3A+'
         22        ROPE_ADD                                          1  ~19     ~19, !3
         23        ROPE_END                                          2  ~18     ~19, '%0A'
         24        ECHO                                                         ~18
  151    25      > RETURN                                                       1

Class CTFCodec:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/3Nju4
function name:  __construct
number of ops:  9
compiled vars:  !0 = $key
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   11     0  E >   RECV                                                 !0      
   12     1        INIT_FCALL                                                   'hash'
          2        SEND_VAL                                                     'sha256'
          3        SEND_VAR                                                     !0
          4        SEND_VAL                                                     <true>
          5        DO_ICALL                                             $2      
          6        ASSIGN_OBJ                                                   'key'
          7        OP_DATA                                                      $2
   13     8      > RETURN                                                       null

End of function __construct

Function rotl:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/3Nju4
function name:  rotl
number of ops:  11
compiled vars:  !0 = $b, !1 = $n
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   18     0  E >   RECV                                                 !0      
          1        RECV                                                 !1      
   19     2        SL                                                   ~2      !0, !1
          3        BW_AND                                               ~3      ~2, 255
          4        SUB                                                  ~4      8, !1
          5        SR                                                   ~5      !0, ~4
          6        BW_OR                                                ~6      ~3, ~5
          7        VERIFY_RETURN_TYPE                                           ~6
          8      > RETURN                                                       ~6
   20     9*       VERIFY_RETURN_TYPE                                           
         10*     > RETURN                                                       null

End of function rotl

Function rotr:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/3Nju4
function name:  rotr
number of ops:  11
compiled vars:  !0 = $b, !1 = $n
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   25     0  E >   RECV                                                 !0      
          1        RECV                                                 !1      
   26     2        SR                                                   ~2      !0, !1
          3        SUB                                                  ~3      8, !1
          4        SL                                                   ~4      !0, ~3
          5        BW_OR                                                ~5      ~2, ~4
          6        BW_AND                                               ~6      ~5, 255
          7        VERIFY_RETURN_TYPE                                           ~6
          8      > RETURN                                                       ~6
   27     9*       VERIFY_RETURN_TYPE                                           
         10*     > RETURN                                                       null

End of function rotr

Function mask:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/3Nju4
function name:  mask
number of ops:  27
compiled vars:  !0 = $i, !1 = $seed, !2 = $h
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   32     0  E >   RECV                                                 !0      
          1        RECV                                                 !1      
   33     2        INIT_FCALL                                                   'hash'
          3        SEND_VAL                                                     'sha256'
          4        FETCH_OBJ_R                                          ~3      'key'
          5        INIT_FCALL                                                   'chr'
          6        SEND_VAR                                                     !1
          7        DO_ICALL                                             $4      
          8        CONCAT                                               ~5      ~3, $4
          9        INIT_FCALL                                                   'pack'
         10        SEND_VAL                                                     'N'
         11        SEND_VAR                                                     !0
         12        DO_ICALL                                             $6      
         13        CONCAT                                               ~7      ~5, $6
         14        SEND_VAL                                                     ~7
         15        SEND_VAL                                                     <true>
         16        DO_ICALL                                             $8      
         17        ASSIGN                                                       !2, $8
   34    18        INIT_FCALL                                                   'ord'
         19        MOD                                                  ~10     !0, 32
         20        FETCH_DIM_R                                          ~11     !2, ~10
         21        SEND_VAL                                                     ~11
         22        DO_ICALL                                             $12     
         23        VERIFY_RETURN_TYPE                                           $12
         24      > RETURN                                                       $12
   35    25*       VERIFY_RETURN_TYPE                                           
         26*     > RETURN                                                       null

End of function mask

Function l1e:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 7, Position 2 = 37
Branch analysis from position: 7
2 jumps found. (Code = 78) Position 1 = 8, Position 2 = 37
Branch analysis from position: 8
1 jumps found. (Code = 42) Position 1 = 7
Branch analysis from position: 7
Branch analysis from position: 37
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 37
filename:       /in/3Nju4
function name:  L1E
number of ops:  42
compiled vars:  !0 = $data, !1 = $seed, !2 = $out, !3 = $c, !4 = $i, !5 = $b
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   40     0  E >   RECV                                                 !0      
          1        RECV                                                 !1      
   41     2        ASSIGN                                                       !2, ''
   42     3        INIT_FCALL                                                   'str_split'
          4        SEND_VAR                                                     !0
          5        DO_ICALL                                             $7      
          6      > FE_RESET_R                                           $8      $7, ->37
          7    > > FE_FETCH_R                                           ~9      $8, !3, ->37
          8    >   ASSIGN                                                       !4, ~9
   43     9        INIT_FCALL                                                   'ord'
         10        SEND_VAR                                                     !3
         11        DO_ICALL                                             $11     
         12        ASSIGN                                                       !5, $11
   44    13        INIT_METHOD_CALL                                             'rotl'
         14        SEND_VAR                                                     !5
         15        ADD                                                  ~13     !4, !1
         16        MOD                                                  ~14     ~13, 7
         17        SEND_VAL                                                     ~14
         18        DO_FCALL                                          0  $15     
         19        ASSIGN                                                       !5, $15
   45    20        INIT_METHOD_CALL                                             'mask'
         21        SEND_VAR                                                     !4
         22        SEND_VAR                                                     !1
         23        DO_FCALL                                          0  $17     
         24        ASSIGN_OP                                        11          !5, $17
   46    25        INIT_METHOD_CALL                                             'rotr'
         26        SEND_VAR                                                     !5
         27        ADD                                                  ~19     !1, !4
         28        MOD                                                  ~20     ~19, 5
         29        SEND_VAL                                                     ~20
         30        DO_FCALL                                          0  $21     
         31        ASSIGN                                                       !5, $21
   47    32        INIT_FCALL                                                   'chr'
         33        SEND_VAR                                                     !5
         34        DO_ICALL                                             $23     
         35        ASSIGN_OP                                         8          !2, $23
   42    36      > JMP                                                          ->7
         37    >   FE_FREE                                                      $8
   49    38        VERIFY_RETURN_TYPE                                           !2
         39      > RETURN                                                       !2
   50    40*       VERIFY_RETURN_TYPE                                           
         41*     > RETURN                                                       null

End of function l1e

Function l1d:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 7, Position 2 = 37
Branch analysis from position: 7
2 jumps found. (Code = 78) Position 1 = 8, Position 2 = 37
Branch analysis from position: 8
1 jumps found. (Code = 42) Position 1 = 7
Branch analysis from position: 7
Branch analysis from position: 37
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 37
filename:       /in/3Nju4
function name:  L1D
number of ops:  42
compiled vars:  !0 = $data, !1 = $seed, !2 = $out, !3 = $c, !4 = $i, !5 = $b
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   52     0  E >   RECV                                                 !0      
          1        RECV                                                 !1      
   53     2        ASSIGN                                                       !2, ''
   54     3        INIT_FCALL                                                   'str_split'
          4        SEND_VAR                                                     !0
          5        DO_ICALL                                             $7      
          6      > FE_RESET_R                                           $8      $7, ->37
          7    > > FE_FETCH_R                                           ~9      $8, !3, ->37
          8    >   ASSIGN                                                       !4, ~9
   55     9        INIT_FCALL                                                   'ord'
         10        SEND_VAR                                                     !3
         11        DO_ICALL                                             $11     
         12        ASSIGN                                                       !5, $11
   56    13        INIT_METHOD_CALL                                             'rotl'
         14        SEND_VAR                                                     !5
         15        ADD                                                  ~13     !1, !4
         16        MOD                                                  ~14     ~13, 5
         17        SEND_VAL                                                     ~14
         18        DO_FCALL                                          0  $15     
         19        ASSIGN                                                       !5, $15
   57    20        INIT_METHOD_CALL                                             'mask'
         21        SEND_VAR                                                     !4
         22        SEND_VAR                                                     !1
         23        DO_FCALL                                          0  $17     
         24        ASSIGN_OP                                        11          !5, $17
   58    25        INIT_METHOD_CALL                                             'rotr'
         26        SEND_VAR                                                     !5
         27        ADD                                                  ~19     !4, !1
         28        MOD                                                  ~20     ~19, 7
         29        SEND_VAL                                                     ~20
         30        DO_FCALL                                          0  $21     
         31        ASSIGN                                                       !5, $21
   59    32        INIT_FCALL                                                   'chr'
         33        SEND_VAR                                                     !5
         34        DO_ICALL                                             $23     
         35        ASSIGN_OP                                         8          !2, $23
   54    36      > JMP                                                          ->7
         37    >   FE_FREE                                                      $8
   61    38        VERIFY_RETURN_TYPE                                           !2
         39      > RETURN                                                       !2
   62    40*       VERIFY_RETURN_TYPE                                           
         41*     > RETURN                                                       null

End of function l1d

Function l2e:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 29
Branch analysis from position: 29
2 jumps found. (Code = 44) Position 1 = 31, Position 2 = 10
Branch analysis from position: 31
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 10
2 jumps found. (Code = 44) Position 1 = 31, Position 2 = 10
Branch analysis from position: 31
Branch analysis from position: 10
filename:       /in/3Nju4
function name:  L2E
number of ops:  36
compiled vars:  !0 = $data, !1 = $seed, !2 = $a, !3 = $n, !4 = $i, !5 = $j
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   67     0  E >   RECV                                                 !0      
          1        RECV                                                 !1      
   68     2        INIT_FCALL                                                   'str_split'
          3        SEND_VAR                                                     !0
          4        DO_ICALL                                             $6      
          5        ASSIGN                                                       !2, $6
   69     6        COUNT                                                ~8      !2
          7        ASSIGN                                                       !3, ~8
   71     8        ASSIGN                                                       !4, 0
          9      > JMP                                                          ->29
   72    10    >   INIT_METHOD_CALL                                             'mask'
         11        SEND_VAR                                                     !4
         12        SEND_VAR                                                     !1
         13        DO_FCALL                                          0  $11     
         14        ADD                                                  ~12     $11, !1
         15        MOD                                                  ~13     ~12, !3
         16        ASSIGN                                                       !5, ~13
   73    17        FETCH_DIM_R                                          ~15     !2, !5
         18        INIT_ARRAY                                           ~16     ~15
         19        FETCH_DIM_R                                          ~17     !2, !4
         20        ADD_ARRAY_ELEMENT                                    ~16     ~17
         21        FETCH_LIST_R                                         $18     ~16, 0
         22        ASSIGN_DIM                                                   !2, !4
         23        OP_DATA                                                      $18
         24        FETCH_LIST_R                                         $20     ~16, 1
         25        ASSIGN_DIM                                                   !2, !5
         26        OP_DATA                                                      $20
         27        FREE                                                         ~16
   71    28        PRE_INC                                                      !4
         29    >   IS_SMALLER                                                   !4, !3
         30      > JMPNZ                                                        ~23, ->10
   76    31    >   FRAMELESS_ICALL_2                implode             ~24     '', !2
         32        VERIFY_RETURN_TYPE                                           ~24
         33      > RETURN                                                       ~24
   77    34*       VERIFY_RETURN_TYPE                                           
         35*     > RETURN                                                       null

End of function l2e

Function l2d:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 30
Branch analysis from position: 30
2 jumps found. (Code = 44) Position 1 = 32, Position 2 = 11
Branch analysis from position: 32
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 11
2 jumps found. (Code = 44) Position 1 = 32, Position 2 = 11
Branch analysis from position: 32
Branch analysis from position: 11
filename:       /in/3Nju4
function name:  L2D
number of ops:  37
compiled vars:  !0 = $data, !1 = $seed, !2 = $a, !3 = $n, !4 = $i, !5 = $j
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   79     0  E >   RECV                                                 !0      
          1        RECV                                                 !1      
   80     2        INIT_FCALL                                                   'str_split'
          3        SEND_VAR                                                     !0
          4        DO_ICALL                                             $6      
          5        ASSIGN                                                       !2, $6
   81     6        COUNT                                                ~8      !2
          7        ASSIGN                                                       !3, ~8
   83     8        SUB                                                  ~10     !3, 1
          9        ASSIGN                                                       !4, ~10
         10      > JMP                                                          ->30
   84    11    >   INIT_METHOD_CALL                                             'mask'
         12        SEND_VAR                                                     !4
         13        SEND_VAR                                                     !1
         14        DO_FCALL                                          0  $12     
         15        ADD                                                  ~13     $12, !1
         16        MOD                                                  ~14     ~13, !3
         17        ASSIGN                                                       !5, ~14
   85    18        FETCH_DIM_R                                          ~16     !2, !5
         19        INIT_ARRAY                                           ~17     ~16
         20        FETCH_DIM_R                                          ~18     !2, !4
         21        ADD_ARRAY_ELEMENT                                    ~17     ~18
         22        FETCH_LIST_R                                         $19     ~17, 0
         23        ASSIGN_DIM                                                   !2, !4
         24        OP_DATA                                                      $19
         25        FETCH_LIST_R                                         $21     ~17, 1
         26        ASSIGN_DIM                                                   !2, !5
         27        OP_DATA                                                      $21
         28        FREE                                                         ~17
   83    29        PRE_DEC                                                      !4
         30    >   IS_SMALLER_OR_EQUAL                                          0, !4
         31      > JMPNZ                                                        ~24, ->11
   88    32    >   FRAMELESS_ICALL_2                implode             ~25     '', !2
         33        VERIFY_RETURN_TYPE                                           ~25
         34      > RETURN                                                       ~25
   89    35*       VERIFY_RETURN_TYPE                                           
         36*     > RETURN                                                       null

End of function l2d

Function b64u_encode:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/3Nju4
function name:  b64u_encode
number of ops:  14
compiled vars:  !0 = $d
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   94     0  E >   RECV                                                 !0      
   95     1        INIT_FCALL                                                   'rtrim'
          2        INIT_FCALL                                                   'base64_encode'
          3        SEND_VAR                                                     !0
          4        DO_ICALL                                             $1      
          5        FRAMELESS_ICALL_3                strtr               ~2      $1, '%2B%2F'
          6        OP_DATA                                                      '-_'
          7        SEND_VAL                                                     ~2
          8        SEND_VAL                                                     '%3D'
          9        DO_ICALL                                             $3      
         10        VERIFY_RETURN_TYPE                                           $3
         11      > RETURN                                                       $3
   96    12*       VERIFY_RETURN_TYPE                                           
         13*     > RETURN                                                       null

End of function b64u_encode

Function b64u_decode:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 7, Position 2 = 12
Branch analysis from position: 7
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 12
filename:       /in/3Nju4
function name:  b64u_decode
number of ops:  21
compiled vars:  !0 = $d, !1 = $pad
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   98     0  E >   RECV                                                 !0      
   99     1        STRLEN                                               ~2      !0
          2        MOD                                                  ~3      ~2, 4
          3        SUB                                                  ~4      4, ~3
          4        ASSIGN                                                       !1, ~4
  100     5        IS_SMALLER                                                   !1, 4
          6      > JMPZ                                                         ~6, ->12
          7    >   INIT_FCALL                                                   'str_repeat'
          8        SEND_VAL                                                     '%3D'
          9        SEND_VAR                                                     !1
         10        DO_ICALL                                             $7      
         11        ASSIGN_OP                                         8          !0, $7
  101    12    >   INIT_FCALL                                                   'base64_decode'
         13        FRAMELESS_ICALL_3                strtr               ~9      !0, '-_'
         14        OP_DATA                                                      '%2B%2F'
         15        SEND_VAL                                                     ~9
         16        DO_ICALL                                             $10     
         17        VERIFY_RETURN_TYPE                                           $10
         18      > RETURN                                                       $10
  102    19*       VERIFY_RETURN_TYPE                                           
         20*     > RETURN                                                       null

End of function b64u_decode

Function encode:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/3Nju4
function name:  encode
number of ops:  30
compiled vars:  !0 = $msg, !1 = $seed
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
  107     0  E >   RECV                                                 !0      
  109     1        INIT_FCALL                                                   'random_int'
          2        SEND_VAL                                                     0
          3        SEND_VAL                                                     255
          4        DO_ICALL                                             $2      
          5        ASSIGN                                                       !1, $2
  111     6        INIT_METHOD_CALL                                             'L1E'
          7        SEND_VAR                                                     !0
          8        SEND_VAR                                                     !1
          9        DO_FCALL                                          0  $4      
         10        ASSIGN                                                       !0, $4
  112    11        INIT_METHOD_CALL                                             'L2E'
         12        SEND_VAR                                                     !0
         13        SEND_VAR                                                     !1
         14        DO_FCALL                                          0  $6      
         15        ASSIGN                                                       !0, $6
  114    16        INIT_METHOD_CALL                                             'b64u_encode'
         17        SEND_VAR                                                     !0
         18        DO_FCALL                                          0  $8      
         19        ASSIGN                                                       !0, $8
  116    20        INIT_FCALL                                                   'sprintf'
         21        SEND_VAL                                                     '%2502X'
         22        SEND_VAR                                                     !1
         23        DO_ICALL                                             $10     
         24        CONCAT                                               ~11     $10, '.'
         25        CONCAT                                               ~12     ~11, !0
         26        VERIFY_RETURN_TYPE                                           ~12
         27      > RETURN                                                       ~12
  117    28*       VERIFY_RETURN_TYPE                                           
         29*     > RETURN                                                       null

End of function encode

Function decode:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
166.03 ms | 1359 KiB | 24 Q