3v4l.org

run code in 300+ PHP versions simultaneously
<?php echo '<html><body>'; echo '<h1>IPv6 Address Summarization Calculator</h1>'; echo 'Instructions:<br>'; echo 'Enter a list of IPv6 addresses or prefixes you\'d like to summarize.<br>'; echo 'You can enter the addresses in compressed or full notation.<br>'; echo '<br>Example:<br>'; echo '2001:CC1E:2AB3:1A3C::<br>'; echo '2001:CC1E:2AB3:1A4D::<br>'; echo 'or<br>'; echo '2606:A700:ABC7:0001::<br>'; echo '2606:A700:ABC7:0002::<br>'; echo '2606:A700:ABC7:0003::<br><br>'; echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">'; echo '<textarea id="ip" name="ip" rows="20" cols="70">'; if (isset($_POST['ip'])) { echo $_POST['ip']; } echo '</textarea>'; echo '<p></p>'; echo '<input type="submit">'; echo '<input type="hidden" name="submitted" id="submitted"></input>'; echo '</form>'; echo '<p></p>'; if(isset($_POST["submitted"]) && $_POST['ip'] != "") { $addr_count = 0; $binary_ip = array(); $search="/^(?>(?>([a-f0-9]{1,4})(?>:(?1)){7}|(?!(?:.*[a-f0-9](?>:|$)){8,})((?1)(?>:(?1)){0,6})?::(?2)?)|(?>(?>(?1)(?>:(?1)){5}:|(?!(?:.*[a-f0-9]:){6,})(?3)?::(?>((?1)(?>:(?1)){0,4}):)?)?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?4)){3}))$/iD"; $hexarray=array('0' => '0000', '1' => '0001', '2' => '0010', '3' => '0011', '4' => '0100', '5' => '0101', '6' => '0110', '7' => '0111', '8' => '1000', '9' => '1001', 'A' => '1010', 'B' => '1011', 'C' => '1100', 'D' => '1101', 'E' => '1110', 'F' => '1111'); $result=explode(PHP_EOL,trim($_POST['ip'])); foreach ($result as $ip) { if (strpos($ip, '::') !== false) { $part = explode('::', $ip); $part[0] = explode(':', $part[0]); $missing = array(); for ($i = 0; $i < (8 - (count($part[0]) )); $i++) array_push($missing, '0000'); $part = array_merge($part[0], $missing); $newip = ""; $cnt=1; foreach($part as $piece) { if($cnt < 8) { $newip .= $piece.":"; } if($cnt == 8) { $newip .= $piece; } $cnt++; } $ip=$newip; } if(preg_match($search, $ip)) { $addr_count++; $ip = expand($ip); $ip=str_replace(":","",$ip); $fixed_ip_arr=str_split($ip,1); $cnt=0; $fullbinaryip = ""; foreach($fixed_ip_arr as $digit) { $echoip = $hexarray[strtoupper($digit)]; $cnt++; if($cnt % 4 == 0 && $cnt != 32) { $echoip .= ":"; } $fullbinaryip .= $echoip; } array_push($binary_ip, $fullbinaryip); } else { echo "$ip is not in the correct format. If you pasted only a prefix, make sure you end it with ::. I'll ignore it and continue processing.<br>"; } } if($addr_count == 0) { echo "<br>You didn't enter any valid addresses. Please try again.<br>"; exit; } echo "<br>Your addresses in binary form:<br>"; if(count($binary_ip) < 50) { foreach($binary_ip as $value) { echo $value."<br>"; } } else { echo "I don't want to spam you, so I'm not printing all the addresses!<br>"; } $summary = _commonPrefix(str_replace(":","",$binary_ip)); echo "<br>These addresses can be summarized to: <br>"; $final_summary = rtrim(chunk_split(substr(str_replace(":","",$binary_ip['0']),0,$summary), 16, ':'),':'); echo $final_summary."/$summary<br>"; $summary_normal = explode(':', $final_summary); $final_summary_normal = ""; foreach($summary_normal as $block) { $block_smaller = str_split($block, 4); foreach($block_smaller as $tiny) { while (strlen($tiny) < 4) { $tiny .= "0"; } $final_summary_normal .= array_search($tiny, $hexarray); } } echo "You can use this in your router summary statements:<br>"; echo rtrim(chunk_split($final_summary_normal, 4, ':'),':')."/$summary"; } echo '</body>'; echo '</html>'; function expand($ip){ $hex = unpack("H*hex", inet_pton($ip)); $ip = substr(preg_replace("/([A-f0-9]{4})/", "$1:", $hex['hex']), 0, -1); return $ip; } function _commonPrefix($array) { if(count($array) < 2) { if(count($array) == 0) return false; // empty array: undefined prefix else return strlen($array[0]); // 1 element: trivial case } $len = max(array_map('strlen',$array)); // initial upper limit: max length of all strings. $prevval = reset($array); while(($newval = next($array)) !== FALSE) { for($j = 0 ; $j < $len ; $j += 1) if($newval[$j] != $prevval[$j]) $len = $j; $prevval = $newval; } return $len; } ?>
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 21, Position 2 = 24
Branch analysis from position: 21
2 jumps found. (Code = 46) Position 1 = 33, Position 2 = 37
Branch analysis from position: 33
2 jumps found. (Code = 43) Position 1 = 38, Position 2 = 252
Branch analysis from position: 38
2 jumps found. (Code = 77) Position 1 = 53, Position 2 = 156
Branch analysis from position: 53
2 jumps found. (Code = 78) Position 1 = 54, Position 2 = 156
Branch analysis from position: 54
2 jumps found. (Code = 43) Position 1 = 60, Position 2 = 106
Branch analysis from position: 60
1 jumps found. (Code = 42) Position 1 = 80
Branch analysis from position: 80
2 jumps found. (Code = 44) Position 1 = 85, Position 2 = 75
Branch analysis from position: 85
2 jumps found. (Code = 77) Position 1 = 94, Position 2 = 104
Branch analysis from position: 94
2 jumps found. (Code = 78) Position 1 = 95, Position 2 = 104
Branch analysis from position: 95
2 jumps found. (Code = 43) Position 1 = 97, Position 2 = 99
Branch analysis from position: 97
2 jumps found. (Code = 43) Position 1 = 101, Position 2 = 102
Branch analysis from position: 101
1 jumps found. (Code = 42) Position 1 = 94
Branch analysis from position: 94
Branch analysis from position: 102
Branch analysis from position: 99
Branch analysis from position: 104
2 jumps found. (Code = 43) Position 1 = 111, Position 2 = 152
Branch analysis from position: 111
2 jumps found. (Code = 77) Position 1 = 130, Position 2 = 146
Branch analysis from position: 130
2 jumps found. (Code = 78) Position 1 = 131, Position 2 = 146
Branch analysis from position: 131
2 jumps found. (Code = 46) Position 1 = 140, Position 2 = 142
Branch analysis from position: 140
2 jumps found. (Code = 43) Position 1 = 143, Position 2 = 144
Branch analysis from position: 143
1 jumps found. (Code = 42) Position 1 = 130
Branch analysis from position: 130
Branch analysis from position: 144
Branch analysis from position: 142
Branch analysis from position: 146
1 jumps found. (Code = 42) Position 1 = 155
Branch analysis from position: 155
1 jumps found. (Code = 42) Position 1 = 53
Branch analysis from position: 53
Branch analysis from position: 146
Branch analysis from position: 152
1 jumps found. (Code = 42) Position 1 = 53
Branch analysis from position: 53
Branch analysis from position: 104
Branch analysis from position: 75
2 jumps found. (Code = 44) Position 1 = 85, Position 2 = 75
Branch analysis from position: 85
Branch analysis from position: 75
Branch analysis from position: 106
Branch analysis from position: 156
2 jumps found. (Code = 43) Position 1 = 159, Position 2 = 161
Branch analysis from position: 159
1 jumps found. (Code = 79) Position 1 = -2
Branch analysis from position: 161
2 jumps found. (Code = 43) Position 1 = 165, Position 2 = 172
Branch analysis from position: 165
2 jumps found. (Code = 77) Position 1 = 166, Position 2 = 170
Branch analysis from position: 166
2 jumps found. (Code = 78) Position 1 = 167, Position 2 = 170
Branch analysis from position: 167
1 jumps found. (Code = 42) Position 1 = 166
Branch analysis from position: 166
Branch analysis from position: 170
1 jumps found. (Code = 42) Position 1 = 173
Branch analysis from position: 173
2 jumps found. (Code = 77) Position 1 = 216, Position 2 = 237
Branch analysis from position: 216
2 jumps found. (Code = 78) Position 1 = 217, Position 2 = 237
Branch analysis from position: 217
2 jumps found. (Code = 77) Position 1 = 223, Position 2 = 235
Branch analysis from position: 223
2 jumps found. (Code = 78) Position 1 = 224, Position 2 = 235
Branch analysis from position: 224
1 jumps found. (Code = 42) Position 1 = 226
Branch analysis from position: 226
2 jumps found. (Code = 44) Position 1 = 229, Position 2 = 225
Branch analysis from position: 229
1 jumps found. (Code = 42) Position 1 = 223
Branch analysis from position: 223
Branch analysis from position: 225
2 jumps found. (Code = 44) Position 1 = 229, Position 2 = 225
Branch analysis from position: 229
Branch analysis from position: 225
Branch analysis from position: 235
1 jumps found. (Code = 42) Position 1 = 216
Branch analysis from position: 216
Branch analysis from position: 235
Branch analysis from position: 237
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 237
Branch analysis from position: 170
Branch analysis from position: 172
2 jumps found. (Code = 77) Position 1 = 216, Position 2 = 237
Branch analysis from position: 216
Branch analysis from position: 237
Branch analysis from position: 156
Branch analysis from position: 252
Branch analysis from position: 37
Branch analysis from position: 24
filename:       /in/Pv0Xc
function name:  (null)
number of ops:  255
compiled vars:  !0 = $addr_count, !1 = $binary_ip, !2 = $search, !3 = $hexarray, !4 = $result, !5 = $ip, !6 = $part, !7 = $missing, !8 = $i, !9 = $newip, !10 = $cnt, !11 = $piece, !12 = $fixed_ip_arr, !13 = $fullbinaryip, !14 = $digit, !15 = $echoip, !16 = $value, !17 = $summary, !18 = $final_summary, !19 = $summary_normal, !20 = $final_summary_normal, !21 = $block, !22 = $block_smaller, !23 = $tiny
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   ECHO                                                     '%3Chtml%3E%3Cbody%3E'
    3     1        ECHO                                                     '%3Ch1%3EIPv6+Address+Summarization+Calculator%3C%2Fh1%3E'
    4     2        ECHO                                                     'Instructions%3A%3Cbr%3E'
    5     3        ECHO                                                     'Enter+a+list+of+IPv6+addresses+or+prefixes+you%27d+like+to+summarize.%3Cbr%3E'
    6     4        ECHO                                                     'You+can+enter+the+addresses+in+compressed+or+full+notation.%3Cbr%3E'
    7     5        ECHO                                                     '%3Cbr%3EExample%3A%3Cbr%3E'
    8     6        ECHO                                                     '2001%3ACC1E%3A2AB3%3A1A3C%3A%3A%3Cbr%3E'
    9     7        ECHO                                                     '2001%3ACC1E%3A2AB3%3A1A4D%3A%3A%3Cbr%3E'
   10     8        ECHO                                                     'or%3Cbr%3E'
   11     9        ECHO                                                     '2606%3AA700%3AABC7%3A0001%3A%3A%3Cbr%3E'
   12    10        ECHO                                                     '2606%3AA700%3AABC7%3A0002%3A%3A%3Cbr%3E'
   13    11        ECHO                                                     '2606%3AA700%3AABC7%3A0003%3A%3A%3Cbr%3E%3Cbr%3E'
   14    12        FETCH_R                      global              ~24     '_SERVER'
         13        FETCH_DIM_R                                      ~25     ~24, 'PHP_SELF'
         14        CONCAT                                           ~26     '%3Cform+action%3D%22', ~25
         15        CONCAT                                           ~27     ~26, '%22+method%3D%22post%22%3E'
         16        ECHO                                                     ~27
   15    17        ECHO                                                     '%3Ctextarea+id%3D%22ip%22+name%3D%22ip%22+rows%3D%2220%22+cols%3D%2270%22%3E'
   16    18        FETCH_IS                                         ~28     '_POST'
         19        ISSET_ISEMPTY_DIM_OBJ                         0          ~28, 'ip'
         20      > JMPZ                                                     ~29, ->24
         21    >   FETCH_R                      global              ~30     '_POST'
         22        FETCH_DIM_R                                      ~31     ~30, 'ip'
         23        ECHO                                                     ~31
   17    24    >   ECHO                                                     '%3C%2Ftextarea%3E'
   18    25        ECHO                                                     '%3Cp%3E%3C%2Fp%3E'
   19    26        ECHO                                                     '%3Cinput+type%3D%22submit%22%3E'
   20    27        ECHO                                                     '%3Cinput+type%3D%22hidden%22+name%3D%22submitted%22+id%3D%22submitted%22%3E%3C%2Finput%3E'
   21    28        ECHO                                                     '%3C%2Fform%3E'
   22    29        ECHO                                                     '%3Cp%3E%3C%2Fp%3E'
   23    30        FETCH_IS                                         ~32     '_POST'
         31        ISSET_ISEMPTY_DIM_OBJ                         0  ~33     ~32, 'submitted'
         32      > JMPZ_EX                                          ~33     ~33, ->37
         33    >   FETCH_R                      global              ~34     '_POST'
         34        FETCH_DIM_R                                      ~35     ~34, 'ip'
         35        IS_NOT_EQUAL                                     ~36     ~35, ''
         36        BOOL                                             ~33     ~36
         37    > > JMPZ                                                     ~33, ->252
   24    38    >   ASSIGN                                                   !0, 0
   25    39        ASSIGN                                                   !1, <array>
   26    40        ASSIGN                                                   !2, '%2F%5E%28%3F%3E%28%3F%3E%28%5Ba-f0-9%5D%7B1%2C4%7D%29%28%3F%3E%3A%28%3F1%29%29%7B7%7D%7C%28%3F%21%28%3F%3A.%2A%5Ba-f0-9%5D%28%3F%3E%3A%7C%24%29%29%7B8%2C%7D%29%28%28%3F1%29%28%3F%3E%3A%28%3F1%29%29%7B0%2C6%7D%29%3F%3A%3A%28%3F2%29%3F%29%7C%28%3F%3E%28%3F%3E%28%3F1%29%28%3F%3E%3A%28%3F1%29%29%7B5%7D%3A%7C%28%3F%21%28%3F%3A.%2A%5Ba-f0-9%5D%3A%29%7B6%2C%7D%29%28%3F3%29%3F%3A%3A%28%3F%3E%28%28%3F1%29%28%3F%3E%3A%28%3F1%29%29%7B0%2C4%7D%29%3A%29%3F%29%3F%2825%5B0-5%5D%7C2%5B0-4%5D%5B0-9%5D%7C1%5B0-9%5D%7B2%7D%7C%5B1-9%5D%3F%5B0-9%5D%29%28%3F%3E%5C.%28%3F4%29%29%7B3%7D%29%29%24%2FiD'
   27    41        ASSIGN                                                   !3, <array>
   28    42        INIT_FCALL                                               'explode'
         43        SEND_VAL                                                 '%0A'
         44        INIT_FCALL                                               'trim'
         45        FETCH_R                      global              ~41     '_POST'
         46        FETCH_DIM_R                                      ~42     ~41, 'ip'
         47        SEND_VAL                                                 ~42
         48        DO_ICALL                                         $43     
         49        SEND_VAR                                                 $43
         50        DO_ICALL                                         $44     
         51        ASSIGN                                                   !4, $44
   29    52      > FE_RESET_R                                       $46     !4, ->156
         53    > > FE_FETCH_R                                               $46, !5, ->156
   30    54    >   INIT_FCALL                                               'strpos'
         55        SEND_VAR                                                 !5
         56        SEND_VAL                                                 '%3A%3A'
         57        DO_ICALL                                         $47     
         58        TYPE_CHECK                                  1018          $47
         59      > JMPZ                                                     ~48, ->106
   31    60    >   INIT_FCALL                                               'explode'
         61        SEND_VAL                                                 '%3A%3A'
         62        SEND_VAR                                                 !5
         63        DO_ICALL                                         $49     
         64        ASSIGN                                                   !6, $49
   32    65        INIT_FCALL                                               'explode'
         66        SEND_VAL                                                 '%3A'
         67        FETCH_DIM_R                                      ~52     !6, 0
         68        SEND_VAL                                                 ~52
         69        DO_ICALL                                         $53     
         70        ASSIGN_DIM                                               !6, 0
         71        OP_DATA                                                  $53
   33    72        ASSIGN                                                   !7, <array>
   34    73        ASSIGN                                                   !8, 0
         74      > JMP                                                      ->80
   35    75    >   INIT_FCALL                                               'array_push'
         76        SEND_REF                                                 !7
         77        SEND_VAL                                                 '0000'
         78        DO_ICALL                                                 
   34    79        PRE_INC                                                  !8
         80    >   FETCH_DIM_R                                      ~58     !6, 0
         81        COUNT                                            ~59     ~58
         82        SUB                                              ~60     8, ~59
         83        IS_SMALLER                                               !8, ~60
         84      > JMPNZ                                                    ~61, ->75
   36    85    >   INIT_FCALL                                               'array_merge'
         86        FETCH_DIM_R                                      ~62     !6, 0
         87        SEND_VAL                                                 ~62
         88        SEND_VAR                                                 !7
         89        DO_ICALL                                         $63     
         90        ASSIGN                                                   !6, $63
   37    91        ASSIGN                                                   !9, ''
   38    92        ASSIGN                                                   !10, 1
   39    93      > FE_RESET_R                                       $67     !6, ->104
         94    > > FE_FETCH_R                                               $67, !11, ->104
   40    95    >   IS_SMALLER                                               !10, 8
         96      > JMPZ                                                     ~68, ->99
         97    >   CONCAT                                           ~69     !11, '%3A'
         98        ASSIGN_OP                                     8          !9, ~69
   41    99    >   IS_EQUAL                                                 !10, 8
        100      > JMPZ                                                     ~71, ->102
        101    >   ASSIGN_OP                                     8          !9, !11
   42   102    >   PRE_INC                                                  !10
   39   103      > JMP                                                      ->94
        104    >   FE_FREE                                                  $67
   44   105        ASSIGN                                                   !5, !9
   46   106    >   INIT_FCALL                                               'preg_match'
        107        SEND_VAR                                                 !2
        108        SEND_VAR                                                 !5
        109        DO_ICALL                                         $75     
        110      > JMPZ                                                     $75, ->152
   47   111    >   PRE_INC                                                  !0
   48   112        INIT_FCALL_BY_NAME                                       'expand'
        113        SEND_VAR_EX                                              !5
        114        DO_FCALL                                      0  $77     
        115        ASSIGN                                                   !5, $77
   49   116        INIT_FCALL                                               'str_replace'
        117        SEND_VAL                                                 '%3A'
        118        SEND_VAL                                                 ''
        119        SEND_VAR                                                 !5
        120        DO_ICALL                                         $79     
        121        ASSIGN                                                   !5, $79
   50   122        INIT_FCALL                                               'str_split'
        123        SEND_VAR                                                 !5
        124        SEND_VAL                                                 1
        125        DO_ICALL                                         $81     
        126        ASSIGN                                                   !12, $81
   51   127        ASSIGN                                                   !10, 0
   52   128        ASSIGN                                                   !13, ''
   53   129      > FE_RESET_R                                       $85     !12, ->146
        130    > > FE_FETCH_R                                               $85, !14, ->146
   54   131    >   INIT_FCALL                                               'strtoupper'
        132        SEND_VAR                                                 !14
        133        DO_ICALL                                         $86     
        134        FETCH_DIM_R                                      ~87     !3, $86
        135        ASSIGN                                                   !15, ~87
   55   136        PRE_INC                                                  !10
   56   137        MOD                                              ~90     !10, 4
        138        IS_EQUAL                                         ~91     ~90, 0
        139      > JMPZ_EX                                          ~91     ~91, ->142
        140    >   IS_NOT_EQUAL                                     ~92     !10, 32
        141        BOOL                                             ~91     ~92
        142    > > JMPZ                                                     ~91, ->144
        143    >   ASSIGN_OP                                     8          !15, '%3A'
   57   144    >   ASSIGN_OP                                     8          !13, !15
   53   145      > JMP                                                      ->130
        146    >   FE_FREE                                                  $85
   59   147        INIT_FCALL                                               'array_push'
        148        SEND_REF                                                 !1
        149        SEND_VAR                                                 !13
        150        DO_ICALL                                                 
        151      > JMP                                                      ->155
   61   152    >   NOP                                                      
        153        FAST_CONCAT                                      ~96     !5, '+is+not+in+the+correct+format.++If+you+pasted+only+a+prefix%2C+make+sure+you+end+it+with+%3A%3A.++I%27ll+ignore+it+and+continue+processing.%3Cbr%3E'
        154        ECHO                                                     ~96
   29   155    > > JMP                                                      ->53
        156    >   FE_FREE                                                  $46
   64   157        IS_EQUAL                                                 !0, 0
        158      > JMPZ                                                     ~97, ->161
   65   159    >   ECHO                                                     '%3Cbr%3EYou+didn%27t+enter+any+valid+addresses.++Please+try+again.%3Cbr%3E'
   66   160      > EXIT                                                     
   68   161    >   ECHO                                                     '%3Cbr%3EYour+addresses+in+binary+form%3A%3Cbr%3E'
   69   162        COUNT                                            ~98     !1
        163        IS_SMALLER                                               ~98, 50
        164      > JMPZ                                                     ~99, ->172
   70   165    > > FE_RESET_R                                       $100    !1, ->170
        166    > > FE_FETCH_R                                               $100, !16, ->170
   71   167    >   CONCAT                                           ~101    !16, '%3Cbr%3E'
        168        ECHO                                                     ~101
   70   169      > JMP                                                      ->166
        170    >   FE_FREE                                                  $100
        171      > JMP                                                      ->173
   74   172    >   ECHO                                                     'I+don%27t+want+to+spam+you%2C+so+I%27m+not+printing+all+the+addresses%21%3Cbr%3E'
   76   173    >   INIT_FCALL_BY_NAME                                       '_commonPrefix'
        174        INIT_FCALL                                               'str_replace'
        175        SEND_VAL                                                 '%3A'
        176        SEND_VAL                                                 ''
        177        SEND_VAR                                                 !1
        178        DO_ICALL                                         $102    
        179        SEND_VAR_NO_REF_EX                                       $102
        180        DO_FCALL                                      0  $103    
        181        ASSIGN                                                   !17, $103
   77   182        ECHO                                                     '%3Cbr%3EThese+addresses+can+be+summarized+to%3A+%3Cbr%3E'
   78   183        INIT_FCALL                                               'rtrim'
        184        INIT_FCALL                                               'chunk_split'
        185        INIT_FCALL                                               'substr'
        186        INIT_FCALL                                               'str_replace'
        187        SEND_VAL                                                 '%3A'
        188        SEND_VAL                                                 ''
        189        FETCH_DIM_R                                      ~105    !1, 0
        190        SEND_VAL                                                 ~105
        191        DO_ICALL                                         $106    
        192        SEND_VAR                                                 $106
        193        SEND_VAL                                                 0
        194        SEND_VAR                                                 !17
        195        DO_ICALL                                         $107    
        196        SEND_VAR                                                 $107
        197        SEND_VAL                                                 16
        198        SEND_VAL                                                 '%3A'
        199        DO_ICALL                                         $108    
        200        SEND_VAR                                                 $108
        201        SEND_VAL                                                 '%3A'
        202        DO_ICALL                                         $109    
        203        ASSIGN                                                   !18, $109
   79   204        ROPE_INIT                                     3  ~112    '%2F'
        205        ROPE_ADD                                      1  ~112    ~112, !17
        206        ROPE_END                                      2  ~111    ~112, '%3Cbr%3E'
        207        CONCAT                                           ~114    !18, ~111
        208        ECHO                                                     ~114
   80   209        INIT_FCALL                                               'explode'
        210        SEND_VAL                                                 '%3A'
        211        SEND_VAR                                                 !18
        212        DO_ICALL                                         $115    
        213        ASSIGN                                                   !19, $115
   81   214        ASSIGN                                                   !20, ''
   82   215      > FE_RESET_R                                       $118    !19, ->237
        216    > > FE_FETCH_R                                               $118, !21, ->237
   83   217    >   INIT_FCALL                                               'str_split'
        218        SEND_VAR                                                 !21
        219        SEND_VAL                                                 4
        220        DO_ICALL                                         $119    
        221        ASSIGN                                                   !22, $119
   84   222      > FE_RESET_R                                       $121    !22, ->235
        223    > > FE_FETCH_R                                               $121, !23, ->235
   85   224    > > JMP                                                      ->226
   86   225    >   ASSIGN_OP                                     8          !23, '0'
   85   226    >   STRLEN                                           ~123    !23
        227        IS_SMALLER                                               ~123, 4
        228      > JMPNZ                                                    ~124, ->225
   88   229    >   INIT_FCALL                                               'array_search'
        230        SEND_VAR                                                 !23
        231        SEND_VAR                                                 !3
        232        DO_ICALL                                         $125    
        233        ASSIGN_OP                                     8          !20, $125
   84   234      > JMP                                                      ->223
        235    >   FE_FREE                                                  $121
   82   236      > JMP                                                      ->216
        237    >   FE_FREE                                                  $118
   92   238        ECHO                                                     'You+can+use+this+in+your+router+summary+statements%3A%3Cbr%3E'
   93   239        INIT_FCALL                                               'rtrim'
        240        INIT_FCALL                                               'chunk_split'
        241        SEND_VAR                                                 !20
        242        SEND_VAL                                                 4
        243        SEND_VAL                                                 '%3A'
        244        DO_ICALL                                         $127    
        245        SEND_VAR                                                 $127
        246        SEND_VAL                                                 '%3A'
        247        DO_ICALL                                         $128    
        248        NOP                                                      
        249        FAST_CONCAT                                      ~129    '%2F', !17
        250        CONCAT                                           ~130    $128, ~129
        251        ECHO                                                     ~130
   95   252    >   ECHO                                                     '%3C%2Fbody%3E'
   96   253        ECHO                                                     '%3C%2Fhtml%3E'
  123   254      > RETURN                                                   1

Function expand:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Pv0Xc
function name:  expand
number of ops:  23
compiled vars:  !0 = $ip, !1 = $hex
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   99     0  E >   RECV                                             !0      
  100     1        INIT_FCALL                                               'unpack'
          2        SEND_VAL                                                 'H%2Ahex'
          3        INIT_FCALL                                               'inet_pton'
          4        SEND_VAR                                                 !0
          5        DO_ICALL                                         $2      
          6        SEND_VAR                                                 $2
          7        DO_ICALL                                         $3      
          8        ASSIGN                                                   !1, $3
  101     9        INIT_FCALL                                               'substr'
         10        INIT_FCALL                                               'preg_replace'
         11        SEND_VAL                                                 '%2F%28%5BA-f0-9%5D%7B4%7D%29%2F'
         12        SEND_VAL                                                 '%241%3A'
         13        FETCH_DIM_R                                      ~5      !1, 'hex'
         14        SEND_VAL                                                 ~5
         15        DO_ICALL                                         $6      
         16        SEND_VAR                                                 $6
         17        SEND_VAL                                                 0
         18        SEND_VAL                                                 -1
         19        DO_ICALL                                         $7      
         20        ASSIGN                                                   !0, $7
  103    21      > RETURN                                                   !0
  104    22*     > RETURN                                                   null

End of function expand

Function _commonprefix:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 12
Branch analysis from position: 4
2 jumps found. (Code = 43) Position 1 = 7, Position 2 = 9
Branch analysis from position: 7
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 9
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 12
1 jumps found. (Code = 42) Position 1 = 36
Branch analysis from position: 36
2 jumps found. (Code = 44) Position 1 = 42, Position 2 = 25
Branch analysis from position: 42
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 25
1 jumps found. (Code = 42) Position 1 = 33
Branch analysis from position: 33
2 jumps found. (Code = 44) Position 1 = 35, Position 2 = 27
Branch analysis from position: 35
2 jumps found. (Code = 44) Position 1 = 42, Position 2 = 25
Branch analysis from position: 42
Branch analysis from position: 25
Branch analysis from position: 27
2 jumps found. (Code = 43) Position 1 = 31, Position 2 = 32
Branch analysis from position: 31
2 jumps found. (Code = 44) Position 1 = 35, Position 2 = 27
Branch analysis from position: 35
Branch analysis from position: 27
Branch analysis from position: 32
filename:       /in/Pv0Xc
function name:  _commonPrefix
number of ops:  44
compiled vars:  !0 = $array, !1 = $len, !2 = $prevval, !3 = $j, !4 = $newval
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  105     0  E >   RECV                                             !0      
  106     1        COUNT                                            ~5      !0
          2        IS_SMALLER                                               ~5, 2
          3      > JMPZ                                                     ~6, ->12
  107     4    >   COUNT                                            ~7      !0
          5        IS_EQUAL                                                 ~7, 0
          6      > JMPZ                                                     ~8, ->9
  108     7    > > RETURN                                                   <false>
          8*       JM

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
170.11 ms | 1428 KiB | 45 Q