o
    i1                     @   sx   d dl Z e jd  dkZereZeZe je _ed  dd fddZ	dZ
dd Zd	d
 Zdd Zdd Zdd Zdd ZdS )    N   Tc                    sp   t \}td|> d }rtt|@ |nt|@ |dkr*t nt fdd}|S )N   @   c                    s    A | ||S N )crc1crc2len2funinitCrcpolyrevxorOutr   F/home/ubuntu/.local/lib/python3.10/site-packages/oss2/crc64_combine.pycombine_fun6   s   z!mkCombineFun.<locals>.combine_fun)_verifyParamslong_bitrev
_combine64NotImplemented)r   r   r   r   sizeBitsmaskr   r   r
   r   mkCombineFun%   s   r   r   c                 C   s$   t tD ]}t||| | |< qd S r   )xrangeGF2_DIMgf2_matrix_times)squarematnr   r   r   gf2_matrix_squareC   s   r    c                 C   s8   d}d}|r|d@ r|| | N }|dL }|d7 }|s|S Nr   r   r   )r   vecsummary	mat_indexr   r   r   r   H   s   r   c                 C   s  |dkr|S dgt  }dgt  }|||A N }|r/| |d< d}	tdt D ]
}
|	||
< |	dK }	q#nd}	tdt d D ]
}
|	||
< |	dK }	q8| |t d < t|| t|| 	 t|| |td@ rdt||}|dL }|dkrmnt|| |td@ r}t||}|dL }|dkrnqT||N }|S )Nr   r      )r   r   r    r   r   )r   r   r   r   r   r   r	   evenoddrowr   r   r   r   r   V   sF   









r   c                 C   sP   d}t | } dD ]}t d|> }|d }||   kr!|k r#|  S  qqt|)Nz8The degree of the polynomial must be 8, 16, 24, 32 or 64)             r   r   r%   )r   
ValueError)r   msgr   lowhighr   r   r   _verifyPoly   s   r1   c                 C   s\   t | } t d}t|D ]}|d> | t d@ B }| d? } qt d|> d tjkr,t|S |S r!   )r   r   sysmaxintint)xr   yir   r   r   r      s   
r   c                 C   s^   t | }td|> d }t||@ }|tjkrt|}t||@ }|tjkr*t|}|||fS )Nr   )r1   r   r2   r3   r4   )r   r   r   r   r   r   r   r   r      s   


r   )r2   version_infois_py3ranger   r4   r   maxsizer3   r   r   r    r   r   r1   r   r   r   r   r   r   <module>   s    7