Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

/* Decoded by unphp.net */ <?php namespace Mpdf\Gif; /** * GIF Util - (C) 2003 Yamasoft ..

Decoded Output download

/* Decoded by unphp.net */

<?php
namespace Mpdf\Gif;
/**
 * GIF Util - (C) 2003 Yamasoft (S/C)
 *
 * All Rights Reserved
 *
 * This file can be freely copied, distributed, modified, updated by anyone under the only
 * condition to leave the original address (Yamasoft, http://www.yamasoft.com) and this header.
 *
 * @link http://www.yamasoft.com
 */
class Lzw {
    var $MAX_LZW_BITS;
    var $Fresh;
    var $CodeSize;
    var $SetCodeSize;
    var $MaxCode;
    var $MaxCodeSize;
    var $FirstCode;
    var $OldCode;
    var $ClearCode;
    var $EndCode;
    var $Next;
    var $Vals;
    var $Stack;
    var $sp;
    var $Buf;
    var $CurBit;
    var $LastBit;
    var $Done;
    var $LastByte;
    public function __construct() {
        $this->MAX_LZW_BITS = 12;
        unset($this->Next);
        unset($this->Vals);
        unset($this->Stack);
        unset($this->Buf);
        $this->Next = range(0, (1 << $this->MAX_LZW_BITS) - 1);
        $this->Vals = range(0, (1 << $this->MAX_LZW_BITS) - 1);
        $this->Stack = range(0, (1 << ($this->MAX_LZW_BITS + 1)) - 1);
        $this->Buf = range(0, 279);
    }
    function deCompress($data, &$datLen) {
        $stLen = strlen($data);
        $datLen = 0;
        $ret = "";
        $dp = 0; // data pointer
        // INITIALIZATION
        $this->LZWCommandInit($data, $dp);
        while (($iIndex = $this->LZWCommand($data, $dp)) >= 0) {
            $ret.= chr($iIndex);
        }
        $datLen = $dp;
        if ($iIndex != - 2) {
            return false;
        }
        return $ret;
    }
    function LZWCommandInit(&$data, &$dp) {
        $this->SetCodeSize = ord($data[0]);
        $dp+= 1;
        $this->CodeSize = $this->SetCodeSize + 1;
        $this->ClearCode = 1 << $this->SetCodeSize;
        $this->EndCode = $this->ClearCode + 1;
        $this->MaxCode = $this->ClearCode + 2;
        $this->MaxCodeSize = $this->ClearCode << 1;
        $this->GetCodeInit($data, $dp);
        $this->Fresh = 1;
        for ($i = 0;$i < $this->ClearCode;$i++) {
            $this->Next[$i] = 0;
            $this->Vals[$i] = $i;
        }
        for (;$i < (1 << $this->MAX_LZW_BITS);$i++) {
            $this->Next[$i] = 0;
            $this->Vals[$i] = 0;
        }
        $this->sp = 0;
        return 1;
    }
    function LZWCommand(&$data, &$dp) {
        if ($this->Fresh) {
            $this->Fresh = 0;
            do {
                $this->FirstCode = $this->GetCode($data, $dp);
                $this->OldCode = $this->FirstCode;
            } while ($this->FirstCode == $this->ClearCode);
            return $this->FirstCode;
        }
        if ($this->sp > 0) {
            $this->sp--;
            return $this->Stack[$this->sp];
        }
        while (($Code = $this->GetCode($data, $dp)) >= 0) {
            if ($Code == $this->ClearCode) {
                for ($i = 0;$i < $this->ClearCode;$i++) {
                    $this->Next[$i] = 0;
                    $this->Vals[$i] = $i;
                }
                for (;$i < (1 << $this->MAX_LZW_BITS);$i++) {
                    $this->Next[$i] = 0;
                    $this->Vals[$i] = 0;
                }
                $this->CodeSize = $this->SetCodeSize + 1;
                $this->MaxCodeSize = $this->ClearCode << 1;
                $this->MaxCode = $this->ClearCode + 2;
                $this->sp = 0;
                $this->FirstCode = $this->GetCode($data, $dp);
                $this->OldCode = $this->FirstCode;
                return $this->FirstCode;
            }
            if ($Code == $this->EndCode) {
                return -2;
            }
            $InCode = $Code;
            if ($Code >= $this->MaxCode) {
                $this->Stack[$this->sp++] = $this->FirstCode;
                $Code = $this->OldCode;
            }
            while ($Code >= $this->ClearCode) {
                $this->Stack[$this->sp++] = $this->Vals[$Code];
                if ($Code == $this->Next[$Code]) { // Circular table entry, big GIF Error!
                    return -1;
                }
                $Code = $this->Next[$Code];
            }
            $this->FirstCode = $this->Vals[$Code];
            $this->Stack[$this->sp++] = $this->FirstCode;
            if (($Code = $this->MaxCode) < (1 << $this->MAX_LZW_BITS)) {
                $this->Next[$Code] = $this->OldCode;
                $this->Vals[$Code] = $this->FirstCode;
                $this->MaxCode++;
                if (($this->MaxCode >= $this->MaxCodeSize) && ($this->MaxCodeSize < (1 << $this->MAX_LZW_BITS))) {
                    $this->MaxCodeSize*= 2;
                    $this->CodeSize++;
                }
            }
            $this->OldCode = $InCode;
            if ($this->sp > 0) {
                $this->sp--;
                return $this->Stack[$this->sp];
            }
        }
        return $Code;
    }
    function GetCodeInit(&$data, &$dp) {
        $this->CurBit = 0;
        $this->LastBit = 0;
        $this->Done = 0;
        $this->LastByte = 2;
        return 1;
    }
    function GetCode(&$data, &$dp) {
        if (($this->CurBit + $this->CodeSize) >= $this->LastBit) {
            if ($this->Done) {
                if ($this->CurBit >= $this->LastBit) {
                    // Ran off the end of my bits
                    return 0;
                }
                return -1;
            }
            $this->Buf[0] = $this->Buf[$this->LastByte - 2];
            $this->Buf[1] = $this->Buf[$this->LastByte - 1];
            $Count = ord($data[$dp]);
            $dp+= 1;
            if ($Count) {
                for ($i = 0;$i < $Count;$i++) {
                    $this->Buf[2 + $i] = ord($data[$dp + $i]);
                }
                $dp+= $Count;
            } else {
                $this->Done = 1;
            }
            $this->LastByte = 2 + $Count;
            $this->CurBit = ($this->CurBit - $this->LastBit) + 16;
            $this->LastBit = (2 + $Count) << 3;
        }
        $iRet = 0;
        for ($i = $this->CurBit, $j = 0;$j < $this->CodeSize;$i++, $j++) {
            $iRet|= (($this->Buf[intval($i / 8) ] & (1 << ($i % 8))) != 0) << $j;
        }
        $this->CurBit+= $this->CodeSize;
        return $iRet;
    }
}
?>

Did this file decode correctly?

Original Code

/* Decoded by unphp.net */

<?php
namespace Mpdf\Gif;
/**
 * GIF Util - (C) 2003 Yamasoft (S/C)
 *
 * All Rights Reserved
 *
 * This file can be freely copied, distributed, modified, updated by anyone under the only
 * condition to leave the original address (Yamasoft, http://www.yamasoft.com) and this header.
 *
 * @link http://www.yamasoft.com
 */
class Lzw {
    var $MAX_LZW_BITS;
    var $Fresh;
    var $CodeSize;
    var $SetCodeSize;
    var $MaxCode;
    var $MaxCodeSize;
    var $FirstCode;
    var $OldCode;
    var $ClearCode;
    var $EndCode;
    var $Next;
    var $Vals;
    var $Stack;
    var $sp;
    var $Buf;
    var $CurBit;
    var $LastBit;
    var $Done;
    var $LastByte;
    public function __construct() {
        $this->MAX_LZW_BITS = 12;
        unset($this->Next);
        unset($this->Vals);
        unset($this->Stack);
        unset($this->Buf);
        $this->Next = range(0, (1 << $this->MAX_LZW_BITS) - 1);
        $this->Vals = range(0, (1 << $this->MAX_LZW_BITS) - 1);
        $this->Stack = range(0, (1 << ($this->MAX_LZW_BITS + 1)) - 1);
        $this->Buf = range(0, 279);
    }
    function deCompress($data, &$datLen) {
        $stLen = strlen($data);
        $datLen = 0;
        $ret = "";
        $dp = 0; // data pointer
        // INITIALIZATION
        $this->LZWCommandInit($data, $dp);
        while (($iIndex = $this->LZWCommand($data, $dp)) >= 0) {
            $ret.= chr($iIndex);
        }
        $datLen = $dp;
        if ($iIndex != - 2) {
            return false;
        }
        return $ret;
    }
    function LZWCommandInit(&$data, &$dp) {
        $this->SetCodeSize = ord($data[0]);
        $dp+= 1;
        $this->CodeSize = $this->SetCodeSize + 1;
        $this->ClearCode = 1 << $this->SetCodeSize;
        $this->EndCode = $this->ClearCode + 1;
        $this->MaxCode = $this->ClearCode + 2;
        $this->MaxCodeSize = $this->ClearCode << 1;
        $this->GetCodeInit($data, $dp);
        $this->Fresh = 1;
        for ($i = 0;$i < $this->ClearCode;$i++) {
            $this->Next[$i] = 0;
            $this->Vals[$i] = $i;
        }
        for (;$i < (1 << $this->MAX_LZW_BITS);$i++) {
            $this->Next[$i] = 0;
            $this->Vals[$i] = 0;
        }
        $this->sp = 0;
        return 1;
    }
    function LZWCommand(&$data, &$dp) {
        if ($this->Fresh) {
            $this->Fresh = 0;
            do {
                $this->FirstCode = $this->GetCode($data, $dp);
                $this->OldCode = $this->FirstCode;
            } while ($this->FirstCode == $this->ClearCode);
            return $this->FirstCode;
        }
        if ($this->sp > 0) {
            $this->sp--;
            return $this->Stack[$this->sp];
        }
        while (($Code = $this->GetCode($data, $dp)) >= 0) {
            if ($Code == $this->ClearCode) {
                for ($i = 0;$i < $this->ClearCode;$i++) {
                    $this->Next[$i] = 0;
                    $this->Vals[$i] = $i;
                }
                for (;$i < (1 << $this->MAX_LZW_BITS);$i++) {
                    $this->Next[$i] = 0;
                    $this->Vals[$i] = 0;
                }
                $this->CodeSize = $this->SetCodeSize + 1;
                $this->MaxCodeSize = $this->ClearCode << 1;
                $this->MaxCode = $this->ClearCode + 2;
                $this->sp = 0;
                $this->FirstCode = $this->GetCode($data, $dp);
                $this->OldCode = $this->FirstCode;
                return $this->FirstCode;
            }
            if ($Code == $this->EndCode) {
                return -2;
            }
            $InCode = $Code;
            if ($Code >= $this->MaxCode) {
                $this->Stack[$this->sp++] = $this->FirstCode;
                $Code = $this->OldCode;
            }
            while ($Code >= $this->ClearCode) {
                $this->Stack[$this->sp++] = $this->Vals[$Code];
                if ($Code == $this->Next[$Code]) { // Circular table entry, big GIF Error!
                    return -1;
                }
                $Code = $this->Next[$Code];
            }
            $this->FirstCode = $this->Vals[$Code];
            $this->Stack[$this->sp++] = $this->FirstCode;
            if (($Code = $this->MaxCode) < (1 << $this->MAX_LZW_BITS)) {
                $this->Next[$Code] = $this->OldCode;
                $this->Vals[$Code] = $this->FirstCode;
                $this->MaxCode++;
                if (($this->MaxCode >= $this->MaxCodeSize) && ($this->MaxCodeSize < (1 << $this->MAX_LZW_BITS))) {
                    $this->MaxCodeSize*= 2;
                    $this->CodeSize++;
                }
            }
            $this->OldCode = $InCode;
            if ($this->sp > 0) {
                $this->sp--;
                return $this->Stack[$this->sp];
            }
        }
        return $Code;
    }
    function GetCodeInit(&$data, &$dp) {
        $this->CurBit = 0;
        $this->LastBit = 0;
        $this->Done = 0;
        $this->LastByte = 2;
        return 1;
    }
    function GetCode(&$data, &$dp) {
        if (($this->CurBit + $this->CodeSize) >= $this->LastBit) {
            if ($this->Done) {
                if ($this->CurBit >= $this->LastBit) {
                    // Ran off the end of my bits
                    return 0;
                }
                return -1;
            }
            $this->Buf[0] = $this->Buf[$this->LastByte - 2];
            $this->Buf[1] = $this->Buf[$this->LastByte - 1];
            $Count = ord($data[$dp]);
            $dp+= 1;
            if ($Count) {
                for ($i = 0;$i < $Count;$i++) {
                    $this->Buf[2 + $i] = ord($data[$dp + $i]);
                }
                $dp+= $Count;
            } else {
                $this->Done = 1;
            }
            $this->LastByte = 2 + $Count;
            $this->CurBit = ($this->CurBit - $this->LastBit) + 16;
            $this->LastBit = (2 + $Count) << 3;
        }
        $iRet = 0;
        for ($i = $this->CurBit, $j = 0;$j < $this->CodeSize;$i++, $j++) {
            $iRet|= (($this->Buf[intval($i / 8) ] & (1 << ($i % 8))) != 0) << $j;
        }
        $this->CurBit+= $this->CodeSize;
        return $iRet;
    }
}
?>

Function Calls

None

Variables

None

Stats

MD5 cd57f7ec16d3a8e771173781f7bb2472
Eval Count 0
Decode Time 172 ms