This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

optimization/3446: a bug already seen in gcc 2.95.[12] now in gcc 3.0



>Number:         3446
>Category:       optimization
>Synopsis:       a bug already seen in gcc 2.95.[12] now in gcc 3.0
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Jun 27 10:06:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     gcc 3.0
>Release:        unknown-1.0
>Organization:
>Environment:
linux 2.4.5 ac 19 x86
>Description:
This is a bug I saw four or five months ago
related to gcc 2.95.2 (if I'm right). The attached program 
,which i found on a site describing the bug , if
compiled with no optimization or with -O gives
correct results. when compiled with -O2 thru -O6
outputs wrong data. Using It i tested Gcc 3.0.
And discovered it is broken ... aarggh! should I switch 
back to gcc 2.95.3 ?

Here's the gcc -v output

Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.0/specs
Configured with: ../configure --prefix=/usr --exec-prefix=/usr
Thread model: single
gcc version 3.0
>How-To-Repeat:
Compile and execute the attached program first 
using gcc -O gccbug.i -o gccbug -> ./gccbug -> correct
then gcc -O[2-6] -o gccbug -> ./gccbug -> wrong
>Fix:
I cannot figure out but you should already know since it was
fixed in gcc 2.95.3 ...
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="gccbug.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="gccbug.i"

IyAxICJnY2NidWcuYyIKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
MC9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDM2ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjg0ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMg
MzExICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1
YnMuaCIgMSAzCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzcgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoK
CgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMKIyAxOTkgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
L2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDQzICIv
dXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDIg
MwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRl
L2JpdHMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAi
L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9pbmNs
dWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOwp0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191
X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNpb25fXyB0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNpb25fXyB0eXBl
ZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVz
LmgiIDMKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlwZWRlZiB1
bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9faW50MzJf
dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18gdHlwZWRl
ZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90ICpfX3Fh
ZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsKdHlwZWRlZiBfX3VfaW50IF9fdWlk
X3Q7CnR5cGVkZWYgX191X2ludCBfX2dpZF90Owp0eXBlZGVmIF9fdV9sb25nIF9faW5vX3Q7CnR5
cGVkZWYgX191X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3VfaW50IF9fbmxpbmtfdDsKdHlwZWRl
ZiBsb25nIGludCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90IF9fbG9mZl90Owp0eXBlZGVmIGlu
dCBfX3BpZF90Owp0eXBlZGVmIGludCBfX3NzaXplX3Q7CnR5cGVkZWYgX191X2xvbmcgX19ybGlt
X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90Owp0eXBlZGVmIF9fdV9pbnQgX19pZF90
OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsKCgp0
eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxv
bmcgaW50IF9fdGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5cGVk
ZWYgbG9uZyBpbnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7Cgp0
eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKCgp0eXBlZGVmIGludCBfX2Nsb2NraWRfdDsKCgp0
eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoKCgoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgoKdHlwZWRl
ZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoKCnR5cGVkZWYgbG9uZyBpbnQgX19i
bGtzaXplX3Q7CgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVkZWYgX19xdWFk
X3QgX19ibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2Jsa2NudF90Owp0eXBlZGVm
IF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250
X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCgp0eXBlZGVmIF9fdV9xdWFk
X3QgX19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKCnR5cGVkZWYgbG9u
ZyBpbnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2NhbGFy
X3Q7CgoKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Nv
Y2tsZW5fdDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwoj
IDIzICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3NjaGVkLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzCnN0
cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7CiAgfTsKIyAy
NCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBfcHRocmVh
ZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7Cgp9OwoK
Cgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rlc2NyOwoK
CgoKCnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9hdHRyX3MKewogIGludCBfX2RldGFjaHN0YXRl
OwogIGludCBfX3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJh
bTsKICBpbnQgX19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRz
aXplOwogIGludCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90
IF9fc3RhY2tzaXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgc3Ry
dWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fY19sb2NrOwogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0
aW5nOwp9IHB0aHJlYWRfY29uZF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZHVtbXk7
Cn0gcHRocmVhZF9jb25kYXR0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5
X3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX21fcmVzZXJ2ZWQ7CiAgaW50IF9fbV9j
b3VudDsKICBfcHRocmVhZF9kZXNjciBfX21fb3duZXI7CiAgaW50IF9fbV9raW5kOwogIHN0cnVj
dCBfcHRocmVhZF9mYXN0bG9jayBfX21fbG9jazsKfSBwdGhyZWFkX211dGV4X3Q7CgoKCnR5cGVk
ZWYgc3RydWN0CnsKICBpbnQgX19tdXRleGtpbmQ7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoK
dHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7CiMgMTQwICIvdXNyL2luY2x1ZGUvYml0cy9wdGhy
ZWFkdHlwZXMuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKIyAxNDQg
Ii91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwojIDQ1ICIvdXNyL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDIgMwojIDUzICIvdXNyL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBz
dHJ1Y3QgX0lPX0ZJTEUgRklMRTsKIyA2MyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjAvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9fRklM
RTsKIyA3MyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9z
dGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMwojIDMwICIvdXNyL2luY2x1
ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMSAzCiMgOSAiL3Vz
ci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIg
MSAzCiMgMTAgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKCgojIDEgIi91c3IvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDI4
NyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRkZWYu
aCIgMwp0eXBlZGVmIGxvbmcgaW50IHdjaGFyX3Q7CiMgMzEyICIvdXNyL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQg
aW50IHdpbnRfdDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKIyAyNCAiL3Vz
ci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwoj
IDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQ5ICIvdXNyL2luY2x1ZGUv
d2NoYXIuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3djaGFyLmgiIDEgMwojIDUxICIv
dXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCiMgNjcgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCnR5
cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlvbgogIHsKICAgIHdpbnRfdCBfX3dj
aDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1ZTsKfSBfX21ic3RhdGVfdDsKIyAyNSAi
L3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCnR5cGVkZWYgc3RydWN0CnsKICBfX29mZl90
IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvc190Owp0eXBlZGVmIHN0cnVj
dAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0
X3Q7CiMgNDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9n
Y29udi5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2djb252LmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCiMgMSAi
L3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwoj
IDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMwojIDQ5ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3djaGFyLmgiIDEgMwojIDUxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCiMgMjkg
Ii91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzEgIi91c3IvaW5jbHVkZS9n
Y29udi5oIiAyIDMKCgoKCgplbnVtCnsKICBfX0dDT05WX09LID0gMCwKICBfX0dDT05WX05PQ09O
ViwKICBfX0dDT05WX05PREIsCiAgX19HQ09OVl9OT01FTSwKCiAgX19HQ09OVl9FTVBUWV9JTlBV
VCwKICBfX0dDT05WX0ZVTExfT1VUUFVULAogIF9fR0NPTlZfSUxMRUdBTF9JTlBVVCwKICBfX0dD
T05WX0lOQ09NUExFVEVfSU5QVVQsCgogIF9fR0NPTlZfSUxMRUdBTF9ERVNDUklQVE9SLAogIF9f
R0NPTlZfSU5URVJOQUxfRVJST1IKfTsKCgoKZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0gMHgw
MDAxLAogIF9fR0NPTlZfSUdOT1JFX0VSUk9SUyA9IDB4MDAwMgp9OwoKCgpzdHJ1Y3QgX19nY29u
dl9zdGVwOwpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGE7CnN0cnVjdCBfX2djb252X2xvYWRlZF9v
YmplY3Q7CnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGE7CgoKCnR5cGVkZWYgaW50ICgqX19nY29u
dl9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLCBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgKiosIHNpemVfdCAqLCBpbnQsIGludCk7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252
X2luaXRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29u
dl9lbmRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKCgoKdHlwZWRlZiBpbnQgKCpfX2dj
b252X3RyYW5zX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLCB2b2lkICosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAq
LCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19jb250ZXh0X2ZjdCkgKHZvaWQg
KiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKik7
CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX3F1ZXJ5X2ZjdCkgKF9fY29uc3QgY2hhciAq
LCBfX2NvbnN0IGNoYXIgKioqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19pbml0X2ZjdCkgKHZv
aWQgKiosIGNvbnN0IGNoYXIgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfdHJhbnNfZW5kX2Zj
dCkgKHZvaWQgKik7CgpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhCnsKCiAgX19nY29udl90cmFu
c19mY3QgX190cmFuc19mY3Q7CiAgX19nY29udl90cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5zX2Nv
bnRleHRfZmN0OwogIF9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7CiAgdm9p
ZCAqX19kYXRhOwogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fbmV4dDsKfTsKCgoKc3Ry
dWN0IF9fZ2NvbnZfc3RlcAp7CiAgc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdCAqX19zaGxp
Yl9oYW5kbGU7CiAgX19jb25zdCBjaGFyICpfX21vZG5hbWU7CgogIGludCBfX2NvdW50ZXI7Cgog
IGNoYXIgKl9fZnJvbV9uYW1lOwogIGNoYXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19m
Y3Q7CiAgX19nY29udl9pbml0X2ZjdCBfX2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2Vu
ZF9mY3Q7CgoKCiAgaW50IF9fbWluX25lZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJv
bTsKICBpbnQgX19taW5fbmVlZGVkX3RvOwogIGludCBfX21heF9uZWVkZWRfdG87CgoKICBpbnQg
X19zdGF0ZWZ1bDsKCiAgdm9pZCAqX19kYXRhOwp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwX2Rh
dGEKewogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVm
ZW5kOwoKCgogIGludCBfX2ZsYWdzOwoKCgogIGludCBfX2ludm9jYXRpb25fY291bnRlcjsKCgoK
ICBpbnQgX19pbnRlcm5hbF91c2U7CgogIF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21ic3Rh
dGVfdCBfX3N0YXRlOwoKCgogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07
CgoKCnR5cGVkZWYgc3RydWN0IF9fZ2NvbnZfaW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0
cnVjdCBfX2djb252X3N0ZXAgKl9fc3RlcHM7CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29u
dl9zdGVwX2RhdGEgX19kYXRhIFtdOwp9ICpfX2djb252X3Q7CiMgNDUgIi91c3IvaW5jbHVkZS9f
R19jb25maWcuaCIgMiAzCnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBfX2djb252X2luZm8gX19j
ZDsKICBzdHJ1Y3QKICB7CiAgICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgICBzdHJ1Y3Qg
X19nY29udl9zdGVwX2RhdGEgX19kYXRhOwogIH0gX19jb21iaW5lZDsKfSBfR19pY29udl90OwoK
dHlwZWRlZiBpbnQgX0dfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykp
KTsKdHlwZWRlZiBpbnQgX0dfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lf
XykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9f
bW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0
cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwojIDMxICIvdXNyL2luY2x1ZGUvbGliaW8u
aCIgMiAzCiMgNTEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlw
ZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyA1MiAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDIgMwojIDE1OCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19q
dW1wX3Q7IHN0cnVjdCBfSU9fRklMRTsKIyAxNjggIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5
cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3Qg
X0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3Bv
czsKIyAxOTEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVz
dWx0CnsKICBfX2NvZGVjdnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vy
cm9yLAogIF9fY29kZWN2dF9ub2NvbnYKfTsKIyAyNTkgIi91c3IvaW5jbHVkZS9saWJpby5oIiAz
CnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciogX0lPX3JlYWRfcHRy
OwogIGNoYXIqIF9JT19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9J
T193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2Vu
ZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9J
T19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2Vu
ZDsKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9j
aGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZz
ZXQ7CgoKCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJs
ZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMg
MzAzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCiAg
dm9pZCAqX19wYWQxOwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVz
ZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCnR5cGVk
ZWYgc3RydWN0IF9JT19GSUxFIF9JT19GSUxFOwoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0
ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9J
T19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMg
X0lPXzJfMV9zdGRlcnJfOwojIDM0MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiBf
X3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwgY2hhciAqX19idWYsIHNpemVf
dCBfX25ieXRlcyk7CgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICh2b2lk
ICpfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IF9fbik7CgoKCgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4gKHZv
aWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9fcG9zLCBpbnQgX193KTsKCgp0eXBlZGVmIGludCBf
X2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tpZSk7CiMgMzk0ICIvdXNyL2luY2x1ZGUvbGliaW8u
aCIgMwpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX191
ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9fb3ZlcmZsb3cgKF9JT19GSUxFICosIGlu
dCkgOwpleHRlcm4gd2ludF90IF9fd3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gd2lu
dF90IF9fd3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193b3ZlcmZsb3cgKF9J
T19GSUxFICosIHdpbnRfdCkgOwojIDQyNCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJu
IGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50
IF9fYywgX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVvZiAoX0lPX0ZJTEUgKl9f
ZnApIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkgOwoKZXh0ZXJuIGlu
dCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklMRSAqX19mcCkgOwoKCgoKCmV4dGVybiB2b2lkIF9J
T19mbG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChf
SU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwoj
IDQ1NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lP
X0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QsIGludCAqX19yZXN0cmljdCkgOwpleHRlcm4gaW50
IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCkgOwpleHRlcm4gX19z
c2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCkgOwpleHRlcm4gc2l6
ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QpIDsKCmV4dGVybiBfX29m
ZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQpIDsKZXh0
ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIDsK
CmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSA7CiMgNzQgIi91
c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkaW8uaCIgMiAz
CiMgODggIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3Rk
aW8uaCIgMwp0eXBlZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7CiMgMTM3ICIvdXNyL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzCiMgMTM4ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgpleHRlcm4gRklMRSAqc3RkaW47
CmV4dGVybiBGSUxFICpzdGRvdXQ7CmV4dGVybiBGSUxFICpzdGRlcnI7CgoKCgoKCmV4dGVybiBp
bnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsKCmV4dGVybiBpbnQgcmVuYW1l
IChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSA7CgoKCgpleHRlcm4g
RklMRSAqdG1wZmlsZSAodm9pZCkgOwojIDE2OSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8zLjAvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIg
Kl9fcykgOwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpfX3MpIDsKIyAxODYgIi91
c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpf
X3BmeCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRl
cm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxF
ICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAoRklMRSAqX19zdHJl
YW0pIDsKIyAyMDkgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1
ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX21vZGVzKSA7CgpleHRlcm4gRklMRSAqZnJlb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0pIDsKIyAyMzkgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wL2lu
Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZmRvcGVuIChpbnQgX19mZCwgX19jb25zdCBj
aGFyICpfX21vZGVzKSA7CiMgMjYyICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCmV4dGVybiBpbnQgc2V0
dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwK
ICAgICAgICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgOwoKCgoKZXh0ZXJu
IHZvaWQgc2V0YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3Ry
aWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUpIDsKCgpleHRl
cm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmcHJp
bnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHByaW50ZiAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc3By
aW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgpleHRlcm4gaW50IHZmcHJpbnRmIChG
SUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKZXh0ZXJuIGludCB2
cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0
IF9fYXJnKQogICAgICAgICAgICA7CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAg
ICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKCgpleHRlcm4gaW50IHNucHJpbnRmIChj
aGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICAgICAgICAgIF9f
YXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGlu
dCB2c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251
Y192YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18g
KF9fcHJpbnRmX18sIDMsIDApKSk7CiMgMzMzICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc3NjYW5mIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKIyAzNTkgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZnZXRjIChGSUxFICpf
X3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGlu
dCBnZXRjaGFyICh2b2lkKSA7CgoKCgoKCgpleHRlcm4gaW50IGdldGNfdW5sb2NrZWQgKEZJTEUg
Kl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgOwoKCgoKZXh0
ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQg
ZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9f
YywgRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50IHB1dGNoYXIgKGludCBfX2MpIDsKCgoK
CgoKCmV4dGVybiBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7
CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7
CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykgOwoKCgoKCmV4dGVybiBpbnQg
Z2V0dyAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJTEUg
Kl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gY2hhciAqZmdldHMgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBpbnQgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgICAgICAgICA7CiMgNDI1
ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGlvLmgi
IDMKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgOwojIDQ0OSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnB1
dHMgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0pCiAgICAgICAgICAgIDsKIyA0NTkgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4wL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hhciAq
X19zKSA7CgoKCmV4dGVybiBpbnQgdW5nZXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoK
CgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19z
aXplLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtKSA7CgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0
IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwg
RklMRSAqX19yZXN0cmljdCBfX3MpIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tlZCAo
dm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwpleHRl
cm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRy
LCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9f
biwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmc2VlayAoRklM
RSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2UpIDsKCmV4dGVybiBsb25n
IGludCBmdGVsbCAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiB2b2lkIHJld2luZCAoRklMRSAq
X19zdHJlYW0pIDsKIyA1MDMgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
L2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9fcmVzdHJpY3Qg
X19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICAgICAgICAgOwoKZXh0ZXJu
IGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSA7CiMg
NTM5ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGlv
LmgiIDMKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50
IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZlcnJvciAoRklMRSAqX19zdHJl
YW0pIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7
CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBm
ZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gdm9pZCBwZXJyb3Ig
KF9fY29uc3QgY2hhciAqX19zKSA7CgoKCgpleHRlcm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19j
b25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CiMgNTcwICIvdXNyL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmaWxl
bm8gKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAoRklM
RSAqX19zdHJlYW0pIDsKCgoKCgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9f
Y29tbWFuZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoKZXh0ZXJuIGludCBwY2xvc2UgKEZJ
TEUgKl9fc3RyZWFtKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgOwoj
IDYxNyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRp
by5oIiAzCmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJu
IGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9j
a2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNjM4ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9z
dGRpby5oIiAxIDMKIyAzOSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwpleHRlcm4gX19p
bmxpbmUgaW50CnZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgX19nbnVj
X3ZhX2xpc3QgX19hcmcpCnsKICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJn
KTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVybiBfSU9f
Z2V0YyAoc3RkaW4pOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNfdW5sb2NrZWQgKEZJ
TEUgKl9fZnApCnsKICByZXR1cm4gKChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2ZwKS0+X0lP
X3JlYWRfZW5kID8gX191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5f
SU9fcmVhZF9wdHIrKyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXJfdW5sb2NrZWQg
KHZvaWQpCnsKICByZXR1cm4gKChzdGRpbiktPl9JT19yZWFkX3B0ciA+PSAoc3RkaW4pLT5fSU9f
cmVhZF9lbmQgPyBfX3VmbG93IChzdGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0ZGluKS0+
X0lPX3JlYWRfcHRyKyspOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXIgKGludCBf
X2MpCnsKICByZXR1cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0KTsKfQoKCgoKZXh0ZXJuIF9faW5s
aW5lIGludApmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1
cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9l
bmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5z
aWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoK
CgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0
cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFt
KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIp
IChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9
IChfX2MpKSk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBf
X2MpCnsKICByZXR1cm4gKCgoc3Rkb3V0KS0+X0lPX3dyaXRlX3B0ciA+PSAoc3Rkb3V0KS0+X0lP
X3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChzdGRvdXQsICh1bnNpZ25lZCBjaGFyKSAoX19jKSkg
OiAodW5zaWduZWQgY2hhcikgKCooc3Rkb3V0KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsK
fQojIDExNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwpleHRlcm4gX19pbmxpbmUgaW50
CmZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+
X2ZsYWdzICYgMHgxMCkgIT0gMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmZlcnJvcl91bmxv
Y2tlZCAoRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAw
eDIwKSAhPSAwKTsKfQojIDYzOSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjAvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyAyICJnY2NidWcuYyIgMgoKCgoKaW50IG1haW4odm9p
ZCkKewogIGludCBsaXN0RWxlbVs0XT17MzAsMiwxMCw1fTsKICBpbnQgbGlzdFNtYWxsWzJdOwog
IGludCBpLCBqOwogIGludCBwb3NHcmVhdGVzdD0tMSwgZ3JlYXRlc3Q9LTE7CgogIGZvciAoaT0w
OyBpPDI7IGkrKykgewogICAgbGlzdFNtYWxsW2ldID0gbGlzdEVsZW1baV07CiAgICBpZiAobGlz
dEVsZW1baV0gPiBncmVhdGVzdCkgewogICAgICBwb3NHcmVhdGVzdCA9IGk7CiAgICAgIGdyZWF0
ZXN0ID0gbGlzdEVsZW1baV07CiAgICB9CiAgfQoKICBmb3IgKGk9MjsgaTw0OyBpKyspIHsKICAg
IGlmIChsaXN0RWxlbVtpXSA8IGdyZWF0ZXN0KSB7CiAgICAgIGxpc3RTbWFsbFtwb3NHcmVhdGVz
dF0gPSBsaXN0RWxlbVtpXTsKICAgICAgcG9zR3JlYXRlc3QgPSAwOwogICAgICBncmVhdGVzdCA9
IGxpc3RTbWFsbFswXTsKICAgICAgZm9yIChqPTE7IGo8MjsgaisrKQogICAgICAgIGlmIChsaXN0
U21hbGxbal0gPiBncmVhdGVzdCkgewogICAgICAgICAgcG9zR3JlYXRlc3QgPSBqOwogICAgICAg
ICAgZ3JlYXRlc3QgPSBsaXN0U21hbGxbal07CiAgICAgICAgfQoKCgogICAgfQogIH0KCiAgZnBy
aW50ZiAoc3Rkb3V0LCAiQ29ycmVjdCBvdXRwdXQ6IDUgMlxuIik7CiAgZnByaW50ZiAoc3Rkb3V0
LCAiR0NDIG91dHB1dDogIik7CiAgZm9yIChpPTA7IGk8MjsgaSsrKSBmcHJpbnRmIChzdGRvdXQs
ICIgJS4xZCIsIGxpc3RTbWFsbFtpXSk7CiAgZnByaW50ZiAoc3Rkb3V0LCAiXG4iKTsKICByZXR1
cm4gKDEpOwp9Cg==


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]