From 2415081164323ecb402926187b72ee59162c5bcd Mon Sep 17 00:00:00 2001
From: Remco <remco@dutchcoders.io>
Date: Wed, 25 May 2016 10:27:46 +0200
Subject: [PATCH] several fixes * moved files to suite * integrated @eke
 dictionaries * added arch support to fuzz.sh

---
 suite/afl/dict/arm64/arm64.dict |  59 +++
 suite/afl/dict/ppc64/ppc64.dict | 165 ++++++++
 suite/afl/dict/x64/x64.dict     | 716 ++++++++++++++++++++++++++++++++
 suite/afl/tests/instr-          |   1 +
 suite/afl/tests/instr-1         |   1 +
 suite/afl/tests/instr-10        |   1 +
 suite/afl/tests/instr-11        |   1 +
 suite/afl/tests/instr-12        |   1 +
 suite/afl/tests/instr-13        |   1 +
 suite/afl/tests/instr-14        |   1 +
 suite/afl/tests/instr-15        |   1 +
 suite/afl/tests/instr-16        |   1 +
 suite/afl/tests/instr-17        |   1 +
 suite/afl/tests/instr-18        |   1 +
 suite/afl/tests/instr-19        |   1 +
 suite/afl/tests/instr-2         |   1 +
 suite/afl/tests/instr-20        |   1 +
 suite/afl/tests/instr-21        |   1 +
 suite/afl/tests/instr-22        |   1 +
 suite/afl/tests/instr-23        |   1 +
 suite/afl/tests/instr-24        |   1 +
 suite/afl/tests/instr-3         |   1 +
 suite/afl/tests/instr-4         |   1 +
 suite/afl/tests/instr-5         |   1 +
 suite/afl/tests/instr-6         |   1 +
 suite/afl/tests/instr-7         |   1 +
 suite/afl/tests/instr-8         |   1 +
 suite/afl/tests/instr-9         |   1 +
 suite/fuzz.sh                   |  23 +
 29 files changed, 988 insertions(+)
 create mode 100644 suite/afl/dict/arm64/arm64.dict
 create mode 100644 suite/afl/dict/ppc64/ppc64.dict
 create mode 100644 suite/afl/dict/x64/x64.dict
 create mode 100644 suite/afl/tests/instr-
 create mode 100644 suite/afl/tests/instr-1
 create mode 100644 suite/afl/tests/instr-10
 create mode 100644 suite/afl/tests/instr-11
 create mode 100644 suite/afl/tests/instr-12
 create mode 100644 suite/afl/tests/instr-13
 create mode 100644 suite/afl/tests/instr-14
 create mode 100644 suite/afl/tests/instr-15
 create mode 100644 suite/afl/tests/instr-16
 create mode 100644 suite/afl/tests/instr-17
 create mode 100644 suite/afl/tests/instr-18
 create mode 100644 suite/afl/tests/instr-19
 create mode 100644 suite/afl/tests/instr-2
 create mode 100644 suite/afl/tests/instr-20
 create mode 100644 suite/afl/tests/instr-21
 create mode 100644 suite/afl/tests/instr-22
 create mode 100644 suite/afl/tests/instr-23
 create mode 100644 suite/afl/tests/instr-24
 create mode 100644 suite/afl/tests/instr-3
 create mode 100644 suite/afl/tests/instr-4
 create mode 100644 suite/afl/tests/instr-5
 create mode 100644 suite/afl/tests/instr-6
 create mode 100644 suite/afl/tests/instr-7
 create mode 100644 suite/afl/tests/instr-8
 create mode 100644 suite/afl/tests/instr-9
 create mode 100755 suite/fuzz.sh

diff --git a/suite/afl/dict/arm64/arm64.dict b/suite/afl/dict/arm64/arm64.dict
new file mode 100644
index 0000000..730128f
--- /dev/null
+++ b/suite/afl/dict/arm64/arm64.dict
@@ -0,0 +1,59 @@
+# arm 64 assembly
+#
+inst_stp="stp"
+inst_mov="mov"
+inst_mov="movz"
+inst_add="add"
+inst_addrp="addrp"
+inst_bne="b.ne"
+inst_bls="b.ls"
+inst_br="br"
+inst_blr="blr"
+inst_b="b"
+inst_str="str"
+inst_ldp="ldp"
+inst_ret="ret"
+inst_cbz="cbz"
+
+reg_x0="x0"
+reg_x1="x1"
+reg_x2="x2"
+reg_x3="x3"
+reg_x4="x4"
+reg_x5="x5"
+reg_x6="x6"
+reg_x7="x7"
+reg_x8="x8"
+reg_x9="x9"
+reg_x10="x10"
+reg_x11="x11"
+reg_x29="x29"
+reg_w1="w1"
+reg_w2="w2"
+reg_w29="w29"
+reg_sp="sp"
+
+delim_comma=","
+delim_semi=";"
+delim_parenopen="["
+delim_parenclose="]"
+delim_parenboth="[]"
+delim_exclamation="!"
+
+op_plus="+"
+op_min="-"
+op_mul="*"
+op_mod="%"
+op_or="|"
+op_xor="^"
+op_and="&"
+
+imm_0="0"
+imm_1="1"
+imm_min1="-1"
+imm_a="0xfffffffffffffff0"
+
+label_a="local_6"
+label_b="<main+0x59d>"
+label_c="<func>"
+label_d="func"
diff --git a/suite/afl/dict/ppc64/ppc64.dict b/suite/afl/dict/ppc64/ppc64.dict
new file mode 100644
index 0000000..58c3e88
--- /dev/null
+++ b/suite/afl/dict/ppc64/ppc64.dict
@@ -0,0 +1,165 @@
+# PowerPC assembly
+#
+keyword_add="add" 	
+keyword_addc="addc"    
+keyword_adde="adde"    
+keyword_addi="addi"    
+keyword_addic="addic"   
+keyword_addic="addic"	
+keyword_addis="addis"   
+keyword_addme="addme"   
+keyword_addze="addze"   
+keyword_and="and" 	
+keyword_andc="andc"    
+keyword_andi="andi"
+keyword_andis="andis"
+keyword_b="b"   	
+keyword_ba="ba"
+keyword_bl="bl"
+keyword_bla="bla"
+keyword_bc="bc"  	
+keyword_bca="bca"
+keyword_bcl="bcl"
+keyword_bcla="bcla"
+keyword_bcctr="bcctr"   
+keyword_bcctrl="bcctrl"
+keyword_bclr="bclr"    
+keyword_cmp="cmp" 	
+keyword_cmpi="cmpi"    
+keyword_cmpl="cmpl"    
+keyword_cmpli="cmpli"   
+keyword_cntlzw="cntlzw"  
+keyword_crand="crand"   
+keyword_crandc="crandc"  
+keyword_creqv="creqv"   
+keyword_crnand="crnand"  
+keyword_crnor="crnor"   
+keyword_cror="cror"    
+keyword_crorc="crorc"   
+keyword_crxor="crxor"   
+keyword_divw="divw"    
+keyword_divwu="divwu"   
+keyword_eqv="eqv" 	
+keyword_extsb="extsb"   
+keyword_extsh="extsh"   
+keyword_lbz="lbz" 	
+keyword_lbzu="lbzu"    
+keyword_lbzux="lbzux"   
+keyword_lbzx="lbzx"    
+keyword_lha="lha" 	
+keyword_lhau="lhau"    
+keyword_lhaux="lhaux"   
+keyword_lhax="lhax"    
+keyword_lhbrx="lhbrx"   
+keyword_lhz="lhz" 	
+keyword_lhzu="lhzu"    
+keyword_lhzux="lhzux"   
+keyword_lhzx="lhzx"    
+keyword_lmw="lmw" 	
+keyword_lswi="lswi"    
+keyword_lswx="lswx"    
+keyword_lwbrx="lwbrx"   
+keyword_lwz="lwz" 	
+keyword_lwzu="lwzu"    
+keyword_lwzux="lwzux"   
+keyword_lwzx="lwzx"    
+keyword_mcrf="mcrf"    
+keyword_mcrxr="mcrxr"   
+keyword_mfcr="mfcr"    
+keyword_mfspr="mfspr"   
+keyword_mftb="mftb"    
+keyword_mtcrf="mtcrf"   
+keyword_mtspr="mtspr"   
+keyword_mulhw="mulhw"   
+keyword_mulhwu="mulhwu"  
+keyword_mulli="mulli"   
+keyword_mullw="mullw"   
+keyword_nand="nand"    
+keyword_neg="neg" 	
+keyword_nor="nor" 	
+keyword_or="or"  	
+keyword_orc="orc" 	
+keyword_ori="ori" 	
+keyword_oris="oris"    
+keyword_rlwimi="rlwimi"  
+keyword_rlwinm="rlwinm"  
+keyword_rotlwi="rotlwi" 	
+keyword_clrlwi="clrlwi" 	
+keyword_rlwnm="rlwnm"   
+keyword_slw="slw" 	
+keyword_sraw="sraw"    
+keyword_srawi="srawi"   
+keyword_srw="srw" 	
+keyword_stb="stb" 	
+keyword_stbu="stbu"    
+keyword_stbux="stbux"   
+keyword_stbx="stbx"    
+keyword_sth="sth" 	
+keyword_sthbrx="sthbrx"  
+keyword_sthu="sthu"    
+keyword_sthux="sthux"   
+keyword_sthx="sthx"    
+keyword_stmw="stmw"    
+keyword_stswi="stswi"   
+keyword_stswx="stswx"   
+keyword_stw="stw" 	
+keyword_stwbrx="stwbrx"  
+keyword_stwu="stwu"    
+keyword_stwux="stwux"   
+keyword_stwx="stwx"    
+keyword_subf="subf"    
+keyword_subfc="subfc"   
+keyword_subfe="subfe"   
+keyword_subfic="subfic"  
+keyword_subfme="subfme"  
+keyword_subfze="subfze"  
+keyword_xor="xor" 	
+keyword_xori="xori"    
+keyword_xoris="xoris"   
+
+reg_lr="lr"
+reg_cr="cr"
+reg_r0="r0"
+reg_r1="r1"
+reg_r2="r2"
+reg_r3="r3"
+reg_r4="r4"
+reg_r5="r5"
+reg_r6="r6"
+reg_r7="r7"
+reg_r8="r8"
+reg_r9="r9"
+reg_r10="r10"
+reg_r11="r11"
+reg_r29="r29"
+reg_r31="r31"
+
+delim_comma=","
+delim_semi=";"
+delim_bracketopen="["
+delim_bracketclose="]"
+delim_bracketboth="[]"
+delim_exclamation="!"
+delim_parenopen="("
+delim_parenclose=")"
+delim_parenboth="()"
+delim_comment="#"
+
+op_plus="+"
+op_min="-"
+op_mul="*"
+op_mod="%"
+op_or="|"
+op_xor="^"
+op_question="?"
+op_and="&"
+
+imm_0="0"
+imm_1="1"
+imm_min1="-1"
+imm_a="0xfffffffffffffff0"
+
+label_a="local_6"
+label_b="<main+0x59d>"
+label_c="<func>"
+label_d="func"
diff --git a/suite/afl/dict/x64/x64.dict b/suite/afl/dict/x64/x64.dict
new file mode 100644
index 0000000..59ad9a8
--- /dev/null
+++ b/suite/afl/dict/x64/x64.dict
@@ -0,0 +1,716 @@
+# x86 assembly
+#
+instruction_aaa="aaa"
+instruction_aad="aad"
+instruction_aam="aam"
+instruction_aas="aas"
+instruction_adc="adc"
+instruction_adcx="adcx"
+instruction_add="add"
+instruction_addpd="addpd"
+instruction_addps="addps"
+instruction_addsd="addsd"
+instruction_addss="addss"
+instruction_addsubpd="addsubpd"
+instruction_addsubps="addsubps"
+instruction_adox="adox"
+instruction_aesdec="aesdec"
+instruction_aesdeclast="aesdeclast"
+instruction_aesenc="aesenc"
+instruction_aesenclast="aesenclast"
+instruction_aesimc="aesimc"
+instruction_aeskeygenassist="aeskeygenassist"
+instruction_and="and"
+instruction_andn="andn"
+instruction_andnpd="andnpd"
+instruction_andnps="andnps"
+instruction_andpd="andpd"
+instruction_andps="andps"
+instruction_arpl="arpl"
+instruction_bextr="bextr"
+instruction_blendpd="blendpd"
+instruction_blendps="blendps"
+instruction_blendvpd="blendvpd"
+instruction_blendvps="blendvps"
+instruction_blsi="blsi"
+instruction_blsmsk="blsmsk"
+instruction_blsr="blsr"
+instruction_bound="bound"
+instruction_bsf="bsf"
+instruction_bsr="bsr"
+instruction_bswap="bswap"
+instruction_bt="bt"
+instruction_btc="btc"
+instruction_btr="btr"
+instruction_bts="bts"
+instruction_bzhi="bzhi"
+instruction_call="call"
+instruction_cbw="cbw"
+instruction_cdq="cdq"
+instruction_cdqe="cdqe"
+instruction_clac="clac"
+instruction_clc="clc"
+instruction_cld="cld"
+instruction_clflush="clflush"
+instruction_cli="cli"
+instruction_clts="clts"
+instruction_cmc="cmc"
+instruction_cmovcc="cmovcc"
+instruction_cmp="cmp"
+instruction_cmppd="cmppd"
+instruction_cmpps="cmpps"
+instruction_cmps="cmps"
+instruction_cmpsb="cmpsb"
+instruction_cmpsd="cmpsd"
+instruction_cmpsd="cmpsd"
+instruction_cmpsq="cmpsq"
+instruction_cmpss="cmpss"
+instruction_cmpsw="cmpsw"
+instruction_cmpxchg="cmpxchg"
+instruction_cmpxchg16b="cmpxchg16b"
+instruction_cmpxchg8b="cmpxchg8b"
+instruction_comisd="comisd"
+instruction_comiss="comiss"
+instruction_cpuid="cpuid"
+instruction_cqo="cqo"
+instruction_crc32="crc32"
+instruction_cvtdq2pd="cvtdq2pd"
+instruction_cvtdq2ps="cvtdq2ps"
+instruction_cvtpd2dq="cvtpd2dq"
+instruction_cvtpd2pi="cvtpd2pi"
+instruction_cvtpd2ps="cvtpd2ps"
+instruction_cvtpi2pd="cvtpi2pd"
+instruction_cvtpi2ps="cvtpi2ps"
+instruction_cvtps2dq="cvtps2dq"
+instruction_cvtps2pd="cvtps2pd"
+instruction_cvtps2pi="cvtps2pi"
+instruction_cvtsd2si="cvtsd2si"
+instruction_cvtsd2ss="cvtsd2ss"
+instruction_cvtsi2sd="cvtsi2sd"
+instruction_cvtsi2ss="cvtsi2ss"
+instruction_cvtss2sd="cvtss2sd"
+instruction_cvtss2si="cvtss2si"
+instruction_cvttpd2dq="cvttpd2dq"
+instruction_cvttpd2pi="cvttpd2pi"
+instruction_cvttps2dq="cvttps2dq"
+instruction_cvttps2pi="cvttps2pi"
+instruction_cvttsd2si="cvttsd2si"
+instruction_cvttss2si="cvttss2si"
+instruction_cwd="cwd"
+instruction_cwde="cwde"
+instruction_daa="daa"
+instruction_das="das"
+instruction_dec="dec"
+instruction_div="div"
+instruction_divpd="divpd"
+instruction_divps="divps"
+instruction_divsd="divsd"
+instruction_divss="divss"
+instruction_dppd="dppd"
+instruction_dpps="dpps"
+instruction_emms="emms"
+instruction_enter="enter"
+instruction_extractps="extractps"
+instruction_f2xm1="f2xm1"
+instruction_fabs="fabs"
+instruction_fadd="fadd"
+instruction_faddp="faddp"
+instruction_fbld="fbld"
+instruction_fbstp="fbstp"
+instruction_fchs="fchs"
+instruction_fclex="fclex"
+instruction_fcmovcc="fcmovcc"
+instruction_fcom="fcom"
+instruction_fcomi="fcomi"
+instruction_fcomip="fcomip"
+instruction_fcomp="fcomp"
+instruction_fcompp="fcompp"
+instruction_fcos="fcos"
+instruction_fdecstp="fdecstp"
+instruction_fdiv="fdiv"
+instruction_fdivp="fdivp"
+instruction_fdivr="fdivr"
+instruction_fdivrp="fdivrp"
+instruction_ffree="ffree"
+instruction_fiadd="fiadd"
+instruction_ficom="ficom"
+instruction_ficomp="ficomp"
+instruction_fidiv="fidiv"
+instruction_fidivr="fidivr"
+instruction_fild="fild"
+instruction_fimul="fimul"
+instruction_fincstp="fincstp"
+instruction_finit="finit"
+instruction_fist="fist"
+instruction_fistp="fistp"
+instruction_fisttp="fisttp"
+instruction_fisub="fisub"
+instruction_fisubr="fisubr"
+instruction_fld="fld"
+instruction_fld1="fld1"
+instruction_fldcw="fldcw"
+instruction_fldenv="fldenv"
+instruction_fldl2e="fldl2e"
+instruction_fldl2t="fldl2t"
+instruction_fldlg2="fldlg2"
+instruction_fldln2="fldln2"
+instruction_fldpi="fldpi"
+instruction_fldz="fldz"
+instruction_fmul="fmul"
+instruction_fmulp="fmulp"
+instruction_fnclex="fnclex"
+instruction_fninit="fninit"
+instruction_fnop="fnop"
+instruction_fnsave="fnsave"
+instruction_fnstcw="fnstcw"
+instruction_fnstenv="fnstenv"
+instruction_fnstsw="fnstsw"
+instruction_fpatan="fpatan"
+instruction_fprem="fprem"
+instruction_fprem1="fprem1"
+instruction_fptan="fptan"
+instruction_frndint="frndint"
+instruction_frstor="frstor"
+instruction_fsave="fsave"
+instruction_fscale="fscale"
+instruction_fsin="fsin"
+instruction_fsincos="fsincos"
+instruction_fsqrt="fsqrt"
+instruction_fst="fst"
+instruction_fstcw="fstcw"
+instruction_fstenv="fstenv"
+instruction_fstp="fstp"
+instruction_fstsw="fstsw"
+instruction_fsub="fsub"
+instruction_fsubp="fsubp"
+instruction_fsubr="fsubr"
+instruction_fsubrp="fsubrp"
+instruction_ftst="ftst"
+instruction_fucom="fucom"
+instruction_fucomi="fucomi"
+instruction_fucomip="fucomip"
+instruction_fucomp="fucomp"
+instruction_fucompp="fucompp"
+instruction_fwait="fwait"
+instruction_fxam="fxam"
+instruction_fxch="fxch"
+instruction_fxrstor="fxrstor"
+instruction_fxsave="fxsave"
+instruction_fxtract="fxtract"
+instruction_fyl2x="fyl2x"
+instruction_fyl2xp1="fyl2xp1"
+instruction_haddpd="haddpd"
+instruction_haddps="haddps"
+instruction_hlt="hlt"
+instruction_hsubpd="hsubpd"
+instruction_hsubps="hsubps"
+instruction_idiv="idiv"
+instruction_imul="imul"
+instruction_in="in"
+instruction_inc="inc"
+instruction_ins="ins"
+instruction_insb="insb"
+instruction_insd="insd"
+instruction_insertps="insertps"
+instruction_insw="insw"
+instruction_int="int"
+instruction_int="int"
+instruction_into="into"
+instruction_invd="invd"
+instruction_invlpg="invlpg"
+instruction_invpcid="invpcid"
+instruction_iret="iret"
+instruction_iretd="iretd"
+instruction_jmp="jmp"
+instruction_jcc="jcc"
+instruction_lahf="lahf"
+instruction_lar="lar"
+instruction_lddqu="lddqu"
+instruction_ldmxcsr="ldmxcsr"
+instruction_lds="lds"
+instruction_lea="lea"
+instruction_leave="leave"
+instruction_les="les"
+instruction_lfence="lfence"
+instruction_lfs="lfs"
+instruction_lgdt="lgdt"
+instruction_lgs="lgs"
+instruction_lidt="lidt"
+instruction_lldt="lldt"
+instruction_lmsw="lmsw"
+instruction_lock="lock"
+instruction_lods="lods"
+instruction_lodsb="lodsb"
+instruction_lodsd="lodsd"
+instruction_lodsq="lodsq"
+instruction_lodsw="lodsw"
+instruction_loop="loop"
+instruction_loopcc="loopcc"
+instruction_lsl="lsl"
+instruction_lss="lss"
+instruction_ltr="ltr"
+instruction_lzcnt="lzcnt"
+instruction_maskmovdqu="maskmovdqu"
+instruction_maskmovq="maskmovq"
+instruction_maxpd="maxpd"
+instruction_maxps="maxps"
+instruction_maxsd="maxsd"
+instruction_maxss="maxss"
+instruction_mfence="mfence"
+instruction_minpd="minpd"
+instruction_minps="minps"
+instruction_minsd="minsd"
+instruction_minss="minss"
+instruction_monitor="monitor"
+instruction_mov="mov"
+instruction_mov="mov"
+instruction_mov="mov"
+instruction_movapd="movapd"
+instruction_movaps="movaps"
+instruction_movbe="movbe"
+instruction_movd="movd"
+instruction_movddup="movddup"
+instruction_movdq2q="movdq2q"
+instruction_movdqa="movdqa"
+instruction_movdqu="movdqu"
+instruction_movhlps="movhlps"
+instruction_movhpd="movhpd"
+instruction_movhps="movhps"
+instruction_movlhps="movlhps"
+instruction_movlpd="movlpd"
+instruction_movlps="movlps"
+instruction_movmskpd="movmskpd"
+instruction_movmskps="movmskps"
+instruction_movntdq="movntdq"
+instruction_movntdqa="movntdqa"
+instruction_movnti="movnti"
+instruction_movntpd="movntpd"
+instruction_movntps="movntps"
+instruction_movntq="movntq"
+instruction_movq="movq"
+instruction_movq="movq"
+instruction_movq2dq="movq2dq"
+instruction_movs="movs"
+instruction_movsb="movsb"
+instruction_movsd="movsd"
+instruction_movsd="movsd"
+instruction_movshdup="movshdup"
+instruction_movsldup="movsldup"
+instruction_movsq="movsq"
+instruction_movss="movss"
+instruction_movsw="movsw"
+instruction_movsx="movsx"
+instruction_movsxd="movsxd"
+instruction_movupd="movupd"
+instruction_movups="movups"
+instruction_movzx="movzx"
+instruction_mpsadbw="mpsadbw"
+instruction_mul="mul"
+instruction_mulpd="mulpd"
+instruction_mulps="mulps"
+instruction_mulsd="mulsd"
+instruction_mulss="mulss"
+instruction_mwait="mwait"
+instruction_mulx="mulx"
+instruction_mwait="mwait"
+instruction_neg="neg"
+instruction_nop="nop"
+instruction_not="not"
+instruction_or="or"
+instruction_orpd="orpd"
+instruction_orps="orps"
+instruction_out="out"
+instruction_outs="outs"
+instruction_outsb="outsb"
+instruction_outsd="outsd"
+instruction_outsw="outsw"
+instruction_pabsb="pabsb"
+instruction_pabsd="pabsd"
+instruction_pabsw="pabsw"
+instruction_packssdw="packssdw"
+instruction_packsswb="packsswb"
+instruction_packusdw="packusdw"
+instruction_packuswb="packuswb"
+instruction_paddb="paddb"
+instruction_paddd="paddd"
+instruction_paddq="paddq"
+instruction_paddsb="paddsb"
+instruction_paddsw="paddsw"
+instruction_paddusb="paddusb"
+instruction_paddusw="paddusw"
+instruction_paddw="paddw"
+instruction_palignr="palignr"
+instruction_pand="pand"
+instruction_pandn="pandn"
+instruction_pause="pause"
+instruction_pavgb="pavgb"
+instruction_pavgw="pavgw"
+instruction_pblendvb="pblendvb"
+instruction_pblendw="pblendw"
+instruction_pclmulqdq="pclmulqdq"
+instruction_pcmpeqb="pcmpeqb"
+instruction_pcmpeqd="pcmpeqd"
+instruction_pcmpeqq="pcmpeqq"
+instruction_pcmpeqw="pcmpeqw"
+instruction_pcmpestri="pcmpestri"
+instruction_pcmpestrm="pcmpestrm"
+instruction_pcmpgtb="pcmpgtb"
+instruction_pcmpgtd="pcmpgtd"
+instruction_pcmpgtq="pcmpgtq"
+instruction_pcmpgtw="pcmpgtw"
+instruction_pcmpistri="pcmpistri"
+instruction_pcmpistrm="pcmpistrm"
+instruction_pdep="pdep"
+instruction_pext="pext"
+instruction_pextrb="pextrb"
+instruction_pextrd="pextrd"
+instruction_pextrq="pextrq"
+instruction_pextrw="pextrw"
+instruction_phaddd="phaddd"
+instruction_phaddsw="phaddsw"
+instruction_phaddw="phaddw"
+instruction_phminposuw="phminposuw"
+instruction_phsubd="phsubd"
+instruction_phsubsw="phsubsw"
+instruction_phsubw="phsubw"
+instruction_pinsrb="pinsrb"
+instruction_pinsrd="pinsrd"
+instruction_pinsrq="pinsrq"
+instruction_pinsrw="pinsrw"
+instruction_pmaddubsw="pmaddubsw"
+instruction_pmaddwd="pmaddwd"
+instruction_pmaxsb="pmaxsb"
+instruction_pmaxsd="pmaxsd"
+instruction_pmaxsw="pmaxsw"
+instruction_pmaxub="pmaxub"
+instruction_pmaxud="pmaxud"
+instruction_pmaxuw="pmaxuw"
+instruction_pminsb="pminsb"
+instruction_pminsd="pminsd"
+instruction_pminsw="pminsw"
+instruction_pminub="pminub"
+instruction_pminud="pminud"
+instruction_pminuw="pminuw"
+instruction_pmovmskb="pmovmskb"
+instruction_pmovsx="pmovsx"
+instruction_pmovzx="pmovzx"
+instruction_pmuldq="pmuldq"
+instruction_pmulhrsw="pmulhrsw"
+instruction_pmulhuw="pmulhuw"
+instruction_pmulhw="pmulhw"
+instruction_pmulld="pmulld"
+instruction_pmullw="pmullw"
+instruction_pmuludq="pmuludq"
+instruction_pop="pop"
+instruction_popa="popa"
+instruction_popad="popad"
+instruction_popcnt="popcnt"
+instruction_popf="popf"
+instruction_popfd="popfd"
+instruction_popfq="popfq"
+instruction_por="por"
+instruction_prefetchw="prefetchw"
+instruction_prefetchwt1="prefetchwt1"
+instruction_prefetchh="prefetchh"
+instruction_psadbw="psadbw"
+instruction_pshufb="pshufb"
+instruction_pshufd="pshufd"
+instruction_pshufhw="pshufhw"
+instruction_pshuflw="pshuflw"
+instruction_pshufw="pshufw"
+instruction_psignb="psignb"
+instruction_psignd="psignd"
+instruction_psignw="psignw"
+instruction_pslld="pslld"
+instruction_pslldq="pslldq"
+instruction_psllq="psllq"
+instruction_psllw="psllw"
+instruction_psrad="psrad"
+instruction_psraw="psraw"
+instruction_psrld="psrld"
+instruction_psrldq="psrldq"
+instruction_psrlq="psrlq"
+instruction_psrlw="psrlw"
+instruction_psubb="psubb"
+instruction_psubd="psubd"
+instruction_psubq="psubq"
+instruction_psubsb="psubsb"
+instruction_psubsw="psubsw"
+instruction_psubusb="psubusb"
+instruction_psubusw="psubusw"
+instruction_psubw="psubw"
+instruction_ptest="ptest"
+instruction_punpckhbw="punpckhbw"
+instruction_punpckhdq="punpckhdq"
+instruction_punpckhqdq="punpckhqdq"
+instruction_punpckhwd="punpckhwd"
+instruction_punpcklbw="punpcklbw"
+instruction_punpckldq="punpckldq"
+instruction_punpcklqdq="punpcklqdq"
+instruction_punpcklwd="punpcklwd"
+instruction_push="push"
+instruction_pusha="pusha"
+instruction_pushad="pushad"
+instruction_pushf="pushf"
+instruction_pushfd="pushfd"
+instruction_pxor="pxor"
+instruction_rcl="rcl"
+instruction_rcpps="rcpps"
+instruction_rcpss="rcpss"
+instruction_rcr="rcr"
+instruction_rdfsbase="rdfsbase"
+instruction_rdgsbase="rdgsbase"
+instruction_rdmsr="rdmsr"
+instruction_rdpmc="rdpmc"
+instruction_rdrand="rdrand"
+instruction_rdseed="rdseed"
+instruction_rdtsc="rdtsc"
+instruction_rdtscp="rdtscp"
+instruction_rep="rep"
+instruction_repe="repe"
+instruction_repne="repne"
+instruction_repnz="repnz"
+instruction_repz="repz"
+instruction_ret="ret"
+instruction_rol="rol"
+instruction_ror="ror"
+instruction_rorx="rorx"
+instruction_roundpd="roundpd"
+instruction_roundps="roundps"
+instruction_roundsd="roundsd"
+instruction_roundss="roundss"
+instruction_rsm="rsm"
+instruction_rsqrtps="rsqrtps"
+instruction_rsqrtss="rsqrtss"
+instruction_sahf="sahf"
+instruction_sal="sal"
+instruction_sar="sar"
+instruction_sarx="sarx"
+instruction_sbb="sbb"
+instruction_scas="scas"
+instruction_scasb="scasb"
+instruction_scasd="scasd"
+instruction_scasw="scasw"
+instruction_setcc="setcc"
+instruction_sfence="sfence"
+instruction_sgdt="sgdt"
+instruction_shl="shl"
+instruction_shld="shld"
+instruction_shlx="shlx"
+instruction_shr="shr"
+instruction_shrd="shrd"
+instruction_shrx="shrx"
+instruction_shufpd="shufpd"
+instruction_shufps="shufps"
+instruction_sidt="sidt"
+instruction_sldt="sldt"
+instruction_smsw="smsw"
+instruction_sqrtpd="sqrtpd"
+instruction_sqrtps="sqrtps"
+instruction_sqrtsd="sqrtsd"
+instruction_sqrtss="sqrtss"
+instruction_stac="stac"
+instruction_stc="stc"
+instruction_std="std"
+instruction_sti="sti"
+instruction_stmxcsr="stmxcsr"
+instruction_stos="stos"
+instruction_stosb="stosb"
+instruction_stosd="stosd"
+instruction_stosq="stosq"
+instruction_stosw="stosw"
+instruction_str="str"
+instruction_sub="sub"
+instruction_subpd="subpd"
+instruction_subps="subps"
+instruction_subsd="subsd"
+instruction_subss="subss"
+instruction_swapgs="swapgs"
+instruction_syscall="syscall"
+instruction_sysenter="sysenter"
+instruction_sysexit="sysexit"
+instruction_sysret="sysret"
+instruction_test="test"
+instruction_tzcnt="tzcnt"
+instruction_ucomisd="ucomisd"
+instruction_ucomiss="ucomiss"
+instruction_ud2="ud2"
+instruction_unpckhpd="unpckhpd"
+instruction_unpckhps="unpckhps"
+instruction_unpcklpd="unpcklpd"
+instruction_unpcklps="unpcklps"
+instruction_vbroadcast="vbroadcast"
+instruction_vcvtph2ps="vcvtph2ps"
+instruction_vcvtps2ph="vcvtps2ph"
+instruction_verr="verr"
+instruction_verw="verw"
+instruction_vextractf128="vextractf128"
+instruction_vextracti128="vextracti128"
+instruction_vfmadd132pd="vfmadd132pd"
+instruction_vfmadd132ps="vfmadd132ps"
+instruction_vfmadd132sd="vfmadd132sd"
+instruction_vfmadd132ss="vfmadd132ss"
+instruction_vfmadd213pd="vfmadd213pd"
+instruction_vfmadd213ps="vfmadd213ps"
+instruction_vfmadd213sd="vfmadd213sd"
+instruction_vfmadd213ss="vfmadd213ss"
+instruction_vfmadd231pd="vfmadd231pd"
+instruction_vfmadd231ps="vfmadd231ps"
+instruction_vfmadd231sd="vfmadd231sd"
+instruction_vfmadd231ss="vfmadd231ss"
+instruction_vfmaddsub132pd="vfmaddsub132pd"
+instruction_vfmaddsub132ps="vfmaddsub132ps"
+instruction_vfmaddsub213pd="vfmaddsub213pd"
+instruction_vfmaddsub213ps="vfmaddsub213ps"
+instruction_vfmaddsub231pd="vfmaddsub231pd"
+instruction_vfmaddsub231ps="vfmaddsub231ps"
+instruction_vfmsub132pd="vfmsub132pd"
+instruction_vfmsub132ps="vfmsub132ps"
+instruction_vfmsub132sd="vfmsub132sd"
+instruction_vfmsub132ss="vfmsub132ss"
+instruction_vfmsub213pd="vfmsub213pd"
+instruction_vfmsub213ps="vfmsub213ps"
+instruction_vfmsub213sd="vfmsub213sd"
+instruction_vfmsub213ss="vfmsub213ss"
+instruction_vfmsub231pd="vfmsub231pd"
+instruction_vfmsub231ps="vfmsub231ps"
+instruction_vfmsub231sd="vfmsub231sd"
+instruction_vfmsub231ss="vfmsub231ss"
+instruction_vfmsubadd132pd="vfmsubadd132pd"
+instruction_vfmsubadd132ps="vfmsubadd132ps"
+instruction_vfmsubadd213pd="vfmsubadd213pd"
+instruction_vfmsubadd213ps="vfmsubadd213ps"
+instruction_vfmsubadd231pd="vfmsubadd231pd"
+instruction_vfmsubadd231ps="vfmsubadd231ps"
+instruction_vfnmadd132pd="vfnmadd132pd"
+instruction_vfnmadd132ps="vfnmadd132ps"
+instruction_vfnmadd132sd="vfnmadd132sd"
+instruction_vfnmadd132ss="vfnmadd132ss"
+instruction_vfnmadd213pd="vfnmadd213pd"
+instruction_vfnmadd213ps="vfnmadd213ps"
+instruction_vfnmadd213sd="vfnmadd213sd"
+instruction_vfnmadd213ss="vfnmadd213ss"
+instruction_vfnmadd231pd="vfnmadd231pd"
+instruction_vfnmadd231ps="vfnmadd231ps"
+instruction_vfnmadd231sd="vfnmadd231sd"
+instruction_vfnmadd231ss="vfnmadd231ss"
+instruction_vfnmsub132pd="vfnmsub132pd"
+instruction_vfnmsub132ps="vfnmsub132ps"
+instruction_vfnmsub132sd="vfnmsub132sd"
+instruction_vfnmsub132ss="vfnmsub132ss"
+instruction_vfnmsub213pd="vfnmsub213pd"
+instruction_vfnmsub213ps="vfnmsub213ps"
+instruction_vfnmsub213sd="vfnmsub213sd"
+instruction_vfnmsub213ss="vfnmsub213ss"
+instruction_vfnmsub231pd="vfnmsub231pd"
+instruction_vfnmsub231ps="vfnmsub231ps"
+instruction_vfnmsub231sd="vfnmsub231sd"
+instruction_vfnmsub231ss="vfnmsub231ss"
+instruction_vgatherdpd="vgatherdpd"
+instruction_vgatherdps="vgatherdps"
+instruction_vgatherqpd="vgatherqpd"
+instruction_vgatherqps="vgatherqps"
+instruction_vinsertf128="vinsertf128"
+instruction_vinserti128="vinserti128"
+instruction_vmaskmov="vmaskmov"
+instruction_vpblendd="vpblendd"
+instruction_vpbroadcast="vpbroadcast"
+instruction_vperm2f128="vperm2f128"
+instruction_vperm2i128="vperm2i128"
+instruction_vpermd="vpermd"
+instruction_vpermilpd="vpermilpd"
+instruction_vpermilps="vpermilps"
+instruction_vpermpd="vpermpd"
+instruction_vpermps="vpermps"
+instruction_vpermq="vpermq"
+instruction_vpgatherdd="vpgatherdd"
+instruction_vpgatherdq="vpgatherdq"
+instruction_vpgatherqd="vpgatherqd"
+instruction_vpgatherqq="vpgatherqq"
+instruction_vpmaskmov="vpmaskmov"
+instruction_vpsllvd="vpsllvd"
+instruction_vpsllvq="vpsllvq"
+instruction_vpsravd="vpsravd"
+instruction_vpsrlvd="vpsrlvd"
+instruction_vpsrlvq="vpsrlvq"
+instruction_vtestpd="vtestpd"
+instruction_vtestps="vtestps"
+instruction_vzeroall="vzeroall"
+instruction_vzeroupper="vzeroupper"
+instruction_wait="wait"
+instruction_wbinvd="wbinvd"
+instruction_wrfsbase="wrfsbase"
+instruction_wrgsbase="wrgsbase"
+instruction_wrmsr="wrmsr"
+instruction_xabort="xabort"
+instruction_xacquire="xacquire"
+instruction_xadd="xadd"
+instruction_xbegin="xbegin"
+instruction_xchg="xchg"
+instruction_xend="xend"
+instruction_xgetbv="xgetbv"
+instruction_xlat="xlat"
+instruction_xlatb="xlatb"
+instruction_xor="xor"
+instruction_xorpd="xorpd"
+instruction_xorps="xorps"
+instruction_xrelease="xrelease"
+instruction_xrstor="xrstor"
+instruction_xrstors="xrstors"
+instruction_xsave="xsave"
+instruction_xsavec="xsavec"
+instruction_xsaveopt="xsaveopt"
+instruction_xsaves="xsaves"
+instruction_xsetbv="xsetbv"
+instruction_xtest="xtest"
+
+register_ax="ax"
+register_eax="eax"
+register_rax="rax"
+register_rbx="rbx"
+register_rcx="rcx"
+register_rdx="rdx"
+register_r8="r8"
+register_r9="r9"
+register_r10="r10"
+register_11="r11"
+register_12="r12"
+register_13="r13"
+register_14="r14"
+register_15="r15"
+register_15b="r15b"
+register_15d="r15d"
+register_esp="esp"
+register_rsp="rsp"
+register_ebp="ebp"
+register_rbp="rbp"
+register_rip="rip"
+register_xmm0="xmm0"
+register_xmm1="xmm1"
+register_xmm2="xmm2"
+register_xmm15="xmm15"
+
+delim_comma=","
+delim_parenopen="["
+delim_parenclose="]"
+delim_parenboth="[]"
+
+misc_dword="DWORD PTR"
+misc_qword="QWORD PTR"
+
+op_plus="+"
+op_min="-"
+op_mul="*"
+op_mod="%"
+op_or="|"
+op_xor="^"
+op_and="&"
+
+imm_0="0"
+imm_1="1"
+imm_min1="-1"
+imm_a="0xfffffffffffffff0"
+
+label_a="<random@plt>"
+label_b="<main+0x59d>"
+label_c="<func>"
diff --git a/suite/afl/tests/instr- b/suite/afl/tests/instr-
new file mode 100644
index 0000000..5c4c260
--- /dev/null
+++ b/suite/afl/tests/instr-
@@ -0,0 +1 @@
+add rbx,r15
diff --git a/suite/afl/tests/instr-1 b/suite/afl/tests/instr-1
new file mode 100644
index 0000000..4222a3b
--- /dev/null
+++ b/suite/afl/tests/instr-1
@@ -0,0 +1 @@
+add rsp,0x438
diff --git a/suite/afl/tests/instr-10 b/suite/afl/tests/instr-10
new file mode 100644
index 0000000..7f2d4b8
--- /dev/null
+++ b/suite/afl/tests/instr-10
@@ -0,0 +1 @@
+lea rsp,[rsp-0x98]
diff --git a/suite/afl/tests/instr-11 b/suite/afl/tests/instr-11
new file mode 100644
index 0000000..9a0c23f
--- /dev/null
+++ b/suite/afl/tests/instr-11
@@ -0,0 +1 @@
+mov QWORD PTR [rsp+0x8],rcx
diff --git a/suite/afl/tests/instr-12 b/suite/afl/tests/instr-12
new file mode 100644
index 0000000..f78c106
--- /dev/null
+++ b/suite/afl/tests/instr-12
@@ -0,0 +1 @@
+mov eax,0x4
diff --git a/suite/afl/tests/instr-13 b/suite/afl/tests/instr-13
new file mode 100644
index 0000000..db4b6f4
--- /dev/null
+++ b/suite/afl/tests/instr-13
@@ -0,0 +1 @@
+mov ecx,eax
diff --git a/suite/afl/tests/instr-14 b/suite/afl/tests/instr-14
new file mode 100644
index 0000000..60e63ae
--- /dev/null
+++ b/suite/afl/tests/instr-14
@@ -0,0 +1 @@
+mov r13,QWORD PTR [r14+0x10]
diff --git a/suite/afl/tests/instr-15 b/suite/afl/tests/instr-15
new file mode 100644
index 0000000..512119d
--- /dev/null
+++ b/suite/afl/tests/instr-15
@@ -0,0 +1 @@
+mov ecx, 0x17e9
diff --git a/suite/afl/tests/instr-16 b/suite/afl/tests/instr-16
new file mode 100644
index 0000000..c27745a
--- /dev/null
+++ b/suite/afl/tests/instr-16
@@ -0,0 +1 @@
+nop
diff --git a/suite/afl/tests/instr-17 b/suite/afl/tests/instr-17
new file mode 100644
index 0000000..660173d
--- /dev/null
+++ b/suite/afl/tests/instr-17
@@ -0,0 +1 @@
+or edx,0x4
diff --git a/suite/afl/tests/instr-18 b/suite/afl/tests/instr-18
new file mode 100644
index 0000000..5a699ee
--- /dev/null
+++ b/suite/afl/tests/instr-18
@@ -0,0 +1 @@
+pop r12
diff --git a/suite/afl/tests/instr-19 b/suite/afl/tests/instr-19
new file mode 100644
index 0000000..ce273d2
--- /dev/null
+++ b/suite/afl/tests/instr-19
@@ -0,0 +1 @@
+push r12
diff --git a/suite/afl/tests/instr-2 b/suite/afl/tests/instr-2
new file mode 100644
index 0000000..284dc75
--- /dev/null
+++ b/suite/afl/tests/instr-2
@@ -0,0 +1 @@
+call 100002ce0 <_usage>
diff --git a/suite/afl/tests/instr-20 b/suite/afl/tests/instr-20
new file mode 100644
index 0000000..4c75d7d
--- /dev/null
+++ b/suite/afl/tests/instr-20
@@ -0,0 +1 @@
+ret
diff --git a/suite/afl/tests/instr-21 b/suite/afl/tests/instr-21
new file mode 100644
index 0000000..d1b0830
--- /dev/null
+++ b/suite/afl/tests/instr-21
@@ -0,0 +1 @@
+sub rsp,0x438
diff --git a/suite/afl/tests/instr-22 b/suite/afl/tests/instr-22
new file mode 100644
index 0000000..d90ae2d
--- /dev/null
+++ b/suite/afl/tests/instr-22
@@ -0,0 +1 @@
+test eax,eax
diff --git a/suite/afl/tests/instr-23 b/suite/afl/tests/instr-23
new file mode 100644
index 0000000..f003afd
--- /dev/null
+++ b/suite/afl/tests/instr-23
@@ -0,0 +1 @@
+xchg ax,ax
diff --git a/suite/afl/tests/instr-24 b/suite/afl/tests/instr-24
new file mode 100644
index 0000000..c29e7ec
--- /dev/null
+++ b/suite/afl/tests/instr-24
@@ -0,0 +1 @@
+xor r13d,r13d
diff --git a/suite/afl/tests/instr-3 b/suite/afl/tests/instr-3
new file mode 100644
index 0000000..9c9f788
--- /dev/null
+++ b/suite/afl/tests/instr-3
@@ -0,0 +1 @@
+cmove edx,eax
diff --git a/suite/afl/tests/instr-4 b/suite/afl/tests/instr-4
new file mode 100644
index 0000000..7701fa0
--- /dev/null
+++ b/suite/afl/tests/instr-4
@@ -0,0 +1 @@
+cmp QWORD PTR [rbp-0x450],0x0
diff --git a/suite/afl/tests/instr-5 b/suite/afl/tests/instr-5
new file mode 100644
index 0000000..3a4ade0
--- /dev/null
+++ b/suite/afl/tests/instr-5
@@ -0,0 +1 @@
+cmp eax,0xffffffff
diff --git a/suite/afl/tests/instr-6 b/suite/afl/tests/instr-6
new file mode 100644
index 0000000..4c4572f
--- /dev/null
+++ b/suite/afl/tests/instr-6
@@ -0,0 +1 @@
+inc rbx
diff --git a/suite/afl/tests/instr-7 b/suite/afl/tests/instr-7
new file mode 100644
index 0000000..53ab3d0
--- /dev/null
+++ b/suite/afl/tests/instr-7
@@ -0,0 +1 @@
+je 100002b58 <_main+0x1a58>
diff --git a/suite/afl/tests/instr-8 b/suite/afl/tests/instr-8
new file mode 100644
index 0000000..721071b
--- /dev/null
+++ b/suite/afl/tests/instr-8
@@ -0,0 +1 @@
+jne 100002c9a <_main+0x1b9a>
diff --git a/suite/afl/tests/instr-9 b/suite/afl/tests/instr-9
new file mode 100644
index 0000000..ac47d4c
--- /dev/null
+++ b/suite/afl/tests/instr-9
@@ -0,0 +1 @@
+lea r12,[rbp-0x430]
diff --git a/suite/fuzz.sh b/suite/fuzz.sh
new file mode 100755
index 0000000..be9e33e
--- /dev/null
+++ b/suite/fuzz.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+AFLFUZZ=afl-fuzz
+KSTOOL=$(pwd)/../build/kstool/kstool
+
+if [ $# -ne 1 ]; then 
+    echo "Usage: fuzz.sh {arch}"
+    exit;
+fi
+
+pushd .
+cd ../build && ../make-afl.sh
+popd
+pushd .
+cd ./afl
+for arch in "$@"
+do
+    if [ -d "./dict/$arch" ]; then
+        $AFLFUZZ -i ./tests -o ./findings -x ./dict/$arch -- $KSTOOL $arch
+    else
+        $AFLFUZZ -i ./tests -o ./findings -- $KSTOOL $arch
+    fi
+done
+popd
-- 
GitLab