solidity/test/libyul/yulOptimizerTests/fullSuite/ackermann_function_if.yul
2021-03-29 11:02:31 +02:00

2493 lines
56 KiB
Plaintext

// https://en.wikipedia.org/wiki/Ackermann_function
// Test to see how FunctionSpecializer deals with functions that are too recursive / resource intensive.
// Unlike the test ackermann_function.yul, this one implements it using `if` and leave
{
// 5
sstore(0, A(2, 1))
// 7
sstore(1, A(2, 2))
// Too many unrolling needed. In arbitrary precision, the value is 2**65536 - 3.
sstore(2, A(4, 2))
function A(m, n) -> ret {
if eq(m, 0) {
ret := add(n, 1)
leave
}
if eq(n, 0) {
ret := A(sub(m, 1), 1)
leave
}
ret := A(sub(m, 1), A(m, sub(n, 1)))
}
}
// ----
// step: fullSuite
//
// {
// {
// sstore(0, A_330(A_329()))
// sstore(1, A_330(A_979(A_978())))
// sstore(2, A_334(A_981(A_980())))
// }
// function A_985() -> ret
// {
// if iszero(ret)
// {
// ret := 2
// leave
// }
// ret := A_2034(A_2033())
// }
// function A_2046() -> ret
// {
// if iszero(ret)
// {
// ret := 2
// leave
// }
// ret := A_4020(A_4019())
// }
// function A_4029() -> ret
// {
// if iszero(ret)
// {
// ret := 2
// leave
// }
// ret := A_7449(A_7448())
// }
// function A_7476() -> ret
// {
// if iszero(ret)
// {
// ret := 2
// leave
// }
// ret := A_11900(A_11899())
// }
// function A_11923() -> ret
// {
// if iszero(ret)
// {
// ret := 2
// leave
// }
// ret := A_17382(A_17381())
// }
// function A_17431() -> ret
// {
// if iszero(ret)
// {
// ret := 2
// leave
// }
// ret := A_24015(A_24014())
// }
// function A_24074() -> ret
// {
// if iszero(ret)
// {
// ret := 2
// leave
// }
// ret := A_31962(A_31961())
// }
// function A_32021() -> ret
// {
// if iszero(ret)
// {
// ret := 2
// leave
// }
// ret := A_41359(A_41358())
// }
// function A_41451() -> ret
// {
// if iszero(ret)
// {
// ret := 2
// leave
// }
// ret := A_52312(A_52311())
// }
// function A_52357() -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52360() -> ret
// {
// let m := not(2)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52363() -> ret
// {
// let m := not(1)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52366() -> ret
// {
// let m := not(0)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, m), A_341(m))
// }
// function A_52393() -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52398() -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52399() -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52400() -> ret
// {
// let m := not(5)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52409() -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52410() -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52411() -> ret
// {
// if iszero(ret)
// {
// ret := 2
// leave
// }
// ret := A(add(0, not(0)), A_341(0))
// }
// function A_52412() -> ret
// {
// let m := not(2)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52413() -> ret
// {
// let m := not(5)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52414() -> ret
// {
// let m := not(6)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52429() -> ret
// {
// let m := not(2)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52430() -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52431() -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52432() -> ret
// {
// let m := not(1)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52433() -> ret
// {
// if iszero(1)
// {
// ret := 2
// leave
// }
// ret := A(add(1, not(0)), A_341(1))
// }
// function A_52434() -> ret
// {
// let m := not(5)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52435() -> ret
// {
// let m := not(6)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52436() -> ret
// {
// let m := not(7)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52437() -> ret
// {
// if iszero(ret)
// {
// ret := 2
// leave
// }
// ret := A(add(0, not(0)), A_341(0))
// }
// function A_52458() -> ret
// {
// let m := not(1)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52463() -> ret
// {
// if iszero(ret)
// {
// ret := 2
// leave
// }
// ret := A(add(0, not(0)), A_341(0))
// }
// function A_52466() -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52469() -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52472() -> ret
// {
// let m := not(2)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52482() -> ret
// {
// if iszero(2)
// {
// ret := 2
// leave
// }
// ret := A(add(2, not(0)), A_341(2))
// }
// function A_52485() -> ret
// {
// let m := not(5)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52494() -> ret
// {
// let m := not(6)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52503() -> ret
// {
// let m := not(0)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, m), A_341(m))
// }
// function A_52512() -> ret
// {
// let m := not(7)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52536() -> ret
// {
// let m := not(8)
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_52575() -> ret
// {
// if iszero(1)
// {
// ret := 2
// leave
// }
// ret := A(add(1, not(0)), A_341(1))
// }
// function A_72(m) -> ret
// {
// if iszero(m)
// {
// ret := 2
// leave
// }
// ret := A(add(m, not(0)), A_341(m))
// }
// function A_329() -> ret
// {
// if iszero(ret)
// {
// ret := A_2038(A_4029())
// leave
// }
// ret := A_979(A_2040(A_4031(A_7465(A_11922(A_17410(A_24045(A_31994(A_41405(A_52354(A_52353()))))))))))
// }
// function A_330(n) -> ret
// {
// if iszero(n)
// {
// ret := A_985()
// leave
// }
// ret := A_987(A_979(add(n, not(0))))
// }
// function A_334(n) -> ret
// {
// if iszero(n)
// {
// ret := A_2040(A_7467(A_11923()))
// leave
// }
// ret := A_997(A_981(add(n, not(0))))
// }
// function A_2033() -> ret
// {
// if iszero(ret)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_7469(A_17412(A_31996(A_52356(A_52355()))))
// }
// function A_4019() -> ret
// {
// if iszero(ret)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_11926(A_24048(A_41408(A_52357())))
// }
// function A_7448() -> ret
// {
// if iszero(ret)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_17415(A_31999(A_52359(A_52358())))
// }
// function A_11899() -> ret
// {
// if iszero(ret)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_24051(A_41411(A_52360()))
// }
// function A_17381() -> ret
// {
// if iszero(ret)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_32002(A_52362(A_52361()))
// }
// function A_24014() -> ret
// {
// if iszero(ret)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_41414(A_52363())
// }
// function A_31961() -> ret
// {
// if iszero(ret)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_52365(A_52364())
// }
// function A_41358() -> ret
// {
// if iszero(ret)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_52366()
// }
// function A_52311() -> ret
// {
// if iszero(ret)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(0, not(0)))
// }
// function A_52355() -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52358() -> ret
// {
// let m := not(2)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52361() -> ret
// {
// let m := not(1)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52364() -> ret
// {
// let m := not(0)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, m))
// }
// function A_52394() -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52396() -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52401() -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52403() -> ret
// {
// let m := not(2)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52405() -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52407() -> ret
// {
// let m := not(5)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52415() -> ret
// {
// let m := not(2)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52417() -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52419() -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52421() -> ret
// {
// if iszero(1)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(1, not(0)))
// }
// function A_52423() -> ret
// {
// let m := not(5)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52425() -> ret
// {
// let m := not(1)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52427() -> ret
// {
// let m := not(6)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52438() -> ret
// {
// let m := not(1)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52440() -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52442() -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52444() -> ret
// {
// let m := not(2)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52446() -> ret
// {
// if iszero(2)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(2, not(0)))
// }
// function A_52448() -> ret
// {
// let m := not(5)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52450() -> ret
// {
// let m := not(0)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, m))
// }
// function A_52452() -> ret
// {
// let m := not(6)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52454() -> ret
// {
// let m := not(7)
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_52456() -> ret
// {
// if iszero(1)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(1, not(0)))
// }
// function A_341(m) -> ret
// {
// if iszero(m)
// {
// ret := add(ret, 1)
// leave
// }
// ret := A_72(add(m, not(0)))
// }
// function A_978() -> ret
// {
// if iszero(ret)
// {
// ret := A_4037(A_7476())
// leave
// }
// ret := A_2040(A_4031(A_7465(A_11922(A_17410(A_24045(A_31994(A_41405(A_52390(A_52389())))))))))
// }
// function A_979(n) -> ret
// {
// if iszero(n)
// {
// ret := A_2046()
// leave
// }
// ret := A_2038(A_2040(add(n, not(0))))
// }
// function A_980() -> ret
// {
// if iszero(ret)
// {
// ret := A_4041(A_11922(A_24067(A_32021())))
// leave
// }
// ret := A_2051(A_4043(A_7481(A_11939(A_17430(A_24069(A_32023(A_41437(A_52392(A_52391())))))))))
// }
// function A_981(n) -> ret
// {
// if iszero(n)
// {
// ret := A_4031(A_11941(A_17431()))
// leave
// }
// ret := A_2054(A_2051(add(n, not(0))))
// }
// function A_987(n) -> ret
// {
// if iszero(ret)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_4047(A_11943(A_24071(A_41439(A_52393()))))
// leave
// }
// ret := A_2034(A_2038(add(n, not(0))))
// }
// function A_997(n) -> ret
// {
// if iszero(n)
// {
// ret := A_4037(A_7476())
// leave
// }
// ret := A_2040(A_2054(add(n, not(0))))
// }
// function A_2034(n) -> ret
// {
// if iszero(n)
// {
// ret := A_7486(A_17434(A_32026(A_52395(A_52394()))))
// leave
// }
// ret := A_4047(A_4020(add(n, not(0))))
// }
// function A_2038(n) -> ret
// {
// if iszero(ret)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_7469(A_17412(A_31996(A_52397(A_52396()))))
// leave
// }
// ret := A_4020(A_4037(add(n, not(0))))
// }
// function A_2040(n) -> ret
// {
// if iszero(n)
// {
// ret := A_4029()
// leave
// }
// ret := A_4037(A_4031(add(n, not(0))))
// }
// function A_2051(n) -> ret
// {
// if iszero(n)
// {
// ret := A_7465(A_17438(A_24074()))
// leave
// }
// ret := A_4041(A_4043(add(n, not(0))))
// }
// function A_2054(n) -> ret
// {
// if iszero(n)
// {
// ret := A_7467(A_11923())
// leave
// }
// ret := A_4031(A_4041(add(n, not(0))))
// }
// function A_4020(n) -> ret
// {
// if iszero(n)
// {
// ret := A_11943(A_24071(A_41439(A_52398())))
// leave
// }
// ret := A_7469(A_7449(add(n, not(0))))
// }
// function A_4031(n) -> ret
// {
// if iszero(n)
// {
// ret := A_7476()
// leave
// }
// ret := A_7467(A_7465(add(n, not(0))))
// }
// function A_4037(n) -> ret
// {
// if iszero(ret)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_11926(A_24048(A_41408(A_52399())))
// leave
// }
// ret := A_7449(A_7467(add(n, not(0))))
// }
// function A_4041(n) -> ret
// {
// if iszero(n)
// {
// ret := A_11941(A_17431())
// leave
// }
// ret := A_7465(A_7510(add(n, not(0))))
// }
// function A_4043(n) -> ret
// {
// if iszero(n)
// {
// ret := A_11922(A_24067(A_32021()))
// leave
// }
// ret := A_7510(A_7481(add(n, not(0))))
// }
// function A_4047(n) -> ret
// {
// if iszero(n)
// {
// ret := A_11957(A_24082(A_41447(A_52400())))
// leave
// }
// ret := A_7486(A_7469(add(n, not(0))))
// }
// function A_7449(n) -> ret
// {
// if iszero(n)
// {
// ret := A_17412(A_31996(A_52402(A_52401())))
// leave
// }
// ret := A_11926(A_11900(add(n, not(0))))
// }
// function A_7465(n) -> ret
// {
// if iszero(n)
// {
// ret := A_11923()
// leave
// }
// ret := A_11941(A_11922(add(n, not(0))))
// }
// function A_7467(n) -> ret
// {
// if iszero(ret)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_17415(A_31999(A_52404(A_52403())))
// leave
// }
// ret := A_11900(A_11941(add(n, not(0))))
// }
// function A_7469(n) -> ret
// {
// if iszero(n)
// {
// ret := A_17434(A_32026(A_52406(A_52405())))
// leave
// }
// ret := A_11943(A_11926(add(n, not(0))))
// }
// function A_7481(n) -> ret
// {
// if iszero(n)
// {
// ret := A_17410(A_32040(A_41451()))
// leave
// }
// ret := A_11981(A_11939(add(n, not(0))))
// }
// function A_7486(n) -> ret
// {
// if iszero(n)
// {
// ret := A_17453(A_32042(A_52408(A_52407())))
// leave
// }
// ret := A_11957(A_11943(add(n, not(0))))
// }
// function A_7510(n) -> ret
// {
// if iszero(n)
// {
// ret := A_17438(A_24074())
// leave
// }
// ret := A_11922(A_11981(add(n, not(0))))
// }
// function A_11900(n) -> ret
// {
// if iszero(n)
// {
// ret := A_24048(A_41408(A_52409()))
// leave
// }
// ret := A_17415(A_17382(add(n, not(0))))
// }
// function A_11922(n) -> ret
// {
// if iszero(n)
// {
// ret := A_17431()
// leave
// }
// ret := A_17438(A_17410(add(n, not(0))))
// }
// function A_11926(n) -> ret
// {
// if iszero(n)
// {
// ret := A_24071(A_41439(A_52410()))
// leave
// }
// ret := A_17412(A_17415(add(n, not(0))))
// }
// function A_11939(n) -> ret
// {
// if iszero(n)
// {
// ret := A_24045(A_41458(A_52411()))
// leave
// }
// ret := A_17479(A_17430(add(n, not(0))))
// }
// function A_11941(n) -> ret
// {
// if iszero(ret)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_24051(A_41411(A_52412()))
// leave
// }
// ret := A_17382(A_17438(add(n, not(0))))
// }
// function A_11943(n) -> ret
// {
// if iszero(n)
// {
// ret := A_24082(A_41447(A_52413()))
// leave
// }
// ret := A_17434(A_17412(add(n, not(0))))
// }
// function A_11957(n) -> ret
// {
// if iszero(n)
// {
// ret := A_24100(A_41464(A_52414()))
// leave
// }
// ret := A_17453(A_17434(add(n, not(0))))
// }
// function A_11981(n) -> ret
// {
// if iszero(n)
// {
// ret := A_24067(A_32021())
// leave
// }
// ret := A_17410(A_17479(add(n, not(0))))
// }
// function A_17382(n) -> ret
// {
// if iszero(n)
// {
// ret := A_31999(A_52416(A_52415()))
// leave
// }
// ret := A_24051(A_24015(add(n, not(0))))
// }
// function A_17410(n) -> ret
// {
// if iszero(n)
// {
// ret := A_24074()
// leave
// }
// ret := A_24067(A_24045(add(n, not(0))))
// }
// function A_17412(n) -> ret
// {
// if iszero(n)
// {
// ret := A_32026(A_52418(A_52417()))
// leave
// }
// ret := A_24071(A_24048(add(n, not(0))))
// }
// function A_17415(n) -> ret
// {
// if iszero(n)
// {
// ret := A_31996(A_52420(A_52419()))
// leave
// }
// ret := A_24048(A_24051(add(n, not(0))))
// }
// function A_17430(n) -> ret
// {
// if iszero(n)
// {
// ret := A_31994(A_52422(A_52421()))
// leave
// }
// ret := A_24126(A_24069(add(n, not(0))))
// }
// function A_17434(n) -> ret
// {
// if iszero(n)
// {
// ret := A_32042(A_52424(A_52423()))
// leave
// }
// ret := A_24082(A_24071(add(n, not(0))))
// }
// function A_17438(n) -> ret
// {
// if iszero(ret)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_32002(A_52426(A_52425()))
// leave
// }
// ret := A_24015(A_24067(add(n, not(0))))
// }
// function A_17453(n) -> ret
// {
// if iszero(n)
// {
// ret := A_32063(A_52428(A_52427()))
// leave
// }
// ret := A_24100(A_24082(add(n, not(0))))
// }
// function A_17479(n) -> ret
// {
// if iszero(n)
// {
// ret := A_32040(A_41451())
// leave
// }
// ret := A_24045(A_24126(add(n, not(0))))
// }
// function A_24015(n) -> ret
// {
// if iszero(n)
// {
// ret := A_41411(A_52429())
// leave
// }
// ret := A_32002(A_31962(add(n, not(0))))
// }
// function A_24045(n) -> ret
// {
// if iszero(n)
// {
// ret := A_32021()
// leave
// }
// ret := A_32040(A_31994(add(n, not(0))))
// }
// function A_24048(n) -> ret
// {
// if iszero(n)
// {
// ret := A_41439(A_52430())
// leave
// }
// ret := A_31996(A_31999(add(n, not(0))))
// }
// function A_24051(n) -> ret
// {
// if iszero(n)
// {
// ret := A_41408(A_52431())
// leave
// }
// ret := A_31999(A_32002(add(n, not(0))))
// }
// function A_24067(n) -> ret
// {
// if iszero(ret)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_41414(A_52432())
// leave
// }
// ret := A_31962(A_32040(add(n, not(0))))
// }
// function A_24069(n) -> ret
// {
// if iszero(n)
// {
// ret := A_41405(A_52433())
// leave
// }
// ret := A_32092(A_32023(add(n, not(0))))
// }
// function A_24071(n) -> ret
// {
// if iszero(n)
// {
// ret := A_41447(A_52434())
// leave
// }
// ret := A_32026(A_31996(add(n, not(0))))
// }
// function A_24082(n) -> ret
// {
// if iszero(n)
// {
// ret := A_41464(A_52435())
// leave
// }
// ret := A_32042(A_32026(add(n, not(0))))
// }
// function A_24100(n) -> ret
// {
// if iszero(n)
// {
// ret := A_41488(A_52436())
// leave
// }
// ret := A_32063(A_32042(add(n, not(0))))
// }
// function A_24126(n) -> ret
// {
// if iszero(n)
// {
// ret := A_41458(A_52437())
// leave
// }
// ret := A_31994(A_32092(add(n, not(0))))
// }
// function A_31962(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52439(A_52438())
// leave
// }
// ret := A_41414(A_41359(add(n, not(0))))
// }
// function A_31994(n) -> ret
// {
// if iszero(n)
// {
// ret := A_41451()
// leave
// }
// ret := A_41458(A_41405(add(n, not(0))))
// }
// function A_31996(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52441(A_52440())
// leave
// }
// ret := A_41439(A_41408(add(n, not(0))))
// }
// function A_31999(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52443(A_52442())
// leave
// }
// ret := A_41408(A_41411(add(n, not(0))))
// }
// function A_32002(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52445(A_52444())
// leave
// }
// ret := A_41411(A_41414(add(n, not(0))))
// }
// function A_32023(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52447(A_52446())
// leave
// }
// ret := A_41517(A_41437(add(n, not(0))))
// }
// function A_32026(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52449(A_52448())
// leave
// }
// ret := A_41447(A_41439(add(n, not(0))))
// }
// function A_32040(n) -> ret
// {
// if iszero(ret)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_52451(A_52450())
// leave
// }
// ret := A_41359(A_41458(add(n, not(0))))
// }
// function A_32042(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52453(A_52452())
// leave
// }
// ret := A_41464(A_41447(add(n, not(0))))
// }
// function A_32063(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52455(A_52454())
// leave
// }
// ret := A_41488(A_41464(add(n, not(0))))
// }
// function A_32092(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52457(A_52456())
// leave
// }
// ret := A_41405(A_41517(add(n, not(0))))
// }
// function A_41359(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52458()
// leave
// }
// ret := A_52460(A_52459(add(n, not(0))))
// }
// function A_41405(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52463()
// leave
// }
// ret := A_52465(A_52464(add(n, not(0))))
// }
// function A_41408(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52466()
// leave
// }
// ret := A_52468(A_52467(add(n, not(0))))
// }
// function A_41411(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52469()
// leave
// }
// ret := A_52471(A_52470(add(n, not(0))))
// }
// function A_41414(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52472()
// leave
// }
// ret := A_52474(A_52473(add(n, not(0))))
// }
// function A_41437(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52482()
// leave
// }
// ret := A_52484(A_52483(add(n, not(0))))
// }
// function A_41439(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52485()
// leave
// }
// ret := A_52487(A_52486(add(n, not(0))))
// }
// function A_41447(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52494()
// leave
// }
// ret := A_52496(A_52495(add(n, not(0))))
// }
// function A_41458(n) -> ret
// {
// if iszero(ret)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_52503()
// leave
// }
// ret := A_52505(A_52504(add(n, not(0))))
// }
// function A_41464(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52512()
// leave
// }
// ret := A_52514(A_52513(add(n, not(0))))
// }
// function A_41488(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52536()
// leave
// }
// ret := A_52538(A_52537(add(n, not(0))))
// }
// function A_41517(n) -> ret
// {
// if iszero(n)
// {
// ret := A_52575()
// leave
// }
// ret := A_52577(A_52576(add(n, not(0))))
// }
// function A_52312(n) -> ret
// {
// let m := not(0)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, m))
// leave
// }
// ret := A(add(m, m), A(m, add(n, m)))
// }
// function A_52353() -> ret
// {
// let n := not(9)
// if iszero(2)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(2, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(2, _1), A(2, add(n, _1)))
// }
// function A_52354(n) -> ret
// {
// if iszero(1)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(1, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(1, _1), A(1, add(n, _1)))
// }
// function A_52356(n) -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52359(n) -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52362(n) -> ret
// {
// let m := not(2)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52365(n) -> ret
// {
// let m := not(1)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52389() -> ret
// {
// let n := not(8)
// if iszero(2)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(2, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(2, _1), A(2, add(n, _1)))
// }
// function A_52390(n) -> ret
// {
// if iszero(1)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(1, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(1, _1), A(1, add(n, _1)))
// }
// function A_52391() -> ret
// {
// let n := not(8)
// if iszero(4)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(4, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(4, _1), A(4, add(n, _1)))
// }
// function A_52392(n) -> ret
// {
// if iszero(3)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(3, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(3, _1), A(3, add(n, _1)))
// }
// function A_52395(n) -> ret
// {
// let m := not(5)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52397(n) -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52402(n) -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52404(n) -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52406(n) -> ret
// {
// let m := not(5)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52408(n) -> ret
// {
// let m := not(6)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52416(n) -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52418(n) -> ret
// {
// let m := not(5)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52420(n) -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52422(n) -> ret
// {
// if iszero(ret)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(0, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(0, _1), A(0, add(n, _1)))
// }
// function A_52424(n) -> ret
// {
// let m := not(6)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52426(n) -> ret
// {
// let m := not(2)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52428(n) -> ret
// {
// let m := not(7)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52439(n) -> ret
// {
// let m := not(2)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52441(n) -> ret
// {
// let m := not(5)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52443(n) -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52445(n) -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52447(n) -> ret
// {
// if iszero(1)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(1, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(1, _1), A(1, add(n, _1)))
// }
// function A_52449(n) -> ret
// {
// let m := not(6)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52451(n) -> ret
// {
// let m := not(1)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52453(n) -> ret
// {
// let m := not(7)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52455(n) -> ret
// {
// let m := not(8)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52457(n) -> ret
// {
// if iszero(ret)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(0, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(0, _1), A(0, add(n, _1)))
// }
// function A_52459(n) -> ret
// {
// let m := not(0)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, m))
// leave
// }
// ret := A(add(m, m), A(m, add(n, m)))
// }
// function A_52460(n) -> ret
// {
// let m := not(1)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52464(n) -> ret
// {
// if iszero(1)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(1, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(1, _1), A(1, add(n, _1)))
// }
// function A_52465(n) -> ret
// {
// if iszero(ret)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(0, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(0, _1), A(0, add(n, _1)))
// }
// function A_52467(n) -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52468(n) -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52470(n) -> ret
// {
// let m := not(2)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52471(n) -> ret
// {
// let m := not(3)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52473(n) -> ret
// {
// let m := not(1)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52474(n) -> ret
// {
// let m := not(2)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52483(n) -> ret
// {
// if iszero(3)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(3, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(3, _1), A(3, add(n, _1)))
// }
// function A_52484(n) -> ret
// {
// if iszero(2)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(2, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(2, _1), A(2, add(n, _1)))
// }
// function A_52486(n) -> ret
// {
// let m := not(4)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52487(n) -> ret
// {
// let m := not(5)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52495(n) -> ret
// {
// let m := not(5)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52496(n) -> ret
// {
// let m := not(6)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52504(n) -> ret
// {
// if iszero(ret)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(0, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(0, _1), A(0, add(n, _1)))
// }
// function A_52505(n) -> ret
// {
// let m := not(0)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, m))
// leave
// }
// ret := A(add(m, m), A(m, add(n, m)))
// }
// function A_52513(n) -> ret
// {
// let m := not(6)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52514(n) -> ret
// {
// let m := not(7)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52537(n) -> ret
// {
// let m := not(7)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52538(n) -> ret
// {
// let m := not(8)
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// function A_52576(n) -> ret
// {
// if iszero(2)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(2, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(2, _1), A(2, add(n, _1)))
// }
// function A_52577(n) -> ret
// {
// if iszero(1)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(1, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(1, _1), A(1, add(n, _1)))
// }
// function A(m, n) -> ret
// {
// if iszero(m)
// {
// ret := add(n, 1)
// leave
// }
// if iszero(n)
// {
// ret := A_72(add(m, not(0)))
// leave
// }
// let _1 := not(0)
// ret := A(add(m, _1), A(m, add(n, _1)))
// }
// }