From 5ddc2868042ec820124175696e6ac9cf1115b2dd Mon Sep 17 00:00:00 2001 From: Guillaume Claret Date: Fri, 30 Aug 2024 16:09:36 +0200 Subject: [PATCH] Begining of experiment to verify mulmuladdX_fullgen_b4 --- CoqOfSolidity/CoqOfSolidity.v | 2 + CoqOfSolidity/SCL_mulmuladdX_fullgen_b4.json | 13239 ++++++++++++++++ CoqOfSolidity/SCL_mulmuladdX_fullgen_b4.v | 6267 ++++++++ .../SCL_mulmuladdX_fullgen_b4_shallow.v | 384 + .../semanticTests/various/erc20/prepare.py | 44 +- 5 files changed, 19929 insertions(+), 7 deletions(-) create mode 100644 CoqOfSolidity/SCL_mulmuladdX_fullgen_b4.json create mode 100644 CoqOfSolidity/SCL_mulmuladdX_fullgen_b4.v create mode 100644 CoqOfSolidity/SCL_mulmuladdX_fullgen_b4_shallow.v diff --git a/CoqOfSolidity/CoqOfSolidity.v b/CoqOfSolidity/CoqOfSolidity.v index f652f0fd4d6f..5b583b71383e 100644 --- a/CoqOfSolidity/CoqOfSolidity.v +++ b/CoqOfSolidity/CoqOfSolidity.v @@ -370,6 +370,8 @@ Module M. end in LowM.Loop loop_body break_with LowM.Pure. + Parameter for_unit : t U256.t -> t unit -> t unit -> t unit. + Definition break : t BlockUnit.t := pure BlockUnit.Break. diff --git a/CoqOfSolidity/SCL_mulmuladdX_fullgen_b4.json b/CoqOfSolidity/SCL_mulmuladdX_fullgen_b4.json new file mode 100644 index 000000000000..8f272d1f0dbc --- /dev/null +++ b/CoqOfSolidity/SCL_mulmuladdX_fullgen_b4.json @@ -0,0 +1,13239 @@ +{ + "code": { + "block": { + "nodeType": "YulBlock", + "statements": [ + { + "nodeType": "YulBlock", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x80" + } + ], + "functionName": { + "name": "memoryguard", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "64" + }, + { + "name": "_1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + "condition": { + "arguments": [], + "functionName": { + "name": "callvalue", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulIf" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "hexValue": "466f6f4261725f39305f6465706c6f796564", + "kind": "string", + "nodeType": "YulLiteral", + "value": "FooBar_90_deployed" + } + ], + "functionName": { + "name": "datasize", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "hexValue": "466f6f4261725f39305f6465706c6f796564", + "kind": "string", + "nodeType": "YulLiteral", + "value": "FooBar_90_deployed" + } + ], + "functionName": { + "name": "dataoffset", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_2", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "codecopy", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier" + }, + { + "name": "_2", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "return", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + } + ] + }, + "nodeType": "YulCode" + }, + "name": "FooBar_90", + "nodeType": "YulObject", + "subObjects": [ + { + "code": { + "block": { + "nodeType": "YulBlock", + "statements": [ + { + "nodeType": "YulBlock", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0200" + } + ], + "functionName": { + "name": "memoryguard", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + "condition": { + "arguments": [], + "functionName": { + "name": "callvalue", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulIf" + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "3" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "384" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulIf" + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "35" + }, + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulIf" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "320" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier" + }, + { + "name": "_1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulIf" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "name": "_1", + "nodeType": "YulIdentifier" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + "condition": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "324" + }, + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulIf" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "value": "4" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "324" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "statements": [ + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "statements": [] + } + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "324" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "356" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "fun_ecGenMulmuladdX_store", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "ret", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "memPos", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPos", + "nodeType": "YulIdentifier" + }, + { + "name": "ret", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "name": "memPos", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x20" + } + ], + "functionName": { + "name": "return", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + "condition": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x81a379ec" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "224" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulIf" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "4" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulIf" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "usr_p", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$y1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr$y1_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "usr$y2", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$y1_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr$y2_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "usr$x2", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "usr_p", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$x1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr$x2_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "usr$x2_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$x2_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr_x_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "usr_x_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$x2_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr_y_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "name": "usr_x_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "usr_zz", + "nodeType": "YulIdentifier" + } + ] + }, + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "name": "usr_y_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "usr_zzz", + "nodeType": "YulIdentifier" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "usr$x1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_x_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr$zz1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "usr$y2_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$y2_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "usr_p", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_y_1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "usr_p", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$zz1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "usr_x", + "nodeType": "YulIdentifier" + } + ] + }, + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "usr$zz1", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "name": "usr_p", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_x", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$y2_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "usr$y1_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_y_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "usr_y", + "nodeType": "YulIdentifier" + } + ] + } + ] + }, + "name": "usr$ecAddn2_2185", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "usr$x1", + "nodeType": "YulTypedName" + }, + { + "name": "usr$y1", + "nodeType": "YulTypedName" + }, + { + "name": "usr$x2", + "nodeType": "YulTypedName" + }, + { + "name": "usr$y2", + "nodeType": "YulTypedName" + }, + { + "name": "usr_p", + "nodeType": "YulTypedName" + } + ], + "returnVariables": [ + { + "name": "usr_x", + "nodeType": "YulTypedName" + }, + { + "name": "usr_y", + "nodeType": "YulTypedName" + }, + { + "name": "usr_zz", + "nodeType": "YulTypedName" + }, + { + "name": "usr_zzz", + "nodeType": "YulTypedName" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "usr$y2", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$zzz1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$y1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr$y2_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "usr$x2", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$zz1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$x1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr$x2_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "usr$x2_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$x2_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr_x_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "usr_x_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$x2_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr_y_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "name": "usr$zz1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_x_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "usr_zz", + "nodeType": "YulIdentifier" + } + ] + }, + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "name": "usr$zzz1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_y_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "usr_zzz", + "nodeType": "YulIdentifier" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "usr$x1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_x_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr$zz1_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "usr$y2_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$y2_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_y_1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$zz1_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "usr_x", + "nodeType": "YulIdentifier" + } + ] + }, + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "usr$zz1_1", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_x", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$y2_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$y1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr_y_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$_p", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "usr_y", + "nodeType": "YulIdentifier" + } + ] + } + ] + }, + "name": "usr$ecAddn2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "usr$x1", + "nodeType": "YulTypedName" + }, + { + "name": "usr$y1", + "nodeType": "YulTypedName" + }, + { + "name": "usr$zz1", + "nodeType": "YulTypedName" + }, + { + "name": "usr$zzz1", + "nodeType": "YulTypedName" + }, + { + "name": "usr$x2", + "nodeType": "YulTypedName" + }, + { + "name": "usr$y2", + "nodeType": "YulTypedName" + }, + { + "name": "usr$_p", + "nodeType": "YulTypedName" + } + ], + "returnVariables": [ + { + "name": "usr_x", + "nodeType": "YulTypedName" + }, + { + "name": "usr_y", + "nodeType": "YulTypedName" + }, + { + "name": "usr_zz", + "nodeType": "YulTypedName" + }, + { + "name": "usr_zzz", + "nodeType": "YulTypedName" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + }, + { + "name": "var_Q_mpos", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0120" + }, + { + "name": "var_scalar_u", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0160" + }, + { + "name": "var_scalar_v", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [], + "functionName": { + "name": "fun_ecGenMulmuladdX_store_2808", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "var_X", + "nodeType": "YulIdentifier" + } + ] + } + ] + }, + "name": "fun_ecGenMulmuladdX_store", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "var_Q_mpos", + "nodeType": "YulTypedName" + }, + { + "name": "var_scalar_u", + "nodeType": "YulTypedName" + }, + { + "name": "var_scalar_v", + "nodeType": "YulTypedName" + } + ], + "returnVariables": [ + { + "name": "var_X", + "nodeType": "YulTypedName" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "127" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0120" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "expr", + "nodeType": "YulTypedName" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0160" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "expr", + "nodeType": "YulIdentifier" + } + ] + } + ] + }, + "condition": { + "name": "expr", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulIf" + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulLeave" + } + ] + }, + "condition": { + "name": "expr", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulIf" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2048" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "4128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2080" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr_modulusp", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_4", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_5", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "128" + }, + { + "name": "_2", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_5", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_4", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "288" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_6", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_7", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_8", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_8", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_9", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_10", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "256" + }, + { + "name": "_10", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_9", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_10", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "288" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_7", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_10", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "320" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_10", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "352" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_8", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_Y", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "var_X", + "nodeType": "YulIdentifier" + }, + { + "name": "var_Y", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "name": "_5", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr_modulusp", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "usr$ecAddn2_2185", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_1", + "nodeType": "YulTypedName" + }, + { + "name": "var_Y_1", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZ", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZZ", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_11", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "384" + }, + { + "name": "_11", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_X_1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_11", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "416" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_Y_1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_11", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "448" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZ", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_11", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "480" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZZ", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "32" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_12", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_13", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_14", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "512" + }, + { + "name": "_14", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_13", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_14", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "544" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_12", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_14", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "576" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_14", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "608" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_15", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_5", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_16", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_17", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_17", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_16", + "nodeType": "YulIdentifier" + }, + { + "name": "_15", + "nodeType": "YulIdentifier" + }, + { + "name": "usr_modulusp", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "usr$ecAddn2_2185", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_2", + "nodeType": "YulTypedName" + }, + { + "name": "var_Y_2", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZ_1", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZZ_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_18", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "640" + }, + { + "name": "_18", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_X_2", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_18", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "672" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_Y_2", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_18", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "704" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZ_1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_18", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "736" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZZ_1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_8", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_3", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_Y_3", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "var_X_3", + "nodeType": "YulIdentifier" + }, + { + "name": "var_Y_3", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_17", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr_modulusp", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "usr$ecAddn2_2185", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_4", + "nodeType": "YulTypedName" + }, + { + "name": "var_Y_4", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZ_2", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZZ_2", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_19", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "768" + }, + { + "name": "_19", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_X_4", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_19", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "800" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_Y_4", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_19", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "832" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZ_2", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_19", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "864" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZZ_2", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "var_X_4", + "nodeType": "YulIdentifier" + }, + { + "name": "var_Y_4", + "nodeType": "YulIdentifier" + }, + { + "name": "var_ZZ_2", + "nodeType": "YulIdentifier" + }, + { + "name": "var_ZZZ_2", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "name": "_5", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr_modulusp", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "usr$ecAddn2", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_5", + "nodeType": "YulTypedName" + }, + { + "name": "var_Y_5", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZ_3", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZZ_3", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_20", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "896" + }, + { + "name": "_20", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_X_5", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_20", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "928" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_Y_5", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_20", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "960" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZ_3", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_20", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "992" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZZ_3", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_21", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_21", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_22", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_23", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_23", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_24", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_25", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1024" + }, + { + "name": "_25", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_24", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_25", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1056" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_22", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_25", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1088" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_25", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1120" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_26", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_23", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_21", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_5", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_26", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2080" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "usr$ecAddn2_2185", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_6", + "nodeType": "YulTypedName" + }, + { + "name": "var_Y_6", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZ_4", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZZ_4", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1152" + }, + { + "name": "_26", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_X_6", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_26", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1184" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_Y_6", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_26", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1216" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZ_4", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_26", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1248" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZZ_4", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_8", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_7", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_Y_7", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_27", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_23", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_21", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_X_7", + "nodeType": "YulIdentifier" + }, + { + "name": "var_Y_7", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_27", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2080" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "usr$ecAddn2_2185", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_8", + "nodeType": "YulTypedName" + }, + { + "name": "var_Y_8", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZ_5", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZZ_5", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1280" + }, + { + "name": "_27", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_X_8", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_27", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1312" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_Y_8", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_27", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1344" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZ_5", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_27", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1376" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZZ_5", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_28", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "var_X_8", + "nodeType": "YulIdentifier" + }, + { + "name": "var_Y_8", + "nodeType": "YulIdentifier" + }, + { + "name": "var_ZZ_5", + "nodeType": "YulIdentifier" + }, + { + "name": "var_ZZZ_5", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "name": "_5", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_28", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2080" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "usr$ecAddn2", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_9", + "nodeType": "YulTypedName" + }, + { + "name": "var_Y_9", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZ_6", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZZ_6", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1408" + }, + { + "name": "_28", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_X_9", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_28", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1440" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_Y_9", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_28", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1472" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZ_6", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_28", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1504" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZZ_6", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_29", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_17", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_23", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_21", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_29", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2080" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "usr$ecAddn2_2185", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_10", + "nodeType": "YulTypedName" + }, + { + "name": "var_Y_10", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZ_7", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZZ_7", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1536" + }, + { + "name": "_29", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_X_10", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_29", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1568" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_Y_10", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_29", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1600" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZ_7", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_29", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1632" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZZ_7", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_30", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "var_X_10", + "nodeType": "YulIdentifier" + }, + { + "name": "var_Y_10", + "nodeType": "YulIdentifier" + }, + { + "name": "var_ZZ_7", + "nodeType": "YulIdentifier" + }, + { + "name": "var_ZZZ_7", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "name": "_5", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_30", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2080" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "usr$ecAddn2", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_11", + "nodeType": "YulTypedName" + }, + { + "name": "var_Y_11", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZ_8", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZZ_8", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1664" + }, + { + "name": "_30", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_X_11", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_30", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1696" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_Y_11", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_30", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1728" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZ_8", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_30", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1760" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZZ_8", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_31", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "768" + }, + { + "name": "_31", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_12", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "800" + }, + { + "name": "_31", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_Y_12", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "832" + }, + { + "name": "_31", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_ZZ_9", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "864" + }, + { + "name": "_31", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_ZZZ_9", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "var_X_12", + "nodeType": "YulIdentifier" + }, + { + "name": "var_Y_12", + "nodeType": "YulIdentifier" + }, + { + "name": "var_ZZ_9", + "nodeType": "YulIdentifier" + }, + { + "name": "var_ZZZ_9", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "name": "_23", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_21", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_31", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2080" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "usr$ecAddn2", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_13", + "nodeType": "YulTypedName" + }, + { + "name": "var_Y_13", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZ_10", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZZ_10", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1792" + }, + { + "name": "_31", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_X_13", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_31", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1824" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_Y_13", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_31", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1856" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZ_10", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_31", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1888" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZZ_10", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_32", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "var_X_13", + "nodeType": "YulIdentifier" + }, + { + "name": "var_Y_13", + "nodeType": "YulIdentifier" + }, + { + "name": "var_ZZ_10", + "nodeType": "YulIdentifier" + }, + { + "name": "var_ZZZ_10", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "name": "_5", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_32", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2080" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "usr$ecAddn2", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "var_X_14", + "nodeType": "YulTypedName" + }, + { + "name": "var_Y_14", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZ_11", + "nodeType": "YulTypedName" + }, + { + "name": "var_ZZZ_11", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1920" + }, + { + "name": "_32", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_X_14", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_32", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1952" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_Y_14", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_32", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1984" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZ_11", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_32", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2016" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "var_ZZZ_11", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0120" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "128" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0120" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0160" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "128" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0160" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "statements": [] + } + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0180" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0180" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "7" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_33", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + }, + { + "arguments": [ + { + "name": "_33", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_33", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_33", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_33", + "nodeType": "YulIdentifier" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0180" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2080" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xc0" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr$T4", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "usr$T4", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$T4", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xc0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "usr$T4", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xc0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0120" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "128" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0120" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0160" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "128" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0160" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr$T1", + "nodeType": "YulTypedName" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulContinue" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "usr$T1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulIf" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0180" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "7" + }, + { + "name": "usr$T1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr$T4_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0180" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "7" + }, + { + "name": "usr$T1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_34", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "name": "_34", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_35", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0180" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2144" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_35", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + }, + { + "name": "usr$T4_1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0180" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "7" + }, + { + "name": "usr$T1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0180" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "7" + }, + { + "name": "usr$T1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + }, + { + "arguments": [ + { + "name": "_34", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulContinue" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulIf" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0180" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "7" + }, + { + "name": "usr$T1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_35", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_36", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0180" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2112" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_36", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0180" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "7" + }, + { + "name": "usr$T1", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr$T1_1", + "nodeType": "YulTypedName" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "usr$T4_1", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$T1_1", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr$T2", + "nodeType": "YulTypedName" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x80" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0180" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2112" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x80" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0140" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "usr$T4_1", + "nodeType": "YulIdentifier" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "usr$T4_1", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$T4_1", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x80" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulAssignment", + "value": { + "arguments": [ + { + "name": "usr$T4_1", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x80" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variableNames": [ + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + }, + { + "arguments": [ + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulContinue" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulIf" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_36", + "nodeType": "YulIdentifier" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulIf" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$T1_1", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$T1_1", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "usr$T1_2", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xe0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_35", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "nodeType": "YulVariableDeclaration", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0180" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2112" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "variables": [ + { + "name": "_37", + "nodeType": "YulTypedName" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_37", + "nodeType": "YulIdentifier" + }, + { + "name": "_37", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "usr$T1_2", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "usr$T1_2", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_37", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x0100" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "_35", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "name": "usr$T2", + "nodeType": "YulIdentifier" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "addmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + "condition": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01a0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "statements": [] + } + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2176" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2272" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01c0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2176" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2208" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2240" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2304" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2336" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + }, + { + "body": { + "nodeType": "YulBlock", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2047" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "32" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x05" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2176" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "192" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2176" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "32" + } + ], + "functionName": { + "name": "staticcall", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulIf" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0xa0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "2176" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "value": "0x01e0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier" + }, + "nodeType": "YulFunctionCall" + }, + "nodeType": "YulExpressionStatement" + } + ] + }, + "name": "fun_ecGenMulmuladdX_store_2808", + "nodeType": "YulFunctionDefinition" + } + ] + }, + "nodeType": "YulCode" + }, + "name": "FooBar_90_deployed", + "nodeType": "YulObject", + "subObjects": [ + { + "nodeType": "YulData", + "value": "a26469706673582212201e8e3efb908b0a876216c7d74340e010b1f91d7f2c0f61ce0fc1667db3d5fead64736f6c634300081b0033" + } + ] + } + ] +} diff --git a/CoqOfSolidity/SCL_mulmuladdX_fullgen_b4.v b/CoqOfSolidity/SCL_mulmuladdX_fullgen_b4.v new file mode 100644 index 000000000000..4232ba85d0e2 --- /dev/null +++ b/CoqOfSolidity/SCL_mulmuladdX_fullgen_b4.v @@ -0,0 +1,6267 @@ +(* Coq *) +(* Generated by coq-of-solidity *) +Require Import CoqOfSolidity.CoqOfSolidity. + +Module FooBar. + Definition code : Code.t := {| + Code.name := "FooBar_90"; + Code.hex_name := 0x466f6f4261725f39300000000000000000000000000000000000000000000000; + Code.functions := + [ + + ]; + Code.body := + M.scope ( + do! ltac:(M.monadic ( + M.scope ( + do! ltac:(M.monadic ( + M.declare (| + ["_1"], + Some (M.call_function (| + "memoryguard", + [ + [Literal.number 0x80] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 64]; + M.get_var (| "_1" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.if_ (| + M.call_function (| + "callvalue", + [] + |), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "revert", + [ + [Literal.number 0]; + [Literal.number 0] + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_2"], + Some (M.call_function (| + "datasize", + [ + [Literal.string 0x466f6f4261725f39305f6465706c6f7965640000000000000000000000000000] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "codecopy", + [ + M.get_var (| "_1" |); + M.call_function (| + "dataoffset", + [ + [Literal.string 0x466f6f4261725f39305f6465706c6f7965640000000000000000000000000000] + ] + |); + M.get_var (| "_2" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "return", + [ + M.get_var (| "_1" |); + M.get_var (| "_2" |) + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ) + )) in + M.pure BlockUnit.Tt + ); + |}. + + Module deployed. + Definition code : Code.t := {| + Code.name := "FooBar_90_deployed"; + Code.hex_name := 0x466f6f4261725f39305f6465706c6f7965640000000000000000000000000000; + Code.functions := + [ + Code.Function.make ( + "usr$ecAddn2_2185", + ["usr$x1"; "usr$y1"; "usr$x2"; "usr$y2"; "usr_p"], + ["usr_x"; "usr_y"; "usr_zz"; "usr_zzz"], + M.scope ( + do! ltac:(M.monadic ( + M.declare (| + ["usr$y1_1"], + Some (M.call_function (| + "sub", + [ + M.get_var (| "usr_p" |); + M.get_var (| "usr$y1" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr$y2_1"], + Some (M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$y2" |); + [Literal.number 1]; + M.get_var (| "usr_p" |) + ] + |); + M.get_var (| "usr$y1_1" |); + M.get_var (| "usr_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr$x2_1"], + Some (M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$x2" |); + [Literal.number 1]; + M.get_var (| "usr_p" |) + ] + |); + M.call_function (| + "sub", + [ + M.get_var (| "usr_p" |); + M.get_var (| "usr$x1" |) + ] + |); + M.get_var (| "usr_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr_x_1"], + Some (M.call_function (| + "mulmod", + [ + M.get_var (| "usr$x2_1" |); + M.get_var (| "usr$x2_1" |); + M.get_var (| "usr_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr_y_1"], + Some (M.call_function (| + "mulmod", + [ + M.get_var (| "usr_x_1" |); + M.get_var (| "usr$x2_1" |); + M.get_var (| "usr_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.assign (| + ["usr_zz"], + Some (M.call_function (| + "mulmod", + [ + [Literal.number 1]; + M.get_var (| "usr_x_1" |); + M.get_var (| "usr_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.assign (| + ["usr_zzz"], + Some (M.call_function (| + "mulmod", + [ + [Literal.number 1]; + M.get_var (| "usr_y_1" |); + M.get_var (| "usr_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr$zz1"], + Some (M.call_function (| + "mulmod", + [ + M.get_var (| "usr$x1" |); + M.get_var (| "usr_x_1" |); + M.get_var (| "usr_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.assign (| + ["usr_x"], + Some (M.call_function (| + "addmod", + [ + M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$y2_1" |); + M.get_var (| "usr$y2_1" |); + M.get_var (| "usr_p" |) + ] + |); + M.call_function (| + "sub", + [ + M.get_var (| "usr_p" |); + M.get_var (| "usr_y_1" |) + ] + |); + M.get_var (| "usr_p" |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.get_var (| "usr_p" |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.get_var (| "usr$zz1" |); + M.get_var (| "usr_p" |) + ] + |); + M.get_var (| "usr_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.assign (| + ["usr_y"], + Some (M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "addmod", + [ + M.get_var (| "usr$zz1" |); + M.call_function (| + "sub", + [ + M.get_var (| "usr_p" |); + M.get_var (| "usr_x" |) + ] + |); + M.get_var (| "usr_p" |) + ] + |); + M.get_var (| "usr$y2_1" |); + M.get_var (| "usr_p" |) + ] + |); + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$y1_1" |); + M.get_var (| "usr_y_1" |); + M.get_var (| "usr_p" |) + ] + |); + M.get_var (| "usr_p" |) + ] + |)) + |) + )) in + M.pure BlockUnit.Tt + ) + ); + Code.Function.make ( + "usr$ecAddn2", + ["usr$x1"; "usr$y1"; "usr$zz1"; "usr$zzz1"; "usr$x2"; "usr$y2"; "usr$_p"], + ["usr_x"; "usr_y"; "usr_zz"; "usr_zzz"], + M.scope ( + do! ltac:(M.monadic ( + M.declare (| + ["usr$y2_1"], + Some (M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$y2" |); + M.get_var (| "usr$zzz1" |); + M.get_var (| "usr$_p" |) + ] + |); + M.call_function (| + "sub", + [ + M.get_var (| "usr$_p" |); + M.get_var (| "usr$y1" |) + ] + |); + M.get_var (| "usr$_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr$x2_1"], + Some (M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$x2" |); + M.get_var (| "usr$zz1" |); + M.get_var (| "usr$_p" |) + ] + |); + M.call_function (| + "sub", + [ + M.get_var (| "usr$_p" |); + M.get_var (| "usr$x1" |) + ] + |); + M.get_var (| "usr$_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr_x_1"], + Some (M.call_function (| + "mulmod", + [ + M.get_var (| "usr$x2_1" |); + M.get_var (| "usr$x2_1" |); + M.get_var (| "usr$_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr_y_1"], + Some (M.call_function (| + "mulmod", + [ + M.get_var (| "usr_x_1" |); + M.get_var (| "usr$x2_1" |); + M.get_var (| "usr$_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.assign (| + ["usr_zz"], + Some (M.call_function (| + "mulmod", + [ + M.get_var (| "usr$zz1" |); + M.get_var (| "usr_x_1" |); + M.get_var (| "usr$_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.assign (| + ["usr_zzz"], + Some (M.call_function (| + "mulmod", + [ + M.get_var (| "usr$zzz1" |); + M.get_var (| "usr_y_1" |); + M.get_var (| "usr$_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr$zz1_1"], + Some (M.call_function (| + "mulmod", + [ + M.get_var (| "usr$x1" |); + M.get_var (| "usr_x_1" |); + M.get_var (| "usr$_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.assign (| + ["usr_x"], + Some (M.call_function (| + "addmod", + [ + M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$y2_1" |); + M.get_var (| "usr$y2_1" |); + M.get_var (| "usr$_p" |) + ] + |); + M.call_function (| + "sub", + [ + M.get_var (| "usr$_p" |); + M.get_var (| "usr_y_1" |) + ] + |); + M.get_var (| "usr$_p" |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.get_var (| "usr$_p" |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.get_var (| "usr$zz1_1" |); + M.get_var (| "usr$_p" |) + ] + |); + M.get_var (| "usr$_p" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.assign (| + ["usr_y"], + Some (M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "addmod", + [ + M.get_var (| "usr$zz1_1" |); + M.call_function (| + "sub", + [ + M.get_var (| "usr$_p" |); + M.get_var (| "usr_x" |) + ] + |); + M.get_var (| "usr$_p" |) + ] + |); + M.get_var (| "usr$y2_1" |); + M.get_var (| "usr$_p" |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "sub", + [ + M.get_var (| "usr$_p" |); + M.get_var (| "usr$y1" |) + ] + |); + M.get_var (| "usr_y_1" |); + M.get_var (| "usr$_p" |) + ] + |); + M.get_var (| "usr$_p" |) + ] + |)) + |) + )) in + M.pure BlockUnit.Tt + ) + ); + Code.Function.make ( + "fun_ecGenMulmuladdX_store", + ["var_Q_mpos"; "var_scalar_u"; "var_scalar_v"], + ["var_X"], + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x0140]; + M.get_var (| "var_Q_mpos" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x0120]; + M.get_var (| "var_scalar_u" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x0160]; + M.get_var (| "var_scalar_v" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xa0]; + [Literal.number 0] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "fun_ecGenMulmuladdX_store_2808", + [] + |) + |) + )) in + do! ltac:(M.monadic ( + M.assign (| + ["var_X"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0xa0] + ] + |)) + |) + )) in + M.pure BlockUnit.Tt + ) + ); + Code.Function.make ( + "fun_ecGenMulmuladdX_store_2808", + [], + [], + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xa0]; + [Literal.number 0] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x01a0]; + M.call_function (| + "shl", + [ + [Literal.number 127]; + [Literal.number 1] + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["expr"], + Some (M.call_function (| + "iszero", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0120] + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.if_ (| + M.get_var (| "expr" |), + M.scope ( + do! ltac:(M.monadic ( + M.assign (| + ["expr"], + Some (M.call_function (| + "iszero", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0160] + ] + |) + ] + |)) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + do! ltac:(M.monadic ( + M.if_ (| + M.get_var (| "expr" |), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xa0]; + [Literal.number 0] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.leave (||) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x0100]; + [Literal.number 0] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xe0]; + [Literal.number 0] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x01c0]; + [Literal.number 0] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_1"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x40]; + M.call_function (| + "add", + [ + M.get_var (| "_1" |); + [Literal.number 2048] + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_1" |); + [Literal.number 4128] + ] + |); + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |); + [Literal.number 128] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_2"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr_modulusp"], + Some (M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.get_var (| "_2" |); + [Literal.number 2080] + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_3"], + Some (M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |); + [Literal.number 224] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_4"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_3" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_5"], + Some (M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |); + [Literal.number 192] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 128]; + M.get_var (| "_2" |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_5" |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_2" |); + [Literal.number 160] + ] + |); + M.get_var (| "_4" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_2" |); + [Literal.number 192] + ] + |); + [Literal.number 1] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_2" |); + [Literal.number 224] + ] + |); + [Literal.number 1] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_6"], + Some (M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |); + [Literal.number 288] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_7"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_6" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_8"], + Some (M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |); + [Literal.number 256] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_9"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_8" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_10"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 256]; + M.get_var (| "_10" |) + ] + |); + M.get_var (| "_9" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_10" |); + [Literal.number 288] + ] + |); + M.get_var (| "_7" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_10" |); + [Literal.number 320] + ] + |); + [Literal.number 1] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_10" |); + [Literal.number 352] + ] + |); + [Literal.number 1] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_8" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_Y"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_6" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_1"; "var_Y_1"; "var_ZZ"; "var_ZZZ"], + Some (M.call_function (| + "usr$ecAddn2_2185", + [ + M.get_var (| "var_X" |); + M.get_var (| "var_Y" |); + M.call_function (| + "mload", + [ + M.get_var (| "_5" |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_3" |) + ] + |); + M.get_var (| "usr_modulusp" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_11"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 384]; + M.get_var (| "_11" |) + ] + |); + M.get_var (| "var_X_1" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_11" |); + [Literal.number 416] + ] + |); + M.get_var (| "var_Y_1" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_11" |); + [Literal.number 448] + ] + |); + M.get_var (| "var_ZZ" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_11" |); + [Literal.number 480] + ] + |); + M.get_var (| "var_ZZZ" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_12"], + Some (M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + [Literal.number 32]; + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_13"], + Some (M.call_function (| + "mload", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_14"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 512]; + M.get_var (| "_14" |) + ] + |); + M.get_var (| "_13" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_14" |); + [Literal.number 544] + ] + |); + M.get_var (| "_12" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_14" |); + [Literal.number 576] + ] + |); + [Literal.number 1] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_14" |); + [Literal.number 608] + ] + |); + [Literal.number 1] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_15"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_3" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_16"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_5" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_17"], + Some (M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |); + [Literal.number 32] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_2"; "var_Y_2"; "var_ZZ_1"; "var_ZZZ_1"], + Some (M.call_function (| + "usr$ecAddn2_2185", + [ + M.call_function (| + "mload", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_17" |) + ] + |); + M.get_var (| "_16" |); + M.get_var (| "_15" |); + M.get_var (| "usr_modulusp" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_18"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 640]; + M.get_var (| "_18" |) + ] + |); + M.get_var (| "var_X_2" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_18" |); + [Literal.number 672] + ] + |); + M.get_var (| "var_Y_2" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_18" |); + [Literal.number 704] + ] + |); + M.get_var (| "var_ZZ_1" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_18" |); + [Literal.number 736] + ] + |); + M.get_var (| "var_ZZZ_1" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_3"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_8" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_Y_3"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_6" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_4"; "var_Y_4"; "var_ZZ_2"; "var_ZZZ_2"], + Some (M.call_function (| + "usr$ecAddn2_2185", + [ + M.get_var (| "var_X_3" |); + M.get_var (| "var_Y_3" |); + M.call_function (| + "mload", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_17" |) + ] + |); + M.get_var (| "usr_modulusp" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_19"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 768]; + M.get_var (| "_19" |) + ] + |); + M.get_var (| "var_X_4" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_19" |); + [Literal.number 800] + ] + |); + M.get_var (| "var_Y_4" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_19" |); + [Literal.number 832] + ] + |); + M.get_var (| "var_ZZ_2" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_19" |); + [Literal.number 864] + ] + |); + M.get_var (| "var_ZZZ_2" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_5"; "var_Y_5"; "var_ZZ_3"; "var_ZZZ_3"], + Some (M.call_function (| + "usr$ecAddn2", + [ + M.get_var (| "var_X_4" |); + M.get_var (| "var_Y_4" |); + M.get_var (| "var_ZZ_2" |); + M.get_var (| "var_ZZZ_2" |); + M.call_function (| + "mload", + [ + M.get_var (| "_5" |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_3" |) + ] + |); + M.get_var (| "usr_modulusp" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_20"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 896]; + M.get_var (| "_20" |) + ] + |); + M.get_var (| "var_X_5" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_20" |); + [Literal.number 928] + ] + |); + M.get_var (| "var_Y_5" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_20" |); + [Literal.number 960] + ] + |); + M.get_var (| "var_ZZ_3" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_20" |); + [Literal.number 992] + ] + |); + M.get_var (| "var_ZZZ_3" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_21"], + Some (M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |); + [Literal.number 96] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_22"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_21" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_23"], + Some (M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |); + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_24"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_23" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_25"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 1024]; + M.get_var (| "_25" |) + ] + |); + M.get_var (| "_24" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_25" |); + [Literal.number 1056] + ] + |); + M.get_var (| "_22" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_25" |); + [Literal.number 1088] + ] + |); + [Literal.number 1] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_25" |); + [Literal.number 1120] + ] + |); + [Literal.number 1] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_26"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_6"; "var_Y_6"; "var_ZZ_4"; "var_ZZZ_4"], + Some (M.call_function (| + "usr$ecAddn2_2185", + [ + M.call_function (| + "mload", + [ + M.get_var (| "_23" |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_21" |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_5" |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_3" |) + ] + |); + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.get_var (| "_26" |); + [Literal.number 2080] + ] + |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 1152]; + M.get_var (| "_26" |) + ] + |); + M.get_var (| "var_X_6" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_26" |); + [Literal.number 1184] + ] + |); + M.get_var (| "var_Y_6" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_26" |); + [Literal.number 1216] + ] + |); + M.get_var (| "var_ZZ_4" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_26" |); + [Literal.number 1248] + ] + |); + M.get_var (| "var_ZZZ_4" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_7"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_8" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_Y_7"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_6" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_27"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_8"; "var_Y_8"; "var_ZZ_5"; "var_ZZZ_5"], + Some (M.call_function (| + "usr$ecAddn2_2185", + [ + M.call_function (| + "mload", + [ + M.get_var (| "_23" |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_21" |) + ] + |); + M.get_var (| "var_X_7" |); + M.get_var (| "var_Y_7" |); + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.get_var (| "_27" |); + [Literal.number 2080] + ] + |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 1280]; + M.get_var (| "_27" |) + ] + |); + M.get_var (| "var_X_8" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_27" |); + [Literal.number 1312] + ] + |); + M.get_var (| "var_Y_8" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_27" |); + [Literal.number 1344] + ] + |); + M.get_var (| "var_ZZ_5" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_27" |); + [Literal.number 1376] + ] + |); + M.get_var (| "var_ZZZ_5" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_28"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_9"; "var_Y_9"; "var_ZZ_6"; "var_ZZZ_6"], + Some (M.call_function (| + "usr$ecAddn2", + [ + M.get_var (| "var_X_8" |); + M.get_var (| "var_Y_8" |); + M.get_var (| "var_ZZ_5" |); + M.get_var (| "var_ZZZ_5" |); + M.call_function (| + "mload", + [ + M.get_var (| "_5" |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_3" |) + ] + |); + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.get_var (| "_28" |); + [Literal.number 2080] + ] + |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 1408]; + M.get_var (| "_28" |) + ] + |); + M.get_var (| "var_X_9" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_28" |); + [Literal.number 1440] + ] + |); + M.get_var (| "var_Y_9" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_28" |); + [Literal.number 1472] + ] + |); + M.get_var (| "var_ZZ_6" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_28" |); + [Literal.number 1504] + ] + |); + M.get_var (| "var_ZZZ_6" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_29"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_10"; "var_Y_10"; "var_ZZ_7"; "var_ZZZ_7"], + Some (M.call_function (| + "usr$ecAddn2_2185", + [ + M.call_function (| + "mload", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_17" |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_23" |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_21" |) + ] + |); + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.get_var (| "_29" |); + [Literal.number 2080] + ] + |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 1536]; + M.get_var (| "_29" |) + ] + |); + M.get_var (| "var_X_10" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_29" |); + [Literal.number 1568] + ] + |); + M.get_var (| "var_Y_10" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_29" |); + [Literal.number 1600] + ] + |); + M.get_var (| "var_ZZ_7" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_29" |); + [Literal.number 1632] + ] + |); + M.get_var (| "var_ZZZ_7" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_30"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_11"; "var_Y_11"; "var_ZZ_8"; "var_ZZZ_8"], + Some (M.call_function (| + "usr$ecAddn2", + [ + M.get_var (| "var_X_10" |); + M.get_var (| "var_Y_10" |); + M.get_var (| "var_ZZ_7" |); + M.get_var (| "var_ZZZ_7" |); + M.call_function (| + "mload", + [ + M.get_var (| "_5" |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_3" |) + ] + |); + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.get_var (| "_30" |); + [Literal.number 2080] + ] + |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 1664]; + M.get_var (| "_30" |) + ] + |); + M.get_var (| "var_X_11" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_30" |); + [Literal.number 1696] + ] + |); + M.get_var (| "var_Y_11" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_30" |); + [Literal.number 1728] + ] + |); + M.get_var (| "var_ZZ_8" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_30" |); + [Literal.number 1760] + ] + |); + M.get_var (| "var_ZZZ_8" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_31"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_12"], + Some (M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + [Literal.number 768]; + M.get_var (| "_31" |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_Y_12"], + Some (M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + [Literal.number 800]; + M.get_var (| "_31" |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_ZZ_9"], + Some (M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + [Literal.number 832]; + M.get_var (| "_31" |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_ZZZ_9"], + Some (M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + [Literal.number 864]; + M.get_var (| "_31" |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_13"; "var_Y_13"; "var_ZZ_10"; "var_ZZZ_10"], + Some (M.call_function (| + "usr$ecAddn2", + [ + M.get_var (| "var_X_12" |); + M.get_var (| "var_Y_12" |); + M.get_var (| "var_ZZ_9" |); + M.get_var (| "var_ZZZ_9" |); + M.call_function (| + "mload", + [ + M.get_var (| "_23" |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_21" |) + ] + |); + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.get_var (| "_31" |); + [Literal.number 2080] + ] + |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 1792]; + M.get_var (| "_31" |) + ] + |); + M.get_var (| "var_X_13" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_31" |); + [Literal.number 1824] + ] + |); + M.get_var (| "var_Y_13" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_31" |); + [Literal.number 1856] + ] + |); + M.get_var (| "var_ZZ_10" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_31" |); + [Literal.number 1888] + ] + |); + M.get_var (| "var_ZZZ_10" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_32"], + Some (M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["var_X_14"; "var_Y_14"; "var_ZZ_11"; "var_ZZZ_11"], + Some (M.call_function (| + "usr$ecAddn2", + [ + M.get_var (| "var_X_13" |); + M.get_var (| "var_Y_13" |); + M.get_var (| "var_ZZ_10" |); + M.get_var (| "var_ZZZ_10" |); + M.call_function (| + "mload", + [ + M.get_var (| "_5" |) + ] + |); + M.call_function (| + "mload", + [ + M.get_var (| "_3" |) + ] + |); + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.get_var (| "_32" |); + [Literal.number 2080] + ] + |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + [Literal.number 1920]; + M.get_var (| "_32" |) + ] + |); + M.get_var (| "var_X_14" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_32" |); + [Literal.number 1952] + ] + |); + M.get_var (| "var_Y_14" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_32" |); + [Literal.number 1984] + ] + |); + M.get_var (| "var_ZZ_11" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.get_var (| "_32" |); + [Literal.number 2016] + ] + |); + M.get_var (| "var_ZZZ_11" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xe0]; + [Literal.number 0] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + do! + M.scope ( + M.pure BlockUnit.Tt + ) in + ltac:(M.monadic ( + M.for_ (| + ltac:(M.monadic ( + M.call_function (| + "iszero", + [ + M.call_function (| + "mload", + [ + [Literal.number 0xe0] + ] + |) + ] + |) + )), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x01a0]; + M.call_function (| + "shr", + [ + [Literal.number 1]; + M.call_function (| + "mload", + [ + [Literal.number 0x01a0] + ] + |) + ] + |) + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xe0]; + M.call_function (| + "add", + [ + M.call_function (| + "add", + [ + M.call_function (| + "sub", + [ + [Literal.number 1]; + M.call_function (| + "iszero", + [ + M.call_function (| + "and", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0120] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01a0] + ] + |) + ] + |) + ] + |) + ] + |); + M.call_function (| + "shl", + [ + [Literal.number 1]; + M.call_function (| + "sub", + [ + [Literal.number 1]; + M.call_function (| + "iszero", + [ + M.call_function (| + "and", + [ + M.call_function (| + "shr", + [ + [Literal.number 128]; + M.call_function (| + "mload", + [ + [Literal.number 0x0120] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01a0] + ] + |) + ] + |) + ] + |) + ] + |) + ] + |) + ] + |); + M.call_function (| + "add", + [ + M.call_function (| + "shl", + [ + [Literal.number 2]; + M.call_function (| + "sub", + [ + [Literal.number 1]; + M.call_function (| + "iszero", + [ + M.call_function (| + "and", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0160] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01a0] + ] + |) + ] + |) + ] + |) + ] + |) + ] + |); + M.call_function (| + "shl", + [ + [Literal.number 3]; + M.call_function (| + "sub", + [ + [Literal.number 1]; + M.call_function (| + "iszero", + [ + M.call_function (| + "and", + [ + M.call_function (| + "shr", + [ + [Literal.number 128]; + M.call_function (| + "mload", + [ + [Literal.number 0x0160] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01a0] + ] + |) + ] + |) + ] + |) + ] + |) + ] + |) + ] + |) + ] + |) + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x0180]; + M.call_function (| + "mload", + [ + [Literal.number 0x40] + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_33"], + Some (M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0180] + ] + |); + M.call_function (| + "shl", + [ + [Literal.number 7]; + M.call_function (| + "mload", + [ + [Literal.number 0xe0] + ] + |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xa0]; + M.call_function (| + "mload", + [ + M.get_var (| "_33" |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x0100]; + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.get_var (| "_33" |); + [Literal.number 32] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x01c0]; + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.get_var (| "_33" |); + [Literal.number 0x40] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xe0]; + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.get_var (| "_33" |); + [Literal.number 96] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x01e0]; + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0180] + ] + |); + [Literal.number 2080] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + do! + M.scope ( + M.pure BlockUnit.Tt + ) in + ltac:(M.monadic ( + M.for_ (| + ltac:(M.monadic ( + M.call_function (| + "mload", + [ + [Literal.number 0x01a0] + ] + |) + )), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x01a0]; + M.call_function (| + "shr", + [ + [Literal.number 1]; + M.call_function (| + "mload", + [ + [Literal.number 0x01a0] + ] + |) + ] + |) + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xc0]; + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0xa0] + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + [Literal.number 2]; + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + [Literal.number 2]; + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr$T4"], + Some (M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + [Literal.number 3]; + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0xa0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0xa0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |); + [Literal.number 160] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01c0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01c0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xe0]; + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + [Literal.number 2]; + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + [Literal.number 2]; + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + [Literal.number 2]; + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0xe0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x01c0]; + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + [Literal.number 2]; + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + [Literal.number 2]; + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01c0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xa0]; + M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$T4" |); + M.get_var (| "usr$T4" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0xc0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x0100]; + M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + [Literal.number 2]; + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + [Literal.number 2]; + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + [Literal.number 2]; + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$T4" |); + M.call_function (| + "addmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0xa0] + ] + |); + M.call_function (| + "sub", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0xc0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr$T1"], + Some (M.call_function (| + "add", + [ + M.call_function (| + "add", + [ + M.call_function (| + "sub", + [ + [Literal.number 1]; + M.call_function (| + "iszero", + [ + M.call_function (| + "and", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0120] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01a0] + ] + |) + ] + |) + ] + |) + ] + |); + M.call_function (| + "shl", + [ + [Literal.number 1]; + M.call_function (| + "sub", + [ + [Literal.number 1]; + M.call_function (| + "iszero", + [ + M.call_function (| + "and", + [ + M.call_function (| + "shr", + [ + [Literal.number 128]; + M.call_function (| + "mload", + [ + [Literal.number 0x0120] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01a0] + ] + |) + ] + |) + ] + |) + ] + |) + ] + |) + ] + |); + M.call_function (| + "add", + [ + M.call_function (| + "shl", + [ + [Literal.number 2]; + M.call_function (| + "sub", + [ + [Literal.number 1]; + M.call_function (| + "iszero", + [ + M.call_function (| + "and", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0160] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01a0] + ] + |) + ] + |) + ] + |) + ] + |) + ] + |); + M.call_function (| + "shl", + [ + [Literal.number 3]; + M.call_function (| + "sub", + [ + [Literal.number 1]; + M.call_function (| + "iszero", + [ + M.call_function (| + "and", + [ + M.call_function (| + "shr", + [ + [Literal.number 128]; + M.call_function (| + "mload", + [ + [Literal.number 0x0160] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01a0] + ] + |) + ] + |) + ] + |) + ] + |) + ] + |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.if_ (| + M.call_function (| + "iszero", + [ + M.get_var (| "usr$T1" |) + ] + |), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x0100]; + M.call_function (| + "sub", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.continue (||) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr$T4_1"], + Some (M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0180] + ] + |); + M.call_function (| + "shl", + [ + [Literal.number 7]; + M.get_var (| "usr$T1" |) + ] + |) + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_34"], + Some (M.call_function (| + "add", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0180] + ] + |); + M.call_function (| + "shl", + [ + [Literal.number 7]; + M.get_var (| "usr$T1" |) + ] + |) + ] + |); + [Literal.number 96] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_35"], + Some (M.call_function (| + "mload", + [ + M.get_var (| "_34" |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0180] + ] + |); + [Literal.number 2144] + ] + |); + M.get_var (| "_35" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.if_ (| + M.call_function (| + "iszero", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01c0] + ] + |) + ] + |), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xa0]; + M.get_var (| "usr$T4_1" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x0100]; + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0180] + ] + |); + M.call_function (| + "shl", + [ + [Literal.number 7]; + M.get_var (| "usr$T1" |) + ] + |) + ] + |); + [Literal.number 32] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x01c0]; + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0180] + ] + |); + M.call_function (| + "shl", + [ + [Literal.number 7]; + M.get_var (| "usr$T1" |) + ] + |) + ] + |); + [Literal.number 0x40] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xe0]; + M.call_function (| + "mload", + [ + M.get_var (| "_34" |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.continue (||) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_36"], + Some (M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0180] + ] + |); + M.call_function (| + "shl", + [ + [Literal.number 7]; + M.get_var (| "usr$T1" |) + ] + |) + ] + |); + [Literal.number 32] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0xe0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.get_var (| "_35" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0180] + ] + |); + [Literal.number 2112] + ] + |); + M.get_var (| "_36" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr$T1_1"], + Some (M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0180] + ] + |); + M.call_function (| + "shl", + [ + [Literal.number 7]; + M.get_var (| "usr$T1" |) + ] + |) + ] + |); + [Literal.number 0x40] + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr$T2"], + Some (M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$T4_1" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01c0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "sub", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0xa0] + ] + |); + M.get_var (| "usr$T1_1" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.if_ (| + M.call_function (| + "iszero", + [ + M.get_var (| "_36" |) + ] + |), + M.scope ( + do! ltac:(M.monadic ( + M.if_ (| + M.call_function (| + "iszero", + [ + M.get_var (| "usr$T2" |) + ] + |), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x80]; + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0xa0] + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0180] + ] + |); + [Literal.number 2112] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x80] + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.assign (| + ["usr$T4_1"], + Some (M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + [Literal.number 3]; + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0xa0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0xa0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0140] + ] + |); + [Literal.number 160] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01c0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01c0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xe0]; + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0xe0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x01c0]; + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01c0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xa0]; + M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$T4_1" |); + M.get_var (| "usr$T4_1" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x80] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.assign (| + ["usr$T2"], + Some (M.call_function (| + "mulmod", + [ + M.get_var (| "usr$T4_1" |); + M.call_function (| + "addmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x80] + ] + |); + M.call_function (| + "sub", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0xa0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x0100]; + M.call_function (| + "addmod", + [ + M.get_var (| "usr$T2" |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.continue (||) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x01c0]; + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01c0] + ] + |); + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$T2" |); + M.get_var (| "usr$T2" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.get_var (| "usr$T1_1" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["usr$T1_2"], + Some (M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0xa0] + ] + |); + M.get_var (| "usr$T1_1" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xe0]; + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0xe0] + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$T2" |); + M.get_var (| "usr$T2" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.get_var (| "usr$T2" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.get_var (| "_35" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["_37"], + Some (M.call_function (| + "mload", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0180] + ] + |); + [Literal.number 2112] + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xa0]; + M.call_function (| + "addmod", + [ + M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "_37" |); + M.get_var (| "_37" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "sub", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$T2" |); + M.get_var (| "usr$T2" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.get_var (| "usr$T2" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$T1_2" |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$T2" |); + M.get_var (| "usr$T2" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x0100]; + M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "addmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$T1_2" |); + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$T2" |); + M.get_var (| "usr$T2" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "sub", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0xa0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.get_var (| "_37" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x0100] + ] + |); + M.get_var (| "_35" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mulmod", + [ + M.call_function (| + "mulmod", + [ + M.get_var (| "usr$T2" |); + M.get_var (| "usr$T2" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.get_var (| "usr$T2" |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0x40]; + [Literal.number 2176] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 2272]; + M.call_function (| + "mload", + [ + [Literal.number 0x01c0] + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 2176]; + [Literal.number 32] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 2208]; + [Literal.number 32] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 2240]; + [Literal.number 32] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 2304]; + M.call_function (| + "add", + [ + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |); + M.call_function (| + "not", + [ + [Literal.number 1] + ] + |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 2336]; + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.if_ (| + M.call_function (| + "iszero", + [ + M.call_function (| + "staticcall", + [ + M.call_function (| + "not", + [ + [Literal.number 0] + ] + |); + [Literal.number 0x05]; + [Literal.number 2176]; + [Literal.number 192]; + [Literal.number 2176]; + [Literal.number 32] + ] + |) + ] + |), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "revert", + [ + [Literal.number 2047]; + [Literal.number 32] + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0xa0]; + M.call_function (| + "mulmod", + [ + M.call_function (| + "mload", + [ + [Literal.number 0xa0] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 2176] + ] + |); + M.call_function (| + "mload", + [ + [Literal.number 0x01e0] + ] + |) + ] + |) + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ) + ) + ]; + Code.body := + M.scope ( + do! ltac:(M.monadic ( + M.scope ( + do! ltac:(M.monadic ( + M.declare (| + ["_1"], + Some (M.call_function (| + "memoryguard", + [ + [Literal.number 0x0200] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.if_ (| + M.call_function (| + "iszero", + [ + M.call_function (| + "lt", + [ + M.call_function (| + "calldatasize", + [] + |); + [Literal.number 4] + ] + |) + ] + |), + M.scope ( + do! ltac:(M.monadic ( + M.if_ (| + M.call_function (| + "eq", + [ + [Literal.number 0x81a379ec]; + M.call_function (| + "shr", + [ + [Literal.number 224]; + M.call_function (| + "calldataload", + [ + [Literal.number 0] + ] + |) + ] + |) + ] + |), + M.scope ( + do! ltac:(M.monadic ( + M.if_ (| + M.call_function (| + "callvalue", + [] + |), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "revert", + [ + [Literal.number 0]; + [Literal.number 0] + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + do! ltac:(M.monadic ( + M.if_ (| + M.call_function (| + "slt", + [ + M.call_function (| + "add", + [ + M.call_function (| + "calldatasize", + [] + |); + M.call_function (| + "not", + [ + [Literal.number 3] + ] + |) + ] + |); + [Literal.number 384] + ] + |), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "revert", + [ + [Literal.number 0]; + [Literal.number 0] + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + do! ltac:(M.monadic ( + M.if_ (| + M.call_function (| + "iszero", + [ + M.call_function (| + "slt", + [ + [Literal.number 35]; + M.call_function (| + "calldatasize", + [] + |) + ] + |) + ] + |), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "revert", + [ + [Literal.number 0]; + [Literal.number 0] + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["newFreePtr"], + Some (M.call_function (| + "add", + [ + M.get_var (| "_1" |); + [Literal.number 320] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.if_ (| + M.call_function (| + "or", + [ + M.call_function (| + "gt", + [ + M.get_var (| "newFreePtr" |); + [Literal.number 0xffffffffffffffff] + ] + |); + M.call_function (| + "lt", + [ + M.get_var (| "newFreePtr" |); + M.get_var (| "_1" |) + ] + |) + ] + |), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 0]; + M.call_function (| + "shl", + [ + [Literal.number 224]; + [Literal.number 0x4e487b71] + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 4]; + [Literal.number 0x41] + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "revert", + [ + [Literal.number 0]; + [Literal.number 0x24] + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + [Literal.number 64]; + M.get_var (| "newFreePtr" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["dst"], + Some (M.get_var (| "_1" |)) + |) + )) in + do! ltac:(M.monadic ( + M.if_ (| + M.call_function (| + "gt", + [ + [Literal.number 324]; + M.call_function (| + "calldatasize", + [] + |) + ] + |), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "revert", + [ + [Literal.number 0]; + [Literal.number 0] + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["src"], + Some ([Literal.number 4]) + |) + )) in + do! ltac:(M.monadic ( + do! + M.scope ( + M.pure BlockUnit.Tt + ) in + ltac:(M.monadic ( + M.for_ (| + ltac:(M.monadic ( + M.call_function (| + "lt", + [ + M.get_var (| "src" |); + [Literal.number 324] + ] + |) + )), + M.scope ( + do! ltac:(M.monadic ( + M.assign (| + ["src"], + Some (M.call_function (| + "add", + [ + M.get_var (| "src" |); + [Literal.number 0x20] + ] + |)) + |) + )) in + M.pure BlockUnit.Tt + ), + M.scope ( + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.get_var (| "dst" |); + M.call_function (| + "calldataload", + [ + M.get_var (| "src" |) + ] + |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.assign (| + ["dst"], + Some (M.call_function (| + "add", + [ + M.get_var (| "dst" |); + [Literal.number 0x20] + ] + |)) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["ret"], + Some (M.call_function (| + "fun_ecGenMulmuladdX_store", + [ + M.get_var (| "_1" |); + M.call_function (| + "calldataload", + [ + [Literal.number 324] + ] + |); + M.call_function (| + "calldataload", + [ + [Literal.number 356] + ] + |) + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.declare (| + ["memPos"], + Some (M.call_function (| + "mload", + [ + [Literal.number 64] + ] + |)) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "mstore", + [ + M.get_var (| "memPos" |); + M.get_var (| "ret" |) + ] + |) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "return", + [ + M.get_var (| "memPos" |); + [Literal.number 0x20] + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + M.pure BlockUnit.Tt + ) + |) + )) in + do! ltac:(M.monadic ( + M.expr_stmt (| + M.call_function (| + "revert", + [ + [Literal.number 0]; + [Literal.number 0] + ] + |) + |) + )) in + M.pure BlockUnit.Tt + ) + )) in + M.pure BlockUnit.Tt + ); + |}. + End deployed. +End FooBar. + +Import Ltac2. + +Definition codes : list Code.t := + ltac2:( + let codes := Code.get_codes () in + exact $codes + ). + diff --git a/CoqOfSolidity/SCL_mulmuladdX_fullgen_b4_shallow.v b/CoqOfSolidity/SCL_mulmuladdX_fullgen_b4_shallow.v new file mode 100644 index 000000000000..973c87a7e94f --- /dev/null +++ b/CoqOfSolidity/SCL_mulmuladdX_fullgen_b4_shallow.v @@ -0,0 +1,384 @@ +(* Generated by prepare.py *) +Require Import CoqOfSolidity.CoqOfSolidity. +Require Import simulations.CoqOfSolidity. +Import Stdlib. + +Module FooBar_90. + + + Definition body : M.t unit := + do~ + let~ _1 := [[ memoryguard ~(| 0x80 |) ]] in + do~ [[ mstore ~(| 64, _1 |) ]] in + do~ [[ + M.if_unit (| callvalue ~(||), + do~ [[ revert ~(| 0, 0 |) ]] in + M.pure tt + |) + ]] in + let~ _2 := [[ datasize ~(| 0x466f6f4261725f39305f6465706c6f7965640000000000000000000000000000 |) ]] in + do~ [[ codecopy ~(| _1, (dataoffset ~(| 0x466f6f4261725f39305f6465706c6f7965640000000000000000000000000000 |)), _2 |) ]] in + do~ [[ return_ ~(| _1, _2 |) ]] in + M.pure tt + in + M.pure tt. + + Module FooBar_90_deployed. + Definition usr'dollar'ecAddn2_2185 (usr'dollar'x1 : U256.t) (usr'dollar'y1 : U256.t) (usr'dollar'x2 : U256.t) (usr'dollar'y2 : U256.t) (usr_p : U256.t) : M.t (U256.t * U256.t * U256.t * U256.t) := + let~ usr'dollar'y1_1 := [[ sub ~(| usr_p, usr'dollar'y1 |) ]] in + let~ usr'dollar'y2_1 := [[ addmod ~(| (mulmod ~(| usr'dollar'y2, 1, usr_p |)), usr'dollar'y1_1, usr_p |) ]] in + let~ usr'dollar'x2_1 := [[ addmod ~(| (mulmod ~(| usr'dollar'x2, 1, usr_p |)), (sub ~(| usr_p, usr'dollar'x1 |)), usr_p |) ]] in + let~ usr_x_1 := [[ mulmod ~(| usr'dollar'x2_1, usr'dollar'x2_1, usr_p |) ]] in + let~ usr_y_1 := [[ mulmod ~(| usr_x_1, usr'dollar'x2_1, usr_p |) ]] in + let~ usr_zz := [[ mulmod ~(| 1, usr_x_1, usr_p |) ]] in + let~ usr_zzz := [[ mulmod ~(| 1, usr_y_1, usr_p |) ]] in + let~ usr'dollar'zz1 := [[ mulmod ~(| usr'dollar'x1, usr_x_1, usr_p |) ]] in + let~ usr_x := [[ addmod ~(| (addmod ~(| (mulmod ~(| usr'dollar'y2_1, usr'dollar'y2_1, usr_p |)), (sub ~(| usr_p, usr_y_1 |)), usr_p |)), (mulmod ~(| (add ~(| usr_p, (not ~(| 1 |)) |)), usr'dollar'zz1, usr_p |)), usr_p |) ]] in + let~ usr_y := [[ addmod ~(| (mulmod ~(| (addmod ~(| usr'dollar'zz1, (sub ~(| usr_p, usr_x |)), usr_p |)), usr'dollar'y2_1, usr_p |)), (mulmod ~(| usr'dollar'y1_1, usr_y_1, usr_p |)), usr_p |) ]] in + M.pure (usr_x, usr_y, usr_zz, usr_zzz). + + Definition usr'dollar'ecAddn2 (usr'dollar'x1 : U256.t) (usr'dollar'y1 : U256.t) (usr'dollar'zz1 : U256.t) (usr'dollar'zzz1 : U256.t) (usr'dollar'x2 : U256.t) (usr'dollar'y2 : U256.t) (usr'dollar'_p : U256.t) : M.t (U256.t * U256.t * U256.t * U256.t) := + let~ usr'dollar'y2_1 := [[ addmod ~(| (mulmod ~(| usr'dollar'y2, usr'dollar'zzz1, usr'dollar'_p |)), (sub ~(| usr'dollar'_p, usr'dollar'y1 |)), usr'dollar'_p |) ]] in + let~ usr'dollar'x2_1 := [[ addmod ~(| (mulmod ~(| usr'dollar'x2, usr'dollar'zz1, usr'dollar'_p |)), (sub ~(| usr'dollar'_p, usr'dollar'x1 |)), usr'dollar'_p |) ]] in + let~ usr_x_1 := [[ mulmod ~(| usr'dollar'x2_1, usr'dollar'x2_1, usr'dollar'_p |) ]] in + let~ usr_y_1 := [[ mulmod ~(| usr_x_1, usr'dollar'x2_1, usr'dollar'_p |) ]] in + let~ usr_zz := [[ mulmod ~(| usr'dollar'zz1, usr_x_1, usr'dollar'_p |) ]] in + let~ usr_zzz := [[ mulmod ~(| usr'dollar'zzz1, usr_y_1, usr'dollar'_p |) ]] in + let~ usr'dollar'zz1_1 := [[ mulmod ~(| usr'dollar'x1, usr_x_1, usr'dollar'_p |) ]] in + let~ usr_x := [[ addmod ~(| (addmod ~(| (mulmod ~(| usr'dollar'y2_1, usr'dollar'y2_1, usr'dollar'_p |)), (sub ~(| usr'dollar'_p, usr_y_1 |)), usr'dollar'_p |)), (mulmod ~(| (add ~(| usr'dollar'_p, (not ~(| 1 |)) |)), usr'dollar'zz1_1, usr'dollar'_p |)), usr'dollar'_p |) ]] in + let~ usr_y := [[ addmod ~(| (mulmod ~(| (addmod ~(| usr'dollar'zz1_1, (sub ~(| usr'dollar'_p, usr_x |)), usr'dollar'_p |)), usr'dollar'y2_1, usr'dollar'_p |)), (mulmod ~(| (sub ~(| usr'dollar'_p, usr'dollar'y1 |)), usr_y_1, usr'dollar'_p |)), usr'dollar'_p |) ]] in + M.pure (usr_x, usr_y, usr_zz, usr_zzz). + + Definition fun_ecGenMulmuladdX_store_2808 : M.t unit := + do~ [[ mstore ~(| 0xa0, 0 |) ]] in + do~ [[ mstore ~(| 0x01a0, (shl ~(| 127, 1 |)) |) ]] in + let~ expr := [[ iszero ~(| (mload ~(| 0x0120 |)) |) ]] in + do~ [[ + M.if_unit (| expr, + let~ expr := [[ iszero ~(| (mload ~(| 0x0160 |)) |) ]] in + M.pure tt + |) + ]] in + do~ [[ + M.if_unit (| expr, + do~ [[ mstore ~(| 0xa0, 0 |) ]] in + do~ [[ M.leave ]] in + M.pure tt + |) + ]] in + do~ [[ mstore ~(| 0x0100, 0 |) ]] in + do~ [[ mstore ~(| 0xe0, 0 |) ]] in + do~ [[ mstore ~(| 0x01c0, 0 |) ]] in + let~ _1 := [[ mload ~(| 0x40 |) ]] in + do~ [[ mstore ~(| 0x40, (add ~(| _1, 2048 |)) |) ]] in + do~ [[ mstore ~(| (add ~(| _1, 4128 |)), (mload ~(| (add ~(| (mload ~(| 0x0140 |)), 128 |)) |)) |) ]] in + let~ _2 := [[ mload ~(| 0x40 |) ]] in + let~ usr_modulusp := [[ mload ~(| (add ~(| _2, 2080 |)) |) ]] in + let~ _3 := [[ add ~(| (mload ~(| 0x0140 |)), 224 |) ]] in + let~ _4 := [[ mload ~(| _3 |) ]] in + let~ _5 := [[ add ~(| (mload ~(| 0x0140 |)), 192 |) ]] in + do~ [[ mstore ~(| (add ~(| 128, _2 |)), (mload ~(| _5 |)) |) ]] in + do~ [[ mstore ~(| (add ~(| _2, 160 |)), _4 |) ]] in + do~ [[ mstore ~(| (add ~(| _2, 192 |)), 1 |) ]] in + do~ [[ mstore ~(| (add ~(| _2, 224 |)), 1 |) ]] in + let~ _6 := [[ add ~(| (mload ~(| 0x0140 |)), 288 |) ]] in + let~ _7 := [[ mload ~(| _6 |) ]] in + let~ _8 := [[ add ~(| (mload ~(| 0x0140 |)), 256 |) ]] in + let~ _9 := [[ mload ~(| _8 |) ]] in + let~ _10 := [[ mload ~(| 0x40 |) ]] in + do~ [[ mstore ~(| (add ~(| 256, _10 |)), _9 |) ]] in + do~ [[ mstore ~(| (add ~(| _10, 288 |)), _7 |) ]] in + do~ [[ mstore ~(| (add ~(| _10, 320 |)), 1 |) ]] in + do~ [[ mstore ~(| (add ~(| _10, 352 |)), 1 |) ]] in + let~ var_X := [[ mload ~(| _8 |) ]] in + let~ var_Y := [[ mload ~(| _6 |) ]] in + let~ '(var_X_1, var_Y_1, var_ZZ, var_ZZZ) := [[ usr'dollar'ecAddn2_2185 ~(| var_X, var_Y, (mload ~(| _5 |)), (mload ~(| _3 |)), usr_modulusp |) ]] in + let~ _11 := [[ mload ~(| 0x40 |) ]] in + do~ [[ mstore ~(| (add ~(| 384, _11 |)), var_X_1 |) ]] in + do~ [[ mstore ~(| (add ~(| _11, 416 |)), var_Y_1 |) ]] in + do~ [[ mstore ~(| (add ~(| _11, 448 |)), var_ZZ |) ]] in + do~ [[ mstore ~(| (add ~(| _11, 480 |)), var_ZZZ |) ]] in + let~ _12 := [[ mload ~(| (add ~(| 32, (mload ~(| 0x0140 |)) |)) |) ]] in + let~ _13 := [[ mload ~(| (mload ~(| 0x0140 |)) |) ]] in + let~ _14 := [[ mload ~(| 0x40 |) ]] in + do~ [[ mstore ~(| (add ~(| 512, _14 |)), _13 |) ]] in + do~ [[ mstore ~(| (add ~(| _14, 544 |)), _12 |) ]] in + do~ [[ mstore ~(| (add ~(| _14, 576 |)), 1 |) ]] in + do~ [[ mstore ~(| (add ~(| _14, 608 |)), 1 |) ]] in + let~ _15 := [[ mload ~(| _3 |) ]] in + let~ _16 := [[ mload ~(| _5 |) ]] in + let~ _17 := [[ add ~(| (mload ~(| 0x0140 |)), 32 |) ]] in + let~ '(var_X_2, var_Y_2, var_ZZ_1, var_ZZZ_1) := [[ usr'dollar'ecAddn2_2185 ~(| (mload ~(| (mload ~(| 0x0140 |)) |)), (mload ~(| _17 |)), _16, _15, usr_modulusp |) ]] in + let~ _18 := [[ mload ~(| 0x40 |) ]] in + do~ [[ mstore ~(| (add ~(| 640, _18 |)), var_X_2 |) ]] in + do~ [[ mstore ~(| (add ~(| _18, 672 |)), var_Y_2 |) ]] in + do~ [[ mstore ~(| (add ~(| _18, 704 |)), var_ZZ_1 |) ]] in + do~ [[ mstore ~(| (add ~(| _18, 736 |)), var_ZZZ_1 |) ]] in + let~ var_X_3 := [[ mload ~(| _8 |) ]] in + let~ var_Y_3 := [[ mload ~(| _6 |) ]] in + let~ '(var_X_4, var_Y_4, var_ZZ_2, var_ZZZ_2) := [[ usr'dollar'ecAddn2_2185 ~(| var_X_3, var_Y_3, (mload ~(| (mload ~(| 0x0140 |)) |)), (mload ~(| _17 |)), usr_modulusp |) ]] in + let~ _19 := [[ mload ~(| 0x40 |) ]] in + do~ [[ mstore ~(| (add ~(| 768, _19 |)), var_X_4 |) ]] in + do~ [[ mstore ~(| (add ~(| _19, 800 |)), var_Y_4 |) ]] in + do~ [[ mstore ~(| (add ~(| _19, 832 |)), var_ZZ_2 |) ]] in + do~ [[ mstore ~(| (add ~(| _19, 864 |)), var_ZZZ_2 |) ]] in + let~ '(var_X_5, var_Y_5, var_ZZ_3, var_ZZZ_3) := [[ usr'dollar'ecAddn2 ~(| var_X_4, var_Y_4, var_ZZ_2, var_ZZZ_2, (mload ~(| _5 |)), (mload ~(| _3 |)), usr_modulusp |) ]] in + let~ _20 := [[ mload ~(| 0x40 |) ]] in + do~ [[ mstore ~(| (add ~(| 896, _20 |)), var_X_5 |) ]] in + do~ [[ mstore ~(| (add ~(| _20, 928 |)), var_Y_5 |) ]] in + do~ [[ mstore ~(| (add ~(| _20, 960 |)), var_ZZ_3 |) ]] in + do~ [[ mstore ~(| (add ~(| _20, 992 |)), var_ZZZ_3 |) ]] in + let~ _21 := [[ add ~(| (mload ~(| 0x0140 |)), 96 |) ]] in + let~ _22 := [[ mload ~(| _21 |) ]] in + let~ _23 := [[ add ~(| (mload ~(| 0x0140 |)), 0x40 |) ]] in + let~ _24 := [[ mload ~(| _23 |) ]] in + let~ _25 := [[ mload ~(| 0x40 |) ]] in + do~ [[ mstore ~(| (add ~(| 1024, _25 |)), _24 |) ]] in + do~ [[ mstore ~(| (add ~(| _25, 1056 |)), _22 |) ]] in + do~ [[ mstore ~(| (add ~(| _25, 1088 |)), 1 |) ]] in + do~ [[ mstore ~(| (add ~(| _25, 1120 |)), 1 |) ]] in + let~ _26 := [[ mload ~(| 0x40 |) ]] in + let~ '(var_X_6, var_Y_6, var_ZZ_4, var_ZZZ_4) := [[ usr'dollar'ecAddn2_2185 ~(| (mload ~(| _23 |)), (mload ~(| _21 |)), (mload ~(| _5 |)), (mload ~(| _3 |)), (mload ~(| (add ~(| _26, 2080 |)) |)) |) ]] in + do~ [[ mstore ~(| (add ~(| 1152, _26 |)), var_X_6 |) ]] in + do~ [[ mstore ~(| (add ~(| _26, 1184 |)), var_Y_6 |) ]] in + do~ [[ mstore ~(| (add ~(| _26, 1216 |)), var_ZZ_4 |) ]] in + do~ [[ mstore ~(| (add ~(| _26, 1248 |)), var_ZZZ_4 |) ]] in + let~ var_X_7 := [[ mload ~(| _8 |) ]] in + let~ var_Y_7 := [[ mload ~(| _6 |) ]] in + let~ _27 := [[ mload ~(| 0x40 |) ]] in + let~ '(var_X_8, var_Y_8, var_ZZ_5, var_ZZZ_5) := [[ usr'dollar'ecAddn2_2185 ~(| (mload ~(| _23 |)), (mload ~(| _21 |)), var_X_7, var_Y_7, (mload ~(| (add ~(| _27, 2080 |)) |)) |) ]] in + do~ [[ mstore ~(| (add ~(| 1280, _27 |)), var_X_8 |) ]] in + do~ [[ mstore ~(| (add ~(| _27, 1312 |)), var_Y_8 |) ]] in + do~ [[ mstore ~(| (add ~(| _27, 1344 |)), var_ZZ_5 |) ]] in + do~ [[ mstore ~(| (add ~(| _27, 1376 |)), var_ZZZ_5 |) ]] in + let~ _28 := [[ mload ~(| 0x40 |) ]] in + let~ '(var_X_9, var_Y_9, var_ZZ_6, var_ZZZ_6) := [[ usr'dollar'ecAddn2 ~(| var_X_8, var_Y_8, var_ZZ_5, var_ZZZ_5, (mload ~(| _5 |)), (mload ~(| _3 |)), (mload ~(| (add ~(| _28, 2080 |)) |)) |) ]] in + do~ [[ mstore ~(| (add ~(| 1408, _28 |)), var_X_9 |) ]] in + do~ [[ mstore ~(| (add ~(| _28, 1440 |)), var_Y_9 |) ]] in + do~ [[ mstore ~(| (add ~(| _28, 1472 |)), var_ZZ_6 |) ]] in + do~ [[ mstore ~(| (add ~(| _28, 1504 |)), var_ZZZ_6 |) ]] in + let~ _29 := [[ mload ~(| 0x40 |) ]] in + let~ '(var_X_10, var_Y_10, var_ZZ_7, var_ZZZ_7) := [[ usr'dollar'ecAddn2_2185 ~(| (mload ~(| (mload ~(| 0x0140 |)) |)), (mload ~(| _17 |)), (mload ~(| _23 |)), (mload ~(| _21 |)), (mload ~(| (add ~(| _29, 2080 |)) |)) |) ]] in + do~ [[ mstore ~(| (add ~(| 1536, _29 |)), var_X_10 |) ]] in + do~ [[ mstore ~(| (add ~(| _29, 1568 |)), var_Y_10 |) ]] in + do~ [[ mstore ~(| (add ~(| _29, 1600 |)), var_ZZ_7 |) ]] in + do~ [[ mstore ~(| (add ~(| _29, 1632 |)), var_ZZZ_7 |) ]] in + let~ _30 := [[ mload ~(| 0x40 |) ]] in + let~ '(var_X_11, var_Y_11, var_ZZ_8, var_ZZZ_8) := [[ usr'dollar'ecAddn2 ~(| var_X_10, var_Y_10, var_ZZ_7, var_ZZZ_7, (mload ~(| _5 |)), (mload ~(| _3 |)), (mload ~(| (add ~(| _30, 2080 |)) |)) |) ]] in + do~ [[ mstore ~(| (add ~(| 1664, _30 |)), var_X_11 |) ]] in + do~ [[ mstore ~(| (add ~(| _30, 1696 |)), var_Y_11 |) ]] in + do~ [[ mstore ~(| (add ~(| _30, 1728 |)), var_ZZ_8 |) ]] in + do~ [[ mstore ~(| (add ~(| _30, 1760 |)), var_ZZZ_8 |) ]] in + let~ _31 := [[ mload ~(| 0x40 |) ]] in + let~ var_X_12 := [[ mload ~(| (add ~(| 768, _31 |)) |) ]] in + let~ var_Y_12 := [[ mload ~(| (add ~(| 800, _31 |)) |) ]] in + let~ var_ZZ_9 := [[ mload ~(| (add ~(| 832, _31 |)) |) ]] in + let~ var_ZZZ_9 := [[ mload ~(| (add ~(| 864, _31 |)) |) ]] in + let~ '(var_X_13, var_Y_13, var_ZZ_10, var_ZZZ_10) := [[ usr'dollar'ecAddn2 ~(| var_X_12, var_Y_12, var_ZZ_9, var_ZZZ_9, (mload ~(| _23 |)), (mload ~(| _21 |)), (mload ~(| (add ~(| _31, 2080 |)) |)) |) ]] in + do~ [[ mstore ~(| (add ~(| 1792, _31 |)), var_X_13 |) ]] in + do~ [[ mstore ~(| (add ~(| _31, 1824 |)), var_Y_13 |) ]] in + do~ [[ mstore ~(| (add ~(| _31, 1856 |)), var_ZZ_10 |) ]] in + do~ [[ mstore ~(| (add ~(| _31, 1888 |)), var_ZZZ_10 |) ]] in + let~ _32 := [[ mload ~(| 0x40 |) ]] in + let~ '(var_X_14, var_Y_14, var_ZZ_11, var_ZZZ_11) := [[ usr'dollar'ecAddn2 ~(| var_X_13, var_Y_13, var_ZZ_10, var_ZZZ_10, (mload ~(| _5 |)), (mload ~(| _3 |)), (mload ~(| (add ~(| _32, 2080 |)) |)) |) ]] in + do~ [[ mstore ~(| (add ~(| 1920, _32 |)), var_X_14 |) ]] in + do~ [[ mstore ~(| (add ~(| _32, 1952 |)), var_Y_14 |) ]] in + do~ [[ mstore ~(| (add ~(| _32, 1984 |)), var_ZZ_11 |) ]] in + do~ [[ mstore ~(| (add ~(| _32, 2016 |)), var_ZZZ_11 |) ]] in + do~ [[ mstore ~(| 0xe0, 0 |) ]] in + do~ + (* for loop *) + (* pre *) + do~ + M.pure tt + in + M.for_unit + (* condition *) + [[ iszero ~(| (mload ~(| 0xe0 |)) |) ]] + (* body *) + (do~ [[ mstore ~(| 0xe0, (add ~(| (add ~(| (sub ~(| 1, (iszero ~(| (and ~(| (mload ~(| 0x0120 |)), (mload ~(| 0x01a0 |)) |)) |)) |)), (shl ~(| 1, (sub ~(| 1, (iszero ~(| (and ~(| (shr ~(| 128, (mload ~(| 0x0120 |)) |)), (mload ~(| 0x01a0 |)) |)) |)) |)) |)) |)), (add ~(| (shl ~(| 2, (sub ~(| 1, (iszero ~(| (and ~(| (mload ~(| 0x0160 |)), (mload ~(| 0x01a0 |)) |)) |)) |)) |)), (shl ~(| 3, (sub ~(| 1, (iszero ~(| (and ~(| (shr ~(| 128, (mload ~(| 0x0160 |)) |)), (mload ~(| 0x01a0 |)) |)) |)) |)) |)) |)) |)) |) ]] in + M.pure tt) + (* post *) + (do~ [[ mstore ~(| 0x01a0, (shr ~(| 1, (mload ~(| 0x01a0 |)) |)) |) ]] in + M.pure tt) + in + do~ [[ mstore ~(| 0x0180, (mload ~(| 0x40 |)) |) ]] in + let~ _33 := [[ add ~(| (mload ~(| 0x0180 |)), (shl ~(| 7, (mload ~(| 0xe0 |)) |)) |) ]] in + do~ [[ mstore ~(| 0xa0, (mload ~(| _33 |)) |) ]] in + do~ [[ mstore ~(| 0x0100, (mload ~(| (add ~(| _33, 32 |)) |)) |) ]] in + do~ [[ mstore ~(| 0x01c0, (mload ~(| (add ~(| _33, 0x40 |)) |)) |) ]] in + do~ [[ mstore ~(| 0xe0, (mload ~(| (add ~(| _33, 96 |)) |)) |) ]] in + do~ [[ mstore ~(| 0x01e0, (mload ~(| (add ~(| (mload ~(| 0x0180 |)), 2080 |)) |)) |) ]] in + do~ + (* for loop *) + (* pre *) + do~ + M.pure tt + in + M.for_unit + (* condition *) + [[ mload ~(| 0x01a0 |) ]] + (* body *) + (do~ [[ mstore ~(| 0xc0, (mulmod ~(| (mload ~(| 0xa0 |)), (mulmod ~(| (mulmod ~(| 2, (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| 2, (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)) |) ]] in + let~ usr'dollar'T4 := [[ addmod ~(| (mulmod ~(| 3, (mulmod ~(| (mload ~(| 0xa0 |)), (mload ~(| 0xa0 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (mload ~(| (add ~(| (mload ~(| 0x0140 |)), 160 |)) |)), (mulmod ~(| (mload ~(| 0x01c0 |)), (mload ~(| 0x01c0 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |) ]] in + do~ [[ mstore ~(| 0xe0, (mulmod ~(| (mulmod ~(| (mulmod ~(| 2, (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (mulmod ~(| 2, (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| 2, (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0xe0 |)), (mload ~(| 0x01e0 |)) |)) |) ]] in + do~ [[ mstore ~(| 0x01c0, (mulmod ~(| (mulmod ~(| (mulmod ~(| 2, (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| 2, (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01c0 |)), (mload ~(| 0x01e0 |)) |)) |) ]] in + do~ [[ mstore ~(| 0xa0, (addmod ~(| (mulmod ~(| usr'dollar'T4, usr'dollar'T4, (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)), (mload ~(| 0xc0 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)) |) ]] in + do~ [[ mstore ~(| 0x0100, (addmod ~(| (mulmod ~(| (mulmod ~(| (mulmod ~(| 2, (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (mulmod ~(| 2, (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| 2, (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| usr'dollar'T4, (addmod ~(| (mload ~(| 0xa0 |)), (sub ~(| (mload ~(| 0x01e0 |)), (mload ~(| 0xc0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)) |) ]] in + let~ usr'dollar'T1 := [[ add ~(| (add ~(| (sub ~(| 1, (iszero ~(| (and ~(| (mload ~(| 0x0120 |)), (mload ~(| 0x01a0 |)) |)) |)) |)), (shl ~(| 1, (sub ~(| 1, (iszero ~(| (and ~(| (shr ~(| 128, (mload ~(| 0x0120 |)) |)), (mload ~(| 0x01a0 |)) |)) |)) |)) |)) |)), (add ~(| (shl ~(| 2, (sub ~(| 1, (iszero ~(| (and ~(| (mload ~(| 0x0160 |)), (mload ~(| 0x01a0 |)) |)) |)) |)) |)), (shl ~(| 3, (sub ~(| 1, (iszero ~(| (and ~(| (shr ~(| 128, (mload ~(| 0x0160 |)) |)), (mload ~(| 0x01a0 |)) |)) |)) |)) |)) |)) |) ]] in + do~ [[ + M.if_unit (| iszero ~(| usr'dollar'T1 |), + do~ [[ mstore ~(| 0x0100, (sub ~(| (mload ~(| 0x01e0 |)), (mload ~(| 0x0100 |)) |)) |) ]] in + do~ [[ M.continue ]] in + M.pure tt + |) + ]] in + let~ usr'dollar'T4_1 := [[ mload ~(| (add ~(| (mload ~(| 0x0180 |)), (shl ~(| 7, usr'dollar'T1 |)) |)) |) ]] in + let~ _34 := [[ add ~(| (add ~(| (mload ~(| 0x0180 |)), (shl ~(| 7, usr'dollar'T1 |)) |)), 96 |) ]] in + let~ _35 := [[ mload ~(| _34 |) ]] in + do~ [[ mstore ~(| (add ~(| (mload ~(| 0x0180 |)), 2144 |)), _35 |) ]] in + do~ [[ + M.if_unit (| iszero ~(| (mload ~(| 0x01c0 |)) |), + do~ [[ mstore ~(| 0xa0, usr'dollar'T4_1 |) ]] in + do~ [[ mstore ~(| 0x0100, (mload ~(| (add ~(| (add ~(| (mload ~(| 0x0180 |)), (shl ~(| 7, usr'dollar'T1 |)) |)), 32 |)) |)) |) ]] in + do~ [[ mstore ~(| 0x01c0, (mload ~(| (add ~(| (add ~(| (mload ~(| 0x0180 |)), (shl ~(| 7, usr'dollar'T1 |)) |)), 0x40 |)) |)) |) ]] in + do~ [[ mstore ~(| 0xe0, (mload ~(| _34 |)) |) ]] in + do~ [[ M.continue ]] in + M.pure tt + |) + ]] in + let~ _36 := [[ addmod ~(| (mulmod ~(| (mload ~(| (add ~(| (add ~(| (mload ~(| 0x0180 |)), (shl ~(| 7, usr'dollar'T1 |)) |)), 32 |)) |)), (mload ~(| 0xe0 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (mload ~(| 0x0100 |)), _35, (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |) ]] in + do~ [[ mstore ~(| (add ~(| (mload ~(| 0x0180 |)), 2112 |)), _36 |) ]] in + let~ usr'dollar'T1_1 := [[ mload ~(| (add ~(| (add ~(| (mload ~(| 0x0180 |)), (shl ~(| 7, usr'dollar'T1 |)) |)), 0x40 |)) |) ]] in + let~ usr'dollar'T2 := [[ addmod ~(| (mulmod ~(| usr'dollar'T4_1, (mload ~(| 0x01c0 |)), (mload ~(| 0x01e0 |)) |)), (sub ~(| (mload ~(| 0x01e0 |)), (mulmod ~(| (mload ~(| 0xa0 |)), usr'dollar'T1_1, (mload ~(| 0x01e0 |)) |)) |)), (mload ~(| 0x01e0 |)) |) ]] in + do~ [[ + M.if_unit (| iszero ~(| _36 |), + do~ [[ + M.if_unit (| iszero ~(| usr'dollar'T2 |), + do~ [[ mstore ~(| 0x80, (mulmod ~(| (mload ~(| 0xa0 |)), (mulmod ~(| (mulmod ~(| (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)), (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)), (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)) |) ]] in + do~ [[ mstore ~(| (add ~(| (mload ~(| 0x0180 |)), 2112 |)), (mload ~(| 0x80 |)) |) ]] in + let~ usr'dollar'T4_1 := [[ addmod ~(| (mulmod ~(| 3, (mulmod ~(| (mload ~(| 0xa0 |)), (mload ~(| 0xa0 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (mload ~(| (add ~(| (mload ~(| 0x0140 |)), 160 |)) |)), (mulmod ~(| (mload ~(| 0x01c0 |)), (mload ~(| 0x01c0 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |) ]] in + do~ [[ mstore ~(| 0xe0, (mulmod ~(| (mulmod ~(| (mulmod ~(| (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)), (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (mulmod ~(| (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)), (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)), (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0xe0 |)), (mload ~(| 0x01e0 |)) |)) |) ]] in + do~ [[ mstore ~(| 0x01c0, (mulmod ~(| (mulmod ~(| (mulmod ~(| (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)), (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)), (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01c0 |)), (mload ~(| 0x01e0 |)) |)) |) ]] in + do~ [[ mstore ~(| 0xa0, (addmod ~(| (mulmod ~(| usr'dollar'T4_1, usr'dollar'T4_1, (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)), (mload ~(| 0x80 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)) |) ]] in + let~ usr'dollar'T2 := [[ mulmod ~(| usr'dollar'T4_1, (addmod ~(| (mload ~(| 0x80 |)), (sub ~(| (mload ~(| 0x01e0 |)), (mload ~(| 0xa0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |) ]] in + do~ [[ mstore ~(| 0x0100, (addmod ~(| usr'dollar'T2, (mulmod ~(| (mulmod ~(| (mulmod ~(| (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)), (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (mulmod ~(| (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)), (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)), (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x0100 |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)) |) ]] in + do~ [[ M.continue ]] in + M.pure tt + |) + ]] in + M.pure tt + |) + ]] in + do~ [[ mstore ~(| 0x01c0, (mulmod ~(| (mulmod ~(| (mload ~(| 0x01c0 |)), (mulmod ~(| usr'dollar'T2, usr'dollar'T2, (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), usr'dollar'T1_1, (mload ~(| 0x01e0 |)) |)) |) ]] in + let~ usr'dollar'T1_2 := [[ mulmod ~(| (mload ~(| 0xa0 |)), usr'dollar'T1_1, (mload ~(| 0x01e0 |)) |) ]] in + do~ [[ mstore ~(| 0xe0, (mulmod ~(| (mulmod ~(| (mload ~(| 0xe0 |)), (mulmod ~(| (mulmod ~(| usr'dollar'T2, usr'dollar'T2, (mload ~(| 0x01e0 |)) |)), usr'dollar'T2, (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), _35, (mload ~(| 0x01e0 |)) |)) |) ]] in + let~ _37 := [[ mload ~(| (add ~(| (mload ~(| 0x0180 |)), 2112 |)) |) ]] in + do~ [[ mstore ~(| 0xa0, (addmod ~(| (addmod ~(| (mulmod ~(| _37, _37, (mload ~(| 0x01e0 |)) |)), (sub ~(| (mload ~(| 0x01e0 |)), (mulmod ~(| (mulmod ~(| usr'dollar'T2, usr'dollar'T2, (mload ~(| 0x01e0 |)) |)), usr'dollar'T2, (mload ~(| 0x01e0 |)) |)) |)), (mload ~(| 0x01e0 |)) |)), (mulmod ~(| usr'dollar'T1_2, (mulmod ~(| (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)), (mulmod ~(| usr'dollar'T2, usr'dollar'T2, (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)) |) ]] in + do~ [[ mstore ~(| 0x0100, (addmod ~(| (mulmod ~(| (addmod ~(| (mulmod ~(| usr'dollar'T1_2, (mulmod ~(| usr'dollar'T2, usr'dollar'T2, (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (sub ~(| (mload ~(| 0x01e0 |)), (mload ~(| 0xa0 |)) |)), (mload ~(| 0x01e0 |)) |)), _37, (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (mulmod ~(| (mload ~(| 0x0100 |)), _35, (mload ~(| 0x01e0 |)) |)), (mulmod ~(| (mulmod ~(| usr'dollar'T2, usr'dollar'T2, (mload ~(| 0x01e0 |)) |)), usr'dollar'T2, (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)), (mload ~(| 0x01e0 |)) |)) |) ]] in + M.pure tt) + (* post *) + (do~ [[ mstore ~(| 0x01a0, (shr ~(| 1, (mload ~(| 0x01a0 |)) |)) |) ]] in + M.pure tt) + in + do~ [[ mstore ~(| 0x40, 2176 |) ]] in + do~ [[ mstore ~(| 2272, (mload ~(| 0x01c0 |)) |) ]] in + do~ [[ mstore ~(| 2176, 32 |) ]] in + do~ [[ mstore ~(| 2208, 32 |) ]] in + do~ [[ mstore ~(| 2240, 32 |) ]] in + do~ [[ mstore ~(| 2304, (add ~(| (mload ~(| 0x01e0 |)), (not ~(| 1 |)) |)) |) ]] in + do~ [[ mstore ~(| 2336, (mload ~(| 0x01e0 |)) |) ]] in + do~ [[ + M.if_unit (| iszero ~(| (staticcall ~(| (not ~(| 0 |)), 0x05, 2176, 192, 2176, 32 |)) |), + do~ [[ revert ~(| 2047, 32 |) ]] in + M.pure tt + |) + ]] in + do~ [[ mstore ~(| 0xa0, (mulmod ~(| (mload ~(| 0xa0 |)), (mload ~(| 2176 |)), (mload ~(| 0x01e0 |)) |)) |) ]] in + M.pure tt. + + Definition fun_ecGenMulmuladdX_store (var_Q_mpos : U256.t) (var_scalar_u : U256.t) (var_scalar_v : U256.t) : M.t U256.t := + do~ [[ mstore ~(| 0x0140, var_Q_mpos |) ]] in + do~ [[ mstore ~(| 0x0120, var_scalar_u |) ]] in + do~ [[ mstore ~(| 0x0160, var_scalar_v |) ]] in + do~ [[ mstore ~(| 0xa0, 0 |) ]] in + do~ [[ fun_ecGenMulmuladdX_store_2808 ~(||) ]] in + let~ var_X := [[ mload ~(| 0xa0 |) ]] in + M.pure var_X. + + Definition body : M.t unit := + do~ + let~ _1 := [[ memoryguard ~(| 0x0200 |) ]] in + do~ [[ + M.if_unit (| iszero ~(| (lt ~(| (calldatasize ~(||)), 4 |)) |), + do~ [[ + M.if_unit (| eq ~(| 0x81a379ec, (shr ~(| 224, (calldataload ~(| 0 |)) |)) |), + do~ [[ + M.if_unit (| callvalue ~(||), + do~ [[ revert ~(| 0, 0 |) ]] in + M.pure tt + |) + ]] in + do~ [[ + M.if_unit (| slt ~(| (add ~(| (calldatasize ~(||)), (not ~(| 3 |)) |)), 384 |), + do~ [[ revert ~(| 0, 0 |) ]] in + M.pure tt + |) + ]] in + do~ [[ + M.if_unit (| iszero ~(| (slt ~(| 35, (calldatasize ~(||)) |)) |), + do~ [[ revert ~(| 0, 0 |) ]] in + M.pure tt + |) + ]] in + let~ newFreePtr := [[ add ~(| _1, 320 |) ]] in + do~ [[ + M.if_unit (| or ~(| (gt ~(| newFreePtr, 0xffffffffffffffff |)), (lt ~(| newFreePtr, _1 |)) |), + do~ [[ mstore ~(| 0, (shl ~(| 224, 0x4e487b71 |)) |) ]] in + do~ [[ mstore ~(| 4, 0x41 |) ]] in + do~ [[ revert ~(| 0, 0x24 |) ]] in + M.pure tt + |) + ]] in + do~ [[ mstore ~(| 64, newFreePtr |) ]] in + let~ dst := [[ _1 ]] in + do~ [[ + M.if_unit (| gt ~(| 324, (calldatasize ~(||)) |), + do~ [[ revert ~(| 0, 0 |) ]] in + M.pure tt + |) + ]] in + let~ src := [[ 4 ]] in + do~ + (* for loop *) + (* pre *) + do~ + M.pure tt + in + M.for_unit + (* condition *) + [[ lt ~(| src, 324 |) ]] + (* body *) + (do~ [[ mstore ~(| dst, (calldataload ~(| src |)) |) ]] in + let~ dst := [[ add ~(| dst, 0x20 |) ]] in + M.pure tt) + (* post *) + (let~ src := [[ add ~(| src, 0x20 |) ]] in + M.pure tt) + in + let~ ret := [[ fun_ecGenMulmuladdX_store ~(| _1, (calldataload ~(| 324 |)), (calldataload ~(| 356 |)) |) ]] in + let~ memPos := [[ mload ~(| 64 |) ]] in + do~ [[ mstore ~(| memPos, ret |) ]] in + do~ [[ return_ ~(| memPos, 0x20 |) ]] in + M.pure tt + |) + ]] in + M.pure tt + |) + ]] in + do~ [[ revert ~(| 0, 0 |) ]] in + M.pure tt + in + M.pure tt. + End FooBar_90_deployed. +End FooBar_90. diff --git a/CoqOfSolidity/test/libsolidity/semanticTests/various/erc20/prepare.py b/CoqOfSolidity/test/libsolidity/semanticTests/various/erc20/prepare.py index 11724cf8ba25..1a4e255d3a24 100644 --- a/CoqOfSolidity/test/libsolidity/semanticTests/various/erc20/prepare.py +++ b/CoqOfSolidity/test/libsolidity/semanticTests/various/erc20/prepare.py @@ -13,9 +13,11 @@ def variable_name_to_coq(name: str) -> str: "end", "return", ] + if name in reserved_names: return name + "_" - return name + + return name.replace("$", "'dollar'") def variables_names_to_coq(as_pattern: bool, variable_names) -> str: if len(variable_names) == 1: @@ -30,12 +32,18 @@ def node_in_block_to_coq(local_functions: list[str], level: int, node): if node_type in ['YulVariableDeclaration', 'YulAssignment']: return node_to_coq(local_functions, level, node) - elif node_type in ['YulBlock', 'YulIf', 'YulSwitch']: + elif node_type in ['YulIf', 'YulSwitch']: return \ "do~ [[\n" + \ indent(level + 1) + node_to_coq(local_functions, level + 1, node) + "\n" + \ indent(level) + "]] in" + elif node_type in ['YulBlock', 'YulForLoop']: + return \ + "do~\n" + \ + indent(level + 1) + node_to_coq(local_functions, level + 1, node) + "\n" + \ + indent(level) + "in" + return \ "do~ [[ " + node_to_coq(local_functions, level, node) + " ]] in" @@ -47,10 +55,8 @@ def block_to_coq(local_functions: list[str], level: int, node, result: str) -> s node_in_block_to_coq(local_functions, level, stmt) for stmt in node.get('statements', []) if stmt.get('nodeType') != 'YulFunctionDefinition' - ] - return \ - ("\n" + indent(level)).join(statements) + "\n" + \ - indent(level) + result + ] + [result] + return ("\n" + indent(level)).join(statements) return "(* Unsupported block node type: {node_type} *)" @@ -166,6 +172,30 @@ def node_to_coq(local_functions: list[str], level: int, node) -> str: elif node_type == 'YulLeave': return "M.leave" + elif node_type == 'YulBreak': + return "M.break" + + elif node_type == 'YulContinue': + return "M.continue" + + elif node_type == 'YulForLoop': + pre = node_in_block_to_coq(local_functions, level, node.get('pre')) + condition = node_to_coq(local_functions, level + 1, node.get('condition')) + post = node_to_coq(local_functions, level + 1, node.get('post')) + body = node_to_coq(local_functions, level + 1, node.get('body')) + + return \ + "(* for loop *)\n" + \ + indent(level) + "(* pre *)\n" + \ + indent(level) + pre + "\n" + \ + indent(level) + "M.for_unit\n" + \ + indent(level + 1) + "(* condition *)\n" + \ + indent(level + 1) + "[[ " + condition + " ]]\n" + \ + indent(level + 1) + "(* body *)\n" + \ + indent(level + 1) + "(" + body + ")\n" + \ + indent(level + 1) + "(* post *)\n" + \ + indent(level + 1) + "(" + post + ")" + else: return f"(* Unsupported node type: {node_type} *)" @@ -188,7 +218,7 @@ def function_result_type(arity: int) -> str: return "(" + " * ".join(["U256.t"] * arity) + ")" def function_definition_to_coq(local_functions: list[str], level: int, node) -> str: - name = node.get('name') + name = variable_name_to_coq(node.get('name')) params = ''.join([ " (" + variable_name_to_coq(p['name']) + " : U256.t)" for p in node.get('parameters', [])