c++/7609: c++ compiler crashes when compiling libcrypto4.2 on redhat 7.0

kbratanov@yahoo.com kbratanov@yahoo.com
Fri Aug 16 01:36:00 GMT 2002


>Number:         7609
>Category:       c++
>Synopsis:       c++ compiler crashes when compiling libcrypto4.2 on redhat 7.0
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Aug 16 01:36:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     K.Bratanov
>Release:        gcc version 2.96 20000731 (Red Hat Linux 7.0)
>Organization:
>Environment:
RedHat 7.0 (not upgraded), CPU K6 400
>Description:
untarred libcrypto++_4.2.orig.tar.gz
typed make and after a minute of compiling received the next message:

g++ -g -pipe -c ec2n.cpp
In file included from ec2n.h:5,
                 from ec2n.cpp:5:
misc.h: In method `int CryptoPP::PolynomialMod2::GetCoefficient
(unsigned int) const':
misc.h:568: Internal error #73.
misc.h:568: Internal compiler error in process_overload_item, at
../gcc/cp/method.c:1460
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
make: *** [ec2n.o] Error 2
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-chdr; name="misc.h"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="misc.h"

I2lmbmRlZiBDUllQVE9QUF9NSVNDX0gKI2RlZmluZSBDUllQVE9QUF9NSVNDX0gKCiNpbmNsdWRl
ICJjb25maWcuaCIKI2luY2x1ZGUgPGFzc2VydC5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CQkvLyBD
b2RlV2FycmlvciBkb2Vzbid0IGhhdmUgbWVtb3J5LmgKI2luY2x1ZGUgPGFsZ29yaXRobT4KI2lu
Y2x1ZGUgPHN0cmluZz4KCiNpZmRlZiBJTlRFTF9JTlRSSU5TSUNTCiNpbmNsdWRlIDxzdGRsaWIu
aD4KI2VuZGlmCgpOQU1FU1BBQ0VfQkVHSU4oQ3J5cHRvUFApCgovLyAqKioqKioqKioqKioqKiBt
aXNjIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioKCiNkZWZpbmUgR0VUQllURSh4LCB5KSAodW5z
aWduZWQgaW50KSgoKHgpPj4oOCooeSkpKSYyNTUpCi8vIHRoaXMgb25lIG1heSBiZSBmYXN0ZXIg
b24gYSBQZW50aXVtCi8vICNkZWZpbmUgR0VUQllURSh4LCB5KSAoKChieXRlICopJih4KSlbeV0p
Cgp1bnNpZ25lZCBpbnQgUGFyaXR5KHVuc2lnbmVkIGxvbmcpOwp1bnNpZ25lZCBpbnQgQnl0ZVBy
ZWNpc2lvbih1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgaW50IEJpdFByZWNpc2lvbih1bnNpZ25l
ZCBsb25nKTsKdW5zaWduZWQgbG9uZyBDcm9wKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGludCBz
aXplKTsKCmlubGluZSB1bnNpZ25lZCBpbnQgYml0c1RvQnl0ZXModW5zaWduZWQgaW50IGJpdENv
dW50KQp7CglyZXR1cm4gKChiaXRDb3VudCs3KS8oOCkpOwp9CgppbmxpbmUgdW5zaWduZWQgaW50
IGJ5dGVzVG9Xb3Jkcyh1bnNpZ25lZCBpbnQgYnl0ZUNvdW50KQp7CglyZXR1cm4gKChieXRlQ291
bnQrV09SRF9TSVpFLTEpL1dPUkRfU0laRSk7Cn0KCmlubGluZSB1bnNpZ25lZCBpbnQgYml0c1Rv
V29yZHModW5zaWduZWQgaW50IGJpdENvdW50KQp7CglyZXR1cm4gKChiaXRDb3VudCtXT1JEX0JJ
VFMtMSkvKFdPUkRfQklUUykpOwp9Cgp2b2lkIHhvcmJ1ZihieXRlICpidWYsIGNvbnN0IGJ5dGUg
Km1hc2ssIHVuc2lnbmVkIGludCBjb3VudCk7CnZvaWQgeG9yYnVmKGJ5dGUgKm91dHB1dCwgY29u
c3QgYnl0ZSAqaW5wdXQsIGNvbnN0IGJ5dGUgKm1hc2ssIHVuc2lnbmVkIGludCBjb3VudCk7Cgpp
bmxpbmUgdW5zaWduZWQgaW50IFJvdW5kRG93blRvTXVsdGlwbGVPZih1bnNpZ25lZCBpbnQgbiwg
dW5zaWduZWQgaW50IG0pCnsKCXJldHVybiBuIC0gbiVtOwp9CgppbmxpbmUgdW5zaWduZWQgaW50
IFJvdW5kVXBUb011bHRpcGxlT2YodW5zaWduZWQgaW50IG4sIHVuc2lnbmVkIGludCBtKQp7Cgly
ZXR1cm4gUm91bmREb3duVG9NdWx0aXBsZU9mKG4rbS0xLCBtKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IFQ+CmlubGluZSBib29sIElzQWxpZ25lZChjb25zdCB2b2lkICpwKQp7CglyZXR1cm4gKHVuc2ln
bmVkIGludClwICUgc2l6ZW9mKFQpID09IDA7Cn0KCmlubGluZSBib29sIENoZWNrRW5kaWFuZXNz
KGJvb2wgaGlnaEZpcnN0KQp7CiNpZmRlZiBJU19MSVRUTEVfRU5ESUFOCglyZXR1cm4gIWhpZ2hG
aXJzdDsKI2Vsc2UKCXJldHVybiBoaWdoRmlyc3Q7CiNlbmRpZgp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
VD4JCS8vIGNhbid0IHVzZSA8c3N0cmVhbT4gYmVjYXVzZSBHQ0MgMi45NS4yIGRvZXNuJ3QgaGF2
ZSBpdApzdGQ6OnN0cmluZyBJbnRUb1N0cmluZyhUIGEpCnsKCWlmIChhID09IDApCgkJcmV0dXJu
ICIwIjsKCWJvb2wgbmVnYXRlID0gZmFsc2U7CglpZiAoYSA8IDApCgl7CgkJbmVnYXRlID0gdHJ1
ZTsKCQlhID0gLWE7Cgl9CglzdGQ6OnN0cmluZyByZXN1bHQ7Cgl3aGlsZSAoYSA+IDApCgl7CgkJ
cmVzdWx0ID0gY2hhcignMCcgKyBhICUgMTApICsgcmVzdWx0OwoJCWEgPSBhIC8gMTA7Cgl9Cglp
ZiAobmVnYXRlKQoJCXJlc3VsdCA9ICItIiArIHJlc3VsdDsKCXJldHVybiByZXN1bHQ7Cn0KCi8v
ICoqKioqKioqKioqKioqIHJvdGF0ZSBmdW5jdGlvbnMgKioqKioqKioqKioqKioqCgp0ZW1wbGF0
ZSA8Y2xhc3MgVD4gaW5saW5lIFQgcm90bEZpeGVkKFQgeCwgdW5zaWduZWQgaW50IHkpCnsKCWFz
c2VydCh5IDwgc2l6ZW9mKFQpKjgpOwoJcmV0dXJuICh4PDx5KSB8ICh4Pj4oc2l6ZW9mKFQpKjgt
eSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIFQgcm90ckZpeGVkKFQgeCwgdW5zaWdu
ZWQgaW50IHkpCnsKCWFzc2VydCh5IDwgc2l6ZW9mKFQpKjgpOwoJcmV0dXJuICh4Pj55KSB8ICh4
PDwoc2l6ZW9mKFQpKjgteSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIFQgcm90bFZh
cmlhYmxlKFQgeCwgdW5zaWduZWQgaW50IHkpCnsKCWFzc2VydCh5IDwgc2l6ZW9mKFQpKjgpOwoJ
cmV0dXJuICh4PDx5KSB8ICh4Pj4oc2l6ZW9mKFQpKjgteSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gaW5saW5lIFQgcm90clZhcmlhYmxlKFQgeCwgdW5zaWduZWQgaW50IHkpCnsKCWFzc2VydCh5
IDwgc2l6ZW9mKFQpKjgpOwoJcmV0dXJuICh4Pj55KSB8ICh4PDwoc2l6ZW9mKFQpKjgteSkpOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIFQgcm90bE1vZChUIHgsIHVuc2lnbmVkIGludCB5
KQp7Cgl5ICU9IHNpemVvZihUKSo4OwoJcmV0dXJuICh4PDx5KSB8ICh4Pj4oc2l6ZW9mKFQpKjgt
eSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIFQgcm90ck1vZChUIHgsIHVuc2lnbmVk
IGludCB5KQp7Cgl5ICU9IHNpemVvZihUKSo4OwoJcmV0dXJuICh4Pj55KSB8ICh4PDwoc2l6ZW9m
KFQpKjgteSkpOwp9CgojaWZkZWYgSU5URUxfSU5UUklOU0lDUwoKdGVtcGxhdGU8PiBpbmxpbmUg
d29yZDMyIHJvdGxGaXhlZDx3b3JkMzI+KHdvcmQzMiB4LCB1bnNpZ25lZCBpbnQgeSkKewoJYXNz
ZXJ0KHkgPCAzMik7CglyZXR1cm4geSA/IF9scm90bCh4LCB5KSA6IHg7Cn0KCnRlbXBsYXRlPD4g
aW5saW5lIHdvcmQzMiByb3RyRml4ZWQ8d29yZDMyPih3b3JkMzIgeCwgdW5zaWduZWQgaW50IHkp
CnsKCWFzc2VydCh5IDwgMzIpOwoJcmV0dXJuIHkgPyBfbHJvdHIoeCwgeSkgOiB4Owp9Cgp0ZW1w
bGF0ZTw+IGlubGluZSB3b3JkMzIgcm90bFZhcmlhYmxlPHdvcmQzMj4od29yZDMyIHgsIHVuc2ln
bmVkIGludCB5KQp7Cglhc3NlcnQoeSA8IDMyKTsKCXJldHVybiBfbHJvdGwoeCwgeSk7Cn0KCnRl
bXBsYXRlPD4gaW5saW5lIHdvcmQzMiByb3RyVmFyaWFibGU8d29yZDMyPih3b3JkMzIgeCwgdW5z
aWduZWQgaW50IHkpCnsKCWFzc2VydCh5IDwgMzIpOwoJcmV0dXJuIF9scm90cih4LCB5KTsKfQoK
dGVtcGxhdGU8PiBpbmxpbmUgd29yZDMyIHJvdGxNb2Q8d29yZDMyPih3b3JkMzIgeCwgdW5zaWdu
ZWQgaW50IHkpCnsKCXJldHVybiBfbHJvdGwoeCwgeSk7Cn0KCnRlbXBsYXRlPD4gaW5saW5lIHdv
cmQzMiByb3RyTW9kPHdvcmQzMj4od29yZDMyIHgsIHVuc2lnbmVkIGludCB5KQp7CglyZXR1cm4g
X2xyb3RyKHgsIHkpOwp9CgojZW5kaWYgLy8gI2lmZGVmIElOVEVMX0lOVFJJTlNJQ1MKCiNpZmRl
ZiBQUENfSU5UUklOU0lDUwoKdGVtcGxhdGU8PiBpbmxpbmUgd29yZDMyIHJvdGxGaXhlZDx3b3Jk
MzI+KHdvcmQzMiB4LCB1bnNpZ25lZCBpbnQgeSkKewoJYXNzZXJ0KHkgPCAzMik7CglyZXR1cm4g
eSA/IF9fcmx3aW5tKHgseSwwLDMxKSA6IHg7Cn0KCnRlbXBsYXRlPD4gaW5saW5lIHdvcmQzMiBy
b3RyRml4ZWQ8d29yZDMyPih3b3JkMzIgeCwgdW5zaWduZWQgaW50IHkpCnsKCWFzc2VydCh5IDwg
MzIpOwoJcmV0dXJuIHkgPyBfX3Jsd2lubSh4LDMyLXksMCwzMSkgOiB4Owp9Cgp0ZW1wbGF0ZTw+
IGlubGluZSB3b3JkMzIgcm90bFZhcmlhYmxlPHdvcmQzMj4od29yZDMyIHgsIHVuc2lnbmVkIGlu
dCB5KQp7Cglhc3NlcnQoeSA8IDMyKTsKCXJldHVybiAoX19ybHdubSh4LHksMCwzMSkpOwp9Cgp0
ZW1wbGF0ZTw+IGlubGluZSB3b3JkMzIgcm90clZhcmlhYmxlPHdvcmQzMj4od29yZDMyIHgsIHVu
c2lnbmVkIGludCB5KQp7Cglhc3NlcnQoeSA8IDMyKTsKCXJldHVybiAoX19ybHdubSh4LDMyLXks
MCwzMSkpOwp9Cgp0ZW1wbGF0ZTw+IGlubGluZSB3b3JkMzIgcm90bE1vZDx3b3JkMzI+KHdvcmQz
MiB4LCB1bnNpZ25lZCBpbnQgeSkKewoJcmV0dXJuIChfX3Jsd25tKHgseSwwLDMxKSk7Cn0KCnRl
bXBsYXRlPD4gaW5saW5lIHdvcmQzMiByb3RyTW9kPHdvcmQzMj4od29yZDMyIHgsIHVuc2lnbmVk
IGludCB5KQp7CglyZXR1cm4gKF9fcmx3bm0oeCwzMi15LDAsMzEpKTsKfQoKI2VuZGlmIC8vICNp
ZmRlZiBQUENfSU5UUklOU0lDUwoKLy8gKioqKioqKioqKioqKiogZW5kaWFuIHJldmVyc2FsICoq
KioqKioqKioqKioqKgoKaW5saW5lIHdvcmQxNiBieXRlUmV2ZXJzZSh3b3JkMTYgdmFsdWUpCnsK
CXJldHVybiByb3RsRml4ZWQodmFsdWUsIDhVKTsKfQoKaW5saW5lIHdvcmQzMiBieXRlUmV2ZXJz
ZSh3b3JkMzIgdmFsdWUpCnsKI2lmZGVmIFBQQ19JTlRSSU5TSUNTCgkvLyBQUEM6IGxvYWQgcmV2
ZXJzZSBpbmRleGVkIGluc3RydWN0aW9uCglyZXR1cm4gKHdvcmQzMilfX2x3YnJ4KCZ2YWx1ZSww
KTsKI2VsaWYgZGVmaW5lZChGQVNUX1JPVEFURSkKCS8vIDUgaW5zdHJ1Y3Rpb25zIHdpdGggcm90
YXRlIGluc3RydWN0aW9uLCA5IHdpdGhvdXQKCXJldHVybiAocm90ckZpeGVkKHZhbHVlLCA4VSkg
JiAweGZmMDBmZjAwKSB8IChyb3RsRml4ZWQodmFsdWUsIDhVKSAmIDB4MDBmZjAwZmYpOwojZWxz
ZQoJLy8gNiBpbnN0cnVjdGlvbnMgd2l0aCByb3RhdGUgaW5zdHJ1Y3Rpb24sIDggd2l0aG91dAoJ
dmFsdWUgPSAoKHZhbHVlICYgMHhGRjAwRkYwMCkgPj4gOCkgfCAoKHZhbHVlICYgMHgwMEZGMDBG
RikgPDwgOCk7CglyZXR1cm4gcm90bEZpeGVkKHZhbHVlLCAxNlUpOwojZW5kaWYKfQoKI2lmZGVm
IFdPUkQ2NF9BVkFJTEFCTEUKaW5saW5lIHdvcmQ2NCBieXRlUmV2ZXJzZSh3b3JkNjQgdmFsdWUp
CnsKI2lmZGVmIFNMT1dfV09SRDY0CglyZXR1cm4gKHdvcmQ2NChieXRlUmV2ZXJzZSh3b3JkMzIo
dmFsdWUpKSkgPDwgMzIpIHwgYnl0ZVJldmVyc2Uod29yZDMyKHZhbHVlPj4zMikpOwojZWxzZQoJ
dmFsdWUgPSAoKHZhbHVlICYgVzY0TElUKDB4RkYwMEZGMDBGRjAwRkYwMCkpID4+IDgpIHwgKCh2
YWx1ZSAmIFc2NExJVCgweDAwRkYwMEZGMDBGRjAwRkYpKSA8PCA4KTsKCXZhbHVlID0gKCh2YWx1
ZSAmIFc2NExJVCgweEZGRkYwMDAwRkZGRjAwMDApKSA+PiAxNikgfCAoKHZhbHVlICYgVzY0TElU
KDB4MDAwMEZGRkYwMDAwRkZGRikpIDw8IDE2KTsKCXJldHVybiByb3RsRml4ZWQodmFsdWUsIDMy
VSk7CiNlbmRpZgp9CiNlbmRpZgoKaW5saW5lIGJ5dGUgYml0UmV2ZXJzZShieXRlIHZhbHVlKQp7
Cgl2YWx1ZSA9ICgodmFsdWUgJiAweEFBKSA+PiAxKSB8ICgodmFsdWUgJiAweDU1KSA8PCAxKTsK
CXZhbHVlID0gKCh2YWx1ZSAmIDB4Q0MpID4+IDIpIHwgKCh2YWx1ZSAmIDB4MzMpIDw8IDIpOwoJ
cmV0dXJuIHJvdGxGaXhlZCh2YWx1ZSwgNCk7Cn0KCmlubGluZSB3b3JkMTYgYml0UmV2ZXJzZSh3
b3JkMTYgdmFsdWUpCnsKCXZhbHVlID0gKCh2YWx1ZSAmIDB4QUFBQSkgPj4gMSkgfCAoKHZhbHVl
ICYgMHg1NTU1KSA8PCAxKTsKCXZhbHVlID0gKCh2YWx1ZSAmIDB4Q0NDQykgPj4gMikgfCAoKHZh
bHVlICYgMHgzMzMzKSA8PCAyKTsKCXZhbHVlID0gKCh2YWx1ZSAmIDB4RjBGMCkgPj4gNCkgfCAo
KHZhbHVlICYgMHgwRjBGKSA8PCA0KTsKCXJldHVybiBieXRlUmV2ZXJzZSh2YWx1ZSk7Cn0KCmlu
bGluZSB3b3JkMzIgYml0UmV2ZXJzZSh3b3JkMzIgdmFsdWUpCnsKCXZhbHVlID0gKCh2YWx1ZSAm
IDB4QUFBQUFBQUEpID4+IDEpIHwgKCh2YWx1ZSAmIDB4NTU1NTU1NTUpIDw8IDEpOwoJdmFsdWUg
PSAoKHZhbHVlICYgMHhDQ0NDQ0NDQykgPj4gMikgfCAoKHZhbHVlICYgMHgzMzMzMzMzMykgPDwg
Mik7Cgl2YWx1ZSA9ICgodmFsdWUgJiAweEYwRjBGMEYwKSA+PiA0KSB8ICgodmFsdWUgJiAweDBG
MEYwRjBGKSA8PCA0KTsKCXJldHVybiBieXRlUmV2ZXJzZSh2YWx1ZSk7Cn0KCiNpZmRlZiBXT1JE
NjRfQVZBSUxBQkxFCmlubGluZSB3b3JkNjQgYml0UmV2ZXJzZSh3b3JkNjQgdmFsdWUpCnsKI2lm
ZGVmIFNMT1dfV09SRDY0CglyZXR1cm4gKHdvcmQ2NChiaXRSZXZlcnNlKHdvcmQzMih2YWx1ZSkp
KSA8PCAzMikgfCBiaXRSZXZlcnNlKHdvcmQzMih2YWx1ZT4+MzIpKTsKI2Vsc2UKCXZhbHVlID0g
KCh2YWx1ZSAmIFc2NExJVCgweEFBQUFBQUFBQUFBQUFBQUEpKSA+PiAxKSB8ICgodmFsdWUgJiBX
NjRMSVQoMHg1NTU1NTU1NTU1NTU1NTU1KSkgPDwgMSk7Cgl2YWx1ZSA9ICgodmFsdWUgJiBXNjRM
SVQoMHhDQ0NDQ0NDQ0NDQ0NDQ0NDKSkgPj4gMikgfCAoKHZhbHVlICYgVzY0TElUKDB4MzMzMzMz
MzMzMzMzMzMzMykpIDw8IDIpOwoJdmFsdWUgPSAoKHZhbHVlICYgVzY0TElUKDB4RjBGMEYwRjBG
MEYwRjBGMCkpID4+IDQpIHwgKCh2YWx1ZSAmIFc2NExJVCgweDBGMEYwRjBGMEYwRjBGMEYpKSA8
PCA0KTsKCXJldHVybiBieXRlUmV2ZXJzZSh2YWx1ZSk7CiNlbmRpZgp9CiNlbmRpZgoKdGVtcGxh
dGUgPGNsYXNzIFQ+CmlubGluZSBUIGJpdFJldmVyc2UoVCB2YWx1ZSkKewoJaWYgKHNpemVvZihU
KSA9PSAxKQoJCXJldHVybiBiaXRSZXZlcnNlKChieXRlKXZhbHVlKTsKCWVsc2UgaWYgKHNpemVv
ZihUKSA9PSAyKQoJCXJldHVybiBiaXRSZXZlcnNlKCh3b3JkMTYpdmFsdWUpOwoJZWxzZSBpZiAo
c2l6ZW9mKFQpID09IDQpCgkJcmV0dXJuIGJpdFJldmVyc2UoKHdvcmQzMil2YWx1ZSk7CgllbHNl
Cgl7CiNpZmRlZiBXT1JENjRfQVZBSUxBQkxFCgkJYXNzZXJ0KHNpemVvZihUKSA9PSA4KTsKCQly
ZXR1cm4gYml0UmV2ZXJzZSgod29yZDY0KXZhbHVlKTsKI2Vsc2UKCQlhc3NlcnQoZmFsc2UpOwoJ
CXJldHVybiAwOwojZW5kaWYKCX0KfQoKdGVtcGxhdGUgPGNsYXNzIFQ+CnZvaWQgYnl0ZVJldmVy
c2UoVCAqb3V0LCBjb25zdCBUICppbiwgdW5zaWduZWQgaW50IGJ5dGVDb3VudCkKewoJdW5zaWdu
ZWQgaW50IGNvdW50ID0gKGJ5dGVDb3VudCtzaXplb2YoVCktMSkvc2l6ZW9mKFQpOwoJZm9yICh1
bnNpZ25lZCBpbnQgaT0wOyBpPGNvdW50OyBpKyspCgkJb3V0W2ldID0gYnl0ZVJldmVyc2UoaW5b
aV0pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lIHZvaWQgR2V0VXNlcktleUxpdHRsZUVu
ZGlhbihUICpvdXQsIHVuc2lnbmVkIGludCBvdXRsZW4sIGNvbnN0IGJ5dGUgKmluLCB1bnNpZ25l
ZCBpbnQgaW5sZW4pCnsKCWNvbnN0IHVuc2lnbmVkIGludCBVID0gc2l6ZW9mKFQpOwoJYXNzZXJ0
KGlubGVuIDw9IG91dGxlbipVKTsKCW1lbWNweShvdXQsIGluLCBpbmxlbik7CgltZW1zZXQoKGJ5
dGUgKilvdXQraW5sZW4sIDAsIG91dGxlbipVLWlubGVuKTsKI2lmbmRlZiBJU19MSVRUTEVfRU5E
SUFOCglieXRlUmV2ZXJzZShvdXQsIG91dCwgaW5sZW4pOwojZW5kaWYKfQoKdGVtcGxhdGUgPGNs
YXNzIFQ+CmlubGluZSB2b2lkIEdldFVzZXJLZXlCaWdFbmRpYW4oVCAqb3V0LCB1bnNpZ25lZCBp
bnQgb3V0bGVuLCBjb25zdCBieXRlICppbiwgdW5zaWduZWQgaW50IGlubGVuKQp7Cgljb25zdCB1
bnNpZ25lZCBpbnQgVSA9IHNpemVvZihUKTsKCWFzc2VydChpbmxlbiA8PSBvdXRsZW4qVSk7Cglt
ZW1jcHkob3V0LCBpbiwgaW5sZW4pOwoJbWVtc2V0KChieXRlICopb3V0K2lubGVuLCAwLCBvdXRs
ZW4qVS1pbmxlbik7CiNpZmRlZiBJU19MSVRUTEVfRU5ESUFOCglieXRlUmV2ZXJzZShvdXQsIG91
dCwgaW5sZW4pOwojZW5kaWYKfQoKLy8gRmV0Y2ggMiB3b3JkcyBmcm9tIHVzZXIncyBidWZmZXIg
aW50byAiYSIsICJiIiBpbiBMSVRUTEUtZW5kaWFuIG9yZGVyCnRlbXBsYXRlIDxjbGFzcyBUPgpp
bmxpbmUgdm9pZCBHZXRCbG9ja0xpdHRsZUVuZGlhbihjb25zdCBieXRlICpibG9jaywgVCAmYSwg
VCAmYikKewojaWZkZWYgSVNfTElUVExFX0VORElBTgoJYSA9ICgoVCAqKWJsb2NrKVswXTsKCWIg
PSAoKFQgKilibG9jaylbMV07CiNlbHNlCglhID0gYnl0ZVJldmVyc2UoKChUICopYmxvY2spWzBd
KTsKCWIgPSBieXRlUmV2ZXJzZSgoKFQgKilibG9jaylbMV0pOwojZW5kaWYKfQoKLy8gUHV0IDIg
d29yZHMgYmFjayBpbnRvIHVzZXIncyBidWZmZXIgaW4gTElUVExFLWVuZGlhbiBvcmRlcgp0ZW1w
bGF0ZSA8Y2xhc3MgVD4KaW5saW5lIHZvaWQgUHV0QmxvY2tMaXR0bGVFbmRpYW4oYnl0ZSAqYmxv
Y2ssIFQgYSwgVCBiKQp7CiNpZmRlZiBJU19MSVRUTEVfRU5ESUFOCgkoKFQgKilibG9jaylbMF0g
PSBhOwoJKChUICopYmxvY2spWzFdID0gYjsKI2Vsc2UKCSgoVCAqKWJsb2NrKVswXSA9IGJ5dGVS
ZXZlcnNlKGEpOwoJKChUICopYmxvY2spWzFdID0gYnl0ZVJldmVyc2UoYik7CiNlbmRpZgp9Cgov
LyBGZXRjaCA0IHdvcmRzIGZyb20gdXNlcidzIGJ1ZmZlciBpbnRvICJhIiwgImIiLCAiYyIsICJk
IiBpbiBMSVRUTEUtZW5kaWFuIG9yZGVyCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUgdm9pZCBH
ZXRCbG9ja0xpdHRsZUVuZGlhbihjb25zdCBieXRlICpibG9jaywgVCAmYSwgVCAmYiwgVCAmYywg
VCAmZCkKewojaWZkZWYgSVNfTElUVExFX0VORElBTgoJYSA9ICgoVCAqKWJsb2NrKVswXTsKCWIg
PSAoKFQgKilibG9jaylbMV07CgljID0gKChUICopYmxvY2spWzJdOwoJZCA9ICgoVCAqKWJsb2Nr
KVszXTsKI2Vsc2UKCWEgPSBieXRlUmV2ZXJzZSgoKFQgKilibG9jaylbMF0pOwoJYiA9IGJ5dGVS
ZXZlcnNlKCgoVCAqKWJsb2NrKVsxXSk7CgljID0gYnl0ZVJldmVyc2UoKChUICopYmxvY2spWzJd
KTsKCWQgPSBieXRlUmV2ZXJzZSgoKFQgKilibG9jaylbM10pOwojZW5kaWYKfQoKLy8gUHV0IDQg
d29yZHMgYmFjayBpbnRvIHVzZXIncyBidWZmZXIgaW4gTElUVExFLWVuZGlhbiBvcmRlcgp0ZW1w
bGF0ZSA8Y2xhc3MgVD4KaW5saW5lIHZvaWQgUHV0QmxvY2tMaXR0bGVFbmRpYW4oYnl0ZSAqYmxv
Y2ssIFQgYSwgVCBiLCBUIGMsIFQgZCkKewojaWZkZWYgSVNfTElUVExFX0VORElBTgoJKChUICop
YmxvY2spWzBdID0gYTsKCSgoVCAqKWJsb2NrKVsxXSA9IGI7CgkoKFQgKilibG9jaylbMl0gPSBj
OwoJKChUICopYmxvY2spWzNdID0gZDsKI2Vsc2UKCSgoVCAqKWJsb2NrKVswXSA9IGJ5dGVSZXZl
cnNlKGEpOwoJKChUICopYmxvY2spWzFdID0gYnl0ZVJldmVyc2UoYik7CgkoKFQgKilibG9jaylb
Ml0gPSBieXRlUmV2ZXJzZShjKTsKCSgoVCAqKWJsb2NrKVszXSA9IGJ5dGVSZXZlcnNlKGQpOwoj
ZW5kaWYKfQoKLy8gRmV0Y2ggMiB3b3JkcyBmcm9tIHVzZXIncyBidWZmZXIgaW50byAiYSIsICJi
IiBpbiBCSUctZW5kaWFuIG9yZGVyCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUgdm9pZCBHZXRC
bG9ja0JpZ0VuZGlhbihjb25zdCBieXRlICpibG9jaywgVCAmYSwgVCAmYikKewojaWZuZGVmIElT
X0xJVFRMRV9FTkRJQU4KCWEgPSAoKFQgKilibG9jaylbMF07CgliID0gKChUICopYmxvY2spWzFd
OwojZWxzZQoJYSA9IGJ5dGVSZXZlcnNlKCgoVCAqKWJsb2NrKVswXSk7CgliID0gYnl0ZVJldmVy
c2UoKChUICopYmxvY2spWzFdKTsKI2VuZGlmCn0KCi8vIFB1dCAyIHdvcmRzIGJhY2sgaW50byB1
c2VyJ3MgYnVmZmVyIGluIEJJRy1lbmRpYW4gb3JkZXIKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGlu
ZSB2b2lkIFB1dEJsb2NrQmlnRW5kaWFuKGJ5dGUgKmJsb2NrLCBUIGEsIFQgYikKewojaWZuZGVm
IElTX0xJVFRMRV9FTkRJQU4KCSgoVCAqKWJsb2NrKVswXSA9IGE7CgkoKFQgKilibG9jaylbMV0g
PSBiOwojZWxzZQoJKChUICopYmxvY2spWzBdID0gYnl0ZVJldmVyc2UoYSk7CgkoKFQgKilibG9j
aylbMV0gPSBieXRlUmV2ZXJzZShiKTsKI2VuZGlmCn0KCi8vIEZldGNoIDQgd29yZHMgZnJvbSB1
c2VyJ3MgYnVmZmVyIGludG8gImEiLCAiYiIsICJjIiwgImQiIGluIEJJRy1lbmRpYW4gb3JkZXIK
dGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZSB2b2lkIEdldEJsb2NrQmlnRW5kaWFuKGNvbnN0IGJ5
dGUgKmJsb2NrLCBUICZhLCBUICZiLCBUICZjLCBUICZkKQp7CiNpZm5kZWYgSVNfTElUVExFX0VO
RElBTgoJYSA9ICgoVCAqKWJsb2NrKVswXTsKCWIgPSAoKFQgKilibG9jaylbMV07CgljID0gKChU
ICopYmxvY2spWzJdOwoJZCA9ICgoVCAqKWJsb2NrKVszXTsKI2Vsc2UKCWEgPSBieXRlUmV2ZXJz
ZSgoKFQgKilibG9jaylbMF0pOwoJYiA9IGJ5dGVSZXZlcnNlKCgoVCAqKWJsb2NrKVsxXSk7Cglj
ID0gYnl0ZVJldmVyc2UoKChUICopYmxvY2spWzJdKTsKCWQgPSBieXRlUmV2ZXJzZSgoKFQgKili
bG9jaylbM10pOwojZW5kaWYKfQoKLy8gUHV0IDQgd29yZHMgYmFjayBpbnRvIHVzZXIncyBidWZm
ZXIgaW4gQklHLWVuZGlhbiBvcmRlcgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lIHZvaWQgUHV0
QmxvY2tCaWdFbmRpYW4oYnl0ZSAqYmxvY2ssIFQgYSwgVCBiLCBUIGMsIFQgZCkKewojaWZuZGVm
IElTX0xJVFRMRV9FTkRJQU4KCSgoVCAqKWJsb2NrKVswXSA9IGE7CgkoKFQgKilibG9jaylbMV0g
PSBiOwoJKChUICopYmxvY2spWzJdID0gYzsKCSgoVCAqKWJsb2NrKVszXSA9IGQ7CiNlbHNlCgko
KFQgKilibG9jaylbMF0gPSBieXRlUmV2ZXJzZShhKTsKCSgoVCAqKWJsb2NrKVsxXSA9IGJ5dGVS
ZXZlcnNlKGIpOwoJKChUICopYmxvY2spWzJdID0gYnl0ZVJldmVyc2UoYyk7CgkoKFQgKilibG9j
aylbM10gPSBieXRlUmV2ZXJzZShkKTsKI2VuZGlmCn0KCnRlbXBsYXRlIDxjbGFzcyBUPgpzdGQ6
OnN0cmluZyBXb3JkVG9TdHJpbmcoVCB2YWx1ZSwgYm9vbCBoaWdoRmlyc3QgPSB0cnVlKQp7Cglp
ZiAoIUNoZWNrRW5kaWFuZXNzKGhpZ2hGaXJzdCkpCgkJdmFsdWUgPSBieXRlUmV2ZXJzZSh2YWx1
ZSk7CgoJcmV0dXJuIHN0ZDo6c3RyaW5nKChjaGFyICopJnZhbHVlLCBzaXplb2YodmFsdWUpKTsK
fQoKdGVtcGxhdGUgPGNsYXNzIFQ+ClQgU3RyaW5nVG9Xb3JkKGNvbnN0IHN0ZDo6c3RyaW5nICZz
dHIsIGJvb2wgaGlnaEZpcnN0ID0gdHJ1ZSkKewoJVCB2YWx1ZSA9IDA7CgltZW1jcHkoJnZhbHVl
LCBzdHIuZGF0YSgpLCBTVERNSU4oc2l6ZW9mKHZhbHVlKSwgc3RyLnNpemUoKSkpOwoJcmV0dXJu
IENoZWNrRW5kaWFuZXNzKGhpZ2hGaXJzdCkgPyB2YWx1ZSA6IGJ5dGVSZXZlcnNlKHZhbHVlKTsK
fQoKLy8gKioqKioqKioqKioqKioga2V5IGxlbmd0aCBxdWVyeSAqKioqKioqKioqKioqKioKCi8v
LyBzdXBwb3J0IHF1ZXJ5IG9mIGZpeGVkIGtleSBsZW5ndGgKdGVtcGxhdGUgPHVuc2lnbmVkIGlu
dCBOPgpjbGFzcyBGaXhlZEtleUxlbmd0aAp7CnB1YmxpYzoKCWVudW0ge0tFWUxFTkdUSD1OLCBN
SU5fS0VZTEVOR1RIPU4sIE1BWF9LRVlMRU5HVEg9TiwgREVGQVVMVF9LRVlMRU5HVEg9Tn07Cgkv
Ly8gcmV0dXJucyB0aGUga2V5IGxlbmd0aAoJc3RhdGljIHVuc2lnbmVkIGludCBLZXlMZW5ndGgo
dW5zaWduZWQgaW50KSB7cmV0dXJuIEtFWUxFTkdUSDt9Cn07CgovLy8gc3VwcG9ydCBxdWVyeSBv
ZiB2YXJpYWJsZSBrZXkgbGVuZ3RoLCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGFyZSBkZWZhdWx0LCBt
aW4sIG1heCwgbXVsdGlwbGUgKGRlZmF1bHQgbXVsdGlwbGUgMSkKdGVtcGxhdGUgPHVuc2lnbmVk
IGludCBELCB1bnNpZ25lZCBpbnQgTiwgdW5zaWduZWQgaW50IE0sIHVuc2lnbmVkIGludCBRPTE+
CmNsYXNzIFZhcmlhYmxlS2V5TGVuZ3RoCnsKcHVibGljOgoJZW51bSB7TUlOX0tFWUxFTkdUSD1O
LCBNQVhfS0VZTEVOR1RIPU0sIERFRkFVTFRfS0VZTEVOR1RIPUQsIEtFWUxFTkdUSF9NVUxUSVBM
RT1RfTsKCS8vLyByZXR1cm5zIHRoZSBzbWFsbGVzdCB2YWxpZCBrZXkgbGVuZ3RoIGluIGJ5dGVz
IHRoYXQgaXMgPj0gbWluKG4sIE1BWF9LRVlMRU5HVEgpCglzdGF0aWMgdW5zaWduZWQgaW50IEtl
eUxlbmd0aCh1bnNpZ25lZCBpbnQgbikKCXsKCQlhc3NlcnQoS0VZTEVOR1RIX01VTFRJUExFID4g
MCAmJiBNSU5fS0VZTEVOR1RIICUgS0VZTEVOR1RIX01VTFRJUExFID09IDAgJiYgTUFYX0tFWUxF
TkdUSCAlIEtFWUxFTkdUSF9NVUxUSVBMRSA9PSAwKTsKCQlpZiAobiA8IE1JTl9LRVlMRU5HVEgp
CgkJCXJldHVybiBNSU5fS0VZTEVOR1RIOwoJCWVsc2UgaWYgKG4gPiBNQVhfS0VZTEVOR1RIKQoJ
CQlyZXR1cm4gTUFYX0tFWUxFTkdUSDsKCQllbHNlCgkJCXJldHVybiBSb3VuZFVwVG9NdWx0aXBs
ZU9mKG4sIEtFWUxFTkdUSF9NVUxUSVBMRSk7Cgl9Cn07CgovLy8gc3VwcG9ydCBxdWVyeSBvZiBr
ZXkgbGVuZ3RoIHRoYXQncyB0aGUgc2FtZSBhcyBhbm90aGVyIGNsYXNzCnRlbXBsYXRlIDxjbGFz
cyBUPgpjbGFzcyBTYW1lS2V5TGVuZ3RoQXMKewpwdWJsaWM6CgllbnVtIHtNSU5fS0VZTEVOR1RI
PVQ6Ok1JTl9LRVlMRU5HVEgsIE1BWF9LRVlMRU5HVEg9VDo6TUFYX0tFWUxFTkdUSCwgREVGQVVM
VF9LRVlMRU5HVEg9VDo6REVGQVVMVF9LRVlMRU5HVEh9OwoJLy8vIHJldHVybnMgdGhlIHNtYWxs
ZXN0IHZhbGlkIGtleSBsZW5ndGggaW4gYnl0ZXMgdGhhdCBpcyA+PSBtaW4obiwgTUFYX0tFWUxF
TkdUSCkKCXN0YXRpYyB1bnNpZ25lZCBpbnQgS2V5TGVuZ3RoKHVuc2lnbmVkIGludCBrZXlsZW5n
dGgpCgkJe3JldHVybiBUOjpLZXlMZW5ndGgoa2V5bGVuZ3RoKTt9Cn07CgovLyAqKioqKioqKioq
KioqKiBzZWN1cmUgbWVtb3J5IGFsbG9jYXRpb24gKioqKioqKioqKioqKioqCgojaWZkZWYgU0VD
QUxMT0NfREVGQVVMVAojZGVmaW5lIFNlY0FsbG9jKHR5cGUsIG51bWJlcikgKG5ldyB0eXBlWyhu
dW1iZXIpXSkKI2RlZmluZSBTZWNGcmVlKHB0ciwgbnVtYmVyKSAobWVtc2V0KChwdHIpLCAwLCAo
bnVtYmVyKSpzaXplb2YoKihwdHIpKSksIGRlbGV0ZSBbXSAocHRyKSkKI2Vsc2UKI2RlZmluZSBT
ZWNBbGxvYyh0eXBlLCBudW1iZXIpIChuZXcgdHlwZVsobnVtYmVyKV0pCiNkZWZpbmUgU2VjRnJl
ZShwdHIsIG51bWJlcikgKGRlbGV0ZSBbXSAocHRyKSkKI2VuZGlmCgovLyEgYSBibG9jayBvZiBt
ZW1vcnkgYWxsb2NhdGVkIHVzaW5nIFNlY0FsbG9jCnRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3Qg
U2VjQmxvY2sKewoJZXhwbGljaXQgU2VjQmxvY2sodW5zaWduZWQgaW50IHNpemU9MCkKCQk6IHNp
emUoc2l6ZSkge3B0ciA9IFNlY0FsbG9jKFQsIHNpemUpO30KCVNlY0Jsb2NrKGNvbnN0IFNlY0Js
b2NrPFQ+ICZ0KQoJCTogc2l6ZSh0LnNpemUpIHtwdHIgPSBTZWNBbGxvYyhULCBzaXplKTsgbWVt
Y3B5KHB0ciwgdC5wdHIsIHNpemUqc2l6ZW9mKFQpKTt9CglTZWNCbG9jayhjb25zdCBUICp0LCB1
bnNpZ25lZCBpbnQgbGVuKQoJCTogc2l6ZShsZW4pIHtwdHIgPSBTZWNBbGxvYyhULCBsZW4pOyBt
ZW1jcHkocHRyLCB0LCBsZW4qc2l6ZW9mKFQpKTt9Cgl+U2VjQmxvY2soKQoJCXtTZWNGcmVlKHB0
ciwgc2l6ZSk7fQoKI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19CQ1BMVVNQTFVT
X18pCglvcGVyYXRvciBjb25zdCB2b2lkICooKSBjb25zdAoJCXtyZXR1cm4gcHRyO30KCW9wZXJh
dG9yIHZvaWQgKigpCgkJe3JldHVybiBwdHI7fQojZW5kaWYKI2lmIGRlZmluZWQoX19HTlVDX18p
CS8vIHJlZHVjZSB3YXJuaW5ncwoJb3BlcmF0b3IgY29uc3Qgdm9pZCAqKCkKCQl7cmV0dXJuIHB0
cjt9CiNlbmRpZgoKCW9wZXJhdG9yIGNvbnN0IFQgKigpIGNvbnN0CgkJe3JldHVybiBwdHI7fQoJ
b3BlcmF0b3IgVCAqKCkKCQl7cmV0dXJuIHB0cjt9CiNpZiBkZWZpbmVkKF9fR05VQ19fKQkvLyBy
ZWR1Y2Ugd2FybmluZ3MKCW9wZXJhdG9yIGNvbnN0IFQgKigpCgkJe3JldHVybiBwdHI7fQojZW5k
aWYKCi8vIENvZGVXYXJyaW9yIGRlZmluZXMgX01TQ19WRVIKI2lmICFkZWZpbmVkKF9NU0NfVkVS
KSB8fCBkZWZpbmVkKF9fTVdFUktTX18pCgl0ZW1wbGF0ZSA8dHlwZW5hbWUgST4KCVQgKm9wZXJh
dG9yICsoSSBvZmZzZXQpCgkJe3JldHVybiBwdHIrb2Zmc2V0O30KCgl0ZW1wbGF0ZSA8dHlwZW5h
bWUgST4KCWNvbnN0IFQgKm9wZXJhdG9yICsoSSBvZmZzZXQpIGNvbnN0CgkJe3JldHVybiBwdHIr
b2Zmc2V0O30KCgl0ZW1wbGF0ZSA8dHlwZW5hbWUgST4KCVQmIG9wZXJhdG9yW10oSSBpbmRleCkK
CQl7YXNzZXJ0KGluZGV4PHNpemUpOyByZXR1cm4gcHRyW2luZGV4XTt9CgoJdGVtcGxhdGUgPHR5
cGVuYW1lIEk+Cgljb25zdCBUJiBvcGVyYXRvcltdKEkgaW5kZXgpIGNvbnN0CgkJe2Fzc2VydChp
bmRleDxzaXplKTsgcmV0dXJuIHB0cltpbmRleF07CgkgICAgICAgIH0KI2VuZGlmCgoJY29uc3Qg
VCogQmVnaW4oKSBjb25zdAoJCXtyZXR1cm4gcHRyO30KCVQqIEJlZ2luKCkKCQl7cmV0dXJuIHB0
cjt9Cgljb25zdCBUKiBFbmQoKSBjb25zdAoJCXtyZXR1cm4gcHRyK3NpemU7fQoJVCogRW5kKCkK
CQl7cmV0dXJuIHB0citzaXplO30KCgl1bnNpZ25lZCBpbnQgU2l6ZSgpIGNvbnN0IHtyZXR1cm4g
c2l6ZTt9CgoJdm9pZCBBc3NpZ24oY29uc3QgVCAqdCwgdW5zaWduZWQgaW50IGxlbikKCXsKCQlO
ZXcobGVuKTsKCQltZW1jcHkocHRyLCB0LCBsZW4qc2l6ZW9mKFQpKTsKCX0KCgl2b2lkIEFzc2ln
bihjb25zdCBTZWNCbG9jazxUPiAmdCkKCXsKCQlOZXcodC5zaXplKTsKCQltZW1jcHkocHRyLCB0
LnB0ciwgc2l6ZSpzaXplb2YoVCkpOwoJfQoKCVNlY0Jsb2NrJiBvcGVyYXRvcj0oY29uc3QgU2Vj
QmxvY2s8VD4gJnQpCgl7CgkJQXNzaWduKHQpOwoJCXJldHVybiAqdGhpczsKCX0KCglib29sIG9w
ZXJhdG9yPT0oY29uc3QgU2VjQmxvY2s8VD4gJnQpIGNvbnN0Cgl7CgkJcmV0dXJuIHNpemUgPT0g
dC5zaXplICYmIG1lbWNtcChwdHIsIHQucHRyLCBzaXplKnNpemVvZihUKSkgPT0gMDsKCX0KCgli
b29sIG9wZXJhdG9yIT0oY29uc3QgU2VjQmxvY2s8VD4gJnQpIGNvbnN0Cgl7CgkJcmV0dXJuICFv
cGVyYXRvcj09KHQpOwoJfQoKCXZvaWQgTmV3KHVuc2lnbmVkIGludCBuZXdTaXplKQoJewoJCWlm
IChuZXdTaXplICE9IHNpemUpCgkJewoJCQlUICpuZXdQdHIgPSBTZWNBbGxvYyhULCBuZXdTaXpl
KTsKCQkJU2VjRnJlZShwdHIsIHNpemUpOwoJCQlwdHIgPSBuZXdQdHI7CgkJCXNpemUgPSBuZXdT
aXplOwoJCX0KCX0KCgl2b2lkIENsZWFuTmV3KHVuc2lnbmVkIGludCBuZXdTaXplKQoJewoJCWlm
IChuZXdTaXplICE9IHNpemUpCgkJewoJCQlUICpuZXdQdHIgPSBTZWNBbGxvYyhULCBuZXdTaXpl
KTsKCQkJU2VjRnJlZShwdHIsIHNpemUpOwoJCQlwdHIgPSBuZXdQdHI7CgkJCXNpemUgPSBuZXdT
aXplOwoJCX0KCQltZW1zZXQocHRyLCAwLCBzaXplKnNpemVvZihUKSk7Cgl9CgoJdm9pZCBHcm93
KHVuc2lnbmVkIGludCBuZXdTaXplKQoJewoJCWlmIChuZXdTaXplID4gc2l6ZSkKCQl7CgkJCVQg
Km5ld1B0ciA9IFNlY0FsbG9jKFQsIG5ld1NpemUpOwoJCQltZW1jcHkobmV3UHRyLCBwdHIsIHNp
emUqc2l6ZW9mKFQpKTsKCQkJU2VjRnJlZShwdHIsIHNpemUpOwoJCQlwdHIgPSBuZXdQdHI7CgkJ
CXNpemUgPSBuZXdTaXplOwoJCX0KCX0KCgl2b2lkIENsZWFuR3Jvdyh1bnNpZ25lZCBpbnQgbmV3
U2l6ZSkKCXsKCQlpZiAobmV3U2l6ZSA+IHNpemUpCgkJewoJCQlUICpuZXdQdHIgPSBTZWNBbGxv
YyhULCBuZXdTaXplKTsKCQkJbWVtY3B5KG5ld1B0ciwgcHRyLCBzaXplKnNpemVvZihUKSk7CgkJ
CW1lbXNldChuZXdQdHIrc2l6ZSwgMCwgKG5ld1NpemUtc2l6ZSkqc2l6ZW9mKFQpKTsKCQkJU2Vj
RnJlZShwdHIsIHNpemUpOwoJCQlwdHIgPSBuZXdQdHI7CgkJCXNpemUgPSBuZXdTaXplOwoJCX0K
CX0KCgl2b2lkIFJlc2l6ZSh1bnNpZ25lZCBpbnQgbmV3U2l6ZSkKCXsKCQlpZiAobmV3U2l6ZSAh
PSBzaXplKQoJCXsKCQkJVCAqbmV3UHRyID0gU2VjQWxsb2MoVCwgbmV3U2l6ZSk7CgkJCW1lbWNw
eShuZXdQdHIsIHB0ciwgU1RETUlOKG5ld1NpemUsIHNpemUpKnNpemVvZihUKSk7CgkJCVNlY0Zy
ZWUocHRyLCBzaXplKTsKCQkJcHRyID0gbmV3UHRyOwoJCQlzaXplID0gbmV3U2l6ZTsKCQl9Cgl9
CgoJdm9pZCBzd2FwKFNlY0Jsb2NrPFQ+ICZiKTsKCgl1bnNpZ25lZCBpbnQgc2l6ZTsKCVQgKnB0
cjsKfTsKCnRlbXBsYXRlIDxjbGFzcyBUPiB2b2lkIFNlY0Jsb2NrPFQ+Ojpzd2FwKFNlY0Jsb2Nr
PFQ+ICZiKQp7CglzdGQ6OnN3YXAoc2l6ZSwgYi5zaXplKTsKCXN0ZDo6c3dhcChwdHIsIGIucHRy
KTsKfQoKdHlwZWRlZiBTZWNCbG9jazxieXRlPiBTZWNCeXRlQmxvY2s7CnR5cGVkZWYgU2VjQmxv
Y2s8d29yZD4gU2VjV29yZEJsb2NrOwoKTkFNRVNQQUNFX0VORAoKTkFNRVNQQUNFX0JFR0lOKHN0
ZCkKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZSB2b2lkIHN3YXAoQ3J5cHRvUFA6OlNlY0Jsb2Nr
PFQ+ICZhLCBDcnlwdG9QUDo6U2VjQmxvY2s8VD4gJmIpCnsKCWEuc3dhcChiKTsKfQoKTkFNRVNQ
QUNFX0VORAoKI2VuZGlmIC8vIE1JU0NfSAo=



More information about the Gcc-bugs mailing list