You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1352 lines
97 KiB
Verilog

// © IBM Corp. 2020
// Licensed under the Apache License, Version 2.0 (the "License"), as modified by
// the terms below; you may not use the files in this repository except in
// compliance with the License as modified.
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
//
// Modified Terms:
//
// 1) For the purpose of the patent license granted to you in Section 3 of the
// License, the "Work" hereby includes implementations of the work of authorship
// in physical form.
//
// 2) Notwithstanding any terms to the contrary in the License, any licenses
// necessary for implementation of the Work that are available from OpenPOWER
// via the Power ISA End User License Agreement (EULA) are explicitly excluded
// hereunder, and may be obtained from OpenPOWER under the terms and conditions
// of the EULA.
//
// Unless required by applicable law or agreed to in writing, the reference design
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
// for the specific language governing permissions and limitations under the License.
//
// Additional rights, including the ability to physically implement a softcore that
// is compliant with the required sections of the Power ISA Specification, are
// available at no cost under the terms of the OpenPOWER Power ISA EULA, which can be
// obtained (along with the Power ISA) here: https://openpowerfoundation.org.
`timescale 1 ns / 1 ns
`include "tri_a2o.vh"
module fu_nrm_sh(
f_lza_ex5_sh_rgt_en,
f_lza_ex5_lza_amt_cp1,
f_lza_ex5_lza_dcd64_cp1,
f_lza_ex5_lza_dcd64_cp2,
f_lza_ex5_lza_dcd64_cp3,
f_add_ex5_res,
ex5_sh2_o,
ex5_sh4_25,
ex5_sh4_54,
ex5_shift_extra_cp1,
ex5_shift_extra_cp2,
ex5_sh5_x_b,
ex5_sh5_y_b
);
//--------- SHIFT CONTROLS -----------------
input f_lza_ex5_sh_rgt_en;
input [2:7] f_lza_ex5_lza_amt_cp1;
input [0:2] f_lza_ex5_lza_dcd64_cp1;
input [0:1] f_lza_ex5_lza_dcd64_cp2;
input [0:0] f_lza_ex5_lza_dcd64_cp3;
//--------- SHIFT DATA -----------------
input [0:162] f_add_ex5_res;
//-------- SHIFT OUTPUT ---------------
output [26:72] ex5_sh2_o;
output ex5_sh4_25;
output ex5_sh4_54;
output ex5_shift_extra_cp1;
output ex5_shift_extra_cp2;
output [0:53] ex5_sh5_x_b;
output [0:53] ex5_sh5_y_b;
// ENTITY
parameter tiup = 1'b1;
parameter tidn = 1'b0;
wire [0:120] ex5_sh1_x_b;
wire [0:99] ex5_sh1_y_b;
wire [0:35] ex5_sh1_u_b;
wire [65:118] ex5_sh1_z_b;
wire [0:72] ex5_sh2_x_b;
wire [0:72] ex5_sh2_y_b;
wire [0:57] ex5_sh3_x_b;
wire [0:57] ex5_sh3_y_b;
wire [0:54] ex5_sh4_x_b;
wire [0:54] ex5_sh4_y_b;
wire ex5_sh4_x_00_b;
wire ex5_sh4_y_00_b;
wire ex5_shift_extra_cp1_b;
wire ex5_shift_extra_cp2_b;
wire ex5_shift_extra_cp3_b;
wire ex5_shift_extra_cp4_b;
wire ex5_shift_extra_cp3;
wire ex5_shift_extra_cp4;
wire [0:54] ex5_sh4;
wire [0:57] ex5_sh3;
wire [0:72] ex5_sh2;
wire [0:120] ex5_sh1;
wire [0:2] ex5_shctl_64;
wire [0:1] ex5_shctl_64_cp2;
wire [0:0] ex5_shctl_64_cp3;
wire [0:3] ex5_shctl_16;
wire [0:3] ex5_shctl_04;
wire [0:3] ex5_shctl_01;
wire ex5_shift_extra_10_cp3;
wire ex5_shift_extra_20_cp3_b;
wire ex5_shift_extra_11_cp3;
wire ex5_shift_extra_21_cp3_b;
wire ex5_shift_extra_31_cp3;
wire ex5_shift_extra_10_cp4;
wire ex5_shift_extra_20_cp4_b;
wire ex5_shift_extra_11_cp4;
wire ex5_shift_extra_21_cp4_b;
wire ex5_shift_extra_31_cp4;
wire ex5_shift_extra_00_cp3_b;
wire ex5_shift_extra_00_cp4_b;
////##############################################
//# EX5 logic: shift decode
////##############################################
assign ex5_shctl_64[0:2] = f_lza_ex5_lza_dcd64_cp1[0:2];
assign ex5_shctl_64_cp2[0:1] = f_lza_ex5_lza_dcd64_cp2[0:1];
assign ex5_shctl_64_cp3[0] = f_lza_ex5_lza_dcd64_cp3[0];
assign ex5_shctl_16[0] = (~f_lza_ex5_lza_amt_cp1[2]) & (~f_lza_ex5_lza_amt_cp1[3]); //SH000
assign ex5_shctl_16[1] = (~f_lza_ex5_lza_amt_cp1[2]) & f_lza_ex5_lza_amt_cp1[3]; //SH016
assign ex5_shctl_16[2] = f_lza_ex5_lza_amt_cp1[2] & (~f_lza_ex5_lza_amt_cp1[3]); //SH032
assign ex5_shctl_16[3] = f_lza_ex5_lza_amt_cp1[2] & f_lza_ex5_lza_amt_cp1[3]; //SH048
assign ex5_shctl_04[0] = (~f_lza_ex5_lza_amt_cp1[4]) & (~f_lza_ex5_lza_amt_cp1[5]); //SH000
assign ex5_shctl_04[1] = (~f_lza_ex5_lza_amt_cp1[4]) & f_lza_ex5_lza_amt_cp1[5]; //SH004
assign ex5_shctl_04[2] = f_lza_ex5_lza_amt_cp1[4] & (~f_lza_ex5_lza_amt_cp1[5]); //SH008
assign ex5_shctl_04[3] = f_lza_ex5_lza_amt_cp1[4] & f_lza_ex5_lza_amt_cp1[5]; //SH012
assign ex5_shctl_01[0] = (~f_lza_ex5_lza_amt_cp1[6]) & (~f_lza_ex5_lza_amt_cp1[7]); //SH000
assign ex5_shctl_01[1] = (~f_lza_ex5_lza_amt_cp1[6]) & f_lza_ex5_lza_amt_cp1[7]; //SH001
assign ex5_shctl_01[2] = f_lza_ex5_lza_amt_cp1[6] & (~f_lza_ex5_lza_amt_cp1[7]); //SH002
assign ex5_shctl_01[3] = f_lza_ex5_lza_amt_cp1[6] & f_lza_ex5_lza_amt_cp1[7]; //SH003
////##############################################
//# EX5 logic: shifting
////##############################################
////## big shifts first (come sooner from LZA,
////## when shift amount is [0] we need to start out with a "dummy" leading bit to sacrifice for shift_extra
//// ex5_sh1(0 to 54) <=
//// ( ( tidn & f_add_ex5_res( 0 to 53) ) and (0 to 54 => ex5_shctl_64(0)) ) or --SH000
//// ( ( f_add_ex5_res( 63 to 117) ) and (0 to 54 => ex5_shctl_64(1)) ) or --SH064
//// ( ( f_add_ex5_res(127 to 162) & (36 to 54 => tidn) ) and (0 to 54 => ex5_shctl_64(2)) ) ; --SH128
////
//// ex5_sh1(55 to 64) <=
//// ( ( f_add_ex5_res( 54 to 63 ) ) and (55 to 64 => ex5_shctl_64_cp2(0)) ) or --SH000
//// ( ( f_add_ex5_res(118 to 127) ) and (55 to 64 => ex5_shctl_64_cp2(1)) ) ; --SH064
////
//// ex5_sh1(65 to 108) <=
//// ( ( f_add_ex5_res( 64 to 107) ) and (65 to 108 => ex5_shctl_64_cp2(0)) ) or --SH000
//// ( ( f_add_ex5_res(128 to 162) & (100 to 108=> tidn) ) and (65 to 108 => ex5_shctl_64_cp2(1)) ) or --SH064
//// ( ( f_add_ex5_res(0 to 43) ) and (65 to 108 => f_lza_ex5_sh_rgt_en) ) ; --SHR64
////
//// ex5_sh1(109 to 118) <=
//// ( ( f_add_ex5_res(108 to 117) ) and (109 to 118 => ex5_shctl_64_cp3(0)) ) or --SH000
//// ( ( f_add_ex5_res(44 to 53) ) and (109 to 118 => f_lza_ex5_sh_rgt_en) ) ; --SHR64
////
//// ex5_sh1(119 to 120) <=
//// ( ( f_add_ex5_res(118 to 119) ) and (119 to 120 => ex5_shctl_64_cp3(0)) ); --SH000
////
//// -- sh2 ony needs to be 0:69 , however since sp & dp group16s would be off by 2
//// -- it saves logic in sticky calc to keep 2 more bits
//// -- and use the same sticky or group 16s for sp/dp.
//// -- 70:71 are always part of dp sticky
////
//// ex5_sh2(0 to 72) <= -- (0 to 69) -- shift by multiples of 16
//// ( ex5_sh1( 0 to 72) and (0 to 72 => ex5_shctl_16(0) ) ) or --SH00
//// ( ex5_sh1(16 to 88) and (0 to 72 => ex5_shctl_16(1) ) ) or --SH16
//// ( ex5_sh1(32 to 104) and (0 to 72 => ex5_shctl_16(2) ) ) or --SH32
//// ( ex5_sh1(48 to 120) and (0 to 72 => ex5_shctl_16(3) ) ) ; --SH48
assign ex5_sh2_o[26:72] = ex5_sh2[26:72]; // for sticky bit
//// ex5_sh3(0 to 57) <= -- shift by multiples of 4
//// ( ex5_sh2( 0 to 57) and (0 to 57 => ex5_shctl_04(0) ) ) or --SH00
//// ( ex5_sh2( 4 to 61) and (0 to 57 => ex5_shctl_04(1) ) ) or --SH04
//// ( ex5_sh2( 8 to 65) and (0 to 57 => ex5_shctl_04(2) ) ) or --SH08
//// ( ex5_sh2(12 to 69) and (0 to 57 => ex5_shctl_04(3) ) ) ; --SH12
////
//// ex5_sh4(0 to 54) <= -- shift by multiples of 1
//// ( ex5_sh3(0 to 54) and (0 to 54 => ex5_shctl_01(0) ) ) or --SH00
//// ( ex5_sh3(1 to 55) and (0 to 54 => ex5_shctl_01(1) ) ) or --SH01
//// ( ex5_sh3(2 to 56) and (0 to 54 => ex5_shctl_01(2) ) ) or --SH02
//// ( ex5_sh3(3 to 57) and (0 to 54 => ex5_shctl_01(3) ) ) ; --SH03
assign ex5_sh4_25 = ex5_sh4[25]; // for sticky bit
assign ex5_sh4_54 = ex5_sh4[54]; // for sticky bit
//// ex5_nrm_res(0 to 53) <= -- [53] is for the DP guard bit
//// ( ex5_sh4(0 to 53) and (0 to 53 => not ex5_shift_extra) ) or
//// ( ex5_sh4(1 to 54) and (0 to 53 => ex5_shift_extra) ) ;
//-------------------------------------------------------
assign ex5_sh1_x_b[0] = (~(tidn & ex5_shctl_64[0]));
assign ex5_sh1_x_b[1] = (~(f_add_ex5_res[0] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[2] = (~(f_add_ex5_res[1] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[3] = (~(f_add_ex5_res[2] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[4] = (~(f_add_ex5_res[3] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[5] = (~(f_add_ex5_res[4] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[6] = (~(f_add_ex5_res[5] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[7] = (~(f_add_ex5_res[6] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[8] = (~(f_add_ex5_res[7] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[9] = (~(f_add_ex5_res[8] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[10] = (~(f_add_ex5_res[9] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[11] = (~(f_add_ex5_res[10] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[12] = (~(f_add_ex5_res[11] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[13] = (~(f_add_ex5_res[12] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[14] = (~(f_add_ex5_res[13] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[15] = (~(f_add_ex5_res[14] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[16] = (~(f_add_ex5_res[15] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[17] = (~(f_add_ex5_res[16] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[18] = (~(f_add_ex5_res[17] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[19] = (~(f_add_ex5_res[18] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[20] = (~(f_add_ex5_res[19] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[21] = (~(f_add_ex5_res[20] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[22] = (~(f_add_ex5_res[21] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[23] = (~(f_add_ex5_res[22] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[24] = (~(f_add_ex5_res[23] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[25] = (~(f_add_ex5_res[24] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[26] = (~(f_add_ex5_res[25] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[27] = (~(f_add_ex5_res[26] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[28] = (~(f_add_ex5_res[27] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[29] = (~(f_add_ex5_res[28] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[30] = (~(f_add_ex5_res[29] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[31] = (~(f_add_ex5_res[30] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[32] = (~(f_add_ex5_res[31] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[33] = (~(f_add_ex5_res[32] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[34] = (~(f_add_ex5_res[33] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[35] = (~(f_add_ex5_res[34] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[36] = (~(f_add_ex5_res[35] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[37] = (~(f_add_ex5_res[36] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[38] = (~(f_add_ex5_res[37] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[39] = (~(f_add_ex5_res[38] & ex5_shctl_64[0]));
assign ex5_sh1_x_b[40] = (~(f_add_ex5_res[39] & ex5_shctl_64_cp2[0])); //--------
assign ex5_sh1_x_b[41] = (~(f_add_ex5_res[40] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[42] = (~(f_add_ex5_res[41] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[43] = (~(f_add_ex5_res[42] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[44] = (~(f_add_ex5_res[43] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[45] = (~(f_add_ex5_res[44] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[46] = (~(f_add_ex5_res[45] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[47] = (~(f_add_ex5_res[46] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[48] = (~(f_add_ex5_res[47] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[49] = (~(f_add_ex5_res[48] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[50] = (~(f_add_ex5_res[49] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[51] = (~(f_add_ex5_res[50] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[52] = (~(f_add_ex5_res[51] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[53] = (~(f_add_ex5_res[52] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[54] = (~(f_add_ex5_res[53] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[55] = (~(f_add_ex5_res[54] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[56] = (~(f_add_ex5_res[55] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[57] = (~(f_add_ex5_res[56] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[58] = (~(f_add_ex5_res[57] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[59] = (~(f_add_ex5_res[58] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[60] = (~(f_add_ex5_res[59] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[61] = (~(f_add_ex5_res[60] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[62] = (~(f_add_ex5_res[61] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[63] = (~(f_add_ex5_res[62] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[64] = (~(f_add_ex5_res[63] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[65] = (~(f_add_ex5_res[64] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[66] = (~(f_add_ex5_res[65] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[67] = (~(f_add_ex5_res[66] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[68] = (~(f_add_ex5_res[67] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[69] = (~(f_add_ex5_res[68] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[70] = (~(f_add_ex5_res[69] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[71] = (~(f_add_ex5_res[70] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[72] = (~(f_add_ex5_res[71] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[73] = (~(f_add_ex5_res[72] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[74] = (~(f_add_ex5_res[73] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[75] = (~(f_add_ex5_res[74] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[76] = (~(f_add_ex5_res[75] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[77] = (~(f_add_ex5_res[76] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[78] = (~(f_add_ex5_res[77] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[79] = (~(f_add_ex5_res[78] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[80] = (~(f_add_ex5_res[79] & ex5_shctl_64_cp2[0]));
assign ex5_sh1_x_b[81] = (~(f_add_ex5_res[80] & ex5_shctl_64_cp3[0])); //----
assign ex5_sh1_x_b[82] = (~(f_add_ex5_res[81] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[83] = (~(f_add_ex5_res[82] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[84] = (~(f_add_ex5_res[83] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[85] = (~(f_add_ex5_res[84] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[86] = (~(f_add_ex5_res[85] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[87] = (~(f_add_ex5_res[86] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[88] = (~(f_add_ex5_res[87] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[89] = (~(f_add_ex5_res[88] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[90] = (~(f_add_ex5_res[89] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[91] = (~(f_add_ex5_res[90] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[92] = (~(f_add_ex5_res[91] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[93] = (~(f_add_ex5_res[92] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[94] = (~(f_add_ex5_res[93] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[95] = (~(f_add_ex5_res[94] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[96] = (~(f_add_ex5_res[95] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[97] = (~(f_add_ex5_res[96] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[98] = (~(f_add_ex5_res[97] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[99] = (~(f_add_ex5_res[98] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[100] = (~(f_add_ex5_res[99] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[101] = (~(f_add_ex5_res[100] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[102] = (~(f_add_ex5_res[101] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[103] = (~(f_add_ex5_res[102] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[104] = (~(f_add_ex5_res[103] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[105] = (~(f_add_ex5_res[104] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[106] = (~(f_add_ex5_res[105] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[107] = (~(f_add_ex5_res[106] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[108] = (~(f_add_ex5_res[107] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[109] = (~(f_add_ex5_res[108] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[110] = (~(f_add_ex5_res[109] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[111] = (~(f_add_ex5_res[110] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[112] = (~(f_add_ex5_res[111] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[113] = (~(f_add_ex5_res[112] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[114] = (~(f_add_ex5_res[113] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[115] = (~(f_add_ex5_res[114] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[116] = (~(f_add_ex5_res[115] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[117] = (~(f_add_ex5_res[116] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[118] = (~(f_add_ex5_res[117] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[119] = (~(f_add_ex5_res[118] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_x_b[120] = (~(f_add_ex5_res[119] & ex5_shctl_64_cp3[0]));
assign ex5_sh1_y_b[0] = (~(f_add_ex5_res[63] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[1] = (~(f_add_ex5_res[64] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[2] = (~(f_add_ex5_res[65] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[3] = (~(f_add_ex5_res[66] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[4] = (~(f_add_ex5_res[67] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[5] = (~(f_add_ex5_res[68] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[6] = (~(f_add_ex5_res[69] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[7] = (~(f_add_ex5_res[70] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[8] = (~(f_add_ex5_res[71] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[9] = (~(f_add_ex5_res[72] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[10] = (~(f_add_ex5_res[73] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[11] = (~(f_add_ex5_res[74] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[12] = (~(f_add_ex5_res[75] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[13] = (~(f_add_ex5_res[76] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[14] = (~(f_add_ex5_res[77] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[15] = (~(f_add_ex5_res[78] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[16] = (~(f_add_ex5_res[79] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[17] = (~(f_add_ex5_res[80] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[18] = (~(f_add_ex5_res[81] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[19] = (~(f_add_ex5_res[82] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[20] = (~(f_add_ex5_res[83] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[21] = (~(f_add_ex5_res[84] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[22] = (~(f_add_ex5_res[85] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[23] = (~(f_add_ex5_res[86] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[24] = (~(f_add_ex5_res[87] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[25] = (~(f_add_ex5_res[88] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[26] = (~(f_add_ex5_res[89] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[27] = (~(f_add_ex5_res[90] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[28] = (~(f_add_ex5_res[91] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[29] = (~(f_add_ex5_res[92] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[30] = (~(f_add_ex5_res[93] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[31] = (~(f_add_ex5_res[94] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[32] = (~(f_add_ex5_res[95] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[33] = (~(f_add_ex5_res[96] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[34] = (~(f_add_ex5_res[97] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[35] = (~(f_add_ex5_res[98] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[36] = (~(f_add_ex5_res[99] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[37] = (~(f_add_ex5_res[100] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[38] = (~(f_add_ex5_res[101] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[39] = (~(f_add_ex5_res[102] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[40] = (~(f_add_ex5_res[103] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[41] = (~(f_add_ex5_res[104] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[42] = (~(f_add_ex5_res[105] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[43] = (~(f_add_ex5_res[106] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[44] = (~(f_add_ex5_res[107] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[45] = (~(f_add_ex5_res[108] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[46] = (~(f_add_ex5_res[109] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[47] = (~(f_add_ex5_res[110] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[48] = (~(f_add_ex5_res[111] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[49] = (~(f_add_ex5_res[112] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[50] = (~(f_add_ex5_res[113] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[51] = (~(f_add_ex5_res[114] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[52] = (~(f_add_ex5_res[115] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[53] = (~(f_add_ex5_res[116] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[54] = (~(f_add_ex5_res[117] & ex5_shctl_64[1]));
assign ex5_sh1_y_b[55] = (~(f_add_ex5_res[118] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[56] = (~(f_add_ex5_res[119] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[57] = (~(f_add_ex5_res[120] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[58] = (~(f_add_ex5_res[121] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[59] = (~(f_add_ex5_res[122] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[60] = (~(f_add_ex5_res[123] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[61] = (~(f_add_ex5_res[124] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[62] = (~(f_add_ex5_res[125] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[63] = (~(f_add_ex5_res[126] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[64] = (~(f_add_ex5_res[127] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[65] = (~(f_add_ex5_res[128] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[66] = (~(f_add_ex5_res[129] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[67] = (~(f_add_ex5_res[130] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[68] = (~(f_add_ex5_res[131] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[69] = (~(f_add_ex5_res[132] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[70] = (~(f_add_ex5_res[133] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[71] = (~(f_add_ex5_res[134] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[72] = (~(f_add_ex5_res[135] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[73] = (~(f_add_ex5_res[136] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[74] = (~(f_add_ex5_res[137] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[75] = (~(f_add_ex5_res[138] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[76] = (~(f_add_ex5_res[139] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[77] = (~(f_add_ex5_res[140] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[78] = (~(f_add_ex5_res[141] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[79] = (~(f_add_ex5_res[142] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[80] = (~(f_add_ex5_res[143] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[81] = (~(f_add_ex5_res[144] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[82] = (~(f_add_ex5_res[145] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[83] = (~(f_add_ex5_res[146] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[84] = (~(f_add_ex5_res[147] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[85] = (~(f_add_ex5_res[148] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[86] = (~(f_add_ex5_res[149] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[87] = (~(f_add_ex5_res[150] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[88] = (~(f_add_ex5_res[151] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[89] = (~(f_add_ex5_res[152] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[90] = (~(f_add_ex5_res[153] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[91] = (~(f_add_ex5_res[154] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[92] = (~(f_add_ex5_res[155] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[93] = (~(f_add_ex5_res[156] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[94] = (~(f_add_ex5_res[157] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[95] = (~(f_add_ex5_res[158] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[96] = (~(f_add_ex5_res[159] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[97] = (~(f_add_ex5_res[160] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[98] = (~(f_add_ex5_res[161] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_y_b[99] = (~(f_add_ex5_res[162] & ex5_shctl_64_cp2[1]));
assign ex5_sh1_u_b[0] = (~(f_add_ex5_res[127] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[1] = (~(f_add_ex5_res[128] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[2] = (~(f_add_ex5_res[129] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[3] = (~(f_add_ex5_res[130] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[4] = (~(f_add_ex5_res[131] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[5] = (~(f_add_ex5_res[132] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[6] = (~(f_add_ex5_res[133] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[7] = (~(f_add_ex5_res[134] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[8] = (~(f_add_ex5_res[135] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[9] = (~(f_add_ex5_res[136] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[10] = (~(f_add_ex5_res[137] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[11] = (~(f_add_ex5_res[138] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[12] = (~(f_add_ex5_res[139] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[13] = (~(f_add_ex5_res[140] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[14] = (~(f_add_ex5_res[141] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[15] = (~(f_add_ex5_res[142] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[16] = (~(f_add_ex5_res[143] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[17] = (~(f_add_ex5_res[144] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[18] = (~(f_add_ex5_res[145] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[19] = (~(f_add_ex5_res[146] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[20] = (~(f_add_ex5_res[147] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[21] = (~(f_add_ex5_res[148] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[22] = (~(f_add_ex5_res[149] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[23] = (~(f_add_ex5_res[150] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[24] = (~(f_add_ex5_res[151] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[25] = (~(f_add_ex5_res[152] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[26] = (~(f_add_ex5_res[153] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[27] = (~(f_add_ex5_res[154] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[28] = (~(f_add_ex5_res[155] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[29] = (~(f_add_ex5_res[156] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[30] = (~(f_add_ex5_res[157] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[31] = (~(f_add_ex5_res[158] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[32] = (~(f_add_ex5_res[159] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[33] = (~(f_add_ex5_res[160] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[34] = (~(f_add_ex5_res[161] & ex5_shctl_64[2]));
assign ex5_sh1_u_b[35] = (~(f_add_ex5_res[162] & ex5_shctl_64[2]));
assign ex5_sh1_z_b[65] = (~(f_add_ex5_res[0] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[66] = (~(f_add_ex5_res[1] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[67] = (~(f_add_ex5_res[2] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[68] = (~(f_add_ex5_res[3] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[69] = (~(f_add_ex5_res[4] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[70] = (~(f_add_ex5_res[5] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[71] = (~(f_add_ex5_res[6] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[72] = (~(f_add_ex5_res[7] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[73] = (~(f_add_ex5_res[8] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[74] = (~(f_add_ex5_res[9] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[75] = (~(f_add_ex5_res[10] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[76] = (~(f_add_ex5_res[11] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[77] = (~(f_add_ex5_res[12] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[78] = (~(f_add_ex5_res[13] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[79] = (~(f_add_ex5_res[14] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[80] = (~(f_add_ex5_res[15] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[81] = (~(f_add_ex5_res[16] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[82] = (~(f_add_ex5_res[17] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[83] = (~(f_add_ex5_res[18] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[84] = (~(f_add_ex5_res[19] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[85] = (~(f_add_ex5_res[20] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[86] = (~(f_add_ex5_res[21] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[87] = (~(f_add_ex5_res[22] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[88] = (~(f_add_ex5_res[23] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[89] = (~(f_add_ex5_res[24] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[90] = (~(f_add_ex5_res[25] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[91] = (~(f_add_ex5_res[26] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[92] = (~(f_add_ex5_res[27] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[93] = (~(f_add_ex5_res[28] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[94] = (~(f_add_ex5_res[29] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[95] = (~(f_add_ex5_res[30] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[96] = (~(f_add_ex5_res[31] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[97] = (~(f_add_ex5_res[32] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[98] = (~(f_add_ex5_res[33] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[99] = (~(f_add_ex5_res[34] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[100] = (~(f_add_ex5_res[35] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[101] = (~(f_add_ex5_res[36] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[102] = (~(f_add_ex5_res[37] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[103] = (~(f_add_ex5_res[38] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[104] = (~(f_add_ex5_res[39] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[105] = (~(f_add_ex5_res[40] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[106] = (~(f_add_ex5_res[41] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[107] = (~(f_add_ex5_res[42] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[108] = (~(f_add_ex5_res[43] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[109] = (~(f_add_ex5_res[44] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[110] = (~(f_add_ex5_res[45] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[111] = (~(f_add_ex5_res[46] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[112] = (~(f_add_ex5_res[47] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[113] = (~(f_add_ex5_res[48] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[114] = (~(f_add_ex5_res[49] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[115] = (~(f_add_ex5_res[50] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[116] = (~(f_add_ex5_res[51] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[117] = (~(f_add_ex5_res[52] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1_z_b[118] = (~(f_add_ex5_res[53] & f_lza_ex5_sh_rgt_en));
assign ex5_sh1[0] = (~(ex5_sh1_x_b[0] & ex5_sh1_y_b[0] & ex5_sh1_u_b[0]));
assign ex5_sh1[1] = (~(ex5_sh1_x_b[1] & ex5_sh1_y_b[1] & ex5_sh1_u_b[1]));
assign ex5_sh1[2] = (~(ex5_sh1_x_b[2] & ex5_sh1_y_b[2] & ex5_sh1_u_b[2]));
assign ex5_sh1[3] = (~(ex5_sh1_x_b[3] & ex5_sh1_y_b[3] & ex5_sh1_u_b[3]));
assign ex5_sh1[4] = (~(ex5_sh1_x_b[4] & ex5_sh1_y_b[4] & ex5_sh1_u_b[4]));
assign ex5_sh1[5] = (~(ex5_sh1_x_b[5] & ex5_sh1_y_b[5] & ex5_sh1_u_b[5]));
assign ex5_sh1[6] = (~(ex5_sh1_x_b[6] & ex5_sh1_y_b[6] & ex5_sh1_u_b[6]));
assign ex5_sh1[7] = (~(ex5_sh1_x_b[7] & ex5_sh1_y_b[7] & ex5_sh1_u_b[7]));
assign ex5_sh1[8] = (~(ex5_sh1_x_b[8] & ex5_sh1_y_b[8] & ex5_sh1_u_b[8]));
assign ex5_sh1[9] = (~(ex5_sh1_x_b[9] & ex5_sh1_y_b[9] & ex5_sh1_u_b[9]));
assign ex5_sh1[10] = (~(ex5_sh1_x_b[10] & ex5_sh1_y_b[10] & ex5_sh1_u_b[10]));
assign ex5_sh1[11] = (~(ex5_sh1_x_b[11] & ex5_sh1_y_b[11] & ex5_sh1_u_b[11]));
assign ex5_sh1[12] = (~(ex5_sh1_x_b[12] & ex5_sh1_y_b[12] & ex5_sh1_u_b[12]));
assign ex5_sh1[13] = (~(ex5_sh1_x_b[13] & ex5_sh1_y_b[13] & ex5_sh1_u_b[13]));
assign ex5_sh1[14] = (~(ex5_sh1_x_b[14] & ex5_sh1_y_b[14] & ex5_sh1_u_b[14]));
assign ex5_sh1[15] = (~(ex5_sh1_x_b[15] & ex5_sh1_y_b[15] & ex5_sh1_u_b[15]));
assign ex5_sh1[16] = (~(ex5_sh1_x_b[16] & ex5_sh1_y_b[16] & ex5_sh1_u_b[16]));
assign ex5_sh1[17] = (~(ex5_sh1_x_b[17] & ex5_sh1_y_b[17] & ex5_sh1_u_b[17]));
assign ex5_sh1[18] = (~(ex5_sh1_x_b[18] & ex5_sh1_y_b[18] & ex5_sh1_u_b[18]));
assign ex5_sh1[19] = (~(ex5_sh1_x_b[19] & ex5_sh1_y_b[19] & ex5_sh1_u_b[19]));
assign ex5_sh1[20] = (~(ex5_sh1_x_b[20] & ex5_sh1_y_b[20] & ex5_sh1_u_b[20]));
assign ex5_sh1[21] = (~(ex5_sh1_x_b[21] & ex5_sh1_y_b[21] & ex5_sh1_u_b[21]));
assign ex5_sh1[22] = (~(ex5_sh1_x_b[22] & ex5_sh1_y_b[22] & ex5_sh1_u_b[22]));
assign ex5_sh1[23] = (~(ex5_sh1_x_b[23] & ex5_sh1_y_b[23] & ex5_sh1_u_b[23]));
assign ex5_sh1[24] = (~(ex5_sh1_x_b[24] & ex5_sh1_y_b[24] & ex5_sh1_u_b[24]));
assign ex5_sh1[25] = (~(ex5_sh1_x_b[25] & ex5_sh1_y_b[25] & ex5_sh1_u_b[25]));
assign ex5_sh1[26] = (~(ex5_sh1_x_b[26] & ex5_sh1_y_b[26] & ex5_sh1_u_b[26]));
assign ex5_sh1[27] = (~(ex5_sh1_x_b[27] & ex5_sh1_y_b[27] & ex5_sh1_u_b[27]));
assign ex5_sh1[28] = (~(ex5_sh1_x_b[28] & ex5_sh1_y_b[28] & ex5_sh1_u_b[28]));
assign ex5_sh1[29] = (~(ex5_sh1_x_b[29] & ex5_sh1_y_b[29] & ex5_sh1_u_b[29]));
assign ex5_sh1[30] = (~(ex5_sh1_x_b[30] & ex5_sh1_y_b[30] & ex5_sh1_u_b[30]));
assign ex5_sh1[31] = (~(ex5_sh1_x_b[31] & ex5_sh1_y_b[31] & ex5_sh1_u_b[31]));
assign ex5_sh1[32] = (~(ex5_sh1_x_b[32] & ex5_sh1_y_b[32] & ex5_sh1_u_b[32]));
assign ex5_sh1[33] = (~(ex5_sh1_x_b[33] & ex5_sh1_y_b[33] & ex5_sh1_u_b[33]));
assign ex5_sh1[34] = (~(ex5_sh1_x_b[34] & ex5_sh1_y_b[34] & ex5_sh1_u_b[34]));
assign ex5_sh1[35] = (~(ex5_sh1_x_b[35] & ex5_sh1_y_b[35] & ex5_sh1_u_b[35]));
assign ex5_sh1[36] = (~(ex5_sh1_x_b[36] & ex5_sh1_y_b[36]));
assign ex5_sh1[37] = (~(ex5_sh1_x_b[37] & ex5_sh1_y_b[37]));
assign ex5_sh1[38] = (~(ex5_sh1_x_b[38] & ex5_sh1_y_b[38]));
assign ex5_sh1[39] = (~(ex5_sh1_x_b[39] & ex5_sh1_y_b[39]));
assign ex5_sh1[40] = (~(ex5_sh1_x_b[40] & ex5_sh1_y_b[40]));
assign ex5_sh1[41] = (~(ex5_sh1_x_b[41] & ex5_sh1_y_b[41]));
assign ex5_sh1[42] = (~(ex5_sh1_x_b[42] & ex5_sh1_y_b[42]));
assign ex5_sh1[43] = (~(ex5_sh1_x_b[43] & ex5_sh1_y_b[43]));
assign ex5_sh1[44] = (~(ex5_sh1_x_b[44] & ex5_sh1_y_b[44]));
assign ex5_sh1[45] = (~(ex5_sh1_x_b[45] & ex5_sh1_y_b[45]));
assign ex5_sh1[46] = (~(ex5_sh1_x_b[46] & ex5_sh1_y_b[46]));
assign ex5_sh1[47] = (~(ex5_sh1_x_b[47] & ex5_sh1_y_b[47]));
assign ex5_sh1[48] = (~(ex5_sh1_x_b[48] & ex5_sh1_y_b[48]));
assign ex5_sh1[49] = (~(ex5_sh1_x_b[49] & ex5_sh1_y_b[49]));
assign ex5_sh1[50] = (~(ex5_sh1_x_b[50] & ex5_sh1_y_b[50]));
assign ex5_sh1[51] = (~(ex5_sh1_x_b[51] & ex5_sh1_y_b[51]));
assign ex5_sh1[52] = (~(ex5_sh1_x_b[52] & ex5_sh1_y_b[52]));
assign ex5_sh1[53] = (~(ex5_sh1_x_b[53] & ex5_sh1_y_b[53]));
assign ex5_sh1[54] = (~(ex5_sh1_x_b[54] & ex5_sh1_y_b[54]));
assign ex5_sh1[55] = (~(ex5_sh1_x_b[55] & ex5_sh1_y_b[55]));
assign ex5_sh1[56] = (~(ex5_sh1_x_b[56] & ex5_sh1_y_b[56]));
assign ex5_sh1[57] = (~(ex5_sh1_x_b[57] & ex5_sh1_y_b[57]));
assign ex5_sh1[58] = (~(ex5_sh1_x_b[58] & ex5_sh1_y_b[58]));
assign ex5_sh1[59] = (~(ex5_sh1_x_b[59] & ex5_sh1_y_b[59]));
assign ex5_sh1[60] = (~(ex5_sh1_x_b[60] & ex5_sh1_y_b[60]));
assign ex5_sh1[61] = (~(ex5_sh1_x_b[61] & ex5_sh1_y_b[61]));
assign ex5_sh1[62] = (~(ex5_sh1_x_b[62] & ex5_sh1_y_b[62]));
assign ex5_sh1[63] = (~(ex5_sh1_x_b[63] & ex5_sh1_y_b[63]));
assign ex5_sh1[64] = (~(ex5_sh1_x_b[64] & ex5_sh1_y_b[64]));
assign ex5_sh1[65] = (~(ex5_sh1_x_b[65] & ex5_sh1_y_b[65] & ex5_sh1_z_b[65]));
assign ex5_sh1[66] = (~(ex5_sh1_x_b[66] & ex5_sh1_y_b[66] & ex5_sh1_z_b[66]));
assign ex5_sh1[67] = (~(ex5_sh1_x_b[67] & ex5_sh1_y_b[67] & ex5_sh1_z_b[67]));
assign ex5_sh1[68] = (~(ex5_sh1_x_b[68] & ex5_sh1_y_b[68] & ex5_sh1_z_b[68]));
assign ex5_sh1[69] = (~(ex5_sh1_x_b[69] & ex5_sh1_y_b[69] & ex5_sh1_z_b[69]));
assign ex5_sh1[70] = (~(ex5_sh1_x_b[70] & ex5_sh1_y_b[70] & ex5_sh1_z_b[70]));
assign ex5_sh1[71] = (~(ex5_sh1_x_b[71] & ex5_sh1_y_b[71] & ex5_sh1_z_b[71]));
assign ex5_sh1[72] = (~(ex5_sh1_x_b[72] & ex5_sh1_y_b[72] & ex5_sh1_z_b[72]));
assign ex5_sh1[73] = (~(ex5_sh1_x_b[73] & ex5_sh1_y_b[73] & ex5_sh1_z_b[73]));
assign ex5_sh1[74] = (~(ex5_sh1_x_b[74] & ex5_sh1_y_b[74] & ex5_sh1_z_b[74]));
assign ex5_sh1[75] = (~(ex5_sh1_x_b[75] & ex5_sh1_y_b[75] & ex5_sh1_z_b[75]));
assign ex5_sh1[76] = (~(ex5_sh1_x_b[76] & ex5_sh1_y_b[76] & ex5_sh1_z_b[76]));
assign ex5_sh1[77] = (~(ex5_sh1_x_b[77] & ex5_sh1_y_b[77] & ex5_sh1_z_b[77]));
assign ex5_sh1[78] = (~(ex5_sh1_x_b[78] & ex5_sh1_y_b[78] & ex5_sh1_z_b[78]));
assign ex5_sh1[79] = (~(ex5_sh1_x_b[79] & ex5_sh1_y_b[79] & ex5_sh1_z_b[79]));
assign ex5_sh1[80] = (~(ex5_sh1_x_b[80] & ex5_sh1_y_b[80] & ex5_sh1_z_b[80]));
assign ex5_sh1[81] = (~(ex5_sh1_x_b[81] & ex5_sh1_y_b[81] & ex5_sh1_z_b[81]));
assign ex5_sh1[82] = (~(ex5_sh1_x_b[82] & ex5_sh1_y_b[82] & ex5_sh1_z_b[82]));
assign ex5_sh1[83] = (~(ex5_sh1_x_b[83] & ex5_sh1_y_b[83] & ex5_sh1_z_b[83]));
assign ex5_sh1[84] = (~(ex5_sh1_x_b[84] & ex5_sh1_y_b[84] & ex5_sh1_z_b[84]));
assign ex5_sh1[85] = (~(ex5_sh1_x_b[85] & ex5_sh1_y_b[85] & ex5_sh1_z_b[85]));
assign ex5_sh1[86] = (~(ex5_sh1_x_b[86] & ex5_sh1_y_b[86] & ex5_sh1_z_b[86]));
assign ex5_sh1[87] = (~(ex5_sh1_x_b[87] & ex5_sh1_y_b[87] & ex5_sh1_z_b[87]));
assign ex5_sh1[88] = (~(ex5_sh1_x_b[88] & ex5_sh1_y_b[88] & ex5_sh1_z_b[88]));
assign ex5_sh1[89] = (~(ex5_sh1_x_b[89] & ex5_sh1_y_b[89] & ex5_sh1_z_b[89]));
assign ex5_sh1[90] = (~(ex5_sh1_x_b[90] & ex5_sh1_y_b[90] & ex5_sh1_z_b[90]));
assign ex5_sh1[91] = (~(ex5_sh1_x_b[91] & ex5_sh1_y_b[91] & ex5_sh1_z_b[91]));
assign ex5_sh1[92] = (~(ex5_sh1_x_b[92] & ex5_sh1_y_b[92] & ex5_sh1_z_b[92]));
assign ex5_sh1[93] = (~(ex5_sh1_x_b[93] & ex5_sh1_y_b[93] & ex5_sh1_z_b[93]));
assign ex5_sh1[94] = (~(ex5_sh1_x_b[94] & ex5_sh1_y_b[94] & ex5_sh1_z_b[94]));
assign ex5_sh1[95] = (~(ex5_sh1_x_b[95] & ex5_sh1_y_b[95] & ex5_sh1_z_b[95]));
assign ex5_sh1[96] = (~(ex5_sh1_x_b[96] & ex5_sh1_y_b[96] & ex5_sh1_z_b[96]));
assign ex5_sh1[97] = (~(ex5_sh1_x_b[97] & ex5_sh1_y_b[97] & ex5_sh1_z_b[97]));
assign ex5_sh1[98] = (~(ex5_sh1_x_b[98] & ex5_sh1_y_b[98] & ex5_sh1_z_b[98]));
assign ex5_sh1[99] = (~(ex5_sh1_x_b[99] & ex5_sh1_y_b[99] & ex5_sh1_z_b[99]));
assign ex5_sh1[100] = (~(ex5_sh1_x_b[100] & ex5_sh1_z_b[100]));
assign ex5_sh1[101] = (~(ex5_sh1_x_b[101] & ex5_sh1_z_b[101]));
assign ex5_sh1[102] = (~(ex5_sh1_x_b[102] & ex5_sh1_z_b[102]));
assign ex5_sh1[103] = (~(ex5_sh1_x_b[103] & ex5_sh1_z_b[103]));
assign ex5_sh1[104] = (~(ex5_sh1_x_b[104] & ex5_sh1_z_b[104]));
assign ex5_sh1[105] = (~(ex5_sh1_x_b[105] & ex5_sh1_z_b[105]));
assign ex5_sh1[106] = (~(ex5_sh1_x_b[106] & ex5_sh1_z_b[106]));
assign ex5_sh1[107] = (~(ex5_sh1_x_b[107] & ex5_sh1_z_b[107]));
assign ex5_sh1[108] = (~(ex5_sh1_x_b[108] & ex5_sh1_z_b[108]));
assign ex5_sh1[109] = (~(ex5_sh1_x_b[109] & ex5_sh1_z_b[109]));
assign ex5_sh1[110] = (~(ex5_sh1_x_b[110] & ex5_sh1_z_b[110]));
assign ex5_sh1[111] = (~(ex5_sh1_x_b[111] & ex5_sh1_z_b[111]));
assign ex5_sh1[112] = (~(ex5_sh1_x_b[112] & ex5_sh1_z_b[112]));
assign ex5_sh1[113] = (~(ex5_sh1_x_b[113] & ex5_sh1_z_b[113]));
assign ex5_sh1[114] = (~(ex5_sh1_x_b[114] & ex5_sh1_z_b[114]));
assign ex5_sh1[115] = (~(ex5_sh1_x_b[115] & ex5_sh1_z_b[115]));
assign ex5_sh1[116] = (~(ex5_sh1_x_b[116] & ex5_sh1_z_b[116]));
assign ex5_sh1[117] = (~(ex5_sh1_x_b[117] & ex5_sh1_z_b[117]));
assign ex5_sh1[118] = (~(ex5_sh1_x_b[118] & ex5_sh1_z_b[118]));
assign ex5_sh1[119] = (~(ex5_sh1_x_b[119]));
assign ex5_sh1[120] = (~(ex5_sh1_x_b[120]));
//----------------------------------------------------------------------------------
assign ex5_sh2_x_b[0] = (~((ex5_sh1[0] & ex5_shctl_16[0]) | (ex5_sh1[16] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[1] = (~((ex5_sh1[1] & ex5_shctl_16[0]) | (ex5_sh1[17] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[2] = (~((ex5_sh1[2] & ex5_shctl_16[0]) | (ex5_sh1[18] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[3] = (~((ex5_sh1[3] & ex5_shctl_16[0]) | (ex5_sh1[19] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[4] = (~((ex5_sh1[4] & ex5_shctl_16[0]) | (ex5_sh1[20] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[5] = (~((ex5_sh1[5] & ex5_shctl_16[0]) | (ex5_sh1[21] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[6] = (~((ex5_sh1[6] & ex5_shctl_16[0]) | (ex5_sh1[22] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[7] = (~((ex5_sh1[7] & ex5_shctl_16[0]) | (ex5_sh1[23] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[8] = (~((ex5_sh1[8] & ex5_shctl_16[0]) | (ex5_sh1[24] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[9] = (~((ex5_sh1[9] & ex5_shctl_16[0]) | (ex5_sh1[25] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[10] = (~((ex5_sh1[10] & ex5_shctl_16[0]) | (ex5_sh1[26] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[11] = (~((ex5_sh1[11] & ex5_shctl_16[0]) | (ex5_sh1[27] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[12] = (~((ex5_sh1[12] & ex5_shctl_16[0]) | (ex5_sh1[28] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[13] = (~((ex5_sh1[13] & ex5_shctl_16[0]) | (ex5_sh1[29] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[14] = (~((ex5_sh1[14] & ex5_shctl_16[0]) | (ex5_sh1[30] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[15] = (~((ex5_sh1[15] & ex5_shctl_16[0]) | (ex5_sh1[31] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[16] = (~((ex5_sh1[16] & ex5_shctl_16[0]) | (ex5_sh1[32] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[17] = (~((ex5_sh1[17] & ex5_shctl_16[0]) | (ex5_sh1[33] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[18] = (~((ex5_sh1[18] & ex5_shctl_16[0]) | (ex5_sh1[34] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[19] = (~((ex5_sh1[19] & ex5_shctl_16[0]) | (ex5_sh1[35] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[20] = (~((ex5_sh1[20] & ex5_shctl_16[0]) | (ex5_sh1[36] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[21] = (~((ex5_sh1[21] & ex5_shctl_16[0]) | (ex5_sh1[37] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[22] = (~((ex5_sh1[22] & ex5_shctl_16[0]) | (ex5_sh1[38] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[23] = (~((ex5_sh1[23] & ex5_shctl_16[0]) | (ex5_sh1[39] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[24] = (~((ex5_sh1[24] & ex5_shctl_16[0]) | (ex5_sh1[40] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[25] = (~((ex5_sh1[25] & ex5_shctl_16[0]) | (ex5_sh1[41] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[26] = (~((ex5_sh1[26] & ex5_shctl_16[0]) | (ex5_sh1[42] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[27] = (~((ex5_sh1[27] & ex5_shctl_16[0]) | (ex5_sh1[43] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[28] = (~((ex5_sh1[28] & ex5_shctl_16[0]) | (ex5_sh1[44] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[29] = (~((ex5_sh1[29] & ex5_shctl_16[0]) | (ex5_sh1[45] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[30] = (~((ex5_sh1[30] & ex5_shctl_16[0]) | (ex5_sh1[46] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[31] = (~((ex5_sh1[31] & ex5_shctl_16[0]) | (ex5_sh1[47] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[32] = (~((ex5_sh1[32] & ex5_shctl_16[0]) | (ex5_sh1[48] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[33] = (~((ex5_sh1[33] & ex5_shctl_16[0]) | (ex5_sh1[49] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[34] = (~((ex5_sh1[34] & ex5_shctl_16[0]) | (ex5_sh1[50] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[35] = (~((ex5_sh1[35] & ex5_shctl_16[0]) | (ex5_sh1[51] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[36] = (~((ex5_sh1[36] & ex5_shctl_16[0]) | (ex5_sh1[52] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[37] = (~((ex5_sh1[37] & ex5_shctl_16[0]) | (ex5_sh1[53] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[38] = (~((ex5_sh1[38] & ex5_shctl_16[0]) | (ex5_sh1[54] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[39] = (~((ex5_sh1[39] & ex5_shctl_16[0]) | (ex5_sh1[55] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[40] = (~((ex5_sh1[40] & ex5_shctl_16[0]) | (ex5_sh1[56] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[41] = (~((ex5_sh1[41] & ex5_shctl_16[0]) | (ex5_sh1[57] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[42] = (~((ex5_sh1[42] & ex5_shctl_16[0]) | (ex5_sh1[58] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[43] = (~((ex5_sh1[43] & ex5_shctl_16[0]) | (ex5_sh1[59] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[44] = (~((ex5_sh1[44] & ex5_shctl_16[0]) | (ex5_sh1[60] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[45] = (~((ex5_sh1[45] & ex5_shctl_16[0]) | (ex5_sh1[61] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[46] = (~((ex5_sh1[46] & ex5_shctl_16[0]) | (ex5_sh1[62] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[47] = (~((ex5_sh1[47] & ex5_shctl_16[0]) | (ex5_sh1[63] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[48] = (~((ex5_sh1[48] & ex5_shctl_16[0]) | (ex5_sh1[64] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[49] = (~((ex5_sh1[49] & ex5_shctl_16[0]) | (ex5_sh1[65] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[50] = (~((ex5_sh1[50] & ex5_shctl_16[0]) | (ex5_sh1[66] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[51] = (~((ex5_sh1[51] & ex5_shctl_16[0]) | (ex5_sh1[67] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[52] = (~((ex5_sh1[52] & ex5_shctl_16[0]) | (ex5_sh1[68] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[53] = (~((ex5_sh1[53] & ex5_shctl_16[0]) | (ex5_sh1[69] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[54] = (~((ex5_sh1[54] & ex5_shctl_16[0]) | (ex5_sh1[70] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[55] = (~((ex5_sh1[55] & ex5_shctl_16[0]) | (ex5_sh1[71] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[56] = (~((ex5_sh1[56] & ex5_shctl_16[0]) | (ex5_sh1[72] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[57] = (~((ex5_sh1[57] & ex5_shctl_16[0]) | (ex5_sh1[73] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[58] = (~((ex5_sh1[58] & ex5_shctl_16[0]) | (ex5_sh1[74] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[59] = (~((ex5_sh1[59] & ex5_shctl_16[0]) | (ex5_sh1[75] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[60] = (~((ex5_sh1[60] & ex5_shctl_16[0]) | (ex5_sh1[76] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[61] = (~((ex5_sh1[61] & ex5_shctl_16[0]) | (ex5_sh1[77] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[62] = (~((ex5_sh1[62] & ex5_shctl_16[0]) | (ex5_sh1[78] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[63] = (~((ex5_sh1[63] & ex5_shctl_16[0]) | (ex5_sh1[79] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[64] = (~((ex5_sh1[64] & ex5_shctl_16[0]) | (ex5_sh1[80] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[65] = (~((ex5_sh1[65] & ex5_shctl_16[0]) | (ex5_sh1[81] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[66] = (~((ex5_sh1[66] & ex5_shctl_16[0]) | (ex5_sh1[82] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[67] = (~((ex5_sh1[67] & ex5_shctl_16[0]) | (ex5_sh1[83] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[68] = (~((ex5_sh1[68] & ex5_shctl_16[0]) | (ex5_sh1[84] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[69] = (~((ex5_sh1[69] & ex5_shctl_16[0]) | (ex5_sh1[85] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[70] = (~((ex5_sh1[70] & ex5_shctl_16[0]) | (ex5_sh1[86] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[71] = (~((ex5_sh1[71] & ex5_shctl_16[0]) | (ex5_sh1[87] & ex5_shctl_16[1])));
assign ex5_sh2_x_b[72] = (~((ex5_sh1[72] & ex5_shctl_16[0]) | (ex5_sh1[88] & ex5_shctl_16[1])));
assign ex5_sh2_y_b[0] = (~((ex5_sh1[32] & ex5_shctl_16[2]) | (ex5_sh1[48] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[1] = (~((ex5_sh1[33] & ex5_shctl_16[2]) | (ex5_sh1[49] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[2] = (~((ex5_sh1[34] & ex5_shctl_16[2]) | (ex5_sh1[50] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[3] = (~((ex5_sh1[35] & ex5_shctl_16[2]) | (ex5_sh1[51] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[4] = (~((ex5_sh1[36] & ex5_shctl_16[2]) | (ex5_sh1[52] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[5] = (~((ex5_sh1[37] & ex5_shctl_16[2]) | (ex5_sh1[53] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[6] = (~((ex5_sh1[38] & ex5_shctl_16[2]) | (ex5_sh1[54] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[7] = (~((ex5_sh1[39] & ex5_shctl_16[2]) | (ex5_sh1[55] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[8] = (~((ex5_sh1[40] & ex5_shctl_16[2]) | (ex5_sh1[56] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[9] = (~((ex5_sh1[41] & ex5_shctl_16[2]) | (ex5_sh1[57] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[10] = (~((ex5_sh1[42] & ex5_shctl_16[2]) | (ex5_sh1[58] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[11] = (~((ex5_sh1[43] & ex5_shctl_16[2]) | (ex5_sh1[59] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[12] = (~((ex5_sh1[44] & ex5_shctl_16[2]) | (ex5_sh1[60] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[13] = (~((ex5_sh1[45] & ex5_shctl_16[2]) | (ex5_sh1[61] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[14] = (~((ex5_sh1[46] & ex5_shctl_16[2]) | (ex5_sh1[62] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[15] = (~((ex5_sh1[47] & ex5_shctl_16[2]) | (ex5_sh1[63] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[16] = (~((ex5_sh1[48] & ex5_shctl_16[2]) | (ex5_sh1[64] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[17] = (~((ex5_sh1[49] & ex5_shctl_16[2]) | (ex5_sh1[65] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[18] = (~((ex5_sh1[50] & ex5_shctl_16[2]) | (ex5_sh1[66] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[19] = (~((ex5_sh1[51] & ex5_shctl_16[2]) | (ex5_sh1[67] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[20] = (~((ex5_sh1[52] & ex5_shctl_16[2]) | (ex5_sh1[68] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[21] = (~((ex5_sh1[53] & ex5_shctl_16[2]) | (ex5_sh1[69] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[22] = (~((ex5_sh1[54] & ex5_shctl_16[2]) | (ex5_sh1[70] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[23] = (~((ex5_sh1[55] & ex5_shctl_16[2]) | (ex5_sh1[71] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[24] = (~((ex5_sh1[56] & ex5_shctl_16[2]) | (ex5_sh1[72] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[25] = (~((ex5_sh1[57] & ex5_shctl_16[2]) | (ex5_sh1[73] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[26] = (~((ex5_sh1[58] & ex5_shctl_16[2]) | (ex5_sh1[74] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[27] = (~((ex5_sh1[59] & ex5_shctl_16[2]) | (ex5_sh1[75] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[28] = (~((ex5_sh1[60] & ex5_shctl_16[2]) | (ex5_sh1[76] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[29] = (~((ex5_sh1[61] & ex5_shctl_16[2]) | (ex5_sh1[77] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[30] = (~((ex5_sh1[62] & ex5_shctl_16[2]) | (ex5_sh1[78] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[31] = (~((ex5_sh1[63] & ex5_shctl_16[2]) | (ex5_sh1[79] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[32] = (~((ex5_sh1[64] & ex5_shctl_16[2]) | (ex5_sh1[80] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[33] = (~((ex5_sh1[65] & ex5_shctl_16[2]) | (ex5_sh1[81] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[34] = (~((ex5_sh1[66] & ex5_shctl_16[2]) | (ex5_sh1[82] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[35] = (~((ex5_sh1[67] & ex5_shctl_16[2]) | (ex5_sh1[83] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[36] = (~((ex5_sh1[68] & ex5_shctl_16[2]) | (ex5_sh1[84] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[37] = (~((ex5_sh1[69] & ex5_shctl_16[2]) | (ex5_sh1[85] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[38] = (~((ex5_sh1[70] & ex5_shctl_16[2]) | (ex5_sh1[86] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[39] = (~((ex5_sh1[71] & ex5_shctl_16[2]) | (ex5_sh1[87] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[40] = (~((ex5_sh1[72] & ex5_shctl_16[2]) | (ex5_sh1[88] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[41] = (~((ex5_sh1[73] & ex5_shctl_16[2]) | (ex5_sh1[89] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[42] = (~((ex5_sh1[74] & ex5_shctl_16[2]) | (ex5_sh1[90] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[43] = (~((ex5_sh1[75] & ex5_shctl_16[2]) | (ex5_sh1[91] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[44] = (~((ex5_sh1[76] & ex5_shctl_16[2]) | (ex5_sh1[92] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[45] = (~((ex5_sh1[77] & ex5_shctl_16[2]) | (ex5_sh1[93] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[46] = (~((ex5_sh1[78] & ex5_shctl_16[2]) | (ex5_sh1[94] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[47] = (~((ex5_sh1[79] & ex5_shctl_16[2]) | (ex5_sh1[95] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[48] = (~((ex5_sh1[80] & ex5_shctl_16[2]) | (ex5_sh1[96] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[49] = (~((ex5_sh1[81] & ex5_shctl_16[2]) | (ex5_sh1[97] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[50] = (~((ex5_sh1[82] & ex5_shctl_16[2]) | (ex5_sh1[98] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[51] = (~((ex5_sh1[83] & ex5_shctl_16[2]) | (ex5_sh1[99] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[52] = (~((ex5_sh1[84] & ex5_shctl_16[2]) | (ex5_sh1[100] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[53] = (~((ex5_sh1[85] & ex5_shctl_16[2]) | (ex5_sh1[101] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[54] = (~((ex5_sh1[86] & ex5_shctl_16[2]) | (ex5_sh1[102] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[55] = (~((ex5_sh1[87] & ex5_shctl_16[2]) | (ex5_sh1[103] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[56] = (~((ex5_sh1[88] & ex5_shctl_16[2]) | (ex5_sh1[104] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[57] = (~((ex5_sh1[89] & ex5_shctl_16[2]) | (ex5_sh1[105] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[58] = (~((ex5_sh1[90] & ex5_shctl_16[2]) | (ex5_sh1[106] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[59] = (~((ex5_sh1[91] & ex5_shctl_16[2]) | (ex5_sh1[107] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[60] = (~((ex5_sh1[92] & ex5_shctl_16[2]) | (ex5_sh1[108] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[61] = (~((ex5_sh1[93] & ex5_shctl_16[2]) | (ex5_sh1[109] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[62] = (~((ex5_sh1[94] & ex5_shctl_16[2]) | (ex5_sh1[110] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[63] = (~((ex5_sh1[95] & ex5_shctl_16[2]) | (ex5_sh1[111] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[64] = (~((ex5_sh1[96] & ex5_shctl_16[2]) | (ex5_sh1[112] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[65] = (~((ex5_sh1[97] & ex5_shctl_16[2]) | (ex5_sh1[113] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[66] = (~((ex5_sh1[98] & ex5_shctl_16[2]) | (ex5_sh1[114] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[67] = (~((ex5_sh1[99] & ex5_shctl_16[2]) | (ex5_sh1[115] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[68] = (~((ex5_sh1[100] & ex5_shctl_16[2]) | (ex5_sh1[116] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[69] = (~((ex5_sh1[101] & ex5_shctl_16[2]) | (ex5_sh1[117] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[70] = (~((ex5_sh1[102] & ex5_shctl_16[2]) | (ex5_sh1[118] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[71] = (~((ex5_sh1[103] & ex5_shctl_16[2]) | (ex5_sh1[119] & ex5_shctl_16[3])));
assign ex5_sh2_y_b[72] = (~((ex5_sh1[104] & ex5_shctl_16[2]) | (ex5_sh1[120] & ex5_shctl_16[3])));
assign ex5_sh2[0] = (~(ex5_sh2_x_b[0] & ex5_sh2_y_b[0]));
assign ex5_sh2[1] = (~(ex5_sh2_x_b[1] & ex5_sh2_y_b[1]));
assign ex5_sh2[2] = (~(ex5_sh2_x_b[2] & ex5_sh2_y_b[2]));
assign ex5_sh2[3] = (~(ex5_sh2_x_b[3] & ex5_sh2_y_b[3]));
assign ex5_sh2[4] = (~(ex5_sh2_x_b[4] & ex5_sh2_y_b[4]));
assign ex5_sh2[5] = (~(ex5_sh2_x_b[5] & ex5_sh2_y_b[5]));
assign ex5_sh2[6] = (~(ex5_sh2_x_b[6] & ex5_sh2_y_b[6]));
assign ex5_sh2[7] = (~(ex5_sh2_x_b[7] & ex5_sh2_y_b[7]));
assign ex5_sh2[8] = (~(ex5_sh2_x_b[8] & ex5_sh2_y_b[8]));
assign ex5_sh2[9] = (~(ex5_sh2_x_b[9] & ex5_sh2_y_b[9]));
assign ex5_sh2[10] = (~(ex5_sh2_x_b[10] & ex5_sh2_y_b[10]));
assign ex5_sh2[11] = (~(ex5_sh2_x_b[11] & ex5_sh2_y_b[11]));
assign ex5_sh2[12] = (~(ex5_sh2_x_b[12] & ex5_sh2_y_b[12]));
assign ex5_sh2[13] = (~(ex5_sh2_x_b[13] & ex5_sh2_y_b[13]));
assign ex5_sh2[14] = (~(ex5_sh2_x_b[14] & ex5_sh2_y_b[14]));
assign ex5_sh2[15] = (~(ex5_sh2_x_b[15] & ex5_sh2_y_b[15]));
assign ex5_sh2[16] = (~(ex5_sh2_x_b[16] & ex5_sh2_y_b[16]));
assign ex5_sh2[17] = (~(ex5_sh2_x_b[17] & ex5_sh2_y_b[17]));
assign ex5_sh2[18] = (~(ex5_sh2_x_b[18] & ex5_sh2_y_b[18]));
assign ex5_sh2[19] = (~(ex5_sh2_x_b[19] & ex5_sh2_y_b[19]));
assign ex5_sh2[20] = (~(ex5_sh2_x_b[20] & ex5_sh2_y_b[20]));
assign ex5_sh2[21] = (~(ex5_sh2_x_b[21] & ex5_sh2_y_b[21]));
assign ex5_sh2[22] = (~(ex5_sh2_x_b[22] & ex5_sh2_y_b[22]));
assign ex5_sh2[23] = (~(ex5_sh2_x_b[23] & ex5_sh2_y_b[23]));
assign ex5_sh2[24] = (~(ex5_sh2_x_b[24] & ex5_sh2_y_b[24]));
assign ex5_sh2[25] = (~(ex5_sh2_x_b[25] & ex5_sh2_y_b[25]));
assign ex5_sh2[26] = (~(ex5_sh2_x_b[26] & ex5_sh2_y_b[26]));
assign ex5_sh2[27] = (~(ex5_sh2_x_b[27] & ex5_sh2_y_b[27]));
assign ex5_sh2[28] = (~(ex5_sh2_x_b[28] & ex5_sh2_y_b[28]));
assign ex5_sh2[29] = (~(ex5_sh2_x_b[29] & ex5_sh2_y_b[29]));
assign ex5_sh2[30] = (~(ex5_sh2_x_b[30] & ex5_sh2_y_b[30]));
assign ex5_sh2[31] = (~(ex5_sh2_x_b[31] & ex5_sh2_y_b[31]));
assign ex5_sh2[32] = (~(ex5_sh2_x_b[32] & ex5_sh2_y_b[32]));
assign ex5_sh2[33] = (~(ex5_sh2_x_b[33] & ex5_sh2_y_b[33]));
assign ex5_sh2[34] = (~(ex5_sh2_x_b[34] & ex5_sh2_y_b[34]));
assign ex5_sh2[35] = (~(ex5_sh2_x_b[35] & ex5_sh2_y_b[35]));
assign ex5_sh2[36] = (~(ex5_sh2_x_b[36] & ex5_sh2_y_b[36]));
assign ex5_sh2[37] = (~(ex5_sh2_x_b[37] & ex5_sh2_y_b[37]));
assign ex5_sh2[38] = (~(ex5_sh2_x_b[38] & ex5_sh2_y_b[38]));
assign ex5_sh2[39] = (~(ex5_sh2_x_b[39] & ex5_sh2_y_b[39]));
assign ex5_sh2[40] = (~(ex5_sh2_x_b[40] & ex5_sh2_y_b[40]));
assign ex5_sh2[41] = (~(ex5_sh2_x_b[41] & ex5_sh2_y_b[41]));
assign ex5_sh2[42] = (~(ex5_sh2_x_b[42] & ex5_sh2_y_b[42]));
assign ex5_sh2[43] = (~(ex5_sh2_x_b[43] & ex5_sh2_y_b[43]));
assign ex5_sh2[44] = (~(ex5_sh2_x_b[44] & ex5_sh2_y_b[44]));
assign ex5_sh2[45] = (~(ex5_sh2_x_b[45] & ex5_sh2_y_b[45]));
assign ex5_sh2[46] = (~(ex5_sh2_x_b[46] & ex5_sh2_y_b[46]));
assign ex5_sh2[47] = (~(ex5_sh2_x_b[47] & ex5_sh2_y_b[47]));
assign ex5_sh2[48] = (~(ex5_sh2_x_b[48] & ex5_sh2_y_b[48]));
assign ex5_sh2[49] = (~(ex5_sh2_x_b[49] & ex5_sh2_y_b[49]));
assign ex5_sh2[50] = (~(ex5_sh2_x_b[50] & ex5_sh2_y_b[50]));
assign ex5_sh2[51] = (~(ex5_sh2_x_b[51] & ex5_sh2_y_b[51]));
assign ex5_sh2[52] = (~(ex5_sh2_x_b[52] & ex5_sh2_y_b[52]));
assign ex5_sh2[53] = (~(ex5_sh2_x_b[53] & ex5_sh2_y_b[53]));
assign ex5_sh2[54] = (~(ex5_sh2_x_b[54] & ex5_sh2_y_b[54]));
assign ex5_sh2[55] = (~(ex5_sh2_x_b[55] & ex5_sh2_y_b[55]));
assign ex5_sh2[56] = (~(ex5_sh2_x_b[56] & ex5_sh2_y_b[56]));
assign ex5_sh2[57] = (~(ex5_sh2_x_b[57] & ex5_sh2_y_b[57]));
assign ex5_sh2[58] = (~(ex5_sh2_x_b[58] & ex5_sh2_y_b[58]));
assign ex5_sh2[59] = (~(ex5_sh2_x_b[59] & ex5_sh2_y_b[59]));
assign ex5_sh2[60] = (~(ex5_sh2_x_b[60] & ex5_sh2_y_b[60]));
assign ex5_sh2[61] = (~(ex5_sh2_x_b[61] & ex5_sh2_y_b[61]));
assign ex5_sh2[62] = (~(ex5_sh2_x_b[62] & ex5_sh2_y_b[62]));
assign ex5_sh2[63] = (~(ex5_sh2_x_b[63] & ex5_sh2_y_b[63]));
assign ex5_sh2[64] = (~(ex5_sh2_x_b[64] & ex5_sh2_y_b[64]));
assign ex5_sh2[65] = (~(ex5_sh2_x_b[65] & ex5_sh2_y_b[65]));
assign ex5_sh2[66] = (~(ex5_sh2_x_b[66] & ex5_sh2_y_b[66]));
assign ex5_sh2[67] = (~(ex5_sh2_x_b[67] & ex5_sh2_y_b[67]));
assign ex5_sh2[68] = (~(ex5_sh2_x_b[68] & ex5_sh2_y_b[68]));
assign ex5_sh2[69] = (~(ex5_sh2_x_b[69] & ex5_sh2_y_b[69]));
assign ex5_sh2[70] = (~(ex5_sh2_x_b[70] & ex5_sh2_y_b[70]));
assign ex5_sh2[71] = (~(ex5_sh2_x_b[71] & ex5_sh2_y_b[71]));
assign ex5_sh2[72] = (~(ex5_sh2_x_b[72] & ex5_sh2_y_b[72]));
//---------------------------------------------
assign ex5_sh3_x_b[0] = (~((ex5_sh2[0] & ex5_shctl_04[0]) | (ex5_sh2[4] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[1] = (~((ex5_sh2[1] & ex5_shctl_04[0]) | (ex5_sh2[5] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[2] = (~((ex5_sh2[2] & ex5_shctl_04[0]) | (ex5_sh2[6] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[3] = (~((ex5_sh2[3] & ex5_shctl_04[0]) | (ex5_sh2[7] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[4] = (~((ex5_sh2[4] & ex5_shctl_04[0]) | (ex5_sh2[8] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[5] = (~((ex5_sh2[5] & ex5_shctl_04[0]) | (ex5_sh2[9] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[6] = (~((ex5_sh2[6] & ex5_shctl_04[0]) | (ex5_sh2[10] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[7] = (~((ex5_sh2[7] & ex5_shctl_04[0]) | (ex5_sh2[11] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[8] = (~((ex5_sh2[8] & ex5_shctl_04[0]) | (ex5_sh2[12] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[9] = (~((ex5_sh2[9] & ex5_shctl_04[0]) | (ex5_sh2[13] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[10] = (~((ex5_sh2[10] & ex5_shctl_04[0]) | (ex5_sh2[14] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[11] = (~((ex5_sh2[11] & ex5_shctl_04[0]) | (ex5_sh2[15] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[12] = (~((ex5_sh2[12] & ex5_shctl_04[0]) | (ex5_sh2[16] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[13] = (~((ex5_sh2[13] & ex5_shctl_04[0]) | (ex5_sh2[17] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[14] = (~((ex5_sh2[14] & ex5_shctl_04[0]) | (ex5_sh2[18] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[15] = (~((ex5_sh2[15] & ex5_shctl_04[0]) | (ex5_sh2[19] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[16] = (~((ex5_sh2[16] & ex5_shctl_04[0]) | (ex5_sh2[20] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[17] = (~((ex5_sh2[17] & ex5_shctl_04[0]) | (ex5_sh2[21] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[18] = (~((ex5_sh2[18] & ex5_shctl_04[0]) | (ex5_sh2[22] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[19] = (~((ex5_sh2[19] & ex5_shctl_04[0]) | (ex5_sh2[23] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[20] = (~((ex5_sh2[20] & ex5_shctl_04[0]) | (ex5_sh2[24] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[21] = (~((ex5_sh2[21] & ex5_shctl_04[0]) | (ex5_sh2[25] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[22] = (~((ex5_sh2[22] & ex5_shctl_04[0]) | (ex5_sh2[26] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[23] = (~((ex5_sh2[23] & ex5_shctl_04[0]) | (ex5_sh2[27] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[24] = (~((ex5_sh2[24] & ex5_shctl_04[0]) | (ex5_sh2[28] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[25] = (~((ex5_sh2[25] & ex5_shctl_04[0]) | (ex5_sh2[29] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[26] = (~((ex5_sh2[26] & ex5_shctl_04[0]) | (ex5_sh2[30] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[27] = (~((ex5_sh2[27] & ex5_shctl_04[0]) | (ex5_sh2[31] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[28] = (~((ex5_sh2[28] & ex5_shctl_04[0]) | (ex5_sh2[32] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[29] = (~((ex5_sh2[29] & ex5_shctl_04[0]) | (ex5_sh2[33] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[30] = (~((ex5_sh2[30] & ex5_shctl_04[0]) | (ex5_sh2[34] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[31] = (~((ex5_sh2[31] & ex5_shctl_04[0]) | (ex5_sh2[35] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[32] = (~((ex5_sh2[32] & ex5_shctl_04[0]) | (ex5_sh2[36] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[33] = (~((ex5_sh2[33] & ex5_shctl_04[0]) | (ex5_sh2[37] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[34] = (~((ex5_sh2[34] & ex5_shctl_04[0]) | (ex5_sh2[38] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[35] = (~((ex5_sh2[35] & ex5_shctl_04[0]) | (ex5_sh2[39] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[36] = (~((ex5_sh2[36] & ex5_shctl_04[0]) | (ex5_sh2[40] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[37] = (~((ex5_sh2[37] & ex5_shctl_04[0]) | (ex5_sh2[41] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[38] = (~((ex5_sh2[38] & ex5_shctl_04[0]) | (ex5_sh2[42] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[39] = (~((ex5_sh2[39] & ex5_shctl_04[0]) | (ex5_sh2[43] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[40] = (~((ex5_sh2[40] & ex5_shctl_04[0]) | (ex5_sh2[44] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[41] = (~((ex5_sh2[41] & ex5_shctl_04[0]) | (ex5_sh2[45] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[42] = (~((ex5_sh2[42] & ex5_shctl_04[0]) | (ex5_sh2[46] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[43] = (~((ex5_sh2[43] & ex5_shctl_04[0]) | (ex5_sh2[47] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[44] = (~((ex5_sh2[44] & ex5_shctl_04[0]) | (ex5_sh2[48] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[45] = (~((ex5_sh2[45] & ex5_shctl_04[0]) | (ex5_sh2[49] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[46] = (~((ex5_sh2[46] & ex5_shctl_04[0]) | (ex5_sh2[50] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[47] = (~((ex5_sh2[47] & ex5_shctl_04[0]) | (ex5_sh2[51] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[48] = (~((ex5_sh2[48] & ex5_shctl_04[0]) | (ex5_sh2[52] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[49] = (~((ex5_sh2[49] & ex5_shctl_04[0]) | (ex5_sh2[53] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[50] = (~((ex5_sh2[50] & ex5_shctl_04[0]) | (ex5_sh2[54] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[51] = (~((ex5_sh2[51] & ex5_shctl_04[0]) | (ex5_sh2[55] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[52] = (~((ex5_sh2[52] & ex5_shctl_04[0]) | (ex5_sh2[56] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[53] = (~((ex5_sh2[53] & ex5_shctl_04[0]) | (ex5_sh2[57] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[54] = (~((ex5_sh2[54] & ex5_shctl_04[0]) | (ex5_sh2[58] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[55] = (~((ex5_sh2[55] & ex5_shctl_04[0]) | (ex5_sh2[59] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[56] = (~((ex5_sh2[56] & ex5_shctl_04[0]) | (ex5_sh2[60] & ex5_shctl_04[1])));
assign ex5_sh3_x_b[57] = (~((ex5_sh2[57] & ex5_shctl_04[0]) | (ex5_sh2[61] & ex5_shctl_04[1])));
assign ex5_sh3_y_b[0] = (~((ex5_sh2[8] & ex5_shctl_04[2]) | (ex5_sh2[12] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[1] = (~((ex5_sh2[9] & ex5_shctl_04[2]) | (ex5_sh2[13] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[2] = (~((ex5_sh2[10] & ex5_shctl_04[2]) | (ex5_sh2[14] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[3] = (~((ex5_sh2[11] & ex5_shctl_04[2]) | (ex5_sh2[15] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[4] = (~((ex5_sh2[12] & ex5_shctl_04[2]) | (ex5_sh2[16] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[5] = (~((ex5_sh2[13] & ex5_shctl_04[2]) | (ex5_sh2[17] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[6] = (~((ex5_sh2[14] & ex5_shctl_04[2]) | (ex5_sh2[18] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[7] = (~((ex5_sh2[15] & ex5_shctl_04[2]) | (ex5_sh2[19] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[8] = (~((ex5_sh2[16] & ex5_shctl_04[2]) | (ex5_sh2[20] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[9] = (~((ex5_sh2[17] & ex5_shctl_04[2]) | (ex5_sh2[21] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[10] = (~((ex5_sh2[18] & ex5_shctl_04[2]) | (ex5_sh2[22] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[11] = (~((ex5_sh2[19] & ex5_shctl_04[2]) | (ex5_sh2[23] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[12] = (~((ex5_sh2[20] & ex5_shctl_04[2]) | (ex5_sh2[24] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[13] = (~((ex5_sh2[21] & ex5_shctl_04[2]) | (ex5_sh2[25] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[14] = (~((ex5_sh2[22] & ex5_shctl_04[2]) | (ex5_sh2[26] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[15] = (~((ex5_sh2[23] & ex5_shctl_04[2]) | (ex5_sh2[27] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[16] = (~((ex5_sh2[24] & ex5_shctl_04[2]) | (ex5_sh2[28] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[17] = (~((ex5_sh2[25] & ex5_shctl_04[2]) | (ex5_sh2[29] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[18] = (~((ex5_sh2[26] & ex5_shctl_04[2]) | (ex5_sh2[30] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[19] = (~((ex5_sh2[27] & ex5_shctl_04[2]) | (ex5_sh2[31] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[20] = (~((ex5_sh2[28] & ex5_shctl_04[2]) | (ex5_sh2[32] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[21] = (~((ex5_sh2[29] & ex5_shctl_04[2]) | (ex5_sh2[33] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[22] = (~((ex5_sh2[30] & ex5_shctl_04[2]) | (ex5_sh2[34] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[23] = (~((ex5_sh2[31] & ex5_shctl_04[2]) | (ex5_sh2[35] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[24] = (~((ex5_sh2[32] & ex5_shctl_04[2]) | (ex5_sh2[36] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[25] = (~((ex5_sh2[33] & ex5_shctl_04[2]) | (ex5_sh2[37] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[26] = (~((ex5_sh2[34] & ex5_shctl_04[2]) | (ex5_sh2[38] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[27] = (~((ex5_sh2[35] & ex5_shctl_04[2]) | (ex5_sh2[39] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[28] = (~((ex5_sh2[36] & ex5_shctl_04[2]) | (ex5_sh2[40] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[29] = (~((ex5_sh2[37] & ex5_shctl_04[2]) | (ex5_sh2[41] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[30] = (~((ex5_sh2[38] & ex5_shctl_04[2]) | (ex5_sh2[42] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[31] = (~((ex5_sh2[39] & ex5_shctl_04[2]) | (ex5_sh2[43] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[32] = (~((ex5_sh2[40] & ex5_shctl_04[2]) | (ex5_sh2[44] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[33] = (~((ex5_sh2[41] & ex5_shctl_04[2]) | (ex5_sh2[45] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[34] = (~((ex5_sh2[42] & ex5_shctl_04[2]) | (ex5_sh2[46] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[35] = (~((ex5_sh2[43] & ex5_shctl_04[2]) | (ex5_sh2[47] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[36] = (~((ex5_sh2[44] & ex5_shctl_04[2]) | (ex5_sh2[48] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[37] = (~((ex5_sh2[45] & ex5_shctl_04[2]) | (ex5_sh2[49] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[38] = (~((ex5_sh2[46] & ex5_shctl_04[2]) | (ex5_sh2[50] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[39] = (~((ex5_sh2[47] & ex5_shctl_04[2]) | (ex5_sh2[51] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[40] = (~((ex5_sh2[48] & ex5_shctl_04[2]) | (ex5_sh2[52] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[41] = (~((ex5_sh2[49] & ex5_shctl_04[2]) | (ex5_sh2[53] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[42] = (~((ex5_sh2[50] & ex5_shctl_04[2]) | (ex5_sh2[54] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[43] = (~((ex5_sh2[51] & ex5_shctl_04[2]) | (ex5_sh2[55] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[44] = (~((ex5_sh2[52] & ex5_shctl_04[2]) | (ex5_sh2[56] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[45] = (~((ex5_sh2[53] & ex5_shctl_04[2]) | (ex5_sh2[57] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[46] = (~((ex5_sh2[54] & ex5_shctl_04[2]) | (ex5_sh2[58] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[47] = (~((ex5_sh2[55] & ex5_shctl_04[2]) | (ex5_sh2[59] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[48] = (~((ex5_sh2[56] & ex5_shctl_04[2]) | (ex5_sh2[60] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[49] = (~((ex5_sh2[57] & ex5_shctl_04[2]) | (ex5_sh2[61] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[50] = (~((ex5_sh2[58] & ex5_shctl_04[2]) | (ex5_sh2[62] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[51] = (~((ex5_sh2[59] & ex5_shctl_04[2]) | (ex5_sh2[63] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[52] = (~((ex5_sh2[60] & ex5_shctl_04[2]) | (ex5_sh2[64] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[53] = (~((ex5_sh2[61] & ex5_shctl_04[2]) | (ex5_sh2[65] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[54] = (~((ex5_sh2[62] & ex5_shctl_04[2]) | (ex5_sh2[66] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[55] = (~((ex5_sh2[63] & ex5_shctl_04[2]) | (ex5_sh2[67] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[56] = (~((ex5_sh2[64] & ex5_shctl_04[2]) | (ex5_sh2[68] & ex5_shctl_04[3])));
assign ex5_sh3_y_b[57] = (~((ex5_sh2[65] & ex5_shctl_04[2]) | (ex5_sh2[69] & ex5_shctl_04[3])));
assign ex5_sh3[0] = (~(ex5_sh3_x_b[0] & ex5_sh3_y_b[0]));
assign ex5_sh3[1] = (~(ex5_sh3_x_b[1] & ex5_sh3_y_b[1]));
assign ex5_sh3[2] = (~(ex5_sh3_x_b[2] & ex5_sh3_y_b[2]));
assign ex5_sh3[3] = (~(ex5_sh3_x_b[3] & ex5_sh3_y_b[3]));
assign ex5_sh3[4] = (~(ex5_sh3_x_b[4] & ex5_sh3_y_b[4]));
assign ex5_sh3[5] = (~(ex5_sh3_x_b[5] & ex5_sh3_y_b[5]));
assign ex5_sh3[6] = (~(ex5_sh3_x_b[6] & ex5_sh3_y_b[6]));
assign ex5_sh3[7] = (~(ex5_sh3_x_b[7] & ex5_sh3_y_b[7]));
assign ex5_sh3[8] = (~(ex5_sh3_x_b[8] & ex5_sh3_y_b[8]));
assign ex5_sh3[9] = (~(ex5_sh3_x_b[9] & ex5_sh3_y_b[9]));
assign ex5_sh3[10] = (~(ex5_sh3_x_b[10] & ex5_sh3_y_b[10]));
assign ex5_sh3[11] = (~(ex5_sh3_x_b[11] & ex5_sh3_y_b[11]));
assign ex5_sh3[12] = (~(ex5_sh3_x_b[12] & ex5_sh3_y_b[12]));
assign ex5_sh3[13] = (~(ex5_sh3_x_b[13] & ex5_sh3_y_b[13]));
assign ex5_sh3[14] = (~(ex5_sh3_x_b[14] & ex5_sh3_y_b[14]));
assign ex5_sh3[15] = (~(ex5_sh3_x_b[15] & ex5_sh3_y_b[15]));
assign ex5_sh3[16] = (~(ex5_sh3_x_b[16] & ex5_sh3_y_b[16]));
assign ex5_sh3[17] = (~(ex5_sh3_x_b[17] & ex5_sh3_y_b[17]));
assign ex5_sh3[18] = (~(ex5_sh3_x_b[18] & ex5_sh3_y_b[18]));
assign ex5_sh3[19] = (~(ex5_sh3_x_b[19] & ex5_sh3_y_b[19]));
assign ex5_sh3[20] = (~(ex5_sh3_x_b[20] & ex5_sh3_y_b[20]));
assign ex5_sh3[21] = (~(ex5_sh3_x_b[21] & ex5_sh3_y_b[21]));
assign ex5_sh3[22] = (~(ex5_sh3_x_b[22] & ex5_sh3_y_b[22]));
assign ex5_sh3[23] = (~(ex5_sh3_x_b[23] & ex5_sh3_y_b[23]));
assign ex5_sh3[24] = (~(ex5_sh3_x_b[24] & ex5_sh3_y_b[24]));
assign ex5_sh3[25] = (~(ex5_sh3_x_b[25] & ex5_sh3_y_b[25]));
assign ex5_sh3[26] = (~(ex5_sh3_x_b[26] & ex5_sh3_y_b[26]));
assign ex5_sh3[27] = (~(ex5_sh3_x_b[27] & ex5_sh3_y_b[27]));
assign ex5_sh3[28] = (~(ex5_sh3_x_b[28] & ex5_sh3_y_b[28]));
assign ex5_sh3[29] = (~(ex5_sh3_x_b[29] & ex5_sh3_y_b[29]));
assign ex5_sh3[30] = (~(ex5_sh3_x_b[30] & ex5_sh3_y_b[30]));
assign ex5_sh3[31] = (~(ex5_sh3_x_b[31] & ex5_sh3_y_b[31]));
assign ex5_sh3[32] = (~(ex5_sh3_x_b[32] & ex5_sh3_y_b[32]));
assign ex5_sh3[33] = (~(ex5_sh3_x_b[33] & ex5_sh3_y_b[33]));
assign ex5_sh3[34] = (~(ex5_sh3_x_b[34] & ex5_sh3_y_b[34]));
assign ex5_sh3[35] = (~(ex5_sh3_x_b[35] & ex5_sh3_y_b[35]));
assign ex5_sh3[36] = (~(ex5_sh3_x_b[36] & ex5_sh3_y_b[36]));
assign ex5_sh3[37] = (~(ex5_sh3_x_b[37] & ex5_sh3_y_b[37]));
assign ex5_sh3[38] = (~(ex5_sh3_x_b[38] & ex5_sh3_y_b[38]));
assign ex5_sh3[39] = (~(ex5_sh3_x_b[39] & ex5_sh3_y_b[39]));
assign ex5_sh3[40] = (~(ex5_sh3_x_b[40] & ex5_sh3_y_b[40]));
assign ex5_sh3[41] = (~(ex5_sh3_x_b[41] & ex5_sh3_y_b[41]));
assign ex5_sh3[42] = (~(ex5_sh3_x_b[42] & ex5_sh3_y_b[42]));
assign ex5_sh3[43] = (~(ex5_sh3_x_b[43] & ex5_sh3_y_b[43]));
assign ex5_sh3[44] = (~(ex5_sh3_x_b[44] & ex5_sh3_y_b[44]));
assign ex5_sh3[45] = (~(ex5_sh3_x_b[45] & ex5_sh3_y_b[45]));
assign ex5_sh3[46] = (~(ex5_sh3_x_b[46] & ex5_sh3_y_b[46]));
assign ex5_sh3[47] = (~(ex5_sh3_x_b[47] & ex5_sh3_y_b[47]));
assign ex5_sh3[48] = (~(ex5_sh3_x_b[48] & ex5_sh3_y_b[48]));
assign ex5_sh3[49] = (~(ex5_sh3_x_b[49] & ex5_sh3_y_b[49]));
assign ex5_sh3[50] = (~(ex5_sh3_x_b[50] & ex5_sh3_y_b[50]));
assign ex5_sh3[51] = (~(ex5_sh3_x_b[51] & ex5_sh3_y_b[51]));
assign ex5_sh3[52] = (~(ex5_sh3_x_b[52] & ex5_sh3_y_b[52]));
assign ex5_sh3[53] = (~(ex5_sh3_x_b[53] & ex5_sh3_y_b[53]));
assign ex5_sh3[54] = (~(ex5_sh3_x_b[54] & ex5_sh3_y_b[54]));
assign ex5_sh3[55] = (~(ex5_sh3_x_b[55] & ex5_sh3_y_b[55]));
assign ex5_sh3[56] = (~(ex5_sh3_x_b[56] & ex5_sh3_y_b[56]));
assign ex5_sh3[57] = (~(ex5_sh3_x_b[57] & ex5_sh3_y_b[57]));
//---------------------------------------------
assign ex5_sh4_x_00_b = (~((ex5_sh3[0] & ex5_shctl_01[0]) | (ex5_sh3[1] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[0] = (~((ex5_sh3[0] & ex5_shctl_01[0]) | (ex5_sh3[1] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[1] = (~((ex5_sh3[1] & ex5_shctl_01[0]) | (ex5_sh3[2] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[2] = (~((ex5_sh3[2] & ex5_shctl_01[0]) | (ex5_sh3[3] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[3] = (~((ex5_sh3[3] & ex5_shctl_01[0]) | (ex5_sh3[4] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[4] = (~((ex5_sh3[4] & ex5_shctl_01[0]) | (ex5_sh3[5] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[5] = (~((ex5_sh3[5] & ex5_shctl_01[0]) | (ex5_sh3[6] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[6] = (~((ex5_sh3[6] & ex5_shctl_01[0]) | (ex5_sh3[7] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[7] = (~((ex5_sh3[7] & ex5_shctl_01[0]) | (ex5_sh3[8] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[8] = (~((ex5_sh3[8] & ex5_shctl_01[0]) | (ex5_sh3[9] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[9] = (~((ex5_sh3[9] & ex5_shctl_01[0]) | (ex5_sh3[10] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[10] = (~((ex5_sh3[10] & ex5_shctl_01[0]) | (ex5_sh3[11] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[11] = (~((ex5_sh3[11] & ex5_shctl_01[0]) | (ex5_sh3[12] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[12] = (~((ex5_sh3[12] & ex5_shctl_01[0]) | (ex5_sh3[13] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[13] = (~((ex5_sh3[13] & ex5_shctl_01[0]) | (ex5_sh3[14] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[14] = (~((ex5_sh3[14] & ex5_shctl_01[0]) | (ex5_sh3[15] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[15] = (~((ex5_sh3[15] & ex5_shctl_01[0]) | (ex5_sh3[16] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[16] = (~((ex5_sh3[16] & ex5_shctl_01[0]) | (ex5_sh3[17] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[17] = (~((ex5_sh3[17] & ex5_shctl_01[0]) | (ex5_sh3[18] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[18] = (~((ex5_sh3[18] & ex5_shctl_01[0]) | (ex5_sh3[19] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[19] = (~((ex5_sh3[19] & ex5_shctl_01[0]) | (ex5_sh3[20] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[20] = (~((ex5_sh3[20] & ex5_shctl_01[0]) | (ex5_sh3[21] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[21] = (~((ex5_sh3[21] & ex5_shctl_01[0]) | (ex5_sh3[22] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[22] = (~((ex5_sh3[22] & ex5_shctl_01[0]) | (ex5_sh3[23] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[23] = (~((ex5_sh3[23] & ex5_shctl_01[0]) | (ex5_sh3[24] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[24] = (~((ex5_sh3[24] & ex5_shctl_01[0]) | (ex5_sh3[25] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[25] = (~((ex5_sh3[25] & ex5_shctl_01[0]) | (ex5_sh3[26] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[26] = (~((ex5_sh3[26] & ex5_shctl_01[0]) | (ex5_sh3[27] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[27] = (~((ex5_sh3[27] & ex5_shctl_01[0]) | (ex5_sh3[28] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[28] = (~((ex5_sh3[28] & ex5_shctl_01[0]) | (ex5_sh3[29] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[29] = (~((ex5_sh3[29] & ex5_shctl_01[0]) | (ex5_sh3[30] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[30] = (~((ex5_sh3[30] & ex5_shctl_01[0]) | (ex5_sh3[31] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[31] = (~((ex5_sh3[31] & ex5_shctl_01[0]) | (ex5_sh3[32] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[32] = (~((ex5_sh3[32] & ex5_shctl_01[0]) | (ex5_sh3[33] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[33] = (~((ex5_sh3[33] & ex5_shctl_01[0]) | (ex5_sh3[34] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[34] = (~((ex5_sh3[34] & ex5_shctl_01[0]) | (ex5_sh3[35] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[35] = (~((ex5_sh3[35] & ex5_shctl_01[0]) | (ex5_sh3[36] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[36] = (~((ex5_sh3[36] & ex5_shctl_01[0]) | (ex5_sh3[37] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[37] = (~((ex5_sh3[37] & ex5_shctl_01[0]) | (ex5_sh3[38] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[38] = (~((ex5_sh3[38] & ex5_shctl_01[0]) | (ex5_sh3[39] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[39] = (~((ex5_sh3[39] & ex5_shctl_01[0]) | (ex5_sh3[40] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[40] = (~((ex5_sh3[40] & ex5_shctl_01[0]) | (ex5_sh3[41] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[41] = (~((ex5_sh3[41] & ex5_shctl_01[0]) | (ex5_sh3[42] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[42] = (~((ex5_sh3[42] & ex5_shctl_01[0]) | (ex5_sh3[43] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[43] = (~((ex5_sh3[43] & ex5_shctl_01[0]) | (ex5_sh3[44] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[44] = (~((ex5_sh3[44] & ex5_shctl_01[0]) | (ex5_sh3[45] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[45] = (~((ex5_sh3[45] & ex5_shctl_01[0]) | (ex5_sh3[46] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[46] = (~((ex5_sh3[46] & ex5_shctl_01[0]) | (ex5_sh3[47] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[47] = (~((ex5_sh3[47] & ex5_shctl_01[0]) | (ex5_sh3[48] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[48] = (~((ex5_sh3[48] & ex5_shctl_01[0]) | (ex5_sh3[49] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[49] = (~((ex5_sh3[49] & ex5_shctl_01[0]) | (ex5_sh3[50] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[50] = (~((ex5_sh3[50] & ex5_shctl_01[0]) | (ex5_sh3[51] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[51] = (~((ex5_sh3[51] & ex5_shctl_01[0]) | (ex5_sh3[52] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[52] = (~((ex5_sh3[52] & ex5_shctl_01[0]) | (ex5_sh3[53] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[53] = (~((ex5_sh3[53] & ex5_shctl_01[0]) | (ex5_sh3[54] & ex5_shctl_01[1])));
assign ex5_sh4_x_b[54] = (~((ex5_sh3[54] & ex5_shctl_01[0]) | (ex5_sh3[55] & ex5_shctl_01[1])));
assign ex5_sh4_y_00_b = (~((ex5_sh3[2] & ex5_shctl_01[2]) | (ex5_sh3[3] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[0] = (~((ex5_sh3[2] & ex5_shctl_01[2]) | (ex5_sh3[3] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[1] = (~((ex5_sh3[3] & ex5_shctl_01[2]) | (ex5_sh3[4] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[2] = (~((ex5_sh3[4] & ex5_shctl_01[2]) | (ex5_sh3[5] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[3] = (~((ex5_sh3[5] & ex5_shctl_01[2]) | (ex5_sh3[6] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[4] = (~((ex5_sh3[6] & ex5_shctl_01[2]) | (ex5_sh3[7] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[5] = (~((ex5_sh3[7] & ex5_shctl_01[2]) | (ex5_sh3[8] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[6] = (~((ex5_sh3[8] & ex5_shctl_01[2]) | (ex5_sh3[9] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[7] = (~((ex5_sh3[9] & ex5_shctl_01[2]) | (ex5_sh3[10] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[8] = (~((ex5_sh3[10] & ex5_shctl_01[2]) | (ex5_sh3[11] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[9] = (~((ex5_sh3[11] & ex5_shctl_01[2]) | (ex5_sh3[12] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[10] = (~((ex5_sh3[12] & ex5_shctl_01[2]) | (ex5_sh3[13] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[11] = (~((ex5_sh3[13] & ex5_shctl_01[2]) | (ex5_sh3[14] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[12] = (~((ex5_sh3[14] & ex5_shctl_01[2]) | (ex5_sh3[15] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[13] = (~((ex5_sh3[15] & ex5_shctl_01[2]) | (ex5_sh3[16] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[14] = (~((ex5_sh3[16] & ex5_shctl_01[2]) | (ex5_sh3[17] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[15] = (~((ex5_sh3[17] & ex5_shctl_01[2]) | (ex5_sh3[18] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[16] = (~((ex5_sh3[18] & ex5_shctl_01[2]) | (ex5_sh3[19] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[17] = (~((ex5_sh3[19] & ex5_shctl_01[2]) | (ex5_sh3[20] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[18] = (~((ex5_sh3[20] & ex5_shctl_01[2]) | (ex5_sh3[21] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[19] = (~((ex5_sh3[21] & ex5_shctl_01[2]) | (ex5_sh3[22] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[20] = (~((ex5_sh3[22] & ex5_shctl_01[2]) | (ex5_sh3[23] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[21] = (~((ex5_sh3[23] & ex5_shctl_01[2]) | (ex5_sh3[24] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[22] = (~((ex5_sh3[24] & ex5_shctl_01[2]) | (ex5_sh3[25] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[23] = (~((ex5_sh3[25] & ex5_shctl_01[2]) | (ex5_sh3[26] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[24] = (~((ex5_sh3[26] & ex5_shctl_01[2]) | (ex5_sh3[27] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[25] = (~((ex5_sh3[27] & ex5_shctl_01[2]) | (ex5_sh3[28] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[26] = (~((ex5_sh3[28] & ex5_shctl_01[2]) | (ex5_sh3[29] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[27] = (~((ex5_sh3[29] & ex5_shctl_01[2]) | (ex5_sh3[30] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[28] = (~((ex5_sh3[30] & ex5_shctl_01[2]) | (ex5_sh3[31] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[29] = (~((ex5_sh3[31] & ex5_shctl_01[2]) | (ex5_sh3[32] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[30] = (~((ex5_sh3[32] & ex5_shctl_01[2]) | (ex5_sh3[33] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[31] = (~((ex5_sh3[33] & ex5_shctl_01[2]) | (ex5_sh3[34] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[32] = (~((ex5_sh3[34] & ex5_shctl_01[2]) | (ex5_sh3[35] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[33] = (~((ex5_sh3[35] & ex5_shctl_01[2]) | (ex5_sh3[36] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[34] = (~((ex5_sh3[36] & ex5_shctl_01[2]) | (ex5_sh3[37] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[35] = (~((ex5_sh3[37] & ex5_shctl_01[2]) | (ex5_sh3[38] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[36] = (~((ex5_sh3[38] & ex5_shctl_01[2]) | (ex5_sh3[39] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[37] = (~((ex5_sh3[39] & ex5_shctl_01[2]) | (ex5_sh3[40] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[38] = (~((ex5_sh3[40] & ex5_shctl_01[2]) | (ex5_sh3[41] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[39] = (~((ex5_sh3[41] & ex5_shctl_01[2]) | (ex5_sh3[42] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[40] = (~((ex5_sh3[42] & ex5_shctl_01[2]) | (ex5_sh3[43] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[41] = (~((ex5_sh3[43] & ex5_shctl_01[2]) | (ex5_sh3[44] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[42] = (~((ex5_sh3[44] & ex5_shctl_01[2]) | (ex5_sh3[45] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[43] = (~((ex5_sh3[45] & ex5_shctl_01[2]) | (ex5_sh3[46] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[44] = (~((ex5_sh3[46] & ex5_shctl_01[2]) | (ex5_sh3[47] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[45] = (~((ex5_sh3[47] & ex5_shctl_01[2]) | (ex5_sh3[48] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[46] = (~((ex5_sh3[48] & ex5_shctl_01[2]) | (ex5_sh3[49] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[47] = (~((ex5_sh3[49] & ex5_shctl_01[2]) | (ex5_sh3[50] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[48] = (~((ex5_sh3[50] & ex5_shctl_01[2]) | (ex5_sh3[51] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[49] = (~((ex5_sh3[51] & ex5_shctl_01[2]) | (ex5_sh3[52] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[50] = (~((ex5_sh3[52] & ex5_shctl_01[2]) | (ex5_sh3[53] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[51] = (~((ex5_sh3[53] & ex5_shctl_01[2]) | (ex5_sh3[54] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[52] = (~((ex5_sh3[54] & ex5_shctl_01[2]) | (ex5_sh3[55] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[53] = (~((ex5_sh3[55] & ex5_shctl_01[2]) | (ex5_sh3[56] & ex5_shctl_01[3])));
assign ex5_sh4_y_b[54] = (~((ex5_sh3[56] & ex5_shctl_01[2]) | (ex5_sh3[57] & ex5_shctl_01[3])));
assign ex5_shift_extra_cp1_b = (~(ex5_sh4_x_00_b & ex5_sh4_y_00_b)); // shift extra when implicit bit is not 1
assign ex5_shift_extra_cp2_b = (~(ex5_sh4_x_00_b & ex5_sh4_y_00_b)); // shift extra when implicit bit is not 1
assign ex5_shift_extra_00_cp3_b = (~(ex5_sh4_x_b[0] & ex5_sh4_y_b[0])); // shift extra when implicit bit is not 1
assign ex5_shift_extra_00_cp4_b = (~(ex5_sh4_x_b[0] & ex5_sh4_y_b[0])); // shift extra when implicit bit is not 1
assign ex5_shift_extra_cp1 = (~ex5_shift_extra_cp1_b); //output--
assign ex5_shift_extra_cp2 = (~ex5_shift_extra_cp2_b); //output--
assign ex5_shift_extra_10_cp3 = (~ex5_shift_extra_00_cp3_b); // x4
assign ex5_shift_extra_20_cp3_b = (~ex5_shift_extra_10_cp3); // x6
assign ex5_shift_extra_cp3 = (~ex5_shift_extra_20_cp3_b); // x9
assign ex5_shift_extra_11_cp3 = (~ex5_shift_extra_00_cp3_b); // x2
assign ex5_shift_extra_21_cp3_b = (~ex5_shift_extra_11_cp3); // x4
assign ex5_shift_extra_31_cp3 = (~ex5_shift_extra_21_cp3_b); // x6
assign ex5_shift_extra_cp3_b = (~ex5_shift_extra_31_cp3); // x9
assign ex5_shift_extra_10_cp4 = (~ex5_shift_extra_00_cp4_b); // x4
assign ex5_shift_extra_20_cp4_b = (~ex5_shift_extra_10_cp4); // x6
assign ex5_shift_extra_cp4 = (~ex5_shift_extra_20_cp4_b); // x9
assign ex5_shift_extra_11_cp4 = (~ex5_shift_extra_00_cp4_b); // x2
assign ex5_shift_extra_21_cp4_b = (~ex5_shift_extra_11_cp4); // x4
assign ex5_shift_extra_31_cp4 = (~ex5_shift_extra_21_cp4_b); // x6
assign ex5_shift_extra_cp4_b = (~ex5_shift_extra_31_cp4); // x9
assign ex5_sh4[0] = (~(ex5_sh4_x_b[0] & ex5_sh4_y_b[0]));
assign ex5_sh4[1] = (~(ex5_sh4_x_b[1] & ex5_sh4_y_b[1]));
assign ex5_sh4[2] = (~(ex5_sh4_x_b[2] & ex5_sh4_y_b[2]));
assign ex5_sh4[3] = (~(ex5_sh4_x_b[3] & ex5_sh4_y_b[3]));
assign ex5_sh4[4] = (~(ex5_sh4_x_b[4] & ex5_sh4_y_b[4]));
assign ex5_sh4[5] = (~(ex5_sh4_x_b[5] & ex5_sh4_y_b[5]));
assign ex5_sh4[6] = (~(ex5_sh4_x_b[6] & ex5_sh4_y_b[6]));
assign ex5_sh4[7] = (~(ex5_sh4_x_b[7] & ex5_sh4_y_b[7]));
assign ex5_sh4[8] = (~(ex5_sh4_x_b[8] & ex5_sh4_y_b[8]));
assign ex5_sh4[9] = (~(ex5_sh4_x_b[9] & ex5_sh4_y_b[9]));
assign ex5_sh4[10] = (~(ex5_sh4_x_b[10] & ex5_sh4_y_b[10]));
assign ex5_sh4[11] = (~(ex5_sh4_x_b[11] & ex5_sh4_y_b[11]));
assign ex5_sh4[12] = (~(ex5_sh4_x_b[12] & ex5_sh4_y_b[12]));
assign ex5_sh4[13] = (~(ex5_sh4_x_b[13] & ex5_sh4_y_b[13]));
assign ex5_sh4[14] = (~(ex5_sh4_x_b[14] & ex5_sh4_y_b[14]));
assign ex5_sh4[15] = (~(ex5_sh4_x_b[15] & ex5_sh4_y_b[15]));
assign ex5_sh4[16] = (~(ex5_sh4_x_b[16] & ex5_sh4_y_b[16]));
assign ex5_sh4[17] = (~(ex5_sh4_x_b[17] & ex5_sh4_y_b[17]));
assign ex5_sh4[18] = (~(ex5_sh4_x_b[18] & ex5_sh4_y_b[18]));
assign ex5_sh4[19] = (~(ex5_sh4_x_b[19] & ex5_sh4_y_b[19]));
assign ex5_sh4[20] = (~(ex5_sh4_x_b[20] & ex5_sh4_y_b[20]));
assign ex5_sh4[21] = (~(ex5_sh4_x_b[21] & ex5_sh4_y_b[21]));
assign ex5_sh4[22] = (~(ex5_sh4_x_b[22] & ex5_sh4_y_b[22]));
assign ex5_sh4[23] = (~(ex5_sh4_x_b[23] & ex5_sh4_y_b[23]));
assign ex5_sh4[24] = (~(ex5_sh4_x_b[24] & ex5_sh4_y_b[24]));
assign ex5_sh4[25] = (~(ex5_sh4_x_b[25] & ex5_sh4_y_b[25]));
assign ex5_sh4[26] = (~(ex5_sh4_x_b[26] & ex5_sh4_y_b[26]));
assign ex5_sh4[27] = (~(ex5_sh4_x_b[27] & ex5_sh4_y_b[27]));
assign ex5_sh4[28] = (~(ex5_sh4_x_b[28] & ex5_sh4_y_b[28]));
assign ex5_sh4[29] = (~(ex5_sh4_x_b[29] & ex5_sh4_y_b[29]));
assign ex5_sh4[30] = (~(ex5_sh4_x_b[30] & ex5_sh4_y_b[30]));
assign ex5_sh4[31] = (~(ex5_sh4_x_b[31] & ex5_sh4_y_b[31]));
assign ex5_sh4[32] = (~(ex5_sh4_x_b[32] & ex5_sh4_y_b[32]));
assign ex5_sh4[33] = (~(ex5_sh4_x_b[33] & ex5_sh4_y_b[33]));
assign ex5_sh4[34] = (~(ex5_sh4_x_b[34] & ex5_sh4_y_b[34]));
assign ex5_sh4[35] = (~(ex5_sh4_x_b[35] & ex5_sh4_y_b[35]));
assign ex5_sh4[36] = (~(ex5_sh4_x_b[36] & ex5_sh4_y_b[36]));
assign ex5_sh4[37] = (~(ex5_sh4_x_b[37] & ex5_sh4_y_b[37]));
assign ex5_sh4[38] = (~(ex5_sh4_x_b[38] & ex5_sh4_y_b[38]));
assign ex5_sh4[39] = (~(ex5_sh4_x_b[39] & ex5_sh4_y_b[39]));
assign ex5_sh4[40] = (~(ex5_sh4_x_b[40] & ex5_sh4_y_b[40]));
assign ex5_sh4[41] = (~(ex5_sh4_x_b[41] & ex5_sh4_y_b[41]));
assign ex5_sh4[42] = (~(ex5_sh4_x_b[42] & ex5_sh4_y_b[42]));
assign ex5_sh4[43] = (~(ex5_sh4_x_b[43] & ex5_sh4_y_b[43]));
assign ex5_sh4[44] = (~(ex5_sh4_x_b[44] & ex5_sh4_y_b[44]));
assign ex5_sh4[45] = (~(ex5_sh4_x_b[45] & ex5_sh4_y_b[45]));
assign ex5_sh4[46] = (~(ex5_sh4_x_b[46] & ex5_sh4_y_b[46]));
assign ex5_sh4[47] = (~(ex5_sh4_x_b[47] & ex5_sh4_y_b[47]));
assign ex5_sh4[48] = (~(ex5_sh4_x_b[48] & ex5_sh4_y_b[48]));
assign ex5_sh4[49] = (~(ex5_sh4_x_b[49] & ex5_sh4_y_b[49]));
assign ex5_sh4[50] = (~(ex5_sh4_x_b[50] & ex5_sh4_y_b[50]));
assign ex5_sh4[51] = (~(ex5_sh4_x_b[51] & ex5_sh4_y_b[51]));
assign ex5_sh4[52] = (~(ex5_sh4_x_b[52] & ex5_sh4_y_b[52]));
assign ex5_sh4[53] = (~(ex5_sh4_x_b[53] & ex5_sh4_y_b[53]));
assign ex5_sh4[54] = (~(ex5_sh4_x_b[54] & ex5_sh4_y_b[54]));
//---------------------------------------------
assign ex5_sh5_x_b[0] = (~(ex5_sh4[0] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[1] = (~(ex5_sh4[1] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[2] = (~(ex5_sh4[2] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[3] = (~(ex5_sh4[3] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[4] = (~(ex5_sh4[4] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[5] = (~(ex5_sh4[5] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[6] = (~(ex5_sh4[6] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[7] = (~(ex5_sh4[7] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[8] = (~(ex5_sh4[8] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[9] = (~(ex5_sh4[9] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[10] = (~(ex5_sh4[10] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[11] = (~(ex5_sh4[11] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[12] = (~(ex5_sh4[12] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[13] = (~(ex5_sh4[13] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[14] = (~(ex5_sh4[14] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[15] = (~(ex5_sh4[15] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[16] = (~(ex5_sh4[16] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[17] = (~(ex5_sh4[17] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[18] = (~(ex5_sh4[18] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[19] = (~(ex5_sh4[19] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[20] = (~(ex5_sh4[20] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[21] = (~(ex5_sh4[21] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[22] = (~(ex5_sh4[22] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[23] = (~(ex5_sh4[23] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[24] = (~(ex5_sh4[24] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[25] = (~(ex5_sh4[25] & ex5_shift_extra_cp3_b));
assign ex5_sh5_x_b[26] = (~(ex5_sh4[26] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[27] = (~(ex5_sh4[27] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[28] = (~(ex5_sh4[28] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[29] = (~(ex5_sh4[29] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[30] = (~(ex5_sh4[30] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[31] = (~(ex5_sh4[31] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[32] = (~(ex5_sh4[32] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[33] = (~(ex5_sh4[33] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[34] = (~(ex5_sh4[34] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[35] = (~(ex5_sh4[35] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[36] = (~(ex5_sh4[36] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[37] = (~(ex5_sh4[37] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[38] = (~(ex5_sh4[38] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[39] = (~(ex5_sh4[39] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[40] = (~(ex5_sh4[40] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[41] = (~(ex5_sh4[41] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[42] = (~(ex5_sh4[42] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[43] = (~(ex5_sh4[43] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[44] = (~(ex5_sh4[44] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[45] = (~(ex5_sh4[45] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[46] = (~(ex5_sh4[46] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[47] = (~(ex5_sh4[47] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[48] = (~(ex5_sh4[48] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[49] = (~(ex5_sh4[49] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[50] = (~(ex5_sh4[50] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[51] = (~(ex5_sh4[51] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[52] = (~(ex5_sh4[52] & ex5_shift_extra_cp4_b));
assign ex5_sh5_x_b[53] = (~(ex5_sh4[53] & ex5_shift_extra_cp4_b));
assign ex5_sh5_y_b[0] = (~(ex5_sh4[1] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[1] = (~(ex5_sh4[2] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[2] = (~(ex5_sh4[3] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[3] = (~(ex5_sh4[4] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[4] = (~(ex5_sh4[5] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[5] = (~(ex5_sh4[6] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[6] = (~(ex5_sh4[7] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[7] = (~(ex5_sh4[8] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[8] = (~(ex5_sh4[9] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[9] = (~(ex5_sh4[10] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[10] = (~(ex5_sh4[11] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[11] = (~(ex5_sh4[12] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[12] = (~(ex5_sh4[13] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[13] = (~(ex5_sh4[14] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[14] = (~(ex5_sh4[15] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[15] = (~(ex5_sh4[16] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[16] = (~(ex5_sh4[17] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[17] = (~(ex5_sh4[18] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[18] = (~(ex5_sh4[19] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[19] = (~(ex5_sh4[20] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[20] = (~(ex5_sh4[21] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[21] = (~(ex5_sh4[22] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[22] = (~(ex5_sh4[23] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[23] = (~(ex5_sh4[24] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[24] = (~(ex5_sh4[25] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[25] = (~(ex5_sh4[26] & ex5_shift_extra_cp3));
assign ex5_sh5_y_b[26] = (~(ex5_sh4[27] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[27] = (~(ex5_sh4[28] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[28] = (~(ex5_sh4[29] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[29] = (~(ex5_sh4[30] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[30] = (~(ex5_sh4[31] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[31] = (~(ex5_sh4[32] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[32] = (~(ex5_sh4[33] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[33] = (~(ex5_sh4[34] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[34] = (~(ex5_sh4[35] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[35] = (~(ex5_sh4[36] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[36] = (~(ex5_sh4[37] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[37] = (~(ex5_sh4[38] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[38] = (~(ex5_sh4[39] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[39] = (~(ex5_sh4[40] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[40] = (~(ex5_sh4[41] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[41] = (~(ex5_sh4[42] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[42] = (~(ex5_sh4[43] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[43] = (~(ex5_sh4[44] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[44] = (~(ex5_sh4[45] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[45] = (~(ex5_sh4[46] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[46] = (~(ex5_sh4[47] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[47] = (~(ex5_sh4[48] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[48] = (~(ex5_sh4[49] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[49] = (~(ex5_sh4[50] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[50] = (~(ex5_sh4[51] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[51] = (~(ex5_sh4[52] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[52] = (~(ex5_sh4[53] & ex5_shift_extra_cp4));
assign ex5_sh5_y_b[53] = (~(ex5_sh4[54] & ex5_shift_extra_cp4));
endmodule