1/* leave.ash -- LZO assembler stuff 2 3 This file is part of the LZO real-time data compression library. 4 5 Copyright (C) 1996-2014 Markus Franz Xaver Johannes Oberhumer 6 All Rights Reserved. 7 8 The LZO library is free software; you can redistribute it and/or 9 modify it under the terms of the GNU General Public License as 10 published by the Free Software Foundation; either version 2 of 11 the License, or (at your option) any later version. 12 13 The LZO library is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with the LZO library; see the file COPYING. 20 If not, write to the Free Software Foundation, Inc., 21 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 22 23 Markus F.X.J. Oberhumer 24 <markus@oberhumer.com> 25 http://www.oberhumer.com/opensource/lzo/ 26 */ 27 28 29/*********************************************************************** 30// 31************************************************************************/ 32 33/* check uncompressed size */ 34#if defined(LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT) 35 cmpl OUTEND,%edi 36 ja .L_output_overrun 37#endif 38 39/* check compressed size */ 40 movl INP,%edx 41 addl INS,%edx 42 cmpl %edx,%esi /* check compressed size */ 43 ja .L_input_overrun 44 jb .L_input_not_consumed 45 46.L_leave: 47 subl OUTP,%edi /* write back the uncompressed size */ 48 movl OUTS,%edx 49 movl %edi,(%edx) 50 51 negl %eax 52 addl $12,%esp 53 popl %edx 54 popl %ecx 55 popl %ebx 56 popl %esi 57 popl %edi 58 popl %ebp 59#if 1 60 ret 61#else 62 jmp .L_end 63#endif 64 65 66.L_error: 67 movl $1,%eax /* LZO_E_ERROR */ 68 jmp .L_leave 69 70.L_input_not_consumed: 71 movl $8,%eax /* LZO_E_INPUT_NOT_CONSUMED */ 72 jmp .L_leave 73 74.L_input_overrun: 75 movl $4,%eax /* LZO_E_INPUT_OVERRUN */ 76 jmp .L_leave 77 78#if defined(LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT) 79.L_output_overrun: 80 movl $5,%eax /* LZO_E_OUTPUT_OVERRUN */ 81 jmp .L_leave 82#endif 83 84#if defined(LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND) 85.L_lookbehind_overrun: 86 movl $6,%eax /* LZO_E_LOOKBEHIND_OVERRUN */ 87 jmp .L_leave 88#endif 89 90#if defined(LZO_DEBUG) 91.L_assert_fail: 92 movl $99,%eax 93 jmp .L_leave 94#endif 95 96.L_end: 97 98 99/* 100vi:ts=4 101*/ 102 103