From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com [54.207.22.56]) by sourceware.org (Postfix) with ESMTPS id 6AFAF3858D28 for ; Wed, 24 May 2023 13:27:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6AFAF3858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp80t1684934820tnai1k59 Received: from TABLET-POE6JQHH ( [115.44.118.116]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 24 May 2023 21:26:59 +0800 (CST) X-QQ-SSF: 01400000000000F0R000000A0000000 X-QQ-FEAT: Lc4bMlOoZUH9BVhUX4mOq/7Y4CUcRxh5fb14wtu7YeWY/QVlUGCuhCpi8ILBa hu6V5irWttutArCEnpIk1aNxs4Ib2ED2+PkbhnXaQaqFVC7E/tuIBZhGEjuldwjkMx9KIYr /+tsUhYStWgqiAz8h7YfekyBC3lS3SJh75kO04Wwc5etr1wICZqKyLyAngc1BbxNWCcFcL7 /AQ79Jls3/vGhQK5X6JKLQ9YL7TlkzlFPDec6Xq414iE3q/drOGBIlhTSlYVCL4gLQaCOdo +aotBIb6ltw6Sxh4gHjGoaP8cBEihYP///zn83/bMU1euW6KYyhBKPmVz8A/txErRkHRPRO Y4gMM9LS/TmN/UFj/bMy9lmZL/tm/HUpi0t5W7Uzha+GM9ur1IWKoLq7p9+Ieoeo9QIRtoN RtoC7mM3IeMpQ17rxto3s/B7ckfW7dyf X-QQ-GoodBg: 2 X-BIZMAIL-ID: 13309314065052975307 Date: Wed, 24 May 2023 21:26:58 +0800 From: =?UTF-8?B?6ZKf5bGF5ZOy?= To: richard.sandiford Cc: gcc-patches , rguenther Subject: Re: Re: [PATCH V12] VECT: Add decrement IV iteration loop control by variable amount support References: <20230522083814.1647787-1-juzhe.zhong@rivai.ai>, , , X-Priority: 3 X-GUID: 8CBF8482-0EB2-4807-BC4C-573A431E3624 X-Has-Attach: no X-Mailer: Foxmail 7.2.23.121[cn] Mime-Version: 1.0 Message-ID: <19FAF964BA45AEBD+202305242126582416128@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart788176105165_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00,BODY_8BITS,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. ------=_001_NextPart788176105165_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Pj4gSW4gb3RoZXIgd29yZHMsIHdoeSBpcyB0aGlzIGRpZmZlcmVudCBmcm9t IHdoYXQNCj4+dmVjdF9zZXRfbG9vcF9jb250cm9sc19kaXJlY3RseSB3b3Vs ZCBkbz8NCk9oLCBJIHNlZS4gIFlvdSBhcmUgY29uZnVzZWQgdGhhdCB3aHkg SSBkbyBub3QgbWFrZSBtdWx0aXBsZS1yZ3JvdXAgdmVjX3RydW5rDQpoYW5k bGluZyBpbnNpZGUgInZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHki Lg0KDQpXZWxsLiBGcmFua2x5LCBJIGp1c3QgcmVwbGljYXRlIHRoZSBoYW5k bGluZyBvZiBBUk0gU1ZFOg0KdW5zaWduZWQgaW50IG5tYXNrcyA9IGkgKyAx Ow0KICAgICAgICBpZiAodXNlX21hc2tzX3AgJiYgKG5tYXNrcyAmIDEpID09 IDApDQogICAgICAgICAgew0KICAgICAgICAgICAgcmdyb3VwX2NvbnRyb2xz ICpoYWxmX3JnYyA9ICYoKmNvbnRyb2xzKVtubWFza3MgLyAyIC0gMV07DQog ICAgICAgICAgICBpZiAoIWhhbGZfcmdjLT5jb250cm9scy5pc19lbXB0eSAo KQ0KICAgICAgICAgICAgICAgICYmIHZlY3RfbWF5YmVfcGVybXV0ZV9sb29w X21hc2tzICgmaGVhZGVyX3NlcSwgcmdjLCBoYWxmX3JnYykpDQogICAgICAg ICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgIH0NCg0KLyogVHJ5IHRvIHVz ZSBwZXJtdXRlcyB0byBkZWZpbmUgdGhlIG1hc2tzIGluIERFU1RfUkdNIHVz aW5nIHRoZSBtYXNrcw0KICAgaW4gU1JDX1JHTSwgZ2l2ZW4gdGhhdCB0aGUg Zm9ybWVyIGhhcyB0d2ljZSBhcyBtYW55IG1hc2tzIGFzIHRoZQ0KICAgbGF0 dGVyLiAgUmV0dXJuIHRydWUgb24gc3VjY2VzcywgYWRkaW5nIGFueSBuZXcg c3RhdGVtZW50cyB0byBTRVEuICAqLw0KDQpzdGF0aWMgYm9vbA0KdmVjdF9t YXliZV9wZXJtdXRlX2xvb3BfbWFza3MgKGdpbXBsZV9zZXEgKnNlcSwgcmdy b3VwX2NvbnRyb2xzICpkZXN0X3JnbSwNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZ3JvdXBfY29udHJvbHMgKnNyY19yZ20pDQp7DQogIHRy ZWUgc3JjX21hc2t0eXBlID0gc3JjX3JnbS0+dHlwZTsNCiAgdHJlZSBkZXN0 X21hc2t0eXBlID0gZGVzdF9yZ20tPnR5cGU7DQogIG1hY2hpbmVfbW9kZSBz cmNfbW9kZSA9IFRZUEVfTU9ERSAoc3JjX21hc2t0eXBlKTsNCiAgaW5zbl9j b2RlIGljb2RlMSwgaWNvZGUyOw0KICBpZiAoZGVzdF9yZ20tPm1heF9uc2Nh bGFyc19wZXJfaXRlciA8PSBzcmNfcmdtLT5tYXhfbnNjYWxhcnNfcGVyX2l0 ZXINCiAgICAgICYmIChpY29kZTEgPSBvcHRhYl9oYW5kbGVyICh2ZWNfdW5w YWNrdV9oaV9vcHRhYiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcmNfbW9kZSkpICE9IENPREVfRk9SX25vdGhpbmcNCiAgICAgICYm IChpY29kZTIgPSBvcHRhYl9oYW5kbGVyICh2ZWNfdW5wYWNrdV9sb19vcHRh YiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfbW9k ZSkpICE9IENPREVfRk9SX25vdGhpbmcpDQogICAgew0KICAgICAgLyogVW5w YWNraW5nIHRoZSBzb3VyY2UgbWFza3MgZ2l2ZXMgYXQgbGVhc3QgYXMgbWFu eSBtYXNrIGJpdHMgYXMNCiAgICAgICAgIHdlIG5lZWQuICBXZSBjYW4gdGhl biBWSUVXX0NPTlZFUlQgYW55IGV4Y2VzcyBiaXRzIGF3YXkuICAqLw0KICAg ICAgbWFjaGluZV9tb2RlIGRlc3RfbW9kZSA9IGluc25fZGF0YVtpY29kZTFd Lm9wZXJhbmRbMF0ubW9kZTsNCiAgICAgIGdjY19hc3NlcnQgKGRlc3RfbW9k ZSA9PSBpbnNuX2RhdGFbaWNvZGUyXS5vcGVyYW5kWzBdLm1vZGUpOw0KICAg ICAgdHJlZSB1bnBhY2tfbWFza3R5cGUgPSB2ZWN0X2hhbHZlX21hc2tfbnVu aXRzIChzcmNfbWFza3R5cGUsIGRlc3RfbW9kZSk7DQogICAgICBmb3IgKHVu c2lnbmVkIGludCBpID0gMDsgaSA8IGRlc3RfcmdtLT5jb250cm9scy5sZW5n dGggKCk7ICsraSkNCiAgICAgICAgew0KICAgICAgICAgIHRyZWUgc3JjID0g c3JjX3JnbS0+Y29udHJvbHNbaSAvIDJdOw0KICAgICAgICAgIHRyZWUgZGVz dCA9IGRlc3RfcmdtLT5jb250cm9sc1tpXTsNCiAgICAgICAgICB0cmVlX2Nv ZGUgY29kZSA9ICgoaSAmIDEpID09IChCWVRFU19CSUdfRU5ESUFOID8gMCA6 IDEpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBWRUNfVU5QQUNL X0hJX0VYUFINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFZFQ19V TlBBQ0tfTE9fRVhQUik7DQogICAgICAgICAgZ2Fzc2lnbiAqc3RtdDsNCiAg ICAgICAgICBpZiAoZGVzdF9tYXNrdHlwZSA9PSB1bnBhY2tfbWFza3R5cGUp DQogICAgICAgICAgICBzdG10ID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoZGVz dCwgY29kZSwgc3JjKTsNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7 DQogICAgICAgICAgICAgIHRyZWUgdGVtcCA9IG1ha2Vfc3NhX25hbWUgKHVu cGFja19tYXNrdHlwZSk7DQogICAgICAgICAgICAgIHN0bXQgPSBnaW1wbGVf YnVpbGRfYXNzaWduICh0ZW1wLCBjb2RlLCBzcmMpOw0KICAgICAgICAgICAg ICBnaW1wbGVfc2VxX2FkZF9zdG10IChzZXEsIHN0bXQpOw0KICAgICAgICAg ICAgICBzdG10ID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoZGVzdCwgVklFV19D T05WRVJUX0VYUFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBidWlsZDEgKFZJRVdfQ09OVkVSVF9FWFBSLA0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZXN0X21hc2t0eXBlLCB0ZW1wKSk7DQogICAgICAgICAgICB9DQogICAgICAg ICAgZ2ltcGxlX3NlcV9hZGRfc3RtdCAoc2VxLCBzdG10KTsNCiAgICAgICAg fQ0KICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICB2ZWNfcGVybV9pbmRp Y2VzIGluZGljZXNbMl07DQogIGlmIChkZXN0X21hc2t0eXBlID09IHNyY19t YXNrdHlwZQ0KICAgICAgJiYgaW50ZXJsZWF2ZV9zdXBwb3J0ZWRfcCAoJmlu ZGljZXNbMF0sIHNyY19tYXNrdHlwZSwgMCkNCiAgICAgICYmIGludGVybGVh dmVfc3VwcG9ydGVkX3AgKCZpbmRpY2VzWzFdLCBzcmNfbWFza3R5cGUsIDEp KQ0KICAgIHsNCiAgICAgIC8qIFRoZSBkZXN0aW5hdGlvbiByZXF1aXJlcyB0 d2ljZSBhcyBtYW55IG1hc2sgYml0cyBhcyB0aGUgc291cmNlLCBzbw0KICAg ICAgICAgd2UgY2FuIHVzZSBpbnRlcmxlYXZpbmcgcGVybXV0ZXMgdG8gZG91 YmxlIHVwIHRoZSBudW1iZXIgb2YgYml0cy4gICovDQogICAgICB0cmVlIG1h c2tzWzJdOw0KICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAy OyArK2kpDQogICAgICAgIG1hc2tzW2ldID0gdmVjdF9nZW5fcGVybV9tYXNr X2NoZWNrZWQgKHNyY19tYXNrdHlwZSwgaW5kaWNlc1tpXSk7DQogICAgICBm b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGRlc3RfcmdtLT5jb250cm9s cy5sZW5ndGggKCk7ICsraSkNCiAgICAgICAgew0KICAgICAgICAgIHRyZWUg c3JjID0gc3JjX3JnbS0+Y29udHJvbHNbaSAvIDJdOw0KICAgICAgICAgIHRy ZWUgZGVzdCA9IGRlc3RfcmdtLT5jb250cm9sc1tpXTsNCiAgICAgICAgICBn aW1wbGUgKnN0bXQgPSBnaW1wbGVfYnVpbGRfYXNzaWduIChkZXN0LCBWRUNf UEVSTV9FWFBSLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNyYywgc3JjLCBtYXNrc1tpICYgMV0pOw0KICAgICAg ICAgIGdpbXBsZV9zZXFfYWRkX3N0bXQgKHNlcSwgc3RtdCk7DQogICAgICAg IH0NCiAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCiAgcmV0dXJuIGZhbHNl Ow0KfQ0KDQpJIGtub3cgdGhpcyBpcyBqdXN0IG9wdGltaXphdGlvbiBmb3Ig QVJNIFNWRSB3aXRoIHN1Yl9yZ2MgKGludDE2KSAgaXMgaGFsZiBzaXplIG9m IHJnYyAoaW50OCkuDQpCdXQgd2hlbiBJIGp1c3QgY29weSB0aGUgY29kZXMg ZnJvbSBBUk0gU1ZFIGFuZCBtYWtlIGl0IGdlbmVyYWwgZm9yIGFsbCBjYXNl cyAoaW50OCA8LT4gaW50NjQpLg0KVGhleSBhbGwgd29yayB3ZWxsIGFuZCBj b2RlZ2VuIGlzIGdvb2QuIA0KDQpJZiB5b3UgZG9uJ3QgbGlrZSB0aGlzIHdh eSwgd291bGQgeW91IG1pbmQgZ2l2ZSBtZSBzb21lIHN1Z2dlc3Rpb25zPw0K DQpUaGFua3MuDQoNCg0KanV6aGUuemhvbmdAcml2YWkuYWkNCiANCkZyb206 IFJpY2hhcmQgU2FuZGlmb3JkDQpEYXRlOiAyMDIzLTA1LTI0IDIwOjQxDQpU bzog6ZKf5bGF5ZOyDQpDQzogZ2NjLXBhdGNoZXM7IHJndWVudGhlcg0KU3Vi amVjdDogUmU6IFtQQVRDSCBWMTJdIFZFQ1Q6IEFkZCBkZWNyZW1lbnQgSVYg aXRlcmF0aW9uIGxvb3AgY29udHJvbCBieSB2YXJpYWJsZSBhbW91bnQgc3Vw cG9ydA0KU29ycnksIEkgcmVhbGlzZWQgbGF0ZXIgdGhhdCBJIGhhZCBhbiBp bXBsaWNpdCBhc3N1bXB0aW9uIGhlcmU6DQppZiB0aGVyZSBhcmUgbXVsdGlw bGUgcmdyb3VwcywgaXQncyBiZXR0ZXIgdG8gaGF2ZSBhIHNpbmdsZSBJVg0K Zm9yIHRoZSBzbWFsbGVzdCByZ3JvdXAgYW5kIHNjYWxlIHRoYXQgdXAgdG8g YmlnZ2VyIHJncm91cHMuDQogDQpFLmcuIGlmIHRoZSBsb29wIGNvbnRyb2wg SVYgaXMgdGFrZW4gZnJvbSBhbiBOLWNvbnRyb2wgcmdyb3VwDQphbmQgaGFz IGEgc3RlcCBTLCBhbiBOKk0tY29udHJvbCByZ3JvdXAgd291bGQgYmUgYmFz ZWQgb24gTSpTLg0KIA0KT2YgY291cnNlLCBpdCdzIGFsc28gT0sgdG8gY3Jl YXRlIG11bHRpcGxlIElWcyBpZiB5b3UgcHJlZmVyLg0KSXQncyBqdXN0IGEg cXVlc3Rpb24gb2Ygd2hpY2ggYXBwcm9hY2ggZ2l2ZXMgdGhlIGJlc3Qgb3V0 cHV0DQppbiBwcmFjdGljZS4NCiANCkFub3RoZXIgd2F5IG9mIGdvaW5nIGZy b20gYW4gTi1jb250cm9sIHJncm91cCAoIkcxIikgdG8gYW4gTipNLWNvbnRy b2wNCnJncm91cCAoIkcyIikgd291bGQgYmUgdG8gcmV1c2UgYWxsIE4gY29u dHJvbHMgZnJvbSBHMS4gIEUuZy4gdGhlDQpmaXJzdCBNIGNvbnRyb2xzIGlu IEcyIHdvdWxkIGNvbWUgZnJvbSBHMVswXSwgdGhlIG5leHQgTSBmcm9tDQpH MVsxXSwgZXRjLiAgVGhhdCBtaWdodCBsb3dlciB0aGUgbG9uZ2VzdCBkZXBl bmRlbmN5IGNoYWluLg0KIA0KQnV0IHdoYXRldmVyIHdlIGRvLCBpdCBkb2Vz bid0IGZlZWwgbGlrZSBtYXhfbnNjYWxhcnNfcGVyX2l0ZXINCnNob3VsZCBi ZSBwYXJ0IG9mIHRoZSBkZWNpc2lvbi4gIChJIHJlYWxpc2UgaXQgd2lsbCBi ZSBwYXJ0IG9mDQp0aGUgZGVjaXNpb24gZm9yIHRoZSBmb2xsb3ctb24gU0VM RUNUX0lWIHBhdGNoLiAgQnV0IHRoYXQncw0KYmVjYXVzZSB3ZSByZXF1aXJl IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgcHJvY2Vzc2VkIGluIGVhY2gNCml0 ZXJhdGlvbiB0byBiZSBhIG11bHRpcGxlIG9mIG1heF9uc2NhbGFyc19wZXJf aXRlciwgYW5kIEFJVUkNClNFTEVDVF9JViB3b3VsZG4ndCBndWFyYW50ZWUg dGhhdC4gIG1heF9uc2NhbGFyc19wZXJfaXRlciBzaG91bGRuJ3QNCm1hdHRl ciBmb3IgdGhlIGN1cnJlbnQgcGF0Y2ggdGhvdWdoLikNCiANCumSn+WxheWT siA8anV6aGUuemhvbmdAcml2YWkuYWk+IHdyaXRlczoNCj4gSGksIFJpY2hh cmQuICBJdCdzIHF1aXRlIGNvbXBsaWNhdGVkIGZvciBtZSBhbmQgSSBhbSBu b3Qgc3VyZSB3aGV0aGVyIEkgY2FuIGNhdGNoIHVwIHdpdGggeW91Lg0KPiBT byBJIHdpbGwgcmF0aGVyIHNwbGl0IHRoZSB3b3JrIHN0ZXAgYnkgc3RlcCB0 byAgaW1wbGVtZW50IHRoZSBkZWNyZW1lbnQgSVYNCj4NCj4gRm9yIHRoZSBm aXJzdCBzdGVwIHlvdSBtZW50aW9uZWQ6DQo+DQo+Pj4gKDEpIEluIHZlY3Rf c2V0X2xvb3BfY29uZGl0aW9uX3BhcnRpYWxfdmVjdG9ycywgZm9yIHRoZSBm aXJzdCBpdGVyYXRpb24gb2Y6DQo+DQo+ICA+PiAgRk9SX0VBQ0hfVkVDX0VM VCAoKmNvbnRyb2xzLCBpLCByZ2MpDQo+ICA+PiAgICBpZiAoIXJnYy0+Y29u dHJvbHMuaXNfZW1wdHkgKCkpDQo+DQo+Pj4gY2FsbCB2ZWN0X3NldF9sb29w X2NvbnRyb2xzX2RpcmVjdGx5LiAgVGhhdCBpczoNCj4NCj4+PiA+PiAvKiBT ZWUgd2hldGhlciB6ZXJvLWJhc2VkIElWIHdvdWxkIGV2ZXIgZ2VuZXJhdGUg YWxsLWZhbHNlIG1hc2tzDQo+Pj4gICAgb3IgemVybyBsZW5ndGggYmVmb3Jl IHdyYXBwaW5nIGFyb3VuZC4gICovDQo+Pj4gYm9vbCBtaWdodF93cmFwX3Ag PSB2ZWN0X3Jncm91cF9pdl9taWdodF93cmFwX3AgKGxvb3BfdmluZm8sIHJn Yyk7DQo+Pj4gDQo+IC8qIFNldCB1cCBhbGwgY29udHJvbHMgZm9yIHRoaXMg Z3JvdXAuICAqLw0KPj4+IHRlc3RfY3RybCA9IHZlY3Rfc2V0X2xvb3BfY29u dHJvbHNfZGlyZWN0bHkgKGxvb3AsIGxvb3BfdmluZm8sDQo+ICA+PiAgICAg JnByZWhlYWRlcl9zZXEsDQo+ICAgPj4gICAgJmhlYWRlcl9zZXEsDQo+ICA+ PiAgICAgbG9vcF9jb25kX2dzaSwgcmdjLA0KPiAgPj4gICAgIG5pdGVycywg bml0ZXJzX3NraXAsDQo+ICA+PiAgICAgbWlnaHRfd3JhcF9wKTsNCj4NCj4+ PiBuZWVkcyB0byBiZSBhbiAiaWYiIHRoYXQgKGZvciBMT09QX1ZJTkZPX1VT SU5HX0RFQ1JFTUVOVElOR19JVl9QKQ0KPj4+IGlzIG9ubHkgZXhlY3V0ZWQg b24gdGhlIGZpcnN0IGl0ZXJhdGlvbi4NCj4NCj4gSXMgaXQgY29ycmVjdCBs aWtlIHRoaXM/DQo+DQo+ICAgRk9SX0VBQ0hfVkVDX0VMVCAoKmNvbnRyb2xz LCBpLCByZ2MpDQo+ICAgICBpZiAoIXJnYy0+Y29udHJvbHMuaXNfZW1wdHkg KCkpDQo+ICAgICAgIHsNCj4gICAgICAgICAvKiBGaXJzdCB0cnkgdXNpbmcg cGVybXV0ZXMuICBUaGlzIGFkZHMgYSBzaW5nbGUgdmVjdG9yDQo+ICAgICAg ICAgICAgaW5zdHJ1Y3Rpb24gdG8gdGhlIGxvb3AgZm9yIGVhY2ggbWFzaywg YnV0IG5lZWRzIG5vIGV4dHJhDQo+ICAgICAgICAgICAgbG9vcCBpbnZhcmlh bnRzIG9yIElWcy4gICovDQo+ICAgICAgICAgdW5zaWduZWQgaW50IG5tYXNr cyA9IGkgKyAxOw0KPiAgICAgICAgIGlmICh1c2VfbWFza3NfcCAmJiAobm1h c2tzICYgMSkgPT0gMCkNCj4gICAgICAgICAgIHsNCj4gICAgICAgICAgICAg cmdyb3VwX2NvbnRyb2xzICpoYWxmX3JnYyA9ICYoKmNvbnRyb2xzKVtubWFz a3MgLyAyIC0gMV07DQo+ICAgICAgICAgICAgIGlmICghaGFsZl9yZ2MtPmNv bnRyb2xzLmlzX2VtcHR5ICgpDQo+ICAgICAgICAgICAgICAgICAmJiB2ZWN0 X21heWJlX3Blcm11dGVfbG9vcF9tYXNrcyAoJmhlYWRlcl9zZXEsIHJnYywg aGFsZl9yZ2MpKQ0KPiAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiAgICAg ICAgICAgfQ0KPg0KPiAgICAgICAgIC8qIFNlZSB3aGV0aGVyIHplcm8tYmFz ZWQgSVYgd291bGQgZXZlciBnZW5lcmF0ZSBhbGwtZmFsc2UgbWFza3MNCj4g ICAgICAgICAgICBvciB6ZXJvIGxlbmd0aCBiZWZvcmUgd3JhcHBpbmcgYXJv dW5kLiAgKi8NCj4gICAgICAgICBib29sIG1pZ2h0X3dyYXBfcCA9IHZlY3Rf cmdyb3VwX2l2X21pZ2h0X3dyYXBfcCAobG9vcF92aW5mbywgcmdjKTsNCj4N Cj4gICAgICAgICAvKiBTZXQgdXAgYWxsIGNvbnRyb2xzIGZvciB0aGlzIGdy b3VwLiAgKi8NCj4gICAgICAgICB0ZXN0X2N0cmwgPSB2ZWN0X3NldF9sb29w X2NvbnRyb2xzX2RpcmVjdGx5IChsb29wLCBsb29wX3ZpbmZvLA0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZwcmVoZWFkZXJfc2VxLA0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoZWFkZXJfc2VxLA0K PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxvb3BfY29uZF9nc2ksIHJnYywNCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaXRl cnMsIG5pdGVyc19za2lwLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZ2h0X3dyYXBfcCk7DQo+ DQo+ICAgICAgICAgLyogRGVjcmVtZW50IElWIG9ubHkgcnVuIHZlY3Rfc2V0 X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgb25jZS4gICovDQo+ICAgICAgICAg aWYgKExPT1BfVklORk9fVVNJTkdfREVDUkVNRU5USU5HX0lWX1AgKGxvb3Bf dmluZm8pKQ0KPiAgICAgICAgICAgYnJlYWs7DQo+ICAgICAgIH0NCiANCkkg bWVhbnQgc29tZXRoaW5nIGxpa2U6DQogDQogIEZPUl9FQUNIX1ZFQ19FTFQg KCpjb250cm9scywgaSwgcmdjKQ0KICAgIGlmICghcmdjLT5jb250cm9scy5p c19lbXB0eSAoKSkNCiAgICAgIHsNCiAgICAgICAgLyogRmlyc3QgdHJ5IHVz aW5nIHBlcm11dGVzLiAgVGhpcyBhZGRzIGEgc2luZ2xlIHZlY3Rvcg0KICAg ICAgICAgICBpbnN0cnVjdGlvbiB0byB0aGUgbG9vcCBmb3IgZWFjaCBtYXNr LCBidXQgbmVlZHMgbm8gZXh0cmENCiAgICAgICAgICAgbG9vcCBpbnZhcmlh bnRzIG9yIElWcy4gICovDQogICAgICAgIHVuc2lnbmVkIGludCBubWFza3Mg PSBpICsgMTsNCiAgICAgICAgaWYgKHVzZV9tYXNrc19wICYmIChubWFza3Mg JiAxKSA9PSAwKQ0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHJncm91cF9j b250cm9scyAqaGFsZl9yZ2MgPSAmKCpjb250cm9scylbbm1hc2tzIC8gMiAt IDFdOw0KICAgICAgICAgICAgaWYgKCFoYWxmX3JnYy0+Y29udHJvbHMuaXNf ZW1wdHkgKCkNCiAgICAgICAgICAgICAgICAmJiB2ZWN0X21heWJlX3Blcm11 dGVfbG9vcF9tYXNrcyAoJmhlYWRlcl9zZXEsIHJnYywgaGFsZl9yZ2MpKQ0K ICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICB9DQogDQogICAg ICAgIGlmICghTE9PUF9WSU5GT19VU0lOR19ERUNSRU1FTlRJTkdfSVZfUCAo bG9vcF92aW5mbykNCiAgICAgICAgICAgIHx8ICFMT09QX1ZJTkZPX0RFQ1JF TUVOVElOR19JVl9TVEVQIChsb29wX2luZm8pKQ0KICB7DQogICAgICAgICAg ICAvKiBTZWUgd2hldGhlciB6ZXJvLWJhc2VkIElWIHdvdWxkIGV2ZXIgZ2Vu ZXJhdGUgYWxsLWZhbHNlIG1hc2tzDQogICAgICAgICAgICAgICBvciB6ZXJv IGxlbmd0aCBiZWZvcmUgd3JhcHBpbmcgYXJvdW5kLiAgKi8NCiAgICAgICAg ICAgIGJvb2wgbWlnaHRfd3JhcF9wID0gdmVjdF9yZ3JvdXBfaXZfbWlnaHRf d3JhcF9wIChsb29wX3ZpbmZvLCByZ2MpOw0KIA0KICAgICAgICAgICAgLyog U2V0IHVwIGFsbCBjb250cm9scyBmb3IgdGhpcyBncm91cC4gICovDQogICAg ICAgICAgICB0ZXN0X2N0cmwgPSB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2Rp cmVjdGx5IChsb29wLCBsb29wX3ZpbmZvLA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZWhl YWRlcl9zZXEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmaGVhZGVyX3NlcSwNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxvb3BfY29uZF9nc2ksIHJnYywNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pdGVycywg bml0ZXJzX3NraXAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtaWdodF93cmFwX3ApOw0KICB9 DQogICAgICAgIGlmIChMT09QX1ZJTkZPX1VTSU5HX0RFQ1JFTUVOVElOR19J Vl9QIChsb29wX3ZpbmZvKQ0KICAgICYmIHJnYy0+Y29udHJvbHMubGVuZ3Ro ICgpID4gMSkNCiAgLi4udXNlIHZlY3RfYWRqdXN0X2xvb3BfbGVuc19jb250 cm9sLi4uDQogICAgICB9DQogDQp3aGVyZSBMT09QX1ZJTkZPX0RFQ1JFTUVO VElOR19JVl9TVEVQIChsb29wX2luZm8pIGlzICJTIiBmcm9tIG15DQpwcmV2 aW91cyByZXZpZXcuDQogDQp2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2RpcmVj dGx5IHdvdWxkIHRoZW4gc2V0DQpMT09QX1ZJTkZPX0RFQ1JFTUVOVElOR19J Vl9TVEVQIGJ1dCB3b3VsZCBub3QgY2FsbA0KdmVjdF9hZGp1c3RfbG9vcF9s ZW5zX2NvbnRyb2wuDQogDQpCdXQgbGlrZSBJIHNheSwgdGhpcyBpcyBhbGwg YmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB3ZSBzaG91bGQNCmhhdmUg YSBzaW5nbGUgSVYgYW5kIHNjYWxlIGl0IHVwIGZvciBsYXRlciByZ3JvdXBz LiAgSWYgeW91J2QgcHJlZmVyDQpzZXBhcmF0ZSBJVnMgdGhlbiB0aGF0J3Mg ZmluZS4gIEJ1dCB0aGVuIEkgdGhpbmsgaXQncyBsZXNzIGNsZWFyDQp3aHkg d2UgaGF2ZToNCiANCj4gKyBpZiAoTE9PUF9WSU5GT19VU0lOR19ERUNSRU1F TlRJTkdfSVZfUCAobG9vcF92aW5mbykNCj4gKyAgICAgJiYgcmdjLT5tYXhf bnNjYWxhcnNfcGVyX2l0ZXIgPT0gMQ0KPiArICAgICAmJiByZ2MgIT0gJkxP T1BfVklORk9fTEVOUyAobG9vcF92aW5mbylbMF0pDQo+ICsgICB7DQo+ICsg ICAgIC8qIE11bHRpcGxlIHJncm91cCAobm9uLVNMUCk6DQo+ICsgICAgICAg Li4uDQo+ICsgICAgICAgXzM4ID0gKHVuc2lnbmVkIGxvbmcpIG5fMTIoRCk7 DQo+ICsgICAgICAgLi4uDQo+ICsgICAgICAgIyBpdnRtcF8zOCA9IFBISSA8 aXZ0bXBfMzkoMyksIDEwMCgyKT4NCj4gKyAgICAgICAuLi4NCj4gKyAgICAg ICBfNDAgPSBNSU5fRVhQUiA8aXZ0bXBfMzgsIFBPTFlfSU5UX0NTVCBbOCwg OF0+Ow0KPiArICAgICAgIGxvb3BfbGVuXzIxID0gTUlOX0VYUFIgPF80MCwg UE9MWV9JTlRfQ1NUIFsyLCAyXT47DQo+ICsgICAgICAgXzQxID0gXzQwIC0g bG9vcF9sZW5fMjE7DQo+ICsgICAgICAgbG9vcF9sZW5fMjAgPSBNSU5fRVhQ UiA8XzQxLCBQT0xZX0lOVF9DU1QgWzIsIDJdPjsNCj4gKyAgICAgICBfNDIg PSBfNDAgLSBsb29wX2xlbl8yMDsNCj4gKyAgICAgICBsb29wX2xlbl8xOSA9 IE1JTl9FWFBSIDxfNDIsIFBPTFlfSU5UX0NTVCBbMiwgMl0+Ow0KPiArICAg ICAgIF80MyA9IF80MCAtIGxvb3BfbGVuXzE5Ow0KPiArICAgICAgIGxvb3Bf bGVuXzE2ID0gTUlOX0VYUFIgPF80MywgUE9MWV9JTlRfQ1NUIFsyLCAyXT47 DQo+ICsgICAgICAgLi4uDQo+ICsgICAgICAgdmVjdF9fNC44XzE1ID0gLkxF Tl9MT0FEIChfNiwgNjRCLCBsb29wX2xlbl8yMSwgMCk7DQo+ICsgICAgICAg Li4uDQo+ICsgICAgICAgdmVjdF9fNC45XzggPSAuTEVOX0xPQUQgKF8xMywg NjRCLCBsb29wX2xlbl8yMCwgMCk7DQo+ICsgICAgICAgLi4uDQo+ICsgICAg ICAgdmVjdF9fNC4xMF8yOCA9IC5MRU5fTE9BRCAoXzQ2LCA2NEIsIGxvb3Bf bGVuXzE5LCAwKTsNCj4gKyAgICAgICAuLi4NCj4gKyAgICAgICB2ZWN0X180 LjExXzMwID0gLkxFTl9MT0FEIChfNDksIDY0QiwgbG9vcF9sZW5fMTYsIDAp Ow0KPiArICAgICAgIHZlY3RfXzcuMTNfMzEgPSBWRUNfUEFDS19UUlVOQ19F WFBSIDx2ZWN0X180LjhfMTUsIHZlY3RfXzQuOV84PjsNCj4gKyAgICAgICB2 ZWN0X183LjEzXzMyID0gVkVDX1BBQ0tfVFJVTkNfRVhQUiA8Li4uPjsNCj4g KyAgICAgICB2ZWN0X183LjEyXzMzID0gVkVDX1BBQ0tfVFJVTkNfRVhQUiA8 Li4uPjsNCj4gKyAgICAgICAuLi4NCj4gKyAgICAgICAuTEVOX1NUT1JFIChf MTQsIDE2QiwgXzQwLCB2ZWN0X183LjEyXzMzLCAwKTsNCj4gKyAgICAgICBp dnRtcF8zOSA9IGl2dG1wXzM4IC0gXzQwOw0KPiArICAgICAgIC4uLg0KPiAr ICAgICAgIGlmIChpdnRtcF8zOSAhPSAwKQ0KPiArIGdvdG8gPGJiIDM+OyBb OTIuMzElXQ0KPiArICAgICAgIGVsc2UNCj4gKyBnb3RvIDxiYiA0PjsgWzcu NjklXQ0KPiArICAgICAqLw0KPiArICAgICByZ3JvdXBfY29udHJvbHMgKnN1 Yl9yZ2MNCj4gKyAgICAgICA9ICYoKmNvbnRyb2xzKVtubWFza3MgLyByZ2Mt PmNvbnRyb2xzLmxlbmd0aCAoKSAtIDFdOw0KPiArICAgICBpZiAoIXN1Yl9y Z2MtPmNvbnRyb2xzLmlzX2VtcHR5ICgpKQ0KPiArICAgICAgIHsNCj4gKyB0 cmVlIGl2X3R5cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBFIChsb29w X3ZpbmZvKTsNCj4gKyB2ZWN0X2FkanVzdF9sb29wX2xlbnNfY29udHJvbCAo aXZfdHlwZSwgJmhlYWRlcl9zZXEsIHJnYywNCj4gKyAgICAgICAgc3ViX3Jn YywgTlVMTF9UUkVFKTsNCj4gKyBjb250aW51ZTsNCj4gKyAgICAgICB9DQo+ ICsgICB9DQogDQpJbiBvdGhlciB3b3Jkcywgd2h5IGlzIHRoaXMgZGlmZmVy ZW50IGZyb20gd2hhdA0KdmVjdF9zZXRfbG9vcF9jb250cm9sc19kaXJlY3Rs eSB3b3VsZCBkbz8NCiANClRoYW5rcywNClJpY2hhcmQNCiANCg== ------=_001_NextPart788176105165_=------