3v4l.org

run code in 300+ PHP versions simultaneously
<?php generate(); // FUNCTION function generate() { $digilist = "0123456789ABCDEFGHJKLMNPQRTUVWXY"; //now we generate a new random ID number using the substrings of the digitList string above for( $i = 0; $i < 300; $i++) { $id = NULL; $id .= substr($digilist, rand(3, 3), 1); //random number $id .= substr($digilist, rand(10, 31), 1); //then a letter $id .= substr($digilist, rand(10, 31), 1); //another letter $id .= substr($digilist, rand(1, 9), 1); //a number $id .= substr($digilist, rand(1, 9), 1); //and finally another number - simple :D $key = get_key( $id ); echo $id . ":" . $key . "\n"; } } function get_key( $id ) { $digilist = "0123456789ABCDEFGHJKLMNPQRTUVWXY"; //ok so now we need to generate an MD5 hash of our ID $hash = md5($id); //cycle through the hash 16 (length of key) times (in steps of 2 because each hex bytes is 2 digits long) $i = 0; $key = NULL; for ($i; $i < 32; $i+=2) { //here we convert the next hex value to an integer and perform a bitwise AND operation against '31' //31 is the highest substring value in our digit list. $nextdigit = hexdec(substr($hash, $i, 2)) & 31; //if 'i' is divisable by 8 (every 4 cycles) then we want to add "-" if ((($i % 8) == 0) && ($i > 0)) { $key .= "-".substr($digilist, $nextdigit, 1); } else { $key .= substr($digilist, $nextdigit, 1); } } return $key; }

Abusive script

This script was stopped while abusing our resources

Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/sYMAX
function name:  (null)
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   INIT_FCALL_BY_NAME                                       'generate'
          1        DO_FCALL                                      0          
   47     2      > RETURN                                                   1

Function generate:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 63
Branch analysis from position: 63
2 jumps found. (Code = 44) Position 1 = 65, Position 2 = 3
Branch analysis from position: 65
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 3
2 jumps found. (Code = 44) Position 1 = 65, Position 2 = 3
Branch analysis from position: 65
Branch analysis from position: 3
filename:       /in/sYMAX
function name:  generate
number of ops:  66
compiled vars:  !0 = $digilist, !1 = $i, !2 = $id, !3 = $key
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    7     0  E >   ASSIGN                                                   !0, '0123456789ABCDEFGHJKLMNPQRTUVWXY'
    9     1        ASSIGN                                                   !1, 0
          2      > JMP                                                      ->63
   11     3    >   ASSIGN                                                   !2, null
   12     4        INIT_FCALL                                               'substr'
          5        SEND_VAR                                                 !0
          6        INIT_FCALL                                               'rand'
          7        SEND_VAL                                                 3
          8        SEND_VAL                                                 3
          9        DO_ICALL                                         $7      
         10        SEND_VAR                                                 $7
         11        SEND_VAL                                                 1
         12        DO_ICALL                                         $8      
         13        ASSIGN_OP                                     8          !2, $8
   13    14        INIT_FCALL                                               'substr'
         15        SEND_VAR                                                 !0
         16        INIT_FCALL                                               'rand'
         17        SEND_VAL                                                 10
         18        SEND_VAL                                                 31
         19        DO_ICALL                                         $10     
         20        SEND_VAR                                                 $10
         21        SEND_VAL                                                 1
         22        DO_ICALL                                         $11     
         23        ASSIGN_OP                                     8          !2, $11
   14    24        INIT_FCALL                                               'substr'
         25        SEND_VAR                                                 !0
         26        INIT_FCALL                                               'rand'
         27        SEND_VAL                                                 10
         28        SEND_VAL                                                 31
         29        DO_ICALL                                         $13     
         30        SEND_VAR                                                 $13
         31        SEND_VAL                                                 1
         32        DO_ICALL                                         $14     
         33        ASSIGN_OP                                     8          !2, $14
   15    34        INIT_FCALL                                               'substr'
         35        SEND_VAR                                                 !0
         36        INIT_FCALL                                               'rand'
         37        SEND_VAL                                                 1
         38        SEND_VAL                                                 9
         39        DO_ICALL                                         $16     
         40        SEND_VAR                                                 $16
         41        SEND_VAL                                                 1
         42        DO_ICALL                                         $17     
         43        ASSIGN_OP                                     8          !2, $17
   16    44        INIT_FCALL                                               'substr'
         45        SEND_VAR                                                 !0
         46        INIT_FCALL                                               'rand'
         47        SEND_VAL                                                 1
         48        SEND_VAL                                                 9
         49        DO_ICALL                                         $19     
         50        SEND_VAR                                                 $19
         51        SEND_VAL                                                 1
         52        DO_ICALL                                         $20     
         53        ASSIGN_OP                                     8          !2, $20
   17    54        INIT_FCALL_BY_NAME                                       'get_key'
         55        SEND_VAR_EX                                              !2
         56        DO_FCALL                                      0  $22     
         57        ASSIGN                                                   !3, $22
   18    58        CONCAT                                           ~24     !2, '%3A'
         59        CONCAT                                           ~25     ~24, !3
         60        CONCAT                                           ~26     ~25, '%0A'
         61        ECHO                                                     ~26
    9    62        PRE_INC                                                  !1
         63    >   IS_SMALLER                                               !1, 300
         64      > JMPNZ                                                    ~28, ->3
   20    65    > > RETURN                                                   null

End of function generate

Function get_key:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
2 jumps found. (Code = 44) Position 1 = 42, Position 2 = 9
Branch analysis from position: 42
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 9
2 jumps found. (Code = 46) Position 1 = 22, Position 2 = 24
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 25, Position 2 = 33
Branch analysis from position: 25
1 jumps found. (Code = 42) Position 1 = 39
Branch analysis from position: 39
2 jumps found. (Code = 44) Position 1 = 42, Position 2 = 9
Branch analysis from position: 42
Branch analysis from position: 9
Branch analysis from position: 33
2 jumps found. (Code = 44) Position 1 = 42, Position 2 = 9
Branch analysis from position: 42
Branch analysis from position: 9
Branch analysis from position: 24
filename:       /in/sYMAX
function name:  get_key
number of ops:  44
compiled vars:  !0 = $id, !1 = $digilist, !2 = $hash, !3 = $i, !4 = $key, !5 = $nextdigit
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   21     0  E >   RECV                                             !0      
   23     1        ASSIGN                                                   !1, '0123456789ABCDEFGHJKLMNPQRTUVWXY'
   25     2        INIT_FCALL                                               'md5'
          3        SEND_VAR                                                 !0
          4        DO_ICALL                                         $7      
          5        ASSIGN                                                   !2, $7
   28     6        ASSIGN                                                   !3, 0
   29     7        ASSIGN                                                   !4, null
   30     8      > JMP                                                      ->40
   34     9    >   INIT_FCALL                                               'hexdec'
         10        INIT_FCALL                                               'substr'
         11        SEND_VAR                                                 !2
         12        SEND_VAR                                                 !3
         13        SEND_VAL                                                 2
         14        DO_ICALL                                         $11     
         15        SEND_VAR                                                 $11
         16        DO_ICALL                                         $12     
         17        BW_AND                                           ~13     $12, 31
         18        ASSIGN                                                   !5, ~13
   37    19        MOD                                              ~15     !3, 8
         20        IS_EQUAL                                         ~16     ~15, 0
         21      > JMPZ_EX                                          ~16     ~16, ->24
         22    >   IS_SMALLER                                       ~17     0, !3
         23        BOOL                                             ~16     ~17
         24    > > JMPZ                                                     ~16, ->33
   39    25    >   INIT_FCALL                                               'substr'
         26        SEND_VAR                                                 !1
         27        SEND_VAR                                                 !5
         28        SEND_VAL                                                 1
         29        DO_ICALL                                         $18     
         30        CONCAT                                           ~19     '-', $18
         31        ASSIGN_OP                                     8          !4, ~19
   37    32      > JMP                                                      ->39
   43    33    >   INIT_FCALL                                               'substr'
         34        SEND_VAR                                                 !1
         35        SEND_VAR                                                 !5
         36        SEND_VAL                                                 1
         37        DO_ICALL                                         $21     
         38        ASSIGN_OP                                     8          !4, $21
   30    39    >   ASSIGN_OP                                     1          !3, 2
         40    >   IS_SMALLER                                               !3, 32
         41      > JMPNZ                                                    ~24, ->9
   46    42    > > RETURN                                                   !4
   47    43*     > RETURN                                                   null

End of function get_key

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
150.51 ms | 1022 KiB | 17 Q