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

switch ( a3 )
{
case 101:
*a4 = *(_QWORD *)(a2 + 40);
result = 0LL;
break;
case 102:
*a4 = *(_QWORD *)(a2 + 48);
result = 0LL;
break;
case 103:
*a4 = *(_QWORD *)(a2 + 56);
result = 0LL;
break;
case 104:
*a4 = *(_QWORD *)(a2 + 64);
result = 0LL;
break;
case 105:
*a4 = *(_QWORD *)(a2 + 72);
result = 0LL;
break;
case 106:
*a4 = *(_QWORD *)(a2 + 80);
result = 0LL;
break;
case 107:
*a4 = *(_QWORD *)(a2 + 88);
result = 0LL;
break;
case 108:
*a4 = *(_QWORD *)(a2 + 96);
result = 0LL;
break;
case 109:
*a4 = *(_QWORD *)(a2 + 104);
result = 0LL;
break;
case 110:
*a4 = *(_QWORD *)(a2 + 112);
result = 0LL;
break;
case 111:
*a4 = *(_QWORD *)(a2 + 120);
result = 0LL;
break;
case 112:
*a4 = *(_QWORD *)(a2 + 128);
result = 0LL;
break;
case 113:
*a4 = *(_QWORD *)(a2 + 136);
result = 0LL;
break;
case 114:
*a4 = *(_QWORD *)(a2 + 144);
result = 0LL;
break;
case 115:
*a4 = *(_QWORD *)(a2 + 152);
result = 0LL;
break;
case 116:
*a4 = *(_QWORD *)(a2 + 160);
result = 0LL;
break;
case 117:
*a4 = *(_QWORD *)(a2 + 168);
result = 0LL;
break;
case 118:
*a4 = *(_QWORD *)(a2 + 176);
result = 0LL;
break;
case 119:
*(_QWORD *)(a2 + 184) = *a4;
result = 0LL;
break;
case 120:
*(_QWORD *)(a2 + 192) = *a4;
result = 0LL;
break;
case 121:
*a4 = *(_QWORD *)(a2 + 200);
result = 0LL;
break;
case 122:
*a4 = *(_QWORD *)(a2 + 208);
result = 0LL;
break;
case 123:
*a4 = *(_QWORD *)(a2 + 216);
result = 0LL;
break;
case 124:
*a4 = *(_QWORD *)(a2 + 224);
result = 0LL;
break;
case 125:
*a4 = *(_QWORD *)(a2 + 232);
result = 0LL;
break;
case 126:
*a4 = *(_QWORD *)(a2 + 240);
result = 0LL;
break;
case 127:
*a4 = *(_QWORD *)(a2 + 248);
result = 0LL;
break;
case 128:
*a4 = *(_QWORD *)(a2 + 256);
result = 0LL;
break;
case 129:
*a4 = *(_QWORD *)(a2 + 264);
result = 0LL;
break;
case 130:
*a4 = *(_QWORD *)(a2 + 272);
result = 0LL;
break;
case 131:
*a4 = *(_QWORD *)(a2 + 280);
result = 0LL;
break;
case 132:
*a4 = *(_QWORD *)(a2 + 288);
result = 0LL;
break;
case 133:
*a4 = *(_QWORD *)(a2 + 296);
result = 0LL;
break;
case 134:
*a4 = *(_QWORD *)(a2 + 304);
result = 0LL;
break;
case 135:
*a4 = *(_QWORD *)(a2 + 312);
result = 0LL;
break;
case 136:
*a4 = *(_QWORD *)(a2 + 320);
result = 0LL;
break;
case 137:
*a4 = *(_QWORD *)(a2 + 328);
result = 0LL;
break;
case 138:
*a4 = *(_QWORD *)(a2 + 336);
result = 0LL;
break;
case 139:
*a4 = *(_QWORD *)(a2 + 344);
result = 0LL;
break;
case 140:
*a4 = *(_QWORD *)(a2 + 352);
result = 0LL;
break;
case 141:
*a4 = *(_QWORD *)(a2 + 360);
result = 0LL;
break;
case 142:
*a4 = *(_QWORD *)(a2 + 368);
result = 0LL;
break;
case 143:
*a4 = *(_QWORD *)(a2 + 376);
result = 0LL;
break;
case 144:
*a4 = *(_QWORD *)(a2 + 384);
result = 0LL;
break;
case 145:
*a4 = *(_QWORD *)(a2 + 392);
result = 0LL;
break;
case 146:
*a4 = *(_QWORD *)(a2 + 400);
result = 0LL;
break;
case 147:
*a4 = *(_QWORD *)(a2 + 408);
result = 0LL;
break;
case 148:
*a4 = *(_QWORD *)(a2 + 416);
result = 0LL;
break;
case 149:
*a4 = *(_QWORD *)(a2 + 424);
result = 0LL;
break;
case 150:
*a4 = *(_QWORD *)(a2 + 432);
result = 0LL;
break;
case 151:
*a4 = *(_QWORD *)(a2 + 440);
result = 0LL;
break;
case 152:
*a4 = *(_QWORD *)(a2 + 448);
result = 0LL;
break;
case 153:
*a4 = *(_QWORD *)(a2 + 456);
result = 0LL;
break;
case 154:
*a4 = *(_QWORD *)(a2 + 464);
result = 0LL;
break;
case 155:
*a4 = *(_QWORD *)(a2 + 472);
result = 0LL;
break;
case 156:
*a4 = *(_QWORD *)(a2 + 480);
result = 0LL;
break;
case 157:
*a4 = *(_QWORD *)(a2 + 488);
result = 0LL;
break;
case 158:
*a4 = *(_QWORD *)(a2 + 496);
result = 0LL;
break;
case 159:
*a4 = *(_QWORD *)(a2 + 504);
result = 0LL;
break;
case 160:
*a4 = *(_QWORD *)(a2 + 512);
result = 0LL;
break;
case 161:
*a4 = *(_QWORD *)(a2 + 520);
result = 0LL;
break;
case 162:
*a4 = *(_QWORD *)(a2 + 528);
result = 0LL;
break;
case 163:
*a4 = *(_QWORD *)(a2 + 536);
result = 0LL;
break;
case 164:
*a4 = *(_QWORD *)(a2 + 544);
result = 0LL;
break;
case 165:
*a4 = *(_QWORD *)(a2 + 552);
result = 0LL;
break;
case 166:
*a4 = *(_QWORD *)(a2 + 560);
result = 0LL;
break;
case 167:
*a4 = *(_QWORD *)(a2 + 568);
result = 0LL;
break;
case 168:
*a4 = *(_QWORD *)(a2 + 576);
result = 0LL;
break;
case 169:
*a4 = *(_QWORD *)(a2 + 584);
result = 0LL;
break;
case 170:
*a4 = *(_QWORD *)(a2 + 592);
result = 0LL;
break;
case 171:
*a4 = *(_QWORD *)(a2 + 600);
result = 0LL;
break;
case 172:
*a4 = *(_QWORD *)(a2 + 608);
result = 0LL;
break;
case 173:
*a4 = *(_QWORD *)(a2 + 616);
result = 0LL;
break;
case 174:
*a4 = *(_QWORD *)(a2 + 624);
result = 0LL;
break;
case 175:
*a4 = *(_QWORD *)(a2 + 632);
result = 0LL;
break;
case 176:
*a4 = *(_QWORD *)(a2 + 640);
result = 0LL;
break;
case 177:
*a4 = *(_QWORD *)(a2 + 648);
result = 0LL;
break;
case 178:
*a4 = *(_QWORD *)(a2 + 656);
result = 0LL;
break;
case 179:
*a4 = *(_QWORD *)(a2 + 664);
result = 0LL;
break;
case 180:
*a4 = *(_QWORD *)(a2 + 672);
result = 0LL;
break;
case 181:
*a4 = *(_QWORD *)(a2 + 680);
result = 0LL;
break;
case 182:
*a4 = *(_QWORD *)(a2 + 688);
result = 0LL;
break;
case 183:
*a4 = *(_QWORD *)(a2 + 696);
result = 0LL;
break;
case 184:
*a4 = *(_QWORD *)(a2 + 704);
result = 0LL;
break;
case 185:
*a4 = *(_QWORD *)(a2 + 712);
result = 0LL;
break;
case 186:
*a4 = *(_QWORD *)(a2 + 720);
result = 0LL;
break;
case 187:
*a4 = *(_QWORD *)(a2 + 728);
result = 0LL;
break;
case 188:
*a4 = *(_QWORD *)(a2 + 736);
result = 0LL;
break;
case 189:
*a4 = *(_QWORD *)(a2 + 744);
result = 0LL;
break;
case 190:
*a4 = *(_QWORD *)(a2 + 752);
result = 0LL;
break;
case 191:
*a4 = *(_QWORD *)(a2 + 760);
result = 0LL;
break;
case 192:
*a4 = *(_QWORD *)(a2 + 768);
result = 0LL;
break;
case 193:
*a4 = *(_QWORD *)(a2 + 776);
result = 0LL;
break;
case 194:
*a4 = *(_QWORD *)(a2 + 784);
result = 0LL;
break;
case 195:
*a4 = *(_QWORD *)(a2 + 792);
result = 0LL;
break;
case 196:
*a4 = *(_QWORD *)(a2 + 800);
result = 0LL;
break;
case 197:
*a4 = *(_QWORD *)(a2 + 808);
result = 0LL;
break;
case 198:
*a4 = *(_QWORD *)(a2 + 816);
result = 0LL;
break;
case 199:
*a4 = *(_QWORD *)(a2 + 824);
result = 0LL;
break;
case 200:
*a4 = *(_QWORD *)(a2 + 832);
result = 0LL;
break;
case 201:
*a4 = *(_QWORD *)(a2 + 840);
result = 0LL;
break;
case 202:
*a4 = *(_QWORD *)(a2 + 848);
result = 0LL;
break;
case 203:
*a4 = *(_QWORD *)(a2 + 856);
result = 0LL;
break;
case 204:
*a4 = *(_QWORD *)(a2 + 864);
result = 0LL;
break;
case 205:
*a4 = *(_QWORD *)(a2 + 872);
result = 0LL;
break;
case 206:
*a4 = *(_QWORD *)(a2 + 880);
result = 0LL;
break;
case 207:
*a4 = *(_QWORD *)(a2 + 888);
result = 0LL;
break;
case 208:
*a4 = *(_QWORD *)(a2 + 896);
result = 0LL;
break;
case 209:
*a4 = *(_QWORD *)(a2 + 904);
result = 0LL;
break;
case 210:
*a4 = *(_QWORD *)(a2 + 912);
result = 0LL;
break;
case 211:
*a4 = *(_QWORD *)(a2 + 920);
result = 0LL;
break;
case 212:
*a4 = *(_QWORD *)(a2 + 928);
result = 0LL;
break;
case 213:
*a4 = *(_QWORD *)(a2 + 936);
result = 0LL;
break;
case 214:
*a4 = *(_QWORD *)(a2 + 944);
result = 0LL;
break;
case 215:
*a4 = *(_QWORD *)(a2 + 952);
result = 0LL;
break;
case 216:
*a4 = *(_QWORD *)(a2 + 968);
result = 0LL;
break;
case 217:
*a4 = *(_QWORD *)(a2 + 976);
result = 0LL;
break;
case 218:
*a4 = *(_QWORD *)(a2 + 992);
result = 0LL;
break;
case 219:
*a4 = *(_QWORD *)(a2 + 1008);
result = 0LL;
break;
case 220:
*a4 = *(_QWORD *)(a2 + 1024);
result = 0LL;
break;
case 221:
*a4 = *(_QWORD *)(a2 + 1032);
result = 0LL;
break;
case 222:
*a4 = *(_QWORD *)(a2 + 1040);
result = 0LL;
break;
case 223:
*(_DWORD *)a4 = (int)*(double *)(a2 + 1048);
result = 0LL;
break;
case 224:
*a4 = *(_QWORD *)(a2 + 1064);
result = 0LL;
break;
case 225:
*a4 = *(_QWORD *)(a2 + 1072);
result = 0LL;
break;
case 226:
*a4 = *(_QWORD *)(a2 + 1080);
result = 0LL;
break;
case 227:
*a4 = *(_QWORD *)(a2 + 1088);
result = 0LL;
break;
case 228:
*a4 = *(_QWORD *)(a2 + 1104);
result = 0LL;
break;
case 229:
*a4 = *(_QWORD *)(a2 + 1096);
result = 0LL;
break;
case 230:
*a4 = *(_QWORD *)(a2 + 1112);
result = 0LL;
break;
case 231:
*a4 = *(_QWORD *)(a2 + 1120);
result = 0LL;
break;
case 232:
*a4 = *(_QWORD *)(a2 + 1128);
result = 0LL;
break;
case 233:
*a4 = *(_QWORD *)(a2 + 1136);
result = 0LL;
break;
default:
result = 7LL;
break;
}
return result;
}

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

switch ( a3 )
{
case 101:
*a4 = *(_QWORD *)(a2 + 40);
result = 0LL;
break;
case 102:
*a4 = *(_QWORD *)(a2 + 48);
result = 0LL;
break;
case 103:
*a4 = *(_QWORD *)(a2 + 56);
result = 0LL;
break;
case 104:
*a4 = *(_QWORD *)(a2 + 64);
result = 0LL;
break;
case 105:
*a4 = *(_QWORD *)(a2 + 72);
result = 0LL;
break;
case 106:
*a4 = *(_QWORD *)(a2 + 80);
result = 0LL;
break;
case 107:
*a4 = *(_QWORD *)(a2 + 88);
result = 0LL;
break;
case 108:
*a4 = *(_QWORD *)(a2 + 96);
result = 0LL;
break;
case 109:
*a4 = *(_QWORD *)(a2 + 104);
result = 0LL;
break;
case 110:
*a4 = *(_QWORD *)(a2 + 112);
result = 0LL;
break;
case 111:
*a4 = *(_QWORD *)(a2 + 120);
result = 0LL;
break;
case 112:
*a4 = *(_QWORD *)(a2 + 128);
result = 0LL;
break;
case 113:
*a4 = *(_QWORD *)(a2 + 136);
result = 0LL;
break;
case 114:
*a4 = *(_QWORD *)(a2 + 144);
result = 0LL;
break;
case 115:
*a4 = *(_QWORD *)(a2 + 152);
result = 0LL;
break;
case 116:
*a4 = *(_QWORD *)(a2 + 160);
result = 0LL;
break;
case 117:
*a4 = *(_QWORD *)(a2 + 168);
result = 0LL;
break;
case 118:
*a4 = *(_QWORD *)(a2 + 176);
result = 0LL;
break;
case 119:
*(_QWORD *)(a2 + 184) = *a4;
result = 0LL;
break;
case 120:
*(_QWORD *)(a2 + 192) = *a4;
result = 0LL;
break;
case 121:
*a4 = *(_QWORD *)(a2 + 200);
result = 0LL;
break;
case 122:
*a4 = *(_QWORD *)(a2 + 208);
result = 0LL;
break;
case 123:
*a4 = *(_QWORD *)(a2 + 216);
result = 0LL;
break;
case 124:
*a4 = *(_QWORD *)(a2 + 224);
result = 0LL;
break;
case 125:
*a4 = *(_QWORD *)(a2 + 232);
result = 0LL;
break;
case 126:
*a4 = *(_QWORD *)(a2 + 240);
result = 0LL;
break;
case 127:
*a4 = *(_QWORD *)(a2 + 248);
result = 0LL;
break;
case 128:
*a4 = *(_QWORD *)(a2 + 256);
result = 0LL;
break;
case 129:
*a4 = *(_QWORD *)(a2 + 264);
result = 0LL;
break;
case 130:
*a4 = *(_QWORD *)(a2 + 272);
result = 0LL;
break;
case 131:
*a4 = *(_QWORD *)(a2 + 280);
result = 0LL;
break;
case 132:
*a4 = *(_QWORD *)(a2 + 288);
result = 0LL;
break;
case 133:
*a4 = *(_QWORD *)(a2 + 296);
result = 0LL;
break;
case 134:
*a4 = *(_QWORD *)(a2 + 304);
result = 0LL;
break;
case 135:
*a4 = *(_QWORD *)(a2 + 312);
result = 0LL;
break;
case 136:
*a4 = *(_QWORD *)(a2 + 320);
result = 0LL;
break;
case 137:
*a4 = *(_QWORD *)(a2 + 328);
result = 0LL;
break;
case 138:
*a4 = *(_QWORD *)(a2 + 336);
result = 0LL;
break;
case 139:
*a4 = *(_QWORD *)(a2 + 344);
result = 0LL;
break;
case 140:
*a4 = *(_QWORD *)(a2 + 352);
result = 0LL;
break;
case 141:
*a4 = *(_QWORD *)(a2 + 360);
result = 0LL;
break;
case 142:
*a4 = *(_QWORD *)(a2 + 368);
result = 0LL;
break;
case 143:
*a4 = *(_QWORD *)(a2 + 376);
result = 0LL;
break;
case 144:
*a4 = *(_QWORD *)(a2 + 384);
result = 0LL;
break;
case 145:
*a4 = *(_QWORD *)(a2 + 392);
result = 0LL;
break;
case 146:
*a4 = *(_QWORD *)(a2 + 400);
result = 0LL;
break;
case 147:
*a4 = *(_QWORD *)(a2 + 408);
result = 0LL;
break;
case 148:
*a4 = *(_QWORD *)(a2 + 416);
result = 0LL;
break;
case 149:
*a4 = *(_QWORD *)(a2 + 424);
result = 0LL;
break;
case 150:
*a4 = *(_QWORD *)(a2 + 432);
result = 0LL;
break;
case 151:
*a4 = *(_QWORD *)(a2 + 440);
result = 0LL;
break;
case 152:
*a4 = *(_QWORD *)(a2 + 448);
result = 0LL;
break;
case 153:
*a4 = *(_QWORD *)(a2 + 456);
result = 0LL;
break;
case 154:
*a4 = *(_QWORD *)(a2 + 464);
result = 0LL;
break;
case 155:
*a4 = *(_QWORD *)(a2 + 472);
result = 0LL;
break;
case 156:
*a4 = *(_QWORD *)(a2 + 480);
result = 0LL;
break;
case 157:
*a4 = *(_QWORD *)(a2 + 488);
result = 0LL;
break;
case 158:
*a4 = *(_QWORD *)(a2 + 496);
result = 0LL;
break;
case 159:
*a4 = *(_QWORD *)(a2 + 504);
result = 0LL;
break;
case 160:
*a4 = *(_QWORD *)(a2 + 512);
result = 0LL;
break;
case 161:
*a4 = *(_QWORD *)(a2 + 520);
result = 0LL;
break;
case 162:
*a4 = *(_QWORD *)(a2 + 528);
result = 0LL;
break;
case 163:
*a4 = *(_QWORD *)(a2 + 536);
result = 0LL;
break;
case 164:
*a4 = *(_QWORD *)(a2 + 544);
result = 0LL;
break;
case 165:
*a4 = *(_QWORD *)(a2 + 552);
result = 0LL;
break;
case 166:
*a4 = *(_QWORD *)(a2 + 560);
result = 0LL;
break;
case 167:
*a4 = *(_QWORD *)(a2 + 568);
result = 0LL;
break;
case 168:
*a4 = *(_QWORD *)(a2 + 576);
result = 0LL;
break;
case 169:
*a4 = *(_QWORD *)(a2 + 584);
result = 0LL;
break;
case 170:
*a4 = *(_QWORD *)(a2 + 592);
result = 0LL;
break;
case 171:
*a4 = *(_QWORD *)(a2 + 600);
result = 0LL;
break;
case 172:
*a4 = *(_QWORD *)(a2 + 608);
result = 0LL;
break;
case 173:
*a4 = *(_QWORD *)(a2 + 616);
result = 0LL;
break;
case 174:
*a4 = *(_QWORD *)(a2 + 624);
result = 0LL;
break;
case 175:
*a4 = *(_QWORD *)(a2 + 632);
result = 0LL;
break;
case 176:
*a4 = *(_QWORD *)(a2 + 640);
result = 0LL;
break;
case 177:
*a4 = *(_QWORD *)(a2 + 648);
result = 0LL;
break;
case 178:
*a4 = *(_QWORD *)(a2 + 656);
result = 0LL;
break;
case 179:
*a4 = *(_QWORD *)(a2 + 664);
result = 0LL;
break;
case 180:
*a4 = *(_QWORD *)(a2 + 672);
result = 0LL;
break;
case 181:
*a4 = *(_QWORD *)(a2 + 680);
result = 0LL;
break;
case 182:
*a4 = *(_QWORD *)(a2 + 688);
result = 0LL;
break;
case 183:
*a4 = *(_QWORD *)(a2 + 696);
result = 0LL;
break;
case 184:
*a4 = *(_QWORD *)(a2 + 704);
result = 0LL;
break;
case 185:
*a4 = *(_QWORD *)(a2 + 712);
result = 0LL;
break;
case 186:
*a4 = *(_QWORD *)(a2 + 720);
result = 0LL;
break;
case 187:
*a4 = *(_QWORD *)(a2 + 728);
result = 0LL;
break;
case 188:
*a4 = *(_QWORD *)(a2 + 736);
result = 0LL;
break;
case 189:
*a4 = *(_QWORD *)(a2 + 744);
result = 0LL;
break;
case 190:
*a4 = *(_QWORD *)(a2 + 752);
result = 0LL;
break;
case 191:
*a4 = *(_QWORD *)(a2 + 760);
result = 0LL;
break;
case 192:
*a4 = *(_QWORD *)(a2 + 768);
result = 0LL;
break;
case 193:
*a4 = *(_QWORD *)(a2 + 776);
result = 0LL;
break;
case 194:
*a4 = *(_QWORD *)(a2 + 784);
result = 0LL;
break;
case 195:
*a4 = *(_QWORD *)(a2 + 792);
result = 0LL;
break;
case 196:
*a4 = *(_QWORD *)(a2 + 800);
result = 0LL;
break;
case 197:
*a4 = *(_QWORD *)(a2 + 808);
result = 0LL;
break;
case 198:
*a4 = *(_QWORD *)(a2 + 816);
result = 0LL;
break;
case 199:
*a4 = *(_QWORD *)(a2 + 824);
result = 0LL;
break;
case 200:
*a4 = *(_QWORD *)(a2 + 832);
result = 0LL;
break;
case 201:
*a4 = *(_QWORD *)(a2 + 840);
result = 0LL;
break;
case 202:
*a4 = *(_QWORD *)(a2 + 848);
result = 0LL;
break;
case 203:
*a4 = *(_QWORD *)(a2 + 856);
result = 0LL;
break;
case 204:
*a4 = *(_QWORD *)(a2 + 864);
result = 0LL;
break;
case 205:
*a4 = *(_QWORD *)(a2 + 872);
result = 0LL;
break;
case 206:
*a4 = *(_QWORD *)(a2 + 880);
result = 0LL;
break;
case 207:
*a4 = *(_QWORD *)(a2 + 888);
result = 0LL;
break;
case 208:
*a4 = *(_QWORD *)(a2 + 896);
result = 0LL;
break;
case 209:
*a4 = *(_QWORD *)(a2 + 904);
result = 0LL;
break;
case 210:
*a4 = *(_QWORD *)(a2 + 912);
result = 0LL;
break;
case 211:
*a4 = *(_QWORD *)(a2 + 920);
result = 0LL;
break;
case 212:
*a4 = *(_QWORD *)(a2 + 928);
result = 0LL;
break;
case 213:
*a4 = *(_QWORD *)(a2 + 936);
result = 0LL;
break;
case 214:
*a4 = *(_QWORD *)(a2 + 944);
result = 0LL;
break;
case 215:
*a4 = *(_QWORD *)(a2 + 952);
result = 0LL;
break;
case 216:
*a4 = *(_QWORD *)(a2 + 968);
result = 0LL;
break;
case 217:
*a4 = *(_QWORD *)(a2 + 976);
result = 0LL;
break;
case 218:
*a4 = *(_QWORD *)(a2 + 992);
result = 0LL;
break;
case 219:
*a4 = *(_QWORD *)(a2 + 1008);
result = 0LL;
break;
case 220:
*a4 = *(_QWORD *)(a2 + 1024);
result = 0LL;
break;
case 221:
*a4 = *(_QWORD *)(a2 + 1032);
result = 0LL;
break;
case 222:
*a4 = *(_QWORD *)(a2 + 1040);
result = 0LL;
break;
case 223:
*(_DWORD *)a4 = (int)*(double *)(a2 + 1048);
result = 0LL;
break;
case 224:
*a4 = *(_QWORD *)(a2 + 1064);
result = 0LL;
break;
case 225:
*a4 = *(_QWORD *)(a2 + 1072);
result = 0LL;
break;
case 226:
*a4 = *(_QWORD *)(a2 + 1080);
result = 0LL;
break;
case 227:
*a4 = *(_QWORD *)(a2 + 1088);
result = 0LL;
break;
case 228:
*a4 = *(_QWORD *)(a2 + 1104);
result = 0LL;
break;
case 229:
*a4 = *(_QWORD *)(a2 + 1096);
result = 0LL;
break;
case 230:
*a4 = *(_QWORD *)(a2 + 1112);
result = 0LL;
break;
case 231:
*a4 = *(_QWORD *)(a2 + 1120);
result = 0LL;
break;
case 232:
*a4 = *(_QWORD *)(a2 + 1128);
result = 0LL;
break;
case 233:
*a4 = *(_QWORD *)(a2 + 1136);
result = 0LL;
break;
default:
result = 7LL;
break;
}
return result;
}

original_code:
int
B2mAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value)
{
    B2model *model = (B2model *)inst;
        switch(which) {
        case 101:
            value->rValue = model->B2vfb0;
            return(0);
        case 102 :
          value->rValue = model->B2vfbL;
            return(0);
        case 103 :
          value->rValue = model->B2vfbW;
            return(0);
        case 104 :
          value->rValue = model->B2phi0;
            return(0);
        case 105 :
          value->rValue = model->B2phiL;
            return(0);
        case 106 :
          value->rValue = model->B2phiW;
            return(0);
        case 107 :
          value->rValue = model->B2k10;
            return(0);
        case 108 :
          value->rValue = model->B2k1L;
            return(0);
        case 109 :
          value->rValue = model->B2k1W;
            return(0);
        case 110 :
          value->rValue = model->B2k20;
            return(0);
        case 111 :
          value->rValue = model->B2k2L;
            return(0);
        case 112 :
          value->rValue = model->B2k2W;
            return(0);
        case 113 :
          value->rValue = model->B2eta00;
            return(0);
        case 114 :
          value->rValue = model->B2eta0L;
            return(0);
        case 115 :
          value->rValue = model->B2eta0W;
            return(0);
        case 116 :
          value->rValue = model->B2etaB0;
            return(0);
        case 117 :
          value->rValue = model->B2etaBL;
            return(0);
        case 118 :
          value->rValue = model->B2etaBW;
            return(0);
        case 119 :
          value->rValue = model->B2deltaL = value->rValue;
            return(0);
        case 120 :
          value->rValue = model->B2deltaW = value->rValue;
            return(0);
        case 121 :
          value->rValue = model->B2mob00;
            return(0);
        case 122 :
          value->rValue = model->B2mob0B0;
            return(0);
        case 123 :
          value->rValue = model->B2mob0BL;
            return(0);
        case 124 :
          value->rValue = model->B2mob0BW;
            return(0);
        case 125 :
          value->rValue = model->B2mobs00;
            return(0);
        case 126 :
          value->rValue = model->B2mobs0L;
            return(0);
        case 127 :
          value->rValue = model->B2mobs0W;
            return(0);
        case 128 :
          value->rValue = model->B2mobsB0;
            return(0);
        case 129 :
          value->rValue = model->B2mobsBL;
            return(0);
        case 130 :
          value->rValue = model->B2mobsBW;
            return(0);
        case 131 :
          value->rValue = model->B2mob200;
            return(0);
        case 132 :
          value->rValue = model->B2mob20L;
            return(0);
        case 133 :
          value->rValue = model->B2mob20W;
            return(0);
        case 134 :
          value->rValue = model->B2mob2B0;
            return(0);
        case 135 :
          value->rValue = model->B2mob2BL;
            return(0);
        case 136 :
          value->rValue = model->B2mob2BW;
            return(0);
        case 137 :
          value->rValue = model->B2mob2G0;
            return(0);
        case 138 :
          value->rValue = model->B2mob2GL;
            return(0);
        case 139 :
          value->rValue = model->B2mob2GW;
            return(0);
        case 140 :
          value->rValue = model->B2mob300;
            return(0);
        case 141 :
          value->rValue = model->B2mob30L;
            return(0);
        case 142 :
          value->rValue = model->B2mob30W;
            return(0);
        case 143 :
          value->rValue = model->B2mob3B0;
            return(0);
        case 144 :
          value->rValue = model->B2mob3BL;
            return(0);
        case 145 :
          value->rValue = model->B2mob3BW;
            return(0);
        case 146 :
          value->rValue = model->B2mob3G0;
            return(0);
        case 147 :
          value->rValue = model->B2mob3GL;
            return(0);
        case 148 :
          value->rValue = model->B2mob3GW;
            return(0);
        case 149 :
          value->rValue = model->B2mob400;
            return(0);
        case 150 :
          value->rValue = model->B2mob40L;
            return(0);
        case 151 :
          value->rValue = model->B2mob40W;
            return(0);
        case 152 :
          value->rValue = model->B2mob4B0;
            return(0);
        case 153 :
          value->rValue = model->B2mob4BL;
            return(0);
        case 154 :
          value->rValue = model->B2mob4BW;
            return(0);
        case 155 :
          value->rValue = model->B2mob4G0;
            return(0);
        case 156 :
          value->rValue = model->B2mob4GL;
            return(0);
        case 157 :
          value->rValue = model->B2mob4GW;
            return(0);
        case 158 :
          value->rValue = model->B2ua00;
            return(0);
        case 159 :
          value->rValue = model->B2ua0L;
            return(0);
        case 160 :
          value->rValue = model->B2ua0W;
            return(0);
        case 161 :
          value->rValue = model->B2uaB0;
            return(0);
        case 162 :
          value->rValue = model->B2uaBL;
            return(0);
        case 163 :
          value->rValue = model->B2uaBW;
            return(0);
        case 164 :
          value->rValue = model->B2ub00;
            return(0);
        case 165 :
          value->rValue = model->B2ub0L;
            return(0);
        case 166 :
          value->rValue = model->B2ub0W;
            return(0);
        case 167 :
          value->rValue = model->B2ubB0;
            return(0);
        case 168 :
          value->rValue = model->B2ubBL;
            return(0);
        case 169 :
          value->rValue = model->B2ubBW;
            return(0);
        case 170 :
          value->rValue = model->B2u100;
            return(0);
        case 171 :
          value->rValue = model->B2u10L;
            return(0);
        case 172 :
          value->rValue = model->B2u10W;
            return(0);
        case 173 :
          value->rValue = model->B2u1B0;
            return(0);
        case 174 :
          value->rValue = model->B2u1BL;
            return(0);
        case 175 :
          value->rValue = model->B2u1BW;
            return(0);
        case 176 :
          value->rValue = model->B2u1D0;
            return(0);
        case 177 :
          value->rValue = model->B2u1DL;
            return(0);
        case 178 :
          value->rValue = model->B2u1DW;
            return(0);
        case 179 :
          value->rValue = model->B2n00;
            return(0);
        case 180 :
          value->rValue = model->B2n0L;
            return(0);
        case 181 :
          value->rValue = model->B2n0W;
            return(0);
        case 182 :
          value->rValue = model->B2nB0;
            return(0);
        case 183 :
          value->rValue = model->B2nBL;
            return(0);
        case 184 :
          value->rValue = model->B2nBW;
            return(0);
        case 185 :
          value->rValue = model->B2nD0;
            return(0);
        case 186 :
          value->rValue = model->B2nDL;
            return(0);
        case 187 :
          value->rValue = model->B2nDW;
            return(0);
        case 188 :
          value->rValue = model->B2vof00;
            return(0);
        case 189 :
          value->rValue = model->B2vof0L;
            return(0);
        case 190 :
          value->rValue = model->B2vof0W;
            return(0);
        case 191 :
          value->rValue = model->B2vofB0;
            return(0);
        case 192 :
          value->rValue = model->B2vofBL;
            return(0);
        case 193 :
          value->rValue = model->B2vofBW;
            return(0);
        case 194 :
          value->rValue = model->B2vofD0;
            return(0);
        case 195 :
          value->rValue = model->B2vofDL;
            return(0);
        case 196 :
          value->rValue = model->B2vofDW;
            return(0);
        case 197 :
          value->rValue = model->B2ai00;
            return(0);
        case 198 :
          value->rValue = model->B2ai0L;
            return(0);
        case 199 :
          value->rValue = model->B2ai0W;
            return(0);
        case 200 :
          value->rValue = model->B2aiB0;
            return(0);
        case 201 :
          value->rValue = model->B2aiBL;
            return(0);
        case 202 :
          value->rValue = model->B2aiBW;
            return(0);
        case 203 :
          value->rValue = model->B2bi00;
            return(0);
        case 204 :
          value->rValue = model->B2bi0L;
            return(0);
        case 205 :
          value->rValue = model->B2bi0W;
            return(0);
        case 206 :
          value->rValue = model->B2biB0;
            return(0);
        case 207 :
          value->rValue = model->B2biBL;
            return(0);
        case 208 :
          value->rValue = model->B2biBW;
            return(0);
        case 209 :
          value->rValue = model->B2vghigh0;
            return(0);
        case 210 :
          value->rValue = model->B2vghighL;
            return(0);
        case 211 :
          value->rValue = model->B2vghighW;
            return(0);
        case 212 :
          value->rValue = model->B2vglow0;
            return(0);
        case 213 :
          value->rValue = model->B2vglowL;
            return(0);
        case 214 :
          value->rValue = model->B2vglowW;
            return(0);
        case 215 :
          value->rValue = model->B2tox;
            return(0);
        case 216 :
          value->rValue = model->B2temp;
            return(0);
        case 217 :
          value->rValue = model->B2vdd;
            return(0);
        case 218 :
          value->rValue = model->B2vgg;
            return(0);
        case 219 :
          value->rValue = model->B2vbb;
            return(0);
        case 220:
            value->rValue = model->B2gateSourceOverlapCap;
            return(0);
        case 221:
            value->rValue = model->B2gateDrainOverlapCap;
            return(0);
        case 222:
            value->rValue = model->B2gateBulkOverlapCap;
            return(0);
        case 223:
            value->iValue = model->B2channelChargePartitionFlag;
            return(0);
        case 224:
            value->rValue = model->B2sheetResistance;
            return(0);
        case 225:
            value->rValue = model->B2jctSatCurDensity;
            return(0);
        case 226:
            value->rValue = model->B2bulkJctPotential;
            return(0);
        case 227:
            value->rValue = model->B2bulkJctBotGradingCoeff;
            return(0);
        case 228:
            value->rValue = model->B2sidewallJctPotential;
            return(0);
        case 229:
            value->rValue = model->B2bulkJctSideGradingCoeff;
            return(0);
        case 230:
            value->rValue = model->B2unitAreaJctCap;
            return(0);
        case 231:
            value->rValue = model->B2unitLengthSidewallJctCap;
            return(0);
        case 232:
            value->rValue = model->B2defaultWidth;
            return(0);
        case 233:
            value->rValue = model->B2deltaLength;
            return(0);
        case 237:
            value->rValue = model->B2fNexp;
            return(0);
        case 236:
            value->rValue = model->B2fNcoef;
            return(0);
        default:
            return(7);
    }
}

canonical_original_code:
int B2mAsk(struct CKTcircuit *ckt, struct sGENmodel *inst, int which, union uIFvalue *value)
{
    struct sBSIM2model *model = (B2model *)inst;
        switch(which) {
        case 101:
            value->rValue = model->B2vfb0;
            return(0);
        case 102 :
          value->rValue = model->B2vfbL;
            return(0);
        case 103 :
          value->rValue = model->B2vfbW;
            return(0);
        case 104 :
          value->rValue = model->B2phi0;
            return(0);
        case 105 :
          value->rValue = model->B2phiL;
            return(0);
        case 106 :
          value->rValue = model->B2phiW;
            return(0);
        case 107 :
          value->rValue = model->B2k10;
            return(0);
        case 108 :
          value->rValue = model->B2k1L;
            return(0);
        case 109 :
          value->rValue = model->B2k1W;
            return(0);
        case 110 :
          value->rValue = model->B2k20;
            return(0);
        case 111 :
          value->rValue = model->B2k2L;
            return(0);
        case 112 :
          value->rValue = model->B2k2W;
            return(0);
        case 113 :
          value->rValue = model->B2eta00;
            return(0);
        case 114 :
          value->rValue = model->B2eta0L;
            return(0);
        case 115 :
          value->rValue = model->B2eta0W;
            return(0);
        case 116 :
          value->rValue = model->B2etaB0;
            return(0);
        case 117 :
          value->rValue = model->B2etaBL;
            return(0);
        case 118 :
          value->rValue = model->B2etaBW;
            return(0);
        case 119 :
          value->rValue = model->B2deltaL = value->rValue;
            return(0);
        case 120 :
          value->rValue = model->B2deltaW = value->rValue;
            return(0);
        case 121 :
          value->rValue = model->B2mob00;
            return(0);
        case 122 :
          value->rValue = model->B2mob0B0;
            return(0);
        case 123 :
          value->rValue = model->B2mob0BL;
            return(0);
        case 124 :
          value->rValue = model->B2mob0BW;
            return(0);
        case 125 :
          value->rValue = model->B2mobs00;
            return(0);
        case 126 :
          value->rValue = model->B2mobs0L;
            return(0);
        case 127 :
          value->rValue = model->B2mobs0W;
            return(0);
        case 128 :
          value->rValue = model->B2mobsB0;
            return(0);
        case 129 :
          value->rValue = model->B2mobsBL;
            return(0);
        case 130 :
          value->rValue = model->B2mobsBW;
            return(0);
        case 131 :
          value->rValue = model->B2mob200;
            return(0);
        case 132 :
          value->rValue = model->B2mob20L;
            return(0);
        case 133 :
          value->rValue = model->B2mob20W;
            return(0);
        case 134 :
          value->rValue = model->B2mob2B0;
            return(0);
        case 135 :
          value->rValue = model->B2mob2BL;
            return(0);
        case 136 :
          value->rValue = model->B2mob2BW;
            return(0);
        case 137 :
          value->rValue = model->B2mob2G0;
            return(0);
        case 138 :
          value->rValue = model->B2mob2GL;
            return(0);
        case 139 :
          value->rValue = model->B2mob2GW;
            return(0);
        case 140 :
          value->rValue = model->B2mob300;
            return(0);
        case 141 :
          value->rValue = model->B2mob30L;
            return(0);
        case 142 :
          value->rValue = model->B2mob30W;
            return(0);
        case 143 :
          value->rValue = model->B2mob3B0;
            return(0);
        case 144 :
          value->rValue = model->B2mob3BL;
            return(0);
        case 145 :
          value->rValue = model->B2mob3BW;
            return(0);
        case 146 :
          value->rValue = model->B2mob3G0;
            return(0);
        case 147 :
          value->rValue = model->B2mob3GL;
            return(0);
        case 148 :
          value->rValue = model->B2mob3GW;
            return(0);
        case 149 :
          value->rValue = model->B2mob400;
            return(0);
        case 150 :
          value->rValue = model->B2mob40L;
            return(0);
        case 151 :
          value->rValue = model->B2mob40W;
            return(0);
        case 152 :
          value->rValue = model->B2mob4B0;
            return(0);
        case 153 :
          value->rValue = model->B2mob4BL;
            return(0);
        case 154 :
          value->rValue = model->B2mob4BW;
            return(0);
        case 155 :
          value->rValue = model->B2mob4G0;
            return(0);
        case 156 :
          value->rValue = model->B2mob4GL;
            return(0);
        case 157 :
          value->rValue = model->B2mob4GW;
            return(0);
        case 158 :
          value->rValue = model->B2ua00;
            return(0);
        case 159 :
          value->rValue = model->B2ua0L;
            return(0);
        case 160 :
          value->rValue = model->B2ua0W;
            return(0);
        case 161 :
          value->rValue = model->B2uaB0;
            return(0);
        case 162 :
          value->rValue = model->B2uaBL;
            return(0);
        case 163 :
          value->rValue = model->B2uaBW;
            return(0);
        case 164 :
          value->rValue = model->B2ub00;
            return(0);
        case 165 :
          value->rValue = model->B2ub0L;
            return(0);
        case 166 :
          value->rValue = model->B2ub0W;
            return(0);
        case 167 :
          value->rValue = model->B2ubB0;
            return(0);
        case 168 :
          value->rValue = model->B2ubBL;
            return(0);
        case 169 :
          value->rValue = model->B2ubBW;
            return(0);
        case 170 :
          value->rValue = model->B2u100;
            return(0);
        case 171 :
          value->rValue = model->B2u10L;
            return(0);
        case 172 :
          value->rValue = model->B2u10W;
            return(0);
        case 173 :
          value->rValue = model->B2u1B0;
            return(0);
        case 174 :
          value->rValue = model->B2u1BL;
            return(0);
        case 175 :
          value->rValue = model->B2u1BW;
            return(0);
        case 176 :
          value->rValue = model->B2u1D0;
            return(0);
        case 177 :
          value->rValue = model->B2u1DL;
            return(0);
        case 178 :
          value->rValue = model->B2u1DW;
            return(0);
        case 179 :
          value->rValue = model->B2n00;
            return(0);
        case 180 :
          value->rValue = model->B2n0L;
            return(0);
        case 181 :
          value->rValue = model->B2n0W;
            return(0);
        case 182 :
          value->rValue = model->B2nB0;
            return(0);
        case 183 :
          value->rValue = model->B2nBL;
            return(0);
        case 184 :
          value->rValue = model->B2nBW;
            return(0);
        case 185 :
          value->rValue = model->B2nD0;
            return(0);
        case 186 :
          value->rValue = model->B2nDL;
            return(0);
        case 187 :
          value->rValue = model->B2nDW;
            return(0);
        case 188 :
          value->rValue = model->B2vof00;
            return(0);
        case 189 :
          value->rValue = model->B2vof0L;
            return(0);
        case 190 :
          value->rValue = model->B2vof0W;
            return(0);
        case 191 :
          value->rValue = model->B2vofB0;
            return(0);
        case 192 :
          value->rValue = model->B2vofBL;
            return(0);
        case 193 :
          value->rValue = model->B2vofBW;
            return(0);
        case 194 :
          value->rValue = model->B2vofD0;
            return(0);
        case 195 :
          value->rValue = model->B2vofDL;
            return(0);
        case 196 :
          value->rValue = model->B2vofDW;
            return(0);
        case 197 :
          value->rValue = model->B2ai00;
            return(0);
        case 198 :
          value->rValue = model->B2ai0L;
            return(0);
        case 199 :
          value->rValue = model->B2ai0W;
            return(0);
        case 200 :
          value->rValue = model->B2aiB0;
            return(0);
        case 201 :
          value->rValue = model->B2aiBL;
            return(0);
        case 202 :
          value->rValue = model->B2aiBW;
            return(0);
        case 203 :
          value->rValue = model->B2bi00;
            return(0);
        case 204 :
          value->rValue = model->B2bi0L;
            return(0);
        case 205 :
          value->rValue = model->B2bi0W;
            return(0);
        case 206 :
          value->rValue = model->B2biB0;
            return(0);
        case 207 :
          value->rValue = model->B2biBL;
            return(0);
        case 208 :
          value->rValue = model->B2biBW;
            return(0);
        case 209 :
          value->rValue = model->B2vghigh0;
            return(0);
        case 210 :
          value->rValue = model->B2vghighL;
            return(0);
        case 211 :
          value->rValue = model->B2vghighW;
            return(0);
        case 212 :
          value->rValue = model->B2vglow0;
            return(0);
        case 213 :
          value->rValue = model->B2vglowL;
            return(0);
        case 214 :
          value->rValue = model->B2vglowW;
            return(0);
        case 215 :
          value->rValue = model->B2tox;
            return(0);
        case 216 :
          value->rValue = model->B2temp;
            return(0);
        case 217 :
          value->rValue = model->B2vdd;
            return(0);
        case 218 :
          value->rValue = model->B2vgg;
            return(0);
        case 219 :
          value->rValue = model->B2vbb;
            return(0);
        case 220:
            value->rValue = model->B2gateSourceOverlapCap;
            return(0);
        case 221:
            value->rValue = model->B2gateDrainOverlapCap;
            return(0);
        case 222:
            value->rValue = model->B2gateBulkOverlapCap;
            return(0);
        case 223:
            value->iValue = model->B2channelChargePartitionFlag;
            return(0);
        case 224:
            value->rValue = model->B2sheetResistance;
            return(0);
        case 225:
            value->rValue = model->B2jctSatCurDensity;
            return(0);
        case 226:
            value->rValue = model->B2bulkJctPotential;
            return(0);
        case 227:
            value->rValue = model->B2bulkJctBotGradingCoeff;
            return(0);
        case 228:
            value->rValue = model->B2sidewallJctPotential;
            return(0);
        case 229:
            value->rValue = model->B2bulkJctSideGradingCoeff;
            return(0);
        case 230:
            value->rValue = model->B2unitAreaJctCap;
            return(0);
        case 231:
            value->rValue = model->B2unitLengthSidewallJctCap;
            return(0);
        case 232:
            value->rValue = model->B2defaultWidth;
            return(0);
        case 233:
            value->rValue = model->B2deltaLength;
            return(0);
        case 237:
            value->rValue = model->B2fNexp;
            return(0);
        case 236:
            value->rValue = model->B2fNcoef;
            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 sGENmodel *

variable_types: which int

variable_types: struct sBSIM2model { int B2modType; struct sBSIM2model *B2nextModel; struct sBSIM2instance { struct sBSIM2model *B2modPtr; struct sBSIM2instance *B2nextInstance; char *B2name; int B2owner; int B2states; int B2dNode; int B2gNode; int B2sNode; int B2bNode; int B2dNodePrime; int B2sNodePrime; double B2l; double B2w; double B2m; double B2drainArea; double B2sourceArea; double B2drainSquares; double B2sourceSquares; double B2drainPerimeter; double B2sourcePerimeter; double B2sourceConductance; double B2drainConductance; double B2icVBS; double B2icVDS; double B2icVGS; double B2von; double B2vdsat; int B2off; int B2mode; struct bsim2SizeDependParam { double Width; double Length; double B2vfb; double B2phi; double B2k1; double B2k2; double B2eta0; double B2etaB; double B2beta0; double B2beta0B; double B2betas0; double B2betasB; double B2beta20; double B2beta2B; double B2beta2G; double B2beta30; double B2beta3B; double B2beta3G; double B2beta40; double B2beta4B; double B2beta4G; double B2ua0; double B2uaB; double B2ub0; double B2ubB; double B2u10; double B2u1B; double B2u1D; double B2n0; double B2nB; double B2nD; double B2vof0; double B2vofB; double B2vofD; double B2ai0; double B2aiB; double B2bi0; double B2biB; double B2vghigh; double B2vglow; double B2GDoverlapCap; double B2GSoverlapCap; double B2GBoverlapCap; double SqrtPhi; double Phis3; double CoxWL; double One_Third_CoxWL; double Two_Third_CoxWL; double Arg; double B2vt0; struct bsim2SizeDependParam *pNext; } *pParam; unsigned int B2lGiven; unsigned int B2wGiven; unsigned int B2mGiven; unsigned int B2drainAreaGiven; unsigned int B2sourceAreaGiven; unsigned int B2drainSquaresGiven; unsigned int B2sourceSquaresGiven; unsigned int B2drainPerimeterGiven; unsigned int B2sourcePerimeterGiven; unsigned int B2dNodePrimeSet; unsigned int B2sNodePrimeSet; unsigned int B2icVBSGiven; unsigned int B2icVDSGiven; unsigned int B2icVGSGiven; unsigned int B2vonGiven; unsigned int B2vdsatGiven; double *B2DdPtr; double *B2GgPtr; double *B2SsPtr; double *B2BbPtr; double *B2DPdpPtr; double *B2SPspPtr; double *B2DdpPtr; double *B2GbPtr; double *B2GdpPtr; double *B2GspPtr; double *B2SspPtr; double *B2BdpPtr; double *B2BspPtr; double *B2DPspPtr; double *B2DPdPtr; double *B2BgPtr; double *B2DPgPtr; double *B2SPgPtr; double *B2SPsPtr; double *B2DPbPtr; double *B2SPbPtr; double *B2SPdpPtr; double B2nVar[3][5]; } *B2instances; char *B2modName; int B2type; int pad; double B2vfb0; double B2vfbL; double B2vfbW; double B2phi0; double B2phiL; double B2phiW; double B2k10; double B2k1L; double B2k1W; double B2k20; double B2k2L; double B2k2W; double B2eta00; double B2eta0L; double B2eta0W; double B2etaB0; double B2etaBL; double B2etaBW; double B2deltaL; double B2deltaW; double B2mob00; double B2mob0B0; double B2mob0BL; double B2mob0BW; double B2mobs00; double B2mobs0L; double B2mobs0W; double B2mobsB0; double B2mobsBL; double B2mobsBW; double B2mob200; double B2mob20L; double B2mob20W; double B2mob2B0; double B2mob2BL; double B2mob2BW; double B2mob2G0; double B2mob2GL; double B2mob2GW; double B2mob300; double B2mob30L; double B2mob30W; double B2mob3B0; double B2mob3BL; double B2mob3BW; double B2mob3G0; double B2mob3GL; double B2mob3GW; double B2mob400; double B2mob40L; double B2mob40W; double B2mob4B0; double B2mob4BL; double B2mob4BW; double B2mob4G0; double B2mob4GL; double B2mob4GW; double B2ua00; double B2ua0L; double B2ua0W; double B2uaB0; double B2uaBL; double B2uaBW; double B2ub00; double B2ub0L; double B2ub0W; double B2ubB0; double B2ubBL; double B2ubBW; double B2u100; double B2u10L; double B2u10W; double B2u1B0; double B2u1BL; double B2u1BW; double B2u1D0; double B2u1DL; double B2u1DW; double B2n00; double B2n0L; double B2n0W; double B2nB0; double B2nBL; double B2nBW; double B2nD0; double B2nDL; double B2nDW; double B2vof00; double B2vof0L; double B2vof0W; double B2vofB0; double B2vofBL; double B2vofBW; double B2vofD0; double B2vofDL; double B2vofDW; double B2ai00; double B2ai0L; double B2ai0W; double B2aiB0; double B2aiBL; double B2aiBW; double B2bi00; double B2bi0L; double B2bi0W; double B2biB0; double B2biBL; double B2biBW; double B2vghigh0; double B2vghighL; double B2vghighW; double B2vglow0; double B2vglowL; double B2vglowW; double B2tox; double B2Cox; double B2temp; double B2vdd; double B2vdd2; double B2vgg; double B2vgg2; double B2vbb; double B2vbb2; double B2gateSourceOverlapCap; double B2gateDrainOverlapCap; double B2gateBulkOverlapCap; double B2Vtm; double B2sheetResistance; double B2jctSatCurDensity; double B2bulkJctPotential; double B2bulkJctBotGradingCoeff; double B2bulkJctSideGradingCoeff; double B2sidewallJctPotential; double B2unitAreaJctCap; double B2unitLengthSidewallJctCap; double B2defaultWidth; double B2deltaLength; double B2fNcoef; double B2fNexp; struct bsim2SizeDependParam *pSizeDependParamKnot; unsigned int B2channelChargePartitionFlag; unsigned int B2vfb0Given; unsigned int B2vfbLGiven; unsigned int B2vfbWGiven; unsigned int B2phi0Given; unsigned int B2phiLGiven; unsigned int B2phiWGiven; unsigned int B2k10Given; unsigned int B2k1LGiven; unsigned int B2k1WGiven; unsigned int B2k20Given; unsigned int B2k2LGiven; unsigned int B2k2WGiven; unsigned int B2eta00Given; unsigned int B2eta0LGiven; unsigned int B2eta0WGiven; unsigned int B2etaB0Given; unsigned int B2etaBLGiven; unsigned int B2etaBWGiven; unsigned int B2deltaLGiven; unsigned int B2deltaWGiven; unsigned int B2mob00Given; unsigned int B2mob0B0Given; unsigned int B2mob0BLGiven; unsigned int B2mob0BWGiven; unsigned int B2mobs00Given; unsigned int B2mobs0LGiven; unsigned int B2mobs0WGiven; unsigned int B2mobsB0Given; unsigned int B2mobsBLGiven; unsigned int B2mobsBWGiven; unsigned int B2mob200Given; unsigned int B2mob20LGiven; unsigned int B2mob20WGiven; unsigned int B2mob2B0Given; unsigned int B2mob2BLGiven; unsigned int B2mob2BWGiven; unsigned int B2mob2G0Given; unsigned int B2mob2GLGiven; unsigned int B2mob2GWGiven; unsigned int B2mob300Given; unsigned int B2mob30LGiven; unsigned int B2mob30WGiven; unsigned int B2mob3B0Given; unsigned int B2mob3BLGiven; unsigned int B2mob3BWGiven; unsigned int B2mob3G0Given; unsigned int B2mob3GLGiven; unsigned int B2mob3GWGiven; unsigned int B2mob400Given; unsigned int B2mob40LGiven; unsigned int B2mob40WGiven; unsigned int B2mob4B0Given; unsigned int B2mob4BLGiven; unsigned int B2mob4BWGiven; unsigned int B2mob4G0Given; unsigned int B2mob4GLGiven; unsigned int B2mob4GWGiven; unsigned int B2ua00Given; unsigned int B2ua0LGiven; unsigned int B2ua0WGiven; unsigned int B2uaB0Given; unsigned int B2uaBLGiven; unsigned int B2uaBWGiven; unsigned int B2ub00Given; unsigned int B2ub0LGiven; unsigned int B2ub0WGiven; unsigned int B2ubB0Given; unsigned int B2ubBLGiven; unsigned int B2ubBWGiven; unsigned int B2u100Given; unsigned int B2u10LGiven; unsigned int B2u10WGiven; unsigned int B2u1B0Given; unsigned int B2u1BLGiven; unsigned int B2u1BWGiven; unsigned int B2u1D0Given; unsigned int B2u1DLGiven; unsigned int B2u1DWGiven; unsigned int B2n00Given; unsigned int B2n0LGiven; unsigned int B2n0WGiven; unsigned int B2nB0Given; unsigned int B2nBLGiven; unsigned int B2nBWGiven; unsigned int B2nD0Given; unsigned int B2nDLGiven; unsigned int B2nDWGiven; unsigned int B2vof00Given; unsigned int B2vof0LGiven; unsigned int B2vof0WGiven; unsigned int B2vofB0Given; unsigned int B2vofBLGiven; unsigned int B2vofBWGiven; unsigned int B2vofD0Given; unsigned int B2vofDLGiven; unsigned int B2vofDWGiven; unsigned int B2ai00Given; unsigned int B2ai0LGiven; unsigned int B2ai0WGiven; unsigned int B2aiB0Given; unsigned int B2aiBLGiven; unsigned int B2aiBWGiven; unsigned int B2bi00Given; unsigned int B2bi0LGiven; unsigned int B2bi0WGiven; unsigned int B2biB0Given; unsigned int B2biBLGiven; unsigned int B2biBWGiven; unsigned int B2vghigh0Given; unsigned int B2vghighLGiven; unsigned int B2vghighWGiven; unsigned int B2vglow0Given; unsigned int B2vglowLGiven; unsigned int B2vglowWGiven; unsigned int B2toxGiven; unsigned int B2tempGiven; unsigned int B2vddGiven; unsigned int B2vggGiven; unsigned int B2vbbGiven; unsigned int B2gateSourceOverlapCapGiven; unsigned int B2gateDrainOverlapCapGiven; unsigned int B2gateBulkOverlapCapGiven; unsigned int B2channelChargePartitionFlagGiven; unsigned int B2sheetResistanceGiven; unsigned int B2jctSatCurDensityGiven; unsigned int B2bulkJctPotentialGiven; unsigned int B2bulkJctBotGradingCoeffGiven; unsigned int B2sidewallJctPotentialGiven; unsigned int B2bulkJctSideGradingCoeffGiven; unsigned int B2unitAreaJctCapGiven; unsigned int B2unitLengthSidewallJctCapGiven; unsigned int B2defaultWidthGiven; unsigned int B2deltaLengthGiven; unsigned int B2fNcoefGiven; unsigned int B2fNexpGiven; unsigned int B2typeGiven; } *

user_defined_types: struct sBSIM2model { int B2modType; struct sBSIM2model *B2nextModel; struct sBSIM2instance *B2instances; char *B2modName; int B2type; int pad; double B2vfb0; double B2vfbL; double B2vfbW; double B2phi0; double B2phiL; double B2phiW; double B2k10; double B2k1L; double B2k1W; double B2k20; double B2k2L; double B2k2W; double B2eta00; double B2eta0L; double B2eta0W; double B2etaB0; double B2etaBL; double B2etaBW; double B2deltaL; double B2deltaW; double B2mob00; double B2mob0B0; double B2mob0BL; double B2mob0BW; double B2mobs00; double B2mobs0L; double B2mobs0W; double B2mobsB0; double B2mobsBL; double B2mobsBW; double B2mob200; double B2mob20L; double B2mob20W; double B2mob2B0; double B2mob2BL; double B2mob2BW; double B2mob2G0; double B2mob2GL; double B2mob2GW; double B2mob300; double B2mob30L; double B2mob30W; double B2mob3B0; double B2mob3BL; double B2mob3BW; double B2mob3G0; double B2mob3GL; double B2mob3GW; double B2mob400; double B2mob40L; double B2mob40W; double B2mob4B0; double B2mob4BL; double B2mob4BW; double B2mob4G0; double B2mob4GL; double B2mob4GW; double B2ua00; double B2ua0L; double B2ua0W; double B2uaB0; double B2uaBL; double B2uaBW; double B2ub00; double B2ub0L; double B2ub0W; double B2ubB0; double B2ubBL; double B2ubBW; double B2u100; double B2u10L; double B2u10W; double B2u1B0; double B2u1BL; double B2u1BW; double B2u1D0; double B2u1DL; double B2u1DW; double B2n00; double B2n0L; double B2n0W; double B2nB0; double B2nBL; double B2nBW; double B2nD0; double B2nDL; double B2nDW; double B2vof00; double B2vof0L; double B2vof0W; double B2vofB0; double B2vofBL; double B2vofBW; double B2vofD0; double B2vofDL; double B2vofDW; double B2ai00; double B2ai0L; double B2ai0W; double B2aiB0; double B2aiBL; double B2aiBW; double B2bi00; double B2bi0L; double B2bi0W; double B2biB0; double B2biBL; double B2biBW; double B2vghigh0; double B2vghighL; double B2vghighW; double B2vglow0; double B2vglowL; double B2vglowW; double B2tox; double B2Cox; double B2temp; double B2vdd; double B2vdd2; double B2vgg; double B2vgg2; double B2vbb; double B2vbb2; double B2gateSourceOverlapCap; double B2gateDrainOverlapCap; double B2gateBulkOverlapCap; double B2Vtm; double B2sheetResistance; double B2jctSatCurDensity; double B2bulkJctPotential; double B2bulkJctBotGradingCoeff; double B2bulkJctSideGradingCoeff; double B2sidewallJctPotential; double B2unitAreaJctCap; double B2unitLengthSidewallJctCap; double B2defaultWidth; double B2deltaLength; double B2fNcoef; double B2fNexp; struct bsim2SizeDependParam *pSizeDependParamKnot; unsigned int B2channelChargePartitionFlag; unsigned int B2vfb0Given; unsigned int B2vfbLGiven; unsigned int B2vfbWGiven; unsigned int B2phi0Given; unsigned int B2phiLGiven; unsigned int B2phiWGiven; unsigned int B2k10Given; unsigned int B2k1LGiven; unsigned int B2k1WGiven; unsigned int B2k20Given; unsigned int B2k2LGiven; unsigned int B2k2WGiven; unsigned int B2eta00Given; unsigned int B2eta0LGiven; unsigned int B2eta0WGiven; unsigned int B2etaB0Given; unsigned int B2etaBLGiven; unsigned int B2etaBWGiven; unsigned int B2deltaLGiven; unsigned int B2deltaWGiven; unsigned int B2mob00Given; unsigned int B2mob0B0Given; unsigned int B2mob0BLGiven; unsigned int B2mob0BWGiven; unsigned int B2mobs00Given; unsigned int B2mobs0LGiven; unsigned int B2mobs0WGiven; unsigned int B2mobsB0Given; unsigned int B2mobsBLGiven; unsigned int B2mobsBWGiven; unsigned int B2mob200Given; unsigned int B2mob20LGiven; unsigned int B2mob20WGiven; unsigned int B2mob2B0Given; unsigned int B2mob2BLGiven; unsigned int B2mob2BWGiven; unsigned int B2mob2G0Given; unsigned int B2mob2GLGiven; unsigned int B2mob2GWGiven; unsigned int B2mob300Given; unsigned int B2mob30LGiven; unsigned int B2mob30WGiven; unsigned int B2mob3B0Given; unsigned int B2mob3BLGiven; unsigned int B2mob3BWGiven; unsigned int B2mob3G0Given; unsigned int B2mob3GLGiven; unsigned int B2mob3GWGiven; unsigned int B2mob400Given; unsigned int B2mob40LGiven; unsigned int B2mob40WGiven; unsigned int B2mob4B0Given; unsigned int B2mob4BLGiven; unsigned int B2mob4BWGiven; unsigned int B2mob4G0Given; unsigned int B2mob4GLGiven; unsigned int B2mob4GWGiven; unsigned int B2ua00Given; unsigned int B2ua0LGiven; unsigned int B2ua0WGiven; unsigned int B2uaB0Given; unsigned int B2uaBLGiven; unsigned int B2uaBWGiven; unsigned int B2ub00Given; unsigned int B2ub0LGiven; unsigned int B2ub0WGiven; unsigned int B2ubB0Given; unsigned int B2ubBLGiven; unsigned int B2ubBWGiven; unsigned int B2u100Given; unsigned int B2u10LGiven; unsigned int B2u10WGiven; unsigned int B2u1B0Given; unsigned int B2u1BLGiven; unsigned int B2u1BWGiven; unsigned int B2u1D0Given; unsigned int B2u1DLGiven; unsigned int B2u1DWGiven; unsigned int B2n00Given; unsigned int B2n0LGiven; unsigned int B2n0WGiven; unsigned int B2nB0Given; unsigned int B2nBLGiven; unsigned int B2nBWGiven; unsigned int B2nD0Given; unsigned int B2nDLGiven; unsigned int B2nDWGiven; unsigned int B2vof00Given; unsigned int B2vof0LGiven; unsigned int B2vof0WGiven; unsigned int B2vofB0Given; unsigned int B2vofBLGiven; unsigned int B2vofBWGiven; unsigned int B2vofD0Given; unsigned int B2vofDLGiven; unsigned int B2vofDWGiven; unsigned int B2ai00Given; unsigned int B2ai0LGiven; unsigned int B2ai0WGiven; unsigned int B2aiB0Given; unsigned int B2aiBLGiven; unsigned int B2aiBWGiven; unsigned int B2bi00Given; unsigned int B2bi0LGiven; unsigned int B2bi0WGiven; unsigned int B2biB0Given; unsigned int B2biBLGiven; unsigned int B2biBWGiven; unsigned int B2vghigh0Given; unsigned int B2vghighLGiven; unsigned int B2vghighWGiven; unsigned int B2vglow0Given; unsigned int B2vglowLGiven; unsigned int B2vglowWGiven; unsigned int B2toxGiven; unsigned int B2tempGiven; unsigned int B2vddGiven; unsigned int B2vggGiven; unsigned int B2vbbGiven; unsigned int B2gateSourceOverlapCapGiven; unsigned int B2gateDrainOverlapCapGiven; unsigned int B2gateBulkOverlapCapGiven; unsigned int B2channelChargePartitionFlagGiven; unsigned int B2sheetResistanceGiven; unsigned int B2jctSatCurDensityGiven; unsigned int B2bulkJctPotentialGiven; unsigned int B2bulkJctBotGradingCoeffGiven; unsigned int B2sidewallJctPotentialGiven; unsigned int B2bulkJctSideGradingCoeffGiven; unsigned int B2unitAreaJctCapGiven; unsigned int B2unitLengthSidewallJctCapGiven; unsigned int B2defaultWidthGiven; unsigned int B2deltaLengthGiven; unsigned int B2fNcoefGiven; unsigned int B2fNexpGiven; unsigned int B2typeGiven; }

user_defined_types: struct sBSIM2instance { struct sBSIM2model *B2modPtr; struct sBSIM2instance *B2nextInstance; char *B2name; int B2owner; int B2states; int B2dNode; int B2gNode; int B2sNode; int B2bNode; int B2dNodePrime; int B2sNodePrime; double B2l; double B2w; double B2m; double B2drainArea; double B2sourceArea; double B2drainSquares; double B2sourceSquares; double B2drainPerimeter; double B2sourcePerimeter; double B2sourceConductance; double B2drainConductance; double B2icVBS; double B2icVDS; double B2icVGS; double B2von; double B2vdsat; int B2off; int B2mode; struct bsim2SizeDependParam *pParam; unsigned int B2lGiven; unsigned int B2wGiven; unsigned int B2mGiven; unsigned int B2drainAreaGiven; unsigned int B2sourceAreaGiven; unsigned int B2drainSquaresGiven; unsigned int B2sourceSquaresGiven; unsigned int B2drainPerimeterGiven; unsigned int B2sourcePerimeterGiven; unsigned int B2dNodePrimeSet; unsigned int B2sNodePrimeSet; unsigned int B2icVBSGiven; unsigned int B2icVDSGiven; unsigned int B2icVGSGiven; unsigned int B2vonGiven; unsigned int B2vdsatGiven; double *B2DdPtr; double *B2GgPtr; double *B2SsPtr; double *B2BbPtr; double *B2DPdpPtr; double *B2SPspPtr; double *B2DdpPtr; double *B2GbPtr; double *B2GdpPtr; double *B2GspPtr; double *B2SspPtr; double *B2BdpPtr; double *B2BspPtr; double *B2DPspPtr; double *B2DPdPtr; double *B2BgPtr; double *B2DPgPtr; double *B2SPgPtr; double *B2SPsPtr; double *B2DPbPtr; double *B2SPbPtr; double *B2SPdpPtr; double B2nVar[3][5]; }


repo: gserdyuk/gnucap-a

original_code:
int
B1getic(GENmodel *inModel, CKTcircuit *ckt)
{
    B1model *model = (B1model*)inModel;
    B1instance *here;
    for( ; model ; model = model->B1nextModel) {
        for(here = model->B1instances; here ; here = here->B1nextInstance) {
     if (here->B1owner != ARCHme) continue;
            if(!here->B1icVBSGiven) {
                here->B1icVBS =
                        *(ckt->CKTrhs + here->B1bNode) -
                        *(ckt->CKTrhs + here->B1sNode);
            }
            if(!here->B1icVDSGiven) {
                here->B1icVDS =
                        *(ckt->CKTrhs + here->B1dNode) -
                        *(ckt->CKTrhs + here->B1sNode);
            }
            if(!here->B1icVGSGiven) {
                here->B1icVGS =
                        *(ckt->CKTrhs + here->B1gNode) -
                        *(ckt->CKTrhs + here->B1sNode);
            }
        }
    }
    return(0);
}

canonical_original_code:
int B1getic(struct sGENmodel *inModel, struct CKTcircuit *ckt)
{
    struct sBSIM1model *model = (B1model*)inModel;
    struct sBSIM1instance *here;
    for( ; model ; model = model->B1nextModel) {
        for(here = model->B1instances; here ; here = here->B1nextInstance) {
     if (here->B1owner != ARCHme) continue;
            if(!here->B1icVBSGiven) {
                here->B1icVBS =
                        *(ckt->CKTrhs + here->B1bNode) -
                        *(ckt->CKTrhs + here->B1sNode);
            }
            if(!here->B1icVDSGiven) {
                here->B1icVDS =
                        *(ckt->CKTrhs + here->B1dNode) -
                        *(ckt->CKTrhs + here->B1sNode);
            }
            if(!here->B1icVGSGiven) {
                here->B1icVGS =
                        *(ckt->CKTrhs + here->B1gNode) -
                        *(ckt->CKTrhs + here->B1sNode);
            }
        }
    }
    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 sBSIM1model { int B1modType; struct sBSIM1model *B1nextModel; 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]; } *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; } *

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]; } *

return_type: int

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; }


LTRAmAsk

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

switch ( a3 )
{
case 101:
*a4 = *(_QWORD *)(a2 + 120);
result = 0LL;
break;
case 102:
*a4 = *(_QWORD *)(a2 + 128);
result = 0LL;
break;
case 103:
*a4 = *(_QWORD *)(a2 + 112);
result = 0LL;
break;
case 104:
*a4 = *(_QWORD *)(a2 + 136);
result = 0LL;
break;
case 105:
*a4 = *(_QWORD *)(a2 + 144);
result = 0LL;
break;
case 106:
*a4 = *(_QWORD *)(a2 + 360);
result = 0LL;
break;
case 107:
*a4 = *(_QWORD *)(a2 + 352);
result = 0LL;
break;
case 108:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 332) == 108;
result = 0LL;
break;
case 109:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 332) == 109;
result = 0LL;
break;
case 110:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 332) == 110;
result = 0LL;
break;
case 111:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 340) == 111;
result = 0LL;
break;
case 112:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 340) == 112;
result = 0LL;
break;
case 113:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 336) == 113;
result = 0LL;
break;
case 114:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 336) == 114;
result = 0LL;
break;
case 115:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 336) == 115;
result = 0LL;
break;
case 116:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 308);
result = 0LL;
break;
case 117:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 312);
result = 0LL;
break;
case 118:
*a4 = *(_QWORD *)(a2 + 272);
result = 0LL;
break;
case 119:
*a4 = *(_QWORD *)(a2 + 288);
result = 0LL;
break;
case 200:
*a4 = *(_QWORD *)(a2 + 160);
result = 0LL;
break;
case 201:
*a4 = *(_QWORD *)(a2 + 152);
result = 0LL;
break;
default:
result = 7LL;
break;
}
return result;
}

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

switch ( a3 )
{
case 101:
*a4 = *(_QWORD *)(a2 + 120);
result = 0LL;
break;
case 102:
*a4 = *(_QWORD *)(a2 + 128);
result = 0LL;
break;
case 103:
*a4 = *(_QWORD *)(a2 + 112);
result = 0LL;
break;
case 104:
*a4 = *(_QWORD *)(a2 + 136);
result = 0LL;
break;
case 105:
*a4 = *(_QWORD *)(a2 + 144);
result = 0LL;
break;
case 106:
*a4 = *(_QWORD *)(a2 + 360);
result = 0LL;
break;
case 107:
*a4 = *(_QWORD *)(a2 + 352);
result = 0LL;
break;
case 108:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 332) == 108;
result = 0LL;
break;
case 109:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 332) == 109;
result = 0LL;
break;
case 110:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 332) == 110;
result = 0LL;
break;
case 111:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 340) == 111;
result = 0LL;
break;
case 112:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 340) == 112;
result = 0LL;
break;
case 113:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 336) == 113;
result = 0LL;
break;
case 114:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 336) == 114;
result = 0LL;
break;
case 115:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 336) == 115;
result = 0LL;
break;
case 116:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 308);
result = 0LL;
break;
case 117:
*(_DWORD *)a4 = *(_DWORD *)(a2 + 312);
result = 0LL;
break;
case 118:
*a4 = *(_QWORD *)(a2 + 272);
result = 0LL;
break;
case 119:
*a4 = *(_QWORD *)(a2 + 288);
result = 0LL;
break;
case 200:
*a4 = *(_QWORD *)(a2 + 160);
result = 0LL;
break;
case 201:
*a4 = *(_QWORD *)(a2 + 152);
result = 0LL;
break;
default:
result = 7LL;
break;
}
return result;
}

original_code:
int
LTRAmAsk(CKTcircuit *ckt, GENmodel *inModel, int param, IFvalue *value)
{
  LTRAmodel *mods = (LTRAmodel *) inModel;
  switch (param) {
  case 0:
    value->iValue = 1;
    break;
  case 11:
    value->rValue = mods->LTRAreltol;
    break;
  case 12:
    value->rValue = mods->LTRAabstol;
    break;
  case 42:
    value->rValue = mods->LTRAstLineReltol;
    break;
  case 43:
    value->rValue = mods->LTRAstLineAbstol;
    break;
  case 44:
    value->rValue = mods->LTRAchopReltol;
    break;
  case 45:
    value->rValue = mods->LTRAchopAbstol;
    break;
  case 46:
    value->iValue = mods->LTRAtruncNR;
    break;
  case 47:
    value->iValue = mods->LTRAtruncDontCut;
    break;
  case 1:
    value->rValue = mods->LTRAresist;
    break;
  case 2:
    value->rValue = mods->LTRAinduct;
    break;
  case 3:
    value->rValue = mods->LTRAconduct;
    break;
  case 4:
    value->rValue = mods->LTRAcapac;
    break;
  case 5:
    value->rValue = mods->LTRAlength;
    break;
  case 22:
    value->rValue = mods->LTRAnl;
    break;
  case 23:
    value->rValue = mods->LTRAf;
    break;
  case 26:
    value->iValue = mods->LTRAlteConType;
    break;
  case 27:
    value->iValue = mods->LTRAlteConType;
    break;
  case 28:
    value->iValue = mods->LTRAlteConType;
    break;
  case 29:
    value->iValue = mods->LTRAprintFlag;
    break;
  case 30:
    mods->LTRAprintFlag = 0;
    break;
  case 32:
    value->iValue = mods->LTRAstepLimit;
    break;
  case 33:
    value->iValue = mods->LTRAstepLimit;
    break;
  case 34:
    value->iValue = mods->LTRAhowToInterp;
    break;
  case 35:
    value->iValue = mods->LTRAhowToInterp;
    break;
  case 36:
    value->iValue = mods->LTRAhowToInterp;
    break;
  default:
    return (7);
  }
  return (0);
}

canonical_original_code:
int LTRAmAsk(struct CKTcircuit *ckt, struct sGENmodel *inModel, int param, union uIFvalue *value)
{
  struct sLTRAmodel *mods = (LTRAmodel *) inModel;
  switch (param) {
  case 0:
    value->iValue = 1;
    break;
  case 11:
    value->rValue = mods->LTRAreltol;
    break;
  case 12:
    value->rValue = mods->LTRAabstol;
    break;
  case 42:
    value->rValue = mods->LTRAstLineReltol;
    break;
  case 43:
    value->rValue = mods->LTRAstLineAbstol;
    break;
  case 44:
    value->rValue = mods->LTRAchopReltol;
    break;
  case 45:
    value->rValue = mods->LTRAchopAbstol;
    break;
  case 46:
    value->iValue = mods->LTRAtruncNR;
    break;
  case 47:
    value->iValue = mods->LTRAtruncDontCut;
    break;
  case 1:
    value->rValue = mods->LTRAresist;
    break;
  case 2:
    value->rValue = mods->LTRAinduct;
    break;
  case 3:
    value->rValue = mods->LTRAconduct;
    break;
  case 4:
    value->rValue = mods->LTRAcapac;
    break;
  case 5:
    value->rValue = mods->LTRAlength;
    break;
  case 22:
    value->rValue = mods->LTRAnl;
    break;
  case 23:
    value->rValue = mods->LTRAf;
    break;
  case 26:
    value->iValue = mods->LTRAlteConType;
    break;
  case 27:
    value->iValue = mods->LTRAlteConType;
    break;
  case 28:
    value->iValue = mods->LTRAlteConType;
    break;
  case 29:
    value->iValue = mods->LTRAprintFlag;
    break;
  case 30:
    mods->LTRAprintFlag = 0;
    break;
  case 32:
    value->iValue = mods->LTRAstepLimit;
    break;
  case 33:
    value->iValue = mods->LTRAstepLimit;
    break;
  case 34:
    value->iValue = mods->LTRAhowToInterp;
    break;
  case 35:
    value->iValue = mods->LTRAhowToInterp;
    break;
  case 36:
    value->iValue = mods->LTRAhowToInterp;
    break;
  default:
    return (7);
  }
  return (0);
}

variable_types:
inModel
struct sGENmodel *

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 sLTRAmodel { int LTRAmodType; struct sLTRAmodel *LTRAnextModel; struct sLTRAinstance { struct sLTRAmodel *LTRAmodPtr; struct sLTRAinstance *LTRAnextInstance; char *LTRAname; int LTRAowner; int LTRAstate; int LTRAposNode1; int LTRAnegNode1; int LTRAposNode2; int LTRAnegNode2; int LTRAbrEq1; int LTRAbrEq2; double LTRAinput1; double LTRAinput2; double LTRAinitVolt1; double LTRAinitCur1; double LTRAinitVolt2; double LTRAinitCur2; double *LTRAv1; double *LTRAi1; double *LTRAv2; double *LTRAi2; int LTRAinstListSize; double *LTRAibr1Ibr1Ptr; double *LTRAibr1Ibr2Ptr; double *LTRAibr1Pos1Ptr; double *LTRAibr1Neg1Ptr; double *LTRAibr1Pos2Ptr; double *LTRAibr1Neg2Ptr; double *LTRAibr2Ibr1Ptr; double *LTRAibr2Ibr2Ptr; double *LTRAibr2Pos1Ptr; double *LTRAibr2Neg1Ptr; double *LTRAibr2Pos2Ptr; double *LTRAibr2Neg2Ptr; double *LTRAneg1Ibr1Ptr; double *LTRAneg2Ibr2Ptr; double *LTRApos1Ibr1Ptr; double *LTRApos2Ibr2Ptr; double *LTRApos1Pos1Ptr; double *LTRAneg1Neg1Ptr; double *LTRApos2Pos2Ptr; double *LTRAneg2Neg2Ptr; unsigned int LTRAicV1Given; unsigned int LTRAicC1Given; unsigned int LTRAicV2Given; unsigned int LTRAicC2Given; } *LTRAinstances; char *LTRAmodName; double LTRAh1dashFirstVal; double LTRAh2FirstVal; double LTRAh3dashFirstVal; double LTRAh1dashFirstCoeff; double LTRAh2FirstCoeff; double LTRAh3dashFirstCoeff; double *LTRAh1dashCoeffs; double *LTRAh2Coeffs; double *LTRAh3dashCoeffs; int LTRAmodelListSize; double LTRAconduct; double LTRAresist; double LTRAinduct; double LTRAcapac; double LTRAlength; double LTRAtd; double LTRAimped; double LTRAadmit; double LTRAalpha; double LTRAbeta; double LTRAattenuation; double LTRAcByR; double LTRArclsqr; double LTRAintH1dash; double LTRAintH2; double LTRAintH3dash; double LTRAnl; double LTRAf; double LTRAcoshlrootGR; double LTRArRsLrGRorG; double LTRArGsLrGRorR; int LTRAauxIndex; double LTRAstLineReltol; double LTRAchopReltol; double LTRAstLineAbstol; double LTRAchopAbstol; unsigned int LTRAreltolGiven; unsigned int LTRAabstolGiven; unsigned int LTRAtruncNR; unsigned int LTRAtruncDontCut; double LTRAmaxSafeStep; unsigned int LTRAresistGiven; unsigned int LTRAconductGiven; unsigned int LTRAinductGiven; unsigned int LTRAcapacGiven; unsigned int LTRAlengthGiven; unsigned int LTRAnlGiven; int LTRAlteConType; int LTRAhowToInterp; unsigned int LTRAprintFlag; int LTRAstepLimit; unsigned int LTRAfGiven; double LTRAabstol; double LTRAreltol; int LTRAspecialCase; } *

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 sLTRAmodel { int LTRAmodType; struct sLTRAmodel *LTRAnextModel; struct sLTRAinstance *LTRAinstances; char *LTRAmodName; double LTRAh1dashFirstVal; double LTRAh2FirstVal; double LTRAh3dashFirstVal; double LTRAh1dashFirstCoeff; double LTRAh2FirstCoeff; double LTRAh3dashFirstCoeff; double *LTRAh1dashCoeffs; double *LTRAh2Coeffs; double *LTRAh3dashCoeffs; int LTRAmodelListSize; double LTRAconduct; double LTRAresist; double LTRAinduct; double LTRAcapac; double LTRAlength; double LTRAtd; double LTRAimped; double LTRAadmit; double LTRAalpha; double LTRAbeta; double LTRAattenuation; double LTRAcByR; double LTRArclsqr; double LTRAintH1dash; double LTRAintH2; double LTRAintH3dash; double LTRAnl; double LTRAf; double LTRAcoshlrootGR; double LTRArRsLrGRorG; double LTRArGsLrGRorR; int LTRAauxIndex; double LTRAstLineReltol; double LTRAchopReltol; double LTRAstLineAbstol; double LTRAchopAbstol; unsigned int LTRAreltolGiven; unsigned int LTRAabstolGiven; unsigned int LTRAtruncNR; unsigned int LTRAtruncDontCut; double LTRAmaxSafeStep; unsigned int LTRAresistGiven; unsigned int LTRAconductGiven; unsigned int LTRAinductGiven; unsigned int LTRAcapacGiven; unsigned int LTRAlengthGiven; unsigned int LTRAnlGiven; int LTRAlteConType; int LTRAhowToInterp; unsigned int LTRAprintFlag; int LTRAstepLimit; unsigned int LTRAfGiven; double LTRAabstol; double LTRAreltol; int LTRAspecialCase; }

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; }

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; }