public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* optimization/10052: SH-ELF: GCC segfaults when compiling code
@ 2003-03-13  2:56 tm_gccmail
  0 siblings, 0 replies; only message in thread
From: tm_gccmail @ 2003-03-13  2:56 UTC (permalink / raw)
  To: gcc-gnats


>Number:         10052
>Category:       optimization
>Synopsis:       SH-ELF: GCC segfaults when compiling code
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 13 02:56:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Toshi Morita
>Release:        unknown-1.0
>Organization:
>Environment:
--host=i686-linux --target=sh-elf
>Description:
GCC crashes when code is compiled at -O1 or -O2.

>How-To-Repeat:
[tm@localhost gcc]$ ./xgcc -B./ -O1 -m4 -S hint.i
hint.i:620: warning: conflicting types for built-in function `nan'
hint.i:718: warning: conflicting types for built-in function `nanf'
hint.i: In function `main':
hint.i:894: warning: return type of `main' is not `int'
hint.i:1147: error: insn does not satisfy its constraints:
(insn 348 347 1644 13 0x401612ec (set (reg/v:SI 76 fr12 [orig:167 dmax ] [167])
        (reg:SI 149 macl)) 123 {movsi_ie} (insn_list 347 (nil))
    (expr_list:REG_EQUAL (mult:SI (reg/v:SI 9 r9 [orig:164 itm ] [164])
            (reg/v:SI 9 r9 [orig:164 itm ] [164]))
        (nil)))
hint.i:1147: internal compiler error: in reload_cse_simplify_operands, at reload1.c:8347
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
[tm@localhost gcc]$ 
>Fix:
Not known.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="hint.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="hint.i"

dHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90Owp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9f
Z251Y192YV9saXN0Owp0eXBlZGVmIGxvbmcgX29mZl90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYg
bG9uZyBsb25nIF9vZmY2NF90OwoKCnR5cGVkZWYgaW50IF9zc2l6ZV90Owp0eXBlZGVmIHVuc2ln
bmVkIGludCB3aW50X3Q7CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlvbgog
IHsKICAgIHdpbnRfdCBfX3djaDsKICAgIHVuc2lnbmVkIGNoYXIgX193Y2hiWzRdOwogIH0gX192
YWx1ZTsKfSBfbWJzdGF0ZV90OwoKdHlwZWRlZiBpbnQgX2Zsb2NrX3Q7CgoKCgoKCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBfX1VMb25nOwpzdHJ1Y3QgX0JpZ2ludAp7CiAgc3RydWN0IF9CaWdpbnQg
Kl9uZXh0OwogIGludCBfaywgX21heHdkcywgX3NpZ24sIF93ZHM7CiAgX19VTG9uZyBfeFsxXTsK
fTsKCgpzdHJ1Y3QgX190bQp7CiAgaW50IF9fdG1fc2VjOwogIGludCBfX3RtX21pbjsKICBpbnQg
X190bV9ob3VyOwogIGludCBfX3RtX21kYXk7CiAgaW50IF9fdG1fbW9uOwogIGludCBfX3RtX3ll
YXI7CiAgaW50IF9fdG1fd2RheTsKICBpbnQgX190bV95ZGF5OwogIGludCBfX3RtX2lzZHN0Owp9
OwpzdHJ1Y3QgX2F0ZXhpdCB7CiAgICAgICAgc3RydWN0IF9hdGV4aXQgKl9uZXh0OwogICAgICAg
IGludCBfaW5kOwogICAgICAgIHZvaWQgKCpfZm5zWzMyXSkodm9pZCk7CiAgICAgICAgdm9pZCAq
X2ZuYXJnc1szMl07CiAgICAgICAgX19VTG9uZyBfZm50eXBlczsKfTsKc3RydWN0IF9fc2J1ZiB7
CiAgICAgICAgdW5zaWduZWQgY2hhciAqX2Jhc2U7CiAgICAgICAgaW50IF9zaXplOwp9OwoKCgoK
Cgp0eXBlZGVmIGxvbmcgX2Zwb3NfdDsKc3RydWN0IF9fc0ZJTEUgewogIHVuc2lnbmVkIGNoYXIg
Kl9wOwogIGludCBfcjsKICBpbnQgX3c7CiAgc2hvcnQgX2ZsYWdzOwogIHNob3J0IF9maWxlOwog
IHN0cnVjdCBfX3NidWYgX2JmOwogIGludCBfbGJmc2l6ZTsKCgoKCgoKICB2b2lkICogX2Nvb2tp
ZTsKCiAgaW50ICgqX3JlYWQpICh2b2lkICogX2Nvb2tpZSwgY2hhciAqX2J1ZiwgaW50IF9uKTsK
ICBpbnQgKCpfd3JpdGUpICh2b2lkICogX2Nvb2tpZSwgY29uc3QgY2hhciAqX2J1ZiwgaW50IF9u
KTsKCiAgX2Zwb3NfdCAoKl9zZWVrKSAodm9pZCAqIF9jb29raWUsIF9mcG9zX3QgX29mZnNldCwg
aW50IF93aGVuY2UpOwogIGludCAoKl9jbG9zZSkgKHZvaWQgKiBfY29va2llKTsKCgogIHN0cnVj
dCBfX3NidWYgX3ViOwogIHVuc2lnbmVkIGNoYXIgKl91cDsKICBpbnQgX3VyOwoKCiAgdW5zaWdu
ZWQgY2hhciBfdWJ1ZlszXTsKICB1bnNpZ25lZCBjaGFyIF9uYnVmWzFdOwoKCiAgc3RydWN0IF9f
c2J1ZiBfbGI7CgoKICBpbnQgX2Jsa3NpemU7CiAgaW50IF9vZmZzZXQ7CgoKICBzdHJ1Y3QgX3Jl
ZW50ICpfZGF0YTsKCgoKICBfZmxvY2tfdCBfbG9jazsKCn07CnR5cGVkZWYgc3RydWN0IF9fc0ZJ
TEUgX19GSUxFOwoKCnN0cnVjdCBfZ2x1ZQp7CiAgc3RydWN0IF9nbHVlICpfbmV4dDsKICBpbnQg
X25pb2JzOwogIF9fRklMRSAqX2lvYnM7Cn07CnN0cnVjdCBfcmFuZDQ4IHsKICB1bnNpZ25lZCBz
aG9ydCBfc2VlZFszXTsKICB1bnNpZ25lZCBzaG9ydCBfbXVsdFszXTsKICB1bnNpZ25lZCBzaG9y
dCBfYWRkOwoKCgoKfTsKc3RydWN0IF9yZWVudAp7CiAgaW50IF9lcnJubzsKCgoKCiAgX19GSUxF
ICpfc3RkaW4sICpfc3Rkb3V0LCAqX3N0ZGVycjsKCiAgaW50IF9pbmM7CiAgY2hhciBfZW1lcmdl
bmN5WzI1XTsKCiAgaW50IF9jdXJyZW50X2NhdGVnb3J5OwogIGNvbnN0IGNoYXIgKl9jdXJyZW50
X2xvY2FsZTsKCiAgaW50IF9fc2RpZGluaXQ7CgogIHZvaWQgKCpfX2NsZWFudXApIChzdHJ1Y3Qg
X3JlZW50ICopOwoKCiAgc3RydWN0IF9CaWdpbnQgKl9yZXN1bHQ7CiAgaW50IF9yZXN1bHRfazsK
ICBzdHJ1Y3QgX0JpZ2ludCAqX3A1czsKICBzdHJ1Y3QgX0JpZ2ludCAqKl9mcmVlbGlzdDsKCgog
IGludCBfY3Z0bGVuOwogIGNoYXIgKl9jdnRidWY7CgogIHVuaW9uCiAgICB7CiAgICAgIHN0cnVj
dAogICAgICAgIHsKICAgICAgICAgIHVuc2lnbmVkIGludCBfdW51c2VkX3JhbmQ7CiAgICAgICAg
ICBjaGFyICogX3N0cnRva19sYXN0OwogICAgICAgICAgY2hhciBfYXNjdGltZV9idWZbMjZdOwog
ICAgICAgICAgc3RydWN0IF9fdG0gX2xvY2FsdGltZV9idWY7CiAgICAgICAgICBpbnQgX2dhbW1h
X3NpZ25nYW07CiAgICAgICAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfcmFu
ZF9uZXh0OwogICAgICAgICAgc3RydWN0IF9yYW5kNDggX3I0ODsKICAgICAgICAgIF9tYnN0YXRl
X3QgX21ibGVuX3N0YXRlOwogICAgICAgICAgX21ic3RhdGVfdCBfbWJ0b3djX3N0YXRlOwogICAg
ICAgICAgX21ic3RhdGVfdCBfd2N0b21iX3N0YXRlOwogICAgICAgICAgY2hhciBfbDY0YV9idWZb
OF07CiAgICAgICAgICBjaGFyIF9zaWduYWxfYnVmWzI0XTsKICAgICAgICAgIGludCBfZ2V0ZGF0
ZV9lcnI7CiAgICAgICAgICBfbWJzdGF0ZV90IF9tYnJsZW5fc3RhdGU7CiAgICAgICAgICBfbWJz
dGF0ZV90IF9tYnJ0b3djX3N0YXRlOwogICAgICAgICAgX21ic3RhdGVfdCBfbWJzcnRvd2NzX3N0
YXRlOwogICAgICAgICAgX21ic3RhdGVfdCBfd2NydG9tYl9zdGF0ZTsKICAgICAgICAgIF9tYnN0
YXRlX3QgX3djc3J0b21ic19zdGF0ZTsKICAgICAgICB9IF9yZWVudDsKCgoKICAgICAgc3RydWN0
CiAgICAgICAgewoKICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiBfbmV4dGZbMzBdOwogICAgICAg
ICAgdW5zaWduZWQgaW50IF9ubWFsbG9jWzMwXTsKICAgICAgICB9IF91bnVzZWQ7CiAgICB9IF9u
ZXc7CgoKICBzdHJ1Y3QgX2F0ZXhpdCAqX2F0ZXhpdDsKICBzdHJ1Y3QgX2F0ZXhpdCBfYXRleGl0
MDsKCgogIHZvaWQgKCoqKF9zaWdfZnVuYykpKGludCk7CgoKCgogIHN0cnVjdCBfZ2x1ZSBfX3Nn
bHVlOwogIF9fRklMRSBfX3NmWzNdOwp9OwpleHRlcm4gc3RydWN0IF9yZWVudCAqX2ltcHVyZV9w
dHIgOwoKdm9pZCBfcmVjbGFpbV9yZWVudCAoc3RydWN0IF9yZWVudCAqKTsKdHlwZWRlZiBzaG9y
dCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90OwoK
CgoKCnR5cGVkZWYgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJf
dDsKCgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBfX2ludDY0X3Q7Cl9fZXh0
ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX191aW50NjRfdDsKdHlwZWRlZiBp
bnQgcHRyZGlmZl90Owp0eXBlZGVmIGxvbmcgaW50IHdjaGFyX3Q7CnR5cGVkZWYgbG9uZyBpbnQg
X19vZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25n
IGxvbmcgaW50IF9fbG9mZl90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdV9jaGFyOwp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50Owp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwoKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9y
dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNs
b2NrX3Q7CgoKCgp0eXBlZGVmIGxvbmcgdGltZV90OwoKCgoKc3RydWN0IHRpbWVzcGVjIHsKICB0
aW1lX3QgdHZfc2VjOwogIGxvbmcgdHZfbnNlYzsKfTsKCnN0cnVjdCBpdGltZXJzcGVjIHsKICBz
dHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7CiAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwp9
OwoKCnR5cGVkZWYgbG9uZyBkYWRkcl90Owp0eXBlZGVmIGNoYXIgKiBjYWRkcl90OwoKCgoKCgoK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbm9fdDsKdHlwZWRlZiBzaG9ydCBkZXZfdDsKCgoKCnR5
cGVkZWYgbG9uZyBvZmZfdDsKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWlkX3Q7CnR5cGVkZWYg
dW5zaWduZWQgc2hvcnQgZ2lkX3Q7CgoKdHlwZWRlZiBpbnQgcGlkX3Q7CnR5cGVkZWYgbG9uZyBr
ZXlfdDsKdHlwZWRlZiBfc3NpemVfdCBzc2l6ZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBtb2Rl
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CgoKCnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgbmxpbmtfdDsKdHlwZWRlZiBsb25nIGZkX21hc2s7CgoKCgoKCgp0eXBlZGVmIHN0
cnVjdCBfdHlwZXNfZmRfc2V0IHsKICAgICAgICBmZF9tYXNrIGZkc19iaXRzWygoKDY0KSsoKChz
aXplb2YgKGZkX21hc2spICogOCkpLTEpKS8oKHNpemVvZiAoZmRfbWFzaykgKiA4KSkpXTsKfSBf
dHlwZXNfZmRfc2V0OwoKCnR5cGVkZWYgX2Zwb3NfdCBmcG9zX3Q7CnR5cGVkZWYgX19GSUxFIEZJ
TEU7CkZJTEUgKiB0bXBmaWxlICh2b2lkKTsKY2hhciAqIHRtcG5hbSAoY2hhciAqKTsKaW50IGZj
bG9zZSAoRklMRSAqKTsKaW50IGZmbHVzaCAoRklMRSAqKTsKRklMRSAqIGZyZW9wZW4gKGNvbnN0
IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOwp2b2lkIHNldGJ1ZiAoRklMRSAqLCBjaGFy
ICopOwppbnQgc2V0dmJ1ZiAoRklMRSAqLCBjaGFyICosIGludCwgc2l6ZV90KTsKaW50IGZwcmlu
dGYgKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgZnNjYW5mIChGSUxFICosIGNvbnN0
IGNoYXIgKiwgLi4uKTsKaW50IHByaW50ZiAoY29uc3QgY2hhciAqLCAuLi4pOwppbnQgc2NhbmYg
KGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IHNzY2FuZiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICosIC4uLik7CmludCB2ZnByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9s
aXN0KTsKaW50IHZwcmludGYgKGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgdnNw
cmludGYgKGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBmZ2V0YyAo
RklMRSAqKTsKY2hhciAqIGZnZXRzIChjaGFyICosIGludCwgRklMRSAqKTsKaW50IGZwdXRjIChp
bnQsIEZJTEUgKik7CmludCBmcHV0cyAoY29uc3QgY2hhciAqLCBGSUxFICopOwppbnQgZ2V0YyAo
RklMRSAqKTsKaW50IGdldGNoYXIgKHZvaWQpOwpjaGFyICogZ2V0cyAoY2hhciAqKTsKaW50IHB1
dGMgKGludCwgRklMRSAqKTsKaW50IHB1dGNoYXIgKGludCk7CmludCBwdXRzIChjb25zdCBjaGFy
ICopOwppbnQgdW5nZXRjIChpbnQsIEZJTEUgKik7CnNpemVfdCBmcmVhZCAodm9pZCAqLCBzaXpl
X3QgX3NpemUsIHNpemVfdCBfbiwgRklMRSAqKTsKc2l6ZV90IGZ3cml0ZSAoY29uc3Qgdm9pZCAq
ICwgc2l6ZV90IF9zaXplLCBzaXplX3QgX24sIEZJTEUgKik7CmludCBmZ2V0cG9zIChGSUxFICos
IGZwb3NfdCAqKTsKaW50IGZzZWVrIChGSUxFICosIGxvbmcsIGludCk7CmludCBmc2V0cG9zIChG
SUxFICosIGNvbnN0IGZwb3NfdCAqKTsKbG9uZyBmdGVsbCAoIEZJTEUgKik7CnZvaWQgcmV3aW5k
IChGSUxFICopOwp2b2lkIGNsZWFyZXJyIChGSUxFICopOwppbnQgZmVvZiAoRklMRSAqKTsKaW50
IGZlcnJvciAoRklMRSAqKTsKdm9pZCBwZXJyb3IgKGNvbnN0IGNoYXIgKik7CgpGSUxFICogZm9w
ZW4gKGNvbnN0IGNoYXIgKl9uYW1lLCBjb25zdCBjaGFyICpfdHlwZSk7CmludCBzcHJpbnRmIChj
aGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IHJlbW92ZSAoY29uc3QgY2hhciAqKTsKaW50
IHJlbmFtZSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKCmludCBhc3ByaW50ZiAoY2hh
ciAqKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgZnNlZWtvIChGSUxFICosIG9mZl90LCBpbnQp
OwpvZmZfdCBmdGVsbG8gKCBGSUxFICopOwppbnQgdmZpcHJpbnRmIChGSUxFICosIGNvbnN0IGNo
YXIgKiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgaXByaW50ZiAoY29uc3QgY2hhciAqLCAuLi4pOwpp
bnQgZmlwcmludGYgKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgc2lwcmludGYgKGNo
YXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwpjaGFyICogdGVtcG5hbSAoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICopOwppbnQgdmFzcHJpbnRmIChjaGFyICoqLCBjb25zdCBjaGFyICosIF9fZ251
Y192YV9saXN0KTsKaW50IHZzbnByaW50ZiAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwg
X19nbnVjX3ZhX2xpc3QpOwppbnQgdmZzY2FuZiAoRklMRSAqLCBjb25zdCBjaGFyICosIF9fZ251
Y192YV9saXN0KTsKaW50IHZzY2FuZiAoY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7Cmlu
dCB2c3NjYW5mIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwoK
aW50IGZjbG9zZWFsbCAodm9pZCk7CmludCBzbnByaW50ZiAoY2hhciAqLCBzaXplX3QsIGNvbnN0
IGNoYXIgKiwgLi4uKTsKRklMRSAqIGZkb3BlbiAoaW50LCBjb25zdCBjaGFyICopOwoKaW50IGZp
bGVubyAoRklMRSAqKTsKaW50IGdldHcgKEZJTEUgKik7CmludCBwY2xvc2UgKEZJTEUgKik7CkZJ
TEUgKiBwb3BlbiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgcHV0dyAoaW50LCBG
SUxFICopOwp2b2lkIHNldGJ1ZmZlciAoRklMRSAqLCBjaGFyICosIGludCk7CmludCBzZXRsaW5l
YnVmIChGSUxFICopOwppbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAqKTsKaW50IGdldGNoYXJfdW5s
b2NrZWQgKHZvaWQpOwp2b2lkIGZsb2NrZmlsZSAoRklMRSAqKTsKaW50IGZ0cnlsb2NrZmlsZSAo
RklMRSAqKTsKdm9pZCBmdW5sb2NrZmlsZSAoRklMRSAqKTsKaW50IHB1dGNfdW5sb2NrZWQgKGlu
dCwgRklMRSAqKTsKaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCk7CgoKCgoKCmludCBfYXNwcmlu
dGZfciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBf
ZmNsb3NlYWxsX3IgKHN0cnVjdCBfcmVlbnQgKik7CkZJTEUgKiBfZmRvcGVuX3IgKHN0cnVjdCBf
cmVlbnQgKiwgaW50LCBjb25zdCBjaGFyICopOwpGSUxFICogX2ZvcGVuX3IgKHN0cnVjdCBfcmVl
bnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgX2ZzY2FuZl9yIChzdHJ1Y3Qg
X3JlZW50ICosIEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgX2dldGNoYXJfciAoc3Ry
dWN0IF9yZWVudCAqKTsKY2hhciAqIF9nZXRzX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqKTsK
aW50IF9pcHJpbnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQg
X21rc3RlbXBfciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICopOwpjaGFyICogX21rdGVtcF9yIChz
dHJ1Y3QgX3JlZW50ICosIGNoYXIgKik7CnZvaWQgX3BlcnJvcl9yIChzdHJ1Y3QgX3JlZW50ICos
IGNvbnN0IGNoYXIgKik7CmludCBfcHJpbnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hh
ciAqLCAuLi4pOwppbnQgX3B1dGNoYXJfciAoc3RydWN0IF9yZWVudCAqLCBpbnQpOwppbnQgX3B1
dHNfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICopOwppbnQgX3JlbW92ZV9yIChzdHJ1
Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKik7CmludCBfcmVuYW1lX3IgKHN0cnVjdCBfcmVlbnQg
KiwgY29uc3QgY2hhciAqX29sZCwgY29uc3QgY2hhciAqX25ldyk7CgppbnQgX3NjYW5mX3IgKHN0
cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgX3NwcmludGZfciAoc3RydWN0
IF9yZWVudCAqLCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IF9zbnByaW50Zl9yIChz
dHJ1Y3QgX3JlZW50ICosIGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIC4uLik7CmludCBf
c3NjYW5mX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4u
Lik7CmNoYXIgKiBfdGVtcG5hbV9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKiwgY29u
c3QgY2hhciAqKTsKRklMRSAqIF90bXBmaWxlX3IgKHN0cnVjdCBfcmVlbnQgKik7CmNoYXIgKiBf
dG1wbmFtX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqKTsKaW50IF92YXNwcmludGZfciAoc3Ry
dWN0IF9yZWVudCAqLCBjaGFyICoqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50
IF92ZnByaW50Zl9yIChzdHJ1Y3QgX3JlZW50ICosIEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2du
dWNfdmFfbGlzdCk7CmludCBfdnByaW50Zl9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIg
KiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgX3ZzcHJpbnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hh
ciAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50IF92c25wcmludGZfciAoc3Ry
dWN0IF9yZWVudCAqLCBjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlz
dCk7CmludCBfdmZzY2FuZl9yIChzdHJ1Y3QgX3JlZW50ICosIEZJTEUgKiwgY29uc3QgY2hhciAq
LCBfX2dudWNfdmFfbGlzdCk7CmludCBfdnNjYW5mX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3Qg
Y2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBfdnNzY2FuZl9yIChzdHJ1Y3QgX3JlZW50ICos
IGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7Cgpzc2l6ZV90IF9f
Z2V0ZGVsaW0gKGNoYXIgKiosIHNpemVfdCAqLCBpbnQsIEZJTEUgKik7CnNzaXplX3QgX19nZXRs
aW5lIChjaGFyICoqLCBzaXplX3QgKiwgRklMRSAqKTsKaW50IF9fc3JnZXQgKEZJTEUgKik7Cmlu
dCBfX3N3YnVmIChpbnQsIEZJTEUgKik7CgoKCgoKCkZJTEUgKmZ1bm9wZW4gKGNvbnN0IHZvaWQg
KiBfY29va2llLCBpbnQgKCpyZWFkZm4pKHZvaWQgKiBfY29va2llLCBjaGFyICpfYnVmLCBpbnQg
X24pLCBpbnQgKCp3cml0ZWZuKSh2b2lkICogX2Nvb2tpZSwgY29uc3QgY2hhciAqX2J1ZiwgaW50
IF9uKSwgZnBvc190ICgqc2Vla2ZuKSh2b2lkICogX2Nvb2tpZSwgZnBvc190IF9vZmYsIGludCBf
d2hlbmNlKSwgaW50ICgqY2xvc2Vmbikodm9pZCAqIF9jb29raWUpKTsKCgoKdHlwZWRlZiBzdHJ1
Y3QKewogIGludCBxdW90OwogIGludCByZW07Cn0gZGl2X3Q7Cgp0eXBlZGVmIHN0cnVjdAp7CiAg
bG9uZyBxdW90OwogIGxvbmcgcmVtOwp9IGxkaXZfdDsKZXh0ZXJuIGludCBfX21iX2N1cl9tYXg7
CgoKCnZvaWQgYWJvcnQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChub3JldHVybikpOwppbnQgYWJz
IChpbnQpOwppbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSh2b2lkKSk7CmRvdWJsZSBhdG9mIChj
b25zdCBjaGFyICpfX25wdHIpOwoKZmxvYXQgYXRvZmYgKGNvbnN0IGNoYXIgKl9fbnB0cik7Cgpp
bnQgYXRvaSAoY29uc3QgY2hhciAqX19ucHRyKTsKbG9uZyBhdG9sIChjb25zdCBjaGFyICpfX25w
dHIpOwp2b2lkICogYnNlYXJjaCAoY29uc3Qgdm9pZCAqIF9fa2V5LCBjb25zdCB2b2lkICogX19i
YXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgaW50ICgqIF9jb21wYXIpIChjb25z
dCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKCgoKdm9pZCAqIGNhbGxvYyAoc2l6ZV90IF9fbm1l
bWIsIHNpemVfdCBfX3NpemUpOwpkaXZfdCBkaXYgKGludCBfX251bWVyLCBpbnQgX19kZW5vbSk7
CnZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsKdm9p
ZCBmcmVlICh2b2lkICopOwpjaGFyICogZ2V0ZW52IChjb25zdCBjaGFyICpfX3N0cmluZyk7CmNo
YXIgKiBfZ2V0ZW52X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqX19zdHJpbmcpOwpj
aGFyICogX2ZpbmRlbnYgKGNvbnN0IGNoYXIgKiwgaW50ICopOwpjaGFyICogX2ZpbmRlbnZfciAo
c3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIGludCAqKTsKbG9uZyBsYWJzIChsb25nKTsK
bGRpdl90IGxkaXYgKGxvbmcgX19udW1lciwgbG9uZyBfX2Rlbm9tKTsKdm9pZCAqIG1hbGxvYyAo
c2l6ZV90IF9fc2l6ZSk7CmludCBtYmxlbiAoY29uc3QgY2hhciAqLCBzaXplX3QpOwppbnQgX21i
bGVuX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIF9tYnN0YXRlX3Qg
Kik7CmludCBtYnRvd2MgKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwppbnQgX21i
dG93Y19yIChzdHJ1Y3QgX3JlZW50ICosIHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3Qs
IF9tYnN0YXRlX3QgKik7CmludCB3Y3RvbWIgKGNoYXIgKiwgd2NoYXJfdCk7CmludCBfd2N0b21i
X3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqLCB3Y2hhcl90LCBfbWJzdGF0ZV90ICopOwpzaXpl
X3QgbWJzdG93Y3MgKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpzaXplX3QgX21i
c3Rvd2NzX3IgKHN0cnVjdCBfcmVlbnQgKiwgd2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVf
dCwgX21ic3RhdGVfdCAqKTsKc2l6ZV90IHdjc3RvbWJzIChjaGFyICosIGNvbnN0IHdjaGFyX3Qg
Kiwgc2l6ZV90KTsKc2l6ZV90IF93Y3N0b21ic19yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKiwg
Y29uc3Qgd2NoYXJfdCAqLCBzaXplX3QsIF9tYnN0YXRlX3QgKik7CgoKaW50IG1rc3RlbXAgKGNo
YXIgKik7CmNoYXIgKiBta3RlbXAgKGNoYXIgKik7CgoKdm9pZCBxc29ydCAodm9pZCAqIF9fYmFz
ZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsIGludCgqX2NvbXBhcikoY29uc3Qgdm9p
ZCAqLCBjb25zdCB2b2lkICopKTsKaW50IHJhbmQgKHZvaWQpOwp2b2lkICogcmVhbGxvYyAodm9p
ZCAqIF9fciwgc2l6ZV90IF9fc2l6ZSk7CnZvaWQgc3JhbmQgKHVuc2lnbmVkIF9fc2VlZCk7CmRv
dWJsZSBzdHJ0b2QgKGNvbnN0IGNoYXIgKl9fbiwgY2hhciAqKl9fZW5kX1BUUik7CmRvdWJsZSBf
c3RydG9kX3IgKHN0cnVjdCBfcmVlbnQgKixjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9Q
VFIpOwoKZmxvYXQgc3RydG9kZiAoY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSKTsK
Cmxvbmcgc3RydG9sIChjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9QVFIsIGludCBfX2Jh
c2UpOwpsb25nIF9zdHJ0b2xfciAoc3RydWN0IF9yZWVudCAqLGNvbnN0IGNoYXIgKl9fbiwgY2hh
ciAqKl9fZW5kX1BUUiwgaW50IF9fYmFzZSk7CnVuc2lnbmVkIGxvbmcgc3RydG91bCAoY29uc3Qg
Y2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsKdW5zaWduZWQgbG9uZyBf
c3RydG91bF9yIChzdHJ1Y3QgX3JlZW50ICosY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRf
UFRSLCBpbnQgX19iYXNlKTsKCmludCBzeXN0ZW0gKGNvbnN0IGNoYXIgKl9fc3RyaW5nKTsKCgps
b25nIGE2NGwgKGNvbnN0IGNoYXIgKl9faW5wdXQpOwpjaGFyICogbDY0YSAobG9uZyBfX2lucHV0
KTsKY2hhciAqIF9sNjRhX3IgKHN0cnVjdCBfcmVlbnQgKixsb25nIF9faW5wdXQpOwppbnQgb25f
ZXhpdCAodm9pZCAoKl9fZnVuYykoaW50LCB2b2lkICopLHZvaWQgKiBfX2FyZyk7CnZvaWQgX0V4
aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7CmludCBwdXRlbnYg
KGNvbnN0IGNoYXIgKl9fc3RyaW5nKTsKaW50IF9wdXRlbnZfciAoc3RydWN0IF9yZWVudCAqLCBj
b25zdCBjaGFyICpfX3N0cmluZyk7CmludCBzZXRlbnYgKGNvbnN0IGNoYXIgKl9fc3RyaW5nLCBj
b25zdCBjaGFyICpfX3ZhbHVlLCBpbnQgX19vdmVyd3JpdGUpOwppbnQgX3NldGVudl9yIChzdHJ1
Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKl9fc3RyaW5nLCBjb25zdCBjaGFyICpfX3ZhbHVlLCBp
bnQgX19vdmVyd3JpdGUpOwoKY2hhciAqIGdjdnQgKGRvdWJsZSxpbnQsY2hhciAqKTsKY2hhciAq
IGdjdnRmIChmbG9hdCxpbnQsY2hhciAqKTsKY2hhciAqIGZjdnQgKGRvdWJsZSxpbnQsaW50ICos
aW50ICopOwpjaGFyICogZmN2dGYgKGZsb2F0LGludCxpbnQgKixpbnQgKik7CmNoYXIgKiBlY3Z0
IChkb3VibGUsaW50LGludCAqLGludCAqKTsKY2hhciAqIGVjdnRidWYgKGRvdWJsZSwgaW50LCBp
bnQqLCBpbnQqLCBjaGFyICopOwpjaGFyICogZmN2dGJ1ZiAoZG91YmxlLCBpbnQsIGludCosIGlu
dCosIGNoYXIgKik7CmNoYXIgKiBlY3Z0ZiAoZmxvYXQsaW50LGludCAqLGludCAqKTsKY2hhciAq
IGR0b2EgKGRvdWJsZSwgaW50LCBpbnQsIGludCAqLCBpbnQqLCBjaGFyKiopOwppbnQgcmFuZF9y
ICh1bnNpZ25lZCAqX19zZWVkKTsKCmRvdWJsZSBkcmFuZDQ4ICh2b2lkKTsKZG91YmxlIF9kcmFu
ZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKik7CmRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBb
M10pOwpkb3VibGUgX2VyYW5kNDhfciAoc3RydWN0IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBb
M10pOwpsb25nIGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IFszXSk7CmxvbmcgX2pyYW5kNDhfciAo
c3RydWN0IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBbM10pOwp2b2lkIGxjb25nNDggKHVuc2ln
bmVkIHNob3J0IFs3XSk7CnZvaWQgX2xjb25nNDhfciAoc3RydWN0IF9yZWVudCAqLCB1bnNpZ25l
ZCBzaG9ydCBbN10pOwpsb25nIGxyYW5kNDggKHZvaWQpOwpsb25nIF9scmFuZDQ4X3IgKHN0cnVj
dCBfcmVlbnQgKik7CmxvbmcgbXJhbmQ0OCAodm9pZCk7CmxvbmcgX21yYW5kNDhfciAoc3RydWN0
IF9yZWVudCAqKTsKbG9uZyBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwpsb25nIF9ucmFu
ZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKiwgdW5zaWduZWQgc2hvcnQgWzNdKTsKdW5zaWduZWQgc2hv
cnQgKgogICAgICAgc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwp1bnNpZ25lZCBzaG9ydCAq
CiAgICAgICBfc2VlZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKiwgdW5zaWduZWQgc2hvcnQgWzNdKTsK
dm9pZCBzcmFuZDQ4IChsb25nKTsKdm9pZCBfc3JhbmQ0OF9yIChzdHJ1Y3QgX3JlZW50ICosIGxv
bmcpOwpsb25nIGxvbmcgc3RydG9sbCAoY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRS
LCBpbnQgX19iYXNlKTsKbG9uZyBsb25nIF9zdHJ0b2xsX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29u
c3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsKdW5zaWduZWQgbG9u
ZyBsb25nIHN0cnRvdWxsIChjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9QVFIsIGludCBf
X2Jhc2UpOwp1bnNpZ25lZCBsb25nIGxvbmcgX3N0cnRvdWxsX3IgKHN0cnVjdCBfcmVlbnQgKiwg
Y29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsKCgp2b2lkIGNm
cmVlICh2b2lkICopOwpjaGFyICogX2R0b2FfciAoc3RydWN0IF9yZWVudCAqLCBkb3VibGUsIGlu
dCwgaW50LCBpbnQgKiwgaW50KiwgY2hhcioqKTsKCnZvaWQgKiBfbWFsbG9jX3IgKHN0cnVjdCBf
cmVlbnQgKiwgc2l6ZV90KTsKdm9pZCAqIF9jYWxsb2NfciAoc3RydWN0IF9yZWVudCAqLCBzaXpl
X3QsIHNpemVfdCk7CnZvaWQgX2ZyZWVfciAoc3RydWN0IF9yZWVudCAqLCB2b2lkICopOwp2b2lk
ICogX3JlYWxsb2NfciAoc3RydWN0IF9yZWVudCAqLCB2b2lkICosIHNpemVfdCk7CnZvaWQgX21z
dGF0c19yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKik7CgppbnQgX3N5c3RlbV9yIChzdHJ1Y3Qg
X3JlZW50ICosIGNvbnN0IGNoYXIgKik7Cgp2b2lkIF9fZXByaW50ZiAoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICosIHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqKTsKCgoKCgoKCgp1bmlvbiBf
X2RtYXRoCnsKICBfX1VMb25nIGlbMl07CiAgZG91YmxlIGQ7Cn07CgoKCgpleHRlcm4gY29uc3Qg
dW5pb24gX19kbWF0aCBfX2luZmluaXR5W107CmV4dGVybiBkb3VibGUgYXRhbiAoZG91YmxlKTsK
ZXh0ZXJuIGRvdWJsZSBjb3MgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgc2luIChkb3VibGUpOwpl
eHRlcm4gZG91YmxlIHRhbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB0YW5oIChkb3VibGUpOwpl
eHRlcm4gZG91YmxlIGZyZXhwIChkb3VibGUsIGludCAqKTsKZXh0ZXJuIGRvdWJsZSBtb2RmIChk
b3VibGUsIGRvdWJsZSAqKTsKZXh0ZXJuIGRvdWJsZSBjZWlsIChkb3VibGUpOwpleHRlcm4gZG91
YmxlIGZhYnMgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZmxvb3IgKGRvdWJsZSk7CgoKCgoKCmV4
dGVybiBkb3VibGUgYWNvcyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhc2luIChkb3VibGUpOwpl
eHRlcm4gZG91YmxlIGF0YW4yIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgY29zaCAo
ZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzaW5oIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGV4cCAo
ZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBsZGV4cCAoZG91YmxlLCBpbnQpOwpleHRlcm4gZG91Ymxl
IGxvZyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBsb2cxMCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJs
ZSBwb3cgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzcXJ0IChkb3VibGUpOwpleHRl
cm4gZG91YmxlIGZtb2QgKGRvdWJsZSwgZG91YmxlKTsKdHlwZWRlZiBmbG9hdCBmbG9hdF90Owp0
eXBlZGVmIGRvdWJsZSBkb3VibGVfdDsKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnlmIChmbG9hdCB4
KTsKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnlkIChkb3VibGUgeCk7CmV4dGVybiBkb3VibGUgaW5m
aW5pdHkgKHZvaWQpOwpleHRlcm4gZG91YmxlIG5hbiAodm9pZCk7CmV4dGVybiBpbnQgaXNuYW4g
KGRvdWJsZSk7CmV4dGVybiBpbnQgaXNpbmYgKGRvdWJsZSk7CmV4dGVybiBpbnQgZmluaXRlIChk
b3VibGUpOwpleHRlcm4gZG91YmxlIGNvcHlzaWduIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBp
bnQgaWxvZ2IgKGRvdWJsZSk7CgpleHRlcm4gZG91YmxlIGFzaW5oIChkb3VibGUpOwpleHRlcm4g
ZG91YmxlIGNicnQgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbmV4dGFmdGVyIChkb3VibGUsIGRv
dWJsZSk7CmV4dGVybiBkb3VibGUgcmludCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzY2FsYm4g
KGRvdWJsZSwgaW50KTsKCmV4dGVybiBkb3VibGUgZXhwMiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJs
ZSBzY2FsYmxuIChkb3VibGUsIGxvbmcgaW50KTsKZXh0ZXJuIGRvdWJsZSB0Z2FtbWEgKGRvdWJs
ZSk7CmV4dGVybiBkb3VibGUgbmVhcmJ5aW50IChkb3VibGUpOwpleHRlcm4gbG9uZyBpbnQgbHJp
bnQgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgcm91bmQgKGRvdWJsZSk7CmV4dGVybiBsb25nIGlu
dCBscm91bmQgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgdHJ1bmMgKGRvdWJsZSk7CmV4dGVybiBk
b3VibGUgcmVtcXVvIChkb3VibGUsIGRvdWJsZSwgaW50ICopOwpleHRlcm4gZG91YmxlIGNvcHlz
aWduIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZmRpbSAoZG91YmxlLCBkb3VibGUp
OwpleHRlcm4gZG91YmxlIGZtYXggKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmbWlu
IChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZm1hIChkb3VibGUsIGRvdWJsZSwgZG91
YmxlKTsKZXh0ZXJuIHZvaWQgc2luY29zIChkb3VibGUsIGRvdWJsZSAqLCBkb3VibGUgKik7CgoK
ZXh0ZXJuIGRvdWJsZSBsb2cxcCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBleHBtMSAoZG91Ymxl
KTsKCgoKZXh0ZXJuIGRvdWJsZSBhY29zaCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhdGFuaCAo
ZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByZW1haW5kZXIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJu
IGRvdWJsZSBnYW1tYSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBnYW1tYV9yIChkb3VibGUsIGlu
dCAqKTsKZXh0ZXJuIGRvdWJsZSBsZ2FtbWEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbGdhbW1h
X3IgKGRvdWJsZSwgaW50ICopOwpleHRlcm4gZG91YmxlIGVyZiAoZG91YmxlKTsKZXh0ZXJuIGRv
dWJsZSBlcmZjIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUpOwpleHRlcm4gZG91
YmxlIHkxIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHluIChpbnQsIGRvdWJsZSk7CmV4dGVybiBk
b3VibGUgajAgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgajEgKGRvdWJsZSk7CmV4dGVybiBkb3Vi
bGUgam4gKGludCwgZG91YmxlKTsKCgoKZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91YmxlLCBkb3Vi
bGUpOwoKCmV4dGVybiBkb3VibGUgY2FicygpOwpleHRlcm4gZG91YmxlIGRyZW0gKGRvdWJsZSwg
ZG91YmxlKTsKZXh0ZXJuIGZsb2F0IGF0YW5mIChmbG9hdCk7CmV4dGVybiBmbG9hdCBjb3NmIChm
bG9hdCk7CmV4dGVybiBmbG9hdCBzaW5mIChmbG9hdCk7CmV4dGVybiBmbG9hdCB0YW5mIChmbG9h
dCk7CmV4dGVybiBmbG9hdCB0YW5oZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgZnJleHBmIChmbG9h
dCwgaW50ICopOwpleHRlcm4gZmxvYXQgbW9kZmYgKGZsb2F0LCBmbG9hdCAqKTsKZXh0ZXJuIGZs
b2F0IGNlaWxmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBmYWJzZiAoZmxvYXQpOwpleHRlcm4gZmxv
YXQgZmxvb3JmIChmbG9hdCk7CgoKZXh0ZXJuIGZsb2F0IGFjb3NmIChmbG9hdCk7CmV4dGVybiBm
bG9hdCBhc2luZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgYXRhbjJmIChmbG9hdCwgZmxvYXQpOwpl
eHRlcm4gZmxvYXQgY29zaGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHNpbmhmIChmbG9hdCk7CmV4
dGVybiBmbG9hdCBleHBmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBsZGV4cGYgKGZsb2F0LCBpbnQp
OwpleHRlcm4gZmxvYXQgbG9nZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgbG9nMTBmIChmbG9hdCk7
CmV4dGVybiBmbG9hdCBwb3dmIChmbG9hdCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgc3FydGYgKGZs
b2F0KTsKZXh0ZXJuIGZsb2F0IGZtb2RmIChmbG9hdCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgZXhw
MmYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHNjYWxibG5mIChmbG9hdCwgbG9uZyBpbnQpOwpleHRl
cm4gZmxvYXQgdGdhbW1hZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgbmVhcmJ5aW50ZiAoZmxvYXQp
OwpleHRlcm4gbG9uZyBpbnQgbHJpbnRmIChmbG9hdCk7CmV4dGVybiBmbG9hdCByb3VuZGYgKGZs
b2F0KTsKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHRydW5j
ZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgcmVtcXVvZiAoZmxvYXQsIGZsb2F0LCBpbnQgKik7CmV4
dGVybiBmbG9hdCBjb3B5c2lnbmYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBmbG9hdCBmZGltZiAo
ZmxvYXQsIGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGZtYXhmIChmbG9hdCwgZmxvYXQpOwpleHRlcm4g
ZmxvYXQgZm1pbmYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBmbG9hdCBmbWFmIChmbG9hdCwgZmxv
YXQsIGZsb2F0KTsKCmV4dGVybiBmbG9hdCBpbmZpbml0eWYgKHZvaWQpOwpleHRlcm4gZmxvYXQg
bmFuZiAodm9pZCk7CmV4dGVybiBpbnQgaXNuYW5mIChmbG9hdCk7CmV4dGVybiBpbnQgaXNpbmZm
IChmbG9hdCk7CmV4dGVybiBpbnQgZmluaXRlZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgY29weXNp
Z25mIChmbG9hdCwgZmxvYXQpOwpleHRlcm4gaW50IGlsb2diZiAoZmxvYXQpOwoKZXh0ZXJuIGZs
b2F0IGFzaW5oZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgY2JydGYgKGZsb2F0KTsKZXh0ZXJuIGZs
b2F0IG5leHRhZnRlcmYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBmbG9hdCByaW50ZiAoZmxvYXQp
OwpleHRlcm4gZmxvYXQgc2NhbGJuZiAoZmxvYXQsIGludCk7CmV4dGVybiBmbG9hdCBsb2cxcGYg
KGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGV4cG0xZiAoZmxvYXQpOwpleHRlcm4gdm9pZCBzaW5jb3Nm
IChmbG9hdCwgZmxvYXQgKiwgZmxvYXQgKik7CgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoZmxvYXQp
OwpleHRlcm4gZmxvYXQgYXRhbmhmIChmbG9hdCk7CmV4dGVybiBmbG9hdCByZW1haW5kZXJmIChm
bG9hdCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgZ2FtbWFmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBn
YW1tYWZfciAoZmxvYXQsIGludCAqKTsKZXh0ZXJuIGZsb2F0IGxnYW1tYWYgKGZsb2F0KTsKZXh0
ZXJuIGZsb2F0IGxnYW1tYWZfciAoZmxvYXQsIGludCAqKTsKZXh0ZXJuIGZsb2F0IGVyZmYgKGZs
b2F0KTsKZXh0ZXJuIGZsb2F0IGVyZmNmIChmbG9hdCk7CmV4dGVybiBmbG9hdCB5MGYgKGZsb2F0
KTsKZXh0ZXJuIGZsb2F0IHkxZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgeW5mIChpbnQsIGZsb2F0
KTsKZXh0ZXJuIGZsb2F0IGowZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgajFmIChmbG9hdCk7CmV4
dGVybiBmbG9hdCBqbmYgKGludCwgZmxvYXQpOwoKZXh0ZXJuIGZsb2F0IGh5cG90ZiAoZmxvYXQs
IGZsb2F0KTsKCmV4dGVybiBmbG9hdCBjYWJzZigpOwpleHRlcm4gZmxvYXQgZHJlbWYgKGZsb2F0
LCBmbG9hdCk7CgoKCgoKCmV4dGVybiBpbnQgKl9fc2lnbmdhbSAodm9pZCk7CnN0cnVjdCBleGNl
cHRpb24KCnsKICBpbnQgdHlwZTsKICBjaGFyICpuYW1lOwogIGRvdWJsZSBhcmcxOwogIGRvdWJs
ZSBhcmcyOwogIGRvdWJsZSByZXR2YWw7CiAgaW50IGVycjsKfTsKCgoKCmV4dGVybiBpbnQgbWF0
aGVyciAoc3RydWN0IGV4Y2VwdGlvbiAqZSk7CmVudW0gX19mZGxpYm1fdmVyc2lvbgp7CiAgX19m
ZGxpYm1faWVlZSA9IC0xLAogIF9fZmRsaWJtX3N2aWQsCiAgX19mZGxpYm1feG9wZW4sCiAgX19m
ZGxpYm1fcG9zaXgKfTsKCgoKCmV4dGVybiBjb25zdCBlbnVtIF9fZmRsaWJtX3ZlcnNpb24gX19m
ZGxpYl92ZXJzaW9uOwoKCgpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7CiAgaW50IHRtX21pbjsK
ICBpbnQgdG1faG91cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9uOwogIGludCB0bV95ZWFy
OwogIGludCB0bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9pc2RzdDsKfTsKCmNsb2Nr
X3QgY2xvY2sgKHZvaWQpOwpkb3VibGUgZGlmZnRpbWUgKHRpbWVfdCBfdGltZTIsIHRpbWVfdCBf
dGltZTEpOwp0aW1lX3QgbWt0aW1lIChzdHJ1Y3QgdG0gKl90aW1lcHRyKTsKdGltZV90IHRpbWUg
KHRpbWVfdCAqX3RpbWVyKTsKCmNoYXIgKmFzY3RpbWUgKGNvbnN0IHN0cnVjdCB0bSAqX3RibG9j
ayk7CmNoYXIgKmN0aW1lIChjb25zdCB0aW1lX3QgKl90aW1lKTsKc3RydWN0IHRtICpnbXRpbWUg
KGNvbnN0IHRpbWVfdCAqX3RpbWVyKTsKc3RydWN0IHRtICpsb2NhbHRpbWUgKGNvbnN0IHRpbWVf
dCAqX3RpbWVyKTsKCnNpemVfdCBzdHJmdGltZSAoY2hhciAqX3MsIHNpemVfdCBfbWF4c2l6ZSwg
Y29uc3QgY2hhciAqX2ZtdCwgY29uc3Qgc3RydWN0IHRtICpfdCk7CgpjaGFyICphc2N0aW1lX3Ig
KGNvbnN0IHN0cnVjdCB0bSAqLCBjaGFyICopOwpjaGFyICpjdGltZV9yIChjb25zdCB0aW1lX3Qg
KiwgY2hhciAqKTsKc3RydWN0IHRtICpnbXRpbWVfciAoY29uc3QgdGltZV90ICosIHN0cnVjdCB0
bSAqKTsKc3RydWN0IHRtICpsb2NhbHRpbWVfciAoY29uc3QgdGltZV90ICosIHN0cnVjdCB0bSAq
KTsKCgoKCgoKCgpjaGFyICpzdHJwdGltZSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHN0
cnVjdCB0bSAqKTsKdm9pZCB0enNldCAodm9pZCk7CnZvaWQgX3R6c2V0X3IgKHN0cnVjdCBfcmVl
bnQgKik7CmV4dGVybiB0aW1lX3QgX3RpbWV6b25lOwpleHRlcm4gaW50IF9kYXlsaWdodDsKZXh0
ZXJuIGNoYXIgKl90em5hbWVbMl07CnN0cnVjdCB0aW1ldmFsIHsKICBsb25nIHR2X3NlYzsKICBs
b25nIHR2X3VzZWM7Cn07CgpzdHJ1Y3QgdGltZXpvbmUgewogIGludCB0el9taW51dGVzd2VzdDsK
ICBpbnQgdHpfZHN0dGltZTsKfTsKc3RydWN0IGl0aW1lcnZhbCB7CiAgc3RydWN0IHRpbWV2YWwg
aXRfaW50ZXJ2YWw7CiAgc3RydWN0IHRpbWV2YWwgaXRfdmFsdWU7Cn07CmludCBnZXR0aW1lb2Zk
YXkgKHN0cnVjdCB0aW1ldmFsICpfX3AsIHN0cnVjdCB0aW1lem9uZSAqX196KTsKaW50IHNldHRp
bWVvZmRheSAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKiwgY29uc3Qgc3RydWN0IHRpbWV6b25lICop
OwppbnQgdXRpbWVzIChjb25zdCBjaGFyICpfX3BhdGgsIHN0cnVjdCB0aW1ldmFsICpfX3R2cCk7
CmludCBnZXRpdGltZXIgKGludCBfX3doaWNoLCBzdHJ1Y3QgaXRpbWVydmFsICpfX3ZhbHVlKTsK
aW50IHNldGl0aW1lciAoaW50IF9fd2hpY2gsIGNvbnN0IHN0cnVjdCBpdGltZXJ2YWwgKl9fdmFs
dWUsIHN0cnVjdCBpdGltZXJ2YWwgKl9fb3ZhbHVlKTsKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50
IGFoaSwKICAgICAgICAgICAgYWxvLAogICAgICAgICAgICBkeCwKICAgICAgICAgICAgZmxoLAog
ICAgICAgICAgICBmbGwsCiAgICAgICAgICAgIGZyaCwKICAgICAgICAgICAgZnJsLAogICAgICAg
ICAgICB4bCwKICAgICAgICAgICAgeHI7CiAgICB9UkVDVDsKCnR5cGVkZWYgc3RydWN0IHsKICAg
IGRvdWJsZSB0LAogICAgICAgICAgICBxcCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVscTsK
ICAgIGludCBuOwogICAgICAgIGludCBsYXBzOwogICAgfVNwZWVkOwoKdHlwZWRlZiBpbnQgRVJS
T1I7CgoKCgoKI3ByYWdtYSBtaXBzX2ZyZXF1ZW5jeV9oaW50IEZSRVFVRU5UIFdoZW4KZG91Ymxl
IFdoZW4oKTsKCmRvdWJsZQpSdW4oaW50IGxhcHMsCiAgICBpbnQgKmdhbXV0LCBpbnQgc2N4LCBp
bnQgc2N5LCBpbnQgZG1heCwgaW50IG1lbXJ5LCBFUlJPUiAqZWZsYWcpOwppbnQKSGludChpbnQg
KnNjeCwgaW50ICpzY3ksIGludCAqZG1heCwgaW50ICptY250LCBSRUNUICpyZWN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgKmVycnMsIGludCAqaXhlcywgRVJST1IgKmVmbGFnKTsK
I3ByYWdtYSBtaXBzX2ZyZXF1ZW5jeV9oaW50IEZSRVFVRU5UIEhpbnQKCgoKCnZvaWQgbWFpbihp
bnQgYXJnYywgY2hhciAqYXJndltdKQp7CiAgICBGSUxFICpjdXJ2OwogICAgY2hhciBmaWxubVs4
MF07CgogICAgU3BlZWQgcWRhdGFbMjAwXTsKCiAgICBFUlJPUiBlZmxhZzsKCiAgICBpbnQgaW1h
eCwKICAgICAgICAgICAgaXRtLAogICAgICAgICAgICBuLAogICAgICAgICAgICBuc2NvdXQ7Cgog
ICAgICAgIHZvbGF0aWxlCiAgICAgICAgaW50IGl0bTI7CgogICAgdm9sYXRpbGUKICAgIGludCB0
bTE7CgogICAgaW50IGRtYXgsCiAgICAgICAgICAgIGdhbXV0LAogICAgICAgICAgICBzY3gsCiAg
ICAgICAgICAgIHNjeSwKICAgICAgICAgICAgdG0sIHRtMjsKCiAgICAgICAgZG91YmxlIG1lbXJl
ZiwKICAgICAgICAgICAgICAgICAgICAgICAgYmFuZHd0OwoKICAgIGRvdWJsZSBkZWxxLAogICAg
ICAgICAgICAgICAgICAgICAgICBxdWlwcywKICAgICAgICAgICAgcXBuZXQsCiAgICAgICAgICAg
IHFwZWFrLAogICAgICAgICAgICBxcHJhdCwKICAgICAgICAgICAgICAgICAgICAgICAgcXB0bXAs
CiAgICAgICAgICAgIHQsCiAgICAgICAgICAgIHQwLAogICAgICAgICAgICB0MSwKICAgICAgICAg
ICAgdGRlbHRhLAoKICAgICAgICAgICAgdHNjb3V0OwoKICAgIGludCBkYml0cywKICAgICAgICAg
ICAgaWJpdHMsCiAgICAgICAgICAgIGksIGosIGssCiAgICAgICAgICAgIGxhcHMsCiAgICAgICAg
ICAgIG1lbXVzZTsKCiAgICBwcmludGYoIiAgICAgICAgIF8gICAgX1xuIik7CiAgICBwcmludGYo
IiAgICAgICAgIHwgICAgfCAgXyBfICAgXyBfX19fXyBUTVxuIik7CiAgICBwcmludGYoIiAgICAg
ICAgIHwtLSAgfCAgfCB8XFwgIHwgfCB8IHxcbiIpOwogICAgcHJpbnRmKCIgICAgICAgICB8ICAt
LXwgIHwgfCBcXCB8ICAgfFxuIik7CiAgICBwcmludGYoIiAgICAgICAgIHwgICAgfCAgfCB8ICBc
XHwgICB8XG4iKTsKICAgIHByaW50ZigiICAgICAgICAgXiAgICBeICBeIF4gICBeICAgXlxuXG4i
KTsKICAgIHByaW50ZigiKioqIFRoZSAgSElOVCAgUEVSRk9STUFOQ0UgQU5BTFlaRVIgKioqXG4i
KTsKICAgIHByaW50ZigiICAgICAgICBWZXJzaW9uIDEuMCAgSnVuZSAxOTk0XG4iKTsKICAgIHBy
aW50ZigiICAgSm9obiBMLiBHdXN0YWZzb24gJiBRdWlubiBPLiBTbmVsbFxuIik7CiAgICBwcmlu
dGYoIiAgICAgU2NhbGFibGUgQ29tcHV0aW5nIExhYm9yYXRvcnlcbiIpOwogICAgcHJpbnRmKCIg
ICAyMzYgV2lsaGVsbSwgSW93YSBTdGF0ZSBVbml2ZXJzaXR5XG4iKTsKICAgIHByaW50ZigiICAg
ICAgICBBbWVzLCBJb3dhICAgIDUwMDExLTMwMjBcbiIpOwogICAgcHJpbnRmKCIgICAgICAgICAg
ICAoNTE1KSAyOTQgLSA5Mjk0XG5cbiIpOwogICAgcHJpbnRmKCJDb3B5cmlnaHQgKEMpIDE5OTQi
KTsKICAgIHByaW50ZigiIElvd2EgU3RhdGUgVW5pdmVyc2l0eSBSZXNlYXJjaCBGb3VuZGF0aW9u
LCBJbmMuXG4iKTsKICAgIHByaW50ZigiUGxlYXNlIHNlbmQgcmVzdWx0cyBhbmQgcXVlc3Rpb25z
IHRvOiAgIGhpbnRAc2NsLmFtZXNsYWIuZ292XG4iKTsKICAgIHByaW50ZigiV2hlbiBzZW5kaW5n
IHJlc3VsdHMgcGxlYXNlIGZvbGxvdyB0aGUgZm9ybSBpbiBSRUFETUVcbiIpOwogICAgcHJpbnRm
KCJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X1xuIik7CiAgICAgICAgcHJpbnRmKCJSRUNUIGlzICVkIGJ5dGVzXG4iLHNpemVvZihSRUNUKSk7
CgoKCgogICAgc3ByaW50ZihmaWxubSwiZGF0YS8lcyIsYXJndlswXSk7CiAgICBpZiAoKGN1cnYg
PSBmb3BlbihmaWxubSwgInciKSkgPT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgICAgcHJpbnRm
KCJDb3VsZCBub3Qgb3BlbiBkYXRhIGZpbGVcbiIpOwogICAgICAgIGV4aXQoMSk7CiAgICB9CgoK
CiAgICBmb3IgKHQwID0gV2hlbigpOyAoKHQxID0gV2hlbigpKSA9PSB0MCk7KTsKICAgIHRkZWx0
YSA9IHQxIC0gdDA7CgoKICAgIGRiaXRzID0gMDsKICAgIHRtID0gKGludCkxOwogICAgdG0yID0g
dG0gKyB0bTsKICAgIHRtMSA9IHRtMiArIDE7CgogICAgd2hpbGUgKCgodG0xIC0gdG0yKSA9PSAo
aW50KTEpICYmICh0bTIgPiAoaW50KTApKQogICAgewogICAgICAgIGRiaXRzKys7CiAgICAgICAg
dG0gKz0gdG07CiAgICAgICAgdG0yICs9IHRtMjsKICAgICAgICB0bTEgPSB0bTIgKyAxOwogICAg
fQogICAgZGJpdHMrKzsKCiAgICBkbWF4ID0gdG0gKyAodG0gLSAxKTsKICAgIHByaW50ZigiQXBw
YXJlbnQgbnVtYmVyIG9mIGJpdHMgb2YgYWNjdXJhY3k6ICVkXG4iLCBkYml0cyk7CiAgICBwcmlu
dGYoIk1heGltdW0gYXNzb2NpYXRpdmUgd2hvbGUgbnVtYmVyOiAgICAlLjBsZlxuIiwoZG91Ymxl
KWRtYXgpOwoKCiAgICBpYml0cyA9IDA7CiAgICBpdG0gPSAoaW50KTE7CiAgICBpdG0yID0gaXRt
ICsgaXRtOwoKICAgIHdoaWxlIChpdG0yID4gKGludCkwKQogICAgewogICAgICAgIGliaXRzKys7
CiAgICAgICAgaXRtICs9IGl0bTsKICAgICAgICBpdG0yICs9IGl0bTI7CiAgICB9CiAgICBpbWF4
ID0gaXRtOwogICAgcHJpbnRmKCJNYXhpbXVtIG51bWJlciBvZiBiaXRzIG9mIGluZGV4OiAgICAg
JWRcbiIsIGliaXRzKTsKICAgIHByaW50ZigiTWF4aW11bSByZXByZXNlbnRhYmxlIGluZGV4OiAg
ICAgICAgICUuMGxmXG5cbiIsIChkb3VibGUpaW1heCk7CgoKICAgIGlmICgoaWJpdHMgKyBpYml0
cykgPCBkYml0cykKICAgIHsKICAgICAgICBkbWF4ID0gKGludClpbWF4ICogKGludClpbWF4IC0g
MTsKICAgICAgICBkYml0cyA9IGliaXRzICsgaWJpdHM7CiAgICB9CiAgICBwcmludGYoIkluZGV4
LWxpbWl0ZWQgZGF0YSBhY2N1cmFjeTogICAgICAgICAlZCBiaXRzXG4iLCBkYml0cyk7CiAgICBw
cmludGYoIk1heGltdW0gdXNhYmxlIHdob2xlIG51bWJlcjogICAgICAgICAlLjBsZlxuIiwoZG91
YmxlKWRtYXgpOwoKCiAgICBqID0gKGRiaXRzKS8yOwoKCiAgICBmb3IgKGkgPSAwLCBzY3ggPSAx
OyBpIDwgajsgc2N4ICs9IHNjeCwgaSsrKTsKICAgIGZvciAoaSA9IDAsIHNjeSA9IDE7IGkgPCBk
Yml0cyAtIGo7IHNjeSArPSBzY3ksIGkrKyk7CiAgICBwcmludGYoIkdyaWQ6ICUuMGxmIHdpZGUg
YnkgJS4wbGYgaGlnaC5cbiIsKGRvdWJsZSlzY3gsKGRvdWJsZSlzY3kpOwoKCgogICAgZm9yIChu
c2NvdXQgPSAyLCBsYXBzID0gMzsgbnNjb3V0IDwgc2N4OyApCiAgICB7CiAgICAgICAgdCA9IFJ1
bihsYXBzLCAmZ2FtdXQsIHNjeCwgc2N5LCBkbWF4LCBuc2NvdXQsICZlZmxhZyk7CgogICAgICAg
IGlmIChlZmxhZyAhPSAwKQogICAgICAgIHsKICAgICAgICAgICAgbnNjb3V0IC89IDI7CiAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICgodCA+IDEuMCkgJiYgKGVm
bGFnID09IDApKQogICAgICAgIHsKICAgICAgICAgICAgdHNjb3V0ID0gdDsKICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHRzY291
dCA9IHQ7CiAgICAgICAgICAgIG5zY291dCAqPSAyOwogICAgICAgICAgICBpZiAobnNjb3V0ID4g
c2N4KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuc2NvdXQgLz0gMjsKICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKHRzY291
dCA9PSAwKQogICAgewogICAgICAgIHByaW50ZiggIkRhdGEgdHlwZSBmb3IgJXMgaXMgdG9vIHNt
YWxsXG4iLCBhcmd2WzBdKTsKICAgICAgICBleGl0KDApOwogICAgfQogICAgaWYgKCh0c2NvdXQg
PCAxLjApICYmIChlZmxhZyA9PSAyKSkKICAgICAgIHByaW50ZigiTWVtb3J5IGlzIG5vdCBzdWZm
aWNpZW50IGZvciA+ICUzLjFsZiBzZWNvbmQgcnVucy5cbiIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjAp
OwogICAgZWxzZSBpZiAodHNjb3V0IDwgMS4wKQogICAgICAgcHJpbnRmKCJQcmVjaXNpb24gaXMg
bm90IHN1ZmZpY2llbnQgZm9yID4gJTMuMWxmIHNlY29uZCBydW5zLlxuIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEuMCk7CgoKCiAgICBmb3IgKHQgPSAwLCBpID0gMCwgbiA9IDIsIHFwZWFrID0gMCwgcXBy
YXQgPSAxOwogICAgICAgICgoaSA8IDIwMCkgJiYgKHQgPCAxMDApICYmIChuIDwgc2N4KSAmJiAo
cXByYXQgPiAwLjEpKTsKICAgICAgICBpKyssIG4gPSAoKGludCkobiAqIDEuMjU4OSkgPiBuKT8g
KG4gKiAxLjI1ODkpIDogbiArIDEpCiAgICB7CiAgICAgICAgcHJpbnRmKCIuIik7CiAgICAgICAg
ZmZsdXNoKChfaW1wdXJlX3B0ci0+X3N0ZG91dCkpOwoKCiAgICAgICAgbGFwcyA9ICgoKDEuMCAq
IG5zY291dCAvICh0c2NvdXQgKiBuKSkgPiAoMSkpPyAoMS4wICogbnNjb3V0IC8gKHRzY291dCAq
IG4pKTogKDEpKTsKICAgICAgICB0ID0gUnVuKGxhcHMsICZnYW11dCwgc2N4LCBzY3ksIGRtYXgs
IG4sICZlZmxhZyk7CiAgICAgICAgaWYgKHQgPT0gMCkKICAgICAgICAgICAgdCA9IHRkZWx0YTsK
CiAgICAgICAgaWYgKGVmbGFnICE9IDApCiAgICAgICAgICAgIGJyZWFrOwoKCgogICAgICAgICAg
ICAgICAgZGVscSA9IChkb3VibGUpZG1heCAvIGdhbXV0IC0gMTsKICAgICAgICBxdWlwcyA9IGRl
bHEgLyB0ICsgMS4wIC8gZ2FtdXQgLyB0OwogICAgICAgIHFkYXRhW2ldLnQgPSB0OwogICAgICAg
IHFkYXRhW2ldLnFwID0gcXVpcHM7CiAgICAgICAgcWRhdGFbaV0uZGVscSA9IGRlbHE7CiAgICAg
ICAgcWRhdGFbaV0ubiA9IG47CiAgICAgICAgcXBlYWsgPSAoKChxcGVhaykgPiAocXVpcHMpKT8g
KHFwZWFrKTogKHF1aXBzKSk7CiAgICAgICAgcXByYXQgPSBxdWlwcyAvIHFwZWFrOwogICAgfQog
ICAgbWVtdXNlID0gKGludCkocWRhdGFbaS0xXS5uICogKHNpemVvZihSRUNUKStzaXplb2YoaW50
KStzaXplb2YoaW50KSkpOwogICAgaWYgKChxcHJhdCA+IDAuMSkgJiYgKGVmbGFnID09IDIpKQog
ICAgICAgIHByaW50ZigiXG5UaGlzIHJ1biB3YXMgbWVtb3J5IGxpbWl0ZWQgYXQgJWQgc3ViaW50
ZXJ2YWxzIC0+ICVkIGJ5dGVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbiwgbWVtdXNlKTsKICAgIHByaW50ZigiXG5Eb25lIHdpdGggZmlyc3Qg
cGFzcy4gTm93IGNvbXB1dGluZyBuZXQgUVVJUFNcbiIpOwoKICAgICAgICBtZW1yZWYgPSAoOTAg
KiBzaXplb2YoaW50KSArIDEwICogc2l6ZW9mKGludCkpICogcWRhdGFbaS0xXS5uOwogICAgICAg
IG1lbXJlZiAvPSAoMTAyNCAqIDEwMjQpOwogICAgICAgIGJhbmR3dCA9IG1lbXJlZiAvIHFkYXRh
W2ktMV0udDsKICAgIGZwcmludGYoY3VydiwiJTEyLjEwbGYgJWxmICVsZiAlbGYgJTEwZCAlbGZc
biIsCiAgICAgICAgICAgIHFkYXRhW2ktMV0udCwgcWRhdGFbaS0xXS5xcCwgcWRhdGFbaS0xXS5k
ZWxxLAogICAgICAgICAgICAoZG91YmxlKXFkYXRhW2ktMV0ubiwgbWVtdXNlLCBiYW5kd3QpOwoK
CiAgICBmb3IgKHFwbmV0ID0gcWRhdGFbaS0xXS5xcCwgaiA9IGkgLSAyOyBqID49IDA7IGotLSkK
ICAgIHsKCiAgICAgICAgZm9yIChrID0gMDsgKChxZGF0YVtqKzFdLnQgPCBxZGF0YVtqXS50KSAm
JiAoayA8IDcpKTsgaysrKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCIjIik7CiAgICAg
ICAgICAgIGxhcHMgPSAoKCgxLjAgKiBuc2NvdXQgLyAodHNjb3V0ICogcWRhdGFbal0ubikpID4g
KDEpKT8gKDEuMCAqIG5zY291dCAvICh0c2NvdXQgKiBxZGF0YVtqXS5uKSk6ICgxKSk7CiAgICAg
ICAgICAgIHQgPSBSdW4obGFwcywgJmdhbXV0LCBzY3gsIHNjeSwgZG1heCwgcWRhdGFbal0ubiwg
JmVmbGFnKTsKICAgICAgICAgICAgaWYgKHQgPT0gMCkKICAgICAgICAgICAgICAgIHQgPSB0ZGVs
dGE7CgogICAgICAgICAgICBkZWxxID0gKGRvdWJsZSlkbWF4IC8gZ2FtdXQgLSAxOwogICAgICAg
ICAgICBxdWlwcyA9IGRlbHEgLyB0ICsgMS4wIC8gZ2FtdXQgLyB0OwogICAgICAgICAgICBxZGF0
YVtqXS50ID0gdDsKICAgICAgICAgICAgcWRhdGFbal0ucXAgPSBxdWlwczsKICAgICAgICB9CiAg
ICAgICAgaWYgKHFkYXRhW2orMV0udCA8IHFkYXRhW2pdLnQpCiAgICAgICAgewogICAgICAgICAg
ICBwcmludGYoIiBGb3JjaW5nIGEgdGltZSBmb3IgJWQgc3ViaW50ZXJ2YWxzXG4iLCBxZGF0YVtq
XS5uKTsKICAgICAgICAgICAgcWRhdGFbal0udCA9IHFkYXRhW2orMV0udDsKICAgICAgICAgICAg
ICAgICAgICAgICAgZGVscSA9IChkb3VibGUpZG1heCAvIGdhbXV0IC0gMTsKICAgICAgICAgICAg
cWRhdGFbal0ucXAgPSBkZWxxIC8gcWRhdGFbal0udCArIDEuMCAvIGdhbXV0IC8gcWRhdGFbal0u
dDsKICAgICAgICB9CiAgICAgICAgbWVtdXNlID0gKGludCkocWRhdGFbal0ubiAqIChzaXplb2Yo
UkVDVCkrc2l6ZW9mKGludCkrc2l6ZW9mKGludCkpKTsKICAgICAgICAgICAgICAgIG1lbXJlZiA9
ICg5MCAqIHNpemVvZihpbnQpICsgMTAgKiBzaXplb2YoaW50KSkgKiBxZGF0YVtqXS5uOwogICAg
ICAgICAgICAgICAgbWVtcmVmIC89ICgxMDI0ICogMTAyNCk7CiAgICAgICAgICAgICAgICBiYW5k
d3QgPSBtZW1yZWYgLyBxZGF0YVtqXS50OwogICAgICAgIGZwcmludGYoY3VydiwiJTEyLjEwbGYg
JWxmICVsZiAlbGYgJTEwZCAlbGZcbiIsCiAgICAgICAgICAgICAgICBxZGF0YVtqXS50LCBxZGF0
YVtqXS5xcCwgcWRhdGFbal0uZGVscSwKICAgICAgICAgICAgICAgIChkb3VibGUpcWRhdGFbal0u
biwgbWVtdXNlLCBiYW5kd3QpOwoKCgogICAgICAgIHFwdG1wID0gcWRhdGFbal0ucXAgKiBxZGF0
YVtqXS50IC8gcWRhdGFbaisxXS50OwogICAgICAgIHFwbmV0ICs9IChxZGF0YVtqXS5xcCAtIHFw
dG1wKTsKICAgIH0KICAgIHByaW50ZigiXG5GaW5pc2hlZCB3aXRoICVsZiBuZXQgUVVJUHNcbiIs
IHFwbmV0KTsKICAgIGZjbG9zZShjdXJ2KTsKfQoKCgpkb3VibGUKUnVuKGludCBsYXBzLAogICAg
aW50ICpnYW11dCwgaW50IHNjeCwgaW50IHNjeSwgaW50IGRtYXgsIGludCBtZW1yeSwgRVJST1Ig
KmVmbGFnKQp7CiAgICBSRUNUICpyZWN0PSgodm9pZCAqKTApOwogICAgaW50ICppeGVzPSgodm9p
ZCAqKTApOwogICAgaW50ICplcnJzPSgodm9pZCAqKTApOwoKICAgIGludCBpLCBqOwoKICAgIGRv
dWJsZSB0MCwgdDEsIHRtLAogICAgICAgICAgICBtaW50ID0gMWUzMjsKCiAgICAqZWZsYWcgPSAw
OwoKCiAgICByZWN0ID0gKFJFQ1QgKiltYWxsb2MoKGludCkobWVtcnkgKiBzaXplb2YoUkVDVCkp
KTsKICAgIGVycnMgPSAoaW50ICopbWFsbG9jKChpbnQpKG1lbXJ5ICogc2l6ZW9mKGludCkgKiAy
KSk7CiAgICBpeGVzID0gKGludCAqKW1hbGxvYygoaW50KShtZW1yeSAqIHNpemVvZihpbnQpICog
MikpOwoKCiAgICBpZiAoKHJlY3QgPT0gKCh2b2lkICopMCkpIHx8IChlcnJzID09ICgodm9pZCAq
KTApKSB8fCAoaXhlcyA9PSAoKHZvaWQgKikwKSkpCiAgICB7CiAgICAgICAgaWYgKHJlY3QgIT0g
KCh2b2lkICopMCkpCiAgICAgICAgICAgIGZyZWUocmVjdCk7CiAgICAgICAgaWYgKGVycnMgIT0g
KCh2b2lkICopMCkpCiAgICAgICAgICAgIGZyZWUoZXJycyk7CiAgICAgICAgaWYgKGl4ZXMgIT0g
KCh2b2lkICopMCkpCiAgICAgICAgICAgIGZyZWUoaXhlcyk7CiAgICAgICAgKmVmbGFnID0gMjsK
ICAgICAgICByZXR1cm4gKC0yKTsKICAgIH0KCiAgICBmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKQog
ICAgewogICAgICAgIHQwID0gV2hlbigpOwoKCiAgICAgICAgZm9yIChqID0gMDsgaiA8IGxhcHM7
IGorKykKICAgICAgICAgICAgKmdhbXV0ID0gSGludCgmc2N4LCAmc2N5LCAmZG1heCwgJm1lbXJ5
LCByZWN0LCBlcnJzLCBpeGVzLCBlZmxhZyk7CgogICAgICAgIHQxID0gV2hlbigpOwoKCiAgICAg
ICAgdG0gPSAodDEgLSB0MCkgLyBsYXBzOwogICAgICAgIG1pbnQgPSAoKChtaW50KSA+ICh0bSkp
PyAodG0pOiAobWludCkpOwogICAgfQoKCiAgICBmcmVlKHJlY3QpOwogICAgZnJlZShlcnJzKTsK
ICAgIGZyZWUoaXhlcyk7CgogICAgcmV0dXJuIChtaW50KTsKfQoKCmRvdWJsZQpXaGVuKCkKewog
ICAgc3RydWN0IHRpbWV2YWwgdHA7CiAgICBnZXR0aW1lb2ZkYXkoJnRwLCAoKHZvaWQgKikwKSk7
CiAgICByZXR1cm4gKChkb3VibGUpIHRwLnR2X3NlYyArIChkb3VibGUpIHRwLnR2X3VzZWMgKiAx
ZS02KTsKfQp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CnR5cGVkZWYgX19idWlsdGluX3Zh
X2xpc3QgX19nbnVjX3ZhX2xpc3Q7CnR5cGVkZWYgbG9uZyBfb2ZmX3Q7Cl9fZXh0ZW5zaW9uX18g
dHlwZWRlZiBsb25nIGxvbmcgX29mZjY0X3Q7CgoKdHlwZWRlZiBpbnQgX3NzaXplX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50Owog
IHVuaW9uCiAgewogICAgd2ludF90IF9fd2NoOwogICAgdW5zaWduZWQgY2hhciBfX3djaGJbNF07
CiAgfSBfX3ZhbHVlOwp9IF9tYnN0YXRlX3Q7Cgp0eXBlZGVmIGludCBfZmxvY2tfdDsKCgoKCgoK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fVUxvbmc7CnN0cnVjdCBfQmlnaW50CnsKICBzdHJ1Y3Qg
X0JpZ2ludCAqX25leHQ7CiAgaW50IF9rLCBfbWF4d2RzLCBfc2lnbiwgX3dkczsKICBfX1VMb25n
IF94WzFdOwp9OwoKCnN0cnVjdCBfX3RtCnsKICBpbnQgX190bV9zZWM7CiAgaW50IF9fdG1fbWlu
OwogIGludCBfX3RtX2hvdXI7CiAgaW50IF9fdG1fbWRheTsKICBpbnQgX190bV9tb247CiAgaW50
IF9fdG1feWVhcjsKICBpbnQgX190bV93ZGF5OwogIGludCBfX3RtX3lkYXk7CiAgaW50IF9fdG1f
aXNkc3Q7Cn07CnN0cnVjdCBfYXRleGl0IHsKICAgICAgICBzdHJ1Y3QgX2F0ZXhpdCAqX25leHQ7
CiAgICAgICAgaW50IF9pbmQ7CiAgICAgICAgdm9pZCAoKl9mbnNbMzJdKSh2b2lkKTsKICAgICAg
ICB2b2lkICpfZm5hcmdzWzMyXTsKICAgICAgICBfX1VMb25nIF9mbnR5cGVzOwp9OwpzdHJ1Y3Qg
X19zYnVmIHsKICAgICAgICB1bnNpZ25lZCBjaGFyICpfYmFzZTsKICAgICAgICBpbnQgX3NpemU7
Cn07CgoKCgoKCnR5cGVkZWYgbG9uZyBfZnBvc190OwpzdHJ1Y3QgX19zRklMRSB7CiAgdW5zaWdu
ZWQgY2hhciAqX3A7CiAgaW50IF9yOwogIGludCBfdzsKICBzaG9ydCBfZmxhZ3M7CiAgc2hvcnQg
X2ZpbGU7CiAgc3RydWN0IF9fc2J1ZiBfYmY7CiAgaW50IF9sYmZzaXplOwoKCgoKCgogIHZvaWQg
KiBfY29va2llOwoKICBpbnQgKCpfcmVhZCkgKHZvaWQgKiBfY29va2llLCBjaGFyICpfYnVmLCBp
bnQgX24pOwogIGludCAoKl93cml0ZSkgKHZvaWQgKiBfY29va2llLCBjb25zdCBjaGFyICpfYnVm
LCBpbnQgX24pOwoKICBfZnBvc190ICgqX3NlZWspICh2b2lkICogX2Nvb2tpZSwgX2Zwb3NfdCBf
b2Zmc2V0LCBpbnQgX3doZW5jZSk7CiAgaW50ICgqX2Nsb3NlKSAodm9pZCAqIF9jb29raWUpOwoK
CiAgc3RydWN0IF9fc2J1ZiBfdWI7CiAgdW5zaWduZWQgY2hhciAqX3VwOwogIGludCBfdXI7CgoK
ICB1bnNpZ25lZCBjaGFyIF91YnVmWzNdOwogIHVuc2lnbmVkIGNoYXIgX25idWZbMV07CgoKICBz
dHJ1Y3QgX19zYnVmIF9sYjsKCgogIGludCBfYmxrc2l6ZTsKICBpbnQgX29mZnNldDsKCgogIHN0
cnVjdCBfcmVlbnQgKl9kYXRhOwoKCgogIF9mbG9ja190IF9sb2NrOwoKfTsKdHlwZWRlZiBzdHJ1
Y3QgX19zRklMRSBfX0ZJTEU7CgoKc3RydWN0IF9nbHVlCnsKICBzdHJ1Y3QgX2dsdWUgKl9uZXh0
OwogIGludCBfbmlvYnM7CiAgX19GSUxFICpfaW9iczsKfTsKc3RydWN0IF9yYW5kNDggewogIHVu
c2lnbmVkIHNob3J0IF9zZWVkWzNdOwogIHVuc2lnbmVkIHNob3J0IF9tdWx0WzNdOwogIHVuc2ln
bmVkIHNob3J0IF9hZGQ7CgoKCgp9OwpzdHJ1Y3QgX3JlZW50CnsKICBpbnQgX2Vycm5vOwoKCgoK
ICBfX0ZJTEUgKl9zdGRpbiwgKl9zdGRvdXQsICpfc3RkZXJyOwoKICBpbnQgX2luYzsKICBjaGFy
IF9lbWVyZ2VuY3lbMjVdOwoKICBpbnQgX2N1cnJlbnRfY2F0ZWdvcnk7CiAgY29uc3QgY2hhciAq
X2N1cnJlbnRfbG9jYWxlOwoKICBpbnQgX19zZGlkaW5pdDsKCiAgdm9pZCAoKl9fY2xlYW51cCkg
KHN0cnVjdCBfcmVlbnQgKik7CgoKICBzdHJ1Y3QgX0JpZ2ludCAqX3Jlc3VsdDsKICBpbnQgX3Jl
c3VsdF9rOwogIHN0cnVjdCBfQmlnaW50ICpfcDVzOwogIHN0cnVjdCBfQmlnaW50ICoqX2ZyZWVs
aXN0OwoKCiAgaW50IF9jdnRsZW47CiAgY2hhciAqX2N2dGJ1ZjsKCiAgdW5pb24KICAgIHsKICAg
ICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgdW5zaWduZWQgaW50IF91bnVzZWRfcmFuZDsK
ICAgICAgICAgIGNoYXIgKiBfc3RydG9rX2xhc3Q7CiAgICAgICAgICBjaGFyIF9hc2N0aW1lX2J1
ZlsyNl07CiAgICAgICAgICBzdHJ1Y3QgX190bSBfbG9jYWx0aW1lX2J1ZjsKICAgICAgICAgIGlu
dCBfZ2FtbWFfc2lnbmdhbTsKICAgICAgICAgIF9fZXh0ZW5zaW9uX18gdW5zaWduZWQgbG9uZyBs
b25nIF9yYW5kX25leHQ7CiAgICAgICAgICBzdHJ1Y3QgX3JhbmQ0OCBfcjQ4OwogICAgICAgICAg
X21ic3RhdGVfdCBfbWJsZW5fc3RhdGU7CiAgICAgICAgICBfbWJzdGF0ZV90IF9tYnRvd2Nfc3Rh
dGU7CiAgICAgICAgICBfbWJzdGF0ZV90IF93Y3RvbWJfc3RhdGU7CiAgICAgICAgICBjaGFyIF9s
NjRhX2J1Zls4XTsKICAgICAgICAgIGNoYXIgX3NpZ25hbF9idWZbMjRdOwogICAgICAgICAgaW50
IF9nZXRkYXRlX2VycjsKICAgICAgICAgIF9tYnN0YXRlX3QgX21icmxlbl9zdGF0ZTsKICAgICAg
ICAgIF9tYnN0YXRlX3QgX21icnRvd2Nfc3RhdGU7CiAgICAgICAgICBfbWJzdGF0ZV90IF9tYnNy
dG93Y3Nfc3RhdGU7CiAgICAgICAgICBfbWJzdGF0ZV90IF93Y3J0b21iX3N0YXRlOwogICAgICAg
ICAgX21ic3RhdGVfdCBfd2NzcnRvbWJzX3N0YXRlOwogICAgICAgIH0gX3JlZW50OwoKCgogICAg
ICBzdHJ1Y3QKICAgICAgICB7CgogICAgICAgICAgdW5zaWduZWQgY2hhciAqIF9uZXh0ZlszMF07
CiAgICAgICAgICB1bnNpZ25lZCBpbnQgX25tYWxsb2NbMzBdOwogICAgICAgIH0gX3VudXNlZDsK
ICAgIH0gX25ldzsKCgogIHN0cnVjdCBfYXRleGl0ICpfYXRleGl0OwogIHN0cnVjdCBfYXRleGl0
IF9hdGV4aXQwOwoKCiAgdm9pZCAoKiooX3NpZ19mdW5jKSkoaW50KTsKCgoKCiAgc3RydWN0IF9n
bHVlIF9fc2dsdWU7CiAgX19GSUxFIF9fc2ZbM107Cn07CmV4dGVybiBzdHJ1Y3QgX3JlZW50ICpf
aW1wdXJlX3B0ciA7Cgp2b2lkIF9yZWNsYWltX3JlZW50IChzdHJ1Y3QgX3JlZW50ICopOwp0eXBl
ZGVmIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWlu
dDE2X3Q7CgoKCgoKdHlwZWRlZiBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBf
X3VpbnQzMl90OwoKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIF9faW50NjRf
dDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3VpbnQ2NF90Owp0
eXBlZGVmIGludCBwdHJkaWZmX3Q7CnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKdHlwZWRlZiBs
b25nIGludCBfX29mZl90Owp0eXBlZGVmIGludCBfX3BpZF90OwoKX19leHRlbnNpb25fXyB0eXBl
ZGVmIGxvbmcgbG9uZyBpbnQgX19sb2ZmX3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2NoYXI7
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9p
bnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7CgoKCnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwoKCgp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgY2xvY2tfdDsKCgoKCnR5cGVkZWYgbG9uZyB0aW1lX3Q7CgoKCgpzdHJ1Y3QgdGltZXNw
ZWMgewogIHRpbWVfdCB0dl9zZWM7CiAgbG9uZyB0dl9uc2VjOwp9OwoKc3RydWN0IGl0aW1lcnNw
ZWMgewogIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsKICBzdHJ1Y3QgdGltZXNwZWMgaXRf
dmFsdWU7Cn07CgoKdHlwZWRlZiBsb25nIGRhZGRyX3Q7CnR5cGVkZWYgY2hhciAqIGNhZGRyX3Q7
CgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGlub190Owp0eXBlZGVmIHNob3J0IGRldl90
OwoKCgoKdHlwZWRlZiBsb25nIG9mZl90OwoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aWRfdDsK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBnaWRfdDsKCgp0eXBlZGVmIGludCBwaWRfdDsKdHlwZWRl
ZiBsb25nIGtleV90Owp0eXBlZGVmIF9zc2l6ZV90IHNzaXplX3Q7CnR5cGVkZWYgdW5zaWduZWQg
aW50IG1vZGVfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKCgoKdHlwZWRl
ZiB1bnNpZ25lZCBzaG9ydCBubGlua190Owp0eXBlZGVmIGxvbmcgZmRfbWFzazsKCgoKCgoKCnR5
cGVkZWYgc3RydWN0IF90eXBlc19mZF9zZXQgewogICAgICAgIGZkX21hc2sgZmRzX2JpdHNbKCgo
NjQpKygoKHNpemVvZiAoZmRfbWFzaykgKiA4KSktMSkpLygoc2l6ZW9mIChmZF9tYXNrKSAqIDgp
KSldOwp9IF90eXBlc19mZF9zZXQ7CgoKdHlwZWRlZiBfZnBvc190IGZwb3NfdDsKdHlwZWRlZiBf
X0ZJTEUgRklMRTsKRklMRSAqIHRtcGZpbGUgKHZvaWQpOwpjaGFyICogdG1wbmFtIChjaGFyICop
OwppbnQgZmNsb3NlIChGSUxFICopOwppbnQgZmZsdXNoIChGSUxFICopOwpGSUxFICogZnJlb3Bl
biAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIEZJTEUgKik7CnZvaWQgc2V0YnVmIChGSUxF
ICosIGNoYXIgKik7CmludCBzZXR2YnVmIChGSUxFICosIGNoYXIgKiwgaW50LCBzaXplX3QpOwpp
bnQgZnByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBmc2NhbmYgKEZJTEUg
KiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgcHJpbnRmIChjb25zdCBjaGFyICosIC4uLik7Cmlu
dCBzY2FuZiAoY29uc3QgY2hhciAqLCAuLi4pOwppbnQgc3NjYW5mIChjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKiwgLi4uKTsKaW50IHZmcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwgX19n
bnVjX3ZhX2xpc3QpOwppbnQgdnByaW50ZiAoY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7
CmludCB2c3ByaW50ZiAoY2hhciAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50
IGZnZXRjIChGSUxFICopOwpjaGFyICogZmdldHMgKGNoYXIgKiwgaW50LCBGSUxFICopOwppbnQg
ZnB1dGMgKGludCwgRklMRSAqKTsKaW50IGZwdXRzIChjb25zdCBjaGFyICosIEZJTEUgKik7Cmlu
dCBnZXRjIChGSUxFICopOwppbnQgZ2V0Y2hhciAodm9pZCk7CmNoYXIgKiBnZXRzIChjaGFyICop
OwppbnQgcHV0YyAoaW50LCBGSUxFICopOwppbnQgcHV0Y2hhciAoaW50KTsKaW50IHB1dHMgKGNv
bnN0IGNoYXIgKik7CmludCB1bmdldGMgKGludCwgRklMRSAqKTsKc2l6ZV90IGZyZWFkICh2b2lk
ICosIHNpemVfdCBfc2l6ZSwgc2l6ZV90IF9uLCBGSUxFICopOwpzaXplX3QgZndyaXRlIChjb25z
dCB2b2lkICogLCBzaXplX3QgX3NpemUsIHNpemVfdCBfbiwgRklMRSAqKTsKaW50IGZnZXRwb3Mg
KEZJTEUgKiwgZnBvc190ICopOwppbnQgZnNlZWsgKEZJTEUgKiwgbG9uZywgaW50KTsKaW50IGZz
ZXRwb3MgKEZJTEUgKiwgY29uc3QgZnBvc190ICopOwpsb25nIGZ0ZWxsICggRklMRSAqKTsKdm9p
ZCByZXdpbmQgKEZJTEUgKik7CnZvaWQgY2xlYXJlcnIgKEZJTEUgKik7CmludCBmZW9mIChGSUxF
ICopOwppbnQgZmVycm9yIChGSUxFICopOwp2b2lkIHBlcnJvciAoY29uc3QgY2hhciAqKTsKCkZJ
TEUgKiBmb3BlbiAoY29uc3QgY2hhciAqX25hbWUsIGNvbnN0IGNoYXIgKl90eXBlKTsKaW50IHNw
cmludGYgKGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgcmVtb3ZlIChjb25zdCBjaGFy
ICopOwppbnQgcmVuYW1lIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKaW50IGFzcHJp
bnRmIChjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBmc2Vla28gKEZJTEUgKiwgb2Zm
X3QsIGludCk7Cm9mZl90IGZ0ZWxsbyAoIEZJTEUgKik7CmludCB2ZmlwcmludGYgKEZJTEUgKiwg
Y29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBpcHJpbnRmIChjb25zdCBjaGFyICos
IC4uLik7CmludCBmaXByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBzaXBy
aW50ZiAoY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmNoYXIgKiB0ZW1wbmFtIChjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKik7CmludCB2YXNwcmludGYgKGNoYXIgKiosIGNvbnN0IGNoYXIg
KiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgdnNucHJpbnRmIChjaGFyICosIHNpemVfdCwgY29uc3Qg
Y2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCB2ZnNjYW5mIChGSUxFICosIGNvbnN0IGNoYXIg
KiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgdnNjYW5mIChjb25zdCBjaGFyICosIF9fZ251Y192YV9s
aXN0KTsKaW50IHZzc2NhbmYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFf
bGlzdCk7CgppbnQgZmNsb3NlYWxsICh2b2lkKTsKaW50IHNucHJpbnRmIChjaGFyICosIHNpemVf
dCwgY29uc3QgY2hhciAqLCAuLi4pOwpGSUxFICogZmRvcGVuIChpbnQsIGNvbnN0IGNoYXIgKik7
CgppbnQgZmlsZW5vIChGSUxFICopOwppbnQgZ2V0dyAoRklMRSAqKTsKaW50IHBjbG9zZSAoRklM
RSAqKTsKRklMRSAqIHBvcGVuIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBwdXR3
IChpbnQsIEZJTEUgKik7CnZvaWQgc2V0YnVmZmVyIChGSUxFICosIGNoYXIgKiwgaW50KTsKaW50
IHNldGxpbmVidWYgKEZJTEUgKik7CmludCBnZXRjX3VubG9ja2VkIChGSUxFICopOwppbnQgZ2V0
Y2hhcl91bmxvY2tlZCAodm9pZCk7CnZvaWQgZmxvY2tmaWxlIChGSUxFICopOwppbnQgZnRyeWxv
Y2tmaWxlIChGSUxFICopOwp2b2lkIGZ1bmxvY2tmaWxlIChGSUxFICopOwppbnQgcHV0Y191bmxv
Y2tlZCAoaW50LCBGSUxFICopOwppbnQgcHV0Y2hhcl91bmxvY2tlZCAoaW50KTsKCgoKCgoKaW50
IF9hc3ByaW50Zl9yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKiosIGNvbnN0IGNoYXIgKiwgLi4u
KTsKaW50IF9mY2xvc2VhbGxfciAoc3RydWN0IF9yZWVudCAqKTsKRklMRSAqIF9mZG9wZW5fciAo
c3RydWN0IF9yZWVudCAqLCBpbnQsIGNvbnN0IGNoYXIgKik7CkZJTEUgKiBfZm9wZW5fciAoc3Ry
dWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBfZnNjYW5mX3Ig
KHN0cnVjdCBfcmVlbnQgKiwgRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBfZ2V0Y2hh
cl9yIChzdHJ1Y3QgX3JlZW50ICopOwpjaGFyICogX2dldHNfciAoc3RydWN0IF9yZWVudCAqLCBj
aGFyICopOwppbnQgX2lwcmludGZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIC4u
Lik7CmludCBfbWtzdGVtcF9yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKik7CmNoYXIgKiBfbWt0
ZW1wX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqKTsKdm9pZCBfcGVycm9yX3IgKHN0cnVjdCBf
cmVlbnQgKiwgY29uc3QgY2hhciAqKTsKaW50IF9wcmludGZfciAoc3RydWN0IF9yZWVudCAqLCBj
b25zdCBjaGFyICosIC4uLik7CmludCBfcHV0Y2hhcl9yIChzdHJ1Y3QgX3JlZW50ICosIGludCk7
CmludCBfcHV0c19yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKik7CmludCBfcmVtb3Zl
X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqKTsKaW50IF9yZW5hbWVfciAoc3RydWN0
IF9yZWVudCAqLCBjb25zdCBjaGFyICpfb2xkLCBjb25zdCBjaGFyICpfbmV3KTsKCmludCBfc2Nh
bmZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBfc3ByaW50Zl9y
IChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgX3NucHJp
bnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgLi4u
KTsKaW50IF9zc2NhbmZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKiwgLi4uKTsKY2hhciAqIF90ZW1wbmFtX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICopOwpGSUxFICogX3RtcGZpbGVfciAoc3RydWN0IF9yZWVudCAqKTsK
Y2hhciAqIF90bXBuYW1fciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICopOwppbnQgX3Zhc3ByaW50
Zl9yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKiosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xp
c3QpOwppbnQgX3ZmcHJpbnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgRklMRSAqLCBjb25zdCBjaGFy
ICosIF9fZ251Y192YV9saXN0KTsKaW50IF92cHJpbnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29u
c3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBfdnNwcmludGZfciAoc3RydWN0IF9yZWVu
dCAqLCBjaGFyICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgX3ZzbnByaW50
Zl9yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIF9fZ251
Y192YV9saXN0KTsKaW50IF92ZnNjYW5mX3IgKHN0cnVjdCBfcmVlbnQgKiwgRklMRSAqLCBjb25z
dCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50IF92c2NhbmZfciAoc3RydWN0IF9yZWVudCAq
LCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50IF92c3NjYW5mX3IgKHN0cnVjdCBf
cmVlbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKCnNz
aXplX3QgX19nZXRkZWxpbSAoY2hhciAqKiwgc2l6ZV90ICosIGludCwgRklMRSAqKTsKc3NpemVf
dCBfX2dldGxpbmUgKGNoYXIgKiosIHNpemVfdCAqLCBGSUxFICopOwppbnQgX19zcmdldCAoRklM
RSAqKTsKaW50IF9fc3didWYgKGludCwgRklMRSAqKTsKCgoKCgoKRklMRSAqZnVub3BlbiAoY29u
c3Qgdm9pZCAqIF9jb29raWUsIGludCAoKnJlYWRmbikodm9pZCAqIF9jb29raWUsIGNoYXIgKl9i
dWYsIGludCBfbiksIGludCAoKndyaXRlZm4pKHZvaWQgKiBfY29va2llLCBjb25zdCBjaGFyICpf
YnVmLCBpbnQgX24pLCBmcG9zX3QgKCpzZWVrZm4pKHZvaWQgKiBfY29va2llLCBmcG9zX3QgX29m
ZiwgaW50IF93aGVuY2UpLCBpbnQgKCpjbG9zZWZuKSh2b2lkICogX2Nvb2tpZSkpOwoKCgp0eXBl
ZGVmIHN0cnVjdAp7CiAgaW50IHF1b3Q7CiAgaW50IHJlbTsKfSBkaXZfdDsKCnR5cGVkZWYgc3Ry
dWN0CnsKICBsb25nIHF1b3Q7CiAgbG9uZyByZW07Cn0gbGRpdl90OwpleHRlcm4gaW50IF9fbWJf
Y3VyX21heDsKCgoKdm9pZCBhYm9ydCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7
CmludCBhYnMgKGludCk7CmludCBhdGV4aXQgKHZvaWQgKCpfX2Z1bmMpKHZvaWQpKTsKZG91Ymxl
IGF0b2YgKGNvbnN0IGNoYXIgKl9fbnB0cik7CgpmbG9hdCBhdG9mZiAoY29uc3QgY2hhciAqX19u
cHRyKTsKCmludCBhdG9pIChjb25zdCBjaGFyICpfX25wdHIpOwpsb25nIGF0b2wgKGNvbnN0IGNo
YXIgKl9fbnB0cik7CnZvaWQgKiBic2VhcmNoIChjb25zdCB2b2lkICogX19rZXksIGNvbnN0IHZv
aWQgKiBfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBpbnQgKCogX2NvbXBh
cikgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CgoKCgp2b2lkICogY2FsbG9jIChzaXpl
X3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSk7CmRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBf
X2Rlbm9tKTsKdm9pZCBleGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChub3JldHVy
bikpOwp2b2lkIGZyZWUgKHZvaWQgKik7CmNoYXIgKiBnZXRlbnYgKGNvbnN0IGNoYXIgKl9fc3Ry
aW5nKTsKY2hhciAqIF9nZXRlbnZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICpfX3N0
cmluZyk7CmNoYXIgKiBfZmluZGVudiAoY29uc3QgY2hhciAqLCBpbnQgKik7CmNoYXIgKiBfZmlu
ZGVudl9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKiwgaW50ICopOwpsb25nIGxhYnMg
KGxvbmcpOwpsZGl2X3QgbGRpdiAobG9uZyBfX251bWVyLCBsb25nIF9fZGVub20pOwp2b2lkICog
bWFsbG9jIChzaXplX3QgX19zaXplKTsKaW50IG1ibGVuIChjb25zdCBjaGFyICosIHNpemVfdCk7
CmludCBfbWJsZW5fciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgX21i
c3RhdGVfdCAqKTsKaW50IG1idG93YyAod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7
CmludCBfbWJ0b3djX3IgKHN0cnVjdCBfcmVlbnQgKiwgd2NoYXJfdCAqLCBjb25zdCBjaGFyICos
IHNpemVfdCwgX21ic3RhdGVfdCAqKTsKaW50IHdjdG9tYiAoY2hhciAqLCB3Y2hhcl90KTsKaW50
IF93Y3RvbWJfciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICosIHdjaGFyX3QsIF9tYnN0YXRlX3Qg
Kik7CnNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CnNp
emVfdCBfbWJzdG93Y3NfciAoc3RydWN0IF9yZWVudCAqLCB3Y2hhcl90ICosIGNvbnN0IGNoYXIg
Kiwgc2l6ZV90LCBfbWJzdGF0ZV90ICopOwpzaXplX3Qgd2NzdG9tYnMgKGNoYXIgKiwgY29uc3Qg
d2NoYXJfdCAqLCBzaXplX3QpOwpzaXplX3QgX3djc3RvbWJzX3IgKHN0cnVjdCBfcmVlbnQgKiwg
Y2hhciAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCwgX21ic3RhdGVfdCAqKTsKCgppbnQgbWtz
dGVtcCAoY2hhciAqKTsKY2hhciAqIG1rdGVtcCAoY2hhciAqKTsKCgp2b2lkIHFzb3J0ICh2b2lk
ICogX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgaW50KCpfY29tcGFyKShj
b25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwppbnQgcmFuZCAodm9pZCk7CnZvaWQgKiByZWFs
bG9jICh2b2lkICogX19yLCBzaXplX3QgX19zaXplKTsKdm9pZCBzcmFuZCAodW5zaWduZWQgX19z
ZWVkKTsKZG91YmxlIHN0cnRvZCAoY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSKTsK
ZG91YmxlIF9zdHJ0b2RfciAoc3RydWN0IF9yZWVudCAqLGNvbnN0IGNoYXIgKl9fbiwgY2hhciAq
Kl9fZW5kX1BUUik7CgpmbG9hdCBzdHJ0b2RmIChjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2Vu
ZF9QVFIpOwoKbG9uZyBzdHJ0b2wgKGNvbnN0IGNoYXIgKl9fbiwgY2hhciAqKl9fZW5kX1BUUiwg
aW50IF9fYmFzZSk7CmxvbmcgX3N0cnRvbF9yIChzdHJ1Y3QgX3JlZW50ICosY29uc3QgY2hhciAq
X19uLCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsKdW5zaWduZWQgbG9uZyBzdHJ0b3Vs
IChjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9QVFIsIGludCBfX2Jhc2UpOwp1bnNpZ25l
ZCBsb25nIF9zdHJ0b3VsX3IgKHN0cnVjdCBfcmVlbnQgKixjb25zdCBjaGFyICpfX24sIGNoYXIg
KipfX2VuZF9QVFIsIGludCBfX2Jhc2UpOwoKaW50IHN5c3RlbSAoY29uc3QgY2hhciAqX19zdHJp
bmcpOwoKCmxvbmcgYTY0bCAoY29uc3QgY2hhciAqX19pbnB1dCk7CmNoYXIgKiBsNjRhIChsb25n
IF9faW5wdXQpOwpjaGFyICogX2w2NGFfciAoc3RydWN0IF9yZWVudCAqLGxvbmcgX19pbnB1dCk7
CmludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKShpbnQsIHZvaWQgKiksdm9pZCAqIF9fYXJnKTsK
dm9pZCBfRXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsKaW50
IHB1dGVudiAoY29uc3QgY2hhciAqX19zdHJpbmcpOwppbnQgX3B1dGVudl9yIChzdHJ1Y3QgX3Jl
ZW50ICosIGNvbnN0IGNoYXIgKl9fc3RyaW5nKTsKaW50IHNldGVudiAoY29uc3QgY2hhciAqX19z
dHJpbmcsIGNvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX292ZXJ3cml0ZSk7CmludCBfc2V0ZW52
X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqX19zdHJpbmcsIGNvbnN0IGNoYXIgKl9f
dmFsdWUsIGludCBfX292ZXJ3cml0ZSk7CgpjaGFyICogZ2N2dCAoZG91YmxlLGludCxjaGFyICop
OwpjaGFyICogZ2N2dGYgKGZsb2F0LGludCxjaGFyICopOwpjaGFyICogZmN2dCAoZG91YmxlLGlu
dCxpbnQgKixpbnQgKik7CmNoYXIgKiBmY3Z0ZiAoZmxvYXQsaW50LGludCAqLGludCAqKTsKY2hh
ciAqIGVjdnQgKGRvdWJsZSxpbnQsaW50ICosaW50ICopOwpjaGFyICogZWN2dGJ1ZiAoZG91Ymxl
LCBpbnQsIGludCosIGludCosIGNoYXIgKik7CmNoYXIgKiBmY3Z0YnVmIChkb3VibGUsIGludCwg
aW50KiwgaW50KiwgY2hhciAqKTsKY2hhciAqIGVjdnRmIChmbG9hdCxpbnQsaW50ICosaW50ICop
OwpjaGFyICogZHRvYSAoZG91YmxlLCBpbnQsIGludCwgaW50ICosIGludCosIGNoYXIqKik7Cmlu
dCByYW5kX3IgKHVuc2lnbmVkICpfX3NlZWQpOwoKZG91YmxlIGRyYW5kNDggKHZvaWQpOwpkb3Vi
bGUgX2RyYW5kNDhfciAoc3RydWN0IF9yZWVudCAqKTsKZG91YmxlIGVyYW5kNDggKHVuc2lnbmVk
IHNob3J0IFszXSk7CmRvdWJsZSBfZXJhbmQ0OF9yIChzdHJ1Y3QgX3JlZW50ICosIHVuc2lnbmVk
IHNob3J0IFszXSk7CmxvbmcganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgWzNdKTsKbG9uZyBfanJh
bmQ0OF9yIChzdHJ1Y3QgX3JlZW50ICosIHVuc2lnbmVkIHNob3J0IFszXSk7CnZvaWQgbGNvbmc0
OCAodW5zaWduZWQgc2hvcnQgWzddKTsKdm9pZCBfbGNvbmc0OF9yIChzdHJ1Y3QgX3JlZW50ICos
IHVuc2lnbmVkIHNob3J0IFs3XSk7CmxvbmcgbHJhbmQ0OCAodm9pZCk7CmxvbmcgX2xyYW5kNDhf
ciAoc3RydWN0IF9yZWVudCAqKTsKbG9uZyBtcmFuZDQ4ICh2b2lkKTsKbG9uZyBfbXJhbmQ0OF9y
IChzdHJ1Y3QgX3JlZW50ICopOwpsb25nIG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IFszXSk7Cmxv
bmcgX25yYW5kNDhfciAoc3RydWN0IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBbM10pOwp1bnNp
Z25lZCBzaG9ydCAqCiAgICAgICBzZWVkNDggKHVuc2lnbmVkIHNob3J0IFszXSk7CnVuc2lnbmVk
IHNob3J0ICoKICAgICAgIF9zZWVkNDhfciAoc3RydWN0IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9y
dCBbM10pOwp2b2lkIHNyYW5kNDggKGxvbmcpOwp2b2lkIF9zcmFuZDQ4X3IgKHN0cnVjdCBfcmVl
bnQgKiwgbG9uZyk7CmxvbmcgbG9uZyBzdHJ0b2xsIChjb25zdCBjaGFyICpfX24sIGNoYXIgKipf
X2VuZF9QVFIsIGludCBfX2Jhc2UpOwpsb25nIGxvbmcgX3N0cnRvbGxfciAoc3RydWN0IF9yZWVu
dCAqLCBjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9QVFIsIGludCBfX2Jhc2UpOwp1bnNp
Z25lZCBsb25nIGxvbmcgc3RydG91bGwgKGNvbnN0IGNoYXIgKl9fbiwgY2hhciAqKl9fZW5kX1BU
UiwgaW50IF9fYmFzZSk7CnVuc2lnbmVkIGxvbmcgbG9uZyBfc3RydG91bGxfciAoc3RydWN0IF9y
ZWVudCAqLCBjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9QVFIsIGludCBfX2Jhc2UpOwoK
CnZvaWQgY2ZyZWUgKHZvaWQgKik7CmNoYXIgKiBfZHRvYV9yIChzdHJ1Y3QgX3JlZW50ICosIGRv
dWJsZSwgaW50LCBpbnQsIGludCAqLCBpbnQqLCBjaGFyKiopOwoKdm9pZCAqIF9tYWxsb2NfciAo
c3RydWN0IF9yZWVudCAqLCBzaXplX3QpOwp2b2lkICogX2NhbGxvY19yIChzdHJ1Y3QgX3JlZW50
ICosIHNpemVfdCwgc2l6ZV90KTsKdm9pZCBfZnJlZV9yIChzdHJ1Y3QgX3JlZW50ICosIHZvaWQg
Kik7CnZvaWQgKiBfcmVhbGxvY19yIChzdHJ1Y3QgX3JlZW50ICosIHZvaWQgKiwgc2l6ZV90KTsK
dm9pZCBfbXN0YXRzX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqKTsKCmludCBfc3lzdGVtX3Ig
KHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqKTsKCnZvaWQgX19lcHJpbnRmIChjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50LCBjb25zdCBjaGFyICopOwoKCgoKCgoK
CnVuaW9uIF9fZG1hdGgKewogIF9fVUxvbmcgaVsyXTsKICBkb3VibGUgZDsKfTsKCgoKCmV4dGVy
biBjb25zdCB1bmlvbiBfX2RtYXRoIF9faW5maW5pdHlbXTsKZXh0ZXJuIGRvdWJsZSBhdGFuIChk
b3VibGUpOwpleHRlcm4gZG91YmxlIGNvcyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzaW4gKGRv
dWJsZSk7CmV4dGVybiBkb3VibGUgdGFuIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHRhbmggKGRv
dWJsZSk7CmV4dGVybiBkb3VibGUgZnJleHAgKGRvdWJsZSwgaW50ICopOwpleHRlcm4gZG91Ymxl
IG1vZGYgKGRvdWJsZSwgZG91YmxlICopOwpleHRlcm4gZG91YmxlIGNlaWwgKGRvdWJsZSk7CmV4
dGVybiBkb3VibGUgZmFicyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmbG9vciAoZG91YmxlKTsK
CgoKCgoKZXh0ZXJuIGRvdWJsZSBhY29zIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGFzaW4gKGRv
dWJsZSk7CmV4dGVybiBkb3VibGUgYXRhbjIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJs
ZSBjb3NoIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHNpbmggKGRvdWJsZSk7CmV4dGVybiBkb3Vi
bGUgZXhwIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGxkZXhwIChkb3VibGUsIGludCk7CmV4dGVy
biBkb3VibGUgbG9nIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGxvZzEwIChkb3VibGUpOwpleHRl
cm4gZG91YmxlIHBvdyAoZG91YmxlLCBkb3VibGUpOwpleHRlcm4gZG91YmxlIHNxcnQgKGRvdWJs
ZSk7CmV4dGVybiBkb3VibGUgZm1vZCAoZG91YmxlLCBkb3VibGUpOwp0eXBlZGVmIGZsb2F0IGZs
b2F0X3Q7CnR5cGVkZWYgZG91YmxlIGRvdWJsZV90OwpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWYg
KGZsb2F0IHgpOwpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWQgKGRvdWJsZSB4KTsKZXh0ZXJuIGRv
dWJsZSBpbmZpbml0eSAodm9pZCk7CmV4dGVybiBkb3VibGUgbmFuICh2b2lkKTsKZXh0ZXJuIGlu
dCBpc25hbiAoZG91YmxlKTsKZXh0ZXJuIGludCBpc2luZiAoZG91YmxlKTsKZXh0ZXJuIGludCBm
aW5pdGUgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgY29weXNpZ24gKGRvdWJsZSwgZG91YmxlKTsK
ZXh0ZXJuIGludCBpbG9nYiAoZG91YmxlKTsKCmV4dGVybiBkb3VibGUgYXNpbmggKGRvdWJsZSk7
CmV4dGVybiBkb3VibGUgY2JydCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBuZXh0YWZ0ZXIgKGRv
dWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByaW50IChkb3VibGUpOwpleHRlcm4gZG91Ymxl
IHNjYWxibiAoZG91YmxlLCBpbnQpOwoKZXh0ZXJuIGRvdWJsZSBleHAyIChkb3VibGUpOwpleHRl
cm4gZG91YmxlIHNjYWxibG4gKGRvdWJsZSwgbG9uZyBpbnQpOwpleHRlcm4gZG91YmxlIHRnYW1t
YSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBuZWFyYnlpbnQgKGRvdWJsZSk7CmV4dGVybiBsb25n
IGludCBscmludCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByb3VuZCAoZG91YmxlKTsKZXh0ZXJu
IGxvbmcgaW50IGxyb3VuZCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB0cnVuYyAoZG91YmxlKTsK
ZXh0ZXJuIGRvdWJsZSByZW1xdW8gKGRvdWJsZSwgZG91YmxlLCBpbnQgKik7CmV4dGVybiBkb3Vi
bGUgY29weXNpZ24gKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmZGltIChkb3VibGUs
IGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZm1heCAoZG91YmxlLCBkb3VibGUpOwpleHRlcm4gZG91
YmxlIGZtaW4gKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmbWEgKGRvdWJsZSwgZG91
YmxlLCBkb3VibGUpOwpleHRlcm4gdm9pZCBzaW5jb3MgKGRvdWJsZSwgZG91YmxlICosIGRvdWJs
ZSAqKTsKCgpleHRlcm4gZG91YmxlIGxvZzFwIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGV4cG0x
IChkb3VibGUpOwoKCgpleHRlcm4gZG91YmxlIGFjb3NoIChkb3VibGUpOwpleHRlcm4gZG91Ymxl
IGF0YW5oIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHJlbWFpbmRlciAoZG91YmxlLCBkb3VibGUp
OwpleHRlcm4gZG91YmxlIGdhbW1hIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGdhbW1hX3IgKGRv
dWJsZSwgaW50ICopOwpleHRlcm4gZG91YmxlIGxnYW1tYSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJs
ZSBsZ2FtbWFfciAoZG91YmxlLCBpbnQgKik7CmV4dGVybiBkb3VibGUgZXJmIChkb3VibGUpOwpl
eHRlcm4gZG91YmxlIGVyZmMgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgeTAgKGRvdWJsZSk7CmV4
dGVybiBkb3VibGUgeTEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgeW4gKGludCwgZG91YmxlKTsK
ZXh0ZXJuIGRvdWJsZSBqMCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqMSAoZG91YmxlKTsKZXh0
ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpOwoKCgpleHRlcm4gZG91YmxlIGh5cG90IChkb3Vi
bGUsIGRvdWJsZSk7CgoKZXh0ZXJuIGRvdWJsZSBjYWJzKCk7CmV4dGVybiBkb3VibGUgZHJlbSAo
ZG91YmxlLCBkb3VibGUpOwpleHRlcm4gZmxvYXQgYXRhbmYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0
IGNvc2YgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHNpbmYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHRh
bmYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHRhbmhmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBmcmV4
cGYgKGZsb2F0LCBpbnQgKik7CmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQsIGZsb2F0ICopOwpl
eHRlcm4gZmxvYXQgY2VpbGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGZhYnNmIChmbG9hdCk7CmV4
dGVybiBmbG9hdCBmbG9vcmYgKGZsb2F0KTsKCgpleHRlcm4gZmxvYXQgYWNvc2YgKGZsb2F0KTsK
ZXh0ZXJuIGZsb2F0IGFzaW5mIChmbG9hdCk7CmV4dGVybiBmbG9hdCBhdGFuMmYgKGZsb2F0LCBm
bG9hdCk7CmV4dGVybiBmbG9hdCBjb3NoZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgc2luaGYgKGZs
b2F0KTsKZXh0ZXJuIGZsb2F0IGV4cGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxv
YXQsIGludCk7CmV4dGVybiBmbG9hdCBsb2dmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBsb2cxMGYg
KGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHBvd2YgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBmbG9hdCBz
cXJ0ZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgZm1vZGYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBm
bG9hdCBleHAyZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgc2NhbGJsbmYgKGZsb2F0LCBsb25nIGlu
dCk7CmV4dGVybiBmbG9hdCB0Z2FtbWFmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBuZWFyYnlpbnRm
IChmbG9hdCk7CmV4dGVybiBsb25nIGludCBscmludGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHJv
dW5kZiAoZmxvYXQpOwpleHRlcm4gbG9uZyBpbnQgbHJvdW5kZiAoZmxvYXQpOwpleHRlcm4gZmxv
YXQgdHJ1bmNmIChmbG9hdCk7CmV4dGVybiBmbG9hdCByZW1xdW9mIChmbG9hdCwgZmxvYXQsIGlu
dCAqKTsKZXh0ZXJuIGZsb2F0IGNvcHlzaWduZiAoZmxvYXQsIGZsb2F0KTsKZXh0ZXJuIGZsb2F0
IGZkaW1mIChmbG9hdCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgZm1heGYgKGZsb2F0LCBmbG9hdCk7
CmV4dGVybiBmbG9hdCBmbWluZiAoZmxvYXQsIGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGZtYWYgKGZs
b2F0LCBmbG9hdCwgZmxvYXQpOwoKZXh0ZXJuIGZsb2F0IGluZmluaXR5ZiAodm9pZCk7CmV4dGVy
biBmbG9hdCBuYW5mICh2b2lkKTsKZXh0ZXJuIGludCBpc25hbmYgKGZsb2F0KTsKZXh0ZXJuIGlu
dCBpc2luZmYgKGZsb2F0KTsKZXh0ZXJuIGludCBmaW5pdGVmIChmbG9hdCk7CmV4dGVybiBmbG9h
dCBjb3B5c2lnbmYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBpbnQgaWxvZ2JmIChmbG9hdCk7Cgpl
eHRlcm4gZmxvYXQgYXNpbmhmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBjYnJ0ZiAoZmxvYXQpOwpl
eHRlcm4gZmxvYXQgbmV4dGFmdGVyZiAoZmxvYXQsIGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHJpbnRm
IChmbG9hdCk7CmV4dGVybiBmbG9hdCBzY2FsYm5mIChmbG9hdCwgaW50KTsKZXh0ZXJuIGZsb2F0
IGxvZzFwZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgZXhwbTFmIChmbG9hdCk7CmV4dGVybiB2b2lk
IHNpbmNvc2YgKGZsb2F0LCBmbG9hdCAqLCBmbG9hdCAqKTsKCgpleHRlcm4gZmxvYXQgYWNvc2hm
IChmbG9hdCk7CmV4dGVybiBmbG9hdCBhdGFuaGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHJlbWFp
bmRlcmYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBmbG9hdCBnYW1tYWYgKGZsb2F0KTsKZXh0ZXJu
IGZsb2F0IGdhbW1hZl9yIChmbG9hdCwgaW50ICopOwpleHRlcm4gZmxvYXQgbGdhbW1hZiAoZmxv
YXQpOwpleHRlcm4gZmxvYXQgbGdhbW1hZl9yIChmbG9hdCwgaW50ICopOwpleHRlcm4gZmxvYXQg
ZXJmZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgZXJmY2YgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHkw
ZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgeTFmIChmbG9hdCk7CmV4dGVybiBmbG9hdCB5bmYgKGlu
dCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgajBmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBqMWYgKGZs
b2F0KTsKZXh0ZXJuIGZsb2F0IGpuZiAoaW50LCBmbG9hdCk7CgpleHRlcm4gZmxvYXQgaHlwb3Rm
IChmbG9hdCwgZmxvYXQpOwoKZXh0ZXJuIGZsb2F0IGNhYnNmKCk7CmV4dGVybiBmbG9hdCBkcmVt
ZiAoZmxvYXQsIGZsb2F0KTsKCgoKCgoKZXh0ZXJuIGludCAqX19zaWduZ2FtICh2b2lkKTsKc3Ry
dWN0IGV4Y2VwdGlvbgoKewogIGludCB0eXBlOwogIGNoYXIgKm5hbWU7CiAgZG91YmxlIGFyZzE7
CiAgZG91YmxlIGFyZzI7CiAgZG91YmxlIHJldHZhbDsKICBpbnQgZXJyOwp9OwoKCgoKZXh0ZXJu
IGludCBtYXRoZXJyIChzdHJ1Y3QgZXhjZXB0aW9uICplKTsKZW51bSBfX2ZkbGlibV92ZXJzaW9u
CnsKICBfX2ZkbGlibV9pZWVlID0gLTEsCiAgX19mZGxpYm1fc3ZpZCwKICBfX2ZkbGlibV94b3Bl
biwKICBfX2ZkbGlibV9wb3NpeAp9OwoKCgoKZXh0ZXJuIGNvbnN0IGVudW0gX19mZGxpYm1fdmVy
c2lvbiBfX2ZkbGliX3ZlcnNpb247CgoKCnN0cnVjdCB0bQp7CiAgaW50IHRtX3NlYzsKICBpbnQg
dG1fbWluOwogIGludCB0bV9ob3VyOwogIGludCB0bV9tZGF5OwogIGludCB0bV9tb247CiAgaW50
IHRtX3llYXI7CiAgaW50IHRtX3dkYXk7CiAgaW50IHRtX3lkYXk7CiAgaW50IHRtX2lzZHN0Owp9
OwoKY2xvY2tfdCBjbG9jayAodm9pZCk7CmRvdWJsZSBkaWZmdGltZSAodGltZV90IF90aW1lMiwg
dGltZV90IF90aW1lMSk7CnRpbWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqX3RpbWVwdHIpOwp0aW1l
X3QgdGltZSAodGltZV90ICpfdGltZXIpOwoKY2hhciAqYXNjdGltZSAoY29uc3Qgc3RydWN0IHRt
ICpfdGJsb2NrKTsKY2hhciAqY3RpbWUgKGNvbnN0IHRpbWVfdCAqX3RpbWUpOwpzdHJ1Y3QgdG0g
KmdtdGltZSAoY29uc3QgdGltZV90ICpfdGltZXIpOwpzdHJ1Y3QgdG0gKmxvY2FsdGltZSAoY29u
c3QgdGltZV90ICpfdGltZXIpOwoKc2l6ZV90IHN0cmZ0aW1lIChjaGFyICpfcywgc2l6ZV90IF9t
YXhzaXplLCBjb25zdCBjaGFyICpfZm10LCBjb25zdCBzdHJ1Y3QgdG0gKl90KTsKCmNoYXIgKmFz
Y3RpbWVfciAoY29uc3Qgc3RydWN0IHRtICosIGNoYXIgKik7CmNoYXIgKmN0aW1lX3IgKGNvbnN0
IHRpbWVfdCAqLCBjaGFyICopOwpzdHJ1Y3QgdG0gKmdtdGltZV9yIChjb25zdCB0aW1lX3QgKiwg
c3RydWN0IHRtICopOwpzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yIChjb25zdCB0aW1lX3QgKiwgc3Ry
dWN0IHRtICopOwoKCgoKCgoKCmNoYXIgKnN0cnB0aW1lIChjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKiwgc3RydWN0IHRtICopOwp2b2lkIHR6c2V0ICh2b2lkKTsKdm9pZCBfdHpzZXRfciAoc3Ry
dWN0IF9yZWVudCAqKTsKZXh0ZXJuIHRpbWVfdCBfdGltZXpvbmU7CmV4dGVybiBpbnQgX2RheWxp
Z2h0OwpleHRlcm4gY2hhciAqX3R6bmFtZVsyXTsKc3RydWN0IHRpbWV2YWwgewogIGxvbmcgdHZf
c2VjOwogIGxvbmcgdHZfdXNlYzsKfTsKCnN0cnVjdCB0aW1lem9uZSB7CiAgaW50IHR6X21pbnV0
ZXN3ZXN0OwogIGludCB0el9kc3R0aW1lOwp9OwpzdHJ1Y3QgaXRpbWVydmFsIHsKICBzdHJ1Y3Qg
dGltZXZhbCBpdF9pbnRlcnZhbDsKICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKfTsKaW50IGdl
dHRpbWVvZmRheSAoc3RydWN0IHRpbWV2YWwgKl9fcCwgc3RydWN0IHRpbWV6b25lICpfX3opOwpp
bnQgc2V0dGltZW9mZGF5IChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqLCBjb25zdCBzdHJ1Y3QgdGlt
ZXpvbmUgKik7CmludCB1dGltZXMgKGNvbnN0IGNoYXIgKl9fcGF0aCwgc3RydWN0IHRpbWV2YWwg
Kl9fdHZwKTsKaW50IGdldGl0aW1lciAoaW50IF9fd2hpY2gsIHN0cnVjdCBpdGltZXJ2YWwgKl9f
dmFsdWUpOwppbnQgc2V0aXRpbWVyIChpbnQgX193aGljaCwgY29uc3Qgc3RydWN0IGl0aW1lcnZh
bCAqX192YWx1ZSwgc3RydWN0IGl0aW1lcnZhbCAqX19vdmFsdWUpOwp0eXBlZGVmIHN0cnVjdCB7
CiAgICBpbnQgYWhpLAogICAgICAgICAgICBhbG8sCiAgICAgICAgICAgIGR4LAogICAgICAgICAg
ICBmbGgsCiAgICAgICAgICAgIGZsbCwKICAgICAgICAgICAgZnJoLAogICAgICAgICAgICBmcmws
CiAgICAgICAgICAgIHhsLAogICAgICAgICAgICB4cjsKICAgIH1SRUNUOwoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgZG91YmxlIHQsCiAgICAgICAgICAgIHFwLAogICAgICAgICAgICAgICAgICAgICAg
ICBkZWxxOwogICAgaW50IG47CiAgICAgICAgaW50IGxhcHM7CiAgICB9U3BlZWQ7Cgp0eXBlZGVm
IGludCBFUlJPUjsKCgoKCgojcHJhZ21hIG1pcHNfZnJlcXVlbmN5X2hpbnQgRlJFUVVFTlQgV2hl
bgpkb3VibGUgV2hlbigpOwoKZG91YmxlClJ1bihpbnQgbGFwcywKICAgIGludCAqZ2FtdXQsIGlu
dCBzY3gsIGludCBzY3ksIGludCBkbWF4LCBpbnQgbWVtcnksIEVSUk9SICplZmxhZyk7CmludApI
aW50KGludCAqc2N4LCBpbnQgKnNjeSwgaW50ICpkbWF4LCBpbnQgKm1jbnQsIFJFQ1QgKnJlY3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZXJycywgaW50ICppeGVzLCBFUlJPUiAq
ZWZsYWcpOwojcHJhZ21hIG1pcHNfZnJlcXVlbmN5X2hpbnQgRlJFUVVFTlQgSGludAoKCgoKaW50
CkhpbnQoaW50ICpzY3gsIGludCAqc2N5LCBpbnQgKmRtYXgsIGludCAqbWNudCwgUkVDVCAqcmVj
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICplcnJzLCBpbnQgKml4ZXMsIEVSUk9S
ICplZmxhZykKewogICAgaW50IGVycmlvLAogICAgICAgICAgICBlcnJqbywKICAgICAgICAgICAg
c2gsCiAgICAgICAgICAgIHNsLAogICAgICAgICAgICB0bSwKICAgICAgICAgICAgdG0yOwoKICAg
IGludCBpbmMsIGpuYywKICAgICAgICAgICAgaW8sCiAgICAgICAgICAgIGlxLAogICAgICAgICAg
ICBpdCwKICAgICAgICAgICAgaXRtcCwKICAgICAgICAgICAgam8sCiAgICAgICAgICAgIG1hOwoK
CgogICAgICByZWN0WzBdLnhsID0gKGludCkwOwogICAgICByZWN0WzBdLnhyID0gKnNjeDsKICAg
ICAgcmVjdFswXS5keCA9ICpzY3g7CiAgICAgIHJlY3RbMF0uZmxsID0gKnNjeTsKICAgICAgcmVj
dFswXS5mbGggPSAqc2N5OwogICAgICByZWN0WzBdLmZybCA9IChpbnQpMDsKICAgICAgcmVjdFsw
XS5mcmggPSAoaW50KTA7CiAgICAgIHJlY3RbMF0uYWhpID0gKmRtYXg7CiAgICAgIHJlY3RbMF0u
YWxvID0gKGludCkwOwogICAgICBpcSA9IDA7CiAgICAgIGVycnNbaXFdID0gcmVjdFswXS5haGkg
LSByZWN0WzBdLmFsbzsKICAgICAgaXhlc1tpcV0gPSBpcTsKICAgICAgc2ggPSByZWN0WzBdLmFo
aTsKICAgICAgc2wgPSByZWN0WzBdLmFsbzsKCiAgICAgIGZvciAoaXQgPSAwOyAoKGl0IDwgKm1j
bnQgLSAxKSAmJiAoaXQgPD0gaXEpKTsgaXQrKykKICAgICAgewogICAgICAgICAgaW8gPSBtYSA9
IGl4ZXNbaXRdOwogICAgICAgICAgam8gPSBpdCArIDE7CgogICAgICAgICAgdG0gPSByZWN0W21h
XS5keDsKCiAgICAgICAgICByZWN0W2lvXS5keCA9IHJlY3Rbam9dLmR4ID0gdG0gLyAoaW50KTI7
CgoKICAgICAgICAgIHJlY3Rbam9dLnhyID0gcmVjdFttYV0ueHI7CgogICAgICAgICAgcmVjdFtp
b10ueHIgPSByZWN0W2lvXS54bCArCiAgICAgICAgICAgICAgICAgICAgICAgICByZWN0W2lvXS5k
eDsKICAgICAgICAgIHJlY3Rbam9dLnhsID0gcmVjdFtpb10ueHI7CgogICAgICAgICAgcmVjdFtq
b10uZnJsID0gcmVjdFttYV0uZnJsOwogICAgICAgICAgcmVjdFtqb10uZnJoID0gcmVjdFttYV0u
ZnJoOwoKCgogICAgICAgICAgdG0gPSAoKnNjeCArIHJlY3RbaW9dLnhyKTsKICAgICAgICAgIHRt
MiA9ICgqc2N5ICogKCpzY3ggLSByZWN0W2lvXS54cikpOwogICAgICAgICAgaXRtcCA9IHRtMiAv
IHRtOwogICAgICAgICAgcmVjdFtpb10uZnJsID0gaXRtcDsKCgogICAgICAgICAgcmVjdFtpb10u
ZnJoID0gcmVjdFtpb10uZnJsICsgKCh0bSAqIHJlY3RbaW9dLmZybCkgIT0gdG0yKTsKICAgICAg
ICAgIHJlY3Rbam9dLmZsbCA9IHJlY3RbaW9dLmZybDsKICAgICAgICAgIHJlY3Rbam9dLmZsaCA9
IHJlY3RbaW9dLmZyaDsKCgogICAgICAgICAgdG0gPSAocmVjdFtpb10uZmxsIC0gcmVjdFtpb10u
ZnJoKSAqIChyZWN0W2lvXS5keCAtIChpbnQpMik7CiAgICAgICAgICBpZiAodG0gPCAoaW50KTAp
CiAgICAgICAgICAgICAgdG0gPSAoaW50KTA7CiAgICAgICAgICBlcnJpbyA9IChyZWN0W2lvXS5m
bGggLSByZWN0W2lvXS5mcmggKwogICAgICAgICAgICAgICAgICAgcmVjdFtpb10uZmxsIC0gcmVj
dFtpb10uZnJsKSAqCiAgICAgICAgICAgICAgICAgIChyZWN0W2lvXS5keCAtIChpbnQpMSkgLSB0
bTsKCgogICAgICAgICAgdG0gPSAocmVjdFtqb10uZmxsIC0gcmVjdFtqb10uZnJoKSAqIChyZWN0
W2pvXS5keCAtIChpbnQpMik7CiAgICAgICAgICBpZiAodG0gPCAoaW50KTApCiAgICAgICAgICAg
ICAgdG0gPSAoaW50KTA7CiAgICAgICAgICBlcnJqbyA9IChyZWN0W2pvXS5mbGggLSByZWN0W2pv
XS5mcmggKwogICAgICAgICAgICAgICAgICAgcmVjdFtqb10uZmxsIC0gcmVjdFtqb10uZnJsKSAq
CiAgICAgICAgICAgICAgICAgIChyZWN0W2pvXS5keCAtIChpbnQpMSkgLSB0bTsKCgoKICAgICAg
ICAgIGluYyA9IChlcnJpbyA8IGVycmpvKSArIDE7CiAgICAgICAgICBqbmMgPSAzIC0gaW5jOwoK
CiAgICAgICAgICBlcnJzW2lxICsgaW5jXSA9IGVycmlvOwogICAgICAgICAgaXhlc1tpcSArIGlu
Y10gPSBpbzsKICAgICAgICAgIGVycnNbaXEgKyBqbmNdID0gZXJyam87CiAgICAgICAgICBpeGVz
W2lxICsgam5jXSA9IGpvOwoKCiAgICAgICAgICBpcSA9IGlxICsgKGVycnNbaXEgKyAyXSAhPSAw
KSArIDE7CgoKICAgICAgICAgIHRtID0gcmVjdFttYV0uYWxvOwogICAgICAgICAgcmVjdFtpb10u
YWxvID0gcmVjdFtpb10uZnJsICogcmVjdFtpb10uZHg7CiAgICAgICAgICByZWN0W2pvXS5hbG8g
PSByZWN0W2pvXS5mcmwgKiByZWN0W2pvXS5keDsKICAgICAgICAgIHNsIC09IHRtOwogICAgICAg
ICAgc2wgKz0gcmVjdFtpb10uYWxvICsgcmVjdFtqb10uYWxvOwogICAgICAgICAgdG0gPSByZWN0
W21hXS5haGk7CiAgICAgICAgICByZWN0W2lvXS5haGkgPSByZWN0W2lvXS5mbGggKiByZWN0W2lv
XS5keDsKICAgICAgICAgIHJlY3Rbam9dLmFoaSA9IHJlY3Rbam9dLmZsaCAqIHJlY3Rbam9dLmR4
OwogICAgICAgICAgc2ggLT0gdG07CiAgICAgICAgICBzaCArPSByZWN0W2lvXS5haGkgKyByZWN0
W2pvXS5haGk7CiAgICAgIH0KICAgICAgaWYgKGl0ID4gaXEpIHsKICAgICAgICAgICplZmxhZyA9
IDE7CiAgICAgICAgICB9CiAgICAgIGVsc2UgewojcHJhZ21hIG1pcHNfZnJlcXVlbmN5X2hpbnQg
RlJFUVVFTlQKICAgICAgICAgICplZmxhZyA9IDA7CiAgICAgICAgICB9CiAgICAgIHJldHVybiAo
c2ggLSBzbCk7Cn0K


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-03-13  2:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-13  2:56 optimization/10052: SH-ELF: GCC segfaults when compiling code tm_gccmail

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).