3v4l.org

run code in 300+ PHP versions simultaneously
<?php var_dump(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack('::'))))); var_dump(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack('::1'))))); var_dump(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack('::ffff'))))); var_dump(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack('ffff::1:0'))))); var_dump(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack('1::ffff:0'))))); var_dump(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack('::4:5:6:7:8'))))); var_dump(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack('::2:3:4:5:6:7:8'))))); var_dump(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack(NewEra_IPv6Hack::ip_unpack(NewEra_IPv6Hack::ip_pack('2:3:4:5:6:7:8::'))))); /** * This script will generate a pseudo IPv4 in Class E IP space (240.0.0.0 - 255.255.255.255) * for IPv6 users based on the 52 first bits of their IP. Class E address space is reserved * as experimental and no actual traffic should originate from it. * * @author NewEraCracker * @version 2.0.1 * @date 2014/07/03 * @license Public Domain */ class NewEra_IPv6Hack { /** @Link : http://php.net/manual/en/function.inet-pton.php */ public static function ip_pack($ip) { if(strpos($ip, '.') !== false) { // Pack IPv4 $ip = trim($ip, ':f'); $ip = pack('N', ip2long($ip)); return $ip; } elseif(strpos($ip, ':') !== false) { // Expand IPv6 $ip = self::ipv6_expand($ip); // Pack IPv6 $ip = pack('H'.strlen($ip), $ip); return $ip; } return false; } /** @Link : http://php.net/manual/en/function.inet-ntop.php */ public static function ip_unpack($ip) { if(strlen($ip) == 4) { // Unpack IPv4 list(, $ip) = unpack('N', $ip); $ip = long2ip($ip); return $ip; } elseif(strlen($ip) == 16) { // Unpack IPv6 $ip = bin2hex($ip); // Compact IPv6 $res = ''; for($i = strlen($ip); $i > 0; $i = ($i-4)) { $seg = substr($ip, $i-4, 4); $seg = ltrim($seg, '0'); if($seg != '') { $res = $seg.($res==''?'':':').$res; } else { // Make sure 0:2:3:4:5:6:7:8 is handled if(strpos($res, '::') === false && substr_count($res, ':') < 6) { // Make sure ::1 is handled if($res != '' && $res[0] == ':' && $i > 4) { continue; } $res = ':'.$res; continue; } $res = '0'.($res==''?'':':').$res; } } return $res; } return false; } /** Expand an IPv6 address */ public static function ipv6_expand($ip) { $ip = explode(':', $ip); $res = ''; $expand = true; foreach($ip as $seg) { if($seg == '' && $expand) { // This will expand a compacted IPv6 $res .= str_pad('', (((8 - count($ip)) + 1) * 4), '0', STR_PAD_LEFT); // Only expand once, otherwise it will cause troubles with ::1 or ffff:: $expand = false; } else { // This will pad to ensure each IPv6 part has 4 digits. $res .= str_pad($seg, 4, '0', STR_PAD_LEFT); } } return $res; } /** Shift an IPv6 to right (IPv6 >> 1). This will be handy to generate a fake IPv4 */ public static function ipv6_shift_right($ip) { $ip = self::ipv6_expand($ip); $ip = substr($ip, -1).substr($ip, 0, -1); $ip = substr(chunk_split($ip, 4, ':'), 0, -1); return $ip; } /** Create a fake IPv4 address from a given IPv6 address */ public static function ipv6_to_ipv4($ip) { if(strpos($ip, ':') === false || strpos($ip, '.') !== false) { return false; } $ip = self::ipv6_shift_right($ip); $ip = self::ip_pack($ip); // First 8 bits of IPv4 will be: // - The last 4 bits of unshifted IPv6, all set to true via mask // - The first 4 bits of unshifted IPv6, all in their original state via mask // This ensures an IPv4 in Class E space (240.0.0.0 - 255.255.255.255) $ipv4 = chr(ord($ip[0]) | 0xf0); for($i=1;$i<7;$i+=2) { // Convert 48 bits of IPv6 in last 24 bits of IPv4 via XOR $ipv4 .= chr(ord($ip[$i]) ^ ord($ip[$i+1])); } return self::ip_unpack($ipv4); } /** Convert a V4overV6 to IPv4 */ public static function v4overv6_to_ipv4($ip) { if(strpos($ip, '.') !== false) { $ip = trim($ip, ':f'); return $ip; } return false; } /** This will test if it is a V4overV6 or an IPv6 and do the convertion */ public static function all_to_ipv4($ip) { $v4overv6_test = self::v4overv6_to_ipv4($ip); if($v4overv6_test !== false) { return $v4overv6_test; } return self::ipv6_to_ipv4($ip); } } ?>
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/F8AYd
function name:  (null)
number of ops:  121
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   INIT_FCALL                                               'var_dump'
          1        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
          2        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
          3        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
          4        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
          5        SEND_VAL_EX                                              '%3A%3A'
          6        DO_FCALL                                      0  $0      
          7        SEND_VAR_NO_REF_EX                                       $0
          8        DO_FCALL                                      0  $1      
          9        SEND_VAR_NO_REF_EX                                       $1
         10        DO_FCALL                                      0  $2      
         11        SEND_VAR_NO_REF_EX                                       $2
         12        DO_FCALL                                      0  $3      
         13        SEND_VAR                                                 $3
         14        DO_ICALL                                                 
    4    15        INIT_FCALL                                               'var_dump'
         16        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
         17        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
         18        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
         19        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
         20        SEND_VAL_EX                                              '%3A%3A1'
         21        DO_FCALL                                      0  $5      
         22        SEND_VAR_NO_REF_EX                                       $5
         23        DO_FCALL                                      0  $6      
         24        SEND_VAR_NO_REF_EX                                       $6
         25        DO_FCALL                                      0  $7      
         26        SEND_VAR_NO_REF_EX                                       $7
         27        DO_FCALL                                      0  $8      
         28        SEND_VAR                                                 $8
         29        DO_ICALL                                                 
    5    30        INIT_FCALL                                               'var_dump'
         31        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
         32        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
         33        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
         34        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
         35        SEND_VAL_EX                                              '%3A%3Affff'
         36        DO_FCALL                                      0  $10     
         37        SEND_VAR_NO_REF_EX                                       $10
         38        DO_FCALL                                      0  $11     
         39        SEND_VAR_NO_REF_EX                                       $11
         40        DO_FCALL                                      0  $12     
         41        SEND_VAR_NO_REF_EX                                       $12
         42        DO_FCALL                                      0  $13     
         43        SEND_VAR                                                 $13
         44        DO_ICALL                                                 
    6    45        INIT_FCALL                                               'var_dump'
         46        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
         47        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
         48        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
         49        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
         50        SEND_VAL_EX                                              'ffff%3A%3A1%3A0'
         51        DO_FCALL                                      0  $15     
         52        SEND_VAR_NO_REF_EX                                       $15
         53        DO_FCALL                                      0  $16     
         54        SEND_VAR_NO_REF_EX                                       $16
         55        DO_FCALL                                      0  $17     
         56        SEND_VAR_NO_REF_EX                                       $17
         57        DO_FCALL                                      0  $18     
         58        SEND_VAR                                                 $18
         59        DO_ICALL                                                 
    7    60        INIT_FCALL                                               'var_dump'
         61        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
         62        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
         63        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
         64        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
         65        SEND_VAL_EX                                              '1%3A%3Affff%3A0'
         66        DO_FCALL                                      0  $20     
         67        SEND_VAR_NO_REF_EX                                       $20
         68        DO_FCALL                                      0  $21     
         69        SEND_VAR_NO_REF_EX                                       $21
         70        DO_FCALL                                      0  $22     
         71        SEND_VAR_NO_REF_EX                                       $22
         72        DO_FCALL                                      0  $23     
         73        SEND_VAR                                                 $23
         74        DO_ICALL                                                 
    8    75        INIT_FCALL                                               'var_dump'
         76        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
         77        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
         78        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
         79        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
         80        SEND_VAL_EX                                              '%3A%3A4%3A5%3A6%3A7%3A8'
         81        DO_FCALL                                      0  $25     
         82        SEND_VAR_NO_REF_EX                                       $25
         83        DO_FCALL                                      0  $26     
         84        SEND_VAR_NO_REF_EX                                       $26
         85        DO_FCALL                                      0  $27     
         86        SEND_VAR_NO_REF_EX                                       $27
         87        DO_FCALL                                      0  $28     
         88        SEND_VAR                                                 $28
         89        DO_ICALL                                                 
    9    90        INIT_FCALL                                               'var_dump'
         91        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
         92        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
         93        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
         94        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
         95        SEND_VAL_EX                                              '%3A%3A2%3A3%3A4%3A5%3A6%3A7%3A8'
         96        DO_FCALL                                      0  $30     
         97        SEND_VAR_NO_REF_EX                                       $30
         98        DO_FCALL                                      0  $31     
         99        SEND_VAR_NO_REF_EX                                       $31
        100        DO_FCALL                                      0  $32     
        101        SEND_VAR_NO_REF_EX                                       $32
        102        DO_FCALL                                      0  $33     
        103        SEND_VAR                                                 $33
        104        DO_ICALL                                                 
   10   105        INIT_FCALL                                               'var_dump'
        106        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
        107        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
        108        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_unpack'
        109        INIT_STATIC_METHOD_CALL                                  'NewEra_IPv6Hack', 'ip_pack'
        110        SEND_VAL_EX                                              '2%3A3%3A4%3A5%3A6%3A7%3A8%3A%3A'
        111        DO_FCALL                                      0  $35     
        112        SEND_VAR_NO_REF_EX                                       $35
        113        DO_FCALL                                      0  $36     
        114        SEND_VAR_NO_REF_EX                                       $36
        115        DO_FCALL                                      0  $37     
        116        SEND_VAR_NO_REF_EX                                       $37
        117        DO_FCALL                                      0  $38     
        118        SEND_VAR                                                 $38
        119        DO_ICALL                                                 
  187   120      > RETURN                                                   1

Class NewEra_IPv6Hack:
Function ip_pack:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 7, Position 2 = 22
Branch analysis from position: 7
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 40
Branch analysis from position: 28
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 40
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/F8AYd
function name:  ip_pack
number of ops:  42
compiled vars:  !0 = $ip
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   26     0  E >   RECV                                             !0      
   28     1        INIT_FCALL                                               'strpos'
          2        SEND_VAR                                                 !0
          3        SEND_VAL                                                 '.'
          4        DO_ICALL                                         $1      
          5        TYPE_CHECK                                  1018          $1
          6      > JMPZ                                                     ~2, ->22
   31     7    >   INIT_FCALL                                               'trim'
          8        SEND_VAR                                                 !0
          9        SEND_VAL                                                 '%3Af'
         10        DO_ICALL                                         $3      
         11        ASSIGN                                                   !0, $3
   32    12        INIT_FCALL                                               'pack'
         13        SEND_VAL                                                 'N'
         14        INIT_FCALL                                               'ip2long'
         15        SEND_VAR                                                 !0
         16        DO_ICALL                                         $5      
         17        SEND_VAR                                                 $5
         18        DO_ICALL                                         $6      
         19        ASSIGN                                                   !0, $6
   34    20      > RETURN                                                   !0
         21*       JMP                                                      ->40
   36    22    >   INIT_FCALL                                               'strpos'
         23        SEND_VAR                                                 !0
         24        SEND_VAL                                                 '%3A'
         25        DO_ICALL                                         $8      
         26        TYPE_CHECK                                  1018          $8
         27      > JMPZ                                                     ~9, ->40
   39    28    >   INIT_STATIC_METHOD_CALL                                  'ipv6_expand'
         29        SEND_VAR_EX                                              !0
         30        DO_FCALL                                      0  $10     
         31        ASSIGN                                                   !0, $10
   42    32        INIT_FCALL                                               'pack'
         33        STRLEN                                           ~12     !0
         34        CONCAT                                           ~13     'H', ~12
         35        SEND_VAL                                                 ~13
         36        SEND_VAR                                                 !0
         37        DO_ICALL                                         $14     
         38        ASSIGN                                                   !0, $14
   44    39      > RETURN                                                   !0
   47    40    > > RETURN                                                   <false>
   48    41*     > RETURN                                                   null

End of function ip_pack

Function ip_unpack:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 17
Branch analysis from position: 4
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 17
2 jumps found. (Code = 43) Position 1 = 20, Position 2 = 90
Branch analysis from position: 20
1 jumps found. (Code = 42) Position 1 = 87
Branch analysis from position: 87
2 jumps found. (Code = 44) Position 1 = 89, Position 2 = 28
Branch analysis from position: 89
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 28
2 jumps found. (Code = 43) Position 1 = 42, Position 2 = 51
Branch analysis from position: 42
2 jumps found. (Code = 43) Position 1 = 44, Position 2 = 46
Branch analysis from position: 44
1 jumps found. (Code = 42) Position 1 = 47
Branch analysis from position: 47
1 jumps found. (Code = 42) Position 1 = 85
Branch analysis from position: 85
2 jumps found. (Code = 44) Position 1 = 89, Position 2 = 28
Branch analysis from position: 89
Branch analysis from position: 28
Branch analysis from position: 46
1 jumps found. (Code = 42) Position 1 = 85
Branch analysis from position: 85
Branch analysis from position: 51
2 jumps found. (Code = 46) Position 1 = 57, Position 2 = 63
Branch analysis from position: 57
2 jumps found. (Code = 43) Position 1 = 64, Position 2 = 77
Branch analysis from position: 64
2 jumps found. (Code = 46) Position 1 = 66, Position 2 = 69
Branch analysis from position: 66
2 jumps found. (Code = 46) Position 1 = 70, Position 2 = 72
Branch analysis from position: 70
2 jumps found. (Code = 43) Position 1 = 73, Position 2 = 74
Branch analysis from position: 73
1 jumps found. (Code = 42) Position 1 = 85
Branch analysis from position: 85
Branch analysis from position: 74
1 jumps found. (Code = 42) Position 1 = 85
Branch analysis from position: 85
Branch analysis from position: 72
Branch analysis from position: 69
Branch analysis from position: 77
2 jumps found. (Code = 43) Position 1 = 79, Position 2 = 81
Branch analysis from position: 79
1 jumps found. (Code = 42) Position 1 = 82
Branch analysis from position: 82
2 jumps found. (Code = 44) Position 1 = 89, Position 2 = 28
Branch analysis from position: 89
Branch analysis from position: 28
Branch analysis from position: 81
2 jumps found. (Code = 44) Position 1 = 89, Position 2 = 28
Branch analysis from position: 89
Branch analysis from position: 28
Branch analysis from position: 63
Branch analysis from position: 90
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/F8AYd
function name:  ip_unpack
number of ops:  92
compiled vars:  !0 = $ip, !1 = $res, !2 = $i, !3 = $seg
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   51     0  E >   RECV                                             !0      
   53     1        STRLEN                                           ~4      !0
          2        IS_EQUAL                                                 ~4, 4
          3      > JMPZ                                                     ~5, ->17
   56     4    >   INIT_FCALL                                               'unpack'
          5        SEND_VAL                                                 'N'
          6        SEND_VAR                                                 !0
          7        DO_ICALL                                         $6      
          8        FETCH_LIST_R                                     $7      $6, 1
          9        ASSIGN                                                   !0, $7
         10        FREE                                                     $6
   57    11        INIT_FCALL                                               'long2ip'
         12        SEND_VAR                                                 !0
         13        DO_ICALL                                         $9      
         14        ASSIGN                                                   !0, $9
   59    15      > RETURN                                                   !0
         16*       JMP                                                      ->90
   61    17    >   STRLEN                                           ~11     !0
         18        IS_EQUAL                                                 ~11, 16
         19      > JMPZ                                                     ~12, ->90
   64    20    >   INIT_FCALL                                               'bin2hex'
         21        SEND_VAR                                                 !0
         22        DO_ICALL                                         $13     
         23        ASSIGN                                                   !0, $13
   67    24        ASSIGN                                                   !1, ''
   68    25        STRLEN                                           ~16     !0
         26        ASSIGN                                                   !2, ~16
         27      > JMP                                                      ->87
   70    28    >   INIT_FCALL                                               'substr'
         29        SEND_VAR                                                 !0
         30        SUB                                              ~18     !2, 4
         31        SEND_VAL                                                 ~18
         32        SEND_VAL                                                 4
         33        DO_ICALL                                         $19     
         34        ASSIGN                                                   !3, $19
   71    35        INIT_FCALL                                               'ltrim'
         36        SEND_VAR                                                 !3
         37        SEND_VAL                                                 '0'
         38        DO_ICALL                                         $21     
         39        ASSIGN                                                   !3, $21
   73    40        IS_NOT_EQUAL                                             !3, ''
         41      > JMPZ                                                     ~23, ->51
   75    42    >   IS_EQUAL                                                 !1, ''
         43      > JMPZ                                                     ~24, ->46
         44    >   QM_ASSIGN                                        ~25     ''
         45      > JMP                                                      ->47
         46    >   QM_ASSIGN                                        ~25     '%3A'
         47    >   CONCAT                                           ~26     !3, ~25
         48        CONCAT                                           ~27     ~26, !1
         49        ASSIGN                                                   !1, ~27
         50      > JMP                                                      ->85
   80    51    >   INIT_FCALL                                               'strpos'
         52        SEND_VAR                                                 !1
         53        SEND_VAL                                                 '%3A%3A'
         54        DO_ICALL                                         $29     
         55        TYPE_CHECK                                    4  ~30     $29
         56      > JMPZ_EX                                          ~30     ~30, ->63
         57    >   INIT_FCALL                                               'substr_count'
         58        SEND_VAR                                                 !1
         59        SEND_VAL                                                 '%3A'
         60        DO_ICALL                                         $31     
         61        IS_SMALLER                                       ~32     $31, 6
         62        BOOL                                             ~30     ~32
         63    > > JMPZ                                                     ~30, ->77
   83    64    >   IS_NOT_EQUAL                                     ~33     !1, ''
         65      > JMPZ_EX                                          ~33     ~33, ->69
         66    >   FETCH_DIM_R                                      ~34     !1, 0
         67        IS_EQUAL                                         ~35     ~34, '%3A'
         68        BOOL                                             ~33     ~35
         69    > > JMPZ_EX                                          ~33     ~33, ->72
         70    >   IS_SMALLER                                       ~36     4, !2
         71        BOOL                                             ~33     ~36
         72    > > JMPZ                                                     ~33, ->74
   85    73    > > JMP                                                      ->85
   87    74    >   CONCAT                                           ~37     '%3A', !1
         75        ASSIGN                                                   !1, ~37
   88    76      > JMP                                                      ->85
   90    77    >   IS_EQUAL                                                 !1, ''
         78      > JMPZ                                                     ~39, ->81
         79    >   QM_ASSIGN                                        ~40     ''
         80      > JMP                                                      ->82
         81    >   QM_ASSIGN                                        ~40     '%3A'
         82    >   CONCAT                                           ~41     '0', ~40
         83        CONCAT                                           ~42     ~41, !1
         84        ASSIGN                                                   !1, ~42
   68    85    >   SUB                                              ~44     !2, 4
         86        ASSIGN                                                   !2, ~44
         87    >   IS_SMALLER                                               0, !2
         88      > JMPNZ                                                    ~46, ->28
   94    89    > > RETURN                                                   !1
   97    90    > > RETURN                                                   <false>
   98    91*     > RETURN                                                   null

End of function ip_unpack

Function ipv6_expand:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 9, Position 2 = 35
Branch analysis from position: 9
2 jumps found. (Code = 78) Position 1 = 10, Position 2 = 35
Branch analysis from position: 10
2 jumps found. (Code = 46) Position 1 = 12, Position 2 = 13
Branch analysis from position: 12
2 jumps found. (Code = 43) Position 1 = 14, Position 2 = 27
Branch analysis from position: 14
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
1 jumps found. (Code = 42) Position 1 = 9
Branch analysis from position: 9
Branch analysis from position: 27
1 jumps found. (Code = 42) Position 1 = 9
Branch analysis from position: 9
Branch analysis from position: 13
Branch analysis from position: 35
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 35
filename:       /in/F8AYd
function name:  ipv6_expand
number of ops:  38
compiled vars:  !0 = $ip, !1 = $res, !2 = $expand, !3 = $seg
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  101     0  E >   RECV                                             !0      
  103     1        INIT_FCALL                                               'explode'
          2        SEND_VAL                                                 '%3A'
          3        SEND_VAR                                                 !0
          4        DO_ICALL                                         $4      
          5        ASSIGN                                                   !0, $4
  104     6        ASSIGN                                                   !1, ''
  105     7        ASSIGN                                                   !2, <true>
  106     8      > FE_RESET_R                                       $8      !0, ->35
          9    > > FE_FETCH_R                                               $8, !3, ->35
  108    10    >   IS_EQUAL                                         ~9      !3, ''
         11      > JMPZ_EX                                          ~9      ~9, ->13
         12    >   BOOL                                             ~9      !2
         13    > > JMPZ                                                     ~9, ->27
  111    14    >   INIT_FCALL                                               'str_pad'
         15        SEND_VAL                                                 ''
         16        COUNT                                            ~10     !0
         17        SUB                                              ~11     8, ~10
         18        ADD                                              ~12     ~11, 1
         19        MUL                                              ~13     ~12, 4
         20        SEND_VAL                                                 ~13
         21        SEND_VAL                                                 '0'
         22        SEND_VAL                                                 0
         23        DO_ICALL                                         $14     
         24        ASSIGN_OP                                     8          !1, $14
  114    25        ASSIGN                                                   !2, <false>
         26      > JMP                                                      ->34
  119    27    >   INIT_FCALL                                               'str_pad'
         28        SEND_VAR                                                 !3
         29        SEND_VAL                                                 4
         30        SEND_VAL                                                 '0'
         31        SEND_VAL                                                 0
         32        DO_ICALL                                         $17     
         33        ASSIGN_OP                                     8          !1, $17
  106    34    > > JMP                                                      ->9
         35    >   FE_FREE                                                  $8
  123    36      > RETURN                                                   !1
  124    37*     > RETURN                                                   null

End of function ipv6_expand

Function ipv6_shift_right:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/F8AYd
function name:  ipv6_shift_right
number of ops:  29
compiled vars:  !0 = $ip
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  127     0  E >   RECV                                             !0      
  129     1        INIT_STATIC_METHOD_CALL                                  'ipv6_expand'
          2        SEND_VAR                                                 !0
          3        DO_FCALL                                      0  $1      
          4        ASSIGN                                                   !0, $1
  130     5        INIT_FCALL                                               'substr'
          6        SEND_VAR                                                 !0
          7        SEND_VAL                                                 -1
          8        DO_ICALL                                         $3      
          9        INIT_FCALL                                               'substr'
         10        SEND_VAR                                                 !0
         11        SEND_VAL                                                 0
         12        SEND_VAL                                                 -1
         13        DO_ICALL                                         $4      
         14        CONCAT                                           ~5      $3, $4
         15        ASSIGN                                                   !0, ~5
  131    16        INIT_FCALL                                               'substr'
         17        INIT_FCALL                                               'chunk_split'
         18        SEND_VAR                                                 !0
         19        SEND_VAL                                                 4
         20        SEND_VAL                                                 '%3A'
         21        DO_ICALL                                         $7      
         22        SEND_VAR                                                 $7
         23        SEND_VAL                                                 0
         24        SEND_VAL                                                 -1
         25        DO_ICALL                                         $8      
         26        ASSIGN                                                   !0, $8
  133    27      > RETURN                                                   !0
  134    28*     > RETURN                                                   null

End of function ipv6_shift_right

Function ipv6_to_ipv4:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 47) Position 1 = 7, Position 2 = 13
Branch analysis from position: 7
2 jumps found. (Code = 43) Position 1 = 14, Posi

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
165.98 ms | 1420 KiB | 41 Q