TRAsetup

original_code:
int
TRAsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *state)
{
    TRAmodel *model = (TRAmodel *)inModel;
    TRAinstance *here;
    int error;
    CKTnode *tmp;
    for( ; model != ((void *)0); model = model->TRAnextModel ) {
        for (here = model->TRAinstances; here != ((void *)0) ;
                here=here->TRAnextInstance) {
            if(here->TRAbrEq1==0) {
                error = CKTmkVolt(ckt,&tmp,here->TRAname,"i1");
                if(error) return(error);
                here->TRAbrEq1 = tmp->number;
            }
            if(here->TRAbrEq2==0) {
                error = CKTmkVolt(ckt,&tmp,here->TRAname,"i2");
                if(error) return(error);
                here->TRAbrEq2 = tmp->number;
            }
            if(here->TRAintNode1==0) {
                error = CKTmkVolt(ckt,&tmp,here->TRAname,"int1");
                if(error) return(error);
                here->TRAintNode1 = tmp->number;
            }
            if(here->TRAintNode2==0) {
                error = CKTmkVolt(ckt,&tmp,here->TRAname,"int2");
                if(error) return(error);
                here->TRAintNode2 = tmp->number;
            }
            here->TRAdelays = (double *)tmalloc((unsigned)(15*sizeof(double)));
            here->TRAallocDelay = 4;
            if((here->TRAibr1Ibr2Ptr = SMPmakeElt(matrix,here->TRAbrEq1,here->TRAbrEq2))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr1Int1Ptr = SMPmakeElt(matrix,here->TRAbrEq1,here->TRAintNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr1Neg1Ptr = SMPmakeElt(matrix,here->TRAbrEq1,here->TRAnegNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr1Neg2Ptr = SMPmakeElt(matrix,here->TRAbrEq1,here->TRAnegNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr1Pos2Ptr = SMPmakeElt(matrix,here->TRAbrEq1,here->TRAposNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr2Ibr1Ptr = SMPmakeElt(matrix,here->TRAbrEq2,here->TRAbrEq1))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr2Int2Ptr = SMPmakeElt(matrix,here->TRAbrEq2,here->TRAintNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr2Neg1Ptr = SMPmakeElt(matrix,here->TRAbrEq2,here->TRAnegNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr2Neg2Ptr = SMPmakeElt(matrix,here->TRAbrEq2,here->TRAnegNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr2Pos1Ptr = SMPmakeElt(matrix,here->TRAbrEq2,here->TRAposNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRAint1Ibr1Ptr = SMPmakeElt(matrix,here->TRAintNode1,here->TRAbrEq1))==(double *)((void *)0)){ return(8);}
            if((here->TRAint1Int1Ptr = SMPmakeElt(matrix,here->TRAintNode1,here->TRAintNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRAint1Pos1Ptr = SMPmakeElt(matrix,here->TRAintNode1,here->TRAposNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRAint2Ibr2Ptr = SMPmakeElt(matrix,here->TRAintNode2,here->TRAbrEq2))==(double *)((void *)0)){ return(8);}
            if((here->TRAint2Int2Ptr = SMPmakeElt(matrix,here->TRAintNode2,here->TRAintNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRAint2Pos2Ptr = SMPmakeElt(matrix,here->TRAintNode2,here->TRAposNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRAneg1Ibr1Ptr = SMPmakeElt(matrix,here->TRAnegNode1,here->TRAbrEq1))==(double *)((void *)0)){ return(8);}
            if((here->TRAneg2Ibr2Ptr = SMPmakeElt(matrix,here->TRAnegNode2,here->TRAbrEq2))==(double *)((void *)0)){ return(8);}
            if((here->TRApos1Int1Ptr = SMPmakeElt(matrix,here->TRAposNode1,here->TRAintNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRApos1Pos1Ptr = SMPmakeElt(matrix,here->TRAposNode1,here->TRAposNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRApos2Int2Ptr = SMPmakeElt(matrix,here->TRAposNode2,here->TRAintNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRApos2Pos2Ptr = SMPmakeElt(matrix,here->TRAposNode2,here->TRAposNode2))==(double *)((void *)0)){ return(8);}
            if(!here->TRAnlGiven) {
                here->TRAnl = .25;
            }
            if(!here->TRAfGiven) {
                here->TRAf = 1e9;
            }
            if(!here->TRAreltolGiven) {
                here->TRAreltol = 1;
            }
            if(!here->TRAabstolGiven) {
                here->TRAabstol = 1;
            }
            if(!here->TRAimpedGiven) {
                (*(SPfrontEnd->IFerror))(0x2,
                        "%s: transmission line z0 must be given",
                        &(here->TRAname));
                return(7);
            }
        }
    }
    return(0);
}

canonical_original_code:
int TRAsetup(void *matrix, struct sGENmodel *inModel, struct CKTcircuit *ckt, int *state)
{
    struct sTRAmodel *model = (TRAmodel *)inModel;
    struct sTRAinstance *here;
    int error;
    struct sCKTnode *tmp;
    for( ; model != ((void *)0); model = model->TRAnextModel ) {
        for (here = model->TRAinstances; here != ((void *)0) ;
                here=here->TRAnextInstance) {
            if(here->TRAbrEq1==0) {
                error = CKTmkVolt(ckt,&tmp,here->TRAname,"i1");
                if(error) return(error);
                here->TRAbrEq1 = tmp->number;
            }
            if(here->TRAbrEq2==0) {
                error = CKTmkVolt(ckt,&tmp,here->TRAname,"i2");
                if(error) return(error);
                here->TRAbrEq2 = tmp->number;
            }
            if(here->TRAintNode1==0) {
                error = CKTmkVolt(ckt,&tmp,here->TRAname,"int1");
                if(error) return(error);
                here->TRAintNode1 = tmp->number;
            }
            if(here->TRAintNode2==0) {
                error = CKTmkVolt(ckt,&tmp,here->TRAname,"int2");
                if(error) return(error);
                here->TRAintNode2 = tmp->number;
            }
            here->TRAdelays = (double *)tmalloc((unsigned int)(15*sizeof(double)));
            here->TRAallocDelay = 4;
            if((here->TRAibr1Ibr2Ptr = SMPmakeElt(matrix,here->TRAbrEq1,here->TRAbrEq2))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr1Int1Ptr = SMPmakeElt(matrix,here->TRAbrEq1,here->TRAintNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr1Neg1Ptr = SMPmakeElt(matrix,here->TRAbrEq1,here->TRAnegNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr1Neg2Ptr = SMPmakeElt(matrix,here->TRAbrEq1,here->TRAnegNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr1Pos2Ptr = SMPmakeElt(matrix,here->TRAbrEq1,here->TRAposNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr2Ibr1Ptr = SMPmakeElt(matrix,here->TRAbrEq2,here->TRAbrEq1))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr2Int2Ptr = SMPmakeElt(matrix,here->TRAbrEq2,here->TRAintNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr2Neg1Ptr = SMPmakeElt(matrix,here->TRAbrEq2,here->TRAnegNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr2Neg2Ptr = SMPmakeElt(matrix,here->TRAbrEq2,here->TRAnegNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRAibr2Pos1Ptr = SMPmakeElt(matrix,here->TRAbrEq2,here->TRAposNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRAint1Ibr1Ptr = SMPmakeElt(matrix,here->TRAintNode1,here->TRAbrEq1))==(double *)((void *)0)){ return(8);}
            if((here->TRAint1Int1Ptr = SMPmakeElt(matrix,here->TRAintNode1,here->TRAintNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRAint1Pos1Ptr = SMPmakeElt(matrix,here->TRAintNode1,here->TRAposNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRAint2Ibr2Ptr = SMPmakeElt(matrix,here->TRAintNode2,here->TRAbrEq2))==(double *)((void *)0)){ return(8);}
            if((here->TRAint2Int2Ptr = SMPmakeElt(matrix,here->TRAintNode2,here->TRAintNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRAint2Pos2Ptr = SMPmakeElt(matrix,here->TRAintNode2,here->TRAposNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRAneg1Ibr1Ptr = SMPmakeElt(matrix,here->TRAnegNode1,here->TRAbrEq1))==(double *)((void *)0)){ return(8);}
            if((here->TRAneg2Ibr2Ptr = SMPmakeElt(matrix,here->TRAnegNode2,here->TRAbrEq2))==(double *)((void *)0)){ return(8);}
            if((here->TRApos1Int1Ptr = SMPmakeElt(matrix,here->TRAposNode1,here->TRAintNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRApos1Pos1Ptr = SMPmakeElt(matrix,here->TRAposNode1,here->TRAposNode1))==(double *)((void *)0)){ return(8);}
            if((here->TRApos2Int2Ptr = SMPmakeElt(matrix,here->TRAposNode2,here->TRAintNode2))==(double *)((void *)0)){ return(8);}
            if((here->TRApos2Pos2Ptr = SMPmakeElt(matrix,here->TRAposNode2,here->TRAposNode2))==(double *)((void *)0)){ return(8);}
            if(!here->TRAnlGiven) {
                here->TRAnl = .25;
            }
            if(!here->TRAfGiven) {
                here->TRAf = 1e9;
            }
            if(!here->TRAreltolGiven) {
                here->TRAreltol = 1;
            }
            if(!here->TRAabstolGiven) {
                here->TRAabstol = 1;
            }
            if(!here->TRAimpedGiven) {
                (*(SPfrontEnd->IFerror))(0x2,
                        "%s: transmission line z0 must be given",
                        &(here->TRAname));
                return(7);
            }
        }
    }
    return(0);
}

variable_types:
matrix
void *

variable_types: struct sGENmodel { int GENmodType; struct sGENmodel *GENnextModel; struct sGENinstance { struct sGENmodel *GENmodPtr; struct sGENinstance *GENnextInstance; char *GENname; int GENowner; int GENstate; int GENnode1; int GENnode2; int GENnode3; int GENnode4; int GENnode5; int GENnode6; int GENnode7; } *GENinstances; char *GENmodName; } *

variable_types: struct CKTcircuit { struct sGENmodel **CKThead; struct STATistics { int STATnumIter; int STATtranIter; int STAToldIter; int STATtimePts; int STATaccepted; int STATrejected; double STATtotAnalTime; double STATloadTime; double STATdecompTime; double STATsolveTime; double STATreorderTime; double STATcombineTime; double STATsyncTime; double STATtranTime; double STATtranDecompTime; double STATtranSolveTime; double STATtranLoadTime; double STATtranTruncTime; double STATtranCombTime; double STATtranSyncTime; double STATacTime; double STATacDecompTime; double STATacSolveTime; double STATacLoadTime; double STATacCombTime; double STATacSyncTime; } *CKTstat; double *CKTstates[8]; double CKTtime; double CKTdelta; double CKTdeltaOld[7]; double CKTtemp; double CKTnomTemp; double CKTvt; double CKTag[7]; double CKTagp[7]; int CKTorder; int CKTmaxOrder; int CKTintegrateMethod; void *CKTmatrix; int CKTniState; double *CKTrhs; double *CKTrhsOld; double *CKTrhsSpare; double *CKTirhs; double *CKTirhsOld; double *CKTirhsSpare; double *CKTpred; double *CKTsols[8]; double *CKTrhsOp; double *CKTsenRhs; double *CKTseniRhs; int CKTmaxEqNum; int CKTcurrentAnalysis; struct sCKTnode { char *name; int type; int number; double ic; double nodeset; double *ptr; struct sCKTnode *next; unsigned int icGiven; unsigned int nsGiven; } *CKTnodes; struct sCKTnode *CKTlastNode; int CKTnumStates; long CKTmode; int CKTbypass; int CKTdcMaxIter; int CKTdcTrcvMaxIter; int CKTtranMaxIter; int CKTbreakSize; int CKTbreak; double CKTsaveDelta; double CKTminBreak; double *CKTbreaks; double CKTabstol; double CKTpivotAbsTol; double CKTpivotRelTol; double CKTreltol; double CKTchgtol; double CKTvoltTol; double CKTgmin; double CKTgshunt; double CKTdelmin; double CKTtrtol; double CKTfinalTime; double CKTstep; double CKTmaxStep; double CKTinitTime; double CKTomega; double CKTsrcFact; double CKTdiagGmin; int CKTnumSrcSteps; int CKTnumGminSteps; double CKTgminFactor; int CKTnoncon; double CKTdefaultMosM; double CKTdefaultMosL; double CKTdefaultMosW; double CKTdefaultMosAD; double CKTdefaultMosAS; unsigned int CKThadNodeset; unsigned int CKTfixLimit; unsigned int CKTnoOpIter; unsigned int CKTisSetup; struct sJOB { int JOBtype; struct sJOB *JOBnextJob; char *JOBname; } *CKTcurJob; struct SENstruct { int JOBtype; struct sJOB *JOBnextJob; char *JOBname; int SENnumVal; char **SENdevices; char **SENparmNames; unsigned int SENinitflag; unsigned int SENicflag; unsigned int SENstatus; unsigned int SENacpertflag; int SENmode; int SENparms; double SENpertfac; double **SEN_Sap; double **SEN_RHS; double **SEN_iRHS; int SENsize; void *SEN_Jacmat; double *SEN_parmVal; char **SEN_parmName; } *CKTsenInfo; double *CKTtimePoints; double *CKTdeltaList; int CKTtimeListSize; int CKTtimeIndex; int CKTsizeIncr; unsigned int CKTtryToCompact; unsigned int CKTbadMos3; unsigned int CKTkeepOpInfo; unsigned int CKTcopyNodesets; unsigned int CKTnodeDamping; double CKTabsDv; double CKTrelDv; int CKTtroubleNode; struct sGENinstance *CKTtroubleElt; } *

variable_types:
state
int *

variable_types: struct sTRAmodel { int TRAmodType; struct sTRAmodel *TRAnextModel; struct sTRAinstance { struct sTRAmodel *TRAmodPtr; struct sTRAinstance *TRAnextInstance; char *TRAname; int TRAowner; int TRAstate; int TRAposNode1; int TRAnegNode1; int TRAposNode2; int TRAnegNode2; int TRAintNode1; int TRAintNode2; double TRAimped; double TRAconduct; double TRAtd; double TRAnl; double TRAf; double TRAinput1; double TRAinput2; double TRAinitVolt1; double TRAinitCur1; double TRAinitVolt2; double TRAinitCur2; double TRAreltol; double TRAabstol; double *TRAdelays; int TRAsizeDelay; int TRAallocDelay; int TRAbrEq1; int TRAbrEq2; double *TRAibr1Ibr2Ptr; double *TRAibr1Int1Ptr; double *TRAibr1Neg1Ptr; double *TRAibr1Neg2Ptr; double *TRAibr1Pos2Ptr; double *TRAibr2Ibr1Ptr; double *TRAibr2Int2Ptr; double *TRAibr2Neg1Ptr; double *TRAibr2Neg2Ptr; double *TRAibr2Pos1Ptr; double *TRAint1Ibr1Ptr; double *TRAint1Int1Ptr; double *TRAint1Pos1Ptr; double *TRAint2Ibr2Ptr; double *TRAint2Int2Ptr; double *TRAint2Pos2Ptr; double *TRAneg1Ibr1Ptr; double *TRAneg2Ibr2Ptr; double *TRApos1Int1Ptr; double *TRApos1Pos1Ptr; double *TRApos2Int2Ptr; double *TRApos2Pos2Ptr; unsigned int TRAimpedGiven; unsigned int TRAtdGiven; unsigned int TRAnlGiven; unsigned int TRAfGiven; unsigned int TRAicV1Given; unsigned int TRAicC1Given; unsigned int TRAicV2Given; unsigned int TRAicC2Given; unsigned int TRAreltolGiven; unsigned int TRAabstolGiven; } *TRAinstances; char *TRAmodName; } *

variable_types: struct sTRAinstance { struct sTRAmodel { int TRAmodType; struct sTRAmodel *TRAnextModel; struct sTRAinstance *TRAinstances; char *TRAmodName; } *TRAmodPtr; struct sTRAinstance *TRAnextInstance; char *TRAname; int TRAowner; int TRAstate; int TRAposNode1; int TRAnegNode1; int TRAposNode2; int TRAnegNode2; int TRAintNode1; int TRAintNode2; double TRAimped; double TRAconduct; double TRAtd; double TRAnl; double TRAf; double TRAinput1; double TRAinput2; double TRAinitVolt1; double TRAinitCur1; double TRAinitVolt2; double TRAinitCur2; double TRAreltol; double TRAabstol; double *TRAdelays; int TRAsizeDelay; int TRAallocDelay; int TRAbrEq1; int TRAbrEq2; double *TRAibr1Ibr2Ptr; double *TRAibr1Int1Ptr; double *TRAibr1Neg1Ptr; double *TRAibr1Neg2Ptr; double *TRAibr1Pos2Ptr; double *TRAibr2Ibr1Ptr; double *TRAibr2Int2Ptr; double *TRAibr2Neg1Ptr; double *TRAibr2Neg2Ptr; double *TRAibr2Pos1Ptr; double *TRAint1Ibr1Ptr; double *TRAint1Int1Ptr; double *TRAint1Pos1Ptr; double *TRAint2Ibr2Ptr; double *TRAint2Int2Ptr; double *TRAint2Pos2Ptr; double *TRAneg1Ibr1Ptr; double *TRAneg2Ibr2Ptr; double *TRApos1Int1Ptr; double *TRApos1Pos1Ptr; double *TRApos2Int2Ptr; double *TRApos2Pos2Ptr; unsigned int TRAimpedGiven; unsigned int TRAtdGiven; unsigned int TRAnlGiven; unsigned int TRAfGiven; unsigned int TRAicV1Given; unsigned int TRAicC1Given; unsigned int TRAicV2Given; unsigned int TRAicC2Given; unsigned int TRAreltolGiven; unsigned int TRAabstolGiven; } *

variable_types: error int


URCparam

repo: gserdyuk/gnucap-a

decompiled_code:
__int64 __fastcall URCparam(__int64 a1, int a2, _QWORD *a3, __int64 a4)
{
__int64 result; // rax

if ( a2 == 1 )
{
*(_QWORD *)(a4 + 40) = *a3;
*(_BYTE *)(a4 + 52) |= 1u;
result = 0LL;
}
else if ( a2 == 2 )
{
*(_DWORD *)(a4 + 48) = (int)*(double *)a3;
*(_BYTE *)(a4 + 52) |= 2u;
result = 0LL;
}
else
{
result = 7LL;
}
return result;
}

canonical_decompiled_code:
__int64 __fastcall func0(__int64 a1, int a2, _QWORD *a3, __int64 a4)
{
__int64 result; // rax

if ( a2 == 1 )
{
*(_QWORD *)(a4 + 40) = *a3;
*(_BYTE *)(a4 + 52) |= 1u;
result = 0LL;
}
else if ( a2 == 2 )
{
*(_DWORD *)(a4 + 48) = (int)*(double *)a3;
*(_BYTE *)(a4 + 52) |= 2u;
result = 0LL;
}
else
{
result = 7LL;
}
return result;
}

original_code:
int
URCparam(int param, IFvalue *value, GENinstance *inst, IFvalue *select)
{
    URCinstance *here = (URCinstance *)inst;
    switch(param) {
        case 1:
            here->URClength = value->rValue;
            here->URClenGiven = 1;
            break;
        case 2:
            here->URClumps = value->rValue;
            here->URClumpsGiven = 1;
            break;
        default:
            return(7);
    }
    return(0);
}

canonical_original_code:
int URCparam(int param, union uIFvalue *value, struct sGENinstance *inst, union uIFvalue *select)
{
    struct sURCinstance *here = (URCinstance *)inst;
    switch(param) {
        case 1:
            here->URClength = value->rValue;
            here->URClenGiven = 1;
            break;
        case 2:
            here->URClumps = value->rValue;
            here->URClumpsGiven = 1;
            break;
        default:
            return(7);
    }
    return(0);
}

variable_types: param int

variable_types: union uIFvalue { int iValue; double rValue; struct sIFcomplex { double real; double imag; } cValue; char *sValue; char *uValue; void *nValue; struct sIFparseTree { int numVars; int *varTypes; union uIFvalue *vars; int (*IFeval)(struct sIFparseTree *, double, double *, double *, double *); } *tValue; struct { int numValue; union { int *iVec; double *rVec; struct sIFcomplex *cVec; char **sVec; char **uVec; void **nVec; } vec; } v; } *

variable_types: struct sGENinstance { struct sGENmodel { int GENmodType; struct sGENmodel *GENnextModel; struct sGENinstance *GENinstances; char *GENmodName; } *GENmodPtr; struct sGENinstance *GENnextInstance; char *GENname; int GENowner; int GENstate; int GENnode1; int GENnode2; int GENnode3; int GENnode4; int GENnode5; int GENnode6; int GENnode7; } *

variable_types:
select
union uIFvalue *

variable_types: struct sURCinstance { struct sURCmodel { int URCmodType; struct sURCmodel *URCnextModel; struct sURCinstance *URCinstances; char *URCmodName; double URCk; double URCfmax; double URCrPerL; double URCcPerL; double URCisPerL; double URCrsPerL; unsigned int URCkGiven; unsigned int URCfmaxGiven; unsigned int URCrPerLGiven; unsigned int URCcPerLGiven; unsigned int URCisPerLGiven; unsigned int URCrsPerLGiven; } *URCmodPtr; struct sURCinstance *URCnextInstance; char *URCname; int URCowner; int URCstate; int URCposNode; int URCnegNode; int URCgndNode; double URClength; int URClumps; unsigned int URClenGiven; unsigned int URClumpsGiven; } *

return_type: int

user_defined_types: union uIFvalue { int iValue; double rValue; struct sIFcomplex cValue; char *sValue; char *uValue; void *nValue; struct sIFparseTree *tValue; struct { int numValue; union { int *iVec; double *rVec; struct sIFcomplex *cVec; char **sVec; char **uVec; void **nVec; } vec; } v; }

user_defined_types: struct sGENinstance { struct sGENmodel *GENmodPtr; struct sGENinstance *GENnextInstance; char *GENname; int GENowner; int GENstate; int GENnode1; int GENnode2; int GENnode3; int GENnode4; int GENnode5; int GENnode6; int GENnode7; }

user_defined_types: struct sURCinstance { struct sURCmodel *URCmodPtr; struct sURCinstance *URCnextInstance; char *URCname; int URCowner; int URCstate; int URCposNode; int URCnegNode; int URCgndNode; double URClength; int URClumps; unsigned int URClenGiven; unsigned int URClumpsGiven; }


CAPload

original_code:
int
CAPload(GENmodel *inModel, CKTcircuit *ckt)
{
    CAPmodel *model = (CAPmodel*)inModel;
    CAPinstance *here;
    int cond1;
    double vcap;
    double geq;
    double ceq;
    int error;
    double m;
    if(ckt->CKTmode & (0x1|0x2|0x20) ) {
        cond1=
            ( ( (ckt->CKTmode & 0x70) &&
                (ckt->CKTmode & 0x200) )
            || ( ( ckt->CKTmode & 0x10000l) &&
                ( ckt->CKTmode & 0x1000) ) ) ;
        for( ; model != ((void *)0); model = model->CAPnextModel ) {
            for (here = model->CAPinstances; here != ((void *)0) ;
                    here=here->CAPnextInstance) {
  if (here->CAPowner != ARCHme) continue;
  m = here->CAPm;
                if(cond1) {
                    vcap = here->CAPinitCond;
                } else {
                    vcap = *(ckt->CKTrhsOld+here->CAPposNode) -
                        *(ckt->CKTrhsOld+here->CAPnegNode) ;
                }
                if(ckt->CKTmode & (0x1 | 0x2)) {
                        *(ckt->CKTstates[0]+here->CAPstate) = here->CAPcapac * vcap;
                        if((ckt->CKTmode & 0x1000)) {
                            *(ckt->CKTstates[1]+here->CAPstate) =
                                *(ckt->CKTstates[0]+here->CAPstate);
                        }
                    error = NIintegrate(ckt,&geq,&ceq,here->CAPcapac,
                            here->CAPstate);
                    if(error) return(error);
                    if(ckt->CKTmode & 0x1000) {
                        *(ckt->CKTstates[1]+here->CAPstate+1) =
                            *(ckt->CKTstates[0]+here->CAPstate+1);
                    }
                    *(here->CAPposPosptr) += m * geq;
                    *(here->CAPnegNegptr) += m * geq;
                    *(here->CAPposNegptr) -= m * geq;
                    *(here->CAPnegPosptr) -= m * geq;
                    *(ckt->CKTrhs+here->CAPposNode) -= m * ceq;
                    *(ckt->CKTrhs+here->CAPnegNode) += m * ceq;
                } else
      *(ckt->CKTstates[0]+here->CAPstate) = here->CAPcapac * vcap;
            }
        }
    }
    return(0);
}

canonical_original_code:
int CAPload(struct sGENmodel *inModel, struct CKTcircuit *ckt)
{
    struct sCAPmodel *model = (CAPmodel*)inModel;
    struct sCAPinstance *here;
    int cond1;
    double vcap;
    double geq;
    double ceq;
    int error;
    double m;
    if(ckt->CKTmode & (0x1|0x2|0x20) ) {
        cond1=
            ( ( (ckt->CKTmode & 0x70) &&
                (ckt->CKTmode & 0x200) )
            || ( ( ckt->CKTmode & 0x10000l) &&
                ( ckt->CKTmode & 0x1000) ) ) ;
        for( ; model != ((void *)0); model = model->CAPnextModel ) {
            for (here = model->CAPinstances; here != ((void *)0) ;
                    here=here->CAPnextInstance) {
  if (here->CAPowner != ARCHme) continue;
  m = here->CAPm;
                if(cond1) {
                    vcap = here->CAPinitCond;
                } else {
                    vcap = *(ckt->CKTrhsOld+here->CAPposNode) -
                        *(ckt->CKTrhsOld+here->CAPnegNode) ;
                }
                if(ckt->CKTmode & (0x1 | 0x2)) {
                        *(ckt->CKTstates[0]+here->CAPstate) = here->CAPcapac * vcap;
                        if((ckt->CKTmode & 0x1000)) {
                            *(ckt->CKTstates[1]+here->CAPstate) =
                                *(ckt->CKTstates[0]+here->CAPstate);
                        }
                    error = NIintegrate(ckt,&geq,&ceq,here->CAPcapac,
                            here->CAPstate);
                    if(error) return(error);
                    if(ckt->CKTmode & 0x1000) {
                        *(ckt->CKTstates[1]+here->CAPstate+1) =
                            *(ckt->CKTstates[0]+here->CAPstate+1);
                    }
                    *(here->CAPposPosptr) += m * geq;
                    *(here->CAPnegNegptr) += m * geq;
                    *(here->CAPposNegptr) -= m * geq;
                    *(here->CAPnegPosptr) -= m * geq;
                    *(ckt->CKTrhs+here->CAPposNode) -= m * ceq;
                    *(ckt->CKTrhs+here->CAPnegNode) += m * ceq;
                } else
      *(ckt->CKTstates[0]+here->CAPstate) = here->CAPcapac * vcap;
            }
        }
    }
    return(0);
}

variable_types: struct sCAPmodel { int CAPmodType; struct sCAPmodel *CAPnextModel; struct sCAPinstance { struct sCAPmodel *CAPmodPtr; struct sCAPinstance *CAPnextInstance; char *CAPname; int CAPowner; int CAPstate; int CAPposNode; int CAPnegNode; double CAPtemp; double CAPdtemp; double CAPcapac; double CAPinitCond; double CAPwidth; double CAPlength; double CAPscale; double CAPm; double *CAPposPosptr; double *CAPnegNegptr; double *CAPposNegptr; double *CAPnegPosptr; unsigned int CAPcapGiven; unsigned int CAPicGiven; unsigned int CAPwidthGiven; unsigned int CAPlengthGiven; unsigned int CAPtempGiven; unsigned int CAPdtempGiven; unsigned int CAPscaleGiven; unsigned int CAPmGiven; int CAPsenParmNo; } *CAPinstances; char *CAPmodName; double CAPtnom; double CAPtempCoeff1; double CAPtempCoeff2; double CAPmCap; double CAPcj; double CAPcjsw; double CAPdefWidth; double CAPdefLength; double CAPnarrow; double CAPshort; double CAPdi; double CAPthick; unsigned int CAPmCapGiven; unsigned int CAPcjGiven; unsigned int CAPcjswGiven; unsigned int CAPdefWidthGiven; unsigned int CAPdefLengthGiven; unsigned int CAPnarrowGiven; unsigned int CAPshortGiven; unsigned int CAPtnomGiven; unsigned int CAPtc1Given; unsigned int CAPtc2Given; unsigned int CAPdiGiven; unsigned int CAPthickGiven; } *

variable_types: struct sCAPinstance { struct sCAPmodel { int CAPmodType; struct sCAPmodel *CAPnextModel; struct sCAPinstance *CAPinstances; char *CAPmodName; double CAPtnom; double CAPtempCoeff1; double CAPtempCoeff2; double CAPmCap; double CAPcj; double CAPcjsw; double CAPdefWidth; double CAPdefLength; double CAPnarrow; double CAPshort; double CAPdi; double CAPthick; unsigned int CAPmCapGiven; unsigned int CAPcjGiven; unsigned int CAPcjswGiven; unsigned int CAPdefWidthGiven; unsigned int CAPdefLengthGiven; unsigned int CAPnarrowGiven; unsigned int CAPshortGiven; unsigned int CAPtnomGiven; unsigned int CAPtc1Given; unsigned int CAPtc2Given; unsigned int CAPdiGiven; unsigned int CAPthickGiven; } *CAPmodPtr; struct sCAPinstance *CAPnextInstance; char *CAPname; int CAPowner; int CAPstate; int CAPposNode; int CAPnegNode; double CAPtemp; double CAPdtemp; double CAPcapac; double CAPinitCond; double CAPwidth; double CAPlength; double CAPscale; double CAPm; double *CAPposPosptr; double *CAPnegNegptr; double *CAPposNegptr; double *CAPnegPosptr; unsigned int CAPcapGiven; unsigned int CAPicGiven; unsigned int CAPwidthGiven; unsigned int CAPlengthGiven; unsigned int CAPtempGiven; unsigned int CAPdtempGiven; unsigned int CAPscaleGiven; unsigned int CAPmGiven; int CAPsenParmNo; } *

variable_types: vcap double

variable_types: geq double

variable_types: ceq double

variable_types: m double

user_defined_types: struct sGENmodel { int GENmodType; struct sGENmodel *GENnextModel; struct sGENinstance *GENinstances; char *GENmodName; }

user_defined_types: struct CKTcircuit { struct sGENmodel **CKThead; struct STATistics *CKTstat; double *CKTstates[8]; double CKTtime; double CKTdelta; double CKTdeltaOld[7]; double CKTtemp; double CKTnomTemp; double CKTvt; double CKTag[7]; double CKTagp[7]; int CKTorder; int CKTmaxOrder; int CKTintegrateMethod; void *CKTmatrix; int CKTniState; double *CKTrhs; double *CKTrhsOld; double *CKTrhsSpare; double *CKTirhs; double *CKTirhsOld; double *CKTirhsSpare; double *CKTpred; double *CKTsols[8]; double *CKTrhsOp; double *CKTsenRhs; double *CKTseniRhs; int CKTmaxEqNum; int CKTcurrentAnalysis; struct sCKTnode *CKTnodes; struct sCKTnode *CKTlastNode; int CKTnumStates; long CKTmode; int CKTbypass; int CKTdcMaxIter; int CKTdcTrcvMaxIter; int CKTtranMaxIter; int CKTbreakSize; int CKTbreak; double CKTsaveDelta; double CKTminBreak; double *CKTbreaks; double CKTabstol; double CKTpivotAbsTol; double CKTpivotRelTol; double CKTreltol; double CKTchgtol; double CKTvoltTol; double CKTgmin; double CKTgshunt; double CKTdelmin; double CKTtrtol; double CKTfinalTime; double CKTstep; double CKTmaxStep; double CKTinitTime; double CKTomega; double CKTsrcFact; double CKTdiagGmin; int CKTnumSrcSteps; int CKTnumGminSteps; double CKTgminFactor; int CKTnoncon; double CKTdefaultMosM; double CKTdefaultMosL; double CKTdefaultMosW; double CKTdefaultMosAD; double CKTdefaultMosAS; unsigned int CKThadNodeset; unsigned int CKTfixLimit; unsigned int CKTnoOpIter; unsigned int CKTisSetup; struct sJOB *CKTcurJob; struct SENstruct *CKTsenInfo; double *CKTtimePoints; double *CKTdeltaList; int CKTtimeListSize; int CKTtimeIndex; int CKTsizeIncr; unsigned int CKTtryToCompact; unsigned int CKTbadMos3; unsigned int CKTkeepOpInfo; unsigned int CKTcopyNodesets; unsigned int CKTnodeDamping; double CKTabsDv; double CKTrelDv; int CKTtroubleNode; struct sGENinstance *CKTtroubleElt; }

user_defined_types: struct STATistics { int STATnumIter; int STATtranIter; int STAToldIter; int STATtimePts; int STATaccepted; int STATrejected; double STATtotAnalTime; double STATloadTime; double STATdecompTime; double STATsolveTime; double STATreorderTime; double STATcombineTime; double STATsyncTime; double STATtranTime; double STATtranDecompTime; double STATtranSolveTime; double STATtranLoadTime; double STATtranTruncTime; double STATtranCombTime; double STATtranSyncTime; double STATacTime; double STATacDecompTime; double STATacSolveTime; double STATacLoadTime; double STATacCombTime; double STATacSyncTime; }

user_defined_types: struct sCKTnode { char *name; int type; int number; double ic; double nodeset; double *ptr; struct sCKTnode *next; unsigned int icGiven; unsigned int nsGiven; }

user_defined_types: struct sJOB { int JOBtype; struct sJOB *JOBnextJob; char *JOBname; }

user_defined_types: struct SENstruct { int JOBtype; struct sJOB *JOBnextJob; char *JOBname; int SENnumVal; char **SENdevices; char **SENparmNames; unsigned int SENinitflag; unsigned int SENicflag; unsigned int SENstatus; unsigned int SENacpertflag; int SENmode; int SENparms; double SENpertfac; double **SEN_Sap; double **SEN_RHS; double **SEN_iRHS; int SENsize; void *SEN_Jacmat; double *SEN_parmVal; char **SEN_parmName; }


decompiled_code:
__int64 __fastcall B1ask(__int64 a1, __int64 a2, int a3, double *a4)
{
__int64 result; // rax
__int64 v5; // rdx
__int64 v6; // rdx
__int64 v7; // rdx
__int64 v8; // rdx
__int64 v9; // rdx
__int64 v10; // rdx
__int64 v11; // rdx
__int64 v12; // rdx
__int64 v13; // rdx
__int64 v14; // rdx
__int64 v15; // rdx
__int64 v16; // rdx
__int64 v17; // rdx
__int64 v18; // rdx
__int64 v19; // rdx
__int64 v20; // rdx
__int64 v21; // rdx
__int64 v22; // rdx
__int64 v23; // rdx
__int64 v24; // rdx
__int64 v25; // rdx
__int64 v26; // rdx
__int64 v27; // rdx
__int64 v28; // rdx
__int64 v29; // rdx
__int64 v30; // rdx
__int64 v31; // rdx
__int64 v32; // rdx
__int64 v33; // rdx
__int64 v34; // rdx
__int64 v35; // rdx
__int64 v36; // rdx

switch ( a3 )
{
case 1:
*a4 = *(double *)(a2 + 64);
result = 0LL;
break;
case 2:
*a4 = *(double *)(a2 + 56);
result = 0LL;
break;
case 3:
*a4 = *(double *)(a2 + 80);
result = 0LL;
break;
case 4:
*a4 = *(double *)(a2 + 72);
result = 0LL;
break;
case 5:
*a4 = *(double *)(a2 + 112);
result = 0LL;
break;
case 6:
*a4 = *(double *)(a2 + 104);
result = 0LL;
break;
case 7:
*a4 = *(double *)(a2 + 96);
result = 0LL;
break;
case 8:
*a4 = *(double *)(a2 + 88);
result = 0LL;
break;
case 9:
*a4 = (double)*(int *)(a2 + 176);
result = 0LL;
break;
case 10:
*a4 = *(double *)(a2 + 136);
result = 0LL;
break;
case 11:
*a4 = *(double *)(a2 + 144);
result = 0LL;
break;
case 12:
*a4 = *(double *)(a2 + 152);
result = 0LL;
break;
case 201:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 28);
result = 0LL;
break;
case 202:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 32);
result = 0LL;
break;
case 203:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 36);
result = 0LL;
break;
case 204:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 40);
result = 0LL;
break;
case 205:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 44);
result = 0LL;
break;
case 206:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 48);
result = 0LL;
break;
case 207:
v5 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v5 )
{
*a4 = *(double *)(v5 + 8LL * *(int *)(a2 + 24));
result = 0LL;
}
break;
case 208:
v6 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v6 )
{
*a4 = *(double *)(v6 + 8LL * *(int *)(a2 + 24) + 8);
result = 0LL;
}
break;
case 209:
v7 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v7 )
{
*a4 = *(double *)(v7 + 8LL * *(int *)(a2 + 24) + 16);
result = 0LL;
}
break;
case 210:
v8 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v8 )
{
*a4 = *(double *)(v8 + 8LL * *(int *)(a2 + 24) + 24);
result = 0LL;
}
break;
case 211:
v9 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v9 )
{
*a4 = *(double *)(v9 + 8LL * *(int *)(a2 + 24) + 32);
result = 0LL;
}
break;
case 212:
v10 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v10 )
{
*a4 = *(double *)(v10 + 8LL * *(int *)(a2 + 24) + 40);
result = 0LL;
}
break;
case 213:
v11 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v11 )
{
*a4 = *(double *)(v11 + 8LL * *(int *)(a2 + 24) + 48);
result = 0LL;
}
break;
case 214:
v12 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v12 )
{
*a4 = *(double *)(v12 + 8LL * *(int *)(a2 + 24) + 56);
result = 0LL;
}
break;
case 215:
v13 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v13 )
{
*a4 = *(double *)(v13 + 8LL * *(int *)(a2 + 24) + 64);
result = 0LL;
}
break;
case 216:
v14 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v14 )
{
*a4 = *(double *)(v14 + 8LL * *(int *)(a2 + 24) + 72);
result = 0LL;
}
break;
case 217:
v15 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v15 )
{
*a4 = *(double *)(v15 + 8LL * *(int *)(a2 + 24) + 80);
result = 0LL;
}
break;
case 218:
v16 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v16 )
{
*a4 = *(double *)(v16 + 8LL * *(int *)(a2 + 24) + 88);
result = 0LL;
}
break;
case 219:
v17 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v17 )
{
*a4 = *(double *)(v17 + 8LL * *(int *)(a2 + 24) + 96);
result = 0LL;
}
break;
case 220:
v18 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v18 )
{
*a4 = *(double *)(v18 + 8LL * *(int *)(a2 + 24) + 104);
result = 0LL;
}
break;
case 221:
v19 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v19 )
{
*a4 = *(double *)(v19 + 8LL * *(int *)(a2 + 24) + 112);
result = 0LL;
}
break;
case 222:
v20 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v20 )
{
*a4 = *(double *)(v20 + 8LL * *(int *)(a2 + 24) + 120);
result = 0LL;
}
break;
case 223:
v21 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v21 )
{
*a4 = *(double *)(v21 + 8LL * *(int *)(a2 + 24) + 128);
result = 0LL;
}
break;
case 224:
v22 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v22 )
{
*a4 = *(double *)(v22 + 8LL * *(int *)(a2 + 24) + 136);
result = 0LL;
}
break;
case 225:
v23 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v23 )
{
*a4 = *(double *)(v23 + 8LL * *(int *)(a2 + 24) + 144);
result = 0LL;
}
break;
case 226:
v24 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v24 )
{
*a4 = *(double *)(v24 + 8LL * *(int *)(a2 + 24) + 152);
result = 0LL;
}
break;
case 227:
v25 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v25 )
{
*a4 = *(double *)(v25 + 8LL * *(int *)(a2 + 24) + 160);
result = 0LL;
}
break;
case 228:
v26 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v26 )
{
*a4 = *(double *)(v26 + 8LL * *(int *)(a2 + 24) + 168);
result = 0LL;
}
break;
case 231:
v27 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v27 )
{
*a4 = *(double *)(v27 + 8LL * *(int *)(a2 + 24) + 192);
result = 0LL;
}
break;
case 232:
v28 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v28 )
{
*a4 = *(double *)(v28 + 8LL * *(int *)(a2 + 24) + 200);
result = 0LL;
}
break;
case 233:
v29 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v29 )
{
*a4 = *(double *)(v29 + 8LL * *(int *)(a2 + 24) + 208);
result = 0LL;
}
break;
case 234:
v30 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v30 )
{
*a4 = *(double *)(v30 + 8LL * *(int *)(a2 + 24) + 216);
result = 0LL;
}
break;
case 235:
v31 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v31 )
{
*a4 = *(double *)(v31 + 8LL * *(int *)(a2 + 24) + 224);
result = 0LL;
}
break;
case 236:
v32 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v32 )
{
*a4 = *(double *)(v32 + 8LL * *(int *)(a2 + 24) + 232);
result = 0LL;
}
break;
case 237:
v33 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v33 )
{
*a4 = *(double *)(v33 + 8LL * *(int *)(a2 + 24) + 240);
result = 0LL;
}
break;
case 238:
v34 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v34 )
{
*a4 = *(double *)(v34 + 8LL * *(int *)(a2 + 24) + 248);
result = 0LL;
}
break;
case 239:
v35 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v35 )
{
*a4 = *(double *)(v35 + 8LL * *(int *)(a2 + 24) + 264);
result = 0LL;
}
break;
case 240:
v36 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v36 )
{
*a4 = *(double *)(v36 + 8LL * *(int *)(a2 + 24) + 272);
result = 0LL;
}
break;
case 241:
*a4 = *(double *)(a2 + 120);
result = 0LL;
break;
case 242:
*a4 = *(double *)(a2 + 128);
result = 0LL;
break;
default:
result = 7LL;
break;
}
return result;
}

canonical_decompiled_code:
__int64 __fastcall func0(__int64 a1, __int64 a2, int a3, double *a4)
{
__int64 result; // rax
__int64 v5; // rdx
__int64 v6; // rdx
__int64 v7; // rdx
__int64 v8; // rdx
__int64 v9; // rdx
__int64 v10; // rdx
__int64 v11; // rdx
__int64 v12; // rdx
__int64 v13; // rdx
__int64 v14; // rdx
__int64 v15; // rdx
__int64 v16; // rdx
__int64 v17; // rdx
__int64 v18; // rdx
__int64 v19; // rdx
__int64 v20; // rdx
__int64 v21; // rdx
__int64 v22; // rdx
__int64 v23; // rdx
__int64 v24; // rdx
__int64 v25; // rdx
__int64 v26; // rdx
__int64 v27; // rdx
__int64 v28; // rdx
__int64 v29; // rdx
__int64 v30; // rdx
__int64 v31; // rdx
__int64 v32; // rdx
__int64 v33; // rdx
__int64 v34; // rdx
__int64 v35; // rdx
__int64 v36; // rdx

switch ( a3 )
{
case 1:
*a4 = *(double *)(a2 + 64);
result = 0LL;
break;
case 2:
*a4 = *(double *)(a2 + 56);
result = 0LL;
break;
case 3:
*a4 = *(double *)(a2 + 80);
result = 0LL;
break;
case 4:
*a4 = *(double *)(a2 + 72);
result = 0LL;
break;
case 5:
*a4 = *(double *)(a2 + 112);
result = 0LL;
break;
case 6:
*a4 = *(double *)(a2 + 104);
result = 0LL;
break;
case 7:
*a4 = *(double *)(a2 + 96);
result = 0LL;
break;
case 8:
*a4 = *(double *)(a2 + 88);
result = 0LL;
break;
case 9:
*a4 = (double)*(int *)(a2 + 176);
result = 0LL;
break;
case 10:
*a4 = *(double *)(a2 + 136);
result = 0LL;
break;
case 11:
*a4 = *(double *)(a2 + 144);
result = 0LL;
break;
case 12:
*a4 = *(double *)(a2 + 152);
result = 0LL;
break;
case 201:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 28);
result = 0LL;
break;
case 202:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 32);
result = 0LL;
break;
case 203:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 36);
result = 0LL;
break;
case 204:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 40);
result = 0LL;
break;
case 205:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 44);
result = 0LL;
break;
case 206:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 48);
result = 0LL;
break;
case 207:
v5 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v5 )
{
*a4 = *(double *)(v5 + 8LL * *(int *)(a2 + 24));
result = 0LL;
}
break;
case 208:
v6 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v6 )
{
*a4 = *(double *)(v6 + 8LL * *(int *)(a2 + 24) + 8);
result = 0LL;
}
break;
case 209:
v7 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v7 )
{
*a4 = *(double *)(v7 + 8LL * *(int *)(a2 + 24) + 16);
result = 0LL;
}
break;
case 210:
v8 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v8 )
{
*a4 = *(double *)(v8 + 8LL * *(int *)(a2 + 24) + 24);
result = 0LL;
}
break;
case 211:
v9 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v9 )
{
*a4 = *(double *)(v9 + 8LL * *(int *)(a2 + 24) + 32);
result = 0LL;
}
break;
case 212:
v10 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v10 )
{
*a4 = *(double *)(v10 + 8LL * *(int *)(a2 + 24) + 40);
result = 0LL;
}
break;
case 213:
v11 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v11 )
{
*a4 = *(double *)(v11 + 8LL * *(int *)(a2 + 24) + 48);
result = 0LL;
}
break;
case 214:
v12 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v12 )
{
*a4 = *(double *)(v12 + 8LL * *(int *)(a2 + 24) + 56);
result = 0LL;
}
break;
case 215:
v13 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v13 )
{
*a4 = *(double *)(v13 + 8LL * *(int *)(a2 + 24) + 64);
result = 0LL;
}
break;
case 216:
v14 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v14 )
{
*a4 = *(double *)(v14 + 8LL * *(int *)(a2 + 24) + 72);
result = 0LL;
}
break;
case 217:
v15 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v15 )
{
*a4 = *(double *)(v15 + 8LL * *(int *)(a2 + 24) + 80);
result = 0LL;
}
break;
case 218:
v16 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v16 )
{
*a4 = *(double *)(v16 + 8LL * *(int *)(a2 + 24) + 88);
result = 0LL;
}
break;
case 219:
v17 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v17 )
{
*a4 = *(double *)(v17 + 8LL * *(int *)(a2 + 24) + 96);
result = 0LL;
}
break;
case 220:
v18 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v18 )
{
*a4 = *(double *)(v18 + 8LL * *(int *)(a2 + 24) + 104);
result = 0LL;
}
break;
case 221:
v19 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v19 )
{
*a4 = *(double *)(v19 + 8LL * *(int *)(a2 + 24) + 112);
result = 0LL;
}
break;
case 222:
v20 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v20 )
{
*a4 = *(double *)(v20 + 8LL * *(int *)(a2 + 24) + 120);
result = 0LL;
}
break;
case 223:
v21 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v21 )
{
*a4 = *(double *)(v21 + 8LL * *(int *)(a2 + 24) + 128);
result = 0LL;
}
break;
case 224:
v22 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v22 )
{
*a4 = *(double *)(v22 + 8LL * *(int *)(a2 + 24) + 136);
result = 0LL;
}
break;
case 225:
v23 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v23 )
{
*a4 = *(double *)(v23 + 8LL * *(int *)(a2 + 24) + 144);
result = 0LL;
}
break;
case 226:
v24 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v24 )
{
*a4 = *(double *)(v24 + 8LL * *(int *)(a2 + 24) + 152);
result = 0LL;
}
break;
case 227:
v25 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v25 )
{
*a4 = *(double *)(v25 + 8LL * *(int *)(a2 + 24) + 160);
result = 0LL;
}
break;
case 228:
v26 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v26 )
{
*a4 = *(double *)(v26 + 8LL * *(int *)(a2 + 24) + 168);
result = 0LL;
}
break;
case 231:
v27 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v27 )
{
*a4 = *(double *)(v27 + 8LL * *(int *)(a2 + 24) + 192);
result = 0LL;
}
break;
case 232:
v28 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v28 )
{
*a4 = *(double *)(v28 + 8LL * *(int *)(a2 + 24) + 200);
result = 0LL;
}
break;
case 233:
v29 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v29 )
{
*a4 = *(double *)(v29 + 8LL * *(int *)(a2 + 24) + 208);
result = 0LL;
}
break;
case 234:
v30 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v30 )
{
*a4 = *(double *)(v30 + 8LL * *(int *)(a2 + 24) + 216);
result = 0LL;
}
break;
case 235:
v31 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v31 )
{
*a4 = *(double *)(v31 + 8LL * *(int *)(a2 + 24) + 224);
result = 0LL;
}
break;
case 236:
v32 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v32 )
{
*a4 = *(double *)(v32 + 8LL * *(int *)(a2 + 24) + 232);
result = 0LL;
}
break;
case 237:
v33 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v33 )
{
*a4 = *(double *)(v33 + 8LL * *(int *)(a2 + 24) + 240);
result = 0LL;
}
break;
case 238:
v34 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v34 )
{
*a4 = *(double *)(v34 + 8LL * *(int *)(a2 + 24) + 248);
result = 0LL;
}
break;
case 239:
v35 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v35 )
{
*a4 = *(double *)(v35 + 8LL * *(int *)(a2 + 24) + 264);
result = 0LL;
}
break;
case 240:
v36 = *(_QWORD *)(a1 + 280);
result = 0LL;
if ( v36 )
{
*a4 = *(double *)(v36 + 8LL * *(int *)(a2 + 24) + 272);
result = 0LL;
}
break;
case 241:
*a4 = *(double *)(a2 + 120);
result = 0LL;
break;
case 242:
*a4 = *(double *)(a2 + 128);
result = 0LL;
break;
default:
result = 7LL;
break;
}
return result;
}

original_code:
int
B1ask(CKTcircuit *ckt, GENinstance *inst, int which,
      IFvalue *value, IFvalue *select)
{
    B1instance *here = (B1instance*)inst;
    switch(which) {
        case 2:
            value->rValue = here->B1l;
            return(0);
        case 1:
            value->rValue = here->B1w;
            value->rValue *= here->B1m;
            return(0);
        case 14:
            value->rValue = here->B1m;
            return(0);
        case 3:
            value->rValue = here->B1sourceArea;
            value->rValue *= here->B1m;
            return(0);
        case 4:
            value->rValue = here->B1drainArea;
            value->rValue *= here->B1m;
            return(0);
        case 5:
            value->rValue = here->B1sourcePerimeter;
            value->rValue *= here->B1m;
            return(0);
        case 6:
            value->rValue = here->B1drainPerimeter;
            value->rValue *= here->B1m;
            return(0);
        case 7:
            value->rValue = here->B1sourceSquares;
            value->rValue *= here->B1m;
            return(0);
        case 8:
            value->rValue = here->B1drainSquares;
            value->rValue *= here->B1m;
            return(0);
        case 9:
            value->rValue = here->B1off;
            return(0);
        case 10:
            value->rValue = here->B1icVBS;
            return(0);
        case 11:
            value->rValue = here->B1icVDS;
            return(0);
        case 12:
            value->rValue = here->B1icVGS;
            return(0);
        case 201:
            value->iValue = here->B1dNode;
            return(0);
        case 202:
            value->iValue = here->B1gNode;
            return(0);
        case 203:
            value->iValue = here->B1sNode;
            return(0);
        case 204:
            value->iValue = here->B1bNode;
            return(0);
        case 205:
            value->iValue = here->B1dNodePrime;
            return(0);
        case 206:
            value->iValue = here->B1sNodePrime;
            return(0);
        case 241:
            value->rValue = here->B1sourceConductance;
            value->rValue *= here->B1m;
            return(0);
        case 242:
            value->rValue = here->B1drainConductance;
            value->rValue *= here->B1m;
            return(0);
        case 207:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 0);
            return(0);
        case 208:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 1);
            return(0);
        case 209:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 2);
            return(0);
        case 210:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 3);
            return(0);
        case 211:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 4);
            value->rValue *= here->B1m;
            return(0);
        case 212:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 5);
            value->rValue *= here->B1m;
            return(0);
        case 213:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 6);
            value->rValue *= here->B1m;
            return(0);
        case 214:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 7);
            value->rValue *= here->B1m;
            return(0);
        case 215:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 8);
            value->rValue *= here->B1m;
            return(0);
        case 216:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 9);
            value->rValue *= here->B1m;
            return(0);
        case 217:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 10);
            value->rValue *= here->B1m;
            return(0);
        case 218:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 11);
            value->rValue *= here->B1m;
            return(0);
        case 219:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 12);
            value->rValue *= here->B1m;
            return(0);
        case 220:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 13);
            value->rValue *= here->B1m;
            return(0);
        case 221:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 14);
            value->rValue *= here->B1m;
            return(0);
        case 222:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 15);
            value->rValue *= here->B1m;
            return(0);
        case 223:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 16);
            value->rValue *= here->B1m;
            return(0);
        case 224:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 17);
            value->rValue *= here->B1m;
            return(0);
        case 225:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 18);
            value->rValue *= here->B1m;
            return(0);
        case 226:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 19);
            value->rValue *= here->B1m;
            return(0);
        case 227:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 20);
            value->rValue *= here->B1m;
            return(0);
        case 228:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 21);
            value->rValue *= here->B1m;
            return(0);
        case 231:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 24);
            value->rValue *= here->B1m;
            return(0);
        case 232:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 25);
            value->rValue *= here->B1m;
            return(0);
        case 233:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 26);
            value->rValue *= here->B1m;
            return(0);
        case 234:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 27);
            value->rValue *= here->B1m;
            return(0);
        case 235:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 28);
            value->rValue *= here->B1m;
            return(0);
        case 236:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 29);
            value->rValue *= here->B1m;
            return(0);
        case 237:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 30);
            value->rValue *= here->B1m;
            return(0);
        case 238:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 31);
            return(0);
        case 239:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 33);
            value->rValue *= here->B1m;
            return(0);
        case 240:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 34);
            value->rValue *= here->B1m;
            return(0);
        default:
            return(7);
    }
}

canonical_original_code:
int B1ask(struct CKTcircuit *ckt, struct sGENinstance *inst, int which, union uIFvalue *value, union uIFvalue *select)
{
    struct sBSIM1instance *here = (B1instance*)inst;
    switch(which) {
        case 2:
            value->rValue = here->B1l;
            return(0);
        case 1:
            value->rValue = here->B1w;
            value->rValue *= here->B1m;
            return(0);
        case 14:
            value->rValue = here->B1m;
            return(0);
        case 3:
            value->rValue = here->B1sourceArea;
            value->rValue *= here->B1m;
            return(0);
        case 4:
            value->rValue = here->B1drainArea;
            value->rValue *= here->B1m;
            return(0);
        case 5:
            value->rValue = here->B1sourcePerimeter;
            value->rValue *= here->B1m;
            return(0);
        case 6:
            value->rValue = here->B1drainPerimeter;
            value->rValue *= here->B1m;
            return(0);
        case 7:
            value->rValue = here->B1sourceSquares;
            value->rValue *= here->B1m;
            return(0);
        case 8:
            value->rValue = here->B1drainSquares;
            value->rValue *= here->B1m;
            return(0);
        case 9:
            value->rValue = here->B1off;
            return(0);
        case 10:
            value->rValue = here->B1icVBS;
            return(0);
        case 11:
            value->rValue = here->B1icVDS;
            return(0);
        case 12:
            value->rValue = here->B1icVGS;
            return(0);
        case 201:
            value->iValue = here->B1dNode;
            return(0);
        case 202:
            value->iValue = here->B1gNode;
            return(0);
        case 203:
            value->iValue = here->B1sNode;
            return(0);
        case 204:
            value->iValue = here->B1bNode;
            return(0);
        case 205:
            value->iValue = here->B1dNodePrime;
            return(0);
        case 206:
            value->iValue = here->B1sNodePrime;
            return(0);
        case 241:
            value->rValue = here->B1sourceConductance;
            value->rValue *= here->B1m;
            return(0);
        case 242:
            value->rValue = here->B1drainConductance;
            value->rValue *= here->B1m;
            return(0);
        case 207:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 0);
            return(0);
        case 208:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 1);
            return(0);
        case 209:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 2);
            return(0);
        case 210:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 3);
            return(0);
        case 211:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 4);
            value->rValue *= here->B1m;
            return(0);
        case 212:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 5);
            value->rValue *= here->B1m;
            return(0);
        case 213:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 6);
            value->rValue *= here->B1m;
            return(0);
        case 214:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 7);
            value->rValue *= here->B1m;
            return(0);
        case 215:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 8);
            value->rValue *= here->B1m;
            return(0);
        case 216:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 9);
            value->rValue *= here->B1m;
            return(0);
        case 217:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 10);
            value->rValue *= here->B1m;
            return(0);
        case 218:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 11);
            value->rValue *= here->B1m;
            return(0);
        case 219:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 12);
            value->rValue *= here->B1m;
            return(0);
        case 220:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 13);
            value->rValue *= here->B1m;
            return(0);
        case 221:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 14);
            value->rValue *= here->B1m;
            return(0);
        case 222:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 15);
            value->rValue *= here->B1m;
            return(0);
        case 223:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 16);
            value->rValue *= here->B1m;
            return(0);
        case 224:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 17);
            value->rValue *= here->B1m;
            return(0);
        case 225:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 18);
            value->rValue *= here->B1m;
            return(0);
        case 226:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 19);
            value->rValue *= here->B1m;
            return(0);
        case 227:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 20);
            value->rValue *= here->B1m;
            return(0);
        case 228:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 21);
            value->rValue *= here->B1m;
            return(0);
        case 231:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 24);
            value->rValue *= here->B1m;
            return(0);
        case 232:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 25);
            value->rValue *= here->B1m;
            return(0);
        case 233:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 26);
            value->rValue *= here->B1m;
            return(0);
        case 234:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 27);
            value->rValue *= here->B1m;
            return(0);
        case 235:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 28);
            value->rValue *= here->B1m;
            return(0);
        case 236:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 29);
            value->rValue *= here->B1m;
            return(0);
        case 237:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 30);
            value->rValue *= here->B1m;
            return(0);
        case 238:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 31);
            return(0);
        case 239:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 33);
            value->rValue *= here->B1m;
            return(0);
        case 240:
            value->rValue = *(ckt->CKTstates[0] + here->B1states+ 34);
            value->rValue *= here->B1m;
            return(0);
        default:
            return(7);
    }
}

variable_types: struct CKTcircuit { struct sGENmodel { int GENmodType; struct sGENmodel *GENnextModel; struct sGENinstance { struct sGENmodel *GENmodPtr; struct sGENinstance *GENnextInstance; char *GENname; int GENowner; int GENstate; int GENnode1; int GENnode2; int GENnode3; int GENnode4; int GENnode5; int GENnode6; int GENnode7; } *GENinstances; char *GENmodName; } **CKThead; struct STATistics { int STATnumIter; int STATtranIter; int STAToldIter; int STATtimePts; int STATaccepted; int STATrejected; double STATtotAnalTime; double STATloadTime; double STATdecompTime; double STATsolveTime; double STATreorderTime; double STATcombineTime; double STATsyncTime; double STATtranTime; double STATtranDecompTime; double STATtranSolveTime; double STATtranLoadTime; double STATtranTruncTime; double STATtranCombTime; double STATtranSyncTime; double STATacTime; double STATacDecompTime; double STATacSolveTime; double STATacLoadTime; double STATacCombTime; double STATacSyncTime; } *CKTstat; double *CKTstates[8]; double CKTtime; double CKTdelta; double CKTdeltaOld[7]; double CKTtemp; double CKTnomTemp; double CKTvt; double CKTag[7]; double CKTagp[7]; int CKTorder; int CKTmaxOrder; int CKTintegrateMethod; void *CKTmatrix; int CKTniState; double *CKTrhs; double *CKTrhsOld; double *CKTrhsSpare; double *CKTirhs; double *CKTirhsOld; double *CKTirhsSpare; double *CKTpred; double *CKTsols[8]; double *CKTrhsOp; double *CKTsenRhs; double *CKTseniRhs; int CKTmaxEqNum; int CKTcurrentAnalysis; struct sCKTnode { char *name; int type; int number; double ic; double nodeset; double *ptr; struct sCKTnode *next; unsigned int icGiven; unsigned int nsGiven; } *CKTnodes; struct sCKTnode *CKTlastNode; int CKTnumStates; long CKTmode; int CKTbypass; int CKTdcMaxIter; int CKTdcTrcvMaxIter; int CKTtranMaxIter; int CKTbreakSize; int CKTbreak; double CKTsaveDelta; double CKTminBreak; double *CKTbreaks; double CKTabstol; double CKTpivotAbsTol; double CKTpivotRelTol; double CKTreltol; double CKTchgtol; double CKTvoltTol; double CKTgmin; double CKTgshunt; double CKTdelmin; double CKTtrtol; double CKTfinalTime; double CKTstep; double CKTmaxStep; double CKTinitTime; double CKTomega; double CKTsrcFact; double CKTdiagGmin; int CKTnumSrcSteps; int CKTnumGminSteps; double CKTgminFactor; int CKTnoncon; double CKTdefaultMosM; double CKTdefaultMosL; double CKTdefaultMosW; double CKTdefaultMosAD; double CKTdefaultMosAS; unsigned int CKThadNodeset; unsigned int CKTfixLimit; unsigned int CKTnoOpIter; unsigned int CKTisSetup; struct sJOB { int JOBtype; struct sJOB *JOBnextJob; char *JOBname; } *CKTcurJob; struct SENstruct { int JOBtype; struct sJOB *JOBnextJob; char *JOBname; int SENnumVal; char **SENdevices; char **SENparmNames; unsigned int SENinitflag; unsigned int SENicflag; unsigned int SENstatus; unsigned int SENacpertflag; int SENmode; int SENparms; double SENpertfac; double **SEN_Sap; double **SEN_RHS; double **SEN_iRHS; int SENsize; void *SEN_Jacmat; double *SEN_parmVal; char **SEN_parmName; } *CKTsenInfo; double *CKTtimePoints; double *CKTdeltaList; int CKTtimeListSize; int CKTtimeIndex; int CKTsizeIncr; unsigned int CKTtryToCompact; unsigned int CKTbadMos3; unsigned int CKTkeepOpInfo; unsigned int CKTcopyNodesets; unsigned int CKTnodeDamping; double CKTabsDv; double CKTrelDv; int CKTtroubleNode; struct sGENinstance *CKTtroubleElt; } *

variable_types:
inst
struct sGENinstance *

variable_types: which int

variable_types: struct sBSIM1instance { struct sBSIM1model { int B1modType; struct sBSIM1model *B1nextModel; struct sBSIM1instance *B1instances; char *B1modName; int B1type; double B1vfb0; double B1vfbL; double B1vfbW; double B1phi0; double B1phiL; double B1phiW; double B1K10; double B1K1L; double B1K1W; double B1K20; double B1K2L; double B1K2W; double B1eta0; double B1etaL; double B1etaW; double B1etaB0; double B1etaBl; double B1etaBw; double B1etaD0; double B1etaDl; double B1etaDw; double B1deltaL; double B1deltaW; double B1mobZero; double B1mobZeroB0; double B1mobZeroBl; double B1mobZeroBw; double B1mobVdd0; double B1mobVddl; double B1mobVddw; double B1mobVddB0; double B1mobVddBl; double B1mobVddBw; double B1mobVddD0; double B1mobVddDl; double B1mobVddDw; double B1ugs0; double B1ugsL; double B1ugsW; double B1ugsB0; double B1ugsBL; double B1ugsBW; double B1uds0; double B1udsL; double B1udsW; double B1udsB0; double B1udsBL; double B1udsBW; double B1udsD0; double B1udsDL; double B1udsDW; double B1subthSlope0; double B1subthSlopeL; double B1subthSlopeW; double B1subthSlopeB0; double B1subthSlopeBL; double B1subthSlopeBW; double B1subthSlopeD0; double B1subthSlopeDL; double B1subthSlopeDW; double B1oxideThickness; double B1Cox; double B1temp; double B1vdd; double B1gateSourceOverlapCap; double B1gateDrainOverlapCap; double B1gateBulkOverlapCap; double B1channelChargePartitionFlag; double B1sheetResistance; double B1jctSatCurDensity; double B1bulkJctPotential; double B1bulkJctBotGradingCoeff; double B1bulkJctSideGradingCoeff; double B1sidewallJctPotential; double B1unitAreaJctCap; double B1unitLengthSidewallJctCap; double B1defaultWidth; double B1deltaLength; double B1fNcoef; double B1fNexp; unsigned int B1vfb0Given; unsigned int B1vfbLGiven; unsigned int B1vfbWGiven; unsigned int B1phi0Given; unsigned int B1phiLGiven; unsigned int B1phiWGiven; unsigned int B1K10Given; unsigned int B1K1LGiven; unsigned int B1K1WGiven; unsigned int B1K20Given; unsigned int B1K2LGiven; unsigned int B1K2WGiven; unsigned int B1eta0Given; unsigned int B1etaLGiven; unsigned int B1etaWGiven; unsigned int B1etaB0Given; unsigned int B1etaBlGiven; unsigned int B1etaBwGiven; unsigned int B1etaD0Given; unsigned int B1etaDlGiven; unsigned int B1etaDwGiven; unsigned int B1deltaLGiven; unsigned int B1deltaWGiven; unsigned int B1mobZeroGiven; unsigned int B1mobZeroB0Given; unsigned int B1mobZeroBlGiven; unsigned int B1mobZeroBwGiven; unsigned int B1mobVdd0Given; unsigned int B1mobVddlGiven; unsigned int B1mobVddwGiven; unsigned int B1mobVddB0Given; unsigned int B1mobVddBlGiven; unsigned int B1mobVddBwGiven; unsigned int B1mobVddD0Given; unsigned int B1mobVddDlGiven; unsigned int B1mobVddDwGiven; unsigned int B1ugs0Given; unsigned int B1ugsLGiven; unsigned int B1ugsWGiven; unsigned int B1ugsB0Given; unsigned int B1ugsBLGiven; unsigned int B1ugsBWGiven; unsigned int B1uds0Given; unsigned int B1udsLGiven; unsigned int B1udsWGiven; unsigned int B1udsB0Given; unsigned int B1udsBLGiven; unsigned int B1udsBWGiven; unsigned int B1udsD0Given; unsigned int B1udsDLGiven; unsigned int B1udsDWGiven; unsigned int B1subthSlope0Given; unsigned int B1subthSlopeLGiven; unsigned int B1subthSlopeWGiven; unsigned int B1subthSlopeB0Given; unsigned int B1subthSlopeBLGiven; unsigned int B1subthSlopeBWGiven; unsigned int B1subthSlopeD0Given; unsigned int B1subthSlopeDLGiven; unsigned int B1subthSlopeDWGiven; unsigned int B1oxideThicknessGiven; unsigned int B1tempGiven; unsigned int B1vddGiven; unsigned int B1gateSourceOverlapCapGiven; unsigned int B1gateDrainOverlapCapGiven; unsigned int B1gateBulkOverlapCapGiven; unsigned int B1channelChargePartitionFlagGiven; unsigned int B1sheetResistanceGiven; unsigned int B1jctSatCurDensityGiven; unsigned int B1bulkJctPotentialGiven; unsigned int B1bulkJctBotGradingCoeffGiven; unsigned int B1sidewallJctPotentialGiven; unsigned int B1bulkJctSideGradingCoeffGiven; unsigned int B1unitAreaJctCapGiven; unsigned int B1unitLengthSidewallJctCapGiven; unsigned int B1defaultWidthGiven; unsigned int B1deltaLengthGiven; unsigned int B1fNcoefGiven; unsigned int B1fNexpGiven; unsigned int B1typeGiven; } *B1modPtr; struct sBSIM1instance *B1nextInstance; char *B1name; int B1owner; int B1states; int B1dNode; int B1gNode; int B1sNode; int B1bNode; int B1dNodePrime; int B1sNodePrime; double B1l; double B1w; double B1m; double B1drainArea; double B1sourceArea; double B1drainSquares; double B1sourceSquares; double B1drainPerimeter; double B1sourcePerimeter; double B1sourceConductance; double B1drainConductance; double B1icVBS; double B1icVDS; double B1icVGS; double B1von; double B1vdsat; int B1off; int B1mode; double B1vfb; double B1phi; double B1K1; double B1K2; double B1eta; double B1etaB; double B1etaD; double B1betaZero; double B1betaZeroB; double B1betaVdd; double B1betaVddB; double B1betaVddD; double B1ugs; double B1ugsB; double B1uds; double B1udsB; double B1udsD; double B1subthSlope; double B1subthSlopeB; double B1subthSlopeD; double B1GDoverlapCap; double B1GSoverlapCap; double B1GBoverlapCap; double B1vt0; double B1vdd; double B1temp; double B1oxideThickness; unsigned int B1channelChargePartitionFlag; unsigned int B1lGiven; unsigned int B1wGiven; unsigned int B1mGiven; unsigned int B1drainAreaGiven; unsigned int B1sourceAreaGiven; unsigned int B1drainSquaresGiven; unsigned int B1sourceSquaresGiven; unsigned int B1drainPerimeterGiven; unsigned int B1sourcePerimeterGiven; unsigned int B1dNodePrimeSet; unsigned int B1sNodePrimeSet; unsigned int B1icVBSGiven; unsigned int B1icVDSGiven; unsigned int B1icVGSGiven; unsigned int B1vonGiven; unsigned int B1vdsatGiven; double *B1DdPtr; double *B1GgPtr; double *B1SsPtr; double *B1BbPtr; double *B1DPdpPtr; double *B1SPspPtr; double *B1DdpPtr; double *B1GbPtr; double *B1GdpPtr; double *B1GspPtr; double *B1SspPtr; double *B1BdpPtr; double *B1BspPtr; double *B1DPspPtr; double *B1DPdPtr; double *B1BgPtr; double *B1DPgPtr; double *B1SPgPtr; double *B1SPsPtr; double *B1DPbPtr; double *B1SPbPtr; double *B1SPdpPtr; double B1dCoeffs[82]; double B1nVar[3][5]; } *

user_defined_types: struct sBSIM1instance { struct sBSIM1model *B1modPtr; struct sBSIM1instance *B1nextInstance; char *B1name; int B1owner; int B1states; int B1dNode; int B1gNode; int B1sNode; int B1bNode; int B1dNodePrime; int B1sNodePrime; double B1l; double B1w; double B1m; double B1drainArea; double B1sourceArea; double B1drainSquares; double B1sourceSquares; double B1drainPerimeter; double B1sourcePerimeter; double B1sourceConductance; double B1drainConductance; double B1icVBS; double B1icVDS; double B1icVGS; double B1von; double B1vdsat; int B1off; int B1mode; double B1vfb; double B1phi; double B1K1; double B1K2; double B1eta; double B1etaB; double B1etaD; double B1betaZero; double B1betaZeroB; double B1betaVdd; double B1betaVddB; double B1betaVddD; double B1ugs; double B1ugsB; double B1uds; double B1udsB; double B1udsD; double B1subthSlope; double B1subthSlopeB; double B1subthSlopeD; double B1GDoverlapCap; double B1GSoverlapCap; double B1GBoverlapCap; double B1vt0; double B1vdd; double B1temp; double B1oxideThickness; unsigned int B1channelChargePartitionFlag; unsigned int B1lGiven; unsigned int B1wGiven; unsigned int B1mGiven; unsigned int B1drainAreaGiven; unsigned int B1sourceAreaGiven; unsigned int B1drainSquaresGiven; unsigned int B1sourceSquaresGiven; unsigned int B1drainPerimeterGiven; unsigned int B1sourcePerimeterGiven; unsigned int B1dNodePrimeSet; unsigned int B1sNodePrimeSet; unsigned int B1icVBSGiven; unsigned int B1icVDSGiven; unsigned int B1icVGSGiven; unsigned int B1vonGiven; unsigned int B1vdsatGiven; double *B1DdPtr; double *B1GgPtr; double *B1SsPtr; double *B1BbPtr; double *B1DPdpPtr; double *B1SPspPtr; double *B1DdpPtr; double *B1GbPtr; double *B1GdpPtr; double *B1GspPtr; double *B1SspPtr; double *B1BdpPtr; double *B1BspPtr; double *B1DPspPtr; double *B1DPdPtr; double *B1BgPtr; double *B1DPgPtr; double *B1SPgPtr; double *B1SPsPtr; double *B1DPbPtr; double *B1SPbPtr; double *B1SPdpPtr; double B1dCoeffs[82]; double B1nVar[3][5]; }

user_defined_types: struct sIFcomplex { double real; double imag; }

user_defined_types: struct sIFparseTree { int numVars; int *varTypes; union uIFvalue *vars; int (*IFeval)(struct sIFparseTree *, double, double *, double *, double *); }


MESparam

original_code:
int
MESparam(int param, IFvalue *value, GENinstance *inst, IFvalue *select)
{
    MESinstance *here = (MESinstance*)inst;
    switch(param) {
        case 1:
            here->MESarea = value->rValue;
            here->MESareaGiven = 1;
            break;
        case 8:
            here->MESm = value->rValue;
            here->MESmGiven = 1;
            break;
        case 2:
            here->MESicVDS = value->rValue;
            here->MESicVDSGiven = 1;
            break;
        case 3:
            here->MESicVGS = value->rValue;
            here->MESicVGSGiven = 1;
            break;
        case 5:
            here->MESoff = value->iValue;
            break;
        case 4:
            switch(value->v.numValue) {
                case 2:
                    here->MESicVGS = *(value->v.vec.rVec+1);
                    here->MESicVGSGiven = 1;
                case 1:
                    here->MESicVDS = *(value->v.vec.rVec);
                    here->MESicVDSGiven = 1;
                    break;
                default:
                    return(7);
            }
            break;
        default:
            return(7);
    }
    return(0);
}

canonical_original_code:
int MESparam(int param, union uIFvalue *value, struct sGENinstance *inst, union uIFvalue *select)
{
    struct sMESinstance *here = (MESinstance*)inst;
    switch(param) {
        case 1:
            here->MESarea = value->rValue;
            here->MESareaGiven = 1;
            break;
        case 8:
            here->MESm = value->rValue;
            here->MESmGiven = 1;
            break;
        case 2:
            here->MESicVDS = value->rValue;
            here->MESicVDSGiven = 1;
            break;
        case 3:
            here->MESicVGS = value->rValue;
            here->MESicVGSGiven = 1;
            break;
        case 5:
            here->MESoff = value->iValue;
            break;
        case 4:
            switch(value->v.numValue) {
                case 2:
                    here->MESicVGS = *(value->v.vec.rVec+1);
                    here->MESicVGSGiven = 1;
                case 1:
                    here->MESicVDS = *(value->v.vec.rVec);
                    here->MESicVDSGiven = 1;
                    break;
                default:
                    return(7);
            }
            break;
        default:
            return(7);
    }
    return(0);
}

variable_types: struct sMESinstance { struct sMESmodel { int MESmodType; struct sMESmodel *MESnextModel; struct sMESinstance *MESinstances; char *MESmodName; int MEStype; double MESthreshold; double MESalpha; double MESbeta; double MESlModulation; double MESb; double MESdrainResist; double MESsourceResist; double MEScapGS; double MEScapGD; double MESgatePotential; double MESgateSatCurrent; double MESdepletionCapCoeff; double MESfNcoef; double MESfNexp; double MESdrainConduct; double MESsourceConduct; double MESdepletionCap; double MESf1; double MESf2; double MESf3; double MESvcrit; unsigned int MESthresholdGiven; unsigned int MESalphaGiven; unsigned int MESbetaGiven; unsigned int MESlModulationGiven; unsigned int MESbGiven; unsigned int MESdrainResistGiven; unsigned int MESsourceResistGiven; unsigned int MEScapGSGiven; unsigned int MEScapGDGiven; unsigned int MESgatePotentialGiven; unsigned int MESgateSatCurrentGiven; unsigned int MESdepletionCapCoeffGiven; unsigned int MESfNcoefGiven; unsigned int MESfNexpGiven; } *MESmodPtr; struct sMESinstance *MESnextInstance; char *MESname; int MESowner; int MESstate; int MESdrainNode; int MESgateNode; int MESsourceNode; int MESdrainPrimeNode; int MESsourcePrimeNode; double MESarea; double MESm; double MESicVDS; double MESicVGS; double *MESdrainDrainPrimePtr; double *MESgateDrainPrimePtr; double *MESgateSourcePrimePtr; double *MESsourceSourcePrimePtr; double *MESdrainPrimeDrainPtr; double *MESdrainPrimeGatePtr; double *MESdrainPrimeSourcePrimePtr; double *MESsourcePrimeGatePtr; double *MESsourcePrimeSourcePtr; double *MESsourcePrimeDrainPrimePtr; double *MESdrainDrainPtr; double *MESgateGatePtr; double *MESsourceSourcePtr; double *MESdrainPrimeDrainPrimePtr; double *MESsourcePrimeSourcePrimePtr; int MESoff; unsigned int MESareaGiven; unsigned int MESmGiven; unsigned int MESicVDSGiven; unsigned int MESicVGSGiven; int MESmode; double MESdCoeffs[27]; double MESnVar[3][5]; } *

user_defined_types: struct sMESinstance { struct sMESmodel *MESmodPtr; struct sMESinstance *MESnextInstance; char *MESname; int MESowner; int MESstate; int MESdrainNode; int MESgateNode; int MESsourceNode; int MESdrainPrimeNode; int MESsourcePrimeNode; double MESarea; double MESm; double MESicVDS; double MESicVGS; double *MESdrainDrainPrimePtr; double *MESgateDrainPrimePtr; double *MESgateSourcePrimePtr; double *MESsourceSourcePrimePtr; double *MESdrainPrimeDrainPtr; double *MESdrainPrimeGatePtr; double *MESdrainPrimeSourcePrimePtr; double *MESsourcePrimeGatePtr; double *MESsourcePrimeSourcePtr; double *MESsourcePrimeDrainPrimePtr; double *MESdrainDrainPtr; double *MESgateGatePtr; double *MESsourceSourcePtr; double *MESdrainPrimeDrainPrimePtr; double *MESsourcePrimeSourcePrimePtr; int MESoff; unsigned int MESareaGiven; unsigned int MESmGiven; unsigned int MESicVDSGiven; unsigned int MESicVGSGiven; int MESmode; double MESdCoeffs[27]; double MESnVar[3][5]; }


TRAacLoad

original_code:
int
TRAacLoad(GENmodel *inModel, CKTcircuit *ckt)
{
    TRAmodel *model = (TRAmodel *)inModel;
    TRAinstance *here;
    double real;
    double imag;
    for( ; model != ((void *)0); model = model->TRAnextModel ) {
        for (here = model->TRAinstances; here != ((void *)0) ;
                here=here->TRAnextInstance) {
     if (here->TRAowner != ARCHme) continue;
            real = cos(-ckt->CKTomega*here->TRAtd);
            imag = sin(-ckt->CKTomega*here->TRAtd);
            *(here->TRApos1Pos1Ptr) += here->TRAconduct;
            *(here->TRApos1Int1Ptr) -= here->TRAconduct;
            *(here->TRAneg1Ibr1Ptr) -= 1;
            *(here->TRApos2Pos2Ptr) += here->TRAconduct;
            *(here->TRAneg2Ibr2Ptr) -= 1;
            *(here->TRAint1Pos1Ptr) -= here->TRAconduct;
            *(here->TRAint1Int1Ptr) += here->TRAconduct;
            *(here->TRAint1Ibr1Ptr) += 1;
            *(here->TRAint2Int2Ptr) += here->TRAconduct;
            *(here->TRAint2Ibr2Ptr) += 1;
            *(here->TRAibr1Neg1Ptr) -= 1;
            *(here->TRAibr1Pos2Ptr+0) -= real;
            *(here->TRAibr1Pos2Ptr+1) -= imag;
            *(here->TRAibr1Neg2Ptr+0) += real;
            *(here->TRAibr1Neg2Ptr+1) += imag;
            *(here->TRAibr1Int1Ptr) += 1;
            *(here->TRAibr1Ibr2Ptr+0) -= real * here->TRAimped;
            *(here->TRAibr1Ibr2Ptr+1) -= imag * here->TRAimped;
            *(here->TRAibr2Pos1Ptr+0) -= real;
            *(here->TRAibr2Pos1Ptr+1) -= imag;
            *(here->TRAibr2Neg1Ptr+0) += real;
            *(here->TRAibr2Neg1Ptr+1) += imag;
            *(here->TRAibr2Neg2Ptr) -= 1;
            *(here->TRAibr2Int2Ptr) += 1;
            *(here->TRAibr2Ibr1Ptr+0) -= real * here->TRAimped;
            *(here->TRAibr2Ibr1Ptr+1) -= imag * here->TRAimped;
            *(here->TRApos2Int2Ptr) -= here->TRAconduct;
            *(here->TRAint2Pos2Ptr) -= here->TRAconduct;
        }
    }
    return(0);
}

canonical_original_code:
int TRAacLoad(struct sGENmodel *inModel, struct CKTcircuit *ckt)
{
    struct sTRAmodel *model = (TRAmodel *)inModel;
    struct sTRAinstance *here;
    double real;
    double imag;
    for( ; model != ((void *)0); model = model->TRAnextModel ) {
        for (here = model->TRAinstances; here != ((void *)0) ;
                here=here->TRAnextInstance) {
     if (here->TRAowner != ARCHme) continue;
            real = cos(-ckt->CKTomega*here->TRAtd);
            imag = sin(-ckt->CKTomega*here->TRAtd);
            *(here->TRApos1Pos1Ptr) += here->TRAconduct;
            *(here->TRApos1Int1Ptr) -= here->TRAconduct;
            *(here->TRAneg1Ibr1Ptr) -= 1;
            *(here->TRApos2Pos2Ptr) += here->TRAconduct;
            *(here->TRAneg2Ibr2Ptr) -= 1;
            *(here->TRAint1Pos1Ptr) -= here->TRAconduct;
            *(here->TRAint1Int1Ptr) += here->TRAconduct;
            *(here->TRAint1Ibr1Ptr) += 1;
            *(here->TRAint2Int2Ptr) += here->TRAconduct;
            *(here->TRAint2Ibr2Ptr) += 1;
            *(here->TRAibr1Neg1Ptr) -= 1;
            *(here->TRAibr1Pos2Ptr+0) -= real;
            *(here->TRAibr1Pos2Ptr+1) -= imag;
            *(here->TRAibr1Neg2Ptr+0) += real;
            *(here->TRAibr1Neg2Ptr+1) += imag;
            *(here->TRAibr1Int1Ptr) += 1;
            *(here->TRAibr1Ibr2Ptr+0) -= real * here->TRAimped;
            *(here->TRAibr1Ibr2Ptr+1) -= imag * here->TRAimped;
            *(here->TRAibr2Pos1Ptr+0) -= real;
            *(here->TRAibr2Pos1Ptr+1) -= imag;
            *(here->TRAibr2Neg1Ptr+0) += real;
            *(here->TRAibr2Neg1Ptr+1) += imag;
            *(here->TRAibr2Neg2Ptr) -= 1;
            *(here->TRAibr2Int2Ptr) += 1;
            *(here->TRAibr2Ibr1Ptr+0) -= real * here->TRAimped;
            *(here->TRAibr2Ibr1Ptr+1) -= imag * here->TRAimped;
            *(here->TRApos2Int2Ptr) -= here->TRAconduct;
            *(here->TRAint2Pos2Ptr) -= here->TRAconduct;
        }
    }
    return(0);
}

variable_types: struct sGENmodel { int GENmodType; struct sGENmodel *GENnextModel; struct sGENinstance { struct sGENmodel *GENmodPtr; struct sGENinstance *GENnextInstance; char *GENname; int GENowner; int GENstate; int GENnode1; int GENnode2; int GENnode3; int GENnode4; int GENnode5; int GENnode6; int GENnode7; } *GENinstances; char *GENmodName; } *

variable_types: struct CKTcircuit { struct sGENmodel **CKThead; struct STATistics { int STATnumIter; int STATtranIter; int STAToldIter; int STATtimePts; int STATaccepted; int STATrejected; double STATtotAnalTime; double STATloadTime; double STATdecompTime; double STATsolveTime; double STATreorderTime; double STATcombineTime; double STATsyncTime; double STATtranTime; double STATtranDecompTime; double STATtranSolveTime; double STATtranLoadTime; double STATtranTruncTime; double STATtranCombTime; double STATtranSyncTime; double STATacTime; double STATacDecompTime; double STATacSolveTime; double STATacLoadTime; double STATacCombTime; double STATacSyncTime; } *CKTstat; double *CKTstates[8]; double CKTtime; double CKTdelta; double CKTdeltaOld[7]; double CKTtemp; double CKTnomTemp; double CKTvt; double CKTag[7]; double CKTagp[7]; int CKTorder; int CKTmaxOrder; int CKTintegrateMethod; void *CKTmatrix; int CKTniState; double *CKTrhs; double *CKTrhsOld; double *CKTrhsSpare; double *CKTirhs; double *CKTirhsOld; double *CKTirhsSpare; double *CKTpred; double *CKTsols[8]; double *CKTrhsOp; double *CKTsenRhs; double *CKTseniRhs; int CKTmaxEqNum; int CKTcurrentAnalysis; struct sCKTnode { char *name; int type; int number; double ic; double nodeset; double *ptr; struct sCKTnode *next; unsigned int icGiven; unsigned int nsGiven; } *CKTnodes; struct sCKTnode *CKTlastNode; int CKTnumStates; long CKTmode; int CKTbypass; int CKTdcMaxIter; int CKTdcTrcvMaxIter; int CKTtranMaxIter; int CKTbreakSize; int CKTbreak; double CKTsaveDelta; double CKTminBreak; double *CKTbreaks; double CKTabstol; double CKTpivotAbsTol; double CKTpivotRelTol; double CKTreltol; double CKTchgtol; double CKTvoltTol; double CKTgmin; double CKTgshunt; double CKTdelmin; double CKTtrtol; double CKTfinalTime; double CKTstep; double CKTmaxStep; double CKTinitTime; double CKTomega; double CKTsrcFact; double CKTdiagGmin; int CKTnumSrcSteps; int CKTnumGminSteps; double CKTgminFactor; int CKTnoncon; double CKTdefaultMosM; double CKTdefaultMosL; double CKTdefaultMosW; double CKTdefaultMosAD; double CKTdefaultMosAS; unsigned int CKThadNodeset; unsigned int CKTfixLimit; unsigned int CKTnoOpIter; unsigned int CKTisSetup; struct sJOB { int JOBtype; struct sJOB *JOBnextJob; char *JOBname; } *CKTcurJob; struct SENstruct { int JOBtype; struct sJOB *JOBnextJob; char *JOBname; int SENnumVal; char **SENdevices; char **SENparmNames; unsigned int SENinitflag; unsigned int SENicflag; unsigned int SENstatus; unsigned int SENacpertflag; int SENmode; int SENparms; double SENpertfac; double **SEN_Sap; double **SEN_RHS; double **SEN_iRHS; int SENsize; void *SEN_Jacmat; double *SEN_parmVal; char **SEN_parmName; } *CKTsenInfo; double *CKTtimePoints; double *CKTdeltaList; int CKTtimeListSize; int CKTtimeIndex; int CKTsizeIncr; unsigned int CKTtryToCompact; unsigned int CKTbadMos3; unsigned int CKTkeepOpInfo; unsigned int CKTcopyNodesets; unsigned int CKTnodeDamping; double CKTabsDv; double CKTrelDv; int CKTtroubleNode; struct sGENinstance *CKTtroubleElt; } *

variable_types: struct sTRAmodel { int TRAmodType; struct sTRAmodel *TRAnextModel; struct sTRAinstance { struct sTRAmodel *TRAmodPtr; struct sTRAinstance *TRAnextInstance; char *TRAname; int TRAowner; int TRAstate; int TRAposNode1; int TRAnegNode1; int TRAposNode2; int TRAnegNode2; int TRAintNode1; int TRAintNode2; double TRAimped; double TRAconduct; double TRAtd; double TRAnl; double TRAf; double TRAinput1; double TRAinput2; double TRAinitVolt1; double TRAinitCur1; double TRAinitVolt2; double TRAinitCur2; double TRAreltol; double TRAabstol; double *TRAdelays; int TRAsizeDelay; int TRAallocDelay; int TRAbrEq1; int TRAbrEq2; double *TRAibr1Ibr2Ptr; double *TRAibr1Int1Ptr; double *TRAibr1Neg1Ptr; double *TRAibr1Neg2Ptr; double *TRAibr1Pos2Ptr; double *TRAibr2Ibr1Ptr; double *TRAibr2Int2Ptr; double *TRAibr2Neg1Ptr; double *TRAibr2Neg2Ptr; double *TRAibr2Pos1Ptr; double *TRAint1Ibr1Ptr; double *TRAint1Int1Ptr; double *TRAint1Pos1Ptr; double *TRAint2Ibr2Ptr; double *TRAint2Int2Ptr; double *TRAint2Pos2Ptr; double *TRAneg1Ibr1Ptr; double *TRAneg2Ibr2Ptr; double *TRApos1Int1Ptr; double *TRApos1Pos1Ptr; double *TRApos2Int2Ptr; double *TRApos2Pos2Ptr; unsigned int TRAimpedGiven; unsigned int TRAtdGiven; unsigned int TRAnlGiven; unsigned int TRAfGiven; unsigned int TRAicV1Given; unsigned int TRAicC1Given; unsigned int TRAicV2Given; unsigned int TRAicC2Given; unsigned int TRAreltolGiven; unsigned int TRAabstolGiven; } *TRAinstances; char *TRAmodName; } *

variable_types: struct sTRAinstance { struct sTRAmodel { int TRAmodType; struct sTRAmodel *TRAnextModel; struct sTRAinstance *TRAinstances; char *TRAmodName; } *TRAmodPtr; struct sTRAinstance *TRAnextInstance; char *TRAname; int TRAowner; int TRAstate; int TRAposNode1; int TRAnegNode1; int TRAposNode2; int TRAnegNode2; int TRAintNode1; int TRAintNode2; double TRAimped; double TRAconduct; double TRAtd; double TRAnl; double TRAf; double TRAinput1; double TRAinput2; double TRAinitVolt1; double TRAinitCur1; double TRAinitVolt2; double TRAinitCur2; double TRAreltol; double TRAabstol; double *TRAdelays; int TRAsizeDelay; int TRAallocDelay; int TRAbrEq1; int TRAbrEq2; double *TRAibr1Ibr2Ptr; double *TRAibr1Int1Ptr; double *TRAibr1Neg1Ptr; double *TRAibr1Neg2Ptr; double *TRAibr1Pos2Ptr; double *TRAibr2Ibr1Ptr; double *TRAibr2Int2Ptr; double *TRAibr2Neg1Ptr; double *TRAibr2Neg2Ptr; double *TRAibr2Pos1Ptr; double *TRAint1Ibr1Ptr; double *TRAint1Int1Ptr; double *TRAint1Pos1Ptr; double *TRAint2Ibr2Ptr; double *TRAint2Int2Ptr; double *TRAint2Pos2Ptr; double *TRAneg1Ibr1Ptr; double *TRAneg2Ibr2Ptr; double *TRApos1Int1Ptr; double *TRApos1Pos1Ptr; double *TRApos2Int2Ptr; double *TRApos2Pos2Ptr; unsigned int TRAimpedGiven; unsigned int TRAtdGiven; unsigned int TRAnlGiven; unsigned int TRAfGiven; unsigned int TRAicV1Given; unsigned int TRAicC1Given; unsigned int TRAicV2Given; unsigned int TRAicC2Given; unsigned int TRAreltolGiven; unsigned int TRAabstolGiven; } *

variable_types: real double

variable_types: imag double