<?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>98131</bug_id>
          
          <creation_ts>2012-10-02 02:47:47 -0700</creation_ts>
          <short_desc>Add ARM-NEON support to VectorMath in WebAudio</short_desc>
          <delta_ts>2013-02-25 18:04:23 -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>Unspecified</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="Gabor Rapcsanyi">rgabor</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>crogers</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jer.noble</cc>
    
    <cc>rtoy</cc>
    
    <cc>s.choi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>732456</commentid>
    <comment_count>0</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-10-02 02:47:47 -0700</bug_when>
    <thetext>Add ARM-NEON support to VectorMath in WebAudio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732622</commentid>
    <comment_count>1</comment_count>
      <attachid>166684</attachid>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-10-02 06:48:37 -0700</bug_when>
    <thetext>Created attachment 166684
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732782</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-10-02 10:16:10 -0700</bug_when>
    <thetext>Ray, could you please have a look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732795</commentid>
    <comment_count>3</comment_count>
      <attachid>166684</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-10-02 10:33:27 -0700</bug_when>
    <thetext>Comment on attachment 166684
proposed patch

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

&gt; Source/WebCore/platform/audio/VectorMath.cpp:632
&gt; +        max = std::max(max, groupMax[0]);
&gt; +        max = std::max(max, groupMax[1]);
&gt; +        max = std::max(max, groupMax[2]);
&gt; +        max = std::max(max, groupMax[3]);

Can&apos;t we use vmax here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732850</commentid>
    <comment_count>4</comment_count>
      <attachid>166684</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-10-02 11:18:26 -0700</bug_when>
    <thetext>Comment on attachment 166684
proposed patch

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

Looks good.  Do you have any measurements to show what kind of improvements these instrinsics make?  I&apos;m just curious.

&gt; Source/WebCore/platform/audio/VectorMath.cpp:493
&gt; +            float32x4_t imagResult = vaddq_f32(vmulq_f32(real1, imag2), vmulq_f32(imag1, real2));

Can the vmla and vmls instrinsics be used here to speed things up slightly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733458</commentid>
    <comment_count>5</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-10-03 01:54:38 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 166684 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166684&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:632
&gt; &gt; +        max = std::max(max, groupMax[0]);
&gt; &gt; +        max = std::max(max, groupMax[1]);
&gt; &gt; +        max = std::max(max, groupMax[2]);
&gt; &gt; +        max = std::max(max, groupMax[3]);
&gt; 
&gt; Can&apos;t we use vmax here?

Unfortunately we can&apos;t because vmax is working on vectors and the result will be a vector as well. There is no function which gives you the highest value from a vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733473</commentid>
    <comment_count>6</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-10-03 02:17:38 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 166684 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166684&amp;action=review
&gt; 
&gt; Looks good.  Do you have any measurements to show what kind of improvements these instrinsics make?  I&apos;m just curious.
&gt; 

Yes I have made independent tests on the functions.
The vector size was 1000 with float numbers and I ran it 100000 times.
The average results:

vsma:
REF  elasped time is 3747 ms
NEON elasped time is 3642 ms

vsmul:
REF  elasped time is 2654 ms
NEON elasped time is 2375 ms

vadd:
REF  elasped time is 3457 ms
NEON elasped time is 2631 ms

vmul:
REF  elasped time is 3528 ms
NEON elasped time is 2635 ms

vmaxmgv:
REF  elasped time is 5203 ms
NEON elasped time is 2201 ms

vsvesq:
REF  elasped time is 2234 ms
NEON elasped time is 1840 ms

zvmul: (with vmla and vmls)
REF  elasped time is 8778 ms
NEON elasped time is 7963 ms

&gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:493
&gt; &gt; +            float32x4_t imagResult = vaddq_f32(vmulq_f32(real1, imag2), vmulq_f32(imag1, real2));
&gt; 
&gt; Can the vmla and vmls instrinsics be used here to speed things up slightly?

Yes you&apos;re right. We can use it here I will change this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733474</commentid>
    <comment_count>7</comment_count>
      <attachid>166832</attachid>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-10-03 02:21:04 -0700</bug_when>
    <thetext>Created attachment 166832
proposed patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733973</commentid>
    <comment_count>8</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-10-03 13:18:38 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 166684 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166684&amp;action=review
&gt; &gt; 
&gt; &gt; Looks good.  Do you have any measurements to show what kind of improvements these instrinsics make?  I&apos;m just curious.
&gt; &gt; 
&gt; 
&gt; Yes I have made independent tests on the functions.
&gt; The vector size was 1000 with float numbers and I ran it 100000 times.
&gt; The average results:
&gt; 
&gt; vsma:
&gt; REF  elasped time is 3747 ms
&gt; NEON elasped time is 3642 ms

Thank you very much for the measurements.

There wasn&apos;t much difference here.  Do you have any ideas on why there was very little improvement?

&gt; 
&gt; vsmul:
&gt; REF  elasped time is 2654 ms
&gt; NEON elasped time is 2375 ms
&gt; 
&gt; vadd:
&gt; REF  elasped time is 3457 ms
&gt; NEON elasped time is 2631 ms
&gt; 
&gt; vmul:
&gt; REF  elasped time is 3528 ms
&gt; NEON elasped time is 2635 ms
&gt; 
&gt; vmaxmgv:
&gt; REF  elasped time is 5203 ms
&gt; NEON elasped time is 2201 ms
&gt; 
&gt; vsvesq:
&gt; REF  elasped time is 2234 ms
&gt; NEON elasped time is 1840 ms
&gt; 
&gt; zvmul: (with vmla and vmls)
&gt; REF  elasped time is 8778 ms
&gt; NEON elasped time is 7963 ms
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:493
&gt; &gt; &gt; +            float32x4_t imagResult = vaddq_f32(vmulq_f32(real1, imag2), vmulq_f32(imag1, real2));
&gt; &gt; 
&gt; &gt; Can the vmla and vmls instrinsics be used here to speed things up slightly?
&gt; 
&gt; Yes you&apos;re right. We can use it here I will change this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733983</commentid>
    <comment_count>9</comment_count>
      <attachid>166832</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-10-03 13:25:17 -0700</bug_when>
    <thetext>Comment on attachment 166832
proposed patch 2

This looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734577</commentid>
    <comment_count>10</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-10-04 04:03:34 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (From update of attachment 166684 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166684&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; Looks good.  Do you have any measurements to show what kind of improvements these instrinsics make?  I&apos;m just curious.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; Yes I have made independent tests on the functions.
&gt; &gt; The vector size was 1000 with float numbers and I ran it 100000 times.
&gt; &gt; The average results:
&gt; &gt; 
&gt; &gt; vsma:
&gt; &gt; REF  elasped time is 3747 ms
&gt; &gt; NEON elasped time is 3642 ms
&gt; 
&gt; Thank you very much for the measurements.
&gt; 
&gt; There wasn&apos;t much difference here.  Do you have any ideas on why there was very little improvement?
&gt; 

Yes that was strange for me as well so I played with it a little and than I realized that I forgot to use -O2 when I compiled it.
So the results with -O2 on the same tests:

vsma:
REF  elasped time is 1106 ms
NEON elasped time is 458 ms

vsmul:
REF  elasped time is 803 ms
NEON elasped time is 573 ms

vadd:
REF  elasped time is 712 ms
NEON elasped time is 361 ms

vmaxmgv:
REF  elasped time is 803 ms
NEON elasped time is 217 ms

vsvesq:
REF  elasped time is 501 ms
NEON elasped time is 250 ms

vmul:
REF  elasped time is 805 ms
NEON elasped time is 363 ms

zvmul:
REF  elasped time is 1657 ms
NEON elasped time is 953 ms


Sorry for the confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734933</commentid>
    <comment_count>11</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-10-04 12:41:13 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; (From update of attachment 166684 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166684&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Looks good.  Do you have any measurements to show what kind of improvements these instrinsics make?  I&apos;m just curious.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes I have made independent tests on the functions.
&gt; &gt; &gt; The vector size was 1000 with float numbers and I ran it 100000 times.
&gt; &gt; &gt; The average results:
&gt; &gt; &gt; 
&gt; &gt; &gt; vsma:
&gt; &gt; &gt; REF  elasped time is 3747 ms
&gt; &gt; &gt; NEON elasped time is 3642 ms
&gt; &gt; 
&gt; &gt; Thank you very much for the measurements.
&gt; &gt; 
&gt; &gt; There wasn&apos;t much difference here.  Do you have any ideas on why there was very little improvement?
&gt; &gt; 
&gt; 
&gt; Yes that was strange for me as well so I played with it a little and than I realized that I forgot to use -O2 when I compiled it.
&gt; So the results with -O2 on the same tests:

Thanks for rerunning the tests. The results look very nice now, with about 2x improvement everywhere.


&gt; 
&gt; vsma:
&gt; REF  elasped time is 1106 ms
&gt; NEON elasped time is 458 ms
&gt; 
&gt; vsmul:
&gt; REF  elasped time is 803 ms
&gt; NEON elasped time is 573 ms
&gt; 
&gt; vadd:
&gt; REF  elasped time is 712 ms
&gt; NEON elasped time is 361 ms
&gt; 
&gt; vmaxmgv:
&gt; REF  elasped time is 803 ms
&gt; NEON elasped time is 217 ms
&gt; 
&gt; vsvesq:
&gt; REF  elasped time is 501 ms
&gt; NEON elasped time is 250 ms
&gt; 
&gt; vmul:
&gt; REF  elasped time is 805 ms
&gt; NEON elasped time is 363 ms
&gt; 
&gt; zvmul:
&gt; REF  elasped time is 1657 ms
&gt; NEON elasped time is 953 ms
&gt; 
&gt; 
&gt; Sorry for the confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735045</commentid>
    <comment_count>12</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-10-04 15:00:03 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 166684 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166684&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/VectorMath.cpp:632
&gt; &gt; &gt; +        max = std::max(max, groupMax[0]);
&gt; &gt; &gt; +        max = std::max(max, groupMax[1]);
&gt; &gt; &gt; +        max = std::max(max, groupMax[2]);
&gt; &gt; &gt; +        max = std::max(max, groupMax[3]);
&gt; &gt; 
&gt; &gt; Can&apos;t we use vmax here?
&gt; 
&gt; Unfortunately we can&apos;t because vmax is working on vectors and the result will be a vector as well. There is no function which gives you the highest value from a vector.

Hm true, but still you can reduce it by one max:

max(a,b,c,d):
  t1 = max(a,b);
  t2 = max(c,d);
  return max(t1,t2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735583</commentid>
    <comment_count>13</comment_count>
      <attachid>167312</attachid>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-10-05 05:15:10 -0700</bug_when>
    <thetext>Created attachment 167312
proposed patch 3

I put some more optimizations into vsvesq() and vmaxmgv() as Zoltan suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735592</commentid>
    <comment_count>14</comment_count>
      <attachid>167312</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-10-05 05:42:13 -0700</bug_when>
    <thetext>Comment on attachment 167312
proposed patch 3

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735593</commentid>
    <comment_count>15</comment_count>
      <attachid>167312</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-05 05:47:32 -0700</bug_when>
    <thetext>Comment on attachment 167312
proposed patch 3

Clearing flags on attachment: 167312

Committed r130497: &lt;http://trac.webkit.org/changeset/130497&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735594</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-05 05:47:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166684</attachid>
            <date>2012-10-02 06:48:37 -0700</date>
            <delta_ts>2012-10-03 02:21:04 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>webaudio_intrinsics.patch</filename>
            <type>text/plain</type>
            <size>8049</size>
            <attacher name="Gabor Rapcsanyi">rgabor</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZDVkZjZhLi43ZTQ4ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTItMTAtMDIgIEdhYm9yIFJhcGNzYW55aSAgPHJnYWJvckB3ZWJraXQub3JnPgorCisg
ICAgICAgIEFkZCBBUk0tTkVPTiBzdXBwb3J0IHRvIFZlY3Rvck1hdGggaW4gV2ViQXVkaW8KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTMxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlZWQgdXAgdmVj
dG9yIG9wZXJhdGlvbnMgaW4gV2ViQXVkaW8gd2l0aCBORU9OIGludHJpbnNpY3MuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZl
Y3Rvck1hdGg6OnZzbWEpOgorICAgICAgICAoV2ViQ29yZTo6VmVjdG9yTWF0aDo6dnNtdWwpOgor
ICAgICAgICAoV2ViQ29yZTo6VmVjdG9yTWF0aDo6dmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpW
ZWN0b3JNYXRoOjp2bXVsKToKKyAgICAgICAgKFdlYkNvcmU6OlZlY3Rvck1hdGg6Onp2bXVsKToK
KyAgICAgICAgKFdlYkNvcmU6OlZlY3Rvck1hdGg6OnZzdmVzcSk6CisgICAgICAgIChXZWJDb3Jl
OjpWZWN0b3JNYXRoOjp2bWF4bWd2KToKKwogMjAxMi0xMC0wMiAgUGF0cmljayBHYW5zdGVyZXIg
IDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbV0lOQ0VdIFJlbW92ZSBGb250UGxhdGZv
cm1EYXRhOjphdmVyYWdlQ2hhcldpZHRoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vVmVjdG9yTWF0aC5jcHAKaW5kZXggNjBiZTRlMGMuLmI2NmRhYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCkBAIC0zNiw2ICszNiwxMCBAQAog
I2luY2x1ZGUgPGVtbWludHJpbi5oPgogI2VuZGlmCiAKKyNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJ
TlNJQ1MpCisjaW5jbHVkZSA8YXJtX25lb24uaD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgogI2luY2x1ZGUgPG1hdGguaD4KIApAQCAtMTU1LDYgKzE1OSwyNCBAQCB2b2lkIHZzbWEo
Y29uc3QgZmxvYXQqIHNvdXJjZVAsIGludCBzb3VyY2VTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2Fs
ZSwgZmxvYXQqIGRlcwogCiAgICAgICAgIG4gPSB0YWlsRnJhbWVzOwogICAgIH0KKyNlbGlmIEhB
VkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICBpZiAoKHNvdXJjZVN0cmlkZSA9PSAxKSAmJiAo
ZGVzdFN0cmlkZSA9PSAxKSkgeworICAgICAgICBpbnQgdGFpbEZyYW1lcyA9IG4gJSA0OworICAg
ICAgICBjb25zdCBmbG9hdCogZW5kUCA9IGRlc3RQICsgbiAtIHRhaWxGcmFtZXM7CisKKyAgICAg
ICAgZmxvYXQzMng0X3QgayA9IHZkdXBxX25fZjMyKCpzY2FsZSk7CisgICAgICAgIHdoaWxlIChk
ZXN0UCA8IGVuZFApIHsKKyAgICAgICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZSA9IHZsZDFxX2Yz
Mihzb3VyY2VQKTsKKyAgICAgICAgICAgIGZsb2F0MzJ4NF90IGRlc3QgPSB2bGQxcV9mMzIoZGVz
dFApOworCisgICAgICAgICAgICBkZXN0ID0gdm1sYXFfZjMyKGRlc3QsIHNvdXJjZSwgayk7Cisg
ICAgICAgICAgICB2c3QxcV9mMzIoZGVzdFAsIGRlc3QpOworCisgICAgICAgICAgICBzb3VyY2VQ
ICs9IDQ7CisgICAgICAgICAgICBkZXN0UCArPSA0OworICAgICAgICB9CisgICAgICAgIG4gPSB0
YWlsRnJhbWVzOworICAgIH0KICNlbmRpZgogICAgIHdoaWxlIChuKSB7CiAgICAgICAgICpkZXN0
UCArPSAqc291cmNlUCAqICpzY2FsZTsKQEAgLTE2NiwxMCArMTg4LDEwIEBAIHZvaWQgdnNtYShj
b25zdCBmbG9hdCogc291cmNlUCwgaW50IHNvdXJjZVN0cmlkZSwgY29uc3QgZmxvYXQqIHNjYWxl
LCBmbG9hdCogZGVzCiAKIHZvaWQgdnNtdWwoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGludCBzb3Vy
Y2VTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxvYXQqIGRlc3RQLCBpbnQgZGVzdFN0cmlk
ZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKKyAgICBpbnQgbiA9IGZyYW1lc1RvUHJvY2Vz
czsKKwogI2lmZGVmIF9fU1NFMl9fCiAgICAgaWYgKChzb3VyY2VTdHJpZGUgPT0gMSkgJiYgKGRl
c3RTdHJpZGUgPT0gMSkpIHsKLSAgICAgICAgCi0gICAgICAgIGludCBuID0gZnJhbWVzVG9Qcm9j
ZXNzOwogICAgICAgICBmbG9hdCBrID0gKnNjYWxlOwogCiAgICAgICAgIC8vIElmIHRoZSBzb3Vy
Y2VQIGFkZHJlc3MgaXMgbm90IDE2LWJ5dGUgYWxpZ25lZCwgdGhlIGZpcnN0IHNldmVyYWwgZnJh
bWVzIChhdCBtb3N0IHRocmVlKSBzaG91bGQgYmUgcHJvY2Vzc2VkIHNlcGFyYXRlbHkuCkBAIC0y
MTcsOCArMjM5LDIyIEBAIHZvaWQgdnNtdWwoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGludCBzb3Vy
Y2VTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxvYXQqIGRlCiAgICAgICAgICAgICBuLS07
CiAgICAgICAgIH0KICAgICB9IGVsc2UgeyAvLyBJZiBzdHJpZGVzIGFyZSBub3QgMSwgcm9sbGJh
Y2sgdG8gbm9ybWFsIGFsZ29yaXRobS4KKyNlbGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykK
KyAgICBpZiAoKHNvdXJjZVN0cmlkZSA9PSAxKSAmJiAoZGVzdFN0cmlkZSA9PSAxKSkgeworICAg
ICAgICBmbG9hdCBrID0gKnNjYWxlOworICAgICAgICBpbnQgdGFpbEZyYW1lcyA9IG4gJSA0Owor
ICAgICAgICBjb25zdCBmbG9hdCogZW5kUCA9IGRlc3RQICsgbiAtIHRhaWxGcmFtZXM7CisKKyAg
ICAgICAgd2hpbGUgKGRlc3RQIDwgZW5kUCkgeworICAgICAgICAgICAgZmxvYXQzMng0X3Qgc291
cmNlID0gdmxkMXFfZjMyKHNvdXJjZVApOworICAgICAgICAgICAgdnN0MXFfZjMyKGRlc3RQLCB2
bXVscV9uX2YzMihzb3VyY2UsIGspKTsKKworICAgICAgICAgICAgc291cmNlUCArPSA0OworICAg
ICAgICAgICAgZGVzdFAgKz0gNDsKKyAgICAgICAgfQorICAgICAgICBuID0gdGFpbEZyYW1lczsK
KyAgICB9CiAjZW5kaWYKLSAgICBpbnQgbiA9IGZyYW1lc1RvUHJvY2VzczsKICAgICBmbG9hdCBr
ID0gKnNjYWxlOwogICAgIHdoaWxlIChuLS0pIHsKICAgICAgICAgKmRlc3RQID0gayAqICpzb3Vy
Y2VQOwpAQCAtMjMyLDExICsyNjgsMTAgQEAgdm9pZCB2c211bChjb25zdCBmbG9hdCogc291cmNl
UCwgaW50IHNvdXJjZVN0cmlkZSwgY29uc3QgZmxvYXQqIHNjYWxlLCBmbG9hdCogZGUKIAogdm9p
ZCB2YWRkKGNvbnN0IGZsb2F0KiBzb3VyY2UxUCwgaW50IHNvdXJjZVN0cmlkZTEsIGNvbnN0IGZs
b2F0KiBzb3VyY2UyUCwgaW50IHNvdXJjZVN0cmlkZTIsIGZsb2F0KiBkZXN0UCwgaW50IGRlc3RT
dHJpZGUsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CisgICAgaW50IG4gPSBmcmFtZXNUb1By
b2Nlc3M7CisKICNpZmRlZiBfX1NTRTJfXwogICAgIGlmICgoc291cmNlU3RyaWRlMSA9PTEpICYm
IChzb3VyY2VTdHJpZGUyID09IDEpICYmIChkZXN0U3RyaWRlID09IDEpKSB7Ci0KLSAgICAgICAg
aW50IG4gPSBmcmFtZXNUb1Byb2Nlc3M7Ci0KICAgICAgICAgLy8gSWYgdGhlIHNvdXJjZVAgYWRk
cmVzcyBpcyBub3QgMTYtYnl0ZSBhbGlnbmVkLCB0aGUgZmlyc3Qgc2V2ZXJhbCBmcmFtZXMgKGF0
IG1vc3QgdGhyZWUpIHNob3VsZCBiZSBwcm9jZXNzZWQgc2VwYXJhdGVseS4KICAgICAgICAgd2hp
bGUgKChyZWludGVycHJldF9jYXN0PHNpemVfdD4oc291cmNlMVApICYgMHgwRikgJiYgbikgewog
ICAgICAgICAgICAgKmRlc3RQID0gKnNvdXJjZTFQICsgKnNvdXJjZTJQOwpAQCAtMzE1LDggKzM1
MCwyMyBAQCB2b2lkIHZhZGQoY29uc3QgZmxvYXQqIHNvdXJjZTFQLCBpbnQgc291cmNlU3RyaWRl
MSwgY29uc3QgZmxvYXQqIHNvdXJjZTJQLCBpbnQgcwogICAgICAgICAgICAgbi0tOwogICAgICAg
ICB9CiAgICAgfSBlbHNlIHsgLy8gaWYgc3RyaWRlcyBhcmUgbm90IDEsIHJvbGxiYWNrIHRvIG5v
cm1hbCBhbGdvcml0aG0KKyNlbGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICBpZiAo
KHNvdXJjZVN0cmlkZTEgPT0xKSAmJiAoc291cmNlU3RyaWRlMiA9PSAxKSAmJiAoZGVzdFN0cmlk
ZSA9PSAxKSkgeworICAgICAgICBpbnQgdGFpbEZyYW1lcyA9IG4gJSA0OworICAgICAgICBjb25z
dCBmbG9hdCogZW5kUCA9IGRlc3RQICsgbiAtIHRhaWxGcmFtZXM7CisKKyAgICAgICAgd2hpbGUg
KGRlc3RQIDwgZW5kUCkgeworICAgICAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlMSA9IHZsZDFx
X2YzMihzb3VyY2UxUCk7CisgICAgICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2UyID0gdmxkMXFf
ZjMyKHNvdXJjZTJQKTsKKyAgICAgICAgICAgIHZzdDFxX2YzMihkZXN0UCwgdmFkZHFfZjMyKHNv
dXJjZTEsIHNvdXJjZTIpKTsKKworICAgICAgICAgICAgc291cmNlMVAgKz0gNDsKKyAgICAgICAg
ICAgIHNvdXJjZTJQICs9IDQ7CisgICAgICAgICAgICBkZXN0UCArPSA0OworICAgICAgICB9Cisg
ICAgICAgIG4gPSB0YWlsRnJhbWVzOworICAgIH0KICNlbmRpZgotICAgIGludCBuID0gZnJhbWVz
VG9Qcm9jZXNzOwogICAgIHdoaWxlIChuLS0pIHsKICAgICAgICAgKmRlc3RQID0gKnNvdXJjZTFQ
ICsgKnNvdXJjZTJQOwogICAgICAgICBzb3VyY2UxUCArPSBzb3VyY2VTdHJpZGUxOwpAQCAtMzc3
LDYgKzQyNywyMiBAQCB2b2lkIHZtdWwoY29uc3QgZmxvYXQqIHNvdXJjZTFQLCBpbnQgc291cmNl
U3RyaWRlMSwgY29uc3QgZmxvYXQqIHNvdXJjZTJQLCBpbnQgcwogCiAgICAgICAgIG4gPSB0YWls
RnJhbWVzOwogICAgIH0KKyNlbGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICBpZiAo
KHNvdXJjZVN0cmlkZTEgPT0xKSAmJiAoc291cmNlU3RyaWRlMiA9PSAxKSAmJiAoZGVzdFN0cmlk
ZSA9PSAxKSkgeworICAgICAgICBpbnQgdGFpbEZyYW1lcyA9IG4gJSA0OworICAgICAgICBjb25z
dCBmbG9hdCogZW5kUCA9IGRlc3RQICsgbiAtIHRhaWxGcmFtZXM7CisKKyAgICAgICAgd2hpbGUg
KGRlc3RQIDwgZW5kUCkgeworICAgICAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlMSA9IHZsZDFx
X2YzMihzb3VyY2UxUCk7CisgICAgICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2UyID0gdmxkMXFf
ZjMyKHNvdXJjZTJQKTsKKyAgICAgICAgICAgIHZzdDFxX2YzMihkZXN0UCwgdm11bHFfZjMyKHNv
dXJjZTEsIHNvdXJjZTIpKTsKKworICAgICAgICAgICAgc291cmNlMVAgKz0gNDsKKyAgICAgICAg
ICAgIHNvdXJjZTJQICs9IDQ7CisgICAgICAgICAgICBkZXN0UCArPSA0OworICAgICAgICB9Cisg
ICAgICAgIG4gPSB0YWlsRnJhbWVzOworICAgIH0KICNlbmRpZgogICAgIHdoaWxlIChuKSB7CiAg
ICAgICAgICpkZXN0UCA9ICpzb3VyY2UxUCAqICpzb3VyY2UyUDsKQEAgLTQxNSw2ICs0ODEsMjIg
QEAgdm9pZCB6dm11bChjb25zdCBmbG9hdCogcmVhbDFQLCBjb25zdCBmbG9hdCogaW1hZzFQLCBj
b25zdCBmbG9hdCogcmVhbDJQLCBjb25zdAogICAgICAgICAgICAgaSArPSA0OwogICAgICAgICB9
CiAgICAgfQorI2VsaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorICAgICAgICB1bnNpZ25l
ZCBlbmRTaXplID0gZnJhbWVzVG9Qcm9jZXNzIC0gZnJhbWVzVG9Qcm9jZXNzICUgNDsKKyAgICAg
ICAgd2hpbGUgKGkgPCBlbmRTaXplKSB7CisgICAgICAgICAgICBmbG9hdDMyeDRfdCByZWFsMSA9
IHZsZDFxX2YzMihyZWFsMVAgKyBpKTsKKyAgICAgICAgICAgIGZsb2F0MzJ4NF90IHJlYWwyID0g
dmxkMXFfZjMyKHJlYWwyUCArIGkpOworICAgICAgICAgICAgZmxvYXQzMng0X3QgaW1hZzEgPSB2
bGQxcV9mMzIoaW1hZzFQICsgaSk7CisgICAgICAgICAgICBmbG9hdDMyeDRfdCBpbWFnMiA9IHZs
ZDFxX2YzMihpbWFnMlAgKyBpKTsKKworICAgICAgICAgICAgZmxvYXQzMng0X3QgcmVhbFJlc3Vs
dCA9IHZzdWJxX2YzMih2bXVscV9mMzIocmVhbDEsIHJlYWwyKSwgdm11bHFfZjMyKGltYWcxLCBp
bWFnMikpOworICAgICAgICAgICAgZmxvYXQzMng0X3QgaW1hZ1Jlc3VsdCA9IHZhZGRxX2YzMih2
bXVscV9mMzIocmVhbDEsIGltYWcyKSwgdm11bHFfZjMyKGltYWcxLCByZWFsMikpOworCisgICAg
ICAgICAgICB2c3QxcV9mMzIocmVhbERlc3RQICsgaSwgcmVhbFJlc3VsdCk7CisgICAgICAgICAg
ICB2c3QxcV9mMzIoaW1hZ0Rlc3RQICsgaSwgaW1hZ1Jlc3VsdCk7CisKKyAgICAgICAgICAgIGkg
Kz0gNDsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgZm9yICg7IGkgPCBmcmFtZXNUb1Byb2Nlc3M7
ICsraSkgewogICAgICAgICAvLyBSZWFkIGFuZCBjb21wdXRlIHJlc3VsdCBiZWZvcmUgc3Rvcmlu
ZyB0aGVtLCBpbiBjYXNlIHRoZQpAQCAtNDYxLDYgKzU0MywyNCBAQCB2b2lkIHZzdmVzcShjb25z
dCBmbG9hdCogc291cmNlUCwgaW50IHNvdXJjZVN0cmlkZSwgZmxvYXQqIHN1bVAsIHNpemVfdCBm
cmFtZXNUbwogIAogICAgICAgICBuID0gdGFpbEZyYW1lczsgCiAgICAgfSAKKyNlbGlmIEhBVkUo
QVJNX05FT05fSU5UUklOU0lDUykKKyAgICBpZiAoc291cmNlU3RyaWRlID09IDEpIHsKKyAgICAg
ICAgaW50IHRhaWxGcmFtZXMgPSBuICUgNDsKKyAgICAgICAgY29uc3QgZmxvYXQqIGVuZFAgPSBz
b3VyY2VQICsgbiAtIHRhaWxGcmFtZXM7CisKKyAgICAgICAgZmxvYXQzMng0X3QgbVN1bSA9IHZk
dXBxX25fZjMyKDApOworICAgICAgICB3aGlsZSAoc291cmNlUCA8IGVuZFApIHsKKyAgICAgICAg
ICAgIGZsb2F0MzJ4NF90IHNvdXJjZSA9IHZsZDFxX2YzMihzb3VyY2VQKTsKKyAgICAgICAgICAg
IG1TdW0gPSB2bWxhcV9mMzIobVN1bSwgc291cmNlLCBzb3VyY2UpOworICAgICAgICAgICAgc291
cmNlUCArPSA0OworICAgICAgICB9CisKKyAgICAgICAgZmxvYXQgZ3JvdXBTdW1bNF07CisgICAg
ICAgIHZzdDFxX2YzMihncm91cFN1bSwgbVN1bSk7CisgICAgICAgIHN1bSArPSBncm91cFN1bVsw
XSArIGdyb3VwU3VtWzFdICsgZ3JvdXBTdW1bMl0gKyBncm91cFN1bVszXTsKKworICAgICAgICBu
ID0gdGFpbEZyYW1lczsKKyAgICB9CiAjZW5kaWYKIAogICAgIHdoaWxlIChuLS0pIHsKQEAgLTUx
Miw2ICs2MTIsMjcgQEAgdm9pZCB2bWF4bWd2KGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBpbnQgc291
cmNlU3RyaWRlLCBmbG9hdCogbWF4UCwgc2l6ZV90IGZyYW1lc1QKIAogICAgICAgICBuID0gdGFp
bEZyYW1lczsKICAgICB9CisjZWxpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisgICAgaWYg
KHNvdXJjZVN0cmlkZSA9PSAxKSB7CisgICAgICAgIGludCB0YWlsRnJhbWVzID0gbiAlIDQ7Cisg
ICAgICAgIGNvbnN0IGZsb2F0KiBlbmRQID0gc291cmNlUCArIG4gLSB0YWlsRnJhbWVzOworCisg
ICAgICAgIGZsb2F0MzJ4NF90IG1NYXggPSB2ZHVwcV9uX2YzMigwKTsKKyAgICAgICAgd2hpbGUg
KHNvdXJjZVAgPCBlbmRQKSB7CisgICAgICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2UgPSB2bGQx
cV9mMzIoc291cmNlUCk7CisgICAgICAgICAgICBtTWF4ID0gdm1heHFfZjMyKG1NYXgsIHZhYnNx
X2YzMihzb3VyY2UpKTsKKyAgICAgICAgICAgIHNvdXJjZVAgKz0gNDsKKyAgICAgICAgfQorCisg
ICAgICAgIGZsb2F0IGdyb3VwTWF4WzRdOworICAgICAgICB2c3QxcV9mMzIoZ3JvdXBNYXgsIG1N
YXgpOworICAgICAgICBtYXggPSBzdGQ6Om1heChtYXgsIGdyb3VwTWF4WzBdKTsKKyAgICAgICAg
bWF4ID0gc3RkOjptYXgobWF4LCBncm91cE1heFsxXSk7CisgICAgICAgIG1heCA9IHN0ZDo6bWF4
KG1heCwgZ3JvdXBNYXhbMl0pOworICAgICAgICBtYXggPSBzdGQ6Om1heChtYXgsIGdyb3VwTWF4
WzNdKTsKKworICAgICAgICBuID0gdGFpbEZyYW1lczsKKyAgICB9CiAjZW5kaWYKIAogICAgIHdo
aWxlIChuLS0pIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166832</attachid>
            <date>2012-10-03 02:21:04 -0700</date>
            <delta_ts>2012-10-05 05:15:10 -0700</delta_ts>
            <desc>proposed patch 2</desc>
            <filename>webaudio_intrinsics.patch2</filename>
            <type>text/plain</type>
            <size>8027</size>
            <attacher name="Gabor Rapcsanyi">rgabor</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZDVkZjZhLi43ZTQ4ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTItMTAtMDIgIEdhYm9yIFJhcGNzYW55aSAgPHJnYWJvckB3ZWJraXQub3JnPgorCisg
ICAgICAgIEFkZCBBUk0tTkVPTiBzdXBwb3J0IHRvIFZlY3Rvck1hdGggaW4gV2ViQXVkaW8KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTMxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlZWQgdXAgdmVj
dG9yIG9wZXJhdGlvbnMgaW4gV2ViQXVkaW8gd2l0aCBORU9OIGludHJpbnNpY3MuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZl
Y3Rvck1hdGg6OnZzbWEpOgorICAgICAgICAoV2ViQ29yZTo6VmVjdG9yTWF0aDo6dnNtdWwpOgor
ICAgICAgICAoV2ViQ29yZTo6VmVjdG9yTWF0aDo6dmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpW
ZWN0b3JNYXRoOjp2bXVsKToKKyAgICAgICAgKFdlYkNvcmU6OlZlY3Rvck1hdGg6Onp2bXVsKToK
KyAgICAgICAgKFdlYkNvcmU6OlZlY3Rvck1hdGg6OnZzdmVzcSk6CisgICAgICAgIChXZWJDb3Jl
OjpWZWN0b3JNYXRoOjp2bWF4bWd2KToKKwogMjAxMi0xMC0wMiAgUGF0cmljayBHYW5zdGVyZXIg
IDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbV0lOQ0VdIFJlbW92ZSBGb250UGxhdGZv
cm1EYXRhOjphdmVyYWdlQ2hhcldpZHRoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vVmVjdG9yTWF0aC5jcHAKaW5kZXggNjBiZTRlMGMuLmI2NmRhYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCkBAIC0zNiw2ICszNiwxMCBAQAog
I2luY2x1ZGUgPGVtbWludHJpbi5oPgogI2VuZGlmCiAKKyNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJ
TlNJQ1MpCisjaW5jbHVkZSA8YXJtX25lb24uaD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgogI2luY2x1ZGUgPG1hdGguaD4KIApAQCAtMTU1LDYgKzE1OSwyNCBAQCB2b2lkIHZzbWEo
Y29uc3QgZmxvYXQqIHNvdXJjZVAsIGludCBzb3VyY2VTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2Fs
ZSwgZmxvYXQqIGRlcwogCiAgICAgICAgIG4gPSB0YWlsRnJhbWVzOwogICAgIH0KKyNlbGlmIEhB
VkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICBpZiAoKHNvdXJjZVN0cmlkZSA9PSAxKSAmJiAo
ZGVzdFN0cmlkZSA9PSAxKSkgeworICAgICAgICBpbnQgdGFpbEZyYW1lcyA9IG4gJSA0OworICAg
ICAgICBjb25zdCBmbG9hdCogZW5kUCA9IGRlc3RQICsgbiAtIHRhaWxGcmFtZXM7CisKKyAgICAg
ICAgZmxvYXQzMng0X3QgayA9IHZkdXBxX25fZjMyKCpzY2FsZSk7CisgICAgICAgIHdoaWxlIChk
ZXN0UCA8IGVuZFApIHsKKyAgICAgICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZSA9IHZsZDFxX2Yz
Mihzb3VyY2VQKTsKKyAgICAgICAgICAgIGZsb2F0MzJ4NF90IGRlc3QgPSB2bGQxcV9mMzIoZGVz
dFApOworCisgICAgICAgICAgICBkZXN0ID0gdm1sYXFfZjMyKGRlc3QsIHNvdXJjZSwgayk7Cisg
ICAgICAgICAgICB2c3QxcV9mMzIoZGVzdFAsIGRlc3QpOworCisgICAgICAgICAgICBzb3VyY2VQ
ICs9IDQ7CisgICAgICAgICAgICBkZXN0UCArPSA0OworICAgICAgICB9CisgICAgICAgIG4gPSB0
YWlsRnJhbWVzOworICAgIH0KICNlbmRpZgogICAgIHdoaWxlIChuKSB7CiAgICAgICAgICpkZXN0
UCArPSAqc291cmNlUCAqICpzY2FsZTsKQEAgLTE2NiwxMCArMTg4LDEwIEBAIHZvaWQgdnNtYShj
b25zdCBmbG9hdCogc291cmNlUCwgaW50IHNvdXJjZVN0cmlkZSwgY29uc3QgZmxvYXQqIHNjYWxl
LCBmbG9hdCogZGVzCiAKIHZvaWQgdnNtdWwoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGludCBzb3Vy
Y2VTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxvYXQqIGRlc3RQLCBpbnQgZGVzdFN0cmlk
ZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKKyAgICBpbnQgbiA9IGZyYW1lc1RvUHJvY2Vz
czsKKwogI2lmZGVmIF9fU1NFMl9fCiAgICAgaWYgKChzb3VyY2VTdHJpZGUgPT0gMSkgJiYgKGRl
c3RTdHJpZGUgPT0gMSkpIHsKLSAgICAgICAgCi0gICAgICAgIGludCBuID0gZnJhbWVzVG9Qcm9j
ZXNzOwogICAgICAgICBmbG9hdCBrID0gKnNjYWxlOwogCiAgICAgICAgIC8vIElmIHRoZSBzb3Vy
Y2VQIGFkZHJlc3MgaXMgbm90IDE2LWJ5dGUgYWxpZ25lZCwgdGhlIGZpcnN0IHNldmVyYWwgZnJh
bWVzIChhdCBtb3N0IHRocmVlKSBzaG91bGQgYmUgcHJvY2Vzc2VkIHNlcGFyYXRlbHkuCkBAIC0y
MTcsOCArMjM5LDIyIEBAIHZvaWQgdnNtdWwoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGludCBzb3Vy
Y2VTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxvYXQqIGRlCiAgICAgICAgICAgICBuLS07
CiAgICAgICAgIH0KICAgICB9IGVsc2UgeyAvLyBJZiBzdHJpZGVzIGFyZSBub3QgMSwgcm9sbGJh
Y2sgdG8gbm9ybWFsIGFsZ29yaXRobS4KKyNlbGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykK
KyAgICBpZiAoKHNvdXJjZVN0cmlkZSA9PSAxKSAmJiAoZGVzdFN0cmlkZSA9PSAxKSkgeworICAg
ICAgICBmbG9hdCBrID0gKnNjYWxlOworICAgICAgICBpbnQgdGFpbEZyYW1lcyA9IG4gJSA0Owor
ICAgICAgICBjb25zdCBmbG9hdCogZW5kUCA9IGRlc3RQICsgbiAtIHRhaWxGcmFtZXM7CisKKyAg
ICAgICAgd2hpbGUgKGRlc3RQIDwgZW5kUCkgeworICAgICAgICAgICAgZmxvYXQzMng0X3Qgc291
cmNlID0gdmxkMXFfZjMyKHNvdXJjZVApOworICAgICAgICAgICAgdnN0MXFfZjMyKGRlc3RQLCB2
bXVscV9uX2YzMihzb3VyY2UsIGspKTsKKworICAgICAgICAgICAgc291cmNlUCArPSA0OworICAg
ICAgICAgICAgZGVzdFAgKz0gNDsKKyAgICAgICAgfQorICAgICAgICBuID0gdGFpbEZyYW1lczsK
KyAgICB9CiAjZW5kaWYKLSAgICBpbnQgbiA9IGZyYW1lc1RvUHJvY2VzczsKICAgICBmbG9hdCBr
ID0gKnNjYWxlOwogICAgIHdoaWxlIChuLS0pIHsKICAgICAgICAgKmRlc3RQID0gayAqICpzb3Vy
Y2VQOwpAQCAtMjMyLDExICsyNjgsMTAgQEAgdm9pZCB2c211bChjb25zdCBmbG9hdCogc291cmNl
UCwgaW50IHNvdXJjZVN0cmlkZSwgY29uc3QgZmxvYXQqIHNjYWxlLCBmbG9hdCogZGUKIAogdm9p
ZCB2YWRkKGNvbnN0IGZsb2F0KiBzb3VyY2UxUCwgaW50IHNvdXJjZVN0cmlkZTEsIGNvbnN0IGZs
b2F0KiBzb3VyY2UyUCwgaW50IHNvdXJjZVN0cmlkZTIsIGZsb2F0KiBkZXN0UCwgaW50IGRlc3RT
dHJpZGUsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CisgICAgaW50IG4gPSBmcmFtZXNUb1By
b2Nlc3M7CisKICNpZmRlZiBfX1NTRTJfXwogICAgIGlmICgoc291cmNlU3RyaWRlMSA9PTEpICYm
IChzb3VyY2VTdHJpZGUyID09IDEpICYmIChkZXN0U3RyaWRlID09IDEpKSB7Ci0KLSAgICAgICAg
aW50IG4gPSBmcmFtZXNUb1Byb2Nlc3M7Ci0KICAgICAgICAgLy8gSWYgdGhlIHNvdXJjZVAgYWRk
cmVzcyBpcyBub3QgMTYtYnl0ZSBhbGlnbmVkLCB0aGUgZmlyc3Qgc2V2ZXJhbCBmcmFtZXMgKGF0
IG1vc3QgdGhyZWUpIHNob3VsZCBiZSBwcm9jZXNzZWQgc2VwYXJhdGVseS4KICAgICAgICAgd2hp
bGUgKChyZWludGVycHJldF9jYXN0PHNpemVfdD4oc291cmNlMVApICYgMHgwRikgJiYgbikgewog
ICAgICAgICAgICAgKmRlc3RQID0gKnNvdXJjZTFQICsgKnNvdXJjZTJQOwpAQCAtMzE1LDggKzM1
MCwyMyBAQCB2b2lkIHZhZGQoY29uc3QgZmxvYXQqIHNvdXJjZTFQLCBpbnQgc291cmNlU3RyaWRl
MSwgY29uc3QgZmxvYXQqIHNvdXJjZTJQLCBpbnQgcwogICAgICAgICAgICAgbi0tOwogICAgICAg
ICB9CiAgICAgfSBlbHNlIHsgLy8gaWYgc3RyaWRlcyBhcmUgbm90IDEsIHJvbGxiYWNrIHRvIG5v
cm1hbCBhbGdvcml0aG0KKyNlbGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICBpZiAo
KHNvdXJjZVN0cmlkZTEgPT0xKSAmJiAoc291cmNlU3RyaWRlMiA9PSAxKSAmJiAoZGVzdFN0cmlk
ZSA9PSAxKSkgeworICAgICAgICBpbnQgdGFpbEZyYW1lcyA9IG4gJSA0OworICAgICAgICBjb25z
dCBmbG9hdCogZW5kUCA9IGRlc3RQICsgbiAtIHRhaWxGcmFtZXM7CisKKyAgICAgICAgd2hpbGUg
KGRlc3RQIDwgZW5kUCkgeworICAgICAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlMSA9IHZsZDFx
X2YzMihzb3VyY2UxUCk7CisgICAgICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2UyID0gdmxkMXFf
ZjMyKHNvdXJjZTJQKTsKKyAgICAgICAgICAgIHZzdDFxX2YzMihkZXN0UCwgdmFkZHFfZjMyKHNv
dXJjZTEsIHNvdXJjZTIpKTsKKworICAgICAgICAgICAgc291cmNlMVAgKz0gNDsKKyAgICAgICAg
ICAgIHNvdXJjZTJQICs9IDQ7CisgICAgICAgICAgICBkZXN0UCArPSA0OworICAgICAgICB9Cisg
ICAgICAgIG4gPSB0YWlsRnJhbWVzOworICAgIH0KICNlbmRpZgotICAgIGludCBuID0gZnJhbWVz
VG9Qcm9jZXNzOwogICAgIHdoaWxlIChuLS0pIHsKICAgICAgICAgKmRlc3RQID0gKnNvdXJjZTFQ
ICsgKnNvdXJjZTJQOwogICAgICAgICBzb3VyY2UxUCArPSBzb3VyY2VTdHJpZGUxOwpAQCAtMzc3
LDYgKzQyNywyMiBAQCB2b2lkIHZtdWwoY29uc3QgZmxvYXQqIHNvdXJjZTFQLCBpbnQgc291cmNl
U3RyaWRlMSwgY29uc3QgZmxvYXQqIHNvdXJjZTJQLCBpbnQgcwogCiAgICAgICAgIG4gPSB0YWls
RnJhbWVzOwogICAgIH0KKyNlbGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICBpZiAo
KHNvdXJjZVN0cmlkZTEgPT0xKSAmJiAoc291cmNlU3RyaWRlMiA9PSAxKSAmJiAoZGVzdFN0cmlk
ZSA9PSAxKSkgeworICAgICAgICBpbnQgdGFpbEZyYW1lcyA9IG4gJSA0OworICAgICAgICBjb25z
dCBmbG9hdCogZW5kUCA9IGRlc3RQICsgbiAtIHRhaWxGcmFtZXM7CisKKyAgICAgICAgd2hpbGUg
KGRlc3RQIDwgZW5kUCkgeworICAgICAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlMSA9IHZsZDFx
X2YzMihzb3VyY2UxUCk7CisgICAgICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2UyID0gdmxkMXFf
ZjMyKHNvdXJjZTJQKTsKKyAgICAgICAgICAgIHZzdDFxX2YzMihkZXN0UCwgdm11bHFfZjMyKHNv
dXJjZTEsIHNvdXJjZTIpKTsKKworICAgICAgICAgICAgc291cmNlMVAgKz0gNDsKKyAgICAgICAg
ICAgIHNvdXJjZTJQICs9IDQ7CisgICAgICAgICAgICBkZXN0UCArPSA0OworICAgICAgICB9Cisg
ICAgICAgIG4gPSB0YWlsRnJhbWVzOworICAgIH0KICNlbmRpZgogICAgIHdoaWxlIChuKSB7CiAg
ICAgICAgICpkZXN0UCA9ICpzb3VyY2UxUCAqICpzb3VyY2UyUDsKQEAgLTQxNSw2ICs0ODEsMjIg
QEAgdm9pZCB6dm11bChjb25zdCBmbG9hdCogcmVhbDFQLCBjb25zdCBmbG9hdCogaW1hZzFQLCBj
b25zdCBmbG9hdCogcmVhbDJQLCBjb25zdAogICAgICAgICAgICAgaSArPSA0OwogICAgICAgICB9
CiAgICAgfQorI2VsaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorICAgICAgICB1bnNpZ25l
ZCBlbmRTaXplID0gZnJhbWVzVG9Qcm9jZXNzIC0gZnJhbWVzVG9Qcm9jZXNzICUgNDsKKyAgICAg
ICAgd2hpbGUgKGkgPCBlbmRTaXplKSB7CisgICAgICAgICAgICBmbG9hdDMyeDRfdCByZWFsMSA9
IHZsZDFxX2YzMihyZWFsMVAgKyBpKTsKKyAgICAgICAgICAgIGZsb2F0MzJ4NF90IHJlYWwyID0g
dmxkMXFfZjMyKHJlYWwyUCArIGkpOworICAgICAgICAgICAgZmxvYXQzMng0X3QgaW1hZzEgPSB2
bGQxcV9mMzIoaW1hZzFQICsgaSk7CisgICAgICAgICAgICBmbG9hdDMyeDRfdCBpbWFnMiA9IHZs
ZDFxX2YzMihpbWFnMlAgKyBpKTsKKworICAgICAgICAgICAgZmxvYXQzMng0X3QgcmVhbFJlc3Vs
dCA9IHZtbHNxX2YzMih2bXVscV9mMzIocmVhbDEsIHJlYWwyKSwgaW1hZzEsIGltYWcyKTsKKyAg
ICAgICAgICAgIGZsb2F0MzJ4NF90IGltYWdSZXN1bHQgPSB2bWxhcV9mMzIodm11bHFfZjMyKHJl
YWwxLCBpbWFnMiksIGltYWcxLCByZWFsMik7CisKKyAgICAgICAgICAgIHZzdDFxX2YzMihyZWFs
RGVzdFAgKyBpLCByZWFsUmVzdWx0KTsKKyAgICAgICAgICAgIHZzdDFxX2YzMihpbWFnRGVzdFAg
KyBpLCBpbWFnUmVzdWx0KTsKKworICAgICAgICAgICAgaSArPSA0OworICAgICAgICB9CiAjZW5k
aWYKICAgICBmb3IgKDsgaSA8IGZyYW1lc1RvUHJvY2VzczsgKytpKSB7CiAgICAgICAgIC8vIFJl
YWQgYW5kIGNvbXB1dGUgcmVzdWx0IGJlZm9yZSBzdG9yaW5nIHRoZW0sIGluIGNhc2UgdGhlCkBA
IC00NjEsNiArNTQzLDI0IEBAIHZvaWQgdnN2ZXNxKGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBpbnQg
c291cmNlU3RyaWRlLCBmbG9hdCogc3VtUCwgc2l6ZV90IGZyYW1lc1RvCiAgCiAgICAgICAgIG4g
PSB0YWlsRnJhbWVzOyAKICAgICB9IAorI2VsaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQor
ICAgIGlmIChzb3VyY2VTdHJpZGUgPT0gMSkgeworICAgICAgICBpbnQgdGFpbEZyYW1lcyA9IG4g
JSA0OworICAgICAgICBjb25zdCBmbG9hdCogZW5kUCA9IHNvdXJjZVAgKyBuIC0gdGFpbEZyYW1l
czsKKworICAgICAgICBmbG9hdDMyeDRfdCBtU3VtID0gdmR1cHFfbl9mMzIoMCk7CisgICAgICAg
IHdoaWxlIChzb3VyY2VQIDwgZW5kUCkgeworICAgICAgICAgICAgZmxvYXQzMng0X3Qgc291cmNl
ID0gdmxkMXFfZjMyKHNvdXJjZVApOworICAgICAgICAgICAgbVN1bSA9IHZtbGFxX2YzMihtU3Vt
LCBzb3VyY2UsIHNvdXJjZSk7CisgICAgICAgICAgICBzb3VyY2VQICs9IDQ7CisgICAgICAgIH0K
KworICAgICAgICBmbG9hdCBncm91cFN1bVs0XTsKKyAgICAgICAgdnN0MXFfZjMyKGdyb3VwU3Vt
LCBtU3VtKTsKKyAgICAgICAgc3VtICs9IGdyb3VwU3VtWzBdICsgZ3JvdXBTdW1bMV0gKyBncm91
cFN1bVsyXSArIGdyb3VwU3VtWzNdOworCisgICAgICAgIG4gPSB0YWlsRnJhbWVzOworICAgIH0K
ICNlbmRpZgogCiAgICAgd2hpbGUgKG4tLSkgewpAQCAtNTEyLDYgKzYxMiwyNyBAQCB2b2lkIHZt
YXhtZ3YoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGludCBzb3VyY2VTdHJpZGUsIGZsb2F0KiBtYXhQ
LCBzaXplX3QgZnJhbWVzVAogCiAgICAgICAgIG4gPSB0YWlsRnJhbWVzOwogICAgIH0KKyNlbGlm
IEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICBpZiAoc291cmNlU3RyaWRlID09IDEpIHsK
KyAgICAgICAgaW50IHRhaWxGcmFtZXMgPSBuICUgNDsKKyAgICAgICAgY29uc3QgZmxvYXQqIGVu
ZFAgPSBzb3VyY2VQICsgbiAtIHRhaWxGcmFtZXM7CisKKyAgICAgICAgZmxvYXQzMng0X3QgbU1h
eCA9IHZkdXBxX25fZjMyKDApOworICAgICAgICB3aGlsZSAoc291cmNlUCA8IGVuZFApIHsKKyAg
ICAgICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZSA9IHZsZDFxX2YzMihzb3VyY2VQKTsKKyAgICAg
ICAgICAgIG1NYXggPSB2bWF4cV9mMzIobU1heCwgdmFic3FfZjMyKHNvdXJjZSkpOworICAgICAg
ICAgICAgc291cmNlUCArPSA0OworICAgICAgICB9CisKKyAgICAgICAgZmxvYXQgZ3JvdXBNYXhb
NF07CisgICAgICAgIHZzdDFxX2YzMihncm91cE1heCwgbU1heCk7CisgICAgICAgIG1heCA9IHN0
ZDo6bWF4KG1heCwgZ3JvdXBNYXhbMF0pOworICAgICAgICBtYXggPSBzdGQ6Om1heChtYXgsIGdy
b3VwTWF4WzFdKTsKKyAgICAgICAgbWF4ID0gc3RkOjptYXgobWF4LCBncm91cE1heFsyXSk7Cisg
ICAgICAgIG1heCA9IHN0ZDo6bWF4KG1heCwgZ3JvdXBNYXhbM10pOworCisgICAgICAgIG4gPSB0
YWlsRnJhbWVzOworICAgIH0KICNlbmRpZgogCiAgICAgd2hpbGUgKG4tLSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167312</attachid>
            <date>2012-10-05 05:15:10 -0700</date>
            <delta_ts>2012-10-05 05:47:32 -0700</delta_ts>
            <desc>proposed patch 3</desc>
            <filename>webaudio_intrinsics.patch3</filename>
            <type>text/plain</type>
            <size>7753</size>
            <attacher name="Gabor Rapcsanyi">rgabor</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMDQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEwLTA1ICBHYWJvciBS
YXBjc2FueWkgIDxyZ2Fib3JAd2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgQVJNLU5FT04gc3Vw
cG9ydCB0byBWZWN0b3JNYXRoIGluIFdlYkF1ZGlvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkIHVwIHZlY3RvciBvcGVyYXRpb25zIGluIFdlYkF1
ZGlvIHdpdGggTkVPTiBpbnRyaW5zaWNzLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vVmVj
dG9yTWF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWZWN0b3JNYXRoOjp2c21hKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZlY3Rvck1hdGg6OnZzbXVsKToKKyAgICAgICAgKFdlYkNvcmU6OlZlY3Rv
ck1hdGg6OnZhZGQpOgorICAgICAgICAoV2ViQ29yZTo6VmVjdG9yTWF0aDo6dm11bCk6CisgICAg
ICAgIChXZWJDb3JlOjpWZWN0b3JNYXRoOjp6dm11bCk6CisgICAgICAgIChXZWJDb3JlOjpWZWN0
b3JNYXRoOjp2c3Zlc3EpOgorICAgICAgICAoV2ViQ29yZTo6VmVjdG9yTWF0aDo6dm1heG1ndik6
CisKIDIwMTItMTAtMDUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEltcHJvdmUgc3BlbGxpbmcgYW5kIHBlcmZvcm1hbmNlIG9mIExvY2FsaXplci5jcHAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCShyZXZp
c2lvbiAxMzA0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTAgQEAKICNpbmNsdWRlIDxlbW1pbnRy
aW4uaD4KICNlbmRpZgogCisjaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorI2luY2x1ZGUg
PGFybV9uZW9uLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxt
YXRoLmg+CiAKQEAgLTE1NSw2ICsxNTksMjQgQEAgdm9pZCB2c21hKGNvbnN0IGZsb2F0KiBzb3Vy
Y2VQLCBpbnQgc291cgogCiAgICAgICAgIG4gPSB0YWlsRnJhbWVzOwogICAgIH0KKyNlbGlmIEhB
VkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICBpZiAoKHNvdXJjZVN0cmlkZSA9PSAxKSAmJiAo
ZGVzdFN0cmlkZSA9PSAxKSkgeworICAgICAgICBpbnQgdGFpbEZyYW1lcyA9IG4gJSA0OworICAg
ICAgICBjb25zdCBmbG9hdCogZW5kUCA9IGRlc3RQICsgbiAtIHRhaWxGcmFtZXM7CisKKyAgICAg
ICAgZmxvYXQzMng0X3QgayA9IHZkdXBxX25fZjMyKCpzY2FsZSk7CisgICAgICAgIHdoaWxlIChk
ZXN0UCA8IGVuZFApIHsKKyAgICAgICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZSA9IHZsZDFxX2Yz
Mihzb3VyY2VQKTsKKyAgICAgICAgICAgIGZsb2F0MzJ4NF90IGRlc3QgPSB2bGQxcV9mMzIoZGVz
dFApOworCisgICAgICAgICAgICBkZXN0ID0gdm1sYXFfZjMyKGRlc3QsIHNvdXJjZSwgayk7Cisg
ICAgICAgICAgICB2c3QxcV9mMzIoZGVzdFAsIGRlc3QpOworCisgICAgICAgICAgICBzb3VyY2VQ
ICs9IDQ7CisgICAgICAgICAgICBkZXN0UCArPSA0OworICAgICAgICB9CisgICAgICAgIG4gPSB0
YWlsRnJhbWVzOworICAgIH0KICNlbmRpZgogICAgIHdoaWxlIChuKSB7CiAgICAgICAgICpkZXN0
UCArPSAqc291cmNlUCAqICpzY2FsZTsKQEAgLTE2NiwxMCArMTg4LDEwIEBAIHZvaWQgdnNtYShj
b25zdCBmbG9hdCogc291cmNlUCwgaW50IHNvdXIKIAogdm9pZCB2c211bChjb25zdCBmbG9hdCog
c291cmNlUCwgaW50IHNvdXJjZVN0cmlkZSwgY29uc3QgZmxvYXQqIHNjYWxlLCBmbG9hdCogZGVz
dFAsIGludCBkZXN0U3RyaWRlLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogeworICAgIGludCBu
ID0gZnJhbWVzVG9Qcm9jZXNzOworCiAjaWZkZWYgX19TU0UyX18KICAgICBpZiAoKHNvdXJjZVN0
cmlkZSA9PSAxKSAmJiAoZGVzdFN0cmlkZSA9PSAxKSkgewotICAgICAgICAKLSAgICAgICAgaW50
IG4gPSBmcmFtZXNUb1Byb2Nlc3M7CiAgICAgICAgIGZsb2F0IGsgPSAqc2NhbGU7CiAKICAgICAg
ICAgLy8gSWYgdGhlIHNvdXJjZVAgYWRkcmVzcyBpcyBub3QgMTYtYnl0ZSBhbGlnbmVkLCB0aGUg
Zmlyc3Qgc2V2ZXJhbCBmcmFtZXMgKGF0IG1vc3QgdGhyZWUpIHNob3VsZCBiZSBwcm9jZXNzZWQg
c2VwYXJhdGVseS4KQEAgLTIxNyw4ICsyMzksMjIgQEAgdm9pZCB2c211bChjb25zdCBmbG9hdCog
c291cmNlUCwgaW50IHNvdQogICAgICAgICAgICAgbi0tOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsgLy8gSWYgc3RyaWRlcyBhcmUgbm90IDEsIHJvbGxiYWNrIHRvIG5vcm1hbCBhbGdvcml0aG0u
CisjZWxpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisgICAgaWYgKChzb3VyY2VTdHJpZGUg
PT0gMSkgJiYgKGRlc3RTdHJpZGUgPT0gMSkpIHsKKyAgICAgICAgZmxvYXQgayA9ICpzY2FsZTsK
KyAgICAgICAgaW50IHRhaWxGcmFtZXMgPSBuICUgNDsKKyAgICAgICAgY29uc3QgZmxvYXQqIGVu
ZFAgPSBkZXN0UCArIG4gLSB0YWlsRnJhbWVzOworCisgICAgICAgIHdoaWxlIChkZXN0UCA8IGVu
ZFApIHsKKyAgICAgICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZSA9IHZsZDFxX2YzMihzb3VyY2VQ
KTsKKyAgICAgICAgICAgIHZzdDFxX2YzMihkZXN0UCwgdm11bHFfbl9mMzIoc291cmNlLCBrKSk7
CisKKyAgICAgICAgICAgIHNvdXJjZVAgKz0gNDsKKyAgICAgICAgICAgIGRlc3RQICs9IDQ7Cisg
ICAgICAgIH0KKyAgICAgICAgbiA9IHRhaWxGcmFtZXM7CisgICAgfQogI2VuZGlmCi0gICAgaW50
IG4gPSBmcmFtZXNUb1Byb2Nlc3M7CiAgICAgZmxvYXQgayA9ICpzY2FsZTsKICAgICB3aGlsZSAo
bi0tKSB7CiAgICAgICAgICpkZXN0UCA9IGsgKiAqc291cmNlUDsKQEAgLTIzMiwxMSArMjY4LDEw
IEBAIHZvaWQgdnNtdWwoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGludCBzb3UKIAogdm9pZCB2YWRk
KGNvbnN0IGZsb2F0KiBzb3VyY2UxUCwgaW50IHNvdXJjZVN0cmlkZTEsIGNvbnN0IGZsb2F0KiBz
b3VyY2UyUCwgaW50IHNvdXJjZVN0cmlkZTIsIGZsb2F0KiBkZXN0UCwgaW50IGRlc3RTdHJpZGUs
IHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CisgICAgaW50IG4gPSBmcmFtZXNUb1Byb2Nlc3M7
CisKICNpZmRlZiBfX1NTRTJfXwogICAgIGlmICgoc291cmNlU3RyaWRlMSA9PTEpICYmIChzb3Vy
Y2VTdHJpZGUyID09IDEpICYmIChkZXN0U3RyaWRlID09IDEpKSB7Ci0KLSAgICAgICAgaW50IG4g
PSBmcmFtZXNUb1Byb2Nlc3M7Ci0KICAgICAgICAgLy8gSWYgdGhlIHNvdXJjZVAgYWRkcmVzcyBp
cyBub3QgMTYtYnl0ZSBhbGlnbmVkLCB0aGUgZmlyc3Qgc2V2ZXJhbCBmcmFtZXMgKGF0IG1vc3Qg
dGhyZWUpIHNob3VsZCBiZSBwcm9jZXNzZWQgc2VwYXJhdGVseS4KICAgICAgICAgd2hpbGUgKChy
ZWludGVycHJldF9jYXN0PHNpemVfdD4oc291cmNlMVApICYgMHgwRikgJiYgbikgewogICAgICAg
ICAgICAgKmRlc3RQID0gKnNvdXJjZTFQICsgKnNvdXJjZTJQOwpAQCAtMzE1LDggKzM1MCwyMyBA
QCB2b2lkIHZhZGQoY29uc3QgZmxvYXQqIHNvdXJjZTFQLCBpbnQgc291CiAgICAgICAgICAgICBu
LS07CiAgICAgICAgIH0KICAgICB9IGVsc2UgeyAvLyBpZiBzdHJpZGVzIGFyZSBub3QgMSwgcm9s
bGJhY2sgdG8gbm9ybWFsIGFsZ29yaXRobQorI2VsaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNT
KQorICAgIGlmICgoc291cmNlU3RyaWRlMSA9PTEpICYmIChzb3VyY2VTdHJpZGUyID09IDEpICYm
IChkZXN0U3RyaWRlID09IDEpKSB7CisgICAgICAgIGludCB0YWlsRnJhbWVzID0gbiAlIDQ7Cisg
ICAgICAgIGNvbnN0IGZsb2F0KiBlbmRQID0gZGVzdFAgKyBuIC0gdGFpbEZyYW1lczsKKworICAg
ICAgICB3aGlsZSAoZGVzdFAgPCBlbmRQKSB7CisgICAgICAgICAgICBmbG9hdDMyeDRfdCBzb3Vy
Y2UxID0gdmxkMXFfZjMyKHNvdXJjZTFQKTsKKyAgICAgICAgICAgIGZsb2F0MzJ4NF90IHNvdXJj
ZTIgPSB2bGQxcV9mMzIoc291cmNlMlApOworICAgICAgICAgICAgdnN0MXFfZjMyKGRlc3RQLCB2
YWRkcV9mMzIoc291cmNlMSwgc291cmNlMikpOworCisgICAgICAgICAgICBzb3VyY2UxUCArPSA0
OworICAgICAgICAgICAgc291cmNlMlAgKz0gNDsKKyAgICAgICAgICAgIGRlc3RQICs9IDQ7Cisg
ICAgICAgIH0KKyAgICAgICAgbiA9IHRhaWxGcmFtZXM7CisgICAgfQogI2VuZGlmCi0gICAgaW50
IG4gPSBmcmFtZXNUb1Byb2Nlc3M7CiAgICAgd2hpbGUgKG4tLSkgewogICAgICAgICAqZGVzdFAg
PSAqc291cmNlMVAgKyAqc291cmNlMlA7CiAgICAgICAgIHNvdXJjZTFQICs9IHNvdXJjZVN0cmlk
ZTE7CkBAIC0zNzcsNiArNDI3LDIyIEBAIHZvaWQgdm11bChjb25zdCBmbG9hdCogc291cmNlMVAs
IGludCBzb3UKIAogICAgICAgICBuID0gdGFpbEZyYW1lczsKICAgICB9CisjZWxpZiBIQVZFKEFS
TV9ORU9OX0lOVFJJTlNJQ1MpCisgICAgaWYgKChzb3VyY2VTdHJpZGUxID09MSkgJiYgKHNvdXJj
ZVN0cmlkZTIgPT0gMSkgJiYgKGRlc3RTdHJpZGUgPT0gMSkpIHsKKyAgICAgICAgaW50IHRhaWxG
cmFtZXMgPSBuICUgNDsKKyAgICAgICAgY29uc3QgZmxvYXQqIGVuZFAgPSBkZXN0UCArIG4gLSB0
YWlsRnJhbWVzOworCisgICAgICAgIHdoaWxlIChkZXN0UCA8IGVuZFApIHsKKyAgICAgICAgICAg
IGZsb2F0MzJ4NF90IHNvdXJjZTEgPSB2bGQxcV9mMzIoc291cmNlMVApOworICAgICAgICAgICAg
ZmxvYXQzMng0X3Qgc291cmNlMiA9IHZsZDFxX2YzMihzb3VyY2UyUCk7CisgICAgICAgICAgICB2
c3QxcV9mMzIoZGVzdFAsIHZtdWxxX2YzMihzb3VyY2UxLCBzb3VyY2UyKSk7CisKKyAgICAgICAg
ICAgIHNvdXJjZTFQICs9IDQ7CisgICAgICAgICAgICBzb3VyY2UyUCArPSA0OworICAgICAgICAg
ICAgZGVzdFAgKz0gNDsKKyAgICAgICAgfQorICAgICAgICBuID0gdGFpbEZyYW1lczsKKyAgICB9
CiAjZW5kaWYKICAgICB3aGlsZSAobikgewogICAgICAgICAqZGVzdFAgPSAqc291cmNlMVAgKiAq
c291cmNlMlA7CkBAIC00MTUsNiArNDgxLDIyIEBAIHZvaWQgenZtdWwoY29uc3QgZmxvYXQqIHJl
YWwxUCwgY29uc3QgZmwKICAgICAgICAgICAgIGkgKz0gNDsKICAgICAgICAgfQogICAgIH0KKyNl
bGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICAgICAgdW5zaWduZWQgZW5kU2l6ZSA9
IGZyYW1lc1RvUHJvY2VzcyAtIGZyYW1lc1RvUHJvY2VzcyAlIDQ7CisgICAgICAgIHdoaWxlIChp
IDwgZW5kU2l6ZSkgeworICAgICAgICAgICAgZmxvYXQzMng0X3QgcmVhbDEgPSB2bGQxcV9mMzIo
cmVhbDFQICsgaSk7CisgICAgICAgICAgICBmbG9hdDMyeDRfdCByZWFsMiA9IHZsZDFxX2YzMihy
ZWFsMlAgKyBpKTsKKyAgICAgICAgICAgIGZsb2F0MzJ4NF90IGltYWcxID0gdmxkMXFfZjMyKGlt
YWcxUCArIGkpOworICAgICAgICAgICAgZmxvYXQzMng0X3QgaW1hZzIgPSB2bGQxcV9mMzIoaW1h
ZzJQICsgaSk7CisKKyAgICAgICAgICAgIGZsb2F0MzJ4NF90IHJlYWxSZXN1bHQgPSB2bWxzcV9m
MzIodm11bHFfZjMyKHJlYWwxLCByZWFsMiksIGltYWcxLCBpbWFnMik7CisgICAgICAgICAgICBm
bG9hdDMyeDRfdCBpbWFnUmVzdWx0ID0gdm1sYXFfZjMyKHZtdWxxX2YzMihyZWFsMSwgaW1hZzIp
LCBpbWFnMSwgcmVhbDIpOworCisgICAgICAgICAgICB2c3QxcV9mMzIocmVhbERlc3RQICsgaSwg
cmVhbFJlc3VsdCk7CisgICAgICAgICAgICB2c3QxcV9mMzIoaW1hZ0Rlc3RQICsgaSwgaW1hZ1Jl
c3VsdCk7CisKKyAgICAgICAgICAgIGkgKz0gNDsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgZm9y
ICg7IGkgPCBmcmFtZXNUb1Byb2Nlc3M7ICsraSkgewogICAgICAgICAvLyBSZWFkIGFuZCBjb21w
dXRlIHJlc3VsdCBiZWZvcmUgc3RvcmluZyB0aGVtLCBpbiBjYXNlIHRoZQpAQCAtNDYxLDYgKzU0
MywyNSBAQCB2b2lkIHZzdmVzcShjb25zdCBmbG9hdCogc291cmNlUCwgaW50IHNvCiAgCiAgICAg
ICAgIG4gPSB0YWlsRnJhbWVzOyAKICAgICB9IAorI2VsaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5T
SUNTKQorICAgIGlmIChzb3VyY2VTdHJpZGUgPT0gMSkgeworICAgICAgICBpbnQgdGFpbEZyYW1l
cyA9IG4gJSA0OworICAgICAgICBjb25zdCBmbG9hdCogZW5kUCA9IHNvdXJjZVAgKyBuIC0gdGFp
bEZyYW1lczsKKworICAgICAgICBmbG9hdDMyeDRfdCBmb3VyU3VtID0gdmR1cHFfbl9mMzIoMCk7
CisgICAgICAgIHdoaWxlIChzb3VyY2VQIDwgZW5kUCkgeworICAgICAgICAgICAgZmxvYXQzMng0
X3Qgc291cmNlID0gdmxkMXFfZjMyKHNvdXJjZVApOworICAgICAgICAgICAgZm91clN1bSA9IHZt
bGFxX2YzMihmb3VyU3VtLCBzb3VyY2UsIHNvdXJjZSk7CisgICAgICAgICAgICBzb3VyY2VQICs9
IDQ7CisgICAgICAgIH0KKyAgICAgICAgZmxvYXQzMngyX3QgdHdvU3VtID0gdmFkZF9mMzIodmdl
dF9sb3dfZjMyKGZvdXJTdW0pLCB2Z2V0X2hpZ2hfZjMyKGZvdXJTdW0pKTsKKworICAgICAgICBm
bG9hdCBncm91cFN1bVsyXTsKKyAgICAgICAgdnN0MV9mMzIoZ3JvdXBTdW0sIHR3b1N1bSk7Cisg
ICAgICAgIHN1bSArPSBncm91cFN1bVswXSArIGdyb3VwU3VtWzFdOworCisgICAgICAgIG4gPSB0
YWlsRnJhbWVzOworICAgIH0KICNlbmRpZgogCiAgICAgd2hpbGUgKG4tLSkgewpAQCAtNTEyLDYg
KzYxMywyNSBAQCB2b2lkIHZtYXhtZ3YoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGludCBzCiAKICAg
ICAgICAgbiA9IHRhaWxGcmFtZXM7CiAgICAgfQorI2VsaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5T
SUNTKQorICAgIGlmIChzb3VyY2VTdHJpZGUgPT0gMSkgeworICAgICAgICBpbnQgdGFpbEZyYW1l
cyA9IG4gJSA0OworICAgICAgICBjb25zdCBmbG9hdCogZW5kUCA9IHNvdXJjZVAgKyBuIC0gdGFp
bEZyYW1lczsKKworICAgICAgICBmbG9hdDMyeDRfdCBmb3VyTWF4ID0gdmR1cHFfbl9mMzIoMCk7
CisgICAgICAgIHdoaWxlIChzb3VyY2VQIDwgZW5kUCkgeworICAgICAgICAgICAgZmxvYXQzMng0
X3Qgc291cmNlID0gdmxkMXFfZjMyKHNvdXJjZVApOworICAgICAgICAgICAgZm91ck1heCA9IHZt
YXhxX2YzMihmb3VyTWF4LCB2YWJzcV9mMzIoc291cmNlKSk7CisgICAgICAgICAgICBzb3VyY2VQ
ICs9IDQ7CisgICAgICAgIH0KKyAgICAgICAgZmxvYXQzMngyX3QgdHdvTWF4ID0gdm1heF9mMzIo
dmdldF9sb3dfZjMyKGZvdXJNYXgpLCB2Z2V0X2hpZ2hfZjMyKGZvdXJNYXgpKTsKKworICAgICAg
ICBmbG9hdCBncm91cE1heFsyXTsKKyAgICAgICAgdnN0MV9mMzIoZ3JvdXBNYXgsIHR3b01heCk7
CisgICAgICAgIG1heCA9IHN0ZDo6bWF4KGdyb3VwTWF4WzBdLCBncm91cE1heFsxXSk7CisKKyAg
ICAgICAgbiA9IHRhaWxGcmFtZXM7CisgICAgfQogI2VuZGlmCiAKICAgICB3aGlsZSAobi0tKSB7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>