From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 25E9EC4332F for ; Fri, 15 Oct 2021 09:32:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0FA9A60698 for ; Fri, 15 Oct 2021 09:32:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237459AbhJOJez (ORCPT ); Fri, 15 Oct 2021 05:34:55 -0400 Received: from [103.31.38.59] ([103.31.38.59]:59548 "EHLO gnuweeb.org" rhost-flags-FAIL-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S236612AbhJOJel (ORCPT ); Fri, 15 Oct 2021 05:34:41 -0400 X-Greylist: delayed 345 seconds by postgrey-1.27 at vger.kernel.org; Fri, 15 Oct 2021 05:34:41 EDT Received: from [192.168.1.106] (unknown [88.228.240.209]) by gnuweeb.org (Postfix) with ESMTPSA id E4C44BFE92; Fri, 15 Oct 2021 09:26:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=gnuweeb.org; s=default; t=1634290006; bh=aG/cfoq5IGboJiFr9IqfLaiqReXtHsobpcnKwsrFouI=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=RqN91KZ/XgN1jb0vP2/Q/hIVVx7w9SNfyMOb5R8RAo2xBHnj1cTtsr+20RwOcfRSX YUESmdplRrer2l+6bsu9hzIYa3dKA7kvaGqkpGZJON9w5zu9HZ2F8BDpyeL8X4JCgb kI15RgcKfSsQl1BXiH9x4rWqA3rW36w9bZS0qvU06LvAfL1CihzqGMYzKTpo2/qL3g 2vM0xHCCdYr9JuWsG1m2OZvCwQ5WSN3iucTS6uCQyQf3+s73Nfz1Ezya+aYy4qZhXK 4p+vZvAUfVj1I4Nxyhv8JRW1QTCx4KvF6/17E+sDzuO51+RCbjHBKpPDJ7jzsgx22F zGIMWzRz0sSoQ== Message-ID: Date: Fri, 15 Oct 2021 12:26:39 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.2 Subject: Re: [PATCH 2/2] tools/nolibc: x86-64: Fix startup code bug Content-Language: en-US To: Ammar Faizi , Willy Tarreau Cc: Paul Walmsley , Palmer Dabbelt , Albert Ou , Linux Kernel Mailing List , Andy Lutomirski , Thomas Gleixner , Ingo Molnar , x86@kernel.org, "H. Peter Anvin" , David Laight , Peter Cordes , Louvian Lyndal References: <6sZ9qpcJvtqCksJQVaiZyA-ammarfaizi2@gnuweeb.org> From: Bedirhan KURT In-Reply-To: <6sZ9qpcJvtqCksJQVaiZyA-ammarfaizi2@gnuweeb.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org KFNlbmRpbmcgYWdhaW4gYXMgcHJldmlvdXMgZW1haWwgaGFkIG15IFVidW50dSB1c2VybmFt ZSBhcyBzZW5kZXIgYW5kDQpUaHVuZGVyYmlyZCBhdHRhY2hlZCBteSBHUEcga2V5IG9uIGl0 LiBIb3BlIEkgY2FuY2VsbGVkIG9uIHRpbWUuKQ0KDQpIaSBBbW1hciwNCg0KSSd2ZSB0ZXN0 ZWQgeW91ciBwYXRjaHNldCBvbiBteSBsb2NhbCBjbG9uZSBvZiBMaW51eCBrZXJuZWwgd2l0 aCB1cCB0bw0KZGF0ZSBmZXRjaCBvZiBtYXN0ZXIgYnJhbmNoIGFuZCB0aGlzIGlzIHRoZSBv dXRwdXQgSSd2ZSBnb3R0ZW4gYWZ0ZXINCmV4ZWN1dGluZyB0aGUgdGVzdCBiaW5hcnkgY29t cGlsZWQ7DQoNCmBgYA0KIyBJIGhhdmUgcmVwbGFjZWQgUG93ZXJsaW5lLXNwZWNpZmljIGNo YXJhY3RlcnMgdG8gYXZvaWQgZm9udCByZW5kZXJpbmcNCiMgaXNzdWUuDQoNCiAgd2luZG93 enl0Y2hAV2luZG93WlVidW50dSA+IH4vbGludXggPiBtYXN0ZXIgPiAuL3Rlc3QNCg0KRHVt cGluZyBhcmd2Li4uDQouL3Rlc3QNCg0KRHVtcGluZyBlbnZwLi4uDQpTWVNURU1EX0VYRUNf UElEPTYxNjgNClNTSF9BVVRIX1NPQ0s9L3J1bi91c2VyLzEwMDEva2V5cmluZy9zc2gNCkxB TkdVQUdFPWVuX1VTOmVuDQpMQU5HPWVuX1VTLlVURi04DQpQQVBFUlNJWkU9bGV0dGVyDQpT RVNTSU9OX01BTkFHRVI9bG9jYWwvV2luZG93WlVidW50dTpAL3RtcC8uSUNFLXVuaXgvMzQ3 Mix1bml4L1dpbmRvd1pVYnVudHU6L3RtcC8uSUNFLXVuaXgvMzQ3Mg0KWERHX0NVUlJFTlRf REVTS1RPUD11YnVudHU6R05PTUUNCkxDX0lERU5USUZJQ0FUSU9OPWVuX1VTLlVURi04DQpE RUZBVUxUU19QQVRIPS91c3Ivc2hhcmUvZ2NvbmYvdWJ1bnR1LXhvcmcuZGVmYXVsdC5wYXRo DQpYREdfU0VTU0lPTl9DTEFTUz11c2VyDQpfPS9ob21lL3dpbmRvd3p5dGNoL2xpbnV4Ly4v dGVzdA0KQ09MT1JURVJNPXRydWVjb2xvcg0KR1BHX0FHRU5UX0lORk89L3J1bi91c2VyLzEw MDEvZ251cGcvUy5ncGctYWdlbnQ6MDoxDQpRVF9JTV9NT0RVTEU9aWJ1cw0KREVTS1RPUF9T RVNTSU9OPXVidW50dS14b3JnDQpVU0VSPXdpbmRvd3p5dGNoDQpYREdfTUVOVV9QUkVGSVg9 Z25vbWUtDQpMQ19NRUFTVVJFTUVOVD1lbl9VUy5VVEYtOA0KR19FTkFCTEVfRElBR05PU1RJ Qz0wDQpIT01FPS9ob21lL3dpbmRvd3p5dGNoDQpHTk9NRV9URVJNSU5BTF9TQ1JFRU49L29y Zy9nbm9tZS9UZXJtaW5hbC9zY3JlZW4vZjg5ZjBlNDZfYjRjNl80YzBhXzg0MzRfNGZkNzM4 NDVkNWFhDQpKT1VSTkFMX1NUUkVBTT04OjkyMzA0DQpEQlVTX1NFU1NJT05fQlVTX0FERFJF U1M9dW5peDpwYXRoPS9ydW4vdXNlci8xMDAxL2J1cw0KWE1PRElGSUVSUz1AaW09aWJ1cw0K TENfTlVNRVJJQz1lbl9VUy5VVEYtOA0KU1NIX0FHRU5UX0xBVU5DSEVSPWdub21lLWtleXJp bmcNCkdUS19NT0RVTEVTPWdhaWw6YXRrLWJyaWRnZQ0KWERHX0RBVEFfRElSUz0vdXNyL3No YXJlL3VidW50dS14b3JnOi9ob21lL3dpbmRvd3p5dGNoLy5sb2NhbC9zaGFyZS9mbGF0cGFr L2V4cG9ydHMvc2hhcmU6L3Zhci9saWIvZmxhdHBhay9leHBvcnRzL3NoYXJlOi91c3IvbG9j YWwvc2hhcmUvOi91c3Ivc2hhcmUvOi92YXIvbGliL3NuYXBkL2Rlc2t0b3ANCldJTkRPV1BB VEg9Mg0KWERHX1NFU1NJT05fREVTS1RPUD11YnVudHUteG9yZw0KWERHX0NPTkZJR19ESVJT PS9ldGMveGRnL3hkZy11YnVudHUteG9yZzovZXRjL3hkZw0KUVRfQUNDRVNTSUJJTElUWT0x DQpHTk9NRV9ERVNLVE9QX1NFU1NJT05fSUQ9dGhpcy1pcy1kZXByZWNhdGVkDQpNQU5BR0VS UElEPTMxODkNCkxDX1RJTUU9ZW5fVVMuVVRGLTgNCk1BTkRBVE9SWV9QQVRIPS91c3Ivc2hh cmUvZ2NvbmYvdWJ1bnR1LXhvcmcubWFuZGF0b3J5LnBhdGgNCkxPR05BTUU9d2luZG93enl0 Y2gNCkdOT01FX1RFUk1JTkFMX1NFUlZJQ0U9OjEuMTE1DQpMQ19QQVBFUj1lbl9VUy5VVEYt OA0KR05PTUVfU0hFTExfU0VTU0lPTl9NT0RFPXVidW50dQ0KUEFUSD0vdXNyL2xvY2FsL3Ni aW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9n YW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2Jpbjovc25hcC9iaW4NClhER19SVU5USU1F X0RJUj0vcnVuL3VzZXIvMTAwMQ0KU0hFTEw9L2Jpbi96c2gNClhER19TRVNTSU9OX1RZUEU9 eDExDQpMQ19NT05FVEFSWT1lbl9VUy5VVEYtOA0KTENfVEVMRVBIT05FPWVuX1VTLlVURi04 DQpVU0VSTkFNRT13aW5kb3d6eXRjaA0KVlRFX1ZFUlNJT049NjQwMg0KSU5WT0NBVElPTl9J RD02MDUyOTA2ZTU4ODg0YjU0ODdkM2M4ODMxNDk2MTcyMg0KUFdEPS9ob21lL3dpbmRvd3p5 dGNoL2xpbnV4DQpTSExWTD0xDQpYQVVUSE9SSVRZPS9ydW4vdXNlci8xMDAxL2dkbS9YYXV0 aG9yaXR5DQpMQ19OQU1FPWVuX1VTLlVURi04DQpJTV9DT05GSUdfUEhBU0U9MQ0KR0RNU0VT U0lPTj11YnVudHUteG9yZw0KTENfQUREUkVTUz1lbl9VUy5VVEYtOA0KRElTUExBWT06MA0K VEVSTT14dGVybS0yNTZjb2xvcg0KT0xEUFdEPS9ob21lL3dpbmRvd3p5dGNoL3R3cnByZWJh c2UvcmVjb3ZlcnlfZGV2aWNlX3Zlc3RlbF90ZW9zDQpaU0g9L2hvbWUvd2luZG93enl0Y2gv Lm9oLW15LXpzaA0KUEFHRVI9bGVzcw0KTEVTUz0tUg0KTFNDT0xPUlM9R3hmeGN4ZHhieGVn ZWRhYmFnYWNhZA0KTFNfQ09MT1JTPXJzPTA6ZGk9MDE7MzQ6bG49MDE7MzY6bWg9MDA6cGk9 NDA7MzM6c289MDE7MzU6ZG89MDE7MzU6YmQ9NDA7MzM7MDE6Y2Q9NDA7MzM7MDE6b3I9NDA7 MzE7MDE6bWk9MDA6c3U9Mzc7NDE6c2c9MzA7NDM6Y2E9MzA7NDE6dHc9MzA7NDI6b3c9MzQ7 NDI6c3Q9Mzc7NDQ6ZXg9MDE7MzI6Ki50YXI9MDE7MzE6Ki50Z3o9MDE7MzE6Ki5hcmM9MDE7 MzE6Ki5hcmo9MDE7MzE6Ki50YXo9MDE7MzE6Ki5saGE9MDE7MzE6Ki5sejQ9MDE7MzE6Ki5s emg9MDE7MzE6Ki5sem1hPTAxOzMxOioudGx6PTAxOzMxOioudHh6PTAxOzMxOioudHpvPTAx OzMxOioudDd6PTAxOzMxOiouemlwPTAxOzMxOiouej0wMTszMToqLmR6PTAxOzMxOiouZ3o9 MDE7MzE6Ki5scno9MDE7MzE6Ki5sej0wMTszMToqLmx6bz0wMTszMToqLnh6PTAxOzMxOiou enN0PTAxOzMxOioudHpzdD0wMTszMToqLmJ6Mj0wMTszMToqLmJ6PTAxOzMxOioudGJ6PTAx OzMxOioudGJ6Mj0wMTszMToqLnR6PTAxOzMxOiouZGViPTAxOzMxOioucnBtPTAxOzMxOiou amFyPTAxOzMxOioud2FyPTAxOzMxOiouZWFyPTAxOzMxOiouc2FyPTAxOzMxOioucmFyPTAx OzMxOiouYWx6PTAxOzMxOiouYWNlPTAxOzMxOiouem9vPTAxOzMxOiouY3Bpbz0wMTszMToq Ljd6PTAxOzMxOioucno9MDE7MzE6Ki5jYWI9MDE7MzE6Ki53aW09MDE7MzE6Ki5zd209MDE7 MzE6Ki5kd209MDE7MzE6Ki5lc2Q9MDE7MzE6Ki5qcGc9MDE7MzU6Ki5qcGVnPTAxOzM1Oiou bWpwZz0wMTszNToqLm1qcGVnPTAxOzM1OiouZ2lmPTAxOzM1OiouYm1wPTAxOzM1OioucGJt PTAxOzM1OioucGdtPTAxOzM1OioucHBtPTAxOzM1OioudGdhPTAxOzM1OioueGJtPTAxOzM1 OioueHBtPTAxOzM1OioudGlmPTAxOzM1OioudGlmZj0wMTszNToqLnBuZz0wMTszNToqLnN2 Zz0wMTszNToqLnN2Z3o9MDE7MzU6Ki5tbmc9MDE7MzU6Ki5wY3g9MDE7MzU6Ki5tb3Y9MDE7 MzU6Ki5tcGc9MDE7MzU6Ki5tcGVnPTAxOzM1OioubTJ2PTAxOzM1OioubWt2PTAxOzM1Oiou d2VibT0wMTszNToqLndlYnA9MDE7MzU6Ki5vZ209MDE7MzU6Ki5tcDQ9MDE7MzU6Ki5tNHY9 MDE7MzU6Ki5tcDR2PTAxOzM1Oioudm9iPTAxOzM1OioucXQ9MDE7MzU6Ki5udXY9MDE7MzU6 Ki53bXY9MDE7MzU6Ki5hc2Y9MDE7MzU6Ki5ybT0wMTszNToqLnJtdmI9MDE7MzU6Ki5mbGM9 MDE7MzU6Ki5hdmk9MDE7MzU6Ki5mbGk9MDE7MzU6Ki5mbHY9MDE7MzU6Ki5nbD0wMTszNToq LmRsPTAxOzM1OioueGNmPTAxOzM1OioueHdkPTAxOzM1OioueXV2PTAxOzM1OiouY2dtPTAx OzM1OiouZW1mPTAxOzM1Oioub2d2PTAxOzM1Oioub2d4PTAxOzM1OiouYWFjPTAwOzM2Oiou YXU9MDA7MzY6Ki5mbGFjPTAwOzM2OioubTRhPTAwOzM2OioubWlkPTAwOzM2OioubWlkaT0w MDszNjoqLm1rYT0wMDszNjoqLm1wMz0wMDszNjoqLm1wYz0wMDszNjoqLm9nZz0wMDszNjoq LnJhPTAwOzM2Oioud2F2PTAwOzM2Oioub2dhPTAwOzM2Oioub3B1cz0wMDszNjoqLnNweD0w MDszNjoqLnhzcGY9MDA7MzY6DQpgYGANCg0KSSBob3BlIHRoZXNlIGFyZSBoZWxwZnVsIGFu ZCBJIGNvdWxkIGhlbHAgdGhyb3VnaG91dCB0aGlzIHBhdGNoc2V0LiBJDQpkaWRuJ3QgZ2V0 IGFueSBTZWdGYXVsdHMgY29tcGFyZWQgdG8gbXkgdGVzdHMgd2l0aCBzYW1lIGNvZGUgb24g cHVyZQ0Kc3RhdGUgZWl0aGVyIHNvIEkgdGhpbmsgZXZlcnl0aGluZyB3b3JrcyBqdXN0IGZp bmUuIFlvdSBjYW4gYXBwZW5kIG1lIGluIA0KVGVzdGVkLWJ5IHRhZyBpZiB5b3Ugd2FudC4N Cg0KLS0NCkJlZGlyaGFuIEtVUlQNCg0KT24gMTAvMTUvMjEgMTE6NTcsIEFtbWFyIEZhaXpp IHdyb3RlOg0KPiBIaSwNCj4gDQo+IFRoaXMgaXMgYSBjb2RlIHRvIHRlc3QuDQo+IA0KPiBD b21waWxlIHdpdGg6DQo+ICAgIGdjYyAtTzMgLWdnZGIzIC1ub3N0ZGxpYiAtbyB0ZXN0IHRl c3QuYw0KPiANCj4gVGVjaG5pY2FsIGV4cGxhbmF0aW9uOg0KPiBUaGUgU3lzdGVtIFYgQUJJ IG1hbmRhdGVzIHRoZSAlcnNwIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkIGJlZm9yZQ0KPiBw ZXJmb3JtaW5nIGEgZnVuY3Rpb24gY2FsbCwgYnV0IHRoZSBjdXJyZW50IG5vbGliYy5oIHZp b2xhdGVzIGl0Lg0KPiANCj4gVGhpcyAlcnNwIGFsaWdubWVudCB2aW9sYXRpb24gbWFrZXMg dGhlIGNhbGxlZSBjYW4ndCBhbGlnbiBpdHMgc3RhY2sNCj4gcHJvcGVybHkuIE5vdGUgdGhh dCB0aGUgY2FsbGVlIG1heSBoYXZlIGEgc2l0dWF0aW9uIHdoZXJlIGl0IHJlcXVpcmVzDQo+ IHZlY3RvciBhbGlnbmVkIG1vdmUuIEZvciBleGFtcGxlLCBgbW92YXBzYCB3aXRoIG1lbW9y eSBvcGVyYW5kIHcuci50Lg0KPiB4bW0gcmVnaXN0ZXJzLCBpdCByZXF1aXJlcyB0aGUgc3Jj L2RzdCBhZGRyZXNzIGJlIDE2LWJ5dGUgYWxpZ25lZC4NCj4gDQo+IFNpbmNlIHRoZSBjYWxs ZWUgY2FuJ3QgYWxpZ24gaXRzIHN0YWNrIHByb3Blcmx5LCBpdCB3aWxsIHNlZ2ZhdWx0IHdo ZW4NCj4gZXhlY3V0aW5nIGBtb3ZhcHNgLiBUaGUgZm9sbG93aW5nIEMgY29kZSBpcyB0aGUg cmVwcm9kdWNlciBhbmQgdGVzdA0KPiB0byBlbnN1cmUgdGhlIGJ1ZyByZWFsbHkgZXhpc3Rz IGFuZCB0aGlzIHBhdGNoIGZpeGVzIGl0Lg0KPiANCj4gYGBgDQo+IC8qIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBMR1BMLTIuMSBPUiBNSVQgKi8NCj4gDQo+IC8qDQo+ICAgKiBCdWcg cmVwcm9kdWNlciBhbmQgdGVzdCBmb3IgV2lsbHkncyBub2xpYmMgKHg4Ni02NCkgYnkgQW1t YXIuDQo+ICAgKg0KPiAgICogQ29tcGlsZSB3aXRoOg0KPiAgICogIGdjYyAtTzMgLWdnZGIz IC1ub3N0ZGxpYiAtbyB0ZXN0IHRlc3QuYw0KPiAgICovDQo+IA0KPiAjaW5jbHVkZSAidG9v bHMvaW5jbHVkZS9ub2xpYmMvbm9saWJjLmgiDQo+IA0KPiBzdGF0aWMgdm9pZCBkdW1wX2Fy Z3YoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4gew0KPiAJaW50IGk7DQo+IAljb25zdCBj aGFyIHN0cltdID0gIlxuRHVtcGluZyBhcmd2Li4uXG4iOw0KPiANCj4gCXdyaXRlKDEsIHN0 ciwgc3RybGVuKHN0cikpOw0KPiAJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgew0KPiAJ CXdyaXRlKDEsIGFyZ3ZbaV0sIHN0cmxlbihhcmd2W2ldKSk7DQo+IAkJd3JpdGUoMSwgIlxu IiwgMSk7DQo+IAl9DQo+IH0NCj4gDQo+IHN0YXRpYyB2b2lkIGR1bXBfZW52cChjaGFyICpl bnZwW10pDQo+IHsNCj4gCWludCBpID0gMDsNCj4gCWNvbnN0IGNoYXIgc3RyW10gPSAiXG5E dW1waW5nIGVudnAuLi5cbiI7DQo+IA0KPiAJd3JpdGUoMSwgc3RyLCBzdHJsZW4oc3RyKSk7 DQo+IAl3aGlsZSAoZW52cFtpXSAhPSBOVUxMKSB7DQo+IAkJd3JpdGUoMSwgZW52cFtpXSwg c3RybGVuKGVudnBbaV0pKTsNCj4gCQl3cml0ZSgxLCAiXG4iLCAxKTsNCj4gCQlpKys7DQo+ IAl9DQo+IH0NCj4gDQo+ICNkZWZpbmUgcmVhZF9iYXJyaWVyKFBUUikgX19hc21fXyB2b2xh dGlsZSgiIjo6InIiKFBUUik6Im1lbW9yeSIpDQo+IA0KPiBfX2F0dHJpYnV0ZV9fKChfX3Rh cmdldF9fKCJzc2UyIikpKQ0KPiBzdGF0aWMgdm9pZCB0ZXN0X3NzZV9tb3ZlX2FsaWduZWQo dm9pZCkNCj4gew0KPiAJaW50IGk7DQo+IAlpbnQgYXJyWzMyXSBfX2F0dHJpYnV0ZV9fKChf X2FsaWduZWRfXygxNikpKTsNCj4gDQo+IAkvKg0KPiAJICogVGhlIGFzc2lnbm1lbnQgaW5z aWRlIHRoaXMgbG9vcCBpcyB2ZXJ5IGxpa2VseQ0KPiAJICogcGVyZm9ybWVkIHdpdGggYWxp Z25lZCBtb3ZlLCB0aHVzIGlmIHdlIGRvbid0DQo+IAkgKiBhbGlnbiB0aGUgJXJzcCBwcm9w ZXJseSwgaXQgd2lsbCBmYXVsdCENCj4gCSAqDQo+IAkgKiBJZiB3ZSBmYXVsdCBkdWUgdG8g bWlzYWxpZ25lZCBoZXJlLCB0aGVuIHRoZXJlDQo+IAkgKiBtdXN0IGJlIGEgY2FsbGVyIGJl bG93IHVzIHRoYXQgdmlvbGF0ZXMgU3lzVg0KPiAJICogQUJJIHcuci50LiB0byAlcnNwIGFs aWdubWVudCBiZWZvcmUgZnVuYyBjYWxsLg0KPiAJICovDQo+IAlmb3IgKGkgPSAwOyBpIDwg MzI7IGkrKykNCj4gCQlhcnJbaV0gPSAxOw0KPiANCj4gCXJlYWRfYmFycmllcihhcnIpOw0K PiB9DQo+IA0KPiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdLCBjaGFyICplbnZw W10pDQo+IHsNCj4gCWR1bXBfYXJndihhcmdjLCBhcmd2KTsNCj4gCWR1bXBfZW52cChlbnZw KTsNCj4gCXRlc3Rfc3NlX21vdmVfYWxpZ25lZCgpOw0KPiAJcmV0dXJuIDA7DQo+IH0NCj4g YGBgDQo+IA0K