فهرست منبع

Avoid range check errors
(cherry picked from commit 1351ccb3bfe6adad6be0246acb7645203df8b3b0)

# Conflicts:
# .gitattributes

pierre 4 سال پیش
والد
کامیت
0558fefc51
1فایلهای تغییر یافته به همراه2667 افزوده شده و 2661 حذف شده
  1. 2667 2661
      tests/bench/bcase.pp

+ 2667 - 2661
tests/bench/bcase.pp

@@ -1,2661 +1,2667 @@
-{$goto on}
-program bcase;
-
-{$mode objfpc}{$H+}
-
-uses
-  SysUtils;
-
-{ Utility functions }
-function GetRealTime(const st: TSystemTime): Real;
-  begin
-    Result := st.Hour*3600.0 + st.Minute*60.0 + st.Second + st.MilliSecond/1000.0;
-  end;
-
-{$push}
-{$warn 5057 off}
-function GetRealTime : Real;
-  var
-    st:TSystemTime;
-  begin
-    GetLocalTime(st);
-    result:=GetRealTime(st);
-  end;
-{$pop}
-
-function IIf(Condition: Boolean; TrueRes, FalseRes: Integer): Integer; inline;
-  begin
-    if Condition then
-      Result := TrueRes
-    else
-      Result := FalseRes;
-  end;
-
-const
-  ITERATIONS = 33554432;
-
-  AES_S_Box: array[Byte] of Byte = (
-    $63, $7c, $77, $7b, $f2, $6b, $6f, $c5, $30, $01, $67, $2b, $fe, $d7, $ab, $76,
-    $ca, $82, $c9, $7d, $fa, $59, $47, $f0, $ad, $d4, $a2, $af, $9c, $a4, $72, $c0,
-    $b7, $fd, $93, $26, $36, $3f, $f7, $cc, $34, $a5, $e5, $f1, $71, $d8, $31, $15,
-    $04, $c7, $23, $c3, $18, $96, $05, $9a, $07, $12, $80, $e2, $eb, $27, $b2, $75,
-    $09, $83, $2c, $1a, $1b, $6e, $5a, $a0, $52, $3b, $d6, $b3, $29, $e3, $2f, $84,
-    $53, $d1, $00, $ed, $20, $fc, $b1, $5b, $6a, $cb, $be, $39, $4a, $4c, $58, $cf,
-    $d0, $ef, $aa, $fb, $43, $4d, $33, $85, $45, $f9, $02, $7f, $50, $3c, $9f, $a8,
-    $51, $a3, $40, $8f, $92, $9d, $38, $f5, $bc, $b6, $da, $21, $10, $ff, $f3, $d2,
-    $cd, $0c, $13, $ec, $5f, $97, $44, $17, $c4, $a7, $7e, $3d, $64, $5d, $19, $73,
-    $60, $81, $4f, $dc, $22, $2a, $90, $88, $46, $ee, $b8, $14, $de, $5e, $0b, $db,
-    $e0, $32, $3a, $0a, $49, $06, $24, $5c, $c2, $d3, $ac, $62, $91, $95, $e4, $79,
-    $e7, $c8, $37, $6d, $8d, $d5, $4e, $a9, $6c, $56, $f4, $ea, $65, $7a, $ae, $08,
-    $ba, $78, $25, $2e, $1c, $a6, $b4, $c6, $e8, $dd, $74, $1f, $4b, $bd, $8b, $8a,
-    $70, $3e, $b5, $66, $48, $03, $f6, $0e, $61, $35, $57, $b9, $86, $c1, $1d, $9e,
-    $e1, $f8, $98, $11, $69, $d9, $8e, $94, $9b, $1e, $87, $e9, $ce, $55, $28, $df,
-    $8c, $a1, $89, $0d, $bf, $e6, $42, $68, $41, $99, $2d, $0f, $b0, $54, $bb, $16
-  );
-
-  FirstWeighted: array[0..255] of Byte = (
-    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
-    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
-    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
-    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
-    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
-    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
-    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
-    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
-    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
-    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
-    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
-    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
-    $ba, $78, $25, $2e, $1c, $a6, $b4, $c6, $e8, $dd, $74, $1f, $4b, $bd, $8b, $8a,
-    $70, $3e, $b5, $66, $48, $03, $f6, $0e, $61, $35, $57, $b9, $86, $c1, $1d, $9e,
-    $e1, $f8, $98, $11, $69, $d9, $8e, $94, $9b, $1e, $87, $e9, $ce, $55, $28, $df,
-    $8c, $a1, $89, $0d, $bf, $e6, $42, $68, $41, $99, $2d, $0f, $b0, $54, $bb, $16
-  );
-
-  LastWeighted: array[0..255] of Byte = (
-    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
-    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
-    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
-    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
-    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
-    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
-    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
-    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
-    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
-    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
-    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
-    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
-    $ba, $78, $25, $2e, $1c, $a6, $b4, $c6, $e8, $dd, $74, $1f, $4b, $bd, $8b, $8a,
-    $70, $3e, $b5, $66, $48, $03, $f6, $0e, $61, $35, $57, $b9, $86, $c1, $1d, $9e,
-    $e1, $f8, $98, $11, $69, $d9, $8e, $94, $9b, $1e, $87, $e9, $ce, $55, $28, $df,
-    $8c, $a1, $89, $0d, $bf, $e6, $42, $68, $41, $99, $2d, $0f, $b0, $54, $bb, $16
-  );
-
-  AlmostFullExpected: array[0..255] of Byte = (
-    $63, $7c, $77, $7b, $f2, $6b, $6f, $c5, $30, $01, $67, $2b, $fe, $d7, $ab, $76,
-    $ca, $82, $c9, $7d, $fa, $59, $47, $f0, $ad, $d4, $a2, $af, $9c, $a4, $72, $c0,
-    $b7, $fd, $93, $26, $36, $3f, $f7, $cc, $34, $a5, $e5, $f1, $71, $d8, $31, $15,
-    $04, $c7, $23, $c3, $18, $96, $05, $9a, $07, $12, $80, $e2, $eb, $27, $b2, $75,
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
-    $d0, $ef, $aa, $fb, $43, $4d, $33, $85, $45, $f9, $02, $7f, $50, $3c, $9f, $a8,
-    $51, $a3, $40, $8f, $92, $9d, $38, $f5, $bc, $b6, $da, $21, $10, $ff, $f3, $d2,
-    $cd, $0c, $13, $ec, $5f, $97, $44, $17, $c4, $a7, $7e, $3d, $64, $5d, $19, $73,
-    $60, $81, $4f, $dc, $22, $2a, $90, $88, $46, $ee, $b8, $14, $de, $5e, $0b, $db,
-    $e0, $32, $3a, $0a, $49, $06, $24, $5c, $c2, $d3, $ac, $62, $91, $95, $e4, $79,
-    $e7, $c8, $37, $6d, $8d, $d5, $4e, $a9, $6c, $56, $f4, $ea, $65, $7a, $ae, $08,
-    $ba, $78, $25, $2e, $1c, $a6, $b4, $c6, $e8, $dd, $74, $1f, $4b, $bd, $8b, $8a,
-    $70, $3e, $b5, $66, $48, $03, $f6, $0e, $61, $35, $57, $b9, $86, $c1, $1d, $9e,
-    $e1, $f8, $98, $11, $69, $d9, $8e, $94, $9b, $1e, $87, $e9, $ce, $55, $28, $df,
-    $8c, $a1, $89, $0d, $bf, $e6, $42, $68, $41, $99, $2d, $0f, $b0, $54, $bb, $16
-  );
-
-type
-  TInstructionSet = ( { Truncated to 1024 entries }
-    A_NONE = -512, A_ADC, A_ADD, A_AND, A_BSF, A_BSR, A_BSWAP, A_BT, A_BTC, A_BTR, A_BTS,
-    A_CALL, A_CBW, A_CDQ, A_CLC, A_CLD, A_CLI, A_CLTS, A_CMC, A_CMP, A_CMPSB,
-    A_CMPSD, A_CMPSW, A_CMPXCHG, A_CMPXCHG486, A_CMPXCHG8B, A_CPUID, A_CWD, A_CWDE,
-    A_DEC, A_DIV, A_EMMS, A_ENTER, A_F2XM1, A_FABS, A_FADD, A_FADDP, A_FBLD, A_FBSTP,
-    A_FCHS, A_FCLEX,A_FCMOVB, A_FCMOVBE, A_FCMOVE, A_FCMOVNB, A_FCMOVNBE, A_FCMOVNE,
-    A_FCMOVNU, A_FCMOVU, A_FCOM, A_FCOMI, A_FCOMIP, A_FCOMP, A_FCOMPP, A_FCOS,
-    A_FDECSTP, A_FDISI, A_FDIV, A_FDIVP, A_FDIVR, A_FDIVRP, A_FEMMS, A_FENI, A_FFREE,
-    A_FIADD, A_FICOM, A_FICOMP, A_FIDIV, A_FIDIVR, A_FILD, A_FIMUL, A_FINCSTP,
-    A_FINIT, A_FIST, A_FISTP, A_FISTTP, A_FISUB, A_FISUBR, A_FLD, A_FLD1, A_FLDCW,
-    A_FLDENV, A_FLDL2E, A_FLDL2T, A_FLDLG2, A_FLDLN2, A_FLDPI, A_FLDZ, A_FMUL,
-    A_FMULP, A_FNCLEX, A_FNDISI, A_FNENI, A_FNINIT, A_FNOP, A_FNSAVE, A_FNSTCW,
-    A_FNSTENV, A_FNSTSW, A_FPATAN, A_FPREM, A_FPREM1, A_FPTAN, A_FRNDINT, A_FRSTOR,
-    A_FSAVE, A_FSCALE, A_FSETPM, A_FSIN, A_FSINCOS, A_FSQRT, A_FST, A_FSTCW,
-    A_FSTENV, A_FSTP, A_FSTSW, A_FSUB, A_FSUBP, A_FSUBR, A_FSUBRP, A_FTST, A_FUCOM,
-    A_FUCOMI, A_FUCOMIP, A_FUCOMP, A_FUCOMPP, A_FWAIT, A_FXAM, A_FXCH, A_FXTRACT,
-    A_FYL2X, A_FYL2XP1, A_HLT, A_IBTS, A_ICEBP, A_IDIV, A_IMUL, A_IN, A_INC, A_INSB,
-    A_INSD, A_INSW, A_INT, A_INT01, A_INT1, A_INT03, A_INT3, A_INVD, A_INVLPG,
-    A_IRET, A_IRETD, A_IRETW, A_IRETQ, A_JECXZ, A_JRCXZ, A_JMP, A_LAHF, A_LAR,
-    A_LCALL, A_LEA, A_LEAVE, A_LFS, A_LGDT, A_LGS, A_LIDT, A_LJMP, A_LLDT, A_LMSW,
-    A_LOADALL, A_LOADALL286, A_LOCK, A_LODSB, A_LODSD, A_LODSW, A_LOOP, A_LOOPE,
-    A_LOOPNE, A_LOOPNZ, A_LOOPZ, A_LSL, A_LSS, A_LTR, A_MONITOR, A_MOV, A_MOVD,
-    A_MOVQ, A_MOVSB, A_MOVSD, A_MOVSQ, A_MOVSW, A_MOVSX, A_MOVZX, A_MUL, A_MWAIT,
-    A_NEG, A_NOP, A_NOT, A_OR, A_OUT, A_OUTSB, A_OUTSD, A_OUTSW, A_PACKSSDW,
-    A_PACKSSWB, A_PACKUSWB, A_PADDB, A_PADDD, A_PADDSB, A_PADDSIW, A_PADDSW,
-    A_PADDUSB, A_PADDUSW, A_PADDW, A_PAND, A_PANDN, A_PAVEB, A_PAVGUSB, A_PCMPEQB,
-    A_PCMPEQD, A_PCMPEQW, A_PCMPGTB, A_PCMPGTD, A_PCMPGTW, A_PDISTIB, A_PF2ID,
-    A_PFACC, A_PFADD, A_PFCMPEQ, A_PFCMPGE, A_PFCMPGT, A_PFMAX, A_PFMIN, A_PFMUL,
-    A_PFRCP, A_PFRCPIT1, A_PFRCPIT2, A_PFRSQIT1, A_PFRSQRT, A_PFSUB, A_PFSUBR,
-    A_PI2FD, A_PMACHRIW, A_PMADDWD, A_PMAGW, A_PMULHRIW, A_PMULHRWA, A_PMULHRWC,
-    A_PMULHW, A_PMULLW, A_PMVGEZB, A_PMVLZB, A_PMVNZB, A_PMVZB, A_POP, A_POPF,
-    A_POPFW, A_POPFQ, A_POR, A_PREFETCH, A_PREFETCHW, A_PSLLD, A_PSLLDQ, A_PSLLQ,
-    A_PSLLW, A_PSRAD, A_PSRAW, A_PSRLD, A_PSRLQ, A_PSRLW, A_PSUBB, A_PSUBD, A_PSUBSB,
-    A_PSUBSIW, A_PSUBSW, A_PSUBUSB, A_PSUBUSW, A_PSUBW, A_PUNPCKHBW, A_PUNPCKHDQ,
-    A_PUNPCKHWD, A_PUNPCKLBW, A_PUNPCKLDQ, A_PUNPCKLWD, A_PUSH, A_PUSHF, A_PUSHFW,
-    A_PUSHFQ, A_PXOR, A_RCL, A_RCR, A_RDSHR, A_RDMSR, A_RDPMC, A_RDTSC, A_REP,
-    A_REPE, A_REPNE, A_REPNZ, A_REPZ, A_RET, A_RETF, A_RETN, A_RETW, A_RETFW,
-    A_RETNW, A_RETFD, A_RETQ, A_RETFQ, A_RETNQ, A_ROL, A_ROR, A_RSDC, A_RSLDT, A_RSM,
-    A_SAHF, A_SAL, A_SAR, A_SBB, A_SCASB, A_SCASD, A_SCASQ, A_SCASW, A_SEGCS,
-    A_SEGDS, A_SEGES, A_SEGFS, A_SEGGS, A_SEGSS, A_SGDT, A_SHL, A_SHLD, A_SHR,
-    A_SHRD, A_SIDT, A_SLDT, A_SMI, A_SMINT, A_SMINTOLD, A_SMSW, A_STC, A_STD, A_STI,
-    A_STOSB, A_STOSD, A_STOSW, A_STR, A_SUB, A_SVDC, A_SVLDT, A_SVTS, A_SYSCALL,
-    A_SYSENTER, A_SYSEXIT, A_SYSRET, A_TEST, A_UD1, A_UD2, A_UMOV, A_VERR, A_VERW,
-    A_WAIT, A_WBINVD, A_WRSHR, A_WRMSR, A_XADD, A_XBTS, A_XCHG, A_XLAT, A_XLATB,
-    A_XOR, A_XSTORE, A_XCRYPTECB, A_XCRYPTCBC, A_XCRYPTCFB, A_XCRYPTOFB, A_CMOVcc,
-    A_Jcc, A_SETcc, A_MOVS, A_CMPS, A_SCAS, A_LODS, A_STOS, A_INS, A_OUTS, A_ADDPS,
-    A_ADDSS, A_ANDNPS, A_ANDPS, A_CMPEQPS, A_CMPEQSS, A_CMPLEPS, A_CMPLESS,
-    A_CMPLTPS, A_CMPLTSS, A_CMPNEQPS, A_CMPNEQSS, A_CMPNLEPS, A_CMPNLESS,
-    A_CMPNLTPS, A_CMPNLTSS, A_CMPORDPS, A_CMPORDSS, A_CMPUNORDPS, A_CMPUNORDSS,
-    A_CMPPS, A_CMPSS, A_COMISS, A_CVTPI2PS, A_CVTPS2PI, A_CVTSI2SS, A_CVTSS2SI,
-    A_CVTTPS2PI, A_CVTTSS2SI, A_DIVPS, A_DIVSS, A_LDMXCSR, A_MAXPS, A_MAXSS, A_MINPS,
-    A_MINSS, A_MOVAPS, A_MOVHPS, A_MOVLHPS, A_MOVLPS, A_MOVHLPS, A_MOVMSKPS,
-    A_MOVNTPS, A_MOVSS, A_MOVUPS, A_MULPS, A_MULSS, A_ORPS, A_RCPPS, A_RCPSS,
-    A_RSQRTPS, A_RSQRTSS, A_SHUFPS, A_SQRTPS, A_SQRTSS, A_STMXCSR, A_SUBPS, A_SUBSS,
-    A_UCOMISS, A_UNPCKHPS, A_UNPCKLPS, A_XORPS, A_FXRSTOR, A_FXSAVE, A_PREFETCHNTA,
-    A_PREFETCHT0, A_PREFETCHT1, A_PREFETCHT2, A_SFENCE, A_MASKMOVQ, A_MOVNTQ,
-    A_PAVGB, A_PAVGW, A_PEXTRW, A_PINSRW, A_PMAXSW, A_PMAXUB, A_PMINSW, A_PMINUB,
-    A_PMOVMSKB, A_PMULHUW, A_PSADBW, A_PSHUFW, A_PFNACC, A_PFPNACC, A_PI2FW, A_PF2IW,
-    A_PSWAPD, A_FFREEP, A_MASKMOVDQU, A_CLFLUSH, A_MOVNTDQ, A_MOVNTI, A_MOVNTPD,
-    A_PAUSE, A_LFENCE, A_MFENCE, A_MOVDQA, A_MOVDQU, A_MOVDQ2Q, A_MOVQ2DQ, A_PADDQ,
-    A_PMULUDQ, A_PSHUFD, A_PSHUFHW, A_PSHUFLW, A_PSRLDQ, A_PSUBQ, A_PUNPCKHQDQ,
-    A_PUNPCKLQDQ, A_ADDPD, A_ADDSD, A_ANDNPD, A_ANDPD, A_CMPEQPD, A_CMPEQSD,
-    A_CMPLEPD, A_CMPLESD, A_CMPLTPD, A_CMPLTSD, A_CMPNEQPD, A_CMPNEQSD, A_CMPNLEPD,
-    A_CMPNLESD, A_CMPNLTPD, A_CMPNLTSD, A_CMPORDPD, A_CMPORDSD, A_CMPUNORDPD,
-    A_CMPUNORDSD, A_CMPPD, A_COMISD, A_CVTDQ2PD, A_CVTDQ2PS, A_CVTPD2DQ, A_CVTPD2PI,
-    A_CVTPD2PS, A_CVTPI2PD, A_CVTPS2DQ, A_CVTPS2PD, A_CVTSD2SI, A_CVTSD2SS,
-    A_CVTSI2SD, A_CVTSS2SD, A_CVTTPD2PI, A_CVTTPD2DQ, A_CVTTPS2DQ, A_CVTTSD2SI,
-    A_DIVPD, A_DIVSD, A_MAXPD, A_MAXSD, A_MINPD, A_MINSD, A_MOVAPD, A_MOVHPD,
-    A_MOVLPD, A_MOVMSKPD, A_MOVUPD, A_MULPD, A_MULSD, A_ORPD, A_SHUFPD, A_SQRTPD,
-    A_SQRTSD, A_SUBPD, A_SUBSD, A_UCOMISD, A_UNPCKHPD, A_UNPCKLPD, A_XORPD,
-    A_ADDSUBPD, A_ADDSUBPS, A_HADDPD, A_HADDPS, A_HSUBPD, A_HSUBPS, A_LDDQU,
-    A_MOVDDUP, A_MOVSHDUP, A_MOVSLDUP, A_VMREAD, A_VMWRITE, A_VMCALL, A_VMLAUNCH,
-    A_VMRESUME, A_VMXOFF, A_VMXON, A_VMCLEAR, A_VMPTRLD, A_VMPTRST, A_VMRUN,
-    A_VMMCALL, A_VMLOAD, A_VMSAVE, A_STGI, A_CLGI, A_SKINIT, A_INVLPGA, A_MONTMUL,
-    A_XSHA1, A_XSHA256, A_DMINT, A_RDM, A_MOVABS, A_MOVSXD, A_CQO, A_CDQE,
-    A_CMPXCHG16B, A_MOVNTSS, A_MOVNTSD, A_INSERTQ, A_EXTRQ, A_LZCNT, A_PABSB,
-    A_PABSW, A_PABSD, A_PALIGNR, A_PHADDW, A_PHADDD, A_PHADDSW, A_PHSUBW, A_PHSUBD,
-    A_PHSUBSW, A_PMADDUBSW, A_PMULHRSW, A_PSHUFB, A_PSIGNB, A_PSIGNW, A_PSIGND,
-    A_BLENDPS, A_BLENDPD, A_BLENDVPS, A_BLENDVPD, A_DPPS, A_DPPD, A_EXTRACTPS,
-    A_INSERTPS, A_MOVNTDQA, A_MPSADBW, A_PACKUSDW, A_PBLENDVB, A_PBLENDW, A_PCMPEQQ,
-    A_PEXTRB, A_PEXTRD, A_PEXTRQ, A_PHMINPOSUW, A_PINSRB, A_PINSRD, A_PINSRQ, A_PMAXSB,
-    A_PMAXSD, A_PMAXUD, A_PMAXUW, A_PMINSB, A_PMINSD, A_PMINUW, A_PMINUD, A_PMOVSXBW,
-    A_PMOVSXBD, A_PMOVSXBQ, A_PMOVSXWD, A_PMOVSXWQ, A_PMOVSXDQ, A_PMOVZXBW, A_PMOVZXBD,
-    A_PMOVZXBQ, A_PMOVZXWD, A_PMOVZXWQ, A_PMOVZXDQ, A_PMULDQ, A_PMULLD, A_PTEST,
-    A_ROUNDPS, A_ROUNDPD, A_ROUNDSS, A_ROUNDSD, A_CRC32, A_PCMPESTRI, A_PCMPESTRM,
-    A_PCMPISTRI, A_PCMPISTRM, A_PCMPGTQ, A_POPCNT, A_AESENC, A_AESENCLAST, A_AESDEC,
-    A_AESDECLAST, A_AESIMC, A_AESKEYGENASSIST, A_RDTSCP, A_STOSQ, A_LODSQ, A_CMPSQ,
-    A_VADDPD, A_VADDPS, A_VADDSD, A_VADDSS, A_VADDSUBPD, A_VADDSUBPS, A_VAESDEC,
-    A_VAESDECLAST, A_VAESENC, A_VAESENCLAST, A_VAESIMC, A_VAESKEYGENASSIST, A_VANDNPD,
-    A_VANDNPS, A_VANDPD, A_VANDPS, A_VBLENDPD, A_VBLENDPS, A_VBLENDVPD, A_VBLENDVPS,
-    A_VBROADCASTF128, A_VBROADCASTSD, A_VBROADCASTSS, A_VCMPEQPS, A_VCMPLTPS,
-    A_VCMPLEPS, A_VCMPUNORDPS, A_VCMPNEQPS, A_VCMPNLTPS, A_VCMPNLEPS, A_VCMPORDPS,
-    A_VCMPEQ_UQPS, A_VCMPNGEPS, A_VCMPNGTPS, A_VCMPFALSEPS, A_VCMPNEQ_OQPS,
-    A_VCMPGEPS, A_VCMPGTPS, A_VCMPTRUEPS, A_VCMPEQ_OSPS, A_VCMPLT_OQPS, A_VCMPLE_OQPS,
-    A_VCMPUNORD_SPS, A_VCMPNEQ_USPS, A_VCMPNLT_UQPS, A_VCMPNLE_UQPS, A_VCMPORD_SPS,
-    A_VCMPEQ_USPS, A_VCMPNGE_UQPS, A_VCMPNGT_UQPS, A_VCMPFALSE_OSPS, A_VCMPNEQ_OSPS,
-    A_VCMPGE_OQPS, A_VCMPGT_OQPS, A_VCMPTRUE_USPS, A_VCMPEQPD, A_VCMPLTPD, A_VCMPLEPD,
-    A_VCMPUNORDPD, A_VCMPNEQPD, A_VCMPNLTPD, A_VCMPNLEPD, A_VCMPORDPD, A_VCMPEQ_UQPD,
-    A_VCMPNGEPD, A_VCMPNGTPD, A_VCMPFALSEPD, A_VCMPNEQ_OQPD, A_VCMPGEPD, A_VCMPGTPD,
-    A_VCMPTRUEPD, A_VCMPEQ_OSPD, A_VCMPLT_OQPD, A_VCMPLE_OQPD, A_VCMPUNORD_SPD,
-    A_VCMPNEQ_USPD, A_VCMPNLT_UQPD, A_VCMPNLE_UQPD, A_VCMPORD_SPD, A_VCMPEQ_USPD,
-    A_VCMPNGE_UQPD, A_VCMPNGT_UQPD, A_VCMPFALSE_OSPD, A_VCMPNEQ_OSPD, A_VCMPGE_OQPD,
-    A_VCMPGT_OQPD, A_VCMPTRUE_USPD, A_VCMPPD, A_VCMPPS, A_VCMPSD, A_VCMPSS, A_VCOMISD,
-    A_VCOMISS, A_VCVTDQ2PD, A_VCVTDQ2PS, A_VCVTPD2DQ, A_VCVTPD2PS, A_VCVTPS2DQ,
-    A_VCVTPS2PD, A_VCVTSD2SI, A_VCVTSD2SS, A_VCVTSI2SD, A_VCVTSI2SS, A_VCVTSS2SD,
-    A_VCVTSS2SI, A_VCVTTPD2DQ, A_VCVTTPS2DQ, A_VCVTTSD2SI, A_VCVTTSS2SI, A_VDIVPD,
-    A_VDIVPS, A_VDIVSD, A_VDIVSS, A_VDPPD, A_VDPPS, A_VEXTRACTF128, A_VEXTRACTPS,
-    A_VHADDPD, A_VHADDPS, A_VHSUBPD, A_VHSUBPS, A_VINSERTF128, A_VINSERTPS, A_VLDDQU,
-    A_VLDMXCSR, A_VMASKMOVDQU, A_VMASKMOVPD, A_VMASKMOVPS, A_VMAXPD, A_VMAXPS,
-    A_VMAXSD, A_VMAXSS, A_VMINPD, A_VMINPS, A_VMINSD, A_VMINSS, A_VMOVAPD, A_VMOVAPS,
-    A_VMOVD, A_VMOVDDUP, A_VMOVDQA, A_VMOVDQU, A_VMOVHLPS, A_VMOVHPD, A_VMOVHPS,
-    A_VMOVLHPS, A_VMOVLPD, A_VMOVLPS, A_VMOVMSKPD, A_VMOVMSKPS, A_VMOVNTDQ,
-    A_VMOVNTDQA, A_VMOVNTPD, A_VMOVNTPS, A_VMOVQ, A_VMOVSD, A_VMOVSHDUP, A_VMOVSLDUP,
-    A_VMOVSS, A_VMOVUPD, A_VMOVUPS, A_VMPSADBW, A_VMULPD, A_VMULPS, A_VMULSD,
-    A_VMULSS, A_VORPD, A_VORPS, A_VPABSB, A_VPABSD, A_VPABSW, A_VPACKSSDW,
-    A_VPACKSSWB, A_VPACKUSDW, A_VPACKUSWB, A_VPADDB, A_VPADDD, A_VPADDQ, A_VPADDSB,
-    A_VPADDSW, A_VPADDUSB, A_VPADDUSW, A_VPADDW, A_VPALIGNR, A_VPAND, A_VPANDN,
-    A_VPAVGB, A_VPAVGW, A_VPBLENDVB, A_VPBLENDW, A_VPCLMULQDQ, A_VPCMPEQB, A_VPCMPEQD,
-    A_VPCMPEQQ, A_VPCMPEQW, A_VPCMPESTRI, A_VPCMPESTRM, A_VPCMPGTB, A_VPCMPGTD,
-    A_VPCMPGTQ, A_VPCMPGTW, A_VPCMPISTRI, A_VPCMPISTRM, A_VPERM2F128, A_VPERMILPD,
-    A_VPERMILPS, A_VPEXTRB, A_VPEXTRD, A_VPEXTRQ, A_VPEXTRW, A_VPHADDD, A_VPHADDSW,
-    A_VPHADDW, A_VPHMINPOSUW, A_VPHSUBD, A_VPHSUBSW, A_VPHSUBW, A_VPINSRB, A_VPINSRD,
-    A_VPINSRQ, A_VPINSRW, A_VPMADDUBSW, A_VPMADDWD, A_VPMAXSB, A_VPMAXSD, A_VPMAXSW,
-    A_VPMAXUB, A_VPMAXUD, A_VPMAXUW, A_VPMINSB, A_VPMINSD, A_VPMINSW, A_VPMINUB,
-    A_VPMINUD, A_VPMINUW, A_VPMOVMSKB, A_VPMOVSXBD, A_VPMOVSXBQ, A_VPMOVSXBW,
-    A_VPMOVSXDQ, A_VPMOVSXWD, A_VPMOVSXWQ, A_VPMOVZXBD, A_VPMOVZXBQ, A_VPMOVZXBW,
-    A_VPMOVZXDQ, A_VPMOVZXWD, A_VPMOVZXWQ, A_VPMULDQ, A_VPMULHRSW, A_VPMULHUW,
-    A_VPMULHW, A_VPMULLD, A_VPMULLW, A_VPMULUDQ, A_VPOR, A_VPSADBW, A_VPSHUFB,
-    A_VPSHUFD, A_VPSHUFHW, A_VPSHUFLW, A_VPSIGNB, A_VPSIGND, A_VPSIGNW, A_VPSLLD,
-    A_VPSLLDQ, A_VPSLLQ, A_VPSLLW, A_VPSRAD, A_VPSRAW, A_VPSRLD, A_VPSRLDQ, A_VPSRLQ,
-    A_VPSRLW, A_VPSUBB, A_VPSUBD, A_VPSUBQ, A_VPSUBSB, A_VPSUBSW, A_VPSUBUSB,
-    A_VPSUBUSW, A_VPSUBW, A_VPTEST, A_VPUNPCKHBW, A_VPUNPCKHDQ, A_VPUNPCKHQDQ,
-    A_VPUNPCKHWD, A_VPUNPCKLBW, A_VPUNPCKLDQ, A_VPUNPCKLQDQ, A_VPUNPCKLWD, A_VPXOR,
-    A_VRCPPS, A_VRCPSS, A_VROUNDPD, A_VROUNDPS, A_VROUNDSD, A_VROUNDSS, A_VRSQRTPS,
-    A_VRSQRTSS, A_VSHUFPD, A_VSHUFPS, A_VSQRTPD, A_VSQRTPS, A_VSQRTSD, A_VSQRTSS,
-    A_VSTMXCSR, A_VSUBPD, A_VSUBPS, A_VSUBSD, A_VSUBSS, A_VTESTPD, A_VTESTPS,
-    A_VUCOMISD, A_VUCOMISS, A_VUNPCKHPD, A_VUNPCKHPS, A_VUNPCKLPD, A_VUNPCKLPS,
-    A_VXORPD, A_VXORPS, A_VZEROALL, A_VZEROUPPER, A_ANDN, A_BEXTR, A_TZCNT, A_BZHI,
-    A_MULX, A_PDEP, A_PEXT, A_RORX, A_SARX, A_SHLX, A_SHRX, A_VBROADCASTI128,
-    A_VEXTRACTI128, A_VINSERTI128, A_VPBLENDD, A_VPBROADCASTB, A_VPBROADCASTD,
-    A_VPBROADCASTQ, A_VPBROADCASTW, A_VPERM2I128, A_VPERMD);
-
-const
-  ExtremeRange1Expected: array[0..1023] of Byte = (
-    $00, $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 0 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 16 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 32 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 48 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 64 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 80 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 96 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 112 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 128 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $09, { 144 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 160 }
-    $00, $00, $00, $00, $00, $00, $00, $02, $00, $00, $00, $08, $00, $00, $03, $03, { 176 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 192 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 208 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 224 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 240 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 256 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 272 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 288 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $0B, $00, $00, $00, $00, { 304 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $0B, $00, $00, $00, $00, $00, $00, { 320 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $0A, $00, $00, $00, $00, $00, { 336 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 352 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $0C, $00, $00, $00, $00, $00, $00, { 368 }
-    $00, $00, $07, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 384 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 400 }
-    $00, $00, $00, $00, $00, $05, $00, $00, $00, $00, $00, $00, $08, $05, $00, $07, { 416 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 432 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 448 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 464 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 480 }
-    $07, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 496 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 512 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $05, $00, $00, $00, $05, { 528 }
-    $00, $07, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 544 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 560 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 576 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 592 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 608 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 624 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 640 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 656 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $00, $00, $00, $00, { 672 }
-    $00, $00, $00, $00, $00, $00, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, { 688 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 704 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 720 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 736 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 752 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 768 }
-    $00, $00, $00, $00, $00, $00, $00, $06, $06, $00, $00, $00, $00, $00, $00, $00, { 784 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 800 }
-    $04, $04, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 816 }
-    $00, $00, $00, $08, $00, $00, $08, $04, $04, $00, $00, $00, $06, $06, $06, $06, { 832 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 848 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 864 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 880 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 896 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 912 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 928 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 944 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 960 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $00, { 976 }
-    $00, $00, $00, $00, $00, $00, $00, $06, $06, $00, $00, $00, $00, $00, $00, $00, { 992 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00  { 1008 }
-  );
-
-  ExtremeRange2Expected: array[0..1023] of Byte = (
-    $00, $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 0 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 16 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 32 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 48 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 64 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 80 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 96 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 112 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 128 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $09, { 144 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 160 }
-    $00, $00, $00, $00, $00, $00, $00, $02, $00, $00, $00, $26, $00, $00, $0D, $03, { 176 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 192 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 208 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 224 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 240 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 256 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 272 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 288 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $0B, $00, $00, $00, $00, { 304 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $27, $00, $00, $00, $00, $00, $00, { 320 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $0A, $00, $00, $00, $00, $00, { 336 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 352 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $0C, $00, $00, $00, $00, $00, $00, { 368 }
-    $00, $00, $07, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 384 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 400 }
-    $00, $00, $00, $00, $00, $12, $00, $00, $00, $00, $00, $00, $08, $05, $00, $22, { 416 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 432 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 448 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 464 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 480 }
-    $23, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 496 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 512 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $11, $00, $00, $00, $13, { 528 }
-    $00, $21, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 544 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 560 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 576 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 592 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 608 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 624 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 640 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 656 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $1A, $1B, $00, $00, $00, $00, { 672 }
-    $00, $00, $00, $00, $00, $00, $1C, $1D, $00, $00, $00, $00, $00, $00, $00, $00, { 688 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 704 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 720 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 736 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 752 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 768 }
-    $00, $00, $00, $00, $00, $00, $00, $14, $15, $00, $00, $00, $00, $00, $00, $00, { 784 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 800 }
-    $0F, $0E, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 816 }
-    $00, $00, $00, $24, $00, $00, $25, $04, $10, $00, $00, $00, $18, $19, $1E, $1F, { 832 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 848 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 864 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 880 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 896 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 912 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 928 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 944 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 960 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $16, $17, $00, { 976 }
-    $00, $00, $00, $00, $00, $00, $00, $20, $06, $00, $00, $00, $00, $00, $00, $00, { 992 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00  { 1008 }
-  );
-
-  ExtremeRange3Expected: array[0..1023] of Byte = (
-    $00, $00, $44, $01, $3F, $40, $00, $00, $00, $41, $42, $00, $00, $00, $00, $00, { 0 }
-    $00, $00, $00, $45, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 16 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 32 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 48 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 64 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 80 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 96 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 112 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 128 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $09, { 144 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 160 }
-    $00, $00, $00, $00, $00, $00, $00, $02, $00, $00, $00, $26, $00, $00, $0D, $03, { 176 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 192 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 208 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 224 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 240 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 256 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 272 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 288 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $0B, $00, $00, $00, $00, { 304 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $27, $00, $00, $00, $00, $00, $00, { 320 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $0A, $00, $00, $00, $00, $00, { 336 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 352 }
-    $00, $43, $00, $00, $00, $00, $00, $00, $00, $0C, $00, $00, $00, $00, $00, $00, { 368 }
-    $00, $00, $07, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 384 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 400 }
-    $00, $00, $00, $00, $00, $12, $00, $00, $00, $00, $00, $00, $08, $05, $00, $22, { 416 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 432 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 448 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 464 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 480 }
-    $23, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 496 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 512 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $11, $00, $00, $00, $13, { 528 }
-    $00, $21, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 544 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 560 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 576 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 592 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $33, $34, $00, $00, $00, { 608 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 624 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 640 }
-    $00, $00, $00, $2E, $2F, $30, $31, $32, $00, $00, $00, $00, $00, $00, $00, $00, { 656 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $2C, $2D, $1A, $1B, $00, $00, $35, $36, { 672 }
-    $37, $38, $39, $3A, $00, $00, $1C, $1D, $00, $00, $00, $00, $29, $00, $00, $00, { 688 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 704 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 720 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 736 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 752 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 768 }
-    $00, $00, $00, $00, $00, $00, $00, $14, $15, $00, $00, $00, $00, $00, $00, $00, { 784 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 800 }
-    $0F, $0E, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 816 }
-    $00, $00, $00, $24, $00, $00, $25, $04, $10, $00, $00, $00, $18, $19, $1E, $1F, { 832 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 848 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 864 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 880 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 896 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 912 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $3B, $3C, $3D, $3E, $00, $00, $00, { 928 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 944 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 960 }
-    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $16, $17, $00, { 976 }
-    $00, $00, $00, $00, $00, $00, $00, $20, $06, $00, $00, $00, $00, $00, $00, $28, { 992 }
-    $00, $00, $00, $00, $46, $47, $2A, $00, $00, $00, $00, $00, $00, $00, $00, $2B  { 1008 }
-  );
-
-{ TTestAncestor }
-type
-  TTestAncestor = class
-    private
-      FStartTime: Real;
-      FEndTime: Real;
-      FAvgTime: Real;
-      procedure SetStartTime;
-      procedure SetEndTime;
-    protected
-      procedure DoTestIteration(Iteration: Integer); virtual; abstract;
-    public
-      constructor Create; virtual;
-      destructor Destroy; override;
-      procedure Run;
-      function TestTitle: shortstring; virtual; abstract;
-      function WriteResults: Boolean; virtual; abstract;
-      property RunTime: Real read FAvgTime;
-  end;
-
-  TTestClass = class of TTestAncestor;
-
-  TByteTest = class(TTestAncestor)
-    protected
-      FResultStorage: array[Byte] of Byte;
-  end;
-
-  TWordTest = class(TTestAncestor)
-    protected
-      FResultStorage: array[Word] of Byte;
-  end;
-
-  TMappedTest = class(TByteTest)
-    protected
-      procedure DoMapping(Index, Input: Integer); virtual; abstract;
-  end;
-
-  TCompleteByteRange = class(TMappedTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-      procedure DoMapping(Index, Input: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TCompleteByteRangeFirstWeighted = class(TCompleteByteRange)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TCompleteByteRangeLastWeighted = class(TCompleteByteRange)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TAlmostFullByteRange = class(TMappedTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-      procedure DoMapping(Index, Input: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TAlmostFullByteRangeFirstWeighted = class(TAlmostFullByteRange)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TAlmostFullByteRangeLastWeighted = class(TAlmostFullByteRange)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSingleEntryWithDefault = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSingleEntryWithDefaultUnlikely = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSingleEntryWithDefaultWeighted = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSingleEntryWithElse = class(TSingleEntryWithDefault)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-  end;
-
-  TSingleEntryWithElseUnlikely = class(TSingleEntryWithDefaultUnlikely)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-  end;
-
-  TSingleEntryWithElseWeighted = class(TSingleEntryWithDefaultWeighted)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-  end;
-
-  TSingleEntryAtZeroWithElse = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSingleEntryAtMinus1WithDefault = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSingleEntryAtMinus4WithElse = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSingleEntryWith0To5RangeWithElse = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSingleEntryWith0To50RangeWithElse = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSingleEntryWith1To5RangeWithElse = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSingleEntryWith1To50RangeWithElse = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSingleEntryWithMinus1To5RangeWithElse = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSingleEntryWithMinus1To50RangeWithElse = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TExtremeRange1 = class(TWordTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TExtremeRange2 = class(TWordTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TExtremeRange3 = class(TWordTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TExtremeRange4 = class(TWordTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSparseDataTest1 = class(TWordTest)
-    protected
-      procedure DoCaseBlock(Index: Integer; Input: TInstructionSet); inline;
-  end;
-
-  TSparseDataEqual1 = class(TSparseDataTest1)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSparseDataMOVWeighted1 = class(TSparseDataTest1)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSparseDataMidpointWeighted1 = class(TSparseDataTest1)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSparseDataTest2 = class(TWordTest)
-    protected
-      procedure DoCaseBlock(Index: Integer; Input: TInstructionSet); inline;
-  end;
-
-  TSparseDataEqual2 = class(TSparseDataTest2)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSparseDataMOVWeighted2 = class(TSparseDataTest2)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSparseDataMidpointWeighted2 = class(TSparseDataTest2)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSparseDataTest3 = class(TWordTest)
-    protected
-      procedure DoCaseBlock(Index: Integer; Input: TInstructionSet); inline;
-  end;
-
-  TSparseDataEqual3 = class(TSparseDataTest3)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSparseDataMOVWeighted3 = class(TSparseDataTest3)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TSparseDataMidpointWeighted3 = class(TSparseDataTest3)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TLinearListDependsOnInput = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-  TCStyleCascade = class(TByteTest)
-    protected
-      procedure DoTestIteration(Iteration: Integer); override;
-    public
-      function TestTitle: shortstring; override;
-      function WriteResults: Boolean; override;
-  end;
-
-{ TTestAncestor }
-constructor TTestAncestor.Create;
-  begin
-    FStartTime := 0;
-    FEndTime := 0;
-    FAvgTime := 0;
-  end;
-
-destructor TTestAncestor.Destroy;
-  begin
-    inherited Destroy;
-  end;
-
-procedure TTestAncestor.SetStartTime;
-  begin
-    FStartTime := GetRealTime();
-  end;
-
-procedure TTestAncestor.SetEndTime;
-  begin
-    FEndTime := GetRealTime();
-    if FEndTime < FStartTime then { Happens if the test runs past midnight }
-      FEndTime := FEndTime + 86400.0;
-  end;
-
-procedure TTestAncestor.Run;
-  var
-    X: Integer;
-  begin
-    SetStartTime;
-    for X := 0 to ITERATIONS - 1 do
-      DoTestIteration(X);
-
-    SetEndTime;
-
-    FAvgTime := FEndTime - FStartTime;
-  end;
-
-{ TCompleteByteRange }
-function TCompleteByteRange.TestTitle: shortstring;
-  begin
-    Result := 'Byte domain, entirely covered; equal polling';
-  end;
-
-function TCompleteByteRange.WriteResults: Boolean;
-  var
-    X: Byte;
-  begin
-    Result := True;
-
-    for X := 0 to 255 do
-      if FResultStorage[X] <> AES_S_Box[X] then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(AES_S_Box[X], 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TCompleteByteRange.DoMapping(Index, Input: Integer);
-  begin
-    case Input of
-      { First row of S-Box (except zero) }
-      $00: FResultStorage[Index] := $63;
-      $01: FResultStorage[Index] := $7c;
-      $02: FResultStorage[Index] := $77;
-      $03: FResultStorage[Index] := $7b;
-      $04: FResultStorage[Index] := $f2;
-      $05: FResultStorage[Index] := $6b;
-      $06: FResultStorage[Index] := $6f;
-      $07: FResultStorage[Index] := $c5;
-      $08: FResultStorage[Index] := $30;
-      $09: FResultStorage[Index] := $01;
-      $0A: FResultStorage[Index] := $67;
-      $0B: FResultStorage[Index] := $2b;
-      $0C: FResultStorage[Index] := $fe;
-      $0D: FResultStorage[Index] := $d7;
-      $0E: FResultStorage[Index] := $ab;
-      $0F: FResultStorage[Index] := $76;
-      {Last row of S-Box }
-      $F0: FResultStorage[Index] := $8c;
-      $F1: FResultStorage[Index] := $a1;
-      $F2: FResultStorage[Index] := $89;
-      $F3: FResultStorage[Index] := $0d;
-      $F4: FResultStorage[Index] := $bf;
-      $F5: FResultStorage[Index] := $e6;
-      $F6: FResultStorage[Index] := $42;
-      $F7: FResultStorage[Index] := $68;
-      $F8: FResultStorage[Index] := $41;
-      $F9: FResultStorage[Index] := $99;
-      $FA: FResultStorage[Index] := $2d;
-      $FB: FResultStorage[Index] := $0f;
-      $FC: FResultStorage[Index] := $b0;
-      $FD: FResultStorage[Index] := $54;
-      $FE: FResultStorage[Index] := $bb;
-      $FF: FResultStorage[Index] := $16;
-      { Everything else }
-      $10..$EF: FResultStorage[Index] := AES_S_Box[Input];
-    end;
-  end;
-
-procedure TCompleteByteRange.DoTestIteration(Iteration: Integer);
-  var
-    Input: Byte;
-  begin
-    Input := Iteration and $FF;
-    DoMapping(Input, Input);
-  end;
-
-{ TCompleteByteRangeFirstWeighted }
-
-function TCompleteByteRangeFirstWeighted.TestTitle: shortstring;
-  begin
-    Result := 'Byte domain, entirely covered; first weighted';
-  end;
-
-function TCompleteByteRangeFirstWeighted.WriteResults: Boolean;
-  var
-    X: Byte;
-  begin
-    Result := True;
-
-    for X := 0 to 255 do
-      if FResultStorage[X] <> FirstWeighted[X] then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(FirstWeighted[X], 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TCompleteByteRangeFirstWeighted.DoTestIteration(Iteration: Integer);
-  var
-    Input: Byte;
-  begin
-    Input := Iteration and $FF;
-    if Input < $C0 then
-      DoMapping(Input, 0)
-    else
-      DoMapping(Input, Input);
-  end;
-
-{ TCompleteByteRangeLastWeighted }
-
-function TCompleteByteRangeLastWeighted.TestTitle: shortstring;
-  begin
-    Result := 'Byte domain, entirely covered; last weighted';
-  end;
-
-function TCompleteByteRangeLastWeighted.WriteResults: Boolean;
-  var
-    X: Byte;
-  begin
-    Result := True;
-
-    for X := 0 to 255 do
-      if FResultStorage[X] <> LastWeighted[X] then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(LastWeighted[X], 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TCompleteByteRangeLastWeighted.DoTestIteration(Iteration: Integer);
-  var
-    Input: Byte;
-  begin
-    Input := Iteration and $FF;
-    if Input < $C0 then
-      DoMapping(Input, $FF)
-    else
-      DoMapping(Input, Input);
-  end;
-
-{ TAlmostFullByteRange }
-
-function TAlmostFullByteRange.TestTitle: shortstring;
-  begin
-    Result := 'Byte domain, almost entirely covered; equal polling';
-  end;
-
-function TAlmostFullByteRange.WriteResults: Boolean;
-  var
-    X: Byte;
-  begin
-    Result := True;
-
-    for X := 0 to 255 do
-      if FResultStorage[X] <> AlmostFullExpected[X] then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(AlmostFullExpected[X], 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TAlmostFullByteRange.DoMapping(Index, Input: Integer);
-  begin
-    case Input of
-      { First row of S-Box }
-      $00: FResultStorage[Index] := $63;
-      $01: FResultStorage[Index] := $7c;
-      $02: FResultStorage[Index] := $77;
-      $03: FResultStorage[Index] := $7b;
-      $04: FResultStorage[Index] := $f2;
-      $05: FResultStorage[Index] := $6b;
-      $06: FResultStorage[Index] := $6f;
-      $07: FResultStorage[Index] := $c5;
-      $08: FResultStorage[Index] := $30;
-      $09: FResultStorage[Index] := $01;
-      $0A: FResultStorage[Index] := $67;
-      $0B: FResultStorage[Index] := $2b;
-      $0C: FResultStorage[Index] := $fe;
-      $0D: FResultStorage[Index] := $d7;
-      $0E: FResultStorage[Index] := $ab;
-      $0F: FResultStorage[Index] := $76;
-      { Other rows }
-      $10..$3F: FResultStorage[Index] := AES_S_Box[Input];
-      $60..$FF: FResultStorage[Index] := AES_S_Box[Input];
-      { Zeroed rows }
-      else FResultStorage[Index] := $00;
-    end;
-  end;
-
-procedure TAlmostFullByteRange.DoTestIteration(Iteration: Integer);
-  var
-    Input: Byte;
-  begin
-    Input := Iteration and $FF;
-    DoMapping(Input, Input);
-  end;
-
-{ TAlmostFullByteRangeFirstWeighted }
-
-function TAlmostFullByteRangeFirstWeighted.TestTitle: shortstring;
-  begin
-    Result := 'Byte domain, almost entirely covered; first weighted';
-  end;
-
-function TAlmostFullByteRangeFirstWeighted.WriteResults: Boolean;
-  var
-    X: Byte;
-  begin
-    Result := True;
-
-    for X := 0 to 255 do
-      if FResultStorage[X] <> FirstWeighted[X] then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(FirstWeighted[X], 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TAlmostFullByteRangeFirstWeighted.DoTestIteration(Iteration: Integer);
-  var
-    Input: Byte;
-  begin
-    Input := Iteration and $FF;
-    if Input < $C0 then
-      DoMapping(Input, 0)
-    else
-      DoMapping(Input, Input);
-  end;
-
-{ TAlmostFullByteRangeLastWeighted }
-
-function TAlmostFullByteRangeLastWeighted.TestTitle: shortstring;
-  begin
-    Result := 'Byte domain, almost entirely covered; last weighted';
-  end;
-
-function TAlmostFullByteRangeLastWeighted.WriteResults: Boolean;
-  var
-    X: Byte;
-  begin
-    Result := True;
-
-    for X := 0 to 255 do
-      if FResultStorage[X] <> LastWeighted[X] then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(LastWeighted[X], 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TAlmostFullByteRangeLastWeighted.DoTestIteration(Iteration: Integer);
-  var
-    Input: Byte;
-  begin
-    Input := Iteration and $FF;
-    if Input < $C0 then
-      DoMapping(Input, $FF)
-    else
-      DoMapping(Input, Input);
-  end;
-
-{ TSingleEntryWithDefault }
-function TSingleEntryWithDefault.TestTitle: shortstring;
-  begin
-    Result := 'Single entry with default value; 1/256 match chance';
-  end;
-
-function TSingleEntryWithDefault.WriteResults: Boolean;
-  var
-    X: Byte;
-  begin
-    Result := True;
-
-    for X := 0 to 255 do
-      if FResultStorage[X] <> IIf(X = 71, 1, 0) then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(IIf(X = 71, 1, 0), 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TSingleEntryWithDefault.DoTestIteration(Iteration: Integer);
-  var
-    Index: Byte;
-  begin
-    Index := Iteration and $FF;
-    FResultStorage[Index] := 0;
-    case Index of
-      71: FResultStorage[Index] := 1;
-    end;
-  end;
-
-{ TSingleEntryWithDefaultUnlikely }
-
-function TSingleEntryWithDefaultUnlikely.TestTitle: shortstring;
-  begin
-    Result := 'Single entry with default value; 75% match chance';
-  end;
-
-function TSingleEntryWithDefaultUnlikely.WriteResults: Boolean;
-  var
-    X: Byte;
-  begin
-    Result := True;
-
-    for X := 0 to 255 do
-      if FResultStorage[X] <> IIf(((X and $2) shr 1) or (X and $1) = 1, 1, 0) then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(IIf(((X and $2) shr 1) or (X and $1) = 1, 1, 0), 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TSingleEntryWithDefaultUnlikely.DoTestIteration(Iteration: Integer);
-  var
-    Index: Byte;
-  begin
-    Index := Iteration and $FF;
-    FResultStorage[Index] := 0;
-    case ((Index and $2) shr 1) or (Index and $1) of
-      1: FResultStorage[Index] := 1;
-    end;
-  end;
-
-{ TSingleEntryWithDefaultWeighted }
-
-function TSingleEntryWithDefaultWeighted.TestTitle: shortstring;
-  begin
-    Result := 'Single entry with default value; 25% match chance';
-  end;
-
-function TSingleEntryWithDefaultWeighted.WriteResults: Boolean;
-  var
-    X: Byte;
-  begin
-    Result := True;
-
-    for X := 0 to 255 do
-      if FResultStorage[X] <> IIf(((X and $2) shr 1) and (X and $1) = 1, 1, 0) then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(IIf(((X and $2) shr 1) and (X and $1) = 1, 1, 0), 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TSingleEntryWithDefaultWeighted.DoTestIteration(Iteration: Integer);
-  var
-    Index: Byte;
-  begin
-    Index := Iteration and $FF;
-    FResultStorage[Index] := 0;
-    case ((Index and $2) shr 1) and (Index and $1) of
-      1: FResultStorage[Index] := 1;
-    end;
-  end;
-
-{ TSingleEntryWithElse }
-function TSingleEntryWithElse.TestTitle: shortstring;
-  begin
-    Result := 'Single entry with else block; 1/256 match chance';
-  end;
-
-procedure TSingleEntryWithElse.DoTestIteration(Iteration: Integer);
-  var
-    Index: Byte;
-  begin
-    Index := Iteration and $FF;
-    { This helps catch errors where all branches, including else, are skipped }
-    FResultStorage[Index] := $FF;
-    case Index of
-      71: FResultStorage[Index] := 1;
-      else FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TSingleEntryWithElseUnlikely }
-function TSingleEntryWithElseUnlikely.TestTitle: shortstring;
-  begin
-    Result := 'Single entry with else block; 75% match chance';
-  end;
-
-procedure TSingleEntryWithElseUnlikely.DoTestIteration(Iteration: Integer);
-  var
-    Index: Byte;
-  begin
-    Index := Iteration and $FF;
-    { This helps catch errors where all branches, including else, are skipped }
-    FResultStorage[Index] := $FF;
-    case ((Index and $2) shr 1) or (Index and $1) of
-      1: FResultStorage[Index] := 1;
-      else FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TSingleEntryWithElseWeighted }
-
-function TSingleEntryWithElseWeighted.TestTitle: shortstring;
-  begin
-    Result := 'Single entry with else block; 25% match chance';
-  end;
-
-procedure TSingleEntryWithElseWeighted.DoTestIteration(Iteration: Integer);
-  var
-    Index: Byte;
-  begin
-    Index := Iteration and $FF;
-    { This helps catch errors where all branches, including else, are skipped }
-    FResultStorage[Index] := $FF;
-    case ((Index and $2) shr 1) and (Index and $1) of
-      1: FResultStorage[Index] := 1;
-      else FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TSingleEntryAtZeroWithElse }
-
-function TSingleEntryAtZeroWithElse.TestTitle: shortstring;
-  begin
-    Result := 'Single entry of "0:" and else block';
-  end;
-
-function TSingleEntryAtZeroWithElse.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-
-    if FResultStorage[0] <> 1 then
-      begin
-        WriteLn('FAIL - Index 0; expected $01 got $', hexstr(FResultStorage[0], 2));
-        Result := False;
-        Exit;
-      end;
-
-    for X := 1 to $FF do
-      if FResultStorage[X] <> 0 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TSingleEntryAtZeroWithElse.DoTestIteration(Iteration: Integer);
-  var
-    Index: Byte;
-  begin
-    Index := Iteration and $FF;
-    { This helps catch errors where all branches, including else, are skipped }
-    FResultStorage[Index] := $FF;
-    case Index of
-      0: FResultStorage[Index] := 1;
-      else FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TSingleEntryAtMinus1WithDefault }
-
-function TSingleEntryAtMinus1WithDefault.TestTitle: shortstring;
-  begin
-    Result := 'Single entry of "-1:" with default value';
-  end;
-
-function TSingleEntryAtMinus1WithDefault.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-
-    for X := 0 to $FE do
-      if FResultStorage[X] <> 0 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    if FResultStorage[255] <> 1 then
-      begin
-        WriteLn('FAIL - Index 255; expected $01 got $', hexstr(FResultStorage[0], 2));
-        Result := False;
-        Exit;
-      end;
-  end;
-
-procedure TSingleEntryAtMinus1WithDefault.DoTestIteration(Iteration: Integer);
-  var
-    Index: ShortInt;
-  begin
-    Index := ShortInt(Iteration and $FF);
-    FResultStorage[Byte(Index)] := 0;
-    case Index of
-      -1: FResultStorage[255] := 1;
-    end;
-  end;
-
-{ TSingleEntryAtMinus4WithElse }
-
-function TSingleEntryAtMinus4WithElse.TestTitle: shortstring;
-  begin
-    Result := 'Single entry of "-4:" and else block';
-  end;
-
-function TSingleEntryAtMinus4WithElse.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-    for X := 0 to 251 do
-      if FResultStorage[X] <> 0 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    if FResultStorage[252] <> 1 then
-      begin
-        WriteLn('FAIL - Index 0; expected $01 got $', hexstr(FResultStorage[252], 2));
-        Result := False;
-        Exit;
-      end;
-
-    for X := 253 to 255 do
-      if FResultStorage[X] <> 0 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TSingleEntryAtMinus4WithElse.DoTestIteration(Iteration: Integer);
-  var
-    Index: ShortInt;
-  begin
-    Index := ShortInt(Iteration and $FF);
-    { This helps catch errors where all branches, including else, are skipped }
-    FResultStorage[Byte(Index)] := $FF;
-    case Index of
-      -4: FResultStorage[Index] := 1;
-      else FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TSingleEntryWith0To5RangeWithElse }
-
-function TSingleEntryWith0To5RangeWithElse.TestTitle: shortstring;
-  begin
-    Result := 'Single entry of "0..5" and else block';
-  end;
-
-function TSingleEntryWith0To5RangeWithElse.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-
-    for X := 0 to 5 do
-      if FResultStorage[X] <> 1 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $01 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    for X := 6 to $FF do
-      if FResultStorage[X] <> 0 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TSingleEntryWith0To5RangeWithElse.DoTestIteration(Iteration: Integer);
-  var
-    Index: Byte;
-  begin
-    Index := Iteration and $FF;
-    { This helps catch errors where all branches, including else, are skipped }
-    FResultStorage[Index] := $FF;
-    case Index of
-      0..5: FResultStorage[Index] := 1;
-      else FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TSingleEntryWith0To50RangeWithElse }
-
-function TSingleEntryWith0To50RangeWithElse.TestTitle: shortstring;
-  begin
-    Result := 'Single entry of "0..50" and else block';
-  end;
-
-function TSingleEntryWith0To50RangeWithElse.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-
-    for X := 0 to 50 do
-      if FResultStorage[X] <> 1 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $01 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    for X := 51 to $FF do
-      if FResultStorage[X] <> 0 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TSingleEntryWith0To50RangeWithElse.DoTestIteration(Iteration: Integer);
-  var
-    Index: Byte;
-  begin
-    Index := Iteration and $FF;
-    { This helps catch errors where all branches, including else, are skipped }
-    FResultStorage[Index] := $FF;
-    case Index of
-      0..50: FResultStorage[Index] := 1;
-      else FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TSingleEntryWith1To5RangeWithElse }
-
-function TSingleEntryWith1To5RangeWithElse.TestTitle: shortstring;
-  begin
-    Result := 'Single entry of "1..5" and else block';
-  end;
-
-function TSingleEntryWith1To5RangeWithElse.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-    if FResultStorage[0] <> 0 then
-      begin
-        WriteLn('FAIL - Index 0; expected $00 got $', hexstr(FResultStorage[0], 2));
-        Result := False;
-        Exit;
-      end;
-
-    for X := 1 to 5 do
-      if FResultStorage[X] <> 1 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $01 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    for X := 6 to $FF do
-      if FResultStorage[X] <> 0 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TSingleEntryWith1To5RangeWithElse.DoTestIteration(Iteration: Integer);
-  var
-    Index: Byte;
-  begin
-    Index := Iteration and $FF;
-    { This helps catch errors where all branches, including else, are skipped }
-    FResultStorage[Index] := $FF;
-    case Index of
-      1..5: FResultStorage[Index] := 1;
-      else FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TSingleEntryWith1To50RangeWithElse }
-
-function TSingleEntryWith1To50RangeWithElse.TestTitle: shortstring;
-  begin
-    Result := 'Single entry of "1..50" and else block';
-  end;
-
-function TSingleEntryWith1To50RangeWithElse.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-    if FResultStorage[0] <> 0 then
-      begin
-        WriteLn('FAIL - Index 0; expected $00 got $', hexstr(FResultStorage[0], 2));
-        Result := False;
-        Exit;
-      end;
-
-    for X := 1 to 50 do
-      if FResultStorage[X] <> 1 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $01 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    for X := 51 to $FF do
-      if FResultStorage[X] <> 0 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TSingleEntryWith1To50RangeWithElse.DoTestIteration(Iteration: Integer);
-  var
-    Index: Byte;
-  begin
-    Index := Iteration and $FF;
-    { This helps catch errors where all branches, including else, are skipped }
-    FResultStorage[Index] := $FF;
-    case Index of
-      1..50: FResultStorage[Index] := 1;
-      else FResultStorage[Index] := 0;
-    end;
-  end;
-
-
-{ TSingleEntryWithMinus1To5RangeWithElse }
-
-function TSingleEntryWithMinus1To5RangeWithElse.TestTitle: shortstring;
-  begin
-    Result := 'Single entry of "-1..5" and else block';
-  end;
-
-function TSingleEntryWithMinus1To5RangeWithElse.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-    for X := 0 to 5 do
-      if FResultStorage[X] <> 1 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $01 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    for X := 6 to $FE do
-      if FResultStorage[X] <> 0 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    if FResultStorage[$FF] <> 1 then
-      begin
-        WriteLn('FAIL - Index 255; expected $00 got $', hexstr(FResultStorage[0], 2));
-        Result := False;
-        Exit;
-      end;
-  end;
-
-procedure TSingleEntryWithMinus1To5RangeWithElse.DoTestIteration(Iteration: Integer);
-  var
-    Index: ShortInt;
-  begin
-    Index := ShortInt(Iteration and $FF);
-    { This helps catch errors where all branches, including else, are skipped }
-    FResultStorage[Byte(Index)] := $FF;
-    case Index of
-      -1..5: FResultStorage[Index] := 1;
-      else FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TSingleEntryWithMinus1To50RangeWithElse }
-
-function TSingleEntryWithMinus1To50RangeWithElse.TestTitle: shortstring;
-  begin
-    Result := 'Single entry of "-1..50" and else block';
-  end;
-
-function TSingleEntryWithMinus1To50RangeWithElse.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-    for X := 0 to 50 do
-      if FResultStorage[X] <> 1 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $01 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    for X := 51 to $FE do
-      if FResultStorage[X] <> 0 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    if FResultStorage[$FF] <> 1 then
-      begin
-        WriteLn('FAIL - Index 255; expected $00 got $', hexstr(FResultStorage[0], 2));
-        Result := False;
-        Exit;
-      end;
-  end;
-
-procedure TSingleEntryWithMinus1To50RangeWithElse.DoTestIteration(Iteration: Integer);
-  var
-    Index: ShortInt;
-  begin
-    Index := ShortInt(Iteration and $FF);
-    { This helps catch errors where all branches, including else, are skipped }
-    FResultStorage[Byte(Index)] := $FF;
-    case Index of
-      -1..50: FResultStorage[Index] := 1;
-      else FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TExtremeRange1 }
-
-function TExtremeRange1.TestTitle: shortstring;
-  begin
-    Result := 'Two labels, one with extreme spread, equal polling';
-  end;
-
-function TExtremeRange1.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-
-    if FResultStorage[0] <> 1 then
-      begin
-        WriteLn('FAIL - Index 0; expected $01 got $', hexstr(FResultStorage[0], 2));
-        Result := False;
-        Exit;
-      end;
-
-    for X := 1 to $FFFE do
-      if FResultStorage[X] <> 2 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $02 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    if FResultStorage[65535] <> 0 then
-      begin
-        WriteLn('FAIL - Index 65535; expected $02 got $', hexstr(FResultStorage[65535], 2));
-        Result := False;
-        Exit;
-      end;
-  end;
-
-procedure TExtremeRange1.DoTestIteration(Iteration: Integer);
-  var
-    Index: Word;
-  begin
-    Index := Iteration and $FFFF;
-    FResultStorage[Index] := 0; { Covers $FFFF }
-    case Index of
-      0:
-        FResultStorage[Index] := 1;
-      1..$FFFE:
-        FResultStorage[Index] := 2;
-    end;
-  end;
-
-{ TExtremeRange2 }
-
-function TExtremeRange2.TestTitle: shortstring;
-  begin
-    Result := 'Two labels, one with extreme spread, 50% else chance';
-  end;
-
-function TExtremeRange2.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-
-    for X := 0 to $FFFF do
-      if FResultStorage[X] <> (X and $1) then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(X and $1, 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TExtremeRange2.DoTestIteration(Iteration: Integer);
-  var
-    Index, Input: Word;
-  begin
-    Index := (Iteration and $FFFF);
-    Input := (Iteration and $1) - 1;
-    FResultStorage[Index] := 0; { Covers $FFFF }
-    case Input of
-      0..$FFFD:
-        FResultStorage[Index] := 1;
-      $FFFE:
-        FResultStorage[Index] := 2;
-    end;
-  end;
-
-{ TExtremeRange3 }
-
-function TExtremeRange3.TestTitle: shortstring;
-  begin
-    Result := 'Two labels, sparse values, equal polling across range';
-  end;
-
-function TExtremeRange3.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-
-    if FResultStorage[0] <> 1 then
-      begin
-        WriteLn('FAIL - Index 0; expected $01 got $', hexstr(FResultStorage[0], 2));
-        Result := False;
-        Exit;
-      end;
-
-    for X := 1 to $FFFE do
-      if FResultStorage[X] <> 2 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $02 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    if FResultStorage[65535] <> 0 then
-      begin
-        WriteLn('FAIL - Index 65535; expected $02 got $', hexstr(FResultStorage[65535], 2));
-        Result := False;
-        Exit;
-      end;
-  end;
-
-procedure TExtremeRange3.DoTestIteration(Iteration: Integer);
-  var
-    Index: Word;
-  begin
-    Index := Iteration and $FFFF;
-    FResultStorage[Index] := 2; { Covers 1..$FFFE }
-    case Index of
-      0:
-        FResultStorage[Index] := 1;
-      $FFFF:
-        FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TExtremeRange4 }
-
-function TExtremeRange4.TestTitle: shortstring;
-  begin
-    Result := 'Two labels, sparse values, always triggered';
-  end;
-
-function TExtremeRange4.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-
-    for X := 0 to $FFFF do
-      if FResultStorage[X] <> (X and $1) then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(X and $1, 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TExtremeRange4.DoTestIteration(Iteration: Integer);
-  var
-    Index, Input: Word;
-  begin
-    Index := (Iteration and $FFFF);
-    Input := (Iteration and $1) - 1;
-    FResultStorage[Index] := 2; { Covers 1..$FFFE }
-    case Input of
-      0:
-        FResultStorage[Index] := 1;
-      $FFFF:
-        FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TSparseDataTest1 }
-
-procedure TSparseDataTest1.DoCaseBlock(Index: Integer; Input: TInstructionSet);
-  begin
-    case Input of
-      A_AND:
-        FResultStorage[Index] := 1;
-      A_MOV:
-        FResultStorage[Index] := 2;
-      A_MOVSX,
-      A_MOVZX:
-        FResultStorage[Index] := 3;
-      A_VMOVAPS,
-      A_VMOVAPD,
-      A_VMOVUPS,
-      A_VMOVUPD:
-        FResultStorage[Index] := 4;
-      A_MOVAPD,
-      A_MOVAPS,
-      A_MOVUPD,
-      A_MOVUPS:
-        FResultStorage[Index] := 5;
-      A_VDIVSD,
-      A_VDIVSS,
-      A_VSUBSD,
-      A_VSUBSS,
-      A_VMULSD,
-      A_VMULSS,
-      A_VADDSD,
-      A_VADDSS,
-      A_VANDPD,
-      A_VANDPS,
-      A_VORPD,
-      A_VORPS,
-      A_VXORPD,
-      A_VXORPS:
-        FResultStorage[Index] := 6;
-      A_MULSD,
-      A_MULSS,
-      A_ADDSD,
-      A_ADDSS:
-        FResultStorage[Index] := 7;
-      A_VMOVSD,
-      A_VMOVSS,
-      A_MOVSD,
-      A_MOVSS:
-        FResultStorage[Index] := 8;
-      A_LEA:
-        FResultStorage[Index] := 9;
-      A_SUB:
-        FResultStorage[Index] := 10;
-      A_SHL,A_SAL:
-        FResultStorage[Index] := 11;
-      A_SETcc:
-        FResultStorage[Index] := 12;
-      else
-        FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TSparseDataEqual1 }
-
-function TSparseDataEqual1.TestTitle: shortstring;
-  begin
-    Result := 'Domain of 1024, 12 sparse labels, equal polling';
-  end;
-
-function TSparseDataEqual1.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-
-    for X := 0 to 1023 do
-      if FResultStorage[X] <> ExtremeRange1Expected[X] then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(ExtremeRange1Expected[X], 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TSparseDataEqual1.DoTestIteration(Iteration: Integer);
-  var
-    X: SmallInt;
-  begin
-    X := Iteration and 1023;
-    DoCaseBlock(X, TInstructionSet(X - 512))
-  end;
-
-{ TSparseDataMOVWeightedl }
-
-function TSparseDataMOVWeighted1.TestTitle: shortstring;
-  begin
-    Result := 'Domain of 1024, 12 sparse labels, 75% particular match';
-  end;
-
-function TSparseDataMOVWeighted1.WriteResults: Boolean;
-  var
-    X, Expected: Word;
-  begin
-    Result := True;
-
-    for X := 0 to 1023 do
-      begin
-        Expected := IIf((X and $3) = 0, ExtremeRange1Expected[X], 2);
-        if FResultStorage[X] <> Expected then
-          begin
-            WriteLn('FAIL - Index ', X, '; expected $', hexstr(Expected, 2), ' got $', hexstr(FResultStorage[X], 2));
-            Result := False;
-            Exit;
-          end;
-      end;
-  end;
-
-procedure TSparseDataMOVWeighted1.DoTestIteration(Iteration: Integer);
-  var
-    X: SmallInt; P: TInstructionSet;
-  begin
-    X := Iteration and 1023;
-    P := TInstructionSet(IIf((X and $3) = 0, X - 512, Ord(A_MOV)));
-    DoCaseBlock(X, P);
-  end;
-
-{ TSparseDataMidpointWeighted1 }
-
-function TSparseDataMidpointWeighted1.TestTitle: shortstring;
-  begin
-    Result := 'Domain of 1024, 12 sparse labels, 75% midpoint match';
-  end;
-
-function TSparseDataMidpointWeighted1.WriteResults: Boolean;
-  var
-    X, Expected: Word;
-  begin
-    Result := True;
-
-    for X := 0 to 1023 do
-      begin
-        Expected := IIf((X and $3) = 0, ExtremeRange1Expected[X], 6);
-        if FResultStorage[X] <> Expected then
-          begin
-            WriteLn('FAIL - Index ', X, '; expected $', hexstr(Expected, 2), ' got $', hexstr(FResultStorage[X], 2));
-            Result := False;
-            Exit;
-          end;
-      end;
-  end;
-
-procedure TSparseDataMidpointWeighted1.DoTestIteration(Iteration: Integer);
-  var
-    X: Word; P: TInstructionSet;
-  begin
-    X := Iteration and 1023;
-    P := TInstructionSet(IIf((X and $3) = 0, X - 512, Ord(A_VADDSD)));
-    DoCaseBlock(X, P);
-  end;
-
-{ TSparseDataTest2 }
-
-procedure TSparseDataTest2.DoCaseBlock(Index: Integer; Input: TInstructionSet);
-  begin
-    case Input of
-      A_AND:
-        FResultStorage[Index] := 1;
-      A_MOV:
-        FResultStorage[Index] := 2;
-      A_MOVSX:
-        FResultStorage[Index] := 13;
-      A_MOVZX:
-        FResultStorage[Index] := 3;
-      A_VMOVAPS:
-        FResultStorage[Index] := 14;
-      A_VMOVAPD:
-        FResultStorage[Index] := 15;
-      A_VMOVUPS:
-        FResultStorage[Index] := 16;
-      A_VMOVUPD:
-        FResultStorage[Index] := 4;
-      A_MOVAPD:
-        FResultStorage[Index] := 17;
-      A_MOVAPS:
-        FResultStorage[Index] := 18;
-      A_MOVUPD:
-        FResultStorage[Index] := 19;
-      A_MOVUPS:
-        FResultStorage[Index] := 5;
-      A_VDIVSD:
-        FResultStorage[Index] := 20;
-      A_VDIVSS:
-        FResultStorage[Index] := 21;
-      A_VSUBSD:
-        FResultStorage[Index] := 22;
-      A_VSUBSS:
-        FResultStorage[Index] := 23;
-      A_VMULSD:
-        FResultStorage[Index] := 24;
-      A_VMULSS:
-        FResultStorage[Index] := 25;
-      A_VADDSD:
-        FResultStorage[Index] := 26;
-      A_VADDSS:
-        FResultStorage[Index] := 27;
-      A_VANDPD:
-        FResultStorage[Index] := 28;
-      A_VANDPS:
-        FResultStorage[Index] := 29;
-      A_VORPD:
-        FResultStorage[Index] := 30;
-      A_VORPS:
-        FResultStorage[Index] := 31;
-      A_VXORPD:
-        FResultStorage[Index] := 32;
-      A_VXORPS:
-        FResultStorage[Index] := 6;
-      A_MULSD:
-        FResultStorage[Index] := 33;
-      A_MULSS:
-        FResultStorage[Index] := 34;
-      A_ADDSD:
-        FResultStorage[Index] := 35;
-      A_ADDSS:
-        FResultStorage[Index] := 7;
-      A_VMOVSD:
-        FResultStorage[Index] := 36;
-      A_VMOVSS:
-        FResultStorage[Index] := 37;
-      A_MOVSD:
-        FResultStorage[Index] := 38;
-      A_MOVSS:
-        FResultStorage[Index] := 8;
-      A_LEA:
-        FResultStorage[Index] := 9;
-      A_SUB:
-        FResultStorage[Index] := 10;
-      A_SHL:
-        FResultStorage[Index] := 39;
-      A_SAL:
-        FResultStorage[Index] := 11;
-      A_SETcc:
-        FResultStorage[Index] := 12;
-      else
-        FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TSparseDataEqual2 }
-
-function TSparseDataEqual2.TestTitle: shortstring;
-  begin
-    Result := 'Domain of 1024, 39 sparse labels, equal polling';
-  end;
-
-function TSparseDataEqual2.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-
-    for X := 0 to 1023 do
-      if FResultStorage[X] <> ExtremeRange2Expected[X] then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(ExtremeRange2Expected[X], 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TSparseDataEqual2.DoTestIteration(Iteration: Integer);
-  var
-    X: SmallInt;
-  begin
-    X := Iteration and 1023;
-    DoCaseBlock(X, TInstructionSet(X - 512))
-  end;
-
-{ TSparseDataMOVWeighted2 }
-
-function TSparseDataMOVWeighted2.TestTitle: shortstring;
-  begin
-    Result := 'Domain of 1024, 39 sparse labels, 75% particular match';
-  end;
-
-function TSparseDataMOVWeighted2.WriteResults: Boolean;
-  var
-    X, Expected: Word;
-  begin
-    Result := True;
-
-    for X := 0 to 1023 do
-      begin
-        Expected := IIf((X and $3) = 0, ExtremeRange2Expected[X], 2);
-        if FResultStorage[X] <> Expected then
-          begin
-            WriteLn('FAIL - Index ', X, '; expected $', hexstr(Expected, 2), ' got $', hexstr(FResultStorage[X], 2));
-            Result := False;
-            Exit;
-          end;
-      end;
-  end;
-
-procedure TSparseDataMOVWeighted2.DoTestIteration(Iteration: Integer);
-  var
-    X: SmallInt; P: TInstructionSet;
-  begin
-    X := Iteration and 1023;
-    P := TInstructionSet(IIf((X and $3) = 0, X - 512, Ord(A_MOV)));
-    DoCaseBlock(X, P);
-  end;
-
-{ TSparseDataMidpointWeighted2 }
-
-function TSparseDataMidpointWeighted2.TestTitle: shortstring;
-  begin
-    Result := 'Domain of 1024, 39 sparse labels, 75% midpoint match';
-  end;
-
-function TSparseDataMidpointWeighted2.WriteResults: Boolean;
-  var
-    X, Expected: Word;
-  begin
-    Result := True;
-
-    for X := 0 to 1023 do
-      begin
-        Expected := IIf((X and $3) = 0, ExtremeRange2Expected[X], 26);
-        if FResultStorage[X] <> Expected then
-          begin
-            WriteLn('FAIL - Index ', X, '; expected $', hexstr(Expected, 2), ' got $', hexstr(FResultStorage[X], 2));
-            Result := False;
-            Exit;
-          end;
-      end;
-  end;
-
-procedure TSparseDataMidpointWeighted2.DoTestIteration(Iteration: Integer);
-  var
-    X: SmallInt; P: TInstructionSet;
-  begin
-    X := Iteration and 1023;
-    P := TInstructionSet(IIf((X and $3) = 0, X - 512, Ord(A_VADDSD)));
-    DoCaseBlock(X, P);
-  end;
-
-{ TSparseDataTest3 }
-
-procedure TSparseDataTest3.DoCaseBlock(Index: Integer; Input: TInstructionSet);
-  begin
-    case Input of
-      A_AND:
-        FResultStorage[Index] := 1;
-      A_MOV:
-        FResultStorage[Index] := 2;
-      A_MOVSX:
-        FResultStorage[Index] := 13;
-      A_MOVZX:
-        FResultStorage[Index] := 3;
-      A_VMOVAPS:
-        FResultStorage[Index] := 14;
-      A_VMOVAPD:
-        FResultStorage[Index] := 15;
-      A_VMOVUPS:
-        FResultStorage[Index] := 16;
-      A_VMOVUPD:
-        FResultStorage[Index] := 4;
-      A_MOVAPD:
-        FResultStorage[Index] := 17;
-      A_MOVAPS:
-        FResultStorage[Index] := 18;
-      A_MOVUPD:
-        FResultStorage[Index] := 19;
-      A_MOVUPS:
-        FResultStorage[Index] := 5;
-      A_VDIVSD:
-        FResultStorage[Index] := 20;
-      A_VDIVSS:
-        FResultStorage[Index] := 21;
-      A_VSUBSD:
-        FResultStorage[Index] := 22;
-      A_VSUBSS:
-        FResultStorage[Index] := 23;
-      A_VMULSD:
-        FResultStorage[Index] := 24;
-      A_VMULSS:
-        FResultStorage[Index] := 25;
-      A_VADDSD:
-        FResultStorage[Index] := 26;
-      A_VADDSS:
-        FResultStorage[Index] := 27;
-      A_VANDPD:
-        FResultStorage[Index] := 28;
-      A_VANDPS:
-        FResultStorage[Index] := 29;
-      A_VORPD:
-        FResultStorage[Index] := 30;
-      A_VORPS:
-        FResultStorage[Index] := 31;
-      A_VXORPD:
-        FResultStorage[Index] := 32;
-      A_VXORPS:
-        FResultStorage[Index] := 6;
-      A_MULSD:
-        FResultStorage[Index] := 33;
-      A_MULSS:
-        FResultStorage[Index] := 34;
-      A_ADDSD:
-        FResultStorage[Index] := 35;
-      A_ADDSS:
-        FResultStorage[Index] := 7;
-      A_VMOVSD:
-        FResultStorage[Index] := 36;
-      A_VMOVSS:
-        FResultStorage[Index] := 37;
-      A_MOVSD:
-        FResultStorage[Index] := 38;
-      A_MOVSS:
-        FResultStorage[Index] := 8;
-      A_LEA:
-        FResultStorage[Index] := 9;
-      A_SUB:
-        FResultStorage[Index] := 10;
-      A_SHL:
-        FResultStorage[Index] := 39;
-      A_SAL:
-        FResultStorage[Index] := 11;
-      A_SETcc:
-        FResultStorage[Index] := 12;
-      A_MULX:
-        FResultStorage[Index] := 40;
-      A_VBROADCASTF128:
-        FResultStorage[Index] := 41;
-      A_VBROADCASTI128:
-        FResultStorage[Index] := 42;
-      A_VPERMD:
-        FResultStorage[Index] := 43;
-      A_VADDPD:
-        FResultStorage[Index] := 44;
-      A_VADDPS:
-        FResultStorage[Index] := 45;
-      A_ROUNDPS:
-        FResultStorage[Index] := 46;
-      A_ROUNDPD:
-        FResultStorage[Index] := 47;
-      A_ROUNDSS:
-        FResultStorage[Index] := 48;
-      A_ROUNDSD:
-        FResultStorage[Index] := 49;
-      A_CRC32:
-        FResultStorage[Index] := 50;
-      A_DPPS:
-        FResultStorage[Index] := 51;
-      A_DPPD:
-        FResultStorage[Index] := 52;
-      A_VAESDEC:
-        FResultStorage[Index] := 53;
-      A_VAESDECLAST:
-        FResultStorage[Index] := 54;
-      A_VAESENC:
-        FResultStorage[Index] := 55;
-      A_VAESENCLAST:
-        FResultStorage[Index] := 56;
-      A_VAESIMC:
-        FResultStorage[Index] := 57;
-      A_VAESKEYGENASSIST:
-        FResultStorage[Index] := 58;
-      A_VPSHUFB:
-        FResultStorage[Index] := 59;
-      A_VPSHUFD:
-        FResultStorage[Index] := 60;
-      A_VPSHUFHW:
-        FResultStorage[Index] := 61;
-      A_VPSHUFLW:
-        FResultStorage[Index] := 62;
-      A_BSF:
-        FResultStorage[Index] := 63;
-      A_BSR:
-        FResultStorage[Index] := 64;
-      A_BTR:
-        FResultStorage[Index] := 65;
-      A_BTS:
-        FResultStorage[Index] := 66;
-      A_XOR:
-        FResultStorage[Index] := 67;
-      A_ADD:
-        FResultStorage[Index] := 68;
-      A_CMP:
-        FResultStorage[Index] := 69;
-      A_SHLX:
-        FResultStorage[Index] := 70;
-      A_SHRX:
-        FResultStorage[Index] := 71;
-      else
-        FResultStorage[Index] := 0;
-    end;
-  end;
-
-{ TSparseDataEqual3 }
-
-function TSparseDataEqual3.TestTitle: shortstring;
-  begin
-    Result := 'Domain of 1024, 71 sparse labels, equal polling';
-  end;
-
-function TSparseDataEqual3.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-
-    for X := 0 to 1023 do
-      if FResultStorage[X] <> ExtremeRange3Expected[X] then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(ExtremeRange3Expected[X], 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TSparseDataEqual3.DoTestIteration(Iteration: Integer);
-  var
-    X: SmallInt;
-  begin
-    X := Iteration and 1023;
-    DoCaseBlock(X, TInstructionSet(X - 512))
-  end;
-
-{ TSparseDataMOVWeightedl }
-
-function TSparseDataMOVWeighted3.TestTitle: shortstring;
-  begin
-    Result := 'Domain of 1024, 71 sparse labels, 75% particular match';
-  end;
-
-function TSparseDataMOVWeighted3.WriteResults: Boolean;
-  var
-    X, Expected: Word;
-  begin
-    Result := True;
-
-    for X := 0 to 1023 do
-      begin
-        Expected := IIf((X and $3) = 0, ExtremeRange3Expected[X], 2);
-        if FResultStorage[X] <> Expected then
-          begin
-            WriteLn('FAIL - Index ', X, '; expected $', hexstr(Expected, 2), ' got $', hexstr(FResultStorage[X], 2));
-            Result := False;
-            Exit;
-          end;
-      end;
-  end;
-
-procedure TSparseDataMOVWeighted3.DoTestIteration(Iteration: Integer);
-  var
-    X: SmallInt; P: TInstructionSet;
-  begin
-    X := Iteration and 1023;
-    P := TInstructionSet(IIf((X and $3) = 0, X - 512, Ord(A_MOV)));
-    DoCaseBlock(X, P);
-  end;
-
-{ TSparseDataMidpointWeighted3 }
-
-function TSparseDataMidpointWeighted3.TestTitle: shortstring;
-  begin
-    Result := 'Domain of 1024, 71 sparse labels, 75% midpoint match';
-  end;
-
-function TSparseDataMidpointWeighted3.WriteResults: Boolean;
-  var
-    X, Expected: Word;
-  begin
-    Result := True;
-
-    for X := 0 to 1023 do
-      begin
-        Expected := IIf((X and $3) = 0, ExtremeRange3Expected[X], 26);
-        if FResultStorage[X] <> Expected then
-          begin
-            WriteLn('FAIL - Index ', X, '; expected $', hexstr(Expected, 2), ' got $', hexstr(FResultStorage[X], 2));
-            Result := False;
-            Exit;
-          end;
-      end;
-  end;
-
-procedure TSparseDataMidpointWeighted3.DoTestIteration(Iteration: Integer);
-  var
-    X: SmallInt; P: TInstructionSet;
-  begin
-    X := Iteration and 1023;
-    P := TInstructionSet(IIf((X and $3) = 0, X - 512, Ord(A_VADDSD)));
-    DoCaseBlock(X, P);
-  end;
-
-
-{ TLinearListDependsOnInput }
-
-function TLinearListDependsOnInput.TestTitle: shortstring;
-  begin
-    Result := 'Linear list depends on input';
-  end;
-
-function TLinearListDependsOnInput.WriteResults: Boolean;
-  var
-    X: Word;
-  begin
-    Result := True;
-    if FResultStorage[0] <> 0 then
-      begin
-        WriteLn('FAIL - Index 0; expected $00 got $', hexstr(FResultStorage[0], 2));
-        Result := False;
-        Exit;
-      end;
-
-    for X := 1 to 7 do
-      if FResultStorage[X] <> (X and $3) then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr(X and $3, 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    for X := 8 to 11 do
-      if FResultStorage[X] <> 0 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    if FResultStorage[12] <> $10 then
-      begin
-        WriteLn('FAIL - Index 12; expected $10 got $', hexstr(FResultStorage[12], 2));
-        Result := False;
-        Exit;
-      end;
-
-    for X := 13 to $FF do
-      if FResultStorage[X] <> 0 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TLinearListDependsOnInput.DoTestIteration(Iteration: Integer);
-  var
-    Index: Byte;
-  begin
-    Index := Iteration and $FF;
-    { This helps catch errors where all branches, including else, are skipped }
-    FResultStorage[Index] := $FF;
-    case Index of
-      1..3: FResultStorage[Index] := Index;
-      4..7: FResultStorage[Index] := Index - 4;
-      12:   FResultStorage[Index] := $10;
-      else  FResultStorage[Index] := 0;
-    end;
-  end;
-
-
-{ TCStyleCascade }
-
-function TCStyleCascade.TestTitle: shortstring;
-  begin
-    Result := 'C-style cascade using ''goto''';
-  end;
-
-function TCStyleCascade.WriteResults: Boolean;
-  var
-    X: Byte;
-  begin
-    Result := True;
-    for X := 0 to 5 do
-      if FResultStorage[X] <> ((1 shl X) - 1) then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $', hexstr((1 shl X) - 1, 2), ' got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-
-    for X := 6 to $FF do
-      if FResultStorage[X] <> 0 then
-        begin
-          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
-          Result := False;
-          Exit;
-        end;
-  end;
-
-procedure TCStyleCascade.DoTestIteration(Iteration: Integer);
-  var
-    X, Tmp: Byte;
-  label
-    Set1, Set2, Set3, Set4, Default;
-  begin
-    X := Iteration and $FF;
-    Tmp := 0;
-    case X of
-      $1: goto Set1;
-      $2: goto Set2;
-      $3: goto Set3;
-      $4: goto Set4;
-      $5: Tmp := 16;
-    else
-      goto Default;
-    end;
-  Set4:
-    Tmp := Tmp or $8;
-  Set3:
-    Tmp := Tmp or $4;
-  Set2:
-    Tmp := Tmp or $2;
-  Set1:
-    Tmp := Tmp or $1;
-  Default:
-    FResultStorage[X] := Tmp;
-  end;
-
-
-{ Main function }
-const
-  { TCompleteByteRange and descendants
-      - Entirely-covered jump tree
-      - 33 labels, no else block; full coverage (all 256 byte values covered)
-        - Root: values are polled with equal probability
-        - FirstWeighted: first branch is polled 3 times as often
-        - LastWeighted: last branch is polled 3 times as often
-    TAlmostFullByteRange
-      - Almost full jump tree - 18 labels, else block covers 32 values; 224 byte values covered
-        - Root: values are polled with equal probability
-        - FirstWeighted: first branch is polled 3 times as often
-        - LastWeighted: last branch is polled 3 times as often
-  }
-
-  TestClasses: array[0..35] of TTestClass = (
-    TCompleteByteRange,
-    TCompleteByteRangeFirstWeighted,
-    TCompleteByteRangeLastWeighted,
-    TAlmostFullByteRange,
-    TAlmostFullByteRangeFirstWeighted,
-    TAlmostFullByteRangeLastWeighted,
-    TSingleEntryWithDefault,
-    TSingleEntryWithDefaultUnlikely,
-    TSingleEntryWithDefaultWeighted,
-    TSingleEntryWithElse,
-    TSingleEntryWithElseUnlikely,
-    TSingleEntryWithElseWeighted,
-    TSingleEntryAtZeroWithElse,
-    TSingleEntryAtMinus1WithDefault,
-    TSingleEntryAtMinus4WithElse,
-    TSingleEntryWith0To5RangeWithElse,
-    TSingleEntryWith0To50RangeWithElse,
-    TSingleEntryWith1To5RangeWithElse,
-    TSingleEntryWith1To50RangeWithElse,
-    TSingleEntryWithMinus1To5RangeWithElse,
-    TSingleEntryWithMinus1To50RangeWithElse,
-    TExtremeRange1,
-    TExtremeRange2,
-    TExtremeRange3,
-    TExtremeRange4,
-    TSparseDataEqual1,
-    TSparseDataMOVWeighted1,
-    TSparseDataMidpointWeighted1,
-    TSparseDataEqual2,
-    TSparseDataMOVWeighted2,
-    TSparseDataMidpointWeighted2,
-    TSparseDataEqual3,
-    TSparseDataMOVWeighted3,
-    TSparseDataMidpointWeighted3,
-    TLinearListDependsOnInput,
-    TCStyleCascade
-  );
-
-var
-  CurrentObject: TTestAncestor;
-  Failed: Boolean;
-  X: Integer;
-  SummedUpAverageDuration, AverageDuration : Double;
-begin
-  SummedUpAverageDuration := 0.0;
-  Failed := False;
-  WriteLn('Case node compilation and timing test');
-  WriteLn('-------------------------------------');
-  for X := low(TestClasses) to High(TestClasses) do
-    begin
-      try
-        CurrentObject := TestClasses[X].Create;
-        try
-          Write(CurrentObject.TestTitle:56, ' - ');
-          CurrentObject.Run;
-
-          if CurrentObject.WriteResults then
-            begin
-              AverageDuration := ((CurrentObject.RunTime * 1000000000.0) / ITERATIONS);
-              WriteLn('Pass - average iteration duration: ', AverageDuration:1:3, ' ns');
-              SummedUpAverageDuration := SummedUpAverageDuration + AverageDuration;
-            end
-          else
-            { Final average isn't processed if a test failed, so there's no need
-              to calculate and add the average duration to it }
-            Failed := True;
-
-        finally
-          CurrentObject.Free;
-        end;
-      except on E: Exception do
-        begin
-          WriteLn('Exception "', E.ClassName, '" raised while running test object of class "', TestClasses[X].ClassName, '"');
-          Failed := True;
-        end;
-      end;
-    end;
-
-  if Failed then
-    Halt(1);
-
-  WriteLn(#10'ok');
-  WriteLn('- Sum of average durations: ', SummedUpAverageDuration:1:3, ' ns');
-  WriteLn('- Overall average duration: ', (SummedUpAverageDuration / Length(TestClasses)):1:3, ' ns');
-end.
+{$goto on}
+program bcase;
+
+{$mode objfpc}{$H+}
+
+uses
+  SysUtils;
+
+{ Utility functions }
+function GetRealTime(const st: TSystemTime): Real;
+  begin
+    Result := st.Hour*3600.0 + st.Minute*60.0 + st.Second + st.MilliSecond/1000.0;
+  end;
+
+{$push}
+{$warn 5057 off}
+function GetRealTime : Real;
+  var
+    st:TSystemTime;
+  begin
+    GetLocalTime(st);
+    result:=GetRealTime(st);
+  end;
+{$pop}
+
+function IIf(Condition: Boolean; TrueRes, FalseRes: Integer): Integer; inline;
+  begin
+    if Condition then
+      Result := TrueRes
+    else
+      Result := FalseRes;
+  end;
+
+const
+  ITERATIONS = 33554432;
+
+  AES_S_Box: array[Byte] of Byte = (
+    $63, $7c, $77, $7b, $f2, $6b, $6f, $c5, $30, $01, $67, $2b, $fe, $d7, $ab, $76,
+    $ca, $82, $c9, $7d, $fa, $59, $47, $f0, $ad, $d4, $a2, $af, $9c, $a4, $72, $c0,
+    $b7, $fd, $93, $26, $36, $3f, $f7, $cc, $34, $a5, $e5, $f1, $71, $d8, $31, $15,
+    $04, $c7, $23, $c3, $18, $96, $05, $9a, $07, $12, $80, $e2, $eb, $27, $b2, $75,
+    $09, $83, $2c, $1a, $1b, $6e, $5a, $a0, $52, $3b, $d6, $b3, $29, $e3, $2f, $84,
+    $53, $d1, $00, $ed, $20, $fc, $b1, $5b, $6a, $cb, $be, $39, $4a, $4c, $58, $cf,
+    $d0, $ef, $aa, $fb, $43, $4d, $33, $85, $45, $f9, $02, $7f, $50, $3c, $9f, $a8,
+    $51, $a3, $40, $8f, $92, $9d, $38, $f5, $bc, $b6, $da, $21, $10, $ff, $f3, $d2,
+    $cd, $0c, $13, $ec, $5f, $97, $44, $17, $c4, $a7, $7e, $3d, $64, $5d, $19, $73,
+    $60, $81, $4f, $dc, $22, $2a, $90, $88, $46, $ee, $b8, $14, $de, $5e, $0b, $db,
+    $e0, $32, $3a, $0a, $49, $06, $24, $5c, $c2, $d3, $ac, $62, $91, $95, $e4, $79,
+    $e7, $c8, $37, $6d, $8d, $d5, $4e, $a9, $6c, $56, $f4, $ea, $65, $7a, $ae, $08,
+    $ba, $78, $25, $2e, $1c, $a6, $b4, $c6, $e8, $dd, $74, $1f, $4b, $bd, $8b, $8a,
+    $70, $3e, $b5, $66, $48, $03, $f6, $0e, $61, $35, $57, $b9, $86, $c1, $1d, $9e,
+    $e1, $f8, $98, $11, $69, $d9, $8e, $94, $9b, $1e, $87, $e9, $ce, $55, $28, $df,
+    $8c, $a1, $89, $0d, $bf, $e6, $42, $68, $41, $99, $2d, $0f, $b0, $54, $bb, $16
+  );
+
+  FirstWeighted: array[0..255] of Byte = (
+    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
+    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
+    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
+    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
+    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
+    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
+    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
+    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
+    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
+    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
+    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
+    $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63,
+    $ba, $78, $25, $2e, $1c, $a6, $b4, $c6, $e8, $dd, $74, $1f, $4b, $bd, $8b, $8a,
+    $70, $3e, $b5, $66, $48, $03, $f6, $0e, $61, $35, $57, $b9, $86, $c1, $1d, $9e,
+    $e1, $f8, $98, $11, $69, $d9, $8e, $94, $9b, $1e, $87, $e9, $ce, $55, $28, $df,
+    $8c, $a1, $89, $0d, $bf, $e6, $42, $68, $41, $99, $2d, $0f, $b0, $54, $bb, $16
+  );
+
+  LastWeighted: array[0..255] of Byte = (
+    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
+    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
+    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
+    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
+    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
+    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
+    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
+    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
+    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
+    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
+    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
+    $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16,
+    $ba, $78, $25, $2e, $1c, $a6, $b4, $c6, $e8, $dd, $74, $1f, $4b, $bd, $8b, $8a,
+    $70, $3e, $b5, $66, $48, $03, $f6, $0e, $61, $35, $57, $b9, $86, $c1, $1d, $9e,
+    $e1, $f8, $98, $11, $69, $d9, $8e, $94, $9b, $1e, $87, $e9, $ce, $55, $28, $df,
+    $8c, $a1, $89, $0d, $bf, $e6, $42, $68, $41, $99, $2d, $0f, $b0, $54, $bb, $16
+  );
+
+  AlmostFullExpected: array[0..255] of Byte = (
+    $63, $7c, $77, $7b, $f2, $6b, $6f, $c5, $30, $01, $67, $2b, $fe, $d7, $ab, $76,
+    $ca, $82, $c9, $7d, $fa, $59, $47, $f0, $ad, $d4, $a2, $af, $9c, $a4, $72, $c0,
+    $b7, $fd, $93, $26, $36, $3f, $f7, $cc, $34, $a5, $e5, $f1, $71, $d8, $31, $15,
+    $04, $c7, $23, $c3, $18, $96, $05, $9a, $07, $12, $80, $e2, $eb, $27, $b2, $75,
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
+    $d0, $ef, $aa, $fb, $43, $4d, $33, $85, $45, $f9, $02, $7f, $50, $3c, $9f, $a8,
+    $51, $a3, $40, $8f, $92, $9d, $38, $f5, $bc, $b6, $da, $21, $10, $ff, $f3, $d2,
+    $cd, $0c, $13, $ec, $5f, $97, $44, $17, $c4, $a7, $7e, $3d, $64, $5d, $19, $73,
+    $60, $81, $4f, $dc, $22, $2a, $90, $88, $46, $ee, $b8, $14, $de, $5e, $0b, $db,
+    $e0, $32, $3a, $0a, $49, $06, $24, $5c, $c2, $d3, $ac, $62, $91, $95, $e4, $79,
+    $e7, $c8, $37, $6d, $8d, $d5, $4e, $a9, $6c, $56, $f4, $ea, $65, $7a, $ae, $08,
+    $ba, $78, $25, $2e, $1c, $a6, $b4, $c6, $e8, $dd, $74, $1f, $4b, $bd, $8b, $8a,
+    $70, $3e, $b5, $66, $48, $03, $f6, $0e, $61, $35, $57, $b9, $86, $c1, $1d, $9e,
+    $e1, $f8, $98, $11, $69, $d9, $8e, $94, $9b, $1e, $87, $e9, $ce, $55, $28, $df,
+    $8c, $a1, $89, $0d, $bf, $e6, $42, $68, $41, $99, $2d, $0f, $b0, $54, $bb, $16
+  );
+
+type
+  TInstructionSet = ( { Truncated to 1024 entries }
+    A_NONE = -512, A_ADC, A_ADD, A_AND, A_BSF, A_BSR, A_BSWAP, A_BT, A_BTC, A_BTR, A_BTS,
+    A_CALL, A_CBW, A_CDQ, A_CLC, A_CLD, A_CLI, A_CLTS, A_CMC, A_CMP, A_CMPSB,
+    A_CMPSD, A_CMPSW, A_CMPXCHG, A_CMPXCHG486, A_CMPXCHG8B, A_CPUID, A_CWD, A_CWDE,
+    A_DEC, A_DIV, A_EMMS, A_ENTER, A_F2XM1, A_FABS, A_FADD, A_FADDP, A_FBLD, A_FBSTP,
+    A_FCHS, A_FCLEX,A_FCMOVB, A_FCMOVBE, A_FCMOVE, A_FCMOVNB, A_FCMOVNBE, A_FCMOVNE,
+    A_FCMOVNU, A_FCMOVU, A_FCOM, A_FCOMI, A_FCOMIP, A_FCOMP, A_FCOMPP, A_FCOS,
+    A_FDECSTP, A_FDISI, A_FDIV, A_FDIVP, A_FDIVR, A_FDIVRP, A_FEMMS, A_FENI, A_FFREE,
+    A_FIADD, A_FICOM, A_FICOMP, A_FIDIV, A_FIDIVR, A_FILD, A_FIMUL, A_FINCSTP,
+    A_FINIT, A_FIST, A_FISTP, A_FISTTP, A_FISUB, A_FISUBR, A_FLD, A_FLD1, A_FLDCW,
+    A_FLDENV, A_FLDL2E, A_FLDL2T, A_FLDLG2, A_FLDLN2, A_FLDPI, A_FLDZ, A_FMUL,
+    A_FMULP, A_FNCLEX, A_FNDISI, A_FNENI, A_FNINIT, A_FNOP, A_FNSAVE, A_FNSTCW,
+    A_FNSTENV, A_FNSTSW, A_FPATAN, A_FPREM, A_FPREM1, A_FPTAN, A_FRNDINT, A_FRSTOR,
+    A_FSAVE, A_FSCALE, A_FSETPM, A_FSIN, A_FSINCOS, A_FSQRT, A_FST, A_FSTCW,
+    A_FSTENV, A_FSTP, A_FSTSW, A_FSUB, A_FSUBP, A_FSUBR, A_FSUBRP, A_FTST, A_FUCOM,
+    A_FUCOMI, A_FUCOMIP, A_FUCOMP, A_FUCOMPP, A_FWAIT, A_FXAM, A_FXCH, A_FXTRACT,
+    A_FYL2X, A_FYL2XP1, A_HLT, A_IBTS, A_ICEBP, A_IDIV, A_IMUL, A_IN, A_INC, A_INSB,
+    A_INSD, A_INSW, A_INT, A_INT01, A_INT1, A_INT03, A_INT3, A_INVD, A_INVLPG,
+    A_IRET, A_IRETD, A_IRETW, A_IRETQ, A_JECXZ, A_JRCXZ, A_JMP, A_LAHF, A_LAR,
+    A_LCALL, A_LEA, A_LEAVE, A_LFS, A_LGDT, A_LGS, A_LIDT, A_LJMP, A_LLDT, A_LMSW,
+    A_LOADALL, A_LOADALL286, A_LOCK, A_LODSB, A_LODSD, A_LODSW, A_LOOP, A_LOOPE,
+    A_LOOPNE, A_LOOPNZ, A_LOOPZ, A_LSL, A_LSS, A_LTR, A_MONITOR, A_MOV, A_MOVD,
+    A_MOVQ, A_MOVSB, A_MOVSD, A_MOVSQ, A_MOVSW, A_MOVSX, A_MOVZX, A_MUL, A_MWAIT,
+    A_NEG, A_NOP, A_NOT, A_OR, A_OUT, A_OUTSB, A_OUTSD, A_OUTSW, A_PACKSSDW,
+    A_PACKSSWB, A_PACKUSWB, A_PADDB, A_PADDD, A_PADDSB, A_PADDSIW, A_PADDSW,
+    A_PADDUSB, A_PADDUSW, A_PADDW, A_PAND, A_PANDN, A_PAVEB, A_PAVGUSB, A_PCMPEQB,
+    A_PCMPEQD, A_PCMPEQW, A_PCMPGTB, A_PCMPGTD, A_PCMPGTW, A_PDISTIB, A_PF2ID,
+    A_PFACC, A_PFADD, A_PFCMPEQ, A_PFCMPGE, A_PFCMPGT, A_PFMAX, A_PFMIN, A_PFMUL,
+    A_PFRCP, A_PFRCPIT1, A_PFRCPIT2, A_PFRSQIT1, A_PFRSQRT, A_PFSUB, A_PFSUBR,
+    A_PI2FD, A_PMACHRIW, A_PMADDWD, A_PMAGW, A_PMULHRIW, A_PMULHRWA, A_PMULHRWC,
+    A_PMULHW, A_PMULLW, A_PMVGEZB, A_PMVLZB, A_PMVNZB, A_PMVZB, A_POP, A_POPF,
+    A_POPFW, A_POPFQ, A_POR, A_PREFETCH, A_PREFETCHW, A_PSLLD, A_PSLLDQ, A_PSLLQ,
+    A_PSLLW, A_PSRAD, A_PSRAW, A_PSRLD, A_PSRLQ, A_PSRLW, A_PSUBB, A_PSUBD, A_PSUBSB,
+    A_PSUBSIW, A_PSUBSW, A_PSUBUSB, A_PSUBUSW, A_PSUBW, A_PUNPCKHBW, A_PUNPCKHDQ,
+    A_PUNPCKHWD, A_PUNPCKLBW, A_PUNPCKLDQ, A_PUNPCKLWD, A_PUSH, A_PUSHF, A_PUSHFW,
+    A_PUSHFQ, A_PXOR, A_RCL, A_RCR, A_RDSHR, A_RDMSR, A_RDPMC, A_RDTSC, A_REP,
+    A_REPE, A_REPNE, A_REPNZ, A_REPZ, A_RET, A_RETF, A_RETN, A_RETW, A_RETFW,
+    A_RETNW, A_RETFD, A_RETQ, A_RETFQ, A_RETNQ, A_ROL, A_ROR, A_RSDC, A_RSLDT, A_RSM,
+    A_SAHF, A_SAL, A_SAR, A_SBB, A_SCASB, A_SCASD, A_SCASQ, A_SCASW, A_SEGCS,
+    A_SEGDS, A_SEGES, A_SEGFS, A_SEGGS, A_SEGSS, A_SGDT, A_SHL, A_SHLD, A_SHR,
+    A_SHRD, A_SIDT, A_SLDT, A_SMI, A_SMINT, A_SMINTOLD, A_SMSW, A_STC, A_STD, A_STI,
+    A_STOSB, A_STOSD, A_STOSW, A_STR, A_SUB, A_SVDC, A_SVLDT, A_SVTS, A_SYSCALL,
+    A_SYSENTER, A_SYSEXIT, A_SYSRET, A_TEST, A_UD1, A_UD2, A_UMOV, A_VERR, A_VERW,
+    A_WAIT, A_WBINVD, A_WRSHR, A_WRMSR, A_XADD, A_XBTS, A_XCHG, A_XLAT, A_XLATB,
+    A_XOR, A_XSTORE, A_XCRYPTECB, A_XCRYPTCBC, A_XCRYPTCFB, A_XCRYPTOFB, A_CMOVcc,
+    A_Jcc, A_SETcc, A_MOVS, A_CMPS, A_SCAS, A_LODS, A_STOS, A_INS, A_OUTS, A_ADDPS,
+    A_ADDSS, A_ANDNPS, A_ANDPS, A_CMPEQPS, A_CMPEQSS, A_CMPLEPS, A_CMPLESS,
+    A_CMPLTPS, A_CMPLTSS, A_CMPNEQPS, A_CMPNEQSS, A_CMPNLEPS, A_CMPNLESS,
+    A_CMPNLTPS, A_CMPNLTSS, A_CMPORDPS, A_CMPORDSS, A_CMPUNORDPS, A_CMPUNORDSS,
+    A_CMPPS, A_CMPSS, A_COMISS, A_CVTPI2PS, A_CVTPS2PI, A_CVTSI2SS, A_CVTSS2SI,
+    A_CVTTPS2PI, A_CVTTSS2SI, A_DIVPS, A_DIVSS, A_LDMXCSR, A_MAXPS, A_MAXSS, A_MINPS,
+    A_MINSS, A_MOVAPS, A_MOVHPS, A_MOVLHPS, A_MOVLPS, A_MOVHLPS, A_MOVMSKPS,
+    A_MOVNTPS, A_MOVSS, A_MOVUPS, A_MULPS, A_MULSS, A_ORPS, A_RCPPS, A_RCPSS,
+    A_RSQRTPS, A_RSQRTSS, A_SHUFPS, A_SQRTPS, A_SQRTSS, A_STMXCSR, A_SUBPS, A_SUBSS,
+    A_UCOMISS, A_UNPCKHPS, A_UNPCKLPS, A_XORPS, A_FXRSTOR, A_FXSAVE, A_PREFETCHNTA,
+    A_PREFETCHT0, A_PREFETCHT1, A_PREFETCHT2, A_SFENCE, A_MASKMOVQ, A_MOVNTQ,
+    A_PAVGB, A_PAVGW, A_PEXTRW, A_PINSRW, A_PMAXSW, A_PMAXUB, A_PMINSW, A_PMINUB,
+    A_PMOVMSKB, A_PMULHUW, A_PSADBW, A_PSHUFW, A_PFNACC, A_PFPNACC, A_PI2FW, A_PF2IW,
+    A_PSWAPD, A_FFREEP, A_MASKMOVDQU, A_CLFLUSH, A_MOVNTDQ, A_MOVNTI, A_MOVNTPD,
+    A_PAUSE, A_LFENCE, A_MFENCE, A_MOVDQA, A_MOVDQU, A_MOVDQ2Q, A_MOVQ2DQ, A_PADDQ,
+    A_PMULUDQ, A_PSHUFD, A_PSHUFHW, A_PSHUFLW, A_PSRLDQ, A_PSUBQ, A_PUNPCKHQDQ,
+    A_PUNPCKLQDQ, A_ADDPD, A_ADDSD, A_ANDNPD, A_ANDPD, A_CMPEQPD, A_CMPEQSD,
+    A_CMPLEPD, A_CMPLESD, A_CMPLTPD, A_CMPLTSD, A_CMPNEQPD, A_CMPNEQSD, A_CMPNLEPD,
+    A_CMPNLESD, A_CMPNLTPD, A_CMPNLTSD, A_CMPORDPD, A_CMPORDSD, A_CMPUNORDPD,
+    A_CMPUNORDSD, A_CMPPD, A_COMISD, A_CVTDQ2PD, A_CVTDQ2PS, A_CVTPD2DQ, A_CVTPD2PI,
+    A_CVTPD2PS, A_CVTPI2PD, A_CVTPS2DQ, A_CVTPS2PD, A_CVTSD2SI, A_CVTSD2SS,
+    A_CVTSI2SD, A_CVTSS2SD, A_CVTTPD2PI, A_CVTTPD2DQ, A_CVTTPS2DQ, A_CVTTSD2SI,
+    A_DIVPD, A_DIVSD, A_MAXPD, A_MAXSD, A_MINPD, A_MINSD, A_MOVAPD, A_MOVHPD,
+    A_MOVLPD, A_MOVMSKPD, A_MOVUPD, A_MULPD, A_MULSD, A_ORPD, A_SHUFPD, A_SQRTPD,
+    A_SQRTSD, A_SUBPD, A_SUBSD, A_UCOMISD, A_UNPCKHPD, A_UNPCKLPD, A_XORPD,
+    A_ADDSUBPD, A_ADDSUBPS, A_HADDPD, A_HADDPS, A_HSUBPD, A_HSUBPS, A_LDDQU,
+    A_MOVDDUP, A_MOVSHDUP, A_MOVSLDUP, A_VMREAD, A_VMWRITE, A_VMCALL, A_VMLAUNCH,
+    A_VMRESUME, A_VMXOFF, A_VMXON, A_VMCLEAR, A_VMPTRLD, A_VMPTRST, A_VMRUN,
+    A_VMMCALL, A_VMLOAD, A_VMSAVE, A_STGI, A_CLGI, A_SKINIT, A_INVLPGA, A_MONTMUL,
+    A_XSHA1, A_XSHA256, A_DMINT, A_RDM, A_MOVABS, A_MOVSXD, A_CQO, A_CDQE,
+    A_CMPXCHG16B, A_MOVNTSS, A_MOVNTSD, A_INSERTQ, A_EXTRQ, A_LZCNT, A_PABSB,
+    A_PABSW, A_PABSD, A_PALIGNR, A_PHADDW, A_PHADDD, A_PHADDSW, A_PHSUBW, A_PHSUBD,
+    A_PHSUBSW, A_PMADDUBSW, A_PMULHRSW, A_PSHUFB, A_PSIGNB, A_PSIGNW, A_PSIGND,
+    A_BLENDPS, A_BLENDPD, A_BLENDVPS, A_BLENDVPD, A_DPPS, A_DPPD, A_EXTRACTPS,
+    A_INSERTPS, A_MOVNTDQA, A_MPSADBW, A_PACKUSDW, A_PBLENDVB, A_PBLENDW, A_PCMPEQQ,
+    A_PEXTRB, A_PEXTRD, A_PEXTRQ, A_PHMINPOSUW, A_PINSRB, A_PINSRD, A_PINSRQ, A_PMAXSB,
+    A_PMAXSD, A_PMAXUD, A_PMAXUW, A_PMINSB, A_PMINSD, A_PMINUW, A_PMINUD, A_PMOVSXBW,
+    A_PMOVSXBD, A_PMOVSXBQ, A_PMOVSXWD, A_PMOVSXWQ, A_PMOVSXDQ, A_PMOVZXBW, A_PMOVZXBD,
+    A_PMOVZXBQ, A_PMOVZXWD, A_PMOVZXWQ, A_PMOVZXDQ, A_PMULDQ, A_PMULLD, A_PTEST,
+    A_ROUNDPS, A_ROUNDPD, A_ROUNDSS, A_ROUNDSD, A_CRC32, A_PCMPESTRI, A_PCMPESTRM,
+    A_PCMPISTRI, A_PCMPISTRM, A_PCMPGTQ, A_POPCNT, A_AESENC, A_AESENCLAST, A_AESDEC,
+    A_AESDECLAST, A_AESIMC, A_AESKEYGENASSIST, A_RDTSCP, A_STOSQ, A_LODSQ, A_CMPSQ,
+    A_VADDPD, A_VADDPS, A_VADDSD, A_VADDSS, A_VADDSUBPD, A_VADDSUBPS, A_VAESDEC,
+    A_VAESDECLAST, A_VAESENC, A_VAESENCLAST, A_VAESIMC, A_VAESKEYGENASSIST, A_VANDNPD,
+    A_VANDNPS, A_VANDPD, A_VANDPS, A_VBLENDPD, A_VBLENDPS, A_VBLENDVPD, A_VBLENDVPS,
+    A_VBROADCASTF128, A_VBROADCASTSD, A_VBROADCASTSS, A_VCMPEQPS, A_VCMPLTPS,
+    A_VCMPLEPS, A_VCMPUNORDPS, A_VCMPNEQPS, A_VCMPNLTPS, A_VCMPNLEPS, A_VCMPORDPS,
+    A_VCMPEQ_UQPS, A_VCMPNGEPS, A_VCMPNGTPS, A_VCMPFALSEPS, A_VCMPNEQ_OQPS,
+    A_VCMPGEPS, A_VCMPGTPS, A_VCMPTRUEPS, A_VCMPEQ_OSPS, A_VCMPLT_OQPS, A_VCMPLE_OQPS,
+    A_VCMPUNORD_SPS, A_VCMPNEQ_USPS, A_VCMPNLT_UQPS, A_VCMPNLE_UQPS, A_VCMPORD_SPS,
+    A_VCMPEQ_USPS, A_VCMPNGE_UQPS, A_VCMPNGT_UQPS, A_VCMPFALSE_OSPS, A_VCMPNEQ_OSPS,
+    A_VCMPGE_OQPS, A_VCMPGT_OQPS, A_VCMPTRUE_USPS, A_VCMPEQPD, A_VCMPLTPD, A_VCMPLEPD,
+    A_VCMPUNORDPD, A_VCMPNEQPD, A_VCMPNLTPD, A_VCMPNLEPD, A_VCMPORDPD, A_VCMPEQ_UQPD,
+    A_VCMPNGEPD, A_VCMPNGTPD, A_VCMPFALSEPD, A_VCMPNEQ_OQPD, A_VCMPGEPD, A_VCMPGTPD,
+    A_VCMPTRUEPD, A_VCMPEQ_OSPD, A_VCMPLT_OQPD, A_VCMPLE_OQPD, A_VCMPUNORD_SPD,
+    A_VCMPNEQ_USPD, A_VCMPNLT_UQPD, A_VCMPNLE_UQPD, A_VCMPORD_SPD, A_VCMPEQ_USPD,
+    A_VCMPNGE_UQPD, A_VCMPNGT_UQPD, A_VCMPFALSE_OSPD, A_VCMPNEQ_OSPD, A_VCMPGE_OQPD,
+    A_VCMPGT_OQPD, A_VCMPTRUE_USPD, A_VCMPPD, A_VCMPPS, A_VCMPSD, A_VCMPSS, A_VCOMISD,
+    A_VCOMISS, A_VCVTDQ2PD, A_VCVTDQ2PS, A_VCVTPD2DQ, A_VCVTPD2PS, A_VCVTPS2DQ,
+    A_VCVTPS2PD, A_VCVTSD2SI, A_VCVTSD2SS, A_VCVTSI2SD, A_VCVTSI2SS, A_VCVTSS2SD,
+    A_VCVTSS2SI, A_VCVTTPD2DQ, A_VCVTTPS2DQ, A_VCVTTSD2SI, A_VCVTTSS2SI, A_VDIVPD,
+    A_VDIVPS, A_VDIVSD, A_VDIVSS, A_VDPPD, A_VDPPS, A_VEXTRACTF128, A_VEXTRACTPS,
+    A_VHADDPD, A_VHADDPS, A_VHSUBPD, A_VHSUBPS, A_VINSERTF128, A_VINSERTPS, A_VLDDQU,
+    A_VLDMXCSR, A_VMASKMOVDQU, A_VMASKMOVPD, A_VMASKMOVPS, A_VMAXPD, A_VMAXPS,
+    A_VMAXSD, A_VMAXSS, A_VMINPD, A_VMINPS, A_VMINSD, A_VMINSS, A_VMOVAPD, A_VMOVAPS,
+    A_VMOVD, A_VMOVDDUP, A_VMOVDQA, A_VMOVDQU, A_VMOVHLPS, A_VMOVHPD, A_VMOVHPS,
+    A_VMOVLHPS, A_VMOVLPD, A_VMOVLPS, A_VMOVMSKPD, A_VMOVMSKPS, A_VMOVNTDQ,
+    A_VMOVNTDQA, A_VMOVNTPD, A_VMOVNTPS, A_VMOVQ, A_VMOVSD, A_VMOVSHDUP, A_VMOVSLDUP,
+    A_VMOVSS, A_VMOVUPD, A_VMOVUPS, A_VMPSADBW, A_VMULPD, A_VMULPS, A_VMULSD,
+    A_VMULSS, A_VORPD, A_VORPS, A_VPABSB, A_VPABSD, A_VPABSW, A_VPACKSSDW,
+    A_VPACKSSWB, A_VPACKUSDW, A_VPACKUSWB, A_VPADDB, A_VPADDD, A_VPADDQ, A_VPADDSB,
+    A_VPADDSW, A_VPADDUSB, A_VPADDUSW, A_VPADDW, A_VPALIGNR, A_VPAND, A_VPANDN,
+    A_VPAVGB, A_VPAVGW, A_VPBLENDVB, A_VPBLENDW, A_VPCLMULQDQ, A_VPCMPEQB, A_VPCMPEQD,
+    A_VPCMPEQQ, A_VPCMPEQW, A_VPCMPESTRI, A_VPCMPESTRM, A_VPCMPGTB, A_VPCMPGTD,
+    A_VPCMPGTQ, A_VPCMPGTW, A_VPCMPISTRI, A_VPCMPISTRM, A_VPERM2F128, A_VPERMILPD,
+    A_VPERMILPS, A_VPEXTRB, A_VPEXTRD, A_VPEXTRQ, A_VPEXTRW, A_VPHADDD, A_VPHADDSW,
+    A_VPHADDW, A_VPHMINPOSUW, A_VPHSUBD, A_VPHSUBSW, A_VPHSUBW, A_VPINSRB, A_VPINSRD,
+    A_VPINSRQ, A_VPINSRW, A_VPMADDUBSW, A_VPMADDWD, A_VPMAXSB, A_VPMAXSD, A_VPMAXSW,
+    A_VPMAXUB, A_VPMAXUD, A_VPMAXUW, A_VPMINSB, A_VPMINSD, A_VPMINSW, A_VPMINUB,
+    A_VPMINUD, A_VPMINUW, A_VPMOVMSKB, A_VPMOVSXBD, A_VPMOVSXBQ, A_VPMOVSXBW,
+    A_VPMOVSXDQ, A_VPMOVSXWD, A_VPMOVSXWQ, A_VPMOVZXBD, A_VPMOVZXBQ, A_VPMOVZXBW,
+    A_VPMOVZXDQ, A_VPMOVZXWD, A_VPMOVZXWQ, A_VPMULDQ, A_VPMULHRSW, A_VPMULHUW,
+    A_VPMULHW, A_VPMULLD, A_VPMULLW, A_VPMULUDQ, A_VPOR, A_VPSADBW, A_VPSHUFB,
+    A_VPSHUFD, A_VPSHUFHW, A_VPSHUFLW, A_VPSIGNB, A_VPSIGND, A_VPSIGNW, A_VPSLLD,
+    A_VPSLLDQ, A_VPSLLQ, A_VPSLLW, A_VPSRAD, A_VPSRAW, A_VPSRLD, A_VPSRLDQ, A_VPSRLQ,
+    A_VPSRLW, A_VPSUBB, A_VPSUBD, A_VPSUBQ, A_VPSUBSB, A_VPSUBSW, A_VPSUBUSB,
+    A_VPSUBUSW, A_VPSUBW, A_VPTEST, A_VPUNPCKHBW, A_VPUNPCKHDQ, A_VPUNPCKHQDQ,
+    A_VPUNPCKHWD, A_VPUNPCKLBW, A_VPUNPCKLDQ, A_VPUNPCKLQDQ, A_VPUNPCKLWD, A_VPXOR,
+    A_VRCPPS, A_VRCPSS, A_VROUNDPD, A_VROUNDPS, A_VROUNDSD, A_VROUNDSS, A_VRSQRTPS,
+    A_VRSQRTSS, A_VSHUFPD, A_VSHUFPS, A_VSQRTPD, A_VSQRTPS, A_VSQRTSD, A_VSQRTSS,
+    A_VSTMXCSR, A_VSUBPD, A_VSUBPS, A_VSUBSD, A_VSUBSS, A_VTESTPD, A_VTESTPS,
+    A_VUCOMISD, A_VUCOMISS, A_VUNPCKHPD, A_VUNPCKHPS, A_VUNPCKLPD, A_VUNPCKLPS,
+    A_VXORPD, A_VXORPS, A_VZEROALL, A_VZEROUPPER, A_ANDN, A_BEXTR, A_TZCNT, A_BZHI,
+    A_MULX, A_PDEP, A_PEXT, A_RORX, A_SARX, A_SHLX, A_SHRX, A_VBROADCASTI128,
+    A_VEXTRACTI128, A_VINSERTI128, A_VPBLENDD, A_VPBROADCASTB, A_VPBROADCASTD,
+    A_VPBROADCASTQ, A_VPBROADCASTW, A_VPERM2I128, A_VPERMD);
+
+const
+  ExtremeRange1Expected: array[0..1023] of Byte = (
+    $00, $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 0 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 16 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 32 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 48 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 64 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 80 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 96 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 112 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 128 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $09, { 144 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 160 }
+    $00, $00, $00, $00, $00, $00, $00, $02, $00, $00, $00, $08, $00, $00, $03, $03, { 176 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 192 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 208 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 224 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 240 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 256 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 272 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 288 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $0B, $00, $00, $00, $00, { 304 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $0B, $00, $00, $00, $00, $00, $00, { 320 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $0A, $00, $00, $00, $00, $00, { 336 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 352 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $0C, $00, $00, $00, $00, $00, $00, { 368 }
+    $00, $00, $07, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 384 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 400 }
+    $00, $00, $00, $00, $00, $05, $00, $00, $00, $00, $00, $00, $08, $05, $00, $07, { 416 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 432 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 448 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 464 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 480 }
+    $07, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 496 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 512 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $05, $00, $00, $00, $05, { 528 }
+    $00, $07, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 544 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 560 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 576 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 592 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 608 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 624 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 640 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 656 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $00, $00, $00, $00, { 672 }
+    $00, $00, $00, $00, $00, $00, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, { 688 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 704 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 720 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 736 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 752 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 768 }
+    $00, $00, $00, $00, $00, $00, $00, $06, $06, $00, $00, $00, $00, $00, $00, $00, { 784 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 800 }
+    $04, $04, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 816 }
+    $00, $00, $00, $08, $00, $00, $08, $04, $04, $00, $00, $00, $06, $06, $06, $06, { 832 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 848 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 864 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 880 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 896 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 912 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 928 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 944 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 960 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $00, { 976 }
+    $00, $00, $00, $00, $00, $00, $00, $06, $06, $00, $00, $00, $00, $00, $00, $00, { 992 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00  { 1008 }
+  );
+
+  ExtremeRange2Expected: array[0..1023] of Byte = (
+    $00, $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 0 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 16 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 32 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 48 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 64 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 80 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 96 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 112 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 128 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $09, { 144 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 160 }
+    $00, $00, $00, $00, $00, $00, $00, $02, $00, $00, $00, $26, $00, $00, $0D, $03, { 176 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 192 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 208 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 224 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 240 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 256 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 272 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 288 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $0B, $00, $00, $00, $00, { 304 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $27, $00, $00, $00, $00, $00, $00, { 320 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $0A, $00, $00, $00, $00, $00, { 336 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 352 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $0C, $00, $00, $00, $00, $00, $00, { 368 }
+    $00, $00, $07, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 384 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 400 }
+    $00, $00, $00, $00, $00, $12, $00, $00, $00, $00, $00, $00, $08, $05, $00, $22, { 416 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 432 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 448 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 464 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 480 }
+    $23, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 496 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 512 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $11, $00, $00, $00, $13, { 528 }
+    $00, $21, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 544 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 560 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 576 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 592 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 608 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 624 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 640 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 656 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $1A, $1B, $00, $00, $00, $00, { 672 }
+    $00, $00, $00, $00, $00, $00, $1C, $1D, $00, $00, $00, $00, $00, $00, $00, $00, { 688 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 704 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 720 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 736 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 752 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 768 }
+    $00, $00, $00, $00, $00, $00, $00, $14, $15, $00, $00, $00, $00, $00, $00, $00, { 784 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 800 }
+    $0F, $0E, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 816 }
+    $00, $00, $00, $24, $00, $00, $25, $04, $10, $00, $00, $00, $18, $19, $1E, $1F, { 832 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 848 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 864 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 880 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 896 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 912 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 928 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 944 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 960 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $16, $17, $00, { 976 }
+    $00, $00, $00, $00, $00, $00, $00, $20, $06, $00, $00, $00, $00, $00, $00, $00, { 992 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00  { 1008 }
+  );
+
+  ExtremeRange3Expected: array[0..1023] of Byte = (
+    $00, $00, $44, $01, $3F, $40, $00, $00, $00, $41, $42, $00, $00, $00, $00, $00, { 0 }
+    $00, $00, $00, $45, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 16 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 32 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 48 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 64 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 80 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 96 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 112 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 128 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $09, { 144 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 160 }
+    $00, $00, $00, $00, $00, $00, $00, $02, $00, $00, $00, $26, $00, $00, $0D, $03, { 176 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 192 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 208 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 224 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 240 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 256 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 272 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 288 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $0B, $00, $00, $00, $00, { 304 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $27, $00, $00, $00, $00, $00, $00, { 320 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $0A, $00, $00, $00, $00, $00, { 336 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 352 }
+    $00, $43, $00, $00, $00, $00, $00, $00, $00, $0C, $00, $00, $00, $00, $00, $00, { 368 }
+    $00, $00, $07, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 384 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 400 }
+    $00, $00, $00, $00, $00, $12, $00, $00, $00, $00, $00, $00, $08, $05, $00, $22, { 416 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 432 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 448 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 464 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 480 }
+    $23, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 496 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 512 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $11, $00, $00, $00, $13, { 528 }
+    $00, $21, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 544 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 560 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 576 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 592 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $33, $34, $00, $00, $00, { 608 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 624 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 640 }
+    $00, $00, $00, $2E, $2F, $30, $31, $32, $00, $00, $00, $00, $00, $00, $00, $00, { 656 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $2C, $2D, $1A, $1B, $00, $00, $35, $36, { 672 }
+    $37, $38, $39, $3A, $00, $00, $1C, $1D, $00, $00, $00, $00, $29, $00, $00, $00, { 688 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 704 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 720 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 736 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 752 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 768 }
+    $00, $00, $00, $00, $00, $00, $00, $14, $15, $00, $00, $00, $00, $00, $00, $00, { 784 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 800 }
+    $0F, $0E, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 816 }
+    $00, $00, $00, $24, $00, $00, $25, $04, $10, $00, $00, $00, $18, $19, $1E, $1F, { 832 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 848 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 864 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 880 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 896 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 912 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $3B, $3C, $3D, $3E, $00, $00, $00, { 928 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 944 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, { 960 }
+    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $16, $17, $00, { 976 }
+    $00, $00, $00, $00, $00, $00, $00, $20, $06, $00, $00, $00, $00, $00, $00, $28, { 992 }
+    $00, $00, $00, $00, $46, $47, $2A, $00, $00, $00, $00, $00, $00, $00, $00, $2B  { 1008 }
+  );
+
+{ TTestAncestor }
+type
+  TTestAncestor = class
+    private
+      FStartTime: Real;
+      FEndTime: Real;
+      FAvgTime: Real;
+      procedure SetStartTime;
+      procedure SetEndTime;
+    protected
+      procedure DoTestIteration(Iteration: Integer); virtual; abstract;
+    public
+      constructor Create; virtual;
+      destructor Destroy; override;
+      procedure Run;
+      function TestTitle: shortstring; virtual; abstract;
+      function WriteResults: Boolean; virtual; abstract;
+      property RunTime: Real read FAvgTime;
+  end;
+
+  TTestClass = class of TTestAncestor;
+
+  TByteTest = class(TTestAncestor)
+    protected
+      FResultStorage: array[Byte] of Byte;
+  end;
+
+  TWordTest = class(TTestAncestor)
+    protected
+      FResultStorage: array[Word] of Byte;
+  end;
+
+  TMappedTest = class(TByteTest)
+    protected
+      procedure DoMapping(Index, Input: Integer); virtual; abstract;
+  end;
+
+  TCompleteByteRange = class(TMappedTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+      procedure DoMapping(Index, Input: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TCompleteByteRangeFirstWeighted = class(TCompleteByteRange)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TCompleteByteRangeLastWeighted = class(TCompleteByteRange)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TAlmostFullByteRange = class(TMappedTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+      procedure DoMapping(Index, Input: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TAlmostFullByteRangeFirstWeighted = class(TAlmostFullByteRange)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TAlmostFullByteRangeLastWeighted = class(TAlmostFullByteRange)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSingleEntryWithDefault = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSingleEntryWithDefaultUnlikely = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSingleEntryWithDefaultWeighted = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSingleEntryWithElse = class(TSingleEntryWithDefault)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+  end;
+
+  TSingleEntryWithElseUnlikely = class(TSingleEntryWithDefaultUnlikely)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+  end;
+
+  TSingleEntryWithElseWeighted = class(TSingleEntryWithDefaultWeighted)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+  end;
+
+  TSingleEntryAtZeroWithElse = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSingleEntryAtMinus1WithDefault = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSingleEntryAtMinus4WithElse = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSingleEntryWith0To5RangeWithElse = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSingleEntryWith0To50RangeWithElse = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSingleEntryWith1To5RangeWithElse = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSingleEntryWith1To50RangeWithElse = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSingleEntryWithMinus1To5RangeWithElse = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSingleEntryWithMinus1To50RangeWithElse = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TExtremeRange1 = class(TWordTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TExtremeRange2 = class(TWordTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TExtremeRange3 = class(TWordTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TExtremeRange4 = class(TWordTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSparseDataTest1 = class(TWordTest)
+    protected
+      procedure DoCaseBlock(Index: Integer; Input: TInstructionSet); inline;
+  end;
+
+  TSparseDataEqual1 = class(TSparseDataTest1)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSparseDataMOVWeighted1 = class(TSparseDataTest1)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSparseDataMidpointWeighted1 = class(TSparseDataTest1)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSparseDataTest2 = class(TWordTest)
+    protected
+      procedure DoCaseBlock(Index: Integer; Input: TInstructionSet); inline;
+  end;
+
+  TSparseDataEqual2 = class(TSparseDataTest2)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSparseDataMOVWeighted2 = class(TSparseDataTest2)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSparseDataMidpointWeighted2 = class(TSparseDataTest2)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSparseDataTest3 = class(TWordTest)
+    protected
+      procedure DoCaseBlock(Index: Integer; Input: TInstructionSet); inline;
+  end;
+
+  TSparseDataEqual3 = class(TSparseDataTest3)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSparseDataMOVWeighted3 = class(TSparseDataTest3)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TSparseDataMidpointWeighted3 = class(TSparseDataTest3)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TLinearListDependsOnInput = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+  TCStyleCascade = class(TByteTest)
+    protected
+      procedure DoTestIteration(Iteration: Integer); override;
+    public
+      function TestTitle: shortstring; override;
+      function WriteResults: Boolean; override;
+  end;
+
+{ TTestAncestor }
+constructor TTestAncestor.Create;
+  begin
+    FStartTime := 0;
+    FEndTime := 0;
+    FAvgTime := 0;
+  end;
+
+destructor TTestAncestor.Destroy;
+  begin
+    inherited Destroy;
+  end;
+
+procedure TTestAncestor.SetStartTime;
+  begin
+    FStartTime := GetRealTime();
+  end;
+
+procedure TTestAncestor.SetEndTime;
+  begin
+    FEndTime := GetRealTime();
+    if FEndTime < FStartTime then { Happens if the test runs past midnight }
+      FEndTime := FEndTime + 86400.0;
+  end;
+
+procedure TTestAncestor.Run;
+  var
+    X: Integer;
+  begin
+    SetStartTime;
+    for X := 0 to ITERATIONS - 1 do
+      DoTestIteration(X);
+
+    SetEndTime;
+
+    FAvgTime := FEndTime - FStartTime;
+  end;
+
+{ TCompleteByteRange }
+function TCompleteByteRange.TestTitle: shortstring;
+  begin
+    Result := 'Byte domain, entirely covered; equal polling';
+  end;
+
+function TCompleteByteRange.WriteResults: Boolean;
+  var
+    X: Byte;
+  begin
+    Result := True;
+
+    for X := 0 to 255 do
+      if FResultStorage[X] <> AES_S_Box[X] then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(AES_S_Box[X], 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TCompleteByteRange.DoMapping(Index, Input: Integer);
+  begin
+    case Input of
+      { First row of S-Box (except zero) }
+      $00: FResultStorage[Index] := $63;
+      $01: FResultStorage[Index] := $7c;
+      $02: FResultStorage[Index] := $77;
+      $03: FResultStorage[Index] := $7b;
+      $04: FResultStorage[Index] := $f2;
+      $05: FResultStorage[Index] := $6b;
+      $06: FResultStorage[Index] := $6f;
+      $07: FResultStorage[Index] := $c5;
+      $08: FResultStorage[Index] := $30;
+      $09: FResultStorage[Index] := $01;
+      $0A: FResultStorage[Index] := $67;
+      $0B: FResultStorage[Index] := $2b;
+      $0C: FResultStorage[Index] := $fe;
+      $0D: FResultStorage[Index] := $d7;
+      $0E: FResultStorage[Index] := $ab;
+      $0F: FResultStorage[Index] := $76;
+      {Last row of S-Box }
+      $F0: FResultStorage[Index] := $8c;
+      $F1: FResultStorage[Index] := $a1;
+      $F2: FResultStorage[Index] := $89;
+      $F3: FResultStorage[Index] := $0d;
+      $F4: FResultStorage[Index] := $bf;
+      $F5: FResultStorage[Index] := $e6;
+      $F6: FResultStorage[Index] := $42;
+      $F7: FResultStorage[Index] := $68;
+      $F8: FResultStorage[Index] := $41;
+      $F9: FResultStorage[Index] := $99;
+      $FA: FResultStorage[Index] := $2d;
+      $FB: FResultStorage[Index] := $0f;
+      $FC: FResultStorage[Index] := $b0;
+      $FD: FResultStorage[Index] := $54;
+      $FE: FResultStorage[Index] := $bb;
+      $FF: FResultStorage[Index] := $16;
+      { Everything else }
+      $10..$EF: FResultStorage[Index] := AES_S_Box[Input];
+    end;
+  end;
+
+procedure TCompleteByteRange.DoTestIteration(Iteration: Integer);
+  var
+    Input: Byte;
+  begin
+    Input := Iteration and $FF;
+    DoMapping(Input, Input);
+  end;
+
+{ TCompleteByteRangeFirstWeighted }
+
+function TCompleteByteRangeFirstWeighted.TestTitle: shortstring;
+  begin
+    Result := 'Byte domain, entirely covered; first weighted';
+  end;
+
+function TCompleteByteRangeFirstWeighted.WriteResults: Boolean;
+  var
+    X: Byte;
+  begin
+    Result := True;
+
+    for X := 0 to 255 do
+      if FResultStorage[X] <> FirstWeighted[X] then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(FirstWeighted[X], 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TCompleteByteRangeFirstWeighted.DoTestIteration(Iteration: Integer);
+  var
+    Input: Byte;
+  begin
+    Input := Iteration and $FF;
+    if Input < $C0 then
+      DoMapping(Input, 0)
+    else
+      DoMapping(Input, Input);
+  end;
+
+{ TCompleteByteRangeLastWeighted }
+
+function TCompleteByteRangeLastWeighted.TestTitle: shortstring;
+  begin
+    Result := 'Byte domain, entirely covered; last weighted';
+  end;
+
+function TCompleteByteRangeLastWeighted.WriteResults: Boolean;
+  var
+    X: Byte;
+  begin
+    Result := True;
+
+    for X := 0 to 255 do
+      if FResultStorage[X] <> LastWeighted[X] then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(LastWeighted[X], 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TCompleteByteRangeLastWeighted.DoTestIteration(Iteration: Integer);
+  var
+    Input: Byte;
+  begin
+    Input := Iteration and $FF;
+    if Input < $C0 then
+      DoMapping(Input, $FF)
+    else
+      DoMapping(Input, Input);
+  end;
+
+{ TAlmostFullByteRange }
+
+function TAlmostFullByteRange.TestTitle: shortstring;
+  begin
+    Result := 'Byte domain, almost entirely covered; equal polling';
+  end;
+
+function TAlmostFullByteRange.WriteResults: Boolean;
+  var
+    X: Byte;
+  begin
+    Result := True;
+
+    for X := 0 to 255 do
+      if FResultStorage[X] <> AlmostFullExpected[X] then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(AlmostFullExpected[X], 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TAlmostFullByteRange.DoMapping(Index, Input: Integer);
+  begin
+    case Input of
+      { First row of S-Box }
+      $00: FResultStorage[Index] := $63;
+      $01: FResultStorage[Index] := $7c;
+      $02: FResultStorage[Index] := $77;
+      $03: FResultStorage[Index] := $7b;
+      $04: FResultStorage[Index] := $f2;
+      $05: FResultStorage[Index] := $6b;
+      $06: FResultStorage[Index] := $6f;
+      $07: FResultStorage[Index] := $c5;
+      $08: FResultStorage[Index] := $30;
+      $09: FResultStorage[Index] := $01;
+      $0A: FResultStorage[Index] := $67;
+      $0B: FResultStorage[Index] := $2b;
+      $0C: FResultStorage[Index] := $fe;
+      $0D: FResultStorage[Index] := $d7;
+      $0E: FResultStorage[Index] := $ab;
+      $0F: FResultStorage[Index] := $76;
+      { Other rows }
+      $10..$3F: FResultStorage[Index] := AES_S_Box[Input];
+      $60..$FF: FResultStorage[Index] := AES_S_Box[Input];
+      { Zeroed rows }
+      else FResultStorage[Index] := $00;
+    end;
+  end;
+
+procedure TAlmostFullByteRange.DoTestIteration(Iteration: Integer);
+  var
+    Input: Byte;
+  begin
+    Input := Iteration and $FF;
+    DoMapping(Input, Input);
+  end;
+
+{ TAlmostFullByteRangeFirstWeighted }
+
+function TAlmostFullByteRangeFirstWeighted.TestTitle: shortstring;
+  begin
+    Result := 'Byte domain, almost entirely covered; first weighted';
+  end;
+
+function TAlmostFullByteRangeFirstWeighted.WriteResults: Boolean;
+  var
+    X: Byte;
+  begin
+    Result := True;
+
+    for X := 0 to 255 do
+      if FResultStorage[X] <> FirstWeighted[X] then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(FirstWeighted[X], 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TAlmostFullByteRangeFirstWeighted.DoTestIteration(Iteration: Integer);
+  var
+    Input: Byte;
+  begin
+    Input := Iteration and $FF;
+    if Input < $C0 then
+      DoMapping(Input, 0)
+    else
+      DoMapping(Input, Input);
+  end;
+
+{ TAlmostFullByteRangeLastWeighted }
+
+function TAlmostFullByteRangeLastWeighted.TestTitle: shortstring;
+  begin
+    Result := 'Byte domain, almost entirely covered; last weighted';
+  end;
+
+function TAlmostFullByteRangeLastWeighted.WriteResults: Boolean;
+  var
+    X: Byte;
+  begin
+    Result := True;
+
+    for X := 0 to 255 do
+      if FResultStorage[X] <> LastWeighted[X] then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(LastWeighted[X], 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TAlmostFullByteRangeLastWeighted.DoTestIteration(Iteration: Integer);
+  var
+    Input: Byte;
+  begin
+    Input := Iteration and $FF;
+    if Input < $C0 then
+      DoMapping(Input, $FF)
+    else
+      DoMapping(Input, Input);
+  end;
+
+{ TSingleEntryWithDefault }
+function TSingleEntryWithDefault.TestTitle: shortstring;
+  begin
+    Result := 'Single entry with default value; 1/256 match chance';
+  end;
+
+function TSingleEntryWithDefault.WriteResults: Boolean;
+  var
+    X: Byte;
+  begin
+    Result := True;
+
+    for X := 0 to 255 do
+      if FResultStorage[X] <> IIf(X = 71, 1, 0) then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(IIf(X = 71, 1, 0), 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TSingleEntryWithDefault.DoTestIteration(Iteration: Integer);
+  var
+    Index: Byte;
+  begin
+    Index := Iteration and $FF;
+    FResultStorage[Index] := 0;
+    case Index of
+      71: FResultStorage[Index] := 1;
+    end;
+  end;
+
+{ TSingleEntryWithDefaultUnlikely }
+
+function TSingleEntryWithDefaultUnlikely.TestTitle: shortstring;
+  begin
+    Result := 'Single entry with default value; 75% match chance';
+  end;
+
+function TSingleEntryWithDefaultUnlikely.WriteResults: Boolean;
+  var
+    X: Byte;
+  begin
+    Result := True;
+
+    for X := 0 to 255 do
+      if FResultStorage[X] <> IIf(((X and $2) shr 1) or (X and $1) = 1, 1, 0) then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(IIf(((X and $2) shr 1) or (X and $1) = 1, 1, 0), 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TSingleEntryWithDefaultUnlikely.DoTestIteration(Iteration: Integer);
+  var
+    Index: Byte;
+  begin
+    Index := Iteration and $FF;
+    FResultStorage[Index] := 0;
+    case ((Index and $2) shr 1) or (Index and $1) of
+      1: FResultStorage[Index] := 1;
+    end;
+  end;
+
+{ TSingleEntryWithDefaultWeighted }
+
+function TSingleEntryWithDefaultWeighted.TestTitle: shortstring;
+  begin
+    Result := 'Single entry with default value; 25% match chance';
+  end;
+
+function TSingleEntryWithDefaultWeighted.WriteResults: Boolean;
+  var
+    X: Byte;
+  begin
+    Result := True;
+
+    for X := 0 to 255 do
+      if FResultStorage[X] <> IIf(((X and $2) shr 1) and (X and $1) = 1, 1, 0) then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(IIf(((X and $2) shr 1) and (X and $1) = 1, 1, 0), 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TSingleEntryWithDefaultWeighted.DoTestIteration(Iteration: Integer);
+  var
+    Index: Byte;
+  begin
+    Index := Iteration and $FF;
+    FResultStorage[Index] := 0;
+    case ((Index and $2) shr 1) and (Index and $1) of
+      1: FResultStorage[Index] := 1;
+    end;
+  end;
+
+{ TSingleEntryWithElse }
+function TSingleEntryWithElse.TestTitle: shortstring;
+  begin
+    Result := 'Single entry with else block; 1/256 match chance';
+  end;
+
+procedure TSingleEntryWithElse.DoTestIteration(Iteration: Integer);
+  var
+    Index: Byte;
+  begin
+    Index := Iteration and $FF;
+    { This helps catch errors where all branches, including else, are skipped }
+    FResultStorage[Index] := $FF;
+    case Index of
+      71: FResultStorage[Index] := 1;
+      else FResultStorage[Index] := 0;
+    end;
+  end;
+
+{ TSingleEntryWithElseUnlikely }
+function TSingleEntryWithElseUnlikely.TestTitle: shortstring;
+  begin
+    Result := 'Single entry with else block; 75% match chance';
+  end;
+
+procedure TSingleEntryWithElseUnlikely.DoTestIteration(Iteration: Integer);
+  var
+    Index: Byte;
+  begin
+    Index := Iteration and $FF;
+    { This helps catch errors where all branches, including else, are skipped }
+    FResultStorage[Index] := $FF;
+    case ((Index and $2) shr 1) or (Index and $1) of
+      1: FResultStorage[Index] := 1;
+      else FResultStorage[Index] := 0;
+    end;
+  end;
+
+{ TSingleEntryWithElseWeighted }
+
+function TSingleEntryWithElseWeighted.TestTitle: shortstring;
+  begin
+    Result := 'Single entry with else block; 25% match chance';
+  end;
+
+procedure TSingleEntryWithElseWeighted.DoTestIteration(Iteration: Integer);
+  var
+    Index: Byte;
+  begin
+    Index := Iteration and $FF;
+    { This helps catch errors where all branches, including else, are skipped }
+    FResultStorage[Index] := $FF;
+    case ((Index and $2) shr 1) and (Index and $1) of
+      1: FResultStorage[Index] := 1;
+      else FResultStorage[Index] := 0;
+    end;
+  end;
+
+{ TSingleEntryAtZeroWithElse }
+
+function TSingleEntryAtZeroWithElse.TestTitle: shortstring;
+  begin
+    Result := 'Single entry of "0:" and else block';
+  end;
+
+function TSingleEntryAtZeroWithElse.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+
+    if FResultStorage[0] <> 1 then
+      begin
+        WriteLn('FAIL - Index 0; expected $01 got $', hexstr(FResultStorage[0], 2));
+        Result := False;
+        Exit;
+      end;
+
+    for X := 1 to $FF do
+      if FResultStorage[X] <> 0 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TSingleEntryAtZeroWithElse.DoTestIteration(Iteration: Integer);
+  var
+    Index: Byte;
+  begin
+    Index := Iteration and $FF;
+    { This helps catch errors where all branches, including else, are skipped }
+    FResultStorage[Index] := $FF;
+    case Index of
+      0: FResultStorage[Index] := 1;
+      else FResultStorage[Index] := 0;
+    end;
+  end;
+
+{ TSingleEntryAtMinus1WithDefault }
+
+function TSingleEntryAtMinus1WithDefault.TestTitle: shortstring;
+  begin
+    Result := 'Single entry of "-1:" with default value';
+  end;
+
+function TSingleEntryAtMinus1WithDefault.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+
+    for X := 0 to $FE do
+      if FResultStorage[X] <> 0 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    if FResultStorage[255] <> 1 then
+      begin
+        WriteLn('FAIL - Index 255; expected $01 got $', hexstr(FResultStorage[0], 2));
+        Result := False;
+        Exit;
+      end;
+  end;
+
+procedure TSingleEntryAtMinus1WithDefault.DoTestIteration(Iteration: Integer);
+  var
+    Index: ShortInt;
+  begin
+    Index := ShortInt(Iteration and $FF);
+    FResultStorage[Byte(Index)] := 0;
+    case Index of
+      -1: FResultStorage[255] := 1;
+    end;
+  end;
+
+{ TSingleEntryAtMinus4WithElse }
+
+function TSingleEntryAtMinus4WithElse.TestTitle: shortstring;
+  begin
+    Result := 'Single entry of "-4:" and else block';
+  end;
+
+function TSingleEntryAtMinus4WithElse.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+    for X := 0 to 251 do
+      if FResultStorage[X] <> 0 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    if FResultStorage[252] <> 1 then
+      begin
+        WriteLn('FAIL - Index 0; expected $01 got $', hexstr(FResultStorage[252], 2));
+        Result := False;
+        Exit;
+      end;
+
+    for X := 253 to 255 do
+      if FResultStorage[X] <> 0 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TSingleEntryAtMinus4WithElse.DoTestIteration(Iteration: Integer);
+  var
+    Index: ShortInt;
+  begin
+    Index := ShortInt(Iteration and $FF);
+    { This helps catch errors where all branches, including else, are skipped }
+    FResultStorage[Byte(Index)] := $FF;
+    case Index of
+      -4: FResultStorage[Byte(Index)] := 1;
+      else FResultStorage[Byte(Index)] := 0;
+    end;
+  end;
+
+{ TSingleEntryWith0To5RangeWithElse }
+
+function TSingleEntryWith0To5RangeWithElse.TestTitle: shortstring;
+  begin
+    Result := 'Single entry of "0..5" and else block';
+  end;
+
+function TSingleEntryWith0To5RangeWithElse.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+
+    for X := 0 to 5 do
+      if FResultStorage[X] <> 1 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $01 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    for X := 6 to $FF do
+      if FResultStorage[X] <> 0 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TSingleEntryWith0To5RangeWithElse.DoTestIteration(Iteration: Integer);
+  var
+    Index: Byte;
+  begin
+    Index := Iteration and $FF;
+    { This helps catch errors where all branches, including else, are skipped }
+    FResultStorage[Index] := $FF;
+    case Index of
+      0..5: FResultStorage[Index] := 1;
+      else FResultStorage[Index] := 0;
+    end;
+  end;
+
+{ TSingleEntryWith0To50RangeWithElse }
+
+function TSingleEntryWith0To50RangeWithElse.TestTitle: shortstring;
+  begin
+    Result := 'Single entry of "0..50" and else block';
+  end;
+
+function TSingleEntryWith0To50RangeWithElse.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+
+    for X := 0 to 50 do
+      if FResultStorage[X] <> 1 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $01 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    for X := 51 to $FF do
+      if FResultStorage[X] <> 0 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TSingleEntryWith0To50RangeWithElse.DoTestIteration(Iteration: Integer);
+  var
+    Index: Byte;
+  begin
+    Index := Iteration and $FF;
+    { This helps catch errors where all branches, including else, are skipped }
+    FResultStorage[Index] := $FF;
+    case Index of
+      0..50: FResultStorage[Index] := 1;
+      else FResultStorage[Index] := 0;
+    end;
+  end;
+
+{ TSingleEntryWith1To5RangeWithElse }
+
+function TSingleEntryWith1To5RangeWithElse.TestTitle: shortstring;
+  begin
+    Result := 'Single entry of "1..5" and else block';
+  end;
+
+function TSingleEntryWith1To5RangeWithElse.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+    if FResultStorage[0] <> 0 then
+      begin
+        WriteLn('FAIL - Index 0; expected $00 got $', hexstr(FResultStorage[0], 2));
+        Result := False;
+        Exit;
+      end;
+
+    for X := 1 to 5 do
+      if FResultStorage[X] <> 1 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $01 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    for X := 6 to $FF do
+      if FResultStorage[X] <> 0 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TSingleEntryWith1To5RangeWithElse.DoTestIteration(Iteration: Integer);
+  var
+    Index: Byte;
+  begin
+    Index := Iteration and $FF;
+    { This helps catch errors where all branches, including else, are skipped }
+    FResultStorage[Index] := $FF;
+    case Index of
+      1..5: FResultStorage[Index] := 1;
+      else FResultStorage[Index] := 0;
+    end;
+  end;
+
+{ TSingleEntryWith1To50RangeWithElse }
+
+function TSingleEntryWith1To50RangeWithElse.TestTitle: shortstring;
+  begin
+    Result := 'Single entry of "1..50" and else block';
+  end;
+
+function TSingleEntryWith1To50RangeWithElse.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+    if FResultStorage[0] <> 0 then
+      begin
+        WriteLn('FAIL - Index 0; expected $00 got $', hexstr(FResultStorage[0], 2));
+        Result := False;
+        Exit;
+      end;
+
+    for X := 1 to 50 do
+      if FResultStorage[X] <> 1 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $01 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    for X := 51 to $FF do
+      if FResultStorage[X] <> 0 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TSingleEntryWith1To50RangeWithElse.DoTestIteration(Iteration: Integer);
+  var
+    Index: Byte;
+  begin
+    Index := Iteration and $FF;
+    { This helps catch errors where all branches, including else, are skipped }
+    FResultStorage[Index] := $FF;
+    case Index of
+      1..50: FResultStorage[Index] := 1;
+      else FResultStorage[Index] := 0;
+    end;
+  end;
+
+
+{ TSingleEntryWithMinus1To5RangeWithElse }
+
+function TSingleEntryWithMinus1To5RangeWithElse.TestTitle: shortstring;
+  begin
+    Result := 'Single entry of "-1..5" and else block';
+  end;
+
+function TSingleEntryWithMinus1To5RangeWithElse.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+    for X := 0 to 5 do
+      if FResultStorage[X] <> 1 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $01 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    for X := 6 to $FE do
+      if FResultStorage[X] <> 0 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    if FResultStorage[$FF] <> 1 then
+      begin
+        WriteLn('FAIL - Index 255; expected $00 got $', hexstr(FResultStorage[0], 2));
+        Result := False;
+        Exit;
+      end;
+  end;
+
+procedure TSingleEntryWithMinus1To5RangeWithElse.DoTestIteration(Iteration: Integer);
+  var
+    Index: ShortInt;
+  begin
+    Index := ShortInt(Iteration and $FF);
+    { This helps catch errors where all branches, including else, are skipped }
+    FResultStorage[Byte(Index)] := $FF;
+    case Index of
+      -1..5: FResultStorage[Byte(Index)] := 1;
+      else FResultStorage[Byte(Index)] := 0;
+    end;
+  end;
+
+{ TSingleEntryWithMinus1To50RangeWithElse }
+
+function TSingleEntryWithMinus1To50RangeWithElse.TestTitle: shortstring;
+  begin
+    Result := 'Single entry of "-1..50" and else block';
+  end;
+
+function TSingleEntryWithMinus1To50RangeWithElse.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+    for X := 0 to 50 do
+      if FResultStorage[X] <> 1 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $01 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    for X := 51 to $FE do
+      if FResultStorage[X] <> 0 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    if FResultStorage[$FF] <> 1 then
+      begin
+        WriteLn('FAIL - Index 255; expected $00 got $', hexstr(FResultStorage[0], 2));
+        Result := False;
+        Exit;
+      end;
+  end;
+
+procedure TSingleEntryWithMinus1To50RangeWithElse.DoTestIteration(Iteration: Integer);
+  var
+    Index: ShortInt;
+  begin
+    Index := ShortInt(Iteration and $FF);
+    { This helps catch errors where all branches, including else, are skipped }
+    FResultStorage[Byte(Index)] := $FF;
+    case Index of
+      -1..50: FResultStorage[Byte(Index)] := 1;
+      else FResultStorage[Byte(Index)] := 0;
+    end;
+  end;
+
+{ TExtremeRange1 }
+
+function TExtremeRange1.TestTitle: shortstring;
+  begin
+    Result := 'Two labels, one with extreme spread, equal polling';
+  end;
+
+function TExtremeRange1.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+
+    if FResultStorage[0] <> 1 then
+      begin
+        WriteLn('FAIL - Index 0; expected $01 got $', hexstr(FResultStorage[0], 2));
+        Result := False;
+        Exit;
+      end;
+
+    for X := 1 to $FFFE do
+      if FResultStorage[X] <> 2 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $02 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    if FResultStorage[65535] <> 0 then
+      begin
+        WriteLn('FAIL - Index 65535; expected $02 got $', hexstr(FResultStorage[65535], 2));
+        Result := False;
+        Exit;
+      end;
+  end;
+
+procedure TExtremeRange1.DoTestIteration(Iteration: Integer);
+  var
+    Index: Word;
+  begin
+    Index := Iteration and $FFFF;
+    FResultStorage[Index] := 0; { Covers $FFFF }
+    case Index of
+      0:
+        FResultStorage[Index] := 1;
+      1..$FFFE:
+        FResultStorage[Index] := 2;
+    end;
+  end;
+
+{ TExtremeRange2 }
+
+function TExtremeRange2.TestTitle: shortstring;
+  begin
+    Result := 'Two labels, one with extreme spread, 50% else chance';
+  end;
+
+function TExtremeRange2.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+
+    for X := 0 to $FFFF do
+      if FResultStorage[X] <> (X and $1) then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(X and $1, 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TExtremeRange2.DoTestIteration(Iteration: Integer);
+  var
+    Index, Input: Word;
+  begin
+{$push}
+{$r-}
+    Index := (Iteration and $FFFF);
+    Input := (Iteration and $1) - 1;
+{$pop}
+    FResultStorage[Index] := 0; { Covers $FFFF }
+    case Input of
+      0..$FFFD:
+        FResultStorage[Index] := 1;
+      $FFFE:
+        FResultStorage[Index] := 2;
+    end;
+  end;
+
+{ TExtremeRange3 }
+
+function TExtremeRange3.TestTitle: shortstring;
+  begin
+    Result := 'Two labels, sparse values, equal polling across range';
+  end;
+
+function TExtremeRange3.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+
+    if FResultStorage[0] <> 1 then
+      begin
+        WriteLn('FAIL - Index 0; expected $01 got $', hexstr(FResultStorage[0], 2));
+        Result := False;
+        Exit;
+      end;
+
+    for X := 1 to $FFFE do
+      if FResultStorage[X] <> 2 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $02 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    if FResultStorage[65535] <> 0 then
+      begin
+        WriteLn('FAIL - Index 65535; expected $02 got $', hexstr(FResultStorage[65535], 2));
+        Result := False;
+        Exit;
+      end;
+  end;
+
+procedure TExtremeRange3.DoTestIteration(Iteration: Integer);
+  var
+    Index: Word;
+  begin
+    Index := Iteration and $FFFF;
+    FResultStorage[Index] := 2; { Covers 1..$FFFE }
+    case Index of
+      0:
+        FResultStorage[Index] := 1;
+      $FFFF:
+        FResultStorage[Index] := 0;
+    end;
+  end;
+
+{ TExtremeRange4 }
+
+function TExtremeRange4.TestTitle: shortstring;
+  begin
+    Result := 'Two labels, sparse values, always triggered';
+  end;
+
+function TExtremeRange4.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+
+    for X := 0 to $FFFF do
+      if FResultStorage[X] <> (X and $1) then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(X and $1, 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TExtremeRange4.DoTestIteration(Iteration: Integer);
+  var
+    Index, Input: Word;
+  begin
+{$push}
+{$r-}
+    Index := (Iteration and $FFFF);
+    Input := (Iteration and $1) - 1;
+{$pop}
+    FResultStorage[Index] := 2; { Covers 1..$FFFE }
+    case Input of
+      0:
+        FResultStorage[Index] := 1;
+      $FFFF:
+        FResultStorage[Index] := 0;
+    end;
+  end;
+
+{ TSparseDataTest1 }
+
+procedure TSparseDataTest1.DoCaseBlock(Index: Integer; Input: TInstructionSet);
+  begin
+    case Input of
+      A_AND:
+        FResultStorage[Index] := 1;
+      A_MOV:
+        FResultStorage[Index] := 2;
+      A_MOVSX,
+      A_MOVZX:
+        FResultStorage[Index] := 3;
+      A_VMOVAPS,
+      A_VMOVAPD,
+      A_VMOVUPS,
+      A_VMOVUPD:
+        FResultStorage[Index] := 4;
+      A_MOVAPD,
+      A_MOVAPS,
+      A_MOVUPD,
+      A_MOVUPS:
+        FResultStorage[Index] := 5;
+      A_VDIVSD,
+      A_VDIVSS,
+      A_VSUBSD,
+      A_VSUBSS,
+      A_VMULSD,
+      A_VMULSS,
+      A_VADDSD,
+      A_VADDSS,
+      A_VANDPD,
+      A_VANDPS,
+      A_VORPD,
+      A_VORPS,
+      A_VXORPD,
+      A_VXORPS:
+        FResultStorage[Index] := 6;
+      A_MULSD,
+      A_MULSS,
+      A_ADDSD,
+      A_ADDSS:
+        FResultStorage[Index] := 7;
+      A_VMOVSD,
+      A_VMOVSS,
+      A_MOVSD,
+      A_MOVSS:
+        FResultStorage[Index] := 8;
+      A_LEA:
+        FResultStorage[Index] := 9;
+      A_SUB:
+        FResultStorage[Index] := 10;
+      A_SHL,A_SAL:
+        FResultStorage[Index] := 11;
+      A_SETcc:
+        FResultStorage[Index] := 12;
+      else
+        FResultStorage[Index] := 0;
+    end;
+  end;
+
+{ TSparseDataEqual1 }
+
+function TSparseDataEqual1.TestTitle: shortstring;
+  begin
+    Result := 'Domain of 1024, 12 sparse labels, equal polling';
+  end;
+
+function TSparseDataEqual1.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+
+    for X := 0 to 1023 do
+      if FResultStorage[X] <> ExtremeRange1Expected[X] then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(ExtremeRange1Expected[X], 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TSparseDataEqual1.DoTestIteration(Iteration: Integer);
+  var
+    X: SmallInt;
+  begin
+    X := Iteration and 1023;
+    DoCaseBlock(X, TInstructionSet(X - 512))
+  end;
+
+{ TSparseDataMOVWeightedl }
+
+function TSparseDataMOVWeighted1.TestTitle: shortstring;
+  begin
+    Result := 'Domain of 1024, 12 sparse labels, 75% particular match';
+  end;
+
+function TSparseDataMOVWeighted1.WriteResults: Boolean;
+  var
+    X, Expected: Word;
+  begin
+    Result := True;
+
+    for X := 0 to 1023 do
+      begin
+        Expected := IIf((X and $3) = 0, ExtremeRange1Expected[X], 2);
+        if FResultStorage[X] <> Expected then
+          begin
+            WriteLn('FAIL - Index ', X, '; expected $', hexstr(Expected, 2), ' got $', hexstr(FResultStorage[X], 2));
+            Result := False;
+            Exit;
+          end;
+      end;
+  end;
+
+procedure TSparseDataMOVWeighted1.DoTestIteration(Iteration: Integer);
+  var
+    X: SmallInt; P: TInstructionSet;
+  begin
+    X := Iteration and 1023;
+    P := TInstructionSet(IIf((X and $3) = 0, X - 512, Ord(A_MOV)));
+    DoCaseBlock(X, P);
+  end;
+
+{ TSparseDataMidpointWeighted1 }
+
+function TSparseDataMidpointWeighted1.TestTitle: shortstring;
+  begin
+    Result := 'Domain of 1024, 12 sparse labels, 75% midpoint match';
+  end;
+
+function TSparseDataMidpointWeighted1.WriteResults: Boolean;
+  var
+    X, Expected: Word;
+  begin
+    Result := True;
+
+    for X := 0 to 1023 do
+      begin
+        Expected := IIf((X and $3) = 0, ExtremeRange1Expected[X], 6);
+        if FResultStorage[X] <> Expected then
+          begin
+            WriteLn('FAIL - Index ', X, '; expected $', hexstr(Expected, 2), ' got $', hexstr(FResultStorage[X], 2));
+            Result := False;
+            Exit;
+          end;
+      end;
+  end;
+
+procedure TSparseDataMidpointWeighted1.DoTestIteration(Iteration: Integer);
+  var
+    X: Word; P: TInstructionSet;
+  begin
+    X := Iteration and 1023;
+    P := TInstructionSet(IIf((X and $3) = 0, X - 512, Ord(A_VADDSD)));
+    DoCaseBlock(X, P);
+  end;
+
+{ TSparseDataTest2 }
+
+procedure TSparseDataTest2.DoCaseBlock(Index: Integer; Input: TInstructionSet);
+  begin
+    case Input of
+      A_AND:
+        FResultStorage[Index] := 1;
+      A_MOV:
+        FResultStorage[Index] := 2;
+      A_MOVSX:
+        FResultStorage[Index] := 13;
+      A_MOVZX:
+        FResultStorage[Index] := 3;
+      A_VMOVAPS:
+        FResultStorage[Index] := 14;
+      A_VMOVAPD:
+        FResultStorage[Index] := 15;
+      A_VMOVUPS:
+        FResultStorage[Index] := 16;
+      A_VMOVUPD:
+        FResultStorage[Index] := 4;
+      A_MOVAPD:
+        FResultStorage[Index] := 17;
+      A_MOVAPS:
+        FResultStorage[Index] := 18;
+      A_MOVUPD:
+        FResultStorage[Index] := 19;
+      A_MOVUPS:
+        FResultStorage[Index] := 5;
+      A_VDIVSD:
+        FResultStorage[Index] := 20;
+      A_VDIVSS:
+        FResultStorage[Index] := 21;
+      A_VSUBSD:
+        FResultStorage[Index] := 22;
+      A_VSUBSS:
+        FResultStorage[Index] := 23;
+      A_VMULSD:
+        FResultStorage[Index] := 24;
+      A_VMULSS:
+        FResultStorage[Index] := 25;
+      A_VADDSD:
+        FResultStorage[Index] := 26;
+      A_VADDSS:
+        FResultStorage[Index] := 27;
+      A_VANDPD:
+        FResultStorage[Index] := 28;
+      A_VANDPS:
+        FResultStorage[Index] := 29;
+      A_VORPD:
+        FResultStorage[Index] := 30;
+      A_VORPS:
+        FResultStorage[Index] := 31;
+      A_VXORPD:
+        FResultStorage[Index] := 32;
+      A_VXORPS:
+        FResultStorage[Index] := 6;
+      A_MULSD:
+        FResultStorage[Index] := 33;
+      A_MULSS:
+        FResultStorage[Index] := 34;
+      A_ADDSD:
+        FResultStorage[Index] := 35;
+      A_ADDSS:
+        FResultStorage[Index] := 7;
+      A_VMOVSD:
+        FResultStorage[Index] := 36;
+      A_VMOVSS:
+        FResultStorage[Index] := 37;
+      A_MOVSD:
+        FResultStorage[Index] := 38;
+      A_MOVSS:
+        FResultStorage[Index] := 8;
+      A_LEA:
+        FResultStorage[Index] := 9;
+      A_SUB:
+        FResultStorage[Index] := 10;
+      A_SHL:
+        FResultStorage[Index] := 39;
+      A_SAL:
+        FResultStorage[Index] := 11;
+      A_SETcc:
+        FResultStorage[Index] := 12;
+      else
+        FResultStorage[Index] := 0;
+    end;
+  end;
+
+{ TSparseDataEqual2 }
+
+function TSparseDataEqual2.TestTitle: shortstring;
+  begin
+    Result := 'Domain of 1024, 39 sparse labels, equal polling';
+  end;
+
+function TSparseDataEqual2.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+
+    for X := 0 to 1023 do
+      if FResultStorage[X] <> ExtremeRange2Expected[X] then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(ExtremeRange2Expected[X], 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TSparseDataEqual2.DoTestIteration(Iteration: Integer);
+  var
+    X: SmallInt;
+  begin
+    X := Iteration and 1023;
+    DoCaseBlock(X, TInstructionSet(X - 512))
+  end;
+
+{ TSparseDataMOVWeighted2 }
+
+function TSparseDataMOVWeighted2.TestTitle: shortstring;
+  begin
+    Result := 'Domain of 1024, 39 sparse labels, 75% particular match';
+  end;
+
+function TSparseDataMOVWeighted2.WriteResults: Boolean;
+  var
+    X, Expected: Word;
+  begin
+    Result := True;
+
+    for X := 0 to 1023 do
+      begin
+        Expected := IIf((X and $3) = 0, ExtremeRange2Expected[X], 2);
+        if FResultStorage[X] <> Expected then
+          begin
+            WriteLn('FAIL - Index ', X, '; expected $', hexstr(Expected, 2), ' got $', hexstr(FResultStorage[X], 2));
+            Result := False;
+            Exit;
+          end;
+      end;
+  end;
+
+procedure TSparseDataMOVWeighted2.DoTestIteration(Iteration: Integer);
+  var
+    X: SmallInt; P: TInstructionSet;
+  begin
+    X := Iteration and 1023;
+    P := TInstructionSet(IIf((X and $3) = 0, X - 512, Ord(A_MOV)));
+    DoCaseBlock(X, P);
+  end;
+
+{ TSparseDataMidpointWeighted2 }
+
+function TSparseDataMidpointWeighted2.TestTitle: shortstring;
+  begin
+    Result := 'Domain of 1024, 39 sparse labels, 75% midpoint match';
+  end;
+
+function TSparseDataMidpointWeighted2.WriteResults: Boolean;
+  var
+    X, Expected: Word;
+  begin
+    Result := True;
+
+    for X := 0 to 1023 do
+      begin
+        Expected := IIf((X and $3) = 0, ExtremeRange2Expected[X], 26);
+        if FResultStorage[X] <> Expected then
+          begin
+            WriteLn('FAIL - Index ', X, '; expected $', hexstr(Expected, 2), ' got $', hexstr(FResultStorage[X], 2));
+            Result := False;
+            Exit;
+          end;
+      end;
+  end;
+
+procedure TSparseDataMidpointWeighted2.DoTestIteration(Iteration: Integer);
+  var
+    X: SmallInt; P: TInstructionSet;
+  begin
+    X := Iteration and 1023;
+    P := TInstructionSet(IIf((X and $3) = 0, X - 512, Ord(A_VADDSD)));
+    DoCaseBlock(X, P);
+  end;
+
+{ TSparseDataTest3 }
+
+procedure TSparseDataTest3.DoCaseBlock(Index: Integer; Input: TInstructionSet);
+  begin
+    case Input of
+      A_AND:
+        FResultStorage[Index] := 1;
+      A_MOV:
+        FResultStorage[Index] := 2;
+      A_MOVSX:
+        FResultStorage[Index] := 13;
+      A_MOVZX:
+        FResultStorage[Index] := 3;
+      A_VMOVAPS:
+        FResultStorage[Index] := 14;
+      A_VMOVAPD:
+        FResultStorage[Index] := 15;
+      A_VMOVUPS:
+        FResultStorage[Index] := 16;
+      A_VMOVUPD:
+        FResultStorage[Index] := 4;
+      A_MOVAPD:
+        FResultStorage[Index] := 17;
+      A_MOVAPS:
+        FResultStorage[Index] := 18;
+      A_MOVUPD:
+        FResultStorage[Index] := 19;
+      A_MOVUPS:
+        FResultStorage[Index] := 5;
+      A_VDIVSD:
+        FResultStorage[Index] := 20;
+      A_VDIVSS:
+        FResultStorage[Index] := 21;
+      A_VSUBSD:
+        FResultStorage[Index] := 22;
+      A_VSUBSS:
+        FResultStorage[Index] := 23;
+      A_VMULSD:
+        FResultStorage[Index] := 24;
+      A_VMULSS:
+        FResultStorage[Index] := 25;
+      A_VADDSD:
+        FResultStorage[Index] := 26;
+      A_VADDSS:
+        FResultStorage[Index] := 27;
+      A_VANDPD:
+        FResultStorage[Index] := 28;
+      A_VANDPS:
+        FResultStorage[Index] := 29;
+      A_VORPD:
+        FResultStorage[Index] := 30;
+      A_VORPS:
+        FResultStorage[Index] := 31;
+      A_VXORPD:
+        FResultStorage[Index] := 32;
+      A_VXORPS:
+        FResultStorage[Index] := 6;
+      A_MULSD:
+        FResultStorage[Index] := 33;
+      A_MULSS:
+        FResultStorage[Index] := 34;
+      A_ADDSD:
+        FResultStorage[Index] := 35;
+      A_ADDSS:
+        FResultStorage[Index] := 7;
+      A_VMOVSD:
+        FResultStorage[Index] := 36;
+      A_VMOVSS:
+        FResultStorage[Index] := 37;
+      A_MOVSD:
+        FResultStorage[Index] := 38;
+      A_MOVSS:
+        FResultStorage[Index] := 8;
+      A_LEA:
+        FResultStorage[Index] := 9;
+      A_SUB:
+        FResultStorage[Index] := 10;
+      A_SHL:
+        FResultStorage[Index] := 39;
+      A_SAL:
+        FResultStorage[Index] := 11;
+      A_SETcc:
+        FResultStorage[Index] := 12;
+      A_MULX:
+        FResultStorage[Index] := 40;
+      A_VBROADCASTF128:
+        FResultStorage[Index] := 41;
+      A_VBROADCASTI128:
+        FResultStorage[Index] := 42;
+      A_VPERMD:
+        FResultStorage[Index] := 43;
+      A_VADDPD:
+        FResultStorage[Index] := 44;
+      A_VADDPS:
+        FResultStorage[Index] := 45;
+      A_ROUNDPS:
+        FResultStorage[Index] := 46;
+      A_ROUNDPD:
+        FResultStorage[Index] := 47;
+      A_ROUNDSS:
+        FResultStorage[Index] := 48;
+      A_ROUNDSD:
+        FResultStorage[Index] := 49;
+      A_CRC32:
+        FResultStorage[Index] := 50;
+      A_DPPS:
+        FResultStorage[Index] := 51;
+      A_DPPD:
+        FResultStorage[Index] := 52;
+      A_VAESDEC:
+        FResultStorage[Index] := 53;
+      A_VAESDECLAST:
+        FResultStorage[Index] := 54;
+      A_VAESENC:
+        FResultStorage[Index] := 55;
+      A_VAESENCLAST:
+        FResultStorage[Index] := 56;
+      A_VAESIMC:
+        FResultStorage[Index] := 57;
+      A_VAESKEYGENASSIST:
+        FResultStorage[Index] := 58;
+      A_VPSHUFB:
+        FResultStorage[Index] := 59;
+      A_VPSHUFD:
+        FResultStorage[Index] := 60;
+      A_VPSHUFHW:
+        FResultStorage[Index] := 61;
+      A_VPSHUFLW:
+        FResultStorage[Index] := 62;
+      A_BSF:
+        FResultStorage[Index] := 63;
+      A_BSR:
+        FResultStorage[Index] := 64;
+      A_BTR:
+        FResultStorage[Index] := 65;
+      A_BTS:
+        FResultStorage[Index] := 66;
+      A_XOR:
+        FResultStorage[Index] := 67;
+      A_ADD:
+        FResultStorage[Index] := 68;
+      A_CMP:
+        FResultStorage[Index] := 69;
+      A_SHLX:
+        FResultStorage[Index] := 70;
+      A_SHRX:
+        FResultStorage[Index] := 71;
+      else
+        FResultStorage[Index] := 0;
+    end;
+  end;
+
+{ TSparseDataEqual3 }
+
+function TSparseDataEqual3.TestTitle: shortstring;
+  begin
+    Result := 'Domain of 1024, 71 sparse labels, equal polling';
+  end;
+
+function TSparseDataEqual3.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+
+    for X := 0 to 1023 do
+      if FResultStorage[X] <> ExtremeRange3Expected[X] then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(ExtremeRange3Expected[X], 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TSparseDataEqual3.DoTestIteration(Iteration: Integer);
+  var
+    X: SmallInt;
+  begin
+    X := Iteration and 1023;
+    DoCaseBlock(X, TInstructionSet(X - 512))
+  end;
+
+{ TSparseDataMOVWeightedl }
+
+function TSparseDataMOVWeighted3.TestTitle: shortstring;
+  begin
+    Result := 'Domain of 1024, 71 sparse labels, 75% particular match';
+  end;
+
+function TSparseDataMOVWeighted3.WriteResults: Boolean;
+  var
+    X, Expected: Word;
+  begin
+    Result := True;
+
+    for X := 0 to 1023 do
+      begin
+        Expected := IIf((X and $3) = 0, ExtremeRange3Expected[X], 2);
+        if FResultStorage[X] <> Expected then
+          begin
+            WriteLn('FAIL - Index ', X, '; expected $', hexstr(Expected, 2), ' got $', hexstr(FResultStorage[X], 2));
+            Result := False;
+            Exit;
+          end;
+      end;
+  end;
+
+procedure TSparseDataMOVWeighted3.DoTestIteration(Iteration: Integer);
+  var
+    X: SmallInt; P: TInstructionSet;
+  begin
+    X := Iteration and 1023;
+    P := TInstructionSet(IIf((X and $3) = 0, X - 512, Ord(A_MOV)));
+    DoCaseBlock(X, P);
+  end;
+
+{ TSparseDataMidpointWeighted3 }
+
+function TSparseDataMidpointWeighted3.TestTitle: shortstring;
+  begin
+    Result := 'Domain of 1024, 71 sparse labels, 75% midpoint match';
+  end;
+
+function TSparseDataMidpointWeighted3.WriteResults: Boolean;
+  var
+    X, Expected: Word;
+  begin
+    Result := True;
+
+    for X := 0 to 1023 do
+      begin
+        Expected := IIf((X and $3) = 0, ExtremeRange3Expected[X], 26);
+        if FResultStorage[X] <> Expected then
+          begin
+            WriteLn('FAIL - Index ', X, '; expected $', hexstr(Expected, 2), ' got $', hexstr(FResultStorage[X], 2));
+            Result := False;
+            Exit;
+          end;
+      end;
+  end;
+
+procedure TSparseDataMidpointWeighted3.DoTestIteration(Iteration: Integer);
+  var
+    X: SmallInt; P: TInstructionSet;
+  begin
+    X := Iteration and 1023;
+    P := TInstructionSet(IIf((X and $3) = 0, X - 512, Ord(A_VADDSD)));
+    DoCaseBlock(X, P);
+  end;
+
+
+{ TLinearListDependsOnInput }
+
+function TLinearListDependsOnInput.TestTitle: shortstring;
+  begin
+    Result := 'Linear list depends on input';
+  end;
+
+function TLinearListDependsOnInput.WriteResults: Boolean;
+  var
+    X: Word;
+  begin
+    Result := True;
+    if FResultStorage[0] <> 0 then
+      begin
+        WriteLn('FAIL - Index 0; expected $00 got $', hexstr(FResultStorage[0], 2));
+        Result := False;
+        Exit;
+      end;
+
+    for X := 1 to 7 do
+      if FResultStorage[X] <> (X and $3) then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr(X and $3, 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    for X := 8 to 11 do
+      if FResultStorage[X] <> 0 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    if FResultStorage[12] <> $10 then
+      begin
+        WriteLn('FAIL - Index 12; expected $10 got $', hexstr(FResultStorage[12], 2));
+        Result := False;
+        Exit;
+      end;
+
+    for X := 13 to $FF do
+      if FResultStorage[X] <> 0 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TLinearListDependsOnInput.DoTestIteration(Iteration: Integer);
+  var
+    Index: Byte;
+  begin
+    Index := Iteration and $FF;
+    { This helps catch errors where all branches, including else, are skipped }
+    FResultStorage[Index] := $FF;
+    case Index of
+      1..3: FResultStorage[Index] := Index;
+      4..7: FResultStorage[Index] := Index - 4;
+      12:   FResultStorage[Index] := $10;
+      else  FResultStorage[Index] := 0;
+    end;
+  end;
+
+
+{ TCStyleCascade }
+
+function TCStyleCascade.TestTitle: shortstring;
+  begin
+    Result := 'C-style cascade using ''goto''';
+  end;
+
+function TCStyleCascade.WriteResults: Boolean;
+  var
+    X: Byte;
+  begin
+    Result := True;
+    for X := 0 to 5 do
+      if FResultStorage[X] <> ((1 shl X) - 1) then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $', hexstr((1 shl X) - 1, 2), ' got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+
+    for X := 6 to $FF do
+      if FResultStorage[X] <> 0 then
+        begin
+          WriteLn('FAIL - Index ', X, '; expected $00 got $', hexstr(FResultStorage[X], 2));
+          Result := False;
+          Exit;
+        end;
+  end;
+
+procedure TCStyleCascade.DoTestIteration(Iteration: Integer);
+  var
+    X, Tmp: Byte;
+  label
+    Set1, Set2, Set3, Set4, Default;
+  begin
+    X := Iteration and $FF;
+    Tmp := 0;
+    case X of
+      $1: goto Set1;
+      $2: goto Set2;
+      $3: goto Set3;
+      $4: goto Set4;
+      $5: Tmp := 16;
+    else
+      goto Default;
+    end;
+  Set4:
+    Tmp := Tmp or $8;
+  Set3:
+    Tmp := Tmp or $4;
+  Set2:
+    Tmp := Tmp or $2;
+  Set1:
+    Tmp := Tmp or $1;
+  Default:
+    FResultStorage[X] := Tmp;
+  end;
+
+
+{ Main function }
+const
+  { TCompleteByteRange and descendants
+      - Entirely-covered jump tree
+      - 33 labels, no else block; full coverage (all 256 byte values covered)
+        - Root: values are polled with equal probability
+        - FirstWeighted: first branch is polled 3 times as often
+        - LastWeighted: last branch is polled 3 times as often
+    TAlmostFullByteRange
+      - Almost full jump tree - 18 labels, else block covers 32 values; 224 byte values covered
+        - Root: values are polled with equal probability
+        - FirstWeighted: first branch is polled 3 times as often
+        - LastWeighted: last branch is polled 3 times as often
+  }
+
+  TestClasses: array[0..35] of TTestClass = (
+    TCompleteByteRange,
+    TCompleteByteRangeFirstWeighted,
+    TCompleteByteRangeLastWeighted,
+    TAlmostFullByteRange,
+    TAlmostFullByteRangeFirstWeighted,
+    TAlmostFullByteRangeLastWeighted,
+    TSingleEntryWithDefault,
+    TSingleEntryWithDefaultUnlikely,
+    TSingleEntryWithDefaultWeighted,
+    TSingleEntryWithElse,
+    TSingleEntryWithElseUnlikely,
+    TSingleEntryWithElseWeighted,
+    TSingleEntryAtZeroWithElse,
+    TSingleEntryAtMinus1WithDefault,
+    TSingleEntryAtMinus4WithElse,
+    TSingleEntryWith0To5RangeWithElse,
+    TSingleEntryWith0To50RangeWithElse,
+    TSingleEntryWith1To5RangeWithElse,
+    TSingleEntryWith1To50RangeWithElse,
+    TSingleEntryWithMinus1To5RangeWithElse,
+    TSingleEntryWithMinus1To50RangeWithElse,
+    TExtremeRange1,
+    TExtremeRange2,
+    TExtremeRange3,
+    TExtremeRange4,
+    TSparseDataEqual1,
+    TSparseDataMOVWeighted1,
+    TSparseDataMidpointWeighted1,
+    TSparseDataEqual2,
+    TSparseDataMOVWeighted2,
+    TSparseDataMidpointWeighted2,
+    TSparseDataEqual3,
+    TSparseDataMOVWeighted3,
+    TSparseDataMidpointWeighted3,
+    TLinearListDependsOnInput,
+    TCStyleCascade
+  );
+
+var
+  CurrentObject: TTestAncestor;
+  Failed: Boolean;
+  X: Integer;
+  SummedUpAverageDuration, AverageDuration : Double;
+begin
+  SummedUpAverageDuration := 0.0;
+  Failed := False;
+  WriteLn('Case node compilation and timing test');
+  WriteLn('-------------------------------------');
+  for X := low(TestClasses) to High(TestClasses) do
+    begin
+      try
+        CurrentObject := TestClasses[X].Create;
+        try
+          Write(CurrentObject.TestTitle:56, ' - ');
+          CurrentObject.Run;
+
+          if CurrentObject.WriteResults then
+            begin
+              AverageDuration := ((CurrentObject.RunTime * 1000000000.0) / ITERATIONS);
+              WriteLn('Pass - average iteration duration: ', AverageDuration:1:3, ' ns');
+              SummedUpAverageDuration := SummedUpAverageDuration + AverageDuration;
+            end
+          else
+            { Final average isn't processed if a test failed, so there's no need
+              to calculate and add the average duration to it }
+            Failed := True;
+
+        finally
+          CurrentObject.Free;
+        end;
+      except on E: Exception do
+        begin
+          WriteLn('Exception "', E.ClassName, '" raised while running test object of class "', TestClasses[X].ClassName, '"');
+          Failed := True;
+        end;
+      end;
+    end;
+
+  if Failed then
+    Halt(1);
+
+  WriteLn(#10'ok');
+  WriteLn('- Sum of average durations: ', SummedUpAverageDuration:1:3, ' ns');
+  WriteLn('- Overall average duration: ', (SummedUpAverageDuration / Length(TestClasses)):1:3, ' ns');
+end.