#! /usr/local/bin/vvp
:ivl_version "13.0 (devel)" "(s20221226-251-g09f3ebfc8)";
:ivl_delay_selection "TYPICAL";
:vpi_time_precision - 12;
:vpi_module "/usr/local/lib/ivl/system.vpi";
:vpi_module "/usr/local/lib/ivl/vhdl_sys.vpi";
:vpi_module "/usr/local/lib/ivl/vhdl_textio.vpi";
:vpi_module "/usr/local/lib/ivl/v2005_math.vpi";
:vpi_module "/usr/local/lib/ivl/va_math.vpi";
S_0x5804fddb1fe0 .scope module, "meggitt_tb" "meggitt_tb" 2 3;
 .timescale -9 -12;
v0x5804fddd8610_0 .var "clk", 0 0;
v0x5804fddd86d0 .array "corrupted_codeword", 2303 0, 7 0;
v0x5804fddd8770_0 .var "data_in", 7 0;
v0x5804fddd8810_0 .net "data_out", 7 0, L_0x5804fdde9650;  1 drivers
v0x5804fddd88e0_0 .net "data_out_valid", 0 0, v0x5804fddd7910_0;  1 drivers
v0x5804fddd8980_0 .var "data_valid", 0 0;
v0x5804fddd8a50_0 .net "done", 0 0, v0x5804fddd7a90_0;  1 drivers
v0x5804fddd8b20_0 .net "error_count", 7 0, v0x5804fddd7b50_0;  1 drivers
v0x5804fddd8bf0_0 .var/i "i", 31 0;
v0x5804fddd8c90 .array "original_codeword", 2303 0, 7 0;
v0x5804fddd8d30_0 .var "rst_n", 0 0;
v0x5804fddd8e00_0 .var "start", 0 0;
E_0x5804fdd53ba0 .event posedge, v0x5804fddd7410_0;
E_0x5804fdd53df0 .event anyedge, v0x5804fddd7910_0;
E_0x5804fdd8e8d0 .event anyedge, v0x5804fddd7a90_0;
S_0x5804fdda5ad0 .scope module, "uut" "meggitt_decoder" 2 15, 3 3 0, S_0x5804fddb1fe0;
 .timescale -9 -12;
    .port_info 0 /INPUT 1 "clk";
    .port_info 1 /INPUT 1 "rst_n";
    .port_info 2 /INPUT 1 "start";
    .port_info 3 /INPUT 8 "data_in";
    .port_info 4 /INPUT 1 "data_valid";
    .port_info 5 /OUTPUT 1 "done";
    .port_info 6 /OUTPUT 8 "data_out";
    .port_info 7 /OUTPUT 1 "data_out_valid";
    .port_info 8 /OUTPUT 16 "bit_counter";
    .port_info 9 /OUTPUT 8 "error_count";
P_0x5804fdda5cb0 .param/l "B" 1 3 20, +C4<00000000000000000000000100000000>;
P_0x5804fdda5cf0 .param/l "CALC" 1 3 25, C4<010>;
P_0x5804fdda5d30 .param/l "CORRECT" 1 3 26, C4<011>;
P_0x5804fdda5d70 .param/l "IDLE" 1 3 23, C4<000>;
P_0x5804fdda5db0 .param/l "K" 1 3 18, +C4<00000000000000000100000000000000>;
P_0x5804fdda5df0 .param/l "LOAD" 1 3 24, C4<001>;
P_0x5804fdda5e30 .param/l "N" 1 3 17, +C4<00000000000000000100100000000000>;
P_0x5804fdda5e70 .param/l "OUTPUT" 1 3 27, C4<100>;
P_0x5804fdda5eb0 .param/l "R" 1 3 19, +C4<00000000000000000000100000000000>;
L_0x7be65d03d018 .functor BUFT 1, C4<00000000000000000100011111111111>, C4<0>, C4<0>, C4<0>;
v0x5804fddb3ce0_0 .net/2u *"_ivl_0", 31 0, L_0x7be65d03d018;  1 drivers
v0x5804fddb4440_0 .net *"_ivl_10", 31 0, L_0x5804fdde9210;  1 drivers
v0x5804fddd6b60_0 .net *"_ivl_12", 33 0, L_0x5804fdde9350;  1 drivers
L_0x7be65d03d0f0 .functor BUFT 1, C4<00>, C4<0>, C4<0>, C4<0>;
v0x5804fddd6c20_0 .net *"_ivl_15", 1 0, L_0x7be65d03d0f0;  1 drivers
v0x5804fddd6d00_0 .net *"_ivl_16", 33 0, L_0x5804fdde9350;  alias, 1 drivers
L_0x7be65d03d138 .functor BUFT 1, C4<0000000000000000000000000000000111>, C4<0>, C4<0>, C4<0>;
v0x5804fddd6e10_0 .net/2s *"_ivl_17", 33 0, L_0x7be65d03d138;  1 drivers
v0x5804fddd6ed0_0 .net/s *"_ivl_19", 33 0, L_0x5804fdde9560;  1 drivers
v0x5804fddd6fb0_0 .net *"_ivl_2", 31 0, L_0x5804fdde8f40;  1 drivers
L_0x7be65d03d060 .functor BUFT 1, C4<00000000000000000>, C4<0>, C4<0>, C4<0>;
v0x5804fddd7090_0 .net *"_ivl_5", 16 0, L_0x7be65d03d060;  1 drivers
L_0x7be65d03d0a8 .functor BUFT 1, C4<00000000000000000000000000001000>, C4<0>, C4<0>, C4<0>;
v0x5804fddd7170_0 .net/2u *"_ivl_6", 31 0, L_0x7be65d03d0a8;  1 drivers
v0x5804fddd7250_0 .net *"_ivl_9", 31 0, L_0x5804fdde90a0;  1 drivers
v0x5804fddd7330_0 .var "bit_counter", 15 0;
v0x5804fddd7410_0 .net "clk", 0 0, v0x5804fddd8610_0;  1 drivers
v0x5804fddd74d0_0 .var "codeword", 18431 0;
v0x5804fddd75b0_0 .var "counter", 14 0;
v0x5804fddd7690 .array "current_sig", 7 0, 255 0;
v0x5804fddd7750_0 .net "data_in", 7 0, v0x5804fddd8770_0;  1 drivers
v0x5804fddd7830_0 .net "data_out", 7 0, L_0x5804fdde9650;  alias, 1 drivers
v0x5804fddd7910_0 .var "data_out_valid", 0 0;
v0x5804fddd79d0_0 .net "data_valid", 0 0, v0x5804fddd8980_0;  1 drivers
v0x5804fddd7a90_0 .var "done", 0 0;
v0x5804fddd7b50_0 .var "error_count", 7 0;
v0x5804fddd7c30_0 .var/i "i", 31 0;
v0x5804fddd7d10_0 .var "masked", 255 0;
v0x5804fddd7df0_0 .var "pass_count", 2 0;
v0x5804fddd7ed0_0 .var/i "pj", 31 0;
v0x5804fddd7fb0 .array "poly_rom", 511 0, 255 0;
v0x5804fddd8070_0 .net "rst_n", 0 0, v0x5804fddd8d30_0;  1 drivers
v0x5804fddd8130_0 .net "start", 0 0, v0x5804fddd8e00_0;  1 drivers
v0x5804fddd81f0_0 .var "state", 2 0;
v0x5804fddd82d0 .array "syndrome", 7 0, 255 0;
v0x5804fddd8390_0 .var "total_score", 11 0;
E_0x5804fdd8f490/0 .event negedge, v0x5804fddd8070_0;
E_0x5804fdd8f490/1 .event posedge, v0x5804fddd7410_0;
E_0x5804fdd8f490 .event/or E_0x5804fdd8f490/0, E_0x5804fdd8f490/1;
L_0x5804fdde8f40 .concat [ 15 17 0 0], v0x5804fddd75b0_0, L_0x7be65d03d060;
L_0x5804fdde90a0 .arith/mult 32, L_0x5804fdde8f40, L_0x7be65d03d0a8;
L_0x5804fdde9210 .arith/sub 32, L_0x7be65d03d018, L_0x5804fdde90a0;
L_0x5804fdde9350 .concat [ 32 2 0 0], L_0x5804fdde9210, L_0x7be65d03d0f0;
L_0x5804fdde9560 .arith/sub 34, L_0x5804fdde9350, L_0x7be65d03d138;
L_0x5804fdde9650 .part/v.s v0x5804fddd74d0_0, L_0x5804fdde9560, 8;
    .scope S_0x5804fdda5ad0;
T_0 ;
    %vpi_call 3 47 "$readmemh", "polys.mem", v0x5804fddd7fb0 {0 0 0};
    %end;
    .thread T_0;
    .scope S_0x5804fdda5ad0;
T_1 ;
    %wait E_0x5804fdd8f490;
    %load/vec4 v0x5804fddd8070_0;
    %nor/r;
    %flag_set/vec4 8;
    %jmp/0xz  T_1.0, 8;
    %pushi/vec4 0, 0, 3;
    %assign/vec4 v0x5804fddd81f0_0, 0;
    %pushi/vec4 0, 0, 15;
    %assign/vec4 v0x5804fddd75b0_0, 0;
    %pushi/vec4 0, 0, 1;
    %assign/vec4 v0x5804fddd7a90_0, 0;
    %pushi/vec4 0, 0, 1;
    %assign/vec4 v0x5804fddd7910_0, 0;
    %pushi/vec4 0, 0, 8;
    %assign/vec4 v0x5804fddd7b50_0, 0;
    %pushi/vec4 0, 0, 3;
    %assign/vec4 v0x5804fddd7df0_0, 0;
    %pushi/vec4 0, 0, 16;
    %assign/vec4 v0x5804fddd7330_0, 0;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
T_1.2 ; Top of for-loop
    %load/vec4 v0x5804fddd7c30_0;
    %cmpi/s 8, 0, 32;
	  %jmp/0xz T_1.3, 5;
    %pushi/vec4 0, 0, 256;
    %ix/getv/s 3, v0x5804fddd7c30_0;
    %ix/load 4, 0, 0; Constant delay
    %assign/vec4/a/d v0x5804fddd82d0, 0, 4;
T_1.4 ; for-loop step statement
    %load/vec4 v0x5804fddd7c30_0;
    %addi 1, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
    %jmp T_1.2;
T_1.3 ; for-loop exit label
    %jmp T_1.1;
T_1.0 ;
    %load/vec4 v0x5804fddd81f0_0;
    %dup/vec4;
    %pushi/vec4 0, 0, 3;
    %cmp/u;
    %jmp/1 T_1.5, 6;
    %dup/vec4;
    %pushi/vec4 1, 0, 3;
    %cmp/u;
    %jmp/1 T_1.6, 6;
    %dup/vec4;
    %pushi/vec4 2, 0, 3;
    %cmp/u;
    %jmp/1 T_1.7, 6;
    %dup/vec4;
    %pushi/vec4 3, 0, 3;
    %cmp/u;
    %jmp/1 T_1.8, 6;
    %dup/vec4;
    %pushi/vec4 4, 0, 3;
    %cmp/u;
    %jmp/1 T_1.9, 6;
    %jmp T_1.10;
T_1.5 ;
    %load/vec4 v0x5804fddd8130_0;
    %flag_set/vec4 8;
    %jmp/0xz  T_1.11, 8;
    %pushi/vec4 1, 0, 3;
    %assign/vec4 v0x5804fddd81f0_0, 0;
    %pushi/vec4 0, 0, 15;
    %assign/vec4 v0x5804fddd75b0_0, 0;
    %pushi/vec4 0, 0, 1;
    %assign/vec4 v0x5804fddd7a90_0, 0;
    %pushi/vec4 0, 0, 8;
    %assign/vec4 v0x5804fddd7b50_0, 0;
    %pushi/vec4 0, 0, 3;
    %assign/vec4 v0x5804fddd7df0_0, 0;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
T_1.13 ; Top of for-loop
    %load/vec4 v0x5804fddd7c30_0;
    %cmpi/s 8, 0, 32;
	  %jmp/0xz T_1.14, 5;
    %pushi/vec4 0, 0, 256;
    %ix/getv/s 3, v0x5804fddd7c30_0;
    %ix/load 4, 0, 0; Constant delay
    %assign/vec4/a/d v0x5804fddd82d0, 0, 4;
T_1.15 ; for-loop step statement
    %load/vec4 v0x5804fddd7c30_0;
    %addi 1, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
    %jmp T_1.13;
T_1.14 ; for-loop exit label
T_1.11 ;
    %jmp T_1.10;
T_1.6 ;
    %load/vec4 v0x5804fddd79d0_0;
    %flag_set/vec4 8;
    %jmp/0xz  T_1.16, 8;
    %load/vec4 v0x5804fddd74d0_0;
    %parti/s 18424, 0, 2;
    %load/vec4 v0x5804fddd7750_0;
    %concat/vec4; draw_concat_vec4
    %assign/vec4 v0x5804fddd74d0_0, 0;
    %load/vec4 v0x5804fddd75b0_0;
    %addi 8, 0, 15;
    %assign/vec4 v0x5804fddd75b0_0, 0;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %cmpi/e 18424, 0, 32;
    %jmp/0xz  T_1.18, 4;
    %pushi/vec4 2, 0, 3;
    %assign/vec4 v0x5804fddd81f0_0, 0;
    %pushi/vec4 0, 0, 15;
    %assign/vec4 v0x5804fddd75b0_0, 0;
T_1.18 ;
T_1.16 ;
    %jmp T_1.10;
T_1.7 ;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %cmpi/u 16384, 0, 32;
    %jmp/0xz  T_1.20, 5;
    %load/vec4 v0x5804fddd75b0_0;
    %parti/s 8, 0, 2;
    %pad/u 32;
    %cmpi/e 0, 0, 32;
    %jmp/0xz  T_1.22, 4;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
T_1.24 ; Top of for-loop
    %load/vec4 v0x5804fddd7c30_0;
    %cmpi/s 8, 0, 32;
	  %jmp/0xz T_1.25, 5;
    %load/vec4 v0x5804fddd75b0_0;
    %parti/s 7, 8, 5;
    %concati/vec4 0, 0, 3;
    %pad/u 32;
    %load/vec4 v0x5804fddd7c30_0;
    %add;
    %ix/vec4 4;
    %load/vec4a v0x5804fddd7fb0, 4;
    %ix/getv/s 3, v0x5804fddd7c30_0;
    %ix/load 4, 0, 0; Constant delay
    %assign/vec4/a/d v0x5804fddd7690, 0, 4;
T_1.26 ; for-loop step statement
    %load/vec4 v0x5804fddd7c30_0;
    %addi 1, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
    %jmp T_1.24;
T_1.25 ; for-loop exit label
    %jmp T_1.23;
T_1.22 ;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
T_1.27 ; Top of for-loop
    %load/vec4 v0x5804fddd7c30_0;
    %cmpi/s 8, 0, 32;
	  %jmp/0xz T_1.28, 5;
    %ix/getv/s 4, v0x5804fddd7c30_0;
    %load/vec4a v0x5804fddd7690, 4;
    %parti/s 255, 0, 2;
    %ix/getv/s 4, v0x5804fddd7c30_0;
    %load/vec4a v0x5804fddd7690, 4;
    %parti/s 1, 255, 9;
    %concat/vec4; draw_concat_vec4
    %ix/getv/s 3, v0x5804fddd7c30_0;
    %ix/load 4, 0, 0; Constant delay
    %assign/vec4/a/d v0x5804fddd7690, 0, 4;
T_1.29 ; for-loop step statement
    %load/vec4 v0x5804fddd7c30_0;
    %addi 1, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
    %jmp T_1.27;
T_1.28 ; for-loop exit label
T_1.23 ;
    %load/vec4 v0x5804fddd74d0_0;
    %pushi/vec4 18431, 0, 32;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %sub;
    %part/u 1;
    %flag_set/vec4 8;
    %jmp/0xz  T_1.30, 8;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
T_1.32 ; Top of for-loop
    %load/vec4 v0x5804fddd7c30_0;
    %cmpi/s 8, 0, 32;
	  %jmp/0xz T_1.33, 5;
    %ix/getv/s 4, v0x5804fddd7c30_0;
    %load/vec4a v0x5804fddd82d0, 4;
    %ix/getv/s 4, v0x5804fddd7c30_0;
    %load/vec4a v0x5804fddd7690, 4;
    %xor;
    %ix/getv/s 3, v0x5804fddd7c30_0;
    %ix/load 4, 0, 0; Constant delay
    %assign/vec4/a/d v0x5804fddd82d0, 0, 4;
T_1.34 ; for-loop step statement
    %load/vec4 v0x5804fddd7c30_0;
    %addi 1, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
    %jmp T_1.32;
T_1.33 ; for-loop exit label
T_1.30 ;
    %jmp T_1.21;
T_1.20 ;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %cmpi/u 18432, 0, 32;
    %jmp/0xz  T_1.35, 5;
    %load/vec4 v0x5804fddd74d0_0;
    %pushi/vec4 18431, 0, 32;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %sub;
    %part/u 1;
    %flag_set/vec4 8;
    %jmp/0xz  T_1.37, 8;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %subi 16384, 0, 32;
    %ix/load 5, 8, 0;
    %flag_set/imm 4, 0;
    %shiftr 5;
    %ix/vec4 4;
    %load/vec4a v0x5804fddd82d0, 4;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %subi 16384, 0, 32;
    %pushi/vec4 255, 0, 32;
    %and;
    %part/u 1;
    %pushi/vec4 1, 0, 1;
    %xor;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %subi 16384, 0, 32;
    %ix/load 5, 8, 0;
    %flag_set/imm 4, 0;
    %shiftr 5;
    %ix/vec4 4;
    %flag_mov 8, 4;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %subi 16384, 0, 32;
    %pushi/vec4 255, 0, 32;
    %and;
    %ix/vec4 5;
    %flag_or 8, 4;
    %ix/load 6, 0, 0; Constant delay
    %ix/mov 3, 4;
    %flag_mov 4, 8;
    %assign/vec4/a/d v0x5804fddd82d0, 5, 6;
T_1.37 ;
T_1.35 ;
T_1.21 ;
    %load/vec4 v0x5804fddd75b0_0;
    %addi 1, 0, 15;
    %assign/vec4 v0x5804fddd75b0_0, 0;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %cmpi/e 18431, 0, 32;
    %jmp/0xz  T_1.39, 4;
    %pushi/vec4 3, 0, 3;
    %assign/vec4 v0x5804fddd81f0_0, 0;
    %pushi/vec4 0, 0, 15;
    %assign/vec4 v0x5804fddd75b0_0, 0;
    %pushi/vec4 0, 0, 16;
    %assign/vec4 v0x5804fddd7330_0, 0;
T_1.39 ;
    %jmp T_1.10;
T_1.8 ;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %cmpi/u 16384, 0, 32;
    %jmp/0xz  T_1.41, 5;
    %load/vec4 v0x5804fddd75b0_0;
    %parti/s 8, 0, 2;
    %pad/u 32;
    %cmpi/e 0, 0, 32;
    %jmp/0xz  T_1.43, 4;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
T_1.45 ; Top of for-loop
    %load/vec4 v0x5804fddd7c30_0;
    %cmpi/s 8, 0, 32;
	  %jmp/0xz T_1.46, 5;
    %load/vec4 v0x5804fddd75b0_0;
    %parti/s 7, 8, 5;
    %concati/vec4 0, 0, 3;
    %pad/u 32;
    %load/vec4 v0x5804fddd7c30_0;
    %add;
    %ix/vec4 4;
    %load/vec4a v0x5804fddd7fb0, 4;
    %ix/getv/s 3, v0x5804fddd7c30_0;
    %ix/load 4, 0, 0; Constant delay
    %assign/vec4/a/d v0x5804fddd7690, 0, 4;
T_1.47 ; for-loop step statement
    %load/vec4 v0x5804fddd7c30_0;
    %addi 1, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
    %jmp T_1.45;
T_1.46 ; for-loop exit label
    %jmp T_1.44;
T_1.43 ;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
T_1.48 ; Top of for-loop
    %load/vec4 v0x5804fddd7c30_0;
    %cmpi/s 8, 0, 32;
	  %jmp/0xz T_1.49, 5;
    %ix/getv/s 4, v0x5804fddd7c30_0;
    %load/vec4a v0x5804fddd7690, 4;
    %parti/s 255, 0, 2;
    %ix/getv/s 4, v0x5804fddd7c30_0;
    %load/vec4a v0x5804fddd7690, 4;
    %parti/s 1, 255, 9;
    %concat/vec4; draw_concat_vec4
    %ix/getv/s 3, v0x5804fddd7c30_0;
    %ix/load 4, 0, 0; Constant delay
    %assign/vec4/a/d v0x5804fddd7690, 0, 4;
T_1.50 ; for-loop step statement
    %load/vec4 v0x5804fddd7c30_0;
    %addi 1, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
    %jmp T_1.48;
T_1.49 ; for-loop exit label
T_1.44 ;
    %pushi/vec4 0, 0, 12;
    %store/vec4 v0x5804fddd8390_0, 0, 12;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
T_1.51 ; Top of for-loop
    %load/vec4 v0x5804fddd7c30_0;
    %cmpi/s 8, 0, 32;
	  %jmp/0xz T_1.52, 5;
    %ix/getv/s 4, v0x5804fddd7c30_0;
    %load/vec4a v0x5804fddd82d0, 4;
    %ix/getv/s 4, v0x5804fddd7c30_0;
    %load/vec4a v0x5804fddd7690, 4;
    %and;
    %store/vec4 v0x5804fddd7d10_0, 0, 256;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x5804fddd7ed0_0, 0, 32;
T_1.54 ; Top of for-loop
    %load/vec4 v0x5804fddd7ed0_0;
    %cmpi/s 256, 0, 32;
	  %jmp/0xz T_1.55, 5;
    %load/vec4 v0x5804fddd7d10_0;
    %load/vec4 v0x5804fddd7ed0_0;
    %part/s 1;
    %flag_set/vec4 8;
    %jmp/0xz  T_1.57, 8;
    %load/vec4 v0x5804fddd8390_0;
    %addi 1, 0, 12;
    %store/vec4 v0x5804fddd8390_0, 0, 12;
T_1.57 ;
T_1.56 ; for-loop step statement
    %load/vec4 v0x5804fddd7ed0_0;
    %addi 1, 0, 32;
    %store/vec4 v0x5804fddd7ed0_0, 0, 32;
    %jmp T_1.54;
T_1.55 ; for-loop exit label
T_1.53 ; for-loop step statement
    %load/vec4 v0x5804fddd7c30_0;
    %addi 1, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
    %jmp T_1.51;
T_1.52 ; for-loop exit label
    %load/vec4 v0x5804fddd8390_0;
    %pad/u 32;
    %cmpi/u 600, 0, 32;
    %flag_or 5, 4; GT is !LE
    %flag_inv 5;
    %jmp/0xz  T_1.59, 5;
    %load/vec4 v0x5804fddd74d0_0;
    %pushi/vec4 18431, 0, 32;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %sub;
    %part/u 1;
    %inv;
    %ix/load 5, 0, 0;
    %pushi/vec4 18431, 0, 32;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %sub;
    %ix/vec4 4;
    %assign/vec4/off/d v0x5804fddd74d0_0, 4, 5;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
T_1.61 ; Top of for-loop
    %load/vec4 v0x5804fddd7c30_0;
    %cmpi/s 8, 0, 32;
	  %jmp/0xz T_1.62, 5;
    %ix/getv/s 4, v0x5804fddd7c30_0;
    %load/vec4a v0x5804fddd82d0, 4;
    %ix/getv/s 4, v0x5804fddd7c30_0;
    %load/vec4a v0x5804fddd7690, 4;
    %xor;
    %ix/getv/s 3, v0x5804fddd7c30_0;
    %ix/load 4, 0, 0; Constant delay
    %assign/vec4/a/d v0x5804fddd82d0, 0, 4;
T_1.63 ; for-loop step statement
    %load/vec4 v0x5804fddd7c30_0;
    %addi 1, 0, 32;
    %store/vec4 v0x5804fddd7c30_0, 0, 32;
    %jmp T_1.61;
T_1.62 ; for-loop exit label
    %load/vec4 v0x5804fddd7b50_0;
    %addi 1, 0, 8;
    %assign/vec4 v0x5804fddd7b50_0, 0;
T_1.59 ;
T_1.41 ;
    %load/vec4 v0x5804fddd75b0_0;
    %addi 1, 0, 15;
    %assign/vec4 v0x5804fddd75b0_0, 0;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %cmpi/e 18431, 0, 32;
    %jmp/0xz  T_1.64, 4;
    %load/vec4 v0x5804fddd7df0_0;
    %pad/u 32;
    %cmpi/u 2, 0, 32;
    %jmp/0xz  T_1.66, 5;
    %load/vec4 v0x5804fddd7df0_0;
    %addi 1, 0, 3;
    %assign/vec4 v0x5804fddd7df0_0, 0;
    %pushi/vec4 0, 0, 15;
    %assign/vec4 v0x5804fddd75b0_0, 0;
    %jmp T_1.67;
T_1.66 ;
    %pushi/vec4 4, 0, 3;
    %assign/vec4 v0x5804fddd81f0_0, 0;
    %pushi/vec4 0, 0, 15;
    %assign/vec4 v0x5804fddd75b0_0, 0;
    %pushi/vec4 1, 0, 1;
    %assign/vec4 v0x5804fddd7a90_0, 0;
T_1.67 ;
T_1.64 ;
    %jmp T_1.10;
T_1.9 ;
    %pushi/vec4 1, 0, 1;
    %assign/vec4 v0x5804fddd7910_0, 0;
    %load/vec4 v0x5804fddd75b0_0;
    %addi 1, 0, 15;
    %assign/vec4 v0x5804fddd75b0_0, 0;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 32;
    %cmpi/e 2303, 0, 32;
    %jmp/0xz  T_1.68, 4;
    %pushi/vec4 0, 0, 3;
    %assign/vec4 v0x5804fddd81f0_0, 0;
    %pushi/vec4 0, 0, 1;
    %assign/vec4 v0x5804fddd7910_0, 0;
T_1.68 ;
    %jmp T_1.10;
T_1.10 ;
    %pop/vec4 1;
    %load/vec4 v0x5804fddd75b0_0;
    %pad/u 16;
    %assign/vec4 v0x5804fddd7330_0, 0;
T_1.1 ;
    %jmp T_1;
    .thread T_1;
    .scope S_0x5804fddb1fe0;
T_2 ;
    %pushi/vec4 0, 0, 1;
    %store/vec4 v0x5804fddd8610_0, 0, 1;
    %end;
    .thread T_2;
    .scope S_0x5804fddb1fe0;
T_3 ;
    %delay 5000, 0;
    %load/vec4 v0x5804fddd8610_0;
    %inv;
    %store/vec4 v0x5804fddd8610_0, 0, 1;
    %jmp T_3;
    .thread T_3;
    .scope S_0x5804fddb1fe0;
T_4 ;
    %pushi/vec4 0, 0, 1;
    %store/vec4 v0x5804fddd8d30_0, 0, 1;
    %pushi/vec4 0, 0, 1;
    %store/vec4 v0x5804fddd8e00_0, 0, 1;
    %pushi/vec4 0, 0, 8;
    %store/vec4 v0x5804fddd8770_0, 0, 8;
    %pushi/vec4 0, 0, 1;
    %store/vec4 v0x5804fddd8980_0, 0, 1;
    %vpi_call 2 44 "$readmemh", "codeword.mem", v0x5804fddd8c90 {0 0 0};
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x5804fddd8bf0_0, 0, 32;
T_4.0 ; Top of for-loop
    %load/vec4 v0x5804fddd8bf0_0;
    %cmpi/s 2304, 0, 32;
	  %jmp/0xz T_4.1, 5;
    %ix/getv/s 4, v0x5804fddd8bf0_0;
    %load/vec4a v0x5804fddd8c90, 4;
    %ix/getv/s 4, v0x5804fddd8bf0_0;
    %store/vec4a v0x5804fddd86d0, 4, 0;
T_4.2 ; for-loop step statement
    %load/vec4 v0x5804fddd8bf0_0;
    %addi 1, 0, 32;
    %store/vec4 v0x5804fddd8bf0_0, 0, 32;
    %jmp T_4.0;
T_4.1 ; for-loop exit label
    ; show_stmt_assign_vector: Get l-value for compressed ^= operand
    %ix/load 3, 1, 0;
    %flag_set/imm 4, 0;
    %load/vec4a v0x5804fddd86d0, 3;
    %pushi/vec4 4, 0, 8;
    %xor;
    %flag_set/imm 4, 0;
    %ix/load 4, 1, 0;
    %store/vec4a v0x5804fddd86d0, 4, 0;
    ; show_stmt_assign_vector: Get l-value for compressed ^= operand
    %ix/load 3, 12, 0;
    %flag_set/imm 4, 0;
    %load/vec4a v0x5804fddd86d0, 3;
    %pushi/vec4 16, 0, 8;
    %xor;
    %flag_set/imm 4, 0;
    %ix/load 4, 12, 0;
    %store/vec4a v0x5804fddd86d0, 4, 0;
    ; show_stmt_assign_vector: Get l-value for compressed ^= operand
    %ix/load 3, 125, 0;
    %flag_set/imm 4, 0;
    %load/vec4a v0x5804fddd86d0, 3;
    %pushi/vec4 1, 0, 8;
    %xor;
    %flag_set/imm 4, 0;
    %ix/load 4, 125, 0;
    %store/vec4a v0x5804fddd86d0, 4, 0;
    ; show_stmt_assign_vector: Get l-value for compressed ^= operand
    %ix/load 3, 625, 0;
    %flag_set/imm 4, 0;
    %load/vec4a v0x5804fddd86d0, 3;
    %pushi/vec4 1, 0, 8;
    %xor;
    %flag_set/imm 4, 0;
    %ix/load 4, 625, 0;
    %store/vec4a v0x5804fddd86d0, 4, 0;
    ; show_stmt_assign_vector: Get l-value for compressed ^= operand
    %ix/load 3, 1875, 0;
    %flag_set/imm 4, 0;
    %load/vec4a v0x5804fddd86d0, 3;
    %pushi/vec4 1, 0, 8;
    %xor;
    %flag_set/imm 4, 0;
    %ix/load 4, 1875, 0;
    %store/vec4a v0x5804fddd86d0, 4, 0;
    %delay 100000, 0;
    %pushi/vec4 1, 0, 1;
    %store/vec4 v0x5804fddd8d30_0, 0, 1;
    %delay 100000, 0;
    %pushi/vec4 1, 0, 1;
    %store/vec4 v0x5804fddd8e00_0, 0, 1;
    %delay 10000, 0;
    %pushi/vec4 0, 0, 1;
    %store/vec4 v0x5804fddd8e00_0, 0, 1;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x5804fddd8bf0_0, 0, 32;
T_4.3 ; Top of for-loop
    %load/vec4 v0x5804fddd8bf0_0;
    %cmpi/s 2304, 0, 32;
	  %jmp/0xz T_4.4, 5;
    %wait E_0x5804fdd53ba0;
    %ix/getv/s 4, v0x5804fddd8bf0_0;
    %load/vec4a v0x5804fddd86d0, 4;
    %store/vec4 v0x5804fddd8770_0, 0, 8;
    %pushi/vec4 1, 0, 1;
    %store/vec4 v0x5804fddd8980_0, 0, 1;
T_4.5 ; for-loop step statement
    %load/vec4 v0x5804fddd8bf0_0;
    %addi 1, 0, 32;
    %store/vec4 v0x5804fddd8bf0_0, 0, 32;
    %jmp T_4.3;
T_4.4 ; for-loop exit label
    %wait E_0x5804fdd53ba0;
    %pushi/vec4 0, 0, 1;
    %store/vec4 v0x5804fddd8980_0, 0, 1;
    %vpi_call 2 75 "$display", "Decoding started..." {0 0 0};
T_4.6 ;
    %load/vec4 v0x5804fddd8a50_0;
    %cmpi/ne 1, 0, 1;
    %jmp/0xz T_4.7, 6;
    %wait E_0x5804fdd8e8d0;
    %jmp T_4.6;
T_4.7 ;
    %vpi_call 2 77 "$display", "Decoding finished. Found %d errors.", v0x5804fddd8b20_0 {0 0 0};
    %vpi_call 2 80 "$display", "Verifying output data..." {0 0 0};
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x5804fddd8bf0_0, 0, 32;
T_4.8 ; Top of for-loop
    %load/vec4 v0x5804fddd8bf0_0;
    %cmpi/s 2304, 0, 32;
	  %jmp/0xz T_4.9, 5;
T_4.11 ;
    %load/vec4 v0x5804fddd88e0_0;
    %cmpi/ne 1, 0, 1;
    %jmp/0xz T_4.12, 6;
    %wait E_0x5804fdd53df0;
    %jmp T_4.11;
T_4.12 ;
    %load/vec4 v0x5804fddd8810_0;
    %ix/getv/s 4, v0x5804fddd8bf0_0;
    %load/vec4a v0x5804fddd8c90, 4;
    %cmp/ne;
    %jmp/0xz  T_4.13, 6;
    %vpi_call 2 84 "$display", "ERROR at byte %d: Expected %h, Got %h", v0x5804fddd8bf0_0, &A<v0x5804fddd8c90, v0x5804fddd8bf0_0 >, v0x5804fddd8810_0 {0 0 0};
T_4.13 ;
    %wait E_0x5804fdd53ba0;
T_4.10 ; for-loop step statement
    %load/vec4 v0x5804fddd8bf0_0;
    %addi 1, 0, 32;
    %store/vec4 v0x5804fddd8bf0_0, 0, 32;
    %jmp T_4.8;
T_4.9 ; for-loop exit label
    %vpi_call 2 89 "$display", "Verification complete." {0 0 0};
    %vpi_call 2 90 "$finish" {0 0 0};
    %end;
    .thread T_4;
# The file index is used to find the file name in the following table.
:file_names 4;
    "N/A";
    "<interactive>";
    "meggitt_tb.v";
    "meggitt_decoder.v";
