From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1047 invoked by alias); 11 Feb 2003 23:56:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 1027 invoked by uid 71); 11 Feb 2003 23:56:00 -0000 Resent-Date: 11 Feb 2003 23:56:00 -0000 Resent-Message-ID: <20030211235600.1025.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, Richard_Pringle@XonTech.com Received: (qmail 342 invoked by uid 48); 11 Feb 2003 23:54:40 -0000 Message-Id: <20030211235439.340.qmail@sources.redhat.com> Date: Tue, 11 Feb 2003 23:56:00 -0000 From: Richard_Pringle@XonTech.com Reply-To: Richard_Pringle@XonTech.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: optimization/9668: Optimizing results in nans in output X-SW-Source: 2003-02/txt/msg00517.txt.bz2 List-Id: >Number: 9668 >Category: optimization >Synopsis: Optimizing results in nans in output >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Tue Feb 11 23:56:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Rich Pringle >Release: gcc version 2.96 >Organization: >Environment: Red Hat Linux 7.1 2.96-81 >Description: See Synopsis >How-To-Repeat: gcc test1.c -O3 >Fix: Do not optimize, or change #define SIZE_X 20 to const unsigned int SIZE_X=20; >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="test1.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test1.i" IyAyICJ0ZXN0MS5jIg0KIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAzDQojIDI3ICIvdXNy L2luY2x1ZGUvc3RkaW8uaCIgMw0KIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzDQoj IDI4MyAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMNCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9j ZGVmcy5oIiAxIDMNCiMgMjg0ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzDQojIDMxMSAi L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMNCiMgMSAiL3Vzci9pbmNsdWRlL2dudS9zdHVicy5o IiAxIDMNCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzDQojIDI4ICIvdXNyL2lu Y2x1ZGUvc3RkaW8uaCIgMiAzDQoNCg0KDQoNCg0KIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYt cmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzDQojIDE5OSAiL3Vzci9saWIv Z2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUvc3RkZGVmLmgiIDMNCnR5cGVk ZWYgdW5zaWduZWQgaW50IHNpemVfdDsNCiMgMzQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMN Cg0KIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMNCiMgMjYgIi91c3IvaW5jbHVk ZS9iaXRzL3R5cGVzLmgiIDMNCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMw0KIyAy NyAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzDQoNCg0KIyAxICIvdXNyL2xpYi9nY2Mt bGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzDQojIDMwICIv dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg X191X2NoYXI7DQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsNCnR5cGVkZWYgdW5z aWduZWQgaW50IF9fdV9pbnQ7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7DQoNCl9f ZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7DQpf X2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsNCiMgNDkgIi91c3Iv aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMNCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7DQp0 eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Ow0KdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50 IF9faW50MTZfdDsNCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7DQp0eXBl ZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Ow0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJf dDsNCg0KX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRf dDsNCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0 X3Q7DQoNCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsNCg0KdHlwZWRlZiBfX3VfcXVhZF90 IF9fZGV2X3Q7DQp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsNCnR5cGVkZWYgX191X2ludCBfX2dp ZF90Ow0KdHlwZWRlZiBfX3VfbG9uZyBfX2lub190Ow0KdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90 Ow0KdHlwZWRlZiBfX3VfaW50IF9fbmxpbmtfdDsNCnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsN CnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7DQp0eXBlZGVmIGludCBfX3BpZF90Ow0KdHlwZWRl ZiBpbnQgX19zc2l6ZV90Ow0KdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsNCnR5cGVkZWYgX191 X3F1YWRfdCBfX3JsaW02NF90Ow0KdHlwZWRlZiBfX3VfaW50IF9faWRfdDsNCg0KdHlwZWRlZiBz dHJ1Y3QNCiAgew0KICAgIGludCBfX3ZhbFsyXTsNCiAgfSBfX2ZzaWRfdDsNCg0KDQp0eXBlZGVm IGludCBfX2RhZGRyX3Q7DQp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsNCnR5cGVkZWYgbG9uZyBp bnQgX190aW1lX3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7DQp0eXBlZGVm IGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7DQp0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsNCg0K dHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7DQoNCg0KdHlwZWRlZiBpbnQgX19jbG9ja2lkX3Q7 DQoNCg0KdHlwZWRlZiBpbnQgX190aW1lcl90Ow0KDQoNCg0KDQoNCg0KdHlwZWRlZiBpbnQgX19r ZXlfdDsNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsNCg0KDQoN CnR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXplX3Q7DQoNCg0KDQoNCnR5cGVkZWYgbG9uZyBpbnQg X19ibGtjbnRfdDsNCnR5cGVkZWYgX19xdWFkX3QgX19ibGtjbnQ2NF90Ow0KDQoNCnR5cGVkZWYg X191X2xvbmcgX19mc2Jsa2NudF90Ow0KdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90 Ow0KDQoNCnR5cGVkZWYgX191X2xvbmcgX19mc2ZpbGNudF90Ow0KdHlwZWRlZiBfX3VfcXVhZF90 IF9fZnNmaWxjbnQ2NF90Ow0KDQoNCnR5cGVkZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7DQoNCg0K dHlwZWRlZiBfX2xvZmZfdCBfX29mZjY0X3Q7DQoNCg0KdHlwZWRlZiBsb25nIGludCBfX3Rfc2Nh bGFyX3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7DQoNCg0KdHlw ZWRlZiBpbnQgX19pbnRwdHJfdDsNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5f dDsNCg0KDQoNCg0KIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzDQoj IDIzICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMw0KIyAxICIvdXNyL2luY2x1 ZGUvYml0cy9zY2hlZC5oIiAxIDMNCiMgNjggIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMN CnN0cnVjdCBfX3NjaGVkX3BhcmFtDQogIHsNCiAgICBpbnQgX19zY2hlZF9wcmlvcml0eTsNCiAg fTsNCiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMNCg0KDQpzdHJ1 Y3QgX3B0aHJlYWRfZmFzdGxvY2sNCnsNCiAgbG9uZyBpbnQgX19zdGF0dXM7DQogIGludCBfX3Nw aW5sb2NrOw0KDQp9Ow0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0 ICpfcHRocmVhZF9kZXNjcjsNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0 cl9zDQp7DQogIGludCBfX2RldGFjaHN0YXRlOw0KICBpbnQgX19zY2hlZHBvbGljeTsNCiAgc3Ry dWN0IF9fc2NoZWRfcGFyYW0gX19zY2hlZHBhcmFtOw0KICBpbnQgX19pbmhlcml0c2NoZWQ7DQog IGludCBfX3Njb3BlOw0KICBzaXplX3QgX19ndWFyZHNpemU7DQogIGludCBfX3N0YWNrYWRkcl9z ZXQ7DQogIHZvaWQgKl9fc3RhY2thZGRyOw0KICBzaXplX3QgX19zdGFja3NpemU7DQp9IHB0aHJl YWRfYXR0cl90Ow0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QNCnsNCiAgc3RydWN0IF9wdGhyZWFkX2Zh c3Rsb2NrIF9fY19sb2NrOw0KICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGluZzsNCn0gcHRocmVh ZF9jb25kX3Q7DQoNCg0KDQp0eXBlZGVmIHN0cnVjdA0Kew0KICBpbnQgX19kdW1teTsNCn0gcHRo cmVhZF9jb25kYXR0cl90Ow0KDQoNCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7 DQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QNCnsNCiAgaW50IF9fbV9yZXNlcnZlZDsNCiAgaW50 IF9fbV9jb3VudDsNCiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOw0KICBpbnQgX19tX2tpbmQ7 DQogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX21fbG9jazsNCn0gcHRocmVhZF9tdXRleF90 Ow0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QNCnsNCiAgaW50IF9fbXV0ZXhraW5kOw0KfSBwdGhyZWFk X211dGV4YXR0cl90Ow0KDQoNCg0KdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7DQojIDE0MCAi L3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMNCnR5cGVkZWYgdW5zaWduZWQgbG9u ZyBpbnQgcHRocmVhZF90Ow0KIyAxNDQgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMw0K IyAzNiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMw0KIyA0NCAiL3Vzci9pbmNsdWRlL3N0ZGlv LmgiIDMNCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7DQojIDU0ICIvdXNyL2luY2x1ZGUv c3RkaW8uaCIgMw0KdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX19GSUxFOw0KIyA2NCAiL3Vzci9p bmNsdWRlL3N0ZGlvLmgiIDMNCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMw0KIyAzMCAi L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMNCiMgMSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAx IDMNCiMgOSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzDQojIDEgIi91c3IvaW5jbHVkZS9i aXRzL3R5cGVzLmgiIDEgMw0KIyAxMCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMNCg0K DQoNCg0KIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVk ZS9zdGRkZWYuaCIgMSAzDQojIDI4NyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51 eC8yLjk2L2luY2x1ZGUvc3RkZGVmLmgiIDMNCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsNCiMg MzEyICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVkZS9zdGRk ZWYuaCIgMw0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90Ow0KIyAxNSAiL3Vzci9pbmNsdWRl L19HX2NvbmZpZy5oIiAyIDMNCiMgMjQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMw0KIyAx ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzDQojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIg Mw0KIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVkZS9z dGRkZWYuaCIgMSAzDQojIDQ5ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzDQoNCiMgMSAiL3Vz ci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzDQojIDUxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIg MiAzDQojIDY3ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMw0KdHlwZWRlZiBzdHJ1Y3QNCnsNCiAg aW50IF9fY291bnQ7DQogIHVuaW9uDQogIHsNCiAgICB3aW50X3QgX193Y2g7DQogICAgY2hhciBf X3djaGJbNF07DQogIH0gX192YWx1ZTsNCn0gX19tYnN0YXRlX3Q7DQojIDI1ICIvdXNyL2luY2x1 ZGUvX0dfY29uZmlnLmgiIDIgMw0KDQp0eXBlZGVmIHN0cnVjdA0Kew0KICBfX29mZl90IF9fcG9z Ow0KICBfX21ic3RhdGVfdCBfX3N0YXRlOw0KfSBfR19mcG9zX3Q7DQp0eXBlZGVmIHN0cnVjdA0K ew0KICBfX29mZjY0X3QgX19wb3M7DQogIF9fbWJzdGF0ZV90IF9fc3RhdGU7DQp9IF9HX2Zwb3M2 NF90Ow0KIyA0NCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzDQojIDEgIi91c3IvaW5jbHVk ZS9nY29udi5oIiAxIDMNCiMgMjYgIi91c3IvaW5jbHVkZS9nY29udi5oIiAzDQojIDEgIi91c3Iv aW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMNCiMgMjcgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMN Cg0KIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzDQojIDQ4ICIvdXNyL2luY2x1ZGUvd2No YXIuaCIgMw0KIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5j bHVkZS9zdGRkZWYuaCIgMSAzDQojIDQ5ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzDQoNCiMg MSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzDQojIDUxICIvdXNyL2luY2x1ZGUvd2No YXIuaCIgMiAzDQojIDI5ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzDQoNCiMgMSAiL3Vzci9s aWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUvc3RkZGVmLmgiIDEgMw0K IyAzMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMw0KDQoNCg0KDQoNCmVudW0NCnsNCiAgX19H Q09OVl9PSyA9IDAsDQogIF9fR0NPTlZfTk9DT05WLA0KICBfX0dDT05WX05PREIsDQogIF9fR0NP TlZfTk9NRU0sDQoNCiAgX19HQ09OVl9FTVBUWV9JTlBVVCwNCiAgX19HQ09OVl9GVUxMX09VVFBV VCwNCiAgX19HQ09OVl9JTExFR0FMX0lOUFVULA0KICBfX0dDT05WX0lOQ09NUExFVEVfSU5QVVQs DQoNCiAgX19HQ09OVl9JTExFR0FMX0RFU0NSSVBUT1IsDQogIF9fR0NPTlZfSU5URVJOQUxfRVJS T1INCn07DQoNCg0KDQplbnVtDQp7DQogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwNCiAgX19H Q09OVl9JR05PUkVfRVJST1JTID0gMHgwMDAyDQp9Ow0KDQoNCg0Kc3RydWN0IF9fZ2NvbnZfc3Rl cDsNCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YTsNCnN0cnVjdCBfX2djb252X2xvYWRlZF9vYmpl Y3Q7DQpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhOw0KDQoNCg0KdHlwZWRlZiBpbnQgKCpfX2dj b252X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRh ICosDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoq LCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBjaGFyICoqLCBzaXplX3QgKiwgaW50LCBpbnQpOw0KDQoNCnR5cGVkZWYgaW50ICgq X19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7DQp0eXBlZGVmIHZvaWQg KCpfX2djb252X2VuZF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOw0KDQoNCg0KdHlwZWRl ZiBpbnQgKCpfX2djb252X3RyYW5zX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwg dm9pZCAqLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWdu ZWQgY2hhciAqLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5z aWduZWQgY2hhciAqKiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0 IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKiwNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplX3QgKik7DQoNCg0KdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5z X2NvbnRleHRfZmN0KSAodm9pZCAqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAq LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh ciAqLCB1bnNpZ25lZCBjaGFyICopOw0KDQoNCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19x dWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7DQoNCg0KdHlwZWRlZiBpbnQg KCpfX2djb252X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsNCnR5cGVk ZWYgdm9pZCAoKl9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCkgKHZvaWQgKik7DQoNCnN0cnVjdCBfX2dj b252X3RyYW5zX2RhdGENCnsNCg0KICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsNCiAg X19nY29udl90cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRleHRfZmN0Ow0KICBfX2djb252 X3RyYW5zX2VuZF9mY3QgX190cmFuc19lbmRfZmN0Ow0KICB2b2lkICpfX2RhdGE7DQogIHN0cnVj dCBfX2djb252X3RyYW5zX2RhdGEgKl9fbmV4dDsNCn07DQoNCg0KDQpzdHJ1Y3QgX19nY29udl9z dGVwDQp7DQogIHN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOw0K ICBfX2NvbnN0IGNoYXIgKl9fbW9kbmFtZTsNCg0KICBpbnQgX19jb3VudGVyOw0KDQogIGNoYXIg Kl9fZnJvbV9uYW1lOw0KICBjaGFyICpfX3RvX25hbWU7DQoNCiAgX19nY29udl9mY3QgX19mY3Q7 DQogIF9fZ2NvbnZfaW5pdF9mY3QgX19pbml0X2ZjdDsNCiAgX19nY29udl9lbmRfZmN0IF9fZW5k X2ZjdDsNCg0KDQoNCiAgaW50IF9fbWluX25lZWRlZF9mcm9tOw0KICBpbnQgX19tYXhfbmVlZGVk X2Zyb207DQogIGludCBfX21pbl9uZWVkZWRfdG87DQogIGludCBfX21heF9uZWVkZWRfdG87DQoN Cg0KICBpbnQgX19zdGF0ZWZ1bDsNCg0KICB2b2lkICpfX2RhdGE7DQp9Ow0KDQoNCg0Kc3RydWN0 IF9fZ2NvbnZfc3RlcF9kYXRhDQp7DQogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmOw0KICB1bnNp Z25lZCBjaGFyICpfX291dGJ1ZmVuZDsNCg0KDQoNCiAgaW50IF9fZmxhZ3M7DQoNCg0KDQogIGlu dCBfX2ludm9jYXRpb25fY291bnRlcjsNCg0KDQoNCiAgaW50IF9faW50ZXJuYWxfdXNlOw0KDQog IF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsNCiAgX19tYnN0YXRlX3QgX19zdGF0ZTsNCg0KDQoNCiAg c3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX190cmFuczsNCn07DQoNCg0KDQp0eXBlZGVmIHN0 cnVjdCBfX2djb252X2luZm8NCnsNCiAgc2l6ZV90IF9fbnN0ZXBzOw0KICBzdHJ1Y3QgX19nY29u dl9zdGVwICpfX3N0ZXBzOw0KICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0 YSBfX2RhdGEgWzBdOw0KfSAqX19nY29udl90Ow0KIyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZp Zy5oIiAyIDMNCnR5cGVkZWYgdW5pb24NCnsNCiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOw0K ICBzdHJ1Y3QNCiAgew0KICAgIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsNCiAgICBzdHJ1Y3Qg X19nY29udl9zdGVwX2RhdGEgX19kYXRhOw0KICB9IF9fY29tYmluZWQ7DQp9IF9HX2ljb252X3Q7 DQoNCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJ X18pKSk7DQp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo X19TSV9fKSkpOw0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVf XyAoKF9fbW9kZV9fIChfX0hJX18pKSk7DQp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJf dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsNCiMgMzEgIi91c3IvaW5jbHVk ZS9saWJpby5oIiAyIDMNCiMgNTEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzDQojIDEgIi91c3Iv bGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMN CiMgNDMgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0 ZGFyZy5oIiAzDQp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0Ow0KIyA1 MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMw0KIyAxNTggIi91c3IvaW5jbHVkZS9saWJpby5o IiAzDQpzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOw0KIyAxNjggIi91c3IvaW5j bHVkZS9saWJpby5oIiAzDQp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsNCg0KDQoNCg0KDQpzdHJ1 Y3QgX0lPX21hcmtlciB7DQogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsNCiAgc3RydWN0IF9J T19GSUxFICpfc2J1ZjsNCg0KDQoNCiAgaW50IF9wb3M7DQojIDE5MSAiL3Vzci9pbmNsdWRlL2xp YmlvLmgiIDMNCn07DQoNCg0KZW51bSBfX2NvZGVjdnRfcmVzdWx0DQp7DQogIF9fY29kZWN2dF9v aywNCiAgX19jb2RlY3Z0X3BhcnRpYWwsDQogIF9fY29kZWN2dF9lcnJvciwNCiAgX19jb2RlY3Z0 X25vY29udg0KfTsNCiMgMjU5ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMw0Kc3RydWN0IF9JT19G SUxFIHsNCiAgaW50IF9mbGFnczsNCg0KDQoNCg0KICBjaGFyKiBfSU9fcmVhZF9wdHI7DQogIGNo YXIqIF9JT19yZWFkX2VuZDsNCiAgY2hhciogX0lPX3JlYWRfYmFzZTsNCiAgY2hhciogX0lPX3dy aXRlX2Jhc2U7DQogIGNoYXIqIF9JT193cml0ZV9wdHI7DQogIGNoYXIqIF9JT193cml0ZV9lbmQ7 DQogIGNoYXIqIF9JT19idWZfYmFzZTsNCiAgY2hhciogX0lPX2J1Zl9lbmQ7DQoNCiAgY2hhciAq X0lPX3NhdmVfYmFzZTsNCiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOw0KICBjaGFyICpfSU9fc2F2 ZV9lbmQ7DQoNCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOw0KDQogIHN0cnVjdCBfSU9f RklMRSAqX2NoYWluOw0KDQogIGludCBfZmlsZW5vOw0KICBpbnQgX2Jsa3NpemU7DQogIF9fb2Zm X3QgX29sZF9vZmZzZXQ7DQoNCg0KDQogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOw0KICBz aWduZWQgY2hhciBfdnRhYmxlX29mZnNldDsNCiAgY2hhciBfc2hvcnRidWZbMV07DQoNCg0KDQog IF9JT19sb2NrX3QgKl9sb2NrOw0KIyAzMDMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzDQogIF9f b2ZmNjRfdCBfb2Zmc2V0Ow0KDQoNCg0KDQoNCiAgdm9pZCAqX19wYWQxOw0KICB2b2lkICpfX3Bh ZDI7DQoNCiAgaW50IF9tb2RlOw0KDQogIGNoYXIgX3VudXNlZDJbMTUgKiBzaXplb2YgKGludCkg LSAyICogc2l6ZW9mICh2b2lkICopXTsNCg0KfTsNCg0KDQp0eXBlZGVmIHN0cnVjdCBfSU9fRklM RSBfSU9fRklMRTsNCg0KDQpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsNCg0KZXh0ZXJuIHN0cnVjdCBf SU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOw0KZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVz IF9JT18yXzFfc3Rkb3V0XzsNCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0 ZGVycl87DQojIDM0MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMNCnR5cGVkZWYgX19zc2l6ZV90 IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19uYnl0 ZXMpOw0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICh2b2lk ICpfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVfdCBfX24pOw0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGludCBfX2lvX3Nl ZWtfZm4gKHZvaWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9fcG9zLCBpbnQgX193KTsNCg0KDQp0 eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tpZSk7DQojIDM5NCAiL3Vzci9p bmNsdWRlL2xpYmlvLmgiIDMNCmV4dGVybiBpbnQgX191bmRlcmZsb3cgKF9JT19GSUxFICopIDsN CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgOw0KZXh0ZXJuIGludCBfX292ZXJmbG93 IChfSU9fRklMRSAqLCBpbnQpIDsNCmV4dGVybiB3aW50X3QgX193dW5kZXJmbG93IChfSU9fRklM RSAqKSA7DQpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9fRklMRSAqKSA7DQpleHRlcm4gd2lu dF90IF9fd292ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpIDsNCiMgNDI0ICIvdXNyL2luY2x1 ZGUvbGliaW8uaCIgMw0KZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9fZnApIDsNCmV4 dGVybiBpbnQgX0lPX3B1dGMgKGludCBfX2MsIF9JT19GSUxFICpfX2ZwKSA7DQpleHRlcm4gaW50 IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCkgOw0KZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9f RklMRSAqX19mcCkgOw0KDQpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpf X2ZwKSA7DQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKikg Ow0KZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSA7DQpleHRlcm4gaW50 IF9JT19mdHJ5bG9ja2ZpbGUgKF9JT19GSUxFICopIDsNCiMgNDU0ICIvdXNyL2luY2x1ZGUvbGli aW8uaCIgMw0KZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBj b25zdCBjaGFyICogX19yZXN0cmljdCwNCiAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192 YV9saXN0LCBpbnQgKl9fcmVzdHJpY3QpIDsNCmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9f RklMRSAqX19yZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwNCiAgICAgICAgICAgICAg ICAgICAgICAgICBfX2dudWNfdmFfbGlzdCkgOw0KZXh0ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAo X0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QpIDsNCmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChf SU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkgOw0KDQpleHRlcm4gX19vZmY2NF90IF9JT19zZWVr b2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KSA7DQpleHRlcm4gX19vZmY2NF90 IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCkgOw0KDQpleHRlcm4gdm9p ZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgOw0KIyA2NSAiL3Vzci9pbmNsdWRl L3N0ZGlvLmgiIDIgMw0KIyA3OSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMNCnR5cGVkZWYgX0df ZnBvc190IGZwb3NfdDsNCiMgMTI4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMw0KIyAxICIvdXNy L2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzDQojIDEyOSAiL3Vzci9pbmNsdWRlL3N0ZGlv LmgiIDIgMw0KDQoNCg0KZXh0ZXJuIEZJTEUgKnN0ZGluOw0KZXh0ZXJuIEZJTEUgKnN0ZG91dDsN CmV4dGVybiBGSUxFICpzdGRlcnI7DQojIDE0MyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMNCmV4 dGVybiBpbnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsNCg0KZXh0ZXJuIGlu dCByZW5hbWUgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIDsNCg0K DQoNCg0KZXh0ZXJuIEZJTEUgKnRtcGZpbGUgKHZvaWQpIDsNCiMgMTYyICIvdXNyL2luY2x1ZGUv c3RkaW8uaCIgMw0KZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hhciAqX19zKSA7DQoNCg0KDQoNCmV4 dGVybiBjaGFyICp0bXBuYW1fciAoY2hhciAqX19zKSA7DQojIDE3OSAiL3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDMNCmV4dGVybiBjaGFyICp0ZW1wbmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2Nv bnN0IGNoYXIgKl9fcGZ4KQ0KICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f KSk7DQoNCg0KDQoNCmV4dGVybiBpbnQgZmNsb3NlIChGSUxFICpfX3N0cmVhbSkgOw0KDQpleHRl cm4gaW50IGZmbHVzaCAoRklMRSAqX19zdHJlYW0pIDsNCg0KDQoNCmV4dGVybiBpbnQgZmZsdXNo X3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOw0KIyAyMDIgIi91c3IvaW5jbHVkZS9zdGRpby5o IiAzDQpleHRlcm4gRklMRSAqZm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVu YW1lLA0KICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2Rl cykgOw0KDQpleHRlcm4gRklMRSAqZnJlb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f ZmlsZW5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fbW9kZXMsDQogICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVh bSkgOw0KIyAyMzIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzDQpleHRlcm4gRklMRSAqZmRvcGVu IChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7DQojIDI1NSAiL3Vzci9pbmNsdWRl L3N0ZGlvLmgiIDMNCmV4dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVh bSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgOw0KDQoNCg0KZXh0ZXJuIGludCBzZXR2YnVmIChG SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLA0KICAgICAg ICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgOw0KDQoNCg0KDQpleHRlcm4g dm9pZCBzZXRidWZmZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJp Y3QgX19idWYsDQogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUpIDsNCg0KDQpl eHRlcm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgOw0KDQoNCg0KDQpleHRlcm4g aW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sDQogICAgICAgICAgICAgICAg ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7DQoNCmV4dGVybiBp bnQgcHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOw0KDQpl eHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLA0KICAgICAgICAgICAgICAg ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOw0KDQoNCmV4dGVy biBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19mb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2Fy ZykgOw0KDQpleHRlcm4gaW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv cm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpDQogICAgICAgICAgICA7DQoNCmV4dGVybiBpbnQg dnNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19mb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOw0K DQoNCg0KZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBf X21heGxlbiwNCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X2Zvcm1hdCwgLi4uKQ0KICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf X3ByaW50Zl9fLCAzLCA0KSkpOw0KDQpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0 cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwNCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQ0KICAgICAg ICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOw0K IyAzMjYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzDQpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAq X19yZXN0cmljdCBfX3N0cmVhbSwNCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOw0KDQpleHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOw0KDQpleHRlcm4gaW50IHNzY2FuZiAoX19j b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywNCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOw0KIyAzNTIgIi91c3IvaW5jbHVkZS9zdGRp by5oIiAzDQpleHRlcm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSkgOw0KZXh0ZXJuIGludCBn ZXRjIChGSUxFICpfX3N0cmVhbSkgOw0KDQoNCmV4dGVybiBpbnQgZ2V0Y2hhciAodm9pZCkgOw0K DQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7 DQpleHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpIDsNCg0KDQoNCg0KZXh0ZXJuIGlu dCBmZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsNCg0KDQoNCg0KZXh0ZXJuIGludCBm cHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsNCmV4dGVybiBpbnQgcHV0YyAoaW50IF9f YywgRklMRSAqX19zdHJlYW0pIDsNCg0KDQpleHRlcm4gaW50IHB1dGNoYXIgKGludCBfX2MpIDsN Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAq X19zdHJlYW0pIDsNCg0KDQoNCg0KZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19jLCBG SUxFICpfX3N0cmVhbSkgOw0KZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSA7 DQoNCg0KDQoNCg0KZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkgOw0KDQoNCmV4dGVy biBpbnQgcHV0dyAoaW50IF9fdywgRklMRSAqX19zdHJlYW0pIDsNCg0KDQoNCg0KZXh0ZXJuIGNo YXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwgRklMRSAqX19yZXN0cmlj dCBfX3N0cmVhbSkNCiAgICAgICAgICAgIDsNCiMgNDE4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg Mw0KZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgOw0KIyA0NDIgIi91c3IvaW5jbHVkZS9z dGRpby5oIiAzDQpleHRlcm4gaW50IGZwdXRzIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z LCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQ0KICAgICAgICAgICAgOw0KIyA0NTIgIi91c3Iv aW5jbHVkZS9zdGRpby5oIiAzDQpleHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hhciAqX19zKSA7 DQoNCg0KDQpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsNCg0K DQoNCmV4dGVybiBzaXplX3QgZnJlYWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBf X3NpemUsDQogICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0 IF9fc3RyZWFtKSA7DQoNCmV4dGVybiBzaXplX3QgZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVz dHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsDQogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90 IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3MpIDsNCg0KDQoNCmV4dGVybiBzaXplX3QgZnJlYWRf dW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry ZWFtKSA7DQpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2b2lkICpfX3Jl c3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsNCg0KDQoNCg0KZXh0 ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVu Y2UpIDsNCg0KZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgOw0KDQpleHRl cm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSA7DQojIDQ5NiAiL3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDMNCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwg ZnBvc190ICpfX3Jlc3RyaWN0IF9fcG9zKQ0KICAgICAgICAgICAgOw0KDQpleHRlcm4gaW50IGZz ZXRwb3MgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3NfdCAqX19wb3MpIDsNCiMgNTMyICIv dXNyL2luY2x1ZGUvc3RkaW8uaCIgMw0KZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJTEUgKl9fc3Ry ZWFtKSA7DQoNCmV4dGVybiBpbnQgZmVvZiAoRklMRSAqX19zdHJlYW0pIDsNCg0KZXh0ZXJuIGlu dCBmZXJyb3IgKEZJTEUgKl9fc3RyZWFtKSA7DQoNCg0KDQpleHRlcm4gdm9pZCBjbGVhcmVycl91 bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsNCmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklM RSAqX19zdHJlYW0pIDsNCmV4dGVybiBpbnQgZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVh bSkgOw0KDQoNCg0KDQpleHRlcm4gdm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSA7DQoN Cg0KDQoNCmV4dGVybiBpbnQgc3lzX25lcnI7DQpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0 IHN5c19lcnJsaXN0W107DQojIDU2MyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMNCmV4dGVybiBp bnQgZmlsZW5vIChGSUxFICpfX3N0cmVhbSkgOw0KDQoNCg0KDQpleHRlcm4gaW50IGZpbGVub191 bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsNCg0KDQoNCg0KDQoNCmV4dGVybiBGSUxFICpwb3Bl biAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgOw0KDQoN CmV4dGVybiBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVhbSkgOw0KDQoNCg0KDQoNCmV4dGVybiBj aGFyICpjdGVybWlkIChjaGFyICpfX3MpIDsNCiMgNjEwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg Mw0KZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOw0KDQoNCg0KZXh0ZXJu IGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7DQoNCg0KZXh0ZXJuIHZvaWQgZnVu bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7DQojIDYzMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi IDMNCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMSAzDQojIDM5ICIvdXNyL2luY2x1 ZGUvYml0cy9zdGRpby5oIiAzDQpleHRlcm4gX19pbmxpbmUgaW50DQp2cHJpbnRmIChfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQ0Kew0KICByZXR1 cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJnKTsNCn0NCg0KDQpleHRlcm4gX19pbmxp bmUgaW50DQpnZXRjaGFyICh2b2lkKQ0Kew0KICByZXR1cm4gX0lPX2dldGMgKHN0ZGluKTsNCn0N Cg0KDQoNCg0KZXh0ZXJuIF9faW5saW5lIGludA0KZ2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkN CnsNCiAgcmV0dXJuICgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19yZWFkX2Vu ZCA/IF9fdWZsb3cgKF9fZnApIDogKih1bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+X0lPX3JlYWRf cHRyKyspOw0KfQ0KDQoNCmV4dGVybiBfX2lubGluZSBpbnQNCmdldGNoYXJfdW5sb2NrZWQgKHZv aWQpDQp7DQogIHJldHVybiAoKHN0ZGluKS0+X0lPX3JlYWRfcHRyID49IChzdGRpbiktPl9JT19y ZWFkX2VuZCA/IF9fdWZsb3cgKHN0ZGluKSA6ICoodW5zaWduZWQgY2hhciAqKSAoc3RkaW4pLT5f SU9fcmVhZF9wdHIrKyk7DQp9DQoNCg0KDQoNCmV4dGVybiBfX2lubGluZSBpbnQNCnB1dGNoYXIg KGludCBfX2MpDQp7DQogIHJldHVybiBfSU9fcHV0YyAoX19jLCBzdGRvdXQpOw0KfQ0KDQoNCg0K DQpleHRlcm4gX19pbmxpbmUgaW50DQpmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19z dHJlYW0pDQp7DQogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3Ry ZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNo YXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIr KyA9IChfX2MpKSk7DQp9DQoNCg0KDQoNCg0KZXh0ZXJuIF9faW5saW5lIGludA0KcHV0Y191bmxv Y2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pDQp7DQogIHJldHVybiAoKChfX3N0cmVhbSkt Pl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93 IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihf X3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7DQp9DQoNCg0KZXh0ZXJuIF9faW5s aW5lIGludA0KcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykNCnsNCiAgcmV0dXJuICgoKHN0ZG91 dCktPl9JT193cml0ZV9wdHIgPj0gKHN0ZG91dCktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxv dyAoc3Rkb3V0LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHN0 ZG91dCktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7DQp9DQojIDExNyAiL3Vzci9pbmNsdWRl L2JpdHMvc3RkaW8uaCIgMw0KZXh0ZXJuIF9faW5saW5lIGludA0KZmVvZl91bmxvY2tlZCAoRklM RSAqX19zdHJlYW0pDQp7DQogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MTApICE9 IDApOw0KfQ0KDQoNCmV4dGVybiBfX2lubGluZSBpbnQNCmZlcnJvcl91bmxvY2tlZCAoRklMRSAq X19zdHJlYW0pDQp7DQogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MjApICE9IDAp Ow0KfQ0KIyA2MzIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMNCiMgMyAidGVzdDEuYyIgMg0K DQoNCg0KDQoNCmNvbnN0IGZsb2F0IEZBQ1RPUjE9LjFGOw0KY29uc3QgZmxvYXQgRkFDVE9SMj0u NUY7DQoNCnZvaWQgbWFuaXB1bGF0ZShmbG9hdCBtYXRyaXhbXVsyMCArMV0sIGNvbnN0IHVuc2ln bmVkIGludCByb3cpOw0KDQppbnQgbWFpbih2b2lkKQ0Kew0KICAgICB1bnNpZ25lZCBpbnQgaTsN CiAgICAgZmxvYXQgZm1hdHJpeFsxXVsyMCArMV07DQoNCiAgICAgZm9yKGk9MDtpPDIwICsxO2kr KykgZm1hdHJpeFswXVtpXT0oZmxvYXQpaTsNCg0KICAgICBtYW5pcHVsYXRlKGZtYXRyaXgsMCk7 DQoNCiAgICAgZm9yKGk9MDtpPDIwICsxO2krKykgcHJpbnRmKCIlZiAiLGZtYXRyaXhbMF1baV0p Ow0KDQogICAgIHByaW50ZigiXG4iKTsNCg0KICAgICByZXR1cm4gMDsNCn0NCg0Kdm9pZCBtYW5p cHVsYXRlKGZsb2F0IG1hdHJpeFtdWzIwICsxXSwgY29uc3QgdW5zaWduZWQgaW50IHJvdykNCnsN CiAgICAgdW5zaWduZWQgaW50IGk7DQogICAgIHVuc2lnbmVkIGludCBzaXplX3hkMjsNCg0KICAg ICBzaXplX3hkMj0oMjAvMik7DQoNCiAgICAgZm9yKGk9MztpPHNpemVfeGQyLTE7aSs9MikgbWF0 cml4W3Jvd11baV09RkFDVE9SMSoobWF0cml4W3Jvd11baS0xXSttYXRyaXhbcm93XVtpKzFdKQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRkFDVE9SMioo bWF0cml4W3Jvd11baS0zXSttYXRyaXhbcm93XVtpKzNdKTsNCg0KICAgICBmb3IoaT1zaXplX3hk MiszO2k8MjAgLTM7aSs9MikgbWF0cml4W3Jvd11baV09RkFDVE9SMSoobWF0cml4W3Jvd11baS0x XSttYXRyaXhbcm93XVtpKzFdKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLUZBQ1RPUjIqKG1hdHJpeFtyb3ddW2ktM10rbWF0cml4W3Jvd11b aSszXSk7DQp9DQo=