/* lzo1c_d.ash -- assembler implementation of the LZO1C decompression algorithm

   This file is part of the LZO real-time data compression library.

   Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
   All Rights Reserved.

   The LZO library is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License as
   published by the Free Software Foundation; either version 2 of
   the License, or (at your option) any later version.

   The LZO library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with the LZO library; see the file COPYING.
   If not, write to the Free Software Foundation, Inc.,
   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

   Markus F.X.J. Oberhumer
   <markus@oberhumer.com>
   http://www.oberhumer.com/opensource/lzo/
 */


/***********************************************************************
//
************************************************************************/

        ALIGN3
.L1:
        xorl    %eax,%eax
        movb    (%esi),%al
        incl    %esi
        cmpb    $32,%al
        jnb     .LMATCH

        orb     %al,%al
        jz      .L12
        movl    %eax,%ecx
.LIT:
        TEST_OP((%edi,%ecx),%ebx)
        TEST_IP((%esi,%ecx),%ebx)
        rep
        movsb
.LM1:
        movb    (%esi),%al
        incl    %esi

        cmpb    $32,%al
        jb      .LM2
.LMATCH:
        cmpb    $64,%al
        jb      .LN3

        movl    %eax,%ecx
        andb    $31,%al
        leal    -1(%edi),%edx
        shrl    $5,%ecx
        subl    %eax,%edx
        movb    (%esi),%al
        incl    %esi

        shll    $5,%eax
        subl    %eax,%edx
        incl    %ecx
        xchgl   %esi,%edx
        TEST_LOOKBEHIND(%esi)
        TEST_OP((%edi,%ecx),%ebx)
        rep
        movsb
        movl    %edx,%esi
        jmp     .L1

        ALIGN3
.L12:
        LODSB
        leal    32(%eax),%ecx
        cmpb    $248,%al
        jb      .LIT

        movl    $280,%ecx
        subb    $248,%al
        jz      .L11
        xchgl   %eax,%ecx
        xorb    %al,%al
        shll    %cl,%eax
        xchgl   %eax,%ecx
.L11:
        TEST_OP((%edi,%ecx),%ebx)
        TEST_IP((%esi,%ecx),%ebx)
        rep
        movsb
        jmp     .L1

        ALIGN3
.LM2:
        leal    -1(%edi),%edx
        subl    %eax,%edx
        LODSB
        shll    $5,%eax
        subl    %eax,%edx
        xchgl   %esi,%edx
        TEST_LOOKBEHIND(%esi)
        TEST_OP(4(%edi),%ebx)
        movsb
        movsb
        movsb
        movl    %edx,%esi
        movsb
        xorl    %eax,%eax
        jmp     .LM1
.LN3:
        andb    $31,%al
        movl    %eax,%ecx
        jnz     .LN6
        movb    $31,%cl
.LN4:
        LODSB
        orb     %al,%al
        jnz     .LN5
        addl    N_255,%ecx
        jmp     .LN4

        ALIGN3
.LN5:
        addl    %eax,%ecx
.LN6:
        movb    (%esi),%al
        incl    %esi

        movl    %eax,%ebx
        andb    $63,%al
        movl    %edi,%edx
        subl    %eax,%edx

        movb    (%esi),%al
        incl    %esi

        shll    $6,%eax
        subl    %eax,%edx
        cmpl    %edi,%edx
        jz      .LEOF

        xchgl   %edx,%esi
        leal    3(%ecx),%ecx
        TEST_LOOKBEHIND(%esi)
        TEST_OP((%edi,%ecx),%eax)
        rep
        movsb

        movl    %edx,%esi
        xorl    %eax,%eax
        shrl    $6,%ebx
        movl    %ebx,%ecx
        jnz     .LIT
        jmp     .L1

.LEOF:
/****   xorl    %eax,%eax          eax=0 from above */

        cmpl    $1,%ecx         /* ecx must be 1 */
        setnz   %al


/*
vi:ts=4
*/

