<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>73182</bug_id>
          
          <creation_ts>2011-11-27 19:19:15 -0800</creation_ts>
          <short_desc>Need SSE optimization for functions vfmul and vadd</short_desc>
          <delta_ts>2011-12-02 18:44:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xingnan Wang">xingnan.wang</reporter>
          <assigned_to name="Xingnan Wang">xingnan.wang</assigned_to>
          <cc>crogers</cc>
    
    <cc>james.wei</cc>
    
    <cc>kbr</cc>
    
    <cc>rtoy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>509537</commentid>
    <comment_count>0</comment_count>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2011-11-27 19:19:15 -0800</bug_when>
    <thetext>The VectorMath::vfmul() and VectorMath::vadd() are widely used in Web Audio process of which performance will enhance by the SSE optimization for the two function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509557</commentid>
    <comment_count>1</comment_count>
      <attachid>116695</attachid>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2011-11-27 21:22:45 -0800</bug_when>
    <thetext>Created attachment 116695
Implement the SSE optimization for vsmul and vadd</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509559</commentid>
    <comment_count>2</comment_count>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2011-11-27 21:34:06 -0800</bug_when>
    <thetext>As test from our side we get about 2x improvement on vadd and 2.5x on vsmul, also the performance of processing in ConvolverNode can be 10%~15% increasing.

We test in 
Intel(R) Core(TM) i7 CPU 870  @ 2.93GHz
Ubuntu 11.10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510063</commentid>
    <comment_count>3</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2011-11-28 12:15:15 -0800</bug_when>
    <thetext>Thanks for your patch.  This looks good, except a few items.

First, there are a few style issues that need to be fixed.  (I can fix those.)

Second, in vsmul, you have an if statement inside while loop.  Can the if statements be lifted out so you get something like:

 if (((size_t)destP &amp; 0x0F) != 0) {
    while (group--) {
      dest = _mm_mul_ps(*pSource, scale_);
      _mm_storeu_ps(destP, dest);
      sourceP += 4;
      destP += 4;
    }
  } else {
    while (group--) {
      pDest = reinterpret_cast&lt;__m128*&gt;(destP);
      *pDest = _mm_mul_ps(*pSource, scale_);
      sourceP += 4;
      destP += 4;
    }
  }

Same comment about the while/if in vadd, although that&apos;s a bit more complicated since source2P and destP may or may not be aligned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510301</commentid>
    <comment_count>4</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2011-11-28 16:06:03 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Thanks for your patch.  This looks good, except a few items.
&gt; 
&gt; First, there are a few style issues that need to be fixed.  (I can fix those.)
&gt; 
&gt; Second, in vsmul, you have an if statement inside while loop.  Can the if statements be lifted out so you get something like:
&gt; 
&gt;  if (((size_t)destP &amp; 0x0F) != 0) {
&gt;     while (group--) {
&gt;       dest = _mm_mul_ps(*pSource, scale_);
&gt;       _mm_storeu_ps(destP, dest);
&gt;       sourceP += 4;
&gt;       destP += 4;
&gt;     }
&gt;   } else {
&gt;     while (group--) {
&gt;       pDest = reinterpret_cast&lt;__m128*&gt;(destP);
&gt;       *pDest = _mm_mul_ps(*pSource, scale_);
&gt;       sourceP += 4;
&gt;       destP += 4;
&gt;     }
&gt;   }
&gt; 
&gt; Same comment about the while/if in vadd, although that&apos;s a bit more complicated since source2P and destP may or may not be aligned.

Raymond, thanks for your comment. 

For the if statement inside while loop, we have thought of it and tested the performance of lifting the if statement out and found the performance difference is minor and the source code is much more complicated. So we decided to leave it be. 

Do you think it is necessary to lift it out? thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510332</commentid>
    <comment_count>5</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2011-11-28 16:43:19 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Thanks for your patch.  This looks good, except a few items.
&gt; &gt; 
&gt; &gt; First, there are a few style issues that need to be fixed.  (I can fix those.)
&gt; &gt; 
&gt; &gt; Second, in vsmul, you have an if statement inside while loop.  Can the if statements be lifted out so you get something like:
&gt; &gt; 
&gt; &gt;  if (((size_t)destP &amp; 0x0F) != 0) {
&gt; &gt;     while (group--) {
&gt; &gt;       dest = _mm_mul_ps(*pSource, scale_);
&gt; &gt;       _mm_storeu_ps(destP, dest);
&gt; &gt;       sourceP += 4;
&gt; &gt;       destP += 4;
&gt; &gt;     }
&gt; &gt;   } else {
&gt; &gt;     while (group--) {
&gt; &gt;       pDest = reinterpret_cast&lt;__m128*&gt;(destP);
&gt; &gt;       *pDest = _mm_mul_ps(*pSource, scale_);
&gt; &gt;       sourceP += 4;
&gt; &gt;       destP += 4;
&gt; &gt;     }
&gt; &gt;   }
&gt; &gt; 
&gt; &gt; Same comment about the while/if in vadd, although that&apos;s a bit more complicated since source2P and destP may or may not be aligned.
&gt; 
&gt; Raymond, thanks for your comment. 
&gt; 
&gt; For the if statement inside while loop, we have thought of it and tested the performance of lifting the if statement out and found the performance difference is minor and the source code is much more complicated. So we decided to leave it be. 
&gt; 
&gt; Do you think it is necessary to lift it out? thanks

How much difference did it make?  I don&apos;t think it&apos;s necessary to lift it out if the difference is minor.  A comment in the code saying that lifting it out doesn&apos;t help would be very nice, though, so that no one else will wonder if it helps or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510336</commentid>
    <comment_count>6</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2011-11-28 16:47:05 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; Thanks for your patch.  This looks good, except a few items.
&gt; &gt; &gt; 
&gt; &gt; &gt; First, there are a few style issues that need to be fixed.  (I can fix those.)
&gt; &gt; &gt; 
&gt; &gt; &gt; Second, in vsmul, you have an if statement inside while loop.  Can the if statements be lifted out so you get something like:
&gt; &gt; &gt; 
&gt; &gt; &gt;  if (((size_t)destP &amp; 0x0F) != 0) {
&gt; &gt; &gt;     while (group--) {
&gt; &gt; &gt;       dest = _mm_mul_ps(*pSource, scale_);
&gt; &gt; &gt;       _mm_storeu_ps(destP, dest);
&gt; &gt; &gt;       sourceP += 4;
&gt; &gt; &gt;       destP += 4;
&gt; &gt; &gt;     }
&gt; &gt; &gt;   } else {
&gt; &gt; &gt;     while (group--) {
&gt; &gt; &gt;       pDest = reinterpret_cast&lt;__m128*&gt;(destP);
&gt; &gt; &gt;       *pDest = _mm_mul_ps(*pSource, scale_);
&gt; &gt; &gt;       sourceP += 4;
&gt; &gt; &gt;       destP += 4;
&gt; &gt; &gt;     }
&gt; &gt; &gt;   }
&gt; &gt; &gt; 
&gt; &gt; &gt; Same comment about the while/if in vadd, although that&apos;s a bit more complicated since source2P and destP may or may not be aligned.
&gt; &gt; 
&gt; &gt; Raymond, thanks for your comment. 
&gt; &gt; 
&gt; &gt; For the if statement inside while loop, we have thought of it and tested the performance of lifting the if statement out and found the performance difference is minor and the source code is much more complicated. So we decided to leave it be. 
&gt; &gt; 
&gt; &gt; Do you think it is necessary to lift it out? thanks
&gt; 
&gt; How much difference did it make?  I don&apos;t think it&apos;s necessary to lift it out if the difference is minor.  A comment in the code saying that lifting it out doesn&apos;t help would be very nice, though, so that no one else will wonder if it helps or not.

good suggestion. we will test it again and add a comment in the code with the test result. 

thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510563</commentid>
    <comment_count>7</comment_count>
      <attachid>116909</attachid>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2011-11-29 00:29:30 -0800</bug_when>
    <thetext>Created attachment 116909
Update the patch (Implement the SSE optimization for vsmul and vadd)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510565</commentid>
    <comment_count>8</comment_count>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2011-11-29 00:37:25 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=116909) [details]
&gt; Update the patch (Implement the SSE optimization for vsmul and vadd)

Hi Raymond,
    We tested again by moving the if statement out of the loop in vadd and vsmul then we got about 10%~20% improvement in vadd compared with no lifting it outside, but the vsmul`s performance increased less than 1%, so we leave the if inside in vsmul. 

    By the way could you point out the style issues in our code, that should be very helpful for us, thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510846</commentid>
    <comment_count>9</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2011-11-29 09:15:12 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Created an attachment (id=116909) [details] [details]
&gt; &gt; Update the patch (Implement the SSE optimization for vsmul and vadd)
&gt; 
&gt; Hi Raymond,
&gt;     We tested again by moving the if statement out of the loop in vadd and vsmul then we got about 10%~20% improvement in vadd compared with no lifting it outside, but the vsmul`s performance increased less than 1%, so we leave the if inside in vsmul. 
&gt; 
&gt;     By the way could you point out the style issues in our code, that should be very helpful for us, thank you.

What exactly do you mean by 10-20% improvement?  Does that mean that if the original non-SSE code took 1 sec, the first SSE code now takes .7 sec (you said 30% improvement previously), and now the new SSE code takes .6 sec (10 percentage points more) or now takes .63 sec (.7 sec - 10%)?  Just want to know what it means.  I agree with you that vsmul should be left as is and vadd should lift the code out.

The style guide is here:  http://www.webkit.org/coding/coding-style.html, if you haven&apos;t seen it.  The easiest way to see the style issues is to run Tools/Scripts/check-webkit-style while in the third_party/WebKit directory.  If that doesn&apos;t work, I&apos;ll manually go and point out the issues in the review.

Note that I do not have commit privileges, so the code will need to be reviewed again by someone who does.

But thanks for doing the test and updating the code!  It&apos;s a nice improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510872</commentid>
    <comment_count>10</comment_count>
      <attachid>116909</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-29 09:53:07 -0800</bug_when>
    <thetext>Comment on attachment 116909
Update the patch (Implement the SSE optimization for vsmul and vadd)

View in context: https://bugs.webkit.org/attachment.cgi?id=116909&amp;action=review

&gt; Source/WebCore/platform/audio/VectorMath.cpp:76
&gt; +        // If the sourceP address does not 16-byte align, the first several frames(at most three) should be processed seperately.

Missing space before (.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:77
&gt; +        while ((((size_t)sourceP &amp; 0x0F) != 0) &amp;&amp; n) {

Please use static_cast instead of C-style cast.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:87
&gt; +        __m128 *pSource, *pDest;

We prefer one declaration per line and the * goes next to the type.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:91
&gt; +            pSource = reinterpret_cast&lt;__m128*&gt;((float*)sourceP);

Please use static_cast instead of C-style cast.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:93
&gt; +            // There is less than 1% performance enhancement when pulling the if statement out of the loop, so leave it here.

It is not clear why you wouldn&apos;t want the 1% performance gain here.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:94
&gt; +            if (((size_t)destP &amp; 0x0F) != 0) {

Please use static_cast instead of C-style cast.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:136
&gt; +        while ((((size_t)source1P &amp; 0x0F) != 0) &amp;&amp; n) {

Please use static_cast instead of C-style cast.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:147
&gt; +        __m128 * pSource1, *pSource2, *pDest;
&gt; +        __m128 source2, dest;

We prefer one declaration per line and the * goes next to the type.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:150
&gt; +        bool source2Aligned = !((size_t)source2P &amp; 0x0F);
&gt; +        bool destAligned = !((size_t)destP &amp; 0x0F);

Please use static_cast instead of C-style cast.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:155
&gt; +                pSource1 = reinterpret_cast&lt;__m128*&gt;((float*)source1P);
&gt; +                pSource2 = reinterpret_cast&lt;__m128*&gt;((float*)source2P);

Please use static_cast instead of C-style cast.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:167
&gt; +                pSource1 = reinterpret_cast&lt;__m128*&gt;((float*)source1P);
&gt; +                pSource2 = reinterpret_cast&lt;__m128*&gt;((float*)source2P);

Please use static_cast instead of C-style cast.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:178
&gt; +                pSource1 = reinterpret_cast&lt;__m128*&gt;((float*)source1P);

Please use static_cast instead of C-style cast.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:188
&gt; +        } else if (!source2Aligned &amp;&amp; !destAligned) // both source2 and dest not aligned 
&gt; +        {

{ should go on the previous line.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:191
&gt; +                source2 = _mm_loadu_ps(source2P);

Please use static_cast instead of C-style cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511235</commentid>
    <comment_count>11</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2011-11-29 17:12:53 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; Created an attachment (id=116909) [details] [details] [details]
&gt; &gt; &gt; Update the patch (Implement the SSE optimization for vsmul and vadd)
&gt; &gt; 
&gt; &gt; Hi Raymond,
&gt; &gt;     We tested again by moving the if statement out of the loop in vadd and vsmul then we got about 10%~20% improvement in vadd compared with no lifting it outside, but the vsmul`s performance increased less than 1%, so we leave the if inside in vsmul. 
&gt; &gt; 
&gt; &gt;     By the way could you point out the style issues in our code, that should be very helpful for us, thank you.
&gt; 
&gt; What exactly do you mean by 10-20% improvement?  Does that mean that if the original non-SSE code took 1 sec, the first SSE code now takes .7 sec (you said 30% improvement previously), and now the new SSE code takes .6 sec (10 percentage points more) or now takes .63 sec (.7 sec - 10%)?  Just want to know what it means.  I agree with you that vsmul should be left as is and vadd should lift the code out.
&gt; 
&gt; The style guide is here:  http://www.webkit.org/coding/coding-style.html, if you haven&apos;t seen it.  The easiest way to see the style issues is to run Tools/Scripts/check-webkit-style while in the third_party/WebKit directory.  If that doesn&apos;t work, I&apos;ll manually go and point out the issues in the review.
&gt; 
&gt; Note that I do not have commit privileges, so the code will need to be reviewed again by someone who does.
&gt; 
&gt; But thanks for doing the test and updating the code!  It&apos;s a nice improvement.

thanks for the information, we will run the script and update the patch again to fix the style issues. 

for the performance detail, for example, if the time for non-SSE code vadd and vsmul are both 100, then the time for first SSE version are 50 and 40. And the time for second version SSE are 44 and 39.8 or so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511251</commentid>
    <comment_count>12</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2011-11-29 17:35:01 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 116909 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116909&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:76
&gt; &gt; +        // If the sourceP address does not 16-byte align, the first several frames(at most three) should be processed seperately.
&gt; 
&gt; Missing space before (.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:77
&gt; &gt; +        while ((((size_t)sourceP &amp; 0x0F) != 0) &amp;&amp; n) {
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:87
&gt; &gt; +        __m128 *pSource, *pDest;
&gt; 
&gt; We prefer one declaration per line and the * goes next to the type.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:91
&gt; &gt; +            pSource = reinterpret_cast&lt;__m128*&gt;((float*)sourceP);
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:93
&gt; &gt; +            // There is less than 1% performance enhancement when pulling the if statement out of the loop, so leave it here.
&gt; 
&gt; It is not clear why you wouldn&apos;t want the 1% performance gain here.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:94
&gt; &gt; +            if (((size_t)destP &amp; 0x0F) != 0) {
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:136
&gt; &gt; +        while ((((size_t)source1P &amp; 0x0F) != 0) &amp;&amp; n) {
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:147
&gt; &gt; +        __m128 * pSource1, *pSource2, *pDest;
&gt; &gt; +        __m128 source2, dest;
&gt; 
&gt; We prefer one declaration per line and the * goes next to the type.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:150
&gt; &gt; +        bool source2Aligned = !((size_t)source2P &amp; 0x0F);
&gt; &gt; +        bool destAligned = !((size_t)destP &amp; 0x0F);
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:155
&gt; &gt; +                pSource1 = reinterpret_cast&lt;__m128*&gt;((float*)source1P);
&gt; &gt; +                pSource2 = reinterpret_cast&lt;__m128*&gt;((float*)source2P);
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:167
&gt; &gt; +                pSource1 = reinterpret_cast&lt;__m128*&gt;((float*)source1P);
&gt; &gt; +                pSource2 = reinterpret_cast&lt;__m128*&gt;((float*)source2P);
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:178
&gt; &gt; +                pSource1 = reinterpret_cast&lt;__m128*&gt;((float*)source1P);
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:188
&gt; &gt; +        } else if (!source2Aligned &amp;&amp; !destAligned) // both source2 and dest not aligned 
&gt; &gt; +        {
&gt; 
&gt; { should go on the previous line.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:191
&gt; &gt; +                source2 = _mm_loadu_ps(source2P);
&gt; 
&gt; Please use static_cast instead of C-style cast.

thanks for the detailed explanation, we will fix the style issues. thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511396</commentid>
    <comment_count>13</comment_count>
      <attachid>117125</attachid>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2011-11-29 22:21:26 -0800</bug_when>
    <thetext>Created attachment 117125
Update the patch (fix code style issue and pull the if in vsmul out of loop)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511397</commentid>
    <comment_count>14</comment_count>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2011-11-29 22:22:49 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 116909 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116909&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:76
&gt; &gt; +        // If the sourceP address does not 16-byte align, the first several frames(at most three) should be processed seperately.
&gt; 
&gt; Missing space before (.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:77
&gt; &gt; +        while ((((size_t)sourceP &amp; 0x0F) != 0) &amp;&amp; n) {
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:87
&gt; &gt; +        __m128 *pSource, *pDest;
&gt; 
&gt; We prefer one declaration per line and the * goes next to the type.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:91
&gt; &gt; +            pSource = reinterpret_cast&lt;__m128*&gt;((float*)sourceP);
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:93
&gt; &gt; +            // There is less than 1% performance enhancement when pulling the if statement out of the loop, so leave it here.
&gt; 
&gt; It is not clear why you wouldn&apos;t want the 1% performance gain here.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:94
&gt; &gt; +            if (((size_t)destP &amp; 0x0F) != 0) {
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:136
&gt; &gt; +        while ((((size_t)source1P &amp; 0x0F) != 0) &amp;&amp; n) {
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:147
&gt; &gt; +        __m128 * pSource1, *pSource2, *pDest;
&gt; &gt; +        __m128 source2, dest;
&gt; 
&gt; We prefer one declaration per line and the * goes next to the type.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:150
&gt; &gt; +        bool source2Aligned = !((size_t)source2P &amp; 0x0F);
&gt; &gt; +        bool destAligned = !((size_t)destP &amp; 0x0F);
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:155
&gt; &gt; +                pSource1 = reinterpret_cast&lt;__m128*&gt;((float*)source1P);
&gt; &gt; +                pSource2 = reinterpret_cast&lt;__m128*&gt;((float*)source2P);
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:167
&gt; &gt; +                pSource1 = reinterpret_cast&lt;__m128*&gt;((float*)source1P);
&gt; &gt; +                pSource2 = reinterpret_cast&lt;__m128*&gt;((float*)source2P);
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:178
&gt; &gt; +                pSource1 = reinterpret_cast&lt;__m128*&gt;((float*)source1P);
&gt; 
&gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:188
&gt; &gt; +        } else if (!source2Aligned &amp;&amp; !destAligned) // both source2 and dest not aligned 
&gt; &gt; +        {
&gt; 
&gt; { should go on the previous line.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:191
&gt; &gt; +                source2 = _mm_loadu_ps(source2P);
&gt; 
&gt; Please use static_cast instead of C-style cast.

Hi Sam, 
    Thanks to your review and we update the patch by your comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511405</commentid>
    <comment_count>15</comment_count>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2011-11-29 22:43:20 -0800</bug_when>
    <thetext>BTW, I use reinterpret_cast and const_cast not static_cast to instead the C-style cast because the static_cast is not suitable and causes invalid errors.

third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp: In function ‘void WebCore::VectorMath::vsmul(const float*, int, const float*, float*, int, size_t)’:
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:77:36: error: expected ‘(’ before ‘sourceP’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:77:46: error: invalid operands of types ‘const float*’ and ‘int’ to binary ‘operator&amp;’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:77:58: error: expected ‘)’ before ‘{’ token
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:92:68: error: expected ‘(’ before ‘sourceP’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:92:75: error: invalid static_cast from type ‘const float*’ to type ‘float*’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:92:76: error: expected ‘)’ before ‘;’ token
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:95:36: error: expected ‘(’ before ‘destP’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:95:44: error: invalid operands of types ‘float*’ and ‘int’ to binary ‘operator&amp;’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:95:50: error: expected ‘)’ before ‘{’ token
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:86:16: error: unused variable ‘pScale’ [-Werror=unused-variable]
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:88:18: error: unused variable ‘pDest’ [-Werror=unused-variable]
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:89:16: error: unused variable ‘dest’ [-Werror=unused-variable]
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp: In function ‘void WebCore::VectorMath::vadd(const float*, int, const float*, int, float*, int, size_t)’:
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:137:36: error: expected ‘(’ before ‘source1P’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:137:47: error: invalid operands of types ‘const float*’ and ‘int’ to binary ‘operator&amp;’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:137:59: error: expected ‘)’ before ‘{’ token
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:150:52: error: expected ‘(’ before ‘source2P’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:150:63: error: invalid operands of types ‘const float*’ and ‘int’ to binary ‘operator&amp;’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:150:68: error: expected ‘)’ before ‘;’ token
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:151:49: error: expected ‘(’ before ‘destP’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:151:57: error: invalid operands of types ‘float*’ and ‘int’ to binary ‘operator&amp;’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:151:62: error: expected ‘)’ before ‘;’ token
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:155:73: error: expected ‘(’ before ‘source1P’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:155:81: error: invalid static_cast from type ‘const float*’ to type ‘float*’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:155:82: error: expected ‘)’ before ‘;’ token
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:156:73: error: expected ‘(’ before ‘source2P’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:156:81: error: invalid static_cast from type ‘const float*’ to type ‘float*’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:156:82: error: expected ‘)’ before ‘;’ token
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:167:73: error: expected ‘(’ before ‘source1P’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:167:81: error: invalid static_cast from type ‘const float*’ to type ‘float*’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:167:82: error: expected ‘)’ before ‘;’ token
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:168:73: error: expected ‘(’ before ‘source2P’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:168:81: error: invalid static_cast from type ‘const float*’ to type ‘float*’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:168:82: error: expected ‘)’ before ‘;’ token
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:179:73: error: expected ‘(’ before ‘source1P’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:179:81: error: invalid static_cast from type ‘const float*’ to type ‘float*’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:179:82: error: expected ‘)’ before ‘;’ token
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:190:73: error: expected ‘(’ before ‘source1P’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:190:81: error: invalid static_cast from type ‘const float*’ to type ‘float*’
third_party/WebKit/Source/WebCore/platform/audio/VectorMath.cpp:190:82: error: expected ‘)’ before ‘;’ token


(In reply to comment #14)
&gt; (In reply to comment #10)
&gt; &gt; (From update of attachment 116909 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116909&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:76
&gt; &gt; &gt; +        // If the sourceP address does not 16-byte align, the first several frames(at most three) should be processed seperately.
&gt; &gt; 
&gt; &gt; Missing space before (.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:77
&gt; &gt; &gt; +        while ((((size_t)sourceP &amp; 0x0F) != 0) &amp;&amp; n) {
&gt; &gt; 
&gt; &gt; Please use static_cast instead of C-style cast.
(size_t)sourceP --&gt; reinterpret_cast&lt;size_t&gt;(sourceP)
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:87
&gt; &gt; &gt; +        __m128 *pSource, *pDest;
&gt; &gt; 
&gt; &gt; We prefer one declaration per line and the * goes next to the type.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:91
&gt; &gt; &gt; +            pSource = reinterpret_cast&lt;__m128*&gt;((float*)sourceP);
&gt; &gt; 
&gt; &gt; Please use static_cast instead of C-style cast.
(float*)sourceP --&gt; const_cast&lt;float*&gt;sourceP
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:93
&gt; &gt; &gt; +            // There is less than 1% performance enhancement when pulling the if statement out of the loop, so leave it here.
&gt; &gt; 
&gt; &gt; It is not clear why you wouldn&apos;t want the 1% performance gain here.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:94
&gt; &gt; &gt; +            if (((size_t)destP &amp; 0x0F) != 0) {
&gt; &gt; 
&gt; &gt; Please use static_cast instead of C-style cast.
(size_t)destP --&gt; reinterpret_cast&lt;size_t&gt;(destP)
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:136
&gt; &gt; &gt; +        while ((((size_t)source1P &amp; 0x0F) != 0) &amp;&amp; n) {
&gt; &gt; 
&gt; &gt; Please use static_cast instead of C-style cast.
(size_t)source1P --&gt; reinterpret_cast&lt;size_t&gt;(source1P)
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:147
&gt; &gt; &gt; +        __m128 * pSource1, *pSource2, *pDest;
&gt; &gt; &gt; +        __m128 source2, dest;
&gt; &gt; 
&gt; &gt; We prefer one declaration per line and the * goes next to the type.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:150
&gt; &gt; &gt; +        bool source2Aligned = !((size_t)source2P &amp; 0x0F);
&gt; &gt; &gt; +        bool destAligned = !((size_t)destP &amp; 0x0F);
&gt; &gt; 
&gt; &gt; Please use static_cast instead of C-style cast.
(size_t)source2P --&gt; reinterpret_cast&lt;size_t&gt;(source2P)
(size_t)destP --&gt; reinterpret_cast&lt;size_t&gt;(destP)
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:155
&gt; &gt; &gt; +                pSource1 = reinterpret_cast&lt;__m128*&gt;((float*)source1P);
&gt; &gt; &gt; +                pSource2 = reinterpret_cast&lt;__m128*&gt;((float*)source2P);
&gt; &gt; 
&gt; &gt; Please use static_cast instead of C-style cast.
(float*)source1P --&gt; const_cast&lt;float*&gt;source1P
(float*)source2P --&gt; const_cast&lt;float*&gt;source2P
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:167
&gt; &gt; &gt; +                pSource1 = reinterpret_cast&lt;__m128*&gt;((float*)source1P);
&gt; &gt; &gt; +                pSource2 = reinterpret_cast&lt;__m128*&gt;((float*)source2P);
&gt; &gt; 
&gt; &gt; Please use static_cast instead of C-style cast.
(float*)source1P --&gt; const_cast&lt;float*&gt;source1P
(float*)source2P --&gt; const_cast&lt;float*&gt;source2P
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:178
&gt; &gt; &gt; +                pSource1 = reinterpret_cast&lt;__m128*&gt;((float*)source1P);
&gt; &gt; 
&gt; &gt; Please use static_cast instead of C-style cast.
(float*)source1P --&gt; const_cast&lt;float*&gt;source1P
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:188
&gt; &gt; &gt; +        } else if (!source2Aligned &amp;&amp; !destAligned) // both source2 and dest not aligned 
&gt; &gt; &gt; +        {
&gt; &gt; 
&gt; &gt; { should go on the previous line.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:191
&gt; &gt; &gt; +                source2 = _mm_loadu_ps(source2P);
&gt; &gt; 
&gt; &gt; Please use static_cast instead of C-style cast.
&gt; 
&gt; Hi Sam, 
&gt;     Thanks to your review and we update the patch by your comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511926</commentid>
    <comment_count>16</comment_count>
      <attachid>117125</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2011-11-30 11:17:31 -0800</bug_when>
    <thetext>Comment on attachment 117125
Update the patch (fix code style issue and pull the if in vsmul out of loop)

View in context: https://bugs.webkit.org/attachment.cgi?id=117125&amp;action=review

Just a few minor grammatical fixes.  Otherwise LGTM.

&gt; platform/audio/VectorMath.cpp:84
&gt; +        // Now the sourceP address aligned and start to apply SSE.

&quot;address aligned&quot; should be &quot;address is aligned&quot;

&gt; platform/audio/VectorMath.cpp:112
&gt; +        // Non-SSE handling for left frames which is less than 4.

&quot;for left frames&quot; should be &quot;for remaining frames&quot;

&gt; platform/audio/VectorMath.cpp:150
&gt; +        // Now the source1P address aligned and start to apply SSE.

&quot;address aligned&quot; -&gt; &quot;address is aligned&quot;

&gt; platform/audio/VectorMath.cpp:185
&gt; +        } else if (!source2Aligned &amp;&amp; destAligned) { // source2 not aligend but dest aligned 

&quot;aligend&quot; -&gt; &quot;aligned&quot;

&gt; platform/audio/VectorMath.cpp:209
&gt; +        // Non-SSE handling for left frames which is less than 4.

&quot;for left frames&quot; -&gt; &quot;for remaining frames&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512281</commentid>
    <comment_count>17</comment_count>
      <attachid>117304</attachid>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2011-11-30 17:31:07 -0800</bug_when>
    <thetext>Created attachment 117304
Update the patch (Fix comment issues)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512282</commentid>
    <comment_count>18</comment_count>
      <attachid>117125</attachid>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2011-11-30 17:32:41 -0800</bug_when>
    <thetext>Comment on attachment 117125
Update the patch (fix code style issue and pull the if in vsmul out of loop)

View in context: https://bugs.webkit.org/attachment.cgi?id=117125&amp;action=review

&gt;&gt; platform/audio/VectorMath.cpp:209
&gt;&gt; +        // Non-SSE handling for left frames which is less than 4.
&gt; 
&gt; &quot;for left frames&quot; -&gt; &quot;for remaining frames&quot;

Hi Raymond,
    Thanks for your review, the patch is updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512283</commentid>
    <comment_count>19</comment_count>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2011-11-30 17:32:50 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=117125&amp;action=review

&gt;&gt; platform/audio/VectorMath.cpp:209
&gt;&gt; +        // Non-SSE handling for left frames which is less than 4.
&gt; 
&gt; &quot;for left frames&quot; -&gt; &quot;for remaining frames&quot;

Hi Raymond,
    Thanks for your review, the patch is updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512951</commentid>
    <comment_count>20</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2011-12-01 11:43:37 -0800</bug_when>
    <thetext>Ken, please review at your convenience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513123</commentid>
    <comment_count>21</comment_count>
      <attachid>117304</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-12-01 14:34:54 -0800</bug_when>
    <thetext>Comment on attachment 117304
Update the patch (Fix comment issues)

View in context: https://bugs.webkit.org/attachment.cgi?id=117304&amp;action=review

Sounds fine especially based on Raymond&apos;s and Sam&apos;s earlier reviews, but it looks like the patch needs to be updated to top of tree WebKit. If this is correct, please do so and upload a new patch; if it seems to be some other problem, please mark r? again.

&gt; ChangeLog:6
&gt; +        Reviewed by Sam Weinig.

You should leave this line as &quot;Reviewed by NOBODY (OOPS)!&quot; in the future. The commit queue will rewrite it for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513588</commentid>
    <comment_count>22</comment_count>
      <attachid>117583</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2011-12-02 00:39:53 -0800</bug_when>
    <thetext>Created attachment 117583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513592</commentid>
    <comment_count>23</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2011-12-02 00:45:30 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 117304 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117304&amp;action=review
&gt; 
&gt; Sounds fine especially based on Raymond&apos;s and Sam&apos;s earlier reviews, but it looks like the patch needs to be updated to top of tree WebKit. If this is correct, please do so and upload a new patch; if it seems to be some other problem, please mark r? again.
&gt; 
&gt; &gt; ChangeLog:6
&gt; &gt; +        Reviewed by Sam Weinig.
&gt; 
&gt; You should leave this line as &quot;Reviewed by NOBODY (OOPS)!&quot; in the future. The commit queue will rewrite it for you.

Ken, thanks for your comments. patch has been updated to top of tree WebKit. 
I have marked r? and cq?. please help to review and if ok please commit it. thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514330</commentid>
    <comment_count>24</comment_count>
      <attachid>117583</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-12-02 18:07:58 -0800</bug_when>
    <thetext>Comment on attachment 117583
Patch

Thanks for updating. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514359</commentid>
    <comment_count>25</comment_count>
      <attachid>117583</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 18:43:58 -0800</bug_when>
    <thetext>Comment on attachment 117583
Patch

Clearing flags on attachment: 117583

Committed r101894: &lt;http://trac.webkit.org/changeset/101894&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514360</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 18:44:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116695</attachid>
            <date>2011-11-27 21:22:45 -0800</date>
            <delta_ts>2011-12-01 11:57:34 -0800</delta_ts>
            <desc>Implement the SSE optimization for vsmul and vadd</desc>
            <filename>webaudio-sse-opt.patch</filename>
            <type>text/plain</type>
            <size>5819</size>
            <attacher name="Xingnan Wang">xingnan.wang</attacher>
            
              <data encoding="base64">RnJvbSBjYjQ4MjEyZTUxZWQ0ZmE2YjYyZGNiYzFlY2YzZTRiNzI0YzFlNDEzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiB4aW5nbmFuIDx4aW5nbmFuLndhbmdAaW50ZWwuY29tPgpEYXRl
OiBNb24sIDI4IE5vdiAyMDExIDEzOjE2OjA2ICswODAwClN1YmplY3Q6IFtQQVRDSF0gSW1wbGVt
ZW50LXRoZSBTU0Ugb3B0aW1pemF0aW9uIGZvciB2c211bCBhbmQgdmFkZAoKLS0tCiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKysrCiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcCB8ICAxMDggKysrKysrKysrKysr
KysrKysrKysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTE4IGluc2VydGlvbnMoKyksIDIgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU3ZGFhNDMuLjUyNDAwMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMS0xMS0yNCAgSmFtZXMgV2VpIDxqYW1lcy53ZWlAaW50ZWwuY29t
PiAmIFhpbmduYW4gV2FuZyA8eGluZ25hbi53YW5nQGludGVsLmNvbT4KKworICAgICAgICAtSW1w
bGVtZW50IHRoZSBTU0Ugb3B0aW1pemF0aW9uIGZvciB2c211bCBhbmQgdmFkZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxODIKKworICAgICAgICBS
ZXZpZXdlZCBieQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworCSogcGxhdGZvcm0vYXVkaW8v
VmVjdG9yTWF0aC5jcHA6CisJKFdlYkNvcmU6VmVjdG9yTWF0aCk6CisKIDIwMTEtMTAtMDMgIE1p
Y2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CiAKICAgICAgICAgQSBsaXR0bGUg
bW9yZSBXZWJTUUxEYXRhYmFzZSB0aHJlYWQgc2FmZXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcAppbmRleCA2NGUxOTJiLi5kNzY0YWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcApAQCAtMzIsNiArMzIs
MTAgQEAKICNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4KICNlbmRpZgogCisjaWZk
ZWYgX19TU0UyX18KKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBWZWN0b3JNYXRoIHsKQEAgLTYzLDcgKzY3LDUwIEBAIHZv
aWQgdmFkZChjb25zdCBmbG9hdCogc291cmNlMVAsIGludCBzb3VyY2VTdHJpZGUxLCBjb25zdCBm
bG9hdCogc291cmNlMlAsIGludCBzCiAKIHZvaWQgdnNtdWwoY29uc3QgZmxvYXQqIHNvdXJjZVAs
IGludCBzb3VyY2VTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxvYXQqIGRlc3RQLCBpbnQg
ZGVzdFN0cmlkZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKLSAgICAvLyBGSVhNRTogb3B0
aW1pemUgZm9yIFNTRQorI2lmZGVmIF9fU1NFMl9fCisgICAgaWYgKChzb3VyY2VTdHJpZGUgPT0g
MSkgJiYgKGRlc3RTdHJpZGUgPT0gMSkpIHsKKyAgICAgICAgaW50IG4gPSBmcmFtZXNUb1Byb2Nl
c3M7CisgICAgICAgIGZsb2F0IGsgPSAqc2NhbGU7CisKKyAgICAgICAgLy8gSWYgdGhlIHNvdXJj
ZVAgYWRkcmVzcyBkb2VzIG5vdCAxNi1ieXRlIGFsaWduLCB0aGUgZmlyc3Qgc2V2ZXJhbCBmcmFt
ZXMoYXQgbW9zdCB0aHJlZSkgc2hvdWxkIGJlIHByb2Nlc3NlZCBzZXBlcmF0ZWx5LgorICAgICAg
ICB3aGlsZSAoKCgoc2l6ZV90KXNvdXJjZVAgJiAweDBGKSAhPSAwKSAmJiBuKSB7CisgICAgICAg
ICAgICAqZGVzdFAgPSBrICogKnNvdXJjZVA7CisgICAgICAgICAgICBzb3VyY2VQKys7CisgICAg
ICAgICAgICBkZXN0UCsrOworICAgICAgICAgICAgbi0tOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gTm93IHRoZSBzb3VyY2VQIGFkZHJlc3MgYWxpZ25zIGFuZCBzdGFydCB0byBhcHBseSBTU0Uu
CisgICAgICAgIGludCBncm91cCA9IG4vNDsKKyAgICAgICAgX19tMTI4IHNjYWxlXyA9IF9tbV9z
ZXRfcHMxKGspOworICAgICAgICBfX20xMjggKnBTb3VyY2UsICpwRGVzdDsKKyAgICAgICAgX19t
MTI4IGRlc3Q7CisKKyAgICAgICAgd2hpbGUgKGdyb3VwLS0pIHsKKyAgICAgICAgICAgIHBTb3Vy
Y2UgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KChmbG9hdCopc291cmNlUCk7CisKKyAgICAg
ICAgICAgIGlmICgoKHNpemVfdClkZXN0UCAmIDB4MEYpICE9IDApIHsKKyAgICAgICAgICAgICAg
ICBkZXN0ID0gX21tX211bF9wcygqcFNvdXJjZSwgc2NhbGVfKTsKKyAgICAgICAgICAgICAgICBf
bW1fc3RvcmV1X3BzKGRlc3RQLCBkZXN0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgcERlc3QgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGRlc3RQKTsKKyAgICAg
ICAgICAgICAgICAqcERlc3QgPSBfbW1fbXVsX3BzKCpwU291cmNlLCBzY2FsZV8pOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBzb3VyY2VQICs9IDQ7CisgICAgICAgICAgICBkZXN0UCAr
PSA0OworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIGxlZnQgZnJhbWVzIGFyZSBub3Qg
ZW5vdWdoIGZvciBvbmNlIFNTRSwgcHJvY2VzcyB0aGVtIGJ5IG5vcm1hbCB3YXkuCisgICAgICAg
IG4gJT0gNDsKKyAgICAgICAgd2hpbGUgKG4pIHsKKyAgICAgICAgICAgICpkZXN0UCA9IGsgKiAq
c291cmNlUDsKKyAgICAgICAgICAgIHNvdXJjZVArKzsKKyAgICAgICAgICAgIGRlc3RQKys7Cisg
ICAgICAgICAgICBuLS07CisgICAgICAgIH0KKyAgICB9IGVsc2UgeyAvLyBJZiBzdHJpZGVzIGFy
ZSBub3QgMSwgcm9sbGJhY2sgdG8gbm9ybWFsIGFsZ29yaXRobS4KKyNlbmRpZgogICAgIGludCBu
ID0gZnJhbWVzVG9Qcm9jZXNzOwogICAgIGZsb2F0IGsgPSAqc2NhbGU7CiAgICAgd2hpbGUgKG4t
LSkgewpAQCAtNzEsMTEgKzExOCw2NSBAQCB2b2lkIHZzbXVsKGNvbnN0IGZsb2F0KiBzb3VyY2VQ
LCBpbnQgc291cmNlU3RyaWRlLCBjb25zdCBmbG9hdCogc2NhbGUsIGZsb2F0KiBkZQogICAgICAg
ICBzb3VyY2VQICs9IHNvdXJjZVN0cmlkZTsKICAgICAgICAgZGVzdFAgKz0gZGVzdFN0cmlkZTsK
ICAgICB9CisjaWZkZWYgX19TU0UyX18KKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCB2YWRkKGNv
bnN0IGZsb2F0KiBzb3VyY2UxUCwgaW50IHNvdXJjZVN0cmlkZTEsIGNvbnN0IGZsb2F0KiBzb3Vy
Y2UyUCwgaW50IHNvdXJjZVN0cmlkZTIsIGZsb2F0KiBkZXN0UCwgaW50IGRlc3RTdHJpZGUsIHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7Ci0gICAgLy8gRklYTUU6IG9wdGltaXplIGZvciBTU0UK
KyNpZmRlZiBfX1NTRTJfXworaWYgKChzb3VyY2VTdHJpZGUxID09MSkgJiYgKHNvdXJjZVN0cmlk
ZTIgPT0gMSkgJiYgKGRlc3RTdHJpZGUgPT0gMSkpIHsKKyAgICAgICAgaW50IG4gPSBmcmFtZXNU
b1Byb2Nlc3M7CisKKyAgICAgICAgLy8gSWYgdGhlIHNvdXJjZTFQIGFkZHJlc3MgZG9lcyBub3Qg
MTYtYnl0ZSBhbGlnbiwgdGhlIGZpcnN0IHNldmVyYWwgZnJhbWVzKGF0IG1vc3QgdGhyZWUpIHNo
b3VsZCBiZSBwcm9jZXNzZWQgc2VwZXJhdGVseSB1bnRpbCB0aGUgYWRkcmVzcyBhbGlnbnMuCisg
ICAgICAgIHdoaWxlICgoKChzaXplX3Qpc291cmNlMVAgJiAweDBGKSAhPSAwKSAmJiBuKSB7Cisg
ICAgICAgICAgICAqZGVzdFAgPSAqc291cmNlMVAgKyAqc291cmNlMlA7CisgICAgICAgICAgICBz
b3VyY2UxUCsrOworICAgICAgICAgICAgc291cmNlMlArKzsKKyAgICAgICAgICAgIGRlc3RQKys7
CisgICAgICAgICAgICBuLS07CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgdGhlIHNvdXJj
ZVAgYWRkcmVzcyBhbGlnbnMgYW5kIHN0YXJ0IHRvIGFwcGx5IFNTRS4KKyAgICAgICAgaW50IGdy
b3VwID0gbi80OworICAgICAgICBfX20xMjggKiBwU291cmNlMSwgKnBTb3VyY2UyLCAqcERlc3Q7
CisgICAgICAgIF9fbTEyOCBzb3VyY2UyLCBkZXN0OworCisgICAgICAgIHdoaWxlIChncm91cC0t
KSB7CisgICAgICAgICAgICBwU291cmNlMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4oKGZs
b2F0Kilzb3VyY2UxUCk7CisKKyAgICAgICAgICAgIGlmICgoKHNpemVfdClzb3VyY2UyUCAmIDB4
MEYpID09IDApCisgICAgICAgICAgICAgICAgcFNvdXJjZTIgPSByZWludGVycHJldF9jYXN0PF9f
bTEyOCo+KChmbG9hdCopc291cmNlMlApOworICAgICAgICAgICAgZWxzZSB7IC8vIElmIHRoZSBz
b3VyY2UyUCBhZGRyZXNzIGRvZXMgbm90IGFsaWduLCBvbmNlIG1vcmUgU1NFIGxvYWRpbmcgaXMg
bmVlZGVkIHRvIGFsaWduIHRoZSBhZGRyZXNzLiAKKyAgICAgICAgICAgICAgICBzb3VyY2UyID0g
X21tX2xvYWR1X3BzKHNvdXJjZTJQKTsKKyAgICAgICAgICAgICAgICBwU291cmNlMiA9ICZzb3Vy
Y2UyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoKChzaXplX3QpZGVzdFAgJiAw
eDBGKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcERlc3QgPSByZWludGVycHJldF9jYXN0PF9f
bTEyOCo+KGRlc3RQKTsKKyAgICAgICAgICAgICAgICAqcERlc3QgPSBfbW1fYWRkX3BzKCpwU291
cmNlMSwgKnBTb3VyY2UyKTsKKyAgICAgICAgICAgIH0gZWxzZSB7IC8vIElmIHRoZSBkZXN0UCBh
ZGRyZXNzIGRvZXMgbm90IGFsaWduLCBvbmNlIG1vcmUgU1NFIGxvYWRpbmcgaXMgbmVlZGVkIHRv
IGFsaWduIHRoZSBhZGRyZXNzLgorICAgICAgICAgICAgICAgIGRlc3QgPSBfbW1fYWRkX3BzKCpw
U291cmNlMSwgKnBTb3VyY2UyKTsKKyAgICAgICAgICAgICAgICBfbW1fc3RvcmV1X3BzKGRlc3RQ
LCBkZXN0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc291cmNlMVAgKz0gNDsKKyAg
ICAgICAgICAgIHNvdXJjZTJQICs9IDQ7CisgICAgICAgICAgICBkZXN0UCArPSA0OworICAgICAg
ICB9CisKKyAgICAgICAgLy8gSWYgdGhlIGxlZnQgZnJhbWVzIGFyZSBub3QgZW5vdWdoIGZvciBv
bmNlIFNTRSwgcHJvY2VzcyB0aGVtIGJ5IG5vcm1hbCB3YXkuCisgICAgICAgIG4gJT0gNDsKKyAg
ICAgICAgd2hpbGUgKG4pIHsKKyAgICAgICAgICAgICpkZXN0UCA9ICpzb3VyY2UxUCArICpzb3Vy
Y2UyUDsKKyAgICAgICAgICAgIHNvdXJjZTFQKys7CisgICAgICAgICAgICBzb3VyY2UyUCsrOwor
ICAgICAgICAgICAgZGVzdFArKzsKKyAgICAgICAgICAgIG4tLTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7IC8vIGlmIHN0cmlkZXMgYXJlIG5vdCAxLCByb2xsYmFjayB0byBub3JtYWwgYWxnb3Jp
dGhtCisjZW5kaWYKICAgICBpbnQgbiA9IGZyYW1lc1RvUHJvY2VzczsKICAgICB3aGlsZSAobi0t
KSB7CiAgICAgICAgICpkZXN0UCA9ICpzb3VyY2UxUCArICpzb3VyY2UyUDsKQEAgLTgzLDYgKzE4
NCw5IEBAIHZvaWQgdmFkZChjb25zdCBmbG9hdCogc291cmNlMVAsIGludCBzb3VyY2VTdHJpZGUx
LCBjb25zdCBmbG9hdCogc291cmNlMlAsIGludCBzCiAgICAgICAgIHNvdXJjZTJQICs9IHNvdXJj
ZVN0cmlkZTI7CiAgICAgICAgIGRlc3RQICs9IGRlc3RTdHJpZGU7CiAgICAgfQorI2lmZGVmIF9f
U1NFMl9fCisgICAgfQorI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBPUyhEQVJXSU4pCi0tIAoxLjcu
NS40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116909</attachid>
            <date>2011-11-29 00:29:30 -0800</date>
            <delta_ts>2011-12-01 11:57:41 -0800</delta_ts>
            <desc>Update the patch (Implement the SSE optimization for vsmul and vadd)</desc>
            <filename>webaudio-sse-opt.patch</filename>
            <type>text/plain</type>
            <size>7053</size>
            <attacher name="Xingnan Wang">xingnan.wang</attacher>
            
              <data encoding="base64">RnJvbSBlMzBmNmM3Y2MxNjU4NDc1MWQ5YTZlYjEyNTk0ZTUyYzFiMzYxOTg2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiB4aW5nbmFuIDx4aW5nbmFuLndhbmdAaW50ZWwuY29tPgpEYXRl
OiBUdWUsIDI5IE5vdiAyMDExIDE2OjI4OjMxICswODAwClN1YmplY3Q6IFtQQVRDSF0gSW1wbGVt
ZW50IHRoZSBTU0Ugb3B0aW1pemF0aW9uIGZvciB2c211bCBhbmQgdmFkZAoKLS0tCiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKysKIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwIHwgIDE0MCArKysrKysrKysrKysr
KysrKysrKysrKysrLQogMiBmaWxlcyBjaGFuZ2VkLCAxNTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdkYWE0My4uNTI0MDAxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDExLTExLTI0ICBKYW1lcyBXZWkgPGphbWVzLndlaUBpbnRlbC5jb20+
ICYgWGluZ25hbiBXYW5nIDx4aW5nbmFuLndhbmdAaW50ZWwuY29tPgorCisgICAgICAgIC1JbXBs
ZW1lbnQgdGhlIFNTRSBvcHRpbWl6YXRpb24gZm9yIHZzbXVsIGFuZCB2YWRkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzE4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisJKiBwbGF0Zm9ybS9hdWRpby9W
ZWN0b3JNYXRoLmNwcDoKKwkoV2ViQ29yZTpWZWN0b3JNYXRoKToKKwogMjAxMS0xMC0wMyAgTWlj
aGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBBIGxpdHRsZSBt
b3JlIFdlYlNRTERhdGFiYXNlIHRocmVhZCBzYWZldHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCmluZGV4IDY0ZTE5MmIuLmRjNzg4ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCkBAIC0zMiw2ICszMiwx
MCBAQAogI2luY2x1ZGUgPEFjY2VsZXJhdGUvQWNjZWxlcmF0ZS5oPgogI2VuZGlmCiAKKyNpZmRl
ZiBfX1NTRTJfXworI2luY2x1ZGUgPGVtbWludHJpbi5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogbmFtZXNwYWNlIFZlY3Rvck1hdGggewpAQCAtNjMsNyArNjcsNTIgQEAgdm9p
ZCB2YWRkKGNvbnN0IGZsb2F0KiBzb3VyY2UxUCwgaW50IHNvdXJjZVN0cmlkZTEsIGNvbnN0IGZs
b2F0KiBzb3VyY2UyUCwgaW50IHMKIAogdm9pZCB2c211bChjb25zdCBmbG9hdCogc291cmNlUCwg
aW50IHNvdXJjZVN0cmlkZSwgY29uc3QgZmxvYXQqIHNjYWxlLCBmbG9hdCogZGVzdFAsIGludCBk
ZXN0U3RyaWRlLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewotICAgIC8vIEZJWE1FOiBvcHRp
bWl6ZSBmb3IgU1NFCisjaWZkZWYgX19TU0UyX18KKyAgICBpZiAoKHNvdXJjZVN0cmlkZSA9PSAx
KSAmJiAoZGVzdFN0cmlkZSA9PSAxKSkgeworICAgICAgICAKKyAgICAgICAgaW50IG4gPSBmcmFt
ZXNUb1Byb2Nlc3M7CisgICAgICAgIGZsb2F0IGsgPSAqc2NhbGU7CisKKyAgICAgICAgLy8gSWYg
dGhlIHNvdXJjZVAgYWRkcmVzcyBkb2VzIG5vdCAxNi1ieXRlIGFsaWduLCB0aGUgZmlyc3Qgc2V2
ZXJhbCBmcmFtZXMoYXQgbW9zdCB0aHJlZSkgc2hvdWxkIGJlIHByb2Nlc3NlZCBzZXBlcmF0ZWx5
LgorICAgICAgICB3aGlsZSAoKCgoc2l6ZV90KXNvdXJjZVAgJiAweDBGKSAhPSAwKSAmJiBuKSB7
CisgICAgICAgICAgICAqZGVzdFAgPSBrICogKnNvdXJjZVA7CisgICAgICAgICAgICBzb3VyY2VQ
Kys7CisgICAgICAgICAgICBkZXN0UCsrOworICAgICAgICAgICAgbi0tOworICAgICAgICB9CisK
KyAgICAgICAgLy8gTm93IHRoZSBzb3VyY2VQIGFkZHJlc3MgYWxpZ25zIGFuZCBzdGFydCB0byBh
cHBseSBTU0UuCisgICAgICAgIGludCBncm91cCA9IG4gLyA0OworICAgICAgICBfX20xMjggc2Nh
bGVfID0gX21tX3NldF9wczEoayk7CisgICAgICAgIF9fbTEyOCAqcFNvdXJjZSwgKnBEZXN0Owor
ICAgICAgICBfX20xMjggZGVzdDsKKworICAgICAgICB3aGlsZSAoZ3JvdXAtLSkgeworICAgICAg
ICAgICAgcFNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4oKGZsb2F0Kilzb3VyY2VQ
KTsKKworICAgICAgICAgICAgLy8gVGhlcmUgaXMgbGVzcyB0aGFuIDElIHBlcmZvcm1hbmNlIGVu
aGFuY2VtZW50IHdoZW4gcHVsbGluZyB0aGUgaWYgc3RhdGVtZW50IG91dCBvZiB0aGUgbG9vcCwg
c28gbGVhdmUgaXQgaGVyZS4KKyAgICAgICAgICAgIGlmICgoKHNpemVfdClkZXN0UCAmIDB4MEYp
ICE9IDApIHsKKyAgICAgICAgICAgICAgICBkZXN0ID0gX21tX211bF9wcygqcFNvdXJjZSwgc2Nh
bGVfKTsKKyAgICAgICAgICAgICAgICBfbW1fc3RvcmV1X3BzKGRlc3RQLCBkZXN0KTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcERlc3QgPSByZWludGVycHJldF9jYXN0
PF9fbTEyOCo+KGRlc3RQKTsKKyAgICAgICAgICAgICAgICAqcERlc3QgPSBfbW1fbXVsX3BzKCpw
U291cmNlLCBzY2FsZV8pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzb3VyY2VQICs9
IDQ7CisgICAgICAgICAgICBkZXN0UCArPSA0OworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYg
dGhlIGxlZnQgZnJhbWVzIGFyZSBub3QgZW5vdWdoIGZvciBvbmNlIFNTRSwgcHJvY2VzcyB0aGVt
IGJ5IG5vcm1hbCB3YXkuCisgICAgICAgIG4gJT0gNDsKKyAgICAgICAgd2hpbGUgKG4pIHsKKyAg
ICAgICAgICAgICpkZXN0UCA9IGsgKiAqc291cmNlUDsKKyAgICAgICAgICAgIHNvdXJjZVArKzsK
KyAgICAgICAgICAgIGRlc3RQKys7CisgICAgICAgICAgICBuLS07CisgICAgICAgIH0KKyAgICB9
IGVsc2UgeyAvLyBJZiBzdHJpZGVzIGFyZSBub3QgMSwgcm9sbGJhY2sgdG8gbm9ybWFsIGFsZ29y
aXRobS4KKyNlbmRpZgogICAgIGludCBuID0gZnJhbWVzVG9Qcm9jZXNzOwogICAgIGZsb2F0IGsg
PSAqc2NhbGU7CiAgICAgd2hpbGUgKG4tLSkgewpAQCAtNzEsMTEgKzEyMCw5NSBAQCB2b2lkIHZz
bXVsKGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBpbnQgc291cmNlU3RyaWRlLCBjb25zdCBmbG9hdCog
c2NhbGUsIGZsb2F0KiBkZQogICAgICAgICBzb3VyY2VQICs9IHNvdXJjZVN0cmlkZTsKICAgICAg
ICAgZGVzdFAgKz0gZGVzdFN0cmlkZTsKICAgICB9CisjaWZkZWYgX19TU0UyX18KKyAgICB9Cisj
ZW5kaWYKIH0KIAogdm9pZCB2YWRkKGNvbnN0IGZsb2F0KiBzb3VyY2UxUCwgaW50IHNvdXJjZVN0
cmlkZTEsIGNvbnN0IGZsb2F0KiBzb3VyY2UyUCwgaW50IHNvdXJjZVN0cmlkZTIsIGZsb2F0KiBk
ZXN0UCwgaW50IGRlc3RTdHJpZGUsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7Ci0gICAgLy8g
RklYTUU6IG9wdGltaXplIGZvciBTU0UKKyNpZmRlZiBfX1NTRTJfXworICAgIGlmICgoc291cmNl
U3RyaWRlMSA9PTEpICYmIChzb3VyY2VTdHJpZGUyID09IDEpICYmIChkZXN0U3RyaWRlID09IDEp
KSB7CisKKyAgICAgICAgaW50IG4gPSBmcmFtZXNUb1Byb2Nlc3M7CisKKyAgICAgICAgLy8gSWYg
dGhlIHNvdXJjZTFQIGFkZHJlc3MgZG9lcyBub3QgMTYtYnl0ZSBhbGlnbiwgdGhlIGZpcnN0IHNl
dmVyYWwgZnJhbWVzKGF0IG1vc3QgdGhyZWUpIHNob3VsZCBiZSBwcm9jZXNzZWQgc2VwZXJhdGVs
eSB1bnRpbCB0aGUgYWRkcmVzcyBhbGlnbnMuCisgICAgICAgIHdoaWxlICgoKChzaXplX3Qpc291
cmNlMVAgJiAweDBGKSAhPSAwKSAmJiBuKSB7CisgICAgICAgICAgICAqZGVzdFAgPSAqc291cmNl
MVAgKyAqc291cmNlMlA7CisgICAgICAgICAgICBzb3VyY2UxUCsrOworICAgICAgICAgICAgc291
cmNlMlArKzsKKyAgICAgICAgICAgIGRlc3RQKys7CisgICAgICAgICAgICBuLS07CisgICAgICAg
IH0KKworICAgICAgICAvLyBOb3cgdGhlIHNvdXJjZTFQIGFkZHJlc3MgYWxpZ25zIGFuZCBzdGFy
dCB0byBhcHBseSBTU0UuCisgICAgICAgIGludCBncm91cCA9IG4gLyA0OworICAgICAgICBfX20x
MjggKiBwU291cmNlMSwgKnBTb3VyY2UyLCAqcERlc3Q7CisgICAgICAgIF9fbTEyOCBzb3VyY2Uy
LCBkZXN0OworCisgICAgICAgIGJvb2wgc291cmNlMkFsaWduZWQgPSAhKChzaXplX3Qpc291cmNl
MlAgJiAweDBGKTsKKyAgICAgICAgYm9vbCBkZXN0QWxpZ25lZCA9ICEoKHNpemVfdClkZXN0UCAm
IDB4MEYpOworCisgICAgICAgIGlmIChzb3VyY2UyQWxpZ25lZCAmJiBkZXN0QWxpZ25lZCkgeyAv
LyBhbGwgYWxpZ25lZAorICAgICAgICAgICAgd2hpbGUgKGdyb3VwLS0pIHsKKyAgICAgICAgICAg
ICAgICBwU291cmNlMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4oKGZsb2F0Kilzb3VyY2Ux
UCk7CisgICAgICAgICAgICAgICAgcFNvdXJjZTIgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+
KChmbG9hdCopc291cmNlMlApOworICAgICAgICAgICAgICAgIHBEZXN0ID0gcmVpbnRlcnByZXRf
Y2FzdDxfX20xMjgqPihkZXN0UCk7CisgICAgICAgICAgICAgICAgKnBEZXN0ID0gX21tX2FkZF9w
cygqcFNvdXJjZTEsICpwU291cmNlMik7CisKKyAgICAgICAgICAgICAgICBzb3VyY2UxUCArPSA0
OworICAgICAgICAgICAgICAgIHNvdXJjZTJQICs9IDQ7CisgICAgICAgICAgICAgICAgZGVzdFAg
Kz0gNDsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZTJBbGlnbmVk
ICYmICFkZXN0QWxpZ25lZCkgeyAvLyBzb3VyY2UyIGFsaWduZWQgYnV0IGRlc3Qgbm90IGFsaWdu
ZWQgCisgICAgICAgICAgICB3aGlsZSAoZ3JvdXAtLSkgeworICAgICAgICAgICAgICAgIHBTb3Vy
Y2UxID0gcmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPigoZmxvYXQqKXNvdXJjZTFQKTsKKyAgICAg
ICAgICAgICAgICBwU291cmNlMiA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4oKGZsb2F0Kilz
b3VyY2UyUCk7CisgICAgICAgICAgICAgICAgZGVzdCA9IF9tbV9hZGRfcHMoKnBTb3VyY2UxLCAq
cFNvdXJjZTIpOworICAgICAgICAgICAgICAgIF9tbV9zdG9yZXVfcHMoZGVzdFAsIGRlc3QpOwor
CisgICAgICAgICAgICAgICAgc291cmNlMVAgKz0gNDsKKyAgICAgICAgICAgICAgICBzb3VyY2Uy
UCArPSA0OworICAgICAgICAgICAgICAgIGRlc3RQICs9IDQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgfSBlbHNlIGlmICghc291cmNlMkFsaWduZWQgJiYgZGVzdEFsaWduZWQpIHsgLy8gc291
cmNlMiBub3QgYWxpZ2VuZCBidXQgZGVzdCBhbGlnbmVkIAorICAgICAgICAgICAgd2hpbGUgKGdy
b3VwLS0pIHsKKyAgICAgICAgICAgICAgICBwU291cmNlMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19t
MTI4Kj4oKGZsb2F0Kilzb3VyY2UxUCk7CisgICAgICAgICAgICAgICAgc291cmNlMiA9IF9tbV9s
b2FkdV9wcyhzb3VyY2UyUCk7CisgICAgICAgICAgICAgICAgcERlc3QgPSByZWludGVycHJldF9j
YXN0PF9fbTEyOCo+KGRlc3RQKTsKKyAgICAgICAgICAgICAgICAqcERlc3QgPSBfbW1fYWRkX3Bz
KCpwU291cmNlMSwgc291cmNlMik7CisKKyAgICAgICAgICAgICAgICBzb3VyY2UxUCArPSA0Owor
ICAgICAgICAgICAgICAgIHNvdXJjZTJQICs9IDQ7CisgICAgICAgICAgICAgICAgZGVzdFAgKz0g
NDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICghc291cmNlMkFsaWduZWQgJiYg
IWRlc3RBbGlnbmVkKSAvLyBib3RoIHNvdXJjZTIgYW5kIGRlc3Qgbm90IGFsaWduZWQgCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHdoaWxlIChncm91cC0tKSB7CisgICAgICAgICAgICAgICAgcFNv
dXJjZTEgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KChmbG9hdCopc291cmNlMVApOworICAg
ICAgICAgICAgICAgIHNvdXJjZTIgPSBfbW1fbG9hZHVfcHMoc291cmNlMlApOworICAgICAgICAg
ICAgICAgIGRlc3QgPSBfbW1fYWRkX3BzKCpwU291cmNlMSwgc291cmNlMik7CisgICAgICAgICAg
ICAgICAgX21tX3N0b3JldV9wcyhkZXN0UCwgZGVzdCk7CisKKyAgICAgICAgICAgICAgICBzb3Vy
Y2UxUCArPSA0OworICAgICAgICAgICAgICAgIHNvdXJjZTJQICs9IDQ7CisgICAgICAgICAgICAg
ICAgZGVzdFAgKz0gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIElm
IHRoZSBsZWZ0IGZyYW1lcyBhcmUgbm90IGVub3VnaCBmb3Igb25jZSBTU0UsIHByb2Nlc3MgdGhl
bSBieSBub3JtYWwgd2F5LgorICAgICAgICBuICU9IDQ7CisgICAgICAgIHdoaWxlIChuKSB7Cisg
ICAgICAgICAgICAqZGVzdFAgPSAqc291cmNlMVAgKyAqc291cmNlMlA7CisgICAgICAgICAgICBz
b3VyY2UxUCsrOworICAgICAgICAgICAgc291cmNlMlArKzsKKyAgICAgICAgICAgIGRlc3RQKys7
CisgICAgICAgICAgICBuLS07CisgICAgICAgIH0KKyAgICB9IGVsc2UgeyAvLyBpZiBzdHJpZGVz
IGFyZSBub3QgMSwgcm9sbGJhY2sgdG8gbm9ybWFsIGFsZ29yaXRobQorI2VuZGlmCiAgICAgaW50
IG4gPSBmcmFtZXNUb1Byb2Nlc3M7CiAgICAgd2hpbGUgKG4tLSkgewogICAgICAgICAqZGVzdFAg
PSAqc291cmNlMVAgKyAqc291cmNlMlA7CkBAIC04Myw2ICsyMTYsOSBAQCB2b2lkIHZhZGQoY29u
c3QgZmxvYXQqIHNvdXJjZTFQLCBpbnQgc291cmNlU3RyaWRlMSwgY29uc3QgZmxvYXQqIHNvdXJj
ZTJQLCBpbnQgcwogICAgICAgICBzb3VyY2UyUCArPSBzb3VyY2VTdHJpZGUyOwogICAgICAgICBk
ZXN0UCArPSBkZXN0U3RyaWRlOwogICAgIH0KKyNpZmRlZiBfX1NTRTJfXworICAgIH0KKyNlbmRp
ZgogfQogCiAjZW5kaWYgLy8gT1MoREFSV0lOKQotLSAKMS43LjUuNAoK
</data>
<flag name="review"
          id="116296"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117125</attachid>
            <date>2011-11-29 22:21:26 -0800</date>
            <delta_ts>2011-12-01 11:57:49 -0800</delta_ts>
            <desc>Update the patch (fix code style issue and pull the if in vsmul out of loop)</desc>
            <filename>webaudio-sse-opt-fix-style.patch</filename>
            <type>text/plain</type>
            <size>7313</size>
            <attacher name="Xingnan Wang">xingnan.wang</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTMx
NikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTEx
LTMwICBKYW1lcyBXZWkgPGphbWVzLndlaUBpbnRlbC5jb20+ICYgWGluZ25hbiBXYW5nIDx4aW5n
bmFuLndhbmdAaW50ZWwuY29tPgorCisgICAgICAgIC1JbXBsZW1lbnQgdGhlIFNTRSBvcHRpbWl6
YXRpb24gZm9yIHZzbXVsIGFuZCB2YWRkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzMxODIKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Zl
Y3Rvck1hdGguY3BwOgorICAgICAgICAoV2ViQ29yZTpWZWN0b3JNYXRoKToKKwogMjAxMS0xMS0y
OCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGtub3dpbmcgd2hlbiBhIFRyZWVFbGVtZW50IGlzIGFkZGVkIG9yIGNoYW5nZWQg
YW55d2hlcmUgaW4gYSBUcmVlT3V0bGluZS4KSW5kZXg6IHBsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1h
dGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCShyZXZp
c2lvbiAxMDEzMTYpCisrKyBwbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUu
aD4KICNlbmRpZgogCisjaWZkZWYgX19TU0UyX18KKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBWZWN0b3JNYXRoIHsKQEAg
LTM5LDcgKzQzLDcgQEAKICNpZiBPUyhEQVJXSU4pCiAvLyBPbiB0aGUgTWFjIHdlIHVzZSB0aGUg
aGlnaGx5IG9wdGltaXplZCB2ZXJzaW9ucyBpbiBBY2NlbGVyYXRlLmZyYW1ld29yawogLy8gSW4g
MzItYml0IG1vZGUgKF9fcHBjX18gb3IgX19pMzg2X18pIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUu
aD4gaW5jbHVkZXMgPHZlY0xpYi92RFNQX3RyYW5zbGF0ZS5oPiB3aGljaCBkZWZpbmVzIG1hY3Jv
cyBvZiB0aGUgc2FtZSBuYW1lIGFzCi0vLyBvdXIgbmFtZXNwYWNlZCBmdW5jdGlvbiBuYW1lcywg
c28gd2UgbXVzdCBoYW5kbGUgdGhpcyBjYXNlIGRpZmZlcmVudGx5LiAgT3RoZXIgYXJjaGl0ZWN0
dXJlcyAoNjRiaXQsIEFSTSwgZXRjLikgZG8gbm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgZmlsZS4K
Ky8vIG91ciBuYW1lc3BhY2VkIGZ1bmN0aW9uIG5hbWVzLCBzbyB3ZSBtdXN0IGhhbmRsZSB0aGlz
IGNhc2UgZGlmZmVyZW50bHkuIE90aGVyIGFyY2hpdGVjdHVyZXMgKDY0Yml0LCBBUk0sIGV0Yy4p
IGRvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGZpbGUuCiAKIHZvaWQgdnNtdWwoY29uc3QgZmxv
YXQqIHNvdXJjZVAsIGludCBzb3VyY2VTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxvYXQq
IGRlc3RQLCBpbnQgZGVzdFN0cmlkZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKQEAgLTYz
LDcgKzY3LDU4IEBACiAKIHZvaWQgdnNtdWwoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGludCBzb3Vy
Y2VTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxvYXQqIGRlc3RQLCBpbnQgZGVzdFN0cmlk
ZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKLSAgICAvLyBGSVhNRTogb3B0aW1pemUgZm9y
IFNTRQorI2lmZGVmIF9fU1NFMl9fCisgICAgaWYgKChzb3VyY2VTdHJpZGUgPT0gMSkgJiYgKGRl
c3RTdHJpZGUgPT0gMSkpIHsKKyAgICAgICAgCisgICAgICAgIGludCBuID0gZnJhbWVzVG9Qcm9j
ZXNzOworICAgICAgICBmbG9hdCBrID0gKnNjYWxlOworCisgICAgICAgIC8vIElmIHRoZSBzb3Vy
Y2VQIGFkZHJlc3MgaXMgbm90IDE2LWJ5dGUgYWxpZ25lZCwgdGhlIGZpcnN0IHNldmVyYWwgZnJh
bWVzIChhdCBtb3N0IHRocmVlKSBzaG91bGQgYmUgcHJvY2Vzc2VkIHNlcGVyYXRlbHkuCisgICAg
ICAgIHdoaWxlICgocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHNvdXJjZVApICYgMHgwRikgJiYg
bikgeworICAgICAgICAgICAgKmRlc3RQID0gayAqICpzb3VyY2VQOworICAgICAgICAgICAgc291
cmNlUCsrOworICAgICAgICAgICAgZGVzdFArKzsKKyAgICAgICAgICAgIG4tLTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIE5vdyB0aGUgc291cmNlUCBhZGRyZXNzIGFsaWduZWQgYW5kIHN0YXJ0
IHRvIGFwcGx5IFNTRS4KKyAgICAgICAgaW50IGdyb3VwID0gbiAvIDQ7CisgICAgICAgIF9fbTEy
OCBtU2NhbGUgPSBfbW1fc2V0X3BzMShrKTsKKyAgICAgICAgX19tMTI4KiBwU291cmNlOworICAg
ICAgICBfX20xMjgqIHBEZXN0OworICAgICAgICBfX20xMjggZGVzdDsKKworCisgICAgICAgIGlm
IChyZWludGVycHJldF9jYXN0PHNpemVfdD4oZGVzdFApICYgMHgwRikgeworICAgICAgICAgICAg
d2hpbGUgKGdyb3VwLS0pIHsKKyAgICAgICAgICAgICAgICBwU291cmNlID0gcmVpbnRlcnByZXRf
Y2FzdDxfX20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oc291cmNlUCkpOworICAgICAgICAgICAg
ICAgIGRlc3QgPSBfbW1fbXVsX3BzKCpwU291cmNlLCBtU2NhbGUpOworICAgICAgICAgICAgICAg
IF9tbV9zdG9yZXVfcHMoZGVzdFAsIGRlc3QpOworCisgICAgICAgICAgICAgICAgc291cmNlUCAr
PSA0OworICAgICAgICAgICAgICAgIGRlc3RQICs9IDQ7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB3aGlsZSAoZ3JvdXAtLSkgeworICAgICAgICAgICAgICAg
IHBTb3VyY2UgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGNvbnN0X2Nhc3Q8ZmxvYXQqPihz
b3VyY2VQKSk7CisgICAgICAgICAgICAgICAgcERlc3QgPSByZWludGVycHJldF9jYXN0PF9fbTEy
OCo+KGRlc3RQKTsKKyAgICAgICAgICAgICAgICAqcERlc3QgPSBfbW1fbXVsX3BzKCpwU291cmNl
LCBtU2NhbGUpOworCisgICAgICAgICAgICAgICAgc291cmNlUCArPSA0OworICAgICAgICAgICAg
ICAgIGRlc3RQICs9IDQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBO
b24tU1NFIGhhbmRsaW5nIGZvciBsZWZ0IGZyYW1lcyB3aGljaCBpcyBsZXNzIHRoYW4gNC4KKyAg
ICAgICAgbiAlPSA0OworICAgICAgICB3aGlsZSAobikgeworICAgICAgICAgICAgKmRlc3RQID0g
ayAqICpzb3VyY2VQOworICAgICAgICAgICAgc291cmNlUCsrOworICAgICAgICAgICAgZGVzdFAr
KzsKKyAgICAgICAgICAgIG4tLTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7IC8vIElmIHN0cmlk
ZXMgYXJlIG5vdCAxLCByb2xsYmFjayB0byBub3JtYWwgYWxnb3JpdGhtLgorI2VuZGlmCiAgICAg
aW50IG4gPSBmcmFtZXNUb1Byb2Nlc3M7CiAgICAgZmxvYXQgayA9ICpzY2FsZTsKICAgICB3aGls
ZSAobi0tKSB7CkBAIC03MSwxMSArMTI2LDk3IEBACiAgICAgICAgIHNvdXJjZVAgKz0gc291cmNl
U3RyaWRlOwogICAgICAgICBkZXN0UCArPSBkZXN0U3RyaWRlOwogICAgIH0KKyNpZmRlZiBfX1NT
RTJfXworICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIHZhZGQoY29uc3QgZmxvYXQqIHNvdXJjZTFQ
LCBpbnQgc291cmNlU3RyaWRlMSwgY29uc3QgZmxvYXQqIHNvdXJjZTJQLCBpbnQgc291cmNlU3Ry
aWRlMiwgZmxvYXQqIGRlc3RQLCBpbnQgZGVzdFN0cmlkZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vz
cykKIHsKLSAgICAvLyBGSVhNRTogb3B0aW1pemUgZm9yIFNTRQorI2lmZGVmIF9fU1NFMl9fCisg
ICAgaWYgKChzb3VyY2VTdHJpZGUxID09MSkgJiYgKHNvdXJjZVN0cmlkZTIgPT0gMSkgJiYgKGRl
c3RTdHJpZGUgPT0gMSkpIHsKKworICAgICAgICBpbnQgbiA9IGZyYW1lc1RvUHJvY2VzczsKKwor
ICAgICAgICAvLyBJZiB0aGUgc291cmNlUCBhZGRyZXNzIGlzIG5vdCAxNi1ieXRlIGFsaWduZWQs
IHRoZSBmaXJzdCBzZXZlcmFsIGZyYW1lcyAoYXQgbW9zdCB0aHJlZSkgc2hvdWxkIGJlIHByb2Nl
c3NlZCBzZXBlcmF0ZWx5LgorICAgICAgICB3aGlsZSAoKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90
Pihzb3VyY2UxUCkgJiAweDBGKSAmJiBuKSB7CisgICAgICAgICAgICAqZGVzdFAgPSAqc291cmNl
MVAgKyAqc291cmNlMlA7CisgICAgICAgICAgICBzb3VyY2UxUCsrOworICAgICAgICAgICAgc291
cmNlMlArKzsKKyAgICAgICAgICAgIGRlc3RQKys7CisgICAgICAgICAgICBuLS07CisgICAgICAg
IH0KKworICAgICAgICAvLyBOb3cgdGhlIHNvdXJjZTFQIGFkZHJlc3MgYWxpZ25lZCBhbmQgc3Rh
cnQgdG8gYXBwbHkgU1NFLgorICAgICAgICBpbnQgZ3JvdXAgPSBuIC8gNDsKKyAgICAgICAgX19t
MTI4KiBwU291cmNlMTsKKyAgICAgICAgX19tMTI4KiBwU291cmNlMjsKKyAgICAgICAgX19tMTI4
KiBwRGVzdDsKKyAgICAgICAgX19tMTI4IHNvdXJjZTI7CisgICAgICAgIF9fbTEyOCBkZXN0Owor
CisgICAgICAgIGJvb2wgc291cmNlMkFsaWduZWQgPSAhKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90
Pihzb3VyY2UyUCkgJiAweDBGKTsKKyAgICAgICAgYm9vbCBkZXN0QWxpZ25lZCA9ICEocmVpbnRl
cnByZXRfY2FzdDxzaXplX3Q+KGRlc3RQKSAmIDB4MEYpOworCisgICAgICAgIGlmIChzb3VyY2Uy
QWxpZ25lZCAmJiBkZXN0QWxpZ25lZCkgeyAvLyBhbGwgYWxpZ25lZAorICAgICAgICAgICAgd2hp
bGUgKGdyb3VwLS0pIHsKKyAgICAgICAgICAgICAgICBwU291cmNlMSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8X19tMTI4Kj4oY29uc3RfY2FzdDxmbG9hdCo+KHNvdXJjZTFQKSk7CisgICAgICAgICAgICAg
ICAgcFNvdXJjZTIgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGNvbnN0X2Nhc3Q8ZmxvYXQq
Pihzb3VyY2UyUCkpOworICAgICAgICAgICAgICAgIHBEZXN0ID0gcmVpbnRlcnByZXRfY2FzdDxf
X20xMjgqPihkZXN0UCk7CisgICAgICAgICAgICAgICAgKnBEZXN0ID0gX21tX2FkZF9wcygqcFNv
dXJjZTEsICpwU291cmNlMik7CisKKyAgICAgICAgICAgICAgICBzb3VyY2UxUCArPSA0OworICAg
ICAgICAgICAgICAgIHNvdXJjZTJQICs9IDQ7CisgICAgICAgICAgICAgICAgZGVzdFAgKz0gNDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZTJBbGlnbmVkICYmICFk
ZXN0QWxpZ25lZCkgeyAvLyBzb3VyY2UyIGFsaWduZWQgYnV0IGRlc3Qgbm90IGFsaWduZWQgCisg
ICAgICAgICAgICB3aGlsZSAoZ3JvdXAtLSkgeworICAgICAgICAgICAgICAgIHBTb3VyY2UxID0g
cmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oc291cmNlMVApKTsK
KyAgICAgICAgICAgICAgICBwU291cmNlMiA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4oY29u
c3RfY2FzdDxmbG9hdCo+KHNvdXJjZTJQKSk7CisgICAgICAgICAgICAgICAgZGVzdCA9IF9tbV9h
ZGRfcHMoKnBTb3VyY2UxLCAqcFNvdXJjZTIpOworICAgICAgICAgICAgICAgIF9tbV9zdG9yZXVf
cHMoZGVzdFAsIGRlc3QpOworCisgICAgICAgICAgICAgICAgc291cmNlMVAgKz0gNDsKKyAgICAg
ICAgICAgICAgICBzb3VyY2UyUCArPSA0OworICAgICAgICAgICAgICAgIGRlc3RQICs9IDQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIGlmICghc291cmNlMkFsaWduZWQgJiYgZGVz
dEFsaWduZWQpIHsgLy8gc291cmNlMiBub3QgYWxpZ2VuZCBidXQgZGVzdCBhbGlnbmVkIAorICAg
ICAgICAgICAgd2hpbGUgKGdyb3VwLS0pIHsKKyAgICAgICAgICAgICAgICBwU291cmNlMSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4oY29uc3RfY2FzdDxmbG9hdCo+KHNvdXJjZTFQKSk7Cisg
ICAgICAgICAgICAgICAgc291cmNlMiA9IF9tbV9sb2FkdV9wcyhzb3VyY2UyUCk7CisgICAgICAg
ICAgICAgICAgcERlc3QgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGRlc3RQKTsKKyAgICAg
ICAgICAgICAgICAqcERlc3QgPSBfbW1fYWRkX3BzKCpwU291cmNlMSwgc291cmNlMik7CisKKyAg
ICAgICAgICAgICAgICBzb3VyY2UxUCArPSA0OworICAgICAgICAgICAgICAgIHNvdXJjZTJQICs9
IDQ7CisgICAgICAgICAgICAgICAgZGVzdFAgKz0gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIGlmICghc291cmNlMkFsaWduZWQgJiYgIWRlc3RBbGlnbmVkKSB7IC8vIGJvdGggc291
cmNlMiBhbmQgZGVzdCBub3QgYWxpZ25lZCAKKyAgICAgICAgICAgIHdoaWxlIChncm91cC0tKSB7
CisgICAgICAgICAgICAgICAgcFNvdXJjZTEgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGNv
bnN0X2Nhc3Q8ZmxvYXQqPihzb3VyY2UxUCkpOworICAgICAgICAgICAgICAgIHNvdXJjZTIgPSBf
bW1fbG9hZHVfcHMoc291cmNlMlApOworICAgICAgICAgICAgICAgIGRlc3QgPSBfbW1fYWRkX3Bz
KCpwU291cmNlMSwgc291cmNlMik7CisgICAgICAgICAgICAgICAgX21tX3N0b3JldV9wcyhkZXN0
UCwgZGVzdCk7CisKKyAgICAgICAgICAgICAgICBzb3VyY2UxUCArPSA0OworICAgICAgICAgICAg
ICAgIHNvdXJjZTJQICs9IDQ7CisgICAgICAgICAgICAgICAgZGVzdFAgKz0gNDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vbi1TU0UgaGFuZGxpbmcgZm9yIGxlZnQg
ZnJhbWVzIHdoaWNoIGlzIGxlc3MgdGhhbiA0LgorICAgICAgICBuICU9IDQ7CisgICAgICAgIHdo
aWxlIChuKSB7CisgICAgICAgICAgICAqZGVzdFAgPSAqc291cmNlMVAgKyAqc291cmNlMlA7Cisg
ICAgICAgICAgICBzb3VyY2UxUCsrOworICAgICAgICAgICAgc291cmNlMlArKzsKKyAgICAgICAg
ICAgIGRlc3RQKys7CisgICAgICAgICAgICBuLS07CisgICAgICAgIH0KKyAgICB9IGVsc2UgeyAv
LyBpZiBzdHJpZGVzIGFyZSBub3QgMSwgcm9sbGJhY2sgdG8gbm9ybWFsIGFsZ29yaXRobQorI2Vu
ZGlmCiAgICAgaW50IG4gPSBmcmFtZXNUb1Byb2Nlc3M7CiAgICAgd2hpbGUgKG4tLSkgewogICAg
ICAgICAqZGVzdFAgPSAqc291cmNlMVAgKyAqc291cmNlMlA7CkBAIC04Myw2ICsyMjQsOSBAQAog
ICAgICAgICBzb3VyY2UyUCArPSBzb3VyY2VTdHJpZGUyOwogICAgICAgICBkZXN0UCArPSBkZXN0
U3RyaWRlOwogICAgIH0KKyNpZmRlZiBfX1NTRTJfXworICAgIH0KKyNlbmRpZgogfQogCiAjZW5k
aWYgLy8gT1MoREFSV0lOKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117304</attachid>
            <date>2011-11-30 17:31:07 -0800</date>
            <delta_ts>2011-12-02 01:22:44 -0800</delta_ts>
            <desc>Update the patch (Fix comment issues)</desc>
            <filename>webaudio-sse-opt.patch</filename>
            <type>text/plain</type>
            <size>7329</size>
            <attacher name="Xingnan Wang">xingnan.wang</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTMx
NikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTEx
LTMwICBKYW1lcyBXZWkgPGphbWVzLndlaUBpbnRlbC5jb20+ICYgWGluZ25hbiBXYW5nIDx4aW5n
bmFuLndhbmdAaW50ZWwuY29tPgorCisgICAgICAgIC1JbXBsZW1lbnQgdGhlIFNTRSBvcHRpbWl6
YXRpb24gZm9yIHZzbXVsIGFuZCB2YWRkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzMxODIKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Zl
Y3Rvck1hdGguY3BwOgorICAgICAgICAoV2ViQ29yZTpWZWN0b3JNYXRoKToKKwogMjAxMS0xMS0y
OCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGtub3dpbmcgd2hlbiBhIFRyZWVFbGVtZW50IGlzIGFkZGVkIG9yIGNoYW5nZWQg
YW55d2hlcmUgaW4gYSBUcmVlT3V0bGluZS4KSW5kZXg6IHBsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1h
dGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCShyZXZp
c2lvbiAxMDEzMTYpCisrKyBwbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUu
aD4KICNlbmRpZgogCisjaWZkZWYgX19TU0UyX18KKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBWZWN0b3JNYXRoIHsKQEAg
LTM5LDcgKzQzLDcgQEAKICNpZiBPUyhEQVJXSU4pCiAvLyBPbiB0aGUgTWFjIHdlIHVzZSB0aGUg
aGlnaGx5IG9wdGltaXplZCB2ZXJzaW9ucyBpbiBBY2NlbGVyYXRlLmZyYW1ld29yawogLy8gSW4g
MzItYml0IG1vZGUgKF9fcHBjX18gb3IgX19pMzg2X18pIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUu
aD4gaW5jbHVkZXMgPHZlY0xpYi92RFNQX3RyYW5zbGF0ZS5oPiB3aGljaCBkZWZpbmVzIG1hY3Jv
cyBvZiB0aGUgc2FtZSBuYW1lIGFzCi0vLyBvdXIgbmFtZXNwYWNlZCBmdW5jdGlvbiBuYW1lcywg
c28gd2UgbXVzdCBoYW5kbGUgdGhpcyBjYXNlIGRpZmZlcmVudGx5LiAgT3RoZXIgYXJjaGl0ZWN0
dXJlcyAoNjRiaXQsIEFSTSwgZXRjLikgZG8gbm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgZmlsZS4K
Ky8vIG91ciBuYW1lc3BhY2VkIGZ1bmN0aW9uIG5hbWVzLCBzbyB3ZSBtdXN0IGhhbmRsZSB0aGlz
IGNhc2UgZGlmZmVyZW50bHkuIE90aGVyIGFyY2hpdGVjdHVyZXMgKDY0Yml0LCBBUk0sIGV0Yy4p
IGRvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGZpbGUuCiAKIHZvaWQgdnNtdWwoY29uc3QgZmxv
YXQqIHNvdXJjZVAsIGludCBzb3VyY2VTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxvYXQq
IGRlc3RQLCBpbnQgZGVzdFN0cmlkZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKQEAgLTYz
LDcgKzY3LDU4IEBACiAKIHZvaWQgdnNtdWwoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGludCBzb3Vy
Y2VTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxvYXQqIGRlc3RQLCBpbnQgZGVzdFN0cmlk
ZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKLSAgICAvLyBGSVhNRTogb3B0aW1pemUgZm9y
IFNTRQorI2lmZGVmIF9fU1NFMl9fCisgICAgaWYgKChzb3VyY2VTdHJpZGUgPT0gMSkgJiYgKGRl
c3RTdHJpZGUgPT0gMSkpIHsKKyAgICAgICAgCisgICAgICAgIGludCBuID0gZnJhbWVzVG9Qcm9j
ZXNzOworICAgICAgICBmbG9hdCBrID0gKnNjYWxlOworCisgICAgICAgIC8vIElmIHRoZSBzb3Vy
Y2VQIGFkZHJlc3MgaXMgbm90IDE2LWJ5dGUgYWxpZ25lZCwgdGhlIGZpcnN0IHNldmVyYWwgZnJh
bWVzIChhdCBtb3N0IHRocmVlKSBzaG91bGQgYmUgcHJvY2Vzc2VkIHNlcGVyYXRlbHkuCisgICAg
ICAgIHdoaWxlICgocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHNvdXJjZVApICYgMHgwRikgJiYg
bikgeworICAgICAgICAgICAgKmRlc3RQID0gayAqICpzb3VyY2VQOworICAgICAgICAgICAgc291
cmNlUCsrOworICAgICAgICAgICAgZGVzdFArKzsKKyAgICAgICAgICAgIG4tLTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIE5vdyB0aGUgc291cmNlUCBhZGRyZXNzIGlzIGFsaWduZWQgYW5kIHN0
YXJ0IHRvIGFwcGx5IFNTRS4KKyAgICAgICAgaW50IGdyb3VwID0gbiAvIDQ7CisgICAgICAgIF9f
bTEyOCBtU2NhbGUgPSBfbW1fc2V0X3BzMShrKTsKKyAgICAgICAgX19tMTI4KiBwU291cmNlOwor
ICAgICAgICBfX20xMjgqIHBEZXN0OworICAgICAgICBfX20xMjggZGVzdDsKKworCisgICAgICAg
IGlmIChyZWludGVycHJldF9jYXN0PHNpemVfdD4oZGVzdFApICYgMHgwRikgeworICAgICAgICAg
ICAgd2hpbGUgKGdyb3VwLS0pIHsKKyAgICAgICAgICAgICAgICBwU291cmNlID0gcmVpbnRlcnBy
ZXRfY2FzdDxfX20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oc291cmNlUCkpOworICAgICAgICAg
ICAgICAgIGRlc3QgPSBfbW1fbXVsX3BzKCpwU291cmNlLCBtU2NhbGUpOworICAgICAgICAgICAg
ICAgIF9tbV9zdG9yZXVfcHMoZGVzdFAsIGRlc3QpOworCisgICAgICAgICAgICAgICAgc291cmNl
UCArPSA0OworICAgICAgICAgICAgICAgIGRlc3RQICs9IDQ7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3aGlsZSAoZ3JvdXAtLSkgeworICAgICAgICAgICAg
ICAgIHBTb3VyY2UgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGNvbnN0X2Nhc3Q8ZmxvYXQq
Pihzb3VyY2VQKSk7CisgICAgICAgICAgICAgICAgcERlc3QgPSByZWludGVycHJldF9jYXN0PF9f
bTEyOCo+KGRlc3RQKTsKKyAgICAgICAgICAgICAgICAqcERlc3QgPSBfbW1fbXVsX3BzKCpwU291
cmNlLCBtU2NhbGUpOworCisgICAgICAgICAgICAgICAgc291cmNlUCArPSA0OworICAgICAgICAg
ICAgICAgIGRlc3RQICs9IDQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAv
LyBOb24tU1NFIGhhbmRsaW5nIGZvciByZW1haW5pbmcgZnJhbWVzIHdoaWNoIGlzIGxlc3MgdGhh
biA0LgorICAgICAgICBuICU9IDQ7CisgICAgICAgIHdoaWxlIChuKSB7CisgICAgICAgICAgICAq
ZGVzdFAgPSBrICogKnNvdXJjZVA7CisgICAgICAgICAgICBzb3VyY2VQKys7CisgICAgICAgICAg
ICBkZXN0UCsrOworICAgICAgICAgICAgbi0tOworICAgICAgICB9CisgICAgfSBlbHNlIHsgLy8g
SWYgc3RyaWRlcyBhcmUgbm90IDEsIHJvbGxiYWNrIHRvIG5vcm1hbCBhbGdvcml0aG0uCisjZW5k
aWYKICAgICBpbnQgbiA9IGZyYW1lc1RvUHJvY2VzczsKICAgICBmbG9hdCBrID0gKnNjYWxlOwog
ICAgIHdoaWxlIChuLS0pIHsKQEAgLTcxLDExICsxMjYsOTcgQEAKICAgICAgICAgc291cmNlUCAr
PSBzb3VyY2VTdHJpZGU7CiAgICAgICAgIGRlc3RQICs9IGRlc3RTdHJpZGU7CiAgICAgfQorI2lm
ZGVmIF9fU1NFMl9fCisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgdmFkZChjb25zdCBmbG9hdCog
c291cmNlMVAsIGludCBzb3VyY2VTdHJpZGUxLCBjb25zdCBmbG9hdCogc291cmNlMlAsIGludCBz
b3VyY2VTdHJpZGUyLCBmbG9hdCogZGVzdFAsIGludCBkZXN0U3RyaWRlLCBzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKQogewotICAgIC8vIEZJWE1FOiBvcHRpbWl6ZSBmb3IgU1NFCisjaWZkZWYgX19T
U0UyX18KKyAgICBpZiAoKHNvdXJjZVN0cmlkZTEgPT0xKSAmJiAoc291cmNlU3RyaWRlMiA9PSAx
KSAmJiAoZGVzdFN0cmlkZSA9PSAxKSkgeworCisgICAgICAgIGludCBuID0gZnJhbWVzVG9Qcm9j
ZXNzOworCisgICAgICAgIC8vIElmIHRoZSBzb3VyY2VQIGFkZHJlc3MgaXMgbm90IDE2LWJ5dGUg
YWxpZ25lZCwgdGhlIGZpcnN0IHNldmVyYWwgZnJhbWVzIChhdCBtb3N0IHRocmVlKSBzaG91bGQg
YmUgcHJvY2Vzc2VkIHNlcGVyYXRlbHkuCisgICAgICAgIHdoaWxlICgocmVpbnRlcnByZXRfY2Fz
dDxzaXplX3Q+KHNvdXJjZTFQKSAmIDB4MEYpICYmIG4pIHsKKyAgICAgICAgICAgICpkZXN0UCA9
ICpzb3VyY2UxUCArICpzb3VyY2UyUDsKKyAgICAgICAgICAgIHNvdXJjZTFQKys7CisgICAgICAg
ICAgICBzb3VyY2UyUCsrOworICAgICAgICAgICAgZGVzdFArKzsKKyAgICAgICAgICAgIG4tLTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdyB0aGUgc291cmNlMVAgYWRkcmVzcyBpcyBhbGln
bmVkIGFuZCBzdGFydCB0byBhcHBseSBTU0UuCisgICAgICAgIGludCBncm91cCA9IG4gLyA0Owor
ICAgICAgICBfX20xMjgqIHBTb3VyY2UxOworICAgICAgICBfX20xMjgqIHBTb3VyY2UyOworICAg
ICAgICBfX20xMjgqIHBEZXN0OworICAgICAgICBfX20xMjggc291cmNlMjsKKyAgICAgICAgX19t
MTI4IGRlc3Q7CisKKyAgICAgICAgYm9vbCBzb3VyY2UyQWxpZ25lZCA9ICEocmVpbnRlcnByZXRf
Y2FzdDxzaXplX3Q+KHNvdXJjZTJQKSAmIDB4MEYpOworICAgICAgICBib29sIGRlc3RBbGlnbmVk
ID0gIShyZWludGVycHJldF9jYXN0PHNpemVfdD4oZGVzdFApICYgMHgwRik7CisKKyAgICAgICAg
aWYgKHNvdXJjZTJBbGlnbmVkICYmIGRlc3RBbGlnbmVkKSB7IC8vIGFsbCBhbGlnbmVkCisgICAg
ICAgICAgICB3aGlsZSAoZ3JvdXAtLSkgeworICAgICAgICAgICAgICAgIHBTb3VyY2UxID0gcmVp
bnRlcnByZXRfY2FzdDxfX20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oc291cmNlMVApKTsKKyAg
ICAgICAgICAgICAgICBwU291cmNlMiA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4oY29uc3Rf
Y2FzdDxmbG9hdCo+KHNvdXJjZTJQKSk7CisgICAgICAgICAgICAgICAgcERlc3QgPSByZWludGVy
cHJldF9jYXN0PF9fbTEyOCo+KGRlc3RQKTsKKyAgICAgICAgICAgICAgICAqcERlc3QgPSBfbW1f
YWRkX3BzKCpwU291cmNlMSwgKnBTb3VyY2UyKTsKKworICAgICAgICAgICAgICAgIHNvdXJjZTFQ
ICs9IDQ7CisgICAgICAgICAgICAgICAgc291cmNlMlAgKz0gNDsKKyAgICAgICAgICAgICAgICBk
ZXN0UCArPSA0OworICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSBpZiAoc291cmNlMkFs
aWduZWQgJiYgIWRlc3RBbGlnbmVkKSB7IC8vIHNvdXJjZTIgYWxpZ25lZCBidXQgZGVzdCBub3Qg
YWxpZ25lZCAKKyAgICAgICAgICAgIHdoaWxlIChncm91cC0tKSB7CisgICAgICAgICAgICAgICAg
cFNvdXJjZTEgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGNvbnN0X2Nhc3Q8ZmxvYXQqPihz
b3VyY2UxUCkpOworICAgICAgICAgICAgICAgIHBTb3VyY2UyID0gcmVpbnRlcnByZXRfY2FzdDxf
X20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oc291cmNlMlApKTsKKyAgICAgICAgICAgICAgICBk
ZXN0ID0gX21tX2FkZF9wcygqcFNvdXJjZTEsICpwU291cmNlMik7CisgICAgICAgICAgICAgICAg
X21tX3N0b3JldV9wcyhkZXN0UCwgZGVzdCk7CisKKyAgICAgICAgICAgICAgICBzb3VyY2UxUCAr
PSA0OworICAgICAgICAgICAgICAgIHNvdXJjZTJQICs9IDQ7CisgICAgICAgICAgICAgICAgZGVz
dFAgKz0gNDsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9IGVsc2UgaWYgKCFzb3VyY2UyQWxp
Z25lZCAmJiBkZXN0QWxpZ25lZCkgeyAvLyBzb3VyY2UyIG5vdCBhbGlnbmVkIGJ1dCBkZXN0IGFs
aWduZWQgCisgICAgICAgICAgICB3aGlsZSAoZ3JvdXAtLSkgeworICAgICAgICAgICAgICAgIHBT
b3VyY2UxID0gcmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oc291
cmNlMVApKTsKKyAgICAgICAgICAgICAgICBzb3VyY2UyID0gX21tX2xvYWR1X3BzKHNvdXJjZTJQ
KTsKKyAgICAgICAgICAgICAgICBwRGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4oZGVz
dFApOworICAgICAgICAgICAgICAgICpwRGVzdCA9IF9tbV9hZGRfcHMoKnBTb3VyY2UxLCBzb3Vy
Y2UyKTsKKworICAgICAgICAgICAgICAgIHNvdXJjZTFQICs9IDQ7CisgICAgICAgICAgICAgICAg
c291cmNlMlAgKz0gNDsKKyAgICAgICAgICAgICAgICBkZXN0UCArPSA0OworICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgaWYgKCFzb3VyY2UyQWxpZ25lZCAmJiAhZGVzdEFsaWduZWQpIHsg
Ly8gYm90aCBzb3VyY2UyIGFuZCBkZXN0IG5vdCBhbGlnbmVkIAorICAgICAgICAgICAgd2hpbGUg
KGdyb3VwLS0pIHsKKyAgICAgICAgICAgICAgICBwU291cmNlMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
X19tMTI4Kj4oY29uc3RfY2FzdDxmbG9hdCo+KHNvdXJjZTFQKSk7CisgICAgICAgICAgICAgICAg
c291cmNlMiA9IF9tbV9sb2FkdV9wcyhzb3VyY2UyUCk7CisgICAgICAgICAgICAgICAgZGVzdCA9
IF9tbV9hZGRfcHMoKnBTb3VyY2UxLCBzb3VyY2UyKTsKKyAgICAgICAgICAgICAgICBfbW1fc3Rv
cmV1X3BzKGRlc3RQLCBkZXN0KTsKKworICAgICAgICAgICAgICAgIHNvdXJjZTFQICs9IDQ7Cisg
ICAgICAgICAgICAgICAgc291cmNlMlAgKz0gNDsKKyAgICAgICAgICAgICAgICBkZXN0UCArPSA0
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gTm9uLVNTRSBoYW5kbGlu
ZyBmb3IgcmVtYWluaW5nIGZyYW1lcyB3aGljaCBpcyBsZXNzIHRoYW4gNC4KKyAgICAgICAgbiAl
PSA0OworICAgICAgICB3aGlsZSAobikgeworICAgICAgICAgICAgKmRlc3RQID0gKnNvdXJjZTFQ
ICsgKnNvdXJjZTJQOworICAgICAgICAgICAgc291cmNlMVArKzsKKyAgICAgICAgICAgIHNvdXJj
ZTJQKys7CisgICAgICAgICAgICBkZXN0UCsrOworICAgICAgICAgICAgbi0tOworICAgICAgICB9
CisgICAgfSBlbHNlIHsgLy8gaWYgc3RyaWRlcyBhcmUgbm90IDEsIHJvbGxiYWNrIHRvIG5vcm1h
bCBhbGdvcml0aG0KKyNlbmRpZgogICAgIGludCBuID0gZnJhbWVzVG9Qcm9jZXNzOwogICAgIHdo
aWxlIChuLS0pIHsKICAgICAgICAgKmRlc3RQID0gKnNvdXJjZTFQICsgKnNvdXJjZTJQOwpAQCAt
ODMsNiArMjI0LDkgQEAKICAgICAgICAgc291cmNlMlAgKz0gc291cmNlU3RyaWRlMjsKICAgICAg
ICAgZGVzdFAgKz0gZGVzdFN0cmlkZTsKICAgICB9CisjaWZkZWYgX19TU0UyX18KKyAgICB9Cisj
ZW5kaWYKIH0KIAogI2VuZGlmIC8vIE9TKERBUldJTikK
</data>
<flag name="review"
          id="116700"
          type_id="1"
          status="-"
          setter="kbr"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117583</attachid>
            <date>2011-12-02 00:39:53 -0800</date>
            <delta_ts>2011-12-02 18:43:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73182-20111202164031.patch</filename>
            <type>text/plain</type>
            <size>7516</size>
            <attacher name="Wei James (wistoch)">james.wei</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTEyLTAyICBKYW1lcyBX
ZWkgPGphbWVzLndlaUBpbnRlbC5jb20+ICYgWGluZ25hbiBXYW5nIDx4aW5nbmFuLndhbmdAaW50
ZWwuY29tPgorCisgICAgICAgIC1JbXBsZW1lbnQgdGhlIFNTRSBvcHRpbWl6YXRpb24gZm9yIHZz
bXVsIGFuZCB2YWRkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzMxODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwOgorICAgICAgICAoV2ViQ29yZTpW
ZWN0b3JNYXRoKToKKwogMjAxMS0xMi0wMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlciBkZXN0cnVjdGlvbiBvcmRlciBs
ZWFkcyB0byB1c2UtYWZ0ZXItZnJlZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vVmVjdG9yTWF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vVmVjdG9yTWF0aC5jcHAJKHJldmlzaW9uIDEwMTc1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
MiwxMCBAQAogI2luY2x1ZGUgPEFjY2VsZXJhdGUvQWNjZWxlcmF0ZS5oPgogI2VuZGlmCiAKKyNp
ZmRlZiBfX1NTRTJfXworI2luY2x1ZGUgPGVtbWludHJpbi5oPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFZlY3Rvck1hdGggewpAQCAtMzksNyArNDMsNyBAQCBu
YW1lc3BhY2UgVmVjdG9yTWF0aCB7CiAjaWYgT1MoREFSV0lOKQogLy8gT24gdGhlIE1hYyB3ZSB1
c2UgdGhlIGhpZ2hseSBvcHRpbWl6ZWQgdmVyc2lvbnMgaW4gQWNjZWxlcmF0ZS5mcmFtZXdvcmsK
IC8vIEluIDMyLWJpdCBtb2RlIChfX3BwY19fIG9yIF9faTM4Nl9fKSA8QWNjZWxlcmF0ZS9BY2Nl
bGVyYXRlLmg+IGluY2x1ZGVzIDx2ZWNMaWIvdkRTUF90cmFuc2xhdGUuaD4gd2hpY2ggZGVmaW5l
cyBtYWNyb3Mgb2YgdGhlIHNhbWUgbmFtZSBhcwotLy8gb3VyIG5hbWVzcGFjZWQgZnVuY3Rpb24g
bmFtZXMsIHNvIHdlIG11c3QgaGFuZGxlIHRoaXMgY2FzZSBkaWZmZXJlbnRseS4gIE90aGVyIGFy
Y2hpdGVjdHVyZXMgKDY0Yml0LCBBUk0sIGV0Yy4pIGRvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVy
IGZpbGUuCisvLyBvdXIgbmFtZXNwYWNlZCBmdW5jdGlvbiBuYW1lcywgc28gd2UgbXVzdCBoYW5k
bGUgdGhpcyBjYXNlIGRpZmZlcmVudGx5LiBPdGhlciBhcmNoaXRlY3R1cmVzICg2NGJpdCwgQVJN
LCBldGMuKSBkbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBmaWxlLgogCiB2b2lkIHZzbXVsKGNv
bnN0IGZsb2F0KiBzb3VyY2VQLCBpbnQgc291cmNlU3RyaWRlLCBjb25zdCBmbG9hdCogc2NhbGUs
IGZsb2F0KiBkZXN0UCwgaW50IGRlc3RTdHJpZGUsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7
CkBAIC02Myw3ICs2Nyw1OCBAQCB2b2lkIHZhZGQoY29uc3QgZmxvYXQqIHNvdXJjZTFQLCBpbnQg
c291CiAKIHZvaWQgdnNtdWwoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGludCBzb3VyY2VTdHJpZGUs
IGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxvYXQqIGRlc3RQLCBpbnQgZGVzdFN0cmlkZSwgc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykKIHsKLSAgICAvLyBGSVhNRTogb3B0aW1pemUgZm9yIFNTRQorI2lm
ZGVmIF9fU1NFMl9fCisgICAgaWYgKChzb3VyY2VTdHJpZGUgPT0gMSkgJiYgKGRlc3RTdHJpZGUg
PT0gMSkpIHsKKyAgICAgICAgCisgICAgICAgIGludCBuID0gZnJhbWVzVG9Qcm9jZXNzOworICAg
ICAgICBmbG9hdCBrID0gKnNjYWxlOworCisgICAgICAgIC8vIElmIHRoZSBzb3VyY2VQIGFkZHJl
c3MgaXMgbm90IDE2LWJ5dGUgYWxpZ25lZCwgdGhlIGZpcnN0IHNldmVyYWwgZnJhbWVzIChhdCBt
b3N0IHRocmVlKSBzaG91bGQgYmUgcHJvY2Vzc2VkIHNlcGVyYXRlbHkuCisgICAgICAgIHdoaWxl
ICgocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHNvdXJjZVApICYgMHgwRikgJiYgbikgeworICAg
ICAgICAgICAgKmRlc3RQID0gayAqICpzb3VyY2VQOworICAgICAgICAgICAgc291cmNlUCsrOwor
ICAgICAgICAgICAgZGVzdFArKzsKKyAgICAgICAgICAgIG4tLTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIE5vdyB0aGUgc291cmNlUCBhZGRyZXNzIGlzIGFsaWduZWQgYW5kIHN0YXJ0IHRvIGFw
cGx5IFNTRS4KKyAgICAgICAgaW50IGdyb3VwID0gbiAvIDQ7CisgICAgICAgIF9fbTEyOCBtU2Nh
bGUgPSBfbW1fc2V0X3BzMShrKTsKKyAgICAgICAgX19tMTI4KiBwU291cmNlOworICAgICAgICBf
X20xMjgqIHBEZXN0OworICAgICAgICBfX20xMjggZGVzdDsKKworCisgICAgICAgIGlmIChyZWlu
dGVycHJldF9jYXN0PHNpemVfdD4oZGVzdFApICYgMHgwRikgeworICAgICAgICAgICAgd2hpbGUg
KGdyb3VwLS0pIHsKKyAgICAgICAgICAgICAgICBwU291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxf
X20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oc291cmNlUCkpOworICAgICAgICAgICAgICAgIGRl
c3QgPSBfbW1fbXVsX3BzKCpwU291cmNlLCBtU2NhbGUpOworICAgICAgICAgICAgICAgIF9tbV9z
dG9yZXVfcHMoZGVzdFAsIGRlc3QpOworCisgICAgICAgICAgICAgICAgc291cmNlUCArPSA0Owor
ICAgICAgICAgICAgICAgIGRlc3RQICs9IDQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB3aGlsZSAoZ3JvdXAtLSkgeworICAgICAgICAgICAgICAgIHBTb3Vy
Y2UgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGNvbnN0X2Nhc3Q8ZmxvYXQqPihzb3VyY2VQ
KSk7CisgICAgICAgICAgICAgICAgcERlc3QgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGRl
c3RQKTsKKyAgICAgICAgICAgICAgICAqcERlc3QgPSBfbW1fbXVsX3BzKCpwU291cmNlLCBtU2Nh
bGUpOworCisgICAgICAgICAgICAgICAgc291cmNlUCArPSA0OworICAgICAgICAgICAgICAgIGRl
c3RQICs9IDQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBOb24tU1NF
IGhhbmRsaW5nIGZvciByZW1haW5pbmcgZnJhbWVzIHdoaWNoIGlzIGxlc3MgdGhhbiA0LgorICAg
ICAgICBuICU9IDQ7CisgICAgICAgIHdoaWxlIChuKSB7CisgICAgICAgICAgICAqZGVzdFAgPSBr
ICogKnNvdXJjZVA7CisgICAgICAgICAgICBzb3VyY2VQKys7CisgICAgICAgICAgICBkZXN0UCsr
OworICAgICAgICAgICAgbi0tOworICAgICAgICB9CisgICAgfSBlbHNlIHsgLy8gSWYgc3RyaWRl
cyBhcmUgbm90IDEsIHJvbGxiYWNrIHRvIG5vcm1hbCBhbGdvcml0aG0uCisjZW5kaWYKICAgICBp
bnQgbiA9IGZyYW1lc1RvUHJvY2VzczsKICAgICBmbG9hdCBrID0gKnNjYWxlOwogICAgIHdoaWxl
IChuLS0pIHsKQEAgLTcxLDExICsxMjYsOTcgQEAgdm9pZCB2c211bChjb25zdCBmbG9hdCogc291
cmNlUCwgaW50IHNvdQogICAgICAgICBzb3VyY2VQICs9IHNvdXJjZVN0cmlkZTsKICAgICAgICAg
ZGVzdFAgKz0gZGVzdFN0cmlkZTsKICAgICB9CisjaWZkZWYgX19TU0UyX18KKyAgICB9CisjZW5k
aWYKIH0KIAogdm9pZCB2YWRkKGNvbnN0IGZsb2F0KiBzb3VyY2UxUCwgaW50IHNvdXJjZVN0cmlk
ZTEsIGNvbnN0IGZsb2F0KiBzb3VyY2UyUCwgaW50IHNvdXJjZVN0cmlkZTIsIGZsb2F0KiBkZXN0
UCwgaW50IGRlc3RTdHJpZGUsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7Ci0gICAgLy8gRklY
TUU6IG9wdGltaXplIGZvciBTU0UKKyNpZmRlZiBfX1NTRTJfXworICAgIGlmICgoc291cmNlU3Ry
aWRlMSA9PTEpICYmIChzb3VyY2VTdHJpZGUyID09IDEpICYmIChkZXN0U3RyaWRlID09IDEpKSB7
CisKKyAgICAgICAgaW50IG4gPSBmcmFtZXNUb1Byb2Nlc3M7CisKKyAgICAgICAgLy8gSWYgdGhl
IHNvdXJjZVAgYWRkcmVzcyBpcyBub3QgMTYtYnl0ZSBhbGlnbmVkLCB0aGUgZmlyc3Qgc2V2ZXJh
bCBmcmFtZXMgKGF0IG1vc3QgdGhyZWUpIHNob3VsZCBiZSBwcm9jZXNzZWQgc2VwZXJhdGVseS4K
KyAgICAgICAgd2hpbGUgKChyZWludGVycHJldF9jYXN0PHNpemVfdD4oc291cmNlMVApICYgMHgw
RikgJiYgbikgeworICAgICAgICAgICAgKmRlc3RQID0gKnNvdXJjZTFQICsgKnNvdXJjZTJQOwor
ICAgICAgICAgICAgc291cmNlMVArKzsKKyAgICAgICAgICAgIHNvdXJjZTJQKys7CisgICAgICAg
ICAgICBkZXN0UCsrOworICAgICAgICAgICAgbi0tOworICAgICAgICB9CisKKyAgICAgICAgLy8g
Tm93IHRoZSBzb3VyY2UxUCBhZGRyZXNzIGlzIGFsaWduZWQgYW5kIHN0YXJ0IHRvIGFwcGx5IFNT
RS4KKyAgICAgICAgaW50IGdyb3VwID0gbiAvIDQ7CisgICAgICAgIF9fbTEyOCogcFNvdXJjZTE7
CisgICAgICAgIF9fbTEyOCogcFNvdXJjZTI7CisgICAgICAgIF9fbTEyOCogcERlc3Q7CisgICAg
ICAgIF9fbTEyOCBzb3VyY2UyOworICAgICAgICBfX20xMjggZGVzdDsKKworICAgICAgICBib29s
IHNvdXJjZTJBbGlnbmVkID0gIShyZWludGVycHJldF9jYXN0PHNpemVfdD4oc291cmNlMlApICYg
MHgwRik7CisgICAgICAgIGJvb2wgZGVzdEFsaWduZWQgPSAhKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6
ZV90PihkZXN0UCkgJiAweDBGKTsKKworICAgICAgICBpZiAoc291cmNlMkFsaWduZWQgJiYgZGVz
dEFsaWduZWQpIHsgLy8gYWxsIGFsaWduZWQKKyAgICAgICAgICAgIHdoaWxlIChncm91cC0tKSB7
CisgICAgICAgICAgICAgICAgcFNvdXJjZTEgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGNv
bnN0X2Nhc3Q8ZmxvYXQqPihzb3VyY2UxUCkpOworICAgICAgICAgICAgICAgIHBTb3VyY2UyID0g
cmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oc291cmNlMlApKTsK
KyAgICAgICAgICAgICAgICBwRGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4oZGVzdFAp
OworICAgICAgICAgICAgICAgICpwRGVzdCA9IF9tbV9hZGRfcHMoKnBTb3VyY2UxLCAqcFNvdXJj
ZTIpOworCisgICAgICAgICAgICAgICAgc291cmNlMVAgKz0gNDsKKyAgICAgICAgICAgICAgICBz
b3VyY2UyUCArPSA0OworICAgICAgICAgICAgICAgIGRlc3RQICs9IDQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgfSBlbHNlIGlmIChzb3VyY2UyQWxpZ25lZCAmJiAhZGVzdEFsaWduZWQpIHsg
Ly8gc291cmNlMiBhbGlnbmVkIGJ1dCBkZXN0IG5vdCBhbGlnbmVkIAorICAgICAgICAgICAgd2hp
bGUgKGdyb3VwLS0pIHsKKyAgICAgICAgICAgICAgICBwU291cmNlMSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8X19tMTI4Kj4oY29uc3RfY2FzdDxmbG9hdCo+KHNvdXJjZTFQKSk7CisgICAgICAgICAgICAg
ICAgcFNvdXJjZTIgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGNvbnN0X2Nhc3Q8ZmxvYXQq
Pihzb3VyY2UyUCkpOworICAgICAgICAgICAgICAgIGRlc3QgPSBfbW1fYWRkX3BzKCpwU291cmNl
MSwgKnBTb3VyY2UyKTsKKyAgICAgICAgICAgICAgICBfbW1fc3RvcmV1X3BzKGRlc3RQLCBkZXN0
KTsKKworICAgICAgICAgICAgICAgIHNvdXJjZTFQICs9IDQ7CisgICAgICAgICAgICAgICAgc291
cmNlMlAgKz0gNDsKKyAgICAgICAgICAgICAgICBkZXN0UCArPSA0OworICAgICAgICAgICAgfQor
CisgICAgICAgIH0gZWxzZSBpZiAoIXNvdXJjZTJBbGlnbmVkICYmIGRlc3RBbGlnbmVkKSB7IC8v
IHNvdXJjZTIgbm90IGFsaWduZWQgYnV0IGRlc3QgYWxpZ25lZCAKKyAgICAgICAgICAgIHdoaWxl
IChncm91cC0tKSB7CisgICAgICAgICAgICAgICAgcFNvdXJjZTEgPSByZWludGVycHJldF9jYXN0
PF9fbTEyOCo+KGNvbnN0X2Nhc3Q8ZmxvYXQqPihzb3VyY2UxUCkpOworICAgICAgICAgICAgICAg
IHNvdXJjZTIgPSBfbW1fbG9hZHVfcHMoc291cmNlMlApOworICAgICAgICAgICAgICAgIHBEZXN0
ID0gcmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihkZXN0UCk7CisgICAgICAgICAgICAgICAgKnBE
ZXN0ID0gX21tX2FkZF9wcygqcFNvdXJjZTEsIHNvdXJjZTIpOworCisgICAgICAgICAgICAgICAg
c291cmNlMVAgKz0gNDsKKyAgICAgICAgICAgICAgICBzb3VyY2UyUCArPSA0OworICAgICAgICAg
ICAgICAgIGRlc3RQICs9IDQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoIXNv
dXJjZTJBbGlnbmVkICYmICFkZXN0QWxpZ25lZCkgeyAvLyBib3RoIHNvdXJjZTIgYW5kIGRlc3Qg
bm90IGFsaWduZWQgCisgICAgICAgICAgICB3aGlsZSAoZ3JvdXAtLSkgeworICAgICAgICAgICAg
ICAgIHBTb3VyY2UxID0gcmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihjb25zdF9jYXN0PGZsb2F0
Kj4oc291cmNlMVApKTsKKyAgICAgICAgICAgICAgICBzb3VyY2UyID0gX21tX2xvYWR1X3BzKHNv
dXJjZTJQKTsKKyAgICAgICAgICAgICAgICBkZXN0ID0gX21tX2FkZF9wcygqcFNvdXJjZTEsIHNv
dXJjZTIpOworICAgICAgICAgICAgICAgIF9tbV9zdG9yZXVfcHMoZGVzdFAsIGRlc3QpOworCisg
ICAgICAgICAgICAgICAgc291cmNlMVAgKz0gNDsKKyAgICAgICAgICAgICAgICBzb3VyY2UyUCAr
PSA0OworICAgICAgICAgICAgICAgIGRlc3RQICs9IDQ7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICAvLyBOb24tU1NFIGhhbmRsaW5nIGZvciByZW1haW5pbmcgZnJhbWVzIHdo
aWNoIGlzIGxlc3MgdGhhbiA0LgorICAgICAgICBuICU9IDQ7CisgICAgICAgIHdoaWxlIChuKSB7
CisgICAgICAgICAgICAqZGVzdFAgPSAqc291cmNlMVAgKyAqc291cmNlMlA7CisgICAgICAgICAg
ICBzb3VyY2UxUCsrOworICAgICAgICAgICAgc291cmNlMlArKzsKKyAgICAgICAgICAgIGRlc3RQ
Kys7CisgICAgICAgICAgICBuLS07CisgICAgICAgIH0KKyAgICB9IGVsc2UgeyAvLyBpZiBzdHJp
ZGVzIGFyZSBub3QgMSwgcm9sbGJhY2sgdG8gbm9ybWFsIGFsZ29yaXRobQorI2VuZGlmCiAgICAg
aW50IG4gPSBmcmFtZXNUb1Byb2Nlc3M7CiAgICAgd2hpbGUgKG4tLSkgewogICAgICAgICAqZGVz
dFAgPSAqc291cmNlMVAgKyAqc291cmNlMlA7CkBAIC04Myw2ICsyMjQsOSBAQCB2b2lkIHZhZGQo
Y29uc3QgZmxvYXQqIHNvdXJjZTFQLCBpbnQgc291CiAgICAgICAgIHNvdXJjZTJQICs9IHNvdXJj
ZVN0cmlkZTI7CiAgICAgICAgIGRlc3RQICs9IGRlc3RTdHJpZGU7CiAgICAgfQorI2lmZGVmIF9f
U1NFMl9fCisgICAgfQorI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBPUyhEQVJXSU4pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>