3v4l.org

run code in 300+ PHP versions simultaneously
<?php /* * This file is part of the SensioLabsProfiler SDK package. * * (c) SensioLabs <contact@sensiolabs.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */class SprofilerHttpWrapper extends php_user_filter{ public $context; private $sslContext = array( 'SNI_server_name' => 'profiler.sensiolabs.com', ); private $socket; public function stream_open($path, $mode) { if ('wb' !== $mode) { return false; } $url = "ssl://{$this->sslContext['SNI_server_name']}:443"; $context = array('ssl' => $this->sslContext); $this->socket = stream_socket_client($url, $errno, $errmsg, 15, STREAM_CLIENT_CONNECT, stream_context_create($context)); stream_set_timeout($this->socket, 5); if (!$this->socket) { user_error($errmsg); return false; } if (!in_array('sprofiler.chunk', stream_get_filters())) { stream_filter_register('sprofiler.chunk', __CLASS__); } return true; } public function stream_write($data) { if (!$this->params) { $boundary = md5(mt_rand()*mt_rand()).md5(mt_rand()*mt_rand()); $this->params = compact('boundary'); $serverId = ''; $slotId = ''; $authToken = ''; $post = array(); foreach (explode("\n", $data) as $field) { $field = explode(":", $field, 2); switch ($field[0]) { case 'SensioLabsProfiler-Query': $authToken = trim($field[1]); parse_str($authToken, $field); foreach ($field as $k => $v) { if ('agentIds' === $k) { $v = explode(',', $v); $authToken = $v[0].':'.$authToken; foreach ($v as $v) { $post[] = array('agents[]', $v); } } else { if ('profileSlot' === $k) { $slotId = $v; } $post[] = array($k, $v); } } $authToken = base64_encode($authToken); break; case 'SensioLabsProfiler-Auth': $serverId = trim($field[1]); $serverId = "X-{$field[0]}: {$field[1]}\r\n"; break; } } $http = "POST /agent-api/v1/profile-slots/{$slotId} HTTP/1.1\r\n" ."Host: {$this->sslContext['SNI_server_name']}\r\n" ."User-Agent: SensioLabsProfiler-SDK\r\n" ."Authorization: Basic {$authToken}\r\n" ."Content-Type: multipart/form-data; boundary={$boundary}\r\n" ."Transfer-Encoding: chunked\r\n" .$serverId ."\r\n"; if (!$w = fwrite($this->socket, $http)) { return $w; } stream_filter_append($this->socket, 'sprofiler.chunk', STREAM_FILTER_WRITE, $this->params); $http = ''; foreach ($post as $field) { $http .= '--'.$boundary."\r\n" .'Content-Disposition: form-data; name="'.$field[0].'"'."\r\n" ."\r\n" .$field[1]."\r\n"; } $http .= '--'.$boundary."\r\n" ."Content-Disposition: form-data; name=\"payload\"; filename=\"graph.dat\"\r\n" ."Content-Type: application/octet-stream\r\n" ."\r\n"; if (!$w = fwrite($this->socket, $http)) { return $w; } if (in_array('zlib.*', stream_get_filters())) { stream_filter_prepend($this->socket, 'zlib.deflate', STREAM_FILTER_WRITE); } } elseif (!$w = fwrite($this->socket, $data)) { return $w; } return strlen($data); } public function stream_flush() { return fflush($this->socket); } public function stream_close() { fclose($this->socket); $this->socket = $this->params = null; } public function stream_lock() { return false; } public function filter($in, $out, &$consumed, $closing) { while ($bucket = stream_bucket_make_writeable($in)) { $consumed += $bucket->datalen; $bucket->data = dechex($bucket->datalen)."\r\n{$bucket->data}\r\n"; stream_bucket_append($out, $bucket); } if ($closing) { $data = "--{$this->params['boundary']}--\r\n"; $data = dechex(strlen($data))."\r\n{$data}\r\n0\r\n\r\n"; stream_bucket_append($out, stream_bucket_new($this->stream, $data)); } return PSFS_PASS_ON; }}
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/qD3HR
function name:  (null)
number of ops:  1
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E > > RETURN                                                   1

Class SprofilerHttpWrapper:
Function stream_open:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 5
Branch analysis from position: 4
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 5
2 jumps found. (Code = 43) Position 1 = 35, Position 2 = 39
Branch analysis from position: 35
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 39
2 jumps found. (Code = 43) Position 1 = 47, Position 2 = 51
Branch analysis from position: 47
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 51
filename:       /in/qD3HR
function name:  stream_open
number of ops:  53
compiled vars:  !0 = $path, !1 = $mode, !2 = $url, !3 = $context, !4 = $errno, !5 = $errmsg
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
          0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        IS_NOT_IDENTICAL                                         !1, 'wb'
          3      > JMPZ                                                     ~6, ->5
          4    > > RETURN                                                   <false>
          5    >   ROPE_INIT                                     3  ~10     'ssl%3A%2F%2F'
          6        FETCH_OBJ_R                                      ~7      'sslContext'
          7        FETCH_DIM_R                                      ~8      ~7, 'SNI_server_name'
          8        ROPE_ADD                                      1  ~10     ~10, ~8
          9        ROPE_END                                      2  ~9      ~10, '%3A443'
         10        ASSIGN                                                   !2, ~9
         11        FETCH_OBJ_R                                      ~13     'sslContext'
         12        INIT_ARRAY                                       ~14     ~13, 'ssl'
         13        ASSIGN                                                   !3, ~14
         14        INIT_FCALL                                               'stream_socket_client'
         15        SEND_VAR                                                 !2
         16        SEND_REF                                                 !4
         17        SEND_REF                                                 !5
         18        SEND_VAL                                                 15
         19        SEND_VAL                                                 4
         20        INIT_FCALL                                               'stream_context_create'
         21        SEND_VAR                                                 !3
         22        DO_ICALL                                         $17     
         23        SEND_VAR                                                 $17
         24        DO_ICALL                                         $18     
         25        ASSIGN_OBJ                                               'socket'
         26        OP_DATA                                                  $18
         27        INIT_FCALL                                               'stream_set_timeout'
         28        FETCH_OBJ_R                                      ~19     'socket'
         29        SEND_VAL                                                 ~19
         30        SEND_VAL                                                 5
         31        DO_ICALL                                                 
         32        FETCH_OBJ_R                                      ~21     'socket'
         33        BOOL_NOT                                         ~22     ~21
         34      > JMPZ                                                     ~22, ->39
         35    >   INIT_FCALL                                               'user_error'
         36        SEND_VAR                                                 !5
         37        DO_ICALL                                                 
         38      > RETURN                                                   <false>
         39    >   INIT_FCALL                                               'in_array'
         40        SEND_VAL                                                 'sprofiler.chunk'
         41        INIT_FCALL                                               'stream_get_filters'
         42        DO_ICALL                                         $24     
         43        SEND_VAR                                                 $24
         44        DO_ICALL                                         $25     
         45        BOOL_NOT                                         ~26     $25
         46      > JMPZ                                                     ~26, ->51
         47    >   INIT_FCALL                                               'stream_filter_register'
         48        SEND_VAL                                                 'sprofiler.chunk'
         49        SEND_VAL                                                 'SprofilerHttpWrapper'
         50        DO_ICALL                                                 
         51    > > RETURN                                                   <true>
         52*     > RETURN                                                   null

End of function stream_open

Function stream_write:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 198
Branch analysis from position: 4
2 jumps found. (Code = 77) Position 1 = 36, Position 2 = 112
Branch analysis from position: 36
2 jumps found. (Code = 78) Position 1 = 37, Position 2 = 112
Branch analysis from position: 37
4 jumps found. (Code = 188) Position 1 = 50, Position 2 = 96, Position 3 = 110, Position 4 = 45
Branch analysis from position: 50
2 jumps found. (Code = 77) Position 1 = 60, Position 2 = 90
Branch analysis from position: 60
2 jumps found. (Code = 78) Position 1 = 61, Position 2 = 90
Branch analysis from position: 61
2 jumps found. (Code = 43) Position 1 = 64, Position 2 = 82
Branch analysis from position: 64
2 jumps found. (Code = 77) Position 1 = 74, Position 2 = 80
Branch analysis from position: 74
2 jumps found. (Code = 78) Position 1 = 75, Position 2 = 80
Branch analysis from position: 75
1 jumps found. (Code = 42) Position 1 = 74
Branch analysis from position: 74
Branch analysis from position: 80
1 jumps found. (Code = 42) Position 1 = 89
Branch analysis from position: 89
1 jumps found. (Code = 42) Position 1 = 60
Branch analysis from position: 60
Branch analysis from position: 80
Branch analysis from position: 82
2 jumps found. (Code = 43) Position 1 = 84, Position 2 = 85
Branch analysis from position: 84
1 jumps found. (Code = 42) Position 1 = 60
Branch analysis from position: 60
Branch analysis from position: 85
Branch analysis from position: 90
1 jumps found. (Code = 42) Position 1 = 110
Branch analysis from position: 110
1 jumps found. (Code = 42) Position 1 = 36
Branch analysis from position: 36
Branch analysis from position: 90
Branch analysis from position: 96
1 jumps found. (Code = 42) Position 1 = 110
Branch analysis from position: 110
Branch analysis from position: 110
Branch analysis from position: 45
2 jumps found. (Code = 44) Position 1 = 47, Position 2 = 50
Branch analysis from position: 47
2 jumps found. (Code = 44) Position 1 = 49, Position 2 = 96
Branch analysis from position: 49
1 jumps found. (Code = 42) Position 1 = 110
Branch analysis from position: 110
Branch analysis from position: 96
Branch analysis from position: 50
Branch analysis from position: 112
2 jumps found. (Code = 43) Position 1 = 143, Position 2 = 144
Branch analysis from position: 143
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 144
2 jumps found. (Code = 77) Position 1 = 154, Position 2 = 168
Branch analysis from position: 154
2 jumps found. (Code = 78) Position 1 = 155, Position 2 = 168
Branch analysis from position: 155
1 jumps found. (Code = 42) Position 1 = 154
Branch analysis from position: 154
Branch analysis from position: 168
2 jumps found. (Code = 43) Position 1 = 183, Position 2 = 184
Branch analysis from position: 183
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 184
2 jumps found. (Code = 43) Position 1 = 191, Position 2 = 197
Branch analysis from position: 191
1 jumps found. (Code = 42) Position 1 = 207
Branch analysis from position: 207
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 197
Branch analysis from position: 168
Branch analysis from position: 112
Branch analysis from position: 198
2 jumps found. (Code = 43) Position 1 = 206, Position 2 = 207
Branch analysis from position: 206
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 207
filename:       /in/qD3HR
function name:  stream_write
number of ops:  210
compiled vars:  !0 = $data, !1 = $boundary, !2 = $serverId, !3 = $slotId, !4 = $authToken, !5 = $post, !6 = $field, !7 = $v, !8 = $k, !9 = $http, !10 = $w
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
          0  E >   RECV                                             !0      
          1        FETCH_OBJ_R                                      ~11     'params'
          2        BOOL_NOT                                         ~12     ~11
          3      > JMPZ                                                     ~12, ->198
          4    >   INIT_FCALL                                               'md5'
          5        INIT_FCALL                                               'mt_rand'
          6        DO_ICALL                                         $13     
          7        INIT_FCALL                                               'mt_rand'
          8        DO_ICALL                                         $14     
          9        MUL                                              ~15     $13, $14
         10        SEND_VAL                                                 ~15
         11        DO_ICALL                                         $16     
         12        INIT_FCALL                                               'md5'
         13        INIT_FCALL                                               'mt_rand'
         14        DO_ICALL                                         $17     
         15        INIT_FCALL                                               'mt_rand'
         16        DO_ICALL                                         $18     
         17        MUL                                              ~19     $17, $18
         18        SEND_VAL                                                 ~19
         19        DO_ICALL                                         $20     
         20        CONCAT                                           ~21     $16, $20
         21        ASSIGN                                                   !1, ~21
         22        INIT_FCALL                                               'compact'
         23        SEND_VAL                                                 'boundary'
         24        DO_ICALL                                         $24     
         25        ASSIGN_OBJ                                               'params'
         26        OP_DATA                                                  $24
         27        ASSIGN                                                   !2, ''
         28        ASSIGN                                                   !3, ''
         29        ASSIGN                                                   !4, ''
         30        ASSIGN                                                   !5, <array>
         31        INIT_FCALL                                               'explode'
         32        SEND_VAL                                                 '%0A'
         33        SEND_VAR                                                 !0
         34        DO_ICALL                                         $29     
         35      > FE_RESET_R                                       $30     $29, ->112
         36    > > FE_FETCH_R                                               $30, !6, ->112
         37    >   INIT_FCALL                                               'explode'
         38        SEND_VAL                                                 '%3A'
         39        SEND_VAR                                                 !6
         40        SEND_VAL                                                 2
         41        DO_ICALL                                         $31     
         42        ASSIGN                                                   !6, $31
         43        FETCH_DIM_R                                      ~33     !6, 0
         44      > SWITCH_STRING                                            ~33, [ 'SensioLabsProfiler-Query':->50, 'SensioLabsProfiler-Auth':->96, ], ->110
         45    >   CASE                                                     ~33, 'SensioLabsProfiler-Query'
         46      > JMPNZ                                                    ~34, ->50
         47    >   CASE                                                     ~33, 'SensioLabsProfiler-Auth'
         48      > JMPNZ                                                    ~34, ->96
         49    > > JMP                                                      ->110
         50    >   INIT_FCALL                                               'trim'
         51        FETCH_DIM_R                                      ~35     !6, 1
         52        SEND_VAL                                                 ~35
         53        DO_ICALL                                         $36     
         54        ASSIGN                                                   !4, $36
         55        INIT_FCALL                                               'parse_str'
         56        SEND_VAR                                                 !4
         57        SEND_REF                                                 !6
         58        DO_ICALL                                                 
         59      > FE_RESET_R                                       $39     !6, ->90
         60    > > FE_FETCH_R                                       ~40     $39, !7, ->90
         61    >   ASSIGN                                                   !8, ~40
         62        IS_IDENTICAL                                             !8, 'agentIds'
         63      > JMPZ                                                     ~42, ->82
         64    >   INIT_FCALL                                               'explode'
         65        SEND_VAL                                                 '%2C'
         66        SEND_VAR                                                 !7
         67        DO_ICALL                                         $43     
         68        ASSIGN                                                   !7, $43
         69        FETCH_DIM_R                                      ~45     !7, 0
         70        CONCAT                                           ~46     ~45, '%3A'
         71        CONCAT                                           ~47     ~46, !4
         72        ASSIGN                                                   !4, ~47
         73      > FE_RESET_R                                       $49     !7, ->80
         74    > > FE_FETCH_R                                               $49, !7, ->80
         75    >   INIT_ARRAY                                       ~51     'agents%5B%5D'
         76        ADD_ARRAY_ELEMENT                                ~51     !7
         77        ASSIGN_DIM                                               !5
         78        OP_DATA                                                  ~51
         79      > JMP                                                      ->74
         80    >   FE_FREE                                                  $49
         81      > JMP                                                      ->89
         82    >   IS_IDENTICAL                                             !8, 'profileSlot'
         83      > JMPZ                                                     ~52, ->85
         84    >   ASSIGN                                                   !3, !7
         85    >   INIT_ARRAY                                       ~55     !8
         86        ADD_ARRAY_ELEMENT                                ~55     !7
         87        ASSIGN_DIM                                               !5
         88        OP_DATA                                                  ~55
         89    > > JMP                                                      ->60
         90    >   FE_FREE                                                  $39
         91        INIT_FCALL                                               'base64_encode'
         92        SEND_VAR                                                 !4
         93        DO_ICALL                                         $56     
         94        ASSIGN                                                   !4, $56
         95      > JMP                                                      ->110
         96    >   INIT_FCALL                                               'trim'
         97        FETCH_DIM_R                                      ~58     !6, 1
         98        SEND_VAL                                                 ~58
         99        DO_ICALL                                         $59     
        100        ASSIGN                                                   !2, $59
        101        ROPE_INIT                                     5  ~64     'X-'
        102        FETCH_DIM_R                                      ~61     !6, 0
        103        ROPE_ADD                                      1  ~64     ~64, ~61
        104        ROPE_ADD                                      2  ~64     ~64, '%3A+'
        105        FETCH_DIM_R                                      ~62     !6, 1
        106        ROPE_ADD                                      3  ~64     ~64, ~62
        107        ROPE_END                                      4  ~63     ~64, '%0D%0A'
        108        ASSIGN                                                   !2, ~63
        109      > JMP                                                      ->110
        110    >   FREE                                                     ~33
        111      > JMP                                                      ->36
        112    >   FE_FREE                                                  $30
        113        ROPE_INIT                                     3  ~69     'POST+%2Fagent-api%2Fv1%2Fprofile-slots%2F'
        114        ROPE_ADD                                      1  ~69     ~69, !3
        115        ROPE_END                                      2  ~68     ~69, '+HTTP%2F1.1%0D%0A'
        116        ROPE_INIT                                     3  ~74     'Host%3A+'
        117        FETCH_OBJ_R                                      ~71     'sslContext'
        118        FETCH_DIM_R                                      ~72     ~71, 'SNI_server_name'
        119        ROPE_ADD                                      1  ~74     ~74, ~72
        120        ROPE_END                                      2  ~73     ~74, '%0D%0A'
        121        CONCAT                                           ~76     ~68, ~73
        122        CONCAT                                           ~77     ~76, 'User-Agent%3A+SensioLabsProfiler-SDK%0D%0A'
        123        ROPE_INIT                                     3  ~79     'Authorization%3A+Basic+'
        124        ROPE_ADD                                      1  ~79     ~79, !4
        125        ROPE_END                                      2  ~78     ~79, '%0D%0A'
        126        CONCAT                                           ~81     ~77, ~78
        127        ROPE_INIT                                     3  ~83     'Content-Type%3A+multipart%2Fform-data%3B+boundary%3D'
        128        ROPE_ADD                                      1  ~83     ~83, !1
        129        ROPE_END                                      2  ~82     ~83, '%0D%0A'
        130        CONCAT                                           ~85     ~81, ~82
        131        CONCAT                                           ~86     ~85, 'Transfer-Encoding%3A+chunked%0D%0A'
        132        CONCAT                                           ~87     ~86, !2
        133        CONCAT                                           ~88     ~87, '%0D%0A'
        134        ASSIGN                                                   !9, ~88
        135        INIT_FCALL                                               'fwrite'
        136        FETCH_OBJ_R                                      ~90     'socket'
        137        SEND_VAL                                                 ~90
        138        SEND_VAR                                                 !9
        139        DO_ICALL                                         $91     
        140        ASSIGN                                           ~92     !10, $91
        141        BOOL_NOT                                         ~93     ~92
        142      > JMPZ                                                     ~93, ->144
        143    > > RETURN                                                   !10
        144    >   INIT_FCALL                                               'stream_filter_append'
        145        FETCH_OBJ_R                                      ~94     'socket'
        146        SEND_VAL                                                 ~94
        147        SEND_VAL                                                 'sprofiler.chunk'
        148        SEND_VAL                                                 2
        149        FETCH_OBJ_R                                      ~95     'params'
        150        SEND_VAL                                                 ~95
        151        DO_ICALL                                                 
        152        ASSIGN                                                   !9, ''
        153      > FE_RESET_R                                       $98     !5, ->168
        154    > > FE_FETCH_R                                               $98, !6, ->168
        155    >   CONCAT                                           ~99     '--', !1
        156        CONCAT                                           ~100    ~99, '%0D%0A'
        157        CONCAT                                           ~101    ~100, 'Content-Disposition%3A+form-data%3B+name%3D%22'
        158        FETCH_DIM_R                                      ~102    !6, 0
        159        CONCAT                                           ~103    ~101, ~102
        160        CONCAT                                           ~104    ~103, '%22'
        161        CONCAT                                           ~105    ~104, '%0D%0A'
        162        CONCAT                                           ~106    ~105, '%0D%0A'
        163        FETCH_DIM_R                                      ~107    !6, 1
        164        CONCAT                                           ~108    ~106, ~107
        165        CONCAT                                           ~109    ~108, '%0D%0A'
        166        ASSIGN_OP                                     8          !9, ~109
        167      > JMP                                                      ->154
        168    >   FE_FREE                                                  $98
        169        CONCAT                                           ~111    '--', !1
        170        CONCAT                                           ~112    ~111, '%0D%0A'
        171        CONCAT                                           ~113    ~112, 'Content-Disposition%3A+form-data%3B+name%3D%22payload%22%3B+filename%3D%22graph.dat%22%0D%0A'
        172        CONCAT                                           ~114    ~113, 'Content-Type%3A+application%2Foctet-stream%0D%0A'
        173        CONCAT                                           ~115    ~114, '%0D%0A'
        174        ASSIGN_OP                                     8          !9, ~115
        175        INIT_FCALL                                               'fwrite'
        176        FETCH_OBJ_R                                      ~117    'socket'
        177        SEND_VAL                                                 ~117
        178        SEND_VAR                                                 !9
        179        DO_ICALL                                         $118    
        180        ASSIGN                                           ~119    !10, $118
        181        BOOL_NOT                                         ~120    ~119
        182      > JMPZ                                                     ~120, ->184
        183    > > RETURN                                                   !10
        184    >   INIT_FCALL                                               'in_array'
        185        SEND_VAL                                                 'zlib.%2A'
        186        INIT_FCALL                                               'stream_get_filters'
        187        DO_ICALL                                         $121    
        188        SEND_VAR                                                 $121
        189        DO_ICALL                                         $122    
        190      > JMPZ                                                     $122, ->197
        191    >   INIT_FCALL                                               'stream_filter_prepend'
        192        FETCH_OBJ_R                                      ~123    'socket'
        193        SEND_VAL                                                 ~123
        194        SEND_VAL                                                 'zlib.deflate'
        195        SEND_VAL                                                 2
        196        DO_ICALL                                                 
        197    > > JMP                                                      ->207
        198    >   INIT_FCALL                                               'fwrite'
        199        FETCH_OBJ_R                                      ~125    'socket'
        200        SEND_VAL                                                 ~125
        201        SEND_VAR                                                 !0
        202        DO_ICALL                                         $126    
        203        ASSIGN                                           ~127    !10, $126
        204        BOOL_NOT                                         ~128    ~127
        205      > JMPZ                                                     ~128, ->207
        206    > > RETURN                                                   !10
        207    >   STRLEN                                           ~129    !0
        208      > RETURN                                                   ~129
        209*     > RETURN                                                   null

End of function stream_write

Function stream_flush:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/qD3HR
function name:  stream_flush
number of ops:  6
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
          0  E >   INIT_FCALL                                               'fflush'
          1        FETCH_OBJ_R                                      ~0      'socket'
          2        SEND_VAL                                                 ~0
          3        DO_ICALL                                         $1      
          4      > RETURN                                                   $1
          5*     > RETURN                                                   null

End of function stream_flush

Function stream_close:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/qD3HR
function name:  stream_close
number of ops:  9
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
          0  E >   INIT_FCALL                                               'fclose'
          1        FETCH_OBJ_R                                      ~0      'socket'
          2        SEND_VAL                                                 ~0
          3        DO_ICALL                                                 
          4        ASSIGN_OBJ                                       ~3      'params'
          5        OP_DATA                                                  null
          6        ASSIGN_OBJ                                               'socket'
          7        OP_DATA                                                  ~3
          8      > RETURN                                                   null

End of function stream_close

Function stream_lock:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/qD3HR
function name:  stream_lock
number of ops:  2
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
          0  E > > RETURN                                                   <false>
          1*     > RETURN                                                   null

End of function stream_lock

Function filter:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 22
Branch analysis from position: 22
2 jumps found. (Code = 44) Position 1 = 27, Position 2 = 5
Branch analysis from position: 27
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 52
Branch analysis from position: 28
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 52
Branch analysis from position: 5
2 jumps found. (Code = 44) Position 1 = 27, Position 2 = 5
Branch analysis from position: 27
Branch analysis from position: 5
filename:       /in/qD3HR
function name:  filter
number of ops:  54
compiled vars:  !0 = $in, !1 = $out, !2 = $consumed, !3 = $closing, !4 = $bucket, !5 = $data
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
          0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
          3        RECV                                             !3      
          4      > JMP                                                      ->22
          5    >   FETCH_OBJ_R                                      ~6      !4, 'datalen'
          6        ASSIGN_OP                                     1          !2, ~6
          7        INIT_FCALL                                               'dechex'
          8        FETCH_OBJ_R                                      ~9      !4, 'datalen'
          9        SEND_VAL                                                 ~9
         10        DO_ICALL                                         $10     
         11        ROPE_INIT                                     3  ~13     '%0D%0A'
         12        FETCH_OBJ_R                                      ~11     !4, 'data'
         13        ROPE_ADD                                      1  ~13     ~13, ~11
         14        ROPE_END                                      2  ~12     ~13, '%0D%0A'
         15        CONCAT                                           ~15     $10, ~12
         16        ASSIGN_OBJ                                               !4, '

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
157.45 ms | 1431 KiB | 52 Q