optimization/2223: overflow in update_equiv_regs
foad@tao-group.com
foad@tao-group.com
Sun Apr 1 00:00:00 GMT 2001
>Number: 2223
>Category: optimization
>Synopsis: overflow in update_equiv_regs
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu Mar 08 04:06:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator: Jay Foad
>Release: GNU CPP version 2.97 20010205 (experimental) (cpplib) (Hitachi SH)
>Organization:
>Environment:
Hosted on i686-pc-linux-gnu
Configured with --enable-languages=c --prefix=/foo/bar/wibble --target=sh
>Description:
I get this:
$ ./cc1 -quiet -O2 z80x.i -da; grep "across -" z80x.i.*
z80x.i.18.lreg:Register 3489 used 116 times across -1044381696 insns; set 36 times; dies in 24 places; crosses 100 calls; GENERAL_REGS or none; pointer.
I think the "used ... across -1044381696 insns" is bad, but
I have *not* been able to get it to provoke a visible error
on the SH port.
On a new port that I'm working on, I get the same kind of
thing and it does *appear* to cause real problems later on.
The negative value for REG_LIVE_LENGTH (3489) comes from an
overflow at local-alloc.c(1012):
REG_LIVE_LENGTH (regno) *= 2;
I suspect that this only happens on ports which don't define
NO_FUNCTION_CSE (which would rule out all the primary
platforms).
>How-To-Repeat:
Source file z80x.i is attached.
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="z80x.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="z80x.i"
dHlwZWRlZiBzaWduZWQgY2hhciBzODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4Owp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IHUxNjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdTMyOwp0eXBlZGVmIGVu
dW0gewogIHJlZ19hZj0wLAogIHJlZ19iYz0xLAogIHJlZ19kZT0yLAogIHJlZ19obD0zLAogIHJl
Z19hZl89NCwKICByZWdfYmNfPTUsCiAgcmVnX2RlXz02LAogIHJlZ19obF89NywKICByZWdfaXg9
OCwKICByZWdfaXk9OSwKICByZWdfYT0gKDIqKCByZWdfYWYgKSsxMSkgLAogIHJlZ19mPSAoMioo
IHJlZ19hZiApKzEwKSAsCiAgcmVnX2I9ICgyKiggcmVnX2JjICkrMTEpICwKICByZWdfYz0gKDIq
KCByZWdfYmMgKSsxMCkgLAogIHJlZ19kPSAoMiooIHJlZ19kZSApKzExKSAsCiAgcmVnX2U9ICgy
KiggcmVnX2RlICkrMTApICwKICByZWdfaD0gKDIqKCByZWdfaGwgKSsxMSkgLAogIHJlZ19sPSAo
MiooIHJlZ19obCApKzEwKSAsCiAgcmVnX2FfPSAoMiooIHJlZ19hZl8gKSsxMSkgLAogIHJlZ19m
Xz0gKDIqKCByZWdfYWZfICkrMTApICwKICByZWdfYl89ICgyKiggcmVnX2JjXyApKzExKSAsCiAg
cmVnX2NfPSAoMiooIHJlZ19iY18gKSsxMCkgLAogIHJlZ19kXz0gKDIqKCByZWdfZGVfICkrMTEp
ICwKICByZWdfZV89ICgyKiggcmVnX2RlXyApKzEwKSAsCiAgcmVnX2hfPSAoMiooIHJlZ19obF8g
KSsxMSkgLAogIHJlZ19sXz0gKDIqKCByZWdfaGxfICkrMTApICwKICByZWdfaXhoPSAoMiooIHJl
Z19peCApKzExKSAsCiAgcmVnX2l4bD0gKDIqKCByZWdfaXggKSsxMCkgLAogIHJlZ19peWg9ICgy
KiggcmVnX2l5ICkrMTEpICwKICByZWdfaXlsPSAoMiooIHJlZ19peSApKzEwKSAsCiAgcmVnX3Nw
PTMwLAogIHJlZ19wYz0zMSwKICByZWdfaT0zMiwKICByZWdfcj0zMywKICByZWdfbWVtPTM0LAog
IHJlZ19pbz0zNSwKICByZWdfZmM9MzYsCiAgcmVnX2ZuPTM3LAogIHJlZ19mcHY9MzgsCiAgcmVn
X2YzPTM5LAogIHJlZ19maD00MCwKICByZWdfZjU9NDEsCiAgcmVnX2Z6PTQyLAogIHJlZ19mcz00
MywKICByZWdfZmNfPTQ0LAogIHJlZ19mbl89NDUsCiAgcmVnX2Zwdl89NDYsCiAgcmVnX2YzXz00
NywKICByZWdfZmhfPTQ4LAogIHJlZ19mNV89NDksCiAgcmVnX2Z6Xz01MCwKICByZWdfZnNfPTUx
LAogIHJlZ19tYXgKfSByZWdfdDsKdHlwZWRlZiBlbnVtIHsKICB2cHJlZ19ub25lLAogIHZwcmVn
X21lbSwKICB2cHJlZ19pbywKICB2cHJlZ19iYXNlCn0gdnByZWdfdDsKdHlwZWRlZiBlbnVtIHsK
ICBvcF9hZGMxNiwKICBvcF9hcml0aCwKICBvcF9iaXQsCiAgb3BfY2FsbGNjLAogIG9wX2ZsaXAs
CiAgb3BfZGFhLAogIG9wX2luLAogIG9wX2FkZDcsCiAgb3BfamNjLAogIG9wX2xvYWQ4LAogIG9w
X2xvYWQxNiwKICBvcF9sb2dpYywKICBvcF9vdXQsCiAgb3BfcmVzc2V0LAogIG9wX3JldGNjLAog
IG9wX3J4LAogIG9wX3NiYzE2LAogIG9wX3N0b3JlOCwKICBvcF9zdG9yZTE2LAogIG9wX2NvbnN0
LAogIG9wX3NwbGl0LAogIG9wX2pvaW4sCiAgb3Bfc3BsaXRmLAogIG9wX2pvaW5mLAogIG9wX21h
eAp9IG9wX3Q7CnR5cGVkZWYgdTMyIGxvY190OwpzdHJ1Y3Qgb3ByZWNfczsKdHlwZWRlZiBzdHJ1
Y3QgewogIHU4ICpyZWFkOwogIHU4ICpyZWFkX2VuZDsKICB1MzIgKndyaXRlOwogIHUzMiAqd3Jp
dGVfc3RhcnQ7CiAgdTMyICp3cml0ZV9lbmQ7CiAgc3RydWN0IG9wcmVjX3MgKmZpcnN0b3A7CiAg
bG9jX3QgbG9jW3JlZ19tYXhdOwp9IHRyX3Q7CnR5cGVkZWYgc3RydWN0IHsKICBsb2NfdCBsb2M7
Cn0gaW5yZWNfdDsKdHlwZWRlZiBzdHJ1Y3Qgb3ByZWNfcyB7CiAgdTggb3AsIGlub3V0czsKICB1
MTYgZGF0YTsKICBzdHJ1Y3Qgb3ByZWNfcyAqbmV4dDsKfSBvcHJlY190Owp0eXBlZGVmIHN0cnVj
dCB7CiAgdnByZWdfdCB2cHJlZzsKICB1MTYgdXNlczsKfSBvdXRyZWNfdDsKdHlwZWRlZiBfX2J1
aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9s
aXN0Owpsb2NfdCB3cl9vcCh0cl90ICp0ciwgdTggb3Bjb2RlLCB1MTYgb3BkYXRhLCB1OCBpbm91
dHMsIC4uLik7CmxvY190IHJlYWxfdXNlKHRyX3QgKnRyLCByZWdfdCB4KTsKdm9pZCByZWFsX3Nl
dCh0cl90ICp0ciwgcmVnX3QgeCwgbG9jX3QgbCk7CmludCBzY2FuMSh0cl90ICp0cikgewogIHU4
IG9wLGRpczsKICBpbnQgaXh5PTA7CiAgbG9jX3QgdDsKIHJlc3RhcnQ6CiAgb3A9ICh7aWYgKCEo
dHItPnJlYWQrKCAxICk8PXRyLT5yZWFkX2VuZCkpIHJldHVybiAgMSAgOyAqdHItPnJlYWQrKzt9
KSA7CiAgc3dpdGNoIChvcCkgewogIGNhc2UgMHgwMDoKICAgIGJyZWFrOwogIGNhc2UgMHgwMTog
Y2FzZSAweDExOiBjYXNlIDB4MjE6IGNhc2UgMHgzMToKICAgICgoIG9wPj40ICk9PTM/KHJlYWxf
c2V0KHRyLCAgcmVnX3NwICAsIHdyX29wKHRyLG9wX2NvbnN0LCAgICAgKHt1MTYgeDsgaWYgKCEo
dHItPnJlYWQrKCAyICk8PXRyLT5yZWFkX2VuZCkpIHJldHVybiAgMiAgOyB4PXRyLT5yZWFkWzBd
fHRyLT5yZWFkWzFdPDw4OyB0ci0+cmVhZCs9MjsgeDt9KSAgICAgLDB4MDEpICApICkgIDogKHJl
YWxfc2V0KHRyLCAgcmVnX2JjKyggb3A+PjQgKSAgLCB3cl9vcCh0cixvcF9jb25zdCwgICAgKHt1
MTYgeDsgaWYgKCEodHItPnJlYWQrKCAyICk8PXRyLT5yZWFkX2VuZCkpIHJldHVybiAgMiAgOyB4
PXRyLT5yZWFkWzBdfHRyLT5yZWFkWzFdPDw4OyB0ci0+cmVhZCs9MjsgeDt9KSAgICAsMHgwMSkg
ICkgKSApIDsKICAgIGJyZWFrOwogIGNhc2UgMHgwMjoKICAgIHJlYWxfc2V0KHRyLCByZWdfbWVt
ICwgIHdyX29wKHRyLG9wX3N0b3JlOCwwLDB4MzEsICByZWFsX3VzZSh0ciwgcmVnX2EgKSAgICAs
IHJlYWxfdXNlKHRyLCByZWdfYmMgKSAgICwgcmVhbF91c2UodHIsIHJlZ19tZW0gKSAgICkgICAp
ICAgOwogICAgYnJlYWs7CiAgY2FzZSAweDAzOiBjYXNlIDB4MTM6IGNhc2UgMHgyMzogY2FzZSAw
eDMzOgogICAgKCggb3A+PjQgKT09Mz9yZWFsX3NldCh0ciwgcmVnX3NwICwgICAgd3Jfb3AodHIs
b3BfYWRjMTYsMCwweDM2LCB3cl9vcCh0cixvcF9jb25zdCwgMCAsMHgwMSkgICwgIHdyX29wKHRy
LG9wX2NvbnN0LCAxICwweDAxKSAgICwgICAoKCBvcD4+NCApPT0zP3JlYWxfdXNlKHRyLCByZWdf
c3AgKSAgOiByZWFsX3VzZSh0ciwgcmVnX2JjKyggb3A+PjQgKSApICkgICAgKSAgICAgICkgIDog
cmVhbF9zZXQodHIsIHJlZ19iYysoIG9wPj40ICkgLCAgIHdyX29wKHRyLG9wX2FkYzE2LDAsMHgz
Niwgd3Jfb3AodHIsb3BfY29uc3QsIDAgLDB4MDEpICAsICB3cl9vcCh0cixvcF9jb25zdCwgMSAs
MHgwMSkgICAsICAgKCggb3A+PjQgKT09Mz9yZWFsX3VzZSh0ciwgcmVnX3NwICkgIDogcmVhbF91
c2UodHIsIHJlZ19iYysoIG9wPj40ICkgKSApICAgICkgICAgICkgKSA7CiAgICBicmVhazsKICBj
YXNlIDB4MGI6IGNhc2UgMHgxYjogY2FzZSAweDJiOiBjYXNlIDB4M2I6CiAgICAoKCBvcD4+NCAp
PT0zP3JlYWxfc2V0KHRyLCByZWdfc3AgLCAgICB3cl9vcCh0cixvcF9zYmMxNiwwLDB4MzYsIHdy
X29wKHRyLG9wX2NvbnN0LCAwICwweDAxKSAgLCAgd3Jfb3AodHIsb3BfY29uc3QsIDEgLDB4MDEp
ICAgLCAgICgoIG9wPj40ICk9PTM/cmVhbF91c2UodHIsIHJlZ19zcCApICA6IHJlYWxfdXNlKHRy
LCByZWdfYmMrKCBvcD4+NCApICkgKSAgICApICAgICAgKSAgOiByZWFsX3NldCh0ciwgcmVnX2Jj
Kyggb3A+PjQgKSAsICAgd3Jfb3AodHIsb3Bfc2JjMTYsMCwweDM2LCB3cl9vcCh0cixvcF9jb25z
dCwgMCAsMHgwMSkgICwgIHdyX29wKHRyLG9wX2NvbnN0LCAxICwweDAxKSAgICwgICAoKCBvcD4+
NCApPT0zP3JlYWxfdXNlKHRyLCByZWdfc3AgKSAgOiByZWFsX3VzZSh0ciwgcmVnX2JjKyggb3A+
PjQgKSApICkgICAgKSAgICAgKSApIDsKICAgIGJyZWFrOwogIGNhc2UgMHgwNDogY2FzZSAweDBj
OiBjYXNlIDB4MTQ6IGNhc2UgMHgxYzoKICBjYXNlIDB4MjQ6IGNhc2UgMHgyYzogY2FzZSAweDM0
OiBjYXNlIDB4M2M6CiAgICAoKCBvcD4+MyApPT03P3JlYWxfc2V0KHRyLCByZWdfYSAsICAgIHQ9
IHdyX29wKHRyLG9wX2FyaXRoLCAweDgwICwweDM2LCAwICwgd3Jfb3AodHIsb3BfY29uc3QsIDEg
LDB4MDEpICAsICAoKCBvcD4+MyApPT03P3JlYWxfdXNlKHRyLCByZWdfYSApICA6IHJlYWxfdXNl
KHRyLCByZWdfYisoIG9wPj4zICkgKSApICAgKSAgICAgKSAgOiByZWFsX3NldCh0ciwgcmVnX2Ir
KCBvcD4+MyApICwgICB0PSB3cl9vcCh0cixvcF9hcml0aCwgMHg4MCAsMHgzNiwgMCAsIHdyX29w
KHRyLG9wX2NvbnN0LCAxICwweDAxKSAgLCAgKCggb3A+PjMgKT09Nz9yZWFsX3VzZSh0ciwgcmVn
X2EgKSAgOiByZWFsX3VzZSh0ciwgcmVnX2IrKCBvcD4+MyApICkgKSAgICkgICAgKSApIDsKICAg
IChyZWFsX3NldCh0ciwgIHJlZ19mbiAgICwgd3Jfb3AodHIsb3BfY29uc3QsICAgIDAgICAsMHgw
MSkgICkgKSAgOwogICAgcmVhbF9zZXQodHIsIHJlZ19mcHYgICwgICB0KzIgICkgIDsKICAgIHJl
YWxfc2V0KHRyLCByZWdfZmggICwgICB0KzMgICkgIDsKICAgIHJlYWxfc2V0KHRyLCByZWdfZnog
ICwgICB0KzQgICkgIDsKICAgIHJlYWxfc2V0KHRyLCByZWdfZnMgICwgICB0KzUgICkgIDsKICAg
IGJyZWFrOwogIGNhc2UgMHgwNTogY2FzZSAweDBkOiBjYXNlIDB4MTU6IGNhc2UgMHgxZDoKICBj
YXNlIDB4MjU6IGNhc2UgMHgyZDogY2FzZSAweDM1OiBjYXNlIDB4M2Q6CiAgICAoKCBvcD4+MyAp
PT03P3JlYWxfc2V0KHRyLCByZWdfYSAsICAgIHQ9IHdyX29wKHRyLG9wX2FyaXRoLCAweDkwICww
eDM2LCAwICwgd3Jfb3AodHIsb3BfY29uc3QsIDEgLDB4MDEpICAsICAoKCBvcD4+MyApPT03P3Jl
YWxfdXNlKHRyLCByZWdfYSApICA6IHJlYWxfdXNlKHRyLCByZWdfYisoIG9wPj4zICkgKSApICAg
KSAgICAgKSAgOiByZWFsX3NldCh0ciwgcmVnX2IrKCBvcD4+MyApICwgICB0PSB3cl9vcCh0cixv
cF9hcml0aCwgMHg5MCAsMHgzNiwgMCAsIHdyX29wKHRyLG9wX2NvbnN0LCAxICwweDAxKSAgLCAg
KCggb3A+PjMgKT09Nz9yZWFsX3VzZSh0ciwgcmVnX2EgKSAgOiByZWFsX3VzZSh0ciwgcmVnX2Ir
KCBvcD4+MyApICkgKSAgICkgICAgKSApIDsKICAgIChyZWFsX3NldCh0ciwgIHJlZ19mbiAgICwg
d3Jfb3AodHIsb3BfY29uc3QsICAgIDEgICAsMHgwMSkgICkgKSAgOwogICAgcmVhbF9zZXQodHIs
IHJlZ19mcHYgICwgICB0KzIgICkgIDsKICAgIHJlYWxfc2V0KHRyLCByZWdfZmggICwgICB0KzMg
ICkgIDsKICAgIHJlYWxfc2V0KHRyLCByZWdfZnogICwgICB0KzQgICkgIDsKICAgIHJlYWxfc2V0
KHRyLCByZWdfZnMgICwgICB0KzUgICkgIDsKICAgIGJyZWFrOwogIGNhc2UgMHgwNjogY2FzZSAw
eDBlOiBjYXNlIDB4MTY6IGNhc2UgMHgxZToKICBjYXNlIDB4MjY6IGNhc2UgMHgyZTogY2FzZSAw
eDM2OiBjYXNlIDB4M2U6CiAgICAoKCBvcD4+MyApPT03PyhyZWFsX3NldCh0ciwgIHJlZ19hICAs
IHdyX29wKHRyLG9wX2NvbnN0LCAgICAgKHtpZiAoISh0ci0+cmVhZCsoIDEgKTw9dHItPnJlYWRf
ZW5kKSkgcmV0dXJuICAxICA7ICp0ci0+cmVhZCsrO30pICAgICAsMHgwMSkgICkgKSAgOiAocmVh
bF9zZXQodHIsICByZWdfYisoIG9wPj4zICkgICwgd3Jfb3AodHIsb3BfY29uc3QsICAgICh7aWYg
KCEodHItPnJlYWQrKCAxICk8PXRyLT5yZWFkX2VuZCkpIHJldHVybiAgMSAgOyAqdHItPnJlYWQr
Kzt9KSAgICAsMHgwMSkgICkgKSApIDsKICAgIGJyZWFrOwogIGNhc2UgMHgwNzogY2FzZSAweDBm
OiBjYXNlIDB4MTc6IGNhc2UgMHgxZjoKICAgIHJlYWxfc2V0KHRyLCByZWdfYSAsICB0PSB3cl9v
cCh0cixvcF9yeCwgb3AgLDB4MjUsICByZWFsX3VzZSh0ciwgcmVnX2ZjICApICAgLCAgcmVhbF91
c2UodHIsIHJlZ19hICkgICApICAgKSAgOwogICAgcmVhbF9zZXQodHIsIHJlZ19mYyAgLCAgIHQr
MSAgKSAgOwogICAgKHJlYWxfc2V0KHRyLCAgcmVnX2ZuICAgLCB3cl9vcCh0cixvcF9jb25zdCwg
ICAgMCAgICwweDAxKSAgKSApICA7CiAgICAocmVhbF9zZXQodHIsICByZWdfZmggICAsIHdyX29w
KHRyLG9wX2NvbnN0LCAgICAwICAgLDB4MDEpICApICkgIDsKICAgIGJyZWFrOwogIGNhc2UgMHgw
ODoKICAgIHQ9IHJlYWxfdXNlKHRyLCByZWdfYWYgKSAgOyByZWFsX3NldCh0ciwgcmVnX2FmICwg
IHJlYWxfdXNlKHRyLCByZWdfYWZfICkgICApICA7IHJlYWxfc2V0KHRyLCByZWdfYWZfICwgIHQg
KSA7CiAgICBicmVhazsKICBjYXNlIDB4MDk6IGNhc2UgMHgxOTogY2FzZSAweDI5OiBjYXNlIDB4
Mzk6CiAgICByZWFsX3NldCh0ciwgcmVnX2hsICwgIHQ9IHdyX29wKHRyLG9wX2FkYzE2LDAsMHgz
Niwgd3Jfb3AodHIsb3BfY29uc3QsIDAgLDB4MDEpICAsICAgKCggb3A+PjQgKT09Mz9yZWFsX3Vz
ZSh0ciwgcmVnX3NwICkgIDogcmVhbF91c2UodHIsIHJlZ19iYysoIG9wPj40ICkgKSApICAgLCAg
cmVhbF91c2UodHIsIHJlZ19obCApICAgICkgICAgKSAgOwogICAgcmVhbF9zZXQodHIsIHJlZ19m
YyAgLCAgIHQrMSAgKSAgOwogICAgKHJlYWxfc2V0KHRyLCAgcmVnX2ZuICAgLCB3cl9vcCh0cixv
cF9jb25zdCwgICAgMCAgICwweDAxKSAgKSApICA7CiAgICByZWFsX3NldCh0ciwgcmVnX2ZoICAs
ICAgdCszICApICA7CiAgICBicmVhazsKICBjYXNlIDB4MGE6CiAgICByZWFsX3NldCh0ciwgcmVn
X2EgLCAgd3Jfb3AodHIsb3BfbG9hZDgsMCwweDIxLCByZWFsX3VzZSh0ciwgcmVnX2JjICkgICAs
IHJlYWxfdXNlKHRyLCByZWdfbWVtICkgICApICAgICkgIDsKICAgIGJyZWFrOwogIGNhc2UgMHgx
MDoKICAgIHJlYWxfc2V0KHRyLCByZWdfYiAsICB0PSB3cl9vcCh0cixvcF9hcml0aCwgMHg5MCAs
MHgzNiwgMCAsIHdyX29wKHRyLG9wX2NvbnN0LCAxICwweDAxKSAgLCAgcmVhbF91c2UodHIsIHJl
Z19iICkgICAgKSAgICApICA7CiAgICBvcD0weDI4OyB0Kz00OwogICAgZ290byBzY2FuX2pyX2Nj
OwogICAgYnJlYWs7CiAgY2FzZSAweDEyOgogICAgcmVhbF9zZXQodHIsIHJlZ19tZW0gLCAgd3Jf
b3AodHIsb3Bfc3RvcmU4LDAsMHgzMSwgIHJlYWxfdXNlKHRyLCByZWdfYSApICAgICwgcmVhbF91
c2UodHIsIHJlZ19kZSApICAgLCByZWFsX3VzZSh0ciwgcmVnX21lbSApICAgKSAgICkgICA7CiAg
ICBicmVhazsKICBjYXNlIDB4MTg6CiAgICByZWFsX3NldCh0ciwgcmVnX3BjICwgIHdyX29wKHRy
LG9wX2FkYzE2LDAsMHgzNiwgd3Jfb3AodHIsb3BfY29uc3QsIDAgLDB4MDEpICAsICAgd3Jfb3Ao
dHIsb3BfY29uc3QsIChzOCkoe2lmICghKHRyLT5yZWFkKyggMSApPD10ci0+cmVhZF9lbmQpKSBy
ZXR1cm4gIDEgIDsgKnRyLT5yZWFkKys7fSkgICwweDAxKSAgICwgIHJlYWxfdXNlKHRyLCByZWdf
cGMgKSAgICApICAgICkgIDsKICAgIGJyZWFrOwogIGNhc2UgMHgxYToKICAgIHJlYWxfc2V0KHRy
LCByZWdfYSAsICB3cl9vcCh0cixvcF9sb2FkOCwwLDB4MjEsIHJlYWxfdXNlKHRyLCByZWdfZGUg
KSAgICwgcmVhbF91c2UodHIsIHJlZ19tZW0gKSAgICkgICAgKSAgOwogICAgYnJlYWs7CiAgY2Fz
ZSAweDIwOiBjYXNlIDB4Mjg6CiAgICB0PSByZWFsX3VzZSh0ciwgcmVnX2Z6ICApICA7CiAgc2Nh
bl9qcl9jYzoKICAgIHJlYWxfc2V0KHRyLCByZWdfcGMgLCAgd3Jfb3AodHIsb3BfamNjLCBvcCAs
MHgzMSwgIHQgLCAgd3Jfb3AodHIsb3BfYWRjMTYsMCwweDM2LCB3cl9vcCh0cixvcF9jb25zdCwg
MCAsMHgwMSkgICwgICB3cl9vcCh0cixvcF9jb25zdCwgKHM4KSh7aWYgKCEodHItPnJlYWQrKCAx
ICk8PXRyLT5yZWFkX2VuZCkpIHJldHVybiAgMSAgOyAqdHItPnJlYWQrKzt9KSAgLDB4MDEpICAg
LCAgcmVhbF91c2UodHIsIHJlZ19wYyApICAgICkgICAsICByZWFsX3VzZSh0ciwgcmVnX3BjICkg
ICApICAgKSAgOwogICAgYnJlYWs7CiAgY2FzZSAweDIyOgogICAgcmVhbF9zZXQodHIsIHJlZ19t
ZW0gLCAgd3Jfb3AodHIsb3Bfc3RvcmUxNiwwLDB4MzEsICByZWFsX3VzZSh0ciwgcmVnX2hsICkg
ICAsICB3cl9vcCh0cixvcF9jb25zdCwgKHt1MTYgeDsgaWYgKCEodHItPnJlYWQrKCAyICk8PXRy
LT5yZWFkX2VuZCkpIHJldHVybiAgMiAgOyB4PXRyLT5yZWFkWzBdfHRyLT5yZWFkWzFdPDw4OyB0
ci0+cmVhZCs9MjsgeDt9KSAgLDB4MDEpICAsIHJlYWxfdXNlKHRyLCByZWdfbWVtICkgICApICAg
KSAgOwogICAgYnJlYWs7CiAgY2FzZSAweDI3OgogICAgcmVhbF9zZXQodHIsIHJlZ19hICwgIHQ9
IHdyX29wKHRyLG9wX2RhYSwwLDB4NDYsICByZWFsX3VzZSh0ciwgcmVnX2ZoICApICAgLCAgcmVh
bF91c2UodHIsIHJlZ19mbiAgKSAgICwgIHJlYWxfdXNlKHRyLCByZWdfZmMgICkgICAsIHJlYWxf
dXNlKHRyLCByZWdfYSApICAgKSAgICkgIDsKICAgIHJlYWxfc2V0KHRyLCByZWdfZmMgICwgICB0
KzEgICkgIDsKICAgIHJlYWxfc2V0KHRyLCByZWdfZmggICwgICB0KzIgICkgIDsKICAgIHJlYWxf
c2V0KHRyLCByZWdfZnB2ICAsICAgdCszICApICA7CiAgICByZWFsX3NldCh0ciwgcmVnX2Z6ICAs
ICAgdCs0ICApICA7CiAgICByZWFsX3NldCh0ciwgcmVnX2ZzICAsICAgdCs1ICApICA7CiAgICBi
cmVhazsKICBjYXNlIDB4MmE6CiAgICByZWFsX3NldCh0ciwgcmVnX2hsICwgIHdyX29wKHRyLG9w
X2xvYWQxNiwwLDB4MjEsICB3cl9vcCh0cixvcF9jb25zdCwgKHt1MTYgeDsgaWYgKCEodHItPnJl
YWQrKCAyICk8PXRyLT5yZWFkX2VuZCkpIHJldHVybiAgMiAgOyB4PXRyLT5yZWFkWzBdfHRyLT5y
ZWFkWzFdPDw4OyB0ci0+cmVhZCs9MjsgeDt9KSAgLDB4MDEpICAsIHJlYWxfdXNlKHRyLCByZWdf
bWVtICkgICApICAgKSAgOwogICAgYnJlYWs7CiAgY2FzZSAweDJmOgogICAgcmVhbF9zZXQodHIs
IHJlZ19hICwgIHdyX29wKHRyLG9wX2FyaXRoLCAweGE4ICwweDM2LCAgMCAsICB3cl9vcCh0cixv
cF9jb25zdCwgMHhmZiAsMHgwMSkgICwgIHJlYWxfdXNlKHRyLCByZWdfYSApICAgKSAgICkgIDsK
ICAgIChyZWFsX3NldCh0ciwgIHJlZ19mbiAgICwgd3Jfb3AodHIsb3BfY29uc3QsICAgIDEgICAs
MHgwMSkgICkgKSAgOwogICAgKHJlYWxfc2V0KHRyLCAgcmVnX2ZoICAgLCB3cl9vcCh0cixvcF9j
b25zdCwgICAgMSAgICwweDAxKSAgKSApICA7CiAgICBicmVhazsKICBjYXNlIDB4MzA6IGNhc2Ug
MHgzODoKICAgIHQ9IHJlYWxfdXNlKHRyLCByZWdfZmMgICkgIDsKICAgIGdvdG8gc2Nhbl9qcl9j
YzsKICAgIGJyZWFrOwogIGNhc2UgMHgzMjoKICAgIHJlYWxfc2V0KHRyLCByZWdfbWVtICwgIHdy
X29wKHRyLG9wX3N0b3JlOCwwLDB4MzEsICByZWFsX3VzZSh0ciwgcmVnX2EgKSAgICwgIHdyX29w
KHRyLG9wX2NvbnN0LCAoe3UxNiB4OyBpZiAoISh0ci0+cmVhZCsoIDIgKTw9dHItPnJlYWRfZW5k
KSkgcmV0dXJuICAyICA7IHg9dHItPnJlYWRbMF18dHItPnJlYWRbMV08PDg7IHRyLT5yZWFkKz0y
OyB4O30pICAsMHgwMSkgICwgcmVhbF91c2UodHIsIHJlZ19tZW0gKSAgICkgICApICA7CiAgICBi
cmVhazsKICBjYXNlIDB4Mzc6CiAgICAocmVhbF9zZXQodHIsICByZWdfZmMgICAsIHdyX29wKHRy
LG9wX2NvbnN0LCAgICAxICAgLDB4MDEpICApICkgIDsKICAgIChyZWFsX3NldCh0ciwgIHJlZ19m
biAgICwgd3Jfb3AodHIsb3BfY29uc3QsICAgIDAgICAsMHgwMSkgICkgKSAgOwogICAgKHJlYWxf
c2V0KHRyLCAgcmVnX2ZoICAgLCB3cl9vcCh0cixvcF9jb25zdCwgICAgMCAgICwweDAxKSAgKSAp
ICA7CiAgICBicmVhazsKICBjYXNlIDB4M2E6CiAgICByZWFsX3NldCh0ciwgcmVnX2EgLCAgd3Jf
b3AodHIsb3BfbG9hZDgsMCwweDIxLCAgd3Jfb3AodHIsb3BfY29uc3QsICh7dTE2IHg7IGlmICgh
KHRyLT5yZWFkKyggMiApPD10ci0+cmVhZF9lbmQpKSByZXR1cm4gIDIgIDsgeD10ci0+cmVhZFsw
XXx0ci0+cmVhZFsxXTw8ODsgdHItPnJlYWQrPTI7IHg7fSkgICwweDAxKSAgLCByZWFsX3VzZSh0
ciwgcmVnX21lbSApICAgKSAgICkgIDsKICAgIGJyZWFrOwogIGNhc2UgMHgzZjoKICAgIHJlYWxf
c2V0KHRyLCByZWdfZmMgICwgICB0PSB3cl9vcCh0cixvcF9mbGlwLDAsMHgxMiwgcmVhbF91c2Uo
dHIsIHJlZ19mYyAgKSAgICkgICApICA7CiAgICAocmVhbF9zZXQodHIsICByZWdfZm4gICAsIHdy
X29wKHRyLG9wX2NvbnN0LCAgICAwICAgLDB4MDEpICApICkgIDsKICAgIHJlYWxfc2V0KHRyLCBy
ZWdfZmggICwgICB0KzEgICkgIDsKICAgIGJyZWFrOwogIGNhc2UgMHg0MDogY2FzZSAweDQxOiBj
YXNlIDB4NDI6IGNhc2UgMHg0MzogY2FzZSAweDQ0OiBjYXNlIDB4NDU6IGNhc2UgMHg0NzoKICBj
YXNlIDB4NDg6IGNhc2UgMHg0OTogY2FzZSAweDRhOiBjYXNlIDB4NGI6IGNhc2UgMHg0YzogY2Fz
ZSAweDRkOiBjYXNlIDB4NGY6CiAgY2FzZSAweDUwOiBjYXNlIDB4NTE6IGNhc2UgMHg1MjogY2Fz
ZSAweDUzOiBjYXNlIDB4NTQ6IGNhc2UgMHg1NTogY2FzZSAweDU3OgogIGNhc2UgMHg1ODogY2Fz
ZSAweDU5OiBjYXNlIDB4NWE6IGNhc2UgMHg1YjogY2FzZSAweDVjOiBjYXNlIDB4NWQ6IGNhc2Ug
MHg1ZjoKICBjYXNlIDB4NjA6IGNhc2UgMHg2MTogY2FzZSAweDYyOiBjYXNlIDB4NjM6IGNhc2Ug
MHg2NDogY2FzZSAweDY1OiBjYXNlIDB4Njc6CiAgY2FzZSAweDY4OiBjYXNlIDB4Njk6IGNhc2Ug
MHg2YTogY2FzZSAweDZiOiBjYXNlIDB4NmM6IGNhc2UgMHg2ZDogY2FzZSAweDZmOgogIGNhc2Ug
MHg3ODogY2FzZSAweDc5OiBjYXNlIDB4N2E6IGNhc2UgMHg3YjogY2FzZSAweDdjOiBjYXNlIDB4
N2Q6IGNhc2UgMHg3ZjoKICAgICgoIChvcD4+MykmNyApPT03P3JlYWxfc2V0KHRyLCByZWdfYSAs
ICAgICgoIG9wJjcgKT09Nz9yZWFsX3VzZSh0ciwgcmVnX2EgKSAgOiByZWFsX3VzZSh0ciwgcmVn
X2IrKCBvcCY3ICkgKSApICAgICkgIDogcmVhbF9zZXQodHIsIHJlZ19iKyggKG9wPj4zKSY3ICkg
LCAgICgoIG9wJjcgKT09Nz9yZWFsX3VzZSh0ciwgcmVnX2EgKSAgOiByZWFsX3VzZSh0ciwgcmVn
X2IrKCBvcCY3ICkgKSApICAgKSApIDsKICAgIGJyZWFrOwogIGNhc2UgMHg0NjogY2FzZSAweDRl
OiBjYXNlIDB4NTY6IGNhc2UgMHg1ZTogY2FzZSAweDY2OiBjYXNlIDB4NmU6IGNhc2UgMHg3ZToK
ICAgICgoIChvcD4+MykmNyApPT03P3JlYWxfc2V0KHRyLCByZWdfYSAsICAgIHdyX29wKHRyLG9w
X2xvYWQ4LDAsMHgyMSwgcmVhbF91c2UodHIsIHJlZ19obCApICAgLCByZWFsX3VzZSh0ciwgcmVn
X21lbSApICAgKSAgICAgKSAgOiByZWFsX3NldCh0ciwgcmVnX2IrKCAob3A+PjMpJjcgKSAsICAg
d3Jfb3AodHIsb3BfbG9hZDgsMCwweDIxLCByZWFsX3VzZSh0ciwgcmVnX2hsICkgICAsIHJlYWxf
dXNlKHRyLCByZWdfbWVtICkgICApICAgICkgKSA7CiAgICBicmVhazsKICBjYXNlIDB4NzA6IGNh
c2UgMHg3MTogY2FzZSAweDcyOiBjYXNlIDB4NzM6IGNhc2UgMHg3NDogY2FzZSAweDc1OiBjYXNl
IDB4Nzc6CiAgICByZWFsX3NldCh0ciwgcmVnX21lbSAsICB3cl9vcCh0cixvcF9zdG9yZTgsMCww
eDMxLCAgKCggb3AmNyApPT03P3JlYWxfdXNlKHRyLCByZWdfYSApICA6IHJlYWxfdXNlKHRyLCBy
ZWdfYisoIG9wJjcgKSApICkgICAsIHJlYWxfdXNlKHRyLCByZWdfaGwgKSAgICwgcmVhbF91c2Uo
dHIsIHJlZ19tZW0gKSAgICkgICApICAgOwogICAgYnJlYWs7CiAgY2FzZSAweDc2OgogICAgYnJl
YWs7CiAgY2FzZSAweDgwOiBjYXNlIDB4ODE6IGNhc2UgMHg4MjogY2FzZSAweDgzOgogIGNhc2Ug
MHg4NDogY2FzZSAweDg1OiBjYXNlIDB4ODY6IGNhc2UgMHg4NzoKICBjYXNlIDB4ODg6IGNhc2Ug
MHg4OTogY2FzZSAweDhhOiBjYXNlIDB4OGI6CiAgY2FzZSAweDhjOiBjYXNlIDB4OGQ6IGNhc2Ug
MHg4ZTogY2FzZSAweDhmOgogIGNhc2UgMHg5MDogY2FzZSAweDkxOiBjYXNlIDB4OTI6IGNhc2Ug
MHg5MzoKICBjYXNlIDB4OTQ6IGNhc2UgMHg5NTogY2FzZSAweDk2OiBjYXNlIDB4OTc6CiAgY2Fz
ZSAweDk4OiBjYXNlIDB4OTk6IGNhc2UgMHg5YTogY2FzZSAweDliOgogIGNhc2UgMHg5YzogY2Fz
ZSAweDlkOiBjYXNlIDB4OWU6IGNhc2UgMHg5ZjoKICBjYXNlIDB4Yjg6IGNhc2UgMHhiOTogY2Fz
ZSAweGJhOiBjYXNlIDB4YmI6CiAgY2FzZSAweGJjOiBjYXNlIDB4YmQ6IGNhc2UgMHhiZTogY2Fz
ZSAweGJmOgogICAgdD0gKCggb3AmNyApPT03P3JlYWxfdXNlKHRyLCByZWdfYSApICA6IHJlYWxf
dXNlKHRyLCByZWdfYisoIG9wJjcgKSApICkgOwogIHNjYW5fYXJpdGg6CiAgICB0PSB3cl9vcCh0
cixvcF9hcml0aCwgb3AgLDB4MzYsICByZWFsX3VzZSh0ciwgcmVnX2ZjICApICAgLCAgdCAsICBy
ZWFsX3VzZSh0ciwgcmVnX2EgKSAgICkgOwogICAgaWYgKG9wPDB4YTApIHJlYWxfc2V0KHRyLCBy
ZWdfYSAsICB0ICApICA7CiAgICByZWFsX3NldCh0ciwgcmVnX2ZjICAsICAgdCsxICApICA7CiAg
ICAocmVhbF9zZXQodHIsICByZWdfZm4gICAsIHdyX29wKHRyLG9wX2NvbnN0LCAgICBvcD49MHg5
MCAgICwweDAxKSAgKSApICA7CiAgICByZWFsX3NldCh0ciwgcmVnX2ZwdiAgLCAgIHQrMiAgKSAg
OwogICAgcmVhbF9zZXQodHIsIHJlZ19maCAgLCAgIHQrMyAgKSAgOwogICAgcmVhbF9zZXQodHIs
IHJlZ19meiAgLCAgIHQrNCAgKSAgOwogICAgcmVhbF9zZXQodHIsIHJlZ19mcyAgLCAgIHQrNSAg
KSAgOwogICAgYnJlYWs7CiAgY2FzZSAweGEwOiBjYXNlIDB4YTE6IGNhc2UgMHhhMjogY2FzZSAw
eGEzOgogIGNhc2UgMHhhNDogY2FzZSAweGE1OiBjYXNlIDB4YTY6IGNhc2UgMHhhNzoKICBjYXNl
IDB4YTg6IGNhc2UgMHhhOTogY2FzZSAweGFhOiBjYXNlIDB4YWI6CiAgY2FzZSAweGFjOiBjYXNl
IDB4YWQ6IGNhc2UgMHhhZTogY2FzZSAweGFmOgogIGNhc2UgMHhiMDogY2FzZSAweGIxOiBjYXNl
IDB4YjI6IGNhc2UgMHhiMzoKICBjYXNlIDB4YjQ6IGNhc2UgMHhiNTogY2FzZSAweGI2OiBjYXNl
IDB4Yjc6CiAgICB0PSAoKCBvcCY3ICk9PTc/cmVhbF91c2UodHIsIHJlZ19hICkgIDogcmVhbF91
c2UodHIsIHJlZ19iKyggb3AmNyApICkgKSA7CiAgc2Nhbl9sb2dpYzoKICAgIHJlYWxfdXNlKHRy
LCByZWdfYSApICA7CiAgICByZWFsX3NldCh0ciwgcmVnX2EgLCAgdD0gd3Jfb3AodHIsb3BfbG9n
aWMsIG9wICwweDI0LCAgdCAsICByZWFsX3VzZSh0ciwgcmVnX2EgKSAgICkgICApICA7CiAgICAo
cmVhbF9zZXQodHIsICByZWdfZmMgICAsIHdyX29wKHRyLG9wX2NvbnN0LCAgICAwICAgLDB4MDEp
ICApICkgIDsKICAgIChyZWFsX3NldCh0ciwgIHJlZ19mbiAgICwgd3Jfb3AodHIsb3BfY29uc3Qs
ICAgIDAgICAsMHgwMSkgICkgKSAgOwogICAgcmVhbF9zZXQodHIsIHJlZ19mcHYgICwgICB0KzEg
ICkgIDsKICAgIChyZWFsX3NldCh0ciwgIHJlZ19maCAgICwgd3Jfb3AodHIsb3BfY29uc3QsICAg
IG9wPDB4YTggICAsMHgwMSkgICkgKSAgOwogICAgcmVhbF9zZXQodHIsIHJlZ19meiAgLCAgIHQr
MiAgKSAgOwogICAgcmVhbF9zZXQodHIsIHJlZ19mcyAgLCAgIHQrMyAgKSAgOwogICAgYnJlYWs7
CiAgY2FzZSAweGMwOiBjYXNlIDB4Yzg6CiAgICB0PSByZWFsX3VzZSh0ciwgcmVnX2Z6ICApICA7
CiAgc2Nhbl9yZXRfY2M6CiAgICByZWFsX3NldCh0ciwgcmVnX3BjICwgIHQ9IHdyX29wKHRyLG9w
X3JldGNjLDAsMHg0MiwgIHQgLCAgcmVhbF91c2UodHIsIHJlZ19tZW0gKSAgICwgIHJlYWxfdXNl
KHRyLCByZWdfc3AgKSAgICwgcmVhbF91c2UodHIsIHJlZ19wYyApICAgKSAgICkgIDsKICAgIHJl
YWxfc2V0KHRyLCByZWdfc3AgLCAgdCsxICApICA7CiAgICBicmVhazsKICBjYXNlIDB4YzE6IGNh
c2UgMHhkMTogY2FzZSAweGUxOiBjYXNlIDB4ZjE6CiAgICAoKCAob3A+PjQpJjMgKT09Mz9yZWFs
X3NldCh0ciwgcmVnX2FmICwgICAgKHtsb2NfdCB0PSB3cl9vcCh0cixvcF9sb2FkMTYsMCwweDIx
LCByZWFsX3VzZSh0ciwgcmVnX3NwICkgICAsIHJlYWxfdXNlKHRyLCByZWdfbWVtICkgICApICA7
IHJlYWxfc2V0KHRyLCByZWdfc3AgLCAgd3Jfb3AodHIsb3BfYWRjMTYsMCwweDM2LCB3cl9vcCh0
cixvcF9jb25zdCwgMCAsMHgwMSkgICwgIHdyX29wKHRyLG9wX2NvbnN0LCAyICwweDAxKSAgICwg
IHJlYWxfdXNlKHRyLCByZWdfc3AgKSAgICApICAgICkgIDsgdDt9KSAgICApICA6IHJlYWxfc2V0
KHRyLCByZWdfYmMrKCAob3A+PjQpJjMgKSAsICAgKHtsb2NfdCB0PSB3cl9vcCh0cixvcF9sb2Fk
MTYsMCwweDIxLCByZWFsX3VzZSh0ciwgcmVnX3NwICkgICAsIHJlYWxfdXNlKHRyLCByZWdfbWVt
ICkgICApICA7IHJlYWxfc2V0KHRyLCByZWdfc3AgLCAgd3Jfb3AodHIsb3BfYWRjMTYsMCwweDM2
LCB3cl9vcCh0cixvcF9jb25zdCwgMCAsMHgwMSkgICwgIHdyX29wKHRyLG9wX2NvbnN0LCAyICww
eDAxKSAgICwgIHJlYWxfdXNlKHRyLCByZWdfc3AgKSAgICApICAgICkgIDsgdDt9KSAgICkgKSA7
CiAgICBicmVhazsKICBjYXNlIDB4YzI6IGNhc2UgMHhjYToKICAgIHQ9IHJlYWxfdXNlKHRyLCBy
ZWdfZnogICkgIDsKICBzY2FuX2pwX2NjOgogICAgcmVhbF9zZXQodHIsIHJlZ19wYyAsICB3cl9v
cCh0cixvcF9qY2MsIG9wICwweDMxLCAgdCAsICB3cl9vcCh0cixvcF9jb25zdCwgKHt1MTYgeDsg
aWYgKCEodHItPnJlYWQrKCAyICk8PXRyLT5yZWFkX2VuZCkpIHJldHVybiAgMiAgOyB4PXRyLT5y
ZWFkWzBdfHRyLT5yZWFkWzFdPDw4OyB0ci0+cmVhZCs9MjsgeDt9KSAgLDB4MDEpICAsICByZWFs
X3VzZSh0ciwgcmVnX3BjICkgICApICAgKSAgOwogICAgYnJlYWs7CiAgY2FzZSAweGMzOgogICAg
KHJlYWxfc2V0KHRyLCAgcmVnX3BjICAsIHdyX29wKHRyLG9wX2NvbnN0LCAgICh7dTE2IHg7IGlm
ICghKHRyLT5yZWFkKyggMiApPD10ci0+cmVhZF9lbmQpKSByZXR1cm4gIDIgIDsgeD10ci0+cmVh
ZFswXXx0ci0+cmVhZFsxXTw8ODsgdHItPnJlYWQrPTI7IHg7fSkgICAgLDB4MDEpICApICkgIDsK
ICAgIGJyZWFrOwogIGNhc2UgMHhjNDogY2FzZSAweGNjOgogICAgdD0gcmVhbF91c2UodHIsIHJl
Z19meiAgKSAgOwogIHNjYW5fY2FsbF9jYzoKICAgIHJlYWxfc2V0KHRyLCByZWdfcGMgLCAgdD0g
d3Jfb3AodHIsb3BfY2FsbGNjLDB4NDMsICB0ICwgIHJlYWxfdXNlKHRyLCByZWdfbWVtICkgICAs
ICByZWFsX3VzZSh0ciwgcmVnX3NwICkgICAsIHJlYWxfdXNlKHRyLCByZWdfcGMgKSAgICkgICAp
ICA7CiAgICByZWFsX3NldCh0ciwgcmVnX3NwICwgIHQrMSAgKSAgOwogICAgcmVhbF9zZXQodHIs
IHJlZ19tZW0gLCAgdCsyICApICA7CiAgICBicmVhazsKICBjYXNlIDB4YzU6IGNhc2UgMHhkNTog
Y2FzZSAweGU1OiBjYXNlIDB4ZjU6CiAgICAocmVhbF9zZXQodHIsIHJlZ19zcCAsICB3cl9vcCh0
cixvcF9zYmMxNiwwLDB4MzYsIHdyX29wKHRyLG9wX2NvbnN0LCAwICwweDAxKSAgLCAgd3Jfb3Ao
dHIsb3BfY29uc3QsIDIgLDB4MDEpICAgLCAgcmVhbF91c2UodHIsIHJlZ19zcCApICAgICkgICAg
KSAgLHJlYWxfc2V0KHRyLCByZWdfbWVtICwgIHdyX29wKHRyLG9wX3N0b3JlMTYsMCwweDMxLCAg
ICgoIChvcD4+NCkmMyApPT0zP3JlYWxfdXNlKHRyLCByZWdfYWYgKSAgOiByZWFsX3VzZSh0ciwg
cmVnX2JjKyggKG9wPj40KSYzICkgKSApICAgICwgcmVhbF91c2UodHIsIHJlZ19zcCApICAgLCBy
ZWFsX3VzZSh0ciwgcmVnX21lbSApICAgKSAgICkgICApIDsKICAgIGJyZWFrOwogIGNhc2UgMHhj
NjogY2FzZSAweGNlOiBjYXNlIDB4ZDY6IGNhc2UgMHhkZTogY2FzZSAweGZlOgogICAgdD0gd3Jf
b3AodHIsb3BfY29uc3QsICh7aWYgKCEodHItPnJlYWQrKCAxICk8PXRyLT5yZWFkX2VuZCkpIHJl
dHVybiAgMSAgOyAqdHItPnJlYWQrKzt9KSAgLDB4MDEpIDsKICAgIG9wLT0weDQwOwogICAgZ290
byBzY2FuX2FyaXRoOwogIGNhc2UgMHhjNzogY2FzZSAweGNmOiBjYXNlIDB4ZDc6IGNhc2UgMHhk
ZjoKICBjYXNlIDB4ZTc6IGNhc2UgMHhlZjogY2FzZSAweGY3OiBjYXNlIDB4ZmY6CiAgICAocmVh
bF9zZXQodHIsICByZWdfcGMgICwgd3Jfb3AodHIsb3BfY29uc3QsICAgb3AmMHgzOCAgICwweDAx
KSAgKSApICA7CiAgICBicmVhazsKICBjYXNlIDB4Yzk6CiAgICByZWFsX3NldCh0ciwgcmVnX3Bj
ICwgICh7bG9jX3QgdD0gd3Jfb3AodHIsb3BfbG9hZDE2LDAsMHgyMSwgcmVhbF91c2UodHIsIHJl
Z19zcCApICAgLCByZWFsX3VzZSh0ciwgcmVnX21lbSApICAgKSAgOyByZWFsX3NldCh0ciwgcmVn
X3NwICwgIHdyX29wKHRyLG9wX2FkYzE2LDAsMHgzNiwgd3Jfb3AodHIsb3BfY29uc3QsIDAgLDB4
MDEpICAsICB3cl9vcCh0cixvcF9jb25zdCwgMiAsMHgwMSkgICAsICByZWFsX3VzZSh0ciwgcmVn
X3NwICkgICAgKSAgICApICA7IHQ7fSkgICApICA7CiAgICBicmVhazsKICBjYXNlIDB4Y2I6CiAg
ICBvcD0gKHtpZiAoISh0ci0+cmVhZCsoIDEgKTw9dHItPnJlYWRfZW5kKSkgcmV0dXJuICAxICA7
ICp0ci0+cmVhZCsrO30pIDsKICAgIGlmIChpeHkpIGRpcz0gKHtpZiAoISh0ci0+cmVhZCsoIDEg
KTw9dHItPnJlYWRfZW5kKSkgcmV0dXJuICAxICA7ICp0ci0+cmVhZCsrO30pIDsKICAgIGlmIChv
cDwweDQwKSB7CiAgICAgICgoIG9wJjcgKT09Nz9yZWFsX3NldCh0ciwgcmVnX2EgLCAgICB0PSB3
cl9vcCh0cixvcF9yeCwgb3AgLDB4MjUsICByZWFsX3VzZSh0ciwgcmVnX2ZjICApICAgLCAgKCgg
b3AmNyApPT03P3JlYWxfdXNlKHRyLCByZWdfYSApICA6IHJlYWxfdXNlKHRyLCByZWdfYisoIG9w
JjcgKSApICkgICkgICAgKSAgOiByZWFsX3NldCh0ciwgcmVnX2IrKCBvcCY3ICkgLCAgIHQ9IHdy
X29wKHRyLG9wX3J4LCBvcCAsMHgyNSwgIHJlYWxfdXNlKHRyLCByZWdfZmMgICkgICAsICAoKCBv
cCY3ICk9PTc/cmVhbF91c2UodHIsIHJlZ19hICkgIDogcmVhbF91c2UodHIsIHJlZ19iKyggb3Am
NyApICkgKSAgKSAgICkgKSA7CiAgICAgIHJlYWxfc2V0KHRyLCByZWdfZmMgICwgICB0KzEgICkg
IDsKICAgICAgKHJlYWxfc2V0KHRyLCAgcmVnX2ZuICAgLCB3cl9vcCh0cixvcF9jb25zdCwgICAg
MCAgICwweDAxKSAgKSApICA7CiAgICAgIHJlYWxfc2V0KHRyLCByZWdfZnB2ICAsICAgdCsyICAp
ICA7CiAgICAgIChyZWFsX3NldCh0ciwgIHJlZ19maCAgICwgd3Jfb3AodHIsb3BfY29uc3QsICAg
IDAgICAsMHgwMSkgICkgKSAgOwogICAgICByZWFsX3NldCh0ciwgcmVnX2Z6ICAsICAgdCszICAp
ICA7CiAgICAgIHJlYWxfc2V0KHRyLCByZWdfZnMgICwgICB0KzQgICkgIDsKICAgIH0KICAgIGVs
c2UgaWYgKG9wPDB4ODApIHsKICAgICAgcmVhbF9zZXQodHIsIHJlZ19meiAgLCAgIHQ9IHdyX29w
KHRyLG9wX2JpdCwgb3AgLDB4MTMsICAoKCBvcCY3ICk9PTc/cmVhbF91c2UodHIsIHJlZ19hICkg
IDogcmVhbF91c2UodHIsIHJlZ19iKyggb3AmNyApICkgKSAgKSAgICkgIDsKICAgICAgKHJlYWxf
c2V0KHRyLCAgcmVnX2ZuICAgLCB3cl9vcCh0cixvcF9jb25zdCwgICAgMCAgICwweDAxKSAgKSAp
ICA7CiAgICAgIHJlYWxfc2V0KHRyLCByZWdfZnB2ICAsICAgdCsxICApICA7CiAgICAgIChyZWFs
X3NldCh0ciwgIHJlZ19maCAgICwgd3Jfb3AodHIsb3BfY29uc3QsICAgIDEgICAsMHgwMSkgICkg
KSAgOwogICAgICByZWFsX3NldCh0ciwgcmVnX2ZzICAsICAgdCsyICApICA7CiAgICB9CiAgICBl
bHNlIHsKICAgICAgKCggb3AmNyApPT03P3JlYWxfc2V0KHRyLCByZWdfYSAsICAgIHdyX29wKHRy
LG9wX3Jlc3NldCwgb3AgLDB4MTEsICAoKCBvcCY3ICk9PTc/cmVhbF91c2UodHIsIHJlZ19hICkg
IDogcmVhbF91c2UodHIsIHJlZ19iKyggb3AmNyApICkgKSAgKSAgICApICA6IHJlYWxfc2V0KHRy
LCByZWdfYisoIG9wJjcgKSAsICAgd3Jfb3AodHIsb3BfcmVzc2V0LCBvcCAsMHgxMSwgICgoIG9w
JjcgKT09Nz9yZWFsX3VzZSh0ciwgcmVnX2EgKSAgOiByZWFsX3VzZSh0ciwgcmVnX2IrKCBvcCY3
ICkgKSApICApICAgKSApIDsKICAgIH0KICAgIGJyZWFrOwogIGNhc2UgMHhjZDoKICAgIChyZWFs
X3NldCh0ciwgcmVnX3NwICwgIHdyX29wKHRyLG9wX3NiYzE2LDAsMHgzNiwgd3Jfb3AodHIsb3Bf
Y29uc3QsIDAgLDB4MDEpICAsICB3cl9vcCh0cixvcF9jb25zdCwgMiAsMHgwMSkgICAsICByZWFs
X3VzZSh0ciwgcmVnX3NwICkgICAgKSAgICApICAscmVhbF9zZXQodHIsIHJlZ19tZW0gLCAgd3Jf
b3AodHIsb3Bfc3RvcmUxNiwwLDB4MzEsICAgcmVhbF91c2UodHIsIHJlZ19wYyApICAgICAsIHJl
YWxfdXNlKHRyLCByZWdfc3AgKSAgICwgcmVhbF91c2UodHIsIHJlZ19tZW0gKSAgICkgICApICAg
KSA7CiAgICAocmVhbF9zZXQodHIsICByZWdfcGMgICwgd3Jfb3AodHIsb3BfY29uc3QsICAgKHt1
MTYgeDsgaWYgKCEodHItPnJlYWQrKCAyICk8PXRyLT5yZWFkX2VuZCkpIHJldHVybiAgMiAgOyB4
PXRyLT5yZWFkWzBdfHRyLT5yZWFkWzFdPDw4OyB0ci0+cmVhZCs9MjsgeDt9KSAgICAsMHgwMSkg
ICkgKSAgOwogICAgYnJlYWs7CiAgY2FzZSAweGQwOiBjYXNlIDB4ZDg6CiAgICB0PSByZWFsX3Vz
ZSh0ciwgcmVnX2ZjICApICA7CiAgICBnb3RvIHNjYW5fcmV0X2NjOwogIGNhc2UgMHhkMjogY2Fz
ZSAweGRhOgogICAgdD0gcmVhbF91c2UodHIsIHJlZ19mYyAgKSAgOwogICAgZ290byBzY2FuX2pw
X2NjOwogIGNhc2UgMHhkMzoKICAgIHJlYWxfc2V0KHRyLCByZWdfaW8gLCAgd3Jfb3AodHIsb3Bf
b3V0LDAsMHgzMSwgIHJlYWxfdXNlKHRyLCByZWdfYSApICAgLCAgd3Jfb3AodHIsb3BfY29uc3Qs
ICh7aWYgKCEodHItPnJlYWQrKCAxICk8PXRyLT5yZWFkX2VuZCkpIHJldHVybiAgMSAgOyAqdHIt
PnJlYWQrKzt9KSAgLDB4MDEpICAsIHJlYWxfdXNlKHRyLCByZWdfaW8gKSAgICkgICApICA7CiAg
ICBicmVhazsKICBjYXNlIDB4ZDQ6IGNhc2UgMHhkYzoKICAgIHQ9IHJlYWxfdXNlKHRyLCByZWdf
ZmMgICkgIDsKICAgIGdvdG8gc2Nhbl9jYWxsX2NjOwogIGNhc2UgMHhkOToKICAgIHQ9IHJlYWxf
dXNlKHRyLCByZWdfYmMgKSA7IHJlYWxfc2V0KHRyLCByZWdfYmMgLCAgcmVhbF91c2UodHIsIHJl
Z19iY18gKSAgKSA7IHJlYWxfc2V0KHRyLCByZWdfYmNfICwgIHQgKSA7CiAgICB0PSByZWFsX3Vz
ZSh0ciwgcmVnX2RlICkgOyByZWFsX3NldCh0ciwgcmVnX2RlICwgIHJlYWxfdXNlKHRyLCByZWdf
ZGVfICkgICkgOyByZWFsX3NldCh0ciwgcmVnX2RlXyAsICB0ICkgOwogICAgdD0gcmVhbF91c2Uo
dHIsIHJlZ19obCApIDsgcmVhbF9zZXQodHIsIHJlZ19obCAsICByZWFsX3VzZSh0ciwgcmVnX2hs
XyApICApIDsgcmVhbF9zZXQodHIsIHJlZ19obF8gLCAgdCApIDsKICAgIGJyZWFrOwogIGNhc2Ug
MHhkYjoKICAgIHJlYWxfc2V0KHRyLCByZWdfaW8gLCAgdD0gd3Jfb3AodHIsb3BfaW4sMCwweDI2
LCAgd3Jfb3AodHIsb3BfY29uc3QsICh7aWYgKCEodHItPnJlYWQrKCAxICk8PXRyLT5yZWFkX2Vu
ZCkpIHJldHVybiAgMSAgOyAqdHItPnJlYWQrKzt9KSAgLDB4MDEpICAsIHJlYWxfdXNlKHRyLCBy
ZWdfaW8gKSAgICkgICApICA7CiAgICByZWFsX3NldCh0ciwgcmVnX2EgLCAgdCsxICApICA7CiAg
ICBicmVhazsKICBjYXNlIDB4ZGQ6CiAgICBpeHk9cmVnX2l4OwogICAgZ290byByZXN0YXJ0Owog
IGNhc2UgMHhlMDogY2FzZSAweGU4OgogICAgdD0gcmVhbF91c2UodHIsIHJlZ19mcHYgICkgIDsK
ICAgIGdvdG8gc2Nhbl9yZXRfY2M7CiAgY2FzZSAweGUyOiBjYXNlIDB4ZWE6CiAgICB0PSByZWFs
X3VzZSh0ciwgcmVnX2ZwdiAgKSAgOwogICAgZ290byBzY2FuX2pwX2NjOwogIGNhc2UgMHhlMzoK
ICAgIHQ9IHdyX29wKHRyLG9wX2xvYWQxNiwwLDB4MjEsIHJlYWxfdXNlKHRyLCByZWdfc3AgKSAg
ICwgcmVhbF91c2UodHIsIHJlZ19tZW0gKSAgICkgIDsgcmVhbF9zZXQodHIsIHJlZ19tZW0gLCAg
d3Jfb3AodHIsb3Bfc3RvcmUxNiwwLDB4MzEsICByZWFsX3VzZSh0ciwgcmVnX2hsICkgICAgLCBy
ZWFsX3VzZSh0ciwgcmVnX3NwICkgICAsIHJlYWxfdXNlKHRyLCByZWdfbWVtICkgICApICAgKSAg
IDsgcmVhbF9zZXQodHIsIHJlZ19obCAsICB0ICApICA7CiAgICBicmVhazsKICBjYXNlIDB4ZTQ6
IGNhc2UgMHhlYzoKICAgIHQ9IHJlYWxfdXNlKHRyLCByZWdfZnB2ICApICA7CiAgICBnb3RvIHNj
YW5fY2FsbF9jYzsKICBjYXNlIDB4ZTY6IGNhc2UgMHhlZTogY2FzZSAweGY2OgogICAgdD0gd3Jf
b3AodHIsb3BfY29uc3QsICh7aWYgKCEodHItPnJlYWQrKCAxICk8PXRyLT5yZWFkX2VuZCkpIHJl
dHVybiAgMSAgOyAqdHItPnJlYWQrKzt9KSAgLDB4MDEpIDsKICAgIG9wLT0weDQwOwogICAgZ290
byBzY2FuX2xvZ2ljOwogIGNhc2UgMHhlOToKICAgIHJlYWxfc2V0KHRyLCByZWdfcGMgLCAgcmVh
bF91c2UodHIsIHJlZ19obCApICAgICkgIDsKICAgIGJyZWFrOwogIGNhc2UgMHhlYjoKICAgIHQ9
IHJlYWxfdXNlKHRyLCByZWdfZGUgKSAgOyByZWFsX3NldCh0ciwgcmVnX2RlICwgIHJlYWxfdXNl
KHRyLCByZWdfaGwgKSAgICApICA7IHJlYWxfc2V0KHRyLCByZWdfaGwgLCAgdCAgKSAgOwogICAg
YnJlYWs7CiAgY2FzZSAweGVkOgogICAgaXh5PTA7CiAgICBvcD0gKHtpZiAoISh0ci0+cmVhZCso
IDEgKTw9dHItPnJlYWRfZW5kKSkgcmV0dXJuICAxICA7ICp0ci0+cmVhZCsrO30pIDsKICAgIHN3
aXRjaCAob3ApIHsKICAgIGNhc2UgMHg0MDogY2FzZSAweDQ4OiBjYXNlIDB4NTA6IGNhc2UgMHg1
ODoKICAgIGNhc2UgMHg2MDogY2FzZSAweDY4OiBjYXNlIDB4NzA6IGNhc2UgMHg3ODoKICAgICAg
cmVhbF9zZXQodHIsIHJlZ19pbyAsICB0PSB3cl9vcCh0cixvcF9pbiwwLDB4MjYsICByZWFsX3Vz
ZSh0ciwgcmVnX2MgKSAgICwgcmVhbF91c2UodHIsIHJlZ19pbyApICAgKSAgICkgIDsKICAgICAg
aWYgKG9wIT0weDcwKSAoKCAob3A+PjMpJjcgKT09Nz9yZWFsX3NldCh0ciwgcmVnX2EgLCAgICB0
KzEgICApICA6IHJlYWxfc2V0KHRyLCByZWdfYisoIChvcD4+MykmNyApICwgICB0KzEgICkgKSA7
CiAgICAgIChyZWFsX3NldCh0ciwgIHJlZ19mbiAgICwgd3Jfb3AodHIsb3BfY29uc3QsICAgIDAg
ICAsMHgwMSkgICkgKSAgOwogICAgICByZWFsX3NldCh0ciwgcmVnX2ZwdiAgLCAgIHQrMiAgKSAg
OwogICAgICByZWFsX3NldCh0ciwgcmVnX2ZoICAsICAgdCszICApICA7CiAgICAgIHJlYWxfc2V0
KHRyLCByZWdfZnogICwgICB0KzQgICkgIDsKICAgICAgcmVhbF9zZXQodHIsIHJlZ19mcyAgLCAg
IHQrNSAgKSAgOwogICAgICBicmVhazsKICAgIGNhc2UgMHg0MTogY2FzZSAweDQ5OiBjYXNlIDB4
NTE6IGNhc2UgMHg1OToKICAgIGNhc2UgMHg2MTogY2FzZSAweDY5OiBjYXNlIDB4Nzk6CiAgICAg
IHJlYWxfc2V0KHRyLCByZWdfaW8gLCAgd3Jfb3AodHIsb3Bfb3V0LDAsMHgzMSwgICgoIChvcD4+
MykmNyApPT03P3JlYWxfdXNlKHRyLCByZWdfYSApICA6IHJlYWxfdXNlKHRyLCByZWdfYisoIChv
cD4+MykmNyApICkgKSAgLCAgcmVhbF91c2UodHIsIHJlZ19jICkgICAsIHJlYWxfdXNlKHRyLCBy
ZWdfaW8gKSAgICkgICApICA7CiAgICAgIGJyZWFrOwogICAgY2FzZSAweDQyOiBjYXNlIDB4NTI6
IGNhc2UgMHg2MjogY2FzZSAweDcyOgogICAgICByZWFsX3NldCh0ciwgcmVnX2hsICwgIHQ9IHdy
X29wKHRyLG9wX3NiYzE2LDAsMHgzNiwgIHJlYWxfdXNlKHRyLCByZWdfZmMgICkgICAsICAoKCAo
b3A+PjQpJjMgKT09Mz9yZWFsX3VzZSh0ciwgcmVnX3NwICkgIDogcmVhbF91c2UodHIsIHJlZ19i
YysoIChvcD4+NCkmMyApICkgKSAgLCByZWFsX3VzZSh0ciwgcmVnX2hsICkgICApICAgKSAgOwog
ICAgICByZWFsX3NldCh0ciwgcmVnX2ZjICAsICAgdCsxICApICA7CiAgICAgIChyZWFsX3NldCh0
ciwgIHJlZ19mbiAgICwgd3Jfb3AodHIsb3BfY29uc3QsICAgIDEgICAsMHgwMSkgICkgKSAgOwog
ICAgICByZWFsX3NldCh0ciwgcmVnX2ZwdiAgLCAgIHQrMiAgKSAgOwogICAgICByZWFsX3NldCh0
ciwgcmVnX2ZoICAsICAgdCszICApICA7CiAgICAgIHJlYWxfc2V0KHRyLCByZWdfZnogICwgICB0
KzQgICkgIDsKICAgICAgcmVhbF9zZXQodHIsIHJlZ19mcyAgLCAgIHQrNSAgKSAgOwogICAgICBi
cmVhazsKICAgIGNhc2UgMHg0MzogY2FzZSAweDUzOiBjYXNlIDB4NjM6IGNhc2UgMHg3MzoKICAg
ICAgcmVhbF9zZXQodHIsIHJlZ19tZW0gLCAgd3Jfb3AodHIsb3Bfc3RvcmUxNiwwLDB4MzEsCgkJ
CSAgICAoKCAob3A+PjQpJjMgKT09Mz9yZWFsX3VzZSh0ciwgcmVnX3NwICkgIDogcmVhbF91c2Uo
dHIsIHJlZ19iYysoIChvcD4+NCkmMyApICkgKSAgLCAgd3Jfb3AodHIsb3BfY29uc3QsICh7dTE2
IHg7IGlmICghKHRyLT5yZWFkKyggMiApPD10ci0+cmVhZF9lbmQpKSByZXR1cm4gIDIgIDsgeD10
ci0+cmVhZFswXXx0ci0+cmVhZFsxXTw8ODsgdHItPnJlYWQrPTI7IHg7fSkgICwweDAxKSAgLCBy
ZWFsX3VzZSh0ciwgcmVnX21lbSApICAgKSAgICkgIDsKICAgICAgYnJlYWs7CiAgICBjYXNlIDB4
NGE6IGNhc2UgMHg1YTogY2FzZSAweDZhOiBjYXNlIDB4N2E6CiAgICAgIHJlYWxfc2V0KHRyLCBy
ZWdfaGwgLCAgdD0gd3Jfb3AodHIsb3BfYWRjMTYsMCwweDM2LCAgcmVhbF91c2UodHIsIHJlZ19m
YyAgKSAgICwgICgoIChvcD4+NCkmMyApPT0zP3JlYWxfdXNlKHRyLCByZWdfc3AgKSAgOiByZWFs
X3VzZSh0ciwgcmVnX2JjKyggKG9wPj40KSYzICkgKSApICAsIHJlYWxfdXNlKHRyLCByZWdfaGwg
KSAgICkgICApICA7CiAgICAgIHJlYWxfc2V0KHRyLCByZWdfZmMgICwgICB0KzEgICkgIDsKICAg
ICAgKHJlYWxfc2V0KHRyLCAgcmVnX2ZuICAgLCB3cl9vcCh0cixvcF9jb25zdCwgICAgMCAgICww
eDAxKSAgKSApICA7CiAgICAgIHJlYWxfc2V0KHRyLCByZWdfZnB2ICAsICAgdCsyICApICA7CiAg
ICAgIHJlYWxfc2V0KHRyLCByZWdfZmggICwgICB0KzMgICkgIDsKICAgICAgcmVhbF9zZXQodHIs
IHJlZ19meiAgLCAgIHQrNCAgKSAgOwogICAgICByZWFsX3NldCh0ciwgcmVnX2ZzICAsICAgdCs1
ICApICA7CiAgICAgIGJyZWFrOwogICAgY2FzZSAweDRiOiBjYXNlIDB4NWI6IGNhc2UgMHg2Yjog
Y2FzZSAweDdiOgogICAgICAoKCAob3A+PjQpJjMgKT09Mz9yZWFsX3NldCh0ciwgcmVnX3NwICwg
ICAgd3Jfb3AodHIsb3BfbG9hZDE2LDAsMHgyMSwgIHdyX29wKHRyLG9wX2NvbnN0LCAoe3UxNiB4
OyBpZiAoISh0ci0+cmVhZCsoIDIgKTw9dHItPnJlYWRfZW5kKSkgcmV0dXJuICAyICA7IHg9dHIt
PnJlYWRbMF18dHItPnJlYWRbMV08PDg7IHRyLT5yZWFkKz0yOyB4O30pICAsMHgwMSkgICwgcmVh
bF91c2UodHIsIHJlZ19tZW0gKSAgICkgICAgKSAgOiByZWFsX3NldCh0ciwgcmVnX2JjKyggKG9w
Pj40KSYzICkgLCAgIHdyX29wKHRyLG9wX2xvYWQxNiwwLDB4MjEsICB3cl9vcCh0cixvcF9jb25z
dCwgKHt1MTYgeDsgaWYgKCEodHItPnJlYWQrKCAyICk8PXRyLT5yZWFkX2VuZCkpIHJldHVybiAg
MiAgOyB4PXRyLT5yZWFkWzBdfHRyLT5yZWFkWzFdPDw4OyB0ci0+cmVhZCs9MjsgeDt9KSAgLDB4
MDEpICAsIHJlYWxfdXNlKHRyLCByZWdfbWVtICkgICApICAgKSApIDsKICAgICAgYnJlYWs7CiAg
ICBjYXNlIDB4NDQ6CiAgICAgIHJlYWxfc2V0KHRyLCByZWdfYSAsICB0PSB3cl9vcCh0cixvcF9h
cml0aCwgMHg5MCAsMHgzNiwgIDAgLCAgcmVhbF91c2UodHIsIHJlZ19hICkgICAsICB3cl9vcCh0
cixvcF9jb25zdCwgMCAsMHgwMSkgICkgICApICA7CiAgICAgIHJlYWxfc2V0KHRyLCByZWdfZmMg
ICwgICB0KzEgICkgIDsKICAgICAgKHJlYWxfc2V0KHRyLCAgcmVnX2ZuICAgLCB3cl9vcCh0cixv
cF9jb25zdCwgICAgMSAgICwweDAxKSAgKSApICA7CiAgICAgIHJlYWxfc2V0KHRyLCByZWdfZnB2
ICAsICAgdCsyICApICA7CiAgICAgIHJlYWxfc2V0KHRyLCByZWdfZmggICwgICB0KzMgICkgIDsK
ICAgICAgcmVhbF9zZXQodHIsIHJlZ19meiAgLCAgIHQrNCAgKSAgOwogICAgICByZWFsX3NldCh0
ciwgcmVnX2ZzICAsICAgdCs1ICApICA7CiAgICAgIGJyZWFrOwogICAgY2FzZSAweGEwOiBjYXNl
IDB4YTg6CiAgICAgIHJlYWxfc2V0KHRyLCByZWdfbWVtICwgIHdyX29wKHRyLG9wX3N0b3JlOCww
LDB4MzEsICB3cl9vcCh0cixvcF9sb2FkOCwwLDB4MjEsIHJlYWxfdXNlKHRyLCByZWdfaGwgKSAg
ICwgcmVhbF91c2UodHIsIHJlZ19tZW0gKSAgICkgICAgLCByZWFsX3VzZSh0ciwgcmVnX2RlICkg
ICAsIHJlYWxfdXNlKHRyLCByZWdfbWVtICkgICApICAgKSAgIDsKICAgICAgaWYgKG9wPT0weGEw
KSB7CglyZWFsX3NldCh0ciwgcmVnX2hsICwgIHdyX29wKHRyLG9wX2FkYzE2LDAsMHgzNiwgd3Jf
b3AodHIsb3BfY29uc3QsIDAgLDB4MDEpICAsICB3cl9vcCh0cixvcF9jb25zdCwgMSAsMHgwMSkg
ICAsICAgcmVhbF91c2UodHIsIHJlZ19obCApICAgICApICAgICApICA7CglyZWFsX3NldCh0ciwg
cmVnX2RlICwgIHdyX29wKHRyLG9wX2FkYzE2LDAsMHgzNiwgd3Jfb3AodHIsb3BfY29uc3QsIDAg
LDB4MDEpICAsICB3cl9vcCh0cixvcF9jb25zdCwgMSAsMHgwMSkgICAsICAgcmVhbF91c2UodHIs
IHJlZ19kZSApICAgICApICAgICApICA7CiAgICAgIH0KICAgICAgZWxzZSB7CglyZWFsX3NldCh0
ciwgcmVnX2hsICwgIHdyX29wKHRyLG9wX3NiYzE2LDAsMHgzNiwgd3Jfb3AodHIsb3BfY29uc3Qs
IDAgLDB4MDEpICAsICB3cl9vcCh0cixvcF9jb25zdCwgMSAsMHgwMSkgICAsICAgcmVhbF91c2Uo
dHIsIHJlZ19obCApICAgICApICAgICApICA7CglyZWFsX3NldCh0ciwgcmVnX2RlICwgIHdyX29w
KHRyLG9wX3NiYzE2LDAsMHgzNiwgd3Jfb3AodHIsb3BfY29uc3QsIDAgLDB4MDEpICAsICB3cl9v
cCh0cixvcF9jb25zdCwgMSAsMHgwMSkgICAsICAgcmVhbF91c2UodHIsIHJlZ19kZSApICAgICAp
ICAgICApICA7CiAgICAgIH0KICAgICAgKHJlYWxfc2V0KHRyLCAgcmVnX2ZuICAgLCB3cl9vcCh0
cixvcF9jb25zdCwgICAgMCAgICwweDAxKSAgKSApICA7CiAgICAgIChyZWFsX3NldCh0ciwgIHJl
Z19maCAgICwgd3Jfb3AodHIsb3BfY29uc3QsICAgIDAgICAsMHgwMSkgICkgKSAgOwogICAgICBy
ZWFsX3NldCh0ciwgcmVnX2JjICwgIHQ9IHdyX29wKHRyLG9wX3NiYzE2LDAsMHgzNiwgd3Jfb3Ao
dHIsb3BfY29uc3QsIDAgLDB4MDEpICAsICB3cl9vcCh0cixvcF9jb25zdCwgMSAsMHgwMSkgICAs
ICAgcmVhbF91c2UodHIsIHJlZ19iYyApICAgICApICAgICApICA7CiAgICAgIHJlYWxfc2V0KHRy
LCByZWdfZnB2ICAsICAgd3Jfb3AodHIsb3BfZmxpcCwwLDB4MTIsIHQrNCApICAgKSAgOwogICAg
ICBicmVhazsKICAgIGNhc2UgMHhhMTogY2FzZSAweGE5OgogICAgICB0PSB3cl9vcCh0cixvcF9h
cml0aCwgMHhiOCAsMHgzNiwgIDAgLCAgd3Jfb3AodHIsb3BfbG9hZDgsMCwweDIxLCByZWFsX3Vz
ZSh0ciwgcmVnX2hsICkgICAsIHJlYWxfdXNlKHRyLCByZWdfbWVtICkgICApICAgLCAgcmVhbF91
c2UodHIsIHJlZ19hICkgICApIDsKICAgICAgaWYgKG9wPT0weGExKSByZWFsX3NldCh0ciwgcmVn
X2hsICwgIHdyX29wKHRyLG9wX2FkYzE2LDAsMHgzNiwgd3Jfb3AodHIsb3BfY29uc3QsIDAgLDB4
MDEpICAsICB3cl9vcCh0cixvcF9jb25zdCwgMSAsMHgwMSkgICAsICAgcmVhbF91c2UodHIsIHJl
Z19obCApICAgICApICAgICApICA7CiAgICAgIGVsc2UgcmVhbF9zZXQodHIsIHJlZ19obCAsICB3
cl9vcCh0cixvcF9zYmMxNiwwLDB4MzYsIHdyX29wKHRyLG9wX2NvbnN0LCAwICwweDAxKSAgLCAg
d3Jfb3AodHIsb3BfY29uc3QsIDEgLDB4MDEpICAgLCAgIHJlYWxfdXNlKHRyLCByZWdfaGwgKSAg
ICAgKSAgICAgKSAgOwogICAgICAocmVhbF9zZXQodHIsICByZWdfZm4gICAsIHdyX29wKHRyLG9w
X2NvbnN0LCAgICAxICAgLDB4MDEpICApICkgIDsKICAgICAgcmVhbF9zZXQodHIsIHJlZ19maCAg
LCAgIHQrMiAgKSAgOwogICAgICByZWFsX3NldCh0ciwgcmVnX2Z6ICAsICAgdCs0ICApICA7CiAg
ICAgIHJlYWxfc2V0KHRyLCByZWdfZnMgICwgICB0KzUgICkgIDsKICAgICAgcmVhbF9zZXQodHIs
IHJlZ19iYyAsICB0PSB3cl9vcCh0cixvcF9zYmMxNiwwLDB4MzYsIHdyX29wKHRyLG9wX2NvbnN0
LCAwICwweDAxKSAgLCAgd3Jfb3AodHIsb3BfY29uc3QsIDEgLDB4MDEpICAgLCAgIHJlYWxfdXNl
KHRyLCByZWdfYmMgKSAgICAgKSAgICAgKSAgOwogICAgICByZWFsX3NldCh0ciwgcmVnX2ZwdiAg
LCAgIHdyX29wKHRyLG9wX2ZsaXAsMCwweDEyLCB0KzQgKSAgICkgIDsKICAgICAgYnJlYWs7CiAg
ICBjYXNlIDB4YTI6IGNhc2UgMHhhYToKICAgICAgcmVhbF9zZXQodHIsIHJlZ19pbyAsICB0PSB3
cl9vcCh0cixvcF9pbiwwLDB4MjYsICByZWFsX3VzZSh0ciwgcmVnX2MgKSAgICwgcmVhbF91c2Uo
dHIsIHJlZ19pbyApICAgKSAgICkgIDsKICAgICAgcmVhbF9zZXQodHIsIHJlZ19tZW0gLCAgd3Jf
b3AodHIsb3Bfc3RvcmU4LDAsMHgzMSwgIHQrMSAgLCByZWFsX3VzZSh0ciwgcmVnX2hsICkgICAs
IHJlYWxfdXNlKHRyLCByZWdfbWVtICkgICApICAgKSAgIDsKICAgICAgaWYgKG9wPT0weGEyKSBy
ZWFsX3NldCh0ciwgcmVnX2hsICwgIHdyX29wKHRyLG9wX2FkYzE2LDAsMHgzNiwgd3Jfb3AodHIs
b3BfY29uc3QsIDAgLDB4MDEpICAsICB3cl9vcCh0cixvcF9jb25zdCwgMSAsMHgwMSkgICAsICAg
cmVhbF91c2UodHIsIHJlZ19obCApICAgICApICAgICApICA7CiAgICAgIGVsc2UgcmVhbF9zZXQo
dHIsIHJlZ19obCAsICB3cl9vcCh0cixvcF9zYmMxNiwwLDB4MzYsIHdyX29wKHRyLG9wX2NvbnN0
LCAwICwweDAxKSAgLCAgd3Jfb3AodHIsb3BfY29uc3QsIDEgLDB4MDEpICAgLCAgIHJlYWxfdXNl
KHRyLCByZWdfaGwgKSAgICAgKSAgICAgKSAgOwogICAgICByZWFsX3NldCh0ciwgcmVnX2IgLCAg
d3Jfb3AodHIsb3BfYXJpdGgsIDB4OTAgLDB4MzYsIDAgLCB3cl9vcCh0cixvcF9jb25zdCwgMSAs
MHgwMSkgICwgIHJlYWxfdXNlKHRyLCByZWdfYiApICAgICkgICAgKSAgOwogICAgICAocmVhbF9z
ZXQodHIsICByZWdfZm4gICAsIHdyX29wKHRyLG9wX2NvbnN0LCAgICAxICAgLDB4MDEpICApICkg
IDsKICAgICAgYnJlYWs7CiAgICBjYXNlIDB4YTM6IGNhc2UgMHhhYjoKICAgICAgcmVhbF9zZXQo
dHIsIHJlZ19pbyAsICB3cl9vcCh0cixvcF9vdXQsMCwweDMxLCAgd3Jfb3AodHIsb3BfbG9hZDgs
MCwweDIxLCByZWFsX3VzZSh0ciwgcmVnX2hsICkgICAsIHJlYWxfdXNlKHRyLCByZWdfbWVtICkg
ICApICAgLCAgcmVhbF91c2UodHIsIHJlZ19jICkgICAsIHJlYWxfdXNlKHRyLCByZWdfaW8gKSAg
ICkgICApICA7CiAgICAgIGlmIChvcD09MHhhMykgcmVhbF9zZXQodHIsIHJlZ19obCAsICB3cl9v
cCh0cixvcF9hZGMxNiwwLDB4MzYsIHdyX29wKHRyLG9wX2NvbnN0LCAwICwweDAxKSAgLCAgd3Jf
b3AodHIsb3BfY29uc3QsIDEgLDB4MDEpICAgLCAgIHJlYWxfdXNlKHRyLCByZWdfaGwgKSAgICAg
KSAgICAgKSAgOwogICAgICBlbHNlIHJlYWxfc2V0KHRyLCByZWdfaGwgLCAgd3Jfb3AodHIsb3Bf
c2JjMTYsMCwweDM2LCB3cl9vcCh0cixvcF9jb25zdCwgMCAsMHgwMSkgICwgIHdyX29wKHRyLG9w
X2NvbnN0LCAxICwweDAxKSAgICwgICByZWFsX3VzZSh0ciwgcmVnX2hsICkgICAgICkgICAgICkg
IDsKICAgICAgcmVhbF9zZXQodHIsIHJlZ19iICwgIHdyX29wKHRyLG9wX2FyaXRoLCAweDkwICww
eDM2LCAwICwgd3Jfb3AodHIsb3BfY29uc3QsIDEgLDB4MDEpICAsICByZWFsX3VzZSh0ciwgcmVn
X2IgKSAgICApICAgICkgIDsKICAgICAgKHJlYWxfc2V0KHRyLCAgcmVnX2ZuICAgLCB3cl9vcCh0
cixvcF9jb25zdCwgICAgMSAgICwweDAxKSAgKSApICA7CiAgICAgIGJyZWFrOwogICAgZGVmYXVs
dDoKICAgICAgIDsKICAgIH0KICAgIGJyZWFrOwogIGNhc2UgMHhmMDogY2FzZSAweGY4OgogICAg
dD0gcmVhbF91c2UodHIsIHJlZ19mcyAgKSAgOwogICAgZ290byBzY2FuX3JldF9jYzsKICBjYXNl
IDB4ZjI6IGNhc2UgMHhmYToKICAgIHQ9IHJlYWxfdXNlKHRyLCByZWdfZnMgICkgIDsKICAgIGdv
dG8gc2Nhbl9qcF9jYzsKICBjYXNlIDB4ZjM6CiAgICBicmVhazsKICBjYXNlIDB4ZjQ6IGNhc2Ug
MHhmYzoKICAgIHQ9IHJlYWxfdXNlKHRyLCByZWdfZnMgICkgIDsKICAgIGdvdG8gc2Nhbl9jYWxs
X2NjOwogIGNhc2UgMHhmOToKICAgIHJlYWxfc2V0KHRyLCByZWdfc3AgLCAgcmVhbF91c2UodHIs
IHJlZ19obCApICAgICkgIDsKICAgIGJyZWFrOwogIGNhc2UgMHhmYjoKICAgIGJyZWFrOwogIGNh
c2UgMHhmZDoKICAgIGl4eT1yZWdfaXk7CiAgICBnb3RvIHJlc3RhcnQ7CiAgZGVmYXVsdDoKICAg
ICA7CiAgfQogIGlmICgwKSByZWFsX3NldCh0ciwgcmVnX3IgLCAgd3Jfb3AodHIsb3BfYWRkNywg
IDAgLDB4MTEsIHJlYWxfdXNlKHRyLCByZWdfciApICApICApIDsKICBpZiAoMCkgcmVhbF9zZXQo
dHIsIHJlZ19wYyAsICB3cl9vcCh0cixvcF9hZGMxNiwwLDB4MzYsIHdyX29wKHRyLG9wX2NvbnN0
LCAwICwweDAxKSAgLCAgIHdyX29wKHRyLG9wX2NvbnN0LCA5OSAsMHgwMSkgICAsICByZWFsX3Vz
ZSh0ciwgcmVnX3BjICkgICAgKSAgICApICA7CiAgcmV0dXJuIDA7Cn0K
More information about the Gcc-prs
mailing list