3v4l.org

run code in 300+ PHP versions simultaneously
<?php function ordutf8_step1(string $char) : int { $code = ord(substr($char, 0, 1)); if ($code >= 128) { if ($code < 224) $bytesnumber = 2; else if ($code < 240) $bytesnumber = 3; else if ($code < 248) $bytesnumber = 4; $codetemp = $code - 192 - ($bytesnumber > 2 ? 32 : 0) - ($bytesnumber > 3 ? 16 : 0); $offset = 0; for ($i = 2; $i <= $bytesnumber; $i++) { $offset ++; $code2 = ord(substr($char, $offset, 1)) - 128; $codetemp = $codetemp * 64 + $code2; } $code = $codetemp; } return $code; } function ordutf8_step2(string $char) : int { $code = ord(substr($char, 0, 1)); if ($code >= 128) { $count = 0; if ($code < 224) { $bytesnumber = 2; } else if ($code < 240) { $bytesnumber = 3; $count = 32; } else if ($code < 248) { $bytesnumber = 4; $count = 48; } $codetemp = $code - 192 - $count; $offset = 0; for ($i = 2; $i <= $bytesnumber; $i++) { $offset ++; $code2 = ord(substr($char, $offset, 1)) - 128; $codetemp = $codetemp * 64 + $code2; } $code = $codetemp; } return $code; } function ordutf8_step3(string $char) : int { $code = ord(substr($char, 0, 1)); if ($code >= 128) { $count = 0; if ($code < 224) { $bytes = 2; } else if ($code < 240) { $bytes = 3; $count = 32; } else if ($code < 248) { $bytes = 4; $count = 48; } $temp = $code - 192 - $count; for ($i = 1; $i < $bytes; $i++) { $code = $temp = $temp * 64 + ord(substr($char, $i, 1)) - 128; } } return $code; } function ordutf8_step4(string $char) : int { $code = ord(substr($char, 0, 1)); if ($code > 127) { $bytes = 2; $count = 0; if ($code > 223){ $bytes = 3; $count = 32; } if ($code > 239){ $bytes = 4; $count = 48; } $temp = $code - 192 - $count; for ($i = 1; $i < $bytes; $i++) { $code = $temp = $temp * 64 + ord(substr($char, $i, 1)) - 128; } } return $code; } function ordutf8_step5(string $char) : int { $code = ord(substr($char, 0, 1)); if ($code > 239){ return ((($code - 240) * 64 + ord(substr($char, 1, 1)) - 128) * 64 + ord(substr($char, 2, 1)) - 128) * 64 + ord(substr($char, 3, 1)) - 128; } if ($code > 223){ return (($code - 224) * 64 + ord(substr($char, 1, 1)) - 128) * 64 + ord(substr($char, 2, 1)) - 128; } if ($code > 127) { return ($code - 192) * 64 + ord(substr($char, 1, 1)) - 128; } return $code; } $cicles = 100000; $char = 'ݟ'; $time = -microtime(true); for($i = 0; $i < $cicles; $i++) { ordutf8_step1($char); } $time += microtime(true); echo $time; echo "\n"; $time = -microtime(true); for($i = 0; $i < $cicles; $i++) { ordutf8_step2($char); } $time += microtime(true); echo $time; echo "\n"; $time = -microtime(true); for($i = 0; $i < $cicles; $i++) { ordutf8_step3($char); } $time += microtime(true); echo $time; echo "\n"; $time = -microtime(true); for($i = 0; $i < $cicles; $i++) { ordutf8_step4($char); } $time += microtime(true); echo $time; echo "\n"; $time = -microtime(true); for($i = 0; $i < $cicles; $i++) { ordutf8_step5($char); } $time += microtime(true); echo $time;
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 13
Branch analysis from position: 13
2 jumps found. (Code = 44) Position 1 = 15, Position 2 = 9
Branch analysis from position: 15
1 jumps found. (Code = 42) Position 1 = 32
Branch analysis from position: 32
2 jumps found. (Code = 44) Position 1 = 34, Position 2 = 28
Branch analysis from position: 34
1 jumps found. (Code = 42) Position 1 = 51
Branch analysis from position: 51
2 jumps found. (Code = 44) Position 1 = 53, Position 2 = 47
Branch analysis from position: 53
1 jumps found. (Code = 42) Position 1 = 70
Branch analysis from position: 70
2 jumps found. (Code = 44) Position 1 = 72, Position 2 = 66
Branch analysis from position: 72
1 jumps found. (Code = 42) Position 1 = 89
Branch analysis from position: 89
2 jumps found. (Code = 44) Position 1 = 91, Position 2 = 85
Branch analysis from position: 91
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 85
2 jumps found. (Code = 44) Position 1 = 91, Position 2 = 85
Branch analysis from position: 91
Branch analysis from position: 85
Branch analysis from position: 66
2 jumps found. (Code = 44) Position 1 = 72, Position 2 = 66
Branch analysis from position: 72
Branch analysis from position: 66
Branch analysis from position: 47
2 jumps found. (Code = 44) Position 1 = 53, Position 2 = 47
Branch analysis from position: 53
Branch analysis from position: 47
Branch analysis from position: 28
2 jumps found. (Code = 44) Position 1 = 34, Position 2 = 28
Branch analysis from position: 34
Branch analysis from position: 28
Branch analysis from position: 9
2 jumps found. (Code = 44) Position 1 = 15, Position 2 = 9
Branch analysis from position: 15
Branch analysis from position: 9
filename:       /in/TWFLX
function name:  (null)
number of ops:  97
compiled vars:  !0 = $cicles, !1 = $char, !2 = $time, !3 = $i
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  143     0  E >   ASSIGN                                                   !0, 100000
  144     1        ASSIGN                                                   !1, '%DD%9F'
  147     2        INIT_FCALL                                               'microtime'
          3        SEND_VAL                                                 <true>
          4        DO_ICALL                                         $6      
          5        MUL                                              ~7      $6, -1
          6        ASSIGN                                                   !2, ~7
  148     7        ASSIGN                                                   !3, 0
          8      > JMP                                                      ->13
  149     9    >   INIT_FCALL                                               'ordutf8_step1'
         10        SEND_VAR                                                 !1
         11        DO_FCALL                                      0          
  148    12        PRE_INC                                                  !3
         13    >   IS_SMALLER                                               !3, !0
         14      > JMPNZ                                                    ~12, ->9
  151    15    >   INIT_FCALL                                               'microtime'
         16        SEND_VAL                                                 <true>
         17        DO_ICALL                                         $13     
         18        ASSIGN_OP                                     1          !2, $13
  153    19        ECHO                                                     !2
  154    20        ECHO                                                     '%0A'
  156    21        INIT_FCALL                                               'microtime'
         22        SEND_VAL                                                 <true>
         23        DO_ICALL                                         $15     
         24        MUL                                              ~16     $15, -1
         25        ASSIGN                                                   !2, ~16
  157    26        ASSIGN                                                   !3, 0
         27      > JMP                                                      ->32
  158    28    >   INIT_FCALL                                               'ordutf8_step2'
         29        SEND_VAR                                                 !1
         30        DO_FCALL                                      0          
  157    31        PRE_INC                                                  !3
         32    >   IS_SMALLER                                               !3, !0
         33      > JMPNZ                                                    ~21, ->28
  160    34    >   INIT_FCALL                                               'microtime'
         35        SEND_VAL                                                 <true>
         36        DO_ICALL                                         $22     
         37        ASSIGN_OP                                     1          !2, $22
  162    38        ECHO                                                     !2
  163    39        ECHO                                                     '%0A'
  165    40        INIT_FCALL                                               'microtime'
         41        SEND_VAL                                                 <true>
         42        DO_ICALL                                         $24     
         43        MUL                                              ~25     $24, -1
         44        ASSIGN                                                   !2, ~25
  166    45        ASSIGN                                                   !3, 0
         46      > JMP                                                      ->51
  167    47    >   INIT_FCALL                                               'ordutf8_step3'
         48        SEND_VAR                                                 !1
         49        DO_FCALL                                      0          
  166    50        PRE_INC                                                  !3
         51    >   IS_SMALLER                                               !3, !0
         52      > JMPNZ                                                    ~30, ->47
  169    53    >   INIT_FCALL                                               'microtime'
         54        SEND_VAL                                                 <true>
         55        DO_ICALL                                         $31     
         56        ASSIGN_OP                                     1          !2, $31
  171    57        ECHO                                                     !2
  172    58        ECHO                                                     '%0A'
  174    59        INIT_FCALL                                               'microtime'
         60        SEND_VAL                                                 <true>
         61        DO_ICALL                                         $33     
         62        MUL                                              ~34     $33, -1
         63        ASSIGN                                                   !2, ~34
  175    64        ASSIGN                                                   !3, 0
         65      > JMP                                                      ->70
  176    66    >   INIT_FCALL                                               'ordutf8_step4'
         67        SEND_VAR                                                 !1
         68        DO_FCALL                                      0          
  175    69        PRE_INC                                                  !3
         70    >   IS_SMALLER                                               !3, !0
         71      > JMPNZ                                                    ~39, ->66
  178    72    >   INIT_FCALL                                               'microtime'
         73        SEND_VAL                                                 <true>
         74        DO_ICALL                                         $40     
         75        ASSIGN_OP                                     1          !2, $40
  180    76        ECHO                                                     !2
  181    77        ECHO                                                     '%0A'
  183    78        INIT_FCALL                                               'microtime'
         79        SEND_VAL                                                 <true>
         80        DO_ICALL                                         $42     
         81        MUL                                              ~43     $42, -1
         82        ASSIGN                                                   !2, ~43
  184    83        ASSIGN                                                   !3, 0
         84      > JMP                                                      ->89
  185    85    >   INIT_FCALL                                               'ordutf8_step5'
         86        SEND_VAR                                                 !1
         87        DO_FCALL                                      0          
  184    88        PRE_INC                                                  !3
         89    >   IS_SMALLER                                               !3, !0
         90      > JMPNZ                                                    ~48, ->85
  187    91    >   INIT_FCALL                                               'microtime'
         92        SEND_VAL                                                 <true>
         93        DO_ICALL                                         $49     
         94        ASSIGN_OP                                     1          !2, $49
  189    95        ECHO                                                     !2
         96      > RETURN                                                   1

Function ordutf8_step1:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 58
Branch analysis from position: 12
2 jumps found. (Code = 43) Position 1 = 14, Position 2 = 16
Branch analysis from position: 14
1 jumps found. (Code = 42) Position 1 = 23
Branch analysis from position: 23
2 jumps found. (Code = 43) Position 1 = 26, Position 2 = 28
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 29
Branch analysis from position: 29
2 jumps found. (Code = 43) Position 1 = 32, Position 2 = 34
Branch analysis from position: 32
1 jumps found. (Code = 42) Position 1 = 35
Branch analysis from position: 35
1 jumps found. (Code = 42) Position 1 = 55
Branch analysis from position: 55
2 jumps found. (Code = 44) Position 1 = 57, Position 2 = 40
Branch analysis from position: 57
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 40
2 jumps found. (Code = 44) Position 1 = 57, Position 2 = 40
Branch analysis from position: 57
Branch analysis from position: 40
Branch analysis from position: 34
1 jumps found. (Code = 42) Position 1 = 55
Branch analysis from position: 55
Branch analysis from position: 28
2 jumps found. (Code = 43) Position 1 = 32, Position 2 = 34
Branch analysis from position: 32
Branch analysis from position: 34
Branch analysis from position: 16
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 20
Branch analysis from position: 18
1 jumps found. (Code = 42) Position 1 = 23
Branch analysis from position: 23
Branch analysis from position: 20
2 jumps found. (Code = 43) Position 1 = 22, Position 2 = 23
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 26, Position 2 = 28
Branch analysis from position: 26
Branch analysis from position: 28
Branch analysis from position: 23
Branch analysis from position: 58
filename:       /in/TWFLX
function name:  ordutf8_step1
number of ops:  62
compiled vars:  !0 = $char, !1 = $code, !2 = $bytesnumber, !3 = $codetemp, !4 = $offset, !5 = $i, !6 = $code2
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
    5     1        INIT_FCALL                                               'ord'
          2        INIT_FCALL                                               'substr'
          3        SEND_VAR                                                 !0
          4        SEND_VAL                                                 0
          5        SEND_VAL                                                 1
          6        DO_ICALL                                         $7      
          7        SEND_VAR                                                 $7
          8        DO_ICALL                                         $8      
          9        ASSIGN                                                   !1, $8
    7    10        IS_SMALLER_OR_EQUAL                                      128, !1
         11      > JMPZ                                                     ~10, ->58
    9    12    >   IS_SMALLER                                               !1, 224
         13      > JMPZ                                                     ~11, ->16
   10    14    >   ASSIGN                                                   !2, 2
    9    15      > JMP                                                      ->23
   11    16    >   IS_SMALLER                                               !1, 240
         17      > JMPZ                                                     ~13, ->20
   12    18    >   ASSIGN                                                   !2, 3
   11    19      > JMP                                                      ->23
   13    20    >   IS_SMALLER                                               !1, 248
         21      > JMPZ                                                     ~15, ->23
   14    22    >   ASSIGN                                                   !2, 4
   16    23    >   SUB                                              ~17     !1, 192
         24        IS_SMALLER                                               2, !2
         25      > JMPZ                                                     ~18, ->28
         26    >   QM_ASSIGN                                        ~19     32
         27      > JMP                                                      ->29
         28    >   QM_ASSIGN                                        ~19     0
         29    >   SUB                                              ~20     ~17, ~19
         30        IS_SMALLER                                               3, !2
         31      > JMPZ                                                     ~21, ->34
         32    >   QM_ASSIGN                                        ~22     16
         33      > JMP                                                      ->35
         34    >   QM_ASSIGN                                        ~22     0
         35    >   SUB                                              ~23     ~20, ~22
         36        ASSIGN                                                   !3, ~23
   18    37        ASSIGN                                                   !4, 0
   20    38        ASSIGN                                                   !5, 2
         39      > JMP                                                      ->55
   21    40    >   PRE_INC                                                  !4
   22    41        INIT_FCALL                                               'ord'
         42        INIT_FCALL                                               'substr'
         43        SEND_VAR                                                 !0
         44        SEND_VAR                                                 !4
         45        SEND_VAL                                                 1
         46        DO_ICALL                                         $28     
         47        SEND_VAR                                                 $28
         48        DO_ICALL                                         $29     
         49        SUB                                              ~30     $29, 128
         50        ASSIGN                                                   !6, ~30
   23    51        MUL                                              ~32     !3, 64
         52        ADD                                              ~33     ~32, !6
         53        ASSIGN                                                   !3, ~33
   20    54        PRE_INC                                                  !5
         55    >   IS_SMALLER_OR_EQUAL                                      !5, !2
         56      > JMPNZ                                                    ~36, ->40
   26    57    >   ASSIGN                                                   !1, !3
   29    58    >   VERIFY_RETURN_TYPE                                       !1
         59      > RETURN                                                   !1
   30    60*       VERIFY_RETURN_TYPE                                       
         61*     > RETURN                                                   null

End of function ordutf8_step1

Function ordutf8_step2:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 50
Branch analysis from position: 12
2 jumps found. (Code = 43) Position 1 = 15, Position 2 = 17
Branch analysis from position: 15
1 jumps found. (Code = 42) Position 1 = 26
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 47
Branch analysis from position: 47
2 jumps found. (Code = 44) Position 1 = 49, Position 2 = 32
Branch analysis from position: 49
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 32
2 jumps found. (Code = 44) Position 1 = 49, Position 2 = 32
Branch analysis from position: 49
Branch analysis from position: 32
Branch analysis from position: 17
2 jumps found. (Code = 43) Position 1 = 19, Position 2 = 22
Branch analysis from position: 19
1 jumps found. (Code = 42) Position 1 = 26
Branch analysis from position: 26
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 24, Position 2 = 26
Branch analysis from position: 24
1 jumps found. (Code = 42) Position 1 = 47
Branch analysis from position: 47
Branch analysis from position: 26
Branch analysis from position: 50
filename:       /in/TWFLX
function name:  ordutf8_step2
number of ops:  54
compiled vars:  !0 = $char, !1 = $code, !2 = $count, !3 = $bytesnumber, !4 = $codetemp, !5 = $offset, !6 = $i, !7 = $code2
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   32     0  E >   RECV                                             !0      
   34     1        INIT_FCALL                                               'ord'
          2        INIT_FCALL                                               'substr'
          3        SEND_VAR                                                 !0
          4        SEND_VAL                                                 0
          5        SEND_VAL                                                 1
          6        DO_ICALL                                         $8      
          7        SEND_VAR                                                 $8
          8        DO_ICALL                                         $9      
          9        ASSIGN                                                   !1, $9
   36    10        IS_SMALLER_OR_EQUAL                                      128, !1
         11      > JMPZ                                                     ~11, ->50
   37    12    >   ASSIGN                                                   !2, 0
   39    13        IS_SMALLER                                               !1, 224
         14      > JMPZ                                                     ~13, ->17
   40    15    >   ASSIGN                                                   !3, 2
   39    16      > JMP                                                      ->26
   41    17    >   IS_SMALLER                                               !1, 240
         18      > JMPZ                                                     ~15, ->22
   42    19    >   ASSIGN                                                   !3, 3
   43    20        ASSIGN                                                   !2, 32
   41    21      > JMP                                                      ->26
   44    22    >   IS_SMALLER                                               !1, 248
         23      > JMPZ                                                     ~18, ->26
   45    24    >   ASSIGN                                                   !3, 4
   46    25        ASSIGN                                                   !2, 48
   49    26    >   SUB                                              ~21     !1, 192
         27        SUB                                              ~22     ~21, !2
         28        ASSIGN                                                   !4, ~22
   51    29        ASSIGN                                                   !5, 0
   53    30        ASSIGN                                                   !6, 2
         31      > JMP                                                      ->47
   54    32    >   PRE_INC                                                  !5
   55    33        INIT_FCALL                                               'ord'
         34        INIT_FCALL                                               'substr'
         35        SEND_VAR                                                 !0
         36        SEND_VAR                                                 !5
         37        SEND_VAL                                                 1
         38        DO_ICALL                                         $27     
         39        SEND_VAR                                                 $27
         40        DO_ICALL                                         $28     
         41        SUB                                              ~29     $28, 128
         42        ASSIGN                                                   !7, ~29
   56    43        MUL                                              ~31     !4, 64
         44        ADD                                              ~32     ~31, !7
         45        ASSIGN                                                   !4, ~32
   53    46        PRE_INC                                                  !6
         47    >   IS_SMALLER_OR_EQUAL                                      !6, !3
         48      > JMPNZ                                                    ~35, ->32
   59    49    >   ASSIGN                                                   !1, !4
   62    50    >   VERIFY_RETURN_TYPE                                       !1
         51      > RETURN                                                   !1
   63    52*       VERIFY_RETURN_TYPE                                       
         53*     > RETURN                                                   null

End of function ordutf8_step2

Function ordutf8_step3:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 47
Branch analysis from position: 12
2 jumps found. (Code = 43) Position 1 = 15, Position 2 = 17
Branch analysis from position: 15
1 jumps found. (Code = 42) Position 1 = 26
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 45
Branch analysis from position: 45
2 jumps found. (Code = 44) Position 1 = 47, Position 2 = 31
Branch analysis from position: 47
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 31
2 jumps found. (Code = 44) Position 1 = 47, Position 2 = 31
Branch analysis from position: 47
Branch analysis from position: 31
Branch analysis from position: 17
2 jumps found. (Code = 43) Position 1 = 19, Position 2 = 22
Branch analysis from position: 19
1 jumps found. (Code = 42) Position 1 = 26
Branch analysis from position: 26
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 24, Position 2 = 26
Branch analysis from position: 24
1 jumps found. (Code = 42) Position 1 = 45
Branch analysis from position: 45
Branch analysis from position: 26
Branch analysis from position: 47
filename:       /in/TWFLX
function name:  ordutf8_step3
number of ops:  51
compiled vars:  !0 = $char, !1 = $code, !2 = $count, !3 = $bytes, !4 = $temp, !5 = $i
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   65     0  E >   RECV                                             !0      
   67     1        INIT_FCALL                                               'ord'
          2        INIT_FCALL                                               'substr'
          3        SEND_VAR                                                 !0
          4        SEND_VAL                                                 0
          5        SEND_VAL                                                 1
          6        DO_ICALL                                         $6      
          7        SEND_VAR                                                 $6
          8        DO_ICALL                                         $7      
          9        ASSIGN                                                   !1, $7
   69    10        IS_SMALLER_OR_EQUAL                                      128, !1
         11      > JMPZ                                                     ~9, ->47
   70    12    >   ASSIGN                                                   !2, 0
   72    13        IS_SMALLER                                               !1, 224
         14      > JMPZ                                                     ~11, ->17
   73    15    >   ASSIGN                                                   !3, 2
   72    16      > JMP                                                      ->26
   74    17    >   IS_SMALLER                                               !1, 240
         18      > JMPZ                                                     ~13, ->22
   75    19    >   ASSIGN                                                   !3, 3
   76    20        ASSIGN                                                   !2, 32
   74    21      > JMP                                                      ->26
   77    22    >   IS_SMALLER                                               !1, 248
         23      > JMPZ                                                     ~16, ->26
   78    24    >   ASSIGN                                                   !3, 4
   79    25        ASSIGN                                                   !2, 48
   82    26    >   SUB                                              ~19     !1, 192
         27        SUB                                              ~20     ~19, !2
         28        ASSIGN                                                   !4, ~20
   84    29        ASSIGN                                                   !5, 1
         30      > JMP                                                      ->45
   85    31    >   MUL                                              ~23     !4, 64
         32        INIT_FCALL                                               'ord'
         33        INIT_FCALL                                               'substr'
         34        SEND_VAR                                                 !0
         35        SEND_VAR                                                 !5
         36        SEND_VAL                                                 1
         37        DO_ICALL                                         $24     
         38        SEND_VAR                                                 $24
         39        DO_ICALL                                         $25     
         40        ADD                                              ~26     ~23, $25
         41        SUB                                              ~27     ~26, 128
         42        ASSIGN                                           ~28     !4, ~27
         43        ASSIGN                                                   !1, ~28
   84    44        PRE_INC                                                  !5
         45    >   IS_SMALLER                                               !5, !3
         46      > JMPNZ                                                    ~31, ->31
   89    47    >   VERIFY_RETURN_TYPE                                       !1
         48      > RETURN                                                   !1
   90    49*       VERIFY_RETURN_TYPE                                       
         50*     > RETURN                                                   null

End of function ordutf8_step3

Function ordutf8_step4:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 43
Branch analysis from position: 12
2 jumps found. (Code = 43) Position 1 = 16, Position 2 = 18
Branch analysis from position: 16
2 jumps found. (Code = 43) Position 1 = 20, Position 2 = 22
Branch analysis from position: 20
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
2 jumps found. (Code = 44) Position 1 = 43, Position 2 = 27
Branch analysis from position: 43
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 27
2 jumps found. (Code = 44) Position 1 = 43, Position 2 = 27
Branch analysis from position: 43
Branch analysis from position: 27
Branch analysis from position: 22
Branch analysis from position: 18
Branch analysis from position: 43
filename:       /in/TWFLX
function name:  ordutf8_step4
number of ops:  47
compiled vars:  !0 = $char, !1 = $code, !2 = $bytes, !3 = $count, !4 = $temp, !5 = $i
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   92     0  E >   RECV                                             !0      
   94     1        INIT_FCALL                                               'ord'
          2        INIT_FCALL                                               'substr'
          3        SEND_VAR                                                 !0
          4        SEND_VAL                                                 0
          5        SEND_VAL                                                 1
          6        DO_ICALL                                         $6      
          7        SEND_VAR                                                 $6
          8        DO_ICALL                                         $7      
          9        ASSIGN                                                   !1, $7
   96    10        IS_SMALLER                                               127, !1
         11      > JMPZ                                                     ~9, ->43
   98    12    >   ASSIGN                                                   !2, 2
   99    13        ASSIGN                                                   !3, 0
  101    14        IS_SMALLER                                               223, !1
         15      > JMPZ                                                     ~12, ->18
  102    16    >   ASSIGN                                                   !2, 3
  103    17        ASSIGN                                                   !3, 32
  106    18    >   IS_SMALLER                                               239, !1
         19      > JMPZ                                                     ~15, ->22
  107    20    >   ASSIGN                                                   !2, 4
  108    21        ASSIGN                                                   !3, 48
  111    22    >   SUB                                              ~18     !1, 192
         23        SUB                                              ~19     ~18, !3
         24        ASSIGN                                                   !4, ~19
  113    25        ASSIGN                                                   !5, 1
         26      > JMP                                                      ->41
  114    27    >   MUL                                              ~22     !4, 64
         28        INIT_FCALL                                               'ord'
         29        INIT_FCALL                                               'substr'
         30        SEND_VAR          

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
139.47 ms | 1474 KiB | 21 Q