rendered paste body<?phpfunction unscramble($code) { $code=str_replace(array('1','0'),array('I','O'),$code); $code=strtoupper($code); $lookuptable=array_flip( array('G','6','E','Q','T','X','Y','N', '4','W','R','H','B','F','K','O','I','J', 'A','P','C','D','5','S','8', 'V','7','U','Z','3','L','M') ); $charcodes=''; for($i=0;$i<strlen($code);$i++) { $charCodes[$i]=$lookuptable[ $code[$i] ]; } $codeBytes[0] = 0xFF & (($charCodes[0] << 3) + ($charCodes[1] >> 2)); $codeBytes[1] = 0xFF & (($charCodes[1] << 6) + ($charCodes[2] << 1) + ($charCodes[3] >> 4)); $codeBytes[2] = 0xFF & (($charCodes[3] << 4) + ($charCodes[4] >> 1)); $codeBytes[3] = 0xFF & (($charCodes[4] << 7) + ($charCodes[5] << 2) + ($charCodes[6] >> 3)); $codeBytes[4] = 0xFF & (($charCodes[6] << 5) + ($charCodes[7])); $codeBytes[5] = 0xFF & (($charCodes[8] << 3) + ($charCodes[9] >> 2)); $codeBytes[6] = 0xFF & (($charCodes[9] << 6) + ($charCodes[10] << 1) + ($charCodes[11] >> 4)); $codeBytes[7] = 0xFF & (($charCodes[11] << 4) + ($charCodes[12] >> 1)); $codeBytes[8] = 0xFF & (($charCodes[12] << 7) + ($charCodes[13] << 2) + ($charCodes[14] >> 3)); $codeBytes[9] = 0xFF & (($charCodes[14] << 5) + ($charCodes[15])); print_r($codeBytes);echo '<br>'; $random=$codeBytes[8] * 0x100 + $codeBytes[9]; //$r6 = 0x40D583D; $r8 = $random; for($count = 0; $count < 8; $count++) { printf("%X<br>",$r8); $r5 = (0x40D583D * $r8) & 0xFFFF; $codeBytes[$count] ^= (($r8 >> 8) & 0xFF); $r5++; $r0 = floor($r5 / 0x5F5E100) & 0xFFFF; $r0 = ($r0 * 0x5F5E100) & 0xFFFF; $r8 = $r5 - $r0; } print_r($codeBytes);echo '<br>'; $driver1 = ($codeBytes[6] >> 1) & 0x1f; $driver2 = (($codeBytes[2] << 3) + ($codeBytes[3] >> 5)) & 0x1f; $cart = (($codeBytes[7] >> 4) + ($codeBytes[6] << 4)) & 0x1f; $unknown1 = ($codeBytes[7] & 0xf); $time1 = ($codeBytes[0] * 0x10000 + $codeBytes[1] * 0x100 + $codeBytes[2]) >> 5; $time2 = (($codeBytes[4] * 0x10000 + $codeBytes[5] * 0x100 + $codeBytes[6]) >> 6) & 0x3FFFF; $unknown2 = ($codeBytes[2] >> 2) & 0x03; $unknown3 = ($codeBytes[2] >> 4) & 0x01; $checksum = ($codeBytes[3] & 0x1f); $calculatedChecksum = $unknown2 + $driver2; $calculatedChecksum +=$unknown3; $calculatedChecksum +=$time1; $calculatedChecksum +=$driver1; $calculatedChecksum +=$cart; $calculatedChecksum +=$unknown1; $calculatedChecksum +=$time2; $calculatedChecksumFinal = ($calculatedChecksum) & 0xFF; $calculatedChecksumFinal += ($calculatedChecksum >> 8) & 0xFF; $calculatedChecksumFinal += ($calculatedChecksum >> 16) & 0xFF; $calculatedChecksumFinal += ($calculatedChecksum >> 24) & 0xFF; $calculatedChecksumFinal &= 0x1f; return array( 'driver'=>$driver1, 'partner'=>$driver2, 'cart'=>$cart, 'course'=>$unknown1, 'time'=>$time1, 'lap'=>$time2, 'unknown2'=>$unknown2, 'unknown3'=>$unknown3, 'checksum'=>$checksum, 'calcchecksum'=>$calculatedChecksumFinal );}