Skip to content

Instantly share code, notes, and snippets.

@Voultapher
Created January 9, 2017 11:23
Show Gist options
  • Save Voultapher/3ee0df192c29ab9f21e173757607719d to your computer and use it in GitHub Desktop.
Save Voultapher/3ee0df192c29ab9f21e173757607719d to your computer and use it in GitHub Desktop.
http://godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAM1QDsCBlZAQwBtMQBGAOgFYAGQUOHCALKQBWXUqgAOBPHQDOlNK1QBXYniWYAgkoC2IAOT8TpNIdl52AeVoBhBM1rAOZkwEpSSzcWQPAFIAJgBmPCpaLCoAagARbAAZbABxPQAVbAB9AAkABXzsgEkAOUckgFVE%2BKD%2BPVCwmLxaTATktMycgqKyiursWvq6hvCW5FYNLFigsMcCAE9ZTGyCYmZCJVnsEcbxyenZxyoNWmQFOjZt3bGzg7ajw0xDEgXt2IB6D9ji2KVmdCxSi7epfWIAWkhkNiDAAmqU7PkGMUGBCoeCQXpaMwnkpZMxAn9lshdgB2ABCIIAnARnrJWMxaUclHgAF4rAh/NmYUixRbLbFPWIAJV5/Mwgsw3GlsT0xGAWzC2FiE2YSiUsVkWkws0pw34NLpDKZcxZ7NWXPZYqWEpxbVFfJtkul3Fl8sVytV6tiLXpBI52gAbrrqbTrMadabuRazTzHQK7SLrQmni63Qr3l6Nb6GYEQ/rDeHGZHHLGY9zk7ahQ7xc6ZXKM0qVQzvegFoK8CSwnqGqShg16pK8f7YlgCBtWGSe3UqWhaEpaQAPWTES0c0eYKjMDSsAjZFj45CEBYzMLxNeoKgQMsELyxABUsVE%2BYHs%2BUS5Xa4tMW3u%2BybDwYBaCeehT3PWNL2vaNbxfII%2B0xEYwz9E1HFDJ1EwyUhQyNYtmWgytJQIu0XUzFsNQYYkwKJTBkBAEAc39LCCxvNcqLHCc6J/Hc9wPAlj12JURizDd2GAXDu0%2Bb5TjxGjIjwTB0ExJCIyONCU3tIjU3rd0mNfZTxNLfD4yrONa2I6VSLVcjiV0mcWNjASdnqYSsFEgzhQgBslBdHwYRstdrm7BDQW%2BdFwR%2BABZfIUgi7BSgyTJijsUo0ShTEh0PNp2NsKdEJwlCzOrTSpW0xtlQXRlOxFWI6UWbItWITBPPdHzcoLAgEGIVAAHc/gIdA6IAIwBbITjOC5aH3NhWAgLxYPg/U9H0lC1JMpNVslGFbINQqStdLzHL6yrkGq2qFggBhQgANl5A6Qiu6602Yd05uGClqUaggtFoGrrDqhqSwdLySKVa9%2BromhiG657FLmA7QeehUvFaoK3v7PKixW9r0KFTCNsTUV8a0/b3UOjQWTcZtUCUbVsiwFgT1mcDwZQOh8Amq45mpBcBvopR9zoQNMGIBRBvYI5MJFCB7y8ZqFRR7A6MDNgNB5akPJluXvOlHwibaHnOJo5g3jmDJtjo8VHNg%2BplpLXbYgyKjA1QPB0GKkHyrWDRzk1AkAGtRrwYgFza19yZaYBjKog2QEal4hf3QNVglwLp3g1GByW/K7ZxvaHY9EZw8pw8A6oIOFwtJnjM2kvA%2BDggJe17hzZAS2M7JdHBztYdCRkkk3unELUs1bVUox5CS3sitq4J93So9ZsrJHxrQ61MXOxAaki8jlpnb9lZ5GISuzylzXgZ163X0wZdWE7Qhl6au9aFQa/AnkIFqRnXfUH3%2Bq1myOC5INzjlsHRM69VtRHCBi1CyTY4KdypIA%2BBwVCwTyOPbM2TZr70jvpyAGEAzb3WurEMayA/7ECfi/Rcb9OSbwLF/Wge8D7/0ASQ04ZDD4zAWq%2BJB9CDQVQUGQqywsCBg15joAWjCRF4DFiWSW39f6H2TkqJWKs1Z8MQQaUIIRUCDQkDRTkz9ORziFiLGR7A%2BSoAfmw8aigfqyBdvQYWYAwDaLmu3LR3DqT4LnAuB%2B11KGv0wO/KuXFdzWypPggG10AmxGfkEkJJ8wkNw8a%2BaJ91YhyGFoyEgVcIC%2BLwZA%2B6gTqHBM5KEzcv4UmD0iUUq6mTljrCIMQPJ6SHrFLiVQmhbFKncUvjOAAfvgu8FStx9NSTOYUDTsnNNmrELWMT7pPReiqd8n93oaM%2Bt9H0jCf7MKPmIiGJBobEFho4eG2AICIyUMjC%2BHjEFeILINVAqBWC/XkOdO8BTOkJIbvQjZPCDRbOID9BR%2BzshgQqSA1gYC/oLAgSvOY0D5awJ2Pc5Bi0Zy23QbnB27wMiPnHPKTAoivnvh%2BaU%2BQ6yakzmBaC3ZiiWHoseXoFceBla0joa%2BMF5CLQ8qUfNWoqSwRQh2X6QIqwgxjxttnPC5pOSxmKkmGexN0wL2EgxCVax2Wrw0OvWiW8KaRwXCQZg7hj7M15gBICClsgmvWOalJhkrTAI4iAZJ/5b5ARAiktFNTt47KYby8pJ8Nay3tWajk11bqkyIUsu5g8r431wWK3MAZ2VzPiZS2hn8DT8pYRSV1oCQBnSgbyCNjqY0oubnAx5DzKQsqxbKrmGiMHbU0TSXFjgqL22yjClA6gaaNTpkbE2jhJbIqbi3S29CsHJqPJyTV6bAwEMWfUiY1NtR3i5TOBhQaBWFoEZ2KaIc5j5qPr6iAuaO1BF4JSXg8QwamsdcQitcY7rtKusspGEJ3jCmvbuwtdLYiNRaLSYgK4SUnqdahIhoM33hpZpDE5ZyLlXJeijIBGLAVUjmnW3hOGj1CPVCIqC7JIKOBGVzE%2BiqANaJCCEJdkr2UiUwGJWkVMh1tCIFYhkxKXFuP6Vo/h45BH/hIyLQ5IBrXAQlHuS8RxUIqJAMrSYDxqPnj7YbMZf4ZM%2Bvbbu%2BjjHaDiuXax9jbQN1cdiHpuTljeOIx1Ax9xibDNUiI%2BJ3QkmY4SO1YGPA014VoFkAsZgsjFMt1U6rAzwnEEMaY358zxZOOjyMXyIMAXWCsBPMF0LsiBPOaEx2jzwjvMs18xlwLI6FzEG9qLcWcwlOKxU2omLN74smbTcxwMSWONWdS6gTkfnMvZY3DVur5jMAFZCC5lBM5WjdSvfdN92QvCoUPUh45MMU6g3641EZ6caWNrzZ1/03X8nkoS0GWJWbumjKqREq7GanvBjjVdEpd2km9PCRMk7pnuvEKyU03JJ8LvzkXadrV12Om3bKT0nT1TqQvcB40nJLTQfI7ex9uH93xmuYNAMl7czcc/fx1SKZQO0dzIWW979NzVng%2Bpde4D57shPodSsctm2obbbhqTBGGGE3rM7q%2BZ5rz3mLDmd82HVL/k0qBSS7ZrPIVfehbCj5Za%2BrPo5FWqdglmUi6bZjHO6k8VNgJXyRzpKGd%2BJl38nhAK3PAdA04iDn1oMS3vNsJbV0Vuzf%2BSLtlHKOBI4ZeCiH%2B6mU1MMBoccsitcc5jM0yNAD26HcxCK6ES7pVZ2N3K9ciqVUaSL2mC5i9vRLt1fqndBoA0rZDZauiMnbX1/z7yLT7rvt7ls/QVOKCA2s4b6fRD2vk73V12uzDhqI6rJC8Gp2Lt0DSxH4nhu4%2BE8p7X%2B9iJAasDjfOCQefVdnau2X%2BzzfASivYNvgu1N/pM1dLhzXjtrPWEd9LUirno%2BCC649lw%2BIbWuWvKrCt696j6re6%2BEB72FK3SGITYJ%2BgISCfY/%2BbWe%2BXsB%2BR8B6WGd6t64ByeL6MOj%2B78cByoCBXCDa542GgGFBKC2KLaOGba169s3aVcvaJKbqe2Kw9MxsEsvIk6HsFsNon8c6OCt%2BS6q6b2KW%2B2MBT%2B16r%2BG2x0HuZ6Yewa3udGiCOBD65%2BBB9Sb6E%2BtOMo1yd4JBIo6hrCzumAYGwskGPEaoMGMS8G%2BBmAiGvMyGvO5y/OlyRhmG/%2B16B2AB16QBWBs%2B8KcgimX%2Bq%2B3u/hqBmA%2B%2BzSwBChYmLAp6jgaBtWGBqhoMZhmheB3%2Br6Th2OxB7wCBZhQGlhruNhShjgsGD0jh2uyMAyjgs0uovhGi/hTOGiJWEmoiEEV4lGp4Sm4EFYZhHWpmvWlmg6o8PGsQfG7ggmv2xWomx6pWPRLMPe8mVAEWymUW6mgxRa/aHq6xbWu6oxaa4xUhbQ6x9mMxjm8xZO82mAi210fu62QCMcbhpyO2lynB7RBuKC4h3yleGSg2CAws26chKhwRIJws3Ayu8CgBcg8KUJHUMJQR/8KB16aRdWh%2ByJoJxA3AWJGRSirRDu8ub4c%2BSi2hnOmSKJ%2BJfuESVBBY4hQJn6NJeJ4JnRThEKrCMc8cTU0JdJXJ0REJkeR8rCApsJkJ6J8JgRiJCRQCEpaJR8GJGihJ8RuJMJapOJ0p%2BGjusWEpWpmB0pJ8oBuBVJY%2B0BJhZBSBQqR2huf2aaKOMyIO54YOfiLJbJYJHROGkQ8yHUOgsQAmNGax6A6AjU6okEApXgr0OGBGbme6eyvKVEEpr%2B6KsWSp3JJ8ipcpAqaZN6GiM4hpvK5p/usZBoGZ5pvIEp9JeZhZsR6B6pxp54Bp9Z6RjZYptZ%2BGCuX0IKD4/piodp/xkOTm9SlOzSeSLJgOtJMZ1BchcQEA/ZgZriwZVqoZ4ZfgV4UZM5sWcZO5BoRZlJNZZJdkXJ0cLMfJEA1ZQpRWbmcJWZtJkpopqex55ZOZTZnp%2BJGZDJsWB575LZcR2pHZ9x%2BpD5v5ypVcppWhUBxhxRi%2B5ByCnZCCtKiuvZ94/ZDJx2VIhOw5zRcumJrZ2JRpByR5wuKCFOqOsyd4NOn6dOZKjOeFmyKF9KT5lZfUrhW2nxfOZU6GSMU%2BAeKCYubyZ0Uu5Kdu3pTuTFgaiZxJTMVcHmyRTqg%2Bah9QsQqlal6l7%2BcKmu9ev%2BqKpZgG9pqCKkcwGC%2BKhKVuIl4OMhsupJzOklLu4GlRClnuahy215fxi0QexYz%2BMeceFi9eG%2B5qRWg%2BUljKQFhmr4GZxib54VBYYF34BFRJUetBzaqErauKeM6VpuDAbW9sMctosi2QkQyiaVhG5W/MQBBSbZk2XxqiamvIYGAGcCJ8/AwhnoMVFoQBcguFtljFPZP0kFj6l0GS6AC4vIw1uhAQhRnIVpi%2BAGep%2BZVIC2Puo1t4ZsZRVhbuUGzlpsDhlySgU1vhiFGFhldBpVbmjBWVa0OVTBuK%2BV2IhVxVTq16LiPmFVcpVVE24Wu12xrWOy9u8ZzV54rVs67VFJ/80Vc%2B3V259a16XRXmqx4i71c%2Bn15wNVP1zWOxxxRmqNCglMrkbGyW3UhACAsQfJmStAo24oPo2YjCAE6A02%2Blni6M6ei0me4UbYHYJ0aUMqeeUY8qa4SqNYucpenh5eGonNOInYVeN%2Bz%2BdeXJQ%2B7x7CE0UC1Fj0dyfqKC1%2BKakthgnYD%2BvyH8nJo%2BNpTOmFZ1plIhN%2B98ut%2BthCrJPxRtZVJtG27FPOnF463ujtjJsNmFttyAbpnI/tsSJOiOcV7YUtAdwdWO8OD2Cx0do5FFLp8y3yCdVGmmXeESCd0ywO6OrpCdIdX2CORWAy/txORdcdZO5FzpxA1OH66troRhNuANniZJwGK2UmHxqGnhPFNyfFDuhlglEunyzd1lLdsNfV2yr1SxZCO1jggl3uJF/FmKO0qVltyoFuRK7g1u0uRB49u5Ha7dXJ3AtsluxKTqmClyTNDy/YXlnK1IvlYW/lCtgVKwgqgqkkcS3cmU1E/cmcZ1esyqu0otCo7aZ1N4xUc8NanoZEfkNE7aU87IVszksDBNFmqt583AvkFE8DAUgkA8Iwa8st0%2BlM4Z3EqwNoVE/6Cx8t3%2BVEODXYzqcY/BqK35SaohNtmAbktIBt2aTtbmK2pteF5tqVt1pumVDBuKclLMBV7ARVVAJVIw6l6l09SNdqdozILM3B8KF92w7eXDhNJomNai1woN1IaDxYEhrJqmHJztiePJ3OKGXxEANjJJs5mFYIFjeNkcuNJAWwcVBjFmUmtAO4rASit4Y9/DP5gTljMNQjmcM4YIuNsQxNHUZNzwg0wsNiaNdAmoji4GKCYIui%2BiPsDim1KozA8gkC7Ua9Xapjr4XjTUjgj43yxTBi5CfBEAjgdELT5KTwHUGA5CssmD0Z16duQI4xV6BZWid6bT5wHT6TAz6A5CZp9d8ajdKyJh/6DFOGwGl5ei7Th8JB94/TCAgzh8LhRy7t3d3F3hQuAecT70IjfN8wdT%2BDDTMTPDzTo9cze4h8nT3TIAvTVlpz5zawwzMCWDzdcTBo4zIAkz2R5IvzCzoLyzh8qzsaNFhhmzf64lsWezyLRz2wJzJKZzaL4LndHFNzHovdtyWDJ1jzNBK9VIRTBzPsjUVAwsEohIB4PZOoNTLzzB9TdZ3DTTgObLe4HLALPTo9qLQzWsPkMLS1e9EzjTUzZZGhlI90yLUrizZLKzWhazX62LP6WzeLh9kl%2BzJTkrm43AJLSz8r7xVLRwaGdz9LBujLjJektTpuTW5jnzYrwJEr2QurHkgLwLficrFzCrOs0LYzKr8LariL10Orm4vIUbawGLGYBhGzpruLOzEl/V8yqbVAdrGbFClL1zLrPdbr198CnrHj3wvzeT5Taovs6w/Tws2ELzYja0jguVItMoEUzwXkA7pu91T9KwT1qknJaj/wTwRwHetcZc9cJVmDejsQzTkWf1jVQNsQINPCTYarYbMr3y5bssw7hgIzSrcLCL0zmr5bZp3zhLawvIl7mDNmOLTY2zvVuzlrL7xAxz57lbTjcw77Nbgu7rdpDbp1ojV1m0/bvbdYro4HoDSHiYE7j1Cjz1s7dEEi87JYS7/sdcFcTq67SovIW7v19V/17wVcB7u6R7AbEAJ7QLsrpLYLFbqHTcdFC4N7Cbd7GroBj7Whz7wb/zsQ3HtFv6375ryFRbVrhzawQHHH5LFbTrVbYHI7EHvF9zA9MHhTTbErIGm4XLZwlxGo%2BIHbJKXbAraC9BF1XaY7JkaY3Hznm0mHcj07DnsWb16jC7cwRHyApc5ce4ZHkLG7NR27NHu7yo9HbVkzrHEbnIwHUnOs/HhtibzHiLInj6NRmSErb72n1an7ebsnBb%2BL/7ErZbqnjrjj7h3H3utbDLZtsHPb8HiYiHHXqqbn6HQonnU72HM7ZVc7GjgX7Bxay7oXa7EXFHm7e1dV0WtHe7DHWiTHorLHXTp7fTtX0baXULBSGXfDWXG3OXu3mbon4r1rRXV7kLpX9OZrFXFrCnvzNXDr0bGnoHjgjXAuunUHwuBnzLrL1rIRNmlnz0doBTdnxl51sWzB7n5kKHxXSgCP/XMjD1XnQ3Pnixo3AXqRE3/aU3q74X1akX0XS3sXVEq3iC63hjTUSX7H73FL%2B3ozGit7Sb97wn53LSonBX13knyP0nj3v7hb2yin5wb3%2BrH39XHtP3XhkHdbfYgPCTq97XkjvrqPecvX3X%2Bs6Pk78jijuHfM/nhHBPdERPpH1bpPc3TWi3cYlP8XoNiXW3bHZ73PF7gvsbh38bmXgn8ZMz5IuXXTfPBiN3H7Tdwvs5k9vZ4vBAkvnHlzIAXdRwcvtL/dBlyv/rG3qdAbhdGdxd9yarjTa66dG4BfZOxfwJSdedKd5Klf0BodWdufVfNdeS9fefZfldKCpdzHpfySRW1dudddd3TdBScn3Z2yHdn37hrrCvJ1AlLybyY5LpeSMcITWW4TvHhie94/VIR9o%2B3Awlivg9i/OdaOQZrpa/oTm/o9YlT38nU9YAK2h/cKzRHlKvVI2tt%2By/q4gllltuO/e/hP17LT0D%2BR/efsyzIJKBoYsgCAPXw/Ketjaq%2BPkNYDPIm08yK2ZMg%2BUEZ5kryo%2BHtNYAgEf8yC4ZElD1Sj52MU8aAyIk81tKkVmWFtDKmZTPrb1/%2B2/X5Lv336J4T62cFgSSmcbH8UqavRzuI014JAzyvMJQC4EahqcviYggbgbydSxhTwaKIYuRivDxBfIDvFqglyIznFDAzARRP7AUhWNiEPxXfueE4TSNeYBg3%2BFIOegKRnG0/D2pfXySTF9sdbYAQNTvTotDWmLBuvdxgrldYyC1UXjH3vDS83aX3Wfn908E30iB3bezrDw7SXV1ea0SgiuToj2CZBKzDGvIL15YcSqLiMjOplUEXgNB0ZBqr3hW66CZ6%2BgwwQfGMFL57al%2BIAe5hnqeZSMygwKGoMwCQRNBvIbRI4FcBpYS4/1KxJXxmwJD6gd9EPMxBfo4C04dAzFOEAlD4A4gYIRICkHSBZA8ghQEoOUCqA1BMQYGMmhsFoDkCFq24IgNkyoiDU4BufZQqSneCuQDsQCI%2BooTnoL1QYrwloghRqRD1VMrsKiKQggDr8wm4LF8KpQ%2BiSV5KdhI4LFxcb00XMMwNGN4FIAwoTAvACwLQFMCcALAqAUwLBi1ZvF/AhIRoPiNIAEBTA5gSoX7BABhAv0ogK6MyMEAAAOXgGyM4AciwgVIDEaYFEA4iaRBI0wBYBUD8AqRwonwHAFgBIArANgdgGQAoAXZrAtgYWAOlcDAAwgbIiUWXF3DCwVAEAQaMKMsCoBDAPqBwNlhNH4BGoaNIWCoE8DkAnEmI2kTIHkB2IHR4IOwGEAhA8wmYJIEICSM4CCifAmI7EaQFxGOjCRJgCkSkxJqxBFwbIq6OCBZGLxKYYQbgGyIsDUjPAdIhkTwFJBsi2RjIhjGEF5EMYroV0EIPyJMCCiIxJo6MWKJAASicxromUYgFZiqjFR5AVQGaIVHqjgAV0MIKQD1HgZDRxox0VYAtGU0Fg1ooOAYnZSxETRVhF0eiLkATRPR3o30f1H9GhAgxIYmseGMjHmAZApgWMak1JqJjkxqY4AMgBOhfowg2YqUT4HpFhACxogUkPwEZFUh%2BAhYqkJwCpC8BhxmIusceJFEmAmxLY58TWJCBCioxooyUbmJ8CmIWQdAEAKICAA%3D%3D%3D
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment