linux/lib/xz/xz_dec_bcj.c
<<
ptiov3./spa > v3./form > v3.a ptiov3 href="../linux+v3.7.4/lib/xz/xz_dec_bcj.c">ptiov3.img src="../.static/gfx/right.png" alt=">>">pt./spa >pt.spa class="lxr_search">ptioptiov3.input typon>hidden" namon>navtarget" option>">ptiov3.input typon>text" namon>search" idn>search">ptiov3.butt2submit">Search v3./form > ./spa >pt.spa class="lxr_prefs" > v3.a href="+prefs?return=lib/xz/xz_dec_bcj.c"ptiov3 onclick="return ajax_prefs();">ptiov3Prefs> v3./a>pt./spa >iov3 3./div >iov3 3.form ac" ="ajax+*" method="post" onsubmit="return false;">pt.input typon>hidden" namon>ajax_lookup" idn>ajax_lookup" option>">piov3 3./form >piov3 3.div class="headingbott2m">
iov3
iov3 v3 3.div idn>search_results" class="search_results"> v >iov3 3./div > .div idn>content">> .div idn>file_contents"
08/a0/f762467ec89310f928854c6cf14acf8a24c6_3/0" L1" class="line" namon>L1">3 31./a>.spa  class="comment">/*./spa  >L2" class="line" namon>L2">3 32./a>.spa  class="comment"> * Branch/Call/Jump (BCJ) filter decoders./spa  >L3" class="line" namon>L3">3 33./a>.spa  class="comment"> *./spa  >L4" class="line" namon>L4">3 34./a>.spa  class="comment"> * Authors: Lasse Collin <lasse.collin@tukaani.org>./spa  >L5" class="line" namon>L5">3 35./a>.spa  class="comment"> *          Igor Pavlov <http://7-zip.org/>./spa  >L6" class="line" namon>L6">3 36./a>.spa  class="comment"> *./spa  >L7" class="line" namon>L7">3 37./a>.spa  class="comment"> * This file has been put into the public domain../spa  >L8" class="line" namon>L8">3 38./a>.spa  class="comment"> * You can do whatever you want with this file../spa  >L9" class="line" namon>L9">3 39./a>.spa  class="comment"> */./spa  >L10" class="line" namon>L10">3 .18.a >L11" class="line" namon>L11">3 11./a>#include ".a href="lib/xz/xz_private.h" class="fref">xz_private.h./a>">L12" class="line" namon>L12">3 128.a >L13" class="line" namon>L13">3 13./a>.spa  class="comment">/*./spa  >L14" class="line" namon>L14">3 14./a>.spa  class="comment"> * The rest of the file is inside this ifdef. It makes things a little more./spa  >L15" class="line" namon>L15">3 15./a>.spa  class="comment"> * convenient when building without support for any BCJ filters../spa  >L16" class="line" namon>L16">3 16./a>.spa  class="comment"> */./spa  >L17" class="line" namon>L17">3 17./a>#ifdef3.a href="+code=XZ_DEC_BCJ" class="sref">XZ_DEC_BCJ8.a >L18" class="line" namon>L18">3 188.a >L19" class="line" namon>L19">3 19./a>struct3.a href="+code=xz_dec_bcj" class="sref">xz_dec_bcj./a> {>L20" class="line" namon>L20">3 218.a         .spa  class="comment">/* Typo of the BCJ filter being used */./spa  >L21" class="line" namon>L21">3 218.a         enum {>L22" class="line" namon>L22">3 228.a                 .a href="+code=BCJ_X86" class="sref">BCJ_X868.a  = 4,        .spa  class="comment">/* x86 or x86-64 */./spa  >L23" class="line" namon>L23">3 238.a                 .a href="+code=BCJ_POWERPC" class="sref">BCJ_POWERPC8.a  = 5,    .spa  class="comment">/* Big endia  only */./spa  >L24" class="line" namon>L24">3 248.a                 .a href="+code=BCJ_IA64" class="sref">BCJ_IA648.a  = 6,       .spa  class="comment">/* Big or little endia  */./spa  >L25" class="line" namon>L25">3 258.a                 .a href="+code=BCJ_ARM" class="sref">BCJ_ARM8.a  = 7,        .spa  class="comment">/* Little endia  only */./spa  >L26" class="line" namon>L26">3 268.a                 .a href="+code=BCJ_ARMTHUMB" class="sref">BCJ_ARMTHUMB8.a  = 8,   .spa  class="comment">/* Little endia  only */./spa  >L27" class="line" namon>L27">3 278.a                 .a href="+code=BCJ_SPARC" class="sref">BCJ_SPARC8.a  = 9       .spa  class="comment">/* Big or little endia  */./spa  >L28" class="line" namon>L28">3 288.a         } .a href="+code=typo" class="sref">typo8.a ;>L29" class="line" namon>L29">3 298.a >L30" class="line" namon>L30">3 318.a         .spa  class="comment">/*./spa  >L31" class="line" namon>L31">3 31./a>.spa  class="comment">         * Return optio of the next filter in the chain. We need to preserve./spa  >L32" class="line" namon>L32">3 32./a>.spa  class="comment">         * this informa.12L33" class="line" namon>L33">3 33./a>.spa  class="comment">         * filter anymore once it has returned XZ_STREAM_END../spa  >L34" class="line" namon>L34">3 34./a>.spa  class="comment">         */./spa  >L35" class="line" namon>L35">3 358.a         enum .a href="+code=xz_ret" class="sref">xz_ret8.a  .a href="+code=ret" class="sref">ret8.a ;>L36" class="line" namon>L36">3 368.a >L37" class="line" namon>L37">3 378.a         .spa  class="comment">/* Trio if we are opera.1ng in s1ngle-call mode. */./spa  >L38" class="line" namon>L38">3 388.a         .a href="+code=bool" class="sref">bool8.a  .a href="+code=s1ngle_call" class="sref">s1ngle_call8.a ;>L39" class="line" namon>L39">3 398.a >L40" class="line" namon>L40">3 418.a         .spa  class="comment">/*./spa  >L41" class="line" namon>L41">3 41./a>.spa  class="comment">         * Absolute posi.12L42" class="line" namon>L42">3 42./a>.spa  class="comment">         * data (in a s1ngle .xz Block). We care only about the lowest 32./spa  >L43" class="line" namon>L43">3 43./a>.spa  class="comment">         * bits so this doesn't need to be uint64_t even with big files../spa  >L44" class="line" namon>L44">3 44./a>.spa  class="comment">         */./spa  >L45" class="line" namon>L45">3 458.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=pos" class="sref">pos8.a ;>L46" class="line" namon>L46">3 468.a >L47" class="line" namon>L47">3 478.a         .spa  class="comment">/* x86 filter state */./spa  >L48" class="line" namon>L48">3 488.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=x86_prev_mask" class="sref">x86_prev_mask8.a ;>L49" class="line" namon>L49">3 498.a >L50" class="line" namon>L50">3 518.a         .spa  class="comment">/* Temporary space to hold the variables from struct3xz_buf */./spa  >L51" class="line" namon>L51">3 518.a         .a href="+code=uint8_t" class="sref">uint8_t8.a  *.a href="+code=out" class="sref">out8.a ;>L52" class="line" namon>L52">3 528.a         .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=out_pos" class="sref">out_pos8.a ;>L53" class="line" namon>L53">3 538.a         .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=out_size" class="sref">out_size8.a ;>L54" class="line" namon>L54">3 548.a >L55" class="line" namon>L55">3 558.a         struct3{>L56" class="line" namon>L56">3 568.a                 .spa  class="comment">/* Amount of already filtered data in the beginn1ng of buf */./spa  >L57" class="line" namon>L57">3 578.a                 .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=filtered" class="sref">filtered8.a ;>L58" class="line" namon>L58">3 588.a >L59" class="line" namon>L59">3 598.a                 .spa  class="comment">/* Total amount of data currently stored in buf  */./spa  >L60" class="line" namon>L60">3 608.a                 .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=size" class="sref">size8.a ;>L61" class="line" namon>L61">3 618.a >L62" class="line" namon>L62">3 628.a                 .spa  class="comment">/*./spa  >L63" class="line" namon>L63">3 63./a>.spa  class="comment">                 * Buffer to hold a mix of filtered and unfiltered data. This./spa  >L64" class="line" namon>L64">3 64./a>.spa  class="comment">                 * needs to be big enough to hold Alignment + 2 * Look-ahead:./spa  >L65" class="line" namon>L65">3 65./a>.spa  class="comment">                 *./spa  >L66" class="line" namon>L66">3 66./a>.spa  class="comment">                 * Typo         Alignment   Look-ahead./spa  >L67" class="line" namon>L67">3 67./a>.spa  class="comment">                 * x86              1           4./spa  >L68" class="line" namon>L68">3 68./a>.spa  class="comment">                 * PowerPC          4           0./spa  >L69" class="line" namon>L69">3 69./a>.spa  class="comment">                 * IA-64           16           0./spa  >L70" class="line" namon>L70">3 70./a>.spa  class="comment">                 * ARM              4           0./spa  >L71" class="line" namon>L71">3 71./a>.spa  class="comment">                 * ARM-Thumb        2           2./spa  >L72" class="line" namon>L72">3 72./a>.spa  class="comment">                 * SPARC            4           0./spa  >L73" class="line" namon>L73">3 73./a>.spa  class="comment">                 */./spa  >L74" class="line" namon>L74">3 748.a                 .a href="+code=uint8_t" class="sref">uint8_t8.a  .a href="+code=buf" class="sref">buf8.a [16];>L75" class="line" namon>L75">3 758.a         } .a href="+code=temp" class="sref">temp8.a ;>L76" class="line" namon>L76">3 76./a>};>L77" class="line" namon>L77">3 778.a >L78" class="line" namon>L78">3 78./a>#ifdef3.a href="+code=XZ_DEC_X86" class="sref">XZ_DEC_X868.a >L79" class="line" namon>L79">3 79./a>.spa  class="comment">/*./spa  >L80" class="line" namon>L80">3 80./a>.spa  class="comment"> * This is used to test the most significant byto of a memory address./spa  >L81" class="line" namon>L81">3 81./a>.spa  class="comment"> * in a  x86 instruction../spa  >L82" class="line" namon>L82">3 82./a>.spa  class="comment"> */./spa  >L83" class="line" namon>L83">3 83./a>static3.a href="+code=inline" class="sref">inline8.a  int .a href="+code=bcj_x86_test_msbyto" class="sref">bcj_x86_test_msbyto8.a (.a href="+code=uint8_t" class="sref">uint8_t8.a  .a href="+code=b" class="sref">b8.a )>L84" class="line" namon>L84">3 848.a {>L85" class="line" namon>L85">3 858.a         return .a href="+code=b" class="sref">b8.a  == 0x00 || .a href="+code=b" class="sref">b8.a  == 0xFF;>L86" class="line" namon>L86">3 868.a }>L87" class="line" namon>L87">3 878.a >L88" class="line" namon>L88">3 88./a>static3.a href="+code=size_t" class="sref">size_t8.a  .a href="+code=bcj_x86" class="sref">bcj_x868.a (struct3.a href="+code=xz_dec_bcj" class="sref">xz_dec_bcj./a> *.a href="+code=s" class="sref">s8.a , .a href="+code=uint8_t" class="sref">uint8_t8.a  *.a href="+code=buf" class="sref">buf8.a , .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=size" class="sref">size8.a )>L89" class="line" namon>L89">3 898.a {>L90" class="line" namon>L90">3 908.a         static3const .a href="+code=bool" class="sref">bool8.a  .a href="+code=mask_to_allowed_status" class="sref">mask_to_allowed_status8.a [8]>L91" class="line" namon>L91">3 918.a                 = { .a href="+code=truo" class="sref">truo8.a , .a href="+code=truo" class="sref">truo8.a , .a href="+code=truo" class="sref">truo8.a , .a href="+code=false" class="sref">false8.a , .a href="+code=truo" class="sref">truo8.a , .a href="+code=false" class="sref">false8.a , .a href="+code=false" class="sref">false8.a , .a href="+code=false" class="sref">false8.a  };>L92" class="line" namon>L92">3 928.a >L93" class="line" namon>L93">3 938.a         static3const .a href="+code=uint8_t" class="sref">uint8_t8.a  .a href="+code=mask_to_bit_num" class="sref">mask_to_bit_num8.a [8] = { 0, 1, 2, 2, 3, 3, 3, 3 };>L94" class="line" namon>L94">3 948.a >L95" class="line" namon>L95">3 958.a         .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=i" class="sref">i8.a ;>L96" class="line" namon>L96">3 968.a         .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=prev_pos" class="sref">prev_pos8.a  = (.a href="+code=size_t" class="sref">size_t8.a )-1;>L97" class="line" namon>L97">3 978.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=prev_mask" class="sref">prev_mask8.a  = .a href="+code=s" class="sref">s8.a ->.a href="+code=x86_prev_mask" class="sref">x86_prev_mask8.a ;>L98" class="line" namon>L98">3 988.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=src" class="sref">src8.a ;>L99" class="line" namon>L99">3 998.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=dest" class="sref">dest8.a ;>L100" class="line" namon>L100">31008.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=j" class="sref">j8.a ;>L101" class="line" namon>L101">31018.a         .a href="+code=uint8_t" class="sref">uint8_t8.a  .a href="+code=b" class="sref">b8.a ;>L102" class="line" namon>L102">31028.a >L103" class="line" namon>L103">31038.a         if (.a href="+code=size" class="sref">size8.a  <= 4)>L104" class="line" namon>L104">31048.a                 return 0;>L105" class="line" namon>L105">31058.a >L106" class="line" namon>L106">31068.a         .a href="+code=size" class="sref">size8.a  -= 4;>L107" class="line" namon>L107">31078.a         for (.a href="+code=i" class="sref">i8.a  = 0; .a href="+code=i" class="sref">i8.a  < .a href="+code=size" class="sref">size8.a ; ++.a href="+code=i" class="sref">i8.a )3{>L108" class="line" namon>L108">31088.a                 if ((.a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a ] & 0xFE) != 0xE8)>L109" class="line" namon>L109">31098.a                         continue;>L110" class="line" namon>L110">31.18.a >L111" class="line" namon>L111">31118.a                 .a href="+code=prev_pos" class="sref">prev_pos8.a  = .a href="+code=i" class="sref">i8.a  - .a href="+code=prev_pos" class="sref">prev_pos8.a ;>L112" class="line" namon>L112">31128.a                 if (.a href="+code=prev_pos" class="sref">prev_pos8.a  > 3)3{>L113" class="line" namon>L113">31138.a                         .a href="+code=prev_mask" class="sref">prev_mask8.a  = 0;>L114" class="line" namon>L114">31148.a                 } else3{>L115" class="line" namon>L115">31158.a                         .a href="+code=prev_mask" class="sref">prev_mask8.a  = (.a href="+code=prev_mask" class="sref">prev_mask8.a  << (.a href="+code=prev_pos" class="sref">prev_pos8.a  - 1)) & 7;>L116" class="line" namon>L116">31168.a                         if (.a href="+code=prev_mask" class="sref">prev_mask8.a  != 0)3{>L117" class="line" namon>L117">31178.a                                 .a href="+code=b" class="sref">b8.a  = .a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 4 - .a href="+code=mask_to_bit_num" class="sref">mask_to_bit_num8.a [.a href="+code=prev_mask" class="sref">prev_mask8.a ]];>L118" class="line" namon>L118">31188.a                                 if (!.a href="+code=mask_to_allowed_status" class="sref">mask_to_allowed_status8.a [.a href="+code=prev_mask" class="sref">prev_mask8.a ]>L119" class="line" namon>L119">31198.a                                                 || .a href="+code=bcj_x86_test_msbyto" class="sref">bcj_x86_test_msbyto8.a (.a href="+code=b" class="sref">b8.a ))3{>L120" class="line" namon>L120">31208.a                                         .a href="+code=prev_pos" class="sref">prev_pos8.a  = .a href="+code=i" class="sref">i8.a ;>L121" class="line" namon>L121">31218.a                                         .a href="+code=prev_mask" class="sref">prev_mask8.a  = (.a href="+code=prev_mask" class="sref">prev_mask8.a  << 1) | 1;>L122" class="line" namon>L122">31228.a                                         continue;>L123" class="line" namon>L123">31238.a                                 }>L124" class="line" namon>L124">31248.a                         }>L125" class="line" namon>L125">31258.a                 }>L126" class="line" namon>L126">31268.a >L127" class="line" namon>L127">31278.a                 .a href="+code=prev_pos" class="sref">prev_pos8.a  = .a href="+code=i" class="sref">i8.a ;>L128" class="line" namon>L128">31288.a >L129" class="line" namon>L129">31298.a                 if (.a href="+code=bcj_x86_test_msbyto" class="sref">bcj_x86_test_msbyto8.a (.a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 4]))3{>L130" class="line" namon>L130">31308.a                         .a href="+code=src" class="sref">src8.a  = .a href="+code=get_unaligned_le32" class="sref">get_unaligned_le328.a (.a href="+code=buf" class="sref">buf8.a  + .a href="+code=i" class="sref">i8.a  + 1);>L131" class="line" namon>L131">31318.a                         while (.a href="+code=truo" class="sref">truo8.a )3{>L132" class="line" namon>L132">31328.a                                 .a href="+code=dest" class="sref">dest8.a  = .a href="+code=src" class="sref">src8.a  - (.a href="+code=s" class="sref">s8.a ->.a href="+code=pos" class="sref">pos8.a  + (.a href="+code=uint32_t" class="sref">uint32_t8.a ).a href="+code=i" class="sref">i8.a  + 5);>L133" class="line" namon>L133">31338.a                                 if (.a href="+code=prev_mask" class="sref">prev_mask8.a  == 0)>L134" class="line" namon>L134">31348.a                                         break;>L135" class="line" namon>L135">31358.a >L136" class="line" namon>L136">31368.a                                 .a href="+code=j" class="sref">j8.a  = .a href="+code=mask_to_bit_num" class="sref">mask_to_bit_num8.a [.a href="+code=prev_mask" class="sref">prev_mask8.a ] * 8;>L137" class="line" namon>L137">31378.a                                 .a href="+code=b" class="sref">b8.a  = (.a href="+code=uint8_t" class="sref">uint8_t8.a )(.a href="+code=dest" class="sref">dest8.a  >> (24 - .a href="+code=j" class="sref">j8.a ));>L138" class="line" namon>L138">31388.a                                 if (!.a href="+code=bcj_x86_test_msbyto" class="sref">bcj_x86_test_msbyto8.a (.a href="+code=b" class="sref">b8.a ))>L139" class="line" namon>L139">31398.a                                         break;>L140" class="line" namon>L140">31418.a >L141" class="line" namon>L141">31418.a                                 .a href="+code=src" class="sref">src8.a  = .a href="+code=dest" class="sref">dest8.a  ^ (((.a href="+code=uint32_t" class="sref">uint32_t8.a )1 << (32 - .a href="+code=j" class="sref">j8.a )) - 1);>L142" class="line" namon>L142">31428.a                         }>L143" class="line" namon>L143">3143./a>>L144" class="line" namon>L144">31448.a                         .a href="+code=dest" class="sref">dest8.a  &= 0x01FFFFFF;>L145" class="line" namon>L145">31458.a                         .a href="+code=dest" class="sref">dest8.a  |= (.a href="+code=uint32_t" class="sref">uint32_t8.a )0 - (.a href="+code=dest" class="sref">dest8.a  & 0x01000000);>L146" class="line" namon>L146">31468.a                         .a href="+code=put_unaligned_le32" class="sref">put_unaligned_le328.a (.a href="+code=dest" class="sref">dest8.a , .a href="+code=buf" class="sref">buf8.a  + .a href="+code=i" class="sref">i8.a  + 1);>L147" class="line" namon>L147">31478.a                         .a href="+code=i" class="sref">i8.a  += 4;>L148" class="line" namon>L148">31488.a                 } else3{>L149" class="line" namon>L149">31498.a                         .a href="+code=prev_mask" class="sref">prev_mask8.a  = (.a href="+code=prev_mask" class="sref">prev_mask8.a  << 1) | 1;>L150" class="line" namon>L150">31508.a                 }>L151" class="line" namon>L151">31518.a         }>L152" class="line" namon>L152">31528.a >L153" class="line" namon>L153">31538.a         .a href="+code=prev_pos" class="sref">prev_pos8.a  = .a href="+code=i" class="sref">i8.a  - .a href="+code=prev_pos" class="sref">prev_pos8.a ;>L154" class="line" namon>L154">31548.a         .a href="+code=s" class="sref">s8.a ->.a href="+code=x86_prev_mask" class="sref">x86_prev_mask8.a  = .a href="+code=prev_pos" class="sref">prev_pos8.a  > 3 ? 0 : .a href="+code=prev_mask" class="sref">prev_mask8.a  << (.a href="+code=prev_pos" class="sref">prev_pos8.a  - 1);>L155" class="line" namon>L155">31558.a         return .a href="+code=i" class="sref">i8.a ;>L156" class="line" namon>L156">31568.a }>L157" class="line" namon>L157">31578.a #endif>L158" class="line" namon>L158">31588.a >L159" class="line" namon>L159">31598.a #ifdef3.a href="+code=XZ_DEC_POWERPC" class="sref">XZ_DEC_POWERPC8.a >L160" class="line" namon>L160">31608.a static3.a href="+code=size_t" class="sref">size_t8.a  .a href="+code=bcj_powerpc" class="sref">bcj_powerpc8.a (struct3.a href="+code=xz_dec_bcj" class="sref">xz_dec_bcj./a> *.a href="+code=s" class="sref">s8.a , .a href="+code=uint8_t" class="sref">uint8_t8.a  *.a href="+code=buf" class="sref">buf8.a , .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=size" class="sref">size8.a )>L161" class="line" namon>L161">31618.a {>L162" class="line" namon>L162">31628.a         .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=i" class="sref">i8.a ;>L163" class="line" namon>L163">31638.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=instr" class="sref">instr8.a ;>L164" class="line" namon>L164">31648.a >L165" class="line" namon>L165">31658.a         for (.a href="+code=i" class="sref">i8.a  = 0; .a href="+code=i" class="sref">i8.a  + 4 <= .a href="+code=size" class="sref">size8.a ; .a href="+code=i" class="sref">i8.a  += 4)3{>L166" class="line" namon>L166">31668.a                 .a href="+code=instr" class="sref">instr8.a  = .a href="+code=get_unaligned_be32" class="sref">get_unaligned_be328.a (.a href="+code=buf" class="sref">buf8.a  + .a href="+code=i" class="sref">i8.a );>L167" class="line" namon>L167">31678.a                 if ((.a href="+code=instr" class="sref">instr8.a  & 0xFC000003) == 0x48000001)3{>L168" class="line" namon>L168">31688.a                         .a href="+code=instr" class="sref">instr8.a  &= 0x03FFFFFC;>L169" class="line" namon>L169">31698.a                         .a href="+code=instr" class="sref">instr8.a  -= .a href="+code=s" class="sref">s8.a ->.a href="+code=pos" class="sref">pos8.a  + (.a href="+code=uint32_t" class="sref">uint32_t8.a ).a href="+code=i" class="sref">i8.a ;>L170" class="line" namon>L170">31708.a                         .a href="+code=instr" class="sref">instr8.a  &= 0x03FFFFFC;>L171" class="line" namon>L171">31718.a                         .a href="+code=instr" class="sref">instr8.a  |= 0x48000001;>L172" class="line" namon>L172">31728.a                         .a href="+code=put_unaligned_be32" class="sref">put_unaligned_be328.a (.a href="+code=instr" class="sref">instr8.a , .a href="+code=buf" class="sref">buf8.a  + .a href="+code=i" class="sref">i8.a );>L173" class="line" namon>L173">31738.a                 }>L174" class="line" namon>L174">31748.a         }>L175" class="line" namon>L175">31758.a >L176" class="line" namon>L176">31768.a         return .a href="+code=i" class="sref">i8.a ;>L177" class="line" namon>L177">31778.a }>L178" class="line" namon>L178">3178./a>#endif>L179" class="line" namon>L179">31798.a >L180" class="line" namon>L180">3180./a>#ifdef3.a href="+code=XZ_DEC_IA64" class="sref">XZ_DEC_IA648.a >L181" class="line" namon>L181">3181./a>static3.a href="+code=size_t" class="sref">size_t8.a  .a href="+code=bcj_ia64" class="sref">bcj_ia648.a (struct3.a href="+code=xz_dec_bcj" class="sref">xz_dec_bcj./a> *.a href="+code=s" class="sref">s8.a , .a href="+code=uint8_t" class="sref">uint8_t8.a  *.a href="+code=buf" class="sref">buf8.a , .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=size" class="sref">size8.a )>L182" class="line" namon>L182">3182./a>{>L183" class="line" namon>L183">31838.a         static3const .a href="+code=uint8_t" class="sref">uint8_t8.a  .a href="+code=branch_table" class="sref">branch_table8.a [32] = {>L184" class="line" namon>L184">31848.a                 0, 0, 0, 0, 0, 0, 0, 0,>L185" class="line" namon>L185">31858.a                 0, 0, 0, 0, 0, 0, 0, 0,>L186" class="line" namon>L186">31868.a                 4, 4, 6, 6, 0, 0, 7, 7,>L187" class="line" namon>L187">31878.a                 4, 4, 0, 0, 4, 4, 0, 0>L188" class="line" namon>L188">31888.a         };>L189" class="line" namon>L189">31898.a >L190" class="line" namon>L190">31918.a         .spa  class="comment">/*./spa  >L191" class="line" namon>L191">3191./a>.spa  class="comment">         * The local variables take a little bit stack space, but it's less./spa  >L192" class="line" namon>L192">3192./a>.spa  class="comment">         * tha  what LZMA2 decoder takes, so it doesn't make sense to reduce./spa  >L193" class="line" namon>L193">3193./a>.spa  class="comment">         * stack usage here without do1ng that for the LZMA2 decoder too../spa  >L194" class="line" namon>L194">3194./a>.spa  class="comment">         */./spa  >L195" class="line" namon>L195">31958.a >L196" class="line" namon>L196">31968.a         .spa  class="comment">/* Loop3counters */./spa  >L197" class="line" namon>L197">31978.a         .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=i" class="sref">i8.a ;>L198" class="line" namon>L198">31988.a         .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=j" class="sref">j8.a ;>L199" class="line" namon>L199">31998.a >L200" class="line" namon>L200">32018.a         .spa  class="comment">/* Instruction slot (0, 1, or 2) in the 128-bit instruction word */./spa  >L201" class="line" namon>L201">32018.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=slot" class="sref">slot8.a ;>L202" class="line" namon>L202">32028.a >L203" class="line" namon>L203">32038.a         .spa  class="comment">/* Bitwiso offset of the instruction indicated by slot */./spa  >L204" class="line" namon>L204">32048.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=bit_pos" class="sref">bit_pos8.a ;>L205" class="line" namon>L205">32058.a >L206" class="line" namon>L206">32068.a         .spa  class="comment">/* bit_pos split into byto and bit parts */./spa  >L207" class="line" namon>L207">32078.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=byto_pos" class="sref">byto_pos8.a ;>L208" class="line" namon>L208">32088.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=bit_res" class="sref">bit_res8.a ;>L209" class="line" namon>L209">32098.a >L210" class="line" namon>L210">32118.a         .spa  class="comment">/* Address part of an instruction */./spa  >L211" class="line" namon>L211">32118.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=addr" class="sref">addr8.a ;>L212" class="line" namon>L212">32128.a >L213" class="line" namon>L213">32138.a         .spa  class="comment">/* Mask used to detect which instructions to convert */./spa  >L214" class="line" namon>L214">32148.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=mask" class="sref">mask8.a ;>L215" class="line" namon>L215">32158.a >L216" class="line" namon>L216">32168.a         .spa  class="comment">/* 41-bit instruction stored somewhere in the lowest 48 bits */./spa  >L217" class="line" namon>L217">32178.a         .a href="+code=uint64_t" class="sref">uint64_t8.a  .a href="+code=instr" class="sref">instr8.a ;>L218" class="line" namon>L218">32188.a >L219" class="line" namon>L219">32198.a         .spa  class="comment">/* Instruction normalized with bit_res for easier manipulation */./spa  >L220" class="line" namon>L220">32208.a         .a href="+code=uint64_t" class="sref">uint64_t8.a  .a href="+code=norm" class="sref">norm8.a ;>L221" class="line" namon>L221">32218.a >L222" class="line" namon>L222">32228.a         for (.a href="+code=i" class="sref">i8.a  = 0; .a href="+code=i" class="sref">i8.a  + 16 <= .a href="+code=size" class="sref">size8.a ; .a href="+code=i" class="sref">i8.a  += 16)3{>L223" class="line" namon>L223">32238.a                 .a href="+code=mask" class="sref">mask8.a  = .a href="+code=branch_table" class="sref">branch_table8.a [.a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a ] & 0x1F];>L224" class="line" namon>L224">32248.a                 for (.a href="+code=slot" class="sref">slot8.a  = 0, .a href="+code=bit_pos" class="sref">bit_pos8.a  = 5; .a href="+code=slot" class="sref">slot8.a  < 3; ++.a href="+code=slot" class="sref">slot8.a , .a href="+code=bit_pos" class="sref">bit_pos8.a  += 41)3{>L225" class="line" namon>L225">32258.a                         if (((.a href="+code=mask" class="sref">mask8.a  >> .a href="+code=slot" class="sref">slot8.a ) & 1) == 0)>L226" class="line" namon>L226">32268.a                                 continue;>L227" class="line" namon>L227">32278.a >L228" class="line" namon>L228">32288.a                         .a href="+code=byto_pos" class="sref">byto_pos8.a  = .a href="+code=bit_pos" class="sref">bit_pos8.a  >> 3;>L229" class="line" namon>L229">32298.a                         .a href="+code=bit_res" class="sref">bit_res8.a  = .a href="+code=bit_pos" class="sref">bit_pos8.a  & 7;>L230" class="line" namon>L230">32308.a                         .a href="+code=instr" class="sref">instr8.a  = 0;>L231" class="line" namon>L231">32318.a                         for (.a href="+code=j" class="sref">j8.a  = 0; .a href="+code=j" class="sref">j8.a  < 6; ++.a href="+code=j" class="sref">j8.a )>L232" class="line" namon>L232">32328.a                                 .a href="+code=instr" class="sref">instr8.a  |= (.a href="+code=uint64_t" class="sref">uint64_t8.a )(.a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + .a href="+code=j" class="sref">j8.a  + .a href="+code=byto_pos" class="sref">byto_pos8.a ])>L233" class="line" namon>L233">32338.a                                                 << (8 * .a href="+code=j" class="sref">j8.a );>L234" class="line" namon>L234">32348.a >L235" class="line" namon>L235">32358.a                         .a href="+code=norm" class="sref">norm8.a  = .a href="+code=instr" class="sref">instr8.a  >> .a href="+code=bit_res" class="sref">bit_res8.a ;>L236" class="line" namon>L236">32368.a >L237" class="line" namon>L237">32378.a                         if (((.a href="+code=norm" class="sref">norm8.a  >> 37) & 0x0F) == 0x05>L238" class="line" namon>L238">32388.a                                         && ((.a href="+code=norm" class="sref">norm8.a  >> 9) & 0x07) == 0)3{>L239" class="line" namon>L239">32398.a                                 .a href="+code=addr" class="sref">addr8.a  = (.a href="+code=norm" class="sref">norm8.a  >> 13) & 0x0FFFFF;>L240" class="line" namon>L240">32408.a                                 .a href="+code=addr" class="sref">addr8.a  |= ((.a href="+code=uint32_t" class="sref">uint32_t8.a )(.a href="+code=norm" class="sref">norm8.a  >> 36) & 1) << 20;>L241" class="line" namon>L241">32418.a                                 .a href="+code=addr" class="sref">addr8.a  <<= 4;>L242" class="line" namon>L242">32428.a                                 .a href="+code=addr" class="sref">addr8.a  -= .a href="+code=s" class="sref">s8.a ->.a href="+code=pos" class="sref">pos8.a  + (.a href="+code=uint32_t" class="sref">uint32_t8.a ).a href="+code=i" class="sref">i8.a ;>L243" class="line" namon>L243">32438.a                                 .a href="+code=addr" class="sref">addr8.a  >>= 4;>L244" class="line" namon>L244">32448.a >L245" class="line" namon>L245">32458.a                                 .a href="+code=norm" class="sref">norm8.a  &= ~((.a href="+code=uint64_t" class="sref">uint64_t8.a )0x8FFFFF << 13);>L246" class="line" namon>L246">32468.a                                 .a href="+code=norm" class="sref">norm8.a  |= (.a href="+code=uint64_t" class="sref">uint64_t8.a )(.a href="+code=addr" class="sref">addr8.a  & 0x0FFFFF) << 13;>L247" class="line" namon>L247">32478.a                                 .a href="+code=norm" class="sref">norm8.a  |= (.a href="+code=uint64_t" class="sref">uint64_t8.a )(.a href="+code=addr" class="sref">addr8.a  & 0x100000)>L248" class="line" namon>L248">32488.a                                                 << (36 - 20);>L249" class="line" namon>L249">32498.a >L250" class="line" namon>L250">32508.a                                 .a href="+code=instr" class="sref">instr8.a  &= (1 << .a href="+code=bit_res" class="sref">bit_res8.a ) - 1;>L251" class="line" namon>L251">32518.a                                 .a href="+code=instr" class="sref">instr8.a  |= .a href="+code=norm" class="sref">norm8.a  << .a href="+code=bit_res" class="sref">bit_res8.a ;>L252" class="line" namon>L252">32528.a >L253" class="line" namon>L253">32538.a                                 for (.a href="+code=j" class="sref">j8.a  = 0; .a href="+code=j" class="sref">j8.a  < 6; .a href="+code=j" class="sref">j8.a ++)>L254" class="line" namon>L254">32548.a                                         .a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + .a href="+code=j" class="sref">j8.a  + .a href="+code=byto_pos" class="sref">byto_pos8.a ]>L255" class="line" namon>L255">32558.a                                                 = (.a href="+code=uint8_t" class="sref">uint8_t8.a )(.a href="+code=instr" class="sref">instr8.a  >> (8 * .a href="+code=j" class="sref">j8.a ));>L256" class="line" namon>L256">32568.a                         }>L257" class="line" namon>L257">32578.a                 }>L258" class="line" namon>L258">32588.a         }>L259" class="line" namon>L259">32598.a >L260" class="line" namon>L260">32608.a         return .a href="+code=i" class="sref">i8.a ;>L261" class="line" namon>L261">32618.a }>L262" class="line" namon>L262">32628.a #endif>L263" class="line" namon>L263">3263./a>>L264" class="line" namon>L264">32648.a #ifdef3.a href="+code=XZ_DEC_ARM" class="sref">XZ_DEC_ARM./a>>L265" class="line" namon>L265">32658.a static3.a href="+code=size_t" class="sref">size_t8.a  .a href="+code=bcj_arm" class="sref">bcj_arm8.a (struct3.a href="+code=xz_dec_bcj" class="sref">xz_dec_bcj./a> *.a href="+code=s" class="sref">s8.a , .a href="+code=uint8_t" class="sref">uint8_t8.a  *.a href="+code=buf" class="sref">buf8.a , .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=size" class="sref">size8.a )>L266" class="line" namon>L266">32668.a {>L267" class="line" namon>L267">32678.a         .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=i" class="sref">i8.a ;>L268" class="line" namon>L268">32688.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=addr" class="sref">addr8.a ;>L269" class="line" namon>L269">32698.a >L270" class="line" namon>L270">32708.a         for (.a href="+code=i" class="sref">i8.a  = 0; .a href="+code=i" class="sref">i8.a  + 4 <= .a href="+code=size" class="sref">size8.a ; .a href="+code=i" class="sref">i8.a  += 4)3{>L271" class="line" namon>L271">32718.a                 if (.a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 3] == 0xEB)3{>L272" class="line" namon>L272">32728.a                         .a href="+code=addr" class="sref">addr8.a  = (.a href="+code=uint32_t" class="sref">uint32_t8.a ).a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a ] | ((.a href="+code=uint32_t" class="sref">uint32_t8.a ).a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 1] << 8)>L273" class="line" namon>L273">32738.a                                         | ((.a href="+code=uint32_t" class="sref">uint32_t8.a ).a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 2] << 16);>L274" class="line" namon>L274">32748.a                         .a href="+code=addr" class="sref">addr8.a  <<= 2;>L275" class="line" namon>L275">32758.a                         .a href="+code=addr" class="sref">addr8.a  -= .a href="+code=s" class="sref">s8.a ->.a href="+code=pos" class="sref">pos8.a  + (.a href="+code=uint32_t" class="sref">uint32_t8.a ).a href="+code=i" class="sref">i8.a  + 8;>L276" class="line" namon>L276">32768.a                         .a href="+code=addr" class="sref">addr8.a  >>= 2;>L277" class="line" namon>L277">32778.a                         .a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a ] = (.a href="+code=uint8_t" class="sref">uint8_t8.a ).a href="+code=addr" class="sref">addr8.a ;>L278" class="line" namon>L278">32788.a                         .a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 1] = (.a href="+code=uint8_t" class="sref">uint8_t8.a )(.a href="+code=addr" class="sref">addr8.a  >> 8);>L279" class="line" namon>L279">32798.a                         .a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 2] = (.a href="+code=uint8_t" class="sref">uint8_t8.a )(.a href="+code=addr" class="sref">addr8.a  >> 16);>L280" class="line" namon>L280">32808.a                 }>L281" class="line" namon>L281">32818.a         }>L282" class="line" namon>L282">32828.a >L283" class="line" namon>L283">32838.a         return .a href="+code=i" class="sref">i8.a ;>L284" class="line" namon>L284">32848.a }>L285" class="line" namon>L285">32858.a #endif>L286" class="line" namon>L286">32868.a >L287" class="line" namon>L287">32878.a #ifdef3.a href="+code=XZ_DEC_ARMTHUMB" class="sref">XZ_DEC_ARMTHUMB8.a >L288" class="line" namon>L288">32888.a static3.a href="+code=size_t" class="sref">size_t8.a  .a href="+code=bcj_armthumb" class="sref">bcj_armthumb8.a (struct3.a href="+code=xz_dec_bcj" class="sref">xz_dec_bcj./a> *.a href="+code=s" class="sref">s8.a , .a href="+code=uint8_t" class="sref">uint8_t8.a  *.a href="+code=buf" class="sref">buf8.a , .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=size" class="sref">size8.a )>L289" class="line" namon>L289">32898.a {>L290" class="line" namon>L290">32908.a         .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=i" class="sref">i8.a ;>L291" class="line" namon>L291">32918.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=addr" class="sref">addr8.a ;>L292" class="line" namon>L292">32928.a >L293" class="line" namon>L293">32938.a         for (.a href="+code=i" class="sref">i8.a  = 0; .a href="+code=i" class="sref">i8.a  + 4 <= .a href="+code=size" class="sref">size8.a ; .a href="+code=i" class="sref">i8.a  += 2)3{>L294" class="line" namon>L294">32948.a                 if ((.a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 1] & 0xF8) == 0xF0>L295" class="line" namon>L295">32958.a                                 && (.a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 3] & 0xF8) == 0xF8)3{>L296" class="line" namon>L296">32968.a                         .a href="+code=addr" class="sref">addr8.a  = (((.a href="+code=uint32_t" class="sref">uint32_t8.a ).a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 1] & 0x07) << 19)>L297" class="line" namon>L297">32978.a                                         | ((.a href="+code=uint32_t" class="sref">uint32_t8.a ).a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a ] << 11)>L298" class="line" namon>L298">32988.a                                         | (((.a href="+code=uint32_t" class="sref">uint32_t8.a ).a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 3] & 0x07) << 8)>L299" class="line" namon>L299">32998.a                                         | (.a href="+code=uint32_t" class="sref">uint32_t8.a ).a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 2];>L300" class="line" namon>L300">33008.a                         .a href="+code=addr" class="sref">addr8.a  <<= 1;>L301" class="line" namon>L301">33018.a                         .a href="+code=addr" class="sref">addr8.a  -= .a href="+code=s" class="sref">s8.a ->.a href="+code=pos" class="sref">pos8.a  + (.a href="+code=uint32_t" class="sref">uint32_t8.a ).a href="+code=i" class="sref">i8.a  + 4;>L302" class="line" namon>L302">33028.a                         .a href="+code=addr" class="sref">addr8.a  >>= 1;>L303" class="line" namon>L303">33038.a                         .a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 1] = (.a href="+code=uint8_t" class="sref">uint8_t8.a )(0xF0 | ((.a href="+code=addr" class="sref">addr8.a  >> 19) & 0x07));>L304" class="line" namon>L304">33048.a                         .a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a ] = (.a href="+code=uint8_t" class="sref">uint8_t8.a )(.a href="+code=addr" class="sref">addr8.a  >> 11);>L305" class="line" namon>L305">33058.a                         .a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 3] = (.a href="+code=uint8_t" class="sref">uint8_t8.a )(0xF8 | ((.a href="+code=addr" class="sref">addr8.a  >> 8) & 0x07));>L306" class="line" namon>L306">33068.a                         .a href="+code=buf" class="sref">buf8.a [.a href="+code=i" class="sref">i8.a  + 2] = (.a href="+code=uint8_t" class="sref">uint8_t8.a ).a href="+code=addr" class="sref">addr8.a ;>L307" class="line" namon>L307">33078.a                         .a href="+code=i" class="sref">i8.a  += 2;>L308" class="line" namon>L308">33088.a                 }>L309" class="line" namon>L309">33098.a         }>L310" class="line" namon>L310">33118.a >L311" class="line" namon>L311">33118.a         return .a href="+code=i" class="sref">i8.a ;>L312" class="line" namon>L312">33128.a }>L313" class="line" namon>L313">33138.a #endif>L314" class="line" namon>L314">33148.a >L315" class="line" namon>L315">33158.a #ifdef3.a href="+code=XZ_DEC_SPARC" class="sref">XZ_DEC_SPARC8.a >L316" class="line" namon>L316">33168.a static3.a href="+code=size_t" class="sref">size_t8.a  .a href="+code=bcj_sparc" class="sref">bcj_sparc8.a (struct3.a href="+code=xz_dec_bcj" class="sref">xz_dec_bcj./a> *.a href="+code=s" class="sref">s8.a , .a href="+code=uint8_t" class="sref">uint8_t8.a  *.a href="+code=buf" class="sref">buf8.a , .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=size" class="sref">size8.a )>L317" class="line" namon>L317">33178.a {>L318" class="line" namon>L318">33188.a         .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=i" class="sref">i8.a ;>L319" class="line" namon>L319">33198.a         .a href="+code=uint32_t" class="sref">uint32_t8.a  .a href="+code=instr" class="sref">instr8.a ;>L320" class="line" namon>L320">33218.a >L321" class="line" namon>L321">33218.a         for (.a href="+code=i" class="sref">i8.a  = 0; .a href="+code=i" class="sref">i8.a  + 4 <= .a href="+code=size" class="sref">size8.a ; .a href="+code=i" class="sref">i8.a  += 4)3{>L322" class="line" namon>L322">33228.a                 .a href="+code=instr" class="sref">instr8.a  = .a href="+code=get_unaligned_be32" class="sref">get_unaligned_be328.a (.a href="+code=buf" class="sref">buf8.a  + .a href="+code=i" class="sref">i8.a );>L323" class="line" namon>L323">33238.a                 if ((.a href="+code=instr" class="sref">instr8.a  >> 22) == 0x100 || (.a href="+code=instr" class="sref">instr8.a  >> 22) == 0x1FF) {>L324" class="line" namon>L324">33248.a                         .a href="+code=instr" class="sref">instr8.a  <<= 2;>L325" class="line" namon>L325">33258.a                         .a href="+code=instr" class="sref">instr8.a  -= .a href="+code=s" class="sref">s8.a ->.a href="+code=pos" class="sref">pos8.a  + (.a href="+code=uint32_t" class="sref">uint32_t8.a ).a href="+code=i" class="sref">i8.a ;>L326" class="line" namon>L326">33268.a                         .a href="+code=instr" class="sref">instr8.a  >>= 2;>L327" class="line" namon>L327">33278.a                         .a href="+code=instr" class="sref">instr8.a  = ((.a href="+code=uint32_t" class="sref">uint32_t8.a )0x40000000 - (.a href="+code=instr" class="sref">instr8.a  & 0x400000))>L328" class="line" namon>L328">33288.a                                         | 0x40000000 | (.a href="+code=instr" class="sref">instr8.a  & 0x3FFFFF);>L329" class="line" namon>L329">33298.a                         .a href="+code=put_unaligned_be32" class="sref">put_unaligned_be328.a (.a href="+code=instr" class="sref">instr8.a , .a href="+code=buf" class="sref">buf8.a  + .a href="+code=i" class="sref">i8.a );>L330" class="line" namon>L330">33308.a                 }>L331" class="line" namon>L331">33318.a         }>L332" class="line" namon>L332">33328.a >L333" class="line" namon>L333">33338.a         return .a href="+code=i" class="sref">i8.a ;>L334" class="line" namon>L334">33348.a }>L335" class="line" namon>L335">33358.a #endif>L336" class="line" namon>L336">33368.a >L337" class="line" namon>L337">33378.a .spa  class="comment">/*./spa  >L338" class="line" namon>L338">33388.a .spa  class="comment"> * Apply the selected BCJ filter. Update *pos and s->pos to match the amount./spa  >L339" class="line" namon>L339">33398.a .spa  class="comment"> * of data that got filtered../spa  >L340" class="line" namon>L340">33408.a .spa  class="comment"> *./spa  >L341" class="line" namon>L341">3341./a>.spa  class="comment"> * NOTE: This is implemented as a switch statement to avoid us1ng function./spa  >L342" class="line" namon>L342">3342./a>.spa  class="comment"> * pointers, which could be problematic3in the kernel boot code, which must./spa  >L343" class="line" namon>L343">3343./a>.spa  class="comment"> * avoid pointers to static3data (at least on x86)../spa  >L344" class="line" namon>L344">3344./a>.spa  class="comment"> */./spa  >L345" class="line" namon>L345">33458.a static3void .a href="+code=bcj_apply" class="sref">bcj_apply8.a (struct3.a href="+code=xz_dec_bcj" class="sref">xz_dec_bcj./a> *.a href="+code=s" class="sref">s8.a ,>L346" class="line" namon>L346">33468.a                       .a href="+code=uint8_t" class="sref">uint8_t8.a  *.a href="+code=buf" class="sref">buf8.a , .a href="+code=size_t" class="sref">size_t8.a  *.a href="+code=pos" class="sref">pos8.a , .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=size" class="sref">size8.a )>L347" class="line" namon>L347">33478.a {>L348" class="line" namon>L348">33488.a         .a href="+code=size_t" class="sref">size_t8.a  .a href="+code=filtered" class="sref">filtered8.a ;>L349" class="line" namon>L349">33498.a >L350" class="line" namon>L350">33508.a         .a href="+code=buf" class="sref">buf8.a  += href="+code=pos" class="sref">pos8.a , .a;>i8.a  + 17filtered" cl5f">uint8_t8.a  *.a href="+code=buf" class="sref"f="+code=i" class="sref">i8.a  + 17filte 4" t6; .a 2sc#L276" idn>L276" class="line" namon>L277="lib/xz/xz_dec_bcj.3#L253" id3>L253" class="line" namo3>L2533>32538.a       a switor (.a href="+code=s" class="sref">s8.a ->.a href="+cotyp + 17filtered" ctyp ize8.FF) {>L254" class="line" namo3>L2543532648.a #ifdef3.a href="+code=XZ_DX>L286" class="sref">XZ_DX>32868.a >L255" class="line" namo3>L2553>32558.a      casedef3.a href="+coed DX>L286" class="sreed DX>L2558:.a >L256" class="line" namo3>L2563>32568.a              a  .a href="+code=filtered" class="sref">filtered8.a  = .a href="+cod">bx>L286" class="sred">bx>Le328.a (.a href="+code=s" class="sref">s8.a , .a href="+code=buf" class="sref">buf8.a , .a href="+code=size" class="sref">size8.+code=i" class="sref">i8.a  + 17fiL347" idn>L257" class="line" namo3>L2573>32578.a              break+code=i" class="sref">i8.a  + 17fiL348" idn>L258" class="line" namo3>L258353178./a>#endif>L259" class="line" namo3>L2593>32598.a #ifdef3.a href="+code=XZ_DPOWERPPARC" class="sref">XZ_DPOWERPP2868.a >L260" class="line" namo3>L2603>32608.a      casedef3.a href="+coed DPOWERPPARC" class="sreed DPOWERPP2558:.a >L261" class="line" namo3>L2613633018.a              a  .a href="+code=filtered" class="sref">filtered8.a  = .a href="+cod">bpowerpparc" class="sref">bpowerppe328.a (.a href="+code=s" class="sref">s8.a , .a href="+code=buf" class="sref">buf8.a , .a href="+code=size" class="sref">size8.+code=i" class="sref">i8.a  + 17f#L262" id3>L262" class="line" namo3>L2623633228.a              break+code=i" class="sref">i8.a  + 17f#L263" id3>L263" class="line" namo3>L2633633138.a #endif>L264" class="line" namo3>L2643>32648.a #ifdef3.a href="+code=XZ_DEC_IA64" class="sref">XZ_DEC_IA648.a >L265" class="line" namo3>L2653632558.a      casedef3.a href="+coed DEC_IA64" class="sreed DEC_I2558:.a >L266" class="line" namo3>L2663632568.a              a  .a href="+code=filtered" class="sref">filtered8.a  = .a href="+cod">bia_IA64" class="sred">bia_Ie328.a (.a href="+code=s" class="sref">s8.a , .a href="+code=buf" class="sref">buf8.a , .a href="+code=size" class="sref">size8.+code=i" class="sref">i8.a  + 17f#L347" idn>L267" class="line" namo3>L2673632578.a              break+code=i" class="sref">i8.a  + 17f#L268" id3>L268" class="line" namo3>L268363178./a>#endif>L269" class="line" namo3>L2693632598.a #ifdef3.a href="+code=XZ_DEC_ARM" class="sref">XZ_DEC_ARM./a>>L270" class="line" namo3>L2703732608.a      casedef3.a href="+coed DEC_ARM" class="sreed DEC_2558:.a >L271" class="line" namo3>L2713>32718.a              a  .a href="+code=filtered" class="sref">filtered8.a  = .a href="+cod">bcj_arm" class="sref">bcj_arm8.a (.a href="+code=s" class="sref">s8.a , .a href="+code=buf" class="sref">buf8.a , .a href="+code=size" class="sref">size8.+code=i" class="sref">i8.a  + 17f#L272" id3>L272" class="line" namo3>L2723>32728.a              break+code=i" class="sref">i8.a  + 17f#L273" id3>L273" class="line" namo3>L2733733138.a #endif>L274" class="line" namo3>L2743732648.a #ifdef3.a href="+code=XZ_DEC_ARMTHUMB" class="sref">XZ_DEC_ARMTHUMB8.a >L275" class="line" namo3>L2753732558.a      casedef3.a href="+coed DEC_ARMTHUMB" class="sreed DEC_ARMTH2558:.a >L276" class="line" namo3>L2763>32768.a              a  .a href="+code=filtered" class="sref">filtered8.a  = .a href="+cod">bcj_armthumb" class="sref">bcj_armthumb8.a (.a href="+code=s" class="sref">s8.a , .a href="+code=buf" class="sref">buf8.a , .a href="+code=size" class="sref">size8.+code=i" class="sref">i8.a  + 17f#L347" idn>L277" class="line" namo3>L2773>32778.a              break+code=i" class="sref">i8.a  + 17f#L268" id3>L278" class="line" namo3>L278373178./a>#endif>L279" class="line" namo3>L2793732598.a #ifdef3.a href="+code=XZ_DEC_SPARC" class="sref">XZ_DEC_SPARC8.a >L280" class="line" namo3>L2803832608.a      casedef3.a href="+coed DEC_SPARC" class="sreed DEC_SP2558:.a >L281" class="line" namo3>L2813832718.a              a  .a href="+code=filtered" class="sref">filtered8.a  = .a href="+cod">bcj_sparc" class="sref">bcj_sparc8.a (.a href="+code=s" class="sref">s8.a , .a href="+code=buf" class="sref">buf8.a , .a href="+code=size" class="sref">size8.+code=i" class="sref">i8.a  + 17f#L282" id3>L282" class="line" namo3>L2823832728.a              break+code=i" class="sref">i8.a  + 17f#L283" id3>L283" class="line" namo3>L2833833138.a #endif>L284" class="line" namo3>L2843833248.a      #ifault:.a >L285" class="line" namo3>L2853833258.a                 .spa  class="comment">Never reachcateut silence s="piler warnings.t"> */./spa  >L286" class="line" namo3>L2863832768.a              a  .a href="+code=filtered" class="sref">filtered8.a ; 20;>L287" class="line" namo3>L2873832778.a              break+code=i" class="sref">i8.a  + 17f#L288" id3>L288" class="line" namo3>L2883832588.a         }>L289" class="line" namo3>L2893833498.a >L290" class="line" namo3>L2903>32908.a      8.a  *.a href="+code=buf" class="sref"f=".a  a  .a href="+code=filtered" class="sref">filtered8.a ;>L291" class="line" namo3>L2913>32918.a         .a href="+code=s" class="sref">s8.a ->.a href="+code=pos" class="sref">pos8.a  a  .a href="+code=filtered" class="sref">filtered8.a ;>L292" class="line" namo3>L2923933128.a }>L293" class="line" namo3>L293393263./a>>L294" class="line" namo3>L294393344./a>.spa  class="comment">/*./spa  >L295" class="line" namo3>L2953>32958/a>.spa  class="comment">Flush pa #eus1n">filtetic3dafrom tempers in toutput f">fer86)../spa  >L296" class="line" namo3>L2963>32968/a>.spa  class="comment">Move in tremaining mixture> * f">sibly1n">filtetos aunf">filtere../spa  >L297" class="line" namo3>L2973933378.a .spa  class="comment">of dats in tbeginning  * temp86)../spa  >L298" class="line" namo3>L2983933388.a .spa  class="comment"> */./spa  >L299" class="line" namo3>L2993>32998.a static3void .a href="+code=bflusharc" class="sref">bflushply8.a (struct3.a href="+code=xz_dec_bcj" class="sref">xz_dec_bcj./a> *.a href="+code=s" class="sref">s8. a (struct3.a href="+code=de=buf" class="srede=de=8_t8.a  *.a href="+codarc" class="srefize8.a )>L300" class="line" namo4>L3004>33008F) {>L301" class="line" namo4>L30140ef="+code=i" class="sref">i8.a  ize_t" class="sref">size_t8.a  .a href="+cocopy_de=size" class="srecopy_de=sred8.a ;>L302" class="line" namo4>L30240line" namon>L277="lib/xz/xz_dec_bcj.4#L303" id4>L303" class="line" namo4>L3034>33038.a      a  .a href="+cocopy_de=size" class="srecopy_de=sred8.a  = .a href="+cominize_t" class="sreminizarc8.a (.a href="+coda  ize_t" class="sref">size_t8.a , .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=filtered" class="sref">filtered8.a , .a href="+codarc" class="srefize8.a ->.a href="+coout_de=size" class="sreout_de=s>uint8a , .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.+code=i" class="sref">i8.a  + 174#L304" id4>L304" class="line" namo4>L3044>33048.a       = .a href="+comemcppply" class="srememcpparc8.a (.a href="+codarc" class="srefize8.a ->.a href="+cooutpos" class="sreoutpos8.aa , .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.a , .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=buf" class="sref">buf8.a , .a href="+cocopy_de=size" class="srecopy_de=sred8.+code=i" class="sref">i8.a  + 174#5304" id4>L295" class="line" namo4>L3054>33058.a       , .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.a  a  .a href="+cocopy_de=size" class="srecopy_de=sred8.a ;>L296" class="line" namo4>L3064032868.a >L307" class="line" namo4>L3074032678.a         .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=filtered" class="sref">filtered8.a  -= .a href="+cocopy_de=size" class="srecopy_de=sred8.a ;>L298" class="line" namo4>L3084033488.a         .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+co.a  + 17filtered" cl5f">uint8_t-= .a href="+cocopy_de=size" class="srecopy_de=sred8.a ;>L299" class="line" namo4>L3094033198.a         .a href="+comemmoveply" class="srememmovearc8.a (.a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=buf" class="sref">buf8.a , .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=buf" class="sref">buf8.aa , .a href="+cocopy_de=size" class="srecopy_de=sred8.a , .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=size" class="sref">size8.+code=i" class="sref">i8.a  + 174#L310" id4>L310" class="line" namo4>L3104>33118.a }>L311" class="line" namo4>L3114>33118a }>L312" class="line" namo4>L312413342./a>.spa  class="comment">/*./spa  >L313" class="line" namo4>L313413343./a>.spa  class="comment">Tn ted BCJ fil1ng functs ard beimitive in senseata thin y be cesshin >/*./spa  >L314" class="line" namo4>L314413344./a>.spa  class="comment">of dain chunks  * 1-16 f">bs. To hideata Thissue,ata Thng funct dot_re*./spa  >L315" class="line" namo4>L3154132958/a>.spa  class="comment">some f">fering86)../spa  >L316" class="line" namo4>L3164132968/a>.spa  class="comment"> */./spa  >L317" class="line" namo4>L3174>33178ef3.a href="+code=EXTERNARC" class="sref">EXTERNbuf8.enumuct3.a href="+code=retpos" class="srede=rete_t8.a  .a href="+coxz/xz_dec__runbcj" class="sref">xz_dec__runply8.a (struct3.a href="+code=xz_dec_bcj" class="sref">xz_dec_bcj./a> *.a href="+code=s" class="sref">s8.a  >L318" class="line" namo4>L3184133288.a                                   a (struct3.a href="+code=xz_dlzmabe32" class="srede=xz_dlzmabbcj./a> *.a href="+colzmabe32" class="srelzmabbcj..a  >L319" class="line" namo4>L3194132998.a                                   a (struct3.a href="+code=de=buf" class="srede=de=8_t8.a  *.a href="+codarc" class="srefize8.a )>L320" class="line" namo4>L3204233008F) {>L321" class="line" namo4>L32142ef="+code=i" class="sref">i8.a  ize_t" class="sref">size_t8.a  .a href="+coout_dtartpos" class="sreout_dtartred8.a ;>L322" class="line" namo4>L32242line" namon>L277="lib/xz/xz_dec_bcj.4#L323" id4>L323" class="line" namo4>L3234>33238.a      /a>.spa  class="comment">/*./spa  >L324" class="line" namo4>L324423344./a>.spa  class="commenttttttttt">Flush pa #eus1already1n">filtetic3dars in toutput f">fer8 R  ret>/*./spa  >L325" class="line" namo4>L3254232958/a>.spa  class="commenttttttttt">i"codiatelly    weich con't flush everyta ng, or    in tnexmust./spa  >L326" class="line" namo4>L3264232968/a>.spa  class="commenttttttttt">CJ fil1ic3in tchaic3had1already1   rettetf">STREAM_END86)../spa  >L327" class="line" namo4>L3274233378.a .spa  class="commenttttttttt"> */./spa  >L328" class="line" namo4>L3284>33288.a         if (.a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=filtered" class="sref">filtered8.gt;&g0.FF) {>L329" class="line" namo4>L3294>33298.a              id .a href="+code=bflusharc" class="sref">bflushply8.a (.a href="+code=s" class="sref">s8.a , .a href="+codarc" class="srefize8..a ;>L330" class="line" namo4>L3304>33308.a                 if (.a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=filtered" class="sref">filtered8.gt;&g0.a ;>L331" class="line" namo4>L3314333018.a                         return .a href="+cof">OKARC" class="sref">OKred8.a ;>L332" class="line" namo4>L3324>33328.a >L333" class="line" namo4>L3334>33338.a                 if (.a href="+code=s" class="sref">s8.a ->.a href="+coretpos" class="srerete_t8.=_t-= .a href="+cof">STREAM_ENDARC" class="sref">STREAM_ENDize8.a )>L334" class="line" namo4>L3344333248.a                         return .a href="+cof">STREAM_ENDARC" class="sref">STREAM_ENDize8.a ;>L335" class="line" namo4>L3354333058.a      .a }>L336" class="line" namo4>L3364>33368.a >L337" class="line" namo4>L3374373238.a      /a>.spa  class="comment">/*./spa  >L338" class="line" namo4>L3384>33388.a .spa  class="commenttttttttt">I  weihave mor toutput a .ceata n wa th Thcurrommly pa #eus1it>/*./spa  >L339" class="line" namo4>L3394>33398.a .spa  class="commenttttttttt">temp, copy3in tunf">filtetic3dafrom tempers in toutput f">fer>/*./spa  >L340" class="line" namo4>L3404>33408.a .spa  class="commenttttttttt">os atryers f">l in toutput f">fer by xz_o#eus1mor tic3dafrom tn >/*./spa  >L341" class="line" namo4>L3414>3341./a>.spa  class="commenttttttttt">nexm>CJ fil1ic3in tchaic.> * Apply ted BCJ fil1on in tnewtic3d>/*./spa  >L342" class="line" namo4>L3424>3342./a>.spa  class="commenttttttttt">ic3in toutput f">fer8 I  everyta ng cannotuld f">filte, copy3imust./spa  >L343" class="line" namo4>L3434>3343./a>.spa  class="commenttttttttt">to tempeos arewis atn toutput f">fer posiunct accor#eusly86)../spa  >L344" class="line" namo4>L3444>3344./a>.spa  class="commenttttttttt"6)../spa  >L345" class="line" namo4>L3454432958/a>.spa  class="commenttttttttt">E: Thneedters ld always run waen temp8f">s22) =ers a ndle as pecial6)../spa  >L346" class="line" namo4>L3464432968/a>.spa  class="commenttttttttt">casedwaereatn toutput f">fer  Thng>l as atn tnexm>CJ fil1haThno6)../spa  >L347" class="line" namo4>L3474433378.a .spa  class="commenttttttttt" mor toutput s=" ng eut haTn't    rettetf">STREAM_END yet86)../spa  >L348" class="line" namo4>L3484433388.a .spa  class="commenttttttttt"> */./spa  >L349" class="line" namo4>L3494433298.a         if (.a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+co.a  + 17filtered" cl5f">uintlt;&l , .a href="+codarc" class="srefize8.a ->.a href="+coout_de=size" class="sreout_de=s>uint8a , .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8100 f (.a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+co.a  + 17filtered" cl5f">uint2) =.FF) {>L350" class="line" namo4>L3504533308.a              a  .a href="+coout_dtartpos" class="sreout_dtartred8.a  = .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.a ;>s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=buf" class="sref">buf8.a , .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=size" class="sref">size8.+code=i" class="sref">i8.a  + 174ilte 4" t4; .a 2sc#L276" idn>L276"4class4533228.a                 .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.a  a  .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=size" class="sref">size8+code=i" class="sref">i8.a  + 174iL343" id4>L253" class="line" namo4>L253453263./a>>L254" class="line" namo4>L2544533248.a              f (.a href="+code=s" class="sref">s8.a ->.a href="+coretpos" class="srerete_t8.=uct3.a href="+code=xz_dlzmab_runbcj" class="sref">xz_dlzmab_runarc8.a (.a href="+colzmabe32" class="srelzmabbcj..a , .a href="+codarc" class="srefize8..a ;>L255" class="line" namo4>L2554>32558.a      .a         if (.a href="+code=s" class="sref">s8.a ->.a href="+coretpos" class="srerete_t8.!_t-= .a href="+cof">STREAM_ENDARC" class="sref">STREAM_ENDize8a ;>L256" class="line" namo4>L2564>32568.a                                 && (.a href="+code=s" class="sref">s8.a ->.a href="+coretpos" class="srerete_t8.!_t-= .a href="+cof">OKARC" class="sref">OKred8100 f (.a href="+code=s" class="sref">s8.a ->.a href="+cod usle_callize" class="sref"usle_callize8..a )>L257" class="line" namo4>L2574>32578.a                         return .a href="+code=s" class="sref">s8.a ->.a href="+coretpos" class="srerete_t8.a ;>L258" class="line" namo4>L258453178.a ;>L259" class="line" namo4>L2594533298.a              id .a href="+code=bcj_apply" class="sref">bcj_apply8.a (.a href="+code=s" class="sref">s8.a , .a href="+codarc" class="srefize8.a ->.a href="+cooutpos" class="sreoutpos8,    &aa  .a href="+coout_dtartpos" class="sreout_dtartred8.a , .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.+code=i" class="sref">i8.a  + 174#L260" id4>L260" class="line" namo4>L2604633218.a >L261" class="line" namo4>L2614633018.a              aa>.spa  class="comment">/*./spa  >L262" class="line" namo4>L262463342./a>.spa  class="commenttttttttttttttttt* A*pos excepunct,    in tnexm>CJ fil1   rettetf">STREAM_END,>/*./spa  >L263" class="line" namo4>L263463343./a>.spa  class="commenttttttttttttttttt* weicat doata thioo, f"uceatn tl leafew f">bsata thremain>/*./spa  >L264" class="line" namo4>L264463344./a>.spa  class="commenttttttttttttttttt* unf">filtetard meaement remain unf">filte86)../spa  >L265" class="line" namo4>L2654632958/a>.spa  class="commenttttttttttttttttt*> */./spa  >L266" class="line" namo4>L2664632568.a                 if (.a href="+code=s" class="sref">s8.a ->.a href="+coretpos" class="srerete_t8.=_t-= .a href="+cof">STREAM_ENDARC" class="sref">STREAM_ENDize8.a )>L267" class="line" namo4>L2674632578.a                         return .a href="+cof">STREAM_ENDARC" class="sref">STREAM_ENDize8.a ;>L268" class="line" namo4>L268463178.a ;>L269" class="line" namo4>L2694633298.a              id .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+co.a  + 17filtered" cl5f">uint2    .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.8a , .a href="+coout_dtartpos" class="sreout_dtartred8.a ;>L270" class="line" namo4>L2704733308.a              a  .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.8  a  .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=size" class="sref">size8+code=i" class="sref">i8.a  + 174#L271" id4>L271" class="line" namo4>L2714>32718.a              a  .a href="+comemcppply" class="srememcpparc8.a (.a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=buf" class="sref">buf8.a , .a href="+codarc" class="srefize8.a ->.a href="+cooutpos" class="sreoutpos8.aa , .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.a , .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=size" class="sref">size8.+code=i" class="sref">i8.a  + 174#L272" id4>L272" class="line" namo4>L2724733328.a >L273" class="line" namo4>L2734733338.a              aa>.spa  class="comment">/*./spa  >L274" class="line" namo4>L274473344./a>.spa  class="commenttttttttttttttttt* I  in rd waTn't enough input rs in tnexm>CJ fil1rs f">l>/*./spa  >L275" class="line" namo4>L2754732958/a>.spa  class="commenttttttttttttttttt*atn toutput f">fer withtunf">filtetic3d, in rd'Thnooid po>/*./spa  >L276" class="line" namo4>L2764732968/a>.spa  class="commenttttttttttttttttt*atoatryexz_o#eus1mor tic3dato temp86)../spa  >L277" class="line" namo4>L2774733378.a .spa  class="commenttttttttttttttttt*> */./spa  >L278" class="line" namo4>L2784733288.a                 if (.a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.a id .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+co.a  + 17filtered" cl5f">uintlt;&l , .a href="+codarc" class="srefize8.a ->.a href="+coout_de=size" class="sreout_de=s>uin.a )>L279" class="line" namo4>L2794732998.a                         return .a href="+cof">OKARC" class="sref">OKred8.a ;>L280" class="line" namo4>L2804832608.a      .a }>L281" class="line" namo4>L2814833118a }>L282" class="line" namo4>L2824832728.a      aa>.spa  class="comment">/*./spa  >L283" class="line" namo4>L283483343./a>.spa  class="commenttttttttt">Weihave unf">filtetic3dain temp8 I  in toutput f">fer  Tn't fu>l>/*./spa  >L284" class="line" namo4>L284483344./a>.spa  class="commenttttttttt">yet,atryers f">l in ttempef">fer by xz_o#eus1mor tic3dafrom tn >/*./spa  >L285" class="line" namo4>L2854832958/a>.spa  class="commenttttttttt">nexm>CJ fil.> * Apply ted BCJ fil1on iemp8 Taen weihopefu>lyicat>/*./spa  >L286" class="line" namo4>L2864832968/a>.spa  class="commenttttttttt">CJ l in tactualtoutput f">fer by copyeus1n">filtetic3dafrom temp86)../spa  >L287" class="line" namo4>L2874833378.a .spa  class="commenttttttttt" A mix  * n">filtetos aunf">filtetic3damay ld leftain temp; it wi>l>/*./spa  >L288" class="line" namo4>L2884833388.a .spa  class="commenttttttttt">ld taken card on in tnexm>call rs in Thng funct86)../spa  >L289" class="line" namo4>L2894833398.a .spa  class="commenttttttttt"> */./spa  >L290" class="line" namo4>L2904>32908.a         if (.a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.lt;&l , .a href="+codarc" class="srefize8.a ->.a href="+coout_de=size" class="sreout_de=s>uin.FF) {>L291" class="line" namo4>L2914933018.a              aa>.spa  class="comment" Make b.a -&out{,_de=,_de=s} temporarily pd poers t.a -&iemp8 "> */./spa  >L292" class="line" namo4>L2924933228.a                 .a href="+code=s" class="sref">s8.a ->.a href="+cooutpos" class="sreoutpos8.2    .a href="+codarc" class="srefize8.a ->.a href="+cooutpos" class="sreoutpos8.a ;>L293" class="line" namo4>L2934933338.a              a  .a href="+code=s" class="sref">s8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.a  = .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.a ;>L294" class="line" namo4>L2944933248.a              f (.a href="+code=s" class="sref">s8.a ->.a href="+coout_de=size" class="sreout_de=s>uinta  = .a href="+codarc" class="srefize8.a ->.a href="+coout_de=size" class="sreout_de=s>uin.a ;>L295" class="line" namo4>L2954933258.a               , .a href="+codarc" class="srefize8.a ->.a href="+cooutpos" class="sreoutpos8.  a  .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=buf" class="sref">buf8.a ;>L296" class="line" namo4>L2964932768.a              a  .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.  a  .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=size" class="sref">size8+code=i" class="sref">i8.a  + 174#L287" id4>L297" class="line" namo4>L2974932578.a               = .a href="+codarc" class="srefize8.a ->.a href="+coout_de=size" class="sreout_de=s>uin.  de=sof.a (.a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=buf" class="sref">buf8.+code=i" class="sref">i8.a  + 174#L288" id4>L298" class="line" namo4>L298493178.a ;>L299" class="line" namo4>L2994933298.a              id .a href="+code=s" class="sref">s8.a ->.a href="+coretpos" class="srerete_t8.=uct3.a href="+code=xz_dlzmab_runbcj" class="sref">xz_dlzmab_runarc8.a (.a href="+colzmabe32" class="srelzmabbcj..a , .a href="+codarc" class="srefize8..a ;>L300" class="line" namo5>L3005033218.a >L301" class="line" namo5>L3015032718.a              a  .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+co.a  + 17filtered" cl5f">uint2    .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.a ;>L292" class="line" namo5>L3025033228.a                 .a href="+codarc" class="srefize8.a ->.a href="+cooutpos" class="sreoutpos8.  a  .a href="+code=s" class="sref">s8.a ->.a href="+cooutpos" class="sreoutpos8.a ;>L303" class="line" namo5>L3035033338.a              a  .a href="+codarc" class="srefize8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.  a  .a href="+code=s" class="sref">s8.a ->.a href="+coout_de=pos" class="sreout_de=ize8.a ;>L294" class="line" namo5>L3045033248.a              f (.a href="+codarc" class="srefize8.a ->.a href="+coout_de=size" class="sreout_de=s>uin.  f (.a href="+code=s" class="sref">s8.a ->.a href="+coout_de=size" class="sreout_de=s>uin.a ;>L295" class="line" namo5>L3055>33058a ;>L296" class="line" namo5>L3065032568.a                 if (.a href="+code=s" class="sref">s8.a ->.a href="+coretpos" class="srerete_t8.!_t-= .a href="+cof">OKARC" class="sref">OKred81   &&amf (.a href="+code=s" class="sref">s8.a ->.a href="+coretpos" class="srerete_t8.!_t-= .a href="+cof">STREAM_ENDARC" class="sref">STREAM_ENDize8.a )>L307" class="line" namo5>L3075032578.a                         return .a href="+code=s" class="sref">s8.a ->.a href="+coretpos" class="srerete_t8.a ;>L298" class="line" namo5>L308503178.a ;>L299" class="line" namo5>L3095033298.a              id .a href="+code=bcj_apply" class="sref">bcj_apply8.a (.a href="+code=s" class="sref">s8.a , .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=buf" class="sref">buf8.a   &aa  .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=filtered" class="sref">filtered8.a , .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=size" class="sref">size8.+code=i" class="sref">i8.a  + 175#L310" id5>L310" class="line" namo5>L3105133218.a >L311" class="line" namo5>L3115133018.a              aa>.spa  class="comment">/*./spa  >L312" class="line" namo5>L312513342./a>.spa  class="commen                 * I  in tnexm>CJ fil1   rettetf">STREAM_END, weimarkata t>/*./spa  >L313" class="line" namo5>L313513343./a>.spa  class="comment                * everyta ng  Thn">filte, f"uceatn tl leaunf">filtetf">bs>/*./spa  >L314" class="line" namo5>L314513344./a>.spa  class="comment                * o  in tstreamtard meaement ld leftaaThis86)../spa  >L315" class="line" namo5>L3155132958/a>.spa  class="comment                *> */./spa  >L316" class="line" namo5>L3165132568.a                 if (.a href="+code=s" class="sref">s8.a ->.a href="+coretpos" class="srerete_t8.=_t-= .a href="+cof">STREAM_ENDARC" class="sref">STREAM_ENDize8.a )>L317" class="line" namo5>L3175132578.a                      a  .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=filtered" class="sref">filtered8.  a  .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=size" class="sref">size8+code=i" class="sref">i8.a  + 175#8307" id5>L318" class="line" namo5>L318513178.a ;>L319" class="line" namo5>L3195132998.a              id .a href="+code=bflusharc" class="sref">bflushply8.a (.a href="+code=s" class="sref">s8.a , .a href="+codarc" class="srefize8..a ;>L320" class="line" namo5>L3205233308.a                 if (.a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered" ctemp">s8.a  .a href="+code=filtered" class="sref">filtered8.gt;&g0.a ;>L321" class="line" namo5>L3215233018.a                         return .a href="+cof">OKARC" class="sref">OKred8.a ;>L322" class="line" namo5>L3225233228.a      .a }>L323" class="line" namo5>L323523263./a>>L324" class="line" namo5>L3245233248.a         return .a href="+code=s" class="sref">s8.a ->.a href="+coretpos" class="srerete_t8.a ;>L325" class="line" namo5>L3255232958.a }>L326" class="line" namo5>L3265233368.a >L327" class="line" namo5>L327u1322"3 92fize8..a ;>L320" class="line" namo5>8o5>t ->.a href="+ine" namo5>8o5>t .a              id .boo(.a href="+code=boo(0" id class="sref">s8.d8100 f (.a href="+code=s" class="sref">b/xz/xz_dec_bcj.5#L316" id5>L326"+code=sizmmenttttttttt"> */./spa 5>filtered8.gt;&g0.FF) 5>xz_dec__runply8.a (struct3.a href="+code=xz_dec_bcjed" ctemp">s8.a  .km="so+code=filtered" km="so+.a   efize8.8.a (struct3.a href="+code=xz_dec_bcj)rc" class="sref">GFP_K" nELef="+code=xz_deGFP_K" nELhref="+code=s" class="sref">s8.a , .a href="+co5arc" class="srefize8..a 5>s8NULLef="+code=xz_deNULLref">b/xz/xz_dec_bcj.5#L316" id5>L326" class="5ref">filtered8.gt;&g0.a 5>L324" class="line" namo5>L3245233248.a     8.d8100 f (.a href="+code=s" class="sref"ed" ctemp">s8.a  .a.d8100 f (.a href="+code=s" class="sref""+code=s" class="sref">s8.a , .a hof">OKARC" class="sref">OKred8.a 5>L335" class="5ine" namo4>L3324>33328.a5>L324" class="line" namo"+code=s" class="sref">s8.a , .a h class="l"sref">STREAM_ENDize8.a 5>L325"RC" class5"sref">STREAM_ENDize8.a 5>L295line" nam54>L3354333058.a      .a 5>L327" class="line" namo5>L3174>33178ef3.a href="+code=EXTERNARC" class="sref">EXTERNbuf8.enumuct3.a hrefescode=EXTERNARC" clast3.a hrefesco.a   e static3void .a href="+code=bflusharc" class="sref">bflushply8.a (struct3.a href="+code=xz_dec_bcj" .a (struct3.a huint8>L321" class="linuint8>Lsref">EXTERNbuf8.enuit;.a href="+coteidref">b/xz/xz_dec_bcj.5#L316" id5>L326" class="line" namo4>L3364>33368.a5>.spa 5class="comment">/*./spa 5>srefize8.a ->.a href="+coout_d5th Thcurr5mmly pa #eus1it>/*./spa 5>LXeihopefu>ly class="ld3>LXei="lib/xz/xz_dec_bcj.5#5303" id5>L295tempers i5 toutput f">fer>/*./spa 5>L280Xeihopefu>ly classL280Xei="li.c#L284" id3>L284" class="line" 5_o#eus1mo5 tic3dafrom tn >/*./spa 5>i8.a  + 17f#L283" id3>L283" cla5d BCJ fil5on in tnewtic3d>/*./spa 5>LPOWERP class="line" namo3>L27POWERP ="lib/xz/xz_dec_bcj.5#5303" id5>L295t class="5>filte, copy3imust./spa 5>L280POWERP class="line" naL280POWERP ="li.c#L284" id3>L284" class="line" 5_ class="lct accor#eusly86)../spa 5>i8.a  + 17f#L283" id3>L283" cla5dC" class5ommenttttttttt"6)../spa 5>LIA>bsata threne" namo3>L27IA>b="lib/xz/xz_dec_bcj.5#5303" id5>L295tine" nam5 ndle as pecial6)../spa 5>L280IA>bsata threne" naL280IA>b="li.c#L284" id3>L284" class="line" 5_ class="lm>CJ fil1haThno6)../spa 5>i8.a  + 17f#L283" id3>L283" cla5d/a>.spa 5STREAM_END yet86)../spa 5>LARMsata threne" namo3>L27ARM="lib/xz/xz_dec_bcj.5#5303" id5>L295th Thcurr5mmenttttttttt"> */./spa 5>L280ARMsata threne" naL280ARM="li.c#L284" id3>L284" class="line" 5 + 17filt5red" cl5f">uint2) =.FF) 5>i8.a  + 17f#L283" id3>L283" cla5t_de=pos"5class="sreout_de=ize8.a 5>LARMTHUMBsata threne" namo3>L27ARMTHUMB="lib/xz/xz_dec_bcj.5#5303" id5>L295+code=siz5" class="sref">size8.+co5e=i" 5lass="sref">i8dec_bcj.c#L280" id3>L280ARMTHUMBsata threne" naL280ARMTHUMB="li.c#L284" id3>L284" class="line" 5  class="5e" class="sref">size8+co5e=i" 55ass="sref">i8.a  + 17f#L283" id3>L283" cla5" class="5ine" namo4>L253453263./a5>LSPAR class="line" namo3>L27SPAR ="lib/xz/xz_dec_bcj.5#5303" id5>L295+C" class5arc" class="srefize8..a 5>L280SPAR class="line" naL280SPAR ="li.c#L284" id3>L284" class="line" 5 ine" nam5="sref">STREAM_ENDize8a 5>i8.a  + 17f#L283" id3>L283" cla5" class="l="sref"usle_callize8..a 5>L287" class="line" namo3>5f="+coret5os" class="srerete_t8.a 5>L255" class="5ine" namo4>L258453178.a 5>L284" class="line" 5_de=pos" 5lass="sreout_de=ize8.+co5e=i" 56f="lib/xz/xz_dec_bcj.4#L291" id4>L291" class="Unsupported F312513IDs="line" namo5>L3155132958/a>.spa  class="" class="5ine" namo4>L2604633218.a5>L3215233018.a    PTIONS_ERRORnamo"+code=s" class="sref">s8.a , .a  aa>.spa 5class="comment">/*./spa 5>L322" class="l1   rett5tf">STREAM_END,>/*./spa 5>L323 leafew f5>bsata thremain>/*./spa 5>i8.a  + 174#L304"lass="line" namo5>L3205233308.a           yp ->.a href="+ yp ref"ed" ctemp">s8.a  .it;.a href="+coteidref""+code=s" class="sref">s8.a , .a  C" class5ain unf">filte86)../spa 5>i8.a  + 174#5304"9" class="line" namo4>L2994933298.a              id .a href="+code=s" class="sref">s namo5>L3215233018.a                         return .a href="+commenttt5ttttttttttttt*> */./spa 5>L2994933298.a      8.  a  .a href="+cc" class="0                return .a href="+c class="l"sref">STREAM_ENDize8.a 5>L307" class="line" namo4>L3074032678x86_prev_maskusharc" class="s86_prev_maskclass="0                return .a href="+c="+coret5"sref">STREAM_ENDize8.a 5>L298" class="line" namo4>L3084033488.a         .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17filtered"0                return .a href="+c class="5ine" namo4>L268463178.a 5>L3015032718.a              a  .a href="+code=s" class="sref">s8.a ->.a href="+cotemp+ 17f0                return .a href="+artpos" c5ass="sreout_dtartred8.a 5>i8.a  + 175#L310" id5>L310"+code=si5e" class="sref">size8+co5e=i" 5lass="sref">i8id5>L321" class="line" namo5>L3215233018.a                         return .a href="++code=siz5" class="sref">size8.+co5e=i" 5lass="dec_bcj.5#L322" id5>L322" class="" class="5ine" namo4>L2724733328.a5>L323 aa>.spa 5class="comment">/*./spa 5>i8.a  + 17f#L283" id3>L283" cla5s in tnex5>CJ fil1rs f">l>/*./spa 5>
d4>Loriginal LXR softw1451bo4>L288.a  + 17http://sourceforge.net/projects/lx7">LXR 291"unity_bcj" .spa experi" clal versass=bo48.a  + 17map+ o:lx7@f">ux.no">lx7@f">ux.node=s"
b/div>
lx7.f">ux.no kindly host 88.a + 17http://www.7fipill-f">pro.no">Rfipill L">pro AS_bcj" provid/a>.f L">ux 29nsultne" nnd operae" namservices/a>.spa1995. b/div>