3v4l.org

run code in 300+ PHP versions simultaneously
<?php $json = <<<EOT [ { "file": "/jquery/2.1.1/jquery.min.js", "md5": "d021c983bd6e7291b43a5cc1fb2ebe99" }, { "file": "/g/jquery@2.1.0,angularjs@1.2.14(angular.min.js+angular-resource.min.js+angular-animate.min.js+angular-cookies.min.js+angular-route.min.js+angular-sanitize.min.js)", "md5": "57e021c8c8b5e5b262ad8e072180fc22" }, { "file": "/g/jquery@2.1.1,d3js@3.4.10,typeahead.js@0.10.2,underscorejs@1.6.0,spinjs@1.3.0,handlebarsjs@1.3.0(handlebars.min.js)", "md5": "e723f9074b6ceab9f74f5d191c497245" }, { "file": "/bootstrap/3.2.0/css/bootstrap.min.css", "md5": "385b964b68acb68d23cb43a5218fade9" }, { "file": "/jquery/1.4/jquery.min.js", "md5": "73a9c334c5ca71d70d092b42064f6476" }, { "file": "/fancybox/2.1.5/helpers/fancybox_buttons.png", "md5": "b448080f8615e664b7788c7003803b59" }, { "file": "/foundation/5.3.0/foundation.zip", "md5": "2687f8c45789171eae115649a52ec464" }, { "file": "/normalize/1/normalize.css", "md5": "f1780870594b8948c02270c3c5408437" }, { "file": "/jquery/latest/jquery.min.js", "dynamic": { "name": "jquery", "pathFormat": "/jquery/{$version}/jquery.min.js" } }, { "file": "/angularjs/latest/angular.min.js", "dynamic": { "name": "angularjs", "pathFormat": "/angularjs/{$version}/angular.min.js" } }, { "file": "/g/jquery.fileupload@7(jquery/js/jquery.fileupload.js)", "md5": "5114585e67c495043e7f72e47bf9cefb" }, { "file": "/g/chosen", "dynamic": { "name": "chosen", "pathFormat": "/chosen/{$version}/chosen.jquery.min.js", "trimWhitespace": true } } ] EOT; $config = json_decode($json); function curl($url){ if (function_exists('curl_version')){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close ($ch); return $result; } else { return file_get_contents($url); } } $apiServer = 'jsdelivr-api.dak.netdna-cdn.com'; $originServer = 'origin.jsdelivr.net'; // Host defaults to http://cdn.jsdelivr.net if (empty($_GET['host'])) { $host = 'http://cdn.jsdelivr.net'; } else { $host = 'http://' . $_GET['host']; } $passed = 0; $failed = 0; foreach ($config as $test) { if (!empty($test->dynamic)) { // Ask the api for the latest version of the project $apiResult = json_decode(curl("http://{$apiServer}/v1/jsdelivr/libraries?fields=lastversion&name=" . $test->dynamic->name)); $staticPath = strtr($test->dynamic->pathFormat, array('{$version}' => $apiResult[0]->lastversion)); if (isset($test->dynamic->trimWhitespace) && ($test->dynamic->trimWhitespace === true)) { $fileMD5 = md5(trim(curl($host . $test->file))); } else { $fileMD5 = md5(curl($host . $test->file)); } $staticMD5 = md5(curl($host . $staticPath)); // Test if it matches MD5 of static file if ($fileMD5 == $staticMD5) { // Test if it matches origin $originMD5 = md5(curl("http://{$originServer}" . $staticPath)); if($fileMD5 == $originMD5) { $passed += 1; echo '[PASS] ', $test->file, "\n"; } else { $failed += 1; echo '[FAIL] ', $test->file, "\n"; echo '-> Origin mismatch', "\n"; } } else { $failed += 1; echo '[FAIL] ', $test->file, "\n"; echo '-> Checksum mismatch', "\n"; } } else { $fileMD5 = md5(curl($host . $test->file)); // Test if it matches MD5 in config if ($fileMD5 == $test->md5) { // Test if it matches origin $originMD5 = md5(curl("http://{$originServer}" . $test->file)); if($fileMD5 == $originMD5) { $passed += 1; echo '[PASS] ', $test->file, "\n"; } else { $failed += 1; echo '[FAIL] ', $test->file, "\n"; echo '-> Origin mismatch', "\n"; } } else { $failed += 1; echo '[FAIL] ', $test->file, "\n"; echo '-> Checksum mismatch', "\n"; } } // Don't trigger DDoS firewalls, etc sleep(0.75); } // Let's spin the asset wheel ten times, twice! function array_mt_rand($array) { // PHP should use mt_rand for array_rand... return $array[mt_rand(0, count($array) - 1)]; } // This section randomly tests origin-cdn matching $allProjects = json_decode(curl("http://{$apiServer}/v1/jsdelivr/libraries/?fields=name,assets")); $pickedFiles = array(); $i = 0; while ($i++ < 10) { // Much files. Such random. Wow. $randomProject = array_mt_rand($allProjects); $randomName = $randomProject->name; $randomAssetGroup = array_mt_rand($randomProject->assets); $randomVersion = $randomAssetGroup->version; $randomFile = array_mt_rand($randomAssetGroup->files); $pickedFiles[] = "/{$randomName}/{$randomVersion}/{$randomFile}"; } foreach ($pickedFiles as $filePath) { $fileMD5 = md5(curl($host . $filePath)); // Test if it matches origin $originMD5 = md5(curl("http://{$originServer}" . $filePath)); if($fileMD5 == $originMD5) { $passed += 1; echo '[PASS] ', $filePath, "\n"; } else { $failed += 1; echo '[FAIL] ', $filePath, "\n"; echo '-> Origin mismatch', "\n"; } // Don't trigger DDoS firewalls, etc sleep(0.75); } // This section randomly tests latest version matching for mainfiles $allProjects = json_decode(curl("http://{$apiServer}/v1/jsdelivr/libraries/?fields=name,mainfile,lastversion")); $pickedFiles = array(); $i = 0; while ($i++ < 10) { $randomProject = array_mt_rand($allProjects); $randomName = $randomProject->name; $randomMainfile = $randomProject->mainfile; $randomLastVersion = $randomProject->lastversion; if (empty($randomMainfile)) { $i--; } else { $pickedFiles[] = array( 'latestPath' => "/{$randomName}/latest/{$randomMainfile}", 'staticPath' => "/{$randomName}/{$randomLastVersion}/{$randomMainfile}" ); } } foreach ($pickedFiles as $fileInfo) { // Test if it matches MD5 of static file $fileMD5 = md5(curl($host . $fileInfo['latestPath'])); $staticMD5 = md5(curl($host . $fileInfo['staticPath'])); if ($fileMD5 == $staticMD5) { // Test if it matches origin $originMD5 = md5(curl("http://{$originServer}" . $fileInfo['staticPath'])); if($fileMD5 == $originMD5) { $passed += 1; echo '[PASS] ', $fileInfo['latestPath'], "\n"; } else { $failed += 1; echo '[FAIL] ', $fileInfo['latestPath'], "\n"; echo '-> Origin mismatch', "\n"; } } else { $failed += 1; echo '[FAIL] ', $fileInfo['latestPath'], "\n"; echo '-> Checksum mismatch', "\n"; } } echo $passed, ' tests passed, ', $failed, ' tests failed', "\n";
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 17, Position 2 = 19
Branch analysis from position: 17
1 jumps found. (Code = 42) Position 1 = 23
Branch analysis from position: 23
2 jumps found. (Code = 77) Position 1 = 26, Position 2 = 177
Branch analysis from position: 26
2 jumps found. (Code = 78) Position 1 = 27, Position 2 = 177
Branch analysis from position: 27
2 jumps found. (Code = 43) Position 1 = 30, Position 2 = 127
Branch analysis from position: 30
2 jumps found. (Code = 46) Position 1 = 56, Position 2 = 60
Branch analysis from position: 56
2 jumps found. (Code = 43) Position 1 = 61, Position 2 = 74
Branch analysis from position: 61
1 jumps found. (Code = 42) Position 1 = 83
Branch analysis from position: 83
2 jumps found. (Code = 43) Position 1 = 93, Position 2 = 119
Branch analysis from position: 93
2 jumps found. (Code = 43) Position 1 = 105, Position 2 = 111
Branch analysis from position: 105
1 jumps found. (Code = 42) Position 1 = 118
Branch analysis from position: 118
1 jumps found. (Code = 42) Position 1 = 126
Branch analysis from position: 126
1 jumps found. (Code = 42) Position 1 = 173
Branch analysis from position: 173
1 jumps found. (Code = 42) Position 1 = 26
Branch analysis from position: 26
Branch analysis from position: 111
1 jumps found. (Code = 42) Position 1 = 126
Branch analysis from position: 126
Branch analysis from position: 119
1 jumps found. (Code = 42) Position 1 = 173
Branch analysis from position: 173
Branch analysis from position: 74
2 jumps found. (Code = 43) Position 1 = 93, Position 2 = 119
Branch analysis from position: 93
Branch analysis from position: 119
Branch analysis from position: 60
Branch analysis from position: 127
2 jumps found. (Code = 43) Position 1 = 139, Position 2 = 166
Branch analysis from position: 139
2 jumps found. (Code = 43) Position 1 = 152, Position 2 = 158
Branch analysis from position: 152
1 jumps found. (Code = 42) Position 1 = 165
Branch analysis from position: 165
1 jumps found. (Code = 42) Position 1 = 173
Branch analysis from position: 173
Branch analysis from position: 158
1 jumps found. (Code = 42) Position 1 = 173
Branch analysis from position: 173
Branch analysis from position: 166
1 jumps found. (Code = 42) Position 1 = 26
Branch analysis from position: 26
Branch analysis from position: 177
1 jumps found. (Code = 42) Position 1 = 217
Branch analysis from position: 217
2 jumps found. (Code = 44) Position 1 = 220, Position 2 = 191
Branch analysis from position: 220
2 jumps found. (Code = 77) Position 1 = 221, Position 2 = 257
Branch analysis from position: 221
2 jumps found. (Code = 78) Position 1 = 222, Position 2 = 257
Branch analysis from position: 222
2 jumps found. (Code = 43) Position 1 = 242, Position 2 = 247
Branch analysis from position: 242
1 jumps found. (Code = 42) Position 1 = 253
Branch analysis from position: 253
1 jumps found. (Code = 42) Position 1 = 221
Branch analysis from position: 221
Branch analysis from position: 247
1 jumps found. (Code = 42) Position 1 = 221
Branch analysis from position: 221
Branch analysis from position: 257
1 jumps found. (Code = 42) Position 1 = 299
Branch analysis from position: 299
2 jumps found. (Code = 44) Position 1 = 302, Position 2 = 271
Branch analysis from position: 302
2 jumps found. (Code = 77) Position 1 = 303, Position 2 = 359
Branch analysis from position: 303
2 jumps found. (Code = 78) Position 1 = 304, Position 2 = 359
Branch analysis from position: 304
2 jumps found. (Code = 43) Position 1 = 324, Position 2 = 351
Branch analysis from position: 324
2 jumps found. (Code = 43) Position 1 = 337, Position 2 = 343
Branch analysis from position: 337
1 jumps found. (Code = 42) Position 1 = 350
Branch analysis from position: 350
1 jumps found. (Code = 42) Position 1 = 358
Branch analysis from position: 358
1 jumps found. (Code = 42) Position 1 = 303
Branch analysis from position: 303
Branch analysis from position: 343
1 jumps found. (Code = 42) Position 1 = 358
Branch analysis from position: 358
Branch analysis from position: 351
1 jumps found. (Code = 42) Position 1 = 303
Branch analysis from position: 303
Branch analysis from position: 359
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 359
Branch analysis from position: 271
2 jumps found. (Code = 43) Position 1 = 283, Position 2 = 285
Branch analysis from position: 283
1 jumps found. (Code = 42) Position 1 = 299
Branch analysis from position: 299
Branch analysis from position: 285
2 jumps found. (Code = 44) Position 1 = 302, Position 2 = 271
Branch analysis from position: 302
Branch analysis from position: 271
Branch analysis from position: 257
Branch analysis from position: 191
2 jumps found. (Code = 44) Position 1 = 220, Position 2 = 191
Branch analysis from position: 220
Branch analysis from position: 191
Branch analysis from position: 177
Branch analysis from position: 19
2 jumps found. (Code = 77) Position 1 = 26, Position 2 = 177
Branch analysis from position: 26
Branch analysis from position: 177
filename:       /in/XHYYg
function name:  (null)
number of ops:  366
compiled vars:  !0 = $json, !1 = $version, !2 = $config, !3 = $apiServer, !4 = $originServer, !5 = $host, !6 = $passed, !7 = $failed, !8 = $test, !9 = $apiResult, !10 = $staticPath, !11 = $fileMD5, !12 = $staticMD5, !13 = $originMD5, !14 = $allProjects, !15 = $pickedFiles, !16 = $i, !17 = $randomProject, !18 = $randomName, !19 = $randomAssetGroup, !20 = $randomVersion, !21 = $randomFile, !22 = $filePath, !23 = $randomMainfile, !24 = $randomLastVersion, !25 = $fileInfo
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ROPE_INIT                                     7  ~27     '%5B%0A%09%7B%0A%09%09%22file%22%3A+%22%2Fjquery%2F2.1.1%2Fjquery.min.js%22%2C+%0A%09%09%22md5%22%3A+%22d021c983bd6e7291b43a5cc1fb2ebe99%22%0A%09%7D%2C%0A%09%7B%0A%09%09%22file%22%3A+%22%2Fg%2Fjquery%402.1.0%2Cangularjs%401.2.14%28angular.min.js%2Bangular-resource.min.js%2Bangular-animate.min.js%2Bangular-cookies.min.js%2Bangular-route.min.js%2Bangular-sanitize.min.js%29%22%2C+%0A%09%09%22md5%22%3A+%2257e021c8c8b5e5b262ad8e072180fc22%22%0A%09%7D%2C%0A%09%7B%0A%09%09%22file%22%3A+%22%2Fg%2Fjquery%402.1.1%2Cd3js%403.4.10%2Ctypeahead.js%400.10.2%2Cunderscorejs%401.6.0%2Cspinjs%401.3.0%2Chandlebarsjs%401.3.0%28handlebars.min.js%29%22%2C%0A%09%09%22md5%22%3A+%22e723f9074b6ceab9f74f5d191c497245%22%0A%09%7D%2C%0A%09%7B%0A%09%09%22file%22%3A+%22%2Fbootstrap%2F3.2.0%2Fcss%2Fbootstrap.min.css%22%2C+%0A%09%09%22md5%22%3A+%22385b964b68acb68d23cb43a5218fade9%22%0A%09%7D%2C%0A%09%7B%0A%09%09%22file%22%3A+%22%2Fjquery%2F1.4%2Fjquery.min.js%22%2C+%0A%09%09%22md5%22%3A+%2273a9c334c5ca71d70d092b42064f6476%22%0A%09%7D%2C%0A%09%7B%0A%09%09%22file%22%3A+%22%2Ffancybox%2F2.1.5%2Fhelpers%2Ffancybox_buttons.png%22%2C+%0A%09%09%22md5%22%3A+%22b448080f8615e664b7788c7003803b59%22%0A%09%7D%2C%0A%09%7B%0A%09%09%22file%22%3A+%22%2Ffoundation%2F5.3.0%2Ffoundation.zip%22%2C%0A%09%09%22md5%22%3A+%222687f8c45789171eae115649a52ec464%22%0A%09%7D%2C%0A%09%7B%0A%09%09%22file%22%3A+%22%2Fnormalize%2F1%2Fnormalize.css%22%2C+%0A%09%09%22md5%22%3A+%22f1780870594b8948c02270c3c5408437%22%0A%09%7D%2C%0A%09%7B%0A%09%09%22file%22%3A+%22%2Fjquery%2Flatest%2Fjquery.min.js%22%2C+%0A%09%09%22dynamic%22%3A+%7B%0A%09%09%09%22name%22%3A+%22jquery%22%2C+%0A%09%09%09%22pathFormat%22%3A+%22%2Fjquery%2F'
   40     1        ROPE_ADD                                      1  ~27     ~27, !1
          2        ROPE_ADD                                      2  ~27     ~27, '%2Fjquery.min.js%22%0A%09%09%7D%0A%09%7D%2C%0A%09%7B%0A%09%09%22file%22%3A+%22%2Fangularjs%2Flatest%2Fangular.min.js%22%2C+%0A%09%09%22dynamic%22%3A+%7B%0A%09%09%09%22name%22%3A+%22angularjs%22%2C%0A%09%09%09%22pathFormat%22%3A+%22%2Fangularjs%2F'
   47     3        ROPE_ADD                                      3  ~27     ~27, !1
          4        ROPE_ADD                                      4  ~27     ~27, '%2Fangular.min.js%22%0A%09%09%7D%0A%09%7D%2C%0A%09%7B%0A%09%09%22file%22%3A+%22%2Fg%2Fjquery.fileupload%407%28jquery%2Fjs%2Fjquery.fileupload.js%29%22%2C+%0A%09%09%22md5%22%3A+%225114585e67c495043e7f72e47bf9cefb%22%0A%09%7D%2C%0A%09%7B%0A%09%09%22file%22%3A+%22%2Fg%2Fchosen%22%2C+%0A%09%09%22dynamic%22%3A+%7B%0A%09%09%09%22name%22%3A+%22chosen%22%2C%0A%09%09%09%22pathFormat%22%3A+%22%2Fchosen%2F'
   58     5        ROPE_ADD                                      5  ~27     ~27, !1
          6        ROPE_END                                      6  ~26     ~27, '%2Fchosen.jquery.min.js%22%2C%0A%09%09%09%22trimWhitespace%22%3A+true%0A%09%09%7D%0A%09%7D%0A%5D'
    2     7        ASSIGN                                                   !0, ~26
   64     8        INIT_FCALL                                               'json_decode'
          9        SEND_VAR                                                 !0
         10        DO_ICALL                                         $32     
         11        ASSIGN                                                   !2, $32
   77    12        ASSIGN                                                   !3, 'jsdelivr-api.dak.netdna-cdn.com'
   78    13        ASSIGN                                                   !4, 'origin.jsdelivr.net'
   80    14        FETCH_IS                                         ~36     '_GET'
         15        ISSET_ISEMPTY_DIM_OBJ                         1          ~36, 'host'
         16      > JMPZ                                                     ~37, ->19
   81    17    >   ASSIGN                                                   !5, 'http%3A%2F%2Fcdn.jsdelivr.net'
         18      > JMP                                                      ->23
   83    19    >   FETCH_R                      global              ~39     '_GET'
         20        FETCH_DIM_R                                      ~40     ~39, 'host'
         21        CONCAT                                           ~41     'http%3A%2F%2F', ~40
         22        ASSIGN                                                   !5, ~41
   86    23    >   ASSIGN                                                   !6, 0
   87    24        ASSIGN                                                   !7, 0
   88    25      > FE_RESET_R                                       $45     !2, ->177
         26    > > FE_FETCH_R                                               $45, !8, ->177
   89    27    >   ISSET_ISEMPTY_PROP_OBJ                           ~46     !8, 'dynamic'
         28        BOOL_NOT                                         ~47     ~46
         29      > JMPZ                                                     ~47, ->127
   91    30    >   INIT_FCALL                                               'json_decode'
         31        INIT_FCALL                                               'curl'
         32        ROPE_INIT                                     3  ~49     'http%3A%2F%2F'
         33        ROPE_ADD                                      1  ~49     ~49, !3
         34        ROPE_END                                      2  ~48     ~49, '%2Fv1%2Fjsdelivr%2Flibraries%3Ffields%3Dlastversion%26name%3D'
         35        FETCH_OBJ_R                                      ~51     !8, 'dynamic'
         36        FETCH_OBJ_R                                      ~52     ~51, 'name'
         37        CONCAT                                           ~53     ~48, ~52
         38        SEND_VAL                                                 ~53
         39        DO_FCALL                                      0  $54     
         40        SEND_VAR                                                 $54
         41        DO_ICALL                                         $55     
         42        ASSIGN                                                   !9, $55
   92    43        INIT_FCALL                                               'strtr'
         44        FETCH_OBJ_R                                      ~57     !8, 'dynamic'
         45        FETCH_OBJ_R                                      ~58     ~57, 'pathFormat'
         46        SEND_VAL                                                 ~58
         47        FETCH_DIM_R                                      ~59     !9, 0
         48        FETCH_OBJ_R                                      ~60     ~59, 'lastversion'
         49        INIT_ARRAY                                       ~61     ~60, '%7B%24version%7D'
         50        SEND_VAL                                                 ~61
         51        DO_ICALL                                         $62     
         52        ASSIGN                                                   !10, $62
   93    53        FETCH_OBJ_IS                                     ~64     !8, 'dynamic'
         54        ISSET_ISEMPTY_PROP_OBJ                           ~65     ~64, 'trimWhitespace'
         55      > JMPZ_EX                                          ~65     ~65, ->60
         56    >   FETCH_OBJ_R                                      ~66     !8, 'dynamic'
         57        FETCH_OBJ_R                                      ~67     ~66, 'trimWhitespace'
         58        TYPE_CHECK                                    8  ~68     ~67
         59        BOOL                                             ~65     ~68
         60    > > JMPZ                                                     ~65, ->74
   94    61    >   INIT_FCALL                                               'md5'
         62        INIT_FCALL                                               'trim'
         63        INIT_FCALL                                               'curl'
         64        FETCH_OBJ_R                                      ~69     !8, 'file'
         65        CONCAT                                           ~70     !5, ~69
         66        SEND_VAL                                                 ~70
         67        DO_FCALL                                      0  $71     
         68        SEND_VAR                                                 $71
         69        DO_ICALL                                         $72     
         70        SEND_VAR                                                 $72
         71        DO_ICALL                                         $73     
         72        ASSIGN                                                   !11, $73
         73      > JMP                                                      ->83
   96    74    >   INIT_FCALL                                               'md5'
         75        INIT_FCALL                                               'curl'
         76        FETCH_OBJ_R                                      ~75     !8, 'file'
         77        CONCAT                                           ~76     !5, ~75
         78        SEND_VAL                                                 ~76
         79        DO_FCALL                                      0  $77     
         80        SEND_VAR                                                 $77
         81        DO_ICALL                                         $78     
         82        ASSIGN                                                   !11, $78
   98    83    >   INIT_FCALL                                               'md5'
         84        INIT_FCALL                                               'curl'
         85        CONCAT                                           ~80     !5, !10
         86        SEND_VAL                                                 ~80
         87        DO_FCALL                                      0  $81     
         88        SEND_VAR                                                 $81
         89        DO_ICALL                                         $82     
         90        ASSIGN                                                   !12, $82
  100    91        IS_EQUAL                                                 !11, !12
         92      > JMPZ                                                     ~84, ->119
  102    93    >   INIT_FCALL                                               'md5'
         94        INIT_FCALL                                               'curl'
         95        NOP                                                      
         96        FAST_CONCAT                                      ~85     'http%3A%2F%2F', !4
         97        CONCAT                                           ~86     ~85, !10
         98        SEND_VAL                                                 ~86
         99        DO_FCALL                                      0  $87     
        100        SEND_VAR                                                 $87
        101        DO_ICALL                                         $88     
        102        ASSIGN                                                   !13, $88
  103   103        IS_EQUAL                                                 !11, !13
        104      > JMPZ                                                     ~90, ->111
  104   105    >   ASSIGN_OP                                     1          !6, 1
  105   106        ECHO                                                     '%5BPASS%5D+'
        107        FETCH_OBJ_R                                      ~92     !8, 'file'
        108        ECHO                                                     ~92
        109        ECHO                                                     '%0A'
        110      > JMP                                                      ->118
  107   111    >   ASSIGN_OP                                     1          !7, 1
  108   112        ECHO                                                     '%5BFAIL%5D+'
        113        FETCH_OBJ_R                                      ~94     !8, 'file'
        114        ECHO                                                     ~94
        115        ECHO                                                     '%0A'
  109   116        ECHO                                                     '-%3E+Origin+mismatch'
        117        ECHO                                                     '%0A'
        118    > > JMP                                                      ->126
  112   119    >   ASSIGN_OP                                     1          !7, 1
  113   120        ECHO                                                     '%5BFAIL%5D+'
        121        FETCH_OBJ_R                                      ~96     !8, 'file'
        122        ECHO                                                     ~96
        123        ECHO                                                     '%0A'
  114   124        ECHO                                                     '-%3E+Checksum+mismatch'
        125        ECHO                                                     '%0A'
        126    > > JMP                                                      ->173
  117   127    >   INIT_FCALL                                               'md5'
        128        INIT_FCALL                                               'curl'
        129        FETCH_OBJ_R                                      ~97     !8, 'file'
        130        CONCAT                                           ~98     !5, ~97
        131        SEND_VAL                                                 ~98
        132        DO_FCALL                                      0  $99     
        133        SEND_VAR                                                 $99
        134        DO_ICALL                                         $100    
        135        ASSIGN                                                   !11, $100
  119   136        FETCH_OBJ_R                                      ~102    !8, 'md5'
        137        IS_EQUAL                                                 !11, ~102
        138      > JMPZ                                                     ~103, ->166
  121   139    >   INIT_FCALL                                               'md5'
        140        INIT_FCALL                                               'curl'
        141        NOP                                                      
        142        FAST_CONCAT                                      ~104    'http%3A%2F%2F', !4
        143        FETCH_OBJ_R                                      ~105    !8, 'file'
        144        CONCAT                                           ~106    ~104, ~105
        145        SEND_VAL                                                 ~106
        146        DO_FCALL                                      0  $107    
        147        SEND_VAR                                                 $107
        148        DO_ICALL                                         $108    
        149        ASSIGN                                                   !13, $108
  122   150        IS_EQUAL                                                 !11, !13
        151      > JMPZ                                                     ~110, ->158
  123   152    >   ASSIGN_OP                                     1          !6, 1
  124   153        ECHO                                                     '%5BPASS%5D+'
        154        FETCH_OBJ_R                                      ~112    !8, 'file'
        155        ECHO                                                     ~112
        156        ECHO                                                     '%0A'
        157      > JMP                                                      ->165
  126   158    >   ASSIGN_OP                                     1          !7, 1
  127   159        ECHO                                                     '%5BFAIL%5D+'
        160        FETCH_OBJ_R                                      ~114    !8, 'file'
        161        ECHO                                                     ~114
        162        ECHO                                                     '%0A'
  128   163        ECHO                                                     '-%3E+Origin+mismatch'
        164        ECHO                                                     '%0A'
        165    > > JMP                                                      ->173
  131   166    >   ASSIGN_OP                                     1          !7, 1
  132   167        ECHO                                                     '%5BFAIL%5D+'
        168        FETCH_OBJ_R                                      ~116    !8, 'file'
        169        ECHO                                                     ~116
        170        ECHO                                                     '%0A'
  133   171        ECHO                                                     '-%3E+Checksum+mismatch'
        172        ECHO                                                     '%0A'
  137   173    >   INIT_FCALL                                               'sleep'
        174        SEND_VAL                                                 0.75
        175        DO_ICALL                                                 
   88   176      > JMP                                                      ->26
        177    >   FE_FREE                                                  $45
  145   178        INIT_FCALL                                               'json_decode'
        179        INIT_FCALL                                               'curl'
        180        ROPE_INIT                                     3  ~119    'http%3A%2F%2F'
        181        ROPE_ADD                                      1  ~119    ~119, !3
        182        ROPE_END                                      2  ~118    ~119, '%2Fv1%2Fjsdelivr%2Flibraries%2F%3Ffields%3Dname%2Cassets'
        183        SEND_VAL                                                 ~118
        184        DO_FCALL                                      0  $121    
        185        SEND_VAR                                                 $121
        186        DO_ICALL                                         $122    
        187        ASSIGN                                                   !14, $122
  146   188        ASSIGN                                                   !15, <array>
  147   189        ASSIGN                                                   !16, 0
  148   190      > JMP                                                      ->217
  150   191    >   INIT_FCALL                                               'array_mt_rand'
        192        SEND_VAR                                                 !14
        193        DO_FCALL                                      0  $126    
        194        ASSIGN                                                   !17, $126
  151   195        FETCH_OBJ_R                                      ~128    !17, 'name'
        196        ASSIGN                                                   !18, ~128
  152   197        INIT_FCALL                                               'array_mt_rand'
        198        FETCH_OBJ_R                                      ~130    !17, 'assets'
        199        SEND_VAL                                                 ~130
        200        DO_FCALL                                      0  $131    
        201        ASSIGN                                                   !19, $131
  153   202        FETCH_OBJ_R                                      ~133    !19, 'version'
        203        ASSIGN                                                   !20, ~133
  154   204        INIT_FCALL                                               'array_mt_rand'
        205        FETCH_OBJ_R                                      ~135    !19, 'files'
        206        SEND_VAL                                                 ~135
        207        DO_FCALL                                      0  $136    
        208        ASSIGN                                                   !21, $136
  155   209        ROPE_INIT                                     6  ~140    '%2F'
        210        ROPE_ADD                                      1  ~140    ~140, !18
        211        ROPE_ADD                                      2  ~140    ~140, '%2F'
        212        ROPE_ADD                                      3  ~140    ~140, !20
        213        ROPE_ADD                                      4  ~140    ~140, '%2F'
        214        ROPE_END                                      5  ~139    ~140, !21
        215        ASSIGN_DIM                                               !15
        216        OP_DATA                                                  ~139
  148   217    >   POST_INC                                         ~143    !16
        218        IS_SMALLER                                               ~143, 10
        219      > JMPNZ                                                    ~144, ->191
  157   220    > > FE_RESET_R                                       $145    !15, ->257
        221    > > FE_FETCH_R                                               $145, !22, ->257
  158   222    >   INIT_FCALL                                               'md5'
        223        INIT_FCALL                                               'curl'
        224        CONCAT                                           ~146    !5, !22
        225        SEND_VAL                                                 ~146
        226        DO_FCALL                                      0  $147    
        227        SEND_VAR                                                 $147
        228        DO_ICALL                                         $148    
        229        ASSIGN                                                   !11, $148
  160   230        INIT_FCALL                                               'md5'
        231        INIT_FCALL                                               'curl'
        232        NOP                                                      
        233        FAST_CONCAT                                      ~150    'http%3A%2F%2F', !4
        234        CONCAT                                           ~151    ~150, !22
        235        SEND_VAL                                                 ~151
        236        DO_FCALL                                      0  $152    
        237        SEND_VAR                                                 $152
        238        DO_ICALL                                         $153    
        239        ASSIGN                                                   !13, $153
  161   240        IS_EQUAL                                                 !11, !13
        241      > JMPZ                                                     ~155, ->247
  162   242    >   ASSIGN_OP                                     1          !6, 1
  163   243        ECHO                                                     '%5BPASS%5D+'
        244        ECHO                                                     !22
        245        ECHO                                                     '%0A'
        246      > JMP                                                      ->253
  165   247    >   ASSIGN_OP                                     1          !7, 1
  166   248        ECHO                                                     '%5BFAIL%5D+'
        249        ECHO                                                     !22
        250        ECHO                                                     '%0A'
  167   251        ECHO                                                     '-%3E+Origin+mismatch'
        252        ECHO                                                     '%0A'
  170   253    >   INIT_FCALL                                               'sleep'
        254        SEND_VAL                                                 0.75
        255        DO_ICALL                                                 
  157   256      > JMP                                                      ->221
        257    >   FE_FREE                                                  $145
  173   258        INIT_FCALL                                               'json_decode'
        259        INIT_FCALL                                               'curl'
        260        ROPE_INIT                                     3  ~160    'http%3A%2F%2F'
        261        ROPE_ADD                                      1  ~160    ~160, !3
        262        ROPE_END                                      2  ~159    ~160, '%2Fv1%2Fjsdelivr%2Flibraries%2F%3Ffields%3Dname%2Cmainfile%2Clastversion'
        263        SEND_VAL                                                 ~159
        264        DO_FCALL                                      0  $162    
        265        SEND_VAR                                                 $162
        266        DO_ICALL                                         $163    
        267        ASSIGN                                                   !14, $163
  174   268        ASSIGN                                                   !15, <array>
  175   269        ASSIGN                                                   !16, 0
  176   270      > JMP                                                      ->299
  177   271    >   INIT_FCALL                                               'array_mt_rand'
        272        SEND_VAR                                                 !14
        273        DO_FCALL                                      0  $167    
        274        ASSIGN                                                   !17, $167
  178   275        FETCH_OBJ_R                                      ~169    !17, 'name'
        276        ASSIGN                                                   !18, ~169
  179   277        FETCH_OBJ_R                                      ~171    !17, 'mainfile'
        278        ASSIGN                                                   !23, ~171
  180   279        FETCH_OBJ_R                                      ~173    !17, 'lastversion'
        280        ASSIGN                                                   !24, ~173
  181   281        ISSET_ISEMPTY_CV                                         !23
        282      > JMPZ                                                     ~175, ->285
  182   283    >   PRE_DEC                                                  !16
        284      > JMP                                                      ->299
  185   285    >   ROPE_INIT                                     4  ~179    '%2F'
        286        ROPE_ADD                                      1  ~179    ~179, !18
        287        ROPE_ADD                                      2  ~179    ~179, '%2Flatest%2F'
        288        ROPE_END                                      3  ~178    ~179, !23
   

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
268.3 ms | 1431 KiB | 39 Q