{
  "contractName": "SHA1",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "x",
          "type": "bytes32"
        }
      ],
      "name": "Debug",
      "type": "event"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.7.4+commit.3f05b770\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"}],\"name\":\"Debug\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensdomains/solsha1/contracts/SHA1.sol\":\"SHA1\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensdomains/solsha1/contracts/SHA1.sol\":{\"keccak256\":\"0xf400ebc75f77539e256b05773b840a1908b7c79ac39863ea8e80a3408c90a30a\",\"urls\":[\"bzz-raw://7b2ff0c33b4215ce9eb2343ae83b8ed15a2d8b76c0d91c864ed691b15ad5a4b9\",\"dweb:/ipfs/Qme6LYwQDT1zcKzNjaFZssUKrhMNZoT1qPn4sw5ZckGp7c\"]}},\"version\":1}",
  "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122099f1d2a1435aede1991b436fdf4f8015f0227f6ec3689db1c94d1d6917207e8964736f6c63430007040033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122099f1d2a1435aede1991b436fdf4f8015f0227f6ec3689db1c94d1d6917207e8964736f6c63430007040033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "26:5711:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "26:5711:21:-:0;;;;;;;;",
  "source": "pragma solidity >0.4.18;\n\nlibrary SHA1 {\n    event Debug(bytes32 x);\n\n    function sha1(bytes memory data) internal pure returns(bytes20 ret) {\n        assembly {\n            // Get a safe scratch location\n            let scratch := mload(0x40)\n\n            // Get the data length, and point data at the first byte\n            let len := mload(data)\n            data := add(data, 32)\n\n            // Find the length after padding\n            let totallen := add(and(add(len, 1), 0xFFFFFFFFFFFFFFC0), 64)\n            switch lt(sub(totallen, len), 9)\n            case 1 { totallen := add(totallen, 64) }\n\n            let h := 0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0\n\n            function readword(ptr, off, count) -> result {\n                result := 0\n                if lt(off, count) {\n                    result := mload(add(ptr, off))\n                    count := sub(count, off)\n                    if lt(count, 32) {\n                        let mask := not(sub(exp(256, sub(32, count)), 1))\n                        result := and(result, mask)\n                    }\n                }\n            }\n\n            for { let i := 0 } lt(i, totallen) { i := add(i, 64) } {\n                mstore(scratch, readword(data, i, len))\n                mstore(add(scratch, 32), readword(data, add(i, 32), len))\n\n                // If we loaded the last byte, store the terminator byte\n                switch lt(sub(len, i), 64)\n                case 1 { mstore8(add(scratch, sub(len, i)), 0x80) }\n\n                // If this is the last block, store the length\n                switch eq(i, sub(totallen, 64))\n                case 1 { mstore(add(scratch, 32), or(mload(add(scratch, 32)), mul(len, 8))) }\n\n                // Expand the 16 32-bit words into 80\n                for { let j := 64 } lt(j, 128) { j := add(j, 12) } {\n                    let temp := xor(xor(mload(add(scratch, sub(j, 12))), mload(add(scratch, sub(j, 32)))), xor(mload(add(scratch, sub(j, 56))), mload(add(scratch, sub(j, 64)))))\n                    temp := or(and(mul(temp, 2), 0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE), and(div(temp, 0x80000000), 0x0000000100000001000000010000000100000001000000010000000100000001))\n                    mstore(add(scratch, j), temp)\n                }\n                for { let j := 128 } lt(j, 320) { j := add(j, 24) } {\n                    let temp := xor(xor(mload(add(scratch, sub(j, 24))), mload(add(scratch, sub(j, 64)))), xor(mload(add(scratch, sub(j, 112))), mload(add(scratch, sub(j, 128)))))\n                    temp := or(and(mul(temp, 4), 0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC), and(div(temp, 0x40000000), 0x0000000300000003000000030000000300000003000000030000000300000003))\n                    mstore(add(scratch, j), temp)\n                }\n\n                let x := h\n                let f := 0\n                let k := 0\n                for { let j := 0 } lt(j, 80) { j := add(j, 1) } {\n                    switch div(j, 20)\n                    case 0 {\n                        // f = d xor (b and (c xor d))\n                        f := xor(div(x, 0x100000000000000000000), div(x, 0x10000000000))\n                        f := and(div(x, 0x1000000000000000000000000000000), f)\n                        f := xor(div(x, 0x10000000000), f)\n                        k := 0x5A827999\n                    }\n                    case 1{\n                        // f = b xor c xor d\n                        f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\n                        f := xor(div(x, 0x10000000000), f)\n                        k := 0x6ED9EBA1\n                    }\n                    case 2 {\n                        // f = (b and c) or (d and (b or c))\n                        f := or(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\n                        f := and(div(x, 0x10000000000), f)\n                        f := or(and(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000)), f)\n                        k := 0x8F1BBCDC\n                    }\n                    case 3 {\n                        // f = b xor c xor d\n                        f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\n                        f := xor(div(x, 0x10000000000), f)\n                        k := 0xCA62C1D6\n                    }\n                    // temp = (a leftrotate 5) + f + e + k + w[i]\n                    let temp := and(div(x, 0x80000000000000000000000000000000000000000000000), 0x1F)\n                    temp := or(and(div(x, 0x800000000000000000000000000000000000000), 0xFFFFFFE0), temp)\n                    temp := add(f, temp)\n                    temp := add(and(x, 0xFFFFFFFF), temp)\n                    temp := add(k, temp)\n                    temp := add(div(mload(add(scratch, mul(j, 4))), 0x100000000000000000000000000000000000000000000000000000000), temp)\n                    x := or(div(x, 0x10000000000), mul(temp, 0x10000000000000000000000000000000000000000))\n                    x := or(and(x, 0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF), mul(or(and(div(x, 0x4000000000000), 0xC0000000), and(div(x, 0x400000000000000000000), 0x3FFFFFFF)), 0x100000000000000000000))\n                }\n\n                h := and(add(h, x), 0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF)\n            }\n            ret := mul(or(or(or(or(and(div(h, 0x100000000), 0xFFFFFFFF00000000000000000000000000000000), and(div(h, 0x1000000), 0xFFFFFFFF000000000000000000000000)), and(div(h, 0x10000), 0xFFFFFFFF0000000000000000)), and(div(h, 0x100), 0xFFFFFFFF00000000)), and(h, 0xFFFFFFFF)), 0x1000000000000000000000000)\n        }\n    }\n}\n",
  "sourcePath": "@ensdomains/solsha1/contracts/SHA1.sol",
  "ast": {
    "absolutePath": "@ensdomains/solsha1/contracts/SHA1.sol",
    "exportedSymbols": {
      "SHA1": [
        6448
      ]
    },
    "id": 6449,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6434,
        "literals": [
          "solidity",
          ">",
          "0.4",
          ".18"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:21"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "id": 6448,
        "linearizedBaseContracts": [
          6448
        ],
        "name": "SHA1",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "id": 6438,
            "name": "Debug",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6437,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6436,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 6438,
                  "src": "57:9:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6435,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "57:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "56:11:21"
            },
            "src": "45:23:21"
          },
          {
            "body": {
              "id": 6446,
              "nodeType": "Block",
              "src": "142:5593:21",
              "statements": [
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "161:5568:21",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "218:26:21",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "239:4:21",
                              "type": "",
                              "value": "0x40"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "233:5:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "233:11:21"
                        },
                        "variables": [
                          {
                            "name": "scratch",
                            "nodeType": "YulTypedName",
                            "src": "222:7:21",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "327:22:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "344:4:21"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "338:5:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "338:11:21"
                        },
                        "variables": [
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "331:3:21",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "362:21:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "374:4:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "380:2:21",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "370:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "370:13:21"
                        },
                        "variableNames": [
                          {
                            "name": "data",
                            "nodeType": "YulIdentifier",
                            "src": "362:4:21"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "442:61:21",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nodeType": "YulIdentifier",
                                      "src": "470:3:21"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "475:1:21",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "466:3:21"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "466:11:21"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "479:18:21",
                                  "type": "",
                                  "value": "0xFFFFFFFFFFFFFFC0"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "462:3:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "462:36:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "500:2:21",
                              "type": "",
                              "value": "64"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "458:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "458:45:21"
                        },
                        "variables": [
                          {
                            "name": "totallen",
                            "nodeType": "YulTypedName",
                            "src": "446:8:21",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "cases": [
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "568:33:21",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "570:29:21",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "totallen",
                                        "nodeType": "YulIdentifier",
                                        "src": "586:8:21"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "596:2:21",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "582:3:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "582:17:21"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "totallen",
                                      "nodeType": "YulIdentifier",
                                      "src": "570:8:21"
                                    }
                                  ]
                                }
                              ]
                            },
                            "nodeType": "YulCase",
                            "src": "561:40:21",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "566:1:21",
                              "type": "",
                              "value": "1"
                            }
                          }
                        ],
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "totallen",
                                  "nodeType": "YulIdentifier",
                                  "src": "530:8:21"
                                },
                                {
                                  "name": "len",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:3:21"
                                }
                              ],
                              "functionName": {
                                "name": "sub",
                                "nodeType": "YulIdentifier",
                                "src": "526:3:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "526:18:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "546:1:21",
                              "type": "",
                              "value": "9"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "523:2:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "523:25:21"
                        },
                        "nodeType": "YulSwitch",
                        "src": "516:85:21"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "615:59:21",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "624:50:21",
                          "type": "",
                          "value": "0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0"
                        },
                        "variables": [
                          {
                            "name": "h",
                            "nodeType": "YulTypedName",
                            "src": "619:1:21",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "733:380:21",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "751:11:21",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "761:1:21",
                                "type": "",
                                "value": "0"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nodeType": "YulIdentifier",
                                  "src": "751:6:21"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "797:302:21",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "819:30:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "839:3:21"
                                            },
                                            {
                                              "name": "off",
                                              "nodeType": "YulIdentifier",
                                              "src": "844:3:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "835:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "835:13:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "829:5:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "829:20:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nodeType": "YulIdentifier",
                                        "src": "819:6:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "870:24:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "count",
                                          "nodeType": "YulIdentifier",
                                          "src": "883:5:21"
                                        },
                                        {
                                          "name": "off",
                                          "nodeType": "YulIdentifier",
                                          "src": "890:3:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "sub",
                                        "nodeType": "YulIdentifier",
                                        "src": "879:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "879:15:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "count",
                                        "nodeType": "YulIdentifier",
                                        "src": "870:5:21"
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "932:149:21",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "958:49:21",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "982:3:21",
                                                        "type": "",
                                                        "value": "256"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "991:2:21",
                                                            "type": "",
                                                            "value": "32"
                                                          },
                                                          {
                                                            "name": "count",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "995:5:21"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "sub",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "987:3:21"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "987:14:21"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "exp",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "978:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "978:24:21"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1004:1:21",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sub",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "974:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "974:32:21"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "970:3:21"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "970:37:21"
                                          },
                                          "variables": [
                                            {
                                              "name": "mask",
                                              "nodeType": "YulTypedName",
                                              "src": "962:4:21",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "1032:27:21",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "result",
                                                "nodeType": "YulIdentifier",
                                                "src": "1046:6:21"
                                              },
                                              {
                                                "name": "mask",
                                                "nodeType": "YulIdentifier",
                                                "src": "1054:4:21"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1042:3:21"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1042:17:21"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "result",
                                              "nodeType": "YulIdentifier",
                                              "src": "1032:6:21"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "count",
                                          "nodeType": "YulIdentifier",
                                          "src": "921:5:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "928:2:21",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "918:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "918:13:21"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "915:2:21"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "off",
                                    "nodeType": "YulIdentifier",
                                    "src": "785:3:21"
                                  },
                                  {
                                    "name": "count",
                                    "nodeType": "YulIdentifier",
                                    "src": "790:5:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "782:2:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "782:14:21"
                              },
                              "nodeType": "YulIf",
                              "src": "779:2:21"
                            }
                          ]
                        },
                        "name": "readword",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "706:3:21",
                            "type": ""
                          },
                          {
                            "name": "off",
                            "nodeType": "YulTypedName",
                            "src": "711:3:21",
                            "type": ""
                          },
                          {
                            "name": "count",
                            "nodeType": "YulTypedName",
                            "src": "716:5:21",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "result",
                            "nodeType": "YulTypedName",
                            "src": "726:6:21",
                            "type": ""
                          }
                        ],
                        "src": "688:425:21"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1182:4229:21",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "scratch",
                                    "nodeType": "YulIdentifier",
                                    "src": "1207:7:21"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "1225:4:21"
                                      },
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1231:1:21"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "1234:3:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "readword",
                                      "nodeType": "YulIdentifier",
                                      "src": "1216:8:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1216:22:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1200:6:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1200:39:21"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1200:39:21"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "scratch",
                                        "nodeType": "YulIdentifier",
                                        "src": "1267:7:21"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1276:2:21",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1263:3:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1263:16:21"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "1290:4:21"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulIdentifier",
                                            "src": "1300:1:21"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1303:2:21",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1296:3:21"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1296:10:21"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "1308:3:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "readword",
                                      "nodeType": "YulIdentifier",
                                      "src": "1281:8:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1281:31:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1256:6:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1256:57:21"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1256:57:21"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "1454:44:21",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "scratch",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1468:7:21"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "len",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1481:3:21"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1486:1:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1477:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1477:11:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1464:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1464:25:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1491:4:21",
                                              "type": "",
                                              "value": "0x80"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore8",
                                            "nodeType": "YulIdentifier",
                                            "src": "1456:7:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1456:40:21"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "1456:40:21"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "1447:51:21",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1452:1:21",
                                    "type": "",
                                    "value": "1"
                                  }
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "1418:3:21"
                                      },
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1423:1:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1414:3:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1414:11:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1427:2:21",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1411:2:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1411:19:21"
                              },
                              "nodeType": "YulSwitch",
                              "src": "1404:94:21"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "1634:70:21",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "scratch",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1647:7:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "1656:2:21",
                                                  "type": "",
                                                  "value": "32"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1643:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1643:16:21"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "scratch",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1674:7:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "1683:2:21",
                                                          "type": "",
                                                          "value": "32"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1670:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "1670:16:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1664:5:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1664:23:21"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "len",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1693:3:21"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "1698:1:21",
                                                      "type": "",
                                                      "value": "8"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mul",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1689:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1689:11:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "or",
                                                "nodeType": "YulIdentifier",
                                                "src": "1661:2:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1661:40:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "1636:6:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1636:66:21"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "1636:66:21"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "1627:77:21",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1632:1:21",
                                    "type": "",
                                    "value": "1"
                                  }
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1589:1:21"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "totallen",
                                        "nodeType": "YulIdentifier",
                                        "src": "1596:8:21"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1606:2:21",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1592:3:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1592:17:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "1586:2:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1586:24:21"
                              },
                              "nodeType": "YulSwitch",
                              "src": "1579:125:21"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1827:461:21",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1849:157:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1879:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1892:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "1895:2:21",
                                                          "type": "",
                                                          "value": "12"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1888:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "1888:10:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1875:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1875:24:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "1869:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1869:31:21"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1912:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1925:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "1928:2:21",
                                                          "type": "",
                                                          "value": "32"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1921:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "1921:10:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1908:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1908:24:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "1902:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1902:31:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "xor",
                                            "nodeType": "YulIdentifier",
                                            "src": "1865:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1865:69:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1950:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1963:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "1966:2:21",
                                                          "type": "",
                                                          "value": "56"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1959:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "1959:10:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1946:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1946:24:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "1940:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1940:31:21"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1983:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1996:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "1999:2:21",
                                                          "type": "",
                                                          "value": "64"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1992:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "1992:10:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1979:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1979:24:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "1973:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1973:31:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "xor",
                                            "nodeType": "YulIdentifier",
                                            "src": "1936:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1936:69:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "xor",
                                        "nodeType": "YulIdentifier",
                                        "src": "1861:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1861:145:21"
                                    },
                                    "variables": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulTypedName",
                                        "src": "1853:4:21",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2027:193:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "temp",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2046:4:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2052:1:21",
                                                  "type": "",
                                                  "value": "2"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mul",
                                                "nodeType": "YulIdentifier",
                                                "src": "2042:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2042:12:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2056:66:21",
                                              "type": "",
                                              "value": "0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2038:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2038:85:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "temp",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2133:4:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2139:10:21",
                                                  "type": "",
                                                  "value": "0x80000000"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "div",
                                                "nodeType": "YulIdentifier",
                                                "src": "2129:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2129:21:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2152:66:21",
                                              "type": "",
                                              "value": "0x0000000100000001000000010000000100000001000000010000000100000001"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2125:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2125:94:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "2035:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2035:185:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "2027:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "scratch",
                                              "nodeType": "YulIdentifier",
                                              "src": "2252:7:21"
                                            },
                                            {
                                              "name": "j",
                                              "nodeType": "YulIdentifier",
                                              "src": "2261:1:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2248:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2248:15:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "2265:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2241:6:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2241:29:21"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2241:29:21"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "j",
                                    "nodeType": "YulIdentifier",
                                    "src": "1799:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1802:3:21",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1796:2:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1796:10:21"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1807:19:21",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1809:15:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "j",
                                          "nodeType": "YulIdentifier",
                                          "src": "1818:1:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1821:2:21",
                                          "type": "",
                                          "value": "12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1814:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1814:10:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "j",
                                        "nodeType": "YulIdentifier",
                                        "src": "1809:1:21"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1780:15:21",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1782:11:21",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "1791:2:21",
                                      "type": "",
                                      "value": "64"
                                    },
                                    "variables": [
                                      {
                                        "name": "j",
                                        "nodeType": "YulTypedName",
                                        "src": "1786:1:21",
                                        "type": ""
                                      }
                                    ]
                                  }
                                ]
                              },
                              "src": "1776:512:21"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2357:463:21",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2379:159:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2409:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2422:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "2425:2:21",
                                                          "type": "",
                                                          "value": "24"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2418:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "2418:10:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2405:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2405:24:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "2399:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2399:31:21"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2442:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2455:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "2458:2:21",
                                                          "type": "",
                                                          "value": "64"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2451:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "2451:10:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2438:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2438:24:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "2432:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2432:31:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "xor",
                                            "nodeType": "YulIdentifier",
                                            "src": "2395:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2395:69:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2480:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2493:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "2496:3:21",
                                                          "type": "",
                                                          "value": "112"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2489:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "2489:11:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2476:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2476:25:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "2470:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2470:32:21"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2514:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2527:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "2530:3:21",
                                                          "type": "",
                                                          "value": "128"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2523:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "2523:11:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2510:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2510:25:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "2504:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2504:32:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "xor",
                                            "nodeType": "YulIdentifier",
                                            "src": "2466:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2466:71:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "xor",
                                        "nodeType": "YulIdentifier",
                                        "src": "2391:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2391:147:21"
                                    },
                                    "variables": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulTypedName",
                                        "src": "2383:4:21",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2559:193:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "temp",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2578:4:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2584:1:21",
                                                  "type": "",
                                                  "value": "4"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mul",
                                                "nodeType": "YulIdentifier",
                                                "src": "2574:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2574:12:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2588:66:21",
                                              "type": "",
                                              "value": "0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2570:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2570:85:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "temp",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2665:4:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2671:10:21",
                                                  "type": "",
                                                  "value": "0x40000000"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "div",
                                                "nodeType": "YulIdentifier",
                                                "src": "2661:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2661:21:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2684:66:21",
                                              "type": "",
                                              "value": "0x0000000300000003000000030000000300000003000000030000000300000003"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2657:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2657:94:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "2567:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2567:185:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "2559:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "scratch",
                                              "nodeType": "YulIdentifier",
                                              "src": "2784:7:21"
                                            },
                                            {
                                              "name": "j",
                                              "nodeType": "YulIdentifier",
                                              "src": "2793:1:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2780:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2780:15:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "2797:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2773:6:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2773:29:21"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2773:29:21"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "j",
                                    "nodeType": "YulIdentifier",
                                    "src": "2329:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2332:3:21",
                                    "type": "",
                                    "value": "320"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2326:2:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2326:10:21"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2337:19:21",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2339:15:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "j",
                                          "nodeType": "YulIdentifier",
                                          "src": "2348:1:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2351:2:21",
                                          "type": "",
                                          "value": "24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2344:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2344:10:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "j",
                                        "nodeType": "YulIdentifier",
                                        "src": "2339:1:21"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2309:16:21",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2311:12:21",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2320:3:21",
                                      "type": "",
                                      "value": "128"
                                    },
                                    "variables": [
                                      {
                                        "name": "j",
                                        "nodeType": "YulTypedName",
                                        "src": "2315:1:21",
                                        "type": ""
                                      }
                                    ]
                                  }
                                ]
                              },
                              "src": "2305:515:21"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2838:10:21",
                              "value": {
                                "name": "h",
                                "nodeType": "YulIdentifier",
                                "src": "2847:1:21"
                              },
                              "variables": [
                                {
                                  "name": "x",
                                  "nodeType": "YulTypedName",
                                  "src": "2842:1:21",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2865:10:21",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2874:1:21",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "f",
                                  "nodeType": "YulTypedName",
                                  "src": "2869:1:21",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2892:10:21",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2901:1:21",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "k",
                                  "nodeType": "YulTypedName",
                                  "src": "2896:1:21",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2967:2341:21",
                                "statements": [
                                  {
                                    "cases": [
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3034:345:21",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3115:64:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3128:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3131:23:21",
                                                        "type": "",
                                                        "value": "0x100000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3124:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3124:31:21"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3161:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3164:13:21",
                                                        "type": "",
                                                        "value": "0x10000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3157:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3157:21:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3120:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3120:59:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3115:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3204:54:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3217:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3220:33:21",
                                                        "type": "",
                                                        "value": "0x1000000000000000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3213:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3213:41:21"
                                                  },
                                                  {
                                                    "name": "f",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3256:1:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "and",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3209:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3209:49:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3204:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3283:34:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3296:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3299:13:21",
                                                        "type": "",
                                                        "value": "0x10000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3292:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3292:21:21"
                                                  },
                                                  {
                                                    "name": "f",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3315:1:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3288:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3288:29:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3283:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3342:15:21",
                                              "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3347:10:21",
                                                "type": "",
                                                "value": "0x5A827999"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "k",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3342:1:21"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "nodeType": "YulCase",
                                        "src": "3027:352:21",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3032:1:21",
                                          "type": "",
                                          "value": "0"
                                        }
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3406:276:21",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3477:84:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3490:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3493:33:21",
                                                        "type": "",
                                                        "value": "0x1000000000000000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3486:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3486:41:21"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3533:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3536:23:21",
                                                        "type": "",
                                                        "value": "0x100000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3529:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3529:31:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3482:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3482:79:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3477:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3586:34:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3599:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3602:13:21",
                                                        "type": "",
                                                        "value": "0x10000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3595:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3595:21:21"
                                                  },
                                                  {
                                                    "name": "f",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3618:1:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3591:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3591:29:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3586:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3645:15:21",
                                              "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3650:10:21",
                                                "type": "",
                                                "value": "0x6ED9EBA1"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "k",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3645:1:21"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "nodeType": "YulCase",
                                        "src": "3400:282:21",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3405:1:21",
                                          "type": "",
                                          "value": "1"
                                        }
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3710:407:21",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3797:83:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3809:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3812:33:21",
                                                        "type": "",
                                                        "value": "0x1000000000000000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3805:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3805:41:21"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3852:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3855:23:21",
                                                        "type": "",
                                                        "value": "0x100000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3848:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3848:31:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "or",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3802:2:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3802:78:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3797:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3905:34:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3918:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3921:13:21",
                                                        "type": "",
                                                        "value": "0x10000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3914:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3914:21:21"
                                                  },
                                                  {
                                                    "name": "f",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3937:1:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "and",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3910:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3910:29:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3905:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3964:91:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "x",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3980:1:21"
                                                          },
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "3983:33:21",
                                                            "type": "",
                                                            "value": "0x1000000000000000000000000000000"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "div",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3976:3:21"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3976:41:21"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "x",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4023:1:21"
                                                          },
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4026:23:21",
                                                            "type": "",
                                                            "value": "0x100000000000000000000"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "div",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "4019:3:21"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4019:31:21"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3972:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3972:79:21"
                                                  },
                                                  {
                                                    "name": "f",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4053:1:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "or",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3969:2:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3969:86:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3964:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4080:15:21",
                                              "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4085:10:21",
                                                "type": "",
                                                "value": "0x8F1BBCDC"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "k",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4080:1:21"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "nodeType": "YulCase",
                                        "src": "3703:414:21",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3708:1:21",
                                          "type": "",
                                          "value": "2"
                                        }
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "4145:276:21",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4216:84:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4229:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4232:33:21",
                                                        "type": "",
                                                        "value": "0x1000000000000000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4225:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4225:41:21"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4272:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4275:23:21",
                                                        "type": "",
                                                        "value": "0x100000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4268:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4268:31:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4221:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4221:79:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4216:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4325:34:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4338:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4341:13:21",
                                                        "type": "",
                                                        "value": "0x10000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4334:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4334:21:21"
                                                  },
                                                  {
                                                    "name": "f",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4357:1:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4330:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4330:29:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4325:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4384:15:21",
                                              "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4389:10:21",
                                                "type": "",
                                                "value": "0xCA62C1D6"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "k",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4384:1:21"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "nodeType": "YulCase",
                                        "src": "4138:283:21",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4143:1:21",
                                          "type": "",
                                          "value": "3"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "j",
                                          "nodeType": "YulIdentifier",
                                          "src": "3000:1:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3003:2:21",
                                          "type": "",
                                          "value": "20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "div",
                                        "nodeType": "YulIdentifier",
                                        "src": "2996:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2996:10:21"
                                    },
                                    "nodeType": "YulSwitch",
                                    "src": "2989:1432:21"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4508:80:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "x",
                                              "nodeType": "YulIdentifier",
                                              "src": "4528:1:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4531:49:21",
                                              "type": "",
                                              "value": "0x80000000000000000000000000000000000000000000000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "4524:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4524:57:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4583:4:21",
                                          "type": "",
                                          "value": "0x1F"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "4520:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4520:68:21"
                                    },
                                    "variables": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulTypedName",
                                        "src": "4512:4:21",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4609:84:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "x",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4628:1:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "4631:41:21",
                                                  "type": "",
                                                  "value": "0x800000000000000000000000000000000000000"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "div",
                                                "nodeType": "YulIdentifier",
                                                "src": "4624:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4624:49:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4675:10:21",
                                              "type": "",
                                              "value": "0xFFFFFFE0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "4620:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4620:66:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "4688:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "4617:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4617:76:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "4609:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4714:20:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "f",
                                          "nodeType": "YulIdentifier",
                                          "src": "4726:1:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "4729:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4722:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4722:12:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "4714:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4755:37:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "x",
                                              "nodeType": "YulIdentifier",
                                              "src": "4771:1:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4774:10:21",
                                              "type": "",
                                              "value": "0xFFFFFFFF"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "4767:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4767:18:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "4787:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4763:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4763:29:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "4755:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4813:20:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "k",
                                          "nodeType": "YulIdentifier",
                                          "src": "4825:1:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "4828:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4821:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4821:12:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "4813:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4854:115:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4880:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "4893:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "4896:1:21",
                                                          "type": "",
                                                          "value": "4"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "mul",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4889:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "4889:9:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4876:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "4876:23:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "4870:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4870:30:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4902:59:21",
                                              "type": "",
                                              "value": "0x100000000000000000000000000000000000000000000000000000000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "4866:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4866:96:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "4964:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4862:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4862:107:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "4854:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4990:86:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "x",
                                              "nodeType": "YulIdentifier",
                                              "src": "5002:1:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5005:13:21",
                                              "type": "",
                                              "value": "0x10000000000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "4998:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4998:21:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "temp",
                                              "nodeType": "YulIdentifier",
                                              "src": "5025:4:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5031:43:21",
                                              "type": "",
                                              "value": "0x10000000000000000000000000000000000000000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "5021:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5021:54:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "4995:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4995:81:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "4990:1:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5097:193:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "x",
                                              "nodeType": "YulIdentifier",
                                              "src": "5109:1:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5112:50:21",
                                              "type": "",
                                              "value": "0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "5105:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5105:58:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "x",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "5180:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "5183:15:21",
                                                          "type": "",
                                                          "value": "0x4000000000000"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "div",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5176:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "5176:23:21"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "5201:10:21",
                                                      "type": "",
                                                      "value": "0xC0000000"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5172:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "5172:40:21"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "x",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "5222:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "5225:23:21",
                                                          "type": "",
                                                          "value": "0x400000000000000000000"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "div",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5218:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "5218:31:21"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "5251:10:21",
                                                      "type": "",
                                                      "value": "0x3FFFFFFF"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5214:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "5214:48:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "or",
                                                "nodeType": "YulIdentifier",
                                                "src": "5169:2:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5169:94:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5265:23:21",
                                              "type": "",
                                              "value": "0x100000000000000000000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "5165:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5165:124:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "5102:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5102:188:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "5097:1:21"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "j",
                                    "nodeType": "YulIdentifier",
                                    "src": "2941:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2944:2:21",
                                    "type": "",
                                    "value": "80"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2938:2:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2938:9:21"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2948:18:21",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2950:14:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "j",
                                          "nodeType": "YulIdentifier",
                                          "src": "2959:1:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2962:1:21",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2955:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2955:9:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "j",
                                        "nodeType": "YulIdentifier",
                                        "src": "2950:1:21"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2923:14:21",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2925:10:21",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2934:1:21",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "j",
                                        "nodeType": "YulTypedName",
                                        "src": "2929:1:21",
                                        "type": ""
                                      }
                                    ]
                                  }
                                ]
                              },
                              "src": "2919:2389:21"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5326:71:21",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "h",
                                        "nodeType": "YulIdentifier",
                                        "src": "5339:1:21"
                                      },
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "5342:1:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5335:3:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5335:9:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5346:50:21",
                                    "type": "",
                                    "value": "0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "5331:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5331:66:21"
                              },
                              "variableNames": [
                                {
                                  "name": "h",
                                  "nodeType": "YulIdentifier",
                                  "src": "5326:1:21"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "1149:1:21"
                            },
                            {
                              "name": "totallen",
                              "nodeType": "YulIdentifier",
                              "src": "1152:8:21"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "1146:2:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1146:15:21"
                        },
                        "nodeType": "YulForLoop",
                        "post": {
                          "nodeType": "YulBlock",
                          "src": "1162:19:21",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1164:15:21",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1173:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1176:2:21",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1169:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1169:10:21"
                              },
                              "variableNames": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "1164:1:21"
                                }
                              ]
                            }
                          ]
                        },
                        "pre": {
                          "nodeType": "YulBlock",
                          "src": "1131:14:21",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1133:10:21",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1142:1:21",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1137:1:21",
                                  "type": ""
                                }
                              ]
                            }
                          ]
                        },
                        "src": "1127:4284:21"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5424:295:21",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "h",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5455:1:21"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "5458:11:21",
                                                      "type": "",
                                                      "value": "0x100000000"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "div",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5451:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "5451:19:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5472:42:21",
                                                  "type": "",
                                                  "value": "0xFFFFFFFF00000000000000000000000000000000"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "5447:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5447:68:21"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "h",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5525:1:21"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "5528:9:21",
                                                      "type": "",
                                                      "value": "0x1000000"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "div",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5521:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "5521:17:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5540:34:21",
                                                  "type": "",
                                                  "value": "0xFFFFFFFF000000000000000000000000"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "5517:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5517:58:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "5444:2:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5444:132:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "h",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5586:1:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5589:7:21",
                                                  "type": "",
                                                  "value": "0x10000"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "div",
                                                "nodeType": "YulIdentifier",
                                                "src": "5582:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5582:15:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5599:26:21",
                                              "type": "",
                                              "value": "0xFFFFFFFF0000000000000000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "5578:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5578:48:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "5441:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5441:186:21"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "h",
                                              "nodeType": "YulIdentifier",
                                              "src": "5637:1:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5640:5:21",
                                              "type": "",
                                              "value": "0x100"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "5633:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5633:13:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5648:18:21",
                                          "type": "",
                                          "value": "0xFFFFFFFF00000000"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "5629:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5629:38:21"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "or",
                                    "nodeType": "YulIdentifier",
                                    "src": "5438:2:21"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "5438:230:21"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "h",
                                      "nodeType": "YulIdentifier",
                                      "src": "5674:1:21"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "5677:10:21",
                                      "type": "",
                                      "value": "0xFFFFFFFF"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "and",
                                    "nodeType": "YulIdentifier",
                                    "src": "5670:3:21"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "5670:18:21"
                                }
                              ],
                              "functionName": {
                                "name": "or",
                                "nodeType": "YulIdentifier",
                                "src": "5435:2:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5435:254:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5691:27:21",
                              "type": "",
                              "value": "0x1000000000000000000000000"
                            }
                          ],
                          "functionName": {
                            "name": "mul",
                            "nodeType": "YulIdentifier",
                            "src": "5431:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5431:288:21"
                        },
                        "variableNames": [
                          {
                            "name": "ret",
                            "nodeType": "YulIdentifier",
                            "src": "5424:3:21"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 6440,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1225:4:21",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6440,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1290:4:21",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6440,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "344:4:21",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6440,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "362:4:21",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6440,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "374:4:21",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6443,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5424:3:21",
                      "valueSize": 1
                    }
                  ],
                  "id": 6445,
                  "nodeType": "InlineAssembly",
                  "src": "152:5577:21"
                }
              ]
            },
            "id": 6447,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sha1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6441,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6440,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 6447,
                  "src": "88:17:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6439,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "88:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "87:19:21"
            },
            "returnParameters": {
              "id": 6444,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6443,
                  "mutability": "mutable",
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 6447,
                  "src": "129:11:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes20",
                    "typeString": "bytes20"
                  },
                  "typeName": {
                    "id": 6442,
                    "name": "bytes20",
                    "nodeType": "ElementaryTypeName",
                    "src": "129:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes20",
                      "typeString": "bytes20"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "128:13:21"
            },
            "scope": 6448,
            "src": "74:5661:21",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 6449,
        "src": "26:5711:21"
      }
    ],
    "src": "0:5738:21"
  },
  "legacyAST": {
    "absolutePath": "@ensdomains/solsha1/contracts/SHA1.sol",
    "exportedSymbols": {
      "SHA1": [
        6448
      ]
    },
    "id": 6449,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6434,
        "literals": [
          "solidity",
          ">",
          "0.4",
          ".18"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:21"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "id": 6448,
        "linearizedBaseContracts": [
          6448
        ],
        "name": "SHA1",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "id": 6438,
            "name": "Debug",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6437,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6436,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 6438,
                  "src": "57:9:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6435,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "57:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "56:11:21"
            },
            "src": "45:23:21"
          },
          {
            "body": {
              "id": 6446,
              "nodeType": "Block",
              "src": "142:5593:21",
              "statements": [
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "161:5568:21",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "218:26:21",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "239:4:21",
                              "type": "",
                              "value": "0x40"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "233:5:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "233:11:21"
                        },
                        "variables": [
                          {
                            "name": "scratch",
                            "nodeType": "YulTypedName",
                            "src": "222:7:21",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "327:22:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "344:4:21"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "338:5:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "338:11:21"
                        },
                        "variables": [
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "331:3:21",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "362:21:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "374:4:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "380:2:21",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "370:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "370:13:21"
                        },
                        "variableNames": [
                          {
                            "name": "data",
                            "nodeType": "YulIdentifier",
                            "src": "362:4:21"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "442:61:21",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nodeType": "YulIdentifier",
                                      "src": "470:3:21"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "475:1:21",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "466:3:21"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "466:11:21"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "479:18:21",
                                  "type": "",
                                  "value": "0xFFFFFFFFFFFFFFC0"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "462:3:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "462:36:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "500:2:21",
                              "type": "",
                              "value": "64"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "458:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "458:45:21"
                        },
                        "variables": [
                          {
                            "name": "totallen",
                            "nodeType": "YulTypedName",
                            "src": "446:8:21",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "cases": [
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "568:33:21",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "570:29:21",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "totallen",
                                        "nodeType": "YulIdentifier",
                                        "src": "586:8:21"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "596:2:21",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "582:3:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "582:17:21"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "totallen",
                                      "nodeType": "YulIdentifier",
                                      "src": "570:8:21"
                                    }
                                  ]
                                }
                              ]
                            },
                            "nodeType": "YulCase",
                            "src": "561:40:21",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "566:1:21",
                              "type": "",
                              "value": "1"
                            }
                          }
                        ],
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "totallen",
                                  "nodeType": "YulIdentifier",
                                  "src": "530:8:21"
                                },
                                {
                                  "name": "len",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:3:21"
                                }
                              ],
                              "functionName": {
                                "name": "sub",
                                "nodeType": "YulIdentifier",
                                "src": "526:3:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "526:18:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "546:1:21",
                              "type": "",
                              "value": "9"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "523:2:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "523:25:21"
                        },
                        "nodeType": "YulSwitch",
                        "src": "516:85:21"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "615:59:21",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "624:50:21",
                          "type": "",
                          "value": "0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0"
                        },
                        "variables": [
                          {
                            "name": "h",
                            "nodeType": "YulTypedName",
                            "src": "619:1:21",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "733:380:21",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "751:11:21",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "761:1:21",
                                "type": "",
                                "value": "0"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nodeType": "YulIdentifier",
                                  "src": "751:6:21"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "797:302:21",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "819:30:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "839:3:21"
                                            },
                                            {
                                              "name": "off",
                                              "nodeType": "YulIdentifier",
                                              "src": "844:3:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "835:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "835:13:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "829:5:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "829:20:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nodeType": "YulIdentifier",
                                        "src": "819:6:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "870:24:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "count",
                                          "nodeType": "YulIdentifier",
                                          "src": "883:5:21"
                                        },
                                        {
                                          "name": "off",
                                          "nodeType": "YulIdentifier",
                                          "src": "890:3:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "sub",
                                        "nodeType": "YulIdentifier",
                                        "src": "879:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "879:15:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "count",
                                        "nodeType": "YulIdentifier",
                                        "src": "870:5:21"
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "932:149:21",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "958:49:21",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "982:3:21",
                                                        "type": "",
                                                        "value": "256"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "991:2:21",
                                                            "type": "",
                                                            "value": "32"
                                                          },
                                                          {
                                                            "name": "count",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "995:5:21"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "sub",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "987:3:21"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "987:14:21"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "exp",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "978:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "978:24:21"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1004:1:21",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sub",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "974:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "974:32:21"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "970:3:21"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "970:37:21"
                                          },
                                          "variables": [
                                            {
                                              "name": "mask",
                                              "nodeType": "YulTypedName",
                                              "src": "962:4:21",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "1032:27:21",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "result",
                                                "nodeType": "YulIdentifier",
                                                "src": "1046:6:21"
                                              },
                                              {
                                                "name": "mask",
                                                "nodeType": "YulIdentifier",
                                                "src": "1054:4:21"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1042:3:21"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1042:17:21"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "result",
                                              "nodeType": "YulIdentifier",
                                              "src": "1032:6:21"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "count",
                                          "nodeType": "YulIdentifier",
                                          "src": "921:5:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "928:2:21",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "918:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "918:13:21"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "915:2:21"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "off",
                                    "nodeType": "YulIdentifier",
                                    "src": "785:3:21"
                                  },
                                  {
                                    "name": "count",
                                    "nodeType": "YulIdentifier",
                                    "src": "790:5:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "782:2:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "782:14:21"
                              },
                              "nodeType": "YulIf",
                              "src": "779:2:21"
                            }
                          ]
                        },
                        "name": "readword",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "706:3:21",
                            "type": ""
                          },
                          {
                            "name": "off",
                            "nodeType": "YulTypedName",
                            "src": "711:3:21",
                            "type": ""
                          },
                          {
                            "name": "count",
                            "nodeType": "YulTypedName",
                            "src": "716:5:21",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "result",
                            "nodeType": "YulTypedName",
                            "src": "726:6:21",
                            "type": ""
                          }
                        ],
                        "src": "688:425:21"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1182:4229:21",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "scratch",
                                    "nodeType": "YulIdentifier",
                                    "src": "1207:7:21"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "1225:4:21"
                                      },
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1231:1:21"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "1234:3:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "readword",
                                      "nodeType": "YulIdentifier",
                                      "src": "1216:8:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1216:22:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1200:6:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1200:39:21"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1200:39:21"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "scratch",
                                        "nodeType": "YulIdentifier",
                                        "src": "1267:7:21"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1276:2:21",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1263:3:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1263:16:21"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "1290:4:21"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulIdentifier",
                                            "src": "1300:1:21"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1303:2:21",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1296:3:21"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1296:10:21"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "1308:3:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "readword",
                                      "nodeType": "YulIdentifier",
                                      "src": "1281:8:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1281:31:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1256:6:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1256:57:21"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1256:57:21"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "1454:44:21",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "scratch",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1468:7:21"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "len",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1481:3:21"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1486:1:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1477:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1477:11:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1464:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1464:25:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1491:4:21",
                                              "type": "",
                                              "value": "0x80"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore8",
                                            "nodeType": "YulIdentifier",
                                            "src": "1456:7:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1456:40:21"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "1456:40:21"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "1447:51:21",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1452:1:21",
                                    "type": "",
                                    "value": "1"
                                  }
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "1418:3:21"
                                      },
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1423:1:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1414:3:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1414:11:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1427:2:21",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1411:2:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1411:19:21"
                              },
                              "nodeType": "YulSwitch",
                              "src": "1404:94:21"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "1634:70:21",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "scratch",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1647:7:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "1656:2:21",
                                                  "type": "",
                                                  "value": "32"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1643:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1643:16:21"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "scratch",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1674:7:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "1683:2:21",
                                                          "type": "",
                                                          "value": "32"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1670:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "1670:16:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1664:5:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1664:23:21"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "len",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1693:3:21"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "1698:1:21",
                                                      "type": "",
                                                      "value": "8"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mul",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1689:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1689:11:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "or",
                                                "nodeType": "YulIdentifier",
                                                "src": "1661:2:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1661:40:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "1636:6:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1636:66:21"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "1636:66:21"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "1627:77:21",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1632:1:21",
                                    "type": "",
                                    "value": "1"
                                  }
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1589:1:21"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "totallen",
                                        "nodeType": "YulIdentifier",
                                        "src": "1596:8:21"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1606:2:21",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1592:3:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1592:17:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "1586:2:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1586:24:21"
                              },
                              "nodeType": "YulSwitch",
                              "src": "1579:125:21"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1827:461:21",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1849:157:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1879:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1892:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "1895:2:21",
                                                          "type": "",
                                                          "value": "12"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1888:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "1888:10:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1875:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1875:24:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "1869:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1869:31:21"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1912:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1925:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "1928:2:21",
                                                          "type": "",
                                                          "value": "32"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1921:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "1921:10:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1908:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1908:24:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "1902:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1902:31:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "xor",
                                            "nodeType": "YulIdentifier",
                                            "src": "1865:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1865:69:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1950:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1963:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "1966:2:21",
                                                          "type": "",
                                                          "value": "56"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1959:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "1959:10:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1946:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1946:24:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "1940:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1940:31:21"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1983:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1996:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "1999:2:21",
                                                          "type": "",
                                                          "value": "64"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1992:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "1992:10:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1979:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1979:24:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "1973:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1973:31:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "xor",
                                            "nodeType": "YulIdentifier",
                                            "src": "1936:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1936:69:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "xor",
                                        "nodeType": "YulIdentifier",
                                        "src": "1861:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1861:145:21"
                                    },
                                    "variables": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulTypedName",
                                        "src": "1853:4:21",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2027:193:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "temp",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2046:4:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2052:1:21",
                                                  "type": "",
                                                  "value": "2"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mul",
                                                "nodeType": "YulIdentifier",
                                                "src": "2042:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2042:12:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2056:66:21",
                                              "type": "",
                                              "value": "0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2038:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2038:85:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "temp",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2133:4:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2139:10:21",
                                                  "type": "",
                                                  "value": "0x80000000"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "div",
                                                "nodeType": "YulIdentifier",
                                                "src": "2129:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2129:21:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2152:66:21",
                                              "type": "",
                                              "value": "0x0000000100000001000000010000000100000001000000010000000100000001"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2125:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2125:94:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "2035:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2035:185:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "2027:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "scratch",
                                              "nodeType": "YulIdentifier",
                                              "src": "2252:7:21"
                                            },
                                            {
                                              "name": "j",
                                              "nodeType": "YulIdentifier",
                                              "src": "2261:1:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2248:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2248:15:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "2265:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2241:6:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2241:29:21"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2241:29:21"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "j",
                                    "nodeType": "YulIdentifier",
                                    "src": "1799:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1802:3:21",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1796:2:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1796:10:21"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1807:19:21",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1809:15:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "j",
                                          "nodeType": "YulIdentifier",
                                          "src": "1818:1:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1821:2:21",
                                          "type": "",
                                          "value": "12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1814:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1814:10:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "j",
                                        "nodeType": "YulIdentifier",
                                        "src": "1809:1:21"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1780:15:21",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1782:11:21",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "1791:2:21",
                                      "type": "",
                                      "value": "64"
                                    },
                                    "variables": [
                                      {
                                        "name": "j",
                                        "nodeType": "YulTypedName",
                                        "src": "1786:1:21",
                                        "type": ""
                                      }
                                    ]
                                  }
                                ]
                              },
                              "src": "1776:512:21"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2357:463:21",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2379:159:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2409:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2422:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "2425:2:21",
                                                          "type": "",
                                                          "value": "24"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2418:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "2418:10:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2405:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2405:24:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "2399:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2399:31:21"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2442:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2455:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "2458:2:21",
                                                          "type": "",
                                                          "value": "64"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2451:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "2451:10:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2438:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2438:24:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "2432:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2432:31:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "xor",
                                            "nodeType": "YulIdentifier",
                                            "src": "2395:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2395:69:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2480:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2493:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "2496:3:21",
                                                          "type": "",
                                                          "value": "112"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2489:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "2489:11:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2476:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2476:25:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "2470:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2470:32:21"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2514:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2527:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "2530:3:21",
                                                          "type": "",
                                                          "value": "128"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2523:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "2523:11:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2510:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2510:25:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "2504:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2504:32:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "xor",
                                            "nodeType": "YulIdentifier",
                                            "src": "2466:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2466:71:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "xor",
                                        "nodeType": "YulIdentifier",
                                        "src": "2391:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2391:147:21"
                                    },
                                    "variables": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulTypedName",
                                        "src": "2383:4:21",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2559:193:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "temp",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2578:4:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2584:1:21",
                                                  "type": "",
                                                  "value": "4"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mul",
                                                "nodeType": "YulIdentifier",
                                                "src": "2574:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2574:12:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2588:66:21",
                                              "type": "",
                                              "value": "0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2570:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2570:85:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "temp",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2665:4:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2671:10:21",
                                                  "type": "",
                                                  "value": "0x40000000"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "div",
                                                "nodeType": "YulIdentifier",
                                                "src": "2661:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2661:21:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2684:66:21",
                                              "type": "",
                                              "value": "0x0000000300000003000000030000000300000003000000030000000300000003"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2657:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2657:94:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "2567:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2567:185:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "2559:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "scratch",
                                              "nodeType": "YulIdentifier",
                                              "src": "2784:7:21"
                                            },
                                            {
                                              "name": "j",
                                              "nodeType": "YulIdentifier",
                                              "src": "2793:1:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2780:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2780:15:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "2797:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2773:6:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2773:29:21"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2773:29:21"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "j",
                                    "nodeType": "YulIdentifier",
                                    "src": "2329:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2332:3:21",
                                    "type": "",
                                    "value": "320"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2326:2:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2326:10:21"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2337:19:21",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2339:15:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "j",
                                          "nodeType": "YulIdentifier",
                                          "src": "2348:1:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2351:2:21",
                                          "type": "",
                                          "value": "24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2344:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2344:10:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "j",
                                        "nodeType": "YulIdentifier",
                                        "src": "2339:1:21"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2309:16:21",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2311:12:21",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2320:3:21",
                                      "type": "",
                                      "value": "128"
                                    },
                                    "variables": [
                                      {
                                        "name": "j",
                                        "nodeType": "YulTypedName",
                                        "src": "2315:1:21",
                                        "type": ""
                                      }
                                    ]
                                  }
                                ]
                              },
                              "src": "2305:515:21"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2838:10:21",
                              "value": {
                                "name": "h",
                                "nodeType": "YulIdentifier",
                                "src": "2847:1:21"
                              },
                              "variables": [
                                {
                                  "name": "x",
                                  "nodeType": "YulTypedName",
                                  "src": "2842:1:21",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2865:10:21",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2874:1:21",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "f",
                                  "nodeType": "YulTypedName",
                                  "src": "2869:1:21",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2892:10:21",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2901:1:21",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "k",
                                  "nodeType": "YulTypedName",
                                  "src": "2896:1:21",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2967:2341:21",
                                "statements": [
                                  {
                                    "cases": [
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3034:345:21",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3115:64:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3128:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3131:23:21",
                                                        "type": "",
                                                        "value": "0x100000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3124:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3124:31:21"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3161:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3164:13:21",
                                                        "type": "",
                                                        "value": "0x10000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3157:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3157:21:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3120:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3120:59:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3115:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3204:54:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3217:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3220:33:21",
                                                        "type": "",
                                                        "value": "0x1000000000000000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3213:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3213:41:21"
                                                  },
                                                  {
                                                    "name": "f",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3256:1:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "and",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3209:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3209:49:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3204:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3283:34:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3296:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3299:13:21",
                                                        "type": "",
                                                        "value": "0x10000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3292:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3292:21:21"
                                                  },
                                                  {
                                                    "name": "f",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3315:1:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3288:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3288:29:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3283:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3342:15:21",
                                              "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3347:10:21",
                                                "type": "",
                                                "value": "0x5A827999"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "k",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3342:1:21"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "nodeType": "YulCase",
                                        "src": "3027:352:21",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3032:1:21",
                                          "type": "",
                                          "value": "0"
                                        }
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3406:276:21",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3477:84:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3490:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3493:33:21",
                                                        "type": "",
                                                        "value": "0x1000000000000000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3486:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3486:41:21"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3533:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3536:23:21",
                                                        "type": "",
                                                        "value": "0x100000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3529:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3529:31:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3482:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3482:79:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3477:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3586:34:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3599:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3602:13:21",
                                                        "type": "",
                                                        "value": "0x10000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3595:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3595:21:21"
                                                  },
                                                  {
                                                    "name": "f",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3618:1:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3591:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3591:29:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3586:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3645:15:21",
                                              "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3650:10:21",
                                                "type": "",
                                                "value": "0x6ED9EBA1"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "k",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3645:1:21"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "nodeType": "YulCase",
                                        "src": "3400:282:21",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3405:1:21",
                                          "type": "",
                                          "value": "1"
                                        }
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3710:407:21",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3797:83:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3809:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3812:33:21",
                                                        "type": "",
                                                        "value": "0x1000000000000000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3805:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3805:41:21"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3852:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3855:23:21",
                                                        "type": "",
                                                        "value": "0x100000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3848:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3848:31:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "or",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3802:2:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3802:78:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3797:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3905:34:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3918:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3921:13:21",
                                                        "type": "",
                                                        "value": "0x10000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3914:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3914:21:21"
                                                  },
                                                  {
                                                    "name": "f",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3937:1:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "and",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3910:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3910:29:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3905:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3964:91:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "x",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3980:1:21"
                                                          },
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "3983:33:21",
                                                            "type": "",
                                                            "value": "0x1000000000000000000000000000000"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "div",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3976:3:21"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3976:41:21"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "x",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4023:1:21"
                                                          },
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4026:23:21",
                                                            "type": "",
                                                            "value": "0x100000000000000000000"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "div",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "4019:3:21"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4019:31:21"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3972:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3972:79:21"
                                                  },
                                                  {
                                                    "name": "f",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4053:1:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "or",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3969:2:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3969:86:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3964:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4080:15:21",
                                              "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4085:10:21",
                                                "type": "",
                                                "value": "0x8F1BBCDC"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "k",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4080:1:21"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "nodeType": "YulCase",
                                        "src": "3703:414:21",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3708:1:21",
                                          "type": "",
                                          "value": "2"
                                        }
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "4145:276:21",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4216:84:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4229:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4232:33:21",
                                                        "type": "",
                                                        "value": "0x1000000000000000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4225:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4225:41:21"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4272:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4275:23:21",
                                                        "type": "",
                                                        "value": "0x100000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4268:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4268:31:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4221:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4221:79:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4216:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4325:34:21",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4338:1:21"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4341:13:21",
                                                        "type": "",
                                                        "value": "0x10000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4334:3:21"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4334:21:21"
                                                  },
                                                  {
                                                    "name": "f",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4357:1:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4330:3:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4330:29:21"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "f",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4325:1:21"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4384:15:21",
                                              "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4389:10:21",
                                                "type": "",
                                                "value": "0xCA62C1D6"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "k",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4384:1:21"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "nodeType": "YulCase",
                                        "src": "4138:283:21",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4143:1:21",
                                          "type": "",
                                          "value": "3"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "j",
                                          "nodeType": "YulIdentifier",
                                          "src": "3000:1:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3003:2:21",
                                          "type": "",
                                          "value": "20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "div",
                                        "nodeType": "YulIdentifier",
                                        "src": "2996:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2996:10:21"
                                    },
                                    "nodeType": "YulSwitch",
                                    "src": "2989:1432:21"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4508:80:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "x",
                                              "nodeType": "YulIdentifier",
                                              "src": "4528:1:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4531:49:21",
                                              "type": "",
                                              "value": "0x80000000000000000000000000000000000000000000000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "4524:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4524:57:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4583:4:21",
                                          "type": "",
                                          "value": "0x1F"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "4520:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4520:68:21"
                                    },
                                    "variables": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulTypedName",
                                        "src": "4512:4:21",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4609:84:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "x",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4628:1:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "4631:41:21",
                                                  "type": "",
                                                  "value": "0x800000000000000000000000000000000000000"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "div",
                                                "nodeType": "YulIdentifier",
                                                "src": "4624:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4624:49:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4675:10:21",
                                              "type": "",
                                              "value": "0xFFFFFFE0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "4620:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4620:66:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "4688:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "4617:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4617:76:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "4609:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4714:20:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "f",
                                          "nodeType": "YulIdentifier",
                                          "src": "4726:1:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "4729:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4722:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4722:12:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "4714:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4755:37:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "x",
                                              "nodeType": "YulIdentifier",
                                              "src": "4771:1:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4774:10:21",
                                              "type": "",
                                              "value": "0xFFFFFFFF"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "4767:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4767:18:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "4787:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4763:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4763:29:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "4755:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4813:20:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "k",
                                          "nodeType": "YulIdentifier",
                                          "src": "4825:1:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "4828:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4821:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4821:12:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "4813:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4854:115:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "scratch",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4880:7:21"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "j",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "4893:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "4896:1:21",
                                                          "type": "",
                                                          "value": "4"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "mul",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4889:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "4889:9:21"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4876:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "4876:23:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "4870:5:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4870:30:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4902:59:21",
                                              "type": "",
                                              "value": "0x100000000000000000000000000000000000000000000000000000000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "4866:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4866:96:21"
                                        },
                                        {
                                          "name": "temp",
                                          "nodeType": "YulIdentifier",
                                          "src": "4964:4:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4862:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4862:107:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "temp",
                                        "nodeType": "YulIdentifier",
                                        "src": "4854:4:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4990:86:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "x",
                                              "nodeType": "YulIdentifier",
                                              "src": "5002:1:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5005:13:21",
                                              "type": "",
                                              "value": "0x10000000000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "4998:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4998:21:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "temp",
                                              "nodeType": "YulIdentifier",
                                              "src": "5025:4:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5031:43:21",
                                              "type": "",
                                              "value": "0x10000000000000000000000000000000000000000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "5021:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5021:54:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "4995:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4995:81:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "4990:1:21"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5097:193:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "x",
                                              "nodeType": "YulIdentifier",
                                              "src": "5109:1:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5112:50:21",
                                              "type": "",
                                              "value": "0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "5105:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5105:58:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "x",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "5180:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "5183:15:21",
                                                          "type": "",
                                                          "value": "0x4000000000000"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "div",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5176:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "5176:23:21"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "5201:10:21",
                                                      "type": "",
                                                      "value": "0xC0000000"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5172:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "5172:40:21"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "x",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "5222:1:21"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "5225:23:21",
                                                          "type": "",
                                                          "value": "0x400000000000000000000"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "div",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5218:3:21"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "5218:31:21"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "5251:10:21",
                                                      "type": "",
                                                      "value": "0x3FFFFFFF"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5214:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "5214:48:21"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "or",
                                                "nodeType": "YulIdentifier",
                                                "src": "5169:2:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5169:94:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5265:23:21",
                                              "type": "",
                                              "value": "0x100000000000000000000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "5165:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5165:124:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "5102:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5102:188:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "5097:1:21"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "j",
                                    "nodeType": "YulIdentifier",
                                    "src": "2941:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2944:2:21",
                                    "type": "",
                                    "value": "80"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2938:2:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2938:9:21"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2948:18:21",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2950:14:21",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "j",
                                          "nodeType": "YulIdentifier",
                                          "src": "2959:1:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2962:1:21",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2955:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2955:9:21"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "j",
                                        "nodeType": "YulIdentifier",
                                        "src": "2950:1:21"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2923:14:21",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2925:10:21",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2934:1:21",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "j",
                                        "nodeType": "YulTypedName",
                                        "src": "2929:1:21",
                                        "type": ""
                                      }
                                    ]
                                  }
                                ]
                              },
                              "src": "2919:2389:21"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5326:71:21",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "h",
                                        "nodeType": "YulIdentifier",
                                        "src": "5339:1:21"
                                      },
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "5342:1:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5335:3:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5335:9:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5346:50:21",
                                    "type": "",
                                    "value": "0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "5331:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5331:66:21"
                              },
                              "variableNames": [
                                {
                                  "name": "h",
                                  "nodeType": "YulIdentifier",
                                  "src": "5326:1:21"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "1149:1:21"
                            },
                            {
                              "name": "totallen",
                              "nodeType": "YulIdentifier",
                              "src": "1152:8:21"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "1146:2:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1146:15:21"
                        },
                        "nodeType": "YulForLoop",
                        "post": {
                          "nodeType": "YulBlock",
                          "src": "1162:19:21",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1164:15:21",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1173:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1176:2:21",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1169:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1169:10:21"
                              },
                              "variableNames": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "1164:1:21"
                                }
                              ]
                            }
                          ]
                        },
                        "pre": {
                          "nodeType": "YulBlock",
                          "src": "1131:14:21",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1133:10:21",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1142:1:21",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1137:1:21",
                                  "type": ""
                                }
                              ]
                            }
                          ]
                        },
                        "src": "1127:4284:21"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5424:295:21",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "h",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5455:1:21"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "5458:11:21",
                                                      "type": "",
                                                      "value": "0x100000000"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "div",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5451:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "5451:19:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5472:42:21",
                                                  "type": "",
                                                  "value": "0xFFFFFFFF00000000000000000000000000000000"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "5447:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5447:68:21"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "h",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5525:1:21"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "5528:9:21",
                                                      "type": "",
                                                      "value": "0x1000000"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "div",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5521:3:21"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "5521:17:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5540:34:21",
                                                  "type": "",
                                                  "value": "0xFFFFFFFF000000000000000000000000"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "5517:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5517:58:21"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "5444:2:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5444:132:21"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "h",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5586:1:21"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5589:7:21",
                                                  "type": "",
                                                  "value": "0x10000"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "div",
                                                "nodeType": "YulIdentifier",
                                                "src": "5582:3:21"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5582:15:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5599:26:21",
                                              "type": "",
                                              "value": "0xFFFFFFFF0000000000000000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "5578:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5578:48:21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "5441:2:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5441:186:21"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "h",
                                              "nodeType": "YulIdentifier",
                                              "src": "5637:1:21"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5640:5:21",
                                              "type": "",
                                              "value": "0x100"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "5633:3:21"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5633:13:21"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5648:18:21",
                                          "type": "",
                                          "value": "0xFFFFFFFF00000000"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "5629:3:21"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5629:38:21"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "or",
                                    "nodeType": "YulIdentifier",
                                    "src": "5438:2:21"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "5438:230:21"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "h",
                                      "nodeType": "YulIdentifier",
                                      "src": "5674:1:21"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "5677:10:21",
                                      "type": "",
                                      "value": "0xFFFFFFFF"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "and",
                                    "nodeType": "YulIdentifier",
                                    "src": "5670:3:21"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "5670:18:21"
                                }
                              ],
                              "functionName": {
                                "name": "or",
                                "nodeType": "YulIdentifier",
                                "src": "5435:2:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5435:254:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5691:27:21",
                              "type": "",
                              "value": "0x1000000000000000000000000"
                            }
                          ],
                          "functionName": {
                            "name": "mul",
                            "nodeType": "YulIdentifier",
                            "src": "5431:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5431:288:21"
                        },
                        "variableNames": [
                          {
                            "name": "ret",
                            "nodeType": "YulIdentifier",
                            "src": "5424:3:21"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 6440,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1225:4:21",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6440,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1290:4:21",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6440,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "344:4:21",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6440,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "362:4:21",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6440,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "374:4:21",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6443,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5424:3:21",
                      "valueSize": 1
                    }
                  ],
                  "id": 6445,
                  "nodeType": "InlineAssembly",
                  "src": "152:5577:21"
                }
              ]
            },
            "id": 6447,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sha1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6441,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6440,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 6447,
                  "src": "88:17:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6439,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "88:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "87:19:21"
            },
            "returnParameters": {
              "id": 6444,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6443,
                  "mutability": "mutable",
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 6447,
                  "src": "129:11:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes20",
                    "typeString": "bytes20"
                  },
                  "typeName": {
                    "id": 6442,
                    "name": "bytes20",
                    "nodeType": "ElementaryTypeName",
                    "src": "129:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes20",
                      "typeString": "bytes20"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "128:13:21"
            },
            "scope": 6448,
            "src": "74:5661:21",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 6449,
        "src": "26:5711:21"
      }
    ],
    "src": "0:5738:21"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.4+commit.3f05b770.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.2",
  "updatedAt": "2021-01-20T20:53:41.286Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}