From c8d2846682eff4af9288cf3a76262fc67d040f18 Mon Sep 17 00:00:00 2001 From: Gusarich Date: Sun, 21 Jul 2024 09:14:26 +0300 Subject: [PATCH] fix: mathlib boc generation --- .../__snapshots__/decompileAll.spec.ts.snap | 1745 +++++++++++++++-- src/decompiler/__testdata__/mathlib.boc | Bin 17102 -> 2918 bytes src/decompiler/__testdata__/mathlib.fif | 1295 ++++++++++++ 3 files changed, 2914 insertions(+), 126 deletions(-) create mode 100644 src/decompiler/__testdata__/mathlib.fif diff --git a/src/decompiler/__snapshots__/decompileAll.spec.ts.snap b/src/decompiler/__snapshots__/decompileAll.spec.ts.snap index 3fdc493..840c4fb 100644 --- a/src/decompiler/__snapshots__/decompileAll.spec.ts.snap +++ b/src/decompiler/__snapshots__/decompileAll.spec.ts.snap @@ -652,6 +652,1625 @@ DECLPROC seqno; }END>c" `; +exports[`decompileAll should decompile mathlib.fc 1`] = ` +"PROGRAM{ + DECLPROC recv_internal; + DECLPROC ?fun_ref_0318d2f33529c0c6; + DECLPROC ?fun_ref_0e3f3b547d0a4314; + DECLPROC ?fun_ref_0f0ebbb66387fc57; + DECLPROC ?fun_ref_14c8cb933d84cae0; + DECLPROC ?fun_ref_1b1ae470b4614553; + DECLPROC ?fun_ref_2051d9d821c3f770; + DECLPROC ?fun_ref_2367f6e37b0e6a76; + DECLPROC ?fun_ref_239e84369564e330; + DECLPROC ?fun_ref_318ac84049047cbe; + DECLPROC ?fun_ref_3449c496cc175763; + DECLPROC ?fun_ref_41d3f2ea6d56e172; + DECLPROC ?fun_ref_48cab849e3521372; + DECLPROC ?fun_ref_494e543f112ad30c; + DECLPROC ?fun_ref_5a712c8e35fef248; + DECLPROC ?fun_ref_5ba78fa4ab4ec6dc; + DECLPROC ?fun_ref_5c788425937a7d28; + DECLPROC ?fun_ref_5d3a4c29b0035181; + DECLPROC ?fun_ref_6405ea4d1c38698c; + DECLPROC ?fun_ref_6c2cc5b04a23eeb2; + DECLPROC ?fun_ref_7134bd42618a8d1e; + DECLPROC ?fun_ref_73739320b258991c; + DECLPROC ?fun_ref_7753d4b96608d450; + DECLPROC ?fun_ref_811ebbe381228c78; + DECLPROC ?fun_ref_87780ff3a5ebd2bc; + DECLPROC ?fun_ref_88faf969245bcd15; + DECLPROC ?fun_ref_8a8385f8d78f60b7; + DECLPROC ?fun_ref_8bf58ecefe2e19cb; + DECLPROC ?fun_ref_aa50613cca252c08; + DECLPROC ?fun_ref_afe5ab170f89ef23; + DECLPROC ?fun_ref_b03a280997c9cc26; + DECLPROC ?fun_ref_b2fd74bee4445ab9; + DECLPROC ?fun_ref_cdb28b381a5130bf; + DECLPROC ?fun_ref_d78034247225d612; + DECLPROC ?fun_ref_da70c8217d8f9a46; + DECLPROC ?fun_ref_e11f9343f87d5b4b; + DECLPROC ?fun_ref_e9b023c94244cb2e; + DECLPROC ?fun_ref_eabdf5efadfce810; + DECLPROC ?fun_ref_ec287b9511e936b8; + DECLPROC ?fun_ref_f8345f3d64016266; + DECLPROC ?fun_ref_fbd4cc263c208ffd; + recv_internal PROC:<{ + ?fun_ref_d78034247225d612 INLINECALLDICT + 1 PUSHINT + ?fun_ref_d78034247225d612 INLINECALLDICT + 248 PUSHPOW2 + ?fun_ref_d78034247225d612 INLINECALLDICT + 255 PUSHPOW2 + ?fun_ref_d78034247225d612 INLINECALLDICT + s0 PUSH + true 1 true 1 1 247 DIV + s0 PUSH + true 1 true 1 1 254 DIV + ?fun_ref_2051d9d821c3f770 INLINECALLDICT + ?fun_ref_aa50613cca252c08 INLINECALLDICT + ?fun_ref_e9b023c94244cb2e INLINECALLDICT + ?fun_ref_0e3f3b547d0a4314 INLINECALLDICT + ?fun_ref_6405ea4d1c38698c INLINECALLDICT + ?fun_ref_2051d9d821c3f770 INLINECALLDICT + s0 POP + ?fun_ref_2051d9d821c3f770 INLINECALLDICT + s0 POP + false 1 true 1 1 7 DIV + ?fun_ref_aa50613cca252c08 INLINECALLDICT + s0 POP + ?fun_ref_aa50613cca252c08 INLINECALLDICT + s0 POP + false 1 true 1 1 5 DIV + ?fun_ref_7753d4b96608d450 INLINECALLDICT + ?fun_ref_88faf969245bcd15 INLINECALLDICT + ?fun_ref_eabdf5efadfce810 INLINECALLDICT + ?fun_ref_14c8cb933d84cae0 INLINECALLDICT + s0 s0 PUSH2 + true 1 true 1 1 255 DIV + 251 PUSHPOW2 + 33 PUSHINT + 250 LSHIFT + s0 PUSH + 14 PUSHINT + <{ + s1 s2 XCPU + SUB + s0 s5 s5 PU2XC + true 2 true 1 1 235 DIV + SUB + }> PUSHCONT + REPEAT + 2 1 BLKDROP2 + 3 PUSHINT + 254 LSHIFT + s2 s3 PUXC + true 2 true 1 1 239 DIV + SUB + s2 PUSH + 1 RSHIFT + s2 PUSH + false 1 true 1 1 9 DIV + s1 s2 XCHG + SUB + s1 s2 XCHG + true 0 false 1 1 0 DIV + false 1 true 1 1 8 DIV + ADD + ?fun_ref_41d3f2ea6d56e172 INLINECALLDICT + s0 s0 PUSH2 + true 1 true 1 1 255 DIV + 251 PUSHPOW2 + 41 PUSHINT + 250 LSHIFT + s0 PUSH + 18 PUSHINT + <{ + s1 s2 XCPU + SUB + s0 s5 s5 PU2XC + true 2 true 1 1 239 DIV + SUB + }> PUSHCONT + REPEAT + 2 1 BLKDROP2 + 3 PUSHINT + 254 LSHIFT + s2 s3 PUXC + true 2 true 1 1 243 DIV + SUB + s2 PUSH + 1 RSHIFT + s2 PUSH + false 1 true 1 1 5 DIV + s1 s2 XCHG + SUB + s1 s2 XCHG + true 0 false 1 1 0 DIV + false 1 true 1 1 4 DIV + ADD + ?fun_ref_3449c496cc175763 INLINECALLDICT + s0 s0 PUSH2 + true 1 true 1 1 255 DIV + 251 PUSHPOW2 + 33 PUSHINT + 250 LSHIFT + s0 PUSH + 14 PUSHINT + <{ + s1 s2 XCPU + SUB + s0 s5 s5 PU2XC + true 2 true 1 1 235 DIV + SUB + }> PUSHCONT + REPEAT + 2 1 BLKDROP2 + 3 PUSHINT + 254 LSHIFT + s2 s3 PUXC + true 2 true 1 1 239 DIV + SUB + s2 PUSH + 1 RSHIFT + s2 PUSH + false 1 true 1 1 9 DIV + s1 s2 XCHG + SUB + s1 s2 XCHG + true 0 false 1 1 0 DIV + false 1 true 1 1 8 DIV + ADD + s0 s0 PUSH2 + true 1 true 1 1 255 DIV + s0 PUSH + false 1 true 1 1 8 DIV + 255 PUSHPOW2 + ADD + s2 PUSH + 1 RSHIFT + s2 s1 PUSH2 + true 0 false 1 1 0 DIV + false 1 true 1 1 7 DIV + s1 s3 XCHG + SUB + s1 PUSH + 1 RSHIFT + s0 s2 s5 XCPUXC + true 0 false 1 1 0 DIV + false 1 true 1 1 7 DIV + SUB + ?fun_ref_318ac84049047cbe INLINECALLDICT + ?fun_ref_239e84369564e330 INLINECALLDICT + ?fun_ref_2367f6e37b0e6a76 INLINECALLDICT + ?fun_ref_b03a280997c9cc26 INLINECALLDICT + ?fun_ref_0f0ebbb66387fc57 INLINECALLDICT + ?fun_ref_0f0ebbb66387fc57 INLINECALLDICT + s0 POP + ?fun_ref_0f0ebbb66387fc57 INLINECALLDICT + s1 POP + ?fun_ref_e11f9343f87d5b4b INLINECALLDICT + ?fun_ref_8bf58ecefe2e19cb INLINECALLDICT + ?fun_ref_fbd4cc263c208ffd INLINECALLDICT + s1 s1 PUSH2 + true 1 true 1 1 255 DIV + 254 PUSHPOW2 + s0 s2 PUSH2 + false 0 false 1 1 0 DIV + 255 PUSHPOW2 + ADD + s3 PUSH + -1 ADD + <{ + s2 s1 PUXC + true 2 true 1 1 241 DIV + s1 s1 PUXC + SUB + s3 PUSH + -1 ADD + s4 s4 XCPU + true 0 false 1 1 0 DIV + s1 PUSH + ADD + }> PUSHCONT + REPEAT + s1 POP + s2 POP + s0 PUSH + false 1 true 1 1 11 DIV + s1 s2 XCHG + SUB + s2 PUSH + ROTREV + true 0 false 1 1 0 DIV + false 1 true 1 1 11 DIV + ADD + ?fun_ref_afe5ab170f89ef23 INLINECALLDICT + ?fun_ref_0318d2f33529c0c6 INLINECALLDICT + 1 PUSHINT + s0 s1 XCHG + <{ + 33 MULCONST + }> PUSHCONT + REPEAT + 5 PUSHINT + false 0 false 3 0 0 DIV + 1 PUSHINT + s0 s1 XCHG + <{ + 33 MULCONST + }> PUSHCONT + REPEAT + s0 s1 XCHG + <{ + 39135393 PUSHINT + MUL + }> PUSHCONT + REPEAT + ?fun_ref_1b1ae470b4614553 INLINECALLDICT + ?fun_ref_ec287b9511e936b8 INLINECALLDICT + ?fun_ref_48cab849e3521372 INLINECALLDICT + ?fun_ref_87780ff3a5ebd2bc INLINECALLDICT + ?fun_ref_48cab849e3521372 INLINECALLDICT + 248 PUSHINT + SUB + 248 LSHIFT + s0 s1 XCHG + false 1 true 1 1 7 DIV + ADD + ?fun_ref_811ebbe381228c78 INLINECALLDICT + ?fun_ref_73739320b258991c INLINECALLDICT + s1 s1 PUSH2 + true 1 true 1 1 255 DIV + 254 PUSHPOW2 + s0 s2 PUSH2 + false 0 false 1 1 0 DIV + 255 PUSHPOW2 + ADD + s3 PUSH + -1 ADD + <{ + s2 s1 PUXC + true 2 true 1 1 241 DIV + s1 s1 PUXC + ADD + s3 PUSH + -1 ADD + s4 s4 XCPU + true 0 false 1 1 0 DIV + s1 PUSH + ADD + }> PUSHCONT + REPEAT + s1 POP + s2 POP + s0 PUSH + false 1 true 1 1 11 DIV + s1 s2 XCHG + ADD + s2 PUSH + ROTREV + true 0 false 1 1 0 DIV + false 1 true 1 1 11 DIV + SUB + ?fun_ref_5d3a4c29b0035181 INLINECALLDICT + ?fun_ref_8a8385f8d78f60b7 INLINECALLDICT + ?fun_ref_b2fd74bee4445ab9 INLINECALLDICT + ?fun_ref_6c2cc5b04a23eeb2 INLINECALLDICT + ?fun_ref_7134bd42618a8d1e INLINECALLDICT + ?fun_ref_5c788425937a7d28 INLINECALLDICT + ?fun_ref_494e543f112ad30c INLINECALLDICT + ?fun_ref_5ba78fa4ab4ec6dc INLINECALLDICT + 7 LSHIFT + ?fun_ref_494e543f112ad30c INLINECALLDICT + false 1 true 1 1 6 DIV + 7 LSHIFT + ?fun_ref_5ba78fa4ab4ec6dc INLINECALLDICT + false 1 true 1 1 5 DIV + ?fun_ref_cdb28b381a5130bf INLINECALLDICT + ?fun_ref_da70c8217d8f9a46 INLINECALLDICT + ?fun_ref_5a712c8e35fef248 INLINECALLDICT + ?fun_ref_f8345f3d64016266 INLINECALLDICT + RANDU256 + 8 RSHIFT + ?fun_ref_5a712c8e35fef248 INLINECALLDICT + false 1 true 1 1 3 DIV + ?fun_ref_f8345f3d64016266 INLINECALLDICT + false 1 true 1 1 3 DIV + }> + ?fun_ref_0318d2f33529c0c6 PROCREF:<{ + s0 PUSH + UBITSIZE + 8 PUSHPOW2 + s1 PUSH + SUB + s1 s2 XCHG + LSHIFTX + 256 PUSHNEGPOW2 + s1 PUSH + 249 RSHIFT + 91 LESSINT + <{ + 1 RSHIFT + s0 s2 XCHG + -1 ADD + s0 s2 XCHG + }> PUSHCONT + IF + TUCK + ADD + s0 PUSH + 1 LSHIFT + s0 s1 XCHG + 1 RSHIFT + ROT + SUB + true 2 true 1 1 255 DIV + 36 PUSHINT + ?fun_ref_fbd4cc263c208ffd INLINECALLDICT + s0 s1 XCHG + }> + ?fun_ref_0e3f3b547d0a4314 PROCREF:<{ + 115194597005316551477397594802136977648153890007566736408151129975021336532841 PUSHINT + }> + ?fun_ref_0f0ebbb66387fc57 PROCREF:<{ + ?fun_ref_aa50613cca252c08 INLINECALLDICT + ROTREV + true 2 true 3 1 6 DIV + 1 LSHIFT + s1 s4 PUXC + true 1 true 1 1 126 DIV + s1 s2 XCHG + SUB + ?fun_ref_2367f6e37b0e6a76 INLINECALLDICT + 248 PUSHPOW2 + s0 s1 XCHG + false 1 true 1 1 8 DIV + SUB + s0 s1 XCHG + false 1 true 1 1 7 DIV + s0 s2 XCHG + 3 PUSHINT + AND + <{ + s0 s1 XCHG + -1 MULCONST + }> PUSHCONT + REPEAT + }> + ?fun_ref_14c8cb933d84cae0 PROCREF:<{ + false 1 true 3 1 247 DIV + ?fun_ref_2051d9d821c3f770 INLINECALLDICT + s0 POP + true 1 true 1 1 246 DIV + ?fun_ref_88faf969245bcd15 INLINECALLDICT + 9 PUSHINT + s2 PUSH + SUB + false 1 false 1 1 0 DIV + 248 PUSHINT + ROT + ADD + -1 PUSHINT + s0 s1 XCHG + LSHIFTX + SUB + }> + ?fun_ref_1b1ae470b4614553 PROCREF:<{ + s0 PUSH + UBITSIZE + -1 ADD + 8 PUSHPOW2DEC + s1 PUSH + SUB + s1 s2 XCHG + LSHIFTX + 2873 PUSHINT + 244 LSHIFT + DUP2 + SUB + 1 RSHIFT + s0 PUSH + 65 PUSHINT + s0 s3 XCHG + ADD + s1 s2 XCHG + true 0 false 1 1 0 DIV + 11 ADD + s0 PUSH + 5 PUSHINT + false 0 false 3 0 0 DIV + 1 PUSHINT + s0 s1 XCHG + <{ + 33 MULCONST + }> PUSHCONT + REPEAT + s0 s1 XCHG + <{ + 39135393 PUSHINT + MUL + }> PUSHCONT + REPEAT + 51 PUSHINT + s2 PUSH + SUB + 5 MULCONST + LSHIFTX + s2 s2 XCPU + SUB + s0 PUSH + 4 LSHIFT + s0 s1 XCHG + 1 RSHIFT + s0 s3 XCHG2 + ADD + s1 s2 XCHG + true 2 true 1 1 255 DIV + 18 PUSHINT + ?fun_ref_afe5ab170f89ef23 INLINECALLDICT + }> + ?fun_ref_2051d9d821c3f770 PROCREF:<{ + 80260960185991308862233904206310070533990667611589946606122867505419956976172 PUSHINT + -32272921378999278490133606779486332143 PUSHINT + }> + ?fun_ref_2367f6e37b0e6a76 PROCREF:<{ + s0 s0 PUSH2 + true 1 true 1 1 255 DIV + 251 PUSHPOW2 + 33 PUSHINT + 250 LSHIFT + s0 PUSH + 14 PUSHINT + <{ + s1 s2 XCPU + SUB + s0 s5 s5 PU2XC + true 2 true 1 1 235 DIV + SUB + }> PUSHCONT + REPEAT + 2 1 BLKDROP2 + 3 PUSHINT + 254 LSHIFT + s2 s3 PUXC + true 2 true 1 1 239 DIV + SUB + s2 PUSH + 1 RSHIFT + s2 PUSH + false 1 true 1 1 9 DIV + s1 s2 XCHG + SUB + s1 s2 XCHG + true 0 false 1 1 0 DIV + false 1 true 1 1 8 DIV + ADD + s0 s0 PUSH2 + true 1 true 1 1 255 DIV + s0 PUSH + false 1 true 1 1 8 DIV + 255 PUSHPOW2 + ADD + s2 PUSH + 1 RSHIFT + s2 s1 PUSH2 + true 0 false 1 1 0 DIV + false 1 true 1 1 7 DIV + s1 s3 XCHG + SUB + s1 PUSH + 1 RSHIFT + s0 s2 s5 XCPUXC + true 0 false 1 1 0 DIV + false 1 true 1 1 7 DIV + SUB + 7 PUSHINT + 3 PUSHINT + <{ + s2 s2 PUSH2 + true 1 true 1 1 255 DIV + s3 s4 PUXC + true 1 true 1 1 255 DIV + s1 PUSH + false 1 false 1 1 0 DIV + s1 s3 XCHG + SUB + s0 s2 XCHG + -2 ADD + }> PUSHCONT + REPEAT + s0 POP + }> + ?fun_ref_239e84369564e330 PROCREF:<{ + s1 PUSH + ABS + ?fun_ref_0e3f3b547d0a4314 INLINECALLDICT + true 2 true 3 1 1 DIV + 1 LSHIFT + ROT + ADD + ?fun_ref_318ac84049047cbe INLINECALLDICT + -1 PUSHINT + 0 PUSHINT + 1 PUSHINT + s0 s5 XCHG + <{ + s1 PUSH + 63 MULCONST + s1 PUSH + 4 LSHIFT + SUB + s0 s2 XCHG + 4 LSHIFT + s0 s1 XCHG + 63 MULCONST + ADD + s0 s4 XCHG + 65 MULCONST + s0 s4 XCHG + }> PUSHCONT + REPEAT + s4 PUSH + true 2 true 3 1 255 DIV + s5 PUSH + true 2 true 1 1 6 DIV + s2 s5 XCPU + true 2 true 3 1 255 DIV + s0 s6 XCHG2 + true 2 true 1 1 6 DIV + s0 s6 XCHG + SGN + s1 s3 PUSH2 + true 1 true 1 1 255 DIV + s0 s3 XCHG2 + SUB + false 1 true 1 1 3 DIV + s5 s4 PUSH2 + true 1 true 1 1 255 DIV + SUB + false 1 true 1 1 2 DIV + s1 PUSH + SUB + s1 s2 XCHG + MUL + s4 s4 PUXC + true 1 true 1 1 255 DIV + s0 s5 XCHG2 + SUB + false 1 true 1 1 3 DIV + s4 s2 XCHG2 + true 1 true 1 1 255 DIV + ADD + false 1 true 1 1 2 DIV + SUB + }> + ?fun_ref_318ac84049047cbe PROCREF:<{ + s0 s0 PUSH2 + true 1 true 1 1 255 DIV + 251 PUSHPOW2 + 33 PUSHINT + 250 LSHIFT + s0 PUSH + 14 PUSHINT + <{ + s1 s2 XCPU + SUB + s0 s5 s5 PU2XC + true 2 true 1 1 235 DIV + SUB + }> PUSHCONT + REPEAT + 2 1 BLKDROP2 + 3 PUSHINT + 254 LSHIFT + s2 s3 PUXC + true 2 true 1 1 239 DIV + SUB + s2 PUSH + 1 RSHIFT + s2 PUSH + false 1 true 1 1 9 DIV + s1 s2 XCHG + SUB + s1 s2 XCHG + true 0 false 1 1 0 DIV + false 1 true 1 1 8 DIV + ADD + s0 s0 PUSH2 + true 1 true 1 1 255 DIV + s0 PUSH + false 1 true 1 1 8 DIV + 255 PUSHPOW2 + ADD + s2 PUSH + 1 RSHIFT + s2 s1 PUSH2 + true 0 false 1 1 0 DIV + false 1 true 1 1 7 DIV + s1 s3 XCHG + SUB + s1 PUSH + 1 RSHIFT + s0 s2 s5 XCPUXC + true 0 false 1 1 0 DIV + false 1 true 1 1 7 DIV + SUB + }> + ?fun_ref_3449c496cc175763 PROCREF:<{ + s0 s0 PUSH2 + true 1 true 1 1 255 DIV + 251 PUSHPOW2 + 41 PUSHINT + 250 LSHIFT + s0 PUSH + 18 PUSHINT + <{ + s1 s2 XCPU + SUB + s0 s5 s5 PU2XC + true 2 true 1 1 239 DIV + SUB + }> PUSHCONT + REPEAT + 2 1 BLKDROP2 + 3 PUSHINT + 254 LSHIFT + s2 s3 PUXC + true 2 true 1 1 243 DIV + SUB + s2 PUSH + 1 RSHIFT + s2 PUSH + false 1 true 1 1 5 DIV + s1 s2 XCHG + SUB + s1 s2 XCHG + true 0 false 1 1 0 DIV + false 1 true 1 1 4 DIV + ADD + }> + ?fun_ref_41d3f2ea6d56e172 PROCREF:<{ + s0 s0 PUSH2 + true 1 true 1 1 255 DIV + 251 PUSHPOW2 + 33 PUSHINT + 250 LSHIFT + s0 PUSH + 14 PUSHINT + <{ + s1 s2 XCPU + SUB + s0 s5 s5 PU2XC + true 2 true 1 1 235 DIV + SUB + }> PUSHCONT + REPEAT + 2 1 BLKDROP2 + 3 PUSHINT + 254 LSHIFT + s2 s3 PUXC + true 2 true 1 1 239 DIV + SUB + s2 PUSH + 1 RSHIFT + s2 PUSH + false 1 true 1 1 9 DIV + s1 s2 XCHG + SUB + s1 s2 XCHG + true 0 false 1 1 0 DIV + false 1 true 1 1 8 DIV + ADD + }> + ?fun_ref_48cab849e3521372 PROCREF:<{ + ?fun_ref_1b1ae470b4614553 INLINECALLDICT + ?fun_ref_2051d9d821c3f770 INLINECALLDICT + s0 POP + true 2 true 1 1 255 DIV + false 1 true 1 1 3 DIV + s0 s1 XCHG + 5140487830366106860412008603913034462883915832139695448455767612111363481357 PUSHINT + MUL + ADD + s0 s1 XCHG + }> + ?fun_ref_494e543f112ad30c PROCREF:<{ + 255 PUSHPOW2 + s1 PUSH + s0 PUSH + true 1 true 1 1 254 DIV + SUB + s0 PUSH + <{ + s0 POP + SGN + ?fun_ref_aa50613cca252c08 INLINECALLDICT + s0 POP + MUL + }> PUSHCONT + IFNOTJMP + 255 PUSHPOW2 + ?fun_ref_d78034247225d612 INLINECALLDICT + 255 PUSHNEGPOW2 + s0 s1 XCHG + SUB + true 2 true 1 1 255 DIV + -1 MULCONST + ?fun_ref_5c788425937a7d28 INLINECALLDICT + }> + ?fun_ref_5a712c8e35fef248 PROCREF:<{ + 256 PUSHPOW2 + 29483 PUSHINT + 236 LSHIFT + -3167 PUSHINT + 239 LSHIFT + 12845 PUSHINT + 16693 PUSHINT + 9043 PUSHINT + <{ + RANDU256 + 4 RSHIFT + INC + RANDU256 + 255 PUSHPOW2 + SUB + 7027 PUSHINT + true 1 true 1 1 15 DIV + s0 PUSH + ABS + s2 s7 PUSH2 + SUB + s1 s7 PUSH2 + SUB + s1 s1 PUSH2 + true 1 true 1 1 251 DIV + s1 s8 PUSH2 + true 1 true 1 1 15 DIV + s3 s8 XCPU + true 1 true 1 1 15 DIV + s1 s3 XCHG + SUB + true 1 true 1 1 251 DIV + ADD + 237 RSHIFT + s4 PUSH + SUB + s0 PUSH + 82 LESSINT + s2 s4 XCPU + false 0 false 1 0 0 DIV + 16 LESSINT + s1 s2 XCHG + AND + <{ + s8 POP + s1 PUSH + true 2 true 1 1 251 DIV + s0 s7 XCHG + -1 GTINT + <{ + s6 s6 PUSH2 + true 1 true 1 1 255 DIV + false 1 true 1 1 1 DIV + -1 MULCONST + ?fun_ref_eabdf5efadfce810 INLINECALLDICT + 4 LSHIFT + GREATER + <{ + s5 POP + 256 PUSHPOW2 + s0 s5 XCHG + }> PUSHCONT + IF + }> PUSHCONT + <{ + s0 POP + }> PUSHCONT + IFELSE + }> PUSHCONT + <{ + 3 BLKDROP + }> PUSHCONT + IFELSE + s5 PUSH + ISNAN + NOT + }> PUSHREFCONT + UNTIL + 5 BLKDROP + }> + ?fun_ref_5ba78fa4ab4ec6dc PROCREF:<{ + ?fun_ref_aa50613cca252c08 INLINECALLDICT + s0 POP + s1 PUSH + 255 PUSHNEGPOW2 + EQUAL + <{ + s1 POP + }> PUSHCONT + IFJMP + 1 RSHIFT + 255 PUSHPOW2 + s2 PUSH + s0 PUSH + true 1 true 1 1 254 DIV + SUB + 255 PUSHPOW2 + ?fun_ref_d78034247225d612 INLINECALLDICT + 255 PUSHNEGPOW2 + s0 s1 XCHG + SUB + s1 s2 XCHG + true 2 true 1 1 255 DIV + ?fun_ref_5c788425937a7d28 INLINECALLDICT + false 1 true 1 1 0 DIV + ADD + }> + ?fun_ref_5c788425937a7d28 PROCREF:<{ + ?fun_ref_b2fd74bee4445ab9 INLINECALLDICT + ?fun_ref_6405ea4d1c38698c INLINECALLDICT + s1 s2 XCHG + true 1 true 3 1 4 DIV + s1 s2 XCHG + ADD + false 1 true 1 1 4 DIV + ADD + }> + ?fun_ref_5d3a4c29b0035181 PROCREF:<{ + s1 s1 PUSH2 + true 1 true 1 1 255 DIV + 254 PUSHPOW2 + s0 s2 PUSH2 + false 0 false 1 1 0 DIV + 255 PUSHPOW2 + ADD + s3 PUSH + -1 ADD + <{ + s2 s1 PUXC + true 2 true 1 1 241 DIV + s1 s1 PUXC + ADD + s3 PUSH + -1 ADD + s4 s4 XCPU + true 0 false 1 1 0 DIV + s1 PUSH + ADD + }> PUSHCONT + REPEAT + s1 POP + s2 POP + s0 PUSH + false 1 true 1 1 11 DIV + s1 s2 XCHG + ADD + s2 PUSH + ROTREV + true 0 false 1 1 0 DIV + false 1 true 1 1 11 DIV + SUB + }> + ?fun_ref_6405ea4d1c38698c PROCREF:<{ + 115754418570128574501879331591757054405465733718902755858991306434399246026247 PUSHINT + }> + ?fun_ref_6c2cc5b04a23eeb2 PROCREF:<{ + s0 PUSH + false 1 true 1 1 231 DIV + ?fun_ref_8a8385f8d78f60b7 INLINECALLDICT + s1 s3 PUSH2 + true 1 true 3 1 255 DIV + 1 RSHIFT + s1 s2 XCPU + SUB + s2 s5 XCHG2 + true 1 true 3 1 255 DIV + 1 RSHIFT + s0 s3 XCHG + ADD + s4 s4 XCPU + true 2 true 3 1 254 DIV + s1 s2 XCHG + ADD + s4 PUSH + true 2 true 1 1 254 DIV + s2 s2 s6 XCPUXC + true 0 false 1 1 0 DIV + s1 s3 XCHG + SUB + false 1 true 1 1 248 DIV + s0 s2 XCHG + 6 LSHIFT + s1 s2 XCHG + ADD + 18 PUSHINT + s1 s1 PUSH2 + true 1 true 1 1 255 DIV + 254 PUSHPOW2 + s0 s2 PUSH2 + false 0 false 1 1 0 DIV + 255 PUSHPOW2 + ADD + s3 PUSH + -1 ADD + <{ + s2 s1 PUXC + true 2 true 1 1 241 DIV + s1 s1 PUXC + ADD + s3 PUSH + -1 ADD + s4 s4 XCPU + true 0 false 1 1 0 DIV + s1 PUSH + ADD + }> PUSHCONT + REPEAT + s1 POP + s2 POP + s0 PUSH + false 1 true 1 1 11 DIV + s1 s2 XCHG + ADD + s2 PUSH + ROTREV + true 0 false 1 1 0 DIV + false 1 true 1 1 11 DIV + SUB + }> + ?fun_ref_7134bd42618a8d1e PROCREF:<{ + s0 PUSH + false 1 true 1 1 255 DIV + s0 PUSH + <{ + 255 PUSHNEGPOW2 + ROT + true 2 true 1 1 255 DIV + }> PUSHCONT + <{ + s0 s1 XCHG + 1 LSHIFT + }> PUSHCONT + IFELSE + ?fun_ref_b2fd74bee4445ab9 INLINECALLDICT + ?fun_ref_aa50613cca252c08 INLINECALLDICT + ?fun_ref_6405ea4d1c38698c INLINECALLDICT + s1 s4 XCHG + true 1 true 3 1 5 DIV + s5 s4 PUXC + MUL + ADD + ROTREV + ADD + SWAP2 + true 1 true 1 1 121 DIV + ADD + false 1 true 1 1 5 DIV + ADD + }> + ?fun_ref_73739320b258991c PROCREF:<{ + s1 s1 PUSH2 + true 1 true 1 1 255 DIV + 254 PUSHPOW2 + s0 s2 PUSH2 + false 0 false 1 1 0 DIV + 255 PUSHPOW2 + ADD + s3 PUSH + -1 ADD + <{ + s2 s1 PUXC + true 2 true 1 1 245 DIV + s1 s1 PUXC + ADD + s3 PUSH + -1 ADD + s4 s4 XCPU + true 0 false 1 1 0 DIV + s1 PUSH + ADD + }> PUSHCONT + REPEAT + s1 POP + s2 POP + s0 PUSH + false 1 true 1 1 7 DIV + s1 s2 XCHG + ADD + s2 PUSH + ROTREV + true 0 false 1 1 0 DIV + false 1 true 1 1 7 DIV + SUB + }> + ?fun_ref_7753d4b96608d450 PROCREF:<{ + s1 s1 PUSH2 + true 1 true 1 1 254 DIV + s1 PUSH + 1 LSHIFT + 5 ADD + 250 LSHIFT + s0 PUSH + 251 PUSHPOW2 + s0 s4 XCHG + <{ + s1 s3 XCPU + SUB + s0 s4 s5 PU2XC + true 2 true 1 1 238 DIV + ADD + }> PUSHCONT + REPEAT + s1 POP + s2 POP + 3 PUSHINT + 254 LSHIFT + s1 s4 PUXC + true 2 true 1 1 242 DIV + s1 s2 XCHG + ADD + s1 PUSH + false 1 true 1 1 6 DIV + ADD + s2 PUSH + ROTREV + true 0 false 1 1 0 DIV + false 1 true 1 1 6 DIV + SUB + }> + ?fun_ref_811ebbe381228c78 PROCREF:<{ + s0 PUSH + <{ + DROP2 + 248 PUSHPOW2 + }> PUSHCONT + IFNOTJMP + s1 PUSH + 1 LESSINT + <{ + OR + 0 LESSINT + 0 PUSHINT + s0 s1 XCHG + RSHIFTX + }> PUSHCONT + IFJMP + s0 s1 XCHG + ?fun_ref_48cab849e3521372 INLINECALLDICT + 248 PUSHINT + SUB + s2 PUSH + true 1 true 3 1 247 DIV + s2 s3 XCHG2 + true 1 true 3 0 255 DIV + 247 RSHIFT + s0 s1 XCHG + false 1 true 3 1 247 DIV + s1 s4 XCHG + ADD + false 1 true 3 1 247 DIV + 9 LSHIFT + ROT + ADD + s2 s3 XCHG2 + ADD + ADD + s0 PUSH + 248 PUSHINT + ADD + s0 PUSH + 1 LESSINT + <{ + 2 1 BLKDROP2 + 0 EQINT + -1 MULCONST + }> PUSHCONT + IFJMP + ?fun_ref_2051d9d821c3f770 INLINECALLDICT + s0 POP + s1 s3 XCHG + true 1 true 1 1 255 DIV + ?fun_ref_88faf969245bcd15 INLINECALLDICT + 9 PUSHINT + ROT + SUB + false 1 false 1 1 0 DIV + s0 s1 XCHG + -1 PUSHINT + s0 s1 XCHG + LSHIFTX + SUB + }> + ?fun_ref_87780ff3a5ebd2bc PROCREF:<{ + ?fun_ref_ec287b9511e936b8 INLINECALLDICT + 248 PUSHINT + SUB + ?fun_ref_2051d9d821c3f770 INLINECALLDICT + s0 POP + true 1 true 1 1 7 DIV + s0 s1 XCHG + false 1 true 1 1 7 DIV + ADD + }> + ?fun_ref_88faf969245bcd15 PROCREF:<{ + s0 s0 PUSH2 + true 1 true 1 1 254 DIV + 251 PUSHPOW2 + 39 PUSHINT + 250 LSHIFT + s0 PUSH + 17 PUSHINT + <{ + s1 s2 XCPU + SUB + s0 s5 s5 PU2XC + true 2 true 1 1 238 DIV + ADD + }> PUSHCONT + REPEAT + 2 1 BLKDROP2 + 3 PUSHINT + 254 LSHIFT + s2 s3 PUXC + true 2 true 1 1 242 DIV + ADD + s2 PUSH + false 1 true 1 1 3 DIV + s1 PUSH + SUB + s0 PUSH + 1 RSHIFT + s4 s3 PUXC + true 1 true 1 1 255 DIV + false 1 true 1 1 1 DIV + s1 s2 XCHG + ADD + true 0 false 1 1 0 DIV + false 1 true 1 1 1 DIV + SUB + }> + ?fun_ref_8a8385f8d78f60b7 PROCREF:<{ + s0 PUSH + ABS + 7214596 PUSHINT + DUP2 + SUB + ROTREV + MUL + 48 PUSHPOW2 + ADD + true 2 true 1 1 87 DIV + s0 PUSH + 3073 PUSHINT + MUL + s1 s0 XCPU + MUL + 3 PUSHINT + 128 LSHIFT + ADD + true 2 true 1 1 58 DIV + 13 ADD + 33226912 PUSHINT + 5232641 PUSHINT + s2 PUSH + 5 PUSHINT + false 0 false 3 0 0 DIV + 51 PUSHINT + s5 PUSH + SUB + 5 MULCONST + POW2 + 0 PUSHINT + s0 s2 XCHG + <{ + DUP2 + 5 LSHIFT + SUBR + s0 s2 XCHG + 5 LSHIFT + ADD + s0 s1 XCHG + }> PUSHCONT + REPEAT + s0 s2 XCHG + <{ + s1 s3 PUSH2 + MUL + s1 s3 PUSH2 + MUL + SUB + s2 s3 XCPU + MUL + s1 s4 XCPU + MUL + ADD + }> PUSHCONT + REPEAT + 2 2 BLKDROP2 + s0 s3 XCHG + SGN + s0 s4 PUXC + MUL + s2 s3 XCHG2 + MUL + }> + ?fun_ref_8bf58ecefe2e19cb PROCREF:<{ + ?fun_ref_aa50613cca252c08 INLINECALLDICT + ROTREV + true 2 true 3 1 6 DIV + 1 LSHIFT + s1 s4 PUXC + true 1 true 1 1 126 DIV + s1 s2 XCHG + SUB + ?fun_ref_b03a280997c9cc26 INLINECALLDICT + s0 s2 XCHG + 1 PUSHINT + AND + <{ + s0 s1 XCHG + -1 MULCONST + }> PUSHCONT + IF + true 2 true 1 1 247 DIV + }> + ?fun_ref_aa50613cca252c08 PROCREF:<{ + 90942894222941581070058735694432465663348344332098107489693037779484723616546 PUSHINT + 108051869516004014909778934258921521947 PUSHINT + }> + ?fun_ref_afe5ab170f89ef23 PROCREF:<{ + s1 s1 PUSH2 + true 1 true 1 1 255 DIV + 254 PUSHPOW2 + s0 s2 PUSH2 + false 0 false 1 1 0 DIV + 255 PUSHPOW2 + ADD + s3 PUSH + -1 ADD + <{ + s2 s1 PUXC + true 2 true 1 1 241 DIV + s1 s1 PUXC + SUB + s3 PUSH + -1 ADD + s4 s4 XCPU + true 0 false 1 1 0 DIV + s1 PUSH + ADD + }> PUSHCONT + REPEAT + s1 POP + s2 POP + s0 PUSH + false 1 true 1 1 11 DIV + s1 s2 XCHG + SUB + s2 PUSH + ROTREV + true 0 false 1 1 0 DIV + false 1 true 1 1 11 DIV + ADD + }> + ?fun_ref_b03a280997c9cc26 PROCREF:<{ + s0 s0 PUSH2 + true 1 true 1 1 255 DIV + 251 PUSHPOW2 + 41 PUSHINT + 250 LSHIFT + s0 PUSH + 18 PUSHINT + <{ + s1 s2 XCPU + SUB + s0 s5 s5 PU2XC + true 2 true 1 1 239 DIV + SUB + }> PUSHCONT + REPEAT + 2 1 BLKDROP2 + 3 PUSHINT + 254 LSHIFT + s2 s3 PUXC + true 2 true 1 1 243 DIV + SUB + s2 PUSH + 1 RSHIFT + s2 PUSH + false 1 true 1 1 5 DIV + s1 s2 XCHG + SUB + s1 s2 XCHG + true 0 false 1 1 0 DIV + false 1 true 1 1 4 DIV + ADD + s0 s0 PUSH2 + true 1 true 1 1 255 DIV + s0 PUSH + false 1 true 1 1 3 DIV + 256 PUSHNEGPOW2 + ADD + s2 PUSH + ROTREV + true 0 false 1 1 0 DIV + false 1 true 1 1 3 DIV + s0 s1 XCHG + SUB + s0 s0 PUSH2 + true 1 true 1 1 255 DIV + false 1 true 1 1 1 DIV + 256 PUSHNEGPOW2 + ADD + }> + ?fun_ref_b2fd74bee4445ab9 PROCREF:<{ + s0 PUSH + false 1 true 1 1 231 DIV + ?fun_ref_8a8385f8d78f60b7 INLINECALLDICT + s1 s3 PUSH2 + true 1 true 3 1 255 DIV + false 1 true 1 1 249 DIV + s1 s2 XCPU + SUB + 6 LSHIFT + ADD + s0 s4 XCHG + true 1 true 1 1 255 DIV + ADD + s1 s2 XCHG + true 2 true 1 1 254 DIV + 18 PUSHINT + s1 s1 PUSH2 + true 1 true 1 1 255 DIV + 254 PUSHPOW2 + s0 s2 PUSH2 + false 0 false 1 1 0 DIV + 255 PUSHPOW2 + ADD + s3 PUSH + -1 ADD + <{ + s2 s1 PUXC + true 2 true 1 1 241 DIV + s1 s1 PUXC + ADD + s3 PUSH + -1 ADD + s4 s4 XCPU + true 0 false 1 1 0 DIV + s1 PUSH + ADD + }> PUSHCONT + REPEAT + s1 POP + s2 POP + s0 PUSH + false 1 true 1 1 11 DIV + s1 s2 XCHG + ADD + s2 PUSH + ROTREV + true 0 false 1 1 0 DIV + false 1 true 1 1 11 DIV + SUB + }> + ?fun_ref_cdb28b381a5130bf PROCREF:<{ + s0 PUSH + false 1 true 1 1 248 DIV + s0 PUSH + <{ + SGN + 248 PUSHNEGPOW2 + ROT + true 2 true 1 1 255 DIV + }> PUSHCONT + <{ + s0 s1 XCHG + 8 LSHIFT + }> PUSHCONT + IFELSE + ?fun_ref_b2fd74bee4445ab9 INLINECALLDICT + false 1 true 1 1 5 DIV + ?fun_ref_aa50613cca252c08 INLINECALLDICT + s0 POP + s1 s3 XCHG + MUL + s1 s2 XCHG + ADD + ?fun_ref_6405ea4d1c38698c INLINECALLDICT + s1 s2 XCHG + true 1 true 1 1 5 DIV + ADD + false 1 true 1 1 6 DIV + }> + ?fun_ref_d78034247225d612 PROCREF:<{ + DUP2 + MIN + <{ + DROP2 + 0 PUSHINT + }> PUSHCONT + IFNOTJMP + s1 PUSH + UBITSIZE + s1 PUSH + UBITSIZE + DUP2 + EQUAL + <{ + DROP2 + DUP2 + SUB + 1 RSHIFT + s1 PUSH + ADD + }> PUSHCONT + <{ + ADD + 1 RSHIFT + POW2 + }> PUSHCONT + IFELSE + <{ + s2 s1 s0 PUSH3 + true 0 false 1 2 0 DIV + s1 PUSH + SUB + 1 RSHIFT + TUCK + ADD + s0 s1 XCHG + 0 EQINT + }> PUSHCONT + UNTIL + 2 1 BLKDROP2 + }> + ?fun_ref_da70c8217d8f9a46 PROCREF:<{ + s0 PUSH + false 1 true 1 1 248 DIV + <{ + 248 PUSHNEGPOW2 + s0 s1 XCHG + true 2 true 1 1 255 DIV + 0 PUSHINT + }> PUSHCONT + <{ + 8 LSHIFT + s0 PUSH + SGN + }> PUSHCONT + IFELSE + s0 s1 XCHG + ?fun_ref_b2fd74bee4445ab9 INLINECALLDICT + ?fun_ref_aa50613cca252c08 INLINECALLDICT + s0 POP + s1 s3 XCHG + MUL + s0 s2 XCHG + false 1 true 1 1 5 DIV + s1 s2 XCHG + SUB + ?fun_ref_6405ea4d1c38698c INLINECALLDICT + s1 s2 XCHG + true 1 true 1 1 5 DIV + SUB + false 1 true 1 1 6 DIV + }> + ?fun_ref_e11f9343f87d5b4b PROCREF:<{ + ?fun_ref_aa50613cca252c08 INLINECALLDICT + ROTREV + true 2 true 3 1 6 DIV + 1 LSHIFT + s1 s4 PUXC + true 1 true 1 1 126 DIV + s1 s2 XCHG + SUB + ?fun_ref_b03a280997c9cc26 INLINECALLDICT + s0 s2 XCHG + 1 PUSHINT + AND + <{ + -1 MULCONST + s0 s1 XCHG + }> PUSHCONT + IF + s0 s1 XCHG + true 2 true 1 1 247 DIV + }> + ?fun_ref_e9b023c94244cb2e PROCREF:<{ + 115641670674223639132965820642403718536242645001775371762318060545014644837101 PUSHINT + }> + ?fun_ref_eabdf5efadfce810 PROCREF:<{ + ?fun_ref_2051d9d821c3f770 INLINECALLDICT + ROTREV + 8 PUSHINT + true 2 false 3 1 0 DIV + 1 LSHIFT + s1 s4 PUXC + true 1 true 1 1 126 DIV + s1 s2 XCHG + SUB + ?fun_ref_88faf969245bcd15 INLINECALLDICT + 9 PUSHINT + s2 PUSH + SUB + false 1 false 1 1 0 DIV + 248 PUSHINT + ROT + ADD + -1 PUSHINT + s0 s1 XCHG + LSHIFTX + SUB + }> + ?fun_ref_ec287b9511e936b8 PROCREF:<{ + ?fun_ref_1b1ae470b4614553 INLINECALLDICT + false 1 true 3 1 3 DIV + 9 LSHIFT + s2 PUSH + -3769 PUSHINT + MUL + ADD + false 1 true 1 1 12 DIV + ADD + s0 s1 XCHG + 3563114646320977386603103333812068872452913448227778071188132859183498739150 PUSHINT + MUL + ADD + s0 s1 XCHG + }> + ?fun_ref_f8345f3d64016266 PROCREF:<{ + -3 PUSHINT + 253 LSHIFT + 12 PUSHINT + <{ + RANDU256 + 4 RSHIFT + ADD + }> PUSHCONT + REPEAT + }> + ?fun_ref_fbd4cc263c208ffd PROCREF:<{ + s1 s1 PUSH2 + true 1 true 1 1 255 DIV + 254 PUSHPOW2 + s0 s2 PUSH2 + false 0 false 1 1 0 DIV + 255 PUSHPOW2 + ADD + s3 PUSH + -1 ADD + <{ + s2 s1 PUXC + true 2 true 1 1 247 DIV + s1 s1 PUXC + SUB + s3 PUSH + -1 ADD + s4 s4 XCPU + true 0 false 1 1 0 DIV + s1 PUSH + ADD + }> PUSHCONT + REPEAT + s1 POP + s2 POP + s0 PUSH + 1 RSHIFT + s0 s1 XCHG + false 1 true 1 1 5 DIV + s1 s2 XCHG + SUB + s2 PUSH + ROTREV + true 0 false 1 1 0 DIV + false 1 true 1 1 4 DIV + ADD + }> +}END>c" +`; + exports[`decompileAll should decompile wallet 1`] = ` "PROGRAM{ DECLPROC recv_internal; @@ -1835,129 +3454,3 @@ exports[`decompileAll should decompile wallet v4 1`] = ` }> }END>c" `; - -exports[`decompileAll should decompile mathlib.fc 1`] = ` -"PROGRAM{ - DECLPROC recv_internal; - DECLPROC ?fun_ref_1b1ae470b4614553; - DECLPROC ?fun_ref_2051d9d821c3f770; - DECLPROC ?fun_ref_48cab849e3521372; - DECLPROC ?fun_ref_afe5ab170f89ef23; - recv_internal PROC:<{ - 248 PUSHPOW2 - ?fun_ref_48cab849e3521372 INLINECALLDICT - 248 PUSHINT - SUB - 248 LSHIFT - s0 s1 XCHG - false 1 true 1 1 7 DIV - ADD - s0 POP - }> - ?fun_ref_1b1ae470b4614553 PROCREF:<{ - s0 PUSH - UBITSIZE - -1 ADD - 8 PUSHPOW2DEC - s1 PUSH - SUB - s1 s2 XCHG - LSHIFTX - 2873 PUSHINT - 244 LSHIFT - DUP2 - SUB - 1 RSHIFT - s0 PUSH - 65 PUSHINT - s0 s3 XCHG - ADD - s1 s2 XCHG - true 0 false 1 1 0 DIV - 11 ADD - s0 PUSH - 5 PUSHINT - false 0 false 3 0 0 DIV - 1 PUSHINT - s0 s1 XCHG - <{ - 33 MULCONST - }> PUSHCONT - REPEAT - s0 s1 XCHG - <{ - 39135393 PUSHINT - MUL - }> PUSHCONT - REPEAT - 51 PUSHINT - s2 PUSH - SUB - 5 MULCONST - LSHIFTX - s2 s2 XCPU - SUB - s0 PUSH - 4 LSHIFT - s0 s1 XCHG - 1 RSHIFT - s0 s3 XCHG2 - ADD - s1 s2 XCHG - true 2 true 1 1 255 DIV - 18 PUSHINT - ?fun_ref_afe5ab170f89ef23 INLINECALLDICT - }> - ?fun_ref_2051d9d821c3f770 PROCREF:<{ - 80260960185991308862233904206310070533990667611589946606122867505419956976172 PUSHINT - -32272921378999278490133606779486332143 PUSHINT - }> - ?fun_ref_48cab849e3521372 PROCREF:<{ - ?fun_ref_1b1ae470b4614553 INLINECALLDICT - ?fun_ref_2051d9d821c3f770 INLINECALLDICT - s0 POP - true 2 true 1 1 255 DIV - false 1 true 1 1 3 DIV - s0 s1 XCHG - 5140487830366106860412008603913034462883915832139695448455767612111363481357 PUSHINT - MUL - ADD - s0 s1 XCHG - }> - ?fun_ref_afe5ab170f89ef23 PROCREF:<{ - s1 s1 PUSH2 - true 1 true 1 1 255 DIV - 254 PUSHPOW2 - s0 s2 PUSH2 - false 0 false 1 1 0 DIV - 255 PUSHPOW2 - ADD - s3 PUSH - -1 ADD - <{ - s2 s1 PUXC - true 2 true 1 1 241 DIV - s1 s1 PUXC - SUB - s3 PUSH - -1 ADD - s4 s4 XCPU - true 0 false 1 1 0 DIV - s1 PUSH - ADD - }> PUSHCONT - REPEAT - s1 POP - s2 POP - s0 PUSH - false 1 true 1 1 11 DIV - s1 s2 XCHG - SUB - s2 PUSH - ROTREV - true 0 false 1 1 0 DIV - false 1 true 1 1 11 DIV - ADD - }> -}END>c" -`; diff --git a/src/decompiler/__testdata__/mathlib.boc b/src/decompiler/__testdata__/mathlib.boc index 8b0a97d19d2ff34995f6654dafbc615d2ea13d79..63a8f66b0c8600dbb5ee8546d95d935c52ac9b28 100644 GIT binary patch literal 2918 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 vK)?ytgW~H)}di1 diff --git a/src/decompiler/__testdata__/mathlib.fif b/src/decompiler/__testdata__/mathlib.fif new file mode 100644 index 0000000..2fea69a --- /dev/null +++ b/src/decompiler/__testdata__/mathlib.fif @@ -0,0 +1,1295 @@ +"Asm.fif" include +// automatically generated from `stdlib.fc` `mathlib.fc` +PROGRAM{ + DECLPROC geom_mean + DECLPROC sqrt + DECLPROC fixed248::sqrt + DECLPROC fixed255::sqrt + DECLPROC fixed248::sqr + DECLPROC fixed255::sqr + DECLPROC log2_xconst_f256 + DECLPROC Pi_xconst_f254 + DECLPROC Atan1_16_f260 + DECLPROC Atan1_8_f259 + DECLPROC Atan1_32_f261 + DECLPROC log2_const_f256 + DECLPROC fixed248::log2_const + DECLPROC Pi_const_f254 + DECLPROC fixed248::Pi_const + DECLPROC tanh_f258 + DECLPROC expm1_f257 + DECLPROC fixed248::exp + DECLPROC fixed248::exp2 + DECLPROC tan_f260_inlined + DECLPROC tan_f260 + DECLPROC tan_f258_inlined + DECLPROC tan_f258 + DECLPROC sincosm1_f259_inlined + DECLPROC sincosm1_f259 + DECLPROC sincosn_f256 + DECLPROC sincosm1_f256 + DECLPROC tan_aux_f256 + DECLPROC fixed248::sincos + DECLPROC fixed248::sin + DECLPROC fixed248::cos + DECLPROC fixed248::tan + DECLPROC fixed248::cot + DECLPROC atanh_f258 + DECLPROC atanh_f261_inlined + DECLPROC atanh_f261 + DECLPROC log_aux_f257 + DECLPROC pow33 + DECLPROC pow33b + DECLPROC log_auxx_f260 + DECLPROC log_aux_f256 + DECLPROC log2_aux_f256 + DECLPROC fixed248::log + DECLPROC fixed248::log2 + DECLPROC fixed248::pow + DECLPROC atan_f259 + DECLPROC atan_f261_inlined + DECLPROC atan_f261 + DECLPROC atan_aux_prereduce + DECLPROC atan_aux_f256 + DECLPROC atan_auxx_f256 + DECLPROC atan_f255 + DECLPROC atan_f256_small + DECLPROC asin_f255 + DECLPROC acos_f255 + DECLPROC fixed248::asin + DECLPROC fixed248::acos + DECLPROC fixed248::atan + DECLPROC fixed248::acot + DECLPROC nrand_f252 + DECLPROC nrand_fast_f252 + DECLPROC fixed248::random + DECLPROC fixed248::nrand + DECLPROC fixed248::nrand_fast + DECLPROC main + geom_mean PROCREF:<{ + 2DUP + MIN + IFNOTJMP:<{ + 2DROP + 0 PUSHINT + }> + OVER + UBITSIZE + OVER + UBITSIZE + 2DUP + EQUAL + IF:<{ + 2DROP + 2DUP + SUB + 1 RSHIFT# + OVER + ADD + }>ELSE<{ + ADD + 1 RSHIFT# + POW2 + }> + UNTIL:<{ + s2 s1 s0 PUSH3 + MULDIVC + OVER + SUB + 1 RSHIFT# + TUCK + ADD + SWAP + 0 EQINT + }> + 2 1 BLKDROP2 + }> + sqrt PROCINLINE:<{ + 1 PUSHINT + geom_mean INLINECALLDICT + }> + fixed248::sqrt PROCINLINE:<{ + 248 PUSHPOW2 + geom_mean INLINECALLDICT + }> + fixed255::sqrt PROCINLINE:<{ + 255 PUSHPOW2 + geom_mean INLINECALLDICT + }> + fixed248::sqr PROCINLINE:<{ + DUP + 248 MULRSHIFTR# + }> + fixed255::sqr PROCINLINE:<{ + DUP + 255 MULRSHIFTR# + }> + log2_xconst_f256 PROCREF:<{ + 80260960185991308862233904206310070533990667611589946606122867505419956976172 PUSHINT + -32272921378999278490133606779486332143 PUSHINT + }> + Pi_xconst_f254 PROCREF:<{ + 90942894222941581070058735694432465663348344332098107489693037779484723616546 PUSHINT + 108051869516004014909778934258921521947 PUSHINT + }> + Atan1_16_f260 PROCREF:<{ + 115641670674223639132965820642403718536242645001775371762318060545014644837101 PUSHINT + }> + Atan1_8_f259 PROCREF:<{ + 115194597005316551477397594802136977648153890007566736408151129975021336532841 PUSHINT + }> + Atan1_32_f261 PROCREF:<{ + 115754418570128574501879331591757054405465733718902755858991306434399246026247 PUSHINT + }> + log2_const_f256 PROCINLINE:<{ + log2_xconst_f256 INLINECALLDICT + DROP + }> + fixed248::log2_const PROCINLINE:<{ + log2_const_f256 INLINECALLDICT + 8 RSHIFTR# + }> + Pi_const_f254 PROCINLINE:<{ + Pi_xconst_f254 INLINECALLDICT + DROP + }> + fixed248::Pi_const PROCINLINE:<{ + Pi_const_f254 INLINECALLDICT + 6 RSHIFTR# + }> + tanh_f258 PROCREF:<{ + s1 s1 PUSH2 + 255 MULRSHIFTR# + OVER + 1 LSHIFT# + 5 ADDCONST + 250 LSHIFT# + DUP + 251 PUSHPOW2 + s0 s4 XCHG + REPEAT:<{ + s1 s3 XCPU + SUB + s0 s2 s1 PU2XC + 239 LSHIFT#DIVR + ADD + }> + NIP + s2 POP + 3 PUSHINT + 254 LSHIFT# + s1 s2 PUXC + 243 LSHIFT#DIVR + s1 s2 XCHG + ADD + OVER + 7 RSHIFTR# + ADD + s2 PUSH + -ROT + MULDIVR + 7 RSHIFTR# + SUB + }> + expm1_f257 PROCREF:<{ + s0 s0 PUSH2 + 255 MULRSHIFTR# + 251 PUSHPOW2 + 39 PUSHINT + 250 LSHIFT# + DUP + 17 PUSHINT + REPEAT:<{ + s1 s2 XCPU + SUB + s0 s3 s1 PU2XC + 239 LSHIFT#DIVR + ADD + }> + 2 1 BLKDROP2 + 3 PUSHINT + 254 LSHIFT# + s2 s1 PUXC + 243 LSHIFT#DIVR + ADD + s2 PUSH + 4 RSHIFTR# + OVER + SUB + DUP + 1 RSHIFT# + s4 s1 PUXC + 256 MULRSHIFTR# + 2 RSHIFTR# + s1 s2 XCHG + ADD + MULDIVR + 2 RSHIFTR# + SUB + }> + fixed248::exp PROCREF:<{ + log2_xconst_f256 INLINECALLDICT + -ROT + 8 PUSHINT + LSHIFTDIVMODR + 1 LSHIFT# + s1 s2 PUXC + 127 MULRSHIFTR# + s1 s2 XCHG + SUB + expm1_f257 INLINECALLDICT + 9 PUSHINT + s2 PUSH + SUB + RSHIFTR + 248 PUSHINT + ROT + ADD + -1 PUSHINT SWAP LSHIFT + SUB + }> + fixed248::exp2 PROCREF:<{ + 248 RSHIFTR#MOD + log2_const_f256 INLINECALLDICT + 247 MULRSHIFTR# + expm1_f257 INLINECALLDICT + 9 PUSHINT + s2 PUSH + SUB + RSHIFTR + 248 PUSHINT + ROT + ADD + -1 PUSHINT SWAP LSHIFT + SUB + }> + tan_f260_inlined PROCINLINE:<{ + s0 s0 PUSH2 + 256 MULRSHIFTR# + 251 PUSHPOW2 + 33 PUSHINT + 250 LSHIFT# + DUP + 14 PUSHINT + REPEAT:<{ + s1 s2 XCPU + SUB + s0 s3 s1 PU2XC + 236 LSHIFT#DIVR + SUB + }> + 2 1 BLKDROP2 + 3 PUSHINT + 254 LSHIFT# + s2 s1 PUXC + 240 LSHIFT#DIVR + SUB + s2 PUSH + 1 RSHIFT# + s2 PUSH + 10 RSHIFTR# + s1 s2 XCHG + SUB + s1 s2 XCHG + MULDIVR + 9 RSHIFTR# + ADD + }> + tan_f260 PROCREF:<{ + tan_f260_inlined INLINECALLDICT + }> + tan_f258_inlined PROCINLINE:<{ + s0 s0 PUSH2 + 256 MULRSHIFTR# + 251 PUSHPOW2 + 41 PUSHINT + 250 LSHIFT# + DUP + 18 PUSHINT + REPEAT:<{ + s1 s2 XCPU + SUB + s0 s3 s1 PU2XC + 240 LSHIFT#DIVR + SUB + }> + 2 1 BLKDROP2 + 3 PUSHINT + 254 LSHIFT# + s2 s1 PUXC + 244 LSHIFT#DIVR + SUB + s2 PUSH + 1 RSHIFT# + s2 PUSH + 6 RSHIFTR# + s1 s2 XCHG + SUB + s1 s2 XCHG + MULDIVR + 5 RSHIFTR# + ADD + }> + tan_f258 PROCREF:<{ + tan_f258_inlined INLINECALLDICT + }> + sincosm1_f259_inlined PROCINLINE:<{ + tan_f260_inlined INLINECALLDICT + s0 s0 PUSH2 + 256 MULRSHIFTR# + DUP + 9 RSHIFTR# + 255 PUSHPOW2 + ADD + s2 PUSH + 1 RSHIFT# + s2 s1 PUSH2 + MULDIVR + 8 RSHIFTR# + s1 s3 XCHG + SUB + OVER + 1 RSHIFT# + s0 s2 s3 XCPUXC + MULDIVR + 8 RSHIFTR# + SUB + }> + sincosm1_f259 PROCREF:<{ + sincosm1_f259_inlined INLINECALLDICT + }> + sincosn_f256 PROCREF:<{ + OVER + ABS + Atan1_8_f259 INLINECALLDICT + 2 LSHIFT#DIVMODR + 1 LSHIFT# + ROT + ADD + sincosm1_f259 INLINECALLDICT + -1 PUSHINT + 0 PUSHINT + 1 PUSHINT + s0 s5 XCHG + REPEAT:<{ + OVER + 63 MULCONST + OVER + 4 LSHIFT# + SUB + s0 s2 XCHG + 4 LSHIFT# + SWAP + 63 MULCONST + ADD + s0 s4 XCHG + 65 MULCONST + s0 s4 XCHG + }> + s4 PUSH + 256 LSHIFT#DIVMODR + s5 PUSH + 7 LSHIFT#DIVR + s2 s5 XCPU + 256 LSHIFT#DIVMODR + s0 s6 XCHG2 + 7 LSHIFT#DIVR + s0 s6 XCHG + SGN + s1 s3 PUSH2 + 256 MULRSHIFTR# + s0 s3 XCHG2 + SUB + 4 RSHIFTR# + s5 s4 PUSH2 + 256 MULRSHIFTR# + SUB + 3 RSHIFTR# + OVER + SUB + s1 s2 XCHG + MUL + s4 s2 PUXC + 256 MULRSHIFTR# + s0 s5 XCHG2 + SUB + 4 RSHIFTR# + s4 s2 XCHG2 + 256 MULRSHIFTR# + ADD + 3 RSHIFTR# + SUB + }> + sincosm1_f256 PROCREF:<{ + sincosm1_f259_inlined INLINECALLDICT + 7 PUSHINT + 3 PUSHINT + REPEAT:<{ + s2 s2 PUSH2 + 256 MULRSHIFTR# + s3 s2 PUXC + 256 MULRSHIFTR# + OVER + RSHIFTR + s1 s3 XCHG + SUB + s0 s2 XCHG + -2 ADDCONST + }> + DROP + }> + tan_aux_f256 PROCREF:<{ + tan_f258_inlined INLINECALLDICT + s0 s0 PUSH2 + 256 MULRSHIFTR# + DUP + 4 RSHIFTR# + 256 PUSHNEGPOW2 + ADD + s2 PUSH + -ROT + MULDIVR + 4 RSHIFTR# + SWAP + SUB + s0 s0 PUSH2 + 256 MULRSHIFTR# + 2 RSHIFTR# + 256 PUSHNEGPOW2 + ADD + }> + fixed248::sincos PROCREF:<{ + Pi_xconst_f254 INLINECALLDICT + -ROT + 7 LSHIFT#DIVMODR + 1 LSHIFT# + s1 s2 PUXC + 127 MULRSHIFTR# + s1 s2 XCHG + SUB + sincosm1_f256 INLINECALLDICT + 248 PUSHPOW2 + SWAP + 9 RSHIFTR# + SUB + SWAP + 8 RSHIFTR# + s0 s2 XCHG + 3 PUSHINT + AND + REPEAT:<{ + SWAP + NEGATE + }> + }> + fixed248::sin PROCINLINE:<{ + fixed248::sincos INLINECALLDICT + DROP + }> + fixed248::cos PROCINLINE:<{ + fixed248::sincos INLINECALLDICT + NIP + }> + fixed248::tan PROCREF:<{ + Pi_xconst_f254 INLINECALLDICT + -ROT + 7 LSHIFT#DIVMODR + 1 LSHIFT# + s1 s2 PUXC + 127 MULRSHIFTR# + s1 s2 XCHG + SUB + tan_aux_f256 INLINECALLDICT + s0 s2 XCHG + 1 PUSHINT + AND + IF:<{ + NEGATE + SWAP + }> + SWAP + 248 LSHIFT#DIVR + }> + fixed248::cot PROCREF:<{ + Pi_xconst_f254 INLINECALLDICT + -ROT + 7 LSHIFT#DIVMODR + 1 LSHIFT# + s1 s2 PUXC + 127 MULRSHIFTR# + s1 s2 XCHG + SUB + tan_aux_f256 INLINECALLDICT + s0 s2 XCHG + 1 PUSHINT + AND + IF:<{ + SWAP + NEGATE + }> + 248 LSHIFT#DIVR + }> + atanh_f258 PROCREF:<{ + s1 s1 PUSH2 + 256 MULRSHIFTR# + 254 PUSHPOW2 + s0 s2 PUSH2 + DIVR + 255 PUSHPOW2 + ADD + s3 PUSH + DEC + REPEAT:<{ + s2 s(-1) PUXC + 248 LSHIFT#DIVR + s1 s(-1) PUXC + SUB + s3 PUSH + DEC + s4 s4 XCPU + MULDIVR + OVER + ADD + }> + NIP + s2 POP + DUP + 1 RSHIFT# + SWAP + 6 RSHIFTR# + s1 s2 XCHG + SUB + s2 PUSH + -ROT + MULDIVR + 5 RSHIFTR# + ADD + }> + atanh_f261_inlined PROCINLINE:<{ + s1 s1 PUSH2 + 256 MULRSHIFTR# + 254 PUSHPOW2 + s0 s2 PUSH2 + DIVR + 255 PUSHPOW2 + ADD + s3 PUSH + DEC + REPEAT:<{ + s2 s(-1) PUXC + 242 LSHIFT#DIVR + s1 s(-1) PUXC + SUB + s3 PUSH + DEC + s4 s4 XCPU + MULDIVR + OVER + ADD + }> + NIP + s2 POP + DUP + 12 RSHIFTR# + s1 s2 XCHG + SUB + s2 PUSH + -ROT + MULDIVR + 12 RSHIFTR# + ADD + }> + atanh_f261 PROCREF:<{ + atanh_f261_inlined INLINECALLDICT + }> + log_aux_f257 PROCREF:<{ + DUP + UBITSIZE + 8 PUSHPOW2 + OVER + SUB + s1 s2 XCHG + LSHIFT + 256 PUSHNEGPOW2 + OVER + 249 RSHIFT# + 91 LESSINT + IF:<{ + 1 RSHIFT# + s0 s2 XCHG + DEC + s0 s2 XCHG + }> + TUCK + ADD + DUP + 1 LSHIFT# + SWAP + 1 RSHIFT# + ROT + SUB + 256 LSHIFT#DIVR + 36 PUSHINT + atanh_f258 INLINECALLDICT + SWAP + }> + pow33 PROCINLINE:<{ + 1 PUSHINT + SWAP + REPEAT:<{ + 33 MULCONST + }> + }> + pow33b PROCINLINE:<{ + 5 PUSHINT + DIVMOD + 1 PUSHINT + SWAP + REPEAT:<{ + 33 MULCONST + }> + SWAP + REPEAT:<{ + 39135393 PUSHINT + MUL + }> + }> + log_auxx_f260 PROCREF:<{ + DUP + UBITSIZE + DEC + 8 PUSHPOW2DEC + OVER + SUB + s1 s2 XCHG + LSHIFT + 2873 PUSHINT + 244 LSHIFT# + 2DUP + SUB + 1 RSHIFT# + DUP + 65 PUSHINT + s0 s3 XCHG + ADD + s1 s2 XCHG + MULDIVR + 11 ADDCONST + DUP + pow33b INLINECALLDICT + 51 PUSHINT + s2 PUSH + SUB + 5 MULCONST + LSHIFT + s2 s2 XCPU + SUB + DUP + 4 LSHIFT# + SWAP + 1 RSHIFT# + s0 s3 XCHG2 + ADD + s1 s2 XCHG + 256 LSHIFT#DIVR + 18 PUSHINT + atanh_f261 INLINECALLDICT + }> + log_aux_f256 PROCREF:<{ + log_auxx_f260 INLINECALLDICT + 4 RSHIFTR#MOD + 9 LSHIFT# + s2 PUSH + -3769 PUSHINT + MUL + ADD + 13 RSHIFTR# + ADD + SWAP + 3563114646320977386603103333812068872452913448227778071188132859183498739150 PUSHINT + MUL + ADD + SWAP + }> + log2_aux_f256 PROCREF:<{ + log_auxx_f260 INLINECALLDICT + log2_const_f256 INLINECALLDICT + 256 LSHIFT#DIVR + 4 RSHIFTR# + SWAP + 5140487830366106860412008603913034462883915832139695448455767612111363481357 PUSHINT + MUL + ADD + SWAP + }> + fixed248::log PROCREF:<{ + log_aux_f256 INLINECALLDICT + 248 PUSHINT + SUB + log2_const_f256 INLINECALLDICT + 8 MULRSHIFTR# + SWAP + 8 RSHIFTR# + ADD + }> + fixed248::log2 PROCINLINE:<{ + log2_aux_f256 INLINECALLDICT + 248 PUSHINT + SUB + 248 LSHIFT# + SWAP + 8 RSHIFTR# + ADD + }> + fixed248::pow PROCREF:<{ + DUP + IFNOTJMP:<{ + 2DROP + 248 PUSHPOW2 + }> + OVER + 1 LESSINT + IFJMP:<{ + OR + 0 LESSINT + 0 PUSHINT + SWAP + RSHIFT + }> + SWAP + log2_aux_f256 INLINECALLDICT + 248 PUSHINT + SUB + s2 PUSH + 248 MULRSHIFTR#MOD + s2 s3 XCHG2 + 256 MULRSHIFT#MOD + 247 RSHIFT# + SWAP + 248 RSHIFTR#MOD + s1 s4 XCHG + ADD + 248 RSHIFTR#MOD + 9 LSHIFT# + ROT + ADD + s2 s3 XCHG2 + ADD + ADD + DUP + 248 PUSHINT + ADD + DUP + 1 LESSINT + IFJMP:<{ + 2 1 BLKDROP2 + 0 EQINT + NEGATE + }> + log2_const_f256 INLINECALLDICT + s1 s3 XCHG + 256 MULRSHIFTR# + expm1_f257 INLINECALLDICT + 9 PUSHINT + ROT + SUB + RSHIFTR + SWAP + -1 PUSHINT SWAP LSHIFT + SUB + }> + atan_f259 PROCREF:<{ + s1 s1 PUSH2 + 256 MULRSHIFTR# + 254 PUSHPOW2 + s0 s2 PUSH2 + DIVR + 255 PUSHPOW2 + ADD + s3 PUSH + DEC + REPEAT:<{ + s2 s(-1) PUXC + 246 LSHIFT#DIVR + s1 s(-1) PUXC + ADD + s3 PUSH + DEC + s4 s4 XCPU + MULDIVR + OVER + ADD + }> + NIP + s2 POP + DUP + 8 RSHIFTR# + s1 s2 XCHG + ADD + s2 PUSH + -ROT + MULDIVR + 8 RSHIFTR# + SUB + }> + atan_f261_inlined PROCINLINE:<{ + s1 s1 PUSH2 + 256 MULRSHIFTR# + 254 PUSHPOW2 + s0 s2 PUSH2 + DIVR + 255 PUSHPOW2 + ADD + s3 PUSH + DEC + REPEAT:<{ + s2 s(-1) PUXC + 242 LSHIFT#DIVR + s1 s(-1) PUXC + ADD + s3 PUSH + DEC + s4 s4 XCPU + MULDIVR + OVER + ADD + }> + NIP + s2 POP + DUP + 12 RSHIFTR# + s1 s2 XCHG + ADD + s2 PUSH + -ROT + MULDIVR + 12 RSHIFTR# + SUB + }> + atan_f261 PROCREF:<{ + atan_f261_inlined INLINECALLDICT + }> + atan_aux_prereduce PROCREF:<{ + DUP + ABS + 7214596 PUSHINT + 2DUP + SUB + -ROT + MUL + 48 PUSHPOW2 + ADD + 88 LSHIFT#DIVR + DUP + 3073 PUSHINT + MUL + s1 s0 XCPU + MUL + 3 PUSHINT + 128 LSHIFT# + ADD + 59 LSHIFT#DIVR + 13 ADDCONST + 33226912 PUSHINT + 5232641 PUSHINT + s2 PUSH + 5 PUSHINT + DIVMOD + 51 PUSHINT + s5 PUSH + SUB + 5 MULCONST + POW2 + 0 PUSHINT + s0 s2 XCHG + REPEAT:<{ + 2DUP + 5 LSHIFT# + SUBR + s0 s2 XCHG + 5 LSHIFT# + ADD + SWAP + }> + s0 s2 XCHG + REPEAT:<{ + s1 s3 PUSH2 + MUL + s1 s3 PUSH2 + MUL + SUB + s2 s3 XCPU + MUL + s1 s4 XCPU + MUL + ADD + }> + 2 2 BLKDROP2 + s0 s3 XCHG + SGN + s0 s2 PUXC + MUL + s2 s3 XCHG2 + MUL + }> + atan_aux_f256 PROCREF:<{ + DUP + 232 RSHIFTR# + atan_aux_prereduce INLINECALLDICT + s1 s3 PUSH2 + 256 MULRSHIFTR#MOD + 250 RSHIFTR# + s1 s2 XCPU + SUB + 6 LSHIFT# + ADD + s0 s4 XCHG + 256 MULRSHIFTR# + ADD + s1 s2 XCHG + 255 LSHIFT#DIVR + 18 PUSHINT + atan_f261_inlined INLINECALLDICT + }> + atan_auxx_f256 PROCREF:<{ + DUP + 232 RSHIFTR# + atan_aux_prereduce INLINECALLDICT + s1 s3 PUSH2 + 256 MULRSHIFTR#MOD + 1 RSHIFT# + s1 s2 XCPU + SUB + s2 s5 XCHG2 + 256 MULRSHIFTR#MOD + 1 RSHIFT# + s0 s3 XCHG + ADD + s4 s4 XCPU + 255 LSHIFT#DIVMODR + s1 s2 XCHG + ADD + s4 PUSH + 255 LSHIFT#DIVR + s2 s2 s4 XCPUXC + MULDIVR + s1 s3 XCHG + SUB + 249 RSHIFTR# + s0 s2 XCHG + 6 LSHIFT# + s1 s2 XCHG + ADD + 18 PUSHINT + atan_f261_inlined INLINECALLDICT + }> + atan_f255 PROCREF:<{ + DUP + 256 RSHIFTR# + DUP + IF:<{ + 255 PUSHNEGPOW2 + ROT + 256 LSHIFT#DIVR + }>ELSE<{ + SWAP + 1 LSHIFT# + }> + atan_aux_f256 INLINECALLDICT + Pi_xconst_f254 INLINECALLDICT + Atan1_32_f261 INLINECALLDICT + s1 s4 XCHG + 6 MULRSHIFTR#MOD + s5 s2 PUXC + MUL + ADD + -ROT + ADD + 2SWAP + 122 MULRSHIFTR# + ADD + 6 RSHIFTR# + ADD + }> + atan_f256_small PROCREF:<{ + atan_aux_f256 INLINECALLDICT + Atan1_32_f261 INLINECALLDICT + s1 s2 XCHG + 5 MULRSHIFTR#MOD + s1 s2 XCHG + ADD + 5 RSHIFTR# + ADD + }> + asin_f255 PROCREF:<{ + 255 PUSHPOW2 + OVER + fixed255::sqr INLINECALLDICT + SUB + DUP + IFNOTJMP:<{ + DROP + SGN + Pi_const_f254 INLINECALLDICT + MUL + }> + fixed255::sqrt INLINECALLDICT + 255 PUSHNEGPOW2 + SWAP + SUB + 256 LSHIFT#DIVR + NEGATE + atan_f256_small INLINECALLDICT + }> + acos_f255 PROCREF:<{ + Pi_const_f254 INLINECALLDICT + OVER + 255 PUSHNEGPOW2 + EQUAL + IFJMP:<{ + NIP + }> + 1 RSHIFT# + 255 PUSHPOW2 + s2 PUSH + fixed255::sqr INLINECALLDICT + SUB + fixed255::sqrt INLINECALLDICT + 255 PUSHNEGPOW2 + SWAP + SUB + s1 s2 XCHG + 256 LSHIFT#DIVR + atan_f256_small INLINECALLDICT + 1 RSHIFTR# + ADD + }> + fixed248::asin PROCINLINE:<{ + 7 LSHIFT# + asin_f255 INLINECALLDICT + 7 RSHIFTR# + }> + fixed248::acos PROCINLINE:<{ + 7 LSHIFT# + acos_f255 INLINECALLDICT + 6 RSHIFTR# + }> + fixed248::atan PROCREF:<{ + DUP + 249 RSHIFTR# + DUP + IF:<{ + SGN + 248 PUSHNEGPOW2 + ROT + 256 LSHIFT#DIVR + }>ELSE<{ + SWAP + 8 LSHIFT# + }> + atan_aux_f256 INLINECALLDICT + 6 RSHIFTR# + Pi_const_f254 INLINECALLDICT + s1 s3 XCHG + MUL + s1 s2 XCHG + ADD + Atan1_32_f261 INLINECALLDICT + s1 s2 XCHG + 6 MULRSHIFTR# + ADD + 7 RSHIFTR# + }> + fixed248::acot PROCREF:<{ + DUP + 249 RSHIFTR# + IF:<{ + 248 PUSHNEGPOW2 + SWAP + 256 LSHIFT#DIVR + 0 PUSHINT + }>ELSE<{ + 8 LSHIFT# + DUP + SGN + }> + SWAP + atan_aux_f256 INLINECALLDICT + Pi_const_f254 INLINECALLDICT + s1 s3 XCHG + MUL + s0 s2 XCHG + 6 RSHIFTR# + s1 s2 XCHG + SUB + Atan1_32_f261 INLINECALLDICT + s1 s2 XCHG + 6 MULRSHIFTR# + SUB + 7 RSHIFTR# + }> + nrand_f252 PROCREF:<{ + PUSHNAN + 29483 PUSHINT + 236 LSHIFT# + -3167 PUSHINT + 239 LSHIFT# + 12845 PUSHINT + 16693 PUSHINT + 9043 PUSHINT + UNTIL:<{ + RANDU256 + 4 RSHIFT# + INC + RANDU256 + 255 PUSHPOW2 + SUB + 7027 PUSHINT + 16 MULRSHIFTR# + DUP + ABS + s2 s7 PUSH2 + SUB + s1 s7 PUSH2 + SUB + s1 s1 PUSH2 + 252 MULRSHIFTR# + s1 s8 PUSH2 + 16 MULRSHIFTR# + s3 s8 XCPU + 16 MULRSHIFTR# + s1 s3 XCHG + SUB + 252 MULRSHIFTR# + ADD + 237 RSHIFT# + s4 PUSH + SUB + DUP + 82 LESSINT + s2 s4 XCPU + DIV + 16 LESSINT + s1 s2 XCHG + AND + IF:<{ + s8 POP + OVER + 252 LSHIFT#DIVR + s0 s7 XCHG + -1 GTINT + IF:<{ + s6 s6 PUSH2 + 256 MULRSHIFTR# + 2 RSHIFTR# + NEGATE + fixed248::exp INLINECALLDICT + 4 LSHIFT# + GREATER + IF:<{ + s5 POP + PUSHNAN + s0 s5 XCHG + }> + }>ELSE<{ + DROP + }> + }>ELSE<{ + 3 BLKDROP + }> + s5 PUSH + ISNAN + NOT + }> + 5 BLKDROP + }> + nrand_fast_f252 PROCREF:<{ + -3 PUSHINT + 253 LSHIFT# + 12 PUSHINT + REPEAT:<{ + RANDU256 + 4 RSHIFT# + ADD + }> + }> + fixed248::random PROCINLINE:<{ + RANDU256 + 8 RSHIFT# + }> + fixed248::nrand PROCINLINE:<{ + nrand_f252 INLINECALLDICT + 4 RSHIFTR# + }> + fixed248::nrand_fast PROCINLINE:<{ + nrand_fast_f252 INLINECALLDICT + 4 RSHIFTR# + }> + main PROC:<{ + geom_mean INLINECALLDICT + sqrt INLINECALLDICT + fixed248::sqrt INLINECALLDICT + fixed255::sqrt INLINECALLDICT + fixed248::sqr INLINECALLDICT + fixed255::sqr INLINECALLDICT + log2_xconst_f256 INLINECALLDICT + Pi_xconst_f254 INLINECALLDICT + Atan1_16_f260 INLINECALLDICT + Atan1_8_f259 INLINECALLDICT + Atan1_32_f261 INLINECALLDICT + log2_const_f256 INLINECALLDICT + fixed248::log2_const INLINECALLDICT + Pi_const_f254 INLINECALLDICT + fixed248::Pi_const INLINECALLDICT + tanh_f258 INLINECALLDICT + expm1_f257 INLINECALLDICT + fixed248::exp INLINECALLDICT + fixed248::exp2 INLINECALLDICT + tan_f260_inlined INLINECALLDICT + tan_f260 INLINECALLDICT + tan_f258_inlined INLINECALLDICT + tan_f258 INLINECALLDICT + sincosm1_f259_inlined INLINECALLDICT + sincosm1_f259 INLINECALLDICT + sincosn_f256 INLINECALLDICT + sincosm1_f256 INLINECALLDICT + tan_aux_f256 INLINECALLDICT + fixed248::sincos INLINECALLDICT + fixed248::sin INLINECALLDICT + fixed248::cos INLINECALLDICT + fixed248::tan INLINECALLDICT + fixed248::cot INLINECALLDICT + atanh_f258 INLINECALLDICT + atanh_f261_inlined INLINECALLDICT + atanh_f261 INLINECALLDICT + log_aux_f257 INLINECALLDICT + pow33 INLINECALLDICT + pow33b INLINECALLDICT + log_auxx_f260 INLINECALLDICT + log_aux_f256 INLINECALLDICT + log2_aux_f256 INLINECALLDICT + fixed248::log INLINECALLDICT + fixed248::log2 INLINECALLDICT + fixed248::pow INLINECALLDICT + atan_f259 INLINECALLDICT + atan_f261_inlined INLINECALLDICT + atan_f261 INLINECALLDICT + atan_aux_prereduce INLINECALLDICT + atan_aux_f256 INLINECALLDICT + atan_auxx_f256 INLINECALLDICT + atan_f255 INLINECALLDICT + atan_f256_small INLINECALLDICT + asin_f255 INLINECALLDICT + acos_f255 INLINECALLDICT + fixed248::asin INLINECALLDICT + fixed248::acos INLINECALLDICT + fixed248::atan INLINECALLDICT + fixed248::acot INLINECALLDICT + nrand_f252 INLINECALLDICT + nrand_fast_f252 INLINECALLDICT + fixed248::random INLINECALLDICT + fixed248::nrand INLINECALLDICT + fixed248::nrand_fast INLINECALLDICT + }> +}END>c +2 boc+>B "mathlib.boc" B>file