/* lzo1c_s1.S -- lzo1c_decompress_asm

   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/
*/

/***** DO NOT EDIT - GENERATED AUTOMATICALLY *****/

#include "asminit.def"
typef(_lzo1c_decompress_asm)
typef(F(lzo1c_decompress_asm))
global(_lzo1c_decompress_asm)
global(F(lzo1c_decompress_asm))
_lzo1c_decompress_asm:
F(lzo1c_decompress_asm):
db 85,87,86,83,81,82,131,236,12,252,139,116,36,40,139,124
db 36,48,189,3,0,0,0,144,49,192,138,6,70,60,32,115
db 15,8,192,116,51,137,193,243,164,138,6,70,60,32,114,72
db 60,64,114,93,137,193,36,31,141,87,255,193,233,5,41,194
db 138,6,70,193,224,5,41,194,65,135,242,243,164,137,214,235
db 199,141,180,38,0,0,0,0,138,6,70,141,72,32,60,248
db 114,197,185,24,1,0,0,44,248,116,6,145,48,192,211,224
db 145,243,164,235,163,141,118,0,141,87,255,41,194,138,6,70
db 193,224,5,41,194,135,242,164,164,164,137,214,164,49,192,235
db 152,36,31,137,193,117,19,177,31,138,6,70,8,192,117,8
db 129,193,255,0,0,0,235,241,1,193,138,6,70,137,195,36
db 63,137,250,41,194,138,6,70,193,224,6,41,194,57,250,116
db 27,135,214,141,73,3,243,164,137,214,49,192,193,235,6,137
db 217,15,133,80,255,255,255,233,60,255,255,255,131,249,1,15
db 149,192,139,84,36,40,3,84,36,44,57,214,119,38,114,29
db 43,124,36,48,139,84,36,52,137,58,247,216,131,196,12,90
db 89,91,94,95,93,195,184,1,0,0,0,235,227,184,8,0
db 0,0,235,220,184,4,0,0,0,235,213,144,141,116,38,0
size(_lzo1c_decompress_asm,.-_lzo1c_decompress_asm)
size(F(lzo1c_decompress_asm),.-F(lzo1c_decompress_asm))
