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]
Other format: [Raw text]

target/7627: avr target: unrecognizable insn


>Number:         7627
>Category:       target
>Synopsis:       avr target: unrecognizable insn
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Aug 18 16:06:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Ryan Gammon
>Release:        3.3 20020818 (experimental) (and earlier)
>Organization:
>Environment:
avr-gcc (GCC) 3.3 20020818 (experimental)
GNU assembler 2.13.90 20020818
--or--
avr-gcc (GCC) 3.1
GNU assembler 2.12.1

i686 host
>Description:
avr-gcc -c -Os --save-temps ppp.c -DAVR -o ppp.o -I.. -I../../avr-libc/include -mmcu=atmega103
ppp.c: In function `PPPEntry':
ppp.c:594: error: unrecognizable insn:
(insn 90 89 91 21 (nil) (set (reg:QI 56)
        (const_int 180 [0xb4])) -1 (nil)
    (expr_list:REG_EQUAL (const_int 180 [0xb4])
        (nil)))
ppp.c:594: internal compiler error: Internal compiler error in extract_insn, at recog.c:2175

Note: optimizing for size.
This file comes from motorola's application note on ppp (AN2120).

configure options (gcc):
--prefix=/usr/local/avr-cvs --target=avr --program-prefix=avr- --disable-nls --enable-languages=c

configure options (binutils): 
--prefix=/usr/local/avr-cvs  --program-prefix=avr- --target=avr
>How-To-Repeat:
ppp.i is supplied. ppp.c and the relevant includes are available upon request. ppp.c:594 is the end of the PPPEntry function.

Thanks for working on avr-gcc!
>Fix:
Compiles if -Os (optimize for size) is not specified.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="ppp.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="ppp.i"

IyAxICJwcHAuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEgInBw
cC5jIgojIDE0ICJwcHAuYyIKIyAxICIuLi8uLi9hdnItbGliYy9pbmNsdWRlL3N0cmluZy5oIiAx
CiMgMjMgIi4uLy4uL2F2ci1saWJjL2luY2x1ZGUvc3RyaW5nLmgiCiMgMSAiL3Vzci9sb2NhbC9h
dnItY3ZzL2xpYi9nY2MtbGliL2F2ci8zLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAyMDMg
Ii91c3IvbG9jYWwvYXZyLWN2cy9saWIvZ2NjLWxpYi9hdnIvMy4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMgNAp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CiMgMjQgIi4uLy4uL2F2ci1saWJjL2lu
Y2x1ZGUvc3RyaW5nLmgiIDIKIyAzMyAiLi4vLi4vYXZyLWxpYmMvaW5jbHVkZS9zdHJpbmcuaCIK
ZXh0ZXJuIHZvaWQgKm1lbWNjcHkodm9pZCAqLCBjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsK
ZXh0ZXJuIHZvaWQgKm1lbWNocihjb25zdCB2b2lkICosIGludCwgc2l6ZV90KSBfX2F0dHJpYnV0
ZV9fKChfX3B1cmVfXykpOwpleHRlcm4gaW50IG1lbWNtcChjb25zdCB2b2lkICosIGNvbnN0IHZv
aWQgKiwgc2l6ZV90KSBfX2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpOwpleHRlcm4gdm9pZCAqbWVt
Y3B5KHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCAqbWVtbW92ZSh2
b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKm1lbXNldCh2b2lkICos
IGludCwgc2l6ZV90KTsKZXh0ZXJuIGNoYXIgKnN0cmNhdChjaGFyICosIGNvbnN0IGNoYXIgKik7
CmV4dGVybiBjaGFyICpzdHJjaHIoY29uc3QgY2hhciAqLCBpbnQpIF9fYXR0cmlidXRlX18oKF9f
cHVyZV9fKSk7CmV4dGVybiBpbnQgc3RyY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSBf
X2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpOwpleHRlcm4gY2hhciAqc3RyY3B5KGNoYXIgKiwgY29u
c3QgY2hhciAqKTsKZXh0ZXJuIGludCBzdHJjYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqKSBfX2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpOwpleHRlcm4gc2l6ZV90IHN0cmxlbihjb25z
dCBjaGFyICopIF9fYXR0cmlidXRlX18oKF9fcHVyZV9fKSk7CmV4dGVybiBjaGFyICpzdHJsd3Io
Y2hhciAqKTsKZXh0ZXJuIGNoYXIgKnN0cm5jYXQoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVf
dCk7CmV4dGVybiBpbnQgc3RybmNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90
KTsKZXh0ZXJuIGNoYXIgKnN0cm5jcHkoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4
dGVybiBpbnQgc3RybmNhc2VjbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCkg
X19hdHRyaWJ1dGVfXygoX19wdXJlX18pKTsKZXh0ZXJuIHNpemVfdCBzdHJubGVuKGNvbnN0IGNo
YXIgKiwgc2l6ZV90KSBfX2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpOwpleHRlcm4gY2hhciAqc3Ry
cmNocihjb25zdCBjaGFyICosIGludCkgX19hdHRyaWJ1dGVfXygoX19wdXJlX18pKTsKZXh0ZXJu
IGNoYXIgKnN0cnJldihjaGFyICopOwpleHRlcm4gY2hhciAqc3Ryc3RyKGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqKSBfX2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpOwpleHRlcm4gY2hhciAqc3Ry
dXByKGNoYXIgKik7CiMgMTUgInBwcC5jIiAyCiMgMSAiY29tbWRydi5oIiAxCiMgMTEgImNvbW1k
cnYuaCIKIyAxICJub3RhdGlvbi5oIiAxCiMgOSAibm90YXRpb24uaCIKdHlwZWRlZiB2b2lkICgq
RXZlbnRQcm9jKSh1bnNpZ25lZCBjaGFyIGMpOwojIDEyICJjb21tZHJ2LmgiIDIKCgoKCnR5cGVk
ZWYgZW51bSB7CiAgICBFTkFCTEVfUlggPSAweDA0LAogICAgRU5BQkxFX1RYID0gMHgwOCwKICAg
IEVOQUJMRV9SWF9FVkVOVFMgPSAweDIwLAogICAgRU5BQkxFX1RYX0VWRU5UUyA9IDB4ODAKfSBD
b21tT3B0aW9uczsKCgoKCgoKCnZvaWQgT3BlbkNvbW0gKHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIg
QmF1ZFJhdGUsIHJlZ2lzdGVyIENvbW1PcHRpb25zIE9wdGlvbnMpOwp2b2lkIENsb3NlQ29tbSAo
dm9pZCk7CnZvaWQgQ29tbUV2ZW50UHJvYyAoRXZlbnRQcm9jIFByb2MpOwp2b2lkIFdyaXRlQ29t
bSAodW5zaWduZWQgY2hhciBjKTsKdm9pZCBXcml0ZUNvbW1TdHIgKGNoYXIqIHN0cmluZyk7CnVu
c2lnbmVkIGNoYXIgUmVhZENvbW0gKHZvaWQpOwp2b2lkIFVzZURlZmF1bHRDb21tUHJvYyAodm9p
ZCk7CiMgMTYgInBwcC5jIiAyCiMgMSAicHBwLmgiIDEKIyAxMyAicHBwLmgiCiMgMSAiLi4vdWlw
L3VpcC5oIiAxCiMgNDEgIi4uL3VpcC91aXAuaCIKIyAxICIuLi91aXAvdWlwb3B0LmgiIDEKIyA0
MSAiLi4vdWlwL3VpcG9wdC5oIgojIDEgIi4uL21vdC1wcHAvaXAuaCIgMQojIDExICIuLi9tb3Qt
cHBwL2lwLmgiCiMgMSAiLi4vbW90LXBwcC9ub3RhdGlvbi5oIiAxCiMgMTIgIi4uL21vdC1wcHAv
aXAuaCIgMgp0eXBlZGVmIHN0cnVjdCB7CiAgICB1bnNpZ25lZCBjaGFyIFZlcnNpb25fSExlbjsK
ICAgIHVuc2lnbmVkIGNoYXIgU2VydmljZTsKICAgIHVuc2lnbmVkIGNoYXIgTGVuZ3RoVXBwZXI7
CiAgICB1bnNpZ25lZCBjaGFyIExlbmd0aDsKICAgIHVuc2lnbmVkIHNob3J0IElEOwogICAgdW5z
aWduZWQgc2hvcnQgRnJhZzsKICAgIHVuc2lnbmVkIGNoYXIgVFRMOwogICAgdW5zaWduZWQgY2hh
ciBQcm90b2NvbDsKICAgIHVuc2lnbmVkIHNob3J0IENoZWNrc3VtOwogICAgdW5zaWduZWQgY2hh
ciBTb3VyY2VBZGRyZXNzIFs0XTsKICAgIHVuc2lnbmVkIGNoYXIgRGVzdEFkZHJlc3MgWzRdOwog
ICAgdW5zaWduZWQgY2hhciBQYXlsb2FkIFs2NF07Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSkg
SVBEYXRhZ3JhbTsKZXh0ZXJuIElQRGF0YWdyYW0gKmlwX2luOwpleHRlcm4gSVBEYXRhZ3JhbSAq
aXBfb3V0Owp0eXBlZGVmIGVudW0geyBSQVdfU0VSSUFMID0gMSwgU0xJUCwgUFBQLCBQQVJBTExF
TCwgRVRIRVJORVQgfSBJTlRFUkZBQ0U7CgoKCmV4dGVybiB1bnNpZ25lZCBjaGFyIElQQWRkcmVz
c1s0XTsKCgoKCnVuc2lnbmVkIGNoYXIgSVBDb21wYXJlICh1bnNpZ25lZCBjaGFyICpJUE9uZSk7
CnVuc2lnbmVkIGxvbmcgSVBDaGVja1N1bSAodW5zaWduZWQgY2hhciAqRGF0YSwgdW5zaWduZWQg
c2hvcnQgU2l6ZSk7CnZvaWQgSVBCaW5kQWRhcHRlciAoSU5URVJGQUNFIEludGVyZmFjZSk7CnZv
aWQgSVBJbml0ICh2b2lkKTsKCgp2b2lkIElQTmV0U2VuZCAoICk7CiMgNDIgIi4uL3VpcC91aXBv
cHQuaCIgMgojIDQyICIuLi91aXAvdWlwLmgiIDIKIyAxICIuLi9tYWluL21haW4uaCIgMQoKCgp0
eXBlZGVmIHVuc2lnbmVkIGNoYXIgdThfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1MTZfdDsK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMl90Owp0eXBlZGVmIHNpZ25lZCBjaGFyIHM4X3Q7CnR5
cGVkZWYgc2lnbmVkIHNob3J0IHMxNl90Owp0eXBlZGVmIHNpZ25lZCBsb25nIHMzMl90OwoKdm9p
ZCBydW5fdGFza3Modm9pZCk7CiMgNDMgIi4uL3VpcC91aXAuaCIgMgojIDUzICIuLi91aXAvdWlw
LmgiCnZvaWQgdWlwX2luaXQodm9pZCk7CiMgNzkgIi4uL3VpcC91aXAuaCIKdm9pZCB1aXBfbGlz
dGVuKHUxNl90IHBvcnQpOwojIDg5ICIuLi91aXAvdWlwLmgiCnN0cnVjdCB1aXBfY29ubiAqdWlw
X2Nvbm5lY3QodTE2X3QgKnJpcGFkZHIsIHUxNl90IHBvcnQpOwojIDI3MyAiLi4vdWlwL3VpcC5o
IgpleHRlcm4gdThfdCB1aXBfYnVmWzE4MF07CiMgMjgyICIuLi91aXAvdWlwLmgiCmV4dGVybiB2
b2xhdGlsZSB1OF90ICp1aXBfYXBwZGF0YTsKIyAyOTYgIi4uL3VpcC91aXAuaCIKZXh0ZXJuIHZv
bGF0aWxlIHU4X3QgdWlwX2xlbjsKIyAzMDYgIi4uL3VpcC91aXAuaCIKZXh0ZXJuIHN0cnVjdCB1
aXBfY29ubiAqdWlwX2Nvbm47CmV4dGVybiBzdHJ1Y3QgdWlwX2Nvbm4gdWlwX2Nvbm5zWzEwXTsK
IyAzMTggIi4uL3VpcC91aXAuaCIKc3RydWN0IHVpcF9jb25uIHsKICB1OF90IHRjcHN0YXRlZmxh
Z3M7CiAgdTE2X3QgbHBvcnQsIHJwb3J0OwogIHUxNl90IHJpcGFkZHJbMl07CiAgdThfdCByY3Zf
bnh0WzRdOwoKICB1OF90IHNuZF9ueHRbNF07CgogIHU4X3QgYWNrX254dFs0XTsKCgoKCiAgdThf
dCBtc3M7CgogIHU4X3QgdGltZXI7CiAgdThfdCBucnR4OwoKCiAgdThfdCBhcHBzdGF0ZVswXTsK
fTsKCgoKCgpzdHJ1Y3QgdWlwX3N0YXRzIHsKICBzdHJ1Y3QgewogICAgdTE2X3QgZHJvcDsKICAg
IHUxNl90IHJlY3Y7CiAgICB1MTZfdCBzZW50OwogICAgdTE2X3QgdmhsZXJyOwoKICAgIHUxNl90
IGhibGVuZXJyOwoKICAgIHUxNl90IGxibGVuZXJyOwoKICAgIHUxNl90IGZyYWdlcnI7CgogICAg
dTE2X3QgY2hrZXJyOwogICAgdTE2X3QgcHJvdG9lcnI7CgogIH0gaXA7CiAgc3RydWN0IHsKICAg
IHUxNl90IGRyb3A7CiAgICB1MTZfdCByZWN2OwogICAgdTE2X3Qgc2VudDsKICAgIHUxNl90IHR5
cGVlcnI7CiAgfSBpY21wOwogIHN0cnVjdCB7CiAgICB1MTZfdCBkcm9wOwogICAgdTE2X3QgcmVj
djsKICAgIHUxNl90IHNlbnQ7CiAgICB1MTZfdCBjaGtlcnI7CiAgICB1MTZfdCBhY2tlcnI7CiAg
ICB1MTZfdCByc3Q7CiAgICB1MTZfdCByZXhtaXQ7CiAgICB1MTZfdCBzeW5kcm9wOwoKICAgIHUx
Nl90IHN5bnJzdDsKCiAgfSB0Y3A7Cn07CgpleHRlcm4gc3RydWN0IHVpcF9zdGF0cyB1aXBfc3Rh
dDsKIyAzOTYgIi4uL3VpcC91aXAuaCIKZXh0ZXJuIHZvbGF0aWxlIHU4X3QgdWlwX2ZsYWdzOwoj
IDQzOSAiLi4vdWlwL3VpcC5oIgp2b2lkIHVpcF9wcm9jZXNzKHU4X3QgZmxhZyk7CiMgNDcwICIu
Li91aXAvdWlwLmgiCnR5cGVkZWYgc3RydWN0IHsKCiAgdThfdCB2aGwsCiAgICB0b3MsCiAgICBs
ZW5bMl0sCiAgICBpcGlkWzJdLAogICAgaXBvZmZzZXRbMl0sCiAgICB0dGwsCiAgICBwcm90bzsK
ICB1MTZfdCBpcGNoa3N1bTsKICB1MTZfdCBzcmNpcGFkZHJbMl0sCiAgICBkZXN0aXBhZGRyWzJd
OwoKICB1MTZfdCBzcmNwb3J0LAogICAgZGVzdHBvcnQ7CiAgdThfdCBzZXFub1s0XSwKICAgIGFj
a25vWzRdLAogICAgdGNwb2Zmc2V0LAogICAgZmxhZ3MsCiAgICB3bmRbMl07CiAgdTE2X3QgdGNw
Y2hrc3VtLAogICAgdXJncDsKICB1OF90IG9wdGRhdGFbNF07Cn0gX19hdHRyaWJ1dGVfXygocGFj
a2VkKSkgdWlwX3RjcGlwX2hkcjsKIyAxNCAicHBwLmgiIDIKIyAzNCAicHBwLmgiCnR5cGVkZWYg
c3RydWN0IHsKICAgIHVuc2lnbmVkIHNob3J0IEZyYW1pbmc7CiAgICB1bnNpZ25lZCBzaG9ydCBQ
cm90b2NvbDsKICAgIHVuc2lnbmVkIGNoYXIgUmVxdWVzdDsKICAgIHVuc2lnbmVkIGNoYXIgSWQ7
CiAgICB1bnNpZ25lZCBjaGFyIExlbmd0aEhpZ2g7CiAgICB1bnNpZ25lZCBjaGFyIExlbmd0aDsK
ICAgIHVuc2lnbmVkIGNoYXIgRmlyc3RPcHRpb247CiAgICB1bnNpZ25lZCBjaGFyIEZpcnN0T3B0
aW9uTGVuZ3RoOwogICAgdW5zaWduZWQgY2hhciBQYXJhbTsKICAgIHVuc2lnbmVkIGNoYXIgRGF0
YTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSBQUFBGcmFtZTsKCgoKCgoKdm9pZCBQUFBJbml0
ICh2b2lkKTsKdW5zaWduZWQgY2hhciAqUFBQR2V0SW5wdXRCdWZmZXIgKHZvaWQpOwp1bnNpZ25l
ZCBjaGFyICpQUFBHZXRPdXRwdXRCdWZmZXIgKHZvaWQpOwp2b2lkIFByb2NQUFBSZWNlaXZlIChy
ZWdpc3RlciB1bnNpZ25lZCBjaGFyIGMpOwp2b2lkIFByb2NQUFBTZW5kICh1bnNpZ25lZCBjaGFy
ICpCdWZmZXIsIHVuc2lnbmVkIGNoYXIgbGVuKTsKdW5zaWduZWQgc2hvcnQgUFBQR2V0Q2hlY2tz
dW0gKHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKmNwLCByZWdpc3RlciBpbnQgbGVuKTsKdm9pZCBT
ZW5kUEFQUGFja2V0ICh1bnNpZ25lZCBjaGFyIEFjdGlvbiwgdW5zaWduZWQgY2hhciBJRCwgY29u
c3QgY2hhciogdXNlciwgY29uc3QgY2hhciogcGFzc3dvcmQpOwp2b2lkIFBQUEVudHJ5ICh2b2lk
KTsKdm9pZCBQUFBUZXJtaW5hdGUgKHZvaWQpOwp2b2lkIFBQUFNlbmRWb2lkTENQICh2b2lkKTsK
CmV4dGVybiB2b2xhdGlsZSB1bnNpZ25lZCBjaGFyIFBQUFN0YXR1czsKZXh0ZXJuIHVuc2lnbmVk
IGNoYXIgKkluQnVmZmVyOwpleHRlcm4gdW5zaWduZWQgY2hhciBPdXRCdWZmZXJbKDE4MCArIDUp
ICsgMV07CiMgMTcgInBwcC5jIiAyCiMgMSAiaXAuaCIgMQojIDE4ICJwcHAuYyIgMgojIDEgInVk
cC5oIiAxCiMgMTIgInVkcC5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICB1bnNpZ25lZCBjaGFyIFNv
dXJjZUlQIFs0XTsKICAgIHVuc2lnbmVkIGNoYXIgRGVzdGluYXRpb25JUCBbNF07CiAgICB1bnNp
Z25lZCBzaG9ydCBTb3VyY2VQb3J0OwogICAgdW5zaWduZWQgc2hvcnQgRGVzdFBvcnQ7CiAgICB1
bnNpZ25lZCBjaGFyIExlbmd0aFVwcGVyOwogICAgdW5zaWduZWQgY2hhciBMZW5ndGg7CiAgICB1
bnNpZ25lZCBzaG9ydCBDaGVja3N1bTsKICAgIHVuc2lnbmVkIGNoYXIgUGF5bG9hZFs1NF07Cn0g
X19hdHRyaWJ1dGVfXygocGFja2VkKSkgVURQRGF0YWdyYW07CmV4dGVybiBVRFBEYXRhZ3JhbSAq
dWRwX291dDsKdHlwZWRlZiB2b2lkICgqIFVEUENBTExCQUNLKSh1bnNpZ25lZCBjaGFyICpkYXRh
LCB1bnNpZ25lZCBjaGFyIHNpemUsIHVuc2lnbmVkIGxvbmcgUmVtb3RlSVAsIHVuc2lnbmVkIHNo
b3J0IFBvcnQpOwp2b2lkIFVEUFNldENBTExCQUNLIChVRFBDQUxMQkFDSyBQcm9jKTsKdm9pZCBV
RFBfSGFuZGxlciAoVURQRGF0YWdyYW0gKnVkcCk7CnVuc2lnbmVkIHNob3J0IFVEUF9DaGVja3N1
bSAodW5zaWduZWQgY2hhciogdWRwKTsKdm9pZCBVRFBCaW5kICh1bnNpZ25lZCBzaG9ydCBQb3J0
KTsKdm9pZCBVRFBTZW5kRGF0YSAodW5zaWduZWQgY2hhciBJcFtdLCB1bnNpZ25lZCBzaG9ydCBQ
b3J0LCB1bnNpZ25lZCBjaGFyKiBQYXlsb2FkLCB1bnNpZ25lZCBjaGFyIHNpemUpOwojIDE5ICJw
cHAuYyIgMgojIDEgImljbXAuaCIgMQojIDEzICJpY21wLmgiCnR5cGVkZWYgc3RydWN0IHsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIFR5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBDb2RlOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IENoZWNrc3VtOwogICAgICAgIHVuc2lnbmVkIHNob3J0IElkZW50
aWZpZXI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgU2VxTnVtYmVyOwp9IF9fYXR0cmlidXRlKChw
YWNrZWQpKSBJQ01QRGF0YWdyYW07CgoKCnZvaWQgSWNtcEhhbmRsZXIgKElQRGF0YWdyYW0gKmlw
KTsKdm9pZCBJY21wUGluZyAodW5zaWduZWQgY2hhciBJcFtdKTsKIyAyMCAicHBwLmMiIDIKCiMg
MSAiY29tbW9uLmgiIDEKCgoKCgoKdm9pZCBNb3ZlIChjb25zdCB1bnNpZ25lZCBjaGFyICpzcmMs
IHVuc2lnbmVkIGNoYXIgKmRlc3QsIGludCBudW1CWVRFcyk7CiMgMjIgInBwcC5jIiAyCgojIDEg
Im1haW4uaCIgMQoKCgoKCnZvaWQgTW90UFBQSW5pdCh2b2lkKTsKdm9pZCBMaW5rVGFzayAodm9p
ZCk7CnZvaWQgZG9fdWlwX3BlcmlvZGljKHU4X3QgZm9yY2UpOwp2b2lkIHBwcF9zZW5kKHZvaWQp
OwojIDI0ICJwcHAuYyIgMgojIDEgIi4uL21haW4vcHJpbnRmLmgiIDEKCgoKaW50IGNjX3ByaW50
Zihjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CmludCBjY19zcHJpbnRmKGNoYXIgKm91dCwgY29u
c3QgY2hhciAqZm9ybWF0LCAuLi4pOwojIDI1ICJwcHAuYyIgMgojIDEgIi4uL21haW4vZGJnX2Fz
c2VydC5oIiAxCgoKCnZvaWQgZGJnX2Fzc2VydChpbnQgY29uZGl0aW9uKTsKIyAyNiAicHBwLmMi
IDIKCmNvbnN0IGNoYXIgKiBVc2VyID0gIk15TmFtZSI7CmNvbnN0IGNoYXIgKiBQYXNzd29yZCA9
ICJNeVBhc3N3b3JkIjsKCnN0YXRpYyB2b2lkIEhhbmRsZUxDUE9wdGlvbnMgKHZvaWQpOwpzdGF0
aWMgdm9pZCBIYW5kbGVJUENQT3B0aW9ucyAodm9pZCk7CnN0YXRpYyB1bnNpZ25lZCBzaG9ydCBQ
UFBmY3MxNiAodW5zaWduZWQgc2hvcnQgZmNzLCB1bnNpZ25lZCBjaGFyICpjcCwgaW50IGxlbik7
CnN0YXRpYyB2b2lkIFJlamVjdFByb3RvY29sICh1bnNpZ25lZCBjaGFyICpJbkJ1ZmZlcik7Cgpz
dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBQUFBEYXRhIFtdID0gewogICAgMHhmZiwweDAzLDB4
YzAsMHgyMSwweDAyLDB4MDEsMHgwMCwweDA0LDB4MDAsMHgwMAp9OwpzdGF0aWMgY29uc3QgdW5z
aWduZWQgY2hhciBMQ1BUZXJtaW5hdGVbXSA9IHsKICAgIDB4ZmYsMHgwMywweGMwLDB4MjEsMHgw
NSwweDA0LDB4MDAsMHgwNCwweDgwLDB4ZmUKfTsKc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0
IGZjc3RhYlsyNTZdID0gewogICAgMHgwMDAwLCAweDExODksIDB4MjMxMiwgMHgzMjliLCAweDQ2
MjQsIDB4NTdhZCwgMHg2NTM2LCAweDc0YmYsCiAgICAweDhjNDgsIDB4OWRjMSwgMHhhZjVhLCAw
eGJlZDMsIDB4Y2E2YywgMHhkYmU1LCAweGU5N2UsIDB4ZjhmNywKICAgIDB4MTA4MSwgMHgwMTA4
LCAweDMzOTMsIDB4MjIxYSwgMHg1NmE1LCAweDQ3MmMsIDB4NzViNywgMHg2NDNlLAogICAgMHg5
Y2M5LCAweDhkNDAsIDB4YmZkYiwgMHhhZTUyLCAweGRhZWQsIDB4Y2I2NCwgMHhmOWZmLCAweGU4
NzYsCiAgICAweDIxMDIsIDB4MzA4YiwgMHgwMjEwLCAweDEzOTksIDB4NjcyNiwgMHg3NmFmLCAw
eDQ0MzQsIDB4NTViZCwKICAgIDB4YWQ0YSwgMHhiY2MzLCAweDhlNTgsIDB4OWZkMSwgMHhlYjZl
LCAweGZhZTcsIDB4Yzg3YywgMHhkOWY1LAogICAgMHgzMTgzLCAweDIwMGEsIDB4MTI5MSwgMHgw
MzE4LCAweDc3YTcsIDB4NjYyZSwgMHg1NGI1LCAweDQ1M2MsCiAgICAweGJkY2IsIDB4YWM0Miwg
MHg5ZWQ5LCAweDhmNTAsIDB4ZmJlZiwgMHhlYTY2LCAweGQ4ZmQsIDB4Yzk3NCwKICAgIDB4NDIw
NCwgMHg1MzhkLCAweDYxMTYsIDB4NzA5ZiwgMHgwNDIwLCAweDE1YTksIDB4MjczMiwgMHgzNmJi
LAogICAgMHhjZTRjLCAweGRmYzUsIDB4ZWQ1ZSwgMHhmY2Q3LCAweDg4NjgsIDB4OTllMSwgMHhh
YjdhLCAweGJhZjMsCiAgICAweDUyODUsIDB4NDMwYywgMHg3MTk3LCAweDYwMWUsIDB4MTRhMSwg
MHgwNTI4LCAweDM3YjMsIDB4MjYzYSwKICAgIDB4ZGVjZCwgMHhjZjQ0LCAweGZkZGYsIDB4ZWM1
NiwgMHg5OGU5LCAweDg5NjAsIDB4YmJmYiwgMHhhYTcyLAogICAgMHg2MzA2LCAweDcyOGYsIDB4
NDAxNCwgMHg1MTlkLCAweDI1MjIsIDB4MzRhYiwgMHgwNjMwLCAweDE3YjksCiAgICAweGVmNGUs
IDB4ZmVjNywgMHhjYzVjLCAweGRkZDUsIDB4YTk2YSwgMHhiOGUzLCAweDhhNzgsIDB4OWJmMSwK
ICAgIDB4NzM4NywgMHg2MjBlLCAweDUwOTUsIDB4NDExYywgMHgzNWEzLCAweDI0MmEsIDB4MTZi
MSwgMHgwNzM4LAogICAgMHhmZmNmLCAweGVlNDYsIDB4ZGNkZCwgMHhjZDU0LCAweGI5ZWIsIDB4
YTg2MiwgMHg5YWY5LCAweDhiNzAsCiAgICAweDg0MDgsIDB4OTU4MSwgMHhhNzFhLCAweGI2OTMs
IDB4YzIyYywgMHhkM2E1LCAweGUxM2UsIDB4ZjBiNywKICAgIDB4MDg0MCwgMHgxOWM5LCAweDJi
NTIsIDB4M2FkYiwgMHg0ZTY0LCAweDVmZWQsIDB4NmQ3NiwgMHg3Y2ZmLAogICAgMHg5NDg5LCAw
eDg1MDAsIDB4Yjc5YiwgMHhhNjEyLCAweGQyYWQsIDB4YzMyNCwgMHhmMWJmLCAweGUwMzYsCiAg
ICAweDE4YzEsIDB4MDk0OCwgMHgzYmQzLCAweDJhNWEsIDB4NWVlNSwgMHg0ZjZjLCAweDdkZjcs
IDB4NmM3ZSwKICAgIDB4YTUwYSwgMHhiNDgzLCAweDg2MTgsIDB4OTc5MSwgMHhlMzJlLCAweGYy
YTcsIDB4YzAzYywgMHhkMWI1LAogICAgMHgyOTQyLCAweDM4Y2IsIDB4MGE1MCwgMHgxYmQ5LCAw
eDZmNjYsIDB4N2VlZiwgMHg0Yzc0LCAweDVkZmQsCiAgICAweGI1OGIsIDB4YTQwMiwgMHg5Njk5
LCAweDg3MTAsIDB4ZjNhZiwgMHhlMjI2LCAweGQwYmQsIDB4YzEzNCwKICAgIDB4MzljMywgMHgy
ODRhLCAweDFhZDEsIDB4MGI1OCwgMHg3ZmU3LCAweDZlNmUsIDB4NWNmNSwgMHg0ZDdjLAogICAg
MHhjNjBjLCAweGQ3ODUsIDB4ZTUxZSwgMHhmNDk3LCAweDgwMjgsIDB4OTFhMSwgMHhhMzNhLCAw
eGIyYjMsCiAgICAweDRhNDQsIDB4NWJjZCwgMHg2OTU2LCAweDc4ZGYsIDB4MGM2MCwgMHgxZGU5
LCAweDJmNzIsIDB4M2VmYiwKICAgIDB4ZDY4ZCwgMHhjNzA0LCAweGY1OWYsIDB4ZTQxNiwgMHg5
MGE5LCAweDgxMjAsIDB4YjNiYiwgMHhhMjMyLAogICAgMHg1YWM1LCAweDRiNGMsIDB4NzlkNywg
MHg2ODVlLCAweDFjZTEsIDB4MGQ2OCwgMHgzZmYzLCAweDJlN2EsCiAgICAweGU3MGUsIDB4ZjY4
NywgMHhjNDFjLCAweGQ1OTUsIDB4YTEyYSwgMHhiMGEzLCAweDgyMzgsIDB4OTNiMSwKICAgIDB4
NmI0NiwgMHg3YWNmLCAweDQ4NTQsIDB4NTlkZCwgMHgyZDYyLCAweDNjZWIsIDB4MGU3MCwgMHgx
ZmY5LAogICAgMHhmNzhmLCAweGU2MDYsIDB4ZDQ5ZCwgMHhjNTE0LCAweGIxYWIsIDB4YTAyMiwg
MHg5MmI5LCAweDgzMzAsCiAgICAweDdiYzcsIDB4NmE0ZSwgMHg1OGQ1LCAweDQ5NWMsIDB4M2Rl
MywgMHgyYzZhLCAweDFlZjEsIDB4MGY3OAp9OwoKdm9sYXRpbGUgdW5zaWduZWQgY2hhciBQUFBT
dGF0dXMgPSAwOwoKCgp1bnNpZ25lZCBjaGFyICpJbkJ1ZmZlcjsKdW5zaWduZWQgY2hhciBPdXRC
dWZmZXJbKDE4MCArIDUpICsgMV07CgoKCgoKCgp2b2lkIFBQUEluaXQgKHZvaWQpIHsKICAgIFBQ
UFN0YXR1cyB8PSAweDA0Owp9CgoKCgoKCnVuc2lnbmVkIGNoYXIgKlBQUEdldElucHV0QnVmZmVy
ICh2b2lkKSB7CiAgICByZXR1cm4gJkluQnVmZmVyWzBdOwp9CgoKCgoKCnVuc2lnbmVkIGNoYXIg
KlBQUEdldE91dHB1dEJ1ZmZlciAodm9pZCkgewogICAgcmV0dXJuICZPdXRCdWZmZXJbMF07Cn0K
IyAxMTggInBwcC5jIgpzdGF0aWMgdW5zaWduZWQgc2hvcnQgUFBQZmNzMTYgKHVuc2lnbmVkIHNo
b3J0IGZjcywgdW5zaWduZWQgY2hhciAqY3AsIGludCBsZW4pIHsKICAgICAgICB3aGlsZSAobGVu
LS0pCiAgICAgICAgICAgIGZjcyA9IChmY3MgPj4gOCkgXiBmY3N0YWJbKGZjcyBeICpjcCsrKSAm
IDB4ZmZdOwogICAgICAgIHJldHVybiAoZmNzKTsKfQoKCgoKCgoKdW5zaWduZWQgc2hvcnQgUFBQ
R2V0Q2hlY2tzdW0gKHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKmNwLCByZWdpc3RlciBpbnQgbGVu
KSB7CiAgICByZXR1cm4gflBQUGZjczE2KCAweGZmZmYsIGNwLCBsZW4gKTsKfQojIDE0MSAicHBw
LmMiCnZvaWQgUHJvY1BQUFJlY2VpdmUgKHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgYykgewogICAg
c3RhdGljIHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgRnJhbWVTaXplID0gMDsKICAgIHN0YXRpYyB1
bnNpZ25lZCBjaGFyIEJ1ZmZlclsyXVsoMTgwICsgNSkgKyAxXTsKICAgIHN0YXRpYyB1bnNpZ25l
ZCBjaGFyIFdvcmtpbmdCdWZmZXIgPSAwOwoKICAgIHVuc2lnbmVkIGNoYXIgKlBQUF9QYWNrZXQg
PSBCdWZmZXJbV29ya2luZ0J1ZmZlcj8gMTogMF07CgogICAgUFBQU3RhdHVzIHw9IDB4MTA7Cgog
ICAgaWYgKFBQUFN0YXR1cyAmIDB4MDQpIHsKICAgICAgICBpZiAoYyAhPSAweDdFKSB7CiAgICAg
ICAgICAgIGNjX3ByaW50ZigicmVzeW5jXG4iKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
IH0KICAgICAgICBQUFBTdGF0dXMgJj0gfjB4MDQ7CiAgICAgICAgRnJhbWVTaXplID0gMDsKICAg
IH0KICAgIGlmIChQUFBTdGF0dXMgJiAweDAxKSB7CiAgICAgICAgUFBQX1BhY2tldCBbRnJhbWVT
aXplKytdID0gMHgyMCBeIGM7CiAgICAgICAgUFBQU3RhdHVzICY9IH4weDAxOwogICAgfQogICAg
ZWxzZSB7CiAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgICAgIGNhc2UgMHg3RDoKICAgICAg
ICAgICAgUFBQU3RhdHVzIHw9IDB4MDE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBj
YXNlIDB4N0U6CgoKICAgICAgICAgICAgaWYgKEZyYW1lU2l6ZSA+IDApIHsKICAgICAgICAgICAg
ICAgIFBQUF9QYWNrZXQgW0ZyYW1lU2l6ZV0gPSAwOwoKICAgICAgICAgICAgICAgIGlmIChQUFBT
dGF0dXMgJiAweDA4KSB7CiAgICAgICAgICAgICAgICAgICAgY2NfcHJpbnRmKCJEcm9wcGluZyBm
cmFtZSEhIVxuIik7CiAgICAgICAgICAgICAgICAgICAgUFBQU3RhdHVzIHw9IDB4MDQ7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBQ
UFBTdGF0dXMgfD0gMHgwODsKICAgICAgICAgICAgICAgICAgICBXb3JraW5nQnVmZmVyID0gV29y
a2luZ0J1ZmZlcj8gMDogMTsKICAgICAgICAgICAgICAgICAgICBGcmFtZVNpemUgPSAwOwogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICBQUFBfUGFja2V0IFtGcmFtZVNpemUrK10gPSBjOwoKICAg
ICAgICAgICAgaWYgKEZyYW1lU2l6ZSA+ICgoMTgwICsgNSkgLSA2KSkgewogICAgICAgICAgICAg
ICAgRnJhbWVTaXplID0gMDsKICAgICAgICAgICAgICAgIFBQUFN0YXR1cyB8PSAweDA0OwogICAg
ICAgICAgICAgICAgY2NfcHJpbnRmKCJQYWNrZXQgYmlnZ2VyIHRoYW4gYnVmZmVyIVxuIik7CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIEluQnVm
ZmVyID0gQnVmZmVyW1dvcmtpbmdCdWZmZXI/IDA6IDFdOwp9CgoKCgoKCgp2b2lkIFByb2NQUFBT
ZW5kICh1bnNpZ25lZCBjaGFyICpCdWZmZXIsIHVuc2lnbmVkIGNoYXIgbGVuKSB7CiAgICB1bnNp
Z25lZCBzaG9ydCBDaGVja3N1bSA9IDA7CiAgICBDaGVja3N1bSA9IFBQUEdldENoZWNrc3VtIChC
dWZmZXIsIEJ1ZmZlcls3XSArIDQpOwogICAgQnVmZmVyIFtCdWZmZXJbN10rNF0gPSBDaGVja3N1
bSAmIDB4RkY7CiAgICBCdWZmZXIgW0J1ZmZlcls3XSs1XSA9IChDaGVja3N1bSA+PiA4KSAmIDB4
RkY7CiAgICBXcml0ZUNvbW0gKDB4N0UpOwogICAgd2hpbGUgKGxlbi0tKSB7CiAgICAgICAgaWYg
KChzaWduZWQgY2hhcikqQnVmZmVyIDwgKHNpZ25lZCBjaGFyKTB4MjApIHsKICAgICAgICAgICAg
V3JpdGVDb21tICgweDdEKTsKICAgICAgICAgICAgV3JpdGVDb21tICgqQnVmZmVyIF4gMHgyMCk7
CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc3dpdGNoICgqQnVmZmVyKSB7CiAgICAgICAg
ICAgIGNhc2UgMHg3RToKICAgICAgICAgICAgICAgIFdyaXRlQ29tbSAoMHg3RCk7CiAgICAgICAg
ICAgICAgICBXcml0ZUNvbW0gKDB4NUUpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgIGNhc2UgMHg3RDoKICAgICAgICAgICAgICAgIFdyaXRlQ29tbSAoMHg3RCk7CiAgICAgICAg
ICAgICAgICBXcml0ZUNvbW0gKDB4NUQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBXcml0ZUNvbW0gKCpCdWZmZXIpOwogICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgQnVmZmVyKys7
CiAgICB9CiAgICBXcml0ZUNvbW0gKDB4N0UpOwp9CgoKCgoKCnN0YXRpYyB2b2lkIEhhbmRsZUxD
UE9wdGlvbnMgKHZvaWQpIHsKICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBPdXRCdWZmZXI7CiAg
ICB1bnNpZ25lZCBjaGFyICpwdHIgPSAodW5zaWduZWQgY2hhciAqKSZJbkJ1ZmZlcls4XTsKCiAg
ICBzdGF0aWMgY2hhciBVc2VQQVAgPSAwOwoKICAgIHN3aXRjaCAoSW5CdWZmZXIgWzRdICkKICAg
IHsKICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgIE1vdmUgKEluQnVmZmVyLCBPdXRCdWZmZXIs
IEluQnVmZmVyWzddKzYpOwogICAgICAgICAgICBPdXRCdWZmZXIgWzRdID0gNjsKICAgICAgICAg
ICAgUHJvY1BQUFNlbmQgKCh1bnNpZ25lZCBjaGFyICopT3V0QnVmZmVyLCBPdXRCdWZmZXJbN10g
KyA2KTsKICAgICAgICAgICAgUFBQU3RhdHVzICY9IH4weDIwOwogICAgICAgICAgICBicmVhazsK
ICAgICAgICBjYXNlIDE6CgoKCiAgICAgICAgICAgIGlmICgoSW5CdWZmZXIgWzhdID09IDB4MDIp
ICYmIChJbkJ1ZmZlciBbN10gPD0gMHgwQSkpCiAgICAgICAgewogICAgICAgICAgICBpZiAoKElu
QnVmZmVyIFsxMF0gPT0gMHhGRikgJiYKICAgICAgICAgICAgICAgIChJbkJ1ZmZlciBbMTFdID09
IDB4RkYpICYmCiAgICAgICAgICAgICAgICAoSW5CdWZmZXIgWzEyXSA9PSAweEZGKSAmJgogICAg
ICAgICAgICAgICAgKEluQnVmZmVyIFsxM10gPT0gMHhGRikpCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgIEluQnVmZmVyIFs0XSA9IDI7CiAgICAgICAgICAgICAgICBQcm9jUFBQU2VuZCAo
SW5CdWZmZXIsIEluQnVmZmVyIFs3XSArIDYpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICBlbHNlIGlmICgoSW5CdWZmZXIgWzhdICE9
IDB4MDMpICYmIChJbkJ1ZmZlciBbN10gPiA5KSkKICAgICAgICB7CgoKCgogICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIE9wdGlvbnNTaXplOwogICAgICAgICAgICB1bnNpZ25lZCBjaGFyIE9wdGlv
bjsKICAgICAgICAgICAgdW5zaWduZWQgY2hhciBTaXplOwogICAgICAgICAgICBNb3ZlIChJbkJ1
ZmZlciwgT3V0QnVmZmVyLCA4KTsKICAgICAgICAgICAgT3V0QnVmZmVyIFs0XSA9IDQ7CiAgICAg
ICAgICAgIGRlc3QgKz0gODsKICAgICAgICAgICAgT3B0aW9uc1NpemUgPSBJbkJ1ZmZlcls3XSAt
IDQ7CiAgICAgICAgICAgIHdoaWxlIChPcHRpb25zU2l6ZSA+IDApCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgIE9wdGlvbiA9ICpwdHI7CiAgICAgICAgICAgICAgICBTaXplID0gKihwdHIg
KyAxKTsKICAgICAgICAgICAgICAgIE9wdGlvbnNTaXplIC09IFNpemU7CgogICAgICAgICAgICAg
ICAgaWYgKE9wdGlvbiA9PSAzKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAg
ICBwdHIgKz0gU2l6ZTsKCgogICAgICAgICAgICAgICAgICAgIE91dEJ1ZmZlciBbN10gPSBPdXRC
dWZmZXIgWzddIC0gU2l6ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKFNpemUtLSApCiAg
ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAqZGVzdCsrID0gKnB0
cisrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
fQogICAgICAgIH0KICAgICAgICBlbHNlIGlmICgoSW5CdWZmZXIgWzhdID09IDB4MDMpICYmIChJ
bkJ1ZmZlciBbMTBdID09IDB4QzIpKQogICAgICAgIHsKCgoKCgogICAgICAgICAgICBJbkJ1ZmZl
ciBbNF0gPSAzOwogICAgICAgICAgICBJbkJ1ZmZlciBbMTBdID0gMHhDMDsKCiAgICAgICAgICAg
IFByb2NQUFBTZW5kIChJbkJ1ZmZlciwgSW5CdWZmZXJbN10rNik7CiAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoKChJbkJ1ZmZlciBbOF0gPT0gMHgwMykgJiYg
KEluQnVmZmVyIFsxMF0gPT0gMHhDMCkpCiAgICAgICAgICAgICAgICAgfHwgKEluQnVmZmVyWzdd
IDw9IDB4MDQpCiAgICAgICAgICAgICkKICAgICAgICB7CgoKCgoKCiAgICAgICAgICAgIFVzZVBB
UCA9IChJbkJ1ZmZlcls4XSA9PSAweDAzKTsKCgogICAgICAgICAgICBNb3ZlIChJbkJ1ZmZlciwg
T3V0QnVmZmVyLCBJbkJ1ZmZlcls3XSs2KTsKICAgICAgICAgICAgT3V0QnVmZmVyWzRdID0gMjsK
ICAgICAgICAgICAgUHJvY1BQUFNlbmQgKCh1bnNpZ25lZCBjaGFyICopT3V0QnVmZmVyLCBPdXRC
dWZmZXJbN10gKyA2KTsKICAgICAgICAgICAgT3V0QnVmZmVyWzRdID0gMTsKICAgICAgICAgICAg
T3V0QnVmZmVyWzVdID0gT3V0QnVmZmVyIFs1XSArIDE7CiAgICAgICAgICAgIE91dEJ1ZmZlcls3
XSA9IDB4MEE7CiAgICAgICAgICAgIE91dEJ1ZmZlcls4XSA9IDB4MDI7CiAgICAgICAgICAgIE91
dEJ1ZmZlcls5XSA9IDB4MDY7CiAgICAgICAgICAgIE91dEJ1ZmZlclsxMF0gPSAweEZGOwogICAg
ICAgICAgICBPdXRCdWZmZXJbMTFdID0gMHhGRjsKICAgICAgICAgICAgT3V0QnVmZmVyWzEyXSA9
IDB4RkY7CiAgICAgICAgICAgIE91dEJ1ZmZlclsxM10gPSAweEZGOwogICAgICAgIH0KICAgICAg
ICBQcm9jUFBQU2VuZCAoKHVuc2lnbmVkIGNoYXIgKilPdXRCdWZmZXIsIE91dEJ1ZmZlcls3XSAr
IDYpOwogICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDI6CgoKCiAgICAgICAgaWYgKChJbkJ1
ZmZlciBbOF0gPT0gMHgwMikgJiYgVXNlUEFQKQogICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgU2VuZFBBUFBhY2tldCAoMSwgSW5CdWZmZXJbNV0gKyAxLCBVc2VyLCBQYXNzd29yZCk7
CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDM6CiAgICAgICAgYnJlYWs7
CgogICAgICAgIGNhc2UgNDoKICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA2OgogICAgICAg
IFBQUFN0YXR1cyAmPSB+MHgyMDsKICAgICAgICBicmVhazsKICAgIGNhc2UgOToKICAgICAgICBJ
bkJ1ZmZlciBbNF0gPSAxMDsKICAgICAgICBQcm9jUFBQU2VuZCAoSW5CdWZmZXIsIEluQnVmZmVy
IFs3XSArIDYpOwogICAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgICBjY19wcmludGYo
Iklnbm9yaW5nIExDUCBjb2RlIDB4JTAyWFxuIiwgSW5CdWZmZXIgWzRdKTsKICAgICAgICBicmVh
azsKICAgIH0KICAgIHJldHVybjsKfQoKCgoKCgoKc3RhdGljIHZvaWQgSGFuZGxlSVBDUE9wdGlv
bnMgKHZvaWQpIHsKICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSAodW5zaWduZWQgY2hhciAqKSZP
dXRCdWZmZXJbOF07CiAgICB1bnNpZ25lZCBjaGFyICpwdHIgPSAodW5zaWduZWQgY2hhciAqKSZJ
bkJ1ZmZlcls4XTsKICAgIHVuc2lnbmVkIGNoYXIgRnJhbWVTaXplOwogICAgdW5zaWduZWQgY2hh
ciBPcHRpb247CiAgICB1bnNpZ25lZCBjaGFyIFNpemU7CiAgICBzd2l0Y2ggKEluQnVmZmVyIFs0
XSApIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIGlmICgoSW5CdWZmZXIgWzhdICE9IDB4
MDMpIHx8IChJbkJ1ZmZlciBbN10gPiAweDBBKSkgewogICAgICAgICAgICBPdXRCdWZmZXIgWzBd
ID0gMHhGRjsKICAgICAgICAgICAgT3V0QnVmZmVyIFsxXSA9IDB4MDM7CiAgICAgICAgICAgIE91
dEJ1ZmZlciBbMl0gPSAweDgwOwogICAgICAgICAgICBPdXRCdWZmZXIgWzNdID0gMHgyMTsKICAg
ICAgICAgICAgT3V0QnVmZmVyIFs0XSA9IDQ7CiAgICAgICAgICAgIE91dEJ1ZmZlciBbNV0gPSBJ
bkJ1ZmZlciBbNV07CiAgICAgICAgICAgIEZyYW1lU2l6ZSA9IEluQnVmZmVyWzddIC0gNDsKCiAg
ICAgICAgICAgIHdoaWxlIChGcmFtZVNpemUgPiAwKSB7CiAgICAgICAgICAgICAgICBPcHRpb24g
PSAqcHRyOwogICAgICAgICAgICAgICAgU2l6ZSA9ICoocHRyICsgMSk7CiAgICAgICAgICAgICAg
ICBGcmFtZVNpemUgLT0gU2l6ZTsKICAgICAgICAgICAgICAgIGlmIChPcHRpb24gPT0gMykgewog
ICAgICAgICAgICAgICAgICAgIHB0ciArPSBTaXplOwoKICAgICAgICAgICAgICAgICAgICBPdXRC
dWZmZXIgWzddID0gSW5CdWZmZXIgWzddIC0gU2l6ZTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHdoaWxlIChTaXplLS0gKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICpkZXN0KysgPSAqcHRyKys7CiAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgZWxzZSB7CgogICAgICAgICAgICBNb3ZlIChJbkJ1ZmZlciwgT3V0QnVmZmVyLCBJbkJ1
ZmZlcls3XSs2KTsKICAgICAgICAgICAgT3V0QnVmZmVyIFs0XSA9IDI7CiAgICAgICAgICAgIFBy
b2NQUFBTZW5kICgodW5zaWduZWQgY2hhciAqKU91dEJ1ZmZlciwgT3V0QnVmZmVyWzddICsgNik7
CgogICAgICAgICAgICBPdXRCdWZmZXIgWzRdID0gMTsKICAgICAgICAgICAgT3V0QnVmZmVyIFs1
XSA9IE91dEJ1ZmZlciBbNV0gKyAxOwogICAgICAgICAgICBPdXRCdWZmZXIgWzEwXSA9IDA7CiAg
ICAgICAgICAgIE91dEJ1ZmZlciBbMTFdID0gMDsKICAgICAgICAgICAgT3V0QnVmZmVyIFsxMl0g
PSAwOwogICAgICAgICAgICBPdXRCdWZmZXIgWzEzXSA9IDA7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgUHJvY1BQUFNlbmQgKCh1bnNpZ25lZCBjaGFyICopT3V0QnVmZmVyLCBPdXRCdWZmZXJb
N10gKyA2KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAyOgogICAgICAgICAgICBp
ZiAoSW5CdWZmZXIgWzhdID09IDMpIHsKCiAgICAgICAgICAgIElQQWRkcmVzcyBbMF0gPSBJbkJ1
ZmZlciBbMTBdOwogICAgICAgICAgICBJUEFkZHJlc3MgWzFdID0gSW5CdWZmZXIgWzExXTsKICAg
ICAgICAgICAgSVBBZGRyZXNzIFsyXSA9IEluQnVmZmVyIFsxMl07CiAgICAgICAgICAgIElQQWRk
cmVzcyBbM10gPSBJbkJ1ZmZlciBbMTNdOwoKICAgICAgICAgICAgUFBQU3RhdHVzIHw9IDB4MjA7
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAzOgogICAgICAg
ICAgICBpZiAoKEluQnVmZmVyIFs4XSA9PSAweDAzKSAmJiAoSW5CdWZmZXIgWzddIDw9IDB4MEEp
KSB7CgogICAgICAgICAgICBNb3ZlIChJbkJ1ZmZlciwgT3V0QnVmZmVyLCBJbkJ1ZmZlcls3XSs2
KTsKICAgICAgICAgICAgT3V0QnVmZmVyIFs0XSA9IDB4MDE7CiAgICAgICAgICAgIFByb2NQUFBT
ZW5kICgodW5zaWduZWQgY2hhciAqKU91dEJ1ZmZlciwgT3V0QnVmZmVyWzddICsgNik7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSA0OgogICAgICAgICAgICBi
cmVhazsKICAgIGRlZmF1bHQ6CiAgICAgICAgY2NfcHJpbnRmKCJJZ25vcmluZyBMQ1AgY29kZSAw
eCUwMlhcbiIsIEluQnVmZmVyIFs0XSk7CiAgICAgICAgYnJlYWs7CiAgICB9Cn0KIyA0NzAgInBw
cC5jIgp2b2lkIFNlbmRQQVBQYWNrZXQgKHVuc2lnbmVkIGNoYXIgQWN0aW9uLCB1bnNpZ25lZCBj
aGFyIElELCBjb25zdCBjaGFyKiB1c2VyLCBjb25zdCBjaGFyKiBwYXNzd29yZCkgewogICAgT3V0
QnVmZmVyIFswXSA9IDB4RkY7CiAgICBPdXRCdWZmZXIgWzFdID0gMHgwMzsKICAgIE91dEJ1ZmZl
ciBbMl0gPSAweEMwOwogICAgT3V0QnVmZmVyIFszXSA9IDB4MjM7CiAgICBPdXRCdWZmZXIgWzRd
ID0gQWN0aW9uOwogICAgT3V0QnVmZmVyIFs1XSA9IEluQnVmZmVyIFs1XSArIDE7CiAgICBPdXRC
dWZmZXIgWzZdID0gMDsKICAgIE91dEJ1ZmZlciBbN10gPSBzdHJsZW4gKHVzZXIpICsgc3RybGVu
IChwYXNzd29yZCkgKyA2OwogICAgT3V0QnVmZmVyIFs4XSA9IHN0cmxlbiAodXNlcik7CgogICAg
TW92ZSAodXNlciwgJk91dEJ1ZmZlciBbOV0sIHN0cmxlbiAodXNlcikpOwogICAgT3V0QnVmZmVy
IFs5ICsgc3RybGVuICh1c2VyKV0gPSBzdHJsZW4gKHBhc3N3b3JkKTsKCiAgICBNb3ZlIChwYXNz
d29yZCwgJk91dEJ1ZmZlciBbMTAgKyBzdHJsZW4gKHVzZXIpXSwgc3RybGVuIChwYXNzd29yZCkp
OwogICAgUHJvY1BQUFNlbmQgKCh1bnNpZ25lZCBjaGFyICopT3V0QnVmZmVyLCBPdXRCdWZmZXJb
N10gKyA2KTsKfQojIDQ5NSAicHBwLmMiCnN0YXRpYyB2b2lkIFJlamVjdFByb3RvY29sICh1bnNp
Z25lZCBjaGFyICpJbkJ1ZmZlcikgewogICAgT3V0QnVmZmVyIFswXSA9IDB4RkY7CiAgICBPdXRC
dWZmZXIgWzFdID0gMHgwMzsKICAgIE91dEJ1ZmZlciBbMl0gPSAweEMwOwogICAgT3V0QnVmZmVy
IFszXSA9IDB4MjE7CiAgICBPdXRCdWZmZXIgWzRdID0gMHgwODsKICAgIE91dEJ1ZmZlciBbNV0g
PSAyMDsKICAgIE91dEJ1ZmZlciBbNl0gPSAwOwogICAgT3V0QnVmZmVyIFs3XSA9IEluQnVmZmVy
WzddICsgNjsKICAgIE1vdmUgKCZJbkJ1ZmZlclsyXSwgJk91dEJ1ZmZlcls4XSwgSW5CdWZmZXIg
WzddICsgMik7CiAgICBQcm9jUFBQU2VuZCAoKHVuc2lnbmVkIGNoYXIgKilPdXRCdWZmZXIsIE91
dEJ1ZmZlcls3XSArIDYpOwp9CiMgNTE2ICJwcHAuYyIKdm9pZCBQUFBTZW5kVm9pZExDUCAodm9p
ZCkgewogICAgTW92ZSAoUFBQRGF0YSwgT3V0QnVmZmVyLCBQUFBEYXRhWzddICsgNik7CiAgICBQ
cm9jUFBQU2VuZCAoKHVuc2lnbmVkIGNoYXIgKilPdXRCdWZmZXIsIE91dEJ1ZmZlcls3XSArIDYp
Owp9CgoKCgoKCnZvaWQgUFBQVGVybWluYXRlICh2b2lkKSB7CiAgICBNb3ZlICgodW5zaWduZWQg
Y2hhciAqKUxDUFRlcm1pbmF0ZSwgT3V0QnVmZmVyLCAxMCk7CiAgICBQcm9jUFBQU2VuZCAoT3V0
QnVmZmVyLCAxMCk7Cn0KIyA1MzggInBwcC5jIgp2b2lkIFBQUEVudHJ5ICh2b2lkKSB7CiAgICBp
ZiAoUFBQU3RhdHVzICYgMHgwOCkgewogICAgICAgIHN3aXRjaCAoKEluQnVmZmVyWzJdIDw8IDgp
IHwgSW5CdWZmZXJbM10pIHsKICAgICAgICAgICAgY2FzZSAweEMwMjE6CiAgICAgICAgICAgIEhh
bmRsZUxDUE9wdGlvbnMgKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDB4
QzAyMzoKICAgICAgICAgICAgaWYgKEluQnVmZmVyIFs0XSA9PSAweDAyKSB7CiAgICAgICAgICAg
ICAgICA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2Ug
MHg4MDIxOgogICAgICAgICAgICBIYW5kbGVJUENQT3B0aW9ucyAoKTsKICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgIGNhc2UgMHgwMDIxOgogICAgICAgICAgICBpZiAoIUlQQ29tcGFyZSAo
KHVuc2lnbmVkIGNoYXIgKikmSW5CdWZmZXIgWzIwXSkpIHsKCgogICAgICAgICAgICB9CiAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHN3aXRjaCAoSW5CdWZmZXIgWzEzXSkgewogICAg
ICAgICAgICAgICAgY2FzZSAweDExOgogICAgICAgICAgICAgICAgICAgIFVEUF9IYW5kbGVyICgo
VURQRGF0YWdyYW0gKikmSW5CdWZmZXJbMTZdKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgIGNhc2UgMHgwNjoKICAgICAgICAgICAgICAgIGNhc2UgMHgwMToKICAg
ICAgICAgICAgICAgICAgICBpZih1aXBfbGVuID4gMCkgewoKICAgICAgICAgICAgICAgICAgICAg
ICAgZG9fdWlwX3BlcmlvZGljKDEpOwogICAgICAgICAgICAgICAgICAgICAgICBkYmdfYXNzZXJ0
KHVpcF9sZW4gPT0gMCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
IG1lbWNweSh1aXBfYnVmLCAmSW5CdWZmZXJbNF0sIHNpemVvZih1aXBfYnVmKSk7CiAgICAgICAg
ICAgICAgICAgICAgdWlwX2xlbiA9IHVpcF9idWZbM107CiAgICAgICAgICAgICAgICAgICAgdWlw
X3Byb2Nlc3MoMSk7CiAgICAgICAgICAgICAgICAgICAgaWYodWlwX2xlbiA+IDApCiAgICAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBwcHBfc2VuZCgpOwogICAgICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgoKCgoKICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBS
ZWplY3RQcm90b2NvbCAoSW5CdWZmZXIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9Cgog
ICAgICAgIFBQUFN0YXR1cyAmPSB+MHgwODsKICAgIH0KfQo=


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