#include "omc_simulation_settings.h"
#include "NFCeval.h"
#define _OMC_LIT0_data " got invalid arguments "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT0,23,_OMC_LIT0_data);
#define _OMC_LIT0 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT0)
#define _OMC_LIT1_data ""
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT1,0,_OMC_LIT1_data);
#define _OMC_LIT1 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT1)
#define _OMC_LIT2_data "("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT2,1,_OMC_LIT2_data);
#define _OMC_LIT2 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT2)
#define _OMC_LIT3_data ", "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT3,2,_OMC_LIT3_data);
#define _OMC_LIT3 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT3)
#define _OMC_LIT4_data ")"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT4,1,_OMC_LIT4_data);
#define _OMC_LIT4 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT4)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT5,1,5) {&ErrorTypes_MessageType_TRANSLATION__desc,}};
#define _OMC_LIT5 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT5)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT6,1,4) {&ErrorTypes_Severity_ERROR__desc,}};
#define _OMC_LIT6 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT6)
#define _OMC_LIT7_data "Could not evaluate structural parameter (or constant): %s which gives dimensions of array: %s. Array dimensions must be known at compile time."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT7,142,_OMC_LIT7_data);
#define _OMC_LIT7 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT7)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT8,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT7}};
#define _OMC_LIT8 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT8)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT9,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(5033)),_OMC_LIT5,_OMC_LIT6,_OMC_LIT8}};
#define _OMC_LIT9 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT9)
#define _OMC_LIT10_data "The conditional expression %s could not be evaluated."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT10,53,_OMC_LIT10_data);
#define _OMC_LIT10 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT10)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT11,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT10}};
#define _OMC_LIT11 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT11)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT12,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(137)),_OMC_LIT5,_OMC_LIT6,_OMC_LIT11}};
#define _OMC_LIT12 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT12)
#define _OMC_LIT13_data "Constant %s is used without having been given a value."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT13,54,_OMC_LIT13_data);
#define _OMC_LIT13 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT13)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT14,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT13}};
#define _OMC_LIT14 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT14)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT15,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(321)),_OMC_LIT5,_OMC_LIT6,_OMC_LIT14}};
#define _OMC_LIT15 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT15)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT16,1,5) {&ErrorTypes_Severity_WARNING__desc,}};
#define _OMC_LIT16 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT16)
#define _OMC_LIT17_data "Parameter %s has annotation(Evaluate=true) and no binding."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT17,58,_OMC_LIT17_data);
#define _OMC_LIT17 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT17)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT18,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT17}};
#define _OMC_LIT18 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT18)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT19,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(596)),_OMC_LIT5,_OMC_LIT16,_OMC_LIT18}};
#define _OMC_LIT19 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT19)
#define _OMC_LIT20_data "(fixed = true)"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT20,14,_OMC_LIT20_data);
#define _OMC_LIT20 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT20)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT21,2,1) {MMC_IMMEDIATE(MMC_TAGFIXNUM(3)),MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT21 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT21)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT22,2,1) {MMC_IMMEDIATE(MMC_TAGFIXNUM(2)),_OMC_LIT21}};
#define _OMC_LIT22 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT22)
#define _OMC_LIT23_data "NFCeval.evalRecordElement could not evaluate "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT23,45,_OMC_LIT23_data);
#define _OMC_LIT23 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT23)
#define _OMC_LIT24_data "/home/per/workspace/OpenModelica/OMCompiler/Compiler/NFFrontEnd/NFCeval.mo"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT24,74,_OMC_LIT24_data);
#define _OMC_LIT24 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT24)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT25_6,1.770631566e9);
#define _OMC_LIT25_6 MMC_REFREALLIT(_OMC_LIT_STRUCT25_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT25,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3411)),MMC_IMMEDIATE(MMC_TAGFIXNUM(5)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3412)),MMC_IMMEDIATE(MMC_TAGFIXNUM(46)),_OMC_LIT25_6}};
#define _OMC_LIT25 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT25)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT26,1,3) {&NFType_INTEGER__desc,}};
#define _OMC_LIT26 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT26)
#define _OMC_LIT27_data "."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT27,1,_OMC_LIT27_data);
#define _OMC_LIT27 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT27)
#define _OMC_LIT28_data "NFCeval.evalReduction got unknown reduction function "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT28,53,_OMC_LIT28_data);
#define _OMC_LIT28 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT28)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT29_6,1.770631566e9);
#define _OMC_LIT29_6 MMC_REFREALLIT(_OMC_LIT_STRUCT29_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT29,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3327)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3328)),MMC_IMMEDIATE(MMC_TAGFIXNUM(65)),_OMC_LIT29_6}};
#define _OMC_LIT29 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT29)
#define _OMC_LIT30_data "sum"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT30,3,_OMC_LIT30_data);
#define _OMC_LIT30 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT30)
#define _OMC_LIT31_data "product"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT31,7,_OMC_LIT31_data);
#define _OMC_LIT31 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT31)
#define _OMC_LIT32_data "min"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT32,3,_OMC_LIT32_data);
#define _OMC_LIT32 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT32)
#define _OMC_LIT33_data "max"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT33,3,_OMC_LIT33_data);
#define _OMC_LIT33 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT33)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT34,0.0);
#define _OMC_LIT34 MMC_REFREALLIT(_OMC_LIT_STRUCT34)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT35,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT1,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),_OMC_LIT34}};
#define _OMC_LIT35 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT35)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT36,4,3) {&NFCeval_EvalTarget_EVAL__TARGET__desc,_OMC_LIT35,MMC_IMMEDIATE(MMC_TAGFIXNUM(0)),MMC_REFSTRUCTLIT(mmc_none)}};
#define _OMC_LIT36 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT36)
#define _OMC_LIT37_data "NFCeval.evalSolverClock"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT37,23,_OMC_LIT37_data);
#define _OMC_LIT37 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT37)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT38_6,1.770631566e9);
#define _OMC_LIT38_6 MMC_REFREALLIT(_OMC_LIT_STRUCT38_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT38,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3225)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3225)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT38_6}};
#define _OMC_LIT38 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT38)
#define _OMC_LIT39_data "NFCeval.evalBooleanClock"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT39,24,_OMC_LIT39_data);
#define _OMC_LIT39 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT39)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT40_6,1.770631566e9);
#define _OMC_LIT40_6 MMC_REFREALLIT(_OMC_LIT_STRUCT40_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT40,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3210)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3210)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT40_6}};
#define _OMC_LIT40 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT40)
#define _OMC_LIT41_data "NFCeval.evalRealClock"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT41,21,_OMC_LIT41_data);
#define _OMC_LIT41 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT41)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT42_6,1.770631566e9);
#define _OMC_LIT42_6 MMC_REFREALLIT(_OMC_LIT_STRUCT42_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT42,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3195)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3195)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT42_6}};
#define _OMC_LIT42 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT42)
#define _OMC_LIT43_data "NFCeval.evalRationalClock"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT43,25,_OMC_LIT43_data);
#define _OMC_LIT43 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT43)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT44_6,1.770631566e9);
#define _OMC_LIT44_6 MMC_REFREALLIT(_OMC_LIT_STRUCT44_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT44,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3180)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3180)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT44_6}};
#define _OMC_LIT44 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT44)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT45,1,3) {&NFClockKind_INFERRED__CLOCK__desc,}};
#define _OMC_LIT45 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT45)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT46,2,8) {&NFExpression_CLKCONST__desc,_OMC_LIT45}};
#define _OMC_LIT46 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT46)
#define _OMC_LIT47_data "NFCeval.evalInferredClock"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT47,25,_OMC_LIT47_data);
#define _OMC_LIT47 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT47)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT48_6,1.770631566e9);
#define _OMC_LIT48_6 MMC_REFREALLIT(_OMC_LIT_STRUCT48_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT48,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3165)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3165)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT48_6}};
#define _OMC_LIT48 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT48)
#define _OMC_LIT49_data "NFCeval.evalIntBitRShift"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT49,24,_OMC_LIT49_data);
#define _OMC_LIT49 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT49)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT50_6,1.770631566e9);
#define _OMC_LIT50_6 MMC_REFREALLIT(_OMC_LIT_STRUCT50_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT50,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3153)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3153)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT50_6}};
#define _OMC_LIT50 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT50)
#define _OMC_LIT51_data "NFCeval.evalIntBitLShift"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT51,24,_OMC_LIT51_data);
#define _OMC_LIT51 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT51)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT52_6,1.770631566e9);
#define _OMC_LIT52_6 MMC_REFREALLIT(_OMC_LIT_STRUCT52_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT52,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3139)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3139)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT52_6}};
#define _OMC_LIT52 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT52)
#define _OMC_LIT53_data "NFCeval.evalIntBitXor"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT53,21,_OMC_LIT53_data);
#define _OMC_LIT53 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT53)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT54_6,1.770631566e9);
#define _OMC_LIT54_6 MMC_REFREALLIT(_OMC_LIT_STRUCT54_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT54,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3125)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3125)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT54_6}};
#define _OMC_LIT54 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT54)
#define _OMC_LIT55_data "NFCeval.evalIntBitOr"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT55,20,_OMC_LIT55_data);
#define _OMC_LIT55 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT55)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT56_6,1.770631566e9);
#define _OMC_LIT56_6 MMC_REFREALLIT(_OMC_LIT_STRUCT56_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT56,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3111)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3111)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT56_6}};
#define _OMC_LIT56 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT56)
#define _OMC_LIT57_data "NFCeval.evalIntBitAnd"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT57,21,_OMC_LIT57_data);
#define _OMC_LIT57 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT57)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT58_6,1.770631566e9);
#define _OMC_LIT58_6 MMC_REFREALLIT(_OMC_LIT_STRUCT58_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT58,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3097)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3097)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT58_6}};
#define _OMC_LIT58 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT58)
#define _OMC_LIT59_data "NFCeval.evalUriToFilename"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT59,25,_OMC_LIT59_data);
#define _OMC_LIT59 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT59)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT60_6,1.770631566e9);
#define _OMC_LIT60_6 MMC_REFREALLIT(_OMC_LIT_STRUCT60_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT60,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3083)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3083)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT60_6}};
#define _OMC_LIT60 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT60)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT61,2,3) {&NFExpression_INTEGER__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(0))}};
#define _OMC_LIT61 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT61)
#define _OMC_LIT62_data "NFCeval.evalBuiltinTranspose"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT62,28,_OMC_LIT62_data);
#define _OMC_LIT62 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT62)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT63_6,1.770631566e9);
#define _OMC_LIT63_6 MMC_REFREALLIT(_OMC_LIT_STRUCT63_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT63,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3046)),MMC_IMMEDIATE(MMC_TAGFIXNUM(5)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3046)),MMC_IMMEDIATE(MMC_TAGFIXNUM(64)),_OMC_LIT63_6}};
#define _OMC_LIT63 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT63)
#define _OMC_LIT64_data "NFCeval.evalBuiltinTan"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT64,22,_OMC_LIT64_data);
#define _OMC_LIT64 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT64)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT65_6,1.770631566e9);
#define _OMC_LIT65_6 MMC_REFREALLIT(_OMC_LIT_STRUCT65_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT65,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3026)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3026)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT65_6}};
#define _OMC_LIT65 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT65)
#define _OMC_LIT66_data "NFCeval.evalBuiltinTanh"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT66,23,_OMC_LIT66_data);
#define _OMC_LIT66 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT66)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT67_6,1.770631566e9);
#define _OMC_LIT67_6 MMC_REFREALLIT(_OMC_LIT_STRUCT67_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT67,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3016)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3016)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT67_6}};
#define _OMC_LIT67 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT67)
#define _OMC_LIT68_data "NFCeval.evalBuiltinSymmetric"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT68,28,_OMC_LIT68_data);
#define _OMC_LIT68 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT68)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT69_6,1.770631566e9);
#define _OMC_LIT69_6 MMC_REFREALLIT(_OMC_LIT_STRUCT69_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT69,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3005)),MMC_IMMEDIATE(MMC_TAGFIXNUM(5)),MMC_IMMEDIATE(MMC_TAGFIXNUM(3005)),MMC_IMMEDIATE(MMC_TAGFIXNUM(64)),_OMC_LIT69_6}};
#define _OMC_LIT69 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT69)
#define _OMC_LIT70_data "NFCeval.evalBuiltinSum"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT70,22,_OMC_LIT70_data);
#define _OMC_LIT70 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT70)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT71_6,1.770631566e9);
#define _OMC_LIT71_6 MMC_REFREALLIT(_OMC_LIT_STRUCT71_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT71,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2945)),MMC_IMMEDIATE(MMC_TAGFIXNUM(24)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2945)),MMC_IMMEDIATE(MMC_TAGFIXNUM(83)),_OMC_LIT71_6}};
#define _OMC_LIT71 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT71)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT72_6,1.770631566e9);
#define _OMC_LIT72_6 MMC_REFREALLIT(_OMC_LIT_STRUCT72_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT72,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2948)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2948)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT72_6}};
#define _OMC_LIT72 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT72)
#define _OMC_LIT73_data "true"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT73,4,_OMC_LIT73_data);
#define _OMC_LIT73 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT73)
#define _OMC_LIT74_data "false"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT74,5,_OMC_LIT74_data);
#define _OMC_LIT74 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT74)
#define _OMC_LIT75_data "NFCeval.evalBuiltinString"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT75,25,_OMC_LIT75_data);
#define _OMC_LIT75 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT75)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT76_6,1.770631566e9);
#define _OMC_LIT76_6 MMC_REFREALLIT(_OMC_LIT_STRUCT76_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT76,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2904)),MMC_IMMEDIATE(MMC_TAGFIXNUM(26)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2904)),MMC_IMMEDIATE(MMC_TAGFIXNUM(84)),_OMC_LIT76_6}};
#define _OMC_LIT76 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT76)
#define _OMC_LIT77_data " "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT77,1,_OMC_LIT77_data);
#define _OMC_LIT77 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT77)
#define _OMC_LIT78_data "%"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT78,1,_OMC_LIT78_data);
#define _OMC_LIT78 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT78)
#define _OMC_LIT79_data "-"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT79,1,_OMC_LIT79_data);
#define _OMC_LIT79 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT79)
#define _OMC_LIT80_data "g"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT80,1,_OMC_LIT80_data);
#define _OMC_LIT80 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT80)
#define _OMC_LIT81_data "NFCeval.evalBuiltinSqrt"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT81,23,_OMC_LIT81_data);
#define _OMC_LIT81 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT81)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT82_6,1.770631566e9);
#define _OMC_LIT82_6 MMC_REFREALLIT(_OMC_LIT_STRUCT82_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT82,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2882)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2882)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT82_6}};
#define _OMC_LIT82 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT82)
#define _OMC_LIT83_data "NFCeval.evalBuiltinSkew"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT83,23,_OMC_LIT83_data);
#define _OMC_LIT83 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT83)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT84_6,1.770631566e9);
#define _OMC_LIT84_6 MMC_REFREALLIT(_OMC_LIT_STRUCT84_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT84,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2872)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2872)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT84_6}};
#define _OMC_LIT84 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT84)
#define _OMC_LIT85_data "NFCeval.evalBuiltinSin"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT85,22,_OMC_LIT85_data);
#define _OMC_LIT85 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT85)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT86_6,1.770631566e9);
#define _OMC_LIT86_6 MMC_REFREALLIT(_OMC_LIT_STRUCT86_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT86,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2845)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2845)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT86_6}};
#define _OMC_LIT86 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT86)
#define _OMC_LIT87_data "NFCeval.evalBuiltinSinh"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT87,23,_OMC_LIT87_data);
#define _OMC_LIT87 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT87)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT88_6,1.770631566e9);
#define _OMC_LIT88_6 MMC_REFREALLIT(_OMC_LIT_STRUCT88_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT88,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2835)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2835)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT88_6}};
#define _OMC_LIT88 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT88)
#define _OMC_LIT89_data "NFCeval.evalBuiltinSign"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT89,23,_OMC_LIT89_data);
#define _OMC_LIT89 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT89)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT90_6,1.770631566e9);
#define _OMC_LIT90_6 MMC_REFREALLIT(_OMC_LIT_STRUCT90_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT90,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2825)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2825)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT90_6}};
#define _OMC_LIT90 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT90)
#define _OMC_LIT91_data "Second argument in rem is zero in rem(%s,%s)."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT91,45,_OMC_LIT91_data);
#define _OMC_LIT91 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT91)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT92,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT91}};
#define _OMC_LIT92 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT92)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT93,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(17)),_OMC_LIT5,_OMC_LIT6,_OMC_LIT92}};
#define _OMC_LIT93 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT93)
#define _OMC_LIT94_data "NFCeval.evalBuiltinRem"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT94,22,_OMC_LIT94_data);
#define _OMC_LIT94 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT94)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT95_6,1.770631566e9);
#define _OMC_LIT95_6 MMC_REFREALLIT(_OMC_LIT_STRUCT95_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT95,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2803)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2803)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT95_6}};
#define _OMC_LIT95 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT95)
#define _OMC_LIT96_data "NFCeval.evalBuiltinPromote"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT96,26,_OMC_LIT96_data);
#define _OMC_LIT96 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT96)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT97_6,1.770631566e9);
#define _OMC_LIT97_6 MMC_REFREALLIT(_OMC_LIT_STRUCT97_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT97,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2762)),MMC_IMMEDIATE(MMC_TAGFIXNUM(5)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2762)),MMC_IMMEDIATE(MMC_TAGFIXNUM(70)),_OMC_LIT97_6}};
#define _OMC_LIT97 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT97)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT98,1.0);
#define _OMC_LIT98 MMC_REFREALLIT(_OMC_LIT_STRUCT98)
#define _OMC_LIT99_data "NFCeval.evalBuiltinProduct"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT99,26,_OMC_LIT99_data);
#define _OMC_LIT99 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT99)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT100_6,1.770631566e9);
#define _OMC_LIT100_6 MMC_REFREALLIT(_OMC_LIT_STRUCT100_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT100,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2723)),MMC_IMMEDIATE(MMC_TAGFIXNUM(24)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2723)),MMC_IMMEDIATE(MMC_TAGFIXNUM(83)),_OMC_LIT100_6}};
#define _OMC_LIT100 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT100)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT101_6,1.770631566e9);
#define _OMC_LIT101_6 MMC_REFREALLIT(_OMC_LIT_STRUCT101_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT101,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2726)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2726)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT101_6}};
#define _OMC_LIT101 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT101)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT102,2,3) {&NFExpression_INTEGER__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(1))}};
#define _OMC_LIT102 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT102)
#define _OMC_LIT103_data "Modulo by zero in mod(%s,%s)."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT103,29,_OMC_LIT103_data);
#define _OMC_LIT103 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT103)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT104,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT103}};
#define _OMC_LIT104 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT104)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT105,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(16)),_OMC_LIT5,_OMC_LIT6,_OMC_LIT104}};
#define _OMC_LIT105 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT105)
#define _OMC_LIT106_data "NFCeval.evalBuiltinMod"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT106,22,_OMC_LIT106_data);
#define _OMC_LIT106 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT106)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT107_6,1.770631566e9);
#define _OMC_LIT107_6 MMC_REFREALLIT(_OMC_LIT_STRUCT107_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT107,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2702)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2702)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT107_6}};
#define _OMC_LIT107 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT107)
#define _OMC_LIT108_data "NFCeval.evalBuiltinMin2"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT108,23,_OMC_LIT108_data);
#define _OMC_LIT108 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT108)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT109_6,1.770631566e9);
#define _OMC_LIT109_6 MMC_REFREALLIT(_OMC_LIT_STRUCT109_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT109,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2662)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2662)),MMC_IMMEDIATE(MMC_TAGFIXNUM(86)),_OMC_LIT109_6}};
#define _OMC_LIT109 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT109)
#define _OMC_LIT110_data "NFCeval.evalBuiltinMin"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT110,22,_OMC_LIT110_data);
#define _OMC_LIT110 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT110)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT111_6,1.770631566e9);
#define _OMC_LIT111_6 MMC_REFREALLIT(_OMC_LIT_STRUCT111_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT111,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2642)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2642)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT111_6}};
#define _OMC_LIT111 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT111)
#define _OMC_LIT112_data "NFCeval.evalBuiltinMax2"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT112,23,_OMC_LIT112_data);
#define _OMC_LIT112 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT112)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT113_6,1.770631566e9);
#define _OMC_LIT113_6 MMC_REFREALLIT(_OMC_LIT_STRUCT113_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT113,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2605)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2605)),MMC_IMMEDIATE(MMC_TAGFIXNUM(86)),_OMC_LIT113_6}};
#define _OMC_LIT113 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT113)
#define _OMC_LIT114_data "NFCeval.evalBuiltinMax"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT114,22,_OMC_LIT114_data);
#define _OMC_LIT114 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT114)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT115_6,1.770631566e9);
#define _OMC_LIT115_6 MMC_REFREALLIT(_OMC_LIT_STRUCT115_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT115,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2585)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2585)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT115_6}};
#define _OMC_LIT115 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT115)
#define _OMC_LIT116_data "NFCeval.evalBuiltinMatrix2"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT116,26,_OMC_LIT116_data);
#define _OMC_LIT116 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT116)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT117_6,1.770631566e9);
#define _OMC_LIT117_6 MMC_REFREALLIT(_OMC_LIT_STRUCT117_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT117,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2558)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2558)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT117_6}};
#define _OMC_LIT117 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT117)
#define _OMC_LIT118_data "NFCeval.evalBuiltinMatrix"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT118,25,_OMC_LIT118_data);
#define _OMC_LIT118 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT118)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT119_6,1.770631566e9);
#define _OMC_LIT119_6 MMC_REFREALLIT(_OMC_LIT_STRUCT119_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT119,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2538)),MMC_IMMEDIATE(MMC_TAGFIXNUM(11)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2538)),MMC_IMMEDIATE(MMC_TAGFIXNUM(70)),_OMC_LIT119_6}};
#define _OMC_LIT119 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT119)
#define _OMC_LIT120_data "Argument %s of %s is out of range (%s)"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT120,38,_OMC_LIT120_data);
#define _OMC_LIT120 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT120)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT121,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT120}};
#define _OMC_LIT121 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT121)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT122,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(320)),_OMC_LIT5,_OMC_LIT6,_OMC_LIT121}};
#define _OMC_LIT122 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT122)
#define _OMC_LIT123_data "log"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT123,3,_OMC_LIT123_data);
#define _OMC_LIT123 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT123)
#define _OMC_LIT124_data "x > 0"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT124,5,_OMC_LIT124_data);
#define _OMC_LIT124 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT124)
#define _OMC_LIT125_data "NFCeval.evalBuiltinLog"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT125,22,_OMC_LIT125_data);
#define _OMC_LIT125 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT125)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT126_6,1.770631566e9);
#define _OMC_LIT126_6 MMC_REFREALLIT(_OMC_LIT_STRUCT126_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT126,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2498)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2498)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT126_6}};
#define _OMC_LIT126 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT126)
#define _OMC_LIT127_data "log10"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT127,5,_OMC_LIT127_data);
#define _OMC_LIT127 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT127)
#define _OMC_LIT128_data "NFCeval.evalBuiltinLog10"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT128,24,_OMC_LIT128_data);
#define _OMC_LIT128 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT128)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT129_6,1.770631566e9);
#define _OMC_LIT129_6 MMC_REFREALLIT(_OMC_LIT_STRUCT129_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT129,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2473)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2473)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT129_6}};
#define _OMC_LIT129 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT129)
#define _OMC_LIT130_data "NFCeval.evalBuiltinIntegerEnum"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT130,30,_OMC_LIT130_data);
#define _OMC_LIT130 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT130)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT131_6,1.770631566e9);
#define _OMC_LIT131_6 MMC_REFREALLIT(_OMC_LIT_STRUCT131_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT131,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2448)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2448)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT131_6}};
#define _OMC_LIT131 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT131)
#define _OMC_LIT132_data "NFCeval.evalBuiltinInteger"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT132,26,_OMC_LIT132_data);
#define _OMC_LIT132 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT132)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT133_6,1.770631566e9);
#define _OMC_LIT133_6 MMC_REFREALLIT(_OMC_LIT_STRUCT133_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT133,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2438)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2438)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT133_6}};
#define _OMC_LIT133 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT133)
#define _OMC_LIT134_data "NFCeval.evalBuiltinIdentity"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT134,27,_OMC_LIT134_data);
#define _OMC_LIT134 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT134)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT135_6,1.770631566e9);
#define _OMC_LIT135_6 MMC_REFREALLIT(_OMC_LIT_STRUCT135_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT135,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2427)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2427)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT135_6}};
#define _OMC_LIT135 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT135)
#define _OMC_LIT136_data "NFCeval.evalBuiltinFloor"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT136,24,_OMC_LIT136_data);
#define _OMC_LIT136 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT136)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT137_6,1.770631566e9);
#define _OMC_LIT137_6 MMC_REFREALLIT(_OMC_LIT_STRUCT137_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT137,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2415)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2415)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT137_6}};
#define _OMC_LIT137 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT137)
#define _OMC_LIT138_data "NFCeval.evalBuiltinFill"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT138,23,_OMC_LIT138_data);
#define _OMC_LIT138 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT138)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT139_6,1.770631566e9);
#define _OMC_LIT139_6 MMC_REFREALLIT(_OMC_LIT_STRUCT139_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT139,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2403)),MMC_IMMEDIATE(MMC_TAGFIXNUM(5)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2403)),MMC_IMMEDIATE(MMC_TAGFIXNUM(63)),_OMC_LIT139_6}};
#define _OMC_LIT139 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT139)
#define _OMC_LIT140_data "NFCeval.evalBuiltinExp"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT140,22,_OMC_LIT140_data);
#define _OMC_LIT140 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT140)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT141_6,1.770631566e9);
#define _OMC_LIT141_6 MMC_REFREALLIT(_OMC_LIT_STRUCT141_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT141,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2387)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2387)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT141_6}};
#define _OMC_LIT141 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT141)
#define _OMC_LIT142_data "Division by zero in %s / %s"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT142,27,_OMC_LIT142_data);
#define _OMC_LIT142 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT142)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT143,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT142}};
#define _OMC_LIT143 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT143)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT144,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(15)),_OMC_LIT5,_OMC_LIT6,_OMC_LIT143}};
#define _OMC_LIT144 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT144)
#define _OMC_LIT145_data "NFCeval.evalBuiltinDiv"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT145,22,_OMC_LIT145_data);
#define _OMC_LIT145 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT145)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT146_6,1.770631566e9);
#define _OMC_LIT146_6 MMC_REFREALLIT(_OMC_LIT_STRUCT146_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT146,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2377)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2377)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT146_6}};
#define _OMC_LIT146 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT146)
#define _OMC_LIT147_data "NFCeval.evalBuiltinDiagonal"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT147,27,_OMC_LIT147_data);
#define _OMC_LIT147 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT147)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT148_6,1.770631566e9);
#define _OMC_LIT148_6 MMC_REFREALLIT(_OMC_LIT_STRUCT148_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT148,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2336)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2336)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT148_6}};
#define _OMC_LIT148 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT148)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT149,2,4) {&NFExpression_REAL__desc,_OMC_LIT34}};
#define _OMC_LIT149 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT149)
#define _OMC_LIT150_data "NFCeval.evalBuiltinCos"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT150,22,_OMC_LIT150_data);
#define _OMC_LIT150 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT150)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT151_6,1.770631566e9);
#define _OMC_LIT151_6 MMC_REFREALLIT(_OMC_LIT_STRUCT151_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT151,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2290)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2290)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT151_6}};
#define _OMC_LIT151 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT151)
#define _OMC_LIT152_data "NFCeval.evalBuiltinCosh"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT152,23,_OMC_LIT152_data);
#define _OMC_LIT152 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT152)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT153_6,1.770631566e9);
#define _OMC_LIT153_6 MMC_REFREALLIT(_OMC_LIT_STRUCT153_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT153,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2280)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2280)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT153_6}};
#define _OMC_LIT153 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT153)
#define _OMC_LIT154_data "NFCeval.evalBuiltinCeil"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT154,23,_OMC_LIT154_data);
#define _OMC_LIT154 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT154)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT155_6,1.770631566e9);
#define _OMC_LIT155_6 MMC_REFREALLIT(_OMC_LIT_STRUCT155_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT155,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2270)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2270)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT155_6}};
#define _OMC_LIT155 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT155)
#define _OMC_LIT156_data "cat"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT156,3,_OMC_LIT156_data);
#define _OMC_LIT156 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT156)
#define _OMC_LIT157_data "1 <= x <= "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT157,10,_OMC_LIT157_data);
#define _OMC_LIT157 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT157)
#define _OMC_LIT158_data "NFCeval.evalBuiltinAtan"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT158,23,_OMC_LIT158_data);
#define _OMC_LIT158 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT158)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT159_6,1.770631566e9);
#define _OMC_LIT159_6 MMC_REFREALLIT(_OMC_LIT_STRUCT159_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT159,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2225)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2225)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT159_6}};
#define _OMC_LIT159 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT159)
#define _OMC_LIT160_data "NFCeval.evalBuiltinAtan2"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT160,24,_OMC_LIT160_data);
#define _OMC_LIT160 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT160)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT161_6,1.770631566e9);
#define _OMC_LIT161_6 MMC_REFREALLIT(_OMC_LIT_STRUCT161_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT161,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2215)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2215)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT161_6}};
#define _OMC_LIT161 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT161)
#define _OMC_LIT162_data "asin"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT162,4,_OMC_LIT162_data);
#define _OMC_LIT162 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT162)
#define _OMC_LIT163_data "-1 <= x <= 1"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT163,12,_OMC_LIT163_data);
#define _OMC_LIT163 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT163)
#define _OMC_LIT164_data "NFCeval.evalBuiltinAsin"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT164,23,_OMC_LIT164_data);
#define _OMC_LIT164 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT164)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT165_6,1.770631566e9);
#define _OMC_LIT165_6 MMC_REFREALLIT(_OMC_LIT_STRUCT165_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT165,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2201)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2201)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT165_6}};
#define _OMC_LIT165 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT165)
#define _OMC_LIT166_data "acos"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT166,4,_OMC_LIT166_data);
#define _OMC_LIT166 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT166)
#define _OMC_LIT167_data "NFCeval.evalBuiltinAcos"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT167,23,_OMC_LIT167_data);
#define _OMC_LIT167 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT167)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT168_6,1.770631566e9);
#define _OMC_LIT168_6 MMC_REFREALLIT(_OMC_LIT_STRUCT168_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT168,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2165)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2165)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT168_6}};
#define _OMC_LIT168 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT168)
#define _OMC_LIT169_data "NFCeval.evalBuiltinAbs"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT169,22,_OMC_LIT169_data);
#define _OMC_LIT169 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT169)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT170_6,1.770631566e9);
#define _OMC_LIT170_6 MMC_REFREALLIT(_OMC_LIT_STRUCT170_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT170,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2140)),MMC_IMMEDIATE(MMC_TAGFIXNUM(20)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2140)),MMC_IMMEDIATE(MMC_TAGFIXNUM(79)),_OMC_LIT170_6}};
#define _OMC_LIT170 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT170)
#define _OMC_LIT171_data "NFCeval.evalBuiltinCall: unimplemented case for "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT171,48,_OMC_LIT171_data);
#define _OMC_LIT171 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT171)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT172_6,1.770631566e9);
#define _OMC_LIT172_6 MMC_REFREALLIT(_OMC_LIT_STRUCT172_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT172,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2107)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2108)),MMC_IMMEDIATE(MMC_TAGFIXNUM(55)),_OMC_LIT172_6}};
#define _OMC_LIT172 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT172)
#define _OMC_LIT173_data "abs"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT173,3,_OMC_LIT173_data);
#define _OMC_LIT173 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT173)
#define _OMC_LIT174_data "array"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT174,5,_OMC_LIT174_data);
#define _OMC_LIT174 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT174)
#define _OMC_LIT175_data "atan2"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT175,5,_OMC_LIT175_data);
#define _OMC_LIT175 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT175)
#define _OMC_LIT176_data "atan"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT176,4,_OMC_LIT176_data);
#define _OMC_LIT176 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT176)
#define _OMC_LIT177_data "ceil"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT177,4,_OMC_LIT177_data);
#define _OMC_LIT177 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT177)
#define _OMC_LIT178_data "cosh"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT178,4,_OMC_LIT178_data);
#define _OMC_LIT178 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT178)
#define _OMC_LIT179_data "cos"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT179,3,_OMC_LIT179_data);
#define _OMC_LIT179 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT179)
#define _OMC_LIT180_data "der"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT180,3,_OMC_LIT180_data);
#define _OMC_LIT180 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT180)
#define _OMC_LIT181_data "diagonal"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT181,8,_OMC_LIT181_data);
#define _OMC_LIT181 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT181)
#define _OMC_LIT182_data "div"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT182,3,_OMC_LIT182_data);
#define _OMC_LIT182 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT182)
#define _OMC_LIT183_data "exp"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT183,3,_OMC_LIT183_data);
#define _OMC_LIT183 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT183)
#define _OMC_LIT184_data "fill"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT184,4,_OMC_LIT184_data);
#define _OMC_LIT184 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT184)
#define _OMC_LIT185_data "floor"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT185,5,_OMC_LIT185_data);
#define _OMC_LIT185 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT185)
#define _OMC_LIT186_data "identity"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT186,8,_OMC_LIT186_data);
#define _OMC_LIT186 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT186)
#define _OMC_LIT187_data "integer"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT187,7,_OMC_LIT187_data);
#define _OMC_LIT187 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT187)
#define _OMC_LIT188_data "Integer"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT188,7,_OMC_LIT188_data);
#define _OMC_LIT188 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT188)
#define _OMC_LIT189_data "matrix"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT189,6,_OMC_LIT189_data);
#define _OMC_LIT189 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT189)
#define _OMC_LIT190_data "mod"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT190,3,_OMC_LIT190_data);
#define _OMC_LIT190 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT190)
#define _OMC_LIT191_data "noEvent"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT191,7,_OMC_LIT191_data);
#define _OMC_LIT191 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT191)
#define _OMC_LIT192_data "ones"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT192,4,_OMC_LIT192_data);
#define _OMC_LIT192 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT192)
#define _OMC_LIT193_data "pre"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT193,3,_OMC_LIT193_data);
#define _OMC_LIT193 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT193)
#define _OMC_LIT194_data "promote"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT194,7,_OMC_LIT194_data);
#define _OMC_LIT194 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT194)
#define _OMC_LIT195_data "rem"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT195,3,_OMC_LIT195_data);
#define _OMC_LIT195 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT195)
#define _OMC_LIT196_data "scalar"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT196,6,_OMC_LIT196_data);
#define _OMC_LIT196 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT196)
#define _OMC_LIT197_data "sign"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT197,4,_OMC_LIT197_data);
#define _OMC_LIT197 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT197)
#define _OMC_LIT198_data "sinh"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT198,4,_OMC_LIT198_data);
#define _OMC_LIT198 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT198)
#define _OMC_LIT199_data "sin"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT199,3,_OMC_LIT199_data);
#define _OMC_LIT199 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT199)
#define _OMC_LIT200_data "skew"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT200,4,_OMC_LIT200_data);
#define _OMC_LIT200 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT200)
#define _OMC_LIT201_data "smooth"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT201,6,_OMC_LIT201_data);
#define _OMC_LIT201 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT201)
#define _OMC_LIT202_data "sqrt"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT202,4,_OMC_LIT202_data);
#define _OMC_LIT202 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT202)
#define _OMC_LIT203_data "String"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT203,6,_OMC_LIT203_data);
#define _OMC_LIT203 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT203)
#define _OMC_LIT204_data "symmetric"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT204,9,_OMC_LIT204_data);
#define _OMC_LIT204 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT204)
#define _OMC_LIT205_data "tanh"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT205,4,_OMC_LIT205_data);
#define _OMC_LIT205 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT205)
#define _OMC_LIT206_data "tan"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT206,3,_OMC_LIT206_data);
#define _OMC_LIT206 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT206)
#define _OMC_LIT207_data "transpose"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT207,9,_OMC_LIT207_data);
#define _OMC_LIT207 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT207)
#define _OMC_LIT208_data "vector"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT208,6,_OMC_LIT208_data);
#define _OMC_LIT208 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT208)
#define _OMC_LIT209_data "zeros"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT209,5,_OMC_LIT209_data);
#define _OMC_LIT209 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT209)
#define _OMC_LIT210_data "OpenModelica_uriToFilename"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT210,26,_OMC_LIT210_data);
#define _OMC_LIT210 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT210)
#define _OMC_LIT211_data "intBitAnd"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT211,9,_OMC_LIT211_data);
#define _OMC_LIT211 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT211)
#define _OMC_LIT212_data "intBitOr"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT212,8,_OMC_LIT212_data);
#define _OMC_LIT212 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT212)
#define _OMC_LIT213_data "intBitXor"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT213,9,_OMC_LIT213_data);
#define _OMC_LIT213 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT213)
#define _OMC_LIT214_data "intBitLShift"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT214,12,_OMC_LIT214_data);
#define _OMC_LIT214 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT214)
#define _OMC_LIT215_data "intBitRShift"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT215,12,_OMC_LIT215_data);
#define _OMC_LIT215 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT215)
#define _OMC_LIT216_data "intMaxLit"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT216,9,_OMC_LIT216_data);
#define _OMC_LIT216 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT216)
#define _OMC_LIT217_data "inferredClock"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT217,13,_OMC_LIT217_data);
#define _OMC_LIT217 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT217)
#define _OMC_LIT218_data "rationalClock"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT218,13,_OMC_LIT218_data);
#define _OMC_LIT218 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT218)
#define _OMC_LIT219_data "realClock"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT219,9,_OMC_LIT219_data);
#define _OMC_LIT219 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT219)
#define _OMC_LIT220_data "booleanClock"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT220,12,_OMC_LIT220_data);
#define _OMC_LIT220 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT220)
#define _OMC_LIT221_data "solverClock"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT221,11,_OMC_LIT221_data);
#define _OMC_LIT221 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT221)
#define _OMC_LIT222_data "$OMC$PositiveMax"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT222,16,_OMC_LIT222_data);
#define _OMC_LIT222 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT222)
#define _OMC_LIT223_data "$OMC$inStreamDiv"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT223,16,_OMC_LIT223_data);
#define _OMC_LIT223 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT223)
#define _OMC_LIT224_data "NFCeval.evalCall got untyped call"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT224,33,_OMC_LIT224_data);
#define _OMC_LIT224 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT224)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT225_6,1.770631566e9);
#define _OMC_LIT225_6 MMC_REFREALLIT(_OMC_LIT_STRUCT225_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT225,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2016)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(2016)),MMC_IMMEDIATE(MMC_TAGFIXNUM(86)),_OMC_LIT225_6}};
#define _OMC_LIT225 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT225)
#define _OMC_LIT226_data "NFCeval.evalCast"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT226,16,_OMC_LIT226_data);
#define _OMC_LIT226 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT226)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT227_6,1.770631566e9);
#define _OMC_LIT227_6 MMC_REFREALLIT(_OMC_LIT_STRUCT227_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT227,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1973)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1973)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT227_6}};
#define _OMC_LIT227 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT227)
#define _OMC_LIT228_data "Array dimension mismatch, expression %s has type %s, expected array dimensions [%s]."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT228,84,_OMC_LIT228_data);
#define _OMC_LIT228 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT228)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT229,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT228}};
#define _OMC_LIT229 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT229)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT230,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(43)),_OMC_LIT5,_OMC_LIT6,_OMC_LIT229}};
#define _OMC_LIT230 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT230)
#define _OMC_LIT231_data "NFCeval.evalIfExp2: unimplemented case for "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT231,43,_OMC_LIT231_data);
#define _OMC_LIT231 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT231)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT232_6,1.770631566e9);
#define _OMC_LIT232_6 MMC_REFREALLIT(_OMC_LIT_STRUCT232_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT232,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1953)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1954)),MMC_IMMEDIATE(MMC_TAGFIXNUM(52)),_OMC_LIT232_6}};
#define _OMC_LIT232 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT232)
#define _OMC_LIT233_data "NFCeval.evalRelationNotEqual"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT233,28,_OMC_LIT233_data);
#define _OMC_LIT233 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT233)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT234,1,13) {&NFType_UNKNOWN__desc,}};
#define _OMC_LIT234 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT234)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT235_6,1.770631566e9);
#define _OMC_LIT235_6 MMC_REFREALLIT(_OMC_LIT_STRUCT235_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT235,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1907)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1908)),MMC_IMMEDIATE(MMC_TAGFIXNUM(100)),_OMC_LIT235_6}};
#define _OMC_LIT235 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT235)
#define _OMC_LIT236_data "NFCeval.evalRelationEqual"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT236,25,_OMC_LIT236_data);
#define _OMC_LIT236 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT236)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT237_6,1.770631566e9);
#define _OMC_LIT237_6 MMC_REFREALLIT(_OMC_LIT_STRUCT237_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT237,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1875)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1876)),MMC_IMMEDIATE(MMC_TAGFIXNUM(97)),_OMC_LIT237_6}};
#define _OMC_LIT237 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT237)
#define _OMC_LIT238_data "NFCeval.evalRelationGreaterEq"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT238,29,_OMC_LIT238_data);
#define _OMC_LIT238 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT238)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT239_6,1.770631566e9);
#define _OMC_LIT239_6 MMC_REFREALLIT(_OMC_LIT_STRUCT239_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT239,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1843)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1844)),MMC_IMMEDIATE(MMC_TAGFIXNUM(101)),_OMC_LIT239_6}};
#define _OMC_LIT239 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT239)
#define _OMC_LIT240_data "NFCeval.evalRelationGreater"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT240,27,_OMC_LIT240_data);
#define _OMC_LIT240 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT240)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT241_6,1.770631566e9);
#define _OMC_LIT241_6 MMC_REFREALLIT(_OMC_LIT_STRUCT241_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT241,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1811)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1812)),MMC_IMMEDIATE(MMC_TAGFIXNUM(99)),_OMC_LIT241_6}};
#define _OMC_LIT241 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT241)
#define _OMC_LIT242_data "NFCeval.evalRelationLessEq"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT242,26,_OMC_LIT242_data);
#define _OMC_LIT242 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT242)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT243_6,1.770631566e9);
#define _OMC_LIT243_6 MMC_REFREALLIT(_OMC_LIT_STRUCT243_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT243,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1779)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1780)),MMC_IMMEDIATE(MMC_TAGFIXNUM(98)),_OMC_LIT243_6}};
#define _OMC_LIT243 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT243)
#define _OMC_LIT244_data "NFCeval.evalRelationLess"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT244,24,_OMC_LIT244_data);
#define _OMC_LIT244 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT244)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT245_6,1.770631566e9);
#define _OMC_LIT245_6 MMC_REFREALLIT(_OMC_LIT_STRUCT245_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT245,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1747)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1748)),MMC_IMMEDIATE(MMC_TAGFIXNUM(96)),_OMC_LIT245_6}};
#define _OMC_LIT245 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT245)
#define _OMC_LIT246_data "NFCeval.evalRelationOp_dispatch: unimplemented case for "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT246,56,_OMC_LIT246_data);
#define _OMC_LIT246 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT246)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT247_6,1.770631566e9);
#define _OMC_LIT247_6 MMC_REFREALLIT(_OMC_LIT_STRUCT247_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT247,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1713)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1714)),MMC_IMMEDIATE(MMC_TAGFIXNUM(86)),_OMC_LIT247_6}};
#define _OMC_LIT247 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT247)
#define _OMC_LIT248_data "NFCeval.evalLogicUnaryNot"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT248,25,_OMC_LIT248_data);
#define _OMC_LIT248 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT248)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT249_6,1.770631566e9);
#define _OMC_LIT249_6 MMC_REFREALLIT(_OMC_LIT_STRUCT249_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT249,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1670)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1670)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT249_6}};
#define _OMC_LIT249 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT249)
#define _OMC_LIT250_data "NFCeval.evalLogicUnaryOp: unimplemented case for "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT250,49,_OMC_LIT250_data);
#define _OMC_LIT250 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT250)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT251_6,1.770631566e9);
#define _OMC_LIT251_6 MMC_REFREALLIT(_OMC_LIT_STRUCT251_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT251,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1652)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1653)),MMC_IMMEDIATE(MMC_TAGFIXNUM(74)),_OMC_LIT251_6}};
#define _OMC_LIT251 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT251)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT252,1,6) {&NFType_BOOLEAN__desc,}};
#define _OMC_LIT252 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT252)
#define _OMC_LIT253_data "NFCeval.evalLogicBinaryOr"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT253,25,_OMC_LIT253_data);
#define _OMC_LIT253 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT253)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT254_6,1.770631566e9);
#define _OMC_LIT254_6 MMC_REFREALLIT(_OMC_LIT_STRUCT254_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT254,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1637)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1637)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT254_6}};
#define _OMC_LIT254 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT254)
#define _OMC_LIT255_data "NFCeval.evalLogicBinaryAnd"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT255,26,_OMC_LIT255_data);
#define _OMC_LIT255 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT255)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT256_6,1.770631566e9);
#define _OMC_LIT256_6 MMC_REFREALLIT(_OMC_LIT_STRUCT256_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT256,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1608)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1608)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT256_6}};
#define _OMC_LIT256 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT256)
#define _OMC_LIT257_data "NFCeval.evalLogicBinaryOp_dispatch: unimplemented case for "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT257,59,_OMC_LIT257_data);
#define _OMC_LIT257 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT257)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT258_6,1.770631566e9);
#define _OMC_LIT258_6 MMC_REFREALLIT(_OMC_LIT_STRUCT258_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT258,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1578)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1579)),MMC_IMMEDIATE(MMC_TAGFIXNUM(81)),_OMC_LIT258_6}};
#define _OMC_LIT258 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT258)
#define _OMC_LIT259_data "NFCeval.evalUnaryMinus"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT259,22,_OMC_LIT259_data);
#define _OMC_LIT259 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT259)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT260_6,1.770631566e9);
#define _OMC_LIT260_6 MMC_REFREALLIT(_OMC_LIT_STRUCT260_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT260,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1537)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1537)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT260_6}};
#define _OMC_LIT260 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT260)
#define _OMC_LIT261_data "NFCeval.evalUnaryOp: unimplemented case for "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT261,44,_OMC_LIT261_data);
#define _OMC_LIT261 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT261)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT262_6,1.770631566e9);
#define _OMC_LIT262_6 MMC_REFREALLIT(_OMC_LIT_STRUCT262_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT262,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1513)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1514)),MMC_IMMEDIATE(MMC_TAGFIXNUM(73)),_OMC_LIT262_6}};
#define _OMC_LIT262 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT262)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT263,1,4) {&NFType_REAL__desc,}};
#define _OMC_LIT263 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT263)
#define _OMC_LIT264_data "NFCeval.evalBinaryPowMatrix"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT264,27,_OMC_LIT264_data);
#define _OMC_LIT264 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT264)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT265_6,1.770631566e9);
#define _OMC_LIT265_6 MMC_REFREALLIT(_OMC_LIT_STRUCT265_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT265,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1467)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1467)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT265_6}};
#define _OMC_LIT265 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT265)
#define _OMC_LIT266_data "NFCeval.evalBinaryMatrixProduct"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT266,31,_OMC_LIT266_data);
#define _OMC_LIT266 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT266)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT267_6,1.770631566e9);
#define _OMC_LIT267_6 MMC_REFREALLIT(_OMC_LIT_STRUCT267_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT267,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1440)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1440)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT267_6}};
#define _OMC_LIT267 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT267)
#define _OMC_LIT268_data "NFCeval.evalBinaryScalarProduct"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT268,31,_OMC_LIT268_data);
#define _OMC_LIT268 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT268)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT269_6,1.770631566e9);
#define _OMC_LIT269_6 MMC_REFREALLIT(_OMC_LIT_STRUCT269_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT269,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1393)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1393)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT269_6}};
#define _OMC_LIT269 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT269)
#define _OMC_LIT270_data "NFCeval.evalBinaryMulMatrixVector"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT270,33,_OMC_LIT270_data);
#define _OMC_LIT270 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT270)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT271_6,1.770631566e9);
#define _OMC_LIT271_6 MMC_REFREALLIT(_OMC_LIT_STRUCT271_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT271,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1359)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1359)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT271_6}};
#define _OMC_LIT271 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT271)
#define _OMC_LIT272_data "NFCeval.evalBinaryMulVectorMatrix"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT272,33,_OMC_LIT272_data);
#define _OMC_LIT272 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT272)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT273_6,1.770631566e9);
#define _OMC_LIT273_6 MMC_REFREALLIT(_OMC_LIT_STRUCT273_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT273,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1333)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1333)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT273_6}};
#define _OMC_LIT273 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT273)
#define _OMC_LIT274_data "Invalid operation %s ^ %s, exponent must be an Integer when the base is negative."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT274,81,_OMC_LIT274_data);
#define _OMC_LIT274 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT274)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT275,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT274}};
#define _OMC_LIT275 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT275)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT276,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(409)),_OMC_LIT5,_OMC_LIT6,_OMC_LIT275}};
#define _OMC_LIT276 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT276)
#define _OMC_LIT277_data "NFCeval.evalBinaryPow"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT277,21,_OMC_LIT277_data);
#define _OMC_LIT277 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT277)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT278_6,1.770631566e9);
#define _OMC_LIT278_6 MMC_REFREALLIT(_OMC_LIT_STRUCT278_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT278,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1264)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1264)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT278_6}};
#define _OMC_LIT278 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT278)
#define _OMC_LIT279_data "NFCeval.evalBinaryDiv"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT279,21,_OMC_LIT279_data);
#define _OMC_LIT279 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT279)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT280_6,1.770631566e9);
#define _OMC_LIT280_6 MMC_REFREALLIT(_OMC_LIT_STRUCT280_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT280,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1207)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1207)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT280_6}};
#define _OMC_LIT280 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT280)
#define _OMC_LIT281_data "NFCeval.evalBinaryMul"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT281,21,_OMC_LIT281_data);
#define _OMC_LIT281 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT281)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT282_6,1.770631566e9);
#define _OMC_LIT282_6 MMC_REFREALLIT(_OMC_LIT_STRUCT282_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT282,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1145)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1145)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT282_6}};
#define _OMC_LIT282 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT282)
#define _OMC_LIT283_data "NFCeval.evalBinarySub"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT283,21,_OMC_LIT283_data);
#define _OMC_LIT283 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT283)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT284_6,1.770631566e9);
#define _OMC_LIT284_6 MMC_REFREALLIT(_OMC_LIT_STRUCT284_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT284,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1075)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1075)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT284_6}};
#define _OMC_LIT284 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT284)
#define _OMC_LIT285_data "NFCeval.evalBinaryAdd"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT285,21,_OMC_LIT285_data);
#define _OMC_LIT285 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT285)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT286_6,1.770631566e9);
#define _OMC_LIT286_6 MMC_REFREALLIT(_OMC_LIT_STRUCT286_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT286,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1026)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(1026)),MMC_IMMEDIATE(MMC_TAGFIXNUM(67)),_OMC_LIT286_6}};
#define _OMC_LIT286 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT286)
#define _OMC_LIT287_data "NFCeval.evalBinaryOp_dispatch: unimplemented case for "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT287,54,_OMC_LIT287_data);
#define _OMC_LIT287 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT287)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT288_6,1.770631566e9);
#define _OMC_LIT288_6 MMC_REFREALLIT(_OMC_LIT_STRUCT288_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT288,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(964)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(965)),MMC_IMMEDIATE(MMC_TAGFIXNUM(80)),_OMC_LIT288_6}};
#define _OMC_LIT288 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT288)
#define _OMC_LIT289_data " failed to evaluate ‘"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT289,23,_OMC_LIT289_data);
#define _OMC_LIT289 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT289)
#define _OMC_LIT290_data "‘"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT290,3,_OMC_LIT290_data);
#define _OMC_LIT290 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT290)
#define _OMC_LIT291_data "NFCeval.evalRangeExp"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT291,20,_OMC_LIT291_data);
#define _OMC_LIT291 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT291)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT292_6,1.770631566e9);
#define _OMC_LIT292_6 MMC_REFREALLIT(_OMC_LIT_STRUCT292_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT292,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(866)),MMC_IMMEDIATE(MMC_TAGFIXNUM(11)),MMC_IMMEDIATE(MMC_TAGFIXNUM(866)),MMC_IMMEDIATE(MMC_TAGFIXNUM(78)),_OMC_LIT292_6}};
#define _OMC_LIT292 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT292)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT293_6,1.770631566e9);
#define _OMC_LIT293_6 MMC_REFREALLIT(_OMC_LIT_STRUCT293_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT293,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(834)),MMC_IMMEDIATE(MMC_TAGFIXNUM(11)),MMC_IMMEDIATE(MMC_TAGFIXNUM(834)),MMC_IMMEDIATE(MMC_TAGFIXNUM(84)),_OMC_LIT293_6}};
#define _OMC_LIT293 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT293)
#define _OMC_LIT294_data "NFCeval.makeRecordBindingExp"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT294,28,_OMC_LIT294_data);
#define _OMC_LIT294 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT294)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT295,1,3) {&NFBinding_UNBOUND__desc,}};
#define _OMC_LIT295 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT295)
#define _OMC_LIT296_data "start"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT296,5,_OMC_LIT296_data);
#define _OMC_LIT296 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT296)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT297,1,8) {&NFSubscript_WHOLE__desc,}};
#define _OMC_LIT297 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT297)
#define _OMC_LIT298_data "NFCeval.evalComponentBinding"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT298,28,_OMC_LIT298_data);
#define _OMC_LIT298 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT298)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT299,1,6) {&ErrorTypes_Severity_NOTIFICATION__desc,}};
#define _OMC_LIT299 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT299)
#define _OMC_LIT300_data "From here:"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT300,10,_OMC_LIT300_data);
#define _OMC_LIT300 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT300)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT301,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT300}};
#define _OMC_LIT301 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT301)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT302,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(174)),_OMC_LIT5,_OMC_LIT299,_OMC_LIT301}};
#define _OMC_LIT302 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT302)
#define _OMC_LIT303_data "Variable '%s' has a cyclic dependency and has variability %s."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT303,61,_OMC_LIT303_data);
#define _OMC_LIT303 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT303)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT304,2,3) {&Gettext_TranslatableContent_gettext__desc,_OMC_LIT303}};
#define _OMC_LIT304 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT304)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT305,5,3) {&ErrorTypes_Message_MESSAGE__desc,MMC_IMMEDIATE(MMC_TAGFIXNUM(125)),_OMC_LIT5,_OMC_LIT6,_OMC_LIT304}};
#define _OMC_LIT305 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT305)
#define _OMC_LIT306_data "NFCeval.evalComponentBinding failed on untyped binding"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT306,54,_OMC_LIT306_data);
#define _OMC_LIT306 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT306)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT307_6,1.770631566e9);
#define _OMC_LIT307_6 MMC_REFREALLIT(_OMC_LIT_STRUCT307_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT307,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT24,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(423)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(423)),MMC_IMMEDIATE(MMC_TAGFIXNUM(95)),_OMC_LIT307_6}};
#define _OMC_LIT307 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT307)
#define _OMC_LIT308_data "NFCeval.tryEvalExp"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT308,18,_OMC_LIT308_data);
#define _OMC_LIT308 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT308)
#include "util/modelica.h"

#include "NFCeval_includes.h"


/* default, do not make protected functions static */
#if !defined(PROTECTED_FUNCTION_STATIC)
#define PROTECTED_FUNCTION_STATIC
#endif
PROTECTED_FUNCTION_STATIC void omc_NFCeval_printWrongArgsError(threadData_t *threadData, modelica_string _evalFunc, modelica_metatype _args, modelica_metatype _info);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_printWrongArgsError,2,0) {(void*) boxptr_NFCeval_printWrongArgsError,0}};
#define boxvar_NFCeval_printWrongArgsError MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_printWrongArgsError)
PROTECTED_FUNCTION_STATIC void omc_NFCeval_printUnboundError(threadData_t *threadData, modelica_metatype _component, modelica_metatype _target, modelica_metatype _exp);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_printUnboundError,2,0) {(void*) boxptr_NFCeval_printUnboundError,0}};
#define boxvar_NFCeval_printUnboundError MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_printUnboundError)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalRecordElement2(threadData_t *threadData, modelica_metatype _exp, modelica_integer _index);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_NFCeval_evalRecordElement2(threadData_t *threadData, modelica_metatype _exp, modelica_metatype _index);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalRecordElement2,2,0) {(void*) boxptr_NFCeval_evalRecordElement2,0}};
#define boxvar_NFCeval_evalRecordElement2 MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalRecordElement2)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalRecordElement(threadData_t *threadData, modelica_metatype _exp, modelica_metatype _target);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalRecordElement,2,0) {(void*) boxptr_NFCeval_evalRecordElement,0}};
#define boxvar_NFCeval_evalRecordElement MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalRecordElement)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalSubscriptedExp(threadData_t *threadData, modelica_metatype _exp, modelica_metatype _subscripts, modelica_metatype _target);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalSubscriptedExp,2,0) {(void*) boxptr_NFCeval_evalSubscriptedExp,0}};
#define boxvar_NFCeval_evalSubscriptedExp MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalSubscriptedExp)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalSize(threadData_t *threadData, modelica_metatype _exp, modelica_metatype _optIndex, modelica_metatype _target);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalSize,2,0) {(void*) boxptr_NFCeval_evalSize,0}};
#define boxvar_NFCeval_evalSize MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalSize)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalReduction_reductionFn(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2, modelica_metatype _target, modelica_fnptr _fn);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalReduction_reductionFn,2,0) {(void*) boxptr_NFCeval_evalReduction_reductionFn,0}};
#define boxvar_NFCeval_evalReduction_reductionFn MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalReduction_reductionFn)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalReduction(threadData_t *threadData, modelica_metatype _callExp);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalReduction,2,0) {(void*) boxptr_NFCeval_evalReduction,0}};
#define boxvar_NFCeval_evalReduction MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalReduction)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalArrayConstructor2(threadData_t *threadData, modelica_metatype _exp, modelica_metatype _ranges, modelica_metatype _iterators);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalArrayConstructor2,2,0) {(void*) boxptr_NFCeval_evalArrayConstructor2,0}};
#define boxvar_NFCeval_evalArrayConstructor2 MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalArrayConstructor2)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalArrayConstructor(threadData_t *threadData, modelica_metatype _callExp);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalArrayConstructor,2,0) {(void*) boxptr_NFCeval_evalArrayConstructor,0}};
#define boxvar_NFCeval_evalArrayConstructor MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalArrayConstructor)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalSolverClock(threadData_t *threadData, modelica_metatype _args);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalSolverClock,2,0) {(void*) boxptr_NFCeval_evalSolverClock,0}};
#define boxvar_NFCeval_evalSolverClock MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalSolverClock)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBooleanClock(threadData_t *threadData, modelica_metatype _args);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBooleanClock,2,0) {(void*) boxptr_NFCeval_evalBooleanClock,0}};
#define boxvar_NFCeval_evalBooleanClock MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBooleanClock)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalRealClock(threadData_t *threadData, modelica_metatype _args);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalRealClock,2,0) {(void*) boxptr_NFCeval_evalRealClock,0}};
#define boxvar_NFCeval_evalRealClock MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalRealClock)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalRationalClock(threadData_t *threadData, modelica_metatype _args);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalRationalClock,2,0) {(void*) boxptr_NFCeval_evalRationalClock,0}};
#define boxvar_NFCeval_evalRationalClock MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalRationalClock)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalInferredClock(threadData_t *threadData, modelica_metatype _args);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalInferredClock,2,0) {(void*) boxptr_NFCeval_evalInferredClock,0}};
#define boxvar_NFCeval_evalInferredClock MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalInferredClock)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalIntBitRShift(threadData_t *threadData, modelica_metatype _args);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalIntBitRShift,2,0) {(void*) boxptr_NFCeval_evalIntBitRShift,0}};
#define boxvar_NFCeval_evalIntBitRShift MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalIntBitRShift)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalIntBitLShift(threadData_t *threadData, modelica_metatype _args);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalIntBitLShift,2,0) {(void*) boxptr_NFCeval_evalIntBitLShift,0}};
#define boxvar_NFCeval_evalIntBitLShift MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalIntBitLShift)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalIntBitXor(threadData_t *threadData, modelica_metatype _args);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalIntBitXor,2,0) {(void*) boxptr_NFCeval_evalIntBitXor,0}};
#define boxvar_NFCeval_evalIntBitXor MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalIntBitXor)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalIntBitOr(threadData_t *threadData, modelica_metatype _args);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalIntBitOr,2,0) {(void*) boxptr_NFCeval_evalIntBitOr,0}};
#define boxvar_NFCeval_evalIntBitOr MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalIntBitOr)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalIntBitAnd(threadData_t *threadData, modelica_metatype _args);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalIntBitAnd,2,0) {(void*) boxptr_NFCeval_evalIntBitAnd,0}};
#define boxvar_NFCeval_evalIntBitAnd MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalIntBitAnd)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalUriToFilename(threadData_t *threadData, modelica_metatype _fn, modelica_metatype _arg, modelica_metatype _target);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalUriToFilename,2,0) {(void*) boxptr_NFCeval_evalUriToFilename,0}};
#define boxvar_NFCeval_evalUriToFilename MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalUriToFilename)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinZeros(threadData_t *threadData, modelica_metatype _args);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinZeros,2,0) {(void*) boxptr_NFCeval_evalBuiltinZeros,0}};
#define boxvar_NFCeval_evalBuiltinZeros MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinZeros)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinVector(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinVector,2,0) {(void*) boxptr_NFCeval_evalBuiltinVector,0}};
#define boxvar_NFCeval_evalBuiltinVector MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinVector)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinTranspose(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinTranspose,2,0) {(void*) boxptr_NFCeval_evalBuiltinTranspose,0}};
#define boxvar_NFCeval_evalBuiltinTranspose MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinTranspose)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinTan(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinTan,2,0) {(void*) boxptr_NFCeval_evalBuiltinTan,0}};
#define boxvar_NFCeval_evalBuiltinTan MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinTan)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinTanh(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinTanh,2,0) {(void*) boxptr_NFCeval_evalBuiltinTanh,0}};
#define boxvar_NFCeval_evalBuiltinTanh MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinTanh)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSymmetric(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSymmetric,2,0) {(void*) boxptr_NFCeval_evalBuiltinSymmetric,0}};
#define boxvar_NFCeval_evalBuiltinSymmetric MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSymmetric)
PROTECTED_FUNCTION_STATIC modelica_real omc_NFCeval_evalBuiltinSumReal(threadData_t *threadData, modelica_metatype _exp, modelica_real __omcQ_24in_5Fresult);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_NFCeval_evalBuiltinSumReal(threadData_t *threadData, modelica_metatype _exp, modelica_metatype __omcQ_24in_5Fresult);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSumReal,2,0) {(void*) boxptr_NFCeval_evalBuiltinSumReal,0}};
#define boxvar_NFCeval_evalBuiltinSumReal MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSumReal)
PROTECTED_FUNCTION_STATIC modelica_integer omc_NFCeval_evalBuiltinSumInt(threadData_t *threadData, modelica_metatype _exp, modelica_integer __omcQ_24in_5Fresult);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_NFCeval_evalBuiltinSumInt(threadData_t *threadData, modelica_metatype _exp, modelica_metatype __omcQ_24in_5Fresult);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSumInt,2,0) {(void*) boxptr_NFCeval_evalBuiltinSumInt,0}};
#define boxvar_NFCeval_evalBuiltinSumInt MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSumInt)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSum(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSum,2,0) {(void*) boxptr_NFCeval_evalBuiltinSum,0}};
#define boxvar_NFCeval_evalBuiltinSum MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSum)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinString(threadData_t *threadData, modelica_metatype _args);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinString,2,0) {(void*) boxptr_NFCeval_evalBuiltinString,0}};
#define boxvar_NFCeval_evalBuiltinString MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinString)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSqrt(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSqrt,2,0) {(void*) boxptr_NFCeval_evalBuiltinSqrt,0}};
#define boxvar_NFCeval_evalBuiltinSqrt MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSqrt)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSkew(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSkew,2,0) {(void*) boxptr_NFCeval_evalBuiltinSkew,0}};
#define boxvar_NFCeval_evalBuiltinSkew MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSkew)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSin(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSin,2,0) {(void*) boxptr_NFCeval_evalBuiltinSin,0}};
#define boxvar_NFCeval_evalBuiltinSin MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSin)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSinh(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSinh,2,0) {(void*) boxptr_NFCeval_evalBuiltinSinh,0}};
#define boxvar_NFCeval_evalBuiltinSinh MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSinh)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSign(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSign,2,0) {(void*) boxptr_NFCeval_evalBuiltinSign,0}};
#define boxvar_NFCeval_evalBuiltinSign MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinSign)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinScalar(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinScalar,2,0) {(void*) boxptr_NFCeval_evalBuiltinScalar,0}};
#define boxvar_NFCeval_evalBuiltinScalar MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinScalar)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinRem(threadData_t *threadData, modelica_metatype _args, modelica_metatype _target);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinRem,2,0) {(void*) boxptr_NFCeval_evalBuiltinRem,0}};
#define boxvar_NFCeval_evalBuiltinRem MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinRem)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinPromote(threadData_t *threadData, modelica_metatype _arg, modelica_metatype _argN);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinPromote,2,0) {(void*) boxptr_NFCeval_evalBuiltinPromote,0}};
#define boxvar_NFCeval_evalBuiltinPromote MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinPromote)
PROTECTED_FUNCTION_STATIC modelica_real omc_NFCeval_evalBuiltinProductReal(threadData_t *threadData, modelica_metatype _exp, modelica_real __omcQ_24in_5Fresult);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_NFCeval_evalBuiltinProductReal(threadData_t *threadData, modelica_metatype _exp, modelica_metatype __omcQ_24in_5Fresult);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinProductReal,2,0) {(void*) boxptr_NFCeval_evalBuiltinProductReal,0}};
#define boxvar_NFCeval_evalBuiltinProductReal MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinProductReal)
PROTECTED_FUNCTION_STATIC modelica_integer omc_NFCeval_evalBuiltinProductInt(threadData_t *threadData, modelica_metatype _exp, modelica_integer __omcQ_24in_5Fresult);
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_NFCeval_evalBuiltinProductInt(threadData_t *threadData, modelica_metatype _exp, modelica_metatype __omcQ_24in_5Fresult);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinProductInt,2,0) {(void*) boxptr_NFCeval_evalBuiltinProductInt,0}};
#define boxvar_NFCeval_evalBuiltinProductInt MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinProductInt)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinProduct(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinProduct,2,0) {(void*) boxptr_NFCeval_evalBuiltinProduct,0}};
#define boxvar_NFCeval_evalBuiltinProduct MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinProduct)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinOnes(threadData_t *threadData, modelica_metatype _args);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinOnes,2,0) {(void*) boxptr_NFCeval_evalBuiltinOnes,0}};
#define boxvar_NFCeval_evalBuiltinOnes MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinOnes)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMod(threadData_t *threadData, modelica_metatype _args, modelica_metatype _target);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMod,2,0) {(void*) boxptr_NFCeval_evalBuiltinMod,0}};
#define boxvar_NFCeval_evalBuiltinMod MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMod)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMin2(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMin2,2,0) {(void*) boxptr_NFCeval_evalBuiltinMin2,0}};
#define boxvar_NFCeval_evalBuiltinMin2 MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMin2)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMin(threadData_t *threadData, modelica_metatype _args, modelica_metatype _fn);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMin,2,0) {(void*) boxptr_NFCeval_evalBuiltinMin,0}};
#define boxvar_NFCeval_evalBuiltinMin MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMin)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalPositiveMax(threadData_t *threadData, modelica_metatype _flow_exp, modelica_metatype _eps);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalPositiveMax,2,0) {(void*) boxptr_NFCeval_evalPositiveMax,0}};
#define boxvar_NFCeval_evalPositiveMax MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalPositiveMax)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMax2(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMax2,2,0) {(void*) boxptr_NFCeval_evalBuiltinMax2,0}};
#define boxvar_NFCeval_evalBuiltinMax2 MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMax2)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMax(threadData_t *threadData, modelica_metatype _args, modelica_metatype _fn);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMax,2,0) {(void*) boxptr_NFCeval_evalBuiltinMax,0}};
#define boxvar_NFCeval_evalBuiltinMax MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMax)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMatrix2(threadData_t *threadData, modelica_metatype _arg, modelica_metatype _ty);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMatrix2,2,0) {(void*) boxptr_NFCeval_evalBuiltinMatrix2,0}};
#define boxvar_NFCeval_evalBuiltinMatrix2 MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMatrix2)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMatrix(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMatrix,2,0) {(void*) boxptr_NFCeval_evalBuiltinMatrix,0}};
#define boxvar_NFCeval_evalBuiltinMatrix MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinMatrix)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinLog(threadData_t *threadData, modelica_metatype _arg, modelica_metatype _target);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinLog,2,0) {(void*) boxptr_NFCeval_evalBuiltinLog,0}};
#define boxvar_NFCeval_evalBuiltinLog MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinLog)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinLog10(threadData_t *threadData, modelica_metatype _arg, modelica_metatype _target);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinLog10,2,0) {(void*) boxptr_NFCeval_evalBuiltinLog10,0}};
#define boxvar_NFCeval_evalBuiltinLog10 MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinLog10)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinIntegerEnum(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinIntegerEnum,2,0) {(void*) boxptr_NFCeval_evalBuiltinIntegerEnum,0}};
#define boxvar_NFCeval_evalBuiltinIntegerEnum MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinIntegerEnum)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinInteger(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinInteger,2,0) {(void*) boxptr_NFCeval_evalBuiltinInteger,0}};
#define boxvar_NFCeval_evalBuiltinInteger MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinInteger)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinIdentity(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinIdentity,2,0) {(void*) boxptr_NFCeval_evalBuiltinIdentity,0}};
#define boxvar_NFCeval_evalBuiltinIdentity MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinIdentity)
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinFloor(threadData_t *threadData, modelica_metatype _arg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinFloor,2,0) {(void*) boxptr_NFCeval_evalBuiltinFloor,0}};
#define boxvar_NFCeval_evalBuiltinFloor MMC_REFSTRUCTLIT(boxvar_lit_NFCeval_evalBuiltinFloor)

PROTECTED_FUNCTION_STATIC void omc_NFCeval_printWrongArgsError(threadData_t *threadData, modelica_string _evalFunc, modelica_metatype _args, modelica_metatype _info)
{
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  tmpMeta1 = stringAppend(_evalFunc,_OMC_LIT0);
  tmpMeta2 = stringAppend(tmpMeta1,omc_List_toString(threadData, _args, boxvar_NFExpression_toString, _OMC_LIT1, _OMC_LIT2, _OMC_LIT3, _OMC_LIT4, 1 /* true */, ((modelica_integer) 0)));
  omc_Error_addInternalError(threadData, tmpMeta2, _info);
  _return: OMC_LABEL_UNUSED
  return;
}

PROTECTED_FUNCTION_STATIC void omc_NFCeval_printUnboundError(threadData_t *threadData, modelica_metatype _component, modelica_metatype _target, modelica_metatype _exp)
{
  modelica_metatype _extra = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _extra has no default value.
  if((!omc_NFCeval_EvalTarget_hasInfo(threadData, _target)))
  {
    goto _return;
  }

  { /* match expression */
    modelica_metatype tmp3_1;
    tmp3_1 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_target), 4)));
    {
      volatile mmc_switch_type tmp3;
      int tmp4;
      tmp3 = 0;
      for (; tmp3 < 3; tmp3++) {
        switch (MMC_SWITCH_CAST(tmp3)) {
        case 0: {
          modelica_metatype tmpMeta5;
          modelica_metatype tmpMeta6;
          if (optionNone(tmp3_1)) goto tmp2_end;
          tmpMeta5 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 1));
          
          _extra = tmpMeta5;
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_cons(omc_NFExpression_toString(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_extra), 4)))), mmc_mk_cons(omc_NFInstNode_InstNode_name(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_extra), 2)))), MMC_REFSTRUCTLIT(mmc_nil)));
          omc_Error_addSourceMessage(threadData, _OMC_LIT9, tmpMeta6, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_target), 2))));
          goto goto_1;
          goto tmp2_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!omc_NFInstContext_inCondition(threadData, mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_target), 3)))))) goto tmp2_end;
          tmpMeta7 = mmc_mk_cons(omc_NFExpression_toString(threadData, _exp), MMC_REFSTRUCTLIT(mmc_nil));
          omc_Error_addSourceMessage(threadData, _OMC_LIT12, tmpMeta7, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_target), 2))));
          goto goto_1;
          goto tmp2_done;
        }
        case 2: {
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          
          /* Pattern matching succeeded */
          if((listMember(mmc_mk_integer(omc_NFComponent_variability(threadData, _component)), _OMC_LIT22) && mmc_unbox_boolean(omc_Util_getOptionOrDefault(threadData, omc_NFComponent_getEvaluateAnnotation(threadData, _component), mmc_mk_boolean(0 /* false */)))))
          {
            if(omc_NFComponent_isFixed(threadData, _component))
            {
              tmpMeta9 = stringAppend(omc_NFExpression_toString(threadData, _exp),_OMC_LIT20);
              tmpMeta8 = mmc_mk_cons(tmpMeta9, MMC_REFSTRUCTLIT(mmc_nil));
              tmpMeta10 = mmc_mk_cons(omc_NFInstNode_InstNode_info(threadData, omc_NFComponentRef_node(threadData, omc_NFExpression_toCref(threadData, _exp))), mmc_mk_cons(omc_NFCeval_EvalTarget_getInfo(threadData, _target), MMC_REFSTRUCTLIT(mmc_nil)));
              omc_Error_addMultiSourceMessage(threadData, _OMC_LIT19, tmpMeta8, tmpMeta10);
            }
          }
          else
          {
            tmpMeta11 = mmc_mk_cons(omc_NFExpression_toString(threadData, _exp), MMC_REFSTRUCTLIT(mmc_nil));
            tmpMeta12 = mmc_mk_cons(omc_NFInstNode_InstNode_info(threadData, omc_NFComponentRef_node(threadData, omc_NFExpression_toCref(threadData, _exp))), mmc_mk_cons(omc_NFCeval_EvalTarget_getInfo(threadData, _target), MMC_REFSTRUCTLIT(mmc_nil)));
            omc_Error_addMultiSourceMessage(threadData, _OMC_LIT15, tmpMeta11, tmpMeta12);

            goto goto_1;
          }
          goto tmp2_done;
        }
        }
        goto tmp2_end;
        tmp2_end: ;
      }
      goto goto_1;
      goto_1:;
      MMC_THROW_INTERNAL();
      goto tmp2_done;
      tmp2_done:;
    }
  }
  ;
  _return: OMC_LABEL_UNUSED
  return;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalRecordElement2(threadData_t *threadData, modelica_metatype _exp, modelica_integer _index)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _exp;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 1; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,12,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = listGet((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 4))), _index);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_NFCeval_evalRecordElement2(threadData_t *threadData, modelica_metatype _exp, modelica_metatype _index)
{
  modelica_integer tmp1;
  modelica_metatype _result = NULL;
  tmp1 = mmc_unbox_integer(_index);
  _result = omc_NFCeval_evalRecordElement2(threadData, _exp, tmp1);
  /* skip box _result; NFExpression */
  return _result;
}

static modelica_metatype closure0_NFExpression_nthRecordElement(threadData_t *thData, modelica_metatype closure, modelica_metatype recordExp)
{
  modelica_metatype index = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFExpression_nthRecordElement(thData, index, recordExp);
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalRecordElement(threadData_t *threadData, modelica_metatype _exp, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_metatype _e = NULL;
  modelica_integer _index;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_integer tmp4;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _e has no default value.
  // _index has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _exp;
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,28,4) == 0) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 2));
  tmpMeta3 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 3));
  tmp4 = mmc_unbox_integer(tmpMeta3);
  _e = tmpMeta2;
  _index = tmp4  /* pattern as ty=Integer */;

  _e = omc_NFCeval_evalExp(threadData, _e, _target);

  { /* matchcontinue expression */
    {
      volatile mmc_switch_type tmp7;
      int tmp8;
      tmp7 = 0;
      MMC_TRY_INTERNAL(mmc_jumper)
      tmp6_top:
      threadData->mmc_jumper = &new_mmc_jumper;
      for (; tmp7 < 2; tmp7++) {
        switch (MMC_SWITCH_CAST(tmp7)) {
        case 0: {
          modelica_metatype tmpMeta9;
          /* Pattern matching succeeded */
          tmpMeta9 = mmc_mk_box1(0, mmc_mk_integer(_index));
          _result = omc_NFExpression_mapSplitExpressions(threadData, _e, (modelica_fnptr) mmc_mk_box2(0,closure0_NFExpression_nthRecordElement,tmpMeta9));
          goto tmp6_done;
        }
        case 1: {
          modelica_metatype tmpMeta10;
          /* Pattern matching succeeded */
          tmpMeta10 = stringAppend(_OMC_LIT23,omc_NFExpression_toString(threadData, _exp));
          omc_Error_assertion(threadData, 0 /* false */, tmpMeta10, _OMC_LIT25);
          goto tmp6_done;
        }
        }
        goto tmp6_end;
        tmp6_end: ;
      }
      goto goto_5;
      tmp6_done:
      (void)tmp7;
      MMC_RESTORE_INTERNAL(mmc_jumper);
      goto tmp6_done2;
      goto_5:;
      MMC_CATCH_INTERNAL(mmc_jumper);
      if (++tmp7 < 2) {
        goto tmp6_top;
      }
      MMC_THROW_INTERNAL();
      tmp6_done2:;
    }
  }
  ;
  _return: OMC_LABEL_UNUSED
  return _result;
}

static modelica_metatype closure1_NFCeval_evalExp(threadData_t *thData, modelica_metatype closure, modelica_metatype $in_exp)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalExp(thData, $in_exp, target);
}static modelica_metatype closure2_NFCeval_evalExp(threadData_t *thData, modelica_metatype closure, modelica_metatype $in_exp)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalExp(thData, $in_exp, target);
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalSubscriptedExp(threadData_t *threadData, modelica_metatype _exp, modelica_metatype _subscripts, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_metatype _subs = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta8;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _subs has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _exp;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,10,4) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box1(0, _target);
          tmpMeta7 = mmc_mk_box5(13, &NFExpression_RANGE__desc, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))), omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 3))), _target), omc_Util_applyOption(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 4))), (modelica_fnptr) mmc_mk_box2(0,closure1_NFCeval_evalExp,tmpMeta6)), omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 5))), _target));
          tmpMeta1 = tmpMeta7;
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalExp(threadData, _exp, _target);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;

  {
    modelica_metatype __omcQ_24tmpVar3;
    modelica_metatype* tmp9;
    modelica_metatype tmpMeta10;
    modelica_metatype tmpMeta11;
    modelica_metatype __omcQ_24tmpVar2;
    modelica_integer tmp12;
    modelica_metatype _s_loopVar = 0;
    modelica_metatype _s;
    _s_loopVar = _subscripts;
    tmpMeta10 = MMC_REFSTRUCTLIT(mmc_nil);
    __omcQ_24tmpVar3 = tmpMeta10; /* defaultValue */
    tmp9 = &__omcQ_24tmpVar3;
    while(1) {
      tmp12 = 1;
      if (!listEmpty(_s_loopVar)) {
        _s = MMC_CAR(_s_loopVar);
        _s_loopVar = MMC_CDR(_s_loopVar);
        tmp12--;
      }
      if (tmp12 == 0) {
        tmpMeta11 = mmc_mk_box1(0, _target);
        __omcQ_24tmpVar2 = omc_NFSubscript_mapShallowExp(threadData, _s, (modelica_fnptr) mmc_mk_box2(0,closure2_NFCeval_evalExp,tmpMeta11));
        *tmp9 = mmc_mk_cons(__omcQ_24tmpVar2,0);
        tmp9 = &MMC_CDR(*tmp9);
      } else if (tmp12 == 1) {
        break;
      } else {
        MMC_THROW_INTERNAL();
      }
    }
    *tmp9 = mmc_mk_nil();
    tmpMeta8 = __omcQ_24tmpVar3;
  }
  _subs = tmpMeta8;

  _result = omc_NFExpression_applySubscripts(threadData, _subs, _result, 0 /* false */);
  _return: OMC_LABEL_UNUSED
  return _result;
}

static modelica_metatype closure3_NFCeval_evalExp(threadData_t *thData, modelica_metatype closure, modelica_metatype $in_exp)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalExp(thData, $in_exp, target);
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalSize(threadData_t *threadData, modelica_metatype _exp, modelica_metatype _optIndex, modelica_metatype _target)
{
  modelica_metatype _outExp = NULL;
  modelica_metatype _index_exp = NULL;
  modelica_integer _index;
  modelica_metatype _ty_err = NULL;
  modelica_metatype _dim = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype _info = NULL;
  modelica_metatype _arr = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outExp has no default value.
  // _index_exp has no default value.
  // _index has no default value.
  // _ty_err has no default value.
  // _dim has no default value.
  // _ty has no default value.
  // _info has no default value.
  // _arr has no default value.
  _info = omc_NFCeval_EvalTarget_getInfo(threadData, _target);

  if(isSome(_optIndex))
  {
    _index_exp = omc_NFCeval_evalExp(threadData, omc_Util_getOption(threadData, _optIndex), _target);

    _index = omc_NFExpression_toInteger(threadData, _index_exp);

    _dim = omc_NFTyping_typeExpDim(threadData, _exp, _index, ((modelica_integer) 8), _info ,NULL ,&_ty_err);

    omc_NFTyping_checkSizeTypingError(threadData, _ty_err, _exp, _index, _info);

    _outExp = omc_NFDimension_sizeExp(threadData, _dim);

    _outExp = omc_NFCeval_evalExp(threadData, _outExp, _target);
  }
  else
  {
    _outExp = omc_NFTyping_typeExp(threadData, _exp, ((modelica_integer) 8), _info, 0 /* false */ ,&_ty, NULL, NULL);

    _arr = omc_Array_mapList(threadData, omc_NFType_arrayDims(threadData, _ty), boxvar_NFDimension_sizeExp);

    tmpMeta1 = mmc_mk_box1(0, _target);
    omc_Array_mapNoCopy(threadData, _arr, (modelica_fnptr) mmc_mk_box2(0,closure3_NFCeval_evalExp,tmpMeta1));

    _dim = omc_NFDimension_fromInteger(threadData, arrayLength(_arr), 3);

    tmpMeta2 = mmc_mk_cons(_dim, MMC_REFSTRUCTLIT(mmc_nil));
    tmpMeta3 = mmc_mk_box3(10, &NFType_ARRAY__desc, _OMC_LIT26, tmpMeta2);
    _outExp = omc_NFExpression_makeArray(threadData, tmpMeta3, _arr, 0 /* false */);
  }
  _return: OMC_LABEL_UNUSED
  return _outExp;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalReduction_reductionFn(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2, modelica_metatype _target, modelica_fnptr _fn)
{
  modelica_metatype _result = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _result = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_fn), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_fn), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_fn), 2))), _exp1, omc_NFCeval_evalExp(threadData, _exp2, _target)) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_fn), 1)))) (threadData, _exp1, omc_NFCeval_evalExp(threadData, _exp2, _target));
  _return: OMC_LABEL_UNUSED
  return _result;
}

static modelica_metatype closure4_NFCeval_evalExp(threadData_t *thData, modelica_metatype closure, modelica_metatype $in_exp)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalExp(thData, $in_exp, target);
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalReduction(threadData_t *threadData, modelica_metatype _callExp)
{
  modelica_metatype _result = NULL;
  modelica_metatype _fn = NULL;
  modelica_metatype _exp = NULL;
  modelica_metatype _default_exp = NULL;
  modelica_metatype _iters = NULL;
  modelica_metatype _ty = NULL;
  modelica_fnptr _red_fn;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  modelica_metatype tmpMeta5;
  modelica_fnptr tmp6_c0 __attribute__((unused)) = 0;
  modelica_metatype tmpMeta12;
  modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _fn has no default value.
  // _exp has no default value.
  // _default_exp has no default value.
  // _iters has no default value.
  // _ty has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _callExp;
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,13,1) == 0) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 2));
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta2,6,8) == 0) MMC_THROW_INTERNAL();
  tmpMeta3 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta2), 2));
  tmpMeta4 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta2), 6));
  tmpMeta5 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta2), 7));
  _fn = tmpMeta3;
  _exp = tmpMeta4;
  _iters = tmpMeta5;

  _ty = omc_NFExpression_typeOf(threadData, _exp);

  
  
  { /* match expression */
    modelica_string tmp9_1;
    tmp9_1 = omc_AbsynUtil_pathString(threadData, omc_NFFunction_Function_name(threadData, _fn), _OMC_LIT27, 1 /* true */, 0 /* false */);
    {
      volatile mmc_switch_type tmp9;
      int tmp10;
      tmp9 = 0;
      for (; tmp9 < 5; tmp9++) {
        switch (MMC_SWITCH_CAST(tmp9)) {
        case 0: {
          if (3 != MMC_STRLEN(tmp9_1) || strcmp(MMC_STRINGDATA(_OMC_LIT30), MMC_STRINGDATA(tmp9_1)) != 0) goto tmp8_end;
          /* Pattern matching succeeded */
          tmp6_c0 = boxvar_NFCeval_evalBinaryAdd;
          tmpMeta[0+1] = omc_NFExpression_makeZero(threadData, _ty);
          goto tmp8_done;
        }
        case 1: {
          if (7 != MMC_STRLEN(tmp9_1) || strcmp(MMC_STRINGDATA(_OMC_LIT31), MMC_STRINGDATA(tmp9_1)) != 0) goto tmp8_end;
          /* Pattern matching succeeded */
          tmp6_c0 = boxvar_NFCeval_evalBinaryMul;
          tmpMeta[0+1] = omc_NFExpression_makeOne(threadData, _ty);
          goto tmp8_done;
        }
        case 2: {
          if (3 != MMC_STRLEN(tmp9_1) || strcmp(MMC_STRINGDATA(_OMC_LIT32), MMC_STRINGDATA(tmp9_1)) != 0) goto tmp8_end;
          /* Pattern matching succeeded */
          tmp6_c0 = boxvar_NFCeval_evalBuiltinMin2;
          tmpMeta[0+1] = omc_NFExpression_makeMaxValue(threadData, _ty);
          goto tmp8_done;
        }
        case 3: {
          if (3 != MMC_STRLEN(tmp9_1) || strcmp(MMC_STRINGDATA(_OMC_LIT33), MMC_STRINGDATA(tmp9_1)) != 0) goto tmp8_end;
          /* Pattern matching succeeded */
          tmp6_c0 = boxvar_NFCeval_evalBuiltinMax2;
          tmpMeta[0+1] = omc_NFExpression_makeMinValue(threadData, _ty);
          goto tmp8_done;
        }
        case 4: {
          modelica_metatype tmpMeta11;
          
          /* Pattern matching succeeded */
          tmpMeta11 = stringAppend(_OMC_LIT28,omc_AbsynUtil_pathString(threadData, omc_NFFunction_Function_name(threadData, _fn), _OMC_LIT27, 1 /* true */, 0 /* false */));
          omc_Error_assertion(threadData, 0 /* false */, tmpMeta11, _OMC_LIT29);
          goto goto_7;
          goto tmp8_done;
        }
        }
        goto tmp8_end;
        tmp8_end: ;
      }
      goto goto_7;
      goto_7:;
      MMC_THROW_INTERNAL();
      goto tmp8_done;
      tmp8_done:;
    }
  }
  _red_fn = tmp6_c0;
  _default_exp = tmpMeta[0+1];

  tmpMeta12 = mmc_mk_box1(0, _OMC_LIT36);
  _result = omc_NFExpression_foldReduction(threadData, _exp, _iters, _default_exp, (modelica_fnptr) mmc_mk_box2(0,closure4_NFCeval_evalExp,tmpMeta12), ((modelica_fnptr) _red_fn));
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalArrayConstructor2(threadData_t *threadData, modelica_metatype _exp, modelica_metatype _ranges, modelica_metatype _iterators)
{
  modelica_metatype _result = NULL;
  modelica_metatype _range = NULL;
  modelica_metatype _e = NULL;
  modelica_metatype _ranges_rest = NULL;
  modelica_metatype _expl = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype _arr = NULL;
  modelica_metatype _iter = NULL;
  modelica_metatype _iters_rest = NULL;
  modelica_metatype _range_iter = NULL;
  modelica_metatype _value = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  modelica_metatype tmpMeta5;
  modelica_metatype tmpMeta6;
  modelica_metatype tmpMeta7;
  modelica_metatype tmpMeta8;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _range has no default value.
  // _e has no default value.
  // _ranges_rest has no default value.
  tmpMeta1 = MMC_REFSTRUCTLIT(mmc_nil);
  _expl = tmpMeta1;
  // _arr has no default value.
  // _iter has no default value.
  // _iters_rest has no default value.
  // _range_iter has no default value.
  // _value has no default value.
  // _ty has no default value.
  if(listEmpty(_ranges))
  {
    _result = omc_NFCeval_evalExp(threadData, _exp, _OMC_LIT36);
  }
  else
  {
    /* Pattern-matching assignment */
    tmpMeta2 = _ranges;
    if (listEmpty(tmpMeta2)) MMC_THROW_INTERNAL();
    tmpMeta3 = MMC_CAR(tmpMeta2);
    tmpMeta4 = MMC_CDR(tmpMeta2);
    _range = tmpMeta3;
    _ranges_rest = tmpMeta4;

    _range = omc_NFCeval_evalExp(threadData, _range, _OMC_LIT36);

    /* Pattern-matching assignment */
    tmpMeta5 = _iterators;
    if (listEmpty(tmpMeta5)) MMC_THROW_INTERNAL();
    tmpMeta6 = MMC_CAR(tmpMeta5);
    tmpMeta7 = MMC_CDR(tmpMeta5);
    _iter = tmpMeta6;
    _iters_rest = tmpMeta7;

    _range_iter = omc_NFExpressionIterator_fromExp(threadData, _range, 0 /* false */);

    while(1)
    {
      if(!omc_NFExpressionIterator_hasNext(threadData, _range_iter)) break;
      _range_iter = omc_NFExpressionIterator_next(threadData, _range_iter ,&_value);

      omc_Mutable_update(threadData, _iter, _value);

      tmpMeta8 = mmc_mk_cons(omc_NFCeval_evalArrayConstructor2(threadData, _exp, _ranges_rest, _iters_rest), _expl);
      _expl = tmpMeta8;
    }

    _arr = listArray(listReverseInPlace(_expl));

    _ty = ((arrayLength(_arr) == ((modelica_integer) 0))?omc_NFType_liftArrayLeftList(threadData, omc_NFExpression_typeOf(threadData, _exp), omc_List_mapFlat(threadData, _ranges_rest, boxvar_NFExpression_dimensions)):omc_NFExpression_typeOf(threadData, listHead(_expl)));

    _ty = omc_NFType_liftArrayLeft(threadData, _ty, omc_NFDimension_fromInteger(threadData, arrayLength(_arr), 1));

    _result = omc_NFExpression_makeArray(threadData, _ty, _arr, 1 /* true */);
  }
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalArrayConstructor(threadData_t *threadData, modelica_metatype _callExp)
{
  modelica_metatype _result = NULL;
  modelica_metatype _exp = NULL;
  modelica_metatype _iters = NULL;
  modelica_metatype _iter_exps = NULL;
  modelica_metatype _ranges = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _exp has no default value.
  // _iters has no default value.
  // _iter_exps has no default value.
  // _ranges has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _callExp;
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,13,1) == 0) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 2));
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta2,4,5) == 0) MMC_THROW_INTERNAL();
  tmpMeta3 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta2), 5));
  tmpMeta4 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta2), 6));
  _exp = tmpMeta3;
  _iters = tmpMeta4;

  _exp = omc_NFExpression_createIterationRanges(threadData, _exp, _iters ,&_ranges ,&_iter_exps);

  _result = omc_NFCeval_evalArrayConstructor2(threadData, _exp, _ranges, _iter_exps);
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalGetInstanceName(threadData_t *threadData, modelica_metatype _scope)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  tmpMeta1 = mmc_mk_box2(5, &NFExpression_STRING__desc, omc_AbsynUtil_pathString(threadData, omc_NFInstNode_InstNode_rootPath(threadData, _scope, 0 /* false */), _OMC_LIT27, 1 /* true */, 0 /* false */));
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalSolverClock(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      modelica_metatype _c = NULL;
      modelica_metatype _solver = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _c has no default value.
      // _solver has no default value.
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,5,1) == 0) goto tmp3_end;
          if (listEmpty(tmpMeta7)) goto tmp3_end;
          tmpMeta8 = MMC_CAR(tmpMeta7);
          tmpMeta9 = MMC_CDR(tmpMeta7);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta8,2,1) == 0) goto tmp3_end;
          if (!listEmpty(tmpMeta9)) goto tmp3_end;
          _c = tmpMeta6;
          _solver = tmpMeta8;
          /* Pattern matching succeeded */
          tmpMeta10 = mmc_mk_box3(7, &NFClockKind_SOLVER__CLOCK__desc, _c, _solver);
          tmpMeta11 = mmc_mk_box2(8, &NFExpression_CLKCONST__desc, tmpMeta10);
          tmpMeta1 = tmpMeta11;
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT37, _args, _OMC_LIT38);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBooleanClock(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      modelica_metatype _condition = NULL;
      modelica_metatype _interval = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _condition has no default value.
      // _interval has no default value.
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,3,1) == 0) goto tmp3_end;
          if (listEmpty(tmpMeta7)) goto tmp3_end;
          tmpMeta8 = MMC_CAR(tmpMeta7);
          tmpMeta9 = MMC_CDR(tmpMeta7);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta8,1,1) == 0) goto tmp3_end;
          if (!listEmpty(tmpMeta9)) goto tmp3_end;
          _condition = tmpMeta6;
          _interval = tmpMeta8;
          /* Pattern matching succeeded */
          tmpMeta10 = mmc_mk_box3(6, &NFClockKind_EVENT__CLOCK__desc, _condition, _interval);
          tmpMeta11 = mmc_mk_box2(8, &NFExpression_CLKCONST__desc, tmpMeta10);
          tmpMeta1 = tmpMeta11;
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT39, _args, _OMC_LIT40);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalRealClock(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      modelica_metatype _interval = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _interval has no default value.
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,1,1) == 0) goto tmp3_end;
          if (!listEmpty(tmpMeta7)) goto tmp3_end;
          _interval = tmpMeta6;
          /* Pattern matching succeeded */
          tmpMeta8 = mmc_mk_box2(5, &NFClockKind_REAL__CLOCK__desc, _interval);
          tmpMeta9 = mmc_mk_box2(8, &NFExpression_CLKCONST__desc, tmpMeta8);
          tmpMeta1 = tmpMeta9;
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT41, _args, _OMC_LIT42);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalRationalClock(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      modelica_metatype _interval = NULL;
      modelica_metatype _resolution = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _interval has no default value.
      // _resolution has no default value.
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,0,1) == 0) goto tmp3_end;
          if (listEmpty(tmpMeta7)) goto tmp3_end;
          tmpMeta8 = MMC_CAR(tmpMeta7);
          tmpMeta9 = MMC_CDR(tmpMeta7);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta8,0,1) == 0) goto tmp3_end;
          if (!listEmpty(tmpMeta9)) goto tmp3_end;
          _interval = tmpMeta6;
          _resolution = tmpMeta8;
          /* Pattern matching succeeded */
          tmpMeta10 = mmc_mk_box3(4, &NFClockKind_RATIONAL__CLOCK__desc, _interval, _resolution);
          tmpMeta11 = mmc_mk_box2(8, &NFExpression_CLKCONST__desc, tmpMeta10);
          tmpMeta1 = tmpMeta11;
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT43, _args, _OMC_LIT44);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalInferredClock(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (!listEmpty(tmp4_1)) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = _OMC_LIT46;
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT47, _args, _OMC_LIT48);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalIntBitRShift(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_integer _i1;
  modelica_integer _i2;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _i1 has no default value.
  // _i2 has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_integer tmp9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_integer tmp13;
          modelica_metatype tmpMeta14;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,0,1) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 2));
          tmp9 = mmc_unbox_integer(tmpMeta8);
          if (listEmpty(tmpMeta7)) goto tmp3_end;
          tmpMeta10 = MMC_CAR(tmpMeta7);
          tmpMeta11 = MMC_CDR(tmpMeta7);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta10,0,1) == 0) goto tmp3_end;
          tmpMeta12 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta10), 2));
          tmp13 = mmc_unbox_integer(tmpMeta12);
          if (!listEmpty(tmpMeta11)) goto tmp3_end;
          _i1 = tmp9  /* pattern as ty=Integer */;
          _i2 = tmp13  /* pattern as ty=Integer */;
          /* Pattern matching succeeded */
          tmpMeta14 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(((_i1) >> (_i2))));
          tmpMeta1 = tmpMeta14;
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT49, _args, _OMC_LIT50);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalIntBitLShift(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_integer _i1;
  modelica_integer _i2;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _i1 has no default value.
  // _i2 has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_integer tmp9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_integer tmp13;
          modelica_metatype tmpMeta14;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,0,1) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 2));
          tmp9 = mmc_unbox_integer(tmpMeta8);
          if (listEmpty(tmpMeta7)) goto tmp3_end;
          tmpMeta10 = MMC_CAR(tmpMeta7);
          tmpMeta11 = MMC_CDR(tmpMeta7);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta10,0,1) == 0) goto tmp3_end;
          tmpMeta12 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta10), 2));
          tmp13 = mmc_unbox_integer(tmpMeta12);
          if (!listEmpty(tmpMeta11)) goto tmp3_end;
          _i1 = tmp9  /* pattern as ty=Integer */;
          _i2 = tmp13  /* pattern as ty=Integer */;
          /* Pattern matching succeeded */
          tmpMeta14 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(((_i1) << (_i2))));
          tmpMeta1 = tmpMeta14;
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT51, _args, _OMC_LIT52);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalIntBitXor(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_integer _i1;
  modelica_integer _i2;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _i1 has no default value.
  // _i2 has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_integer tmp9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_integer tmp13;
          modelica_metatype tmpMeta14;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,0,1) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 2));
          tmp9 = mmc_unbox_integer(tmpMeta8);
          if (listEmpty(tmpMeta7)) goto tmp3_end;
          tmpMeta10 = MMC_CAR(tmpMeta7);
          tmpMeta11 = MMC_CDR(tmpMeta7);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta10,0,1) == 0) goto tmp3_end;
          tmpMeta12 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta10), 2));
          tmp13 = mmc_unbox_integer(tmpMeta12);
          if (!listEmpty(tmpMeta11)) goto tmp3_end;
          _i1 = tmp9  /* pattern as ty=Integer */;
          _i2 = tmp13  /* pattern as ty=Integer */;
          /* Pattern matching succeeded */
          tmpMeta14 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(((_i1) ^ (_i2))));
          tmpMeta1 = tmpMeta14;
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT53, _args, _OMC_LIT54);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalIntBitOr(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_integer _i1;
  modelica_integer _i2;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _i1 has no default value.
  // _i2 has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_integer tmp9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_integer tmp13;
          modelica_metatype tmpMeta14;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,0,1) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 2));
          tmp9 = mmc_unbox_integer(tmpMeta8);
          if (listEmpty(tmpMeta7)) goto tmp3_end;
          tmpMeta10 = MMC_CAR(tmpMeta7);
          tmpMeta11 = MMC_CDR(tmpMeta7);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta10,0,1) == 0) goto tmp3_end;
          tmpMeta12 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta10), 2));
          tmp13 = mmc_unbox_integer(tmpMeta12);
          if (!listEmpty(tmpMeta11)) goto tmp3_end;
          _i1 = tmp9  /* pattern as ty=Integer */;
          _i2 = tmp13  /* pattern as ty=Integer */;
          /* Pattern matching succeeded */
          tmpMeta14 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(((_i1) | (_i2))));
          tmpMeta1 = tmpMeta14;
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT55, _args, _OMC_LIT56);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalIntBitAnd(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_integer _i1;
  modelica_integer _i2;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _i1 has no default value.
  // _i2 has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_integer tmp9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_integer tmp13;
          modelica_metatype tmpMeta14;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,0,1) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 2));
          tmp9 = mmc_unbox_integer(tmpMeta8);
          if (listEmpty(tmpMeta7)) goto tmp3_end;
          tmpMeta10 = MMC_CAR(tmpMeta7);
          tmpMeta11 = MMC_CDR(tmpMeta7);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta10,0,1) == 0) goto tmp3_end;
          tmpMeta12 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta10), 2));
          tmp13 = mmc_unbox_integer(tmpMeta12);
          if (!listEmpty(tmpMeta11)) goto tmp3_end;
          _i1 = tmp9  /* pattern as ty=Integer */;
          _i2 = tmp13  /* pattern as ty=Integer */;
          /* Pattern matching succeeded */
          tmpMeta14 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(((_i1) & (_i2))));
          tmpMeta1 = tmpMeta14;
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT57, _args, _OMC_LIT58);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalUriToFilename(threadData_t *threadData, modelica_metatype _fn, modelica_metatype _arg, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 5: {
          modelica_metatype tmpMeta5;
          
          /* Pattern matching succeeded */
          tmpMeta5 = mmc_mk_box2(35, &NFExpression_FILENAME__desc, OpenModelica__uriToFilename((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))));
          tmpMeta1 = tmpMeta5;
          goto tmp3_done;
        }
        case 35: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(35, &NFExpression_FILENAME__desc, OpenModelica__uriToFilename((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT59, tmpMeta7, _OMC_LIT60);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinZeros(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  tmpMeta1 = mmc_mk_cons(_OMC_LIT61, _args);
  _result = omc_NFCeval_evalBuiltinFill(threadData, tmpMeta1);
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinVector(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype _expl = NULL;
  modelica_metatype _ty = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _expl has no default value.
  // _ty has no default value.
  _expl = omc_NFExpression_arrayScalarElements(threadData, _arg);

  _result = omc_NFExpression_makeExpArray(threadData, listArray(_expl), omc_NFType_arrayElementType(threadData, omc_NFExpression_typeOf(threadData, _arg)), 1 /* true */);
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinTranspose(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype _dim1 = NULL;
  modelica_metatype _dim2 = NULL;
  modelica_metatype _rest_dims = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype _arr = NULL;
  modelica_metatype _arrl = NULL;
  modelica_boolean _literal;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _dim1 has no default value.
  // _dim2 has no default value.
  // _rest_dims has no default value.
  // _ty has no default value.
  // _arr has no default value.
  // _arrl has no default value.
  // _literal has no default value.
  _ty = omc_NFExpression_typeOf(threadData, _arg);

  if((omc_NFExpression_isArray(threadData, _arg) && (omc_NFType_dimensionCount(threadData, _ty) >= ((modelica_integer) 2))))
  {
    _result = omc_NFExpression_transposeArray(threadData, _arg);
  }
  else
  {
    tmpMeta1 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
    omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT62, tmpMeta1, _OMC_LIT63);

    MMC_THROW_INTERNAL();
  }
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinTan(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(tan(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT64, tmpMeta7, _OMC_LIT65);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinTanh(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(tanh(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT66, tmpMeta7, _OMC_LIT67);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSymmetric(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype _mat = NULL;
  modelica_integer _n;
  modelica_metatype _ty = NULL;
  modelica_metatype _row_ty = NULL;
  modelica_metatype _arr = NULL;
  modelica_metatype _accum = NULL;
  modelica_integer tmp1;
  modelica_integer tmp2;
  modelica_integer tmp3;
  modelica_integer tmp4;
  modelica_integer tmp5;
  modelica_integer tmp6;
  modelica_metatype tmpMeta7;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _mat has no default value.
  // _n has no default value.
  // _ty has no default value.
  // _row_ty has no default value.
  // _arr has no default value.
  // _accum has no default value.
  _ty = omc_NFExpression_typeOf(threadData, _arg);

  if((omc_NFExpression_isArray(threadData, _arg) && omc_NFType_isSquareMatrix(threadData, _ty)))
  {
    _mat = omc_Array_map(threadData, omc_NFExpression_arrayElements(threadData, _arg), boxvar_NFExpression_arrayElements);

    _n = arrayLength(_mat);

    _row_ty = omc_NFType_unliftArray(threadData, omc_NFExpression_typeOf(threadData, _arg));

    _accum = arrayCreateNoInit(_n, _arg);

    tmp4 = ((modelica_integer) 1); tmp5 = 1; tmp6 = _n;
    if(!(((tmp5 > 0) && (tmp4 > tmp6)) || ((tmp5 < 0) && (tmp4 < tmp6))))
    {
      modelica_integer _i;
      for(_i = ((modelica_integer) 1); in_range_integer(_i, tmp4, tmp6); _i += tmp5)
      {
        _arr = arrayCreateNoInit(_n, _arg);

        tmp1 = ((modelica_integer) 1); tmp2 = 1; tmp3 = _n;
        if(!(((tmp2 > 0) && (tmp1 > tmp3)) || ((tmp2 < 0) && (tmp1 < tmp3))))
        {
          modelica_integer _j;
          for(_j = ((modelica_integer) 1); in_range_integer(_j, tmp1, tmp3); _j += tmp2)
          {
            arrayUpdateNoBoundsChecking(_arr, _j, ((_i > _j)?arrayGet(arrayGet(_mat,_j) /* DAE.ASUB */, _i):arrayGet(arrayGet(_mat,_i) /* DAE.ASUB */, _j)));
          }
        }

        arrayUpdateNoBoundsChecking(_accum, _i, omc_NFExpression_makeArray(threadData, _row_ty, _arr, 1 /* true */));
      }
    }

    _result = omc_NFExpression_makeArray(threadData, _ty, _accum, 1 /* true */);
  }
  else
  {
    tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
    omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT68, tmpMeta7, _OMC_LIT69);

    MMC_THROW_INTERNAL();
  }
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_real omc_NFCeval_evalBuiltinSumReal(threadData_t *threadData, modelica_metatype _exp, modelica_real __omcQ_24in_5Fresult)
{
  modelica_real _result;
  modelica_real tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _result = __omcQ_24in_5Fresult;
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _exp;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = _result + mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))));
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = _result;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmp1;
  _return: OMC_LABEL_UNUSED
  return _result;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_NFCeval_evalBuiltinSumReal(threadData_t *threadData, modelica_metatype _exp, modelica_metatype __omcQ_24in_5Fresult)
{
  modelica_real tmp1;
  modelica_real _result;
  modelica_metatype out_result;
  tmp1 = mmc_unbox_real(__omcQ_24in_5Fresult);
  _result = omc_NFCeval_evalBuiltinSumReal(threadData, _exp, tmp1);
  out_result = mmc_mk_rcon(_result);
  return out_result;
}

PROTECTED_FUNCTION_STATIC modelica_integer omc_NFCeval_evalBuiltinSumInt(threadData_t *threadData, modelica_metatype _exp, modelica_integer __omcQ_24in_5Fresult)
{
  modelica_integer _result;
  modelica_integer tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _result = __omcQ_24in_5Fresult;
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _exp;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = _result + mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))));
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = _result;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmp1;
  _return: OMC_LABEL_UNUSED
  return _result;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_NFCeval_evalBuiltinSumInt(threadData_t *threadData, modelica_metatype _exp, modelica_metatype __omcQ_24in_5Fresult)
{
  modelica_integer tmp1;
  modelica_integer _result;
  modelica_metatype out_result;
  tmp1 = mmc_unbox_integer(__omcQ_24in_5Fresult);
  _result = omc_NFCeval_evalBuiltinSumInt(threadData, _exp, tmp1);
  out_result = mmc_mk_icon(_result);
  return out_result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSum(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!omc_NFExpression_isArray(threadData, _arg)) goto tmp3_end;
          { /* match expression */
            modelica_metatype tmp9_1;
            tmp9_1 = omc_NFType_arrayElementType(threadData, omc_NFExpression_typeOf(threadData, _arg));
            {
              int tmp9;
              {
                switch (MMC_SWITCH_CAST(valueConstructor(tmp9_1))) {
                case 3: {
                  modelica_metatype tmpMeta10;
                  
                  /* Pattern matching succeeded */
                  tmpMeta10 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, omc_NFExpression_fold(threadData, _arg, boxvar_NFCeval_evalBuiltinSumInt, mmc_mk_integer(((modelica_integer) 0))));
                  tmpMeta6 = tmpMeta10;
                  goto tmp8_done;
                }
                case 4: {
                  modelica_metatype tmpMeta11;
                  
                  /* Pattern matching succeeded */
                  tmpMeta11 = mmc_mk_box2(4, &NFExpression_REAL__desc, omc_NFExpression_fold(threadData, _arg, boxvar_NFCeval_evalBuiltinSumReal, _OMC_LIT34));
                  tmpMeta6 = tmpMeta11;
                  goto tmp8_done;
                }
                default:
                tmp8_default: OMC_LABEL_UNUSED; {
                  modelica_metatype tmpMeta12;
                  
                  /* Pattern matching succeeded */
                  tmpMeta12 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
                  omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT70, tmpMeta12, _OMC_LIT71);
                  goto goto_7;
                  goto tmp8_done;
                }
                }
                goto tmp8_end;
                tmp8_end: ;
              }
              goto goto_7;
              goto_7:;
              goto goto_2;
              goto tmp8_done;
              tmp8_done:;
            }
          }tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta13;
          /* Pattern matching succeeded */
          tmpMeta13 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT70, tmpMeta13, _OMC_LIT72);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinString(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      modelica_metatype _arg = NULL;
      modelica_integer _min_len;
      modelica_integer _str_len;
      modelica_integer _significant_digits;
      modelica_boolean _left_justified;
      modelica_string _str = NULL;
      modelica_string _format = NULL;
      modelica_real _r;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _arg has no default value.
      // _min_len has no default value.
      // _str_len has no default value.
      // _significant_digits has no default value.
      // _left_justified has no default value.
      // _str has no default value.
      // _format has no default value.
      // _r has no default value.
      tmp4 = 0;
      for (; tmp4 < 3; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_integer tmp11;
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta13;
          modelica_metatype tmpMeta14;
          modelica_integer tmp15;
          modelica_string tmp16 = 0;
          modelica_metatype tmpMeta20;
          modelica_metatype tmpMeta21;
          modelica_metatype tmpMeta22;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (listEmpty(tmpMeta7)) goto tmp3_end;
          tmpMeta8 = MMC_CAR(tmpMeta7);
          tmpMeta9 = MMC_CDR(tmpMeta7);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta8,0,1) == 0) goto tmp3_end;
          tmpMeta10 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta8), 2));
          tmp11 = mmc_unbox_integer(tmpMeta10);
          if (listEmpty(tmpMeta9)) goto tmp3_end;
          tmpMeta12 = MMC_CAR(tmpMeta9);
          tmpMeta13 = MMC_CDR(tmpMeta9);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta12,3,1) == 0) goto tmp3_end;
          tmpMeta14 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta12), 2));
          tmp15 = mmc_unbox_integer(tmpMeta14);
          if (!listEmpty(tmpMeta13)) goto tmp3_end;
          _arg = tmpMeta6;
          _min_len = tmp11  /* pattern as ty=Integer */;
          _left_justified = tmp15  /* pattern as ty=Boolean */;
          /* Pattern matching succeeded */
          { /* match expression */
            modelica_metatype tmp19_1;
            tmp19_1 = _arg;
            {
              int tmp19;
              {
                switch (MMC_SWITCH_CAST(valueConstructor(tmp19_1))) {
                case 3: {
                  
                  /* Pattern matching succeeded */
                  tmp16 = intString(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))));
                  goto tmp18_done;
                }
                case 6: {
                  
                  /* Pattern matching succeeded */
                  tmp16 = (mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2))))?_OMC_LIT73:_OMC_LIT74);
                  goto tmp18_done;
                }
                case 7: {
                  
                  /* Pattern matching succeeded */
                  tmp16 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 3)));
                  goto tmp18_done;
                }
                default:
                tmp18_default: OMC_LABEL_UNUSED; {
                  
                  /* Pattern matching succeeded */
                  omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT75, _args, _OMC_LIT76);
                  goto goto_17;
                  goto tmp18_done;
                }
                }
                goto tmp18_end;
                tmp18_end: ;
              }
              goto goto_17;
              goto_17:;
              goto goto_2;
              goto tmp18_done;
              tmp18_done:;
            }
          }
          _str = tmp16;

          _str_len = stringLength(_str);

          if((_str_len < _min_len))
          {
            if(_left_justified)
            {
              tmpMeta20 = stringAppend(_str,stringAppendList(omc_List_fill(threadData, _OMC_LIT77, _min_len - _str_len)));
              _str = tmpMeta20;
            }
            else
            {
              tmpMeta21 = stringAppend(stringAppendList(omc_List_fill(threadData, _OMC_LIT77, _min_len - _str_len)),_str);
              _str = tmpMeta21;
            }
          }
          tmpMeta22 = mmc_mk_box2(5, &NFExpression_STRING__desc, _str);
          tmpMeta1 = tmpMeta22;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta23;
          modelica_metatype tmpMeta24;
          modelica_metatype tmpMeta25;
          modelica_real tmp26;
          modelica_metatype tmpMeta27;
          modelica_metatype tmpMeta28;
          modelica_metatype tmpMeta29;
          modelica_integer tmp30;
          modelica_metatype tmpMeta31;
          modelica_metatype tmpMeta32;
          modelica_metatype tmpMeta33;
          modelica_integer tmp34;
          modelica_metatype tmpMeta35;
          modelica_metatype tmpMeta36;
          modelica_metatype tmpMeta37;
          modelica_integer tmp38;
          modelica_metatype tmpMeta39;
          modelica_metatype tmpMeta40;
          modelica_metatype tmpMeta41;
          modelica_metatype tmpMeta42;
          modelica_metatype tmpMeta43;
          modelica_metatype tmpMeta44;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta23 = MMC_CAR(tmp4_1);
          tmpMeta24 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta23,1,1) == 0) goto tmp3_end;
          tmpMeta25 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta23), 2));
          tmp26 = mmc_unbox_real(tmpMeta25);
          if (listEmpty(tmpMeta24)) goto tmp3_end;
          tmpMeta27 = MMC_CAR(tmpMeta24);
          tmpMeta28 = MMC_CDR(tmpMeta24);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta27,0,1) == 0) goto tmp3_end;
          tmpMeta29 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta27), 2));
          tmp30 = mmc_unbox_integer(tmpMeta29);
          if (listEmpty(tmpMeta28)) goto tmp3_end;
          tmpMeta31 = MMC_CAR(tmpMeta28);
          tmpMeta32 = MMC_CDR(tmpMeta28);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta31,0,1) == 0) goto tmp3_end;
          tmpMeta33 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta31), 2));
          tmp34 = mmc_unbox_integer(tmpMeta33);
          if (listEmpty(tmpMeta32)) goto tmp3_end;
          tmpMeta35 = MMC_CAR(tmpMeta32);
          tmpMeta36 = MMC_CDR(tmpMeta32);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta35,3,1) == 0) goto tmp3_end;
          tmpMeta37 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta35), 2));
          tmp38 = mmc_unbox_integer(tmpMeta37);
          if (!listEmpty(tmpMeta36)) goto tmp3_end;
          _r = tmp26  /* pattern as ty=Real */;
          _significant_digits = tmp30  /* pattern as ty=Integer */;
          _min_len = tmp34  /* pattern as ty=Integer */;
          _left_justified = tmp38  /* pattern as ty=Boolean */;
          /* Pattern matching succeeded */
          tmpMeta39 = stringAppend(_OMC_LIT78,(_left_justified?_OMC_LIT79:_OMC_LIT1));
          tmpMeta40 = stringAppend(tmpMeta39,intString(_min_len));
          tmpMeta41 = stringAppend(tmpMeta40,_OMC_LIT27);
          tmpMeta42 = stringAppend(tmpMeta41,intString(_significant_digits));
          tmpMeta43 = stringAppend(tmpMeta42,_OMC_LIT80);
          _format = tmpMeta43;

          _str = omc_System_sprintff(threadData, _format, _r);
          tmpMeta44 = mmc_mk_box2(5, &NFExpression_STRING__desc, _str);
          tmpMeta1 = tmpMeta44;
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta45;
          modelica_metatype tmpMeta46;
          modelica_metatype tmpMeta47;
          modelica_real tmp48;
          modelica_metatype tmpMeta49;
          modelica_metatype tmpMeta50;
          modelica_metatype tmpMeta51;
          modelica_metatype tmpMeta52;
          modelica_metatype tmpMeta53;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta45 = MMC_CAR(tmp4_1);
          tmpMeta46 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta45,1,1) == 0) goto tmp3_end;
          tmpMeta47 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta45), 2));
          tmp48 = mmc_unbox_real(tmpMeta47);
          if (listEmpty(tmpMeta46)) goto tmp3_end;
          tmpMeta49 = MMC_CAR(tmpMeta46);
          tmpMeta50 = MMC_CDR(tmpMeta46);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta49,2,1) == 0) goto tmp3_end;
          tmpMeta51 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta49), 2));
          if (!listEmpty(tmpMeta50)) goto tmp3_end;
          _r = tmp48  /* pattern as ty=Real */;
          _format = tmpMeta51;
          /* Pattern matching succeeded */
          tmpMeta52 = stringAppend(_OMC_LIT78,_format);
          _str = omc_System_sprintff(threadData, tmpMeta52, _r);
          tmpMeta53 = mmc_mk_box2(5, &NFExpression_STRING__desc, _str);
          tmpMeta1 = tmpMeta53;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSqrt(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_real tmp6;
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp6 = mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2))));
          if(!(tmp6 >= 0.0))
          {
            FILE_INFO info = {"",0,0,0,0,0};
            omc_assert(threadData, info, "Model error: Argument of sqrt(unbox(arg.value)) was %g should be >= 0", tmp6);
          }tmpMeta7 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(sqrt(tmp6)));
          tmpMeta1 = tmpMeta7;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta8;
          
          /* Pattern matching succeeded */
          tmpMeta8 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT81, tmpMeta8, _OMC_LIT82);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSkew(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype _x1 = NULL;
  modelica_metatype _x2 = NULL;
  modelica_metatype _x3 = NULL;
  modelica_metatype _y1 = NULL;
  modelica_metatype _y2 = NULL;
  modelica_metatype _y3 = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype _zero = NULL;
  modelica_boolean _literal;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _x1 has no default value.
  // _x2 has no default value.
  // _x3 has no default value.
  // _y1 has no default value.
  // _y2 has no default value.
  // _y3 has no default value.
  // _ty has no default value.
  // _zero has no default value.
  // _literal has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_integer tmp8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 4));
          tmp8 = mmc_unbox_integer(tmpMeta7);
          _ty = tmpMeta6;
          _literal = tmp8  /* pattern as ty=Boolean */;
          /* Pattern matching succeeded */
          _x1 = arrayGet((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 3))), ((modelica_integer) 1));

          _x2 = arrayGet((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 3))), ((modelica_integer) 2));

          _x3 = arrayGet((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 3))), ((modelica_integer) 3));

          _zero = omc_NFExpression_makeZero(threadData, omc_NFType_arrayElementType(threadData, _ty));

          tmpMeta9 = mmc_mk_cons(_zero, mmc_mk_cons(omc_NFExpression_negate(threadData, _x3), mmc_mk_cons(_x2, MMC_REFSTRUCTLIT(mmc_nil))));
          _y1 = omc_NFExpression_makeArray(threadData, _ty, listArray(tmpMeta9), _literal);

          tmpMeta10 = mmc_mk_cons(_x3, mmc_mk_cons(_zero, mmc_mk_cons(omc_NFExpression_negate(threadData, _x1), MMC_REFSTRUCTLIT(mmc_nil))));
          _y2 = omc_NFExpression_makeArray(threadData, _ty, listArray(tmpMeta10), _literal);

          tmpMeta11 = mmc_mk_cons(omc_NFExpression_negate(threadData, _x2), mmc_mk_cons(_x1, mmc_mk_cons(_zero, MMC_REFSTRUCTLIT(mmc_nil))));
          _y3 = omc_NFExpression_makeArray(threadData, _ty, listArray(tmpMeta11), _literal);

          _ty = omc_NFType_liftArrayLeft(threadData, _ty, omc_NFDimension_fromInteger(threadData, ((modelica_integer) 3), 1));
          tmpMeta12 = mmc_mk_cons(_y1, mmc_mk_cons(_y2, mmc_mk_cons(_y3, MMC_REFSTRUCTLIT(mmc_nil))));
          tmpMeta1 = omc_NFExpression_makeArray(threadData, _ty, listArray(tmpMeta12), _literal);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta13;
          
          /* Pattern matching succeeded */
          tmpMeta13 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT83, tmpMeta13, _OMC_LIT84);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSin(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(sin(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT85, tmpMeta7, _OMC_LIT86);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSinh(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(sinh(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT87, tmpMeta7, _OMC_LIT88);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinSign(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 4: {
          modelica_metatype tmpMeta5;
          
          /* Pattern matching succeeded */
          tmpMeta5 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(((mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))) > 0.0)?((modelica_integer) 1):((mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))) < 0.0)?((modelica_integer) -1):((modelica_integer) 0)))));
          tmpMeta1 = tmpMeta5;
          goto tmp3_done;
        }
        case 3: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(((mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))) > ((modelica_integer) 0))?((modelica_integer) 1):((mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))) < ((modelica_integer) 0))?((modelica_integer) -1):((modelica_integer) 0)))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT89, tmpMeta7, _OMC_LIT90);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinScalar(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _result = _arg;
  while(1)
  {
    if(!omc_NFExpression_isArray(threadData, _result)) break;
    _result = omc_NFExpression_arrayScalarElement(threadData, _result);
  }
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinRem(threadData_t *threadData, modelica_metatype _args, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_metatype _x = NULL;
  modelica_metatype _y = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  modelica_metatype tmpMeta5;
  modelica_metatype tmpMeta6;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _x has no default value.
  // _y has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _args;
  if (listEmpty(tmpMeta1)) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_CAR(tmpMeta1);
  tmpMeta3 = MMC_CDR(tmpMeta1);
  if (listEmpty(tmpMeta3)) MMC_THROW_INTERNAL();
  tmpMeta4 = MMC_CAR(tmpMeta3);
  tmpMeta5 = MMC_CDR(tmpMeta3);
  if (!listEmpty(tmpMeta5)) MMC_THROW_INTERNAL();
  _x = tmpMeta2;
  _y = tmpMeta4;

  { /* match expression */
    modelica_metatype tmp9_1;modelica_metatype tmp9_2;
    tmp9_1 = _x;
    tmp9_2 = _y;
    {
      volatile mmc_switch_type tmp9;
      int tmp10;
      tmp9 = 0;
      for (; tmp9 < 3; tmp9++) {
        switch (MMC_SWITCH_CAST(tmp9)) {
        case 0: {
          modelica_metatype tmpMeta11;
          modelica_string tmp12;
          modelica_string tmp13;
          modelica_integer tmp14;
          modelica_metatype tmpMeta15;
          if (mmc__uniontype__metarecord__typedef__equal(tmp9_1,0,1) == 0) goto tmp8_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp9_2,0,1) == 0) goto tmp8_end;
          
          /* Pattern matching succeeded */
          if((mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2)))) == ((modelica_integer) 0)))
          {
            if(omc_NFCeval_EvalTarget_hasInfo(threadData, _target))
            {
              tmp12 = modelica_integer_to_modelica_string(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_x), 2)))), ((modelica_integer) 0), 1 /* true */);
              tmp13 = modelica_integer_to_modelica_string(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2)))), ((modelica_integer) 0), 1 /* true */);
              tmpMeta11 = mmc_mk_cons(tmp12, mmc_mk_cons(tmp13, MMC_REFSTRUCTLIT(mmc_nil)));
              omc_Error_addSourceMessage(threadData, _OMC_LIT93, tmpMeta11, omc_NFCeval_EvalTarget_getInfo(threadData, _target));
            }

            goto goto_7;
          }
          tmp14 = mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2))));
          if (tmp14 == 0) {goto goto_7;}
          tmpMeta15 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_x), 2)))) - ((modelica_div_integer(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_x), 2)))),tmp14).quot) * (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2))))))));
          tmpMeta6 = tmpMeta15;
          goto tmp8_done;
        }
        case 1: {
          modelica_metatype tmpMeta16;
          modelica_string tmp17;
          modelica_string tmp18;
          modelica_real tmp19;
          modelica_metatype tmpMeta20;
          if (mmc__uniontype__metarecord__typedef__equal(tmp9_1,1,1) == 0) goto tmp8_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp9_2,1,1) == 0) goto tmp8_end;
          
          /* Pattern matching succeeded */
          if((mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2)))) == 0.0))
          {
            if(omc_NFCeval_EvalTarget_hasInfo(threadData, _target))
            {
              tmp17 = modelica_real_to_modelica_string(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_x), 2)))), ((modelica_integer) 6), ((modelica_integer) 0), 1 /* true */);
              tmp18 = modelica_real_to_modelica_string(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2)))), ((modelica_integer) 6), ((modelica_integer) 0), 1 /* true */);
              tmpMeta16 = mmc_mk_cons(tmp17, mmc_mk_cons(tmp18, MMC_REFSTRUCTLIT(mmc_nil)));
              omc_Error_addSourceMessage(threadData, _OMC_LIT93, tmpMeta16, omc_NFCeval_EvalTarget_getInfo(threadData, _target));
            }

            goto goto_7;
          }
          tmp19 = mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2))));
          if (tmp19 == 0.0) {goto goto_7;}
          tmpMeta20 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_x), 2)))) - ((trunc((mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_x), 2))))) / (tmp19))) * (mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2))))))));
          tmpMeta6 = tmpMeta20;
          goto tmp8_done;
        }
        case 2: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT94, _args, _OMC_LIT95);
          goto goto_7;
          goto tmp8_done;
        }
        }
        goto tmp8_end;
        tmp8_end: ;
      }
      goto goto_7;
      goto_7:;
      MMC_THROW_INTERNAL();
      goto tmp8_done;
      tmp8_done:;
    }
  }
  _result = tmpMeta6;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinPromote(threadData_t *threadData, modelica_metatype _arg, modelica_metatype _argN)
{
  modelica_metatype _result = NULL;
  modelica_integer _n;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_integer tmp3;
  modelica_metatype tmpMeta4;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _n has no default value.
  if(omc_NFExpression_isInteger(threadData, _argN))
  {
    /* Pattern-matching assignment */
    tmpMeta1 = _argN;
    if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,0,1) == 0) MMC_THROW_INTERNAL();
    tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 2));
    tmp3 = mmc_unbox_integer(tmpMeta2);
    _n = tmp3  /* pattern as ty=Integer */;

    _result = omc_NFExpression_promote(threadData, _arg, omc_NFExpression_typeOf(threadData, _arg), _n, NULL);
  }
  else
  {
    tmpMeta4 = mmc_mk_cons(_arg, mmc_mk_cons(_argN, MMC_REFSTRUCTLIT(mmc_nil)));
    omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT96, tmpMeta4, _OMC_LIT97);

    MMC_THROW_INTERNAL();
  }
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_real omc_NFCeval_evalBuiltinProductReal(threadData_t *threadData, modelica_metatype _exp, modelica_real __omcQ_24in_5Fresult)
{
  modelica_real _result;
  modelica_real tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _result = __omcQ_24in_5Fresult;
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _exp;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (_result) * (mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2)))));
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = _result;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmp1;
  _return: OMC_LABEL_UNUSED
  return _result;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_NFCeval_evalBuiltinProductReal(threadData_t *threadData, modelica_metatype _exp, modelica_metatype __omcQ_24in_5Fresult)
{
  modelica_real tmp1;
  modelica_real _result;
  modelica_metatype out_result;
  tmp1 = mmc_unbox_real(__omcQ_24in_5Fresult);
  _result = omc_NFCeval_evalBuiltinProductReal(threadData, _exp, tmp1);
  out_result = mmc_mk_rcon(_result);
  return out_result;
}

PROTECTED_FUNCTION_STATIC modelica_integer omc_NFCeval_evalBuiltinProductInt(threadData_t *threadData, modelica_metatype _exp, modelica_integer __omcQ_24in_5Fresult)
{
  modelica_integer _result;
  modelica_integer tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _result = __omcQ_24in_5Fresult;
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _exp;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (_result) * (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2)))));
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = _result;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmp1;
  _return: OMC_LABEL_UNUSED
  return _result;
}
PROTECTED_FUNCTION_STATIC modelica_metatype boxptr_NFCeval_evalBuiltinProductInt(threadData_t *threadData, modelica_metatype _exp, modelica_metatype __omcQ_24in_5Fresult)
{
  modelica_integer tmp1;
  modelica_integer _result;
  modelica_metatype out_result;
  tmp1 = mmc_unbox_integer(__omcQ_24in_5Fresult);
  _result = omc_NFCeval_evalBuiltinProductInt(threadData, _exp, tmp1);
  out_result = mmc_mk_icon(_result);
  return out_result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinProduct(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!omc_NFExpression_isArray(threadData, _arg)) goto tmp3_end;
          { /* match expression */
            modelica_metatype tmp9_1;
            tmp9_1 = omc_NFType_arrayElementType(threadData, omc_NFExpression_typeOf(threadData, _arg));
            {
              int tmp9;
              {
                switch (MMC_SWITCH_CAST(valueConstructor(tmp9_1))) {
                case 3: {
                  modelica_metatype tmpMeta10;
                  
                  /* Pattern matching succeeded */
                  tmpMeta10 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, omc_NFExpression_fold(threadData, _arg, boxvar_NFCeval_evalBuiltinProductInt, mmc_mk_integer(((modelica_integer) 1))));
                  tmpMeta6 = tmpMeta10;
                  goto tmp8_done;
                }
                case 4: {
                  modelica_metatype tmpMeta11;
                  
                  /* Pattern matching succeeded */
                  tmpMeta11 = mmc_mk_box2(4, &NFExpression_REAL__desc, omc_NFExpression_fold(threadData, _arg, boxvar_NFCeval_evalBuiltinProductReal, _OMC_LIT98));
                  tmpMeta6 = tmpMeta11;
                  goto tmp8_done;
                }
                default:
                tmp8_default: OMC_LABEL_UNUSED; {
                  modelica_metatype tmpMeta12;
                  
                  /* Pattern matching succeeded */
                  tmpMeta12 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
                  omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT99, tmpMeta12, _OMC_LIT100);
                  goto goto_7;
                  goto tmp8_done;
                }
                }
                goto tmp8_end;
                tmp8_end: ;
              }
              goto goto_7;
              goto_7:;
              goto goto_2;
              goto tmp8_done;
              tmp8_done:;
            }
          }tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta13;
          /* Pattern matching succeeded */
          tmpMeta13 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT99, tmpMeta13, _OMC_LIT101);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinOnes(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  tmpMeta1 = mmc_mk_cons(_OMC_LIT102, _args);
  _result = omc_NFCeval_evalBuiltinFill(threadData, tmpMeta1);
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMod(threadData_t *threadData, modelica_metatype _args, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_metatype _x = NULL;
  modelica_metatype _y = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  modelica_metatype tmpMeta5;
  modelica_metatype tmpMeta6;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _x has no default value.
  // _y has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _args;
  if (listEmpty(tmpMeta1)) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_CAR(tmpMeta1);
  tmpMeta3 = MMC_CDR(tmpMeta1);
  if (listEmpty(tmpMeta3)) MMC_THROW_INTERNAL();
  tmpMeta4 = MMC_CAR(tmpMeta3);
  tmpMeta5 = MMC_CDR(tmpMeta3);
  if (!listEmpty(tmpMeta5)) MMC_THROW_INTERNAL();
  _x = tmpMeta2;
  _y = tmpMeta4;

  { /* match expression */
    modelica_metatype tmp9_1;modelica_metatype tmp9_2;
    tmp9_1 = _x;
    tmp9_2 = _y;
    {
      volatile mmc_switch_type tmp9;
      int tmp10;
      tmp9 = 0;
      for (; tmp9 < 3; tmp9++) {
        switch (MMC_SWITCH_CAST(tmp9)) {
        case 0: {
          modelica_metatype tmpMeta11;
          modelica_string tmp12;
          modelica_string tmp13;
          modelica_metatype tmpMeta14;
          if (mmc__uniontype__metarecord__typedef__equal(tmp9_1,0,1) == 0) goto tmp8_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp9_2,0,1) == 0) goto tmp8_end;
          
          /* Pattern matching succeeded */
          if((mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2)))) == ((modelica_integer) 0)))
          {
            if(omc_NFCeval_EvalTarget_hasInfo(threadData, _target))
            {
              tmp12 = modelica_integer_to_modelica_string(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_x), 2)))), ((modelica_integer) 0), 1 /* true */);
              tmp13 = modelica_integer_to_modelica_string(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2)))), ((modelica_integer) 0), 1 /* true */);
              tmpMeta11 = mmc_mk_cons(tmp12, mmc_mk_cons(tmp13, MMC_REFSTRUCTLIT(mmc_nil)));
              omc_Error_addSourceMessage(threadData, _OMC_LIT105, tmpMeta11, omc_NFCeval_EvalTarget_getInfo(threadData, _target));
            }

            goto goto_7;
          }
          tmpMeta14 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(modelica_integer_mod(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_x), 2)))), mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2)))))));
          tmpMeta6 = tmpMeta14;
          goto tmp8_done;
        }
        case 1: {
          modelica_metatype tmpMeta15;
          modelica_string tmp16;
          modelica_string tmp17;
          modelica_metatype tmpMeta18;
          if (mmc__uniontype__metarecord__typedef__equal(tmp9_1,1,1) == 0) goto tmp8_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp9_2,1,1) == 0) goto tmp8_end;
          
          /* Pattern matching succeeded */
          if((mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2)))) == 0.0))
          {
            if(omc_NFCeval_EvalTarget_hasInfo(threadData, _target))
            {
              tmp16 = modelica_real_to_modelica_string(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_x), 2)))), ((modelica_integer) 6), ((modelica_integer) 0), 1 /* true */);
              tmp17 = modelica_real_to_modelica_string(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2)))), ((modelica_integer) 6), ((modelica_integer) 0), 1 /* true */);
              tmpMeta15 = mmc_mk_cons(tmp16, mmc_mk_cons(tmp17, MMC_REFSTRUCTLIT(mmc_nil)));
              omc_Error_addSourceMessage(threadData, _OMC_LIT105, tmpMeta15, omc_NFCeval_EvalTarget_getInfo(threadData, _target));
            }

            goto goto_7;
          }
          tmpMeta18 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(modelica_real_mod(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_x), 2)))), mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_y), 2)))))));
          tmpMeta6 = tmpMeta18;
          goto tmp8_done;
        }
        case 2: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT106, _args, _OMC_LIT107);
          goto goto_7;
          goto tmp8_done;
        }
        }
        goto tmp8_end;
        tmp8_end: ;
      }
      goto goto_7;
      goto_7:;
      MMC_THROW_INTERNAL();
      goto tmp8_done;
      tmp8_done:;
    }
  }
  _result = tmpMeta6;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMin2(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 7; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = ((mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) > mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))))?_exp2:_exp1);
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = ((mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) > mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))))?_exp2:_exp1);
          goto tmp3_done;
        }
        case 2: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,3,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = ((mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) && !mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))))?_exp2:_exp1);
          goto tmp3_done;
        }
        case 3: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,4,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,4,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = ((mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 4)))) > mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 4)))))?_exp2:_exp1);
          goto tmp3_done;
        }
        case 4: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = _exp2;
          goto tmp3_done;
        }
        case 5: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,30,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = _exp1;
          goto tmp3_done;
        }
        case 6: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_cons(_exp1, mmc_mk_cons(_exp2, MMC_REFSTRUCTLIT(mmc_nil)));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT108, tmpMeta6, _OMC_LIT109);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMin(threadData_t *threadData, modelica_metatype _args, modelica_metatype _fn)
{
  modelica_metatype _result = NULL;
  modelica_metatype _e1 = NULL;
  modelica_metatype _e2 = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _e1 has no default value.
  // _e2 has no default value.
  // _ty has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 3; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (listEmpty(tmpMeta7)) goto tmp3_end;
          tmpMeta8 = MMC_CAR(tmpMeta7);
          tmpMeta9 = MMC_CDR(tmpMeta7);
          if (!listEmpty(tmpMeta9)) goto tmp3_end;
          _e1 = tmpMeta6;
          _e2 = tmpMeta8;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinMin2(threadData, _e1, _e2);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta10 = MMC_CAR(tmp4_1);
          tmpMeta11 = MMC_CDR(tmp4_1);
          if (!listEmpty(tmpMeta11)) goto tmp3_end;
          _e1 = tmpMeta10;
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!omc_NFExpression_isArray(threadData, _e1)) goto tmp3_end;
          _ty = omc_NFExpression_typeOf(threadData, _e1);

          tmpMeta12 = mmc_mk_box2(33, &NFExpression_EMPTY__desc, _ty);
          _result = omc_NFExpression_fold(threadData, _e1, boxvar_NFCeval_evalBuiltinMin2, tmpMeta12);

          if(omc_NFExpression_isEmpty(threadData, _result))
          {
            _result = omc_NFExpression_makeMaxValue(threadData, omc_NFType_arrayElementType(threadData, _ty));
          }
          tmpMeta1 = _result;
          goto tmp3_done;
        }
        case 2: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT110, _args, _OMC_LIT111);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalPositiveMax(threadData_t *threadData, modelica_metatype _flow_exp, modelica_metatype _eps)
{
  modelica_metatype _result = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  _result = (omc_NFExpression_isNonPositive(threadData, _flow_exp)?omc_NFExpression_makeZero(threadData, omc_NFExpression_typeOf(threadData, _flow_exp)):omc_NFCeval_evalBuiltinMax2(threadData, _flow_exp, _eps));
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMax2(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 7; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = ((mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) < mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))))?_exp2:_exp1);
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = ((mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) < mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))))?_exp2:_exp1);
          goto tmp3_done;
        }
        case 2: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,3,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = ((!mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) && mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))))?_exp2:_exp1);
          goto tmp3_done;
        }
        case 3: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,4,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,4,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = ((mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 4)))) < mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 4)))))?_exp2:_exp1);
          goto tmp3_done;
        }
        case 4: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = _exp2;
          goto tmp3_done;
        }
        case 5: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,30,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = _exp1;
          goto tmp3_done;
        }
        case 6: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_cons(_exp1, mmc_mk_cons(_exp2, MMC_REFSTRUCTLIT(mmc_nil)));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT112, tmpMeta6, _OMC_LIT113);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMax(threadData_t *threadData, modelica_metatype _args, modelica_metatype _fn)
{
  modelica_metatype _result = NULL;
  modelica_metatype _e1 = NULL;
  modelica_metatype _e2 = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _e1 has no default value.
  // _e2 has no default value.
  // _ty has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 3; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (listEmpty(tmpMeta7)) goto tmp3_end;
          tmpMeta8 = MMC_CAR(tmpMeta7);
          tmpMeta9 = MMC_CDR(tmpMeta7);
          if (!listEmpty(tmpMeta9)) goto tmp3_end;
          _e1 = tmpMeta6;
          _e2 = tmpMeta8;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinMax2(threadData, _e1, _e2);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta10 = MMC_CAR(tmp4_1);
          tmpMeta11 = MMC_CDR(tmp4_1);
          if (!listEmpty(tmpMeta11)) goto tmp3_end;
          _e1 = tmpMeta10;
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!omc_NFExpression_isArray(threadData, _e1)) goto tmp3_end;
          _ty = omc_NFExpression_typeOf(threadData, _e1);

          tmpMeta12 = mmc_mk_box2(33, &NFExpression_EMPTY__desc, _ty);
          _result = omc_NFExpression_fold(threadData, _e1, boxvar_NFCeval_evalBuiltinMax2, tmpMeta12);

          if(omc_NFExpression_isEmpty(threadData, _result))
          {
            _result = omc_NFExpression_makeMinValue(threadData, omc_NFType_arrayElementType(threadData, _ty));
          }
          tmpMeta1 = _result;
          goto tmp3_done;
        }
        case 2: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT114, _args, _OMC_LIT115);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMatrix2(threadData_t *threadData, modelica_metatype _arg, modelica_metatype _ty)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFExpression_makeArray(threadData, _ty, omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 3))), boxvar_NFExpression_toScalar), mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 4)))));
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT116, tmpMeta6, _OMC_LIT117);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

static modelica_metatype closure5_NFCeval_evalBuiltinMatrix2(threadData_t *thData, modelica_metatype closure, modelica_metatype arg)
{
  modelica_metatype ty = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBuiltinMatrix2(thData, arg, ty);
}
PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinMatrix(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      modelica_integer _dim_count;
      modelica_metatype _dim1 = NULL;
      modelica_metatype _dim2 = NULL;
      modelica_metatype _ty = NULL;
      modelica_metatype _arr = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _dim_count has no default value.
      // _dim1 has no default value.
      // _dim2 has no default value.
      // _ty has no default value.
      // _arr has no default value.
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          
          _ty = tmpMeta6;
          /* Pattern matching succeeded */
          _dim_count = omc_NFType_dimensionCount(threadData, _ty);

          if((_dim_count < ((modelica_integer) 2)))
          {
            _result = omc_NFExpression_promote(threadData, _arg, _ty, ((modelica_integer) 2), NULL);
          }
          else
          {
            if((_dim_count == ((modelica_integer) 2)))
            {
              _result = _arg;
            }
            else
            {
              /* Pattern-matching assignment */
              tmpMeta7 = omc_NFType_arrayDims(threadData, _ty);
              if (listEmpty(tmpMeta7)) goto goto_2;
              tmpMeta8 = MMC_CAR(tmpMeta7);
              tmpMeta9 = MMC_CDR(tmpMeta7);
              if (listEmpty(tmpMeta9)) goto goto_2;
              tmpMeta10 = MMC_CAR(tmpMeta9);
              tmpMeta11 = MMC_CDR(tmpMeta9);
              _dim1 = tmpMeta8;
              _dim2 = tmpMeta10;

              _ty = omc_NFType_liftArrayLeft(threadData, omc_NFType_arrayElementType(threadData, _ty), _dim2);

              tmpMeta12 = mmc_mk_box1(0, _ty);
              _arr = omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 3))), (modelica_fnptr) mmc_mk_box2(0,closure5_NFCeval_evalBuiltinMatrix2,tmpMeta12));

              _ty = omc_NFType_liftArrayLeft(threadData, _ty, _dim1);

              _result = omc_NFExpression_makeArray(threadData, _ty, _arr, 0 /* false */);
            }
          }
          tmpMeta1 = _result;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta13;
          
          /* Pattern matching succeeded */
          _ty = omc_NFExpression_typeOf(threadData, _arg);

          if(omc_NFType_isScalar(threadData, _ty))
          {
            _result = omc_NFExpression_promote(threadData, _arg, _ty, ((modelica_integer) 2), NULL);
          }
          else
          {
            tmpMeta13 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
            omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT118, tmpMeta13, _OMC_LIT119);

            goto goto_2;
          }
          tmpMeta1 = _result;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinLog(threadData_t *threadData, modelica_metatype _arg, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_real _x;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _x has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_real tmp7;
          modelica_metatype tmpMeta8;
          modelica_string tmp9;
          modelica_real tmp10;
          modelica_metatype tmpMeta11;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmp7 = mmc_unbox_real(tmpMeta6);
          _x = tmp7  /* pattern as ty=Real */;
          /* Pattern matching succeeded */
          if((_x <= 0.0))
          {
            if(omc_NFCeval_EvalTarget_hasInfo(threadData, _target))
            {
              tmp9 = modelica_real_to_modelica_string(_x, ((modelica_integer) 6), ((modelica_integer) 0), 1 /* true */);
              tmpMeta8 = mmc_mk_cons(tmp9, mmc_mk_cons(_OMC_LIT123, mmc_mk_cons(_OMC_LIT124, MMC_REFSTRUCTLIT(mmc_nil))));
              omc_Error_addSourceMessage(threadData, _OMC_LIT122, tmpMeta8, omc_NFCeval_EvalTarget_getInfo(threadData, _target));
            }

            goto goto_2;
          }
          tmp10 = _x;
          if(!(tmp10 > 0.0))
          {
            FILE_INFO info = {"",0,0,0,0,0};
            omc_assert(threadData, info, "Model error: Argument of log(x) was %g should be > 0", tmp10);
          }tmpMeta11 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(log(tmp10)));
          tmpMeta1 = tmpMeta11;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta12;
          
          /* Pattern matching succeeded */
          tmpMeta12 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT125, tmpMeta12, _OMC_LIT126);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinLog10(threadData_t *threadData, modelica_metatype _arg, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_real _x;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _x has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_real tmp7;
          modelica_metatype tmpMeta8;
          modelica_string tmp9;
          modelica_real tmp10;
          modelica_metatype tmpMeta11;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmp7 = mmc_unbox_real(tmpMeta6);
          _x = tmp7  /* pattern as ty=Real */;
          /* Pattern matching succeeded */
          if((_x <= 0.0))
          {
            if(omc_NFCeval_EvalTarget_hasInfo(threadData, _target))
            {
              tmp9 = modelica_real_to_modelica_string(_x, ((modelica_integer) 6), ((modelica_integer) 0), 1 /* true */);
              tmpMeta8 = mmc_mk_cons(tmp9, mmc_mk_cons(_OMC_LIT127, mmc_mk_cons(_OMC_LIT124, MMC_REFSTRUCTLIT(mmc_nil))));
              omc_Error_addSourceMessage(threadData, _OMC_LIT122, tmpMeta8, omc_NFCeval_EvalTarget_getInfo(threadData, _target));
            }

            goto goto_2;
          }
          tmp10 = _x;
          if(!(tmp10 > 0.0))
          {
            FILE_INFO info = {"",0,0,0,0,0};
            omc_assert(threadData, info, "Model error: Argument of log10(x) was %g should be > 0", tmp10);
          }tmpMeta11 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(log10(tmp10)));
          tmpMeta1 = tmpMeta11;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta12;
          
          /* Pattern matching succeeded */
          tmpMeta12 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT128, tmpMeta12, _OMC_LIT129);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinIntegerEnum(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,4,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 4))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT130, tmpMeta7, _OMC_LIT131);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinInteger(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 3: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = _arg;
          goto tmp3_done;
        }
        case 4: {
          modelica_metatype tmpMeta5;
          
          /* Pattern matching succeeded */
          tmpMeta5 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(((modelica_integer)floor(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2))))))));
          tmpMeta1 = tmpMeta5;
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT132, tmpMeta6, _OMC_LIT133);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinIdentity(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFExpression_makeIdentityMatrix(threadData, mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))), _OMC_LIT26);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT134, tmpMeta6, _OMC_LIT135);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

PROTECTED_FUNCTION_STATIC modelica_metatype omc_NFCeval_evalBuiltinFloor(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(floor(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT136, tmpMeta7, _OMC_LIT137);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinFill(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_metatype _fill_exp = NULL;
  modelica_metatype _dims = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _fill_exp has no default value.
  // _dims has no default value.
  { /* matchcontinue expression */
    {
      volatile mmc_switch_type tmp3;
      int tmp4;
      tmp3 = 0;
      MMC_TRY_INTERNAL(mmc_jumper)
      tmp2_top:
      threadData->mmc_jumper = &new_mmc_jumper;
      for (; tmp3 < 2; tmp3++) {
        switch (MMC_SWITCH_CAST(tmp3)) {
        case 0: {
          modelica_metatype tmpMeta5;
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          /* Pattern matching succeeded */
          /* Pattern-matching assignment */
          tmpMeta5 = _args;
          if (listEmpty(tmpMeta5)) goto goto_1;
          tmpMeta6 = MMC_CAR(tmpMeta5);
          tmpMeta7 = MMC_CDR(tmpMeta5);
          _fill_exp = tmpMeta6;
          _dims = tmpMeta7;

          _result = omc_NFExpression_fillArgs(threadData, _fill_exp, _dims);
          goto tmp2_done;
        }
        case 1: {
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT138, _args, _OMC_LIT139);

          goto goto_1;
          goto tmp2_done;
        }
        }
        goto tmp2_end;
        tmp2_end: ;
      }
      goto goto_1;
      tmp2_done:
      (void)tmp3;
      MMC_RESTORE_INTERNAL(mmc_jumper);
      goto tmp2_done2;
      goto_1:;
      MMC_CATCH_INTERNAL(mmc_jumper);
      if (++tmp3 < 2) {
        goto tmp2_top;
      }
      MMC_THROW_INTERNAL();
      tmp2_done2:;
    }
  }
  ;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinExp(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(exp(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT140, tmpMeta7, _OMC_LIT141);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinDiv(threadData_t *threadData, modelica_metatype _args, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_real _rx;
  modelica_real _ry;
  modelica_integer _ix;
  modelica_integer _iy;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _rx has no default value.
  // _ry has no default value.
  // _ix has no default value.
  // _iy has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 3; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_integer tmp9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_integer tmp13;
          modelica_metatype tmpMeta14;
          modelica_string tmp15;
          modelica_string tmp16;
          modelica_integer tmp17;
          modelica_metatype tmpMeta18;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,0,1) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 2));
          tmp9 = mmc_unbox_integer(tmpMeta8);
          if (listEmpty(tmpMeta7)) goto tmp3_end;
          tmpMeta10 = MMC_CAR(tmpMeta7);
          tmpMeta11 = MMC_CDR(tmpMeta7);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta10,0,1) == 0) goto tmp3_end;
          tmpMeta12 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta10), 2));
          tmp13 = mmc_unbox_integer(tmpMeta12);
          if (!listEmpty(tmpMeta11)) goto tmp3_end;
          _ix = tmp9  /* pattern as ty=Integer */;
          _iy = tmp13  /* pattern as ty=Integer */;
          /* Pattern matching succeeded */
          if((_iy == ((modelica_integer) 0)))
          {
            if(omc_NFCeval_EvalTarget_hasInfo(threadData, _target))
            {
              tmp15 = modelica_integer_to_modelica_string(_ix, ((modelica_integer) 0), 1 /* true */);
              tmp16 = modelica_integer_to_modelica_string(_iy, ((modelica_integer) 0), 1 /* true */);
              tmpMeta14 = mmc_mk_cons(tmp15, mmc_mk_cons(tmp16, MMC_REFSTRUCTLIT(mmc_nil)));
              omc_Error_addSourceMessage(threadData, _OMC_LIT144, tmpMeta14, omc_NFCeval_EvalTarget_getInfo(threadData, _target));
            }

            goto goto_2;
          }
          tmp17 = _iy;
          if (tmp17 == 0) {goto goto_2;}
          tmpMeta18 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(modelica_div_integer(_ix,tmp17).quot));
          tmpMeta1 = tmpMeta18;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta19;
          modelica_metatype tmpMeta20;
          modelica_metatype tmpMeta21;
          modelica_real tmp22;
          modelica_metatype tmpMeta23;
          modelica_metatype tmpMeta24;
          modelica_metatype tmpMeta25;
          modelica_real tmp26;
          modelica_metatype tmpMeta27;
          modelica_string tmp28;
          modelica_string tmp29;
          modelica_real tmp30;
          modelica_metatype tmpMeta31;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta19 = MMC_CAR(tmp4_1);
          tmpMeta20 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta19,1,1) == 0) goto tmp3_end;
          tmpMeta21 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta19), 2));
          tmp22 = mmc_unbox_real(tmpMeta21);
          if (listEmpty(tmpMeta20)) goto tmp3_end;
          tmpMeta23 = MMC_CAR(tmpMeta20);
          tmpMeta24 = MMC_CDR(tmpMeta20);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta23,1,1) == 0) goto tmp3_end;
          tmpMeta25 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta23), 2));
          tmp26 = mmc_unbox_real(tmpMeta25);
          if (!listEmpty(tmpMeta24)) goto tmp3_end;
          _rx = tmp22  /* pattern as ty=Real */;
          _ry = tmp26  /* pattern as ty=Real */;
          /* Pattern matching succeeded */
          if((_ry == 0.0))
          {
            if(omc_NFCeval_EvalTarget_hasInfo(threadData, _target))
            {
              tmp28 = modelica_real_to_modelica_string(_rx, ((modelica_integer) 6), ((modelica_integer) 0), 1 /* true */);
              tmp29 = modelica_real_to_modelica_string(_ry, ((modelica_integer) 6), ((modelica_integer) 0), 1 /* true */);
              tmpMeta27 = mmc_mk_cons(tmp28, mmc_mk_cons(tmp29, MMC_REFSTRUCTLIT(mmc_nil)));
              omc_Error_addSourceMessage(threadData, _OMC_LIT144, tmpMeta27, omc_NFCeval_EvalTarget_getInfo(threadData, _target));
            }

            goto goto_2;
          }

          tmp30 = _ry;
          if (tmp30 == 0) {goto goto_2;}
          _rx = (_rx) / tmp30;
          tmpMeta31 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(((_rx < 0.0)?ceil(_rx):floor(_rx))));
          tmpMeta1 = tmpMeta31;
          goto tmp3_done;
        }
        case 2: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT145, _args, _OMC_LIT146);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinDiagonal(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype _elem_ty = NULL;
  modelica_metatype _row_ty = NULL;
  modelica_metatype _zero = NULL;
  modelica_metatype _exp = NULL;
  modelica_metatype _elems = NULL;
  modelica_metatype _row = NULL;
  modelica_metatype _rows = NULL;
  modelica_metatype tmpMeta1;
  modelica_integer _n;
  modelica_integer _i;
  modelica_boolean _e_lit;
  modelica_boolean _arg_lit;
  modelica_metatype _arr_zero = NULL;
  modelica_metatype _arr_row = NULL;
  modelica_metatype _arr_rows = NULL;
  modelica_metatype tmpMeta2;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _elem_ty has no default value.
  // _row_ty has no default value.
  // _zero has no default value.
  // _exp has no default value.
  // _elems has no default value.
  // _row has no default value.
  tmpMeta1 = MMC_REFSTRUCTLIT(mmc_nil);
  _rows = tmpMeta1;
  // _n has no default value.
  _i = ((modelica_integer) 1);
  // _e_lit has no default value.
  _arg_lit = 1 /* true */;
  // _arr_zero has no default value.
  // _arr_row has no default value.
  // _arr_rows has no default value.
  { /* match expression */
    modelica_metatype tmp5_1;
    tmp5_1 = _arg;
    {
      volatile mmc_switch_type tmp5;
      int tmp6;
      tmp5 = 0;
      for (; tmp5 < 3; tmp5++) {
        switch (MMC_SWITCH_CAST(tmp5)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp5_1,8,3) == 0) goto tmp4_end;
          
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!(arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 3)))) == ((modelica_integer) 0))) goto tmp4_end;
          tmpMeta2 = _arg;
          goto tmp4_done;
        }
        case 1: {
          modelica_integer tmp7;
          modelica_integer tmp8;
          modelica_integer tmp9;
          if (mmc__uniontype__metarecord__typedef__equal(tmp5_1,8,3) == 0) goto tmp4_end;
          
          /* Pattern matching succeeded */
          _n = arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 3))));

          _elem_ty = omc_NFType_unliftArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2))));

          _row_ty = omc_NFType_liftArrayLeft(threadData, _elem_ty, omc_NFDimension_fromInteger(threadData, _n, 1));

          _zero = omc_NFExpression_makeZero(threadData, _elem_ty);

          _arr_zero = arrayCreate(_n, _zero);

          _arr_rows = arrayCreateNoInit(_n, _zero);

          tmp7 = ((modelica_integer) 1); tmp8 = 1; tmp9 = _n;
          if(!(((tmp8 > 0) && (tmp7 > tmp9)) || ((tmp8 < 0) && (tmp7 < tmp9))))
          {
            modelica_integer _i;
            for(_i = ((modelica_integer) 1); in_range_integer(_i, tmp7, tmp9); _i += tmp8)
            {
              _arr_row = arrayCopy(_arr_zero);

              _exp = arrayGetNoBoundsChecking((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 3))), _i);

              _e_lit = omc_NFExpression_isLiteral(threadData, _exp);

              _arg_lit = (_arg_lit && _e_lit);

              arrayUpdateNoBoundsChecking(_arr_row, _i, _exp);

              _exp = omc_NFExpression_makeArray(threadData, _row_ty, _arr_row, _e_lit);

              arrayUpdateNoBoundsChecking(_arr_rows, _i, _exp);
            }
          }
          tmpMeta2 = omc_NFExpression_makeArray(threadData, omc_NFType_liftArrayLeft(threadData, _row_ty, omc_NFDimension_fromInteger(threadData, _n, 1)), _arr_rows, _arg_lit);
          goto tmp4_done;
        }
        case 2: {
          modelica_metatype tmpMeta10;
          
          /* Pattern matching succeeded */
          tmpMeta10 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT147, tmpMeta10, _OMC_LIT148);
          goto goto_3;
          goto tmp4_done;
        }
        }
        goto tmp4_end;
        tmp4_end: ;
      }
      goto goto_3;
      goto_3:;
      MMC_THROW_INTERNAL();
      goto tmp4_done;
      tmp4_done:;
    }
  }
  _result = tmpMeta2;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinDer(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  _result = omc_NFExpression_fillType(threadData, omc_NFExpression_typeOf(threadData, _arg), _OMC_LIT149);
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinCos(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(cos(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT150, tmpMeta7, _OMC_LIT151);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinCosh(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(cosh(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT152, tmpMeta7, _OMC_LIT153);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinCeil(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(ceil(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT154, tmpMeta7, _OMC_LIT155);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinCat(threadData_t *threadData, modelica_metatype _argN, modelica_metatype _args, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_integer _n;
  modelica_integer _nd;
  modelica_integer _sz;
  modelica_metatype _ty = NULL;
  modelica_metatype _es = NULL;
  modelica_metatype _dims = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_integer tmp3;
  modelica_metatype tmpMeta4;
  modelica_string tmp5;
  modelica_string tmp6;
  modelica_metatype tmpMeta7;
  modelica_metatype tmpMeta8;
  modelica_metatype tmpMeta12;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _n has no default value.
  // _nd has no default value.
  // _sz has no default value.
  // _ty has no default value.
  // _es has no default value.
  // _dims has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _argN;
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,0,1) == 0) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 2));
  tmp3 = mmc_unbox_integer(tmpMeta2);
  _n = tmp3  /* pattern as ty=Integer */;

  _ty = omc_NFExpression_typeOf(threadData, listHead(_args));

  _nd = omc_NFType_dimensionCount(threadData, _ty);

  if(((_n > _nd) || (_n < ((modelica_integer) 1))))
  {
    if(omc_NFCeval_EvalTarget_hasInfo(threadData, _target))
    {
      tmp5 = modelica_integer_to_modelica_string(_n, ((modelica_integer) 0), 1 /* true */);
      tmp6 = modelica_integer_to_modelica_string(_nd, ((modelica_integer) 0), 1 /* true */);
      tmpMeta7 = stringAppend(_OMC_LIT157,tmp6);
      tmpMeta4 = mmc_mk_cons(tmp5, mmc_mk_cons(_OMC_LIT156, mmc_mk_cons(tmpMeta7, MMC_REFSTRUCTLIT(mmc_nil))));
      omc_Error_addSourceMessage(threadData, _OMC_LIT122, tmpMeta4, omc_NFCeval_EvalTarget_getInfo(threadData, _target));
    }

    MMC_THROW_INTERNAL();
  }

  {
    modelica_metatype __omcQ_24tmpVar5;
    modelica_metatype* tmp9;
    modelica_metatype tmpMeta10;
    modelica_metatype __omcQ_24tmpVar4;
    modelica_integer tmp11;
    modelica_metatype _e_loopVar = 0;
    modelica_metatype _e;
    _e_loopVar = _args;
    tmpMeta10 = MMC_REFSTRUCTLIT(mmc_nil);
    __omcQ_24tmpVar5 = tmpMeta10; /* defaultValue */
    tmp9 = &__omcQ_24tmpVar5;
    while(1) {
      tmp11 = 1;
      while (!listEmpty(_e_loopVar)) {
        _e = MMC_CAR(_e_loopVar);
        _e_loopVar = MMC_CDR(_e_loopVar);
        if ((!omc_NFExpression_isEmptyArray(threadData, _e))) {
          tmp11--;
          break;
        }
      }
      if (tmp11 == 0) {
        __omcQ_24tmpVar4 = _e;
        *tmp9 = mmc_mk_cons(__omcQ_24tmpVar4,0);
        tmp9 = &MMC_CDR(*tmp9);
      } else if (tmp11 == 1) {
        break;
      } else {
        MMC_THROW_INTERNAL();
      }
    }
    *tmp9 = mmc_mk_nil();
    tmpMeta8 = __omcQ_24tmpVar5;
  }
  _es = tmpMeta8;

  _sz = listLength(_es);

  if((_sz == ((modelica_integer) 0)))
  {
    _result = listHead(_args);
  }
  else
  {
    if((_sz == ((modelica_integer) 1)))
    {
      _result = listHead(_es);
    }
    else
    {
      _es = omc_ExpressionSimplify_evalCat(threadData, _n, _es, boxvar_NFExpression_arrayElementList, boxvar_NFExpression_toString ,&_dims);

      {
        modelica_metatype __omcQ_24tmpVar7;
        modelica_metatype* tmp13;
        modelica_metatype tmpMeta14;
        modelica_metatype __omcQ_24tmpVar6;
        modelica_integer tmp15;
        modelica_metatype _d_loopVar = 0;
        modelica_metatype _d;
        _d_loopVar = _dims;
        tmpMeta14 = MMC_REFSTRUCTLIT(mmc_nil);
        __omcQ_24tmpVar7 = tmpMeta14; /* defaultValue */
        tmp13 = &__omcQ_24tmpVar7;
        while(1) {
          tmp15 = 1;
          if (!listEmpty(_d_loopVar)) {
            _d = MMC_CAR(_d_loopVar);
            _d_loopVar = MMC_CDR(_d_loopVar);
            tmp15--;
          }
          if (tmp15 == 0) {
            __omcQ_24tmpVar6 = omc_NFDimension_fromInteger(threadData, mmc_unbox_integer(_d), 1);
            *tmp13 = mmc_mk_cons(__omcQ_24tmpVar6,0);
            tmp13 = &MMC_CDR(*tmp13);
          } else if (tmp15 == 1) {
            break;
          } else {
            MMC_THROW_INTERNAL();
          }
        }
        *tmp13 = mmc_mk_nil();
        tmpMeta12 = __omcQ_24tmpVar7;
      }
      _result = omc_NFExpression_arrayFromList(threadData, _es, omc_NFExpression_typeOf(threadData, listHead(_es)), tmpMeta12);
    }
  }
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinAtan(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(atan(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT158, tmpMeta7, _OMC_LIT159);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinAtan2(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_real _y;
  modelica_real _x;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _y has no default value.
  // _x has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _args;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_real tmp9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_real tmp13;
          modelica_metatype tmpMeta14;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,1,1) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 2));
          tmp9 = mmc_unbox_real(tmpMeta8);
          if (listEmpty(tmpMeta7)) goto tmp3_end;
          tmpMeta10 = MMC_CAR(tmpMeta7);
          tmpMeta11 = MMC_CDR(tmpMeta7);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta10,1,1) == 0) goto tmp3_end;
          tmpMeta12 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta10), 2));
          tmp13 = mmc_unbox_real(tmpMeta12);
          if (!listEmpty(tmpMeta11)) goto tmp3_end;
          _y = tmp9  /* pattern as ty=Real */;
          _x = tmp13  /* pattern as ty=Real */;
          /* Pattern matching succeeded */
          tmpMeta14 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(atan2(_y, _x)));
          tmpMeta1 = tmpMeta14;
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT160, _args, _OMC_LIT161);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinAsin(threadData_t *threadData, modelica_metatype _arg, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_real _x;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _x has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_real tmp7;
          modelica_metatype tmpMeta8;
          modelica_string tmp9;
          modelica_real tmp10;
          modelica_metatype tmpMeta11;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmp7 = mmc_unbox_real(tmpMeta6);
          _x = tmp7  /* pattern as ty=Real */;
          /* Pattern matching succeeded */
          if(((_x < -1.0) || (_x > 1.0)))
          {
            if(omc_NFCeval_EvalTarget_hasInfo(threadData, _target))
            {
              tmp9 = modelica_real_to_modelica_string(_x, ((modelica_integer) 6), ((modelica_integer) 0), 1 /* true */);
              tmpMeta8 = mmc_mk_cons(tmp9, mmc_mk_cons(_OMC_LIT162, mmc_mk_cons(_OMC_LIT163, MMC_REFSTRUCTLIT(mmc_nil))));
              omc_Error_addSourceMessage(threadData, _OMC_LIT122, tmpMeta8, omc_NFCeval_EvalTarget_getInfo(threadData, _target));
            }

            goto goto_2;
          }
          tmp10 = _x;
          if(!(tmp10 >= -1.0 && tmp10 <= 1.0))
          {
            FILE_INFO info = {"",0,0,0,0,0};
            omc_assert(threadData, info, "Model error: Argument of asin(x) outside the domain -1.0 <= %g <= 1.0", tmp10);
          }tmpMeta11 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(asin(tmp10)));
          tmpMeta1 = tmpMeta11;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta12;
          
          /* Pattern matching succeeded */
          tmpMeta12 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT164, tmpMeta12, _OMC_LIT165);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinArray(threadData_t *threadData, modelica_metatype _args)
{
  modelica_metatype _result = NULL;
  modelica_metatype _ty = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _ty has no default value.
  _ty = omc_NFExpression_typeOf(threadData, listHead(_args));

  _ty = omc_NFType_liftArrayLeft(threadData, _ty, omc_NFDimension_fromInteger(threadData, listLength(_args), 1));

  _result = omc_NFExpression_makeArray(threadData, _ty, listArray(_args), 1 /* true */);
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinAcos(threadData_t *threadData, modelica_metatype _arg, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_real _x;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _x has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_real tmp7;
          modelica_metatype tmpMeta8;
          modelica_string tmp9;
          modelica_real tmp10;
          modelica_metatype tmpMeta11;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmp7 = mmc_unbox_real(tmpMeta6);
          _x = tmp7  /* pattern as ty=Real */;
          /* Pattern matching succeeded */
          if(((_x < -1.0) || (_x > 1.0)))
          {
            if(omc_NFCeval_EvalTarget_hasInfo(threadData, _target))
            {
              tmp9 = modelica_real_to_modelica_string(_x, ((modelica_integer) 6), ((modelica_integer) 0), 1 /* true */);
              tmpMeta8 = mmc_mk_cons(tmp9, mmc_mk_cons(_OMC_LIT166, mmc_mk_cons(_OMC_LIT163, MMC_REFSTRUCTLIT(mmc_nil))));
              omc_Error_addSourceMessage(threadData, _OMC_LIT122, tmpMeta8, omc_NFCeval_EvalTarget_getInfo(threadData, _target));
            }

            goto goto_2;
          }
          tmp10 = _x;
          if(!(tmp10 >= -1.0 && tmp10 <= 1.0))
          {
            FILE_INFO info = {"",0,0,0,0,0};
            omc_assert(threadData, info, "Model error: Argument of acos(x) outside the domain -1.0 <= %g <= 1.0", tmp10);
          }tmpMeta11 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(acos(tmp10)));
          tmpMeta1 = tmpMeta11;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta12;
          
          /* Pattern matching succeeded */
          tmpMeta12 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT167, tmpMeta12, _OMC_LIT168);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinAbs(threadData_t *threadData, modelica_metatype _arg)
{
  modelica_metatype _result = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arg;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 3: {
          modelica_metatype tmpMeta5;
          
          /* Pattern matching succeeded */
          tmpMeta5 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(labs(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))))));
          tmpMeta1 = tmpMeta5;
          goto tmp3_done;
        }
        case 4: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(fabs(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arg), 2)))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_cons(_arg, MMC_REFSTRUCTLIT(mmc_nil));
          omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT169, tmpMeta7, _OMC_LIT170);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalNormalCall(threadData_t *threadData, modelica_metatype _fn, modelica_metatype _args, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _result = omc_NFEvalFunction_evaluate(threadData, _fn, _args, _target);
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalNormalCallExp(threadData_t *threadData, modelica_metatype _callExp, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_metatype _fn = NULL;
  modelica_metatype _args = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _fn has no default value.
  // _args has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _callExp;
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,13,1) == 0) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 2));
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta2,2,6) == 0) MMC_THROW_INTERNAL();
  tmpMeta3 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta2), 2));
  tmpMeta4 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta2), 6));
  _fn = tmpMeta3;
  _args = tmpMeta4;

  _result = omc_NFCeval_evalNormalCall(threadData, _fn, _args, _target);
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinCall(threadData_t *threadData, modelica_metatype _fn, modelica_metatype _args, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_metatype _fn_path = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  _fn_path = omc_NFFunction_Function_nameConsiderBuiltin(threadData, _fn);
  { /* match expression */
    modelica_string tmp4_1;
    tmp4_1 = omc_AbsynUtil_pathFirstIdent(threadData, _fn_path);
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(stringHashDjb2Mod(tmp4_1,8192))) {
        case 7323 /* abs */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT173), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinAbs(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 5163 /* acos */: {
          if (4 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT166), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinAcos(threadData, listHead(_args), _target);
          goto tmp3_done;
        }
        case 7716 /* array */: {
          if (5 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT174), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinArray(threadData, _args);
          goto tmp3_done;
        }
        case 6000 /* asin */: {
          if (4 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT162), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinAsin(threadData, listHead(_args), _target);
          goto tmp3_done;
        }
        case 4091 /* atan2 */: {
          if (5 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT175), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinAtan2(threadData, _args);
          goto tmp3_done;
        }
        case 6825 /* atan */: {
          if (4 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT176), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinAtan(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 1277 /* cat */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT156), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinCat(threadData, listHead(_args), listRest(_args), _target);
          goto tmp3_done;
        }
        case 5282 /* ceil */: {
          if (4 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT177), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinCeil(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 114 /* cosh */: {
          if (4 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT178), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinCosh(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 1738 /* cos */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT179), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinCos(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 2496 /* der */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT180), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinDer(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 7396 /* diagonal */: {
          if (8 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT181), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinDiagonal(threadData, omc_NFExpression_unbox(threadData, listHead(_args)));
          goto tmp3_done;
        }
        case 2632 /* div */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT182), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinDiv(threadData, _args, _target);
          goto tmp3_done;
        }
        case 4210 /* exp */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT183), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinExp(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 2860 /* fill */: {
          if (4 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT184), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinFill(threadData, _args);
          goto tmp3_done;
        }
        case 871 /* floor */: {
          if (5 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT185), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinFloor(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 3759 /* identity */: {
          if (8 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT186), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinIdentity(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 7699 /* integer */: {
          if (7 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT187), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinInteger(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 1523 /* Integer */: {
          if (7 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT188), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinIntegerEnum(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 4424 /* log10 */: {
          if (5 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT127), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinLog10(threadData, listHead(_args), _target);
          goto tmp3_done;
        }
        case 3335 /* log */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT123), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinLog(threadData, listHead(_args), _target);
          goto tmp3_done;
        }
        case 2330 /* matrix */: {
          if (6 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT189), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinMatrix(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 3979 /* max */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT33), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinMax(threadData, _args, _fn);
          goto tmp3_done;
        }
        case 4233 /* min */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT32), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinMin(threadData, _args, _fn);
          goto tmp3_done;
        }
        case 4421 /* mod */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT190), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinMod(threadData, _args, _target);
          goto tmp3_done;
        }
        case 484 /* noEvent */: {
          if (7 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT191), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = listHead(_args);
          goto tmp3_done;
        }
        case 3834 /* ones */: {
          if (4 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT192), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinOnes(threadData, _args);
          goto tmp3_done;
        }
        case 7788 /* pre */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT193), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = listHead(_args);
          goto tmp3_done;
        }
        case 7750 /* product */: {
          if (7 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT31), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinProduct(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 5707 /* promote */: {
          if (7 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT194), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinPromote(threadData, listGet(_args, ((modelica_integer) 1)), listGet(_args, ((modelica_integer) 2)));
          goto tmp3_done;
        }
        case 1353 /* rem */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT195), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinRem(threadData, _args, _target);
          goto tmp3_done;
        }
        case 2075 /* scalar */: {
          if (6 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT196), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinScalar(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 2934 /* sign */: {
          if (4 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT197), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinSign(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 3159 /* sinh */: {
          if (4 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT198), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinSinh(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 2575 /* sin */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT199), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinSin(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 5055 /* skew */: {
          if (4 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT200), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinSkew(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 6559 /* smooth */: {
          if (6 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT201), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = listGet(_args, ((modelica_integer) 2));
          goto tmp3_done;
        }
        case 3823 /* sqrt */: {
          if (4 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT202), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinSqrt(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 7132 /* String */: {
          if (6 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT203), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinString(threadData, _args);
          goto tmp3_done;
        }
        case 2970 /* sum */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT30), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinSum(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 4322 /* symmetric */: {
          if (9 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT204), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinSymmetric(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 5808 /* tanh */: {
          if (4 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT205), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinTanh(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 3400 /* tan */: {
          if (3 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT206), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinTan(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 6500 /* transpose */: {
          if (9 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT207), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinTranspose(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 3992 /* vector */: {
          if (6 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT208), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinVector(threadData, listHead(_args));
          goto tmp3_done;
        }
        case 920 /* zeros */: {
          if (5 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT209), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBuiltinZeros(threadData, _args);
          goto tmp3_done;
        }
        case 2824 /* OpenModelica_uriToFilename */: {
          if (26 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT210), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalUriToFilename(threadData, _fn, listHead(_args), _target);
          goto tmp3_done;
        }
        case 2466 /* intBitAnd */: {
          if (9 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT211), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalIntBitAnd(threadData, _args);
          goto tmp3_done;
        }
        case 6992 /* intBitOr */: {
          if (8 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT212), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalIntBitOr(threadData, _args);
          goto tmp3_done;
        }
        case 2984 /* intBitXor */: {
          if (9 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT213), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalIntBitXor(threadData, _args);
          goto tmp3_done;
        }
        case 1401 /* intBitLShift */: {
          if (12 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT214), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalIntBitLShift(threadData, _args);
          goto tmp3_done;
        }
        case 6463 /* intBitRShift */: {
          if (12 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT215), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalIntBitRShift(threadData, _args);
          goto tmp3_done;
        }
        case 1087 /* intMaxLit */: {
          modelica_metatype tmpMeta5;
          if (9 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT216), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta5 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(intMaxLit()));
          tmpMeta1 = tmpMeta5;
          goto tmp3_done;
        }
        case 4704 /* inferredClock */: {
          if (13 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT217), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalInferredClock(threadData, _args);
          goto tmp3_done;
        }
        case 907 /* rationalClock */: {
          if (13 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT218), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalRationalClock(threadData, _args);
          goto tmp3_done;
        }
        case 2805 /* realClock */: {
          if (9 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT219), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalRealClock(threadData, _args);
          goto tmp3_done;
        }
        case 5041 /* booleanClock */: {
          if (12 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT220), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBooleanClock(threadData, _args);
          goto tmp3_done;
        }
        case 1388 /* solverClock */: {
          if (11 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT221), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalSolverClock(threadData, _args);
          goto tmp3_done;
        }
        case 7717 /* $OMC$PositiveMax */: {
          if (16 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT222), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalPositiveMax(threadData, listGet(_args, ((modelica_integer) 1)), listGet(_args, ((modelica_integer) 2)));
          goto tmp3_done;
        }
        case 1298 /* $OMC$inStreamDiv */: {
          if (16 != MMC_STRLEN(tmp4_1) || strcmp(MMC_STRINGDATA(_OMC_LIT223), MMC_STRINGDATA(tmp4_1)) != 0) goto tmp3_default;
          /* Pattern matching succeeded */
          tmpMeta1 = listHead(_args);
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = stringAppend(_OMC_LIT171,omc_AbsynUtil_pathString(threadData, _fn_path, _OMC_LIT27, 1 /* true */, 0 /* false */));
          omc_Error_addInternalError(threadData, tmpMeta6, _OMC_LIT172);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _result = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBuiltinCallExp(threadData_t *threadData, modelica_metatype _callExp, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_metatype _fn = NULL;
  modelica_metatype _args = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _fn has no default value.
  // _args has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _callExp;
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,13,1) == 0) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 2));
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta2,2,6) == 0) MMC_THROW_INTERNAL();
  tmpMeta3 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta2), 2));
  tmpMeta4 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta2), 6));
  _fn = tmpMeta3;
  _args = tmpMeta4;

  _result = omc_NFCeval_evalBuiltinCall(threadData, _fn, _args, _target);
  _return: OMC_LABEL_UNUSED
  return _result;
}

static modelica_metatype closure6_NFCeval_evalBuiltinCallExp(threadData_t *thData, modelica_metatype closure, modelica_metatype callExp)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBuiltinCallExp(thData, callExp, target);
}static modelica_metatype closure7_NFCeval_evalNormalCallExp(threadData_t *thData, modelica_metatype closure, modelica_metatype callExp)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalNormalCallExp(thData, callExp, target);
}
DLLDirection
modelica_metatype omc_NFCeval_evalCall(threadData_t *threadData, modelica_metatype _call, modelica_metatype _target)
{
  modelica_metatype _exp = NULL;
  modelica_metatype _c = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  _c = _call;
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _c;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 5: {
          modelica_metatype tmpMeta5;
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta13;
          modelica_boolean tmp14;
          modelica_metatype tmpMeta15;
          
          /* Pattern matching succeeded */
          {
            modelica_metatype __omcQ_24tmpVar9;
            modelica_metatype* tmp7;
            modelica_metatype tmpMeta8;
            modelica_metatype __omcQ_24tmpVar8;
            modelica_integer tmp9;
            modelica_metatype _arg_loopVar = 0;
            modelica_metatype _arg;
            _arg_loopVar = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_c), 6)));
            tmpMeta8 = MMC_REFSTRUCTLIT(mmc_nil);
            __omcQ_24tmpVar9 = tmpMeta8; /* defaultValue */
            tmp7 = &__omcQ_24tmpVar9;
            while(1) {
              tmp9 = 1;
              if (!listEmpty(_arg_loopVar)) {
                _arg = MMC_CAR(_arg_loopVar);
                _arg_loopVar = MMC_CDR(_arg_loopVar);
                tmp9--;
              }
              if (tmp9 == 0) {
                __omcQ_24tmpVar8 = omc_NFCeval_evalExp(threadData, _arg, _target);
                *tmp7 = mmc_mk_cons(__omcQ_24tmpVar8,0);
                tmp7 = &MMC_CDR(*tmp7);
              } else if (tmp9 == 1) {
                break;
              } else {
                goto goto_2;
              }
            }
            *tmp7 = mmc_mk_nil();
            tmpMeta6 = __omcQ_24tmpVar9;
          }
          tmpMeta5 = MMC_TAGPTR(mmc_alloc_words(8));
          memcpy(MMC_UNTAGPTR(tmpMeta5), MMC_UNTAGPTR(_c), 8*sizeof(modelica_metatype));
          ((modelica_metatype*)MMC_UNTAGPTR(tmpMeta5))[6] = tmpMeta6;
          _c = tmpMeta5;
          tmp14 = (modelica_boolean)omc_NFFunction_Function_isBuiltin(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_c), 2))));
          if(tmp14)
          {
            tmpMeta10 = mmc_mk_box2(16, &NFExpression_CALL__desc, _c);
            tmpMeta11 = mmc_mk_box1(0, _target);
            tmpMeta15 = omc_NFExpression_mapSplitExpressions(threadData, tmpMeta10, (modelica_fnptr) mmc_mk_box2(0,closure6_NFCeval_evalBuiltinCallExp,tmpMeta11));
          }
          else
          {
            tmpMeta12 = mmc_mk_box2(16, &NFExpression_CALL__desc, _c);
            tmpMeta13 = mmc_mk_box1(0, _target);
            tmpMeta15 = omc_NFExpression_mapSplitExpressions(threadData, tmpMeta12, (modelica_fnptr) mmc_mk_box2(0,closure7_NFCeval_evalNormalCallExp,tmpMeta13));
          }
          tmpMeta1 = tmpMeta15;
          goto tmp3_done;
        }
        case 7: {
          modelica_metatype tmpMeta16;
          modelica_metatype tmpMeta17;
          modelica_metatype tmpMeta18;
          
          /* Pattern matching succeeded */
          tmpMeta16 = MMC_TAGPTR(mmc_alloc_words(7));
          memcpy(MMC_UNTAGPTR(tmpMeta16), MMC_UNTAGPTR(_c), 7*sizeof(modelica_metatype));
          ((modelica_metatype*)MMC_UNTAGPTR(tmpMeta16))[5] = omc_NFCeval_evalExpPartial(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_c), 5))), _OMC_LIT36, 1 /* true */, NULL);
          _c = tmpMeta16;

          tmpMeta17 = MMC_TAGPTR(mmc_alloc_words(7));
          memcpy(MMC_UNTAGPTR(tmpMeta17), MMC_UNTAGPTR(_c), 7*sizeof(modelica_metatype));
          ((modelica_metatype*)MMC_UNTAGPTR(tmpMeta17))[6] = omc_NFCall_mapIteratorsExpShallow(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_c), 6))), boxvar_NFCeval_evalExpPartialDefault);
          _c = tmpMeta17;
          tmpMeta18 = mmc_mk_box2(16, &NFExpression_CALL__desc, _c);
          tmpMeta1 = omc_NFExpression_mapSplitExpressions(threadData, tmpMeta18, boxvar_NFCeval_evalArrayConstructor);
          goto tmp3_done;
        }
        case 9: {
          modelica_metatype tmpMeta19;
          modelica_metatype tmpMeta20;
          modelica_metatype tmpMeta21;
          
          /* Pattern matching succeeded */
          tmpMeta19 = MMC_TAGPTR(mmc_alloc_words(10));
          memcpy(MMC_UNTAGPTR(tmpMeta19), MMC_UNTAGPTR(_c), 10*sizeof(modelica_metatype));
          ((modelica_metatype*)MMC_UNTAGPTR(tmpMeta19))[6] = omc_NFCeval_evalExpPartial(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_c), 6))), _OMC_LIT36, 1 /* true */, NULL);
          _c = tmpMeta19;

          tmpMeta20 = MMC_TAGPTR(mmc_alloc_words(10));
          memcpy(MMC_UNTAGPTR(tmpMeta20), MMC_UNTAGPTR(_c), 10*sizeof(modelica_metatype));
          ((modelica_metatype*)MMC_UNTAGPTR(tmpMeta20))[7] = omc_NFCall_mapIteratorsExpShallow(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_c), 7))), boxvar_NFCeval_evalExpPartialDefault);
          _c = tmpMeta20;
          tmpMeta21 = mmc_mk_box2(16, &NFExpression_CALL__desc, _c);
          tmpMeta1 = omc_NFExpression_mapSplitExpressions(threadData, tmpMeta21, boxvar_NFCeval_evalReduction);
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          
          /* Pattern matching succeeded */
          omc_Error_addInternalError(threadData, _OMC_LIT224, _OMC_LIT225);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalCast(threadData_t *threadData, modelica_metatype _castExp, modelica_metatype _castTy)
{
  modelica_metatype _exp = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  _exp = omc_NFExpression_typeCast(threadData, _castExp, _castTy);

  { /* match expression */
    modelica_metatype tmp3_1;
    tmp3_1 = _exp;
    {
      volatile mmc_switch_type tmp3;
      int tmp4;
      tmp3 = 0;
      for (; tmp3 < 2; tmp3++) {
        switch (MMC_SWITCH_CAST(tmp3)) {
        case 0: {
          modelica_metatype tmpMeta5;
          if (mmc__uniontype__metarecord__typedef__equal(tmp3_1,23,2) == 0) goto tmp2_end;
          
          /* Pattern matching succeeded */
          tmpMeta5 = mmc_mk_box3(26, &NFExpression_CAST__desc, _castTy, _castExp);
          _exp = tmpMeta5;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT226, _exp, _OMC_LIT227);
          goto goto_1;
          goto tmp2_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          goto tmp2_done;
        }
        }
        goto tmp2_end;
        tmp2_end: ;
      }
      goto goto_1;
      goto_1:;
      MMC_THROW_INTERNAL();
      goto tmp2_done;
      tmp2_done:;
    }
  }
  ;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalIfExp2(threadData_t *threadData, modelica_metatype _ifExp, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype _cond = NULL;
  modelica_metatype _tb = NULL;
  modelica_metatype _fb = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  modelica_metatype tmpMeta5;
  modelica_metatype tmpMeta6;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _ty has no default value.
  // _cond has no default value.
  // _tb has no default value.
  // _fb has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _ifExp;
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,22,4) == 0) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 2));
  tmpMeta3 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 3));
  tmpMeta4 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 4));
  tmpMeta5 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 5));
  _ty = tmpMeta2;
  _cond = tmpMeta3;
  _tb = tmpMeta4;
  _fb = tmpMeta5;

  { /* match expression */
    modelica_metatype tmp9_1;
    tmp9_1 = _cond;
    {
      volatile mmc_switch_type tmp9;
      int tmp10;
      tmp9 = 0;
      for (; tmp9 < 2; tmp9++) {
        switch (MMC_SWITCH_CAST(tmp9)) {
        case 0: {
          modelica_metatype tmpMeta11;
          if (mmc__uniontype__metarecord__typedef__equal(tmp9_1,3,1) == 0) goto tmp8_end;
          
          /* Pattern matching succeeded */
          if((omc_NFType_isConditionalArray(threadData, _ty) && (!omc_NFType_isMatchedBranch(threadData, mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_cond), 2)))), _ty))))
          {
            _tb = omc_Util_swap(threadData, mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_cond), 2)))), _fb, _tb ,&_fb);

            tmpMeta11 = mmc_mk_cons(omc_NFExpression_toString(threadData, _tb), mmc_mk_cons(omc_NFType_toString(threadData, omc_NFExpression_typeOf(threadData, _tb)), mmc_mk_cons(omc_NFDimension_toStringList(threadData, omc_NFType_arrayDims(threadData, omc_NFExpression_typeOf(threadData, _fb)), 0 /* false */), MMC_REFSTRUCTLIT(mmc_nil))));
            omc_Error_addSourceMessage(threadData, _OMC_LIT230, tmpMeta11, omc_NFCeval_EvalTarget_getInfo(threadData, _target));

            goto goto_7;
          }
          tmpMeta6 = omc_NFCeval_evalExp(threadData, (mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_cond), 2))))?_tb:_fb), _target);
          goto tmp8_done;
        }
        case 1: {
          modelica_metatype tmpMeta12;
          
          /* Pattern matching succeeded */
          tmpMeta12 = stringAppend(_OMC_LIT231,omc_NFExpression_toString(threadData, _ifExp));
          omc_Error_addInternalError(threadData, tmpMeta12, _OMC_LIT232);
          goto goto_7;
          goto tmp8_done;
        }
        }
        goto tmp8_end;
        tmp8_end: ;
      }
      goto goto_7;
      goto_7:;
      MMC_THROW_INTERNAL();
      goto tmp8_done;
      tmp8_done:;
    }
  }
  _result = tmpMeta6;
  _return: OMC_LABEL_UNUSED
  return _result;
}

static modelica_metatype closure8_NFCeval_evalIfExp2(threadData_t *thData, modelica_metatype closure, modelica_metatype ifExp)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalIfExp2(thData, ifExp, target);
}
DLLDirection
modelica_metatype omc_NFCeval_evalIfExp(threadData_t *threadData, modelica_metatype _ifExp, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype _cond = NULL;
  modelica_metatype _btrue = NULL;
  modelica_metatype _bfalse = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  modelica_metatype tmpMeta5;
  modelica_metatype tmpMeta6;
  modelica_metatype tmpMeta7;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _ty has no default value.
  // _cond has no default value.
  // _btrue has no default value.
  // _bfalse has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _ifExp;
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,22,4) == 0) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 2));
  tmpMeta3 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 3));
  tmpMeta4 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 4));
  tmpMeta5 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 5));
  _ty = tmpMeta2;
  _cond = tmpMeta3;
  _btrue = tmpMeta4;
  _bfalse = tmpMeta5;

  tmpMeta6 = mmc_mk_box5(25, &NFExpression_IF__desc, _ty, omc_NFCeval_evalExp(threadData, _cond, _target), _btrue, _bfalse);
  _result = tmpMeta6;

  tmpMeta7 = mmc_mk_box1(0, _target);
  _result = omc_NFExpression_mapSplitExpressions(threadData, _result, (modelica_fnptr) mmc_mk_box2(0,closure8_NFCeval_evalIfExp2,tmpMeta7));
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_boolean omc_NFCeval_evalRelationNotEqual(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_boolean _res;
  modelica_boolean tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _res has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 9; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) != mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) != mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 2: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,3,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (!mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) != !mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 3: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) != ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 4: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) != ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 5: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) != ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 6: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) != ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 7: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,4,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,4,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 4)))) != mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 4)))));
          goto tmp3_done;
        }
        case 8: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box5(23, &NFExpression_RELATION__desc, _exp1, omc_NFOperator_makeNotEqual(threadData, _OMC_LIT234), _exp2, mmc_mk_integer(((modelica_integer) -1)));
          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT233, tmpMeta6, _OMC_LIT235);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _res = tmp1;
  _return: OMC_LABEL_UNUSED
  return _res;
}
modelica_metatype boxptr_NFCeval_evalRelationNotEqual(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_boolean _res;
  modelica_metatype out_res;
  _res = omc_NFCeval_evalRelationNotEqual(threadData, _exp1, _exp2);
  out_res = mmc_mk_icon(_res);
  return out_res;
}

DLLDirection
modelica_boolean omc_NFCeval_evalRelationEqual(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_boolean _res;
  modelica_boolean tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _res has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 9; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) == mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) == mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 2: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,3,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (!mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) == !mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 3: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) == ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 4: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) == ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 5: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) == ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 6: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) == ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 7: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,4,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,4,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 4)))) == mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 4)))));
          goto tmp3_done;
        }
        case 8: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box5(23, &NFExpression_RELATION__desc, _exp1, omc_NFOperator_makeEqual(threadData, _OMC_LIT234), _exp2, mmc_mk_integer(((modelica_integer) -1)));
          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT236, tmpMeta6, _OMC_LIT237);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _res = tmp1;
  _return: OMC_LABEL_UNUSED
  return _res;
}
modelica_metatype boxptr_NFCeval_evalRelationEqual(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_boolean _res;
  modelica_metatype out_res;
  _res = omc_NFCeval_evalRelationEqual(threadData, _exp1, _exp2);
  out_res = mmc_mk_icon(_res);
  return out_res;
}

DLLDirection
modelica_boolean omc_NFCeval_evalRelationGreaterEq(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_boolean _res;
  modelica_boolean tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _res has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 9; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) >= mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) >= mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 2: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,3,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) || !mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 3: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) >= ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 4: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) >= ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 5: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) >= ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 6: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) >= ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 7: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,4,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,4,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 4)))) >= mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 4)))));
          goto tmp3_done;
        }
        case 8: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box5(23, &NFExpression_RELATION__desc, _exp1, omc_NFOperator_makeGreaterEq(threadData, _OMC_LIT234), _exp2, mmc_mk_integer(((modelica_integer) -1)));
          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT238, tmpMeta6, _OMC_LIT239);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _res = tmp1;
  _return: OMC_LABEL_UNUSED
  return _res;
}
modelica_metatype boxptr_NFCeval_evalRelationGreaterEq(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_boolean _res;
  modelica_metatype out_res;
  _res = omc_NFCeval_evalRelationGreaterEq(threadData, _exp1, _exp2);
  out_res = mmc_mk_icon(_res);
  return out_res;
}

DLLDirection
modelica_boolean omc_NFCeval_evalRelationGreater(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_boolean _res;
  modelica_boolean tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _res has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 9; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) > mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) > mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 2: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,3,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) && !mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 3: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) > ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 4: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) > ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 5: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) > ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 6: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) > ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 7: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,4,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,4,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 4)))) > mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 4)))));
          goto tmp3_done;
        }
        case 8: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box5(23, &NFExpression_RELATION__desc, _exp1, omc_NFOperator_makeGreater(threadData, _OMC_LIT234), _exp2, mmc_mk_integer(((modelica_integer) -1)));
          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT240, tmpMeta6, _OMC_LIT241);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _res = tmp1;
  _return: OMC_LABEL_UNUSED
  return _res;
}
modelica_metatype boxptr_NFCeval_evalRelationGreater(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_boolean _res;
  modelica_metatype out_res;
  _res = omc_NFCeval_evalRelationGreater(threadData, _exp1, _exp2);
  out_res = mmc_mk_icon(_res);
  return out_res;
}

DLLDirection
modelica_boolean omc_NFCeval_evalRelationLessEq(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_boolean _res;
  modelica_boolean tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _res has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 9; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) <= mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) <= mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 2: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,3,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (!mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) || mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 3: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) <= ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 4: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) <= ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 5: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) <= ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 6: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) <= ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 7: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,4,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,4,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 4)))) <= mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 4)))));
          goto tmp3_done;
        }
        case 8: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box5(23, &NFExpression_RELATION__desc, _exp1, omc_NFOperator_makeLessEq(threadData, _OMC_LIT234), _exp2, mmc_mk_integer(((modelica_integer) -1)));
          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT242, tmpMeta6, _OMC_LIT243);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _res = tmp1;
  _return: OMC_LABEL_UNUSED
  return _res;
}
modelica_metatype boxptr_NFCeval_evalRelationLessEq(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_boolean _res;
  modelica_metatype out_res;
  _res = omc_NFCeval_evalRelationLessEq(threadData, _exp1, _exp2);
  out_res = mmc_mk_icon(_res);
  return out_res;
}

DLLDirection
modelica_boolean omc_NFCeval_evalRelationLess(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_boolean _res;
  modelica_boolean tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _res has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 9; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) < mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) < mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 2: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,3,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (!mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) && mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          goto tmp3_done;
        }
        case 3: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) < ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 4: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) < ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 5: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) < ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 6: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (stringCompare((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))) < ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 7: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,4,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,4,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 4)))) < mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 4)))));
          goto tmp3_done;
        }
        case 8: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box5(23, &NFExpression_RELATION__desc, _exp1, omc_NFOperator_makeLess(threadData, _OMC_LIT234), _exp2, mmc_mk_integer(((modelica_integer) -1)));
          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT244, tmpMeta6, _OMC_LIT245);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _res = tmp1;
  _return: OMC_LABEL_UNUSED
  return _res;
}
modelica_metatype boxptr_NFCeval_evalRelationLess(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_boolean _res;
  modelica_metatype out_res;
  _res = omc_NFCeval_evalRelationLess(threadData, _exp1, _exp2);
  out_res = mmc_mk_icon(_res);
  return out_res;
}

DLLDirection
modelica_metatype omc_NFCeval_evalRelationOp__dispatch(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _op, modelica_metatype _exp2)
{
  modelica_metatype _exp = NULL;
  modelica_boolean _res;
  modelica_boolean tmp1 = 0;
  modelica_metatype tmpMeta13;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  // _res has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_op), 3)));
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(mmc_unbox_integer(tmp4_1))) {
        case 30: {
          modelica_integer tmp5;
          tmp5 = mmc_unbox_integer(tmp4_1);
          if (30 != tmp5) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = omc_NFCeval_evalRelationLess(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        case 31: {
          modelica_integer tmp6;
          tmp6 = mmc_unbox_integer(tmp4_1);
          if (31 != tmp6) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = omc_NFCeval_evalRelationLessEq(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        case 32: {
          modelica_integer tmp7;
          tmp7 = mmc_unbox_integer(tmp4_1);
          if (32 != tmp7) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = omc_NFCeval_evalRelationGreater(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        case 33: {
          modelica_integer tmp8;
          tmp8 = mmc_unbox_integer(tmp4_1);
          if (33 != tmp8) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = omc_NFCeval_evalRelationGreaterEq(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        case 34: {
          modelica_integer tmp9;
          tmp9 = mmc_unbox_integer(tmp4_1);
          if (34 != tmp9) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = omc_NFCeval_evalRelationEqual(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        case 35: {
          modelica_integer tmp10;
          tmp10 = mmc_unbox_integer(tmp4_1);
          if (35 != tmp10) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = omc_NFCeval_evalRelationNotEqual(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          
          /* Pattern matching succeeded */
          tmpMeta11 = mmc_mk_box5(23, &NFExpression_RELATION__desc, _exp1, _op, _exp2, mmc_mk_integer(((modelica_integer) -1)));
          tmpMeta12 = stringAppend(_OMC_LIT246,omc_NFExpression_toString(threadData, tmpMeta11));
          omc_Error_addInternalError(threadData, tmpMeta12, _OMC_LIT247);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _res = tmp1;

  tmpMeta13 = mmc_mk_box2(6, &NFExpression_BOOLEAN__desc, mmc_mk_boolean(_res));
  _exp = tmpMeta13;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalRelationExp(threadData_t *threadData, modelica_metatype _relationExp)
{
  modelica_metatype _result = NULL;
  modelica_metatype _e1 = NULL;
  modelica_metatype _e2 = NULL;
  modelica_metatype _op = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _e1 has no default value.
  // _e2 has no default value.
  // _op has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _relationExp;
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,20,4) == 0) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 2));
  tmpMeta3 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 3));
  tmpMeta4 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 4));
  _e1 = tmpMeta2;
  _op = tmpMeta3;
  _e2 = tmpMeta4;

  _result = omc_NFCeval_evalRelationOp__dispatch(threadData, _e1, _op, _e2);
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalRelationOp(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _op, modelica_metatype _exp2)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  tmpMeta1 = mmc_mk_box5(23, &NFExpression_RELATION__desc, _exp1, _op, _exp2, mmc_mk_integer(((modelica_integer) -1)));
  _exp = omc_NFExpression_mapSplitExpressions(threadData, tmpMeta1, boxvar_NFCeval_evalRelationExp);
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalLogicUnaryNot(threadData_t *threadData, modelica_metatype _exp1)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _exp1;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 6: {
          modelica_metatype tmpMeta5;
          
          /* Pattern matching succeeded */
          tmpMeta5 = mmc_mk_box2(6, &NFExpression_BOOLEAN__desc, mmc_mk_boolean((!mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))))));
          tmpMeta1 = tmpMeta5;
          goto tmp3_done;
        }
        case 11: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFExpression_mapArrayElements(threadData, _exp1, boxvar_NFCeval_evalLogicUnaryNot);
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box3(22, &NFExpression_LUNARY__desc, omc_NFOperator_makeNot(threadData, _OMC_LIT234), _exp1);
          _exp = tmpMeta6;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT248, _exp, _OMC_LIT249);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalLogicUnaryOp(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _op)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_op), 3)));
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_integer tmp6;
          tmp6 = mmc_unbox_integer(tmp4_1);
          if (29 != tmp6) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFExpression_mapSplitExpressions(threadData, _exp1, boxvar_NFCeval_evalLogicUnaryNot);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_box3(22, &NFExpression_LUNARY__desc, _op, _exp1);
          tmpMeta8 = stringAppend(_OMC_LIT250,omc_NFExpression_toString(threadData, tmpMeta7));
          omc_Error_addInternalError(threadData, tmpMeta8, _OMC_LIT251);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure9_NFCeval_evalLogicBinaryOr(threadData_t *thData, modelica_metatype closure, modelica_metatype exp1, modelica_metatype exp2)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalLogicBinaryOr(thData, exp1, exp2, target);
}
DLLDirection
modelica_metatype omc_NFCeval_evalLogicBinaryOr(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2, modelica_metatype _target)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _exp1;
    {
      modelica_metatype _arr = NULL;
      int tmp4;
      // _arr has no default value.
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 6: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = (mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))))?_exp1:omc_NFCeval_evalExp(threadData, _exp2, _target));
          goto tmp3_done;
        }
        case 11: {
          modelica_metatype tmpMeta5;
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          /* Pattern-matching assignment */
          tmpMeta5 = omc_NFCeval_evalExp(threadData, _exp2, _target);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta5,8,3) == 0) goto goto_2;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta5), 3));
          _arr = tmpMeta6;

          tmpMeta7 = mmc_mk_box1(0, _target);
          _arr = omc_Array_threadMap(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))), _arr, (modelica_fnptr) mmc_mk_box2(0,closure9_NFCeval_evalLogicBinaryOr,tmpMeta7));
          tmpMeta1 = omc_NFExpression_makeArray(threadData, omc_NFType_setArrayElementType(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), _OMC_LIT252), _arr, 1 /* true */);
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          modelica_metatype tmpMeta8;
          
          /* Pattern matching succeeded */
          tmpMeta8 = mmc_mk_box4(21, &NFExpression_LBINARY__desc, _exp1, omc_NFOperator_makeOr(threadData, _OMC_LIT234), _exp2);
          _exp = tmpMeta8;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT253, _exp, _OMC_LIT254);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure10_NFCeval_evalLogicBinaryAnd(threadData_t *thData, modelica_metatype closure, modelica_metatype exp1, modelica_metatype exp2)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalLogicBinaryAnd(thData, exp1, exp2, target);
}
DLLDirection
modelica_metatype omc_NFCeval_evalLogicBinaryAnd(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2, modelica_metatype _target)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* matchcontinue expression */
    volatile modelica_metatype tmp4_1;
    tmp4_1 = _exp1;
    {
      modelica_metatype _arr = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _arr has no default value.
      tmp4 = 0;
      MMC_TRY_INTERNAL(mmc_jumper)
      tmp3_top:
      threadData->mmc_jumper = &new_mmc_jumper;
      for (; tmp4 < 3; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          
          tmp4 += 1; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmpMeta1 = (mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))))?omc_NFCeval_evalExp(threadData, _exp2, _target):_exp1);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          /* Pattern-matching assignment */
          tmpMeta6 = omc_NFCeval_evalExp(threadData, _exp2, _target);
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,8,3) == 0) goto goto_2;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 3));
          _arr = tmpMeta7;

          tmpMeta8 = mmc_mk_box1(0, _target);
          _arr = omc_Array_threadMap(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))), _arr, (modelica_fnptr) mmc_mk_box2(0,closure10_NFCeval_evalLogicBinaryAnd,tmpMeta8));
          tmpMeta1 = omc_NFExpression_makeArray(threadData, omc_NFType_setArrayElementType(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), _OMC_LIT252), _arr, 1 /* true */);
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta9;
          
          /* Pattern matching succeeded */
          tmpMeta9 = mmc_mk_box4(21, &NFExpression_LBINARY__desc, _exp1, omc_NFOperator_makeAnd(threadData, _OMC_LIT234), _exp2);
          _exp = tmpMeta9;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT255, _exp, _OMC_LIT256);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      tmp3_done:
      (void)tmp4;
      MMC_RESTORE_INTERNAL(mmc_jumper);
      goto tmp3_done2;
      goto_2:;
      MMC_CATCH_INTERNAL(mmc_jumper);
      if (++tmp4 < 3) {
        goto tmp3_top;
      }
      MMC_THROW_INTERNAL();
      tmp3_done2:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalLogicBinaryOp__dispatch(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _op, modelica_metatype _exp2, modelica_metatype _target)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_op), 3)));
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(mmc_unbox_integer(tmp4_1))) {
        case 27: {
          modelica_integer tmp5;
          tmp5 = mmc_unbox_integer(tmp4_1);
          if (27 != tmp5) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalLogicBinaryAnd(threadData, omc_NFCeval_evalExp(threadData, _exp1, _target), _exp2, _target);
          goto tmp3_done;
        }
        case 28: {
          modelica_integer tmp6;
          tmp6 = mmc_unbox_integer(tmp4_1);
          if (28 != tmp6) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalLogicBinaryOr(threadData, omc_NFCeval_evalExp(threadData, _exp1, _target), _exp2, _target);
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_box4(21, &NFExpression_LBINARY__desc, _exp1, _op, _exp2);
          tmpMeta8 = stringAppend(_OMC_LIT257,omc_NFExpression_toString(threadData, tmpMeta7));
          omc_Error_addInternalError(threadData, tmpMeta8, _OMC_LIT258);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalLogicBinaryExp(threadData_t *threadData, modelica_metatype _binaryExp, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_metatype _e1 = NULL;
  modelica_metatype _e2 = NULL;
  modelica_metatype _op = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _e1 has no default value.
  // _e2 has no default value.
  // _op has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _binaryExp;
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,18,3) == 0) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 2));
  tmpMeta3 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 3));
  tmpMeta4 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 4));
  _e1 = tmpMeta2;
  _op = tmpMeta3;
  _e2 = tmpMeta4;

  _result = omc_NFCeval_evalLogicBinaryOp__dispatch(threadData, _e1, _op, _e2, _target);
  _return: OMC_LABEL_UNUSED
  return _result;
}

static modelica_metatype closure11_NFCeval_evalLogicBinaryExp(threadData_t *thData, modelica_metatype closure, modelica_metatype binaryExp)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalLogicBinaryExp(thData, binaryExp, target);
}
DLLDirection
modelica_metatype omc_NFCeval_evalLogicBinaryOp(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _op, modelica_metatype _exp2, modelica_metatype _target)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  tmpMeta1 = mmc_mk_box4(21, &NFExpression_LBINARY__desc, _exp1, _op, _exp2);
  tmpMeta2 = mmc_mk_box1(0, _target);
  _exp = omc_NFExpression_mapSplitExpressions(threadData, tmpMeta1, (modelica_fnptr) mmc_mk_box2(0,closure11_NFCeval_evalLogicBinaryExp,tmpMeta2));
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalUnaryMinus(threadData_t *threadData, modelica_metatype _exp1)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _exp1;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 3: {
          modelica_metatype tmpMeta5;
          
          /* Pattern matching succeeded */
          tmpMeta5 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer((-(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))))))));
          tmpMeta1 = tmpMeta5;
          goto tmp3_done;
        }
        case 4: {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real((-(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 11: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmpMeta7 = MMC_TAGPTR(mmc_alloc_words(5));
          memcpy(MMC_UNTAGPTR(tmpMeta7), MMC_UNTAGPTR(_exp1), 5*sizeof(modelica_metatype));
          ((modelica_metatype*)MMC_UNTAGPTR(tmpMeta7))[3] = omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))), boxvar_NFCeval_evalUnaryMinus);
          _exp1 = tmpMeta7;
          tmpMeta1 = _exp1;
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          modelica_metatype tmpMeta8;
          
          /* Pattern matching succeeded */
          tmpMeta8 = mmc_mk_box3(20, &NFExpression_UNARY__desc, omc_NFOperator_makeUMinus(threadData, _OMC_LIT234), _exp1);
          _exp = tmpMeta8;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT259, _exp, _OMC_LIT260);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalUnaryOp(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _op)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_op), 3)));
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 3; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_integer tmp6;
          tmp6 = mmc_unbox_integer(tmp4_1);
          if (26 != tmp6) goto tmp3_end;
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!omc_NFExpression_isZero(threadData, _exp1)) goto tmp3_end;
          tmpMeta1 = _exp1;
          goto tmp3_done;
        }
        case 1: {
          modelica_integer tmp7;
          tmp7 = mmc_unbox_integer(tmp4_1);
          if (26 != tmp7) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFExpression_mapSplitExpressions(threadData, _exp1, boxvar_NFCeval_evalUnaryMinus);
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          
          /* Pattern matching succeeded */
          tmpMeta8 = mmc_mk_box3(20, &NFExpression_UNARY__desc, _op, _exp1);
          tmpMeta9 = stringAppend(_OMC_LIT261,omc_NFExpression_toString(threadData, tmpMeta8));
          omc_Error_addInternalError(threadData, tmpMeta9, _OMC_LIT262);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBinaryPowMatrix2(threadData_t *threadData, modelica_metatype _matrix, modelica_integer _n)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_integer tmp4_1;
    tmp4_1 = _n;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 4; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (1 != tmp4_1) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = _matrix;
          goto tmp3_done;
        }
        case 1: {
          if (2 != tmp4_1) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryMatrixProduct(threadData, _matrix, _matrix);
          goto tmp3_done;
        }
        case 2: {
          modelica_integer tmp6;
          
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!(modelica_integer_mod(_n, ((modelica_integer) 2)) == ((modelica_integer) 0))) goto tmp3_end;
          tmp6 = ((modelica_integer) 2);
          if (tmp6 == 0) {goto goto_2;}
          _exp = omc_NFCeval_evalBinaryPowMatrix2(threadData, _matrix, modelica_div_integer(_n,tmp6).quot);
          tmpMeta1 = omc_NFCeval_evalBinaryMatrixProduct(threadData, _exp, _exp);
          goto tmp3_done;
        }
        case 3: {
          
          /* Pattern matching succeeded */
          _exp = omc_NFCeval_evalBinaryPowMatrix2(threadData, _matrix, ((modelica_integer) -1) + _n);
          tmpMeta1 = omc_NFCeval_evalBinaryMatrixProduct(threadData, _matrix, _exp);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}
modelica_metatype boxptr_NFCeval_evalBinaryPowMatrix2(threadData_t *threadData, modelica_metatype _matrix, modelica_metatype _n)
{
  modelica_integer tmp1;
  modelica_metatype _exp = NULL;
  tmp1 = mmc_unbox_integer(_n);
  _exp = omc_NFCeval_evalBinaryPowMatrix2(threadData, _matrix, tmp1);
  /* skip box _exp; NFExpression */
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBinaryPowMatrix(threadData_t *threadData, modelica_metatype _matrixExp, modelica_metatype _nExp)
{
  modelica_metatype _exp = NULL;
  modelica_integer _n;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  // _n has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _nExp;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 3; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_integer tmp7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmp7 = mmc_unbox_integer(tmpMeta6);
          if (0 != tmp7) goto tmp3_end;
          /* Pattern matching succeeded */
          _n = omc_NFDimension_size(threadData, listHead(omc_NFType_arrayDims(threadData, omc_NFExpression_typeOf(threadData, _matrixExp))), 0 /* false */);
          tmpMeta1 = omc_NFExpression_makeIdentityMatrix(threadData, _n, _OMC_LIT263);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta8;
          modelica_integer tmp9;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmp9 = mmc_unbox_integer(tmpMeta8);
          _n = tmp9  /* pattern as ty=Integer */;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryPowMatrix2(threadData, _matrixExp, _n);
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta10;
          
          /* Pattern matching succeeded */
          tmpMeta10 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _matrixExp, omc_NFOperator_makePow(threadData, _OMC_LIT234), _nExp);
          _exp = tmpMeta10;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT264, _exp, _OMC_LIT265);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure12_NFCeval_evalBinaryScalarProduct(threadData_t *thData, modelica_metatype closure, modelica_metatype exp2)
{
  modelica_metatype exp1 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryScalarProduct(thData, exp1, exp2);
}
DLLDirection
modelica_metatype omc_NFCeval_evalBinaryMatrixProduct(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_metatype _exp = NULL;
  modelica_metatype _e2 = NULL;
  modelica_metatype _expl1 = NULL;
  modelica_metatype _expl2 = NULL;
  modelica_metatype _elem_ty = NULL;
  modelica_metatype _row_ty = NULL;
  modelica_metatype _mat_ty = NULL;
  modelica_metatype _n = NULL;
  modelica_metatype _p = NULL;
  modelica_metatype _arr1 = NULL;
  modelica_metatype _arr2 = NULL;
  modelica_metatype _arr = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  // _e2 has no default value.
  // _expl1 has no default value.
  // _expl2 has no default value.
  // _elem_ty has no default value.
  // _row_ty has no default value.
  // _mat_ty has no default value.
  // _n has no default value.
  // _p has no default value.
  // _arr1 has no default value.
  // _arr2 has no default value.
  // _arr has no default value.
  _e2 = omc_NFExpression_transposeArray(threadData, _exp2);

  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _e2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta13;
          modelica_metatype tmpMeta14;
          modelica_metatype tmpMeta15;
          modelica_metatype tmpMeta16;
          modelica_metatype tmpMeta17;
          modelica_metatype tmpMeta18;
          modelica_metatype tmpMeta19;
          modelica_metatype tmpMeta20;
          modelica_metatype tmpMeta21;
          modelica_metatype tmpMeta22;
          modelica_metatype tmpMeta23;
          modelica_metatype tmpMeta24;
          modelica_metatype tmpMeta25;
          modelica_integer tmp26;
          modelica_integer tmp27;
          modelica_integer tmp28;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,7,2) == 0) goto tmp3_end;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 2));
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 3));
          if (listEmpty(tmpMeta8)) goto tmp3_end;
          tmpMeta9 = MMC_CAR(tmpMeta8);
          tmpMeta10 = MMC_CDR(tmpMeta8);
          if (listEmpty(tmpMeta10)) goto tmp3_end;
          tmpMeta11 = MMC_CAR(tmpMeta10);
          tmpMeta12 = MMC_CDR(tmpMeta10);
          if (!listEmpty(tmpMeta12)) goto tmp3_end;
          tmpMeta13 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,8,3) == 0) goto tmp3_end;
          tmpMeta14 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_2), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta14,7,2) == 0) goto tmp3_end;
          tmpMeta15 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta14), 3));
          if (listEmpty(tmpMeta15)) goto tmp3_end;
          tmpMeta16 = MMC_CAR(tmpMeta15);
          tmpMeta17 = MMC_CDR(tmpMeta15);
          if (listEmpty(tmpMeta17)) goto tmp3_end;
          tmpMeta18 = MMC_CAR(tmpMeta17);
          tmpMeta19 = MMC_CDR(tmpMeta17);
          if (!listEmpty(tmpMeta19)) goto tmp3_end;
          tmpMeta20 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_2), 3));
          
          _elem_ty = tmpMeta7;
          _n = tmpMeta9;
          _arr1 = tmpMeta13;
          _p = tmpMeta16;
          _arr2 = tmpMeta20;
          /* Pattern matching succeeded */
          tmpMeta21 = mmc_mk_cons(_n, mmc_mk_cons(_p, MMC_REFSTRUCTLIT(mmc_nil)));
          tmpMeta22 = mmc_mk_box3(10, &NFType_ARRAY__desc, _elem_ty, tmpMeta21);
          _mat_ty = tmpMeta22;

          if((arrayLength(_arr2) == ((modelica_integer) 0)))
          {
            _exp = omc_NFExpression_makeZero(threadData, _mat_ty);
          }
          else
          {
            tmpMeta23 = mmc_mk_cons(_p, MMC_REFSTRUCTLIT(mmc_nil));
            tmpMeta24 = mmc_mk_box3(10, &NFType_ARRAY__desc, _elem_ty, tmpMeta23);
            _row_ty = tmpMeta24;

            _arr = arrayCreateNoInit(arrayLength(_arr1), _exp1);

            tmp26 = ((modelica_integer) 1); tmp27 = 1; tmp28 = arrayLength(_arr1);
            if(!(((tmp27 > 0) && (tmp26 > tmp28)) || ((tmp27 < 0) && (tmp26 < tmp28))))
            {
              modelica_integer _i;
              for(_i = ((modelica_integer) 1); in_range_integer(_i, tmp26, tmp28); _i += tmp27)
              {
                tmpMeta25 = mmc_mk_box1(0, arrayGetNoBoundsChecking(_arr1, _i));
                arrayUpdateNoBoundsChecking(_arr, _i, omc_NFExpression_makeArray(threadData, _row_ty, omc_Array_map(threadData, _arr2, (modelica_fnptr) mmc_mk_box2(0,closure12_NFCeval_evalBinaryScalarProduct,tmpMeta25)), 1 /* true */));
              }
            }

            _exp = omc_NFExpression_makeArray(threadData, _mat_ty, _arr, 1 /* true */);
          }
          tmpMeta1 = _exp;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta29;
          
          /* Pattern matching succeeded */
          tmpMeta29 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _exp1, omc_NFOperator_makeMul(threadData, _OMC_LIT234), _exp2);
          _exp = tmpMeta29;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT266, _exp, _OMC_LIT267);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBinaryScalarProduct(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      modelica_metatype _elem_ty = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _elem_ty has no default value.
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_integer tmp8;
          modelica_integer tmp9;
          modelica_integer tmp10;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,8,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,7,2) == 0) goto tmp3_end;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 2));
          
          _elem_ty = tmpMeta7;
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!(arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3)))) == arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3)))))) goto tmp3_end;
          _exp = omc_NFExpression_makeZero(threadData, _elem_ty);

          tmp8 = ((modelica_integer) 1); tmp9 = 1; tmp10 = arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))));
          if(!(((tmp9 > 0) && (tmp8 > tmp10)) || ((tmp9 < 0) && (tmp8 < tmp10))))
          {
            modelica_integer _i;
            for(_i = ((modelica_integer) 1); in_range_integer(_i, tmp8, tmp10); _i += tmp9)
            {
              _exp = omc_NFCeval_evalBinaryAdd(threadData, _exp, omc_NFCeval_evalBinaryMul(threadData, arrayGetNoBoundsChecking((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))), _i), arrayGetNoBoundsChecking((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3))), _i)));
            }
          }
          tmpMeta1 = _exp;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta11;
          
          /* Pattern matching succeeded */
          tmpMeta11 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _exp1, omc_NFOperator_makeMul(threadData, _OMC_LIT234), _exp2);
          _exp = tmpMeta11;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT268, _exp, _OMC_LIT269);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure13_NFCeval_evalBinaryScalarProduct(threadData_t *thData, modelica_metatype closure, modelica_metatype exp1)
{
  modelica_metatype exp2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryScalarProduct(thData, exp1, exp2);
}
DLLDirection
modelica_metatype omc_NFCeval_evalBinaryMulMatrixVector(threadData_t *threadData, modelica_metatype _matrixExp, modelica_metatype _vectorExp)
{
  modelica_metatype _exp = NULL;
  modelica_metatype _n = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype _arr = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  // _n has no default value.
  // _ty has no default value.
  // _arr has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _matrixExp;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta13;
          modelica_metatype tmpMeta14;
          modelica_metatype tmpMeta15;
          modelica_metatype tmpMeta16;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,7,2) == 0) goto tmp3_end;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 2));
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 3));
          if (listEmpty(tmpMeta8)) goto tmp3_end;
          tmpMeta9 = MMC_CAR(tmpMeta8);
          tmpMeta10 = MMC_CDR(tmpMeta8);
          if (listEmpty(tmpMeta10)) goto tmp3_end;
          tmpMeta11 = MMC_CAR(tmpMeta10);
          tmpMeta12 = MMC_CDR(tmpMeta10);
          if (!listEmpty(tmpMeta12)) goto tmp3_end;
          tmpMeta13 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          
          _ty = tmpMeta7;
          _n = tmpMeta9;
          _arr = tmpMeta13;
          /* Pattern matching succeeded */
          tmpMeta14 = mmc_mk_box1(0, _vectorExp);
          _arr = omc_Array_map(threadData, _arr, (modelica_fnptr) mmc_mk_box2(0,closure13_NFCeval_evalBinaryScalarProduct,tmpMeta14));
          tmpMeta15 = mmc_mk_cons(_n, MMC_REFSTRUCTLIT(mmc_nil));
          tmpMeta16 = mmc_mk_box3(10, &NFType_ARRAY__desc, _ty, tmpMeta15);
          tmpMeta1 = omc_NFExpression_makeArray(threadData, tmpMeta16, _arr, 1 /* true */);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta17;
          
          /* Pattern matching succeeded */
          tmpMeta17 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _matrixExp, omc_NFOperator_makeMul(threadData, _OMC_LIT234), _vectorExp);
          _exp = tmpMeta17;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT270, _exp, _OMC_LIT271);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure14_NFCeval_evalBinaryScalarProduct(threadData_t *thData, modelica_metatype closure, modelica_metatype exp2)
{
  modelica_metatype exp1 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryScalarProduct(thData, exp1, exp2);
}
DLLDirection
modelica_metatype omc_NFCeval_evalBinaryMulVectorMatrix(threadData_t *threadData, modelica_metatype _vectorExp, modelica_metatype _matrixExp)
{
  modelica_metatype _exp = NULL;
  modelica_metatype _m = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype _arr = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  // _m has no default value.
  // _ty has no default value.
  // _arr has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = omc_NFExpression_transposeArray(threadData, _matrixExp);
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta13;
          modelica_metatype tmpMeta14;
          modelica_metatype tmpMeta15;
          modelica_metatype tmpMeta16;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,7,2) == 0) goto tmp3_end;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 2));
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 3));
          if (listEmpty(tmpMeta8)) goto tmp3_end;
          tmpMeta9 = MMC_CAR(tmpMeta8);
          tmpMeta10 = MMC_CDR(tmpMeta8);
          if (listEmpty(tmpMeta10)) goto tmp3_end;
          tmpMeta11 = MMC_CAR(tmpMeta10);
          tmpMeta12 = MMC_CDR(tmpMeta10);
          if (!listEmpty(tmpMeta12)) goto tmp3_end;
          tmpMeta13 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          
          _ty = tmpMeta7;
          _m = tmpMeta9;
          _arr = tmpMeta13;
          /* Pattern matching succeeded */
          tmpMeta14 = mmc_mk_box1(0, _vectorExp);
          _arr = omc_Array_map(threadData, _arr, (modelica_fnptr) mmc_mk_box2(0,closure14_NFCeval_evalBinaryScalarProduct,tmpMeta14));
          tmpMeta15 = mmc_mk_cons(_m, MMC_REFSTRUCTLIT(mmc_nil));
          tmpMeta16 = mmc_mk_box3(10, &NFType_ARRAY__desc, _ty, tmpMeta15);
          tmpMeta1 = omc_NFExpression_makeArray(threadData, tmpMeta16, _arr, 1 /* true */);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta17;
          
          /* Pattern matching succeeded */
          tmpMeta17 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _vectorExp, omc_NFOperator_makeMul(threadData, _OMC_LIT234), _matrixExp);
          _exp = tmpMeta17;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT272, _exp, _OMC_LIT273);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure15_NFCeval_evalBinaryArrayScalar(threadData_t *thData, modelica_metatype closure, modelica_metatype arrayExp)
{
  modelica_metatype scalarExp = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  modelica_fnptr opFunc = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),2));
  return boxptr_NFCeval_evalBinaryArrayScalar(thData, arrayExp, scalarExp, opFunc);
}
DLLDirection
modelica_metatype omc_NFCeval_evalBinaryArrayScalar(threadData_t *threadData, modelica_metatype _arrayExp, modelica_metatype _scalarExp, modelica_fnptr _opFunc)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arrayExp;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(0, _scalarExp, ((modelica_fnptr) _opFunc));
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arrayExp), 2))), omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arrayExp), 3))), (modelica_fnptr) mmc_mk_box2(0,closure15_NFCeval_evalBinaryArrayScalar,tmpMeta6)), 1 /* true */);
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_opFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_opFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_opFunc), 2))), _arrayExp, _scalarExp) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_opFunc), 1)))) (threadData, _arrayExp, _scalarExp);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure16_NFCeval_evalBinaryScalarArray(threadData_t *thData, modelica_metatype closure, modelica_metatype arrayExp)
{
  modelica_metatype scalarExp = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  modelica_fnptr opFunc = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),2));
  return boxptr_NFCeval_evalBinaryScalarArray(thData, scalarExp, arrayExp, opFunc);
}
DLLDirection
modelica_metatype omc_NFCeval_evalBinaryScalarArray(threadData_t *threadData, modelica_metatype _scalarExp, modelica_metatype _arrayExp, modelica_fnptr _opFunc)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _arrayExp;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(0, _scalarExp, ((modelica_fnptr) _opFunc));
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arrayExp), 2))), omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_arrayExp), 3))), (modelica_fnptr) mmc_mk_box2(0,closure16_NFCeval_evalBinaryScalarArray,tmpMeta6)), 1 /* true */);
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_opFunc), 2))) ? ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_opFunc), 1)))) (threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_opFunc), 2))), _scalarExp, _arrayExp) : ((modelica_metatype(*)(threadData_t*, modelica_metatype, modelica_metatype)) (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_opFunc), 1)))) (threadData, _scalarExp, _arrayExp);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure17_NFCeval_evalBinaryPow(threadData_t *thData, modelica_metatype closure, modelica_metatype exp1, modelica_metatype exp2)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryPow(thData, exp1, exp2, target);
}
DLLDirection
modelica_metatype omc_NFCeval_evalBinaryPow(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2, modelica_metatype _target)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 4; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!((mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) < 0.0) && (((modelica_real)((modelica_integer)floor(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))))))) != mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))))))) goto tmp3_end;
          if(omc_NFCeval_EvalTarget_hasInfo(threadData, _target))
          {
            tmpMeta6 = mmc_mk_cons(omc_NFExpression_toString(threadData, _exp1), mmc_mk_cons(omc_NFExpression_toString(threadData, _exp2), MMC_REFSTRUCTLIT(mmc_nil)));
            omc_Error_addSourceMessage(threadData, _OMC_LIT276, tmpMeta6, omc_NFCeval_EvalTarget_getInfo(threadData, _target));

            goto goto_2;
          }
          tmpMeta7 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _exp1, omc_NFOperator_makePow(threadData, _OMC_LIT263), _exp2);
          tmpMeta1 = tmpMeta7;
          goto tmp3_done;
        }
        case 1: {
          modelica_real tmp8;
          modelica_real tmp9;
          modelica_real tmp10;
          modelica_real tmp11;
          modelica_real tmp12;
          modelica_real tmp13;
          modelica_real tmp14;
          modelica_metatype tmpMeta15;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp8 = mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))));
          tmp9 = mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))));
          if(tmp8 < 0.0 && tmp9 != 0.0)
          {
            tmp11 = modf(tmp9, &tmp12);
            
            if(tmp11 > 0.5)
            {
              tmp11 -= 1.0;
              tmp12 += 1.0;
            }
            else if(tmp11 < -0.5)
            {
              tmp11 += 1.0;
              tmp12 -= 1.0;
            }
            
            if(fabs(tmp11) < 1e-10)
              tmp10 = pow(tmp8, tmp12);
            else
            {
              tmp14 = modf(1.0/tmp9, &tmp13);
              if(tmp14 > 0.5)
              {
                tmp14 -= 1.0;
                tmp13 += 1.0;
              }
              else if(tmp14 < -0.5)
              {
                tmp14 += 1.0;
                tmp13 -= 1.0;
              }
              if(fabs(tmp14) < 1e-10 && ((unsigned long)tmp13 & 1))
              {
                tmp10 = -pow(-tmp8, tmp11)*pow(tmp8, tmp12);
              }
              else
              {
                goto goto_2;
              }
            }
          }
          else
          {
            tmp10 = pow(tmp8, tmp9);
          }
          if(isnan(tmp10) || isinf(tmp10))
          {
            goto goto_2;
          }tmpMeta15 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(tmp10));
          tmpMeta1 = tmpMeta15;
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta16;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!(arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3)))) == arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3)))))) goto tmp3_end;
          tmpMeta16 = mmc_mk_box1(0, _target);
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), omc_Array_threadMap(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3))), (modelica_fnptr) mmc_mk_box2(0,closure17_NFCeval_evalBinaryPow,tmpMeta16)), 1 /* true */);
          goto tmp3_done;
        }
        case 3: {
          modelica_metatype tmpMeta17;
          
          /* Pattern matching succeeded */
          tmpMeta17 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _exp1, omc_NFOperator_makePow(threadData, _OMC_LIT234), _exp2);
          _exp = tmpMeta17;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT277, _exp, _OMC_LIT278);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalMultaryMulDiv(threadData_t *threadData, modelica_metatype _arguments, modelica_metatype _inv_arguments, modelica_metatype _operator_ty, modelica_boolean *out_isNeutral)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  modelica_boolean _isNeutral;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  modelica_metatype tmpMeta5;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  tmpMeta1 = mmc_mk_box2(33, &NFExpression_EMPTY__desc, _operator_ty);
  _exp = tmpMeta1;
  // _isNeutral has no default value.
  {
    modelica_metatype _arg;
    for (tmpMeta2 = _arguments; !listEmpty(tmpMeta2); tmpMeta2=MMC_CDR(tmpMeta2))
    {
      _arg = MMC_CAR(tmpMeta2);
      _exp = omc_NFCeval_evalBinaryMul(threadData, _exp, _arg);
    }
  }

  {
    modelica_metatype _arg;
    for (tmpMeta4 = _inv_arguments; !listEmpty(tmpMeta4); tmpMeta4=MMC_CDR(tmpMeta4))
    {
      _arg = MMC_CAR(tmpMeta4);
      _exp = omc_NFCeval_evalBinaryDiv(threadData, _exp, _arg, _OMC_LIT36);
    }
  }

  _isNeutral = (omc_NFExpression_isEmpty(threadData, _exp) || omc_NFExpression_isOne(threadData, _exp));
  _return: OMC_LABEL_UNUSED
  if (out_isNeutral) { *out_isNeutral = _isNeutral; }
  return _exp;
}
modelica_metatype boxptr_NFCeval_evalMultaryMulDiv(threadData_t *threadData, modelica_metatype _arguments, modelica_metatype _inv_arguments, modelica_metatype _operator_ty, modelica_metatype *out_isNeutral)
{
  modelica_boolean _isNeutral;
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  _exp = omc_NFCeval_evalMultaryMulDiv(threadData, _arguments, _inv_arguments, _operator_ty, &_isNeutral);
  /* skip box _exp; NFExpression */
  if (out_isNeutral) { *out_isNeutral = mmc_mk_icon(_isNeutral); }
  return _exp;
}

static modelica_metatype closure18_NFCeval_evalBinaryDiv(threadData_t *thData, modelica_metatype closure, modelica_metatype exp1, modelica_metatype exp2)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryDiv(thData, exp1, exp2, target);
}static modelica_metatype closure19_NFCeval_evalBinaryDiv(threadData_t *thData, modelica_metatype closure, modelica_metatype exp1)
{
  modelica_metatype exp2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),2));
  return boxptr_NFCeval_evalBinaryDiv(thData, exp1, exp2, target);
}static modelica_metatype closure20_NFCeval_evalBinaryDiv(threadData_t *thData, modelica_metatype closure, modelica_metatype exp2)
{
  modelica_metatype exp1 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),2));
  return boxptr_NFCeval_evalBinaryDiv(thData, exp1, exp2, target);
}
DLLDirection
modelica_metatype omc_NFCeval_evalBinaryDiv(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2, modelica_metatype _target)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 12; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!omc_NFExpression_isZero(threadData, _exp2)) goto tmp3_end;
          if(omc_NFCeval_EvalTarget_hasInfo(threadData, _target))
          {
            tmpMeta6 = mmc_mk_cons(omc_NFExpression_toString(threadData, _exp1), mmc_mk_cons(omc_NFExpression_toString(threadData, _exp2), MMC_REFSTRUCTLIT(mmc_nil)));
            omc_Error_addSourceMessage(threadData, _OMC_LIT144, tmpMeta6, omc_NFCeval_EvalTarget_getInfo(threadData, _target));

            goto goto_2;
          }
          else
          {
            tmpMeta7 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _exp1, omc_NFOperator_makeDiv(threadData, _OMC_LIT263), _exp2);
            _exp = tmpMeta7;
          }
          tmpMeta1 = _exp;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta8;
          modelica_integer tmp9;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_2), 2));
          tmp9 = mmc_unbox_integer(tmpMeta8);
          if (1 != tmp9) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = _exp1;
          goto tmp3_done;
        }
        case 2: {
          modelica_real tmp10;
          modelica_metatype tmpMeta11;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp10 = ((modelica_real)mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
          if (tmp10 == 0) {goto goto_2;}
          tmpMeta11 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real((mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))))) / tmp10));
          tmpMeta1 = tmpMeta11;
          goto tmp3_done;
        }
        case 3: {
          modelica_real tmp12;
          modelica_metatype tmpMeta13;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp12 = mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))));
          if (tmp12 == 0) {goto goto_2;}
          tmpMeta13 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real((((modelica_real)mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))))) / tmp12));
          tmpMeta1 = tmpMeta13;
          goto tmp3_done;
        }
        case 4: {
          modelica_integer tmp14;
          modelica_metatype tmpMeta15;
          modelica_real tmp16;
          modelica_metatype tmpMeta17;
          modelica_boolean tmp18;
          modelica_metatype tmpMeta19;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp18 = (modelica_boolean)(modelica_integer_mod(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))), mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))))) == ((modelica_integer) 0));
          if(tmp18)
          {
            tmp14 = mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))));
            if (tmp14 == 0) {goto goto_2;}
            tmpMeta15 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(modelica_div_integer(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))),tmp14).quot));
            tmpMeta19 = tmpMeta15;
          }
          else
          {
            tmp16 = ((modelica_real)mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))));
            if (tmp16 == 0) {goto goto_2;}
            tmpMeta17 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real((((modelica_real)mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))))) / tmp16));
            tmpMeta19 = tmpMeta17;
          }
          tmpMeta1 = tmpMeta19;
          goto tmp3_done;
        }
        case 5: {
          modelica_real tmp20;
          modelica_metatype tmpMeta21;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp20 = mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))));
          if (tmp20 == 0) {goto goto_2;}
          tmpMeta21 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real((mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))))) / tmp20));
          tmpMeta1 = tmpMeta21;
          goto tmp3_done;
        }
        case 6: {
          modelica_metatype tmpMeta22;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!(arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3)))) == arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3)))))) goto tmp3_end;
          tmpMeta22 = mmc_mk_box1(0, _target);
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), omc_Array_threadMap(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3))), (modelica_fnptr) mmc_mk_box2(0,closure18_NFCeval_evalBinaryDiv,tmpMeta22)), 1 /* true */);
          goto tmp3_done;
        }
        case 7: {
          modelica_metatype tmpMeta23;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta23 = mmc_mk_box2(0, _exp2, _target);
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))), (modelica_fnptr) mmc_mk_box2(0,closure19_NFCeval_evalBinaryDiv,tmpMeta23)), mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 4)))));
          goto tmp3_done;
        }
        case 8: {
          modelica_metatype tmpMeta24;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta24 = mmc_mk_box2(0, _exp1, _target);
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))), omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3))), (modelica_fnptr) mmc_mk_box2(0,closure20_NFCeval_evalBinaryDiv,tmpMeta24)), mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 4)))));
          goto tmp3_done;
        }
        case 9: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,30,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          /* Tail recursive call */
          _exp1 = omc_NFExpression_makeOne(threadData, omc_NFExpression_typeOf(threadData, _exp2));
          goto _tailrecursive;
          /* TODO: Make sure any eventual dead code below is never generated */
          goto tmp3_done;
        }
        case 10: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,30,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = _exp1;
          goto tmp3_done;
        }
        case 11: {
          modelica_metatype tmpMeta25;
          
          /* Pattern matching succeeded */
          tmpMeta25 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _exp1, omc_NFOperator_makeDiv(threadData, _OMC_LIT234), _exp2);
          _exp = tmpMeta25;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT279, _exp, _OMC_LIT280);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure21_NFCeval_evalBinaryMul(threadData_t *thData, modelica_metatype closure, modelica_metatype exp1)
{
  modelica_metatype exp2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryMul(thData, exp1, exp2);
}static modelica_metatype closure22_NFCeval_evalBinaryMul(threadData_t *thData, modelica_metatype closure, modelica_metatype exp2)
{
  modelica_metatype exp1 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryMul(thData, exp1, exp2);
}
DLLDirection
modelica_metatype omc_NFCeval_evalBinaryMul(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 10; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real((mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))))) * (((modelica_real)mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real((((modelica_real)mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))))) * (mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))))));
          tmpMeta1 = tmpMeta7;
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta8;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta8 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer((mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))))) * (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))))));
          tmpMeta1 = tmpMeta8;
          goto tmp3_done;
        }
        case 3: {
          modelica_metatype tmpMeta9;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta9 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real((mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))))) * (mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))))));
          tmpMeta1 = tmpMeta9;
          goto tmp3_done;
        }
        case 4: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!(arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3)))) == arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3)))))) goto tmp3_end;
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), omc_Array_threadMap(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3))), boxvar_NFCeval_evalBinaryMul), 1 /* true */);
          goto tmp3_done;
        }
        case 5: {
          modelica_metatype tmpMeta10;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta10 = mmc_mk_box1(0, _exp2);
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))), (modelica_fnptr) mmc_mk_box2(0,closure21_NFCeval_evalBinaryMul,tmpMeta10)), mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 4)))));
          goto tmp3_done;
        }
        case 6: {
          modelica_metatype tmpMeta11;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta11 = mmc_mk_box1(0, _exp1);
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))), omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3))), (modelica_fnptr) mmc_mk_box2(0,closure22_NFCeval_evalBinaryMul,tmpMeta11)), mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 4)))));
          goto tmp3_done;
        }
        case 7: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,30,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = _exp2;
          goto tmp3_done;
        }
        case 8: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,30,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = _exp1;
          goto tmp3_done;
        }
        case 9: {
          modelica_metatype tmpMeta12;
          
          /* Pattern matching succeeded */
          tmpMeta12 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _exp1, omc_NFOperator_makeMul(threadData, _OMC_LIT234), _exp2);
          _exp = tmpMeta12;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT281, _exp, _OMC_LIT282);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalMultaryAddSub(threadData_t *threadData, modelica_metatype _arguments, modelica_metatype _inv_arguments, modelica_metatype _operator_ty, modelica_boolean *out_isNeutral)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  modelica_boolean _isNeutral;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  modelica_metatype tmpMeta5;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  tmpMeta1 = mmc_mk_box2(33, &NFExpression_EMPTY__desc, _operator_ty);
  _exp = tmpMeta1;
  // _isNeutral has no default value.
  {
    modelica_metatype _arg;
    for (tmpMeta2 = _arguments; !listEmpty(tmpMeta2); tmpMeta2=MMC_CDR(tmpMeta2))
    {
      _arg = MMC_CAR(tmpMeta2);
      _exp = omc_NFCeval_evalBinaryAdd(threadData, _exp, _arg);
    }
  }

  {
    modelica_metatype _arg;
    for (tmpMeta4 = _inv_arguments; !listEmpty(tmpMeta4); tmpMeta4=MMC_CDR(tmpMeta4))
    {
      _arg = MMC_CAR(tmpMeta4);
      _exp = omc_NFCeval_evalBinarySub(threadData, _exp, _arg);
    }
  }

  _isNeutral = (omc_NFExpression_isEmpty(threadData, _exp) || omc_NFExpression_isZero(threadData, _exp));
  _return: OMC_LABEL_UNUSED
  if (out_isNeutral) { *out_isNeutral = _isNeutral; }
  return _exp;
}
modelica_metatype boxptr_NFCeval_evalMultaryAddSub(threadData_t *threadData, modelica_metatype _arguments, modelica_metatype _inv_arguments, modelica_metatype _operator_ty, modelica_metatype *out_isNeutral)
{
  modelica_boolean _isNeutral;
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  _exp = omc_NFCeval_evalMultaryAddSub(threadData, _arguments, _inv_arguments, _operator_ty, &_isNeutral);
  /* skip box _exp; NFExpression */
  if (out_isNeutral) { *out_isNeutral = mmc_mk_icon(_isNeutral); }
  return _exp;
}

static modelica_metatype closure23_NFCeval_evalBinarySub(threadData_t *thData, modelica_metatype closure, modelica_metatype exp1)
{
  modelica_metatype exp2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinarySub(thData, exp1, exp2);
}static modelica_metatype closure24_NFCeval_evalBinarySub(threadData_t *thData, modelica_metatype closure, modelica_metatype exp2)
{
  modelica_metatype exp1 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinarySub(thData, exp1, exp2);
}
DLLDirection
modelica_metatype omc_NFCeval_evalBinarySub(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 10; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) - (((modelica_real)mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(((modelica_real)mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))))) - (mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))))));
          tmpMeta1 = tmpMeta7;
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta8;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta8 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) - (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))))));
          tmpMeta1 = tmpMeta8;
          goto tmp3_done;
        }
        case 3: {
          modelica_metatype tmpMeta9;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta9 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) - (mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))))));
          tmpMeta1 = tmpMeta9;
          goto tmp3_done;
        }
        case 4: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!(arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3)))) == arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3)))))) goto tmp3_end;
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), omc_Array_threadMap(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3))), boxvar_NFCeval_evalBinarySub), 1 /* true */);
          goto tmp3_done;
        }
        case 5: {
          modelica_metatype tmpMeta10;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta10 = mmc_mk_box1(0, _exp2);
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))), (modelica_fnptr) mmc_mk_box2(0,closure23_NFCeval_evalBinarySub,tmpMeta10)), mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 4)))));
          goto tmp3_done;
        }
        case 6: {
          modelica_metatype tmpMeta11;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta11 = mmc_mk_box1(0, _exp1);
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))), omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3))), (modelica_fnptr) mmc_mk_box2(0,closure24_NFCeval_evalBinarySub,tmpMeta11)), mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 4)))));
          goto tmp3_done;
        }
        case 7: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,30,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          /* Tail recursive call */
          _exp1 = omc_NFExpression_makeZero(threadData, omc_NFExpression_typeOf(threadData, _exp2));
          goto _tailrecursive;
          /* TODO: Make sure any eventual dead code below is never generated */
          goto tmp3_done;
        }
        case 8: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,30,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = _exp1;
          goto tmp3_done;
        }
        case 9: {
          modelica_metatype tmpMeta12;
          
          /* Pattern matching succeeded */
          tmpMeta12 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _exp1, omc_NFOperator_makeSub(threadData, _OMC_LIT234), _exp2);
          _exp = tmpMeta12;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT283, _exp, _OMC_LIT284);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure25_NFCeval_evalBinaryAdd(threadData_t *thData, modelica_metatype closure, modelica_metatype exp1)
{
  modelica_metatype exp2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryAdd(thData, exp1, exp2);
}static modelica_metatype closure26_NFCeval_evalBinaryAdd(threadData_t *thData, modelica_metatype closure, modelica_metatype exp2)
{
  modelica_metatype exp1 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryAdd(thData, exp1, exp2);
}
DLLDirection
modelica_metatype omc_NFCeval_evalBinaryAdd(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _exp2)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;modelica_metatype tmp4_2;
    tmp4_1 = _exp1;
    tmp4_2 = _exp2;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 14; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta6 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) + ((modelica_real)mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2)))))));
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta7 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(((modelica_real)mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))))) + mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))))));
          tmpMeta1 = tmpMeta7;
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta8;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,0,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta8 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) + mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))))));
          tmpMeta1 = tmpMeta8;
          goto tmp3_done;
        }
        case 3: {
          modelica_metatype tmpMeta9;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,1,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta9 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2)))) + mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))))));
          tmpMeta1 = tmpMeta9;
          goto tmp3_done;
        }
        case 4: {
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta10 = stringAppend((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))),(MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))));
          tmpMeta11 = mmc_mk_box2(5, &NFExpression_STRING__desc, tmpMeta10);
          tmpMeta1 = tmpMeta11;
          goto tmp3_done;
        }
        case 5: {
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta13;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta12 = stringAppend((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))),(MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))));
          tmpMeta13 = mmc_mk_box2(5, &NFExpression_STRING__desc, tmpMeta12);
          tmpMeta1 = tmpMeta13;
          goto tmp3_done;
        }
        case 6: {
          modelica_metatype tmpMeta14;
          modelica_metatype tmpMeta15;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,2,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta14 = stringAppend((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))),(MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))));
          tmpMeta15 = mmc_mk_box2(5, &NFExpression_STRING__desc, tmpMeta14);
          tmpMeta1 = tmpMeta15;
          goto tmp3_done;
        }
        case 7: {
          modelica_metatype tmpMeta16;
          modelica_metatype tmpMeta17;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,32,1) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,32,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta16 = stringAppend((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))),(MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))));
          tmpMeta17 = mmc_mk_box2(5, &NFExpression_STRING__desc, tmpMeta16);
          tmpMeta1 = tmpMeta17;
          goto tmp3_done;
        }
        case 8: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!(arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3)))) == arrayLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3)))))) goto tmp3_end;
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), omc_Array_threadMap(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3))), boxvar_NFCeval_evalBinaryAdd), 1 /* true */);
          goto tmp3_done;
        }
        case 9: {
          modelica_metatype tmpMeta18;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta18 = mmc_mk_box1(0, _exp2);
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 2))), omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 3))), (modelica_fnptr) mmc_mk_box2(0,closure25_NFCeval_evalBinaryAdd,tmpMeta18)), mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp1), 4)))));
          goto tmp3_done;
        }
        case 10: {
          modelica_metatype tmpMeta19;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,8,3) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta19 = mmc_mk_box1(0, _exp1);
          tmpMeta1 = omc_NFExpression_makeArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 2))), omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 3))), (modelica_fnptr) mmc_mk_box2(0,closure26_NFCeval_evalBinaryAdd,tmpMeta19)), mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp2), 4)))));
          goto tmp3_done;
        }
        case 11: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,30,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = _exp2;
          goto tmp3_done;
        }
        case 12: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_2,30,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmpMeta1 = _exp1;
          goto tmp3_done;
        }
        case 13: {
          modelica_metatype tmpMeta20;
          
          /* Pattern matching succeeded */
          tmpMeta20 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _exp1, omc_NFOperator_makeAdd(threadData, _OMC_LIT234), _exp2);
          _exp = tmpMeta20;

          omc_NFCeval_printFailedEvalError(threadData, _OMC_LIT285, _exp, _OMC_LIT286);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure27_NFCeval_evalBinaryDiv(threadData_t *thData, modelica_metatype closure, modelica_metatype exp1, modelica_metatype exp2)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryDiv(thData, exp1, exp2, target);
}static modelica_metatype closure28_NFCeval_evalBinaryDiv(threadData_t *thData, modelica_metatype closure, modelica_metatype exp1, modelica_metatype exp2)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryDiv(thData, exp1, exp2, target);
}static modelica_metatype closure29_NFCeval_evalBinaryPow(threadData_t *thData, modelica_metatype closure, modelica_metatype exp1, modelica_metatype exp2)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryPow(thData, exp1, exp2, target);
}static modelica_metatype closure30_NFCeval_evalBinaryPow(threadData_t *thData, modelica_metatype closure, modelica_metatype exp1, modelica_metatype exp2)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryPow(thData, exp1, exp2, target);
}
DLLDirection
modelica_metatype omc_NFCeval_evalBinaryOp__dispatch(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _op, modelica_metatype _exp2, modelica_metatype _target)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_op), 3)));
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(mmc_unbox_integer(tmp4_1))) {
        case 1: {
          modelica_integer tmp5;
          tmp5 = mmc_unbox_integer(tmp4_1);
          if (1 != tmp5) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryAdd(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        case 2: {
          modelica_integer tmp6;
          tmp6 = mmc_unbox_integer(tmp4_1);
          if (2 != tmp6) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinarySub(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        case 3: {
          modelica_integer tmp7;
          tmp7 = mmc_unbox_integer(tmp4_1);
          if (3 != tmp7) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryMul(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        case 4: {
          modelica_integer tmp8;
          tmp8 = mmc_unbox_integer(tmp4_1);
          if (4 != tmp8) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryDiv(threadData, _exp1, _exp2, _target);
          goto tmp3_done;
        }
        case 5: {
          modelica_integer tmp9;
          tmp9 = mmc_unbox_integer(tmp4_1);
          if (5 != tmp9) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryPow(threadData, _exp1, _exp2, _target);
          goto tmp3_done;
        }
        case 11: {
          modelica_integer tmp10;
          tmp10 = mmc_unbox_integer(tmp4_1);
          if (11 != tmp10) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryScalarArray(threadData, _exp1, _exp2, boxvar_NFCeval_evalBinaryAdd);
          goto tmp3_done;
        }
        case 12: {
          modelica_integer tmp11;
          tmp11 = mmc_unbox_integer(tmp4_1);
          if (12 != tmp11) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryArrayScalar(threadData, _exp1, _exp2, boxvar_NFCeval_evalBinaryAdd);
          goto tmp3_done;
        }
        case 13: {
          modelica_integer tmp12;
          tmp12 = mmc_unbox_integer(tmp4_1);
          if (13 != tmp12) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryScalarArray(threadData, _exp1, _exp2, boxvar_NFCeval_evalBinarySub);
          goto tmp3_done;
        }
        case 14: {
          modelica_integer tmp13;
          tmp13 = mmc_unbox_integer(tmp4_1);
          if (14 != tmp13) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryArrayScalar(threadData, _exp1, _exp2, boxvar_NFCeval_evalBinarySub);
          goto tmp3_done;
        }
        case 15: {
          modelica_integer tmp14;
          tmp14 = mmc_unbox_integer(tmp4_1);
          if (15 != tmp14) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryScalarArray(threadData, _exp1, _exp2, boxvar_NFCeval_evalBinaryMul);
          goto tmp3_done;
        }
        case 16: {
          modelica_integer tmp15;
          tmp15 = mmc_unbox_integer(tmp4_1);
          if (16 != tmp15) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryArrayScalar(threadData, _exp1, _exp2, boxvar_NFCeval_evalBinaryMul);
          goto tmp3_done;
        }
        case 17: {
          modelica_integer tmp16;
          tmp16 = mmc_unbox_integer(tmp4_1);
          if (17 != tmp16) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryMulVectorMatrix(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        case 18: {
          modelica_integer tmp17;
          tmp17 = mmc_unbox_integer(tmp4_1);
          if (18 != tmp17) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryMulMatrixVector(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        case 19: {
          modelica_integer tmp18;
          tmp18 = mmc_unbox_integer(tmp4_1);
          if (19 != tmp18) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryScalarProduct(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        case 20: {
          modelica_integer tmp19;
          tmp19 = mmc_unbox_integer(tmp4_1);
          if (20 != tmp19) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryMatrixProduct(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        case 21: {
          modelica_integer tmp20;
          modelica_metatype tmpMeta21;
          tmp20 = mmc_unbox_integer(tmp4_1);
          if (21 != tmp20) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta21 = mmc_mk_box1(0, _target);
          tmpMeta1 = omc_NFCeval_evalBinaryScalarArray(threadData, _exp1, _exp2, (modelica_fnptr) mmc_mk_box2(0,closure27_NFCeval_evalBinaryDiv,tmpMeta21));
          goto tmp3_done;
        }
        case 22: {
          modelica_integer tmp22;
          modelica_metatype tmpMeta23;
          tmp22 = mmc_unbox_integer(tmp4_1);
          if (22 != tmp22) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta23 = mmc_mk_box1(0, _target);
          tmpMeta1 = omc_NFCeval_evalBinaryArrayScalar(threadData, _exp1, _exp2, (modelica_fnptr) mmc_mk_box2(0,closure28_NFCeval_evalBinaryDiv,tmpMeta23));
          goto tmp3_done;
        }
        case 23: {
          modelica_integer tmp24;
          modelica_metatype tmpMeta25;
          tmp24 = mmc_unbox_integer(tmp4_1);
          if (23 != tmp24) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta25 = mmc_mk_box1(0, _target);
          tmpMeta1 = omc_NFCeval_evalBinaryScalarArray(threadData, _exp1, _exp2, (modelica_fnptr) mmc_mk_box2(0,closure29_NFCeval_evalBinaryPow,tmpMeta25));
          goto tmp3_done;
        }
        case 24: {
          modelica_integer tmp26;
          modelica_metatype tmpMeta27;
          tmp26 = mmc_unbox_integer(tmp4_1);
          if (24 != tmp26) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta27 = mmc_mk_box1(0, _target);
          tmpMeta1 = omc_NFCeval_evalBinaryArrayScalar(threadData, _exp1, _exp2, (modelica_fnptr) mmc_mk_box2(0,closure30_NFCeval_evalBinaryPow,tmpMeta27));
          goto tmp3_done;
        }
        case 25: {
          modelica_integer tmp28;
          tmp28 = mmc_unbox_integer(tmp4_1);
          if (25 != tmp28) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalBinaryPowMatrix(threadData, _exp1, _exp2);
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          modelica_metatype tmpMeta29;
          modelica_metatype tmpMeta30;
          
          /* Pattern matching succeeded */
          tmpMeta29 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _exp1, _op, _exp2);
          tmpMeta30 = stringAppend(_OMC_LIT287,omc_NFExpression_toString(threadData, tmpMeta29));
          omc_Error_addInternalError(threadData, tmpMeta30, _OMC_LIT288);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalBinaryExp(threadData_t *threadData, modelica_metatype _binaryExp, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_metatype _e1 = NULL;
  modelica_metatype _e2 = NULL;
  modelica_metatype _op = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _e1 has no default value.
  // _e2 has no default value.
  // _op has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _binaryExp;
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,16,3) == 0) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 2));
  tmpMeta3 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 3));
  tmpMeta4 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 4));
  _e1 = tmpMeta2;
  _op = tmpMeta3;
  _e2 = tmpMeta4;

  _result = omc_NFCeval_evalBinaryOp__dispatch(threadData, _e1, _op, _e2, _target);
  _return: OMC_LABEL_UNUSED
  return _result;
}

static modelica_metatype closure31_NFCeval_evalBinaryExp(threadData_t *thData, modelica_metatype closure, modelica_metatype binaryExp)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalBinaryExp(thData, binaryExp, target);
}
DLLDirection
modelica_metatype omc_NFCeval_evalBinaryOp(threadData_t *threadData, modelica_metatype _exp1, modelica_metatype _op, modelica_metatype _exp2, modelica_metatype _target)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  tmpMeta1 = mmc_mk_box4(19, &NFExpression_BINARY__desc, _exp1, _op, _exp2);
  tmpMeta2 = mmc_mk_box1(0, _target);
  _exp = omc_NFExpression_mapSplitExpressions(threadData, tmpMeta1, (modelica_fnptr) mmc_mk_box2(0,closure31_NFCeval_evalBinaryExp,tmpMeta2));
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
void omc_NFCeval_printFailedEvalError(threadData_t *threadData, modelica_string _name, modelica_metatype _exp, modelica_metatype _info)
{
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  tmpMeta1 = stringAppend(_name,_OMC_LIT289);
  tmpMeta2 = stringAppend(tmpMeta1,omc_NFExpression_toString(threadData, _exp));
  tmpMeta3 = stringAppend(tmpMeta2,_OMC_LIT290);
  omc_Error_addInternalError(threadData, tmpMeta3, _info);
  _return: OMC_LABEL_UNUSED
  return;
}

DLLDirection
modelica_metatype omc_NFCeval_evalRangeReal(threadData_t *threadData, modelica_real _start, modelica_real _step, modelica_real _stop)
{
  modelica_metatype _result = NULL;
  modelica_integer _steps;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  modelica_metatype tmpMeta5;
  modelica_metatype tmpMeta6;
  modelica_metatype tmpMeta7;
  modelica_integer tmp8;
  modelica_integer tmp9;
  modelica_integer tmp10;
  modelica_metatype tmpMeta11;
  modelica_metatype tmpMeta12;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _steps has no default value.
  _steps = omc_Util_realRangeSize(threadData, _start, _step, _stop);

  if((_steps == ((modelica_integer) 0)))
  {
    tmpMeta1 = MMC_REFSTRUCTLIT(mmc_nil);
    _result = tmpMeta1;
  }
  else
  {
    if((_steps == ((modelica_integer) 1)))
    {
      tmpMeta3 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(_start));
      tmpMeta2 = mmc_mk_cons(tmpMeta3, MMC_REFSTRUCTLIT(mmc_nil));
      _result = tmpMeta2;
    }
    else
    {
      tmpMeta5 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(_stop));
      tmpMeta4 = mmc_mk_cons(tmpMeta5, MMC_REFSTRUCTLIT(mmc_nil));
      _result = tmpMeta4;

      tmp8 = ((modelica_integer) -2) + _steps; tmp9 = ((modelica_integer) -1); tmp10 = ((modelica_integer) 1);
      if(!(((tmp9 > 0) && (tmp8 > tmp10)) || ((tmp9 < 0) && (tmp8 < tmp10))))
      {
        modelica_integer _i;
        for(_i = ((modelica_integer) -2) + _steps; in_range_integer(_i, tmp8, tmp10); _i += tmp9)
        {
          tmpMeta7 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(_start + (((modelica_real)_i)) * (_step)));
          tmpMeta6 = mmc_mk_cons(tmpMeta7, _result);
          _result = tmpMeta6;
        }
      }

      tmpMeta12 = mmc_mk_box2(4, &NFExpression_REAL__desc, mmc_mk_real(_start));
      tmpMeta11 = mmc_mk_cons(tmpMeta12, _result);
      _result = tmpMeta11;
    }
  }
  _return: OMC_LABEL_UNUSED
  return _result;
}
modelica_metatype boxptr_NFCeval_evalRangeReal(threadData_t *threadData, modelica_metatype _start, modelica_metatype _step, modelica_metatype _stop)
{
  modelica_real tmp1;
  modelica_real tmp2;
  modelica_real tmp3;
  modelica_metatype _result = NULL;
  tmp1 = mmc_unbox_real(_start);
  tmp2 = mmc_unbox_real(_step);
  tmp3 = mmc_unbox_real(_stop);
  _result = omc_NFCeval_evalRangeReal(threadData, tmp1, tmp2, tmp3);
  /* skip box _result; list<NFExpression> */
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalRangeExp(threadData_t *threadData, modelica_metatype _rangeExp)
{
  modelica_metatype _exp = NULL;
  modelica_metatype _start = NULL;
  modelica_metatype _step = NULL;
  modelica_metatype _stop = NULL;
  modelica_metatype _opt_step = NULL;
  modelica_metatype _expl = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype _literals = NULL;
  modelica_integer _istep;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  modelica_metatype tmpMeta5;
  modelica_metatype tmpMeta6;
  modelica_metatype tmpMeta50;
  modelica_metatype tmpMeta51;
  modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  // _start has no default value.
  // _step has no default value.
  // _stop has no default value.
  // _opt_step has no default value.
  // _expl has no default value.
  // _ty has no default value.
  // _literals has no default value.
  // _istep has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = omc_NFSimplifyExp_simplify(threadData, omc_NFExpression_map(threadData, _rangeExp, boxvar_NFExpression_replaceResizableParameter), 0 /* false */);
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,10,4) == 0) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 3));
  tmpMeta3 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 4));
  tmpMeta4 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 5));
  _start = tmpMeta2;
  _opt_step = tmpMeta3;
  _stop = tmpMeta4;

  if(isSome(_opt_step))
  {
    /* Pattern-matching assignment */
    tmpMeta5 = _opt_step;
    if (optionNone(tmpMeta5)) MMC_THROW_INTERNAL();
    tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta5), 1));
    _step = tmpMeta6;

    
    
    { /* match expression */
      modelica_metatype tmp10_1;modelica_metatype tmp10_2;modelica_metatype tmp10_3;
      tmp10_1 = _start;
      tmp10_2 = _step;
      tmp10_3 = _stop;
      {
        volatile mmc_switch_type tmp10;
        int tmp11;
        tmp10 = 0;
        for (; tmp10 < 3; tmp10++) {
          switch (MMC_SWITCH_CAST(tmp10)) {
          case 0: {
            modelica_metatype tmpMeta12;
            modelica_integer tmp13;
            modelica_metatype tmpMeta14;
            if (mmc__uniontype__metarecord__typedef__equal(tmp10_1,0,1) == 0) goto tmp9_end;
            if (mmc__uniontype__metarecord__typedef__equal(tmp10_2,0,1) == 0) goto tmp9_end;
            tmpMeta12 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp10_2), 2));
            tmp13 = mmc_unbox_integer(tmpMeta12);
            if (mmc__uniontype__metarecord__typedef__equal(tmp10_3,0,1) == 0) goto tmp9_end;
            
            _istep = tmp13  /* pattern as ty=Integer */;
            /* Pattern matching succeeded */
            {
              modelica_metatype __omcQ_24tmpVar11;
              modelica_metatype* tmp15;
              modelica_metatype tmpMeta16;
              modelica_metatype tmpMeta17;
              modelica_metatype __omcQ_24tmpVar10;
              modelica_integer tmp18;
              modelica_integer tmp19;
              modelica_integer tmp20;
              modelica_integer _i;
              tmp19 = _istep /* Range step-value */;
              tmp20 = mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_stop), 2)))) /* Range stop-value */;
              _i = mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_start), 2)))) /* Range start-value */;
              if (tmp19 == 0) {
                omc_assert(threadData, omc_dummyFileInfo, "Range with a step of zero.");
              }
              _i = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_start), 2)))) /* Range start-value */)-tmp19;
              tmpMeta16 = MMC_REFSTRUCTLIT(mmc_nil);
              __omcQ_24tmpVar11 = tmpMeta16; /* defaultValue */
              tmp15 = &__omcQ_24tmpVar11;
              while(1) {
                tmp18 = 1;
                if (tmp19 > 0 ? _i+tmp19 <= tmp20 : _i+tmp19 >= tmp20) {
                  _i += tmp19;
                  tmp18--;
                }
                if (tmp18 == 0) {
                  tmpMeta17 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(_i));
                  __omcQ_24tmpVar10 = tmpMeta17;
                  *tmp15 = mmc_mk_cons(__omcQ_24tmpVar10,0);
                  tmp15 = &MMC_CDR(*tmp15);
                } else if (tmp18 == 1) {
                  break;
                } else {
                  goto goto_8;
                }
              }
              *tmp15 = mmc_mk_nil();
              tmpMeta14 = __omcQ_24tmpVar11;
            }
            _expl = tmpMeta14;
            tmpMeta[0+0] = _OMC_LIT26;
            tmpMeta[0+1] = _expl;
            goto tmp9_done;
          }
          case 1: {
            if (mmc__uniontype__metarecord__typedef__equal(tmp10_1,1,1) == 0) goto tmp9_end;
            if (mmc__uniontype__metarecord__typedef__equal(tmp10_2,1,1) == 0) goto tmp9_end;
            if (mmc__uniontype__metarecord__typedef__equal(tmp10_3,1,1) == 0) goto tmp9_end;
            
            /* Pattern matching succeeded */
            _expl = omc_NFCeval_evalRangeReal(threadData, mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_start), 2)))), mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_step), 2)))), mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_stop), 2)))));
            tmpMeta[0+0] = _OMC_LIT263;
            tmpMeta[0+1] = _expl;
            goto tmp9_done;
          }
          case 2: {
            modelica_metatype tmpMeta21;
            
            /* Pattern matching succeeded */
            tmpMeta21 = mmc_mk_cons(_start, mmc_mk_cons(_step, mmc_mk_cons(_stop, MMC_REFSTRUCTLIT(mmc_nil))));
            omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT291, tmpMeta21, _OMC_LIT293);
            goto goto_8;
            goto tmp9_done;
          }
          }
          goto tmp9_end;
          tmp9_end: ;
        }
        goto goto_8;
        goto_8:;
        MMC_THROW_INTERNAL();
        goto tmp9_done;
        tmp9_done:;
      }
    }
    _ty = tmpMeta[0+0];
    _expl = tmpMeta[0+1];
  }
  else
  {
    
    
    { /* match expression */
      modelica_metatype tmp25_1;modelica_metatype tmp25_2;
      tmp25_1 = _start;
      tmp25_2 = _stop;
      {
        volatile mmc_switch_type tmp25;
        int tmp26;
        tmp25 = 0;
        for (; tmp25 < 5; tmp25++) {
          switch (MMC_SWITCH_CAST(tmp25)) {
          case 0: {
            modelica_metatype tmpMeta27;
            if (mmc__uniontype__metarecord__typedef__equal(tmp25_1,0,1) == 0) goto tmp24_end;
            if (mmc__uniontype__metarecord__typedef__equal(tmp25_2,0,1) == 0) goto tmp24_end;
            
            /* Pattern matching succeeded */
            {
              modelica_metatype __omcQ_24tmpVar13;
              modelica_metatype* tmp28;
              modelica_metatype tmpMeta29;
              modelica_metatype tmpMeta30;
              modelica_metatype __omcQ_24tmpVar12;
              modelica_integer tmp31;
              modelica_integer tmp32;
              modelica_integer tmp33;
              modelica_integer _i;
              tmp32 = 1 /* Range step-value */;
              tmp33 = mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_stop), 2)))) /* Range stop-value */;
              _i = mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_start), 2)))) /* Range start-value */;
              _i = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_start), 2)))) /* Range start-value */)-tmp32;
              tmpMeta29 = MMC_REFSTRUCTLIT(mmc_nil);
              __omcQ_24tmpVar13 = tmpMeta29; /* defaultValue */
              tmp28 = &__omcQ_24tmpVar13;
              while(1) {
                tmp31 = 1;
                if (tmp32 > 0 ? _i+tmp32 <= tmp33 : _i+tmp32 >= tmp33) {
                  _i += tmp32;
                  tmp31--;
                }
                if (tmp31 == 0) {
                  tmpMeta30 = mmc_mk_box2(3, &NFExpression_INTEGER__desc, mmc_mk_integer(_i));
                  __omcQ_24tmpVar12 = tmpMeta30;
                  *tmp28 = mmc_mk_cons(__omcQ_24tmpVar12,0);
                  tmp28 = &MMC_CDR(*tmp28);
                } else if (tmp31 == 1) {
                  break;
                } else {
                  goto goto_23;
                }
              }
              *tmp28 = mmc_mk_nil();
              tmpMeta27 = __omcQ_24tmpVar13;
            }
            _expl = tmpMeta27;
            tmpMeta[0+0] = _OMC_LIT26;
            tmpMeta[0+1] = _expl;
            goto tmp24_done;
          }
          case 1: {
            if (mmc__uniontype__metarecord__typedef__equal(tmp25_1,1,1) == 0) goto tmp24_end;
            if (mmc__uniontype__metarecord__typedef__equal(tmp25_2,1,1) == 0) goto tmp24_end;
            
            /* Pattern matching succeeded */
            _expl = omc_NFCeval_evalRangeReal(threadData, mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_start), 2)))), 1.0, mmc_unbox_real((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_stop), 2)))));
            tmpMeta[0+0] = _OMC_LIT263;
            tmpMeta[0+1] = _expl;
            goto tmp24_done;
          }
          case 2: {
            modelica_metatype tmpMeta34;
            if (mmc__uniontype__metarecord__typedef__equal(tmp25_1,3,1) == 0) goto tmp24_end;
            if (mmc__uniontype__metarecord__typedef__equal(tmp25_2,3,1) == 0) goto tmp24_end;
            
            /* Pattern matching succeeded */
            {
              modelica_metatype __omcQ_24tmpVar15;
              modelica_metatype* tmp35;
              modelica_metatype tmpMeta36;
              modelica_metatype tmpMeta37;
              modelica_metatype __omcQ_24tmpVar14;
              modelica_integer tmp38;
              modelica_boolean tmp39;
              modelica_boolean tmp40;
              modelica_boolean _b;
              tmp39 = 1 /* Range step-value */;
              tmp40 = mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_stop), 2)))) /* Range stop-value */;
              _b = mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_start), 2)))) /* Range start-value */;
              _b = (mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_start), 2)))) /* Range start-value */)-tmp39;
              tmpMeta36 = MMC_REFSTRUCTLIT(mmc_nil);
              __omcQ_24tmpVar15 = tmpMeta36; /* defaultValue */
              tmp35 = &__omcQ_24tmpVar15;
              while(1) {
                tmp38 = 1;
                if (tmp39 > 0 ? _b+tmp39 <= tmp40 : _b+tmp39 >= tmp40) {
                  _b += tmp39;
                  tmp38--;
                }
                if (tmp38 == 0) {
                  tmpMeta37 = mmc_mk_box2(6, &NFExpression_BOOLEAN__desc, mmc_mk_boolean(_b));
                  __omcQ_24tmpVar14 = tmpMeta37;
                  *tmp35 = mmc_mk_cons(__omcQ_24tmpVar14,0);
                  tmp35 = &MMC_CDR(*tmp35);
                } else if (tmp38 == 1) {
                  break;
                } else {
                  goto goto_23;
                }
              }
              *tmp35 = mmc_mk_nil();
              tmpMeta34 = __omcQ_24tmpVar15;
            }
            _expl = tmpMeta34;
            tmpMeta[0+0] = _OMC_LIT252;
            tmpMeta[0+1] = _expl;
            goto tmp24_done;
          }
          case 3: {
            modelica_metatype tmpMeta41;
            modelica_metatype tmpMeta42;
            if (mmc__uniontype__metarecord__typedef__equal(tmp25_2,4,3) == 0) goto tmp24_end;
            if (mmc__uniontype__metarecord__typedef__equal(tmp25_1,4,3) == 0) goto tmp24_end;
            tmpMeta41 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp25_1), 2));
            if (mmc__uniontype__metarecord__typedef__equal(tmpMeta41,5,2) == 0) goto tmp24_end;
            
            _ty = tmpMeta41;
            /* Pattern matching succeeded */
            {
              modelica_metatype __omcQ_24tmpVar17;
              modelica_metatype* tmp43;
              modelica_metatype tmpMeta44;
              modelica_metatype tmpMeta45;
              modelica_metatype __omcQ_24tmpVar16;
              modelica_integer tmp46;
              modelica_integer tmp47;
              modelica_integer tmp48;
              modelica_integer _i;
              tmp47 = 1 /* Range step-value */;
              tmp48 = mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_stop), 4)))) /* Range stop-value */;
              _i = mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_start), 4)))) /* Range start-value */;
              _i = (mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_start), 4)))) /* Range start-value */)-tmp47;
              tmpMeta44 = MMC_REFSTRUCTLIT(mmc_nil);
              __omcQ_24tmpVar17 = tmpMeta44; /* defaultValue */
              tmp43 = &__omcQ_24tmpVar17;
              while(1) {
                tmp46 = 1;
                if (tmp47 > 0 ? _i+tmp47 <= tmp48 : _i+tmp47 >= tmp48) {
                  _i += tmp47;
                  tmp46--;
                }
                if (tmp46 == 0) {
                  tmpMeta45 = mmc_mk_box4(7, &NFExpression_ENUM__LITERAL__desc, _ty, listGet((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_ty), 3))), _i), mmc_mk_integer(_i));
                  __omcQ_24tmpVar16 = tmpMeta45;
                  *tmp43 = mmc_mk_cons(__omcQ_24tmpVar16,0);
                  tmp43 = &MMC_CDR(*tmp43);
                } else if (tmp46 == 1) {
                  break;
                } else {
                  goto goto_23;
                }
              }
              *tmp43 = mmc_mk_nil();
              tmpMeta42 = __omcQ_24tmpVar17;
            }
            _expl = tmpMeta42;
            tmpMeta[0+0] = _ty;
            tmpMeta[0+1] = _expl;
            goto tmp24_done;
          }
          case 4: {
            modelica_metatype tmpMeta49;
            
            /* Pattern matching succeeded */
            tmpMeta49 = mmc_mk_cons(_start, mmc_mk_cons(_stop, MMC_REFSTRUCTLIT(mmc_nil)));
            omc_NFCeval_printWrongArgsError(threadData, _OMC_LIT291, tmpMeta49, _OMC_LIT292);
            goto goto_23;
            goto tmp24_done;
          }
          }
          goto tmp24_end;
          tmp24_end: ;
        }
        goto goto_23;
        goto_23:;
        MMC_THROW_INTERNAL();
        goto tmp24_done;
        tmp24_done:;
      }
    }
    _ty = tmpMeta[0+0];
    _expl = tmpMeta[0+1];
  }

  tmpMeta50 = mmc_mk_cons(omc_NFDimension_fromInteger(threadData, listLength(_expl), 1), MMC_REFSTRUCTLIT(mmc_nil));
  tmpMeta51 = mmc_mk_box3(10, &NFType_ARRAY__desc, _ty, tmpMeta50);
  _exp = omc_NFExpression_makeArray(threadData, tmpMeta51, listArray(_expl), 1 /* true */);
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure32_NFCeval_evalExp(threadData_t *thData, modelica_metatype closure, modelica_metatype $in_exp)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalExp(thData, $in_exp, target);
}
DLLDirection
modelica_metatype omc_NFCeval_evalRange(threadData_t *threadData, modelica_metatype _rangeExp, modelica_metatype _target)
{
  modelica_metatype _result = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype _start_exp = NULL;
  modelica_metatype _stop_exp = NULL;
  modelica_metatype _step_exp = NULL;
  modelica_metatype _max_prop_exp = NULL;
  modelica_integer _max_prop_count;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  modelica_metatype tmpMeta5;
  modelica_metatype tmpMeta6;
  modelica_metatype tmpMeta7;
  modelica_metatype tmpMeta8;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _result has no default value.
  // _ty has no default value.
  // _start_exp has no default value.
  // _stop_exp has no default value.
  // _step_exp has no default value.
  // _max_prop_exp has no default value.
  // _max_prop_count has no default value.
  /* Pattern-matching assignment */
  tmpMeta1 = _rangeExp;
  if (mmc__uniontype__metarecord__typedef__equal(tmpMeta1,10,4) == 0) MMC_THROW_INTERNAL();
  tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 2));
  tmpMeta3 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 3));
  tmpMeta4 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 4));
  tmpMeta5 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 5));
  _ty = tmpMeta2;
  _start_exp = tmpMeta3;
  _step_exp = tmpMeta4;
  _stop_exp = tmpMeta5;

  _start_exp = omc_NFCeval_evalExp(threadData, _start_exp, _target);

  tmpMeta6 = mmc_mk_box1(0, _target);
  _step_exp = omc_Util_applyOption(threadData, _step_exp, (modelica_fnptr) mmc_mk_box2(0,closure32_NFCeval_evalExp,tmpMeta6));

  _stop_exp = omc_NFCeval_evalExp(threadData, _stop_exp, _target);

  if(omc_NFInstContext_inIterationRange(threadData, mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_target), 3))))))
  {
    _ty = omc_NFTypeCheck_getRangeType(threadData, _start_exp, _step_exp, _stop_exp, omc_NFType_arrayElementType(threadData, _ty), omc_NFCeval_EvalTarget_getInfo(threadData, _target));

    tmpMeta7 = mmc_mk_box5(13, &NFExpression_RANGE__desc, _ty, _start_exp, _step_exp, _stop_exp);
    _result = tmpMeta7;
  }
  else
  {
    tmpMeta8 = mmc_mk_box5(13, &NFExpression_RANGE__desc, _ty, _start_exp, _step_exp, _stop_exp);
    _result = tmpMeta8;

    _result = omc_NFExpression_mapSplitExpressions(threadData, _result, boxvar_NFCeval_evalRangeExp);
  }
  _return: OMC_LABEL_UNUSED
  return _result;
}

DLLDirection
modelica_metatype omc_NFCeval_evalTypename(threadData_t *threadData, modelica_metatype _ty, modelica_metatype _originExp, modelica_metatype _target)
{
  modelica_metatype _exp = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  _exp = (omc_NFInstContext_inIterationRange(threadData, mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_target), 3)))))?omc_NFExpandExp_expandTypename(threadData, _ty):_originExp);
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_makeRecordBindingExp(threadData_t *threadData, modelica_metatype _typeNode, modelica_metatype _recordNode, modelica_metatype _recordType, modelica_metatype _cref, modelica_metatype _target)
{
  modelica_metatype _exp = NULL;
  modelica_metatype _tree = NULL;
  modelica_metatype _comps = NULL;
  modelica_metatype _args = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype _c = NULL;
  modelica_metatype _cr = NULL;
  modelica_metatype _arg = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_metatype tmpMeta3;
  modelica_metatype tmpMeta4;
  modelica_metatype tmpMeta9;
  modelica_integer tmp10;
  modelica_integer tmp11;
  modelica_integer tmp12;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  // _tree has no default value.
  // _comps has no default value.
  // _args has no default value.
  // _ty has no default value.
  // _c has no default value.
  // _cr has no default value.
  // _arg has no default value.
  _tree = omc_NFClass_classTree(threadData, omc_NFInstNode_InstNode_getClass(threadData, _typeNode));

  _comps = omc_NFClassTree_ClassTree_getComponents(threadData, _tree);

  tmpMeta1 = MMC_REFSTRUCTLIT(mmc_nil);
  _args = tmpMeta1;

  omc_ErrorExt_setCheckpoint(threadData, _OMC_LIT294);

  tmp10 = arrayLength(_comps); tmp11 = ((modelica_integer) -1); tmp12 = ((modelica_integer) 1);
  if(!(((tmp11 > 0) && (tmp10 > tmp12)) || ((tmp11 < 0) && (tmp10 < tmp12))))
  {
    modelica_integer _i;
    for(_i = arrayLength(_comps); in_range_integer(_i, tmp10, tmp12); _i += tmp11)
    {
      _c = arrayGet(_comps,_i) /* DAE.ASUB */;

      _ty = omc_NFInstNode_InstNode_getType(threadData, _c);

      tmpMeta2 = MMC_REFSTRUCTLIT(mmc_nil);
      tmpMeta3 = mmc_mk_box6(3, &NFComponentRef_CREF__desc, _c, tmpMeta2, _ty, mmc_mk_integer(1), _cref);
      _cr = tmpMeta3;

      tmpMeta4 = mmc_mk_box3(9, &NFExpression_CREF__desc, _ty, _cr);
      _arg = tmpMeta4;

      if((omc_NFComponent_variability(threadData, omc_NFInstNode_InstNode_component(threadData, _c)) <= 3))
      {
        { /* matchcontinue expression */
          {
            volatile mmc_switch_type tmp7;
            int tmp8;
            tmp7 = 0;
            MMC_TRY_INTERNAL(mmc_jumper)
            tmp6_top:
            threadData->mmc_jumper = &new_mmc_jumper;
            for (; tmp7 < 2; tmp7++) {
              switch (MMC_SWITCH_CAST(tmp7)) {
              case 0: {
                /* Pattern matching succeeded */
                _arg = omc_NFCeval_evalExp(threadData, _arg, _target);
                goto tmp6_done;
              }
              case 1: {
                /* Pattern matching succeeded */
                goto tmp6_done;
              }
              }
              goto tmp6_end;
              tmp6_end: ;
            }
            goto goto_5;
            tmp6_done:
            (void)tmp7;
            MMC_RESTORE_INTERNAL(mmc_jumper);
            goto tmp6_done2;
            goto_5:;
            MMC_CATCH_INTERNAL(mmc_jumper);
            if (++tmp7 < 2) {
              goto tmp6_top;
            }
            MMC_THROW_INTERNAL();
            tmp6_done2:;
          }
        }
        ;
      }

      tmpMeta9 = mmc_mk_cons(_arg, _args);
      _args = tmpMeta9;
    }
  }

  omc_ErrorExt_rollBack(threadData, _OMC_LIT294);

  _exp = omc_NFExpression_makeRecord(threadData, omc_NFInstNode_InstNode_fullPath(threadData, _recordNode, 0 /* false */), _recordType, _args);
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure33_NFExpression_expandNonListedSplitIndices(threadData_t *thData, modelica_metatype closure, modelica_metatype exp)
{
  modelica_metatype indicesToKeep = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFExpression_expandNonListedSplitIndices(thData, exp, indicesToKeep);
}
DLLDirection
modelica_metatype omc_NFCeval_makeRecordFieldBindingFromParent(threadData_t *threadData, modelica_metatype _cref, modelica_metatype _target)
{
  modelica_metatype _exp = NULL;
  modelica_metatype _parent_cr = NULL;
  modelica_metatype _parent = NULL;
  modelica_integer _exp_context;
  modelica_metatype _binding = NULL;
  modelica_metatype _comp = NULL;
  modelica_metatype _subs = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  // _parent_cr has no default value.
  // _parent has no default value.
  // _exp_context has no default value.
  // _binding has no default value.
  // _comp has no default value.
  // _subs has no default value.
  _parent_cr = omc_NFComponentRef_rest(threadData, _cref);

  _parent = omc_NFComponentRef_node(threadData, _parent_cr);

  _exp_context = omc_NFInstContext_nodeContext(threadData, _parent, mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_target), 3)))));

  _comp = omc_NFInstNode_InstNode_component(threadData, _parent);

  _binding = omc_NFComponent_getBinding(threadData, _comp);

  _subs = omc_NFComponentRef_getSubscripts(threadData, _parent_cr);

  if(omc_NFBinding_hasExp(threadData, _binding))
  {
    if((!omc_NFBinding_isTyped(threadData, _binding)))
    {
      _binding = omc_NFTyping_typeBinding(threadData, _binding, omc_NFInstContext_set(threadData, _exp_context, ((modelica_integer) 524288)));

      _comp = omc_NFComponent_setBinding(threadData, _binding, _comp);

      omc_NFInstNode_InstNode_updateComponent(threadData, _comp, _parent);
    }

    _exp = omc_NFBinding_getExp(threadData, _binding);

    _exp = omc_NFExpression_applySubscripts(threadData, _subs, _exp, 0 /* false */);

    _exp = omc_NFExpression_recordElement(threadData, omc_NFComponentRef_firstName(threadData, _cref, 0 /* false */), _exp);

    _exp = omc_NFCeval_evalExp(threadData, _exp, _target);

    tmpMeta2 = MMC_REFSTRUCTLIT(mmc_nil);
    tmpMeta1 = mmc_mk_box1(0, omc_NFComponentRef_nodesIncludingSplitSubs(threadData, _cref, tmpMeta2));
    _exp = omc_NFExpression_map(threadData, _exp, (modelica_fnptr) mmc_mk_box2(0,closure33_NFExpression_expandNonListedSplitIndices,tmpMeta1));
  }
  else
  {
    _exp = omc_NFCeval_makeRecordFieldBindingFromParent(threadData, _parent_cr, _target);

    _exp = omc_NFExpression_applySubscripts(threadData, _subs, _exp, 0 /* false */);

    _exp = omc_NFExpression_recordElement(threadData, omc_NFComponentRef_firstName(threadData, _cref, 0 /* false */), _exp);
  }
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure34_NFCeval_makeRecordBindingExp(threadData_t *thData, modelica_metatype closure, modelica_metatype cref)
{
  modelica_metatype typeNode = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  modelica_metatype recordNode = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),2));
  modelica_metatype recordType = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),3));
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),4));
  return boxptr_NFCeval_makeRecordBindingExp(thData, typeNode, recordNode, recordType, cref, target);
}
DLLDirection
modelica_metatype omc_NFCeval_makeComponentBinding(threadData_t *threadData, modelica_metatype _component, modelica_metatype _node, modelica_metatype _cref, modelica_metatype _target)
{
  modelica_metatype _binding = NULL;
  modelica_metatype _ty = NULL;
  modelica_metatype _rec_node = NULL;
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _binding has no default value.
  // _ty has no default value.
  // _rec_node has no default value.
  // _exp has no default value.
  { /* matchcontinue expression */
    volatile modelica_metatype tmp4_1;
    tmp4_1 = _component;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      MMC_TRY_INTERNAL(mmc_jumper)
      tmp3_top:
      threadData->mmc_jumper = &new_mmc_jumper;
      for (; tmp4 < 4; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_boolean tmp7;
          modelica_metatype tmpMeta8;
          
          /* Pattern matching succeeded */
          _exp = omc_NFCeval_makeRecordFieldBindingFromParent(threadData, _cref, _target);
          tmp7 = (modelica_boolean)omc_NFExpression_isEmpty(threadData, _exp);
          if(tmp7)
          {
            tmpMeta8 = _OMC_LIT295;
          }
          else
          {
            tmpMeta6 = mmc_mk_box2(8, &NFBinding_CEVAL__BINDING__desc, _exp);
            tmpMeta8 = tmpMeta6;
          }
          tmpMeta1 = tmpMeta8;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,8) == 0) goto tmp3_end;
          tmpMeta9 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta9,11,2) == 0) goto tmp3_end;
          tmpMeta10 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta9), 3));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta10,4,3) == 0) goto tmp3_end;
          tmpMeta11 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta10), 2));
          
          _rec_node = tmpMeta11;
          tmp4 += 1; /* Pattern matching succeeded; we may skip some cases if we fail */
          _exp = omc_NFCeval_makeRecordBindingExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_component), 2))), _rec_node, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_component), 3))), _cref, _target);

          tmpMeta12 = mmc_mk_box2(8, &NFBinding_CEVAL__BINDING__desc, _exp);
          _binding = tmpMeta12;

          if((!omc_NFComponentRef_hasSubscripts(threadData, _cref)))
          {
            omc_NFInstNode_InstNode_updateComponent(threadData, omc_NFComponent_setBinding(threadData, _binding, _component), _node);
          }
          tmpMeta1 = _binding;
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta13;
          modelica_metatype tmpMeta14;
          modelica_metatype tmpMeta15;
          modelica_metatype tmpMeta16;
          modelica_metatype tmpMeta17;
          modelica_metatype tmpMeta18;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,8) == 0) goto tmp3_end;
          tmpMeta13 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta13,7,2) == 0) goto tmp3_end;
          tmpMeta14 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta13), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta14,11,2) == 0) goto tmp3_end;
          tmpMeta15 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta14), 3));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta15,4,3) == 0) goto tmp3_end;
          tmpMeta16 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta15), 2));
          
          _ty = tmpMeta14;
          _rec_node = tmpMeta16;
          /* Pattern matching succeeded */
          tmpMeta17 = mmc_mk_box4(0, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_component), 2))), _rec_node, _ty, _target);
          _exp = omc_NFExpression_mapCrefScalars(threadData, omc_NFExpression_fromCref(threadData, _cref, 0 /* false */), (modelica_fnptr) mmc_mk_box2(0,closure34_NFCeval_makeRecordBindingExp,tmpMeta17));

          tmpMeta18 = mmc_mk_box2(8, &NFBinding_CEVAL__BINDING__desc, _exp);
          _binding = tmpMeta18;

          if((!omc_NFComponentRef_hasSubscripts(threadData, _cref)))
          {
            omc_NFInstNode_InstNode_updateComponent(threadData, omc_NFComponent_setBinding(threadData, _binding, _component), _node);
          }
          tmpMeta1 = _binding;
          goto tmp3_done;
        }
        case 3: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = _OMC_LIT295;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      tmp3_done:
      (void)tmp4;
      MMC_RESTORE_INTERNAL(mmc_jumper);
      goto tmp3_done2;
      goto_2:;
      MMC_CATCH_INTERNAL(mmc_jumper);
      if (++tmp4 < 4) {
        goto tmp3_top;
      }
      MMC_THROW_INTERNAL();
      tmp3_done2:;
    }
  }
  _binding = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _binding;
}

DLLDirection
modelica_metatype omc_NFCeval_evalComponentStartBinding(threadData_t *threadData, modelica_metatype _node, modelica_metatype _comp, modelica_metatype _cref, modelica_metatype _target, modelica_boolean _evalSubscripts)
{
  jmp_buf *old_mmc_jumper = threadData->mmc_jumper;
  modelica_metatype _outExp = NULL;
  modelica_integer _var;
  modelica_metatype _start_node = NULL;
  modelica_metatype _start_comp = NULL;
  modelica_metatype _binding = NULL;
  modelica_metatype _exp = NULL;
  modelica_metatype _subs = NULL;
  modelica_integer _pcount;
  modelica_metatype tmpMeta5;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _outExp = mmc_mk_none();
  // _var has no default value.
  // _start_node has no default value.
  // _start_comp has no default value.
  // _binding has no default value.
  // _exp has no default value.
  // _subs has no default value.
  // _pcount has no default value.
  _var = omc_NFComponent_variability(threadData, _comp);

  if(((((modelica_integer)_var != 3) && ((modelica_integer)_var != 2)) || (!omc_NFComponent_isFixed(threadData, _comp))))
  {
    goto _return;
  }

  { /* matchcontinue expression */
    {
      volatile mmc_switch_type tmp3;
      int tmp4;
      tmp3 = 0;
      MMC_TRY_INTERNAL(mmc_jumper)
      tmp2_top:
      threadData->mmc_jumper = &new_mmc_jumper;
      for (; tmp3 < 2; tmp3++) {
        switch (MMC_SWITCH_CAST(tmp3)) {
        case 0: {
          /* Pattern matching succeeded */
          _start_node = omc_NFClass_lookupElement(threadData, _OMC_LIT296, omc_NFInstNode_InstNode_getClass(threadData, _node), NULL);
          goto tmp2_done;
        }
        case 1: {
          /* Pattern matching succeeded */
          goto _return;
          goto tmp2_done;
        }
        }
        goto tmp2_end;
        tmp2_end: ;
      }
      goto goto_1;
      tmp2_done:
      (void)tmp3;
      MMC_RESTORE_INTERNAL(mmc_jumper);
      goto tmp2_done2;
      goto_1:;
      MMC_CATCH_INTERNAL(mmc_jumper);
      if (++tmp3 < 2) {
        goto tmp2_top;
      }
      MMC_THROW_INTERNAL();
      tmp2_done2:;
    }
  }
  ;

  _start_comp = omc_NFInstNode_InstNode_component(threadData, _start_node);

  if((!omc_NFComponent_isTypeAttribute(threadData, _start_comp)))
  {
    goto _return;
  }

  _binding = omc_NFComponent_getBinding(threadData, _start_comp);

  { /* match expression */
    modelica_metatype tmp8_1;
    tmp8_1 = _binding;
    {
      volatile mmc_switch_type tmp8;
      int tmp9;
      tmp8 = 0;
      for (; tmp8 < 2; tmp8++) {
        switch (MMC_SWITCH_CAST(tmp8)) {
        case 0: {
          modelica_metatype tmpMeta10;
          if (mmc__uniontype__metarecord__typedef__equal(tmp8_1,3,9) == 0) goto tmp7_end;
          
          /* Pattern matching succeeded */
          _exp = omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_binding), 2))), _target);

          if((!referenceEq(_exp, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_binding), 2))))))
          {
            tmpMeta10 = MMC_TAGPTR(mmc_alloc_words(11));
            memcpy(MMC_UNTAGPTR(tmpMeta10), MMC_UNTAGPTR(_binding), 11*sizeof(modelica_metatype));
            ((modelica_metatype*)MMC_UNTAGPTR(tmpMeta10))[2] = _exp;
            _binding = tmpMeta10;

            _start_comp = omc_NFComponent_setBinding(threadData, _binding, _start_comp);

            omc_NFInstNode_InstNode_updateComponent(threadData, _start_comp, _start_node);
          }
          tmpMeta5 = mmc_mk_some(_exp);
          goto tmp7_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          tmpMeta5 = _outExp;
          goto tmp7_done;
        }
        }
        goto tmp7_end;
        tmp7_end: ;
      }
      goto goto_6;
      goto_6:;
      MMC_THROW_INTERNAL();
      goto tmp7_done;
      tmp7_done:;
    }
  }
  _outExp = tmpMeta5;
  _return: OMC_LABEL_UNUSED
  threadData->mmc_jumper = old_mmc_jumper;
  return _outExp;
}
modelica_metatype boxptr_NFCeval_evalComponentStartBinding(threadData_t *threadData, modelica_metatype _node, modelica_metatype _comp, modelica_metatype _cref, modelica_metatype _target, modelica_metatype _evalSubscripts)
{
  modelica_integer tmp1;
  modelica_metatype _outExp = NULL;
  tmp1 = mmc_unbox_integer(_evalSubscripts);
  _outExp = omc_NFCeval_evalComponentStartBinding(threadData, _node, _comp, _cref, _target, tmp1);
  /* skip box _outExp; Option<NFExpression> */
  return _outExp;
}

DLLDirection
modelica_metatype omc_NFCeval_subscriptBinding3(threadData_t *threadData, modelica_metatype _subscript, modelica_metatype _subMap)
{
  modelica_metatype _outSubscript = NULL;
  modelica_metatype _osubs = NULL;
  modelica_metatype _subs = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outSubscript has no default value.
  // _osubs has no default value.
  // _subs has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _subscript;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,7,2) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          _osubs = omc_UnorderedMap_get(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_subscript), 2))), _subMap);

          if(isSome(_osubs))
          {
            /* Pattern-matching assignment */
            tmpMeta6 = _osubs;
            if (optionNone(tmpMeta6)) goto goto_2;
            tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 1));
            _subs = tmpMeta7;

            if((mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_subscript), 3)))) > listLength(_subs)))
            {
              _outSubscript = _OMC_LIT297;
            }
            else
            {
              _outSubscript = listGet(_subs, mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_subscript), 3)))));
            }
          }
          else
          {
            _outSubscript = _subscript;
          }
          tmpMeta1 = _outSubscript;
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = _subscript;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outSubscript = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _outSubscript;
}

DLLDirection
modelica_boolean omc_NFCeval_isFlatCref(threadData_t *threadData, modelica_metatype _cref)
{
  modelica_boolean _flat;
  modelica_boolean tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _flat has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _cref;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 3; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_integer tmp7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,5) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 5));
          tmp7 = mmc_unbox_integer(tmpMeta6);
          if (2 != tmp7) goto tmp3_end;
          
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!omc_NFType_isArray(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_cref), 4))))) goto tmp3_end;
          tmp1 = (!listEmpty((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_cref), 3)))));
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,5) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          /* Tail recursive call */
          _cref = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_cref), 6)));
          goto _tailrecursive;
          /* TODO: Make sure any eventual dead code below is never generated */
          goto tmp3_done;
        }
        case 2: {
          
          /* Pattern matching succeeded */
          tmp1 = 0 /* false */;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _flat = tmp1;
  _return: OMC_LABEL_UNUSED
  return _flat;
}
modelica_metatype boxptr_NFCeval_isFlatCref(threadData_t *threadData, modelica_metatype _cref)
{
  modelica_boolean _flat;
  modelica_metatype out_flat;
  _flat = omc_NFCeval_isFlatCref(threadData, _cref);
  out_flat = mmc_mk_icon(_flat);
  return out_flat;
}

static modelica_metatype closure35_NFCeval_subscriptBinding2(threadData_t *thData, modelica_metatype closure, modelica_metatype $in_exp, modelica_metatype $in_subMap, modelica_metatype tmp22)
{
  modelica_metatype cref = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  modelica_metatype evalSubscripts = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),2));
  return boxptr_NFCeval_subscriptBinding2(thData, $in_exp, cref, evalSubscripts, $in_subMap, tmp22);
}
DLLDirection
modelica_metatype omc_NFCeval_subscriptBinding2(threadData_t *threadData, modelica_metatype __omcQ_24in_5Fexp, modelica_metatype _cref, modelica_boolean _evalSubscripts, modelica_metatype __omcQ_24in_5FsubMap, modelica_metatype *out_subMap)
{
  modelica_metatype _exp = NULL;
  modelica_metatype _subMap = NULL;
  modelica_metatype _sub_map = NULL;
  modelica_metatype _subs = NULL;
  modelica_metatype _cref_parts = NULL;
  modelica_metatype _e = NULL;
  modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _exp = __omcQ_24in_5Fexp;
  _subMap = __omcQ_24in_5FsubMap;
  // _sub_map has no default value.
  // _subs has no default value.
  // _cref_parts has no default value.
  // _e has no default value.
  
  
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _exp;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 3; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta16;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,26,4) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          
          _subs = tmpMeta6;
          /* Pattern matching succeeded */
          if(isSome(_subMap))
          {
            /* Pattern-matching assignment */
            tmpMeta7 = _subMap;
            if (optionNone(tmpMeta7)) goto goto_2;
            tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta7), 1));
            _sub_map = tmpMeta8;
          }
          else
          {
            tmpMeta9 = MMC_REFSTRUCTLIT(mmc_nil);
            _cref_parts = omc_NFComponentRef_toListReverse(threadData, _cref, omc_NFCeval_isFlatCref(threadData, _cref), tmpMeta9);

            _sub_map = omc_UnorderedMap_new(threadData, boxvar_NFInstNode_InstNode_hash, boxvar_NFInstNode_InstNode_refEqual, omc_Util_nextPrime(threadData, listLength(_cref_parts)));

            {
              modelica_metatype _cr;
              for (tmpMeta10 = _cref_parts; !listEmpty(tmpMeta10); tmpMeta10=MMC_CDR(tmpMeta10))
              {
                _cr = MMC_CAR(tmpMeta10);
                omc_UnorderedMap_addUnique(threadData, omc_NFComponentRef_node(threadData, _cr), omc_NFComponentRef_getSubscripts(threadData, _cr), _sub_map);
              }
            }

            _subMap = mmc_mk_some(_sub_map);
          }

          {
            modelica_metatype __omcQ_24tmpVar19;
            modelica_metatype* tmp13;
            modelica_metatype tmpMeta14;
            modelica_metatype __omcQ_24tmpVar18;
            modelica_integer tmp15;
            modelica_metatype _s_loopVar = 0;
            modelica_metatype _s;
            _s_loopVar = _subs;
            tmpMeta14 = MMC_REFSTRUCTLIT(mmc_nil);
            __omcQ_24tmpVar19 = tmpMeta14; /* defaultValue */
            tmp13 = &__omcQ_24tmpVar19;
            while(1) {
              tmp15 = 1;
              if (!listEmpty(_s_loopVar)) {
                _s = MMC_CAR(_s_loopVar);
                _s_loopVar = MMC_CDR(_s_loopVar);
                tmp15--;
              }
              if (tmp15 == 0) {
                __omcQ_24tmpVar18 = omc_NFCeval_subscriptBinding3(threadData, _s, _sub_map);
                *tmp13 = mmc_mk_cons(__omcQ_24tmpVar18,0);
                tmp13 = &MMC_CDR(*tmp13);
              } else if (tmp15 == 1) {
                break;
              } else {
                goto goto_2;
              }
            }
            *tmp13 = mmc_mk_nil();
            tmpMeta12 = __omcQ_24tmpVar19;
          }
          _subs = tmpMeta12;

          if(_evalSubscripts)
          {
            {
              modelica_metatype __omcQ_24tmpVar21;
              modelica_metatype* tmp17;
              modelica_metatype tmpMeta18;
              modelica_metatype __omcQ_24tmpVar20;
              modelica_integer tmp19;
              modelica_metatype _s_loopVar = 0;
              modelica_metatype _s;
              _s_loopVar = _subs;
              tmpMeta18 = MMC_REFSTRUCTLIT(mmc_nil);
              __omcQ_24tmpVar21 = tmpMeta18; /* defaultValue */
              tmp17 = &__omcQ_24tmpVar21;
              while(1) {
                tmp19 = 1;
                if (!listEmpty(_s_loopVar)) {
                  _s = MMC_CAR(_s_loopVar);
                  _s_loopVar = MMC_CDR(_s_loopVar);
                  tmp19--;
                }
                if (tmp19 == 0) {
                  __omcQ_24tmpVar20 = omc_NFSubscript_eval(threadData, _s, _OMC_LIT36);
                  *tmp17 = mmc_mk_cons(__omcQ_24tmpVar20,0);
                  tmp17 = &MMC_CDR(*tmp17);
                } else if (tmp19 == 1) {
                  break;
                } else {
                  goto goto_2;
                }
              }
              *tmp17 = mmc_mk_nil();
              tmpMeta16 = __omcQ_24tmpVar21;
            }
            _subs = tmpMeta16;
          }

          _e = omc_NFCeval_subscriptBinding2(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))), _cref, _evalSubscripts, _subMap ,&_subMap);

          _e = omc_NFExpression_applySubscripts(threadData, _subs, _e, 0 /* false */);
          tmpMeta[0+0] = _e;
          tmpMeta[0+1] = _subMap;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta20;
          modelica_integer tmp21;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,3) == 0) goto tmp3_end;
          tmpMeta20 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 4));
          tmp21 = mmc_unbox_integer(tmpMeta20);
          if (1 /* true */ != tmp21) goto tmp3_end;
          /* Pattern matching succeeded */
          tmpMeta[0+0] = _exp;
          tmpMeta[0+1] = _subMap;
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta23;
          
          /* Pattern matching succeeded */
          tmpMeta23 = mmc_mk_box2(0, _cref, mmc_mk_boolean(_evalSubscripts));
          tmpMeta[0+0] = omc_NFExpression_mapFoldShallow(threadData, _exp, (modelica_fnptr) mmc_mk_box2(0,closure35_NFCeval_subscriptBinding2,tmpMeta23), _subMap, &tmpMeta[0+1]);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta[0+0];
  _subMap = tmpMeta[0+1];
  _return: OMC_LABEL_UNUSED
  if (out_subMap) { *out_subMap = _subMap; }
  return _exp;
}
modelica_metatype boxptr_NFCeval_subscriptBinding2(threadData_t *threadData, modelica_metatype __omcQ_24in_5Fexp, modelica_metatype _cref, modelica_metatype _evalSubscripts, modelica_metatype __omcQ_24in_5FsubMap, modelica_metatype *out_subMap)
{
  modelica_integer tmp1;
  modelica_metatype _exp = NULL;
  tmp1 = mmc_unbox_integer(_evalSubscripts);
  _exp = omc_NFCeval_subscriptBinding2(threadData, __omcQ_24in_5Fexp, _cref, tmp1, __omcQ_24in_5FsubMap, out_subMap);
  /* skip box _exp; NFExpression */
  /* skip box _subMap; Option<UnorderedMap<NFInstNode.InstNode,list<NFSubscript>>> */
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_subscriptBinding(threadData_t *threadData, modelica_metatype __omcQ_24in_5Fexp, modelica_metatype _cref, modelica_boolean _evalSubscripts)
{
  modelica_metatype _exp = NULL;
  modelica_metatype _subs = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _exp = __omcQ_24in_5Fexp;
  // _subs has no default value.
  _subs = omc_NFComponentRef_getSubscripts(threadData, _cref);

  if(_evalSubscripts)
  {
    {
      modelica_metatype __omcQ_24tmpVar23;
      modelica_metatype* tmp2;
      modelica_metatype tmpMeta3;
      modelica_metatype __omcQ_24tmpVar22;
      modelica_integer tmp4;
      modelica_metatype _s_loopVar = 0;
      modelica_metatype _s;
      _s_loopVar = _subs;
      tmpMeta3 = MMC_REFSTRUCTLIT(mmc_nil);
      __omcQ_24tmpVar23 = tmpMeta3; /* defaultValue */
      tmp2 = &__omcQ_24tmpVar23;
      while(1) {
        tmp4 = 1;
        if (!listEmpty(_s_loopVar)) {
          _s = MMC_CAR(_s_loopVar);
          _s_loopVar = MMC_CDR(_s_loopVar);
          tmp4--;
        }
        if (tmp4 == 0) {
          __omcQ_24tmpVar22 = omc_NFSubscript_eval(threadData, _s, _OMC_LIT36);
          *tmp2 = mmc_mk_cons(__omcQ_24tmpVar22,0);
          tmp2 = &MMC_CDR(*tmp2);
        } else if (tmp4 == 1) {
          break;
        } else {
          MMC_THROW_INTERNAL();
        }
      }
      *tmp2 = mmc_mk_nil();
      tmpMeta1 = __omcQ_24tmpVar23;
    }
    _subs = tmpMeta1;
  }

  _subs = omc_List_trimToLength(threadData, _subs, omc_NFExpression_dimensionCount(threadData, _exp));

  _exp = omc_NFExpression_applySubscripts(threadData, _subs, _exp, 0 /* false */);

  _exp = omc_NFCeval_subscriptBinding2(threadData, _exp, _cref, _evalSubscripts, mmc_mk_none(), NULL);
  _return: OMC_LABEL_UNUSED
  return _exp;
}
modelica_metatype boxptr_NFCeval_subscriptBinding(threadData_t *threadData, modelica_metatype __omcQ_24in_5Fexp, modelica_metatype _cref, modelica_metatype _evalSubscripts)
{
  modelica_integer tmp1;
  modelica_metatype _exp = NULL;
  tmp1 = mmc_unbox_integer(_evalSubscripts);
  _exp = omc_NFCeval_subscriptBinding(threadData, __omcQ_24in_5Fexp, _cref, tmp1);
  /* skip box _exp; NFExpression */
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalComponentBinding(threadData_t *threadData, modelica_metatype _node, modelica_metatype _cref, modelica_metatype _defaultExp, modelica_metatype _target, modelica_boolean _evalSubscripts, modelica_boolean _liftExp)
{
  modelica_metatype _exp = NULL;
  modelica_integer _exp_context;
  modelica_metatype _comp = NULL;
  modelica_metatype _binding = NULL;
  modelica_boolean _evaluated;
  modelica_metatype _subs = NULL;
  modelica_integer _var;
  modelica_metatype _start_exp = NULL;
  modelica_metatype _cref_ty = NULL;
  modelica_metatype _exp_ty = NULL;
  modelica_integer _dim_diff;
  modelica_metatype _errors = NULL;
  modelica_metatype tmpMeta1;
  modelica_metatype tmpMeta2;
  modelica_boolean tmp3_c1 __attribute__((unused)) = 0;
  modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  // _exp_context has no default value.
  // _comp has no default value.
  // _binding has no default value.
  // _evaluated has no default value.
  // _subs has no default value.
  // _var has no default value.
  // _start_exp has no default value.
  // _cref_ty has no default value.
  // _exp_ty has no default value.
  // _dim_diff has no default value.
  // _errors has no default value.
  _exp_context = omc_NFInstContext_nodeContext(threadData, _node, mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_target), 3)))));

  omc_NFTyping_typeComponentBinding(threadData, _node, _exp_context, 0 /* false */);

  _comp = omc_NFInstNode_InstNode_component(threadData, _node);

  _binding = omc_NFComponent_getBinding(threadData, _comp);

  if(omc_NFBinding_isUnbound(threadData, _binding))
  {
    _binding = omc_NFCeval_makeComponentBinding(threadData, _comp, _node, omc_NFExpression_toCref(threadData, _defaultExp), _target);

    if(omc_NFBinding_isUnbound(threadData, _binding))
    {
      _start_exp = omc_NFCeval_evalComponentStartBinding(threadData, _node, _comp, _cref, _target, _evalSubscripts);

      if(isSome(_start_exp))
      {
        /* Pattern-matching assignment */
        tmpMeta1 = _start_exp;
        if (optionNone(tmpMeta1)) MMC_THROW_INTERNAL();
        tmpMeta2 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta1), 1));
        _exp = tmpMeta2;

        goto _return;
      }
    }
  }

  
  
  { /* match expression */
    modelica_metatype tmp6_1;
    tmp6_1 = _binding;
    {
      int tmp6;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp6_1))) {
        case 6: {
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          { /* match expression */
            modelica_metatype tmp10_1;
            tmp10_1 = omc_Mutable_access(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_binding), 7))));
            {
              int tmp10;
              {
                switch (MMC_SWITCH_CAST(mmc_unbox_integer(tmp10_1))) {
                case 1: {
                  modelica_integer tmp11;
                  modelica_metatype tmpMeta17;
                  tmp11 = mmc_unbox_integer(tmp10_1);
                  if (1 != tmp11) goto tmp9_end;
                  /* Pattern matching succeeded */
                  omc_Mutable_update(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_binding), 7))), mmc_mk_integer(2));

                  omc_ErrorExt_setCheckpoint(threadData, _OMC_LIT298);

                  { /* matchcontinue expression */
                    {
                      volatile mmc_switch_type tmp14;
                      int tmp15;
                      tmp14 = 0;
                      MMC_TRY_INTERNAL(mmc_jumper)
                      tmp13_top:
                      threadData->mmc_jumper = &new_mmc_jumper;
                      for (; tmp14 < 2; tmp14++) {
                        switch (MMC_SWITCH_CAST(tmp14)) {
                        case 0: {
                          /* Pattern matching succeeded */
                          _exp = omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_binding), 2))), _target);

                          omc_ErrorExt_delCheckpoint(threadData, _OMC_LIT298);
                          goto tmp13_done;
                        }
                        case 1: {
                          modelica_metatype tmpMeta16;
                          /* Pattern matching succeeded */
                          omc_Mutable_update(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_binding), 7))), mmc_mk_integer(1));

                          _errors = omc_ErrorExt_popCheckPoint(threadData, _OMC_LIT298);

                          tmpMeta16 = MMC_REFSTRUCTLIT(mmc_nil);
                          omc_Error_addSourceMessage(threadData, _OMC_LIT302, tmpMeta16, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_binding), 10))));

                          omc_ErrorExt_pushMessages(threadData, _errors);

                          goto goto_12;
                          goto tmp13_done;
                        }
                        }
                        goto tmp13_end;
                        tmp13_end: ;
                      }
                      goto goto_12;
                      tmp13_done:
                      (void)tmp14;
                      MMC_RESTORE_INTERNAL(mmc_jumper);
                      goto tmp13_done2;
                      goto_12:;
                      MMC_CATCH_INTERNAL(mmc_jumper);
                      if (++tmp14 < 2) {
                        goto tmp13_top;
                      }
                      goto goto_8;
                      tmp13_done2:;
                    }
                  }
                  ;

                  tmpMeta17 = MMC_TAGPTR(mmc_alloc_words(11));
                  memcpy(MMC_UNTAGPTR(tmpMeta17), MMC_UNTAGPTR(_binding), 11*sizeof(modelica_metatype));
                  ((modelica_metatype*)MMC_UNTAGPTR(tmpMeta17))[2] = _exp;
                  _binding = tmpMeta17;

                  _comp = omc_NFComponent_setBinding(threadData, _binding, _comp);

                  omc_NFInstNode_InstNode_updateComponent(threadData, _comp, _node);

                  omc_Mutable_update(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_binding), 7))), mmc_mk_integer(3));
                  tmpMeta7 = _exp;
                  goto tmp9_done;
                }
                case 3: {
                  modelica_integer tmp18;
                  tmp18 = mmc_unbox_integer(tmp10_1);
                  if (3 != tmp18) goto tmp9_end;
                  /* Pattern matching succeeded */
                  tmpMeta7 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_binding), 2)));
                  goto tmp9_done;
                }
                default:
                tmp9_default: OMC_LABEL_UNUSED; {
                  modelica_metatype tmpMeta19;
                  
                  /* Pattern matching succeeded */
                  tmpMeta19 = mmc_mk_cons(omc_NFInstNode_InstNode_name(threadData, _node), mmc_mk_cons(omc_NFPrefixes_variabilityString(threadData, omc_NFComponent_variability(threadData, _comp)), MMC_REFSTRUCTLIT(mmc_nil)));
                  omc_Error_addSourceMessage(threadData, _OMC_LIT305, tmpMeta19, omc_NFInstNode_InstNode_info(threadData, _node));
                  goto goto_8;
                  goto tmp9_done;
                }
                }
                goto tmp9_end;
                tmp9_end: ;
              }
              goto goto_8;
              goto_8:;
              goto goto_4;
              goto tmp9_done;
              tmp9_done:;
            }
          }
          _exp = tmpMeta7;
          tmpMeta[0+0] = _exp;
          tmp3_c1 = 1 /* true */;
          goto tmp5_done;
        }
        case 8: {
          
          /* Pattern matching succeeded */
          tmpMeta[0+0] = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_binding), 2)));
          tmp3_c1 = 1 /* true */;
          goto tmp5_done;
        }
        case 3: {
          
          /* Pattern matching succeeded */
          omc_NFCeval_printUnboundError(threadData, _comp, _target, _defaultExp);
          tmpMeta[0+0] = _defaultExp;
          tmp3_c1 = 0 /* false */;
          goto tmp5_done;
        }
        default:
        tmp5_default: OMC_LABEL_UNUSED; {
          
          /* Pattern matching succeeded */
          omc_Error_addInternalError(threadData, _OMC_LIT306, _OMC_LIT307);
          goto goto_4;
          goto tmp5_done;
        }
        }
        goto tmp5_end;
        tmp5_end: ;
      }
      goto goto_4;
      goto_4:;
      MMC_THROW_INTERNAL();
      goto tmp5_done;
      tmp5_done:;
    }
  }
  _exp = tmpMeta[0+0];
  _evaluated = tmp3_c1;

  if(_evaluated)
  {
    _exp = omc_NFCeval_subscriptBinding(threadData, _exp, _cref, _evalSubscripts);
  }

  if((_liftExp && (!omc_NFExpression_contains(threadData, _exp, boxvar_NFExpression_isSplitSubscriptedExp))))
  {
    _exp_ty = omc_NFExpression_typeOf(threadData, _exp);

    _cref_ty = omc_NFExpression_typeOf(threadData, _defaultExp);

    _dim_diff = omc_NFType_dimensionDiff(threadData, _cref_ty, _exp_ty);

    if((_dim_diff > ((modelica_integer) 0)))
    {
      _exp = omc_NFExpression_liftArrayList(threadData, omc_List_firstN(threadData, omc_NFType_arrayDims(threadData, _cref_ty), _dim_diff), _exp, NULL);
    }
  }
  _return: OMC_LABEL_UNUSED
  return _exp;
}
modelica_metatype boxptr_NFCeval_evalComponentBinding(threadData_t *threadData, modelica_metatype _node, modelica_metatype _cref, modelica_metatype _defaultExp, modelica_metatype _target, modelica_metatype _evalSubscripts, modelica_metatype _liftExp)
{
  modelica_integer tmp1;
  modelica_integer tmp2;
  modelica_metatype _exp = NULL;
  tmp1 = mmc_unbox_integer(_evalSubscripts);
  tmp2 = mmc_unbox_integer(_liftExp);
  _exp = omc_NFCeval_evalComponentBinding(threadData, _node, _cref, _defaultExp, _target, tmp1, tmp2);
  /* skip box _exp; NFExpression */
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalCref(threadData_t *threadData, modelica_metatype _cref, modelica_metatype _defaultExp, modelica_metatype _target, modelica_boolean _evalSubscripts, modelica_boolean _liftExp)
{
  modelica_metatype _exp = NULL;
  modelica_metatype _c = NULL;
  modelica_boolean _evaled;
  modelica_metatype _subs = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _exp has no default value.
  // _c has no default value.
  // _evaled has no default value.
  // _subs has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _cref;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,5) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,1,6) == 0) goto tmp3_end;
          
          _c = tmpMeta6;
          /* Pattern matching succeeded */
          /* Check guard condition after assignments */
          if (!((!omc_NFComponentRef_isIterator(threadData, _cref)) && (omc_NFComponentRef_nodeVariability(threadData, _cref) < 4))) goto tmp3_end;
          tmpMeta1 = omc_NFCeval_evalComponentBinding(threadData, _c, _cref, _defaultExp, _target, _evalSubscripts, _liftExp);
          goto tmp3_done;
        }
        case 1: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = _defaultExp;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}
modelica_metatype boxptr_NFCeval_evalCref(threadData_t *threadData, modelica_metatype _cref, modelica_metatype _defaultExp, modelica_metatype _target, modelica_metatype _evalSubscripts, modelica_metatype _liftExp)
{
  modelica_integer tmp1;
  modelica_integer tmp2;
  modelica_metatype _exp = NULL;
  tmp1 = mmc_unbox_integer(_evalSubscripts);
  tmp2 = mmc_unbox_integer(_liftExp);
  _exp = omc_NFCeval_evalCref(threadData, _cref, _defaultExp, _target, tmp1, tmp2);
  /* skip box _exp; NFExpression */
  return _exp;
}

static modelica_metatype closure36_NFCeval_evalExpPartial(threadData_t *thData, modelica_metatype closure, modelica_metatype exp, modelica_metatype evaluated, modelica_metatype tmp3)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalExpPartial(thData, exp, target, evaluated, tmp3);
}
DLLDirection
modelica_metatype omc_NFCeval_evalExpPartial(threadData_t *threadData, modelica_metatype _exp, modelica_metatype _target, modelica_boolean _evaluated, modelica_boolean *out_outEvaluated)
{
  modelica_metatype _outExp = NULL;
  modelica_boolean _outEvaluated;
  modelica_metatype _e = NULL;
  modelica_metatype _e1 = NULL;
  modelica_metatype _e2 = NULL;
  modelica_boolean _eval1;
  modelica_boolean _eval2;
  modelica_metatype tmpMeta1;
  modelica_integer tmp2;
  modelica_metatype tmpMeta4;
  modelica_metatype tmpMeta5;
  modelica_metatype tmpMeta6;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outExp has no default value.
  // _outEvaluated has no default value.
  // _e has no default value.
  // _e1 has no default value.
  // _e2 has no default value.
  // _eval1 has no default value.
  // _eval2 has no default value.
  /* Pattern-matching tuple assignment */
  tmpMeta4 = mmc_mk_box1(0, _target);
  tmpMeta5 = omc_NFExpression_mapFoldShallow(threadData, _exp, (modelica_fnptr) mmc_mk_box2(0,closure36_NFCeval_evalExpPartial,tmpMeta4), mmc_mk_boolean(1 /* true */), &tmpMeta1);
  _e = tmpMeta5;
  tmp2 = mmc_unbox_integer(tmpMeta1);
  _outEvaluated = tmp2  /* pattern as ty=Boolean */;

  { /* match expression */
    modelica_metatype tmp9_1;
    tmp9_1 = _e;
    {
      int tmp9;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp9_1))) {
        case 9: {
          
          /* Pattern matching succeeded */
          if(omc_NFComponentRef_isIterator(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_e), 3)))))
          {
            _outExp = _e;

            _outEvaluated = 0 /* false */;
          }
          else
          {
            _outExp = omc_NFCeval_evalCref(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_e), 3))), _e, _target, 0 /* false */, 1 /* true */);

            _outEvaluated = omc_NFExpression_isLiteral(threadData, _outExp);
          }
          tmpMeta6 = _outExp;
          goto tmp8_done;
        }
        case 32: {
          
          /* Pattern matching succeeded */
          _outEvaluated = 0 /* false */;
          tmpMeta6 = _e;
          goto tmp8_done;
        }
        default:
        tmp8_default: OMC_LABEL_UNUSED; {
          
          /* Pattern matching succeeded */
          tmpMeta6 = (_outEvaluated?omc_NFCeval_evalExp(threadData, _e, _target):_e);
          goto tmp8_done;
        }
        }
        goto tmp8_end;
        tmp8_end: ;
      }
      goto goto_7;
      goto_7:;
      MMC_THROW_INTERNAL();
      goto tmp8_done;
      tmp8_done:;
    }
  }
  _outExp = tmpMeta6;

  _outEvaluated = (_evaluated && _outEvaluated);
  _return: OMC_LABEL_UNUSED
  if (out_outEvaluated) { *out_outEvaluated = _outEvaluated; }
  return _outExp;
}
modelica_metatype boxptr_NFCeval_evalExpPartial(threadData_t *threadData, modelica_metatype _exp, modelica_metatype _target, modelica_metatype _evaluated, modelica_metatype *out_outEvaluated)
{
  modelica_integer tmp1;
  modelica_boolean _outEvaluated;
  modelica_metatype _outExp = NULL;
  tmp1 = mmc_unbox_integer(_evaluated);
  _outExp = omc_NFCeval_evalExpPartial(threadData, _exp, _target, tmp1, &_outEvaluated);
  /* skip box _outExp; NFExpression */
  if (out_outEvaluated) { *out_outEvaluated = mmc_mk_icon(_outEvaluated); }
  return _outExp;
}

DLLDirection
modelica_metatype omc_NFCeval_evalExpPartialDefault(threadData_t *threadData, modelica_metatype __omcQ_24in_5Fexp)
{
  modelica_metatype _exp = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _exp = __omcQ_24in_5Fexp;
  _exp = omc_NFCeval_evalExpPartial(threadData, _exp, _OMC_LIT36, 1 /* true */, NULL);
  _return: OMC_LABEL_UNUSED
  return _exp;
}

static modelica_metatype closure37_NFCeval_evalExp(threadData_t *thData, modelica_metatype closure, modelica_metatype $in_exp)
{
  modelica_metatype target = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(closure),1));
  return boxptr_NFCeval_evalExp(thData, $in_exp, target);
}
DLLDirection
modelica_metatype omc_NFCeval_evalExp(threadData_t *threadData, modelica_metatype __omcQ_24in_5Fexp, modelica_metatype _target)
{
  modelica_metatype _exp = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _exp = __omcQ_24in_5Fexp;
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _exp;
    {
      modelica_metatype _exp1 = NULL;
      modelica_metatype _exp2 = NULL;
      int tmp4;
      // _exp1 has no default value.
      // _exp2 has no default value.
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 9: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalCref(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 3))), _exp, _target, 1 /* true */, 1 /* true */);
          goto tmp3_done;
        }
        case 10: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalTypename(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))), _exp, _target);
          goto tmp3_done;
        }
        case 11: {
          modelica_metatype tmpMeta5;
          modelica_boolean tmp6;
          modelica_metatype tmpMeta7;
          
          /* Pattern matching succeeded */
          tmp6 = (modelica_boolean)mmc_unbox_boolean((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 4))));
          if(tmp6)
          {
            tmpMeta7 = _exp;
          }
          else
          {
            tmpMeta5 = mmc_mk_box1(0, _target);
            tmpMeta7 = omc_NFExpression_makeArrayCheckLiteral(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))), omc_Array_map(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 3))), (modelica_fnptr) mmc_mk_box2(0,closure37_NFCeval_evalExp,tmpMeta5)));
          }
          tmpMeta1 = tmpMeta7;
          goto tmp3_done;
        }
        case 13: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalRange(threadData, _exp, _target);
          goto tmp3_done;
        }
        case 14: {
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          
          /* Pattern matching succeeded */
          {
            modelica_metatype __omcQ_24tmpVar25;
            modelica_metatype* tmp10;
            modelica_metatype tmpMeta11;
            modelica_metatype __omcQ_24tmpVar24;
            modelica_integer tmp12;
            modelica_metatype _e_loopVar = 0;
            modelica_metatype _e;
            _e_loopVar = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 3)));
            tmpMeta11 = MMC_REFSTRUCTLIT(mmc_nil);
            __omcQ_24tmpVar25 = tmpMeta11; /* defaultValue */
            tmp10 = &__omcQ_24tmpVar25;
            while(1) {
              tmp12 = 1;
              if (!listEmpty(_e_loopVar)) {
                _e = MMC_CAR(_e_loopVar);
                _e_loopVar = MMC_CDR(_e_loopVar);
                tmp12--;
              }
              if (tmp12 == 0) {
                __omcQ_24tmpVar24 = omc_NFCeval_evalExp(threadData, _e, _target);
                *tmp10 = mmc_mk_cons(__omcQ_24tmpVar24,0);
                tmp10 = &MMC_CDR(*tmp10);
              } else if (tmp12 == 1) {
                break;
              } else {
                goto goto_2;
              }
            }
            *tmp10 = mmc_mk_nil();
            tmpMeta9 = __omcQ_24tmpVar25;
          }
          tmpMeta8 = MMC_TAGPTR(mmc_alloc_words(4));
          memcpy(MMC_UNTAGPTR(tmpMeta8), MMC_UNTAGPTR(_exp), 4*sizeof(modelica_metatype));
          ((modelica_metatype*)MMC_UNTAGPTR(tmpMeta8))[3] = tmpMeta9;
          _exp = tmpMeta8;
          tmpMeta1 = _exp;
          goto tmp3_done;
        }
        case 15: {
          modelica_metatype tmpMeta13;
          modelica_metatype tmpMeta14;
          
          /* Pattern matching succeeded */
          {
            modelica_metatype __omcQ_24tmpVar27;
            modelica_metatype* tmp15;
            modelica_metatype tmpMeta16;
            modelica_metatype __omcQ_24tmpVar26;
            modelica_integer tmp17;
            modelica_metatype _e_loopVar = 0;
            modelica_metatype _e;
            _e_loopVar = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 4)));
            tmpMeta16 = MMC_REFSTRUCTLIT(mmc_nil);
            __omcQ_24tmpVar27 = tmpMeta16; /* defaultValue */
            tmp15 = &__omcQ_24tmpVar27;
            while(1) {
              tmp17 = 1;
              if (!listEmpty(_e_loopVar)) {
                _e = MMC_CAR(_e_loopVar);
                _e_loopVar = MMC_CDR(_e_loopVar);
                tmp17--;
              }
              if (tmp17 == 0) {
                __omcQ_24tmpVar26 = omc_NFCeval_evalExp(threadData, _e, _target);
                *tmp15 = mmc_mk_cons(__omcQ_24tmpVar26,0);
                tmp15 = &MMC_CDR(*tmp15);
              } else if (tmp17 == 1) {
                break;
              } else {
                goto goto_2;
              }
            }
            *tmp15 = mmc_mk_nil();
            tmpMeta14 = __omcQ_24tmpVar27;
          }
          tmpMeta13 = MMC_TAGPTR(mmc_alloc_words(5));
          memcpy(MMC_UNTAGPTR(tmpMeta13), MMC_UNTAGPTR(_exp), 5*sizeof(modelica_metatype));
          ((modelica_metatype*)MMC_UNTAGPTR(tmpMeta13))[4] = tmpMeta14;
          _exp = tmpMeta13;
          tmpMeta1 = _exp;
          goto tmp3_done;
        }
        case 16: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalCall(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))), _target);
          goto tmp3_done;
        }
        case 17: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalSize(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 3))), _target);
          goto tmp3_done;
        }
        case 19: {
          
          /* Pattern matching succeeded */
          _exp1 = omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))), _target);

          _exp2 = omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 4))), _target);
          tmpMeta1 = omc_NFCeval_evalBinaryOp(threadData, _exp1, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 3))), _exp2, _target);
          goto tmp3_done;
        }
        case 20: {
          
          /* Pattern matching succeeded */
          _exp1 = omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 3))), _target);
          tmpMeta1 = omc_NFCeval_evalUnaryOp(threadData, _exp1, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))));
          goto tmp3_done;
        }
        case 21: {
          
          /* Pattern matching succeeded */
          _exp1 = omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))), _target);

          if(omc_NFExpression_isSplitSubscriptedExp(threadData, _exp1))
          {
            _exp2 = omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 4))), _target);
          }
          else
          {
            _exp2 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 4)));
          }
          tmpMeta1 = omc_NFCeval_evalLogicBinaryOp(threadData, _exp1, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 3))), _exp2, _target);
          goto tmp3_done;
        }
        case 22: {
          
          /* Pattern matching succeeded */
          _exp1 = omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 3))), _target);
          tmpMeta1 = omc_NFCeval_evalLogicUnaryOp(threadData, _exp1, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))));
          goto tmp3_done;
        }
        case 23: {
          
          /* Pattern matching succeeded */
          _exp1 = omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))), _target);

          _exp2 = omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 4))), _target);
          tmpMeta1 = omc_NFCeval_evalRelationOp(threadData, _exp1, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 3))), _exp2);
          goto tmp3_done;
        }
        case 25: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalIfExp(threadData, _exp, _target);
          goto tmp3_done;
        }
        case 26: {
          
          /* Pattern matching succeeded */
          _exp1 = omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 3))), _target);
          tmpMeta1 = omc_NFCeval_evalCast(threadData, _exp1, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))));
          goto tmp3_done;
        }
        case 27: {
          
          /* Pattern matching succeeded */
          /* Tail recursive call */
          __omcQ_24in_5Fexp = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2)));
          goto _tailrecursive;
          /* TODO: Make sure any eventual dead code below is never generated */
          goto tmp3_done;
        }
        case 28: {
          
          /* Pattern matching succeeded */
          /* Tail recursive call */
          __omcQ_24in_5Fexp = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2)));
          goto _tailrecursive;
          /* TODO: Make sure any eventual dead code below is never generated */
          goto tmp3_done;
        }
        case 29: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalSubscriptedExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))), (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 3))), _target);
          goto tmp3_done;
        }
        case 30: {
          
          /* Pattern matching succeeded */
          _exp1 = omc_NFCeval_evalExp(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))), _target);
          tmpMeta1 = omc_NFExpression_tupleElement(threadData, _exp1, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 4))), mmc_unbox_integer((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 3)))));
          goto tmp3_done;
        }
        case 31: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalRecordElement(threadData, _exp, _target);
          goto tmp3_done;
        }
        case 32: {
          
          /* Pattern matching succeeded */
          /* Tail recursive call */
          __omcQ_24in_5Fexp = omc_Mutable_access(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))));
          goto _tailrecursive;
          /* TODO: Make sure any eventual dead code below is never generated */
          goto tmp3_done;
        }
        case 37: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = omc_NFCeval_evalGetInstanceName(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_exp), 2))));
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          
          /* Pattern matching succeeded */
          tmpMeta1 = _exp;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _exp = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_tryEvalExp(threadData_t *threadData, modelica_metatype __omcQ_24in_5Fexp)
{
  modelica_metatype _exp = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _exp = __omcQ_24in_5Fexp;
  omc_ErrorExt_setCheckpoint(threadData, _OMC_LIT308);

  { /* matchcontinue expression */
    {
      volatile mmc_switch_type tmp3;
      int tmp4;
      tmp3 = 0;
      MMC_TRY_INTERNAL(mmc_jumper)
      tmp2_top:
      threadData->mmc_jumper = &new_mmc_jumper;
      for (; tmp3 < 2; tmp3++) {
        switch (MMC_SWITCH_CAST(tmp3)) {
        case 0: {
          /* Pattern matching succeeded */
          _exp = omc_NFCeval_evalExp(threadData, _exp, _OMC_LIT36);
          goto tmp2_done;
        }
        case 1: {
          /* Pattern matching succeeded */
          goto tmp2_done;
        }
        }
        goto tmp2_end;
        tmp2_end: ;
      }
      goto goto_1;
      tmp2_done:
      (void)tmp3;
      MMC_RESTORE_INTERNAL(mmc_jumper);
      goto tmp2_done2;
      goto_1:;
      MMC_CATCH_INTERNAL(mmc_jumper);
      if (++tmp3 < 2) {
        goto tmp2_top;
      }
      MMC_THROW_INTERNAL();
      tmp2_done2:;
    }
  }
  ;

  omc_ErrorExt_rollBack(threadData, _OMC_LIT308);
  _return: OMC_LABEL_UNUSED
  return _exp;
}

DLLDirection
modelica_metatype omc_NFCeval_EvalTarget_getInfo(threadData_t *threadData, modelica_metatype _target)
{
  modelica_metatype _info = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _info = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_target), 2)));
  _return: OMC_LABEL_UNUSED
  return _info;
}

DLLDirection
modelica_boolean omc_NFCeval_EvalTarget_hasInfo(threadData_t *threadData, modelica_metatype _target)
{
  modelica_boolean _res;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  _res = (!(stringLength((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_target), 2)))), 2)))) == ((modelica_integer) 0)));
  _return: OMC_LABEL_UNUSED
  return _res;
}
modelica_metatype boxptr_NFCeval_EvalTarget_hasInfo(threadData_t *threadData, modelica_metatype _target)
{
  modelica_boolean _res;
  modelica_metatype out_res;
  _res = omc_NFCeval_EvalTarget_hasInfo(threadData, _target);
  out_res = mmc_mk_icon(_res);
  return out_res;
}

DLLDirection
modelica_metatype omc_NFCeval_EvalTarget_new(threadData_t *threadData, modelica_metatype _info, modelica_integer _context, modelica_metatype _extra)
{
  modelica_metatype _target = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  tmpMeta1 = mmc_mk_box4(3, &NFCeval_EvalTarget_EVAL__TARGET__desc, _info, mmc_mk_integer(_context), _extra);
  _target = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _target;
}
modelica_metatype boxptr_NFCeval_EvalTarget_new(threadData_t *threadData, modelica_metatype _info, modelica_metatype _context, modelica_metatype _extra)
{
  modelica_integer tmp1;
  modelica_metatype _target = NULL;
  modelica_metatype tmpMeta2;
  tmp1 = mmc_unbox_integer(_context);
  _target = omc_NFCeval_EvalTarget_new(threadData, _info, tmp1, _extra);
  /* skip box _target; NFCeval.EvalTarget */
  return _target;
}

