Sfoglia il codice sorgente

Branch prediction test programs

tevador 8 anni fa
parent
commit
8a81aa6453

+ 2839 - 0
tests/branch_prediction/branch_always.c

@@ -0,0 +1,2839 @@
+#include "stdint.h"
+#include "stdlib.h"
+#include "stdio.h"
+#define PROF_USER_EVENTS_ONLY
+#define PROF_EVENT_LIST \
+  PROF_EVENT_HW(BRANCH_INSTRUCTIONS) \
+  PROF_EVENT_HW(BRANCH_MISSES) \
+  PROF_EVENT_SW(TASK_CLOCK)
+#include "prof.h"
+int main(int argc, char** argv) {
+	uint64_t ic = argc > 1 ? atoi(argv[1]) : 65536;
+	uint64_t ss = 0;
+	uint64_t branches = 0;
+	uint32_t state = 0;
+	uint32_t state2 = 123456789;
+	void* stack[65536];
+	PROF_START();
+	i_0:
+		if(ic-- == 0) goto end;
+	i_1:
+		if(ic-- == 0) goto end;
+	i_2:
+		if(ic-- == 0) goto end;
+	i_3:
+		if(ic-- == 0) goto end;
+	i_4:
+		if(ic-- == 0) goto end;
+	i_5:
+		if(ic-- == 0) goto end;
+	i_6:
+		if(ic-- == 0) goto end;
+	i_7:
+		if(ic-- == 0) goto end;
+	i_8:
+		if(ic-- == 0) goto end;
+	i_9:
+		if(ic-- == 0) goto end;
+	i_10:
+		if(ic-- == 0) goto end;
+	i_11:
+		if(ic-- == 0) goto end;
+	i_12:
+		if(ic-- == 0) goto end;
+	i_13:
+		if(ic-- == 0) goto end;
+	i_14:
+		if(ic-- == 0) goto end;
+	i_15:
+		if(ic-- == 0) goto end;
+	i_16:
+		if(ic-- == 0) goto end;
+	i_17:
+		if(ic-- == 0) goto end;
+	i_18:
+		if(ic-- == 0) goto end;
+	i_19:
+		if(ic-- == 0) goto end;
+	i_20:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_21;
+			stack[ss++] = ret;
+			goto i_261;
+		}
+	i_21:
+		if(ic-- == 0) goto end;
+	i_22:
+		if(ic-- == 0) goto end;
+	i_23:
+		if(ic-- == 0) goto end;
+	i_24:
+		if(ic-- == 0) goto end;
+	i_25:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_26;
+			stack[ss++] = ret;
+			goto i_281;
+		}
+	i_26:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_27;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_27:
+		if(ic-- == 0) goto end;
+	i_28:
+		if(ic-- == 0) goto end;
+	i_29:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_30;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_30:
+		if(ic-- == 0) goto end;
+	i_31:
+		if(ic-- == 0) goto end;
+	i_32:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_33;
+			stack[ss++] = ret;
+			goto i_136;
+		}
+	i_33:
+		if(ic-- == 0) goto end;
+	i_34:
+		if(ic-- == 0) goto end;
+	i_35:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_36;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_36:
+		if(ic-- == 0) goto end;
+	i_37:
+		if(ic-- == 0) goto end;
+	i_38:
+		if(ic-- == 0) goto end;
+	i_39:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_40;
+			stack[ss++] = ret;
+			goto i_232;
+		}
+	i_40:
+		if(ic-- == 0) goto end;
+	i_41:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_42;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_42:
+		if(ic-- == 0) goto end;
+	i_43:
+		if(ic-- == 0) goto end;
+	i_44:
+		if(ic-- == 0) goto end;
+	i_45:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_46;
+			stack[ss++] = ret;
+			goto i_171;
+		}
+	i_46:
+		if(ic-- == 0) goto end;
+	i_47:
+		if(ic-- == 0) goto end;
+	i_48:
+		if(ic-- == 0) goto end;
+	i_49:
+		if(ic-- == 0) goto end;
+	i_50:
+		if(ic-- == 0) goto end;
+	i_51:
+		if(ic-- == 0) goto end;
+	i_52:
+		if(ic-- == 0) goto end;
+	i_53:
+		if(ic-- == 0) goto end;
+	i_54:
+		if(ic-- == 0) goto end;
+	i_55:
+		if(ic-- == 0) goto end;
+	i_56:
+		if(ic-- == 0) goto end;
+	i_57:
+		if(ic-- == 0) goto end;
+	i_58:
+		if(ic-- == 0) goto end;
+	i_59:
+		if(ic-- == 0) goto end;
+	i_60:
+		if(ic-- == 0) goto end;
+	i_61:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_62;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_62:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_63;
+			stack[ss++] = ret;
+			goto i_231;
+		}
+	i_63:
+		if(ic-- == 0) goto end;
+	i_64:
+		if(ic-- == 0) goto end;
+	i_65:
+		if(ic-- == 0) goto end;
+	i_66:
+		if(ic-- == 0) goto end;
+	i_67:
+		if(ic-- == 0) goto end;
+	i_68:
+		if(ic-- == 0) goto end;
+	i_69:
+		if(ic-- == 0) goto end;
+	i_70:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_71;
+			stack[ss++] = ret;
+			goto i_135;
+		}
+	i_71:
+		if(ic-- == 0) goto end;
+	i_72:
+		if(ic-- == 0) goto end;
+	i_73:
+		if(ic-- == 0) goto end;
+	i_74:
+		if(ic-- == 0) goto end;
+	i_75:
+		if(ic-- == 0) goto end;
+	i_76:
+		if(ic-- == 0) goto end;
+	i_77:
+		if(ic-- == 0) goto end;
+	i_78:
+		if(ic-- == 0) goto end;
+	i_79:
+		if(ic-- == 0) goto end;
+	i_80:
+		if(ic-- == 0) goto end;
+	i_81:
+		if(ic-- == 0) goto end;
+	i_82:
+		if(ic-- == 0) goto end;
+	i_83:
+		if(ic-- == 0) goto end;
+	i_84:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_85;
+			stack[ss++] = ret;
+			goto i_221;
+		}
+	i_85:
+		if(ic-- == 0) goto end;
+	i_86:
+		if(ic-- == 0) goto end;
+	i_87:
+		if(ic-- == 0) goto end;
+	i_88:
+		if(ic-- == 0) goto end;
+	i_89:
+		if(ic-- == 0) goto end;
+	i_90:
+		if(ic-- == 0) goto end;
+	i_91:
+		if(ic-- == 0) goto end;
+	i_92:
+		if(ic-- == 0) goto end;
+	i_93:
+		if(ic-- == 0) goto end;
+	i_94:
+		if(ic-- == 0) goto end;
+	i_95:
+		if(ic-- == 0) goto end;
+	i_96:
+		if(ic-- == 0) goto end;
+	i_97:
+		if(ic-- == 0) goto end;
+	i_98:
+		if(ic-- == 0) goto end;
+	i_99:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_100;
+			stack[ss++] = ret;
+			goto i_103;
+		}
+	i_100:
+		if(ic-- == 0) goto end;
+	i_101:
+		if(ic-- == 0) goto end;
+	i_102:
+		if(ic-- == 0) goto end;
+	i_103:
+		if(ic-- == 0) goto end;
+	i_104:
+		if(ic-- == 0) goto end;
+	i_105:
+		if(ic-- == 0) goto end;
+	i_106:
+		if(ic-- == 0) goto end;
+	i_107:
+		if(ic-- == 0) goto end;
+	i_108:
+		if(ic-- == 0) goto end;
+	i_109:
+		if(ic-- == 0) goto end;
+	i_110:
+		if(ic-- == 0) goto end;
+	i_111:
+		if(ic-- == 0) goto end;
+	i_112:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_113;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_113:
+		if(ic-- == 0) goto end;
+	i_114:
+		if(ic-- == 0) goto end;
+	i_115:
+		if(ic-- == 0) goto end;
+	i_116:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_117;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_117:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_118;
+			stack[ss++] = ret;
+			goto i_260;
+		}
+	i_118:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_119;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_119:
+		if(ic-- == 0) goto end;
+	i_120:
+		if(ic-- == 0) goto end;
+	i_121:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_122;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_122:
+		if(ic-- == 0) goto end;
+	i_123:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_124;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_124:
+		if(ic-- == 0) goto end;
+	i_125:
+		if(ic-- == 0) goto end;
+	i_126:
+		if(ic-- == 0) goto end;
+	i_127:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_128;
+			stack[ss++] = ret;
+			goto i_157;
+		}
+	i_128:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_129;
+			stack[ss++] = ret;
+			goto i_164;
+		}
+	i_129:
+		if(ic-- == 0) goto end;
+	i_130:
+		if(ic-- == 0) goto end;
+	i_131:
+		if(ic-- == 0) goto end;
+	i_132:
+		if(ic-- == 0) goto end;
+	i_133:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_134;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_134:
+		if(ic-- == 0) goto end;
+	i_135:
+		if(ic-- == 0) goto end;
+	i_136:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_137;
+			stack[ss++] = ret;
+			goto i_160;
+		}
+	i_137:
+		if(ic-- == 0) goto end;
+	i_138:
+		if(ic-- == 0) goto end;
+	i_139:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_140;
+			stack[ss++] = ret;
+			goto i_346;
+		}
+	i_140:
+		if(ic-- == 0) goto end;
+	i_141:
+		if(ic-- == 0) goto end;
+	i_142:
+		if(ic-- == 0) goto end;
+	i_143:
+		if(ic-- == 0) goto end;
+	i_144:
+		if(ic-- == 0) goto end;
+	i_145:
+		if(ic-- == 0) goto end;
+	i_146:
+		if(ic-- == 0) goto end;
+	i_147:
+		if(ic-- == 0) goto end;
+	i_148:
+		if(ic-- == 0) goto end;
+	i_149:
+		if(ic-- == 0) goto end;
+	i_150:
+		if(ic-- == 0) goto end;
+	i_151:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_152;
+			stack[ss++] = ret;
+			goto i_161;
+		}
+	i_152:
+		if(ic-- == 0) goto end;
+	i_153:
+		if(ic-- == 0) goto end;
+	i_154:
+		if(ic-- == 0) goto end;
+	i_155:
+		if(ic-- == 0) goto end;
+	i_156:
+		if(ic-- == 0) goto end;
+	i_157:
+		if(ic-- == 0) goto end;
+	i_158:
+		if(ic-- == 0) goto end;
+	i_159:
+		if(ic-- == 0) goto end;
+	i_160:
+		if(ic-- == 0) goto end;
+	i_161:
+		if(ic-- == 0) goto end;
+	i_162:
+		if(ic-- == 0) goto end;
+	i_163:
+		if(ic-- == 0) goto end;
+	i_164:
+		if(ic-- == 0) goto end;
+	i_165:
+		if(ic-- == 0) goto end;
+	i_166:
+		if(ic-- == 0) goto end;
+	i_167:
+		if(ic-- == 0) goto end;
+	i_168:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_169;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_169:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_170;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_170:
+		if(ic-- == 0) goto end;
+	i_171:
+		if(ic-- == 0) goto end;
+	i_172:
+		if(ic-- == 0) goto end;
+	i_173:
+		if(ic-- == 0) goto end;
+	i_174:
+		if(ic-- == 0) goto end;
+	i_175:
+		if(ic-- == 0) goto end;
+	i_176:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_177;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_177:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_178;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_178:
+		if(ic-- == 0) goto end;
+	i_179:
+		if(ic-- == 0) goto end;
+	i_180:
+		if(ic-- == 0) goto end;
+	i_181:
+		if(ic-- == 0) goto end;
+	i_182:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_183;
+			stack[ss++] = ret;
+			goto i_415;
+		}
+	i_183:
+		if(ic-- == 0) goto end;
+	i_184:
+		if(ic-- == 0) goto end;
+	i_185:
+		if(ic-- == 0) goto end;
+	i_186:
+		if(ic-- == 0) goto end;
+	i_187:
+		if(ic-- == 0) goto end;
+	i_188:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_189;
+			stack[ss++] = ret;
+			goto i_343;
+		}
+	i_189:
+		if(ic-- == 0) goto end;
+	i_190:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_191;
+			stack[ss++] = ret;
+			goto i_268;
+		}
+	i_191:
+		if(ic-- == 0) goto end;
+	i_192:
+		if(ic-- == 0) goto end;
+	i_193:
+		if(ic-- == 0) goto end;
+	i_194:
+		if(ic-- == 0) goto end;
+	i_195:
+		if(ic-- == 0) goto end;
+	i_196:
+		if(ic-- == 0) goto end;
+	i_197:
+		if(ic-- == 0) goto end;
+	i_198:
+		if(ic-- == 0) goto end;
+	i_199:
+		if(ic-- == 0) goto end;
+	i_200:
+		if(ic-- == 0) goto end;
+	i_201:
+		if(ic-- == 0) goto end;
+	i_202:
+		if(ic-- == 0) goto end;
+	i_203:
+		if(ic-- == 0) goto end;
+	i_204:
+		if(ic-- == 0) goto end;
+	i_205:
+		if(ic-- == 0) goto end;
+	i_206:
+		if(ic-- == 0) goto end;
+	i_207:
+		if(ic-- == 0) goto end;
+	i_208:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_209;
+			stack[ss++] = ret;
+			goto i_442;
+		}
+	i_209:
+		if(ic-- == 0) goto end;
+	i_210:
+		if(ic-- == 0) goto end;
+	i_211:
+		if(ic-- == 0) goto end;
+	i_212:
+		if(ic-- == 0) goto end;
+	i_213:
+		if(ic-- == 0) goto end;
+	i_214:
+		if(ic-- == 0) goto end;
+	i_215:
+		if(ic-- == 0) goto end;
+	i_216:
+		if(ic-- == 0) goto end;
+	i_217:
+		if(ic-- == 0) goto end;
+	i_218:
+		if(ic-- == 0) goto end;
+	i_219:
+		if(ic-- == 0) goto end;
+	i_220:
+		if(ic-- == 0) goto end;
+	i_221:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_222;
+			stack[ss++] = ret;
+			goto i_406;
+		}
+	i_222:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_223;
+			stack[ss++] = ret;
+			goto i_394;
+		}
+	i_223:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_224;
+			stack[ss++] = ret;
+			goto i_466;
+		}
+	i_224:
+		if(ic-- == 0) goto end;
+	i_225:
+		if(ic-- == 0) goto end;
+	i_226:
+		if(ic-- == 0) goto end;
+	i_227:
+		if(ic-- == 0) goto end;
+	i_228:
+		if(ic-- == 0) goto end;
+	i_229:
+		if(ic-- == 0) goto end;
+	i_230:
+		if(ic-- == 0) goto end;
+	i_231:
+		if(ic-- == 0) goto end;
+	i_232:
+		if(ic-- == 0) goto end;
+	i_233:
+		if(ic-- == 0) goto end;
+	i_234:
+		if(ic-- == 0) goto end;
+	i_235:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_236;
+			stack[ss++] = ret;
+			goto i_385;
+		}
+	i_236:
+		if(ic-- == 0) goto end;
+	i_237:
+		if(ic-- == 0) goto end;
+	i_238:
+		if(ic-- == 0) goto end;
+	i_239:
+		if(ic-- == 0) goto end;
+	i_240:
+		if(ic-- == 0) goto end;
+	i_241:
+		if(ic-- == 0) goto end;
+	i_242:
+		if(ic-- == 0) goto end;
+	i_243:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_244;
+			stack[ss++] = ret;
+			goto i_402;
+		}
+	i_244:
+		if(ic-- == 0) goto end;
+	i_245:
+		if(ic-- == 0) goto end;
+	i_246:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_247;
+			stack[ss++] = ret;
+			goto i_249;
+		}
+	i_247:
+		if(ic-- == 0) goto end;
+	i_248:
+		if(ic-- == 0) goto end;
+	i_249:
+		if(ic-- == 0) goto end;
+	i_250:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_251;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_251:
+		if(ic-- == 0) goto end;
+	i_252:
+		if(ic-- == 0) goto end;
+	i_253:
+		if(ic-- == 0) goto end;
+	i_254:
+		if(ic-- == 0) goto end;
+	i_255:
+		if(ic-- == 0) goto end;
+	i_256:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_257;
+			stack[ss++] = ret;
+			goto i_420;
+		}
+	i_257:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_258;
+			stack[ss++] = ret;
+			goto i_330;
+		}
+	i_258:
+		if(ic-- == 0) goto end;
+	i_259:
+		if(ic-- == 0) goto end;
+	i_260:
+		if(ic-- == 0) goto end;
+	i_261:
+		if(ic-- == 0) goto end;
+	i_262:
+		if(ic-- == 0) goto end;
+	i_263:
+		if(ic-- == 0) goto end;
+	i_264:
+		if(ic-- == 0) goto end;
+	i_265:
+		if(ic-- == 0) goto end;
+	i_266:
+		if(ic-- == 0) goto end;
+	i_267:
+		if(ic-- == 0) goto end;
+	i_268:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_269;
+			stack[ss++] = ret;
+			goto i_395;
+		}
+	i_269:
+		if(ic-- == 0) goto end;
+	i_270:
+		if(ic-- == 0) goto end;
+	i_271:
+		if(ic-- == 0) goto end;
+	i_272:
+		if(ic-- == 0) goto end;
+	i_273:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_274;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_274:
+		if(ic-- == 0) goto end;
+	i_275:
+		if(ic-- == 0) goto end;
+	i_276:
+		if(ic-- == 0) goto end;
+	i_277:
+		if(ic-- == 0) goto end;
+	i_278:
+		if(ic-- == 0) goto end;
+	i_279:
+		if(ic-- == 0) goto end;
+	i_280:
+		if(ic-- == 0) goto end;
+	i_281:
+		if(ic-- == 0) goto end;
+	i_282:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_283;
+			stack[ss++] = ret;
+			goto i_317;
+		}
+	i_283:
+		if(ic-- == 0) goto end;
+	i_284:
+		if(ic-- == 0) goto end;
+	i_285:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_286;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_286:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_287;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_287:
+		if(ic-- == 0) goto end;
+	i_288:
+		if(ic-- == 0) goto end;
+	i_289:
+		if(ic-- == 0) goto end;
+	i_290:
+		if(ic-- == 0) goto end;
+	i_291:
+		if(ic-- == 0) goto end;
+	i_292:
+		if(ic-- == 0) goto end;
+	i_293:
+		if(ic-- == 0) goto end;
+	i_294:
+		if(ic-- == 0) goto end;
+	i_295:
+		if(ic-- == 0) goto end;
+	i_296:
+		if(ic-- == 0) goto end;
+	i_297:
+		if(ic-- == 0) goto end;
+	i_298:
+		if(ic-- == 0) goto end;
+	i_299:
+		if(ic-- == 0) goto end;
+	i_300:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_301;
+			stack[ss++] = ret;
+			goto i_457;
+		}
+	i_301:
+		if(ic-- == 0) goto end;
+	i_302:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_303;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_303:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_304;
+			stack[ss++] = ret;
+			goto i_508;
+		}
+	i_304:
+		if(ic-- == 0) goto end;
+	i_305:
+		if(ic-- == 0) goto end;
+	i_306:
+		if(ic-- == 0) goto end;
+	i_307:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_308;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_308:
+		if(ic-- == 0) goto end;
+	i_309:
+		if(ic-- == 0) goto end;
+	i_310:
+		if(ic-- == 0) goto end;
+	i_311:
+		if(ic-- == 0) goto end;
+	i_312:
+		if(ic-- == 0) goto end;
+	i_313:
+		if(ic-- == 0) goto end;
+	i_314:
+		if(ic-- == 0) goto end;
+	i_315:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_316;
+			stack[ss++] = ret;
+			goto i_413;
+		}
+	i_316:
+		if(ic-- == 0) goto end;
+	i_317:
+		if(ic-- == 0) goto end;
+	i_318:
+		if(ic-- == 0) goto end;
+	i_319:
+		if(ic-- == 0) goto end;
+	i_320:
+		if(ic-- == 0) goto end;
+	i_321:
+		if(ic-- == 0) goto end;
+	i_322:
+		if(ic-- == 0) goto end;
+	i_323:
+		if(ic-- == 0) goto end;
+	i_324:
+		if(ic-- == 0) goto end;
+	i_325:
+		if(ic-- == 0) goto end;
+	i_326:
+		if(ic-- == 0) goto end;
+	i_327:
+		if(ic-- == 0) goto end;
+	i_328:
+		if(ic-- == 0) goto end;
+	i_329:
+		if(ic-- == 0) goto end;
+	i_330:
+		if(ic-- == 0) goto end;
+	i_331:
+		if(ic-- == 0) goto end;
+	i_332:
+		if(ic-- == 0) goto end;
+	i_333:
+		if(ic-- == 0) goto end;
+	i_334:
+		if(ic-- == 0) goto end;
+	i_335:
+		if(ic-- == 0) goto end;
+	i_336:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_337;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_337:
+		if(ic-- == 0) goto end;
+	i_338:
+		if(ic-- == 0) goto end;
+	i_339:
+		if(ic-- == 0) goto end;
+	i_340:
+		if(ic-- == 0) goto end;
+	i_341:
+		if(ic-- == 0) goto end;
+	i_342:
+		if(ic-- == 0) goto end;
+	i_343:
+		if(ic-- == 0) goto end;
+	i_344:
+		if(ic-- == 0) goto end;
+	i_345:
+		if(ic-- == 0) goto end;
+	i_346:
+		if(ic-- == 0) goto end;
+	i_347:
+		if(ic-- == 0) goto end;
+	i_348:
+		if(ic-- == 0) goto end;
+	i_349:
+		if(ic-- == 0) goto end;
+	i_350:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_351;
+			stack[ss++] = ret;
+			goto i_541;
+		}
+	i_351:
+		if(ic-- == 0) goto end;
+	i_352:
+		if(ic-- == 0) goto end;
+	i_353:
+		if(ic-- == 0) goto end;
+	i_354:
+		if(ic-- == 0) goto end;
+	i_355:
+		if(ic-- == 0) goto end;
+	i_356:
+		if(ic-- == 0) goto end;
+	i_357:
+		if(ic-- == 0) goto end;
+	i_358:
+		if(ic-- == 0) goto end;
+	i_359:
+		if(ic-- == 0) goto end;
+	i_360:
+		if(ic-- == 0) goto end;
+	i_361:
+		if(ic-- == 0) goto end;
+	i_362:
+		if(ic-- == 0) goto end;
+	i_363:
+		if(ic-- == 0) goto end;
+	i_364:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_365;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_365:
+		if(ic-- == 0) goto end;
+	i_366:
+		if(ic-- == 0) goto end;
+	i_367:
+		if(ic-- == 0) goto end;
+	i_368:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_369;
+			stack[ss++] = ret;
+			goto i_403;
+		}
+	i_369:
+		if(ic-- == 0) goto end;
+	i_370:
+		if(ic-- == 0) goto end;
+	i_371:
+		if(ic-- == 0) goto end;
+	i_372:
+		if(ic-- == 0) goto end;
+	i_373:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_374;
+			stack[ss++] = ret;
+			goto i_564;
+		}
+	i_374:
+		if(ic-- == 0) goto end;
+	i_375:
+		if(ic-- == 0) goto end;
+	i_376:
+		if(ic-- == 0) goto end;
+	i_377:
+		if(ic-- == 0) goto end;
+	i_378:
+		if(ic-- == 0) goto end;
+	i_379:
+		if(ic-- == 0) goto end;
+	i_380:
+		if(ic-- == 0) goto end;
+	i_381:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_382;
+			stack[ss++] = ret;
+			goto i_547;
+		}
+	i_382:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_383;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_383:
+		if(ic-- == 0) goto end;
+	i_384:
+		if(ic-- == 0) goto end;
+	i_385:
+		if(ic-- == 0) goto end;
+	i_386:
+		if(ic-- == 0) goto end;
+	i_387:
+		if(ic-- == 0) goto end;
+	i_388:
+		if(ic-- == 0) goto end;
+	i_389:
+		if(ic-- == 0) goto end;
+	i_390:
+		if(ic-- == 0) goto end;
+	i_391:
+		if(ic-- == 0) goto end;
+	i_392:
+		if(ic-- == 0) goto end;
+	i_393:
+		if(ic-- == 0) goto end;
+	i_394:
+		if(ic-- == 0) goto end;
+	i_395:
+		if(ic-- == 0) goto end;
+	i_396:
+		if(ic-- == 0) goto end;
+	i_397:
+		if(ic-- == 0) goto end;
+	i_398:
+		if(ic-- == 0) goto end;
+	i_399:
+		if(ic-- == 0) goto end;
+	i_400:
+		if(ic-- == 0) goto end;
+	i_401:
+		if(ic-- == 0) goto end;
+	i_402:
+		if(ic-- == 0) goto end;
+	i_403:
+		if(ic-- == 0) goto end;
+	i_404:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_405;
+			stack[ss++] = ret;
+			goto i_424;
+		}
+	i_405:
+		if(ic-- == 0) goto end;
+	i_406:
+		if(ic-- == 0) goto end;
+	i_407:
+		if(ic-- == 0) goto end;
+	i_408:
+		if(ic-- == 0) goto end;
+	i_409:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_410;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_410:
+		if(ic-- == 0) goto end;
+	i_411:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_412;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_412:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_413;
+			stack[ss++] = ret;
+			goto i_591;
+		}
+	i_413:
+		if(ic-- == 0) goto end;
+	i_414:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_415;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_415:
+		if(ic-- == 0) goto end;
+	i_416:
+		if(ic-- == 0) goto end;
+	i_417:
+		if(ic-- == 0) goto end;
+	i_418:
+		if(ic-- == 0) goto end;
+	i_419:
+		if(ic-- == 0) goto end;
+	i_420:
+		if(ic-- == 0) goto end;
+	i_421:
+		if(ic-- == 0) goto end;
+	i_422:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_423;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_423:
+		if(ic-- == 0) goto end;
+	i_424:
+		if(ic-- == 0) goto end;
+	i_425:
+		if(ic-- == 0) goto end;
+	i_426:
+		if(ic-- == 0) goto end;
+	i_427:
+		if(ic-- == 0) goto end;
+	i_428:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_429;
+			stack[ss++] = ret;
+			goto i_463;
+		}
+	i_429:
+		if(ic-- == 0) goto end;
+	i_430:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_431;
+			stack[ss++] = ret;
+			goto i_668;
+		}
+	i_431:
+		if(ic-- == 0) goto end;
+	i_432:
+		if(ic-- == 0) goto end;
+	i_433:
+		if(ic-- == 0) goto end;
+	i_434:
+		if(ic-- == 0) goto end;
+	i_435:
+		if(ic-- == 0) goto end;
+	i_436:
+		if(ic-- == 0) goto end;
+	i_437:
+		if(ic-- == 0) goto end;
+	i_438:
+		if(ic-- == 0) goto end;
+	i_439:
+		if(ic-- == 0) goto end;
+	i_440:
+		if(ic-- == 0) goto end;
+	i_441:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_442;
+			stack[ss++] = ret;
+			goto i_570;
+		}
+	i_442:
+		if(ic-- == 0) goto end;
+	i_443:
+		if(ic-- == 0) goto end;
+	i_444:
+		if(ic-- == 0) goto end;
+	i_445:
+		if(ic-- == 0) goto end;
+	i_446:
+		if(ic-- == 0) goto end;
+	i_447:
+		if(ic-- == 0) goto end;
+	i_448:
+		if(ic-- == 0) goto end;
+	i_449:
+		if(ic-- == 0) goto end;
+	i_450:
+		if(ic-- == 0) goto end;
+	i_451:
+		if(ic-- == 0) goto end;
+	i_452:
+		if(ic-- == 0) goto end;
+	i_453:
+		if(ic-- == 0) goto end;
+	i_454:
+		if(ic-- == 0) goto end;
+	i_455:
+		if(ic-- == 0) goto end;
+	i_456:
+		if(ic-- == 0) goto end;
+	i_457:
+		if(ic-- == 0) goto end;
+	i_458:
+		if(ic-- == 0) goto end;
+	i_459:
+		if(ic-- == 0) goto end;
+	i_460:
+		if(ic-- == 0) goto end;
+	i_461:
+		if(ic-- == 0) goto end;
+	i_462:
+		if(ic-- == 0) goto end;
+	i_463:
+		if(ic-- == 0) goto end;
+	i_464:
+		if(ic-- == 0) goto end;
+	i_465:
+		if(ic-- == 0) goto end;
+	i_466:
+		if(ic-- == 0) goto end;
+	i_467:
+		if(ic-- == 0) goto end;
+	i_468:
+		if(ic-- == 0) goto end;
+	i_469:
+		if(ic-- == 0) goto end;
+	i_470:
+		if(ic-- == 0) goto end;
+	i_471:
+		if(ic-- == 0) goto end;
+	i_472:
+		if(ic-- == 0) goto end;
+	i_473:
+		if(ic-- == 0) goto end;
+	i_474:
+		if(ic-- == 0) goto end;
+	i_475:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_476;
+			stack[ss++] = ret;
+			goto i_657;
+		}
+	i_476:
+		if(ic-- == 0) goto end;
+	i_477:
+		if(ic-- == 0) goto end;
+	i_478:
+		if(ic-- == 0) goto end;
+	i_479:
+		if(ic-- == 0) goto end;
+	i_480:
+		if(ic-- == 0) goto end;
+	i_481:
+		if(ic-- == 0) goto end;
+	i_482:
+		if(ic-- == 0) goto end;
+	i_483:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_484;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_484:
+		if(ic-- == 0) goto end;
+	i_485:
+		if(ic-- == 0) goto end;
+	i_486:
+		if(ic-- == 0) goto end;
+	i_487:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_488;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_488:
+		if(ic-- == 0) goto end;
+	i_489:
+		if(ic-- == 0) goto end;
+	i_490:
+		if(ic-- == 0) goto end;
+	i_491:
+		if(ic-- == 0) goto end;
+	i_492:
+		if(ic-- == 0) goto end;
+	i_493:
+		if(ic-- == 0) goto end;
+	i_494:
+		if(ic-- == 0) goto end;
+	i_495:
+		if(ic-- == 0) goto end;
+	i_496:
+		if(ic-- == 0) goto end;
+	i_497:
+		if(ic-- == 0) goto end;
+	i_498:
+		if(ic-- == 0) goto end;
+	i_499:
+		if(ic-- == 0) goto end;
+	i_500:
+		if(ic-- == 0) goto end;
+	i_501:
+		if(ic-- == 0) goto end;
+	i_502:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_503;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_503:
+		if(ic-- == 0) goto end;
+	i_504:
+		if(ic-- == 0) goto end;
+	i_505:
+		if(ic-- == 0) goto end;
+	i_506:
+		if(ic-- == 0) goto end;
+	i_507:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_508;
+			stack[ss++] = ret;
+			goto i_730;
+		}
+	i_508:
+		if(ic-- == 0) goto end;
+	i_509:
+		if(ic-- == 0) goto end;
+	i_510:
+		if(ic-- == 0) goto end;
+	i_511:
+		if(ic-- == 0) goto end;
+	i_512:
+		if(ic-- == 0) goto end;
+	i_513:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_514;
+			stack[ss++] = ret;
+			goto i_570;
+		}
+	i_514:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_515;
+			stack[ss++] = ret;
+			goto i_521;
+		}
+	i_515:
+		if(ic-- == 0) goto end;
+	i_516:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_517;
+			stack[ss++] = ret;
+			goto i_765;
+		}
+	i_517:
+		if(ic-- == 0) goto end;
+	i_518:
+		if(ic-- == 0) goto end;
+	i_519:
+		if(ic-- == 0) goto end;
+	i_520:
+		if(ic-- == 0) goto end;
+	i_521:
+		if(ic-- == 0) goto end;
+	i_522:
+		if(ic-- == 0) goto end;
+	i_523:
+		if(ic-- == 0) goto end;
+	i_524:
+		if(ic-- == 0) goto end;
+	i_525:
+		if(ic-- == 0) goto end;
+	i_526:
+		if(ic-- == 0) goto end;
+	i_527:
+		if(ic-- == 0) goto end;
+	i_528:
+		if(ic-- == 0) goto end;
+	i_529:
+		if(ic-- == 0) goto end;
+	i_530:
+		if(ic-- == 0) goto end;
+	i_531:
+		if(ic-- == 0) goto end;
+	i_532:
+		if(ic-- == 0) goto end;
+	i_533:
+		if(ic-- == 0) goto end;
+	i_534:
+		if(ic-- == 0) goto end;
+	i_535:
+		if(ic-- == 0) goto end;
+	i_536:
+		if(ic-- == 0) goto end;
+	i_537:
+		if(ic-- == 0) goto end;
+	i_538:
+		if(ic-- == 0) goto end;
+	i_539:
+		if(ic-- == 0) goto end;
+	i_540:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_541;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_541:
+		if(ic-- == 0) goto end;
+	i_542:
+		if(ic-- == 0) goto end;
+	i_543:
+		if(ic-- == 0) goto end;
+	i_544:
+		if(ic-- == 0) goto end;
+	i_545:
+		if(ic-- == 0) goto end;
+	i_546:
+		if(ic-- == 0) goto end;
+	i_547:
+		if(ic-- == 0) goto end;
+	i_548:
+		if(ic-- == 0) goto end;
+	i_549:
+		if(ic-- == 0) goto end;
+	i_550:
+		if(ic-- == 0) goto end;
+	i_551:
+		if(ic-- == 0) goto end;
+	i_552:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_553;
+			stack[ss++] = ret;
+			goto i_604;
+		}
+	i_553:
+		if(ic-- == 0) goto end;
+	i_554:
+		if(ic-- == 0) goto end;
+	i_555:
+		if(ic-- == 0) goto end;
+	i_556:
+		if(ic-- == 0) goto end;
+	i_557:
+		if(ic-- == 0) goto end;
+	i_558:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_559;
+			stack[ss++] = ret;
+			goto i_645;
+		}
+	i_559:
+		if(ic-- == 0) goto end;
+	i_560:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_561;
+			stack[ss++] = ret;
+			goto i_656;
+		}
+	i_561:
+		if(ic-- == 0) goto end;
+	i_562:
+		if(ic-- == 0) goto end;
+	i_563:
+		if(ic-- == 0) goto end;
+	i_564:
+		if(ic-- == 0) goto end;
+	i_565:
+		if(ic-- == 0) goto end;
+	i_566:
+		if(ic-- == 0) goto end;
+	i_567:
+		if(ic-- == 0) goto end;
+	i_568:
+		if(ic-- == 0) goto end;
+	i_569:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_570;
+			stack[ss++] = ret;
+			goto i_637;
+		}
+	i_570:
+		if(ic-- == 0) goto end;
+	i_571:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_572;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_572:
+		if(ic-- == 0) goto end;
+	i_573:
+		if(ic-- == 0) goto end;
+	i_574:
+		if(ic-- == 0) goto end;
+	i_575:
+		if(ic-- == 0) goto end;
+	i_576:
+		if(ic-- == 0) goto end;
+	i_577:
+		if(ic-- == 0) goto end;
+	i_578:
+		if(ic-- == 0) goto end;
+	i_579:
+		if(ic-- == 0) goto end;
+	i_580:
+		if(ic-- == 0) goto end;
+	i_581:
+		if(ic-- == 0) goto end;
+	i_582:
+		if(ic-- == 0) goto end;
+	i_583:
+		if(ic-- == 0) goto end;
+	i_584:
+		if(ic-- == 0) goto end;
+	i_585:
+		if(ic-- == 0) goto end;
+	i_586:
+		if(ic-- == 0) goto end;
+	i_587:
+		if(ic-- == 0) goto end;
+	i_588:
+		if(ic-- == 0) goto end;
+	i_589:
+		if(ic-- == 0) goto end;
+	i_590:
+		if(ic-- == 0) goto end;
+	i_591:
+		if(ic-- == 0) goto end;
+	i_592:
+		if(ic-- == 0) goto end;
+	i_593:
+		if(ic-- == 0) goto end;
+	i_594:
+		if(ic-- == 0) goto end;
+	i_595:
+		if(ic-- == 0) goto end;
+	i_596:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_597;
+			stack[ss++] = ret;
+			goto i_622;
+		}
+	i_597:
+		if(ic-- == 0) goto end;
+	i_598:
+		if(ic-- == 0) goto end;
+	i_599:
+		if(ic-- == 0) goto end;
+	i_600:
+		if(ic-- == 0) goto end;
+	i_601:
+		if(ic-- == 0) goto end;
+	i_602:
+		if(ic-- == 0) goto end;
+	i_603:
+		if(ic-- == 0) goto end;
+	i_604:
+		if(ic-- == 0) goto end;
+	i_605:
+		if(ic-- == 0) goto end;
+	i_606:
+		if(ic-- == 0) goto end;
+	i_607:
+		if(ic-- == 0) goto end;
+	i_608:
+		if(ic-- == 0) goto end;
+	i_609:
+		if(ic-- == 0) goto end;
+	i_610:
+		if(ic-- == 0) goto end;
+	i_611:
+		if(ic-- == 0) goto end;
+	i_612:
+		if(ic-- == 0) goto end;
+	i_613:
+		if(ic-- == 0) goto end;
+	i_614:
+		if(ic-- == 0) goto end;
+	i_615:
+		if(ic-- == 0) goto end;
+	i_616:
+		if(ic-- == 0) goto end;
+	i_617:
+		if(ic-- == 0) goto end;
+	i_618:
+		if(ic-- == 0) goto end;
+	i_619:
+		if(ic-- == 0) goto end;
+	i_620:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_621;
+			stack[ss++] = ret;
+			goto i_666;
+		}
+	i_621:
+		if(ic-- == 0) goto end;
+	i_622:
+		if(ic-- == 0) goto end;
+	i_623:
+		if(ic-- == 0) goto end;
+	i_624:
+		if(ic-- == 0) goto end;
+	i_625:
+		if(ic-- == 0) goto end;
+	i_626:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_627;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_627:
+		if(ic-- == 0) goto end;
+	i_628:
+		if(ic-- == 0) goto end;
+	i_629:
+		if(ic-- == 0) goto end;
+	i_630:
+		if(ic-- == 0) goto end;
+	i_631:
+		if(ic-- == 0) goto end;
+	i_632:
+		if(ic-- == 0) goto end;
+	i_633:
+		if(ic-- == 0) goto end;
+	i_634:
+		if(ic-- == 0) goto end;
+	i_635:
+		if(ic-- == 0) goto end;
+	i_636:
+		if(ic-- == 0) goto end;
+	i_637:
+		if(ic-- == 0) goto end;
+	i_638:
+		if(ic-- == 0) goto end;
+	i_639:
+		if(ic-- == 0) goto end;
+	i_640:
+		if(ic-- == 0) goto end;
+	i_641:
+		if(ic-- == 0) goto end;
+	i_642:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_643;
+			stack[ss++] = ret;
+			goto i_801;
+		}
+	i_643:
+		if(ic-- == 0) goto end;
+	i_644:
+		if(ic-- == 0) goto end;
+	i_645:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_646;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_646:
+		if(ic-- == 0) goto end;
+	i_647:
+		if(ic-- == 0) goto end;
+	i_648:
+		if(ic-- == 0) goto end;
+	i_649:
+		if(ic-- == 0) goto end;
+	i_650:
+		if(ic-- == 0) goto end;
+	i_651:
+		if(ic-- == 0) goto end;
+	i_652:
+		if(ic-- == 0) goto end;
+	i_653:
+		if(ic-- == 0) goto end;
+	i_654:
+		if(ic-- == 0) goto end;
+	i_655:
+		if(ic-- == 0) goto end;
+	i_656:
+		if(ic-- == 0) goto end;
+	i_657:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_658;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_658:
+		if(ic-- == 0) goto end;
+	i_659:
+		if(ic-- == 0) goto end;
+	i_660:
+		if(ic-- == 0) goto end;
+	i_661:
+		if(ic-- == 0) goto end;
+	i_662:
+		if(ic-- == 0) goto end;
+	i_663:
+		if(ic-- == 0) goto end;
+	i_664:
+		if(ic-- == 0) goto end;
+	i_665:
+		if(ic-- == 0) goto end;
+	i_666:
+		if(ic-- == 0) goto end;
+	i_667:
+		if(ic-- == 0) goto end;
+	i_668:
+		if(ic-- == 0) goto end;
+	i_669:
+		if(ic-- == 0) goto end;
+	i_670:
+		if(ic-- == 0) goto end;
+	i_671:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_672;
+			stack[ss++] = ret;
+			goto i_883;
+		}
+	i_672:
+		if(ic-- == 0) goto end;
+	i_673:
+		if(ic-- == 0) goto end;
+	i_674:
+		if(ic-- == 0) goto end;
+	i_675:
+		if(ic-- == 0) goto end;
+	i_676:
+		if(ic-- == 0) goto end;
+	i_677:
+		if(ic-- == 0) goto end;
+	i_678:
+		if(ic-- == 0) goto end;
+	i_679:
+		if(ic-- == 0) goto end;
+	i_680:
+		if(ic-- == 0) goto end;
+	i_681:
+		if(ic-- == 0) goto end;
+	i_682:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_683;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_683:
+		if(ic-- == 0) goto end;
+	i_684:
+		if(ic-- == 0) goto end;
+	i_685:
+		if(ic-- == 0) goto end;
+	i_686:
+		if(ic-- == 0) goto end;
+	i_687:
+		if(ic-- == 0) goto end;
+	i_688:
+		if(ic-- == 0) goto end;
+	i_689:
+		if(ic-- == 0) goto end;
+	i_690:
+		if(ic-- == 0) goto end;
+	i_691:
+		if(ic-- == 0) goto end;
+	i_692:
+		if(ic-- == 0) goto end;
+	i_693:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_694;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_694:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_695;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_695:
+		if(ic-- == 0) goto end;
+	i_696:
+		if(ic-- == 0) goto end;
+	i_697:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_698;
+			stack[ss++] = ret;
+			goto i_703;
+		}
+	i_698:
+		if(ic-- == 0) goto end;
+	i_699:
+		if(ic-- == 0) goto end;
+	i_700:
+		if(ic-- == 0) goto end;
+	i_701:
+		if(ic-- == 0) goto end;
+	i_702:
+		if(ic-- == 0) goto end;
+	i_703:
+		if(ic-- == 0) goto end;
+	i_704:
+		if(ic-- == 0) goto end;
+	i_705:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_706;
+			stack[ss++] = ret;
+			goto i_892;
+		}
+	i_706:
+		if(ic-- == 0) goto end;
+	i_707:
+		if(ic-- == 0) goto end;
+	i_708:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_709;
+			stack[ss++] = ret;
+			goto i_796;
+		}
+	i_709:
+		if(ic-- == 0) goto end;
+	i_710:
+		if(ic-- == 0) goto end;
+	i_711:
+		if(ic-- == 0) goto end;
+	i_712:
+		if(ic-- == 0) goto end;
+	i_713:
+		if(ic-- == 0) goto end;
+	i_714:
+		if(ic-- == 0) goto end;
+	i_715:
+		if(ic-- == 0) goto end;
+	i_716:
+		if(ic-- == 0) goto end;
+	i_717:
+		if(ic-- == 0) goto end;
+	i_718:
+		if(ic-- == 0) goto end;
+	i_719:
+		if(ic-- == 0) goto end;
+	i_720:
+		if(ic-- == 0) goto end;
+	i_721:
+		if(ic-- == 0) goto end;
+	i_722:
+		if(ic-- == 0) goto end;
+	i_723:
+		if(ic-- == 0) goto end;
+	i_724:
+		if(ic-- == 0) goto end;
+	i_725:
+		if(ic-- == 0) goto end;
+	i_726:
+		if(ic-- == 0) goto end;
+	i_727:
+		if(ic-- == 0) goto end;
+	i_728:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_729;
+			stack[ss++] = ret;
+			goto i_770;
+		}
+	i_729:
+		if(ic-- == 0) goto end;
+	i_730:
+		if(ic-- == 0) goto end;
+	i_731:
+		if(ic-- == 0) goto end;
+	i_732:
+		if(ic-- == 0) goto end;
+	i_733:
+		if(ic-- == 0) goto end;
+	i_734:
+		if(ic-- == 0) goto end;
+	i_735:
+		if(ic-- == 0) goto end;
+	i_736:
+		if(ic-- == 0) goto end;
+	i_737:
+		if(ic-- == 0) goto end;
+	i_738:
+		if(ic-- == 0) goto end;
+	i_739:
+		if(ic-- == 0) goto end;
+	i_740:
+		if(ic-- == 0) goto end;
+	i_741:
+		if(ic-- == 0) goto end;
+	i_742:
+		if(ic-- == 0) goto end;
+	i_743:
+		if(ic-- == 0) goto end;
+	i_744:
+		if(ic-- == 0) goto end;
+	i_745:
+		if(ic-- == 0) goto end;
+	i_746:
+		if(ic-- == 0) goto end;
+	i_747:
+		if(ic-- == 0) goto end;
+	i_748:
+		if(ic-- == 0) goto end;
+	i_749:
+		if(ic-- == 0) goto end;
+	i_750:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_751;
+			stack[ss++] = ret;
+			goto i_801;
+		}
+	i_751:
+		if(ic-- == 0) goto end;
+	i_752:
+		if(ic-- == 0) goto end;
+	i_753:
+		if(ic-- == 0) goto end;
+	i_754:
+		if(ic-- == 0) goto end;
+	i_755:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_756;
+			stack[ss++] = ret;
+			goto i_1009;
+		}
+	i_756:
+		if(ic-- == 0) goto end;
+	i_757:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_758;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_758:
+		if(ic-- == 0) goto end;
+	i_759:
+		if(ic-- == 0) goto end;
+	i_760:
+		if(ic-- == 0) goto end;
+	i_761:
+		if(ic-- == 0) goto end;
+	i_762:
+		if(ic-- == 0) goto end;
+	i_763:
+		if(ic-- == 0) goto end;
+	i_764:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_765;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_765:
+		if(ic-- == 0) goto end;
+	i_766:
+		if(ic-- == 0) goto end;
+	i_767:
+		if(ic-- == 0) goto end;
+	i_768:
+		if(ic-- == 0) goto end;
+	i_769:
+		if(ic-- == 0) goto end;
+	i_770:
+		if(ic-- == 0) goto end;
+	i_771:
+		if(ic-- == 0) goto end;
+	i_772:
+		if(ic-- == 0) goto end;
+	i_773:
+		if(ic-- == 0) goto end;
+	i_774:
+		if(ic-- == 0) goto end;
+	i_775:
+		if(ic-- == 0) goto end;
+	i_776:
+		if(ic-- == 0) goto end;
+	i_777:
+		if(ic-- == 0) goto end;
+	i_778:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_779;
+			stack[ss++] = ret;
+			goto i_893;
+		}
+	i_779:
+		if(ic-- == 0) goto end;
+	i_780:
+		if(ic-- == 0) goto end;
+	i_781:
+		if(ic-- == 0) goto end;
+	i_782:
+		if(ic-- == 0) goto end;
+	i_783:
+		if(ic-- == 0) goto end;
+	i_784:
+		if(ic-- == 0) goto end;
+	i_785:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_786;
+			stack[ss++] = ret;
+			goto i_949;
+		}
+	i_786:
+		if(ic-- == 0) goto end;
+	i_787:
+		if(ic-- == 0) goto end;
+	i_788:
+		if(ic-- == 0) goto end;
+	i_789:
+		if(ic-- == 0) goto end;
+	i_790:
+		if(ic-- == 0) goto end;
+	i_791:
+		if(ic-- == 0) goto end;
+	i_792:
+		if(ic-- == 0) goto end;
+	i_793:
+		if(ic-- == 0) goto end;
+	i_794:
+		if(ic-- == 0) goto end;
+	i_795:
+		if(ic-- == 0) goto end;
+	i_796:
+		if(ic-- == 0) goto end;
+	i_797:
+		if(ic-- == 0) goto end;
+	i_798:
+		if(ic-- == 0) goto end;
+	i_799:
+		if(ic-- == 0) goto end;
+	i_800:
+		if(ic-- == 0) goto end;
+	i_801:
+		if(ic-- == 0) goto end;
+	i_802:
+		if(ic-- == 0) goto end;
+	i_803:
+		if(ic-- == 0) goto end;
+	i_804:
+		if(ic-- == 0) goto end;
+	i_805:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_806;
+			stack[ss++] = ret;
+			goto i_813;
+		}
+	i_806:
+		if(ic-- == 0) goto end;
+	i_807:
+		if(ic-- == 0) goto end;
+	i_808:
+		if(ic-- == 0) goto end;
+	i_809:
+		if(ic-- == 0) goto end;
+	i_810:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_811;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_811:
+		if(ic-- == 0) goto end;
+	i_812:
+		if(ic-- == 0) goto end;
+	i_813:
+		if(ic-- == 0) goto end;
+	i_814:
+		if(ic-- == 0) goto end;
+	i_815:
+		if(ic-- == 0) goto end;
+	i_816:
+		if(ic-- == 0) goto end;
+	i_817:
+		if(ic-- == 0) goto end;
+	i_818:
+		if(ic-- == 0) goto end;
+	i_819:
+		if(ic-- == 0) goto end;
+	i_820:
+		if(ic-- == 0) goto end;
+	i_821:
+		if(ic-- == 0) goto end;
+	i_822:
+		if(ic-- == 0) goto end;
+	i_823:
+		if(ic-- == 0) goto end;
+	i_824:
+		if(ic-- == 0) goto end;
+	i_825:
+		if(ic-- == 0) goto end;
+	i_826:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_827;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_827:
+		if(ic-- == 0) goto end;
+	i_828:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_829;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_829:
+		if(ic-- == 0) goto end;
+	i_830:
+		if(ic-- == 0) goto end;
+	i_831:
+		if(ic-- == 0) goto end;
+	i_832:
+		if(ic-- == 0) goto end;
+	i_833:
+		if(ic-- == 0) goto end;
+	i_834:
+		if(ic-- == 0) goto end;
+	i_835:
+		if(ic-- == 0) goto end;
+	i_836:
+		if(ic-- == 0) goto end;
+	i_837:
+		if(ic-- == 0) goto end;
+	i_838:
+		if(ic-- == 0) goto end;
+	i_839:
+		if(ic-- == 0) goto end;
+	i_840:
+		if(ic-- == 0) goto end;
+	i_841:
+		if(ic-- == 0) goto end;
+	i_842:
+		if(ic-- == 0) goto end;
+	i_843:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_844;
+			stack[ss++] = ret;
+			goto i_955;
+		}
+	i_844:
+		if(ic-- == 0) goto end;
+	i_845:
+		if(ic-- == 0) goto end;
+	i_846:
+		if(ic-- == 0) goto end;
+	i_847:
+		if(ic-- == 0) goto end;
+	i_848:
+		if(ic-- == 0) goto end;
+	i_849:
+		if(ic-- == 0) goto end;
+	i_850:
+		if(ic-- == 0) goto end;
+	i_851:
+		if(ic-- == 0) goto end;
+	i_852:
+		if(ic-- == 0) goto end;
+	i_853:
+		if(ic-- == 0) goto end;
+	i_854:
+		if(ic-- == 0) goto end;
+	i_855:
+		if(ic-- == 0) goto end;
+	i_856:
+		if(ic-- == 0) goto end;
+	i_857:
+		if(ic-- == 0) goto end;
+	i_858:
+		if(ic-- == 0) goto end;
+	i_859:
+		if(ic-- == 0) goto end;
+	i_860:
+		if(ic-- == 0) goto end;
+	i_861:
+		if(ic-- == 0) goto end;
+	i_862:
+		if(ic-- == 0) goto end;
+	i_863:
+		if(ic-- == 0) goto end;
+	i_864:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_865;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_865:
+		if(ic-- == 0) goto end;
+	i_866:
+		if(ic-- == 0) goto end;
+	i_867:
+		if(ic-- == 0) goto end;
+	i_868:
+		if(ic-- == 0) goto end;
+	i_869:
+		if(ic-- == 0) goto end;
+	i_870:
+		if(ic-- == 0) goto end;
+	i_871:
+		if(ic-- == 0) goto end;
+	i_872:
+		if(ic-- == 0) goto end;
+	i_873:
+		if(ic-- == 0) goto end;
+	i_874:
+		if(ic-- == 0) goto end;
+	i_875:
+		if(ic-- == 0) goto end;
+	i_876:
+		if(ic-- == 0) goto end;
+	i_877:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_878;
+			stack[ss++] = ret;
+			goto i_971;
+		}
+	i_878:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_879;
+			stack[ss++] = ret;
+			goto i_77;
+		}
+	i_879:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_880;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_880:
+		if(ic-- == 0) goto end;
+	i_881:
+		if(ic-- == 0) goto end;
+	i_882:
+		if(ic-- == 0) goto end;
+	i_883:
+		if(ic-- == 0) goto end;
+	i_884:
+		if(ic-- == 0) goto end;
+	i_885:
+		if(ic-- == 0) goto end;
+	i_886:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_887;
+			stack[ss++] = ret;
+			goto i_943;
+		}
+	i_887:
+		if(ic-- == 0) goto end;
+	i_888:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_889;
+			stack[ss++] = ret;
+			goto i_969;
+		}
+	i_889:
+		if(ic-- == 0) goto end;
+	i_890:
+		if(ic-- == 0) goto end;
+	i_891:
+		if(ic-- == 0) goto end;
+	i_892:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_893;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_893:
+		if(ic-- == 0) goto end;
+	i_894:
+		if(ic-- == 0) goto end;
+	i_895:
+		if(ic-- == 0) goto end;
+	i_896:
+		if(ic-- == 0) goto end;
+	i_897:
+		if(ic-- == 0) goto end;
+	i_898:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_899;
+			stack[ss++] = ret;
+			goto i_974;
+		}
+	i_899:
+		if(ic-- == 0) goto end;
+	i_900:
+		if(ic-- == 0) goto end;
+	i_901:
+		if(ic-- == 0) goto end;
+	i_902:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_903;
+			stack[ss++] = ret;
+			goto i_7;
+		}
+	i_903:
+		if(ic-- == 0) goto end;
+	i_904:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_905;
+			stack[ss++] = ret;
+			goto i_95;
+		}
+	i_905:
+		if(ic-- == 0) goto end;
+	i_906:
+		if(ic-- == 0) goto end;
+	i_907:
+		if(ic-- == 0) goto end;
+	i_908:
+		if(ic-- == 0) goto end;
+	i_909:
+		if(ic-- == 0) goto end;
+	i_910:
+		if(ic-- == 0) goto end;
+	i_911:
+		if(ic-- == 0) goto end;
+	i_912:
+		if(ic-- == 0) goto end;
+	i_913:
+		if(ic-- == 0) goto end;
+	i_914:
+		if(ic-- == 0) goto end;
+	i_915:
+		if(ic-- == 0) goto end;
+	i_916:
+		if(ic-- == 0) goto end;
+	i_917:
+		if(ic-- == 0) goto end;
+	i_918:
+		if(ic-- == 0) goto end;
+	i_919:
+		if(ic-- == 0) goto end;
+	i_920:
+		if(ic-- == 0) goto end;
+	i_921:
+		if(ic-- == 0) goto end;
+	i_922:
+		if(ic-- == 0) goto end;
+	i_923:
+		if(ic-- == 0) goto end;
+	i_924:
+		if(ic-- == 0) goto end;
+	i_925:
+		if(ic-- == 0) goto end;
+	i_926:
+		if(ic-- == 0) goto end;
+	i_927:
+		if(ic-- == 0) goto end;
+	i_928:
+		if(ic-- == 0) goto end;
+	i_929:
+		if(ic-- == 0) goto end;
+	i_930:
+		if(ic-- == 0) goto end;
+	i_931:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_932;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_932:
+		if(ic-- == 0) goto end;
+	i_933:
+		if(ic-- == 0) goto end;
+	i_934:
+		if(ic-- == 0) goto end;
+	i_935:
+		if(ic-- == 0) goto end;
+	i_936:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_937;
+			stack[ss++] = ret;
+			goto i_28;
+		}
+	i_937:
+		if(ic-- == 0) goto end;
+	i_938:
+		if(ic-- == 0) goto end;
+	i_939:
+		if(ic-- == 0) goto end;
+	i_940:
+		if(ic-- == 0) goto end;
+	i_941:
+		if(ic-- == 0) goto end;
+	i_942:
+		if(ic-- == 0) goto end;
+	i_943:
+		if(ic-- == 0) goto end;
+	i_944:
+		if(ic-- == 0) goto end;
+	i_945:
+		if(ic-- == 0) goto end;
+	i_946:
+		if(ic-- == 0) goto end;
+	i_947:
+		if(ic-- == 0) goto end;
+	i_948:
+		if(ic-- == 0) goto end;
+	i_949:
+		if(ic-- == 0) goto end;
+	i_950:
+		if(ic-- == 0) goto end;
+	i_951:
+		if(ic-- == 0) goto end;
+	i_952:
+		if(ic-- == 0) goto end;
+	i_953:
+		if(ic-- == 0) goto end;
+	i_954:
+		if(ic-- == 0) goto end;
+	i_955:
+		if(ic-- == 0) goto end;
+	i_956:
+		if(ic-- == 0) goto end;
+	i_957:
+		if(ic-- == 0) goto end;
+	i_958:
+		if(ic-- == 0) goto end;
+	i_959:
+		if(ic-- == 0) goto end;
+	i_960:
+		if(ic-- == 0) goto end;
+	i_961:
+		if(ic-- == 0) goto end;
+	i_962:
+		if(ic-- == 0) goto end;
+	i_963:
+		if(ic-- == 0) goto end;
+	i_964:
+		if(ic-- == 0) goto end;
+	i_965:
+		if(ic-- == 0) goto end;
+	i_966:
+		if(ic-- == 0) goto end;
+	i_967:
+		if(ic-- == 0) goto end;
+	i_968:
+		if(ic-- == 0) goto end;
+	i_969:
+		if(ic-- == 0) goto end;
+	i_970:
+		if(ic-- == 0) goto end;
+	i_971:
+		if(ic-- == 0) goto end;
+	i_972:
+		if(ic-- == 0) goto end;
+	i_973:
+		if(ic-- == 0) goto end;
+	i_974:
+		if(ic-- == 0) goto end;
+	i_975:
+		if(ic-- == 0) goto end;
+	i_976:
+		if(ic-- == 0) goto end;
+	i_977:
+		if(ic-- == 0) goto end;
+	i_978:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_979;
+			stack[ss++] = ret;
+			goto i_26;
+		}
+	i_979:
+		if(ic-- == 0) goto end;
+	i_980:
+		if(ic-- == 0) goto end;
+	i_981:
+		if(ic-- == 0) goto end;
+	i_982:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_983;
+			stack[ss++] = ret;
+			goto i_197;
+		}
+	i_983:
+		if(ic-- == 0) goto end;
+	i_984:
+		if(ic-- == 0) goto end;
+	i_985:
+		if(ic-- == 0) goto end;
+	i_986:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_987;
+			stack[ss++] = ret;
+			goto i_59;
+		}
+	i_987:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_988;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_988:
+		if(ic-- == 0) goto end;
+	i_989:
+		if(ic-- == 0) goto end;
+	i_990:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_991;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_991:
+		if(ic-- == 0) goto end;
+	i_992:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_993;
+			stack[ss++] = ret;
+			goto i_73;
+		}
+	i_993:
+		if(ic-- == 0) goto end;
+	i_994:
+		if(ic-- == 0) goto end;
+	i_995:
+		if(ic-- == 0) goto end;
+	i_996:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			if(ss <= 0) goto i_997;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_997:
+		if(ic-- == 0) goto end;
+		branches++;
+		if(1) {
+			void* ret = &&i_998;
+			stack[ss++] = ret;
+			goto i_21;
+		}
+	i_998:
+		if(ic-- == 0) goto end;
+	i_999:
+		if(ic-- == 0) goto end;
+	i_1000:
+		if(ic-- == 0) goto end;
+	i_1001:
+		if(ic-- == 0) goto end;
+	i_1002:
+		if(ic-- == 0) goto end;
+	i_1003:
+		if(ic-- == 0) goto end;
+	i_1004:
+		if(ic-- == 0) goto end;
+	i_1005:
+		if(ic-- == 0) goto end;
+	i_1006:
+		if(ic-- == 0) goto end;
+	i_1007:
+		if(ic-- == 0) goto end;
+	i_1008:
+		if(ic-- == 0) goto end;
+	i_1009:
+		if(ic-- == 0) goto end;
+	i_1010:
+		if(ic-- == 0) goto end;
+	i_1011:
+		if(ic-- == 0) goto end;
+	i_1012:
+		if(ic-- == 0) goto end;
+	i_1013:
+		if(ic-- == 0) goto end;
+	i_1014:
+		if(ic-- == 0) goto end;
+	i_1015:
+		if(ic-- == 0) goto end;
+	i_1016:
+		if(ic-- == 0) goto end;
+	i_1017:
+		if(ic-- == 0) goto end;
+	i_1018:
+		if(ic-- == 0) goto end;
+	i_1019:
+		if(ic-- == 0) goto end;
+	i_1020:
+		if(ic-- == 0) goto end;
+	i_1021:
+		if(ic-- == 0) goto end;
+	i_1022:
+		if(ic-- == 0) goto end;
+	i_1023:
+		if(ic-- == 0) goto end;
+		goto i_0;
+	end:
+		PROF_STDOUT();
+		fprintf(stdout, "VM branches: %lu\n", branches);
+		return 0;
+}

+ 2839 - 0
tests/branch_prediction/branch_mixed.c

@@ -0,0 +1,2839 @@
+#include "stdint.h"
+#include "stdlib.h"
+#include "stdio.h"
+#define PROF_USER_EVENTS_ONLY
+#define PROF_EVENT_LIST \
+  PROF_EVENT_HW(BRANCH_INSTRUCTIONS) \
+  PROF_EVENT_HW(BRANCH_MISSES) \
+  PROF_EVENT_SW(TASK_CLOCK)
+#include "prof.h"
+int main(int argc, char** argv) {
+	uint64_t ic = argc > 1 ? atoi(argv[1]) : 65536;
+	uint64_t ss = 0;
+	uint64_t branches = 0;
+	uint32_t state = 0;
+	uint32_t state2 = 123456789;
+	void* stack[65536];
+	PROF_START();
+	i_0:
+		if(ic-- == 0) goto end;
+	i_1:
+		if(ic-- == 0) goto end;
+	i_2:
+		if(ic-- == 0) goto end;
+	i_3:
+		if(ic-- == 0) goto end;
+	i_4:
+		if(ic-- == 0) goto end;
+	i_5:
+		if(ic-- == 0) goto end;
+	i_6:
+		if(ic-- == 0) goto end;
+	i_7:
+		if(ic-- == 0) goto end;
+	i_8:
+		if(ic-- == 0) goto end;
+	i_9:
+		if(ic-- == 0) goto end;
+	i_10:
+		if(ic-- == 0) goto end;
+	i_11:
+		if(ic-- == 0) goto end;
+	i_12:
+		if(ic-- == 0) goto end;
+	i_13:
+		if(ic-- == 0) goto end;
+	i_14:
+		if(ic-- == 0) goto end;
+	i_15:
+		if(ic-- == 0) goto end;
+	i_16:
+		if(ic-- == 0) goto end;
+	i_17:
+		if(ic-- == 0) goto end;
+	i_18:
+		if(ic-- == 0) goto end;
+	i_19:
+		if(ic-- == 0) goto end;
+	i_20:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3288853519) > 4294967295) {
+			void* ret = &&i_21;
+			stack[ss++] = ret;
+			goto i_261;
+		}
+	i_21:
+		if(ic-- == 0) goto end;
+	i_22:
+		if(ic-- == 0) goto end;
+	i_23:
+		if(ic-- == 0) goto end;
+	i_24:
+		if(ic-- == 0) goto end;
+	i_25:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3812903776) > 4294967295) {
+			void* ret = &&i_26;
+			stack[ss++] = ret;
+			goto i_281;
+		}
+	i_26:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 639652386) > 4294967295) {
+			if(ss <= 0) goto i_27;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_27:
+		if(ic-- == 0) goto end;
+	i_28:
+		if(ic-- == 0) goto end;
+	i_29:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2961632904) > 4294967295) {
+			if(ss <= 0) goto i_30;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_30:
+		if(ic-- == 0) goto end;
+	i_31:
+		if(ic-- == 0) goto end;
+	i_32:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 474307802) > 4294967295) {
+			void* ret = &&i_33;
+			stack[ss++] = ret;
+			goto i_136;
+		}
+	i_33:
+		if(ic-- == 0) goto end;
+	i_34:
+		if(ic-- == 0) goto end;
+	i_35:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2093095523) > 4294967295) {
+			if(ss <= 0) goto i_36;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_36:
+		if(ic-- == 0) goto end;
+	i_37:
+		if(ic-- == 0) goto end;
+	i_38:
+		if(ic-- == 0) goto end;
+	i_39:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3154726805) > 4294967295) {
+			void* ret = &&i_40;
+			stack[ss++] = ret;
+			goto i_232;
+		}
+	i_40:
+		if(ic-- == 0) goto end;
+	i_41:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2044508552) > 4294967295) {
+			if(ss <= 0) goto i_42;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_42:
+		if(ic-- == 0) goto end;
+	i_43:
+		if(ic-- == 0) goto end;
+	i_44:
+		if(ic-- == 0) goto end;
+	i_45:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 277236801) > 4294967295) {
+			void* ret = &&i_46;
+			stack[ss++] = ret;
+			goto i_171;
+		}
+	i_46:
+		if(ic-- == 0) goto end;
+	i_47:
+		if(ic-- == 0) goto end;
+	i_48:
+		if(ic-- == 0) goto end;
+	i_49:
+		if(ic-- == 0) goto end;
+	i_50:
+		if(ic-- == 0) goto end;
+	i_51:
+		if(ic-- == 0) goto end;
+	i_52:
+		if(ic-- == 0) goto end;
+	i_53:
+		if(ic-- == 0) goto end;
+	i_54:
+		if(ic-- == 0) goto end;
+	i_55:
+		if(ic-- == 0) goto end;
+	i_56:
+		if(ic-- == 0) goto end;
+	i_57:
+		if(ic-- == 0) goto end;
+	i_58:
+		if(ic-- == 0) goto end;
+	i_59:
+		if(ic-- == 0) goto end;
+	i_60:
+		if(ic-- == 0) goto end;
+	i_61:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1058438924) > 4294967295) {
+			if(ss <= 0) goto i_62;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_62:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3520888866) > 4294967295) {
+			void* ret = &&i_63;
+			stack[ss++] = ret;
+			goto i_231;
+		}
+	i_63:
+		if(ic-- == 0) goto end;
+	i_64:
+		if(ic-- == 0) goto end;
+	i_65:
+		if(ic-- == 0) goto end;
+	i_66:
+		if(ic-- == 0) goto end;
+	i_67:
+		if(ic-- == 0) goto end;
+	i_68:
+		if(ic-- == 0) goto end;
+	i_69:
+		if(ic-- == 0) goto end;
+	i_70:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3793324182) > 4294967295) {
+			void* ret = &&i_71;
+			stack[ss++] = ret;
+			goto i_135;
+		}
+	i_71:
+		if(ic-- == 0) goto end;
+	i_72:
+		if(ic-- == 0) goto end;
+	i_73:
+		if(ic-- == 0) goto end;
+	i_74:
+		if(ic-- == 0) goto end;
+	i_75:
+		if(ic-- == 0) goto end;
+	i_76:
+		if(ic-- == 0) goto end;
+	i_77:
+		if(ic-- == 0) goto end;
+	i_78:
+		if(ic-- == 0) goto end;
+	i_79:
+		if(ic-- == 0) goto end;
+	i_80:
+		if(ic-- == 0) goto end;
+	i_81:
+		if(ic-- == 0) goto end;
+	i_82:
+		if(ic-- == 0) goto end;
+	i_83:
+		if(ic-- == 0) goto end;
+	i_84:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1542024869) > 4294967295) {
+			void* ret = &&i_85;
+			stack[ss++] = ret;
+			goto i_221;
+		}
+	i_85:
+		if(ic-- == 0) goto end;
+	i_86:
+		if(ic-- == 0) goto end;
+	i_87:
+		if(ic-- == 0) goto end;
+	i_88:
+		if(ic-- == 0) goto end;
+	i_89:
+		if(ic-- == 0) goto end;
+	i_90:
+		if(ic-- == 0) goto end;
+	i_91:
+		if(ic-- == 0) goto end;
+	i_92:
+		if(ic-- == 0) goto end;
+	i_93:
+		if(ic-- == 0) goto end;
+	i_94:
+		if(ic-- == 0) goto end;
+	i_95:
+		if(ic-- == 0) goto end;
+	i_96:
+		if(ic-- == 0) goto end;
+	i_97:
+		if(ic-- == 0) goto end;
+	i_98:
+		if(ic-- == 0) goto end;
+	i_99:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 792504979) > 4294967295) {
+			void* ret = &&i_100;
+			stack[ss++] = ret;
+			goto i_103;
+		}
+	i_100:
+		if(ic-- == 0) goto end;
+	i_101:
+		if(ic-- == 0) goto end;
+	i_102:
+		if(ic-- == 0) goto end;
+	i_103:
+		if(ic-- == 0) goto end;
+	i_104:
+		if(ic-- == 0) goto end;
+	i_105:
+		if(ic-- == 0) goto end;
+	i_106:
+		if(ic-- == 0) goto end;
+	i_107:
+		if(ic-- == 0) goto end;
+	i_108:
+		if(ic-- == 0) goto end;
+	i_109:
+		if(ic-- == 0) goto end;
+	i_110:
+		if(ic-- == 0) goto end;
+	i_111:
+		if(ic-- == 0) goto end;
+	i_112:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 980709207) > 4294967295) {
+			if(ss <= 0) goto i_113;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_113:
+		if(ic-- == 0) goto end;
+	i_114:
+		if(ic-- == 0) goto end;
+	i_115:
+		if(ic-- == 0) goto end;
+	i_116:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 971078638) > 4294967295) {
+			if(ss <= 0) goto i_117;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_117:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3848388585) > 4294967295) {
+			void* ret = &&i_118;
+			stack[ss++] = ret;
+			goto i_260;
+		}
+	i_118:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2057363175) > 4294967295) {
+			if(ss <= 0) goto i_119;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_119:
+		if(ic-- == 0) goto end;
+	i_120:
+		if(ic-- == 0) goto end;
+	i_121:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2208602459) > 4294967295) {
+			if(ss <= 0) goto i_122;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_122:
+		if(ic-- == 0) goto end;
+	i_123:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2808635116) > 4294967295) {
+			if(ss <= 0) goto i_124;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_124:
+		if(ic-- == 0) goto end;
+	i_125:
+		if(ic-- == 0) goto end;
+	i_126:
+		if(ic-- == 0) goto end;
+	i_127:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3545628586) > 4294967295) {
+			void* ret = &&i_128;
+			stack[ss++] = ret;
+			goto i_157;
+		}
+	i_128:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4232781027) > 4294967295) {
+			void* ret = &&i_129;
+			stack[ss++] = ret;
+			goto i_164;
+		}
+	i_129:
+		if(ic-- == 0) goto end;
+	i_130:
+		if(ic-- == 0) goto end;
+	i_131:
+		if(ic-- == 0) goto end;
+	i_132:
+		if(ic-- == 0) goto end;
+	i_133:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3244552482) > 4294967295) {
+			if(ss <= 0) goto i_134;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_134:
+		if(ic-- == 0) goto end;
+	i_135:
+		if(ic-- == 0) goto end;
+	i_136:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3405076866) > 4294967295) {
+			void* ret = &&i_137;
+			stack[ss++] = ret;
+			goto i_160;
+		}
+	i_137:
+		if(ic-- == 0) goto end;
+	i_138:
+		if(ic-- == 0) goto end;
+	i_139:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 511632434) > 4294967295) {
+			void* ret = &&i_140;
+			stack[ss++] = ret;
+			goto i_346;
+		}
+	i_140:
+		if(ic-- == 0) goto end;
+	i_141:
+		if(ic-- == 0) goto end;
+	i_142:
+		if(ic-- == 0) goto end;
+	i_143:
+		if(ic-- == 0) goto end;
+	i_144:
+		if(ic-- == 0) goto end;
+	i_145:
+		if(ic-- == 0) goto end;
+	i_146:
+		if(ic-- == 0) goto end;
+	i_147:
+		if(ic-- == 0) goto end;
+	i_148:
+		if(ic-- == 0) goto end;
+	i_149:
+		if(ic-- == 0) goto end;
+	i_150:
+		if(ic-- == 0) goto end;
+	i_151:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 696643743) > 4294967295) {
+			void* ret = &&i_152;
+			stack[ss++] = ret;
+			goto i_161;
+		}
+	i_152:
+		if(ic-- == 0) goto end;
+	i_153:
+		if(ic-- == 0) goto end;
+	i_154:
+		if(ic-- == 0) goto end;
+	i_155:
+		if(ic-- == 0) goto end;
+	i_156:
+		if(ic-- == 0) goto end;
+	i_157:
+		if(ic-- == 0) goto end;
+	i_158:
+		if(ic-- == 0) goto end;
+	i_159:
+		if(ic-- == 0) goto end;
+	i_160:
+		if(ic-- == 0) goto end;
+	i_161:
+		if(ic-- == 0) goto end;
+	i_162:
+		if(ic-- == 0) goto end;
+	i_163:
+		if(ic-- == 0) goto end;
+	i_164:
+		if(ic-- == 0) goto end;
+	i_165:
+		if(ic-- == 0) goto end;
+	i_166:
+		if(ic-- == 0) goto end;
+	i_167:
+		if(ic-- == 0) goto end;
+	i_168:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3553648057) > 4294967295) {
+			if(ss <= 0) goto i_169;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_169:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2307482321) > 4294967295) {
+			if(ss <= 0) goto i_170;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_170:
+		if(ic-- == 0) goto end;
+	i_171:
+		if(ic-- == 0) goto end;
+	i_172:
+		if(ic-- == 0) goto end;
+	i_173:
+		if(ic-- == 0) goto end;
+	i_174:
+		if(ic-- == 0) goto end;
+	i_175:
+		if(ic-- == 0) goto end;
+	i_176:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 371928313) > 4294967295) {
+			if(ss <= 0) goto i_177;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_177:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2322879371) > 4294967295) {
+			if(ss <= 0) goto i_178;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_178:
+		if(ic-- == 0) goto end;
+	i_179:
+		if(ic-- == 0) goto end;
+	i_180:
+		if(ic-- == 0) goto end;
+	i_181:
+		if(ic-- == 0) goto end;
+	i_182:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1986846731) > 4294967295) {
+			void* ret = &&i_183;
+			stack[ss++] = ret;
+			goto i_415;
+		}
+	i_183:
+		if(ic-- == 0) goto end;
+	i_184:
+		if(ic-- == 0) goto end;
+	i_185:
+		if(ic-- == 0) goto end;
+	i_186:
+		if(ic-- == 0) goto end;
+	i_187:
+		if(ic-- == 0) goto end;
+	i_188:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4140864485) > 4294967295) {
+			void* ret = &&i_189;
+			stack[ss++] = ret;
+			goto i_343;
+		}
+	i_189:
+		if(ic-- == 0) goto end;
+	i_190:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 328982338) > 4294967295) {
+			void* ret = &&i_191;
+			stack[ss++] = ret;
+			goto i_268;
+		}
+	i_191:
+		if(ic-- == 0) goto end;
+	i_192:
+		if(ic-- == 0) goto end;
+	i_193:
+		if(ic-- == 0) goto end;
+	i_194:
+		if(ic-- == 0) goto end;
+	i_195:
+		if(ic-- == 0) goto end;
+	i_196:
+		if(ic-- == 0) goto end;
+	i_197:
+		if(ic-- == 0) goto end;
+	i_198:
+		if(ic-- == 0) goto end;
+	i_199:
+		if(ic-- == 0) goto end;
+	i_200:
+		if(ic-- == 0) goto end;
+	i_201:
+		if(ic-- == 0) goto end;
+	i_202:
+		if(ic-- == 0) goto end;
+	i_203:
+		if(ic-- == 0) goto end;
+	i_204:
+		if(ic-- == 0) goto end;
+	i_205:
+		if(ic-- == 0) goto end;
+	i_206:
+		if(ic-- == 0) goto end;
+	i_207:
+		if(ic-- == 0) goto end;
+	i_208:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4134670764) > 4294967295) {
+			void* ret = &&i_209;
+			stack[ss++] = ret;
+			goto i_442;
+		}
+	i_209:
+		if(ic-- == 0) goto end;
+	i_210:
+		if(ic-- == 0) goto end;
+	i_211:
+		if(ic-- == 0) goto end;
+	i_212:
+		if(ic-- == 0) goto end;
+	i_213:
+		if(ic-- == 0) goto end;
+	i_214:
+		if(ic-- == 0) goto end;
+	i_215:
+		if(ic-- == 0) goto end;
+	i_216:
+		if(ic-- == 0) goto end;
+	i_217:
+		if(ic-- == 0) goto end;
+	i_218:
+		if(ic-- == 0) goto end;
+	i_219:
+		if(ic-- == 0) goto end;
+	i_220:
+		if(ic-- == 0) goto end;
+	i_221:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2822139845) > 4294967295) {
+			void* ret = &&i_222;
+			stack[ss++] = ret;
+			goto i_406;
+		}
+	i_222:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 918537004) > 4294967295) {
+			void* ret = &&i_223;
+			stack[ss++] = ret;
+			goto i_394;
+		}
+	i_223:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1196865954) > 4294967295) {
+			void* ret = &&i_224;
+			stack[ss++] = ret;
+			goto i_466;
+		}
+	i_224:
+		if(ic-- == 0) goto end;
+	i_225:
+		if(ic-- == 0) goto end;
+	i_226:
+		if(ic-- == 0) goto end;
+	i_227:
+		if(ic-- == 0) goto end;
+	i_228:
+		if(ic-- == 0) goto end;
+	i_229:
+		if(ic-- == 0) goto end;
+	i_230:
+		if(ic-- == 0) goto end;
+	i_231:
+		if(ic-- == 0) goto end;
+	i_232:
+		if(ic-- == 0) goto end;
+	i_233:
+		if(ic-- == 0) goto end;
+	i_234:
+		if(ic-- == 0) goto end;
+	i_235:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 590251524) > 4294967295) {
+			void* ret = &&i_236;
+			stack[ss++] = ret;
+			goto i_385;
+		}
+	i_236:
+		if(ic-- == 0) goto end;
+	i_237:
+		if(ic-- == 0) goto end;
+	i_238:
+		if(ic-- == 0) goto end;
+	i_239:
+		if(ic-- == 0) goto end;
+	i_240:
+		if(ic-- == 0) goto end;
+	i_241:
+		if(ic-- == 0) goto end;
+	i_242:
+		if(ic-- == 0) goto end;
+	i_243:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2452641289) {
+			void* ret = &&i_244;
+			stack[ss++] = ret;
+			goto i_402;
+		}
+	i_244:
+		if(ic-- == 0) goto end;
+	i_245:
+		if(ic-- == 0) goto end;
+	i_246:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4170012753) > 4294967295) {
+			void* ret = &&i_247;
+			stack[ss++] = ret;
+			goto i_249;
+		}
+	i_247:
+		if(ic-- == 0) goto end;
+	i_248:
+		if(ic-- == 0) goto end;
+	i_249:
+		if(ic-- == 0) goto end;
+	i_250:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3362009392) > 4294967295) {
+			if(ss <= 0) goto i_251;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_251:
+		if(ic-- == 0) goto end;
+	i_252:
+		if(ic-- == 0) goto end;
+	i_253:
+		if(ic-- == 0) goto end;
+	i_254:
+		if(ic-- == 0) goto end;
+	i_255:
+		if(ic-- == 0) goto end;
+	i_256:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4054309882) > 4294967295) {
+			void* ret = &&i_257;
+			stack[ss++] = ret;
+			goto i_420;
+		}
+	i_257:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 593509743) > 4294967295) {
+			void* ret = &&i_258;
+			stack[ss++] = ret;
+			goto i_330;
+		}
+	i_258:
+		if(ic-- == 0) goto end;
+	i_259:
+		if(ic-- == 0) goto end;
+	i_260:
+		if(ic-- == 0) goto end;
+	i_261:
+		if(ic-- == 0) goto end;
+	i_262:
+		if(ic-- == 0) goto end;
+	i_263:
+		if(ic-- == 0) goto end;
+	i_264:
+		if(ic-- == 0) goto end;
+	i_265:
+		if(ic-- == 0) goto end;
+	i_266:
+		if(ic-- == 0) goto end;
+	i_267:
+		if(ic-- == 0) goto end;
+	i_268:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2747033421) > 4294967295) {
+			void* ret = &&i_269;
+			stack[ss++] = ret;
+			goto i_395;
+		}
+	i_269:
+		if(ic-- == 0) goto end;
+	i_270:
+		if(ic-- == 0) goto end;
+	i_271:
+		if(ic-- == 0) goto end;
+	i_272:
+		if(ic-- == 0) goto end;
+	i_273:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3684732774) > 4294967295) {
+			if(ss <= 0) goto i_274;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_274:
+		if(ic-- == 0) goto end;
+	i_275:
+		if(ic-- == 0) goto end;
+	i_276:
+		if(ic-- == 0) goto end;
+	i_277:
+		if(ic-- == 0) goto end;
+	i_278:
+		if(ic-- == 0) goto end;
+	i_279:
+		if(ic-- == 0) goto end;
+	i_280:
+		if(ic-- == 0) goto end;
+	i_281:
+		if(ic-- == 0) goto end;
+	i_282:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 309376903) > 4294967295) {
+			void* ret = &&i_283;
+			stack[ss++] = ret;
+			goto i_317;
+		}
+	i_283:
+		if(ic-- == 0) goto end;
+	i_284:
+		if(ic-- == 0) goto end;
+	i_285:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 219150529) > 4294967295) {
+			if(ss <= 0) goto i_286;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_286:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2594130359) > 4294967295) {
+			if(ss <= 0) goto i_287;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_287:
+		if(ic-- == 0) goto end;
+	i_288:
+		if(ic-- == 0) goto end;
+	i_289:
+		if(ic-- == 0) goto end;
+	i_290:
+		if(ic-- == 0) goto end;
+	i_291:
+		if(ic-- == 0) goto end;
+	i_292:
+		if(ic-- == 0) goto end;
+	i_293:
+		if(ic-- == 0) goto end;
+	i_294:
+		if(ic-- == 0) goto end;
+	i_295:
+		if(ic-- == 0) goto end;
+	i_296:
+		if(ic-- == 0) goto end;
+	i_297:
+		if(ic-- == 0) goto end;
+	i_298:
+		if(ic-- == 0) goto end;
+	i_299:
+		if(ic-- == 0) goto end;
+	i_300:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2892835113) > 4294967295) {
+			void* ret = &&i_301;
+			stack[ss++] = ret;
+			goto i_457;
+		}
+	i_301:
+		if(ic-- == 0) goto end;
+	i_302:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3373689969) > 4294967295) {
+			if(ss <= 0) goto i_303;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_303:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3569068444) > 4294967295) {
+			void* ret = &&i_304;
+			stack[ss++] = ret;
+			goto i_508;
+		}
+	i_304:
+		if(ic-- == 0) goto end;
+	i_305:
+		if(ic-- == 0) goto end;
+	i_306:
+		if(ic-- == 0) goto end;
+	i_307:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2969939441) > 4294967295) {
+			if(ss <= 0) goto i_308;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_308:
+		if(ic-- == 0) goto end;
+	i_309:
+		if(ic-- == 0) goto end;
+	i_310:
+		if(ic-- == 0) goto end;
+	i_311:
+		if(ic-- == 0) goto end;
+	i_312:
+		if(ic-- == 0) goto end;
+	i_313:
+		if(ic-- == 0) goto end;
+	i_314:
+		if(ic-- == 0) goto end;
+	i_315:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3588049267) > 4294967295) {
+			void* ret = &&i_316;
+			stack[ss++] = ret;
+			goto i_413;
+		}
+	i_316:
+		if(ic-- == 0) goto end;
+	i_317:
+		if(ic-- == 0) goto end;
+	i_318:
+		if(ic-- == 0) goto end;
+	i_319:
+		if(ic-- == 0) goto end;
+	i_320:
+		if(ic-- == 0) goto end;
+	i_321:
+		if(ic-- == 0) goto end;
+	i_322:
+		if(ic-- == 0) goto end;
+	i_323:
+		if(ic-- == 0) goto end;
+	i_324:
+		if(ic-- == 0) goto end;
+	i_325:
+		if(ic-- == 0) goto end;
+	i_326:
+		if(ic-- == 0) goto end;
+	i_327:
+		if(ic-- == 0) goto end;
+	i_328:
+		if(ic-- == 0) goto end;
+	i_329:
+		if(ic-- == 0) goto end;
+	i_330:
+		if(ic-- == 0) goto end;
+	i_331:
+		if(ic-- == 0) goto end;
+	i_332:
+		if(ic-- == 0) goto end;
+	i_333:
+		if(ic-- == 0) goto end;
+	i_334:
+		if(ic-- == 0) goto end;
+	i_335:
+		if(ic-- == 0) goto end;
+	i_336:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1190547036) > 4294967295) {
+			if(ss <= 0) goto i_337;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_337:
+		if(ic-- == 0) goto end;
+	i_338:
+		if(ic-- == 0) goto end;
+	i_339:
+		if(ic-- == 0) goto end;
+	i_340:
+		if(ic-- == 0) goto end;
+	i_341:
+		if(ic-- == 0) goto end;
+	i_342:
+		if(ic-- == 0) goto end;
+	i_343:
+		if(ic-- == 0) goto end;
+	i_344:
+		if(ic-- == 0) goto end;
+	i_345:
+		if(ic-- == 0) goto end;
+	i_346:
+		if(ic-- == 0) goto end;
+	i_347:
+		if(ic-- == 0) goto end;
+	i_348:
+		if(ic-- == 0) goto end;
+	i_349:
+		if(ic-- == 0) goto end;
+	i_350:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4115343926) > 4294967295) {
+			void* ret = &&i_351;
+			stack[ss++] = ret;
+			goto i_541;
+		}
+	i_351:
+		if(ic-- == 0) goto end;
+	i_352:
+		if(ic-- == 0) goto end;
+	i_353:
+		if(ic-- == 0) goto end;
+	i_354:
+		if(ic-- == 0) goto end;
+	i_355:
+		if(ic-- == 0) goto end;
+	i_356:
+		if(ic-- == 0) goto end;
+	i_357:
+		if(ic-- == 0) goto end;
+	i_358:
+		if(ic-- == 0) goto end;
+	i_359:
+		if(ic-- == 0) goto end;
+	i_360:
+		if(ic-- == 0) goto end;
+	i_361:
+		if(ic-- == 0) goto end;
+	i_362:
+		if(ic-- == 0) goto end;
+	i_363:
+		if(ic-- == 0) goto end;
+	i_364:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 625597055) > 4294967295) {
+			if(ss <= 0) goto i_365;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_365:
+		if(ic-- == 0) goto end;
+	i_366:
+		if(ic-- == 0) goto end;
+	i_367:
+		if(ic-- == 0) goto end;
+	i_368:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2921020832) > 4294967295) {
+			void* ret = &&i_369;
+			stack[ss++] = ret;
+			goto i_403;
+		}
+	i_369:
+		if(ic-- == 0) goto end;
+	i_370:
+		if(ic-- == 0) goto end;
+	i_371:
+		if(ic-- == 0) goto end;
+	i_372:
+		if(ic-- == 0) goto end;
+	i_373:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2479284681) > 4294967295) {
+			void* ret = &&i_374;
+			stack[ss++] = ret;
+			goto i_564;
+		}
+	i_374:
+		if(ic-- == 0) goto end;
+	i_375:
+		if(ic-- == 0) goto end;
+	i_376:
+		if(ic-- == 0) goto end;
+	i_377:
+		if(ic-- == 0) goto end;
+	i_378:
+		if(ic-- == 0) goto end;
+	i_379:
+		if(ic-- == 0) goto end;
+	i_380:
+		if(ic-- == 0) goto end;
+	i_381:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 559008306) > 4294967295) {
+			void* ret = &&i_382;
+			stack[ss++] = ret;
+			goto i_547;
+		}
+	i_382:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1232165017) > 4294967295) {
+			if(ss <= 0) goto i_383;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_383:
+		if(ic-- == 0) goto end;
+	i_384:
+		if(ic-- == 0) goto end;
+	i_385:
+		if(ic-- == 0) goto end;
+	i_386:
+		if(ic-- == 0) goto end;
+	i_387:
+		if(ic-- == 0) goto end;
+	i_388:
+		if(ic-- == 0) goto end;
+	i_389:
+		if(ic-- == 0) goto end;
+	i_390:
+		if(ic-- == 0) goto end;
+	i_391:
+		if(ic-- == 0) goto end;
+	i_392:
+		if(ic-- == 0) goto end;
+	i_393:
+		if(ic-- == 0) goto end;
+	i_394:
+		if(ic-- == 0) goto end;
+	i_395:
+		if(ic-- == 0) goto end;
+	i_396:
+		if(ic-- == 0) goto end;
+	i_397:
+		if(ic-- == 0) goto end;
+	i_398:
+		if(ic-- == 0) goto end;
+	i_399:
+		if(ic-- == 0) goto end;
+	i_400:
+		if(ic-- == 0) goto end;
+	i_401:
+		if(ic-- == 0) goto end;
+	i_402:
+		if(ic-- == 0) goto end;
+	i_403:
+		if(ic-- == 0) goto end;
+	i_404:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 152819674) {
+			void* ret = &&i_405;
+			stack[ss++] = ret;
+			goto i_424;
+		}
+	i_405:
+		if(ic-- == 0) goto end;
+	i_406:
+		if(ic-- == 0) goto end;
+	i_407:
+		if(ic-- == 0) goto end;
+	i_408:
+		if(ic-- == 0) goto end;
+	i_409:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1237514854) > 4294967295) {
+			if(ss <= 0) goto i_410;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_410:
+		if(ic-- == 0) goto end;
+	i_411:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1706351018) > 4294967295) {
+			if(ss <= 0) goto i_412;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_412:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3571797961) > 4294967295) {
+			void* ret = &&i_413;
+			stack[ss++] = ret;
+			goto i_591;
+		}
+	i_413:
+		if(ic-- == 0) goto end;
+	i_414:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3070440026) > 4294967295) {
+			if(ss <= 0) goto i_415;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_415:
+		if(ic-- == 0) goto end;
+	i_416:
+		if(ic-- == 0) goto end;
+	i_417:
+		if(ic-- == 0) goto end;
+	i_418:
+		if(ic-- == 0) goto end;
+	i_419:
+		if(ic-- == 0) goto end;
+	i_420:
+		if(ic-- == 0) goto end;
+	i_421:
+		if(ic-- == 0) goto end;
+	i_422:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2304247836) > 4294967295) {
+			if(ss <= 0) goto i_423;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_423:
+		if(ic-- == 0) goto end;
+	i_424:
+		if(ic-- == 0) goto end;
+	i_425:
+		if(ic-- == 0) goto end;
+	i_426:
+		if(ic-- == 0) goto end;
+	i_427:
+		if(ic-- == 0) goto end;
+	i_428:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1446234727) > 4294967295) {
+			void* ret = &&i_429;
+			stack[ss++] = ret;
+			goto i_463;
+		}
+	i_429:
+		if(ic-- == 0) goto end;
+	i_430:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2010984968) > 4294967295) {
+			void* ret = &&i_431;
+			stack[ss++] = ret;
+			goto i_668;
+		}
+	i_431:
+		if(ic-- == 0) goto end;
+	i_432:
+		if(ic-- == 0) goto end;
+	i_433:
+		if(ic-- == 0) goto end;
+	i_434:
+		if(ic-- == 0) goto end;
+	i_435:
+		if(ic-- == 0) goto end;
+	i_436:
+		if(ic-- == 0) goto end;
+	i_437:
+		if(ic-- == 0) goto end;
+	i_438:
+		if(ic-- == 0) goto end;
+	i_439:
+		if(ic-- == 0) goto end;
+	i_440:
+		if(ic-- == 0) goto end;
+	i_441:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 726364629) > 4294967295) {
+			void* ret = &&i_442;
+			stack[ss++] = ret;
+			goto i_570;
+		}
+	i_442:
+		if(ic-- == 0) goto end;
+	i_443:
+		if(ic-- == 0) goto end;
+	i_444:
+		if(ic-- == 0) goto end;
+	i_445:
+		if(ic-- == 0) goto end;
+	i_446:
+		if(ic-- == 0) goto end;
+	i_447:
+		if(ic-- == 0) goto end;
+	i_448:
+		if(ic-- == 0) goto end;
+	i_449:
+		if(ic-- == 0) goto end;
+	i_450:
+		if(ic-- == 0) goto end;
+	i_451:
+		if(ic-- == 0) goto end;
+	i_452:
+		if(ic-- == 0) goto end;
+	i_453:
+		if(ic-- == 0) goto end;
+	i_454:
+		if(ic-- == 0) goto end;
+	i_455:
+		if(ic-- == 0) goto end;
+	i_456:
+		if(ic-- == 0) goto end;
+	i_457:
+		if(ic-- == 0) goto end;
+	i_458:
+		if(ic-- == 0) goto end;
+	i_459:
+		if(ic-- == 0) goto end;
+	i_460:
+		if(ic-- == 0) goto end;
+	i_461:
+		if(ic-- == 0) goto end;
+	i_462:
+		if(ic-- == 0) goto end;
+	i_463:
+		if(ic-- == 0) goto end;
+	i_464:
+		if(ic-- == 0) goto end;
+	i_465:
+		if(ic-- == 0) goto end;
+	i_466:
+		if(ic-- == 0) goto end;
+	i_467:
+		if(ic-- == 0) goto end;
+	i_468:
+		if(ic-- == 0) goto end;
+	i_469:
+		if(ic-- == 0) goto end;
+	i_470:
+		if(ic-- == 0) goto end;
+	i_471:
+		if(ic-- == 0) goto end;
+	i_472:
+		if(ic-- == 0) goto end;
+	i_473:
+		if(ic-- == 0) goto end;
+	i_474:
+		if(ic-- == 0) goto end;
+	i_475:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3521149299) > 4294967295) {
+			void* ret = &&i_476;
+			stack[ss++] = ret;
+			goto i_657;
+		}
+	i_476:
+		if(ic-- == 0) goto end;
+	i_477:
+		if(ic-- == 0) goto end;
+	i_478:
+		if(ic-- == 0) goto end;
+	i_479:
+		if(ic-- == 0) goto end;
+	i_480:
+		if(ic-- == 0) goto end;
+	i_481:
+		if(ic-- == 0) goto end;
+	i_482:
+		if(ic-- == 0) goto end;
+	i_483:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3375122053) > 4294967295) {
+			if(ss <= 0) goto i_484;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_484:
+		if(ic-- == 0) goto end;
+	i_485:
+		if(ic-- == 0) goto end;
+	i_486:
+		if(ic-- == 0) goto end;
+	i_487:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3835932753) > 4294967295) {
+			if(ss <= 0) goto i_488;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_488:
+		if(ic-- == 0) goto end;
+	i_489:
+		if(ic-- == 0) goto end;
+	i_490:
+		if(ic-- == 0) goto end;
+	i_491:
+		if(ic-- == 0) goto end;
+	i_492:
+		if(ic-- == 0) goto end;
+	i_493:
+		if(ic-- == 0) goto end;
+	i_494:
+		if(ic-- == 0) goto end;
+	i_495:
+		if(ic-- == 0) goto end;
+	i_496:
+		if(ic-- == 0) goto end;
+	i_497:
+		if(ic-- == 0) goto end;
+	i_498:
+		if(ic-- == 0) goto end;
+	i_499:
+		if(ic-- == 0) goto end;
+	i_500:
+		if(ic-- == 0) goto end;
+	i_501:
+		if(ic-- == 0) goto end;
+	i_502:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2796388936) > 4294967295) {
+			if(ss <= 0) goto i_503;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_503:
+		if(ic-- == 0) goto end;
+	i_504:
+		if(ic-- == 0) goto end;
+	i_505:
+		if(ic-- == 0) goto end;
+	i_506:
+		if(ic-- == 0) goto end;
+	i_507:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1247141878) > 4294967295) {
+			void* ret = &&i_508;
+			stack[ss++] = ret;
+			goto i_730;
+		}
+	i_508:
+		if(ic-- == 0) goto end;
+	i_509:
+		if(ic-- == 0) goto end;
+	i_510:
+		if(ic-- == 0) goto end;
+	i_511:
+		if(ic-- == 0) goto end;
+	i_512:
+		if(ic-- == 0) goto end;
+	i_513:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1118508659) > 4294967295) {
+			void* ret = &&i_514;
+			stack[ss++] = ret;
+			goto i_570;
+		}
+	i_514:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3814103514) > 4294967295) {
+			void* ret = &&i_515;
+			stack[ss++] = ret;
+			goto i_521;
+		}
+	i_515:
+		if(ic-- == 0) goto end;
+	i_516:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1924324783) > 4294967295) {
+			void* ret = &&i_517;
+			stack[ss++] = ret;
+			goto i_765;
+		}
+	i_517:
+		if(ic-- == 0) goto end;
+	i_518:
+		if(ic-- == 0) goto end;
+	i_519:
+		if(ic-- == 0) goto end;
+	i_520:
+		if(ic-- == 0) goto end;
+	i_521:
+		if(ic-- == 0) goto end;
+	i_522:
+		if(ic-- == 0) goto end;
+	i_523:
+		if(ic-- == 0) goto end;
+	i_524:
+		if(ic-- == 0) goto end;
+	i_525:
+		if(ic-- == 0) goto end;
+	i_526:
+		if(ic-- == 0) goto end;
+	i_527:
+		if(ic-- == 0) goto end;
+	i_528:
+		if(ic-- == 0) goto end;
+	i_529:
+		if(ic-- == 0) goto end;
+	i_530:
+		if(ic-- == 0) goto end;
+	i_531:
+		if(ic-- == 0) goto end;
+	i_532:
+		if(ic-- == 0) goto end;
+	i_533:
+		if(ic-- == 0) goto end;
+	i_534:
+		if(ic-- == 0) goto end;
+	i_535:
+		if(ic-- == 0) goto end;
+	i_536:
+		if(ic-- == 0) goto end;
+	i_537:
+		if(ic-- == 0) goto end;
+	i_538:
+		if(ic-- == 0) goto end;
+	i_539:
+		if(ic-- == 0) goto end;
+	i_540:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 126722253) > 4294967295) {
+			if(ss <= 0) goto i_541;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_541:
+		if(ic-- == 0) goto end;
+	i_542:
+		if(ic-- == 0) goto end;
+	i_543:
+		if(ic-- == 0) goto end;
+	i_544:
+		if(ic-- == 0) goto end;
+	i_545:
+		if(ic-- == 0) goto end;
+	i_546:
+		if(ic-- == 0) goto end;
+	i_547:
+		if(ic-- == 0) goto end;
+	i_548:
+		if(ic-- == 0) goto end;
+	i_549:
+		if(ic-- == 0) goto end;
+	i_550:
+		if(ic-- == 0) goto end;
+	i_551:
+		if(ic-- == 0) goto end;
+	i_552:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3051608332) > 4294967295) {
+			void* ret = &&i_553;
+			stack[ss++] = ret;
+			goto i_604;
+		}
+	i_553:
+		if(ic-- == 0) goto end;
+	i_554:
+		if(ic-- == 0) goto end;
+	i_555:
+		if(ic-- == 0) goto end;
+	i_556:
+		if(ic-- == 0) goto end;
+	i_557:
+		if(ic-- == 0) goto end;
+	i_558:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3676004017) > 4294967295) {
+			void* ret = &&i_559;
+			stack[ss++] = ret;
+			goto i_645;
+		}
+	i_559:
+		if(ic-- == 0) goto end;
+	i_560:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 808006198) > 4294967295) {
+			void* ret = &&i_561;
+			stack[ss++] = ret;
+			goto i_656;
+		}
+	i_561:
+		if(ic-- == 0) goto end;
+	i_562:
+		if(ic-- == 0) goto end;
+	i_563:
+		if(ic-- == 0) goto end;
+	i_564:
+		if(ic-- == 0) goto end;
+	i_565:
+		if(ic-- == 0) goto end;
+	i_566:
+		if(ic-- == 0) goto end;
+	i_567:
+		if(ic-- == 0) goto end;
+	i_568:
+		if(ic-- == 0) goto end;
+	i_569:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1017591791) > 4294967295) {
+			void* ret = &&i_570;
+			stack[ss++] = ret;
+			goto i_637;
+		}
+	i_570:
+		if(ic-- == 0) goto end;
+	i_571:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2494873158) > 4294967295) {
+			if(ss <= 0) goto i_572;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_572:
+		if(ic-- == 0) goto end;
+	i_573:
+		if(ic-- == 0) goto end;
+	i_574:
+		if(ic-- == 0) goto end;
+	i_575:
+		if(ic-- == 0) goto end;
+	i_576:
+		if(ic-- == 0) goto end;
+	i_577:
+		if(ic-- == 0) goto end;
+	i_578:
+		if(ic-- == 0) goto end;
+	i_579:
+		if(ic-- == 0) goto end;
+	i_580:
+		if(ic-- == 0) goto end;
+	i_581:
+		if(ic-- == 0) goto end;
+	i_582:
+		if(ic-- == 0) goto end;
+	i_583:
+		if(ic-- == 0) goto end;
+	i_584:
+		if(ic-- == 0) goto end;
+	i_585:
+		if(ic-- == 0) goto end;
+	i_586:
+		if(ic-- == 0) goto end;
+	i_587:
+		if(ic-- == 0) goto end;
+	i_588:
+		if(ic-- == 0) goto end;
+	i_589:
+		if(ic-- == 0) goto end;
+	i_590:
+		if(ic-- == 0) goto end;
+	i_591:
+		if(ic-- == 0) goto end;
+	i_592:
+		if(ic-- == 0) goto end;
+	i_593:
+		if(ic-- == 0) goto end;
+	i_594:
+		if(ic-- == 0) goto end;
+	i_595:
+		if(ic-- == 0) goto end;
+	i_596:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4909130) > 4294967295) {
+			void* ret = &&i_597;
+			stack[ss++] = ret;
+			goto i_622;
+		}
+	i_597:
+		if(ic-- == 0) goto end;
+	i_598:
+		if(ic-- == 0) goto end;
+	i_599:
+		if(ic-- == 0) goto end;
+	i_600:
+		if(ic-- == 0) goto end;
+	i_601:
+		if(ic-- == 0) goto end;
+	i_602:
+		if(ic-- == 0) goto end;
+	i_603:
+		if(ic-- == 0) goto end;
+	i_604:
+		if(ic-- == 0) goto end;
+	i_605:
+		if(ic-- == 0) goto end;
+	i_606:
+		if(ic-- == 0) goto end;
+	i_607:
+		if(ic-- == 0) goto end;
+	i_608:
+		if(ic-- == 0) goto end;
+	i_609:
+		if(ic-- == 0) goto end;
+	i_610:
+		if(ic-- == 0) goto end;
+	i_611:
+		if(ic-- == 0) goto end;
+	i_612:
+		if(ic-- == 0) goto end;
+	i_613:
+		if(ic-- == 0) goto end;
+	i_614:
+		if(ic-- == 0) goto end;
+	i_615:
+		if(ic-- == 0) goto end;
+	i_616:
+		if(ic-- == 0) goto end;
+	i_617:
+		if(ic-- == 0) goto end;
+	i_618:
+		if(ic-- == 0) goto end;
+	i_619:
+		if(ic-- == 0) goto end;
+	i_620:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4170589735) > 4294967295) {
+			void* ret = &&i_621;
+			stack[ss++] = ret;
+			goto i_666;
+		}
+	i_621:
+		if(ic-- == 0) goto end;
+	i_622:
+		if(ic-- == 0) goto end;
+	i_623:
+		if(ic-- == 0) goto end;
+	i_624:
+		if(ic-- == 0) goto end;
+	i_625:
+		if(ic-- == 0) goto end;
+	i_626:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1027138614) > 4294967295) {
+			if(ss <= 0) goto i_627;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_627:
+		if(ic-- == 0) goto end;
+	i_628:
+		if(ic-- == 0) goto end;
+	i_629:
+		if(ic-- == 0) goto end;
+	i_630:
+		if(ic-- == 0) goto end;
+	i_631:
+		if(ic-- == 0) goto end;
+	i_632:
+		if(ic-- == 0) goto end;
+	i_633:
+		if(ic-- == 0) goto end;
+	i_634:
+		if(ic-- == 0) goto end;
+	i_635:
+		if(ic-- == 0) goto end;
+	i_636:
+		if(ic-- == 0) goto end;
+	i_637:
+		if(ic-- == 0) goto end;
+	i_638:
+		if(ic-- == 0) goto end;
+	i_639:
+		if(ic-- == 0) goto end;
+	i_640:
+		if(ic-- == 0) goto end;
+	i_641:
+		if(ic-- == 0) goto end;
+	i_642:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 478668193) > 4294967295) {
+			void* ret = &&i_643;
+			stack[ss++] = ret;
+			goto i_801;
+		}
+	i_643:
+		if(ic-- == 0) goto end;
+	i_644:
+		if(ic-- == 0) goto end;
+	i_645:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2000561671) > 4294967295) {
+			if(ss <= 0) goto i_646;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_646:
+		if(ic-- == 0) goto end;
+	i_647:
+		if(ic-- == 0) goto end;
+	i_648:
+		if(ic-- == 0) goto end;
+	i_649:
+		if(ic-- == 0) goto end;
+	i_650:
+		if(ic-- == 0) goto end;
+	i_651:
+		if(ic-- == 0) goto end;
+	i_652:
+		if(ic-- == 0) goto end;
+	i_653:
+		if(ic-- == 0) goto end;
+	i_654:
+		if(ic-- == 0) goto end;
+	i_655:
+		if(ic-- == 0) goto end;
+	i_656:
+		if(ic-- == 0) goto end;
+	i_657:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 157265782) > 4294967295) {
+			if(ss <= 0) goto i_658;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_658:
+		if(ic-- == 0) goto end;
+	i_659:
+		if(ic-- == 0) goto end;
+	i_660:
+		if(ic-- == 0) goto end;
+	i_661:
+		if(ic-- == 0) goto end;
+	i_662:
+		if(ic-- == 0) goto end;
+	i_663:
+		if(ic-- == 0) goto end;
+	i_664:
+		if(ic-- == 0) goto end;
+	i_665:
+		if(ic-- == 0) goto end;
+	i_666:
+		if(ic-- == 0) goto end;
+	i_667:
+		if(ic-- == 0) goto end;
+	i_668:
+		if(ic-- == 0) goto end;
+	i_669:
+		if(ic-- == 0) goto end;
+	i_670:
+		if(ic-- == 0) goto end;
+	i_671:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3214452447) {
+			void* ret = &&i_672;
+			stack[ss++] = ret;
+			goto i_883;
+		}
+	i_672:
+		if(ic-- == 0) goto end;
+	i_673:
+		if(ic-- == 0) goto end;
+	i_674:
+		if(ic-- == 0) goto end;
+	i_675:
+		if(ic-- == 0) goto end;
+	i_676:
+		if(ic-- == 0) goto end;
+	i_677:
+		if(ic-- == 0) goto end;
+	i_678:
+		if(ic-- == 0) goto end;
+	i_679:
+		if(ic-- == 0) goto end;
+	i_680:
+		if(ic-- == 0) goto end;
+	i_681:
+		if(ic-- == 0) goto end;
+	i_682:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 288253489) > 4294967295) {
+			if(ss <= 0) goto i_683;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_683:
+		if(ic-- == 0) goto end;
+	i_684:
+		if(ic-- == 0) goto end;
+	i_685:
+		if(ic-- == 0) goto end;
+	i_686:
+		if(ic-- == 0) goto end;
+	i_687:
+		if(ic-- == 0) goto end;
+	i_688:
+		if(ic-- == 0) goto end;
+	i_689:
+		if(ic-- == 0) goto end;
+	i_690:
+		if(ic-- == 0) goto end;
+	i_691:
+		if(ic-- == 0) goto end;
+	i_692:
+		if(ic-- == 0) goto end;
+	i_693:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3482595217) > 4294967295) {
+			if(ss <= 0) goto i_694;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_694:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3120377816) > 4294967295) {
+			if(ss <= 0) goto i_695;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_695:
+		if(ic-- == 0) goto end;
+	i_696:
+		if(ic-- == 0) goto end;
+	i_697:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4245221468) > 4294967295) {
+			void* ret = &&i_698;
+			stack[ss++] = ret;
+			goto i_703;
+		}
+	i_698:
+		if(ic-- == 0) goto end;
+	i_699:
+		if(ic-- == 0) goto end;
+	i_700:
+		if(ic-- == 0) goto end;
+	i_701:
+		if(ic-- == 0) goto end;
+	i_702:
+		if(ic-- == 0) goto end;
+	i_703:
+		if(ic-- == 0) goto end;
+	i_704:
+		if(ic-- == 0) goto end;
+	i_705:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2319198595) > 4294967295) {
+			void* ret = &&i_706;
+			stack[ss++] = ret;
+			goto i_892;
+		}
+	i_706:
+		if(ic-- == 0) goto end;
+	i_707:
+		if(ic-- == 0) goto end;
+	i_708:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2399187042) > 4294967295) {
+			void* ret = &&i_709;
+			stack[ss++] = ret;
+			goto i_796;
+		}
+	i_709:
+		if(ic-- == 0) goto end;
+	i_710:
+		if(ic-- == 0) goto end;
+	i_711:
+		if(ic-- == 0) goto end;
+	i_712:
+		if(ic-- == 0) goto end;
+	i_713:
+		if(ic-- == 0) goto end;
+	i_714:
+		if(ic-- == 0) goto end;
+	i_715:
+		if(ic-- == 0) goto end;
+	i_716:
+		if(ic-- == 0) goto end;
+	i_717:
+		if(ic-- == 0) goto end;
+	i_718:
+		if(ic-- == 0) goto end;
+	i_719:
+		if(ic-- == 0) goto end;
+	i_720:
+		if(ic-- == 0) goto end;
+	i_721:
+		if(ic-- == 0) goto end;
+	i_722:
+		if(ic-- == 0) goto end;
+	i_723:
+		if(ic-- == 0) goto end;
+	i_724:
+		if(ic-- == 0) goto end;
+	i_725:
+		if(ic-- == 0) goto end;
+	i_726:
+		if(ic-- == 0) goto end;
+	i_727:
+		if(ic-- == 0) goto end;
+	i_728:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4184393193) > 4294967295) {
+			void* ret = &&i_729;
+			stack[ss++] = ret;
+			goto i_770;
+		}
+	i_729:
+		if(ic-- == 0) goto end;
+	i_730:
+		if(ic-- == 0) goto end;
+	i_731:
+		if(ic-- == 0) goto end;
+	i_732:
+		if(ic-- == 0) goto end;
+	i_733:
+		if(ic-- == 0) goto end;
+	i_734:
+		if(ic-- == 0) goto end;
+	i_735:
+		if(ic-- == 0) goto end;
+	i_736:
+		if(ic-- == 0) goto end;
+	i_737:
+		if(ic-- == 0) goto end;
+	i_738:
+		if(ic-- == 0) goto end;
+	i_739:
+		if(ic-- == 0) goto end;
+	i_740:
+		if(ic-- == 0) goto end;
+	i_741:
+		if(ic-- == 0) goto end;
+	i_742:
+		if(ic-- == 0) goto end;
+	i_743:
+		if(ic-- == 0) goto end;
+	i_744:
+		if(ic-- == 0) goto end;
+	i_745:
+		if(ic-- == 0) goto end;
+	i_746:
+		if(ic-- == 0) goto end;
+	i_747:
+		if(ic-- == 0) goto end;
+	i_748:
+		if(ic-- == 0) goto end;
+	i_749:
+		if(ic-- == 0) goto end;
+	i_750:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1311714633) > 4294967295) {
+			void* ret = &&i_751;
+			stack[ss++] = ret;
+			goto i_801;
+		}
+	i_751:
+		if(ic-- == 0) goto end;
+	i_752:
+		if(ic-- == 0) goto end;
+	i_753:
+		if(ic-- == 0) goto end;
+	i_754:
+		if(ic-- == 0) goto end;
+	i_755:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2990284553) {
+			void* ret = &&i_756;
+			stack[ss++] = ret;
+			goto i_1009;
+		}
+	i_756:
+		if(ic-- == 0) goto end;
+	i_757:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2525881729) > 4294967295) {
+			if(ss <= 0) goto i_758;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_758:
+		if(ic-- == 0) goto end;
+	i_759:
+		if(ic-- == 0) goto end;
+	i_760:
+		if(ic-- == 0) goto end;
+	i_761:
+		if(ic-- == 0) goto end;
+	i_762:
+		if(ic-- == 0) goto end;
+	i_763:
+		if(ic-- == 0) goto end;
+	i_764:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1536893296) > 4294967295) {
+			if(ss <= 0) goto i_765;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_765:
+		if(ic-- == 0) goto end;
+	i_766:
+		if(ic-- == 0) goto end;
+	i_767:
+		if(ic-- == 0) goto end;
+	i_768:
+		if(ic-- == 0) goto end;
+	i_769:
+		if(ic-- == 0) goto end;
+	i_770:
+		if(ic-- == 0) goto end;
+	i_771:
+		if(ic-- == 0) goto end;
+	i_772:
+		if(ic-- == 0) goto end;
+	i_773:
+		if(ic-- == 0) goto end;
+	i_774:
+		if(ic-- == 0) goto end;
+	i_775:
+		if(ic-- == 0) goto end;
+	i_776:
+		if(ic-- == 0) goto end;
+	i_777:
+		if(ic-- == 0) goto end;
+	i_778:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1484067825) {
+			void* ret = &&i_779;
+			stack[ss++] = ret;
+			goto i_893;
+		}
+	i_779:
+		if(ic-- == 0) goto end;
+	i_780:
+		if(ic-- == 0) goto end;
+	i_781:
+		if(ic-- == 0) goto end;
+	i_782:
+		if(ic-- == 0) goto end;
+	i_783:
+		if(ic-- == 0) goto end;
+	i_784:
+		if(ic-- == 0) goto end;
+	i_785:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2996317137) > 4294967295) {
+			void* ret = &&i_786;
+			stack[ss++] = ret;
+			goto i_949;
+		}
+	i_786:
+		if(ic-- == 0) goto end;
+	i_787:
+		if(ic-- == 0) goto end;
+	i_788:
+		if(ic-- == 0) goto end;
+	i_789:
+		if(ic-- == 0) goto end;
+	i_790:
+		if(ic-- == 0) goto end;
+	i_791:
+		if(ic-- == 0) goto end;
+	i_792:
+		if(ic-- == 0) goto end;
+	i_793:
+		if(ic-- == 0) goto end;
+	i_794:
+		if(ic-- == 0) goto end;
+	i_795:
+		if(ic-- == 0) goto end;
+	i_796:
+		if(ic-- == 0) goto end;
+	i_797:
+		if(ic-- == 0) goto end;
+	i_798:
+		if(ic-- == 0) goto end;
+	i_799:
+		if(ic-- == 0) goto end;
+	i_800:
+		if(ic-- == 0) goto end;
+	i_801:
+		if(ic-- == 0) goto end;
+	i_802:
+		if(ic-- == 0) goto end;
+	i_803:
+		if(ic-- == 0) goto end;
+	i_804:
+		if(ic-- == 0) goto end;
+	i_805:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1346539270) > 4294967295) {
+			void* ret = &&i_806;
+			stack[ss++] = ret;
+			goto i_813;
+		}
+	i_806:
+		if(ic-- == 0) goto end;
+	i_807:
+		if(ic-- == 0) goto end;
+	i_808:
+		if(ic-- == 0) goto end;
+	i_809:
+		if(ic-- == 0) goto end;
+	i_810:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1134804964) > 4294967295) {
+			if(ss <= 0) goto i_811;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_811:
+		if(ic-- == 0) goto end;
+	i_812:
+		if(ic-- == 0) goto end;
+	i_813:
+		if(ic-- == 0) goto end;
+	i_814:
+		if(ic-- == 0) goto end;
+	i_815:
+		if(ic-- == 0) goto end;
+	i_816:
+		if(ic-- == 0) goto end;
+	i_817:
+		if(ic-- == 0) goto end;
+	i_818:
+		if(ic-- == 0) goto end;
+	i_819:
+		if(ic-- == 0) goto end;
+	i_820:
+		if(ic-- == 0) goto end;
+	i_821:
+		if(ic-- == 0) goto end;
+	i_822:
+		if(ic-- == 0) goto end;
+	i_823:
+		if(ic-- == 0) goto end;
+	i_824:
+		if(ic-- == 0) goto end;
+	i_825:
+		if(ic-- == 0) goto end;
+	i_826:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2353620466) > 4294967295) {
+			if(ss <= 0) goto i_827;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_827:
+		if(ic-- == 0) goto end;
+	i_828:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 246564735) > 4294967295) {
+			if(ss <= 0) goto i_829;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_829:
+		if(ic-- == 0) goto end;
+	i_830:
+		if(ic-- == 0) goto end;
+	i_831:
+		if(ic-- == 0) goto end;
+	i_832:
+		if(ic-- == 0) goto end;
+	i_833:
+		if(ic-- == 0) goto end;
+	i_834:
+		if(ic-- == 0) goto end;
+	i_835:
+		if(ic-- == 0) goto end;
+	i_836:
+		if(ic-- == 0) goto end;
+	i_837:
+		if(ic-- == 0) goto end;
+	i_838:
+		if(ic-- == 0) goto end;
+	i_839:
+		if(ic-- == 0) goto end;
+	i_840:
+		if(ic-- == 0) goto end;
+	i_841:
+		if(ic-- == 0) goto end;
+	i_842:
+		if(ic-- == 0) goto end;
+	i_843:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 782639687) > 4294967295) {
+			void* ret = &&i_844;
+			stack[ss++] = ret;
+			goto i_955;
+		}
+	i_844:
+		if(ic-- == 0) goto end;
+	i_845:
+		if(ic-- == 0) goto end;
+	i_846:
+		if(ic-- == 0) goto end;
+	i_847:
+		if(ic-- == 0) goto end;
+	i_848:
+		if(ic-- == 0) goto end;
+	i_849:
+		if(ic-- == 0) goto end;
+	i_850:
+		if(ic-- == 0) goto end;
+	i_851:
+		if(ic-- == 0) goto end;
+	i_852:
+		if(ic-- == 0) goto end;
+	i_853:
+		if(ic-- == 0) goto end;
+	i_854:
+		if(ic-- == 0) goto end;
+	i_855:
+		if(ic-- == 0) goto end;
+	i_856:
+		if(ic-- == 0) goto end;
+	i_857:
+		if(ic-- == 0) goto end;
+	i_858:
+		if(ic-- == 0) goto end;
+	i_859:
+		if(ic-- == 0) goto end;
+	i_860:
+		if(ic-- == 0) goto end;
+	i_861:
+		if(ic-- == 0) goto end;
+	i_862:
+		if(ic-- == 0) goto end;
+	i_863:
+		if(ic-- == 0) goto end;
+	i_864:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 374700188) > 4294967295) {
+			if(ss <= 0) goto i_865;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_865:
+		if(ic-- == 0) goto end;
+	i_866:
+		if(ic-- == 0) goto end;
+	i_867:
+		if(ic-- == 0) goto end;
+	i_868:
+		if(ic-- == 0) goto end;
+	i_869:
+		if(ic-- == 0) goto end;
+	i_870:
+		if(ic-- == 0) goto end;
+	i_871:
+		if(ic-- == 0) goto end;
+	i_872:
+		if(ic-- == 0) goto end;
+	i_873:
+		if(ic-- == 0) goto end;
+	i_874:
+		if(ic-- == 0) goto end;
+	i_875:
+		if(ic-- == 0) goto end;
+	i_876:
+		if(ic-- == 0) goto end;
+	i_877:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1975848362) {
+			void* ret = &&i_878;
+			stack[ss++] = ret;
+			goto i_971;
+		}
+	i_878:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 519058282) > 4294967295) {
+			void* ret = &&i_879;
+			stack[ss++] = ret;
+			goto i_77;
+		}
+	i_879:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3810721988) > 4294967295) {
+			if(ss <= 0) goto i_880;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_880:
+		if(ic-- == 0) goto end;
+	i_881:
+		if(ic-- == 0) goto end;
+	i_882:
+		if(ic-- == 0) goto end;
+	i_883:
+		if(ic-- == 0) goto end;
+	i_884:
+		if(ic-- == 0) goto end;
+	i_885:
+		if(ic-- == 0) goto end;
+	i_886:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 312929243) > 4294967295) {
+			void* ret = &&i_887;
+			stack[ss++] = ret;
+			goto i_943;
+		}
+	i_887:
+		if(ic-- == 0) goto end;
+	i_888:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 75875866) > 4294967295) {
+			void* ret = &&i_889;
+			stack[ss++] = ret;
+			goto i_969;
+		}
+	i_889:
+		if(ic-- == 0) goto end;
+	i_890:
+		if(ic-- == 0) goto end;
+	i_891:
+		if(ic-- == 0) goto end;
+	i_892:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3298258409) > 4294967295) {
+			if(ss <= 0) goto i_893;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_893:
+		if(ic-- == 0) goto end;
+	i_894:
+		if(ic-- == 0) goto end;
+	i_895:
+		if(ic-- == 0) goto end;
+	i_896:
+		if(ic-- == 0) goto end;
+	i_897:
+		if(ic-- == 0) goto end;
+	i_898:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3944707394) {
+			void* ret = &&i_899;
+			stack[ss++] = ret;
+			goto i_974;
+		}
+	i_899:
+		if(ic-- == 0) goto end;
+	i_900:
+		if(ic-- == 0) goto end;
+	i_901:
+		if(ic-- == 0) goto end;
+	i_902:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3522509435) > 4294967295) {
+			void* ret = &&i_903;
+			stack[ss++] = ret;
+			goto i_7;
+		}
+	i_903:
+		if(ic-- == 0) goto end;
+	i_904:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2717695818) > 4294967295) {
+			void* ret = &&i_905;
+			stack[ss++] = ret;
+			goto i_95;
+		}
+	i_905:
+		if(ic-- == 0) goto end;
+	i_906:
+		if(ic-- == 0) goto end;
+	i_907:
+		if(ic-- == 0) goto end;
+	i_908:
+		if(ic-- == 0) goto end;
+	i_909:
+		if(ic-- == 0) goto end;
+	i_910:
+		if(ic-- == 0) goto end;
+	i_911:
+		if(ic-- == 0) goto end;
+	i_912:
+		if(ic-- == 0) goto end;
+	i_913:
+		if(ic-- == 0) goto end;
+	i_914:
+		if(ic-- == 0) goto end;
+	i_915:
+		if(ic-- == 0) goto end;
+	i_916:
+		if(ic-- == 0) goto end;
+	i_917:
+		if(ic-- == 0) goto end;
+	i_918:
+		if(ic-- == 0) goto end;
+	i_919:
+		if(ic-- == 0) goto end;
+	i_920:
+		if(ic-- == 0) goto end;
+	i_921:
+		if(ic-- == 0) goto end;
+	i_922:
+		if(ic-- == 0) goto end;
+	i_923:
+		if(ic-- == 0) goto end;
+	i_924:
+		if(ic-- == 0) goto end;
+	i_925:
+		if(ic-- == 0) goto end;
+	i_926:
+		if(ic-- == 0) goto end;
+	i_927:
+		if(ic-- == 0) goto end;
+	i_928:
+		if(ic-- == 0) goto end;
+	i_929:
+		if(ic-- == 0) goto end;
+	i_930:
+		if(ic-- == 0) goto end;
+	i_931:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1170709507) > 4294967295) {
+			if(ss <= 0) goto i_932;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_932:
+		if(ic-- == 0) goto end;
+	i_933:
+		if(ic-- == 0) goto end;
+	i_934:
+		if(ic-- == 0) goto end;
+	i_935:
+		if(ic-- == 0) goto end;
+	i_936:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3901871423) > 4294967295) {
+			void* ret = &&i_937;
+			stack[ss++] = ret;
+			goto i_28;
+		}
+	i_937:
+		if(ic-- == 0) goto end;
+	i_938:
+		if(ic-- == 0) goto end;
+	i_939:
+		if(ic-- == 0) goto end;
+	i_940:
+		if(ic-- == 0) goto end;
+	i_941:
+		if(ic-- == 0) goto end;
+	i_942:
+		if(ic-- == 0) goto end;
+	i_943:
+		if(ic-- == 0) goto end;
+	i_944:
+		if(ic-- == 0) goto end;
+	i_945:
+		if(ic-- == 0) goto end;
+	i_946:
+		if(ic-- == 0) goto end;
+	i_947:
+		if(ic-- == 0) goto end;
+	i_948:
+		if(ic-- == 0) goto end;
+	i_949:
+		if(ic-- == 0) goto end;
+	i_950:
+		if(ic-- == 0) goto end;
+	i_951:
+		if(ic-- == 0) goto end;
+	i_952:
+		if(ic-- == 0) goto end;
+	i_953:
+		if(ic-- == 0) goto end;
+	i_954:
+		if(ic-- == 0) goto end;
+	i_955:
+		if(ic-- == 0) goto end;
+	i_956:
+		if(ic-- == 0) goto end;
+	i_957:
+		if(ic-- == 0) goto end;
+	i_958:
+		if(ic-- == 0) goto end;
+	i_959:
+		if(ic-- == 0) goto end;
+	i_960:
+		if(ic-- == 0) goto end;
+	i_961:
+		if(ic-- == 0) goto end;
+	i_962:
+		if(ic-- == 0) goto end;
+	i_963:
+		if(ic-- == 0) goto end;
+	i_964:
+		if(ic-- == 0) goto end;
+	i_965:
+		if(ic-- == 0) goto end;
+	i_966:
+		if(ic-- == 0) goto end;
+	i_967:
+		if(ic-- == 0) goto end;
+	i_968:
+		if(ic-- == 0) goto end;
+	i_969:
+		if(ic-- == 0) goto end;
+	i_970:
+		if(ic-- == 0) goto end;
+	i_971:
+		if(ic-- == 0) goto end;
+	i_972:
+		if(ic-- == 0) goto end;
+	i_973:
+		if(ic-- == 0) goto end;
+	i_974:
+		if(ic-- == 0) goto end;
+	i_975:
+		if(ic-- == 0) goto end;
+	i_976:
+		if(ic-- == 0) goto end;
+	i_977:
+		if(ic-- == 0) goto end;
+	i_978:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1456175612) > 4294967295) {
+			void* ret = &&i_979;
+			stack[ss++] = ret;
+			goto i_26;
+		}
+	i_979:
+		if(ic-- == 0) goto end;
+	i_980:
+		if(ic-- == 0) goto end;
+	i_981:
+		if(ic-- == 0) goto end;
+	i_982:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 808127352) > 4294967295) {
+			void* ret = &&i_983;
+			stack[ss++] = ret;
+			goto i_197;
+		}
+	i_983:
+		if(ic-- == 0) goto end;
+	i_984:
+		if(ic-- == 0) goto end;
+	i_985:
+		if(ic-- == 0) goto end;
+	i_986:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 741949704) {
+			void* ret = &&i_987;
+			stack[ss++] = ret;
+			goto i_59;
+		}
+	i_987:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3740247587) > 4294967295) {
+			if(ss <= 0) goto i_988;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_988:
+		if(ic-- == 0) goto end;
+	i_989:
+		if(ic-- == 0) goto end;
+	i_990:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3550479444) > 4294967295) {
+			if(ss <= 0) goto i_991;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_991:
+		if(ic-- == 0) goto end;
+	i_992:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1552714076) > 4294967295) {
+			void* ret = &&i_993;
+			stack[ss++] = ret;
+			goto i_73;
+		}
+	i_993:
+		if(ic-- == 0) goto end;
+	i_994:
+		if(ic-- == 0) goto end;
+	i_995:
+		if(ic-- == 0) goto end;
+	i_996:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1901489237) > 4294967295) {
+			if(ss <= 0) goto i_997;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_997:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1314937403) > 4294967295) {
+			void* ret = &&i_998;
+			stack[ss++] = ret;
+			goto i_21;
+		}
+	i_998:
+		if(ic-- == 0) goto end;
+	i_999:
+		if(ic-- == 0) goto end;
+	i_1000:
+		if(ic-- == 0) goto end;
+	i_1001:
+		if(ic-- == 0) goto end;
+	i_1002:
+		if(ic-- == 0) goto end;
+	i_1003:
+		if(ic-- == 0) goto end;
+	i_1004:
+		if(ic-- == 0) goto end;
+	i_1005:
+		if(ic-- == 0) goto end;
+	i_1006:
+		if(ic-- == 0) goto end;
+	i_1007:
+		if(ic-- == 0) goto end;
+	i_1008:
+		if(ic-- == 0) goto end;
+	i_1009:
+		if(ic-- == 0) goto end;
+	i_1010:
+		if(ic-- == 0) goto end;
+	i_1011:
+		if(ic-- == 0) goto end;
+	i_1012:
+		if(ic-- == 0) goto end;
+	i_1013:
+		if(ic-- == 0) goto end;
+	i_1014:
+		if(ic-- == 0) goto end;
+	i_1015:
+		if(ic-- == 0) goto end;
+	i_1016:
+		if(ic-- == 0) goto end;
+	i_1017:
+		if(ic-- == 0) goto end;
+	i_1018:
+		if(ic-- == 0) goto end;
+	i_1019:
+		if(ic-- == 0) goto end;
+	i_1020:
+		if(ic-- == 0) goto end;
+	i_1021:
+		if(ic-- == 0) goto end;
+	i_1022:
+		if(ic-- == 0) goto end;
+	i_1023:
+		if(ic-- == 0) goto end;
+		goto i_0;
+	end:
+		PROF_STDOUT();
+		fprintf(stdout, "VM branches: %lu\n", branches);
+		return 0;
+}

+ 2967 - 0
tests/branch_prediction/branch_predictably.c

@@ -0,0 +1,2967 @@
+#include "stdint.h"
+#include "stdlib.h"
+#include "stdio.h"
+#define PROF_USER_EVENTS_ONLY
+#define PROF_EVENT_LIST \
+  PROF_EVENT_HW(BRANCH_INSTRUCTIONS) \
+  PROF_EVENT_HW(BRANCH_MISSES) \
+  PROF_EVENT_SW(TASK_CLOCK)
+#include "prof.h"
+int main(int argc, char** argv) {
+	uint64_t ic = argc > 1 ? atoi(argv[1]) : 65536;
+	uint64_t ss = 0;
+	uint64_t branches = 0;
+	uint32_t state = 0;
+	uint32_t state2 = 123456789;
+	void* stack[65536];
+	PROF_START();
+	i_0:
+		if(ic-- == 0) goto end;
+	i_1:
+		if(ic-- == 0) goto end;
+	i_2:
+		if(ic-- == 0) goto end;
+	i_3:
+		if(ic-- == 0) goto end;
+	i_4:
+		if(ic-- == 0) goto end;
+	i_5:
+		if(ic-- == 0) goto end;
+	i_6:
+		if(ic-- == 0) goto end;
+	i_7:
+		if(ic-- == 0) goto end;
+	i_8:
+		if(ic-- == 0) goto end;
+	i_9:
+		if(ic-- == 0) goto end;
+	i_10:
+		if(ic-- == 0) goto end;
+	i_11:
+		if(ic-- == 0) goto end;
+	i_12:
+		if(ic-- == 0) goto end;
+	i_13:
+		if(ic-- == 0) goto end;
+	i_14:
+		if(ic-- == 0) goto end;
+	i_15:
+		if(ic-- == 0) goto end;
+	i_16:
+		if(ic-- == 0) goto end;
+	i_17:
+		if(ic-- == 0) goto end;
+	i_18:
+		if(ic-- == 0) goto end;
+	i_19:
+		if(ic-- == 0) goto end;
+	i_20:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3288853519) > 4294967295) {
+			state = 0;
+			void* ret = &&i_21;
+			stack[ss++] = ret;
+			goto i_261;
+		}
+	i_21:
+		if(ic-- == 0) goto end;
+	i_22:
+		if(ic-- == 0) goto end;
+	i_23:
+		if(ic-- == 0) goto end;
+	i_24:
+		if(ic-- == 0) goto end;
+	i_25:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3812903776) > 4294967295) {
+			state = 0;
+			void* ret = &&i_26;
+			stack[ss++] = ret;
+			goto i_281;
+		}
+	i_26:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 639652386) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_27;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_27:
+		if(ic-- == 0) goto end;
+	i_28:
+		if(ic-- == 0) goto end;
+	i_29:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2961632904) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_30;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_30:
+		if(ic-- == 0) goto end;
+	i_31:
+		if(ic-- == 0) goto end;
+	i_32:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 474307802) > 4294967295) {
+			state = 0;
+			void* ret = &&i_33;
+			stack[ss++] = ret;
+			goto i_136;
+		}
+	i_33:
+		if(ic-- == 0) goto end;
+	i_34:
+		if(ic-- == 0) goto end;
+	i_35:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2093095523) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_36;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_36:
+		if(ic-- == 0) goto end;
+	i_37:
+		if(ic-- == 0) goto end;
+	i_38:
+		if(ic-- == 0) goto end;
+	i_39:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3154726805) > 4294967295) {
+			state = 0;
+			void* ret = &&i_40;
+			stack[ss++] = ret;
+			goto i_232;
+		}
+	i_40:
+		if(ic-- == 0) goto end;
+	i_41:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2044508552) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_42;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_42:
+		if(ic-- == 0) goto end;
+	i_43:
+		if(ic-- == 0) goto end;
+	i_44:
+		if(ic-- == 0) goto end;
+	i_45:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 277236801) > 4294967295) {
+			state = 0;
+			void* ret = &&i_46;
+			stack[ss++] = ret;
+			goto i_171;
+		}
+	i_46:
+		if(ic-- == 0) goto end;
+	i_47:
+		if(ic-- == 0) goto end;
+	i_48:
+		if(ic-- == 0) goto end;
+	i_49:
+		if(ic-- == 0) goto end;
+	i_50:
+		if(ic-- == 0) goto end;
+	i_51:
+		if(ic-- == 0) goto end;
+	i_52:
+		if(ic-- == 0) goto end;
+	i_53:
+		if(ic-- == 0) goto end;
+	i_54:
+		if(ic-- == 0) goto end;
+	i_55:
+		if(ic-- == 0) goto end;
+	i_56:
+		if(ic-- == 0) goto end;
+	i_57:
+		if(ic-- == 0) goto end;
+	i_58:
+		if(ic-- == 0) goto end;
+	i_59:
+		if(ic-- == 0) goto end;
+	i_60:
+		if(ic-- == 0) goto end;
+	i_61:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1058438924) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_62;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_62:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3520888866) > 4294967295) {
+			state = 0;
+			void* ret = &&i_63;
+			stack[ss++] = ret;
+			goto i_231;
+		}
+	i_63:
+		if(ic-- == 0) goto end;
+	i_64:
+		if(ic-- == 0) goto end;
+	i_65:
+		if(ic-- == 0) goto end;
+	i_66:
+		if(ic-- == 0) goto end;
+	i_67:
+		if(ic-- == 0) goto end;
+	i_68:
+		if(ic-- == 0) goto end;
+	i_69:
+		if(ic-- == 0) goto end;
+	i_70:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3793324182) > 4294967295) {
+			state = 0;
+			void* ret = &&i_71;
+			stack[ss++] = ret;
+			goto i_135;
+		}
+	i_71:
+		if(ic-- == 0) goto end;
+	i_72:
+		if(ic-- == 0) goto end;
+	i_73:
+		if(ic-- == 0) goto end;
+	i_74:
+		if(ic-- == 0) goto end;
+	i_75:
+		if(ic-- == 0) goto end;
+	i_76:
+		if(ic-- == 0) goto end;
+	i_77:
+		if(ic-- == 0) goto end;
+	i_78:
+		if(ic-- == 0) goto end;
+	i_79:
+		if(ic-- == 0) goto end;
+	i_80:
+		if(ic-- == 0) goto end;
+	i_81:
+		if(ic-- == 0) goto end;
+	i_82:
+		if(ic-- == 0) goto end;
+	i_83:
+		if(ic-- == 0) goto end;
+	i_84:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1542024869) > 4294967295) {
+			state = 0;
+			void* ret = &&i_85;
+			stack[ss++] = ret;
+			goto i_221;
+		}
+	i_85:
+		if(ic-- == 0) goto end;
+	i_86:
+		if(ic-- == 0) goto end;
+	i_87:
+		if(ic-- == 0) goto end;
+	i_88:
+		if(ic-- == 0) goto end;
+	i_89:
+		if(ic-- == 0) goto end;
+	i_90:
+		if(ic-- == 0) goto end;
+	i_91:
+		if(ic-- == 0) goto end;
+	i_92:
+		if(ic-- == 0) goto end;
+	i_93:
+		if(ic-- == 0) goto end;
+	i_94:
+		if(ic-- == 0) goto end;
+	i_95:
+		if(ic-- == 0) goto end;
+	i_96:
+		if(ic-- == 0) goto end;
+	i_97:
+		if(ic-- == 0) goto end;
+	i_98:
+		if(ic-- == 0) goto end;
+	i_99:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 792504979) > 4294967295) {
+			state = 0;
+			void* ret = &&i_100;
+			stack[ss++] = ret;
+			goto i_103;
+		}
+	i_100:
+		if(ic-- == 0) goto end;
+	i_101:
+		if(ic-- == 0) goto end;
+	i_102:
+		if(ic-- == 0) goto end;
+	i_103:
+		if(ic-- == 0) goto end;
+	i_104:
+		if(ic-- == 0) goto end;
+	i_105:
+		if(ic-- == 0) goto end;
+	i_106:
+		if(ic-- == 0) goto end;
+	i_107:
+		if(ic-- == 0) goto end;
+	i_108:
+		if(ic-- == 0) goto end;
+	i_109:
+		if(ic-- == 0) goto end;
+	i_110:
+		if(ic-- == 0) goto end;
+	i_111:
+		if(ic-- == 0) goto end;
+	i_112:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 980709207) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_113;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_113:
+		if(ic-- == 0) goto end;
+	i_114:
+		if(ic-- == 0) goto end;
+	i_115:
+		if(ic-- == 0) goto end;
+	i_116:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 971078638) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_117;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_117:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3848388585) > 4294967295) {
+			state = 0;
+			void* ret = &&i_118;
+			stack[ss++] = ret;
+			goto i_260;
+		}
+	i_118:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2057363175) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_119;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_119:
+		if(ic-- == 0) goto end;
+	i_120:
+		if(ic-- == 0) goto end;
+	i_121:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2208602459) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_122;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_122:
+		if(ic-- == 0) goto end;
+	i_123:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2808635116) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_124;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_124:
+		if(ic-- == 0) goto end;
+	i_125:
+		if(ic-- == 0) goto end;
+	i_126:
+		if(ic-- == 0) goto end;
+	i_127:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3545628586) > 4294967295) {
+			state = 0;
+			void* ret = &&i_128;
+			stack[ss++] = ret;
+			goto i_157;
+		}
+	i_128:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4232781027) > 4294967295) {
+			state = 0;
+			void* ret = &&i_129;
+			stack[ss++] = ret;
+			goto i_164;
+		}
+	i_129:
+		if(ic-- == 0) goto end;
+	i_130:
+		if(ic-- == 0) goto end;
+	i_131:
+		if(ic-- == 0) goto end;
+	i_132:
+		if(ic-- == 0) goto end;
+	i_133:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3244552482) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_134;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_134:
+		if(ic-- == 0) goto end;
+	i_135:
+		if(ic-- == 0) goto end;
+	i_136:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3405076866) > 4294967295) {
+			state = 0;
+			void* ret = &&i_137;
+			stack[ss++] = ret;
+			goto i_160;
+		}
+	i_137:
+		if(ic-- == 0) goto end;
+	i_138:
+		if(ic-- == 0) goto end;
+	i_139:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 511632434) > 4294967295) {
+			state = 0;
+			void* ret = &&i_140;
+			stack[ss++] = ret;
+			goto i_346;
+		}
+	i_140:
+		if(ic-- == 0) goto end;
+	i_141:
+		if(ic-- == 0) goto end;
+	i_142:
+		if(ic-- == 0) goto end;
+	i_143:
+		if(ic-- == 0) goto end;
+	i_144:
+		if(ic-- == 0) goto end;
+	i_145:
+		if(ic-- == 0) goto end;
+	i_146:
+		if(ic-- == 0) goto end;
+	i_147:
+		if(ic-- == 0) goto end;
+	i_148:
+		if(ic-- == 0) goto end;
+	i_149:
+		if(ic-- == 0) goto end;
+	i_150:
+		if(ic-- == 0) goto end;
+	i_151:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 696643743) > 4294967295) {
+			state = 0;
+			void* ret = &&i_152;
+			stack[ss++] = ret;
+			goto i_161;
+		}
+	i_152:
+		if(ic-- == 0) goto end;
+	i_153:
+		if(ic-- == 0) goto end;
+	i_154:
+		if(ic-- == 0) goto end;
+	i_155:
+		if(ic-- == 0) goto end;
+	i_156:
+		if(ic-- == 0) goto end;
+	i_157:
+		if(ic-- == 0) goto end;
+	i_158:
+		if(ic-- == 0) goto end;
+	i_159:
+		if(ic-- == 0) goto end;
+	i_160:
+		if(ic-- == 0) goto end;
+	i_161:
+		if(ic-- == 0) goto end;
+	i_162:
+		if(ic-- == 0) goto end;
+	i_163:
+		if(ic-- == 0) goto end;
+	i_164:
+		if(ic-- == 0) goto end;
+	i_165:
+		if(ic-- == 0) goto end;
+	i_166:
+		if(ic-- == 0) goto end;
+	i_167:
+		if(ic-- == 0) goto end;
+	i_168:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3553648057) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_169;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_169:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2307482321) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_170;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_170:
+		if(ic-- == 0) goto end;
+	i_171:
+		if(ic-- == 0) goto end;
+	i_172:
+		if(ic-- == 0) goto end;
+	i_173:
+		if(ic-- == 0) goto end;
+	i_174:
+		if(ic-- == 0) goto end;
+	i_175:
+		if(ic-- == 0) goto end;
+	i_176:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 371928313) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_177;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_177:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2322879371) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_178;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_178:
+		if(ic-- == 0) goto end;
+	i_179:
+		if(ic-- == 0) goto end;
+	i_180:
+		if(ic-- == 0) goto end;
+	i_181:
+		if(ic-- == 0) goto end;
+	i_182:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1986846731) > 4294967295) {
+			state = 0;
+			void* ret = &&i_183;
+			stack[ss++] = ret;
+			goto i_415;
+		}
+	i_183:
+		if(ic-- == 0) goto end;
+	i_184:
+		if(ic-- == 0) goto end;
+	i_185:
+		if(ic-- == 0) goto end;
+	i_186:
+		if(ic-- == 0) goto end;
+	i_187:
+		if(ic-- == 0) goto end;
+	i_188:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4140864485) > 4294967295) {
+			state = 0;
+			void* ret = &&i_189;
+			stack[ss++] = ret;
+			goto i_343;
+		}
+	i_189:
+		if(ic-- == 0) goto end;
+	i_190:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 328982338) > 4294967295) {
+			state = 0;
+			void* ret = &&i_191;
+			stack[ss++] = ret;
+			goto i_268;
+		}
+	i_191:
+		if(ic-- == 0) goto end;
+	i_192:
+		if(ic-- == 0) goto end;
+	i_193:
+		if(ic-- == 0) goto end;
+	i_194:
+		if(ic-- == 0) goto end;
+	i_195:
+		if(ic-- == 0) goto end;
+	i_196:
+		if(ic-- == 0) goto end;
+	i_197:
+		if(ic-- == 0) goto end;
+	i_198:
+		if(ic-- == 0) goto end;
+	i_199:
+		if(ic-- == 0) goto end;
+	i_200:
+		if(ic-- == 0) goto end;
+	i_201:
+		if(ic-- == 0) goto end;
+	i_202:
+		if(ic-- == 0) goto end;
+	i_203:
+		if(ic-- == 0) goto end;
+	i_204:
+		if(ic-- == 0) goto end;
+	i_205:
+		if(ic-- == 0) goto end;
+	i_206:
+		if(ic-- == 0) goto end;
+	i_207:
+		if(ic-- == 0) goto end;
+	i_208:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4134670764) > 4294967295) {
+			state = 0;
+			void* ret = &&i_209;
+			stack[ss++] = ret;
+			goto i_442;
+		}
+	i_209:
+		if(ic-- == 0) goto end;
+	i_210:
+		if(ic-- == 0) goto end;
+	i_211:
+		if(ic-- == 0) goto end;
+	i_212:
+		if(ic-- == 0) goto end;
+	i_213:
+		if(ic-- == 0) goto end;
+	i_214:
+		if(ic-- == 0) goto end;
+	i_215:
+		if(ic-- == 0) goto end;
+	i_216:
+		if(ic-- == 0) goto end;
+	i_217:
+		if(ic-- == 0) goto end;
+	i_218:
+		if(ic-- == 0) goto end;
+	i_219:
+		if(ic-- == 0) goto end;
+	i_220:
+		if(ic-- == 0) goto end;
+	i_221:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2822139845) > 4294967295) {
+			state = 0;
+			void* ret = &&i_222;
+			stack[ss++] = ret;
+			goto i_406;
+		}
+	i_222:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 918537004) > 4294967295) {
+			state = 0;
+			void* ret = &&i_223;
+			stack[ss++] = ret;
+			goto i_394;
+		}
+	i_223:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1196865954) > 4294967295) {
+			state = 0;
+			void* ret = &&i_224;
+			stack[ss++] = ret;
+			goto i_466;
+		}
+	i_224:
+		if(ic-- == 0) goto end;
+	i_225:
+		if(ic-- == 0) goto end;
+	i_226:
+		if(ic-- == 0) goto end;
+	i_227:
+		if(ic-- == 0) goto end;
+	i_228:
+		if(ic-- == 0) goto end;
+	i_229:
+		if(ic-- == 0) goto end;
+	i_230:
+		if(ic-- == 0) goto end;
+	i_231:
+		if(ic-- == 0) goto end;
+	i_232:
+		if(ic-- == 0) goto end;
+	i_233:
+		if(ic-- == 0) goto end;
+	i_234:
+		if(ic-- == 0) goto end;
+	i_235:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 590251524) > 4294967295) {
+			state = 0;
+			void* ret = &&i_236;
+			stack[ss++] = ret;
+			goto i_385;
+		}
+	i_236:
+		if(ic-- == 0) goto end;
+	i_237:
+		if(ic-- == 0) goto end;
+	i_238:
+		if(ic-- == 0) goto end;
+	i_239:
+		if(ic-- == 0) goto end;
+	i_240:
+		if(ic-- == 0) goto end;
+	i_241:
+		if(ic-- == 0) goto end;
+	i_242:
+		if(ic-- == 0) goto end;
+	i_243:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2452641289) > 4294967295) {
+			state = 0;
+			void* ret = &&i_244;
+			stack[ss++] = ret;
+			goto i_402;
+		}
+	i_244:
+		if(ic-- == 0) goto end;
+	i_245:
+		if(ic-- == 0) goto end;
+	i_246:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4170012753) > 4294967295) {
+			state = 0;
+			void* ret = &&i_247;
+			stack[ss++] = ret;
+			goto i_249;
+		}
+	i_247:
+		if(ic-- == 0) goto end;
+	i_248:
+		if(ic-- == 0) goto end;
+	i_249:
+		if(ic-- == 0) goto end;
+	i_250:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3362009392) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_251;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_251:
+		if(ic-- == 0) goto end;
+	i_252:
+		if(ic-- == 0) goto end;
+	i_253:
+		if(ic-- == 0) goto end;
+	i_254:
+		if(ic-- == 0) goto end;
+	i_255:
+		if(ic-- == 0) goto end;
+	i_256:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4054309882) > 4294967295) {
+			state = 0;
+			void* ret = &&i_257;
+			stack[ss++] = ret;
+			goto i_420;
+		}
+	i_257:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 593509743) > 4294967295) {
+			state = 0;
+			void* ret = &&i_258;
+			stack[ss++] = ret;
+			goto i_330;
+		}
+	i_258:
+		if(ic-- == 0) goto end;
+	i_259:
+		if(ic-- == 0) goto end;
+	i_260:
+		if(ic-- == 0) goto end;
+	i_261:
+		if(ic-- == 0) goto end;
+	i_262:
+		if(ic-- == 0) goto end;
+	i_263:
+		if(ic-- == 0) goto end;
+	i_264:
+		if(ic-- == 0) goto end;
+	i_265:
+		if(ic-- == 0) goto end;
+	i_266:
+		if(ic-- == 0) goto end;
+	i_267:
+		if(ic-- == 0) goto end;
+	i_268:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2747033421) > 4294967295) {
+			state = 0;
+			void* ret = &&i_269;
+			stack[ss++] = ret;
+			goto i_395;
+		}
+	i_269:
+		if(ic-- == 0) goto end;
+	i_270:
+		if(ic-- == 0) goto end;
+	i_271:
+		if(ic-- == 0) goto end;
+	i_272:
+		if(ic-- == 0) goto end;
+	i_273:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3684732774) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_274;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_274:
+		if(ic-- == 0) goto end;
+	i_275:
+		if(ic-- == 0) goto end;
+	i_276:
+		if(ic-- == 0) goto end;
+	i_277:
+		if(ic-- == 0) goto end;
+	i_278:
+		if(ic-- == 0) goto end;
+	i_279:
+		if(ic-- == 0) goto end;
+	i_280:
+		if(ic-- == 0) goto end;
+	i_281:
+		if(ic-- == 0) goto end;
+	i_282:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 309376903) > 4294967295) {
+			state = 0;
+			void* ret = &&i_283;
+			stack[ss++] = ret;
+			goto i_317;
+		}
+	i_283:
+		if(ic-- == 0) goto end;
+	i_284:
+		if(ic-- == 0) goto end;
+	i_285:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 219150529) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_286;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_286:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2594130359) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_287;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_287:
+		if(ic-- == 0) goto end;
+	i_288:
+		if(ic-- == 0) goto end;
+	i_289:
+		if(ic-- == 0) goto end;
+	i_290:
+		if(ic-- == 0) goto end;
+	i_291:
+		if(ic-- == 0) goto end;
+	i_292:
+		if(ic-- == 0) goto end;
+	i_293:
+		if(ic-- == 0) goto end;
+	i_294:
+		if(ic-- == 0) goto end;
+	i_295:
+		if(ic-- == 0) goto end;
+	i_296:
+		if(ic-- == 0) goto end;
+	i_297:
+		if(ic-- == 0) goto end;
+	i_298:
+		if(ic-- == 0) goto end;
+	i_299:
+		if(ic-- == 0) goto end;
+	i_300:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2892835113) > 4294967295) {
+			state = 0;
+			void* ret = &&i_301;
+			stack[ss++] = ret;
+			goto i_457;
+		}
+	i_301:
+		if(ic-- == 0) goto end;
+	i_302:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3373689969) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_303;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_303:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3569068444) > 4294967295) {
+			state = 0;
+			void* ret = &&i_304;
+			stack[ss++] = ret;
+			goto i_508;
+		}
+	i_304:
+		if(ic-- == 0) goto end;
+	i_305:
+		if(ic-- == 0) goto end;
+	i_306:
+		if(ic-- == 0) goto end;
+	i_307:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2969939441) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_308;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_308:
+		if(ic-- == 0) goto end;
+	i_309:
+		if(ic-- == 0) goto end;
+	i_310:
+		if(ic-- == 0) goto end;
+	i_311:
+		if(ic-- == 0) goto end;
+	i_312:
+		if(ic-- == 0) goto end;
+	i_313:
+		if(ic-- == 0) goto end;
+	i_314:
+		if(ic-- == 0) goto end;
+	i_315:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3588049267) > 4294967295) {
+			state = 0;
+			void* ret = &&i_316;
+			stack[ss++] = ret;
+			goto i_413;
+		}
+	i_316:
+		if(ic-- == 0) goto end;
+	i_317:
+		if(ic-- == 0) goto end;
+	i_318:
+		if(ic-- == 0) goto end;
+	i_319:
+		if(ic-- == 0) goto end;
+	i_320:
+		if(ic-- == 0) goto end;
+	i_321:
+		if(ic-- == 0) goto end;
+	i_322:
+		if(ic-- == 0) goto end;
+	i_323:
+		if(ic-- == 0) goto end;
+	i_324:
+		if(ic-- == 0) goto end;
+	i_325:
+		if(ic-- == 0) goto end;
+	i_326:
+		if(ic-- == 0) goto end;
+	i_327:
+		if(ic-- == 0) goto end;
+	i_328:
+		if(ic-- == 0) goto end;
+	i_329:
+		if(ic-- == 0) goto end;
+	i_330:
+		if(ic-- == 0) goto end;
+	i_331:
+		if(ic-- == 0) goto end;
+	i_332:
+		if(ic-- == 0) goto end;
+	i_333:
+		if(ic-- == 0) goto end;
+	i_334:
+		if(ic-- == 0) goto end;
+	i_335:
+		if(ic-- == 0) goto end;
+	i_336:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1190547036) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_337;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_337:
+		if(ic-- == 0) goto end;
+	i_338:
+		if(ic-- == 0) goto end;
+	i_339:
+		if(ic-- == 0) goto end;
+	i_340:
+		if(ic-- == 0) goto end;
+	i_341:
+		if(ic-- == 0) goto end;
+	i_342:
+		if(ic-- == 0) goto end;
+	i_343:
+		if(ic-- == 0) goto end;
+	i_344:
+		if(ic-- == 0) goto end;
+	i_345:
+		if(ic-- == 0) goto end;
+	i_346:
+		if(ic-- == 0) goto end;
+	i_347:
+		if(ic-- == 0) goto end;
+	i_348:
+		if(ic-- == 0) goto end;
+	i_349:
+		if(ic-- == 0) goto end;
+	i_350:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4115343926) > 4294967295) {
+			state = 0;
+			void* ret = &&i_351;
+			stack[ss++] = ret;
+			goto i_541;
+		}
+	i_351:
+		if(ic-- == 0) goto end;
+	i_352:
+		if(ic-- == 0) goto end;
+	i_353:
+		if(ic-- == 0) goto end;
+	i_354:
+		if(ic-- == 0) goto end;
+	i_355:
+		if(ic-- == 0) goto end;
+	i_356:
+		if(ic-- == 0) goto end;
+	i_357:
+		if(ic-- == 0) goto end;
+	i_358:
+		if(ic-- == 0) goto end;
+	i_359:
+		if(ic-- == 0) goto end;
+	i_360:
+		if(ic-- == 0) goto end;
+	i_361:
+		if(ic-- == 0) goto end;
+	i_362:
+		if(ic-- == 0) goto end;
+	i_363:
+		if(ic-- == 0) goto end;
+	i_364:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 625597055) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_365;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_365:
+		if(ic-- == 0) goto end;
+	i_366:
+		if(ic-- == 0) goto end;
+	i_367:
+		if(ic-- == 0) goto end;
+	i_368:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2921020832) > 4294967295) {
+			state = 0;
+			void* ret = &&i_369;
+			stack[ss++] = ret;
+			goto i_403;
+		}
+	i_369:
+		if(ic-- == 0) goto end;
+	i_370:
+		if(ic-- == 0) goto end;
+	i_371:
+		if(ic-- == 0) goto end;
+	i_372:
+		if(ic-- == 0) goto end;
+	i_373:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2479284681) > 4294967295) {
+			state = 0;
+			void* ret = &&i_374;
+			stack[ss++] = ret;
+			goto i_564;
+		}
+	i_374:
+		if(ic-- == 0) goto end;
+	i_375:
+		if(ic-- == 0) goto end;
+	i_376:
+		if(ic-- == 0) goto end;
+	i_377:
+		if(ic-- == 0) goto end;
+	i_378:
+		if(ic-- == 0) goto end;
+	i_379:
+		if(ic-- == 0) goto end;
+	i_380:
+		if(ic-- == 0) goto end;
+	i_381:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 559008306) > 4294967295) {
+			state = 0;
+			void* ret = &&i_382;
+			stack[ss++] = ret;
+			goto i_547;
+		}
+	i_382:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1232165017) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_383;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_383:
+		if(ic-- == 0) goto end;
+	i_384:
+		if(ic-- == 0) goto end;
+	i_385:
+		if(ic-- == 0) goto end;
+	i_386:
+		if(ic-- == 0) goto end;
+	i_387:
+		if(ic-- == 0) goto end;
+	i_388:
+		if(ic-- == 0) goto end;
+	i_389:
+		if(ic-- == 0) goto end;
+	i_390:
+		if(ic-- == 0) goto end;
+	i_391:
+		if(ic-- == 0) goto end;
+	i_392:
+		if(ic-- == 0) goto end;
+	i_393:
+		if(ic-- == 0) goto end;
+	i_394:
+		if(ic-- == 0) goto end;
+	i_395:
+		if(ic-- == 0) goto end;
+	i_396:
+		if(ic-- == 0) goto end;
+	i_397:
+		if(ic-- == 0) goto end;
+	i_398:
+		if(ic-- == 0) goto end;
+	i_399:
+		if(ic-- == 0) goto end;
+	i_400:
+		if(ic-- == 0) goto end;
+	i_401:
+		if(ic-- == 0) goto end;
+	i_402:
+		if(ic-- == 0) goto end;
+	i_403:
+		if(ic-- == 0) goto end;
+	i_404:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 152819674) > 4294967295) {
+			state = 0;
+			void* ret = &&i_405;
+			stack[ss++] = ret;
+			goto i_424;
+		}
+	i_405:
+		if(ic-- == 0) goto end;
+	i_406:
+		if(ic-- == 0) goto end;
+	i_407:
+		if(ic-- == 0) goto end;
+	i_408:
+		if(ic-- == 0) goto end;
+	i_409:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1237514854) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_410;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_410:
+		if(ic-- == 0) goto end;
+	i_411:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1706351018) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_412;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_412:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3571797961) > 4294967295) {
+			state = 0;
+			void* ret = &&i_413;
+			stack[ss++] = ret;
+			goto i_591;
+		}
+	i_413:
+		if(ic-- == 0) goto end;
+	i_414:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3070440026) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_415;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_415:
+		if(ic-- == 0) goto end;
+	i_416:
+		if(ic-- == 0) goto end;
+	i_417:
+		if(ic-- == 0) goto end;
+	i_418:
+		if(ic-- == 0) goto end;
+	i_419:
+		if(ic-- == 0) goto end;
+	i_420:
+		if(ic-- == 0) goto end;
+	i_421:
+		if(ic-- == 0) goto end;
+	i_422:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2304247836) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_423;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_423:
+		if(ic-- == 0) goto end;
+	i_424:
+		if(ic-- == 0) goto end;
+	i_425:
+		if(ic-- == 0) goto end;
+	i_426:
+		if(ic-- == 0) goto end;
+	i_427:
+		if(ic-- == 0) goto end;
+	i_428:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1446234727) > 4294967295) {
+			state = 0;
+			void* ret = &&i_429;
+			stack[ss++] = ret;
+			goto i_463;
+		}
+	i_429:
+		if(ic-- == 0) goto end;
+	i_430:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2010984968) > 4294967295) {
+			state = 0;
+			void* ret = &&i_431;
+			stack[ss++] = ret;
+			goto i_668;
+		}
+	i_431:
+		if(ic-- == 0) goto end;
+	i_432:
+		if(ic-- == 0) goto end;
+	i_433:
+		if(ic-- == 0) goto end;
+	i_434:
+		if(ic-- == 0) goto end;
+	i_435:
+		if(ic-- == 0) goto end;
+	i_436:
+		if(ic-- == 0) goto end;
+	i_437:
+		if(ic-- == 0) goto end;
+	i_438:
+		if(ic-- == 0) goto end;
+	i_439:
+		if(ic-- == 0) goto end;
+	i_440:
+		if(ic-- == 0) goto end;
+	i_441:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 726364629) > 4294967295) {
+			state = 0;
+			void* ret = &&i_442;
+			stack[ss++] = ret;
+			goto i_570;
+		}
+	i_442:
+		if(ic-- == 0) goto end;
+	i_443:
+		if(ic-- == 0) goto end;
+	i_444:
+		if(ic-- == 0) goto end;
+	i_445:
+		if(ic-- == 0) goto end;
+	i_446:
+		if(ic-- == 0) goto end;
+	i_447:
+		if(ic-- == 0) goto end;
+	i_448:
+		if(ic-- == 0) goto end;
+	i_449:
+		if(ic-- == 0) goto end;
+	i_450:
+		if(ic-- == 0) goto end;
+	i_451:
+		if(ic-- == 0) goto end;
+	i_452:
+		if(ic-- == 0) goto end;
+	i_453:
+		if(ic-- == 0) goto end;
+	i_454:
+		if(ic-- == 0) goto end;
+	i_455:
+		if(ic-- == 0) goto end;
+	i_456:
+		if(ic-- == 0) goto end;
+	i_457:
+		if(ic-- == 0) goto end;
+	i_458:
+		if(ic-- == 0) goto end;
+	i_459:
+		if(ic-- == 0) goto end;
+	i_460:
+		if(ic-- == 0) goto end;
+	i_461:
+		if(ic-- == 0) goto end;
+	i_462:
+		if(ic-- == 0) goto end;
+	i_463:
+		if(ic-- == 0) goto end;
+	i_464:
+		if(ic-- == 0) goto end;
+	i_465:
+		if(ic-- == 0) goto end;
+	i_466:
+		if(ic-- == 0) goto end;
+	i_467:
+		if(ic-- == 0) goto end;
+	i_468:
+		if(ic-- == 0) goto end;
+	i_469:
+		if(ic-- == 0) goto end;
+	i_470:
+		if(ic-- == 0) goto end;
+	i_471:
+		if(ic-- == 0) goto end;
+	i_472:
+		if(ic-- == 0) goto end;
+	i_473:
+		if(ic-- == 0) goto end;
+	i_474:
+		if(ic-- == 0) goto end;
+	i_475:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3521149299) > 4294967295) {
+			state = 0;
+			void* ret = &&i_476;
+			stack[ss++] = ret;
+			goto i_657;
+		}
+	i_476:
+		if(ic-- == 0) goto end;
+	i_477:
+		if(ic-- == 0) goto end;
+	i_478:
+		if(ic-- == 0) goto end;
+	i_479:
+		if(ic-- == 0) goto end;
+	i_480:
+		if(ic-- == 0) goto end;
+	i_481:
+		if(ic-- == 0) goto end;
+	i_482:
+		if(ic-- == 0) goto end;
+	i_483:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3375122053) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_484;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_484:
+		if(ic-- == 0) goto end;
+	i_485:
+		if(ic-- == 0) goto end;
+	i_486:
+		if(ic-- == 0) goto end;
+	i_487:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3835932753) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_488;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_488:
+		if(ic-- == 0) goto end;
+	i_489:
+		if(ic-- == 0) goto end;
+	i_490:
+		if(ic-- == 0) goto end;
+	i_491:
+		if(ic-- == 0) goto end;
+	i_492:
+		if(ic-- == 0) goto end;
+	i_493:
+		if(ic-- == 0) goto end;
+	i_494:
+		if(ic-- == 0) goto end;
+	i_495:
+		if(ic-- == 0) goto end;
+	i_496:
+		if(ic-- == 0) goto end;
+	i_497:
+		if(ic-- == 0) goto end;
+	i_498:
+		if(ic-- == 0) goto end;
+	i_499:
+		if(ic-- == 0) goto end;
+	i_500:
+		if(ic-- == 0) goto end;
+	i_501:
+		if(ic-- == 0) goto end;
+	i_502:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2796388936) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_503;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_503:
+		if(ic-- == 0) goto end;
+	i_504:
+		if(ic-- == 0) goto end;
+	i_505:
+		if(ic-- == 0) goto end;
+	i_506:
+		if(ic-- == 0) goto end;
+	i_507:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1247141878) > 4294967295) {
+			state = 0;
+			void* ret = &&i_508;
+			stack[ss++] = ret;
+			goto i_730;
+		}
+	i_508:
+		if(ic-- == 0) goto end;
+	i_509:
+		if(ic-- == 0) goto end;
+	i_510:
+		if(ic-- == 0) goto end;
+	i_511:
+		if(ic-- == 0) goto end;
+	i_512:
+		if(ic-- == 0) goto end;
+	i_513:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1118508659) > 4294967295) {
+			state = 0;
+			void* ret = &&i_514;
+			stack[ss++] = ret;
+			goto i_570;
+		}
+	i_514:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3814103514) > 4294967295) {
+			state = 0;
+			void* ret = &&i_515;
+			stack[ss++] = ret;
+			goto i_521;
+		}
+	i_515:
+		if(ic-- == 0) goto end;
+	i_516:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1924324783) > 4294967295) {
+			state = 0;
+			void* ret = &&i_517;
+			stack[ss++] = ret;
+			goto i_765;
+		}
+	i_517:
+		if(ic-- == 0) goto end;
+	i_518:
+		if(ic-- == 0) goto end;
+	i_519:
+		if(ic-- == 0) goto end;
+	i_520:
+		if(ic-- == 0) goto end;
+	i_521:
+		if(ic-- == 0) goto end;
+	i_522:
+		if(ic-- == 0) goto end;
+	i_523:
+		if(ic-- == 0) goto end;
+	i_524:
+		if(ic-- == 0) goto end;
+	i_525:
+		if(ic-- == 0) goto end;
+	i_526:
+		if(ic-- == 0) goto end;
+	i_527:
+		if(ic-- == 0) goto end;
+	i_528:
+		if(ic-- == 0) goto end;
+	i_529:
+		if(ic-- == 0) goto end;
+	i_530:
+		if(ic-- == 0) goto end;
+	i_531:
+		if(ic-- == 0) goto end;
+	i_532:
+		if(ic-- == 0) goto end;
+	i_533:
+		if(ic-- == 0) goto end;
+	i_534:
+		if(ic-- == 0) goto end;
+	i_535:
+		if(ic-- == 0) goto end;
+	i_536:
+		if(ic-- == 0) goto end;
+	i_537:
+		if(ic-- == 0) goto end;
+	i_538:
+		if(ic-- == 0) goto end;
+	i_539:
+		if(ic-- == 0) goto end;
+	i_540:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 126722253) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_541;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_541:
+		if(ic-- == 0) goto end;
+	i_542:
+		if(ic-- == 0) goto end;
+	i_543:
+		if(ic-- == 0) goto end;
+	i_544:
+		if(ic-- == 0) goto end;
+	i_545:
+		if(ic-- == 0) goto end;
+	i_546:
+		if(ic-- == 0) goto end;
+	i_547:
+		if(ic-- == 0) goto end;
+	i_548:
+		if(ic-- == 0) goto end;
+	i_549:
+		if(ic-- == 0) goto end;
+	i_550:
+		if(ic-- == 0) goto end;
+	i_551:
+		if(ic-- == 0) goto end;
+	i_552:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3051608332) > 4294967295) {
+			state = 0;
+			void* ret = &&i_553;
+			stack[ss++] = ret;
+			goto i_604;
+		}
+	i_553:
+		if(ic-- == 0) goto end;
+	i_554:
+		if(ic-- == 0) goto end;
+	i_555:
+		if(ic-- == 0) goto end;
+	i_556:
+		if(ic-- == 0) goto end;
+	i_557:
+		if(ic-- == 0) goto end;
+	i_558:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3676004017) > 4294967295) {
+			state = 0;
+			void* ret = &&i_559;
+			stack[ss++] = ret;
+			goto i_645;
+		}
+	i_559:
+		if(ic-- == 0) goto end;
+	i_560:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 808006198) > 4294967295) {
+			state = 0;
+			void* ret = &&i_561;
+			stack[ss++] = ret;
+			goto i_656;
+		}
+	i_561:
+		if(ic-- == 0) goto end;
+	i_562:
+		if(ic-- == 0) goto end;
+	i_563:
+		if(ic-- == 0) goto end;
+	i_564:
+		if(ic-- == 0) goto end;
+	i_565:
+		if(ic-- == 0) goto end;
+	i_566:
+		if(ic-- == 0) goto end;
+	i_567:
+		if(ic-- == 0) goto end;
+	i_568:
+		if(ic-- == 0) goto end;
+	i_569:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1017591791) > 4294967295) {
+			state = 0;
+			void* ret = &&i_570;
+			stack[ss++] = ret;
+			goto i_637;
+		}
+	i_570:
+		if(ic-- == 0) goto end;
+	i_571:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2494873158) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_572;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_572:
+		if(ic-- == 0) goto end;
+	i_573:
+		if(ic-- == 0) goto end;
+	i_574:
+		if(ic-- == 0) goto end;
+	i_575:
+		if(ic-- == 0) goto end;
+	i_576:
+		if(ic-- == 0) goto end;
+	i_577:
+		if(ic-- == 0) goto end;
+	i_578:
+		if(ic-- == 0) goto end;
+	i_579:
+		if(ic-- == 0) goto end;
+	i_580:
+		if(ic-- == 0) goto end;
+	i_581:
+		if(ic-- == 0) goto end;
+	i_582:
+		if(ic-- == 0) goto end;
+	i_583:
+		if(ic-- == 0) goto end;
+	i_584:
+		if(ic-- == 0) goto end;
+	i_585:
+		if(ic-- == 0) goto end;
+	i_586:
+		if(ic-- == 0) goto end;
+	i_587:
+		if(ic-- == 0) goto end;
+	i_588:
+		if(ic-- == 0) goto end;
+	i_589:
+		if(ic-- == 0) goto end;
+	i_590:
+		if(ic-- == 0) goto end;
+	i_591:
+		if(ic-- == 0) goto end;
+	i_592:
+		if(ic-- == 0) goto end;
+	i_593:
+		if(ic-- == 0) goto end;
+	i_594:
+		if(ic-- == 0) goto end;
+	i_595:
+		if(ic-- == 0) goto end;
+	i_596:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4909130) > 4294967295) {
+			state = 0;
+			void* ret = &&i_597;
+			stack[ss++] = ret;
+			goto i_622;
+		}
+	i_597:
+		if(ic-- == 0) goto end;
+	i_598:
+		if(ic-- == 0) goto end;
+	i_599:
+		if(ic-- == 0) goto end;
+	i_600:
+		if(ic-- == 0) goto end;
+	i_601:
+		if(ic-- == 0) goto end;
+	i_602:
+		if(ic-- == 0) goto end;
+	i_603:
+		if(ic-- == 0) goto end;
+	i_604:
+		if(ic-- == 0) goto end;
+	i_605:
+		if(ic-- == 0) goto end;
+	i_606:
+		if(ic-- == 0) goto end;
+	i_607:
+		if(ic-- == 0) goto end;
+	i_608:
+		if(ic-- == 0) goto end;
+	i_609:
+		if(ic-- == 0) goto end;
+	i_610:
+		if(ic-- == 0) goto end;
+	i_611:
+		if(ic-- == 0) goto end;
+	i_612:
+		if(ic-- == 0) goto end;
+	i_613:
+		if(ic-- == 0) goto end;
+	i_614:
+		if(ic-- == 0) goto end;
+	i_615:
+		if(ic-- == 0) goto end;
+	i_616:
+		if(ic-- == 0) goto end;
+	i_617:
+		if(ic-- == 0) goto end;
+	i_618:
+		if(ic-- == 0) goto end;
+	i_619:
+		if(ic-- == 0) goto end;
+	i_620:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4170589735) > 4294967295) {
+			state = 0;
+			void* ret = &&i_621;
+			stack[ss++] = ret;
+			goto i_666;
+		}
+	i_621:
+		if(ic-- == 0) goto end;
+	i_622:
+		if(ic-- == 0) goto end;
+	i_623:
+		if(ic-- == 0) goto end;
+	i_624:
+		if(ic-- == 0) goto end;
+	i_625:
+		if(ic-- == 0) goto end;
+	i_626:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1027138614) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_627;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_627:
+		if(ic-- == 0) goto end;
+	i_628:
+		if(ic-- == 0) goto end;
+	i_629:
+		if(ic-- == 0) goto end;
+	i_630:
+		if(ic-- == 0) goto end;
+	i_631:
+		if(ic-- == 0) goto end;
+	i_632:
+		if(ic-- == 0) goto end;
+	i_633:
+		if(ic-- == 0) goto end;
+	i_634:
+		if(ic-- == 0) goto end;
+	i_635:
+		if(ic-- == 0) goto end;
+	i_636:
+		if(ic-- == 0) goto end;
+	i_637:
+		if(ic-- == 0) goto end;
+	i_638:
+		if(ic-- == 0) goto end;
+	i_639:
+		if(ic-- == 0) goto end;
+	i_640:
+		if(ic-- == 0) goto end;
+	i_641:
+		if(ic-- == 0) goto end;
+	i_642:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 478668193) > 4294967295) {
+			state = 0;
+			void* ret = &&i_643;
+			stack[ss++] = ret;
+			goto i_801;
+		}
+	i_643:
+		if(ic-- == 0) goto end;
+	i_644:
+		if(ic-- == 0) goto end;
+	i_645:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2000561671) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_646;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_646:
+		if(ic-- == 0) goto end;
+	i_647:
+		if(ic-- == 0) goto end;
+	i_648:
+		if(ic-- == 0) goto end;
+	i_649:
+		if(ic-- == 0) goto end;
+	i_650:
+		if(ic-- == 0) goto end;
+	i_651:
+		if(ic-- == 0) goto end;
+	i_652:
+		if(ic-- == 0) goto end;
+	i_653:
+		if(ic-- == 0) goto end;
+	i_654:
+		if(ic-- == 0) goto end;
+	i_655:
+		if(ic-- == 0) goto end;
+	i_656:
+		if(ic-- == 0) goto end;
+	i_657:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 157265782) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_658;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_658:
+		if(ic-- == 0) goto end;
+	i_659:
+		if(ic-- == 0) goto end;
+	i_660:
+		if(ic-- == 0) goto end;
+	i_661:
+		if(ic-- == 0) goto end;
+	i_662:
+		if(ic-- == 0) goto end;
+	i_663:
+		if(ic-- == 0) goto end;
+	i_664:
+		if(ic-- == 0) goto end;
+	i_665:
+		if(ic-- == 0) goto end;
+	i_666:
+		if(ic-- == 0) goto end;
+	i_667:
+		if(ic-- == 0) goto end;
+	i_668:
+		if(ic-- == 0) goto end;
+	i_669:
+		if(ic-- == 0) goto end;
+	i_670:
+		if(ic-- == 0) goto end;
+	i_671:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3214452447) > 4294967295) {
+			state = 0;
+			void* ret = &&i_672;
+			stack[ss++] = ret;
+			goto i_883;
+		}
+	i_672:
+		if(ic-- == 0) goto end;
+	i_673:
+		if(ic-- == 0) goto end;
+	i_674:
+		if(ic-- == 0) goto end;
+	i_675:
+		if(ic-- == 0) goto end;
+	i_676:
+		if(ic-- == 0) goto end;
+	i_677:
+		if(ic-- == 0) goto end;
+	i_678:
+		if(ic-- == 0) goto end;
+	i_679:
+		if(ic-- == 0) goto end;
+	i_680:
+		if(ic-- == 0) goto end;
+	i_681:
+		if(ic-- == 0) goto end;
+	i_682:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 288253489) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_683;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_683:
+		if(ic-- == 0) goto end;
+	i_684:
+		if(ic-- == 0) goto end;
+	i_685:
+		if(ic-- == 0) goto end;
+	i_686:
+		if(ic-- == 0) goto end;
+	i_687:
+		if(ic-- == 0) goto end;
+	i_688:
+		if(ic-- == 0) goto end;
+	i_689:
+		if(ic-- == 0) goto end;
+	i_690:
+		if(ic-- == 0) goto end;
+	i_691:
+		if(ic-- == 0) goto end;
+	i_692:
+		if(ic-- == 0) goto end;
+	i_693:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3482595217) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_694;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_694:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3120377816) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_695;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_695:
+		if(ic-- == 0) goto end;
+	i_696:
+		if(ic-- == 0) goto end;
+	i_697:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4245221468) > 4294967295) {
+			state = 0;
+			void* ret = &&i_698;
+			stack[ss++] = ret;
+			goto i_703;
+		}
+	i_698:
+		if(ic-- == 0) goto end;
+	i_699:
+		if(ic-- == 0) goto end;
+	i_700:
+		if(ic-- == 0) goto end;
+	i_701:
+		if(ic-- == 0) goto end;
+	i_702:
+		if(ic-- == 0) goto end;
+	i_703:
+		if(ic-- == 0) goto end;
+	i_704:
+		if(ic-- == 0) goto end;
+	i_705:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2319198595) > 4294967295) {
+			state = 0;
+			void* ret = &&i_706;
+			stack[ss++] = ret;
+			goto i_892;
+		}
+	i_706:
+		if(ic-- == 0) goto end;
+	i_707:
+		if(ic-- == 0) goto end;
+	i_708:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2399187042) > 4294967295) {
+			state = 0;
+			void* ret = &&i_709;
+			stack[ss++] = ret;
+			goto i_796;
+		}
+	i_709:
+		if(ic-- == 0) goto end;
+	i_710:
+		if(ic-- == 0) goto end;
+	i_711:
+		if(ic-- == 0) goto end;
+	i_712:
+		if(ic-- == 0) goto end;
+	i_713:
+		if(ic-- == 0) goto end;
+	i_714:
+		if(ic-- == 0) goto end;
+	i_715:
+		if(ic-- == 0) goto end;
+	i_716:
+		if(ic-- == 0) goto end;
+	i_717:
+		if(ic-- == 0) goto end;
+	i_718:
+		if(ic-- == 0) goto end;
+	i_719:
+		if(ic-- == 0) goto end;
+	i_720:
+		if(ic-- == 0) goto end;
+	i_721:
+		if(ic-- == 0) goto end;
+	i_722:
+		if(ic-- == 0) goto end;
+	i_723:
+		if(ic-- == 0) goto end;
+	i_724:
+		if(ic-- == 0) goto end;
+	i_725:
+		if(ic-- == 0) goto end;
+	i_726:
+		if(ic-- == 0) goto end;
+	i_727:
+		if(ic-- == 0) goto end;
+	i_728:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 4184393193) > 4294967295) {
+			state = 0;
+			void* ret = &&i_729;
+			stack[ss++] = ret;
+			goto i_770;
+		}
+	i_729:
+		if(ic-- == 0) goto end;
+	i_730:
+		if(ic-- == 0) goto end;
+	i_731:
+		if(ic-- == 0) goto end;
+	i_732:
+		if(ic-- == 0) goto end;
+	i_733:
+		if(ic-- == 0) goto end;
+	i_734:
+		if(ic-- == 0) goto end;
+	i_735:
+		if(ic-- == 0) goto end;
+	i_736:
+		if(ic-- == 0) goto end;
+	i_737:
+		if(ic-- == 0) goto end;
+	i_738:
+		if(ic-- == 0) goto end;
+	i_739:
+		if(ic-- == 0) goto end;
+	i_740:
+		if(ic-- == 0) goto end;
+	i_741:
+		if(ic-- == 0) goto end;
+	i_742:
+		if(ic-- == 0) goto end;
+	i_743:
+		if(ic-- == 0) goto end;
+	i_744:
+		if(ic-- == 0) goto end;
+	i_745:
+		if(ic-- == 0) goto end;
+	i_746:
+		if(ic-- == 0) goto end;
+	i_747:
+		if(ic-- == 0) goto end;
+	i_748:
+		if(ic-- == 0) goto end;
+	i_749:
+		if(ic-- == 0) goto end;
+	i_750:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1311714633) > 4294967295) {
+			state = 0;
+			void* ret = &&i_751;
+			stack[ss++] = ret;
+			goto i_801;
+		}
+	i_751:
+		if(ic-- == 0) goto end;
+	i_752:
+		if(ic-- == 0) goto end;
+	i_753:
+		if(ic-- == 0) goto end;
+	i_754:
+		if(ic-- == 0) goto end;
+	i_755:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2990284553) > 4294967295) {
+			state = 0;
+			void* ret = &&i_756;
+			stack[ss++] = ret;
+			goto i_1009;
+		}
+	i_756:
+		if(ic-- == 0) goto end;
+	i_757:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2525881729) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_758;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_758:
+		if(ic-- == 0) goto end;
+	i_759:
+		if(ic-- == 0) goto end;
+	i_760:
+		if(ic-- == 0) goto end;
+	i_761:
+		if(ic-- == 0) goto end;
+	i_762:
+		if(ic-- == 0) goto end;
+	i_763:
+		if(ic-- == 0) goto end;
+	i_764:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1536893296) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_765;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_765:
+		if(ic-- == 0) goto end;
+	i_766:
+		if(ic-- == 0) goto end;
+	i_767:
+		if(ic-- == 0) goto end;
+	i_768:
+		if(ic-- == 0) goto end;
+	i_769:
+		if(ic-- == 0) goto end;
+	i_770:
+		if(ic-- == 0) goto end;
+	i_771:
+		if(ic-- == 0) goto end;
+	i_772:
+		if(ic-- == 0) goto end;
+	i_773:
+		if(ic-- == 0) goto end;
+	i_774:
+		if(ic-- == 0) goto end;
+	i_775:
+		if(ic-- == 0) goto end;
+	i_776:
+		if(ic-- == 0) goto end;
+	i_777:
+		if(ic-- == 0) goto end;
+	i_778:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1484067825) > 4294967295) {
+			state = 0;
+			void* ret = &&i_779;
+			stack[ss++] = ret;
+			goto i_893;
+		}
+	i_779:
+		if(ic-- == 0) goto end;
+	i_780:
+		if(ic-- == 0) goto end;
+	i_781:
+		if(ic-- == 0) goto end;
+	i_782:
+		if(ic-- == 0) goto end;
+	i_783:
+		if(ic-- == 0) goto end;
+	i_784:
+		if(ic-- == 0) goto end;
+	i_785:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2996317137) > 4294967295) {
+			state = 0;
+			void* ret = &&i_786;
+			stack[ss++] = ret;
+			goto i_949;
+		}
+	i_786:
+		if(ic-- == 0) goto end;
+	i_787:
+		if(ic-- == 0) goto end;
+	i_788:
+		if(ic-- == 0) goto end;
+	i_789:
+		if(ic-- == 0) goto end;
+	i_790:
+		if(ic-- == 0) goto end;
+	i_791:
+		if(ic-- == 0) goto end;
+	i_792:
+		if(ic-- == 0) goto end;
+	i_793:
+		if(ic-- == 0) goto end;
+	i_794:
+		if(ic-- == 0) goto end;
+	i_795:
+		if(ic-- == 0) goto end;
+	i_796:
+		if(ic-- == 0) goto end;
+	i_797:
+		if(ic-- == 0) goto end;
+	i_798:
+		if(ic-- == 0) goto end;
+	i_799:
+		if(ic-- == 0) goto end;
+	i_800:
+		if(ic-- == 0) goto end;
+	i_801:
+		if(ic-- == 0) goto end;
+	i_802:
+		if(ic-- == 0) goto end;
+	i_803:
+		if(ic-- == 0) goto end;
+	i_804:
+		if(ic-- == 0) goto end;
+	i_805:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1346539270) > 4294967295) {
+			state = 0;
+			void* ret = &&i_806;
+			stack[ss++] = ret;
+			goto i_813;
+		}
+	i_806:
+		if(ic-- == 0) goto end;
+	i_807:
+		if(ic-- == 0) goto end;
+	i_808:
+		if(ic-- == 0) goto end;
+	i_809:
+		if(ic-- == 0) goto end;
+	i_810:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1134804964) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_811;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_811:
+		if(ic-- == 0) goto end;
+	i_812:
+		if(ic-- == 0) goto end;
+	i_813:
+		if(ic-- == 0) goto end;
+	i_814:
+		if(ic-- == 0) goto end;
+	i_815:
+		if(ic-- == 0) goto end;
+	i_816:
+		if(ic-- == 0) goto end;
+	i_817:
+		if(ic-- == 0) goto end;
+	i_818:
+		if(ic-- == 0) goto end;
+	i_819:
+		if(ic-- == 0) goto end;
+	i_820:
+		if(ic-- == 0) goto end;
+	i_821:
+		if(ic-- == 0) goto end;
+	i_822:
+		if(ic-- == 0) goto end;
+	i_823:
+		if(ic-- == 0) goto end;
+	i_824:
+		if(ic-- == 0) goto end;
+	i_825:
+		if(ic-- == 0) goto end;
+	i_826:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2353620466) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_827;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_827:
+		if(ic-- == 0) goto end;
+	i_828:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 246564735) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_829;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_829:
+		if(ic-- == 0) goto end;
+	i_830:
+		if(ic-- == 0) goto end;
+	i_831:
+		if(ic-- == 0) goto end;
+	i_832:
+		if(ic-- == 0) goto end;
+	i_833:
+		if(ic-- == 0) goto end;
+	i_834:
+		if(ic-- == 0) goto end;
+	i_835:
+		if(ic-- == 0) goto end;
+	i_836:
+		if(ic-- == 0) goto end;
+	i_837:
+		if(ic-- == 0) goto end;
+	i_838:
+		if(ic-- == 0) goto end;
+	i_839:
+		if(ic-- == 0) goto end;
+	i_840:
+		if(ic-- == 0) goto end;
+	i_841:
+		if(ic-- == 0) goto end;
+	i_842:
+		if(ic-- == 0) goto end;
+	i_843:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 782639687) > 4294967295) {
+			state = 0;
+			void* ret = &&i_844;
+			stack[ss++] = ret;
+			goto i_955;
+		}
+	i_844:
+		if(ic-- == 0) goto end;
+	i_845:
+		if(ic-- == 0) goto end;
+	i_846:
+		if(ic-- == 0) goto end;
+	i_847:
+		if(ic-- == 0) goto end;
+	i_848:
+		if(ic-- == 0) goto end;
+	i_849:
+		if(ic-- == 0) goto end;
+	i_850:
+		if(ic-- == 0) goto end;
+	i_851:
+		if(ic-- == 0) goto end;
+	i_852:
+		if(ic-- == 0) goto end;
+	i_853:
+		if(ic-- == 0) goto end;
+	i_854:
+		if(ic-- == 0) goto end;
+	i_855:
+		if(ic-- == 0) goto end;
+	i_856:
+		if(ic-- == 0) goto end;
+	i_857:
+		if(ic-- == 0) goto end;
+	i_858:
+		if(ic-- == 0) goto end;
+	i_859:
+		if(ic-- == 0) goto end;
+	i_860:
+		if(ic-- == 0) goto end;
+	i_861:
+		if(ic-- == 0) goto end;
+	i_862:
+		if(ic-- == 0) goto end;
+	i_863:
+		if(ic-- == 0) goto end;
+	i_864:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 374700188) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_865;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_865:
+		if(ic-- == 0) goto end;
+	i_866:
+		if(ic-- == 0) goto end;
+	i_867:
+		if(ic-- == 0) goto end;
+	i_868:
+		if(ic-- == 0) goto end;
+	i_869:
+		if(ic-- == 0) goto end;
+	i_870:
+		if(ic-- == 0) goto end;
+	i_871:
+		if(ic-- == 0) goto end;
+	i_872:
+		if(ic-- == 0) goto end;
+	i_873:
+		if(ic-- == 0) goto end;
+	i_874:
+		if(ic-- == 0) goto end;
+	i_875:
+		if(ic-- == 0) goto end;
+	i_876:
+		if(ic-- == 0) goto end;
+	i_877:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1975848362) > 4294967295) {
+			state = 0;
+			void* ret = &&i_878;
+			stack[ss++] = ret;
+			goto i_971;
+		}
+	i_878:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 519058282) > 4294967295) {
+			state = 0;
+			void* ret = &&i_879;
+			stack[ss++] = ret;
+			goto i_77;
+		}
+	i_879:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3810721988) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_880;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_880:
+		if(ic-- == 0) goto end;
+	i_881:
+		if(ic-- == 0) goto end;
+	i_882:
+		if(ic-- == 0) goto end;
+	i_883:
+		if(ic-- == 0) goto end;
+	i_884:
+		if(ic-- == 0) goto end;
+	i_885:
+		if(ic-- == 0) goto end;
+	i_886:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 312929243) > 4294967295) {
+			state = 0;
+			void* ret = &&i_887;
+			stack[ss++] = ret;
+			goto i_943;
+		}
+	i_887:
+		if(ic-- == 0) goto end;
+	i_888:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 75875866) > 4294967295) {
+			state = 0;
+			void* ret = &&i_889;
+			stack[ss++] = ret;
+			goto i_969;
+		}
+	i_889:
+		if(ic-- == 0) goto end;
+	i_890:
+		if(ic-- == 0) goto end;
+	i_891:
+		if(ic-- == 0) goto end;
+	i_892:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3298258409) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_893;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_893:
+		if(ic-- == 0) goto end;
+	i_894:
+		if(ic-- == 0) goto end;
+	i_895:
+		if(ic-- == 0) goto end;
+	i_896:
+		if(ic-- == 0) goto end;
+	i_897:
+		if(ic-- == 0) goto end;
+	i_898:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3944707394) > 4294967295) {
+			state = 0;
+			void* ret = &&i_899;
+			stack[ss++] = ret;
+			goto i_974;
+		}
+	i_899:
+		if(ic-- == 0) goto end;
+	i_900:
+		if(ic-- == 0) goto end;
+	i_901:
+		if(ic-- == 0) goto end;
+	i_902:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3522509435) > 4294967295) {
+			state = 0;
+			void* ret = &&i_903;
+			stack[ss++] = ret;
+			goto i_7;
+		}
+	i_903:
+		if(ic-- == 0) goto end;
+	i_904:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 2717695818) > 4294967295) {
+			state = 0;
+			void* ret = &&i_905;
+			stack[ss++] = ret;
+			goto i_95;
+		}
+	i_905:
+		if(ic-- == 0) goto end;
+	i_906:
+		if(ic-- == 0) goto end;
+	i_907:
+		if(ic-- == 0) goto end;
+	i_908:
+		if(ic-- == 0) goto end;
+	i_909:
+		if(ic-- == 0) goto end;
+	i_910:
+		if(ic-- == 0) goto end;
+	i_911:
+		if(ic-- == 0) goto end;
+	i_912:
+		if(ic-- == 0) goto end;
+	i_913:
+		if(ic-- == 0) goto end;
+	i_914:
+		if(ic-- == 0) goto end;
+	i_915:
+		if(ic-- == 0) goto end;
+	i_916:
+		if(ic-- == 0) goto end;
+	i_917:
+		if(ic-- == 0) goto end;
+	i_918:
+		if(ic-- == 0) goto end;
+	i_919:
+		if(ic-- == 0) goto end;
+	i_920:
+		if(ic-- == 0) goto end;
+	i_921:
+		if(ic-- == 0) goto end;
+	i_922:
+		if(ic-- == 0) goto end;
+	i_923:
+		if(ic-- == 0) goto end;
+	i_924:
+		if(ic-- == 0) goto end;
+	i_925:
+		if(ic-- == 0) goto end;
+	i_926:
+		if(ic-- == 0) goto end;
+	i_927:
+		if(ic-- == 0) goto end;
+	i_928:
+		if(ic-- == 0) goto end;
+	i_929:
+		if(ic-- == 0) goto end;
+	i_930:
+		if(ic-- == 0) goto end;
+	i_931:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1170709507) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_932;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_932:
+		if(ic-- == 0) goto end;
+	i_933:
+		if(ic-- == 0) goto end;
+	i_934:
+		if(ic-- == 0) goto end;
+	i_935:
+		if(ic-- == 0) goto end;
+	i_936:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3901871423) > 4294967295) {
+			state = 0;
+			void* ret = &&i_937;
+			stack[ss++] = ret;
+			goto i_28;
+		}
+	i_937:
+		if(ic-- == 0) goto end;
+	i_938:
+		if(ic-- == 0) goto end;
+	i_939:
+		if(ic-- == 0) goto end;
+	i_940:
+		if(ic-- == 0) goto end;
+	i_941:
+		if(ic-- == 0) goto end;
+	i_942:
+		if(ic-- == 0) goto end;
+	i_943:
+		if(ic-- == 0) goto end;
+	i_944:
+		if(ic-- == 0) goto end;
+	i_945:
+		if(ic-- == 0) goto end;
+	i_946:
+		if(ic-- == 0) goto end;
+	i_947:
+		if(ic-- == 0) goto end;
+	i_948:
+		if(ic-- == 0) goto end;
+	i_949:
+		if(ic-- == 0) goto end;
+	i_950:
+		if(ic-- == 0) goto end;
+	i_951:
+		if(ic-- == 0) goto end;
+	i_952:
+		if(ic-- == 0) goto end;
+	i_953:
+		if(ic-- == 0) goto end;
+	i_954:
+		if(ic-- == 0) goto end;
+	i_955:
+		if(ic-- == 0) goto end;
+	i_956:
+		if(ic-- == 0) goto end;
+	i_957:
+		if(ic-- == 0) goto end;
+	i_958:
+		if(ic-- == 0) goto end;
+	i_959:
+		if(ic-- == 0) goto end;
+	i_960:
+		if(ic-- == 0) goto end;
+	i_961:
+		if(ic-- == 0) goto end;
+	i_962:
+		if(ic-- == 0) goto end;
+	i_963:
+		if(ic-- == 0) goto end;
+	i_964:
+		if(ic-- == 0) goto end;
+	i_965:
+		if(ic-- == 0) goto end;
+	i_966:
+		if(ic-- == 0) goto end;
+	i_967:
+		if(ic-- == 0) goto end;
+	i_968:
+		if(ic-- == 0) goto end;
+	i_969:
+		if(ic-- == 0) goto end;
+	i_970:
+		if(ic-- == 0) goto end;
+	i_971:
+		if(ic-- == 0) goto end;
+	i_972:
+		if(ic-- == 0) goto end;
+	i_973:
+		if(ic-- == 0) goto end;
+	i_974:
+		if(ic-- == 0) goto end;
+	i_975:
+		if(ic-- == 0) goto end;
+	i_976:
+		if(ic-- == 0) goto end;
+	i_977:
+		if(ic-- == 0) goto end;
+	i_978:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1456175612) > 4294967295) {
+			state = 0;
+			void* ret = &&i_979;
+			stack[ss++] = ret;
+			goto i_26;
+		}
+	i_979:
+		if(ic-- == 0) goto end;
+	i_980:
+		if(ic-- == 0) goto end;
+	i_981:
+		if(ic-- == 0) goto end;
+	i_982:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 808127352) > 4294967295) {
+			state = 0;
+			void* ret = &&i_983;
+			stack[ss++] = ret;
+			goto i_197;
+		}
+	i_983:
+		if(ic-- == 0) goto end;
+	i_984:
+		if(ic-- == 0) goto end;
+	i_985:
+		if(ic-- == 0) goto end;
+	i_986:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 741949704) > 4294967295) {
+			state = 0;
+			void* ret = &&i_987;
+			stack[ss++] = ret;
+			goto i_59;
+		}
+	i_987:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3740247587) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_988;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_988:
+		if(ic-- == 0) goto end;
+	i_989:
+		if(ic-- == 0) goto end;
+	i_990:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 3550479444) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_991;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_991:
+		if(ic-- == 0) goto end;
+	i_992:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1552714076) > 4294967295) {
+			state = 0;
+			void* ret = &&i_993;
+			stack[ss++] = ret;
+			goto i_73;
+		}
+	i_993:
+		if(ic-- == 0) goto end;
+	i_994:
+		if(ic-- == 0) goto end;
+	i_995:
+		if(ic-- == 0) goto end;
+	i_996:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1901489237) > 4294967295) {
+			state = 0;
+			if(ss <= 0) goto i_997;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_997:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state += 1314937403) > 4294967295) {
+			state = 0;
+			void* ret = &&i_998;
+			stack[ss++] = ret;
+			goto i_21;
+		}
+	i_998:
+		if(ic-- == 0) goto end;
+	i_999:
+		if(ic-- == 0) goto end;
+	i_1000:
+		if(ic-- == 0) goto end;
+	i_1001:
+		if(ic-- == 0) goto end;
+	i_1002:
+		if(ic-- == 0) goto end;
+	i_1003:
+		if(ic-- == 0) goto end;
+	i_1004:
+		if(ic-- == 0) goto end;
+	i_1005:
+		if(ic-- == 0) goto end;
+	i_1006:
+		if(ic-- == 0) goto end;
+	i_1007:
+		if(ic-- == 0) goto end;
+	i_1008:
+		if(ic-- == 0) goto end;
+	i_1009:
+		if(ic-- == 0) goto end;
+	i_1010:
+		if(ic-- == 0) goto end;
+	i_1011:
+		if(ic-- == 0) goto end;
+	i_1012:
+		if(ic-- == 0) goto end;
+	i_1013:
+		if(ic-- == 0) goto end;
+	i_1014:
+		if(ic-- == 0) goto end;
+	i_1015:
+		if(ic-- == 0) goto end;
+	i_1016:
+		if(ic-- == 0) goto end;
+	i_1017:
+		if(ic-- == 0) goto end;
+	i_1018:
+		if(ic-- == 0) goto end;
+	i_1019:
+		if(ic-- == 0) goto end;
+	i_1020:
+		if(ic-- == 0) goto end;
+	i_1021:
+		if(ic-- == 0) goto end;
+	i_1022:
+		if(ic-- == 0) goto end;
+	i_1023:
+		if(ic-- == 0) goto end;
+		goto i_0;
+	end:
+		PROF_STDOUT();
+		fprintf(stdout, "VM branches: %lu\n", branches);
+		return 0;
+}

+ 2839 - 0
tests/branch_prediction/branch_randomly.c

@@ -0,0 +1,2839 @@
+#include "stdint.h"
+#include "stdlib.h"
+#include "stdio.h"
+#define PROF_USER_EVENTS_ONLY
+#define PROF_EVENT_LIST \
+  PROF_EVENT_HW(BRANCH_INSTRUCTIONS) \
+  PROF_EVENT_HW(BRANCH_MISSES) \
+  PROF_EVENT_SW(TASK_CLOCK)
+#include "prof.h"
+int main(int argc, char** argv) {
+	uint64_t ic = argc > 1 ? atoi(argv[1]) : 65536;
+	uint64_t ss = 0;
+	uint64_t branches = 0;
+	uint32_t state = 0;
+	uint32_t state2 = 123456789;
+	void* stack[65536];
+	PROF_START();
+	i_0:
+		if(ic-- == 0) goto end;
+	i_1:
+		if(ic-- == 0) goto end;
+	i_2:
+		if(ic-- == 0) goto end;
+	i_3:
+		if(ic-- == 0) goto end;
+	i_4:
+		if(ic-- == 0) goto end;
+	i_5:
+		if(ic-- == 0) goto end;
+	i_6:
+		if(ic-- == 0) goto end;
+	i_7:
+		if(ic-- == 0) goto end;
+	i_8:
+		if(ic-- == 0) goto end;
+	i_9:
+		if(ic-- == 0) goto end;
+	i_10:
+		if(ic-- == 0) goto end;
+	i_11:
+		if(ic-- == 0) goto end;
+	i_12:
+		if(ic-- == 0) goto end;
+	i_13:
+		if(ic-- == 0) goto end;
+	i_14:
+		if(ic-- == 0) goto end;
+	i_15:
+		if(ic-- == 0) goto end;
+	i_16:
+		if(ic-- == 0) goto end;
+	i_17:
+		if(ic-- == 0) goto end;
+	i_18:
+		if(ic-- == 0) goto end;
+	i_19:
+		if(ic-- == 0) goto end;
+	i_20:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3288853519) {
+			void* ret = &&i_21;
+			stack[ss++] = ret;
+			goto i_261;
+		}
+	i_21:
+		if(ic-- == 0) goto end;
+	i_22:
+		if(ic-- == 0) goto end;
+	i_23:
+		if(ic-- == 0) goto end;
+	i_24:
+		if(ic-- == 0) goto end;
+	i_25:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3812903776) {
+			void* ret = &&i_26;
+			stack[ss++] = ret;
+			goto i_281;
+		}
+	i_26:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 639652386) {
+			if(ss <= 0) goto i_27;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_27:
+		if(ic-- == 0) goto end;
+	i_28:
+		if(ic-- == 0) goto end;
+	i_29:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2961632904) {
+			if(ss <= 0) goto i_30;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_30:
+		if(ic-- == 0) goto end;
+	i_31:
+		if(ic-- == 0) goto end;
+	i_32:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 474307802) {
+			void* ret = &&i_33;
+			stack[ss++] = ret;
+			goto i_136;
+		}
+	i_33:
+		if(ic-- == 0) goto end;
+	i_34:
+		if(ic-- == 0) goto end;
+	i_35:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2093095523) {
+			if(ss <= 0) goto i_36;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_36:
+		if(ic-- == 0) goto end;
+	i_37:
+		if(ic-- == 0) goto end;
+	i_38:
+		if(ic-- == 0) goto end;
+	i_39:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3154726805) {
+			void* ret = &&i_40;
+			stack[ss++] = ret;
+			goto i_232;
+		}
+	i_40:
+		if(ic-- == 0) goto end;
+	i_41:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2044508552) {
+			if(ss <= 0) goto i_42;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_42:
+		if(ic-- == 0) goto end;
+	i_43:
+		if(ic-- == 0) goto end;
+	i_44:
+		if(ic-- == 0) goto end;
+	i_45:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 277236801) {
+			void* ret = &&i_46;
+			stack[ss++] = ret;
+			goto i_171;
+		}
+	i_46:
+		if(ic-- == 0) goto end;
+	i_47:
+		if(ic-- == 0) goto end;
+	i_48:
+		if(ic-- == 0) goto end;
+	i_49:
+		if(ic-- == 0) goto end;
+	i_50:
+		if(ic-- == 0) goto end;
+	i_51:
+		if(ic-- == 0) goto end;
+	i_52:
+		if(ic-- == 0) goto end;
+	i_53:
+		if(ic-- == 0) goto end;
+	i_54:
+		if(ic-- == 0) goto end;
+	i_55:
+		if(ic-- == 0) goto end;
+	i_56:
+		if(ic-- == 0) goto end;
+	i_57:
+		if(ic-- == 0) goto end;
+	i_58:
+		if(ic-- == 0) goto end;
+	i_59:
+		if(ic-- == 0) goto end;
+	i_60:
+		if(ic-- == 0) goto end;
+	i_61:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1058438924) {
+			if(ss <= 0) goto i_62;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_62:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3520888866) {
+			void* ret = &&i_63;
+			stack[ss++] = ret;
+			goto i_231;
+		}
+	i_63:
+		if(ic-- == 0) goto end;
+	i_64:
+		if(ic-- == 0) goto end;
+	i_65:
+		if(ic-- == 0) goto end;
+	i_66:
+		if(ic-- == 0) goto end;
+	i_67:
+		if(ic-- == 0) goto end;
+	i_68:
+		if(ic-- == 0) goto end;
+	i_69:
+		if(ic-- == 0) goto end;
+	i_70:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3793324182) {
+			void* ret = &&i_71;
+			stack[ss++] = ret;
+			goto i_135;
+		}
+	i_71:
+		if(ic-- == 0) goto end;
+	i_72:
+		if(ic-- == 0) goto end;
+	i_73:
+		if(ic-- == 0) goto end;
+	i_74:
+		if(ic-- == 0) goto end;
+	i_75:
+		if(ic-- == 0) goto end;
+	i_76:
+		if(ic-- == 0) goto end;
+	i_77:
+		if(ic-- == 0) goto end;
+	i_78:
+		if(ic-- == 0) goto end;
+	i_79:
+		if(ic-- == 0) goto end;
+	i_80:
+		if(ic-- == 0) goto end;
+	i_81:
+		if(ic-- == 0) goto end;
+	i_82:
+		if(ic-- == 0) goto end;
+	i_83:
+		if(ic-- == 0) goto end;
+	i_84:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1542024869) {
+			void* ret = &&i_85;
+			stack[ss++] = ret;
+			goto i_221;
+		}
+	i_85:
+		if(ic-- == 0) goto end;
+	i_86:
+		if(ic-- == 0) goto end;
+	i_87:
+		if(ic-- == 0) goto end;
+	i_88:
+		if(ic-- == 0) goto end;
+	i_89:
+		if(ic-- == 0) goto end;
+	i_90:
+		if(ic-- == 0) goto end;
+	i_91:
+		if(ic-- == 0) goto end;
+	i_92:
+		if(ic-- == 0) goto end;
+	i_93:
+		if(ic-- == 0) goto end;
+	i_94:
+		if(ic-- == 0) goto end;
+	i_95:
+		if(ic-- == 0) goto end;
+	i_96:
+		if(ic-- == 0) goto end;
+	i_97:
+		if(ic-- == 0) goto end;
+	i_98:
+		if(ic-- == 0) goto end;
+	i_99:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 792504979) {
+			void* ret = &&i_100;
+			stack[ss++] = ret;
+			goto i_103;
+		}
+	i_100:
+		if(ic-- == 0) goto end;
+	i_101:
+		if(ic-- == 0) goto end;
+	i_102:
+		if(ic-- == 0) goto end;
+	i_103:
+		if(ic-- == 0) goto end;
+	i_104:
+		if(ic-- == 0) goto end;
+	i_105:
+		if(ic-- == 0) goto end;
+	i_106:
+		if(ic-- == 0) goto end;
+	i_107:
+		if(ic-- == 0) goto end;
+	i_108:
+		if(ic-- == 0) goto end;
+	i_109:
+		if(ic-- == 0) goto end;
+	i_110:
+		if(ic-- == 0) goto end;
+	i_111:
+		if(ic-- == 0) goto end;
+	i_112:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 980709207) {
+			if(ss <= 0) goto i_113;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_113:
+		if(ic-- == 0) goto end;
+	i_114:
+		if(ic-- == 0) goto end;
+	i_115:
+		if(ic-- == 0) goto end;
+	i_116:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 971078638) {
+			if(ss <= 0) goto i_117;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_117:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3848388585) {
+			void* ret = &&i_118;
+			stack[ss++] = ret;
+			goto i_260;
+		}
+	i_118:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2057363175) {
+			if(ss <= 0) goto i_119;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_119:
+		if(ic-- == 0) goto end;
+	i_120:
+		if(ic-- == 0) goto end;
+	i_121:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2208602459) {
+			if(ss <= 0) goto i_122;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_122:
+		if(ic-- == 0) goto end;
+	i_123:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2808635116) {
+			if(ss <= 0) goto i_124;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_124:
+		if(ic-- == 0) goto end;
+	i_125:
+		if(ic-- == 0) goto end;
+	i_126:
+		if(ic-- == 0) goto end;
+	i_127:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3545628586) {
+			void* ret = &&i_128;
+			stack[ss++] = ret;
+			goto i_157;
+		}
+	i_128:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 4232781027) {
+			void* ret = &&i_129;
+			stack[ss++] = ret;
+			goto i_164;
+		}
+	i_129:
+		if(ic-- == 0) goto end;
+	i_130:
+		if(ic-- == 0) goto end;
+	i_131:
+		if(ic-- == 0) goto end;
+	i_132:
+		if(ic-- == 0) goto end;
+	i_133:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3244552482) {
+			if(ss <= 0) goto i_134;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_134:
+		if(ic-- == 0) goto end;
+	i_135:
+		if(ic-- == 0) goto end;
+	i_136:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3405076866) {
+			void* ret = &&i_137;
+			stack[ss++] = ret;
+			goto i_160;
+		}
+	i_137:
+		if(ic-- == 0) goto end;
+	i_138:
+		if(ic-- == 0) goto end;
+	i_139:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 511632434) {
+			void* ret = &&i_140;
+			stack[ss++] = ret;
+			goto i_346;
+		}
+	i_140:
+		if(ic-- == 0) goto end;
+	i_141:
+		if(ic-- == 0) goto end;
+	i_142:
+		if(ic-- == 0) goto end;
+	i_143:
+		if(ic-- == 0) goto end;
+	i_144:
+		if(ic-- == 0) goto end;
+	i_145:
+		if(ic-- == 0) goto end;
+	i_146:
+		if(ic-- == 0) goto end;
+	i_147:
+		if(ic-- == 0) goto end;
+	i_148:
+		if(ic-- == 0) goto end;
+	i_149:
+		if(ic-- == 0) goto end;
+	i_150:
+		if(ic-- == 0) goto end;
+	i_151:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 696643743) {
+			void* ret = &&i_152;
+			stack[ss++] = ret;
+			goto i_161;
+		}
+	i_152:
+		if(ic-- == 0) goto end;
+	i_153:
+		if(ic-- == 0) goto end;
+	i_154:
+		if(ic-- == 0) goto end;
+	i_155:
+		if(ic-- == 0) goto end;
+	i_156:
+		if(ic-- == 0) goto end;
+	i_157:
+		if(ic-- == 0) goto end;
+	i_158:
+		if(ic-- == 0) goto end;
+	i_159:
+		if(ic-- == 0) goto end;
+	i_160:
+		if(ic-- == 0) goto end;
+	i_161:
+		if(ic-- == 0) goto end;
+	i_162:
+		if(ic-- == 0) goto end;
+	i_163:
+		if(ic-- == 0) goto end;
+	i_164:
+		if(ic-- == 0) goto end;
+	i_165:
+		if(ic-- == 0) goto end;
+	i_166:
+		if(ic-- == 0) goto end;
+	i_167:
+		if(ic-- == 0) goto end;
+	i_168:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3553648057) {
+			if(ss <= 0) goto i_169;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_169:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2307482321) {
+			if(ss <= 0) goto i_170;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_170:
+		if(ic-- == 0) goto end;
+	i_171:
+		if(ic-- == 0) goto end;
+	i_172:
+		if(ic-- == 0) goto end;
+	i_173:
+		if(ic-- == 0) goto end;
+	i_174:
+		if(ic-- == 0) goto end;
+	i_175:
+		if(ic-- == 0) goto end;
+	i_176:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 371928313) {
+			if(ss <= 0) goto i_177;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_177:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2322879371) {
+			if(ss <= 0) goto i_178;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_178:
+		if(ic-- == 0) goto end;
+	i_179:
+		if(ic-- == 0) goto end;
+	i_180:
+		if(ic-- == 0) goto end;
+	i_181:
+		if(ic-- == 0) goto end;
+	i_182:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1986846731) {
+			void* ret = &&i_183;
+			stack[ss++] = ret;
+			goto i_415;
+		}
+	i_183:
+		if(ic-- == 0) goto end;
+	i_184:
+		if(ic-- == 0) goto end;
+	i_185:
+		if(ic-- == 0) goto end;
+	i_186:
+		if(ic-- == 0) goto end;
+	i_187:
+		if(ic-- == 0) goto end;
+	i_188:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 4140864485) {
+			void* ret = &&i_189;
+			stack[ss++] = ret;
+			goto i_343;
+		}
+	i_189:
+		if(ic-- == 0) goto end;
+	i_190:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 328982338) {
+			void* ret = &&i_191;
+			stack[ss++] = ret;
+			goto i_268;
+		}
+	i_191:
+		if(ic-- == 0) goto end;
+	i_192:
+		if(ic-- == 0) goto end;
+	i_193:
+		if(ic-- == 0) goto end;
+	i_194:
+		if(ic-- == 0) goto end;
+	i_195:
+		if(ic-- == 0) goto end;
+	i_196:
+		if(ic-- == 0) goto end;
+	i_197:
+		if(ic-- == 0) goto end;
+	i_198:
+		if(ic-- == 0) goto end;
+	i_199:
+		if(ic-- == 0) goto end;
+	i_200:
+		if(ic-- == 0) goto end;
+	i_201:
+		if(ic-- == 0) goto end;
+	i_202:
+		if(ic-- == 0) goto end;
+	i_203:
+		if(ic-- == 0) goto end;
+	i_204:
+		if(ic-- == 0) goto end;
+	i_205:
+		if(ic-- == 0) goto end;
+	i_206:
+		if(ic-- == 0) goto end;
+	i_207:
+		if(ic-- == 0) goto end;
+	i_208:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 4134670764) {
+			void* ret = &&i_209;
+			stack[ss++] = ret;
+			goto i_442;
+		}
+	i_209:
+		if(ic-- == 0) goto end;
+	i_210:
+		if(ic-- == 0) goto end;
+	i_211:
+		if(ic-- == 0) goto end;
+	i_212:
+		if(ic-- == 0) goto end;
+	i_213:
+		if(ic-- == 0) goto end;
+	i_214:
+		if(ic-- == 0) goto end;
+	i_215:
+		if(ic-- == 0) goto end;
+	i_216:
+		if(ic-- == 0) goto end;
+	i_217:
+		if(ic-- == 0) goto end;
+	i_218:
+		if(ic-- == 0) goto end;
+	i_219:
+		if(ic-- == 0) goto end;
+	i_220:
+		if(ic-- == 0) goto end;
+	i_221:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2822139845) {
+			void* ret = &&i_222;
+			stack[ss++] = ret;
+			goto i_406;
+		}
+	i_222:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 918537004) {
+			void* ret = &&i_223;
+			stack[ss++] = ret;
+			goto i_394;
+		}
+	i_223:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1196865954) {
+			void* ret = &&i_224;
+			stack[ss++] = ret;
+			goto i_466;
+		}
+	i_224:
+		if(ic-- == 0) goto end;
+	i_225:
+		if(ic-- == 0) goto end;
+	i_226:
+		if(ic-- == 0) goto end;
+	i_227:
+		if(ic-- == 0) goto end;
+	i_228:
+		if(ic-- == 0) goto end;
+	i_229:
+		if(ic-- == 0) goto end;
+	i_230:
+		if(ic-- == 0) goto end;
+	i_231:
+		if(ic-- == 0) goto end;
+	i_232:
+		if(ic-- == 0) goto end;
+	i_233:
+		if(ic-- == 0) goto end;
+	i_234:
+		if(ic-- == 0) goto end;
+	i_235:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 590251524) {
+			void* ret = &&i_236;
+			stack[ss++] = ret;
+			goto i_385;
+		}
+	i_236:
+		if(ic-- == 0) goto end;
+	i_237:
+		if(ic-- == 0) goto end;
+	i_238:
+		if(ic-- == 0) goto end;
+	i_239:
+		if(ic-- == 0) goto end;
+	i_240:
+		if(ic-- == 0) goto end;
+	i_241:
+		if(ic-- == 0) goto end;
+	i_242:
+		if(ic-- == 0) goto end;
+	i_243:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2452641289) {
+			void* ret = &&i_244;
+			stack[ss++] = ret;
+			goto i_402;
+		}
+	i_244:
+		if(ic-- == 0) goto end;
+	i_245:
+		if(ic-- == 0) goto end;
+	i_246:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 4170012753) {
+			void* ret = &&i_247;
+			stack[ss++] = ret;
+			goto i_249;
+		}
+	i_247:
+		if(ic-- == 0) goto end;
+	i_248:
+		if(ic-- == 0) goto end;
+	i_249:
+		if(ic-- == 0) goto end;
+	i_250:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3362009392) {
+			if(ss <= 0) goto i_251;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_251:
+		if(ic-- == 0) goto end;
+	i_252:
+		if(ic-- == 0) goto end;
+	i_253:
+		if(ic-- == 0) goto end;
+	i_254:
+		if(ic-- == 0) goto end;
+	i_255:
+		if(ic-- == 0) goto end;
+	i_256:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 4054309882) {
+			void* ret = &&i_257;
+			stack[ss++] = ret;
+			goto i_420;
+		}
+	i_257:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 593509743) {
+			void* ret = &&i_258;
+			stack[ss++] = ret;
+			goto i_330;
+		}
+	i_258:
+		if(ic-- == 0) goto end;
+	i_259:
+		if(ic-- == 0) goto end;
+	i_260:
+		if(ic-- == 0) goto end;
+	i_261:
+		if(ic-- == 0) goto end;
+	i_262:
+		if(ic-- == 0) goto end;
+	i_263:
+		if(ic-- == 0) goto end;
+	i_264:
+		if(ic-- == 0) goto end;
+	i_265:
+		if(ic-- == 0) goto end;
+	i_266:
+		if(ic-- == 0) goto end;
+	i_267:
+		if(ic-- == 0) goto end;
+	i_268:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2747033421) {
+			void* ret = &&i_269;
+			stack[ss++] = ret;
+			goto i_395;
+		}
+	i_269:
+		if(ic-- == 0) goto end;
+	i_270:
+		if(ic-- == 0) goto end;
+	i_271:
+		if(ic-- == 0) goto end;
+	i_272:
+		if(ic-- == 0) goto end;
+	i_273:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3684732774) {
+			if(ss <= 0) goto i_274;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_274:
+		if(ic-- == 0) goto end;
+	i_275:
+		if(ic-- == 0) goto end;
+	i_276:
+		if(ic-- == 0) goto end;
+	i_277:
+		if(ic-- == 0) goto end;
+	i_278:
+		if(ic-- == 0) goto end;
+	i_279:
+		if(ic-- == 0) goto end;
+	i_280:
+		if(ic-- == 0) goto end;
+	i_281:
+		if(ic-- == 0) goto end;
+	i_282:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 309376903) {
+			void* ret = &&i_283;
+			stack[ss++] = ret;
+			goto i_317;
+		}
+	i_283:
+		if(ic-- == 0) goto end;
+	i_284:
+		if(ic-- == 0) goto end;
+	i_285:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 219150529) {
+			if(ss <= 0) goto i_286;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_286:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2594130359) {
+			if(ss <= 0) goto i_287;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_287:
+		if(ic-- == 0) goto end;
+	i_288:
+		if(ic-- == 0) goto end;
+	i_289:
+		if(ic-- == 0) goto end;
+	i_290:
+		if(ic-- == 0) goto end;
+	i_291:
+		if(ic-- == 0) goto end;
+	i_292:
+		if(ic-- == 0) goto end;
+	i_293:
+		if(ic-- == 0) goto end;
+	i_294:
+		if(ic-- == 0) goto end;
+	i_295:
+		if(ic-- == 0) goto end;
+	i_296:
+		if(ic-- == 0) goto end;
+	i_297:
+		if(ic-- == 0) goto end;
+	i_298:
+		if(ic-- == 0) goto end;
+	i_299:
+		if(ic-- == 0) goto end;
+	i_300:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2892835113) {
+			void* ret = &&i_301;
+			stack[ss++] = ret;
+			goto i_457;
+		}
+	i_301:
+		if(ic-- == 0) goto end;
+	i_302:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3373689969) {
+			if(ss <= 0) goto i_303;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_303:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3569068444) {
+			void* ret = &&i_304;
+			stack[ss++] = ret;
+			goto i_508;
+		}
+	i_304:
+		if(ic-- == 0) goto end;
+	i_305:
+		if(ic-- == 0) goto end;
+	i_306:
+		if(ic-- == 0) goto end;
+	i_307:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2969939441) {
+			if(ss <= 0) goto i_308;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_308:
+		if(ic-- == 0) goto end;
+	i_309:
+		if(ic-- == 0) goto end;
+	i_310:
+		if(ic-- == 0) goto end;
+	i_311:
+		if(ic-- == 0) goto end;
+	i_312:
+		if(ic-- == 0) goto end;
+	i_313:
+		if(ic-- == 0) goto end;
+	i_314:
+		if(ic-- == 0) goto end;
+	i_315:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3588049267) {
+			void* ret = &&i_316;
+			stack[ss++] = ret;
+			goto i_413;
+		}
+	i_316:
+		if(ic-- == 0) goto end;
+	i_317:
+		if(ic-- == 0) goto end;
+	i_318:
+		if(ic-- == 0) goto end;
+	i_319:
+		if(ic-- == 0) goto end;
+	i_320:
+		if(ic-- == 0) goto end;
+	i_321:
+		if(ic-- == 0) goto end;
+	i_322:
+		if(ic-- == 0) goto end;
+	i_323:
+		if(ic-- == 0) goto end;
+	i_324:
+		if(ic-- == 0) goto end;
+	i_325:
+		if(ic-- == 0) goto end;
+	i_326:
+		if(ic-- == 0) goto end;
+	i_327:
+		if(ic-- == 0) goto end;
+	i_328:
+		if(ic-- == 0) goto end;
+	i_329:
+		if(ic-- == 0) goto end;
+	i_330:
+		if(ic-- == 0) goto end;
+	i_331:
+		if(ic-- == 0) goto end;
+	i_332:
+		if(ic-- == 0) goto end;
+	i_333:
+		if(ic-- == 0) goto end;
+	i_334:
+		if(ic-- == 0) goto end;
+	i_335:
+		if(ic-- == 0) goto end;
+	i_336:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1190547036) {
+			if(ss <= 0) goto i_337;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_337:
+		if(ic-- == 0) goto end;
+	i_338:
+		if(ic-- == 0) goto end;
+	i_339:
+		if(ic-- == 0) goto end;
+	i_340:
+		if(ic-- == 0) goto end;
+	i_341:
+		if(ic-- == 0) goto end;
+	i_342:
+		if(ic-- == 0) goto end;
+	i_343:
+		if(ic-- == 0) goto end;
+	i_344:
+		if(ic-- == 0) goto end;
+	i_345:
+		if(ic-- == 0) goto end;
+	i_346:
+		if(ic-- == 0) goto end;
+	i_347:
+		if(ic-- == 0) goto end;
+	i_348:
+		if(ic-- == 0) goto end;
+	i_349:
+		if(ic-- == 0) goto end;
+	i_350:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 4115343926) {
+			void* ret = &&i_351;
+			stack[ss++] = ret;
+			goto i_541;
+		}
+	i_351:
+		if(ic-- == 0) goto end;
+	i_352:
+		if(ic-- == 0) goto end;
+	i_353:
+		if(ic-- == 0) goto end;
+	i_354:
+		if(ic-- == 0) goto end;
+	i_355:
+		if(ic-- == 0) goto end;
+	i_356:
+		if(ic-- == 0) goto end;
+	i_357:
+		if(ic-- == 0) goto end;
+	i_358:
+		if(ic-- == 0) goto end;
+	i_359:
+		if(ic-- == 0) goto end;
+	i_360:
+		if(ic-- == 0) goto end;
+	i_361:
+		if(ic-- == 0) goto end;
+	i_362:
+		if(ic-- == 0) goto end;
+	i_363:
+		if(ic-- == 0) goto end;
+	i_364:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 625597055) {
+			if(ss <= 0) goto i_365;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_365:
+		if(ic-- == 0) goto end;
+	i_366:
+		if(ic-- == 0) goto end;
+	i_367:
+		if(ic-- == 0) goto end;
+	i_368:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2921020832) {
+			void* ret = &&i_369;
+			stack[ss++] = ret;
+			goto i_403;
+		}
+	i_369:
+		if(ic-- == 0) goto end;
+	i_370:
+		if(ic-- == 0) goto end;
+	i_371:
+		if(ic-- == 0) goto end;
+	i_372:
+		if(ic-- == 0) goto end;
+	i_373:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2479284681) {
+			void* ret = &&i_374;
+			stack[ss++] = ret;
+			goto i_564;
+		}
+	i_374:
+		if(ic-- == 0) goto end;
+	i_375:
+		if(ic-- == 0) goto end;
+	i_376:
+		if(ic-- == 0) goto end;
+	i_377:
+		if(ic-- == 0) goto end;
+	i_378:
+		if(ic-- == 0) goto end;
+	i_379:
+		if(ic-- == 0) goto end;
+	i_380:
+		if(ic-- == 0) goto end;
+	i_381:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 559008306) {
+			void* ret = &&i_382;
+			stack[ss++] = ret;
+			goto i_547;
+		}
+	i_382:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1232165017) {
+			if(ss <= 0) goto i_383;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_383:
+		if(ic-- == 0) goto end;
+	i_384:
+		if(ic-- == 0) goto end;
+	i_385:
+		if(ic-- == 0) goto end;
+	i_386:
+		if(ic-- == 0) goto end;
+	i_387:
+		if(ic-- == 0) goto end;
+	i_388:
+		if(ic-- == 0) goto end;
+	i_389:
+		if(ic-- == 0) goto end;
+	i_390:
+		if(ic-- == 0) goto end;
+	i_391:
+		if(ic-- == 0) goto end;
+	i_392:
+		if(ic-- == 0) goto end;
+	i_393:
+		if(ic-- == 0) goto end;
+	i_394:
+		if(ic-- == 0) goto end;
+	i_395:
+		if(ic-- == 0) goto end;
+	i_396:
+		if(ic-- == 0) goto end;
+	i_397:
+		if(ic-- == 0) goto end;
+	i_398:
+		if(ic-- == 0) goto end;
+	i_399:
+		if(ic-- == 0) goto end;
+	i_400:
+		if(ic-- == 0) goto end;
+	i_401:
+		if(ic-- == 0) goto end;
+	i_402:
+		if(ic-- == 0) goto end;
+	i_403:
+		if(ic-- == 0) goto end;
+	i_404:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 152819674) {
+			void* ret = &&i_405;
+			stack[ss++] = ret;
+			goto i_424;
+		}
+	i_405:
+		if(ic-- == 0) goto end;
+	i_406:
+		if(ic-- == 0) goto end;
+	i_407:
+		if(ic-- == 0) goto end;
+	i_408:
+		if(ic-- == 0) goto end;
+	i_409:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1237514854) {
+			if(ss <= 0) goto i_410;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_410:
+		if(ic-- == 0) goto end;
+	i_411:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1706351018) {
+			if(ss <= 0) goto i_412;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_412:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3571797961) {
+			void* ret = &&i_413;
+			stack[ss++] = ret;
+			goto i_591;
+		}
+	i_413:
+		if(ic-- == 0) goto end;
+	i_414:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3070440026) {
+			if(ss <= 0) goto i_415;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_415:
+		if(ic-- == 0) goto end;
+	i_416:
+		if(ic-- == 0) goto end;
+	i_417:
+		if(ic-- == 0) goto end;
+	i_418:
+		if(ic-- == 0) goto end;
+	i_419:
+		if(ic-- == 0) goto end;
+	i_420:
+		if(ic-- == 0) goto end;
+	i_421:
+		if(ic-- == 0) goto end;
+	i_422:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2304247836) {
+			if(ss <= 0) goto i_423;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_423:
+		if(ic-- == 0) goto end;
+	i_424:
+		if(ic-- == 0) goto end;
+	i_425:
+		if(ic-- == 0) goto end;
+	i_426:
+		if(ic-- == 0) goto end;
+	i_427:
+		if(ic-- == 0) goto end;
+	i_428:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1446234727) {
+			void* ret = &&i_429;
+			stack[ss++] = ret;
+			goto i_463;
+		}
+	i_429:
+		if(ic-- == 0) goto end;
+	i_430:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2010984968) {
+			void* ret = &&i_431;
+			stack[ss++] = ret;
+			goto i_668;
+		}
+	i_431:
+		if(ic-- == 0) goto end;
+	i_432:
+		if(ic-- == 0) goto end;
+	i_433:
+		if(ic-- == 0) goto end;
+	i_434:
+		if(ic-- == 0) goto end;
+	i_435:
+		if(ic-- == 0) goto end;
+	i_436:
+		if(ic-- == 0) goto end;
+	i_437:
+		if(ic-- == 0) goto end;
+	i_438:
+		if(ic-- == 0) goto end;
+	i_439:
+		if(ic-- == 0) goto end;
+	i_440:
+		if(ic-- == 0) goto end;
+	i_441:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 726364629) {
+			void* ret = &&i_442;
+			stack[ss++] = ret;
+			goto i_570;
+		}
+	i_442:
+		if(ic-- == 0) goto end;
+	i_443:
+		if(ic-- == 0) goto end;
+	i_444:
+		if(ic-- == 0) goto end;
+	i_445:
+		if(ic-- == 0) goto end;
+	i_446:
+		if(ic-- == 0) goto end;
+	i_447:
+		if(ic-- == 0) goto end;
+	i_448:
+		if(ic-- == 0) goto end;
+	i_449:
+		if(ic-- == 0) goto end;
+	i_450:
+		if(ic-- == 0) goto end;
+	i_451:
+		if(ic-- == 0) goto end;
+	i_452:
+		if(ic-- == 0) goto end;
+	i_453:
+		if(ic-- == 0) goto end;
+	i_454:
+		if(ic-- == 0) goto end;
+	i_455:
+		if(ic-- == 0) goto end;
+	i_456:
+		if(ic-- == 0) goto end;
+	i_457:
+		if(ic-- == 0) goto end;
+	i_458:
+		if(ic-- == 0) goto end;
+	i_459:
+		if(ic-- == 0) goto end;
+	i_460:
+		if(ic-- == 0) goto end;
+	i_461:
+		if(ic-- == 0) goto end;
+	i_462:
+		if(ic-- == 0) goto end;
+	i_463:
+		if(ic-- == 0) goto end;
+	i_464:
+		if(ic-- == 0) goto end;
+	i_465:
+		if(ic-- == 0) goto end;
+	i_466:
+		if(ic-- == 0) goto end;
+	i_467:
+		if(ic-- == 0) goto end;
+	i_468:
+		if(ic-- == 0) goto end;
+	i_469:
+		if(ic-- == 0) goto end;
+	i_470:
+		if(ic-- == 0) goto end;
+	i_471:
+		if(ic-- == 0) goto end;
+	i_472:
+		if(ic-- == 0) goto end;
+	i_473:
+		if(ic-- == 0) goto end;
+	i_474:
+		if(ic-- == 0) goto end;
+	i_475:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3521149299) {
+			void* ret = &&i_476;
+			stack[ss++] = ret;
+			goto i_657;
+		}
+	i_476:
+		if(ic-- == 0) goto end;
+	i_477:
+		if(ic-- == 0) goto end;
+	i_478:
+		if(ic-- == 0) goto end;
+	i_479:
+		if(ic-- == 0) goto end;
+	i_480:
+		if(ic-- == 0) goto end;
+	i_481:
+		if(ic-- == 0) goto end;
+	i_482:
+		if(ic-- == 0) goto end;
+	i_483:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3375122053) {
+			if(ss <= 0) goto i_484;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_484:
+		if(ic-- == 0) goto end;
+	i_485:
+		if(ic-- == 0) goto end;
+	i_486:
+		if(ic-- == 0) goto end;
+	i_487:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3835932753) {
+			if(ss <= 0) goto i_488;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_488:
+		if(ic-- == 0) goto end;
+	i_489:
+		if(ic-- == 0) goto end;
+	i_490:
+		if(ic-- == 0) goto end;
+	i_491:
+		if(ic-- == 0) goto end;
+	i_492:
+		if(ic-- == 0) goto end;
+	i_493:
+		if(ic-- == 0) goto end;
+	i_494:
+		if(ic-- == 0) goto end;
+	i_495:
+		if(ic-- == 0) goto end;
+	i_496:
+		if(ic-- == 0) goto end;
+	i_497:
+		if(ic-- == 0) goto end;
+	i_498:
+		if(ic-- == 0) goto end;
+	i_499:
+		if(ic-- == 0) goto end;
+	i_500:
+		if(ic-- == 0) goto end;
+	i_501:
+		if(ic-- == 0) goto end;
+	i_502:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2796388936) {
+			if(ss <= 0) goto i_503;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_503:
+		if(ic-- == 0) goto end;
+	i_504:
+		if(ic-- == 0) goto end;
+	i_505:
+		if(ic-- == 0) goto end;
+	i_506:
+		if(ic-- == 0) goto end;
+	i_507:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1247141878) {
+			void* ret = &&i_508;
+			stack[ss++] = ret;
+			goto i_730;
+		}
+	i_508:
+		if(ic-- == 0) goto end;
+	i_509:
+		if(ic-- == 0) goto end;
+	i_510:
+		if(ic-- == 0) goto end;
+	i_511:
+		if(ic-- == 0) goto end;
+	i_512:
+		if(ic-- == 0) goto end;
+	i_513:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1118508659) {
+			void* ret = &&i_514;
+			stack[ss++] = ret;
+			goto i_570;
+		}
+	i_514:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3814103514) {
+			void* ret = &&i_515;
+			stack[ss++] = ret;
+			goto i_521;
+		}
+	i_515:
+		if(ic-- == 0) goto end;
+	i_516:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1924324783) {
+			void* ret = &&i_517;
+			stack[ss++] = ret;
+			goto i_765;
+		}
+	i_517:
+		if(ic-- == 0) goto end;
+	i_518:
+		if(ic-- == 0) goto end;
+	i_519:
+		if(ic-- == 0) goto end;
+	i_520:
+		if(ic-- == 0) goto end;
+	i_521:
+		if(ic-- == 0) goto end;
+	i_522:
+		if(ic-- == 0) goto end;
+	i_523:
+		if(ic-- == 0) goto end;
+	i_524:
+		if(ic-- == 0) goto end;
+	i_525:
+		if(ic-- == 0) goto end;
+	i_526:
+		if(ic-- == 0) goto end;
+	i_527:
+		if(ic-- == 0) goto end;
+	i_528:
+		if(ic-- == 0) goto end;
+	i_529:
+		if(ic-- == 0) goto end;
+	i_530:
+		if(ic-- == 0) goto end;
+	i_531:
+		if(ic-- == 0) goto end;
+	i_532:
+		if(ic-- == 0) goto end;
+	i_533:
+		if(ic-- == 0) goto end;
+	i_534:
+		if(ic-- == 0) goto end;
+	i_535:
+		if(ic-- == 0) goto end;
+	i_536:
+		if(ic-- == 0) goto end;
+	i_537:
+		if(ic-- == 0) goto end;
+	i_538:
+		if(ic-- == 0) goto end;
+	i_539:
+		if(ic-- == 0) goto end;
+	i_540:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 126722253) {
+			if(ss <= 0) goto i_541;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_541:
+		if(ic-- == 0) goto end;
+	i_542:
+		if(ic-- == 0) goto end;
+	i_543:
+		if(ic-- == 0) goto end;
+	i_544:
+		if(ic-- == 0) goto end;
+	i_545:
+		if(ic-- == 0) goto end;
+	i_546:
+		if(ic-- == 0) goto end;
+	i_547:
+		if(ic-- == 0) goto end;
+	i_548:
+		if(ic-- == 0) goto end;
+	i_549:
+		if(ic-- == 0) goto end;
+	i_550:
+		if(ic-- == 0) goto end;
+	i_551:
+		if(ic-- == 0) goto end;
+	i_552:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3051608332) {
+			void* ret = &&i_553;
+			stack[ss++] = ret;
+			goto i_604;
+		}
+	i_553:
+		if(ic-- == 0) goto end;
+	i_554:
+		if(ic-- == 0) goto end;
+	i_555:
+		if(ic-- == 0) goto end;
+	i_556:
+		if(ic-- == 0) goto end;
+	i_557:
+		if(ic-- == 0) goto end;
+	i_558:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3676004017) {
+			void* ret = &&i_559;
+			stack[ss++] = ret;
+			goto i_645;
+		}
+	i_559:
+		if(ic-- == 0) goto end;
+	i_560:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 808006198) {
+			void* ret = &&i_561;
+			stack[ss++] = ret;
+			goto i_656;
+		}
+	i_561:
+		if(ic-- == 0) goto end;
+	i_562:
+		if(ic-- == 0) goto end;
+	i_563:
+		if(ic-- == 0) goto end;
+	i_564:
+		if(ic-- == 0) goto end;
+	i_565:
+		if(ic-- == 0) goto end;
+	i_566:
+		if(ic-- == 0) goto end;
+	i_567:
+		if(ic-- == 0) goto end;
+	i_568:
+		if(ic-- == 0) goto end;
+	i_569:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1017591791) {
+			void* ret = &&i_570;
+			stack[ss++] = ret;
+			goto i_637;
+		}
+	i_570:
+		if(ic-- == 0) goto end;
+	i_571:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2494873158) {
+			if(ss <= 0) goto i_572;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_572:
+		if(ic-- == 0) goto end;
+	i_573:
+		if(ic-- == 0) goto end;
+	i_574:
+		if(ic-- == 0) goto end;
+	i_575:
+		if(ic-- == 0) goto end;
+	i_576:
+		if(ic-- == 0) goto end;
+	i_577:
+		if(ic-- == 0) goto end;
+	i_578:
+		if(ic-- == 0) goto end;
+	i_579:
+		if(ic-- == 0) goto end;
+	i_580:
+		if(ic-- == 0) goto end;
+	i_581:
+		if(ic-- == 0) goto end;
+	i_582:
+		if(ic-- == 0) goto end;
+	i_583:
+		if(ic-- == 0) goto end;
+	i_584:
+		if(ic-- == 0) goto end;
+	i_585:
+		if(ic-- == 0) goto end;
+	i_586:
+		if(ic-- == 0) goto end;
+	i_587:
+		if(ic-- == 0) goto end;
+	i_588:
+		if(ic-- == 0) goto end;
+	i_589:
+		if(ic-- == 0) goto end;
+	i_590:
+		if(ic-- == 0) goto end;
+	i_591:
+		if(ic-- == 0) goto end;
+	i_592:
+		if(ic-- == 0) goto end;
+	i_593:
+		if(ic-- == 0) goto end;
+	i_594:
+		if(ic-- == 0) goto end;
+	i_595:
+		if(ic-- == 0) goto end;
+	i_596:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 4909130) {
+			void* ret = &&i_597;
+			stack[ss++] = ret;
+			goto i_622;
+		}
+	i_597:
+		if(ic-- == 0) goto end;
+	i_598:
+		if(ic-- == 0) goto end;
+	i_599:
+		if(ic-- == 0) goto end;
+	i_600:
+		if(ic-- == 0) goto end;
+	i_601:
+		if(ic-- == 0) goto end;
+	i_602:
+		if(ic-- == 0) goto end;
+	i_603:
+		if(ic-- == 0) goto end;
+	i_604:
+		if(ic-- == 0) goto end;
+	i_605:
+		if(ic-- == 0) goto end;
+	i_606:
+		if(ic-- == 0) goto end;
+	i_607:
+		if(ic-- == 0) goto end;
+	i_608:
+		if(ic-- == 0) goto end;
+	i_609:
+		if(ic-- == 0) goto end;
+	i_610:
+		if(ic-- == 0) goto end;
+	i_611:
+		if(ic-- == 0) goto end;
+	i_612:
+		if(ic-- == 0) goto end;
+	i_613:
+		if(ic-- == 0) goto end;
+	i_614:
+		if(ic-- == 0) goto end;
+	i_615:
+		if(ic-- == 0) goto end;
+	i_616:
+		if(ic-- == 0) goto end;
+	i_617:
+		if(ic-- == 0) goto end;
+	i_618:
+		if(ic-- == 0) goto end;
+	i_619:
+		if(ic-- == 0) goto end;
+	i_620:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 4170589735) {
+			void* ret = &&i_621;
+			stack[ss++] = ret;
+			goto i_666;
+		}
+	i_621:
+		if(ic-- == 0) goto end;
+	i_622:
+		if(ic-- == 0) goto end;
+	i_623:
+		if(ic-- == 0) goto end;
+	i_624:
+		if(ic-- == 0) goto end;
+	i_625:
+		if(ic-- == 0) goto end;
+	i_626:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1027138614) {
+			if(ss <= 0) goto i_627;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_627:
+		if(ic-- == 0) goto end;
+	i_628:
+		if(ic-- == 0) goto end;
+	i_629:
+		if(ic-- == 0) goto end;
+	i_630:
+		if(ic-- == 0) goto end;
+	i_631:
+		if(ic-- == 0) goto end;
+	i_632:
+		if(ic-- == 0) goto end;
+	i_633:
+		if(ic-- == 0) goto end;
+	i_634:
+		if(ic-- == 0) goto end;
+	i_635:
+		if(ic-- == 0) goto end;
+	i_636:
+		if(ic-- == 0) goto end;
+	i_637:
+		if(ic-- == 0) goto end;
+	i_638:
+		if(ic-- == 0) goto end;
+	i_639:
+		if(ic-- == 0) goto end;
+	i_640:
+		if(ic-- == 0) goto end;
+	i_641:
+		if(ic-- == 0) goto end;
+	i_642:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 478668193) {
+			void* ret = &&i_643;
+			stack[ss++] = ret;
+			goto i_801;
+		}
+	i_643:
+		if(ic-- == 0) goto end;
+	i_644:
+		if(ic-- == 0) goto end;
+	i_645:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2000561671) {
+			if(ss <= 0) goto i_646;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_646:
+		if(ic-- == 0) goto end;
+	i_647:
+		if(ic-- == 0) goto end;
+	i_648:
+		if(ic-- == 0) goto end;
+	i_649:
+		if(ic-- == 0) goto end;
+	i_650:
+		if(ic-- == 0) goto end;
+	i_651:
+		if(ic-- == 0) goto end;
+	i_652:
+		if(ic-- == 0) goto end;
+	i_653:
+		if(ic-- == 0) goto end;
+	i_654:
+		if(ic-- == 0) goto end;
+	i_655:
+		if(ic-- == 0) goto end;
+	i_656:
+		if(ic-- == 0) goto end;
+	i_657:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 157265782) {
+			if(ss <= 0) goto i_658;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_658:
+		if(ic-- == 0) goto end;
+	i_659:
+		if(ic-- == 0) goto end;
+	i_660:
+		if(ic-- == 0) goto end;
+	i_661:
+		if(ic-- == 0) goto end;
+	i_662:
+		if(ic-- == 0) goto end;
+	i_663:
+		if(ic-- == 0) goto end;
+	i_664:
+		if(ic-- == 0) goto end;
+	i_665:
+		if(ic-- == 0) goto end;
+	i_666:
+		if(ic-- == 0) goto end;
+	i_667:
+		if(ic-- == 0) goto end;
+	i_668:
+		if(ic-- == 0) goto end;
+	i_669:
+		if(ic-- == 0) goto end;
+	i_670:
+		if(ic-- == 0) goto end;
+	i_671:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3214452447) {
+			void* ret = &&i_672;
+			stack[ss++] = ret;
+			goto i_883;
+		}
+	i_672:
+		if(ic-- == 0) goto end;
+	i_673:
+		if(ic-- == 0) goto end;
+	i_674:
+		if(ic-- == 0) goto end;
+	i_675:
+		if(ic-- == 0) goto end;
+	i_676:
+		if(ic-- == 0) goto end;
+	i_677:
+		if(ic-- == 0) goto end;
+	i_678:
+		if(ic-- == 0) goto end;
+	i_679:
+		if(ic-- == 0) goto end;
+	i_680:
+		if(ic-- == 0) goto end;
+	i_681:
+		if(ic-- == 0) goto end;
+	i_682:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 288253489) {
+			if(ss <= 0) goto i_683;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_683:
+		if(ic-- == 0) goto end;
+	i_684:
+		if(ic-- == 0) goto end;
+	i_685:
+		if(ic-- == 0) goto end;
+	i_686:
+		if(ic-- == 0) goto end;
+	i_687:
+		if(ic-- == 0) goto end;
+	i_688:
+		if(ic-- == 0) goto end;
+	i_689:
+		if(ic-- == 0) goto end;
+	i_690:
+		if(ic-- == 0) goto end;
+	i_691:
+		if(ic-- == 0) goto end;
+	i_692:
+		if(ic-- == 0) goto end;
+	i_693:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3482595217) {
+			if(ss <= 0) goto i_694;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_694:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3120377816) {
+			if(ss <= 0) goto i_695;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_695:
+		if(ic-- == 0) goto end;
+	i_696:
+		if(ic-- == 0) goto end;
+	i_697:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 4245221468) {
+			void* ret = &&i_698;
+			stack[ss++] = ret;
+			goto i_703;
+		}
+	i_698:
+		if(ic-- == 0) goto end;
+	i_699:
+		if(ic-- == 0) goto end;
+	i_700:
+		if(ic-- == 0) goto end;
+	i_701:
+		if(ic-- == 0) goto end;
+	i_702:
+		if(ic-- == 0) goto end;
+	i_703:
+		if(ic-- == 0) goto end;
+	i_704:
+		if(ic-- == 0) goto end;
+	i_705:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2319198595) {
+			void* ret = &&i_706;
+			stack[ss++] = ret;
+			goto i_892;
+		}
+	i_706:
+		if(ic-- == 0) goto end;
+	i_707:
+		if(ic-- == 0) goto end;
+	i_708:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2399187042) {
+			void* ret = &&i_709;
+			stack[ss++] = ret;
+			goto i_796;
+		}
+	i_709:
+		if(ic-- == 0) goto end;
+	i_710:
+		if(ic-- == 0) goto end;
+	i_711:
+		if(ic-- == 0) goto end;
+	i_712:
+		if(ic-- == 0) goto end;
+	i_713:
+		if(ic-- == 0) goto end;
+	i_714:
+		if(ic-- == 0) goto end;
+	i_715:
+		if(ic-- == 0) goto end;
+	i_716:
+		if(ic-- == 0) goto end;
+	i_717:
+		if(ic-- == 0) goto end;
+	i_718:
+		if(ic-- == 0) goto end;
+	i_719:
+		if(ic-- == 0) goto end;
+	i_720:
+		if(ic-- == 0) goto end;
+	i_721:
+		if(ic-- == 0) goto end;
+	i_722:
+		if(ic-- == 0) goto end;
+	i_723:
+		if(ic-- == 0) goto end;
+	i_724:
+		if(ic-- == 0) goto end;
+	i_725:
+		if(ic-- == 0) goto end;
+	i_726:
+		if(ic-- == 0) goto end;
+	i_727:
+		if(ic-- == 0) goto end;
+	i_728:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 4184393193) {
+			void* ret = &&i_729;
+			stack[ss++] = ret;
+			goto i_770;
+		}
+	i_729:
+		if(ic-- == 0) goto end;
+	i_730:
+		if(ic-- == 0) goto end;
+	i_731:
+		if(ic-- == 0) goto end;
+	i_732:
+		if(ic-- == 0) goto end;
+	i_733:
+		if(ic-- == 0) goto end;
+	i_734:
+		if(ic-- == 0) goto end;
+	i_735:
+		if(ic-- == 0) goto end;
+	i_736:
+		if(ic-- == 0) goto end;
+	i_737:
+		if(ic-- == 0) goto end;
+	i_738:
+		if(ic-- == 0) goto end;
+	i_739:
+		if(ic-- == 0) goto end;
+	i_740:
+		if(ic-- == 0) goto end;
+	i_741:
+		if(ic-- == 0) goto end;
+	i_742:
+		if(ic-- == 0) goto end;
+	i_743:
+		if(ic-- == 0) goto end;
+	i_744:
+		if(ic-- == 0) goto end;
+	i_745:
+		if(ic-- == 0) goto end;
+	i_746:
+		if(ic-- == 0) goto end;
+	i_747:
+		if(ic-- == 0) goto end;
+	i_748:
+		if(ic-- == 0) goto end;
+	i_749:
+		if(ic-- == 0) goto end;
+	i_750:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1311714633) {
+			void* ret = &&i_751;
+			stack[ss++] = ret;
+			goto i_801;
+		}
+	i_751:
+		if(ic-- == 0) goto end;
+	i_752:
+		if(ic-- == 0) goto end;
+	i_753:
+		if(ic-- == 0) goto end;
+	i_754:
+		if(ic-- == 0) goto end;
+	i_755:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2990284553) {
+			void* ret = &&i_756;
+			stack[ss++] = ret;
+			goto i_1009;
+		}
+	i_756:
+		if(ic-- == 0) goto end;
+	i_757:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2525881729) {
+			if(ss <= 0) goto i_758;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_758:
+		if(ic-- == 0) goto end;
+	i_759:
+		if(ic-- == 0) goto end;
+	i_760:
+		if(ic-- == 0) goto end;
+	i_761:
+		if(ic-- == 0) goto end;
+	i_762:
+		if(ic-- == 0) goto end;
+	i_763:
+		if(ic-- == 0) goto end;
+	i_764:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1536893296) {
+			if(ss <= 0) goto i_765;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_765:
+		if(ic-- == 0) goto end;
+	i_766:
+		if(ic-- == 0) goto end;
+	i_767:
+		if(ic-- == 0) goto end;
+	i_768:
+		if(ic-- == 0) goto end;
+	i_769:
+		if(ic-- == 0) goto end;
+	i_770:
+		if(ic-- == 0) goto end;
+	i_771:
+		if(ic-- == 0) goto end;
+	i_772:
+		if(ic-- == 0) goto end;
+	i_773:
+		if(ic-- == 0) goto end;
+	i_774:
+		if(ic-- == 0) goto end;
+	i_775:
+		if(ic-- == 0) goto end;
+	i_776:
+		if(ic-- == 0) goto end;
+	i_777:
+		if(ic-- == 0) goto end;
+	i_778:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1484067825) {
+			void* ret = &&i_779;
+			stack[ss++] = ret;
+			goto i_893;
+		}
+	i_779:
+		if(ic-- == 0) goto end;
+	i_780:
+		if(ic-- == 0) goto end;
+	i_781:
+		if(ic-- == 0) goto end;
+	i_782:
+		if(ic-- == 0) goto end;
+	i_783:
+		if(ic-- == 0) goto end;
+	i_784:
+		if(ic-- == 0) goto end;
+	i_785:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2996317137) {
+			void* ret = &&i_786;
+			stack[ss++] = ret;
+			goto i_949;
+		}
+	i_786:
+		if(ic-- == 0) goto end;
+	i_787:
+		if(ic-- == 0) goto end;
+	i_788:
+		if(ic-- == 0) goto end;
+	i_789:
+		if(ic-- == 0) goto end;
+	i_790:
+		if(ic-- == 0) goto end;
+	i_791:
+		if(ic-- == 0) goto end;
+	i_792:
+		if(ic-- == 0) goto end;
+	i_793:
+		if(ic-- == 0) goto end;
+	i_794:
+		if(ic-- == 0) goto end;
+	i_795:
+		if(ic-- == 0) goto end;
+	i_796:
+		if(ic-- == 0) goto end;
+	i_797:
+		if(ic-- == 0) goto end;
+	i_798:
+		if(ic-- == 0) goto end;
+	i_799:
+		if(ic-- == 0) goto end;
+	i_800:
+		if(ic-- == 0) goto end;
+	i_801:
+		if(ic-- == 0) goto end;
+	i_802:
+		if(ic-- == 0) goto end;
+	i_803:
+		if(ic-- == 0) goto end;
+	i_804:
+		if(ic-- == 0) goto end;
+	i_805:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1346539270) {
+			void* ret = &&i_806;
+			stack[ss++] = ret;
+			goto i_813;
+		}
+	i_806:
+		if(ic-- == 0) goto end;
+	i_807:
+		if(ic-- == 0) goto end;
+	i_808:
+		if(ic-- == 0) goto end;
+	i_809:
+		if(ic-- == 0) goto end;
+	i_810:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1134804964) {
+			if(ss <= 0) goto i_811;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_811:
+		if(ic-- == 0) goto end;
+	i_812:
+		if(ic-- == 0) goto end;
+	i_813:
+		if(ic-- == 0) goto end;
+	i_814:
+		if(ic-- == 0) goto end;
+	i_815:
+		if(ic-- == 0) goto end;
+	i_816:
+		if(ic-- == 0) goto end;
+	i_817:
+		if(ic-- == 0) goto end;
+	i_818:
+		if(ic-- == 0) goto end;
+	i_819:
+		if(ic-- == 0) goto end;
+	i_820:
+		if(ic-- == 0) goto end;
+	i_821:
+		if(ic-- == 0) goto end;
+	i_822:
+		if(ic-- == 0) goto end;
+	i_823:
+		if(ic-- == 0) goto end;
+	i_824:
+		if(ic-- == 0) goto end;
+	i_825:
+		if(ic-- == 0) goto end;
+	i_826:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2353620466) {
+			if(ss <= 0) goto i_827;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_827:
+		if(ic-- == 0) goto end;
+	i_828:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 246564735) {
+			if(ss <= 0) goto i_829;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_829:
+		if(ic-- == 0) goto end;
+	i_830:
+		if(ic-- == 0) goto end;
+	i_831:
+		if(ic-- == 0) goto end;
+	i_832:
+		if(ic-- == 0) goto end;
+	i_833:
+		if(ic-- == 0) goto end;
+	i_834:
+		if(ic-- == 0) goto end;
+	i_835:
+		if(ic-- == 0) goto end;
+	i_836:
+		if(ic-- == 0) goto end;
+	i_837:
+		if(ic-- == 0) goto end;
+	i_838:
+		if(ic-- == 0) goto end;
+	i_839:
+		if(ic-- == 0) goto end;
+	i_840:
+		if(ic-- == 0) goto end;
+	i_841:
+		if(ic-- == 0) goto end;
+	i_842:
+		if(ic-- == 0) goto end;
+	i_843:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 782639687) {
+			void* ret = &&i_844;
+			stack[ss++] = ret;
+			goto i_955;
+		}
+	i_844:
+		if(ic-- == 0) goto end;
+	i_845:
+		if(ic-- == 0) goto end;
+	i_846:
+		if(ic-- == 0) goto end;
+	i_847:
+		if(ic-- == 0) goto end;
+	i_848:
+		if(ic-- == 0) goto end;
+	i_849:
+		if(ic-- == 0) goto end;
+	i_850:
+		if(ic-- == 0) goto end;
+	i_851:
+		if(ic-- == 0) goto end;
+	i_852:
+		if(ic-- == 0) goto end;
+	i_853:
+		if(ic-- == 0) goto end;
+	i_854:
+		if(ic-- == 0) goto end;
+	i_855:
+		if(ic-- == 0) goto end;
+	i_856:
+		if(ic-- == 0) goto end;
+	i_857:
+		if(ic-- == 0) goto end;
+	i_858:
+		if(ic-- == 0) goto end;
+	i_859:
+		if(ic-- == 0) goto end;
+	i_860:
+		if(ic-- == 0) goto end;
+	i_861:
+		if(ic-- == 0) goto end;
+	i_862:
+		if(ic-- == 0) goto end;
+	i_863:
+		if(ic-- == 0) goto end;
+	i_864:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 374700188) {
+			if(ss <= 0) goto i_865;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_865:
+		if(ic-- == 0) goto end;
+	i_866:
+		if(ic-- == 0) goto end;
+	i_867:
+		if(ic-- == 0) goto end;
+	i_868:
+		if(ic-- == 0) goto end;
+	i_869:
+		if(ic-- == 0) goto end;
+	i_870:
+		if(ic-- == 0) goto end;
+	i_871:
+		if(ic-- == 0) goto end;
+	i_872:
+		if(ic-- == 0) goto end;
+	i_873:
+		if(ic-- == 0) goto end;
+	i_874:
+		if(ic-- == 0) goto end;
+	i_875:
+		if(ic-- == 0) goto end;
+	i_876:
+		if(ic-- == 0) goto end;
+	i_877:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1975848362) {
+			void* ret = &&i_878;
+			stack[ss++] = ret;
+			goto i_971;
+		}
+	i_878:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 519058282) {
+			void* ret = &&i_879;
+			stack[ss++] = ret;
+			goto i_77;
+		}
+	i_879:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3810721988) {
+			if(ss <= 0) goto i_880;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_880:
+		if(ic-- == 0) goto end;
+	i_881:
+		if(ic-- == 0) goto end;
+	i_882:
+		if(ic-- == 0) goto end;
+	i_883:
+		if(ic-- == 0) goto end;
+	i_884:
+		if(ic-- == 0) goto end;
+	i_885:
+		if(ic-- == 0) goto end;
+	i_886:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 312929243) {
+			void* ret = &&i_887;
+			stack[ss++] = ret;
+			goto i_943;
+		}
+	i_887:
+		if(ic-- == 0) goto end;
+	i_888:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 75875866) {
+			void* ret = &&i_889;
+			stack[ss++] = ret;
+			goto i_969;
+		}
+	i_889:
+		if(ic-- == 0) goto end;
+	i_890:
+		if(ic-- == 0) goto end;
+	i_891:
+		if(ic-- == 0) goto end;
+	i_892:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3298258409) {
+			if(ss <= 0) goto i_893;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_893:
+		if(ic-- == 0) goto end;
+	i_894:
+		if(ic-- == 0) goto end;
+	i_895:
+		if(ic-- == 0) goto end;
+	i_896:
+		if(ic-- == 0) goto end;
+	i_897:
+		if(ic-- == 0) goto end;
+	i_898:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3944707394) {
+			void* ret = &&i_899;
+			stack[ss++] = ret;
+			goto i_974;
+		}
+	i_899:
+		if(ic-- == 0) goto end;
+	i_900:
+		if(ic-- == 0) goto end;
+	i_901:
+		if(ic-- == 0) goto end;
+	i_902:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3522509435) {
+			void* ret = &&i_903;
+			stack[ss++] = ret;
+			goto i_7;
+		}
+	i_903:
+		if(ic-- == 0) goto end;
+	i_904:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 2717695818) {
+			void* ret = &&i_905;
+			stack[ss++] = ret;
+			goto i_95;
+		}
+	i_905:
+		if(ic-- == 0) goto end;
+	i_906:
+		if(ic-- == 0) goto end;
+	i_907:
+		if(ic-- == 0) goto end;
+	i_908:
+		if(ic-- == 0) goto end;
+	i_909:
+		if(ic-- == 0) goto end;
+	i_910:
+		if(ic-- == 0) goto end;
+	i_911:
+		if(ic-- == 0) goto end;
+	i_912:
+		if(ic-- == 0) goto end;
+	i_913:
+		if(ic-- == 0) goto end;
+	i_914:
+		if(ic-- == 0) goto end;
+	i_915:
+		if(ic-- == 0) goto end;
+	i_916:
+		if(ic-- == 0) goto end;
+	i_917:
+		if(ic-- == 0) goto end;
+	i_918:
+		if(ic-- == 0) goto end;
+	i_919:
+		if(ic-- == 0) goto end;
+	i_920:
+		if(ic-- == 0) goto end;
+	i_921:
+		if(ic-- == 0) goto end;
+	i_922:
+		if(ic-- == 0) goto end;
+	i_923:
+		if(ic-- == 0) goto end;
+	i_924:
+		if(ic-- == 0) goto end;
+	i_925:
+		if(ic-- == 0) goto end;
+	i_926:
+		if(ic-- == 0) goto end;
+	i_927:
+		if(ic-- == 0) goto end;
+	i_928:
+		if(ic-- == 0) goto end;
+	i_929:
+		if(ic-- == 0) goto end;
+	i_930:
+		if(ic-- == 0) goto end;
+	i_931:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1170709507) {
+			if(ss <= 0) goto i_932;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_932:
+		if(ic-- == 0) goto end;
+	i_933:
+		if(ic-- == 0) goto end;
+	i_934:
+		if(ic-- == 0) goto end;
+	i_935:
+		if(ic-- == 0) goto end;
+	i_936:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3901871423) {
+			void* ret = &&i_937;
+			stack[ss++] = ret;
+			goto i_28;
+		}
+	i_937:
+		if(ic-- == 0) goto end;
+	i_938:
+		if(ic-- == 0) goto end;
+	i_939:
+		if(ic-- == 0) goto end;
+	i_940:
+		if(ic-- == 0) goto end;
+	i_941:
+		if(ic-- == 0) goto end;
+	i_942:
+		if(ic-- == 0) goto end;
+	i_943:
+		if(ic-- == 0) goto end;
+	i_944:
+		if(ic-- == 0) goto end;
+	i_945:
+		if(ic-- == 0) goto end;
+	i_946:
+		if(ic-- == 0) goto end;
+	i_947:
+		if(ic-- == 0) goto end;
+	i_948:
+		if(ic-- == 0) goto end;
+	i_949:
+		if(ic-- == 0) goto end;
+	i_950:
+		if(ic-- == 0) goto end;
+	i_951:
+		if(ic-- == 0) goto end;
+	i_952:
+		if(ic-- == 0) goto end;
+	i_953:
+		if(ic-- == 0) goto end;
+	i_954:
+		if(ic-- == 0) goto end;
+	i_955:
+		if(ic-- == 0) goto end;
+	i_956:
+		if(ic-- == 0) goto end;
+	i_957:
+		if(ic-- == 0) goto end;
+	i_958:
+		if(ic-- == 0) goto end;
+	i_959:
+		if(ic-- == 0) goto end;
+	i_960:
+		if(ic-- == 0) goto end;
+	i_961:
+		if(ic-- == 0) goto end;
+	i_962:
+		if(ic-- == 0) goto end;
+	i_963:
+		if(ic-- == 0) goto end;
+	i_964:
+		if(ic-- == 0) goto end;
+	i_965:
+		if(ic-- == 0) goto end;
+	i_966:
+		if(ic-- == 0) goto end;
+	i_967:
+		if(ic-- == 0) goto end;
+	i_968:
+		if(ic-- == 0) goto end;
+	i_969:
+		if(ic-- == 0) goto end;
+	i_970:
+		if(ic-- == 0) goto end;
+	i_971:
+		if(ic-- == 0) goto end;
+	i_972:
+		if(ic-- == 0) goto end;
+	i_973:
+		if(ic-- == 0) goto end;
+	i_974:
+		if(ic-- == 0) goto end;
+	i_975:
+		if(ic-- == 0) goto end;
+	i_976:
+		if(ic-- == 0) goto end;
+	i_977:
+		if(ic-- == 0) goto end;
+	i_978:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1456175612) {
+			void* ret = &&i_979;
+			stack[ss++] = ret;
+			goto i_26;
+		}
+	i_979:
+		if(ic-- == 0) goto end;
+	i_980:
+		if(ic-- == 0) goto end;
+	i_981:
+		if(ic-- == 0) goto end;
+	i_982:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 808127352) {
+			void* ret = &&i_983;
+			stack[ss++] = ret;
+			goto i_197;
+		}
+	i_983:
+		if(ic-- == 0) goto end;
+	i_984:
+		if(ic-- == 0) goto end;
+	i_985:
+		if(ic-- == 0) goto end;
+	i_986:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 741949704) {
+			void* ret = &&i_987;
+			stack[ss++] = ret;
+			goto i_59;
+		}
+	i_987:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3740247587) {
+			if(ss <= 0) goto i_988;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_988:
+		if(ic-- == 0) goto end;
+	i_989:
+		if(ic-- == 0) goto end;
+	i_990:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 3550479444) {
+			if(ss <= 0) goto i_991;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_991:
+		if(ic-- == 0) goto end;
+	i_992:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1552714076) {
+			void* ret = &&i_993;
+			stack[ss++] = ret;
+			goto i_73;
+		}
+	i_993:
+		if(ic-- == 0) goto end;
+	i_994:
+		if(ic-- == 0) goto end;
+	i_995:
+		if(ic-- == 0) goto end;
+	i_996:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1901489237) {
+			if(ss <= 0) goto i_997;
+			void* target = stack[--ss];
+			goto *target;
+		}
+	i_997:
+		if(ic-- == 0) goto end;
+		branches++;
+		if((state2 = state2 * 1664525 + 1013904223) < 1314937403) {
+			void* ret = &&i_998;
+			stack[ss++] = ret;
+			goto i_21;
+		}
+	i_998:
+		if(ic-- == 0) goto end;
+	i_999:
+		if(ic-- == 0) goto end;
+	i_1000:
+		if(ic-- == 0) goto end;
+	i_1001:
+		if(ic-- == 0) goto end;
+	i_1002:
+		if(ic-- == 0) goto end;
+	i_1003:
+		if(ic-- == 0) goto end;
+	i_1004:
+		if(ic-- == 0) goto end;
+	i_1005:
+		if(ic-- == 0) goto end;
+	i_1006:
+		if(ic-- == 0) goto end;
+	i_1007:
+		if(ic-- == 0) goto end;
+	i_1008:
+		if(ic-- == 0) goto end;
+	i_1009:
+		if(ic-- == 0) goto end;
+	i_1010:
+		if(ic-- == 0) goto end;
+	i_1011:
+		if(ic-- == 0) goto end;
+	i_1012:
+		if(ic-- == 0) goto end;
+	i_1013:
+		if(ic-- == 0) goto end;
+	i_1014:
+		if(ic-- == 0) goto end;
+	i_1015:
+		if(ic-- == 0) goto end;
+	i_1016:
+		if(ic-- == 0) goto end;
+	i_1017:
+		if(ic-- == 0) goto end;
+	i_1018:
+		if(ic-- == 0) goto end;
+	i_1019:
+		if(ic-- == 0) goto end;
+	i_1020:
+		if(ic-- == 0) goto end;
+	i_1021:
+		if(ic-- == 0) goto end;
+	i_1022:
+		if(ic-- == 0) goto end;
+	i_1023:
+		if(ic-- == 0) goto end;
+		goto i_0;
+	end:
+		PROF_STDOUT();
+		fprintf(stdout, "VM branches: %lu\n", branches);
+		return 0;
+}

+ 16 - 0
tests/branch_prediction/makefile

@@ -0,0 +1,16 @@
+all: branch_always branch_predictably branch_randomly branch_mixed
+
+branch_always:
+	gcc -O0 branch_always.c -o branch_always
+
+branch_predictably:
+	gcc -O0 branch_predictably.c -o branch_predictably
+
+branch_randomly:
+	gcc -O0 branch_randomly.c -o branch_randomly
+
+branch_mixed:
+	gcc -O0 branch_mixed.c -o branch_mixed
+
+clean:
+	rm branch_always branch_predictably branch_randomly branch_mixed

+ 333 - 0
tests/branch_prediction/prof.h

@@ -0,0 +1,333 @@
+/*
+ * Prof
+ * ====
+ *
+ * Self-contained C/C++ profiler library for Linux.
+ *
+ * Prof offers a quick way to measure performance events (CPU clock cycles,
+ * cache misses, branch mispredictions, etc.) of C/C++ code snippets. Prof is
+ * just a wrapper around the `perf_event_open` system call, its main goal is to
+ * be easy to setup and painless to use for targeted optimizations, namely, when
+ * the hot spot has already been identified. In no way Prof is a replacement for
+ * a fully-fledged profiler like perf, gprof, callgrind, etc.
+ *
+ * Please be aware that Prof uses `__attribute__((constructor))` to be as more
+ * straightforward to setup as possible, so it cannot be included more than
+ * once.
+ *
+ * Examples
+ * --------
+ *
+ * ### Minimal
+ *
+ * The following snippet prints the rough number of CPU clock cycles spent in
+ * executing the code between the two Prof calls:
+ *
+ * ```c
+ * #include "prof.h"
+ *
+ * int main()
+ * {
+ *     PROF_START();
+ *     // slow code goes here...
+ *     PROF_STDOUT();
+ * }
+ * ```
+ *
+ * ### Custom options
+ *
+ * The following snippet instead counts both read and write faults of the level
+ * 1 data cache that occur in the userland code between the two Prof calls:
+ *
+ * ```c
+ * #include <stdio.h>
+ *
+ * #define PROF_USER_EVENTS_ONLY
+ * #define PROF_EVENT_LIST \
+ *     PROF_EVENT_CACHE(L1D, READ, MISS) \
+ *     PROF_EVENT_CACHE(L1D, WRITE, MISS)
+ * #include "prof.h"
+ *
+ * int main()
+ * {
+ *     uint64_t faults[2] = { 0 };
+ *
+ *     PROF_START();
+ *     // slow code goes here...
+ *     PROF_DO(faults[index] += counter);
+ *
+ *     // fast or uninteresting code goes here...
+ *
+ *     PROF_START();
+ *     // slow code goes here...
+ *     PROF_DO(faults[index] += counter);
+ *
+ *     printf("Total L1 faults: R = %lu; W = %lu\n", faults[0], faults[1]);
+ * }
+ * ```
+ *
+ * Installation
+ * ------------
+ *
+ * Just include `prof.h`. Here is a quick way to fetch the latest version:
+ *
+ *     wget -q https://raw.githubusercontent.com/cyrus-and/prof/master/prof.h
+ */
+#ifndef PROF_H
+#define PROF_H
+
+#include <errno.h>
+#include <linux/perf_event.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+/*
+ * API
+ * ---
+ */
+
+/*
+ * Reset the counters and (re)start counting the events.
+ *
+ * The events to be monitored are specified by setting the `PROF_EVENT_LIST`
+ * macro before including this file to a list of `PROF_EVENT_*` invocations;
+ * defaults to counting the number CPU clock cycles.
+ *
+ * If the `PROF_USER_EVENTS_ONLY` macro is defined before including this file
+ * then kernel and hypervisor events are excluded from the count.
+ */
+#define PROF_START()                                                           \
+    do {                                                                       \
+        PROF_IOCTL_(ENABLE);                                                   \
+        PROF_IOCTL_(RESET);                                                    \
+    } while (0)
+
+/*
+ * Specify an event to be monitored, `type` and `config` are defined in the
+ * documentation of the `perf_event_open` system call.
+ */
+#define PROF_EVENT(type, config)                                               \
+    (uint32_t)(type), (uint64_t)(config),
+
+/*
+ * Same as `PROF_EVENT` but for hardware events; prefix `PERF_COUNT_HW_` must be
+ * omitted from `config`.
+ */
+#define PROF_EVENT_HW(config)                                                  \
+    PROF_EVENT(PERF_TYPE_HARDWARE, PERF_COUNT_HW_ ## config)
+
+/*
+ * Same as `PROF_EVENT` but for software events; prefix `PERF_COUNT_SW_` must be
+ * omitted from `config`.
+ */
+#define PROF_EVENT_SW(config)                                                  \
+    PROF_EVENT(PERF_TYPE_SOFTWARE, PERF_COUNT_SW_ ## config)
+
+/*
+ * Same as `PROF_EVENT` but for cache events; prefixes `PERF_COUNT_HW_CACHE_`,
+ * `PERF_COUNT_HW_CACHE_OP_` and `PERF_COUNT_HW_CACHE_RESULT_` must be omitted
+ * from `cache`, `op` and `result`, respectively. Again `cache`, `op` and
+ * `result` are defined in the documentation of the `perf_event_open` system
+ * call.
+ */
+#define PROF_EVENT_CACHE(cache, op, result)                                    \
+    PROF_EVENT(PERF_TYPE_HW_CACHE,                                             \
+               (PERF_COUNT_HW_CACHE_ ## cache) |                               \
+               (PERF_COUNT_HW_CACHE_OP_ ## op << 8) |                          \
+               (PERF_COUNT_HW_CACHE_RESULT_ ## result << 16))
+
+/*
+ * Stop counting the events. The counter array can then be accessed with
+ * `PROF_COUNTERS`.
+ */
+#define PROF_STOP()                                                            \
+    do {                                                                       \
+        PROF_IOCTL_(DISABLE);                                                  \
+        PROF_READ_COUNTERS_(prof_event_buf_);                                  \
+    } while (0)
+
+/*
+ * Access the counter array. The order of counters is the same of the events
+ * defined in `PROF_EVENT_LIST`. Elements of this array are 64 bit unsigned
+ * integers.
+ */
+#define PROF_COUNTERS                                                          \
+    (prof_event_buf_ + 1)
+
+/*
+ * Stop counting the events and execute the code provided by `block` for each
+ * event. Within `code`: `index` refers to the event position index in the
+ * counter array defined by `PROF_COUNTERS`; `counter` is the actual value of
+ * the counter. `index` is a 64 bit unsigned integer.
+ */
+#define PROF_DO(block)                                                         \
+    do {                                                                       \
+        uint64_t i_;                                                           \
+        PROF_STOP();                                                           \
+        for (i_ = 0; i_ < prof_event_cnt_; i_++) {                             \
+            uint64_t index = i_;                                               \
+            uint64_t counter = prof_event_buf_[i_ + 1];                        \
+            (void)index;                                                       \
+            (void)counter;                                                     \
+            block;                                                             \
+        }                                                                      \
+    } while (0)
+
+/*
+ * Same as `PROF_DO` except that `callback` is the name of a *callable* object
+ * (e.g. a function) which, for each event, is be called with the two parameters
+ * `index` and `counter`.
+ */
+#define PROF_CALL(callback)                                                    \
+    PROF_DO(callback(index, counter))
+
+/*
+ * Stop counting the events and write to `file` (a stdio.h `FILE *`) as many
+ * lines as are events in `PROF_EVENT_LIST`. Each line contains `index` and
+ * `counter` (as defined by `PROF_DO`) separated by a tabulation character. If
+ * there is only one event then `index` is omitted.
+ */
+#define PROF_FILE(file)                                                        \
+    PROF_DO(if (prof_event_cnt_ > 1) {                                         \
+            fprintf((file), "%lu\t%lu\n", index, counter);                     \
+        } else {                                                               \
+            fprintf((file), "%lu\n", counter);                                 \
+        }                                                                      \
+    )
+
+/*
+ * Same as `PROF_LOG_FILE` except that `file` is `stdout`.
+ */
+#define PROF_STDOUT()                                                          \
+    PROF_FILE(stdout)
+
+/*
+ * Same as `PROF_LOG_FILE` except that `file` is `stderr`.
+ */
+#define PROF_STDERR()                                                          \
+    PROF_FILE(stderr)
+
+/* DEFAULTS ----------------------------------------------------------------- */
+
+#ifndef PROF_EVENT_LIST
+#ifdef PERF_COUNT_HW_REF_CPU_CYCLES /* since Linux 3.3 */
+#define PROF_EVENT_LIST PROF_EVENT_HW(REF_CPU_CYCLES)
+#else
+#define PROF_EVENT_LIST PROF_EVENT_HW(CPU_CYCLES)
+#endif
+#endif
+
+/* UTILITY ------------------------------------------------------------------ */
+
+#define PROF_ASSERT_(x)                                                        \
+    do {                                                                       \
+        if (!(x)) {                                                            \
+            fprintf(stderr, "# %s:%d: PROF error", __FILE__, __LINE__);        \
+            if (errno) {                                                       \
+                fprintf(stderr, " (%s)", strerror(errno));                     \
+            }                                                                  \
+            printf("\n");                                                      \
+            abort();                                                           \
+        }                                                                      \
+    } while (0)
+
+#define PROF_IOCTL_(mode)                                                      \
+    do {                                                                       \
+        PROF_ASSERT_(ioctl(prof_fd_,                                           \
+                           PERF_EVENT_IOC_ ## mode,                            \
+                           PERF_IOC_FLAG_GROUP) != -1);                        \
+    } while (0)
+
+#define PROF_READ_COUNTERS_(buffer)                                            \
+    do {                                                                       \
+        const ssize_t to_read = sizeof(uint64_t) * (prof_event_cnt_ + 1);      \
+        PROF_ASSERT_(read(prof_fd_, buffer, to_read) == to_read);              \
+    } while (0)
+
+/* SETUP -------------------------------------------------------------------- */
+
+static int prof_fd_;
+static uint64_t prof_event_cnt_;
+static uint64_t *prof_event_buf_;
+
+static void prof_init_(uint64_t dummy, ...) {
+    uint32_t type;
+    va_list ap;
+
+    prof_fd_ = -1;
+    prof_event_cnt_ = 0;
+    va_start(ap, dummy);
+    while (type = va_arg(ap, uint32_t), type != (uint32_t)-1) {
+        struct perf_event_attr pe;
+        uint64_t config;
+        int fd;
+
+        config = va_arg(ap, uint64_t);
+
+        memset(&pe, 0, sizeof(struct perf_event_attr));
+        pe.size = sizeof(struct perf_event_attr);
+        pe.read_format = PERF_FORMAT_GROUP;
+        pe.type = type;
+        pe.config = config;
+        #ifdef PROF_USER_EVENTS_ONLY
+        pe.exclude_kernel = 1;
+        pe.exclude_hv = 1;
+        #endif
+
+        fd = syscall(__NR_perf_event_open, &pe, 0, -1, prof_fd_, 0);
+        PROF_ASSERT_(fd != -1);
+        if (prof_fd_ == -1) {
+            prof_fd_ = fd;
+        }
+
+        prof_event_cnt_++;
+    }
+    va_end(ap);
+
+    prof_event_buf_ = (uint64_t *)malloc((prof_event_cnt_ + 1) *
+                                         sizeof(uint64_t));
+}
+
+void __attribute__((constructor)) prof_init()
+{
+    prof_init_(0, PROF_EVENT_LIST /*,*/ (uint32_t)-1);
+}
+
+void __attribute__((destructor)) prof_fini()
+{
+    PROF_ASSERT_(close(prof_fd_) != -1);
+    free(prof_event_buf_);
+}
+
+#endif
+
+/*
+ * License
+ * -------
+ *
+ * Copyright (c) 2017 Andrea Cardaci <cyrus.and@gmail.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */