Skip to content

(not a bug/ML archival only) The Deuce: stop writing const char zero_but_true[] = "0 but true"; #23321

@bulk88

Description

@bulk88

This is not a bug ticket but archiving binary attachments/very long reference materials for a P5P ML post.

The ML post connected with this ticket number, does describe a very tiny bug/defect in p5p/.git in it, but its too tiny IMO for me to call it a "bug".

If I had moderator perms on this bug tracker, I would click "won't fix" "closed" on this ticket myself.

References materials used to make this post

https://godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1AB9U8lJL6yAngGVG6AMKpaAVxYM9DgDJ4GmADl3ACNMYhAANgAOAGZSAAdUBUJbBmc3Dz1E5JsBX38gllDw6LjLTGtUoQImYgJ0908uC0wrXIZq2oJ8wJCwyNiLGrqGzOaFYe6/XqL%2B0oBKC1RXYmR2DgBSDQBBDYAmGL9kNywAag2Yx1o8FkIFADoEC%2Bwt3YOjk8xzy4n8QUfnq99ocGMdXGcLo5frYATEXjtgR9wV9IQoAJ4KAD0EyYBFh8N2OwIaPimCwVFOyAQtVOAEkohcAEKvYmk8mnVwMZLAfzoSnU4inOQMmLMokksmYCkKBAkAh0rgRJksiXsznc3mnGVyoWK5XitlS060ATAOkxPb67asyUU9V4Hlk42moUWq029l%2BAgRSTGeW0n3u1VG1xen1%2BoWB0Uqw3S5IAL0wEdpADUg7GtXhExG5GnowbbacvSwmKoI8psAAlbzGWkBAAqAFltgANYz19OF0OCEtl%2BUV6vGOR1put9tWmOFibEVzWLU1AjlsK0WmCMLxYiYAhhJmnTEAKlO2k5AGtTuS/CkBPvMa9p7P5QoAG7nADsYu2p1OT9QeD5%2B%2BfYxDDRK0vzkC0tSfYxNyoZBBFA109kg4wqAMYAFAQzlUjfD8vy/KkaQAp9XGMeInwQjZXwAEWQ1wJ2oicC3Ze852fU4hDzD8PSNFjHxfbZOMnZiCBnViXwACUEhEmJ4kSH1OeIAFZiFUU5K2wABxbAW2URjrWDCkA0kU5Nx5DAk1QKgqCUAhO2E0T5XU1RHGMHFtwjJyXLcpNbPzbZMFUbdiAYSkBAmDkuQdTUCMFZQa1cAgqCiBQTzweINkU5lFKovTeLU7BnNchcfJw14wIg1CmHQhDwKQ%2BIWBQtCML8/CBVOfcNwqVAWHSlr%2BUIzq0B64wHAQmL2pU1zyL68b9xUsa2rm1Q8AWwicTqVbBX3UaZsW%2BJaiUTb2rQeI0SKrojoApgnyTE6zvW3zcP6ra7vOupjD8D6GHiBKEKM04AHcEDoTAGqURhLtBwg3sesqTMwMysGMSzrK3U4odhnYv1pCDmFcYAEGJP6IIUJgAeCJhkBPP6fUzRMEITEqbIUYwsHiAgnj62qtUwCG%2BpxurakYFnglcKhXKzTAENMhhzORqybPa1BSQYUiha5aWEdlpGUcV/djiSJN9s3DW%2Bsk9rjcYYxmDYZqnsZiMDG3CZjAB2pVd1rdiaQ/cTWAPBRFoP1UDV4LUG9i33ZDohjD9gOxAjjqo%2BD2PUH9wPrYCzHP3NJDvtqCO44z/PiAjogaiD43C7T%2BOg/LsRQ4j/xp1QVBs%2BxknedVxNiBcPmntmhxkd6p6BY5RKRVHiCSAdYwEqSiOsNc0HDBsZA7bhsfN2QFYlGMNBOXb572rmipd6lrmonaiZwTOqlT2gs/iCUdAapJghb/3hAH%2B38/0GMYIaJnYR0%2BiaVAJ5ajLAYK/fmEE0CCCYH4FmJpA4XynkhVAN1iDED/EmbeGA/DAAjvgpGfYQ7MBsDdEBqsWCuFoDYL%2BtR94GAUBvLGRZBChSRn4LAqgGZyTnKZfectggoJPAoY6IixFsJzv9Xs9AGCXSoMQVgSYECYCYDAgei1lGqNjkwCYb8kK6LYMIw%2BCEBLtTdsFP0WcELm33JyegqgyTW1UTIr8HEJqHxuLdOWABHUufVjCMlbrQHmVt/7KwQiEsJ84cHWBiaElw85P4PTJEkuJn0FDIBwezaCnJMkpNcHvRklZtgBEcOJAAUkU8JCgADq2xKwBGMNpActJGzYAbNsGsxgUzeGZME5J9SmktLaTpKsnTun1l6aYdSWk2xCGwPWIQ9Ecp%2BVeF4/cyhlzGGAFuKaEBdnEBXGuYgnUgrtRYGdUkpzSChS5PKWaNtMAPLHpVdC8w9KmFxCJPAot3LGCgLLTcH9grzHmN%2BX8fITlB1yagJgJ5jnLlXEFS5YRrm3OXKQOGeF8UEsJUS4lRL4HhVmvtAgDz7g0u%2BZsnYsSUlwv2b3E8QEiC5ggGS55e0nwPNzO1J8Yh2ZkEeeSxa21oEirpR%2BV4Ms5ae3lEIR%2BwA9ja0wCi05aL1xgsxfuG5pEcX5UKt5CMHVPLnW3Li9hJLbUEu5UKK%2BysHkOu5rUYAzQxX%2Bggu6vYMqgQ7B/H%2BdimdAoxU1Wc9FuqtoGrubQB5FrTXynNQVLyxV/XSW2EGvkyrjZ71oJbVW/jXCYAmKkRqVUFARu1Rc6NWLDX3LxXa5tJLE3FTNfENtuJMAZsJP5QKYQQryp1grNGyrTItknS2at5yMUxuxY2m1Lbl1fi7e5ZNnbU2WrebnBS6trU5xXSuse%2B5PnxH5RBNmHMoWUSesOiyo75Rgu%2BDRDQmtEYPtRvKYIQS71awVY%2B40BiCA/vfeq%2BWX70bQMxRcV91d04N2NrLF9pw32wMFmHFDaH0GnE%2BR4xCpwSAIzwyhiAm6TXFQALTPDw72r8jLwnUhugAlRoIEBYbqUWFmytGAcfQ7hzcmBsyFr4zhpgVAgooUE4mUTm9cbuAQts3sw9%2B5yaQm7FmoDW4QN7pyPksHThkbXZgajcItPgMgXpuju6qBIqTJgIV4SDPYYDTnWaDqhF5qTA9Uj5G03dtM9gLzva4azSUMANgghQ57x8wZozW7vKBeC3pL8ymeMhQM8yg5i5nwQFjUa/YlpFKOA0HsPY2BjCOAAPKNmULSbwFX1KODkJWIQtIqutO8J02kHYysPI0KoDQXAQvsNPWheIsn2F4ApGR9WN73xNoY6cakmnzk3QYIQtWBAAYSNg02/Fs2TYvoM3684ewlTnfalAPz26ksHR7acSjpxhunDAGAAzYAOAQE%2BylvC03DMib2zEGin3iCffm09fFgPgevc2HCH7fV8XADbqgPdz88GlqPl%2BSiNFWhKCLDN/c8WKMBeeMF47MOEcADFwelSXdSaB9BjD%2BJLMQE8IAEL4qW3gZBNdA5YYeTz4eNhbhluQJNw9eEHXubCo%2BTA/jYsw%2BJ/57cd30fWfxdLxaDgRWc6l7L4%2BstVYBR59uKLwBdPxGMCwBQRDMoZRogZwrlYpRhEYGsU4RBThG5NxMRg8oLfLHSmVvX%2BEDfjRuNkZIoikyB9cOle32UUOFdXI54NME3egi%2BF7uPwfLT0sl1%2Bf7EAVtfSCutzblKdsQ/23hdAqPb214OzdxLZP7s3r2EMmiEBhuh7wjjwGwN6CGY0Brgl9e6eF4JcyhFSKIBN6JflxdU/iWFf2IpDCZWztIT8PDA5fDRSnFZyeJ0gDt/b8hJRp74kqwvC34VjhR/bx7EUg/wrr8X9v7K0ZOi9%2BQ8v8kDz3P0v2v1v2AP/1fz/z2A/0gKQhTx9F/zgIgMAK/z2Gfz2APWXRTxCk%2B3nxiCpxpXuHmE%2BweQ5i%2BFwM%2B1OEMD5Gp0oNoXClCCoPQG0Epn90K0wJbQgC9HmCgAYx4N4JGX4Jbyo2eHniiEhQkI4ObQgFzH4Ou2M0C1egei%2Bi%2Bh%2BgIA70hyPS/HkISxELhHJye2V1u2eCUMmAkO%2BAJC0LwiMNb30PwWGgcEhQXxXQuCpwBwULJ3sKt0cMe3cN0NJzsK6h6m%2BSXSsNOBAEMygB0JJ1VxMOVnukmBUL8DUI0OcLCMiOEICKC3b0ezSPSJsL0OwFMK6HMOo1CPSOsMyNiMCKGniEhQsOcxCJXwqOx3wMiIKKyOKPek%2BmSISlSPKJaMJWiJVxMzb3V1yIGMGIJQ6OqKKPiJhlKLyJaJmNGJqO6jqKaKmMJQiIjX3l7jnyWK2KX3jUOKmMK32g22QAiPXwUGuJf3QAiP8GAFxDwBukI0fTuNgO3yMg/yQKQhEjREIU91R2WAIDUKP1LVJgOVwxIHAMFgICCgyxf3uAAnYNOMGMKxpQykcGxNMlqPuGQHYNOBiEkAAE4MD0TljUw5CqjVi5jToYYkjvo%2BiztNCtjl1hjjD9Cciyjmj2TbUVjFD5iHpFjJj%2BSiVBTPCgiNipDxShiuDBAhCPC4QfDeS5SV1JS4QRTIVZT1TKjlTsBtTdTxTR8dTTiIBs12olT/DZjBp1izSxTpjuCBCwk5C%2BDOTbDsAxCJCHS%2BTpjZCojNT6SEiugmSUjWTKTpigyDC/CYi6Suj1D6jARHSBTaSksvCRpoEnCUzm1XDUNIztjYyRj0zpTMz0AoU1TxSPTCiEywyWT9g2StjqysiDCCzOC0y4iGTtTfSOTLT9w5CgzayejmT1CIyczODoyeSiyuTgyFiky4Q2zpiOy1iHCszNj2S8zoyMzHDFyiUdjBzhTEjhzwyGzdySVmzbSeSzzzzlzZzuynDEcCUB8gYQYR8x9scGJM1CUJ9G9JjJzxjTylde9HyPyaIXzh8IBR8%2B9i83tbMT8RpHMa9JjocaIidbzksC9iUhdlYRdTcA4JdCUB88cUQFtJjsL2Ybg8LxcDMuA%2B8vwULcM7MEKE4QK3wcpyifzSLmj/ylBUjgclioj3SgzvSJDKS8y4o54J4Uo0oMpGQidXUr5%2BzAz0L29RLspKSIjaLWLnyh8vhIL3yCcMiDTydnhpzPTHCkLmiGKftisNAEdGycda9n1nM%2B8FAAZCAqQAc5tJ9CVRB8dPsuBPsOdyi/LyCOA9ggra9QrYcYhIqQqDEwrJA4qp9orPtFJkrfKErYcIgMr7UsrPtXxcrNd8qOAogiqpcSrSTyr8VOLGzm9jKci4suVFp5glAFdJhWTnsDLQLB9Xz9K%2B8vNH4d5n5sJriuLiVucWYniCKiUBVOQFNWKvxwtItFxBrFdu8VLxinstK6rDKIA0KGqAL%2BLKcOBKNadfy/TaqBLNreKIygLur%2B9qJeqIKoLFq/spqEYUMdqF9HLJidcRJfMDSdy3ri8stWV2VUBOUeKe0Hl9gIh5qWBYbzt/riAO8LslQcyEbvgcSYc9gpBXxJBYgfRXxLLbUGB3BSMBZ5gEa6K68G9xq7Voab0ldmrCJ5gUaHqerwK9LXrdqiLaB8cLq0jubDNzSbqHtIQzLCifC4bZbxz2jGZLJ9qmbmaNkaJFaqAZDxD1yrDNyoiBwaxhwGxmw2x6w5DhR%2BCDqbS6TgsfSKzrz2jvsOA7KOBzDKJHBUN5ycb2K/SJyDahwRwTb2wByoBPsqrXb6jDCnaXafS3wPbTSdaW0diNblbxb5y1a6ZMAla5BFRszfaSU9aoB/ajbRxTbzbc6oAra4y1deK7aJj87pCojPsY6kzXx46va9t5bzzjkqxDbA6xwzbAzQ6OBw7SjIjm7wc3a27Pa86j1k7JYlaq7iyxja6Kd1aF7NbapZ6wjC6e7BwS6g7B6oAt7K6VbY7Kzlim7nbJ75t27mbvbryi7e6A7jaB6Q6nbR7I7x7r6I7W677E657Ha96%2B7X6y6oAHbpji7%2B6wHU7Dra7z6IHAyJ7f646Z7sbO6G7GbgGX7S7g6h6P6b7fDh6W6/6Z666Lrm0rr5ama7ru9gLdr8UdK%2Brea0jfrLr6aGG8IZ99jkVKTjjjTbU18X9N8/jH9TIApdxj9T80Q4SQDTgb91JUDH8WBn8vj3919UCf9UD18UCoDsar95GwDtHP8oCYDNGEDjHFJdG/j0CBGSVI8kho8mdc87HiUFT1CXSXA3TBCLy6SRLJDKSZCUwBzbyhzVZejRzTyu63GaHDDQnDySj5zLCKitzSyLKIHNz0LtysyiGsnpSAH0j9yoj4muyjzwmRz%2BjMGtDfGa6HsL65SDzSnEn7bomOS8naiknGiIGiVC6SmQzujymTzO9umBTYmRnUyDSEzRSqn8j2n7SCn2SdjuHEVeHWmWj%2BHxm7VzjDAA5PjbiztFIHjvcEYXi3jFVPjzHJBfjz8ASgSvdQTwTbYoSvh%2BBBQlHKVESDmUSRHXH1TMT7hsTcSEZ8TCS%2BtiTXwX9fmGnqTinjNNmKihSmmBnVD6zhm1n%2BSamV66n4Wj1Gn%2BnEyWmZmqy5ngjFgcWYnnSgzVTyW2mDTuyoXiW6WzCyX0Wj0E6GWDs%2BzrTq6pSOmWWZn3H%2BChKIAhLbz/GeyNSAzYXrbEX8W6zIm0WiX5S07cnJmEm6g3aFzWXtCSXvC1yMm2i31tX8UdjdWyzCW9TMW4QwmUWFXOHL6VX6mGm%2Bm5yJXeyYUrTlK1WkXFxjzUX7XcXYmpbOj1WCWGjjX6qZXeX1jzWFmWjMnjLsnyzNn9yXXlC/W7XyWrXsitqaW8XXWHzOGmGXqHq2GsKZshcnjLK0jyaWAUNKNa3aay2nzPzmji8l6Zzyc3sPtXbwc0iqH87lmDjomNnomhGN8lHd9xGD9GQj9agT8%2BQz9tHLgDGFG79RHd8VGNHTHt2/itGoCdGgC38V3QD1JZGTG/izGoD92/jD3UDbGxKysCpSRKgjBKQTR8cf1KYT9bI%2BtAnKXhXRWDTxX%2BXcWpXs2bWInKnBjs2Yz83uzw2lXI2eWVy9Xyy42tCE2o3UPzXVXsOgsvCMPAGh602ynbXoP1TYOryI2bzvX8XpnKPdXOmYcoKaPV82jpWUO7yyOoOxykPqmxm2PpDSPmn669TkPl7UPt71Slm9lZ9Vn%2BOwjR3FPdaysLjdmDn9n18jmnjTmvhzmDnLnrmH9bm337mEpHnISqoXnYT3m/lB0vnUS/2hOW1/nAXis8T1iCSiSYhXwSSOX2SIAYXfGaWtDZXGSM2KPxOsHHXQvhO6PXWxPouJn8O7TSWAumzBXs3qWXOwigz6W4uJOZyjS4v2XAmuXYPCPQONSAOfHPHaBuXJOvSJ47aMvDNwP4OeOKm%2BOYOg3OvRPkyVPUnajY2DW3CjWVO8JTXE20mcmnXAv%2BvkXeOonJvu7YvculyEv7y2uLSPWlLOOmvIPuuVuMW%2BuRONXOmhPhuY30mNusOuO0u0OiOwjU2tuuuhmA38jBPVvaP8OpmfTaaubdK3zftCVi8UKe2zqOA473a0deMgcQdNhO9zquK0ji9BKfG8bJACaibse8OuOS577vd3BY6KG7UB3aXUvGrhn7rAfHqwLgf%2Bq3qaqOHTih2FOrDlPVPLRhHJ2h0EYJHD8pHF2ZHl3HBV3b8%2Ben9d3t8r292LGD2ACj378T3DGz3LHUC5fviFfb2lf720S1mHHWEAVnHLc2vtDavXSMerfhKWufTzf2vgmvW/vQ35WouHW4G6ng3Zj/vmbknlizXbufvWi3DrvVzyz8emvHvnviPneuOjuPu83vvkvFuw35vAumO/eumNunyOOIPXfIuevkvrDk/i/9SXefWGOy%2Bw%2BNjQvZPTk9iVn58c%2B7Uuey/GG1OdmrjNPPidOTnKF9OPjDPr2fRjOt9TOzRzOwSEoITWFrOYS3m9GPmHP19vmDfg%2BXCyssTisgXgAQWfOCbmhCvpjguVjj%2BV1wv03Bn/Xz%2B1vPeLX2%2BUv4/Q2q/H%2BhjM%2BHfevKXbycuN%2BUnbyCuLfJ/k1xK5ACCUZXNZrt2DT7cP%2BBZLLiKzq4ICbeYrO3gE0gEddzuvra/pmzY5Uctq3veMi/0u6rca%2Bo3FznmQm78lpuqXJNg/0tap83eRfcTngNurp9GWFfejmgKVZQD/wITN7qGUL4ncqypfdgc/0r7EDRBUfWgTHx3ocdA%2BWZHFq9w4ERdsB7vSjiIOYGYC7adPIHsw05psVXMtqcHurDXqw4GyKPANrWyvx082GNbCmoBQ2oGlCeoPIlMYKOwI9YcUPM7OjWJ51tJaL2Mnragp7tl7%2BtDQzPQyWLFsea%2Bgr8MEObTs9m%2BSrNvkenHYiNz8U7AXjOznZs5pGsjVXmuyl5bsL2svGXvAUkCIEL8evPRnIzXbns1GZWLXmUIqHjtrG2%2BB9msyNwjRlofuc3Jbmty24He8AwDnVxQFJRWucAjAfwKW7HdFWmXR1gQMv7Mss%2BNHUgUH35L3cpBs3CPnExm4dMRmRTfPj60YFCD6B63P/u/ymFp8s2mfBoixxkEVFemlw44bMPb4sDsWYAi4coIQ5sDnWuw%2BZnX0MwJDb%2BqWBdCcQ%2BE9NO%2BlxPZr30eL99Xig/L9BcxH5XMlGE/YEoRgs4z8nm8/V5nCT3QIkV%2ByJJzhSXBGEUt%2BALHfh52BZedQWGBcFhEFJKf8qSTvELqSKPSLCBBqgpgW/yjJnCeRbjLQZHWBGfCHuVXJkSk3gE/85uwoiUgAKWHijZmTLRJgqJXQQDuBFXGvm6xq6Kl6u3jZAcB1QFaiOSkwr4e9xv64CzulwzVv73/5/Dw%2B0nM4oa32ELDo29opLqcKeGCCXhzAjQZa0FFGjOCGow4XKy9GfdA2fI34aaIG5as/%2Bqw/Vi3w2GdtaBigoylGOmGJ8PhbwugZoKtEA9me9PZ6tEJsGttV8T1YintVrbeC4avg7Gi6LhBFwG4hPUmiSkrFxZbyDYuuCHCQyoBvkmURtupTer818c6PIMvXEri1A/eaDQIa4JmytjLgdY7AB2ODgVxQ4rdSwfYKVzti%2BcDcGON2N7GMh%2BxGyItmWIFokUA2cQxmiqwcHhCYhbFQsSD3zGxDWe8tIEWs2SGb8eeE7PRhkP3ySN52uQsXhL0UbfiQoRQ%2BodAVKHf4delQqxsrzgL5CjGivcCY0KgnlDLGrQwrO0KVadDfcZuRcLnn6HABBhlvLxtb1Im28xh9vCYSyODEqDyO3IiUfMNT7WiHacY9DiM0TGelHuuHHYTQPybOiSOnorkScPUERicxaYq4UAM1FZ87hoXR4RJOeFhipiWY90dX39GqTou0kgEbsXk6JD%2BR749vtsyhE98DmffZ4gP3eKIjh%2B8vFEXozRFT9LOc/aEriLs4EjgojnH5sKLc6UjHAnnHqN5zBa%2BdBgwooLjRNpIyjbUHI9MeaPOFWEVJPwt/sxKFFsjfuoo/JtV0SmSiga0olKcAOK7yiQpco5UcfzVFxSNRsAyASRIa5kTqpFE7WlwLikmixBIY4Sd6I95U98BSU5YSQPkHsTyBTolztQLSkjdf%2BmkhgaGNC7xS4uXUjKRqSDHjTWpSkjkr6KbLqTBukgpMVsIdHrC5Bdop7imNolX96JIk0SaEISmrTcxolR8XeJFpM9jxPtUsbjlPE%2BUSUF48toZjezZsxxq4iwjPTFoGlvpxsVWo9m%2BqOkohD4vmq21rwHJVYv8dHCqmVjBU22s4jcS8E3FOCgZ1bR0iONvKAyJxv000i9KMEoy/BC5dGfhzxmo1mxlDZ8QKyvE086Gt43QSWx0F00iZLaV8fxwMkfibiUvadn%2BJyEi88h4vU9uu3SGgTVGmvSCXsBvYwSMJKvEWWr2wB1CpZxQpoehLglYT0iOE7oXhJZRB5CJTIoYYgKA74cQORspqYdwL6LSRm8Uhcb70Q4Z89pZA84ZxMKLcTRpKfJjimyAaYDFJ00laYx0ukaTIxw0%2BZrcNfT3D42efBacdLanV9A5Xs4OedI2lcSquhXevvCh4Z6T%2BRR%2BUESqPSJGSNONxGEcc3MnwjLJNkJETZLH7/FiAgJMziCUxHyhsRzk2zkv3s7uTV%2BxIguTvXJHudfJ1I/ybSIeQxAogGgDQL3Limn9wpuUi/p2RalxylpY0sSbnM24STX%2Ba8nVntIDGvCsp%2BHT2VvKK6elABsUkIfh1AFnziUpUvLuVJ3mzTcWVUvUeRNGH1Td5nBS2TOQT4xTTuTEtaTGKdl8SRp8Y12QNPOFDTNhwC7YQHL9kTTSRU0tkTNKNnzTYFNslvggqvldTHZocyBTdxAXRc3ZLZZMWAKUHNS6Jy3eOR6I6msDj%2BM0pmTdMZ4sMcyzbR6T9ShmTFnKMOcdAjDVTmQ8s%2BchSMZgeSklpAvg3uUGThl7wD4ipB6hIqfhSKoE6hU8jTz5qYVZRdLLuLfWcyDYJ5uivYC5i/JEoxsVUCbO7W0UaBJ4C%2BKANmnmBMLmiyqfwGGgFD8KG08aQRdbQepgoVg/PLHBVX8ocB9wyVWvOSCYB0ICASM4lG9PXkPdGqLNWaK1XlyxZO8XVJtk9Vul2LCUg1PDBEqJS5p7sscQtMzhLRloBAFadCC4rjQPJaSD1EcdwXkoG5hQnrM%2Bq9newnVwArtdmWDxmw0NJaVLfBXagcVZxw0/DdxXGX0HGLgApiljqoC4AGK/SXi9yXMtYXIUTBPbdpbTUGVOLagFSo1NUtpqcK4Mb1ZHF7kGqbhDE2lEsfTzhhsNTlmOHJQsp8XrJXgrtfQJwEUi8BPAztXgKgE4Ae0FAywVYCiAOA8BSA4Sr5TqXZwxAYg9wUkhoFfARASSikERRYq4Ckk4gtATgJIA%2BWaBvlnAXgLcUnlgqtAiwOALACQC1EQYZACgFynWKUqUAHqRSM0BoD0IwgtxCAMEBxWkBggfgWoGiE4AgruVzAeuVVmCDaAKgYKkFUNBWpVYGAtAPlV8tIBYBRYwARwGIAFr8reAWAEsEYHEAKr8A28AfrcQVUBQz424DVeQDXAYqFV1wL9vXOcBYBOV/yFgOaqwTBBDYVEFeDqsIQ4rFgeGFMHgEwAAwqsKsc1fwEEAiAxA7AKQDIEECKAVA6gBVboGaAGAjAIAUwPvH0AApbikARYDhVSBGrKMVWPYN8qwQ4IsA2aiAIsHKCVA7AEABwKME8D%2BcfA0wQoMUBAC%2BdGR2QK8GkBcCNB210gLte0B6Ctr%2BgHaloG0CqCTAG1/a8deKsnVdBh1fQcIGOoejTr/OD0RdbMGXWvhSSVagFWsAkCLArV7y0gJ8q0CkAfl0PVQFEAiCUZaYe/cXFwEUj3AuAhmXAIQHbkxBhsvAIlRHVIDs4kV9wSQFYz2CxBFIGgUkopHhVWNXlHALFaes5WXr8VIAQlT6tICkrEAIAB5glHICUAKV9AYgAEFUScBr1t6%2B9cgEfXPqQVZID9WWr0BhrhAqCCQNIAY1xq1AnKpNaQABgqJ4gGqo9W8uxUKrL1VWZue8VOCka71xkB9c9io2GZnAPUSlWdi/XzAf1PqxYOzgiD3AEV48qIFwCiCkkEVkgJ9VCtg3waz1uKjgMhtQ3gr%2BN4VQTeeqQ2gq1NpALBMkDsCSAgAA%3D%3D%3D

Orig Src Code for Godbolt Demo

#include <limits.h>
#include <stdint.h>
#include <stdio.h>
#include <sys/stat.h>

typedef char I8;
typedef unsigned char U8;
typedef short I16;
typedef unsigned short U16;
typedef long I32;
typedef unsigned long U32;
typedef int64_t I64;
typedef uint64_t U64;
typedef ssize_t IV;
typedef size_t UV;
typedef intmax_t PERL_INTMAX_T;
typedef uintmax_t PERL_UINTMAX_T;

typedef struct stat_t PerlInterpreter; /* junk definition*/
struct sv {
  void *sv_any;
  U32 sv_refcnt;
  U32 sv_flags;
  union {
    char *svu_pv;
  } sv_u;
};

typedef struct sv SV;
typedef struct sv AV;
typedef struct sv HV;

typedef struct p5rx REGEXP;

typedef I64 regnode_offset;
typedef struct RExC_state_t RExC_state_t;
extern const unsigned char PL_utf8skip[];

struct RExC_state_t {
  U32 flags;
  U32 pm_flags;
  char *precomp;
  char *precomp_end;
  char *rx_sv;
  char *rx;
  char *rxi;
  char *start;
  char *end;
  char *parse;
  char *copy_start;
  char *save_copy_start;
  char *copy_start_in_input;
  I64 whilem_seen;
  char *emit_start;
  regnode_offset emit;
  I32 naughty;
  I32 sawback;
  I64 size;
  size_t sets_depth;
  U32 seen;
  I32 parens_buf_size;
  regnode_offset *open_parens;
  regnode_offset *close_parens;
  HV *paren_names;
  size_t latest_warn_offset;
  I32 *logical_to_parno;
  I32 *parno_to_logical;
  I32 *parno_to_logical_next;
  I32 npar;
  I32 logical_npar;
  I32 total_par;
  I32 logical_total_par;
  I32 nestroot;
  I32 seen_zerolen;
  char *end_op;
  I32 utf8;
  I32 orig_utf8;
  I32 uni_semantics;
  I32 recurse_count;
  char **recurse;
  U8 *study_chunk_recursed;
  U32 study_chunk_recursed_bytes;
  I32 in_lookaround;
  I32 contains_locale;
  I32 override_recoding;
  I32 recode_x_to_native;
  I32 in_multi_char_class;
  int code_index;
  struct reg_code_blocks *code_blocks;
  I64 maxlen;
  char *frame_head;
  char *frame_last;
  U32 frame_count;
  AV *warn_text;
  HV *unlexed_names;
  SV *runtime_code_qr;
  _Bool seen_d_op;
  _Bool strict;
  _Bool study_started;
  _Bool in_script_run;
  _Bool use_BRANCHJ;
  _Bool sWARN_EXPERIMENTAL__VLB;
  _Bool sWARN_EXPERIMENTAL__REGEX_SETS;
};

SV *Perl_get_sv(PerlInterpreter *my_perl, const char *name, I32 flags);

__attribute__((noreturn)) void Perl_croak(PerlInterpreter *my_perl,
                                          const char *pat, ...);

_Bool Perl_grok_atoUV(const char *pv, UV *valptr, const char **endptr);

regnode_offset S_reg2node(PerlInterpreter *my_perl, RExC_state_t *pRExC_state,
                          const U8 op, const U32 arg1, const I32 arg2);

void S_nextchar(PerlInterpreter *my_perl, RExC_state_t *pRExC_state);

void S_parse_lparen_question_flags(PerlInterpreter *my_perl,
RExC_state_t *pRExC_state);

extern regnode_offset S_regXXXX(PerlInterpreter *my_perl,
                                RExC_state_t *pRExC_state, I32 paren,
                                I32 *flagp, U32 depth) {
  regnode_offset ret = 0;
  regnode_offset br;
  regnode_offset lastbr;
  regnode_offset ender = 0;
  I32 logical_parno = 0;
  I32 parno = 0;
  I32 flags;
  U32 oregflags = (pRExC_state->flags);
  _Bool have_branch = 0;
  _Bool is_open = 0;
  I32 freeze_paren = 0;
  I32 after_freeze = 0;
  I32 num;
  SV *max_open;
  I32 was_in_lookaround = (pRExC_state->in_lookaround);
  I32 fake_eval = 0;

  char *const reg_parse_start = (pRExC_state->parse);

  char *segment_parse_start = (pRExC_state->parse);

  max_open = Perl_get_sv(my_perl, "\022E_COMPILE_RECURSION_LIMIT", 0x01);

  *flagp = 0;
  if (paren) {
    _Bool has_intervening_patws =
        (paren == 2) && *((pRExC_state->parse) - 1) != '(';

    if (paren == 'r') {
      paren = '>';
      goto parse_rest;
    } else if (*(pRExC_state->parse) == '?') {
    handle_qmark:;
      _Bool is_logical = 0, is_optimistic = 0;
      const char *const seqstart = (pRExC_state->parse);
      const char *endptr;
      const char non_existent_group_msg[] = "Reference to nonexistent group";
      const char impossible_group[] = "Invalid reference to group";

      if (has_intervening_patws) {
        do {
          (pRExC_state->parse) += (1);
        } while (0);
        do {
          Perl_croak(
              my_perl,
              "%s" " in regex; marked by " "<-- HERE" " in m/%" "d%" "I64u"
              "%4p" " <-- HERE " "%" "d%" "I64u" "%4p" "/",
              "In '(?...)', the '(' and '?' must be adjacent",
              (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
              (UV)((((pRExC_state->copy_start_in_input) +
                     ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                    (pRExC_state->precomp_end))
                       ? (pRExC_state->precomp_end) - (pRExC_state->precomp)
                       : (((((pRExC_state->copy_start_in_input) +
                             ((pRExC_state->parse) -
                              (pRExC_state->copy_start))) -
                            (pRExC_state->precomp)) >= 0)
                              ? (((pRExC_state->copy_start_in_input) +
                                  ((pRExC_state->parse) -
                                   (pRExC_state->copy_start))) -
                                 (pRExC_state->precomp))
                              : (Perl_croak(
                                     my_perl,
                                     "panic: %s: %d: negative offset: %" "I64d"
                                     " trying to output message for "
                                     " pattern %.*s",
                                     "..\\regcomp.c", 3492,
                                     (IV)(((pRExC_state->copy_start_in_input) +
                                           ((pRExC_state->parse) -
                                            (pRExC_state->copy_start))) -
                                          (pRExC_state->precomp)),
                                     ((int)((pRExC_state->end) -
                                            (pRExC_state->start))),
                                     (pRExC_state->start)),
                                 0))),
              (void *)((pRExC_state->precomp)),
              (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
              (UV)((((pRExC_state->copy_start_in_input) +
                     ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                    (pRExC_state->precomp_end))
                       ? 0
                       : (pRExC_state->precomp_end) -
                             ((pRExC_state->copy_start_in_input) +
                              ((pRExC_state->parse) -
                               (pRExC_state->copy_start)))),
              (void *)((((pRExC_state->copy_start_in_input) +
                         ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                        (pRExC_state->precomp_end))
                           ? (pRExC_state->precomp_end)
                           : ((pRExC_state->copy_start_in_input) +
                              ((pRExC_state->parse) -
                               (pRExC_state->copy_start)))));
        } while (0);
      }

      do {
        (pRExC_state->parse) += (1);
      } while (0);
      if (!fake_eval) {
        paren = *(pRExC_state->parse);

        is_optimistic = 0;
      } else {
        is_optimistic = 1;
        paren = fake_eval;
      }
      do {
        (pRExC_state->parse) +=
            (((_Bool)((pRExC_state->utf8))))
                ? PL_utf8skip[*(const U8 *)((((pRExC_state->parse))))]
                : 1;
      } while (0);
      if ((pRExC_state->parse) > (pRExC_state->end)) {
        paren = '\0';
      }
      ret = 0;
      switch (paren) {
      case '1':
      case '2':
      case '3':
      case '4':
      case '5':
      case '6':
      case '7':
      case '8':
      case '9':
        do {
          (pRExC_state->parse) = ((char *)seqstart + 1);
        } while (0);
      parse_recursion : {
        _Bool is_neg = 0;
        UV unum;
        segment_parse_start = (pRExC_state->parse) - 1;
        if (*(pRExC_state->parse) == '-') {
          do {
            (pRExC_state->parse) += (1);
          } while (0);
          is_neg = 1;
        }
        endptr = (pRExC_state->end);
        if (Perl_grok_atoUV((pRExC_state->parse), &unum, &endptr) &&
            unum <= 2147483647) {
          num = (I32)unum;
          do {
            (pRExC_state->parse) = ((char *)endptr);
          } while (0);
        } else {

          while (
              (pRExC_state->parse) < (pRExC_state->end) &&
              (((sizeof(*(pRExC_state->parse)) == sizeof(U8))
                    ? ((((PERL_UINTMAX_T)(((U8)((*(pRExC_state->parse)))))) -
                        (((('0'))) | 0)) <=
                       ((PERL_UINTMAX_T)(((((('9'))) - (('0')))) | 0)))
                : (sizeof(*(pRExC_state->parse)) == sizeof(U16))
                    ? ((((PERL_UINTMAX_T)(((U16)((*(pRExC_state->parse)))))) -
                        (((('0'))) | 0)) <=
                       ((PERL_UINTMAX_T)(((((('9'))) - (('0')))) | 0)))
                : (sizeof(*(pRExC_state->parse)) == sizeof(U32))
                    ? ((((PERL_UINTMAX_T)(((U32)((*(pRExC_state->parse)))))) -
                        (((('0'))) | 0)) <=
                       ((PERL_UINTMAX_T)(((((('9'))) - (('0')))) | 0)))
                    : (((((PERL_UINTMAX_T)((
                             (PERL_UINTMAX_T)((*(pRExC_state->parse)))))) -
                         (((('0'))) | 0)) <=
                        ((PERL_UINTMAX_T)(((((('9'))) - (('0')))) | 0))))))) {
            do {
              (pRExC_state->parse) += (1);
            } while (0);
          }
          do {
            Perl_croak(
                my_perl,
                "%s" " in regex; marked by " "<-- HERE" " in m/%" "d%" "I64u"
                "%4p" " <-- HERE " "%" "d%" "I64u" "%4p" "/",
                impossible_group,
                (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
                (UV)((((pRExC_state->copy_start_in_input) +
                       ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                      (pRExC_state->precomp_end))
                         ? (pRExC_state->precomp_end) - (pRExC_state->precomp)
                         : (((((pRExC_state->copy_start_in_input) +
                               ((pRExC_state->parse) -
                                (pRExC_state->copy_start))) -
                              (pRExC_state->precomp)) >= 0)
                                ? (((pRExC_state->copy_start_in_input) +
                                    ((pRExC_state->parse) -
                                     (pRExC_state->copy_start))) -
                                   (pRExC_state->precomp))
                                : (Perl_croak(
                                       my_perl,
                                       "panic: %s: %d: negative offset: %"
                                       "I64d" " trying to output message for "
                                       " pattern %.*s",
                                       "..\\regcomp.c", 3725,
                                       (IV)(((pRExC_state
                                                  ->copy_start_in_input) +
                                             ((pRExC_state->parse) -
                                              (pRExC_state->copy_start))) -
                                            (pRExC_state->precomp)),
                                       ((int)((pRExC_state->end) -
                                              (pRExC_state->start))),
                                       (pRExC_state->start)),
                                   0))),
                (void *)((pRExC_state->precomp)),
                (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
                (UV)((((pRExC_state->copy_start_in_input) +
                       ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                      (pRExC_state->precomp_end))
                         ? 0
                         : (pRExC_state->precomp_end) -
                               ((pRExC_state->copy_start_in_input) +
                                ((pRExC_state->parse) -
                                 (pRExC_state->copy_start)))),
                (void *)((((pRExC_state->copy_start_in_input) +
                           ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                          (pRExC_state->precomp_end))
                             ? (pRExC_state->precomp_end)
                             : ((pRExC_state->copy_start_in_input) +
                                ((pRExC_state->parse) -
                                 (pRExC_state->copy_start)))));
          } while (0);
        }
        if (is_neg) {

          num = -num;
        }
      }
        if (*(pRExC_state->parse) != ')')
          do {
            Perl_croak(
                my_perl,
                "%s" " in regex; marked by " "<-- HERE" " in m/%" "d%" "I64u"
                "%4p" " <-- HERE " "%" "d%" "I64u" "%4p" "/",
                "Expecting close bracket",
                (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
                (UV)((((pRExC_state->copy_start_in_input) +
                       ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                      (pRExC_state->precomp_end))
                         ? (pRExC_state->precomp_end) - (pRExC_state->precomp)
                         : (((((pRExC_state->copy_start_in_input) +
                               ((pRExC_state->parse) -
                                (pRExC_state->copy_start))) -
                              (pRExC_state->precomp)) >= 0)
                                ? (((pRExC_state->copy_start_in_input) +
                                    ((pRExC_state->parse) -
                                     (pRExC_state->copy_start))) -
                                   (pRExC_state->precomp))
                                : (Perl_croak(
                                       my_perl,
                                       "panic: %s: %d: negative offset: %"
                                       "I64d" " trying to output message for " " pattern %.*s",
                                       "..\\regcomp.c", 3734,
                                       (IV)(((pRExC_state
                                                  ->copy_start_in_input) +
                                             ((pRExC_state->parse) -
                                              (pRExC_state->copy_start))) -
                                            (pRExC_state->precomp)),
                                       ((int)((pRExC_state->end) -
                                              (pRExC_state->start))),
                                       (pRExC_state->start)),
                                   0))),
                (void *)((pRExC_state->precomp)),
                (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
                (UV)((((pRExC_state->copy_start_in_input) +
                       ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                      (pRExC_state->precomp_end))
                         ? 0
                         : (pRExC_state->precomp_end) -
                               ((pRExC_state->copy_start_in_input) +
                                ((pRExC_state->parse) -
                                 (pRExC_state->copy_start)))),
                (void *)((((pRExC_state->copy_start_in_input) +
                           ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                          (pRExC_state->precomp_end))
                             ? (pRExC_state->precomp_end)
                             : ((pRExC_state->copy_start_in_input) +
                                ((pRExC_state->parse) -
                                 (pRExC_state->copy_start)))));
          } while (0);

        if (paren == '-' || paren == '+') {

          if ((((_Bool)(2147483647 - (pRExC_state->npar) < num)))) {
            do {
              (pRExC_state->parse) += (1);
            } while (0);
            do {
              Perl_croak(
                  my_perl,
                  "%s" " in regex; marked by " "<-- HERE" " in m/%" "d%"
                  "I64u" "%4p" " <-- HERE " "%" "d%" "I64u" "%4p" "/",
                  impossible_group,
                  (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
                  (UV)((((pRExC_state->copy_start_in_input) +
                         ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                        (pRExC_state->precomp_end))
                           ? (pRExC_state->precomp_end) - (pRExC_state->precomp)
                           : (((((pRExC_state->copy_start_in_input) +
                                 ((pRExC_state->parse) -
                                  (pRExC_state->copy_start))) -
                                (pRExC_state->precomp)) >= 0)
                                  ? (((pRExC_state->copy_start_in_input) +
                                      ((pRExC_state->parse) -
                                       (pRExC_state->copy_start))) -
                                     (pRExC_state->precomp))
                                  : (Perl_croak(
                                         my_perl,
                                         "panic: %s: %d: negative offset: %"
                                         "I64d" " trying to output message for "
                                         " pattern %.*s",
                                         "..\\regcomp.c", 3741,
                                         (IV)(((pRExC_state
                                                    ->copy_start_in_input) +
                                               ((pRExC_state->parse) -
                                                (pRExC_state->copy_start))) -
                                              (pRExC_state->precomp)),
                                         ((int)((pRExC_state->end) -
                                                (pRExC_state->start))),
                                         (pRExC_state->start)),
                                     0))),
                  (void *)((pRExC_state->precomp)),
                  (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
                  (UV)((((pRExC_state->copy_start_in_input) +
                         ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                        (pRExC_state->precomp_end))
                           ? 0
                           : (pRExC_state->precomp_end) -
                                 ((pRExC_state->copy_start_in_input) +
                                  ((pRExC_state->parse) -
                                   (pRExC_state->copy_start)))),
                  (void *)((((pRExC_state->copy_start_in_input) +
                             ((pRExC_state->parse) -
                              (pRExC_state->copy_start))) >
                            (pRExC_state->precomp_end))
                               ? (pRExC_state->precomp_end)
                               : ((pRExC_state->copy_start_in_input) +
                                  ((pRExC_state->parse) -
                                   (pRExC_state->copy_start)))));
            } while (0);
          }

          if (paren == '+') {
            num--;
          }

          num += (pRExC_state->npar);

          if (paren == '-' && num < 1) {
            do {
              (pRExC_state->parse) += (1);
            } while (0);
            do {
              Perl_croak(
                  my_perl,
                  "%s" " in regex; marked by " "<-- HERE" " in m/%" "d%"
                  "I64u" "%4p" " <-- HERE " "%" "d%" "I64u" "%4p" "/",
                  non_existent_group_msg,
                  (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
                  (UV)((((pRExC_state->copy_start_in_input) +
                         ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                        (pRExC_state->precomp_end))
                           ? (pRExC_state->precomp_end) - (pRExC_state->precomp)
                           : (((((pRExC_state->copy_start_in_input) +
                                 ((pRExC_state->parse) -
                                  (pRExC_state->copy_start))) -
                                (pRExC_state->precomp)) >= 0)
                                  ? (((pRExC_state->copy_start_in_input) +
                                      ((pRExC_state->parse) -
                                       (pRExC_state->copy_start))) -
                                     (pRExC_state->precomp))
                                  : (Perl_croak(
                                         my_perl,
                                         "panic: %s: %d: negative offset: %"
                                         "I64d" " trying to output message for " " pattern %.*s",
                                         "..\\regcomp.c", 3769,
                                         (IV)(((pRExC_state
                                                    ->copy_start_in_input) +
                                               ((pRExC_state->parse) -
                                                (pRExC_state->copy_start))) -
                                              (pRExC_state->precomp)),
                                         ((int)((pRExC_state->end) -
                                                (pRExC_state->start))),
                                         (pRExC_state->start)),
                                     0))),
                  (void *)((pRExC_state->precomp)),
                  (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
                  (UV)((((pRExC_state->copy_start_in_input) +
                         ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                        (pRExC_state->precomp_end))
                           ? 0
                           : (pRExC_state->precomp_end) -
                                 ((pRExC_state->copy_start_in_input) +
                                  ((pRExC_state->parse) -
                                   (pRExC_state->copy_start)))),
                  (void *)((((pRExC_state->copy_start_in_input) +
                             ((pRExC_state->parse) -
                              (pRExC_state->copy_start))) >
                            (pRExC_state->precomp_end))
                               ? (pRExC_state->precomp_end)
                               : ((pRExC_state->copy_start_in_input) +
                                  ((pRExC_state->parse) -
                                   (pRExC_state->copy_start)))));
            } while (0);
          }
        } else if (num && num < (pRExC_state->logical_npar)) {
          num = (pRExC_state->logical_to_parno)[num];
        } else if (((pRExC_state->total_par) > 0)) {
          if (num < (pRExC_state->logical_total_par)) {
            num = (pRExC_state->logical_to_parno)[num];
          } else {
            do {
              (pRExC_state->parse) += (1);
            } while (0);
            do {
              Perl_croak(
                  my_perl,
                  "%s" " in regex; marked by " "<-- HERE" " in m/%" "d%"
                  "I64u" "%4p" " <-- HERE " "%" "d%" "I64u" "%4p" "/",
                  non_existent_group_msg,
                  (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
                  (UV)((((pRExC_state->copy_start_in_input) +
                         ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                        (pRExC_state->precomp_end))
                           ? (pRExC_state->precomp_end) - (pRExC_state->precomp)
                           : (((((pRExC_state->copy_start_in_input) +
                                 ((pRExC_state->parse) -
                                  (pRExC_state->copy_start))) -
                                (pRExC_state->precomp)) >= 0)
                                  ? (((pRExC_state->copy_start_in_input) +
                                      ((pRExC_state->parse) -
                                       (pRExC_state->copy_start))) -
                                     (pRExC_state->precomp))
                                  : (Perl_croak(
                                         my_perl,
                                         "panic: %s: %d: negative offset: %"
                                         "I64d" " trying to output message for "
                                         " pattern %.*s",
                                         "..\\regcomp.c", 3783,
                                         (IV)(((pRExC_state
                                                    ->copy_start_in_input) +
                                               ((pRExC_state->parse) -
                                                (pRExC_state->copy_start))) -
                                              (pRExC_state->precomp)),
                                         ((int)((pRExC_state->end) -
                                                (pRExC_state->start))),
                                         (pRExC_state->start)),
                                     0))),
                  (void *)((pRExC_state->precomp)),
                  (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
                  (UV)((((pRExC_state->copy_start_in_input) +
                         ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                        (pRExC_state->precomp_end))
                           ? 0
                           : (pRExC_state->precomp_end) -
                                 ((pRExC_state->copy_start_in_input) +
                                  ((pRExC_state->parse) -
                                   (pRExC_state->copy_start)))),
                  (void *)((((pRExC_state->copy_start_in_input) +
                             ((pRExC_state->parse) -
                              (pRExC_state->copy_start))) >
                            (pRExC_state->precomp_end))
                               ? (pRExC_state->precomp_end)
                               : ((pRExC_state->copy_start_in_input) +
                                  ((pRExC_state->parse) -
                                   (pRExC_state->copy_start)))));
            } while (0);
          }
        } else {
          do {
            if (!((pRExC_state->total_par) > 0))
              (pRExC_state->total_par) = -1;
          } while (0);
        }

      gen_recurse_regop:
        if (num >= (pRExC_state->npar)) {

          if (((pRExC_state->total_par) > 0)) {
            if (num >= (pRExC_state->total_par)) {
              do {
                (pRExC_state->parse) += (1);
              } while (0);
              do {
                Perl_croak(
                    my_perl,
                    "%s" " in regex; marked by " "<-- HERE" " in m/%" "d%"
                    "I64u" "%4p" " <-- HERE " "%" "d%" "I64u" "%4p" "/",
                    non_existent_group_msg,
                    (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
                    (UV)((((pRExC_state->copy_start_in_input) +
                           ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                          (pRExC_state->precomp_end))
                             ? (pRExC_state->precomp_end) -
                                   (pRExC_state->precomp)
                             : (((((pRExC_state->copy_start_in_input) +
                                   ((pRExC_state->parse) -
                                    (pRExC_state->copy_start))) -
                                  (pRExC_state->precomp)) >= 0)
                                    ? (((pRExC_state->copy_start_in_input) +
                                        ((pRExC_state->parse) -
                                         (pRExC_state->copy_start))) -
                                       (pRExC_state->precomp))
                                    : (Perl_croak(
                                           my_perl,
                                           "panic: %s: %d: negative offset: %"
                                           "I64d" " trying to output message for " " pattern %.*s",
                                           "..\\regcomp.c", 3800,
                                           (IV)(((pRExC_state
                                                      ->copy_start_in_input) +
                                                 ((pRExC_state->parse) -
                                                  (pRExC_state->copy_start))) -
                                                (pRExC_state->precomp)),
                                           ((int)((pRExC_state->end) -
                                                  (pRExC_state->start))),
                                           (pRExC_state->start)),
                                       0))),
                    (void *)((pRExC_state->precomp)),
                    (int)((_Bool)(((_Bool)((pRExC_state->utf8))))),
                    (UV)((((pRExC_state->copy_start_in_input) +
                           ((pRExC_state->parse) - (pRExC_state->copy_start))) >
                          (pRExC_state->precomp_end))
                             ? 0
                             : (pRExC_state->precomp_end) -
                                   ((pRExC_state->copy_start_in_input) +
                                    ((pRExC_state->parse) -
                                     (pRExC_state->copy_start)))),
                    (void *)((((pRExC_state->copy_start_in_input) +
                               ((pRExC_state->parse) -
                                (pRExC_state->copy_start))) >
                              (pRExC_state->precomp_end))
                                 ? (pRExC_state->precomp_end)
                                 : ((pRExC_state->copy_start_in_input) +
                                    ((pRExC_state->parse) -
                                     (pRExC_state->copy_start)))));
              } while (0);
            }
          }
        }

        ret = S_reg2node(my_perl, pRExC_state, 94, num,
                         (pRExC_state->recurse_count));
        (pRExC_state->recurse_count)++;
        ;

        (pRExC_state->seen) |= 0x00000020;

        *flagp |= 0x08;
        ((void)0);
        S_nextchar(my_perl, pRExC_state);
        return ret;
      case '*':

      default:
        do {
          (pRExC_state->parse) = ((char *)seqstart + 1);
        } while (0);
      parse_flags:
        S_parse_lparen_question_flags(my_perl, pRExC_state);
        if (((int)*(const U8 *)((pRExC_state->parse))) != ':') {
          if ((pRExC_state->parse) < (pRExC_state->end))
            S_nextchar(my_perl, pRExC_state);
          *flagp = 0x10;
          return 0;
        }
        paren = ':';
        S_nextchar(my_perl, pRExC_state);
        ret = 0;
        goto parse_rest;
      }
    }
  }
parse_rest:
  return ret;
}

Godbolt "GCC 15.1 x64" -O2 Asm Code output, probably on Linux/SysV, the outgoing registers are totally wrong for the x64 Win64 ABI


.LC0:
        .string "\022E_COMPILE_RECURSION_LIMIT"
.LC1:
        .string "..\\regcomp.c"
.LC2:
        .string "panic: %s: %d: negative offset: %I64d trying to output message for  pattern %.*s"
.LC3:
        .string "In '(?...)', the '(' and '?' must be adjacent"
.LC4:
        .string "%s in regex; marked by <-- HERE in m/%d%I64u%4p <-- HERE %d%I64u%4p/"
.LC5:
        .string "Expecting close bracket"
S_regXXXX:
        push    r13
        mov     r13, rcx
        push    r12
        mov     r12, rdi
        push    rbp
        mov     rbp, rsi
        mov     esi, OFFSET FLAT:.LC0
        push    rbx
        mov     rbx, rdx
        mov     edx, 1
        sub     rsp, 104
        call    Perl_get_sv
        mov     QWORD PTR [r13+0], 0
        test    rbx, rbx
        je      .L66
        cmp     rbx, 2
        je      .L70
        cmp     rbx, 114
        je      .L66
        mov     rax, QWORD PTR [rbp+72]
        cmp     BYTE PTR [rax], 63
        je      .L71
.L66:
        xor     eax, eax
.L1:
        add     rsp, 104
        pop     rbx
        pop     rbp
        pop     r12
        pop     r13
        ret
.L70:
        mov     rax, QWORD PTR [rbp+72]
        cmp     BYTE PTR [rax], 63
        jne     .L66
        movdqa  xmm0, XMMWORD PTR .LC6[rip]
        movzx   edx, BYTE PTR [rax-1]
        lea     rdi, [rax+1]
        mov     rcx, QWORD PTR [rbp+288]
        movaps  XMMWORD PTR [rsp+64], xmm0
        movdqa  xmm0, XMMWORD PTR .LC7[rip]
        movups  XMMWORD PTR [rsp+79], xmm0
        movdqa  xmm0, XMMWORD PTR .LC8[rip]
        movaps  XMMWORD PTR [rsp+32], xmm0
        movdqa  xmm0, XMMWORD PTR .LC9[rip]
        movups  XMMWORD PTR [rsp+43], xmm0
        cmp     dl, 40
        je      .L7
        mov     rax, QWORD PTR [rbp+24]
        mov     r9, QWORD PTR [rbp+16]
        mov     QWORD PTR [rbp+72], rdi
        sub     rdi, QWORD PTR [rbp+80]
        add     rdi, QWORD PTR [rbp+96]
        cmp     rax, rdi
        jb      .L72
        mov     r8, rdi
        sub     r8, r9
        js      .L10
        mov     rdx, rax
        sub     rdx, rdi
.L9:
        test    rcx, rcx
        mov     esi, OFFSET FLAT:.LC4
        setne   cl
        sub     rsp, 8
        cmp     rdi, rax
        cmova   rdi, rax
        movzx   ecx, cl
        xor     eax, eax
        push    rdi
        mov     rdi, r12
        push    rdx
        mov     edx, OFFSET FLAT:.LC3
        push    rcx
        call    Perl_croak
.L71:
        movdqa  xmm0, XMMWORD PTR .LC6[rip]
        lea     rdi, [rax+1]
        movaps  XMMWORD PTR [rsp+64], xmm0
        movdqa  xmm0, XMMWORD PTR .LC7[rip]
        movups  XMMWORD PTR [rsp+79], xmm0
        movdqa  xmm0, XMMWORD PTR .LC8[rip]
        movaps  XMMWORD PTR [rsp+32], xmm0
        movdqa  xmm0, XMMWORD PTR .LC9[rip]
        movups  XMMWORD PTR [rsp+43], xmm0
.L7:
        mov     QWORD PTR [rbp+72], rdi
        mov     edx, 1
        movzx   eax, BYTE PTR [rax+1]
        cmp     QWORD PTR [rbp+288], 0
        je      .L11
        movzx   edx, al
        movzx   edx, BYTE PTR PL_utf8skip[rdx]
.L11:
        mov     rcx, QWORD PTR [rbp+64]
        add     rdx, rdi
        cmp     rcx, rdx
        jb      .L12
        movsx   rax, al
        sub     rax, 49
        cmp     rax, 8
        ja      .L12
        lea     rdx, [rsp+16]
        lea     rsi, [rsp+24]
        mov     QWORD PTR [rsp+16], rcx
        call    Perl_grok_atoUV
        test    al, al
        je      .L13
        mov     rdx, QWORD PTR [rsp+24]
        cmp     rdx, 2147483647
        ja      .L13
        mov     rax, QWORD PTR [rsp+16]
        mov     QWORD PTR [rbp+72], rax
        cmp     BYTE PTR [rax], 41
        je      .L73
        mov     rdx, QWORD PTR [rbp+24]
        sub     rax, QWORD PTR [rbp+80]
        add     rax, QWORD PTR [rbp+96]
        mov     r9, QWORD PTR [rbp+16]
        cmp     rdx, rax
        jnb     .L22
        mov     r8, rdx
        xor     esi, esi
        sub     r8, r9
.L23:
        xor     ecx, ecx
        cmp     QWORD PTR [rbp+288], 0
        mov     rdi, r12
        setne   cl
        sub     rsp, 8
        cmp     rax, rdx
        cmova   rax, rdx
        mov     edx, OFFSET FLAT:.LC5
        push    rax
        xor     eax, eax
        push    rsi
        mov     esi, OFFSET FLAT:.LC4
        push    rcx
        call    Perl_croak
.L72:
        mov     r8, rax
        xor     edx, edx
        sub     r8, r9
        jmp     .L9
.L12:
        mov     rsi, rbp
        mov     rdi, r12
        call    S_parse_lparen_question_flags
        mov     rax, QWORD PTR [rbp+72]
        cmp     BYTE PTR [rax], 58
        je      .L37
        cmp     rax, QWORD PTR [rbp+64]
        jb      .L74
.L38:
        mov     QWORD PTR [r13+0], 16
        jmp     .L66
.L10:
        mov     rax, QWORD PTR [rbp+56]
        sub     rsp, 8
        mov     r9, QWORD PTR [rbp+64]
        mov     ecx, 3492
        push    rax
        sub     r9d, eax
.L67:
        mov     edx, OFFSET FLAT:.LC1
        mov     esi, OFFSET FLAT:.LC2
        mov     rdi, r12
        xor     eax, eax
        call    Perl_croak
.L13:
        mov     rax, QWORD PTR [rbp+72]
        mov     rcx, QWORD PTR [rbp+64]
        cmp     rax, rcx
        jb      .L16
        jmp     .L17
.L18:
        add     rax, 1
        mov     QWORD PTR [rbp+72], rax
        cmp     rax, rcx
        je      .L17
.L16:
        movzx   edx, BYTE PTR [rax]
        sub     rdx, 48
        cmp     rdx, 9
        jbe     .L18
.L17:
        mov     rsi, QWORD PTR [rbp+24]
        sub     rax, QWORD PTR [rbp+80]
        add     rax, QWORD PTR [rbp+96]
        mov     r9, QWORD PTR [rbp+16]
        cmp     rsi, rax
        jnb     .L19
        mov     r8, rsi
        xor     edi, edi
        sub     r8, r9
.L20:
        xor     ecx, ecx
        cmp     QWORD PTR [rbp+288], 0
        lea     rdx, [rsp+32]
        setne   cl
        sub     rsp, 8
        cmp     rax, rsi
        cmova   rax, rsi
        mov     esi, OFFSET FLAT:.LC4
        push    rax
        xor     eax, eax
        push    rdi
        mov     rdi, r12
        push    rcx
        call    Perl_croak
.L19:
        mov     r8, rax
        sub     r8, r9
        js      .L21
        mov     rdi, rsi
        sub     rdi, rax
        jmp     .L20
.L74:
        mov     rsi, rbp
        mov     rdi, r12
        call    S_nextchar
        jmp     .L38
.L37:
        mov     rsi, rbp
        mov     rdi, r12
        call    S_nextchar
        jmp     .L66
.L21:
        mov     rax, QWORD PTR [rbp+56]
        mov     r9d, ecx
        sub     rsp, 8
        mov     ecx, 3725
        push    rax
        sub     r9d, eax
        jmp     .L67
.L22:
        mov     r8, rax
        sub     r8, r9
        js      .L24
        mov     rsi, rdx
        sub     rsi, rax
        jmp     .L23
.L73:
        mov     rcx, rdx
        test    rdx, rdx
        je      .L25
        cmp     QWORD PTR [rbp+240], rdx
        jle     .L25
        mov     rdx, QWORD PTR [rbp+208]
        mov     rcx, QWORD PTR [rdx+rcx*8]
.L26:
        cmp     QWORD PTR [rbp+232], rcx
        jg      .L32
        mov     rdx, QWORD PTR [rbp+248]
        test    rdx, rdx
        jle     .L32
        cmp     rdx, rcx
        jg      .L32
        add     rax, 1
        mov     rcx, QWORD PTR [rbp+24]
        mov     r9, QWORD PTR [rbp+16]
        mov     QWORD PTR [rbp+72], rax
        sub     rax, QWORD PTR [rbp+80]
        add     rax, QWORD PTR [rbp+96]
        cmp     rcx, rax
        jnb     .L75
.L33:
        mov     r8, rcx
        xor     esi, esi
        sub     r8, r9
.L35:
        xor     edi, edi
        cmp     QWORD PTR [rbp+288], 0
        lea     rdx, [rsp+64]
        push    r10
        setne   dil
        cmp     rax, rcx
        cmova   rax, rcx
        mov     ecx, edi
        push    rax
        xor     eax, eax
        push    rsi
        mov     esi, OFFSET FLAT:.LC4
        push    rdi
        mov     rdi, r12
        call    Perl_croak
.L25:
        cmp     QWORD PTR [rbp+248], 0
        jle     .L27
        cmp     QWORD PTR [rbp+256], rdx
        jle     .L28
        mov     rcx, QWORD PTR [rbp+208]
        mov     rcx, QWORD PTR [rcx+rdx*8]
        jmp     .L26
.L24:
        mov     rax, QWORD PTR [rbp+56]
        mov     r9, QWORD PTR [rbp+64]
        mov     ecx, 3734
        push    rbp
        sub     r9d, eax
        push    rax
        jmp     .L67
.L27:
        mov     QWORD PTR [rbp+248], -1
.L32:
        mov     r8, QWORD PTR [rbp+312]
        mov     edx, 94
        mov     rsi, rbp
        mov     rdi, r12
        call    S_reg2node
        add     QWORD PTR [rbp+312], 1
        mov     rsi, rbp
        mov     rdi, r12
        or      QWORD PTR [rbp+160], 32
        or      QWORD PTR [r13+0], 8
        mov     QWORD PTR [rsp+8], rax
        call    S_nextchar
        mov     rax, QWORD PTR [rsp+8]
        jmp     .L1
.L75:
        mov     r8, rax
        sub     r8, r9
        js      .L34
.L68:
        mov     rsi, rcx
        sub     rsi, rax
        jmp     .L35
.L28:
        add     rax, 1
        mov     rcx, QWORD PTR [rbp+24]
        mov     r9, QWORD PTR [rbp+16]
        mov     QWORD PTR [rbp+72], rax
        sub     rax, QWORD PTR [rbp+80]
        add     rax, QWORD PTR [rbp+96]
        cmp     rcx, rax
        jb      .L33
        mov     r8, rax
        sub     r8, r9
        jns     .L68
        mov     rax, QWORD PTR [rbp+56]
        mov     r9, QWORD PTR [rbp+64]
        mov     ecx, 3783
        push    rbx
        sub     r9d, eax
        push    rax
        jmp     .L67
.L34:
        mov     rax, QWORD PTR [rbp+56]
        mov     r9, QWORD PTR [rbp+64]
        mov     ecx, 3800
        push    r11
        sub     r9d, eax
        push    rax
        jmp     .L67
.LC6:
        .quad   7164775599194924370
        .quad   7957700152174846053
.LC7:
        .quad   7954892355859408238
        .quad   31654318912774260
.LC8:
        .quad   2334106421097295433
        .quad   7164775599194924402
.LC9:
        .quad   8367799585382691429
        .quad   31654318912774255

very short and very easy VC IDE C and Asm single step guide

Image
Image
Image
Image

local public library Sci/non-fiction section

Image
Image
Image
Image

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions