Hey there, I bumped into this error when testing gprsdecode from srldabs.de When I try the sample .dat files provided from srlabs.de it works fine though. Any hints?
Kind Regards
George AndguladzeSenior Software EngineerBusiness Management Technology
www.bmt.ge
Hey, I finally watched Nico's talk "let me answer that for you" and heard him say he ported layer2/3 to target.
Also found a mailing list message about him cleaning it up and putting it up on git and sending it to a few folks.
Did that code ever get shared? Would be cool to play around with and is certainly something I would eventually want to accomplish for my project of making a phone that works by itself.
-Craig
Dear all, I vae the C115 with a T1 USB to Serial cable with the Prolific
chipset.
When i run osmocon i get :- an its just sits there with no further
processing.
./osmocon -p /dev/ttyUSB0 -m c123xor
../../target/firmware/board/compal_e88/loader.compalram.bin
read_file(../../target/firmware/board/compal_e88/loader.compalram.bin):
file_size=17120, hdr_len=4, dnload_len=17127
read_file(../../target/firmware/board/compal_e88/loader.compalram.bin):
file_size=17120, hdr_len=4, dnload_len=17127
got 1 bytes from modem, data looks like: 00 .
got 2 bytes from modem, data looks like: 2f 00 /.
got 1 bytes from modem, data looks like: 1b .
got 3 bytes from modem, data looks like: f6 02 00 ...
got 1 bytes from modem, data looks like: 41 A
got 1 bytes from modem, data looks like: 01 .
got 1 bytes from modem, data looks like: 40 @
Received PROMPT1 from phone, responding with CMD
got 1 bytes from modem, data looks like: 66 f
got 1 bytes from modem, data looks like: 74 t
got 1 bytes from modem, data looks like: 6d m
got 1 bytes from modem, data looks like: 74 t
got 1 bytes from modem, data looks like: 6f o
got 1 bytes from modem, data looks like: 6f o
got 1 bytes from modem, data looks like: 6c l
Received FTMTOOL from phone, ramloader has aborted
got 1 bytes from modem, data looks like: 65 e
got 1 bytes from modem, data looks like: 72 r
got 1 bytes from modem, data looks like: 72 r
got 1 bytes from modem, data looks like: 6f o
got 1 bytes from modem, data looks like: 72 r
got 1 bytes from modem, data looks like: 00 .
got 1 bytes from modem, data looks like: 00 .
I think the cable is ok as when i run my fingers on the tip i get random
Zeros so it appears to be talking to the cable.
Also when i tried to run Mobile i get the :- even though i created the
Mobile.cfg file in /etc/osmoco
Failed to parse the config file: '/home/raz/.osmocom/bb/mobile.cfg'
Please check or create config file using: 'touch
/home/raz/.osmocom/bb/mobile.cfg'
I have spent some hours researching the lists and trying various things to
no avail but I want to continue until I resolve this issues and use this
great stack to learn about the GSM network.
Please advise.
Great full for any help or pointers but this maybe a timing issue that is
difficult to debug.
Thanks
Raz
hi,
i did a lot of resarch and testing on cell selection and re-selection
process the last two week.
the cell selection process, network selection process (manual and
automatic) and mobility management process were already implemented in
OsmocomBB a long time, but turned out to be buggy and incomplete. i made
test drives to check the process and debugged it.
the re-selection process is new. it is used to track surrounding cells
while listening to the BCCH of the current cell (camping on a cell).
special extension to the layer1 firmare is used to measure neighbour
cells. if an neighbour cell becomes 'better', the mobile switches to
that cell, depening on different criteria. now it is possible to move
with OsmocomBB.
the re-selection process is not handover! handover is a process where a
phone switches between cells while doing a call. handover is one next
step to implement. the process is a little more complex, because it
requires not only neighbour cell measurements, but also syncing to them
without interrupting the traffic channel. most layer 3 stuff of handover
is already implemented.
if you like to play and test your moving OsmocomBB, you can check out
the "jolly/roaming" branch. it contains the extension to layer1, as well
as sim reader and fixes from "sylvain/testing" branch. use both "mobile"
and "layer1" firmware from this branch.
in order to see some process at VTY, you can do:
enable
monitor network 1 (continously display the strongest cell and neighbour
cells)
show ms 1 (to see current states)
show neighbour-cells 1 (to see a more detailed current list of
neighbours)
andreas
Hi,
in the osmocom bb mobile.cfg I don't see any posibility to set a fixed
Kc encryption key and the tmsi.
How could I achieve that osmocom uses my defined Kc and tmsi?
cheers,
Simian
Hi all,
*I connected, sent and made call successful with osmocombb (with real IMSI
and IMEI).
But, now, I get error, always be rejected:*
OsmocomBB# show ms
MS '1' is up, service is limited
IMEI: 357337016773249
IMEISV: 3573370167732490
IMEI generation: fixed
automatic network selection state: A0 null
cell selection state: PLMN search
radio ressource layer state: idle
mobility management layer state: MM idle, PLMN search
OsmocomBB#
% (MS 1)
% Trying to registering with network...
*in my config file (/root/.osmocom/bb/mobile.cfg)**:*
!
! OsmocomBB () configuration saved from vty
!!
!
line vty
no login
!
gps device /dev/ttyACM0
gps baudrate default
no gps enable
!
no hide-default
!
ms 1
layer2-socket /tmp/osmocom_l2
sap-socket /tmp/osmocom_sap
sim reader
network-selection-mode auto
imei 357337016773249 0
imei-fixed
emergency-imsi 452040399998391
sms-service-center +84980200030
no call-waiting
no auto-answer
no force-rekey
no clip
no clir
tx-power auto
no simulated-delay
no stick
location-updating
neighbour-measurement
codec full-speed prefer
codec half-speed
no abbrev
support
sms
a5/1
a5/2
p-gsm
e-gsm
r-gsm
gsm-850
dcs
pcs
class-900 4
class-850 4
class-dcs 1
class-pcs 1
channel-capability sdcch+tchf+tchh
full-speech-v1
full-speech-v2
half-speech-v1
min-rxlev -106
dsc-max 90
no skip-max-per-band
exit
test-sim
imsi 001010000000000
ki xor 00 00 00 00 00 00 00 00 00 00 00 00
no barred-access
no rplmn
hplmn-search foreign-country
exit
no shutdown
exit
!
Anyone help me???, thanks a lot!
--
Thanks and Best Regards
--
From: Hoàng Mạnh Hùng
Hi,
I'm trying to run the latest osmocom-bb git on a Motorola C118 phone.
After a minor problem with the build (as you may've noticed in the
patch I've sent). I got to the point of successfuly running layer1 on
the phone and the mobile app on the PC (I have also enabled TX). The
process seems to be stuck on trying to perform a location update. The
status of the ms is always either:
show ms
MS '1' is up, MM connection active
IMEI: 000000000000000
IMEISV: 0000000000000000
IMEI generation: fixed
automatic network selection state: A1 trying RPLMN
MCC=104 MNC=002 (104, 002)
cell selection state: connected mode 1
ARFCN=19 MCC=104 MNC=002 LAC=0xb00f CELLID=0x4fd9
(104, 002)
radio ressource layer state: connection pending
mobility management layer state: wait for RR connection (location updating)
OsmocomBB>
or
show ms
MS '1' is up, service is limited (pending)
IMEI: 000000000000000
IMEISV: 0000000000000000
IMEI generation: fixed
automatic network selection state: A1 trying RPLMN
MCC=104 MNC=002 (104, 002)
cell selection state: C3 camped normally
ARFCN=19 MCC=104 MNC=002 LAC=0xb00f CELLID=0x4fd9
(104, 002)
radio ressource layer state: idle
mobility management layer state: MM idle, attempting to update
OsmocomBB>
I think, that because of this I can't make any calls or send sms (all
the requests are being rejected):
OsmocomBB# call 1 <X>
call 1 <X>
OsmocomBB#
% (MS 1)
% Call has been rejected
The log information from mobile when it's trying to do a location
update is show below:
<000b> gsm48_rr.c:2174 PAGING REQUEST 1
<000b> gsm48_rr.c:2141 IMSI 260021964220249 (not for us)
<000b> gsm48_rr.c:2132 TMSI fd82a501 (not for us)
<000e> gsm48_mm.c:344 Location update retry
<0005> gsm48_mm.c:345 timer T3211 (loc. upd. retry delay) has fired
<0005> gsm48_mm.c:4311 (ms 1) Received 'MM_EVENT_TIMEOUT_T3211' event
in state MM IDLE, attempting to update
<000e> gsm48_mm.c:2199 Perform location update (MCC 104, MNC 002 LAC 0xb00f)
<0005> gsm48_mm.c:2333 LOCATION UPDATING REQUEST
<0005> gsm48_mm.c:2355 using LAI (mcc 104 mnc 002 lac 0xb00f)
<0005> gsm48_mm.c:2363 using TMSI 0x28a3d62e
<0005> gsm48_mm.c:914 new state MM IDLE, attempting to update -> wait
for RR connection (location updating)
<0001> gsm48_rr.c:5428 (ms 1) Message 'RR_EST_REQ' received in state
idle (sapi 0)
<000e> gsm48_rr.c:1318 Establish radio link due to mobility management request
<0003> gsm322.c:4037 (ms 1) Event 'EVENT_LEAVE_IDLE' for Cell
selection in state 'C3 camped normally'
<0003> gsm322.c:823 new state 'C3 camped normally' -> 'connected mode 1'
<0003> gsm322.c:3653 Going to camping (normal) ARFCN 19.
<0003> gsm322.c:463 Sync to ARFCN=19 rxlev=-74 (Sysinfo, ccch mode NON-COMB)
<0001> gsm48_rr.c:366 new state idle -> connection pending
<0001> gsm48_rr.c:1465 CHANNEL REQUEST: 00 (Location Update with NECI)
<0003> gsm322.c:2938 Channel synched. (ARFCN=19, snr=16, BSIC=17)
<0001> gsm322.c:2959 using DSC of 90
<0003> gsm48_rr.c:4816 Channel provides data.
<0001> gsm48_rr.c:1601 RANDOM ACCESS (requests left 5)
<0001> gsm48_rr.c:1658 RANDOM ACCESS (Tx-integer 50 combined no
S(lots) 0 ra 0x0e)
<0001> gsm48_rr.c:1697 Use MS-TXPWR-MAX-CCH power value 5 (33 dBm)
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:1601 RANDOM ACCESS (requests left 4)
<0001> gsm48_rr.c:1658 RANDOM ACCESS (Tx-integer 50 combined no
S(lots) 55 ra 0x07)
<0001> gsm48_rr.c:1697 Use MS-TXPWR-MAX-CCH power value 5 (33 dBm)
<0001> gsm48_rr.c:2450 IMMEDIATE ASSIGNMENT:
<0001> gsm48_rr.c:2462 (ta 2/1107m ra 0x75 chan_nr 0x0a MAIO 0 HSN 38
TS 2 SS 0 TSC 0)
<0001> gsm48_rr.c:2503 Request, but not for us.
<0001> gsm48_rr.c:2450 IMMEDIATE ASSIGNMENT:
<0001> gsm48_rr.c:2462 (ta 2/1107m ra 0x75 chan_nr 0x0a MAIO 0 HSN 38
TS 2 SS 0 TSC 0)
<0001> gsm48_rr.c:2503 Request, but not for us.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:673 MON: f=19 lev=-78 snr= 0 ber= 0 LAI=104 002 b00f ID=4fd9
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:1601 RANDOM ACCESS (requests left 3)
<0001> gsm48_rr.c:1658 RANDOM ACCESS (Tx-integer 50 combined no
S(lots) 55 ra 0x0f)
<0001> gsm48_rr.c:1697 Use MS-TXPWR-MAX-CCH power value 5 (33 dBm)
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:1601 RANDOM ACCESS (requests left 2)
<0001> gsm48_rr.c:1658 RANDOM ACCESS (Tx-integer 50 combined no
S(lots) 55 ra 0x01)
<0001> gsm48_rr.c:1697 Use MS-TXPWR-MAX-CCH power value 5 (33 dBm)
<0001> gsm48_rr.c:2450 IMMEDIATE ASSIGNMENT:
<0001> gsm48_rr.c:2473 (ta 1/553m ra 0x18 chan_nr 0x59 ARFCN 19 TS 1
SS 3 TSC 1)
<0001> gsm48_rr.c:2503 Request, but not for us.
<0001> gsm48_rr.c:2450 IMMEDIATE ASSIGNMENT:
<0001> gsm48_rr.c:2473 (ta 1/553m ra 0x18 chan_nr 0x59 ARFCN 19 TS 1
SS 3 TSC 1)
<0001> gsm48_rr.c:2503 Request, but not for us.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:1601 RANDOM ACCESS (requests left 1)
<0001> gsm48_rr.c:1658 RANDOM ACCESS (Tx-integer 50 combined no
S(lots) 55 ra 0x0a)
<0001> gsm48_rr.c:1697 Use MS-TXPWR-MAX-CCH power value 5 (33 dBm)
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:673 MON: f=19 lev=-78 snr= 0 ber= 1 LAI=104 002 b00f ID=4fd9
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:1601 RANDOM ACCESS (requests left 0)
<0001> gsm48_rr.c:1605 Done with sending RANDOM ACCESS bursts
<0001> gsm48_rr.c:836 starting T3126 with 5.000 seconds
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2225 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:673 MON: f=19 lev=-78 snr= 0 ber= 0 LAI=104 002 b00f ID=4fd9
<0001> gsm48_rr.c:2450 IMMEDIATE ASSIGNMENT:
<0001> gsm48_rr.c:2473 (ta 2/1107m ra 0x0a chan_nr 0x41 ARFCN 19 TS 1
SS 0 TSC 1)
<0001> gsm48_rr.c:2393 request 0a matches but not frame number
(IMM.ASS fn=22,6,30 != RACH fn=22,5,25)
<0001> gsm48_rr.c:2503 Request, but not for us.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2450 IMMEDIATE ASSIGNMENT:
<0001> gsm48_rr.c:2473 (ta 2/1107m ra 0x05 chan_nr 0x49 ARFCN 19 TS 1
SS 1 TSC 1)
<0001> gsm48_rr.c:2503 Request, but not for us.
<0001> gsm48_rr.c:2450 IMMEDIATE ASSIGNMENT:
<0001> gsm48_rr.c:2473 (ta 2/1107m ra 0x05 chan_nr 0x49 ARFCN 19 TS 1
SS 1 TSC 1)
<0001> gsm48_rr.c:2503 Request, but not for us.
<0001> gsm48_rr.c:2225 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:673 MON: f=19 lev=-77 snr= 0 ber= 6 LAI=104 002 b00f ID=4fd9
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2450 IMMEDIATE ASSIGNMENT:
<0001> gsm48_rr.c:2473 (ta 2/1107m ra 0x00 chan_nr 0x61 ARFCN 19 TS 1
SS 4 TSC 1)
<0001> gsm48_rr.c:2503 Request, but not for us.
<0001> gsm48_rr.c:2450 IMMEDIATE ASSIGNMENT:
<0001> gsm48_rr.c:2473 (ta 2/1107m ra 0x00 chan_nr 0x61 ARFCN 19 TS 1
SS 4 TSC 1)
<0001> gsm48_rr.c:2503 Request, but not for us.
<0001> gsm48_rr.c:2450 IMMEDIATE ASSIGNMENT:
<0001> gsm48_rr.c:2462 (ta 2/1107m ra 0x7d chan_nr 0x0b MAIO 0 HSN 38
TS 3 SS 0 TSC 0)
<0001> gsm48_rr.c:2503 Request, but not for us.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2450 IMMEDIATE ASSIGNMENT:
<0001> gsm48_rr.c:2462 (ta 2/1107m ra 0x7d chan_nr 0x0b MAIO 0 HSN 38
TS 3 SS 0 TSC 0)
<0001> gsm48_rr.c:2503 Request, but not for us.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:673 MON: f=19 lev=-78 snr= 0 ber= 0 LAI=104 002 b00f ID=4fd9
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2225 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2225 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:673 MON: f=19 lev=-78 snr= 0 ber= 3 LAI=104 002 b00f ID=4fd9
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2450 IMMEDIATE ASSIGNMENT:
<0001> gsm48_rr.c:2462 (ta 2/1107m ra 0x77 chan_nr 0x09 MAIO 0 HSN 38
TS 1 SS 0 TSC 0)
<0001> gsm48_rr.c:2503 Request, but not for us.
<0001> gsm48_rr.c:2450 IMMEDIATE ASSIGNMENT:
<0001> gsm48_rr.c:2462 (ta 2/1107m ra 0x77 chan_nr 0x09 MAIO 0 HSN 38
TS 1 SS 0 TSC 0)
<0001> gsm48_rr.c:2503 Request, but not for us.
<0001> gsm48_rr.c:2225 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:2170 PAGING ignored, we are not camping.
<0001> gsm48_rr.c:673 MON: f=19 lev=-78 snr= 0 ber= 6 LAI=104 002 b00f ID=4fd9
<0001> gsm48_rr.c:765 timer T3126 has fired
<000e> gsm48_rr.c:770 Requesting channel failed
<0001> gsm48_rr.c:366 new state connection pending -> idle
<0003> gsm322.c:4037 (ms 1) Event 'EVENT_RET_IDLE' for Cell selection
in state 'connected mode 1'
<0003> gsm322.c:3565 Selecting ARFCN 19. after LOC.UPD.
<0003> gsm322.c:463 Sync to ARFCN=19 rxlev=-74 (Sysinfo, ccch mode NON-COMB)
<0003> gsm322.c:823 new state 'connected mode 1' -> 'C3 camped normally'
<0005> gsm48_mm.c:3902 (ms 1) Received 'RR_REL_IND' from RR in state
wait for RR connection (location updating) (sapi 0)
<0005> gsm48_mm.c:2732 RR link released after loc. upd.
<000e> gsm48_mm.c:2676 Location update failed
<000e> gsm48_mm.c:2686 Try location update later
<0005> gsm48_mm.c:2688 Loc. upd. failed, retry #0
<0005> gsm48_mm.c:413 starting T3211 (loc. upd. retry delay) with 15.0 seconds
<0005> gsm48_mm.c:1143 We are camping normally as returning to MM IDLE
<0005> gsm48_mm.c:1159 Loc. upd. allowed.
<0005> gsm48_mm.c:919 new state wait for RR connection (location
updating) -> MM IDLE, location updating needed
<0005> gsm48_mm.c:909 new MM IDLE state location updating needed ->
attempting to update
<0005> gsm48_mm.c:2215 Loc. upd. already pending.
<0005> gsm48_mm.c:4311 (ms 1) Received 'MM_EVENT_CELL_SELECTED' event
in state MM IDLE, attempting to update
<0005> gsm48_mm.c:2215 Loc. upd. already pending.
<0003> gsm322.c:2938 Channel synched. (ARFCN=19, snr=16, BSIC=17)
<0001> gsm322.c:2959 using DSC of 90
Can you provide me any hints on how to debug this ? Why is the
location update failing constantly ?
Thanks in advance for your help.
Best regards,
Maciej Grela
Hi All
Just wanted to confirm that I got Osmocom-BB up and running on a Raspberry Pi.
I did not use the GPIO UART pins but USB <-> serial converters.
I tried Motorola C118 and C155 with success.
Everything you need is already described:
http://bb.osmocom.org/trac/wiki/GnuArmToolchainhttp://bb.osmocom.org/trac/wiki/libosmocorehttp://bb.osmocom.org/trac/wiki/Software/GettingStarted?redirectedfrom=Gett…
My previous problem seems to have been a not fully compatible crosscompiled toolchain. (it worked mostly, but I could not log-in to a cell and the spectrum view crashed on the RSSI Firmware.
Also if you want transmit capability (or flashing) then you need to activate those features in the makefile.
Thanks Sylvain (confirming c118 will work) and all others who are involved!!
PS: Any news on the "emulated BTS" that has been presented at last years chaos communication congress?
I have 2 C118s + 1 normal USB serial dongle + 1 capable of burst ind.
I hope this will suffice to also run also a possible future 1 trasmit phone + 1 receive phone configuration.
I assume that even without the filter change it should be enough to send a few meters of distance.
I'm at the point w/ flashing firmware where I feel like I need to use a debugger w/ JTAG. I figured I could probably use serial line logging somehow but JTAG seems better and I should learn it anyway.
Has anyone pried open the shield on a c139/c140 and tried attaching to the JTAG test points that are just inside the shield next to the test points which are accessible via the battery compartment?
Attached is simple patch which adds little-endian & big-endian macro to move bytes to
and from multibyte integer types like uint16_t, uint32_t etc.
Some of this code is used right away in msgb.h but it will also be used in kasumi
implementation later on.
--
best regards,
Max, http://fairwaves.ru
Hello.
Attached is a trivial patch which breaks existing GPRS cipher API of libosmocore by
switching from fixed 64-bit length Kc to variable-length.
There are several justifications for that:
- compliance with ETSI TS 155.22 (GEA4 - 128 bits Kc) and all further versions
- similarity to existing auth api (osmocom/crypt/auth.h uses 128 bits as well)
- nobody uses this API anyway (except my other patches with GEA)
- patch breaks nothing within libosmocore (make check succeeds) and openbsc (uses
gea0 only)
That's why I think next libosmocore version should apply this patch and change unused
API before someone actually start using it and makes transition more difficult.
--
best regards,
Max, http://fairwaves.ru
Hi.
While looking at osmocom-bb compilation warnings I've noticed that there are plenty
of those cause by signed-unsigned comparison with msgb-related functions. Attached is
a trivial patch which fixes that by changing int -> uint16_t. For the sake of
completeness I've also changed other functions to explicitly use uint16_t - this is
used for length fields in "struct msgb" anyway.
Although technically it's API change I do not expect any sane code to break. If you
still think it's potentially insecure, this could be applied during next api version
bump alongside with gprs api change.
--
best regards,
Max, http://fairwaves.ru
Hi all.
I'd like to see osmocom-bb builds less cluttered by compiler warnings - attached is
(far from complete) attempt to do so. It's tested which means it builds on my machine
and resulting mobile app seems to run fine - no in-depth testing were made.
However I'd like to get some feedback before going further: there seems to be some
evil hackery happening around src/target/firmware/apps/loader/main.c:
Why do we have external "unsigned char _start" which later used as msgb_put_u32(msg,
&_start);
Do we make some assumptions on the size of unsigned char? Is this documented
somewhere by any chance?
Also there are plenty of warnings regarding alignment: some things are marked as
"__attribute__ ((packed))" and some are not which seems to make compiler unhappy. Is
there rule of thumb to decide when we should care about alignment?
--
best regards,
Max, http://fairwaves.ru
what menu.e88loader.bin: No such file or directoryI refer to this article
:http://bb.osmocom.org/trac/wiki/flashing_newBut why can't find
menu.e88loader.bin??Does anyone know?thanks
--
View this message in context: http://baseband-devel.722152.n3.nabble.com/what-menu-e88loader-bin-No-such-…
Sent from the baseband-devel mailing list archive at Nabble.com.
Hi all,
time is moving fast, and I want to start some initial discussion and
planning for OsmoDevCon 2014.
There are basically four questions which I'm raising below. Please
provide your feedback to the osmocom-event-orga mailing list only, to
avoid cross-posting over all the project lists.
= Who? =
My intention is to keep it an 'active developer/contributer only' event,
like we had it before. I would also want to keep the group relatively
small, to keep the 'Osmocom family' atmosphere.
If desired, we could have one half or full day of public prsentations in
a larger auditorium, but the developer meeting should be a close group,
as known so far.
= Where? =
If we keep the number of attendees within the same range as this year,
then I'm sure we could again hold it at the same venue. I know it is
not perfect, but it is a place that we have access to, 24 hours per day,
and free of cost for community projects like osmocom.org.
If the community wants a larger event, then this is something that would
require more funds and much more time organizing. And that is something
that I personally could not offer to take care of, sorry. I'm happy to
attend and support any larger events, but I'm unable to take care of
fundraising and venue research.
= When? =
Q1/2014. In January, I'm not aware of any 'blocker' events. February,
there is Fosdem (Feb 1 + Feb 2), and MWC from Feb 24 through Feb 27. In
March there is CeBIT (March 10-14) and Easter holidays (with EasterHegg
March 17-21). Did I miss any other FOSS / mobile event that might clash
in Q1?
So my preference woudl be to do it either late January (23-26) or in
February (6-9 or 13-16). Any preferences regarding preferred schedule?
Once we have some concencus here on the list [and we want to do it in
the same size / venue], I'll talk to IN-Berlin.
= What? =
I think that question is easy to answer, if we have the above three
figured out... There's no shortage of topics, I suppose.
You can start adding your suggestions to
http://openbsc.osmocom.org/trac/wiki/OsmoDevCon2014
Regards,
Harald
--
- Harald Welte <laforge(a)gnumonks.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
On 12/27/13, neetesh saxena <saxenaneetesh061(a)rediffmail.com> wrote:
> Hi everyone,
>
> Can anyone please tell me what is the GSM frequency band for Europe
> (Germany)?
>
> Do I need to enable such band before working on OsmocomBB ?
>
> I have uploaded the mobile layer1 onto phone but I am still not able to read
> the SIM.
> The message I got is ms 1 is down and radio is not started.
>
> Can someone comment on this ?
>
>
>
> With regards
>
> Neetesh
>
>
your sim not connect to network . or maybe you can try use Blackberry
engineer mode for other options
http://ngerepotin.blogspot.com/2013/12/bbem-blackberry-engineer-mode.html
Cheers!
Dear all,
just a quick reminder:
On Sat, Nov 30, 2013 at 02:57:20PM +0100, Harald Welte wrote:
> Please make sure to add your name to the list at
> https://openbsc.osmocom.org/trac/wiki/OsmoDevCon2014 until December
> 31st (latest). If you don't have a wiki account, ask somebody who has
> one, apply for a wiki account or send an e-mail to me.
so today is the last chance to indicate your intrest in attending
OsmoDevCon.
I'm surprised to not have seen the following names in the list: pablo,
peter, nion, steve-m, dmitry, kaber. It would be great to have you
around again this year.
Looking forward to meeting all of you again!
Regards,
Harald
--
- Harald Welte <laforge(a)gnumonks.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Hello,
I need some help and maybe you are able to help me. Before I made any
decision I need confirm some of things I do not fully understand.
First of all I have some tests to preform and to make some report:
I need to receive CCCH or part of CCCH like PCH and to store results. After
this results are stored I need to analyze them with following:
1) How many paging requests came from 3 different operators at one LAC (I
know each of them will have separate LAC)
2) Than I need to confirm how many paging requests came calling IMSI how
much with TMSI
3) If it is possible to be done on one computer with 3 devices, or I will
need more computers ?
Question is because I need to do some reports. I do not need to monitor or
intercept any encrypted data, to monitor SMS or any call.7
My question is is this possible ? And is there anybody who can help me to
do this ?
I found that some TEST equipment is capable to give me this results, but it
is to expensive to me.
Also if there is anybody in region of Balkan who was doing something like
this please contact me.
Project I need to finish is to monitor some number of days with Paging
requests, and to make Prediction on what way and what speed GSM network
will grow .
Regards
Milinko Isakovic
Hi Neetesh,
> Can anyone please tell me what is the GSM frequency band for Europe
> (Germany)?
GSM 900 and DCS 1800.
> Do I need to enable such band before working on OsmocomBB ?
In the mobile configuration (mobile.cfg) you should see
these lines "p-gsm", "e-gsm", "dcs", in the support section
without the "no" in front of them.
> I have uploaded the mobile layer1 onto phone but I am still not able
> to read the SIM. The message I got is ms 1 is down and radio is not
> started.
This seems to be the real problem. Your SIM is not responding
to the firmware and the mobile cannot connect to any network.
You can try to apply the patch created by Lukas. It was attached
to the post "patches for SIM in the firmware" in list.
Cheers,
LM
Hi,
A simple google search would give you this link where you can see what frequencies are used in which countries.
http://www.worldtimezone.com/gsm.html
On Friday, December 27, 2013 12:01 PM, neetesh saxena <saxenaneetesh061(a)rediffmail.com> wrote:
Hi everyone,
Can anyone please tell me what is the GSM frequency band for Europe (Germany)?
Do I need to enable such band before working on OsmocomBB ?
I have uploaded the mobile layer1 onto phone but I am still not able to read the SIM.
The message I got is ms 1 is down and radio is not started.
Can someone comment on this ?
With regards
Neetesh
Get your own FREE website, FREE domain & FREE mobile app with Company email. Know More >
Hello,
at the compiling/installiation of osmocombb I get follow error:
e checking dependency style of gcc... gcc3 ../configure: line 3786: syntax
error near unexpected token pic-only' ../configure: line 3786:
LT_INIT(pic-only)' make: *** [shared/libosmocore/build-target/Makefile]
error 2
I made follow:
$ git clone git://git.osmocom.org/osmocom-bb.git
$ cd osmocom-bb
$ git pull -rebase
$ cd src
$ make
after make there are this error!
I have the Ubuntu-version 12.04 LTS in a VBox von oracel (64bit)
anyone an Idea?
best regards
--
View this message in context: http://baseband-devel.722152.n3.nabble.com/osmocom-error-at-compiing-tp4026…
Sent from the baseband-devel mailing list archive at Nabble.com.
Hi everyone,
I am facing a new problem. When i am trying to load layer1 on to mobile phone, getting the following error:
saxena@cosec-ug-vm1-04:/opt/osmocom-bb/src/host/osmocon$ sudo -E ./osmocon -p /dev/ttyUSB0 -m c123xor ../..target/firmware/board/compal_e88/layer1.compalram.bin
got 1 bytes from modem, data looks like: 2e .
got 1 bytes from modem, data looks like: c8 .
got 1 bytes from modem, data looks like: 1b .
got 4 bytes from modem, data looks like: f6 02 00 41 ...A
got 1 bytes from modem, data looks like: 01 .
got 1 bytes from modem, data looks like: 40 @
Received PROMPT1 from phone, responding with CMD
opening file: No such file or directory
Next time when I am trying, it does not show anything and just hang like as:
saxena@cosec-ug-vm1-04:/opt/osmocom-bb/src/host/osmocon$ sudo -E ./osmocon -p /dev/ttyUSB0 -m c123xor ../..target/firmware/board/compal_e88/layer1.compalram.bin
(no display)
Now, the phone is not able to switch on. I pressed red button many times but it doesn't work.
can anyone tell me what is wrong in it?
With regards
Neetesh Saxena...
Get your own FREE website, FREE domain & FREE mobile app with Company email. Know More >
neetesh saxena wrote:
> MS '1' is down, radio is not started
hi neetesh,
did you start your phone? what does "osmocon" (debugging ouput) show?
does it load the layer1 binary when pressing the red button?
best regards,
andreas
Hi,
I am a new user to osmocom. I am getting the following error:
OsmocomBB# show ms 1
MS '1' is down, radio is not started
IMEI: 000000000000000
IMEISV: 0000000000000000
IMEI generation: fixed
automatic network selection state: A0 null
cell selection state: C0 null
radio ressource layer state: idle
mobility management layer state: MM idle, PLMN search
OsmocomBB# show subscriber 1
Mobile Subscriber of MS '1':
IMSI:
Status: U2_NOT_UPDATED IMSI detached LAI: invalid
Access barred cells: no
Access classes:
can anyone tell me the solution what is the exact problem.
I have also tried this one:
"enable" -> "conf t" -> "ms 1" -> "no shutdown"
and make "write" the config.
Please help me. I am also using C118 phone in Germany.
regards,
Neetesh
Get your own FREE website, FREE domain & FREE mobile app with Company email. Know More >
---
include/osmocom/core/msgb.h | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/include/osmocom/core/msgb.h b/include/osmocom/core/msgb.h
index fe2733b..9221fda 100644
--- a/include/osmocom/core/msgb.h
+++ b/include/osmocom/core/msgb.h
@@ -99,7 +99,7 @@ uint16_t msgb_length(const struct msgb *msg);
* This function computes the number of bytes between the tail of the
* message and the layer 1 header.
*/
-static inline unsigned int msgb_l1len(const struct msgb *msgb)
+static inline uint16_t msgb_l1len(const struct msgb *msgb)
{
return msgb->tail - (uint8_t *)msgb_l1(msgb);
}
@@ -111,7 +111,7 @@ static inline unsigned int msgb_l1len(const struct msgb *msgb)
* This function computes the number of bytes between the tail of the
* message and the layer 2 header.
*/
-static inline unsigned int msgb_l2len(const struct msgb *msgb)
+static inline uint16_t msgb_l2len(const struct msgb *msgb)
{
return msgb->tail - (uint8_t *)msgb_l2(msgb);
}
@@ -123,7 +123,7 @@ static inline unsigned int msgb_l2len(const struct msgb *msgb)
* This function computes the number of bytes between the tail of the
* message and the layer 3 header.
*/
-static inline unsigned int msgb_l3len(const struct msgb *msgb)
+static inline uint16_t msgb_l3len(const struct msgb *msgb)
{
return msgb->tail - (uint8_t *)msgb_l3(msgb);
}
@@ -135,7 +135,7 @@ static inline unsigned int msgb_l3len(const struct msgb *msgb)
* This function computes the length difference between the underlying
* data buffer and the used section of the \a msgb.
*/
-static inline unsigned int msgb_headlen(const struct msgb *msgb)
+static inline uint16_t msgb_headlen(const struct msgb *msgb)
{
return msgb->len - msgb->data_len;
}
@@ -147,7 +147,7 @@ static inline unsigned int msgb_headlen(const struct msgb *msgb)
* This function computes the amount of octets left in the underlying
* data buffer after the end of the message.
*/
-static inline int msgb_tailroom(const struct msgb *msgb)
+static inline uint16_t msgb_tailroom(const struct msgb *msgb)
{
return (msgb->head + msgb->data_len) - msgb->tail;
}
@@ -159,7 +159,7 @@ static inline int msgb_tailroom(const struct msgb *msgb)
* This function computes the amount of bytes left in the underlying
* data buffer before the start of the actual message.
*/
-static inline int msgb_headroom(const struct msgb *msgb)
+static inline uint16_t msgb_headroom(const struct msgb *msgb)
{
return (msgb->data - msgb->head);
}
--
1.8.3.2
--------------060007020105010906090408--
Hello guys,
attached is a patch that fixes a few issues regarding SIM reader in Motorola phones (tested on C123), description:
if there’s a lot of reading from SIM it happens a FIFO gets full, IMHO the right way is to read until the FIFO is empty (while-loop added)
FETCH APDU has to be handled in the same way as GET RESPONSE (added)
once REG_SIM_IT_SIM_NATR is triggered it should set the rxDoneFlag to 1 because otherwise there’s trouble recognising NO SIM state on L1 if SIM isn’t present
in calypso_sim_powerup() and calypso_sim_reset() should set state to IDLE and put sim_len to 0 because if you do powerdown/powerup the state machine gets messed up
unsetting CONFBYPASS should make the CONFSVCCLEV and CONFSRSTLEV irrelevant but it doesn’t, calypso_sim_powerdown() fixed based on calypso spec
both calypso_sim_powerup() and calypso_sim_powerup() now return ATR as it should be when you poweron/reset the card
some minor debug messages fixed to keep all the messages consistent
Patch is apply-able on the current master.
Cheers!
Lukas
Hello,
I am running osmocom-bb on a Ubuntu x86 machine with a Motorola C121.
Everything works (as far as I can tell).
Now I would like to move the host programs to a Raspberry Pi.
So, I did a "make nofirmware" on the Rpi and copied the *.compalram.bin
files from the x86 Ubuntu box over to the Rpi.
When I use osmocon on the pi to upload the bin file to the phone, the
transfer stops after the "finished" line and then, after a while, the
phone sends a DOWNLOAD NAK, instead of the usual "DOWNLOAD ACK your code
is running now".
Has anybody seen this behaviour and knows how to fix it?
I have tried two USB/serial adapters (both FTDI based) just in case its
a hw problem, but the result is always the same: the upload to the phone
works on the Ubuntu/x86 box but not on the pi.
Any help is greatly appreciated.
Kind Regards,
-Walter
hello everybody
I want to use LCR send voice from PC to osmocom-bb, and recv traffic
voice from osmocom-bb to PC.
So at osmocom-bb/src/host/layer23/src/mobile/gsm48_rr.c
int gsm48_rr_init(struct osmocom_ms *ms)
I change
Hello.
I've got rid of unnecessary cycle and to made difference between v2 and v3 more
visible: v2 is basically just v3 with last bits of Kc zeroed. Also - small
readability improvements.
Also I've added test suite with test vectors from original python implementation.
--
best regards,
Max, http://fairwaves.ru
---
.gitignore | 1 +
include/osmocom/gsm/comp128v23.h | 4 +-
src/gsm/auth_comp128v23.c | 4 +-
src/gsm/comp128v23.c | 63 +-
tests/Makefile.am | 7 +-
tests/comp128/comp128_test.c | 2123 ++++++++++++++++++++++++++++++++++++++
tests/comp128/comp128_test.ok | 2050 ++++++++++++++++++++++++++++++++++++
tests/testsuite.at | 6 +
8 files changed, 4216 insertions(+), 42 deletions(-)
create mode 100644 tests/comp128/comp128_test.c
create mode 100644 tests/comp128/comp128_test.ok
diff --git a/.gitignore b/.gitignore
index 28392b5..71b27f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -62,6 +62,7 @@ tests/ussd/ussd_test
tests/smscb/smscb_test
tests/bits/bitrev_test
tests/a5/a5_test
+tests/comp128/comp128_test
tests/auth/milenage_test
tests/conv/conv_test
tests/lapd/lapd_test
diff --git a/include/osmocom/gsm/comp128v23.h b/include/osmocom/gsm/comp128v23.h
index aa26e56..bebeb59 100644
--- a/include/osmocom/gsm/comp128v23.h
+++ b/include/osmocom/gsm/comp128v23.h
@@ -13,11 +13,11 @@
* Performs the COMP128 version 2 and 3 algorithm (used as A3/A8)
* ki : uint8_t [16]
* srand : uint8_t [16]
- * version : uint8_t (2 or 3)
* sres : uint8_t [4]
* kc : uint8_t [8]
* returns 1 if not version 2 or 3 specified
*/
-int comp128v23(const uint8_t *ki, const uint8_t *rand, uint8_t version, uint8_t *sres, uint8_t *kc);
+int comp128v2(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc);
+int comp128v3(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc);
#endif /* __COMP128V23_H__ */
diff --git a/src/gsm/auth_comp128v23.c b/src/gsm/auth_comp128v23.c
index 36383d9..168f886 100644
--- a/src/gsm/auth_comp128v23.c
+++ b/src/gsm/auth_comp128v23.c
@@ -31,7 +31,7 @@ static int c128v2_gen_vec(struct osmo_auth_vector *vec,
struct osmo_sub_auth_data *aud,
const uint8_t *_rand)
{
- comp128v23(aud->u.gsm.ki, _rand, 2, vec->sres, vec->kc);
+ comp128v2(aud->u.gsm.ki, _rand, vec->sres, vec->kc);
vec->auth_types = OSMO_AUTH_TYPE_GSM;
return 0;
@@ -48,7 +48,7 @@ static int c128v3_gen_vec(struct osmo_auth_vector *vec,
struct osmo_sub_auth_data *aud,
const uint8_t *_rand)
{
- comp128v23(aud->u.gsm.ki, _rand, 3, vec->sres, vec->kc);
+ comp128v3(aud->u.gsm.ki, _rand, vec->sres, vec->kc);
vec->auth_types = OSMO_AUTH_TYPE_GSM;
return 0;
diff --git a/src/gsm/comp128v23.c b/src/gsm/comp128v23.c
index 9004208..e21b718 100644
--- a/src/gsm/comp128v23.c
+++ b/src/gsm/comp128v23.c
@@ -64,21 +64,17 @@ static const uint8_t table0[256] = {
218, 160, 187, 106, 35, 87, 105, 96, 145, 199, 159, 12, 121, 103, 112
};
-#define RAND_SIZE 16
-#define KI_SIZE 16
-#define SRES_SIZE 4
-#define KC_SIZE 8
static void
_comp128v23_internal(uint8_t *output, const uint8_t *kxor, const uint8_t *rand)
{
- uint8_t temp[RAND_SIZE];
- uint8_t km_rm[RAND_SIZE+KI_SIZE];
+ uint8_t temp[16];
+ uint8_t km_rm[32];
uint8_t i,j,k,z;
- memset(temp,0,sizeof(temp)/sizeof(uint8_t));
- memcpy(km_rm,rand,RAND_SIZE);
- memcpy(km_rm+RAND_SIZE,kxor,KI_SIZE);
+ memset(temp, 0, sizeof(temp));
+ memcpy(km_rm, rand, 16);
+ memcpy(km_rm + 16, kxor, 16);
for (i=0; i<5; i++) {
for (z=0; z<16; z++) {
@@ -106,21 +102,18 @@ _comp128v23_internal(uint8_t *output, const uint8_t *kxor, const uint8_t *rand)
}
int
-comp128v23(const uint8_t *ki, const uint8_t *rand, uint8_t version, uint8_t *sres, uint8_t *kc)
+comp128v3(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc)
{
- uint8_t k_mix[KI_SIZE];
- uint8_t rand_mix[RAND_SIZE];
- uint8_t katyvasz[KI_SIZE];
- uint8_t output[KI_SIZE];
- uint8_t i,s;
+ uint8_t k_mix[16];
+ uint8_t rand_mix[16];
+ uint8_t katyvasz[16];
+ uint8_t output[16];
+ uint8_t i;
- if (!(version==2 || version==3))
- return 1;
-
- memset(k_mix,0,sizeof(k_mix)/sizeof(uint8_t));
- memset(rand_mix,0,sizeof(rand_mix)/sizeof(uint8_t));
- memset(katyvasz,0,sizeof(katyvasz)/sizeof(uint8_t));
- memset(output,0,sizeof(output)/sizeof(uint8_t));
+ memset(k_mix, 0, sizeof(k_mix));
+ memset(rand_mix, 0, sizeof(rand_mix));
+ memset(katyvasz, 0, sizeof(katyvasz));
+ memset(output, 0, sizeof(output));
for (i=0; i<8; i++) {
k_mix[i] = ki[15 - i];
@@ -144,23 +137,21 @@ comp128v23(const uint8_t *ki, const uint8_t *rand, uint8_t version, uint8_t *sre
output[i] = rand_mix[15-i];
}
- if (version==2) {
- output[15] = 0;
- output[14] = 4*(output[14]>>2);
- }
-
- s = 8;
- i = 0;
- while (i<4) {
- output[s+i-4] = output[s+i];
- output[s+i] = output[s+i+4];
- i++;
- }
+ memmove(output + 4, output + 8, 8); /* ignore bytes 4..7 */
/* the algorithm uses 16 bytes until this point, but only 12 bytes are effective
* also 12 bytes coming out from the SIM card */
- memcpy(sres,output,SRES_SIZE*sizeof(uint8_t));
- memcpy(kc,&output[SRES_SIZE],KC_SIZE*sizeof(uint8_t));
+ memcpy(sres, output, 4);
+ memcpy(kc, output + 4, 8);
return 0;
}
+
+int
+comp128v2(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc)
+{
+ int r = comp128v3(ki, rand, sres, kc);
+ kc[7] = 0; /* 10 last bits of Kc forced to 0 */
+ kc[6] &= 0xfc;
+ return r;
+}
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 1bb26ce..98ede3b 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -7,7 +7,7 @@ check_PROGRAMS = timer/timer_test sms/sms_test ussd/ussd_test \
gb/bssgp_fc_test gb/gprs_ns_test \
logging/logging_test fr/fr_test \
loggingrb/loggingrb_test strrb/strrb_test \
- vty/vty_test
+ vty/vty_test comp128/comp128_test
if ENABLE_MSGFILE
check_PROGRAMS += msgfile/msgfile_test
@@ -16,6 +16,9 @@ endif
a5_a5_test_SOURCES = a5/a5_test.c
a5_a5_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la
+comp128_comp128_test_SOURCES = comp128/comp128_test.c
+comp128_comp128_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la
+
auth_milenage_test_SOURCES = auth/milenage_test.c
auth_milenage_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la
@@ -101,7 +104,7 @@ EXTRA_DIST = testsuite.at $(srcdir)/package.m4 $(TESTSUITE) \
logging/logging_test.ok logging/logging_test.err \
fr/fr_test.ok loggingrb/logging_test.ok \
loggingrb/logging_test.err strrb/strrb_test.ok \
- vty/vty_test.ok
+ vty/vty_test.ok comp128/comp128_test.ok
DISTCLEANFILES = atconfig
diff --git a/tests/comp128/comp128_test.c b/tests/comp128/comp128_test.c
new file mode 100644
index 0000000..eb6fb12
--- /dev/null
+++ b/tests/comp128/comp128_test.c
@@ -0,0 +1,2123 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <stdbool.h>
+
+#include <osmocom/core/bits.h>
+#include <osmocom/core/utils.h>
+#include <osmocom/gsm/comp128v23.h>
+#include <osmocom/crypt/auth.h>
+
+static struct osmo_sub_auth_data test_aux2 = {
+ .type = OSMO_AUTH_TYPE_GSM,
+ .algo = OSMO_AUTH_ALG_COMP128v2,
+ .u.gsm = {
+ .ki = { 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA },
+ }
+};
+
+static struct osmo_sub_auth_data test_aux3 = {
+ .type = OSMO_AUTH_TYPE_GSM,
+ .algo = OSMO_AUTH_ALG_COMP128v3,
+ .u.gsm = {
+ .ki = { 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA },
+ }
+};
+
+void print_check(int rc, char *res, struct osmo_auth_vector *vec)
+{
+ uint8_t buf[12];
+ osmo_hexparse(res, buf, 12);
+ if (0 != memcmp(buf, vec->sres, 4)) {
+ printf("%d FAIL SRES:\n", rc);
+ printf("OUT: %s\n", osmo_hexdump_nospc(vec->sres, 4));
+ printf("EXP: %s\n", osmo_hexdump_nospc(buf, 4));
+ }
+ if (0 != memcmp(buf+4, vec->kc, 8)) {
+ printf("%d FAIL Kc:\n", rc);
+ printf("OUT: %s\n", osmo_hexdump_nospc(vec->kc, 8));
+ printf("EXP: %s\n", osmo_hexdump_nospc(buf+4, 8));
+ } else
+ printf("%d OK\n", rc);
+}
+
+void test_comp128v3(char *rand, char *res)
+{
+ struct osmo_auth_vector _vec;
+ struct osmo_auth_vector *vec = &_vec;
+ uint8_t _rand[16];
+ osmo_hexparse(rand, _rand, 16);
+ int rc = osmo_auth_gen_vec(vec, &test_aux3, _rand);
+ print_check(rc, res, vec);
+}
+
+void test_comp128v2(char *rand, char *res)
+{
+ struct osmo_auth_vector _vec;
+ struct osmo_auth_vector *vec = &_vec;
+ uint8_t _rand[16];
+ osmo_hexparse(rand, _rand, 16);
+ int rc = osmo_auth_gen_vec(vec, &test_aux2, _rand);
+ print_check(rc, res, vec);
+}
+
+int main(int argc, char **argv)
+{
+ printf("COMP128v2 support: %d\n", osmo_auth_alg_parse("COMP128v2"));
+ printf("COMP128v3 support: %d\n", osmo_auth_alg_parse("COMP128v3"));
+
+test_comp128v2("00000000000000000000000000000000", "34B4225BF16B96E118A85800");
+test_comp128v2("00102030405060708090A0B0C0D0E0F0", "A892A8EFD6D33E3650372C00");
+test_comp128v2("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", "F699F0BABA87114F0350BC00");
+test_comp128v2("000102030405060708090A0B0C0D0E0F", "A5B4C7CA0514C4E1B25CBC00");
+test_comp128v2("F918FB140A2D63E10B9B3354C93D5816", "C1AD6FE372383E0D6AAC7C00");
+test_comp128v2("CBFE7E4156F94F1E6ECA59C194A9BED4", "3DEF079216A74B97B4ADC800");
+test_comp128v2("B65CB9DDC667BBDA3F493FB4BA2CA2E9", "A846E7EA48C2E85F1C115800");
+test_comp128v2("23E0F6ED14ED2596A3B11453786E7C2C", "73280CD483E7DCDE26F94400");
+test_comp128v2("CB5CD183A1D26D1CF75D5987D20CAE75", "055DF715899926BD0D6A0400");
+test_comp128v2("1E99C6D07A0914E101FC2094406FB46F", "0A500680A860B1678C749400");
+test_comp128v2("F9213F7452CC291C6B64F990DFC219CE", "6273439D25CA01E321505C00");
+test_comp128v2("21C5CCC4CDDF8D016F82788BF2863718", "404F028B1F31A67A71734400");
+test_comp128v2("1561F279CC3FC8D7FDF7703C3755003B", "7081294CCCF3AF9D87CBBC00");
+test_comp128v2("360EBBC222F116936F55772663FE0131", "D30CD39641B7771E2CDA2800");
+test_comp128v2("D7FDC4BEFF3E172607BCAFD0FFB8414E", "656222C3E481A1AE7B42BC00");
+test_comp128v2("D832114007244CEB3B05AA50F60A1DC3", "EAE9BC2A4D1DD802E9ADF000");
+test_comp128v2("CCB8CAA7DC27AF527F75385BC9CC943A", "2A43B559362A6DDED82E4800");
+test_comp128v2("48BD98472929D5D66FDEF005FD1B67D5", "0EA9FCAF684D3416C187C800");
+test_comp128v2("97A67270ABC7807CF3F7D2D668D9EF2C", "510DA1D26FA933C86D0D2C00");
+test_comp128v2("5CF1FC3916B9631D04E763003CB0AFB1", "EE2E83CF08A00B0A1966C800");
+test_comp128v2("18F91C80B5CDC5A5A95A187EF66AB0C0", "0182E8AFDC4092FEE382F000");
+test_comp128v2("248B68303F09476AE2E72342636E6D9E", "D78DF0808D19FBF8B703D400");
+test_comp128v2("340D4544F8559C61EDF7F4216E70C576", "2480A75BF304AC7AC73F3800");
+test_comp128v2("CCFE030B6436D949082ACA45077C9193", "85A18AEA5B9BC2B7A376F400");
+test_comp128v2("3D0754700F6A1D2C704921EC67AF3ED2", "2D337465329B474F67975800");
+test_comp128v2("9165BF37C63326F8CE9CD03F9A1378BC", "DCAEA3C710D0D67DD5B3F400");
+test_comp128v2("9DCFA432DFC4F1FF19A441F32A5D8597", "F010B99B63B7E6F75DE6C400");
+test_comp128v2("1DE9D2AC71DF86E5A599017A692CB4B8", "EB93C952E8C616D6C2979400");
+test_comp128v2("261326154E44C794F5A91935182CFF40", "B27DE0650A1FC35AB045EC00");
+test_comp128v2("3F299BB3EE46BBB4ADB5493B4A2CBE5E", "67838DEDAA2242B6BB237800");
+test_comp128v2("CFD033BE76FE261250042457B40445A2", "863CA702CF08A47B3CBD5800");
+test_comp128v2("FCCF9EE60A80EC9F7BE413A50CE60869", "14D1B0D8254D474C999CC000");
+test_comp128v2("A966B4A739358CFD6EF22A9A660785DF", "6894BA1EF235BFA46A0E7000");
+test_comp128v2("C1F8AD801A7441908B0597E186EBF2C0", "C4E9F13F0C19A76F7EC9CC00");
+test_comp128v2("ACDF541A969C68703E5DE37ED0B7CA09", "832463CBF662B2A72D4BF400");
+test_comp128v2("274F7ECBD2AF639D9479FF4C73815E1E", "D1D5AA0F491ED442716D4C00");
+test_comp128v2("3E4FC9C886E4E5A8EE89AF61231857CB", "323C4D161E55610BCB0CCC00");
+test_comp128v2("E0F4130624669860131BD80D85A3F1F2", "07DAEF70D14DFB9988C5D800");
+test_comp128v2("DD8C39429A107F263B2A5F596A501905", "1417946345034965053FB000");
+test_comp128v2("A95D7E54A42604BAB557A0BDA4F50CC1", "D1683BA6DF50CAC2508CA400");
+test_comp128v2("140C6662233AD66D5AC825D80A9A8272", "A0FAA92970DC0E98AB406000");
+test_comp128v2("EEA61DDED13D0E0F2DCCB71ADD551B7B", "7240AF352D215FE4B4762C00");
+test_comp128v2("E4C84D1860B03C3DC2010FB6AB3E4C47", "30576C1054878023B505D800");
+test_comp128v2("747AF0FE3B3E903AEB6191EA01DC9F4E", "4CBAD22E8500464CFD7E4800");
+test_comp128v2("E607B88BE14E5CEE43594EF51A0725BB", "1D79DBF69D7E2350225D9C00");
+test_comp128v2("4002BDDC83EF54ABAE5442B0A8E976B9", "6CB6D7673428D2D2E84BC800");
+test_comp128v2("AB8B27FE3F278CFDAE085F236A0A28E5", "06407FCB02EBF61123C57000");
+test_comp128v2("6883B190F8EC18305BAAF6429E817BC4", "C17A6B9AB444C1A9DD448800");
+test_comp128v2("18DC6B25398F64FAA4A740C617E9D591", "F88F9FA28DE0500403AC6400");
+test_comp128v2("2735F287D3AEDDD35C204628322D3899", "00F5692A5F350599985AC400");
+test_comp128v2("5FD7E3F81F3671F547B94D9F6BE7A348", "FC9DCBBB4FD0580F9D196C00");
+test_comp128v2("4A316F08F912FC534D8E204129C78974", "855C814274800A5C45B3B000");
+test_comp128v2("960CB8BE1B5025F3EBBB55EB0D79890E", "E1CAF3B52DDA529D0B694000");
+test_comp128v2("282461C3FEF2ACC7F53E640AAA8279FA", "52F8D1327B2A1B5319025800");
+test_comp128v2("BA4DF10402E2E5956DE8DA1886CF14E3", "DB2D97F66B679B4D12661800");
+test_comp128v2("33B82F56356D44D6A790ADD4F4CE9FDC", "694EF7DB3E35F50726159800");
+test_comp128v2("01FDE145E42A4A0F7CC97B8CF4A216C1", "4391900FCA30173E63A39C00");
+test_comp128v2("61259899F937B7403B2EC70ED9D32384", "F51BAF50F8CE1A64DCD25000");
+test_comp128v2("0E6F0DC32693A7EF677C37BC44CE8600", "C110634B037031745F401800");
+test_comp128v2("1283E739566C46FC1041C2EDF46ACA63", "4C74EFAB8A6522A010F09C00");
+test_comp128v2("CE7B368B575950EE69D82D3CEEF59E7D", "FE9FF88A94F0A490335EFC00");
+test_comp128v2("DB0D3AE84486ED465CFD507F6B321E2F", "76D1679FAABBBF1FD3E79000");
+test_comp128v2("BBA5E23EED1E43EB3AFCE2ABC5FDF71F", "022E2C5CFE2B4C3EBDC41000");
+test_comp128v2("B0B9EDB4BB979E3CA9630F8CCC3FCAA2", "1775CD2F9C4A6DCE9503C400");
+test_comp128v2("4A68C3FBD3A74468D486308DD1412D31", "77249441DF2502778FF3E400");
+test_comp128v2("9AB0D6DCD8251E4BBB78BFACF5823C7A", "E7499452B5C45C1A7D15BC00");
+test_comp128v2("B62C6CD3A87425B29DA8E226B28C3617", "D4A1FC8107EFFD9ABDB01400");
+test_comp128v2("A094A045959D9A589F3BBD28D908CBAE", "A20ADDC80477942E1B390800");
+test_comp128v2("3C76356D4AB3CDEB6AF36AE27653676F", "F192C4B354CFDC97186CD400");
+test_comp128v2("04ADB833E08A91A26BA932A9BE9DC4FE", "A86826C01F6B291290F21C00");
+test_comp128v2("0CD25169C9CE123475F394ED818CDACC", "F0219A28F767E219F029D800");
+test_comp128v2("758F9B775D80F66C2F46F45C13D14EA6", "A20754DA43C43FC4C387D800");
+test_comp128v2("501418ED3CFC481399ABE1522CE9FB1E", "42764FF7641AB6D55C796000");
+test_comp128v2("2D7333EFC9B3DB86C43ED4A440BB02D3", "9AE0F630A52EE42058852C00");
+test_comp128v2("BEE9E64A0165F7EDEDED06BB7AC0D11C", "B436CC2DA8B4E083D0967400");
+test_comp128v2("A342BA3D24D7CE59E44C5F1E6F3F28AB", "47BC33CA9A6D94596C8B0C00");
+test_comp128v2("423580E3B8B42BE68E2FCF0805A369A7", "34A0F45FE614F578B9504400");
+test_comp128v2("C81DF1E755DCA874A97FE2C8A2030A45", "2B5D9AE2B659D2920CAF9800");
+test_comp128v2("00B065F6BBD7142C0D810D81348143E1", "0CB323266C1993A44D335000");
+test_comp128v2("D0DE9876CCA615D16BE541659FD8E0A8", "F313600462BC4C2BC056DC00");
+test_comp128v2("1C02F9836A1C0C334AC68873C1A95DE2", "E913C4B6BEDC8F011042CC00");
+test_comp128v2("CC2686858921BD2A970F3364C1BD8154", "CD6AB5F8BE1967E637F11C00");
+test_comp128v2("EC5A44CE58F654A751AD1F87C7468E22", "E5B372CDD142BA7523ADE800");
+test_comp128v2("F7B93A2ECA12B2F0A7AD2B550781A311", "AC1D56004C3DB4248A2B9800");
+test_comp128v2("95A26343BDAE219F9A77E2D68B8D9715", "B8E2274BA75A01A1B844FC00");
+test_comp128v2("D9EF207AF47750EBF69E81669A0D7168", "90BE7292A33AFF976AF50000");
+test_comp128v2("CB095420C757A88E23E845F90010CE60", "5D5267614E4868BC9019EC00");
+test_comp128v2("43DA2FBE69364674ABE7A67EA1079F7A", "11602A06755795316CC2D000");
+test_comp128v2("9F3145932F5712D7767278650BF038C3", "62F7DA68B860F0EAC85AF000");
+test_comp128v2("6AC7C8825DE45A64EE61E175A4212CA2", "1564273CFC0D44D3AA813000");
+test_comp128v2("A81B3F8E35F3B77A681E581E81992245", "DEE4D4C1C210AD3A88208400");
+test_comp128v2("DA6EDF93A83A4F3390C7A74448F3EA58", "DADEFCC4C903978B5D968000");
+test_comp128v2("FEABCD9A4566FAB5CCC225649A9B51E8", "990248308A158336AD8CB400");
+test_comp128v2("F5A9320721897F9C4010CC26806DCC6C", "4E9483834C11A3258B735400");
+test_comp128v2("6A3BD4D5FC62586DA382EEB13EC5B98B", "C0BC1F742AF062B2C57F6800");
+test_comp128v2("657502B51422A9DF5D02215A3211720D", "ACD94B7C1B42B827ABB4B000");
+test_comp128v2("E601807D685AC33884F10BEE2B0F7155", "8E555A2E5483666FF8E9EC00");
+test_comp128v2("D081597E0807CDCC345E64EE06A656EE", "252F83F942D3CBF225A5BC00");
+test_comp128v2("AE911B26A2AAAE1690541AD7C4AEC12C", "C09DFAD45B847939AA6F5C00");
+test_comp128v2("D32460B8EA2DE870AEEF9591E2B945E0", "415F30A507DFB65D21E92C00");
+test_comp128v2("3EF290EAC6ED5506430691F6652AD256", "BFDA7F8A4AA126AD5D832C00");
+test_comp128v2("96E50BC3013669B9453CECED3379BB9E", "3127EBB45E2170FF88B6B800");
+test_comp128v2("50CD8707C942E07374A604419F328627", "997A146971E7F9F173930000");
+test_comp128v2("F5D436A55F52CF178EC755D9B851C2A5", "526DA1545DB57E300BD2AC00");
+test_comp128v2("59D00634939E1296D628D762D098359B", "29CB71E3C1D6D8F598FCC800");
+test_comp128v2("A50B3BB3252C3C9E16C12396F3894607", "A1107E2B8910AAD9F4098400");
+test_comp128v2("89F8344B973576425ABDFE3466A7C99F", "3335275BFB59F6DD11903C00");
+test_comp128v2("17095FF0861CCDBBE7EC9DDD97CF9FD8", "1952EB05C39002CB2533F800");
+test_comp128v2("00319ECA71633B48AF1CF6050FF612EC", "8DD0BD48A4287D3987225800");
+test_comp128v2("FE2BC8ECEC5406BAD2992A903A516162", "4DF20DADD02875F1F6DB8C00");
+test_comp128v2("2719B57237F55AA6F967EFAFFAB491D3", "E9584869A08303981DDF3000");
+test_comp128v2("E9895484AC5350C6020D47BECFE5FB53", "183CE56373954D52E0BFF000");
+test_comp128v2("2E4CCA78B5FD8FEAE8F593DA046F7D39", "B2EAAA3360B2AABD8923C400");
+test_comp128v2("F3B1A9F9D5F83540037EA0EA78A8DE90", "12147C976D7BB13BFE9BCC00");
+test_comp128v2("DD32C4C62D3CE942B5FFBEB6D4A5F2F8", "45407DABB4B14DDFC8FA5800");
+test_comp128v2("B34F7F0BD6B2D777C0817F82E3052AC3", "FDC03BCD2DBD999561344800");
+test_comp128v2("83780E5C93048E6A2A060346ED2BC544", "6AF2A4F18731A281B75B5C00");
+test_comp128v2("B64A86EE50BB1C02134F11CB431C5069", "36AC5A0B2CB95F686E3F1000");
+test_comp128v2("FCFEB28D9732B937496FE96CD11B24B1", "E23CB44D586FE9FD19FCF000");
+test_comp128v2("61664DE891B324D7C1402E7B80C68B17", "EE3A9940C7A09853F8D9FC00");
+test_comp128v2("8B173E8CA34CF9DA56DBE336196941EA", "F703154C9730C5AA58FBD800");
+test_comp128v2("4D21217A48E9EFE24B4704EC10B85C6D", "D56C16F7F97B8CEC06BEF800");
+test_comp128v2("FFC69A387F0435BD58C13FCB913F60DB", "5F63F9197F0028ABC70F4000");
+test_comp128v2("AEDEB9AEF7408837DD4BE51498ECA4AC", "1216B27EBE081A8B58880000");
+test_comp128v2("14A053B1F95E86448F73D2FFEFC7FE3B", "2B9BD41CABF325CB93BD8C00");
+test_comp128v2("6881901AF0FE3333627FEE84795A70FA", "651BD7D5B6DB33C5D1B0EC00");
+test_comp128v2("196577B50A4C9BF7A208E4533219D468", "5E251C34B40822FCC476C800");
+test_comp128v2("2ED5196DC635F8603196BE9549BED8AF", "BA9B3440ABEF67B108421C00");
+test_comp128v2("FE09F4C92966BA06163AA644D6CE5D7D", "E07AA3D335E25B9303671000");
+test_comp128v2("18A117FDE347F64B3CA01F0F10659596", "4059BD729905578A62A29000");
+test_comp128v2("6877CF2C157251B5A97904F8EB337B8B", "2B1A0A31984ED54C1D3E4C00");
+test_comp128v2("4236F749801A93FE1FD95324A24CE1C8", "2092ADDFF5D50EE60E4ADC00");
+test_comp128v2("B9A4020F7EFDA03BCFB46FE31200708E", "80685309ED5215AD37C5C400");
+test_comp128v2("574B8C41C4594499D037D3BF5084F167", "218AF13232BA26852E95B800");
+test_comp128v2("5D7E99E0D35742E0D80A85F243606F28", "1B54FEDD20031F7C11533000");
+test_comp128v2("40EB7A728783CFB17363744C8960C966", "ABBD5EC9F78951FC73C11C00");
+test_comp128v2("6C7826A1F1B40323CF57C7909A83E2D2", "91C94F666B08EBA4EF7E0C00");
+test_comp128v2("61E2456FB48EFBDB946DF0A3F298BF41", "9E39FFDC1C8573E4DF224800");
+test_comp128v2("0B3BE969A08BF4CE4BE98D6CC0BC7309", "152512315F2CD6A3EC1D3400");
+test_comp128v2("A6C41AB03860DD83608098111AAEB4E9", "57A99A60C2B9DA9E26C85C00");
+test_comp128v2("6CD88694601229E809C13775C4E761E5", "18017C263C41817B9ED6A000");
+test_comp128v2("53F16F6A6B6D2513CBBD0D63CBCFF990", "115CC0B613458C1F17DA3400");
+test_comp128v2("4FAC9C89DEAD012D875350CCCD6DF9B0", "3CA402F00396AE4AE375F000");
+test_comp128v2("61C960DAE03E40FC1F56BC1C71D37E06", "4E5128E99E89BC59D51BE000");
+test_comp128v2("4DD845C43A81DF92E90B83504E159B85", "35C382EFF558E66A0822F400");
+test_comp128v2("2315D98737F65C690EE46743434DC239", "36A2E24DC3B5834D198F2400");
+test_comp128v2("A63680047A7750B42313F2D3B878662A", "C3D10EB4D222A75C63383800");
+test_comp128v2("3934F208F33EB583661F36869C73FBA8", "890536E7B8FEB54E97526400");
+test_comp128v2("4A9F494AE875A5314FC40DEEB9DB9985", "A14AE3B8501B7B5885947800");
+test_comp128v2("E6BC8770CA7ADC109185683CF4666D9F", "69748080DBE0959AACCDBC00");
+test_comp128v2("D2EBF8E248B694CFFD41BA7428668159", "1401C448FD719A421363C800");
+test_comp128v2("A7AF83C2D4448241547B3425A8CD34C0", "5A8B14DBC9E50CD5C3616000");
+test_comp128v2("D95594E46451C524B586913F80965237", "830C1CF57919CF7C3CDC2800");
+test_comp128v2("C00B2713CC2E4E2355DA502E1B521001", "FDDFA77D186A5B4BDBD12400");
+test_comp128v2("0B8D598E6F13F1236DACC84E456F0E01", "B471887B4A040637264DE800");
+test_comp128v2("C652FDF2912983742E177C0EA30F2E61", "C42F84FD9CD6E7FC37536400");
+test_comp128v2("6B655E5F7B56B51D7E254A9AE69E44C8", "48721AE298AF66D7CDCC9000");
+test_comp128v2("5A900B611A5B17D82D4A2EC8E6544090", "F4A51C7F4E896653E5140000");
+test_comp128v2("554C91377E43AD28215056E8AEA5DF4C", "B566C947F785B9B830080400");
+test_comp128v2("54725198690B36F0C6A4DE05B0E79E47", "BBBBDA64D8B739E6D5038C00");
+test_comp128v2("0BF03AF40DED5898A8D1C657846ECDE3", "4EE99919522D100349F9F000");
+test_comp128v2("971B0989CDE6313ACE7690BD2C2BEE09", "590684B1A33F255BB9D40400");
+test_comp128v2("32E1BE35019575931694A33B7B0AA049", "BAA62EC15FCD29F7BCC9A000");
+test_comp128v2("7B601512FB8D061C1B6F7FA423733F8C", "82C1C97CC83A920346C47800");
+test_comp128v2("F0A3B5BDC514E4F20060D83A61A9C711", "684138DD3D04B3B15E11CC00");
+test_comp128v2("4F2F20EEE54D82CBA6FA087B242CA6A8", "7F445E9AF2735B2C29E33000");
+test_comp128v2("8F357399AAD7B59AD790D55C55FBE3CC", "86DB5E7D9F1E83A870067000");
+test_comp128v2("511141F30BE586D039080ECD3822F2EA", "D358B8FFEBE9FF38F0EF6800");
+test_comp128v2("B62E2C043BDCC5A1741ECE60DDE598CC", "D5E1BBBA61272C8E9375E000");
+test_comp128v2("1F0F950D094BF35F9657D68E5018B9A8", "BD37BD448CF9A5DDD7E87000");
+test_comp128v2("DE30802335604EDE8F943169A72E6A68", "EC184C8434883302B00D1400");
+test_comp128v2("3DBB9938C7C4B14E1D5D07DD616B4E0E", "AC5A0D23DA694B6128547C00");
+test_comp128v2("D26257D4C9CE19B09774A9E0C86E335A", "4C8C3DA2D021243593C7EC00");
+test_comp128v2("B7CD31F340EE67C49D651E1C3042D2C1", "A20D985A6C900427C48CB000");
+test_comp128v2("D763E4A31FCD50F595E4666BD91B8EA1", "3BAD6E389FF168688284A000");
+test_comp128v2("41DEF6924472D84434CE2C7D96881F3A", "B0EE0C304599D3AC58018800");
+test_comp128v2("0CDEFB71C93D7B5EBBD6CFD85EDF9C12", "7C225B5EE5301B2F71E1B800");
+test_comp128v2("C2A41CBC63F2F8D34FF1E47FC9B7660C", "DF4D16A7EFB8B8BB68450000");
+test_comp128v2("7F490D52DF1330100CC6D4EEAF8253EF", "C501BF91F2BFF6B811393400");
+test_comp128v2("124A768E3593AF51297D2740AD0200A9", "4CE1215F737876BD5E89C800");
+test_comp128v2("39B8F95D2406756066A53C4E705F5190", "017D2D2F27C605B783B7E800");
+test_comp128v2("1F4511450C91823B333BF3372B1616CB", "7EDE3A2F55D86D2692B00800");
+test_comp128v2("0762815735FF7B22BB73A35F2B98BCF3", "C5F15A6612CE3312682BF400");
+test_comp128v2("3E3A81D6C95B5BE0866EA8E077241131", "0F8E225A21CEE88570BF8800");
+test_comp128v2("CDC633D112AB14B86799836799589EE0", "41D8946A92C3F5DD4D4F5400");
+test_comp128v2("E1655B3EADFAD31AD5A077A22DF28AFC", "16D609AEE5FC4A24CCDD4000");
+test_comp128v2("C73E501E952DD572189853B6BB173A4D", "A9E890D3DC0B1D4A0B295C00");
+test_comp128v2("A1D2F09DF9A48878D0124C469BD7F413", "35DF82BD4899DC7437B6D400");
+test_comp128v2("BE1CA7C52223B34080503DDD9F84FB7E", "8449AFF4E3C8F31BD76DFC00");
+test_comp128v2("44D343E09285E36C1ACC9494753A8584", "624DB556732775366D708C00");
+test_comp128v2("61D91B4E360F4F5C7EA25DFFDB081AA7", "8276AF99F7EF234573014400");
+test_comp128v2("FDC7AD732965351CEC95D5AF89254921", "7E1DB73398B30B957DF8CC00");
+test_comp128v2("1A944BAAFE83C95B9349782F5974B663", "5A51D44FBD0A2BAE38195400");
+test_comp128v2("2941043DC4CD9975CCD5B57B11055787", "5A506CD76E9E008F4141C000");
+test_comp128v2("E5547C0BE6192FDC79A0E77EC8E7D726", "6CCCCB1940F444EBD2FDCC00");
+test_comp128v2("A53F937180266161BEFF102A4AF616C5", "5287128B3152083765EA9C00");
+test_comp128v2("9A15EFCB21BF0E8002FEDADF8542D8B9", "4EFF43E5E4F8FEE77F8FFC00");
+test_comp128v2("99F84D1074D0E4A89AB99E79894D990E", "01A6BEC2FB1491F16AD90800");
+test_comp128v2("7C09FC1D74F44970D826CD75BD76E4C6", "4AB57C72DE6516B54FDFA000");
+test_comp128v2("34C365219A6CB004FFAC21098E9BF4F8", "E8DACB225DA9120AE8B7F800");
+test_comp128v2("64938FBDE2C7C8BD27DE7DE71D936F8F", "EE4AE4535176DB9BF2B7D400");
+test_comp128v2("D6F53EF3D8213BD92E370F9565119A36", "D3F4E0550CA140F329096000");
+test_comp128v2("A3728A2E35B9109737BF41A7CE3BA88E", "AD7857ACE57489FCE8475400");
+test_comp128v2("C5A46566E17F20CBB22ACBA0829B3A35", "53188D1D79B9AC71E12B7C00");
+test_comp128v2("49C327A37B243C502211059ADC2B928E", "92D49AE27BAF11CD61DF3400");
+test_comp128v2("4C013269FB730DD9B4B87867F285692E", "7F977070217337C997B27C00");
+test_comp128v2("C08BDB2794795CFA4AB1626D23AA49EB", "4248294453FCAC270C119400");
+test_comp128v2("6650F32A56DB39C02711D06D361AE5A2", "AC1869DD89ECFC26E19C9800");
+test_comp128v2("DD10CB3DEA808A7D0C1F666AA3FDBED7", "15CBA9F20FCA32D7F03C8400");
+test_comp128v2("C088FC4AABC5D08B3B842E90883EF20C", "B64B2FB41EB4CEA224AAD400");
+test_comp128v2("9C3658205884DDE93389FC595DA95F3F", "A9C1907D30E26D51BA496C00");
+test_comp128v2("D386F98BEC1386870DD353EF8BEFD0EC", "9F2DAB5417E2537C78DF1400");
+test_comp128v2("32D13296BD30E931C2EF187B9C07E676", "099E66F116225F2E5FCA5400");
+test_comp128v2("1B3F10C760DB7647994D6C1AB8B0E27C", "88B59F43AB9F746C3AC3D400");
+test_comp128v2("7F56EFEA97E53ADBD8A28E6784D4454C", "A3A64F72AD0A3D1414876800");
+test_comp128v2("DC15015AF77CA3472D9C722ED2C6765D", "202ECCA412CA0903D2E46C00");
+test_comp128v2("5DF5D4D07734814F50D24C28D4D133D6", "75445158435F68E6138F0800");
+test_comp128v2("0AA8ECCADE7C3DDE1E33CCCA904F87A4", "7C36F6063668D0871E35C400");
+test_comp128v2("D5DA6CFA0EA9C893E0C31EAB8F07C265", "A4B70423146ED051AB678C00");
+test_comp128v2("CA0DAB9743D4641EDA047DDCE7AECCA3", "43B666DCFFAF925608CA3000");
+test_comp128v2("C8B74AC8B6096E5884601F4E1DDBD174", "1E8E15E0F1743837DB3CC000");
+test_comp128v2("5F60A4B2AC4B3FE14259CFF7B9B9B9DA", "6EB7E1212271898211BB8C00");
+test_comp128v2("E3CD19D5573DFFD6E493C4DD7337758F", "13130B7A1E66FF00ADD89C00");
+test_comp128v2("9836A1AD51EE33A05C1AB926D13177F3", "803B815E3D4A015D69AE0800");
+test_comp128v2("2A96EE958A39E9F57FD81B873F32F0C6", "82825219B94D4148364CEC00");
+test_comp128v2("DEF7C00F0ED8BFA5E29FB0316BA10293", "C1599BCEA9E04812F33B3800");
+test_comp128v2("CF8A6B0BCC3285827DB9D471479A515A", "60236043F506676EE874A400");
+test_comp128v2("4332F66E5C8FE9B2A374A807ADD3489C", "E76B4BD39247441C69731800");
+test_comp128v2("B6B1A9D4F4B82AC72D820EF143F52BF1", "BFCE82DD74C8ABF9F4C3F800");
+test_comp128v2("41955313F015B3E391555E7EFD20D94A", "CFAE1992CBAFDC38113E1400");
+test_comp128v2("99F3AF88D90DA2AB226EEDA86816B73C", "385E9AABC4B633422F7F4000");
+test_comp128v2("E497BC27A587261123B53562665A0421", "EA6B9CAF5418DEE2B0C48C00");
+test_comp128v2("A881F3D91DFBBB74427980D76B6331B2", "E1258AFE12F8EFE020B58C00");
+test_comp128v2("8A5FB6205C5BBA89FE76DF2D32C9667D", "04608F77B0B37BC1645E1800");
+test_comp128v2("E282B8E50A4C89F996967FE3C97D4376", "A34FA42A7429F439A09F7C00");
+test_comp128v2("1BEA1A3C719CFF988D49FEB1E66BD4C5", "58095EA3DFF0E4F55C649400");
+test_comp128v2("D21207460046447600836E81933C2987", "5D3B6182D866461F597F5800");
+test_comp128v2("86DC003A1E7352404118C4A6BDF522D2", "522B03EB0142EB27B813C800");
+test_comp128v2("FFF92D1920F3AAAB2ECE380817DB739C", "8D193BADBFAB72BF8AB02800");
+test_comp128v2("6D169D93541BDE4543214B3905A573F9", "3026B85156E7E48078DD4800");
+test_comp128v2("5E8B626C2461A81224E29EE751E578E4", "DCEC75A33337B20D084DB000");
+test_comp128v2("E5DF990790E1F9D245F0840E90C845F9", "5D43D9C00D5DFEEDA9632400");
+test_comp128v2("4F1733D5BDDB0FC3BCFF3A095EA63FAD", "C3190679E66A34EF6A7FB800");
+test_comp128v2("47E6B7544D18B2FE7A6910368080CF69", "8AFAC9EA29F6FD5EF3CBF400");
+test_comp128v2("A015E3BC2CC8B20D1F9BD245BE00D935", "6F8DDCB4C9CECC28493E8000");
+test_comp128v2("850745B3A941130D04F76F07BB7DBD2D", "CE82AA1D16E2D020A1BE0000");
+test_comp128v2("F9EE213796256B136B6503C06FECB90E", "BCB277A4EF1AA561D1341000");
+test_comp128v2("326CD7C58707E7D934772FA1A14E16FA", "B8DE63537B49F9985ACFCC00");
+test_comp128v2("8D495E6E54EEDDDF0EEF870FE4952568", "CC5F16CD030F0E8CD1A58800");
+test_comp128v2("74E8879783B60C994471D29F7D06168B", "376BC13CA72BB41E5C3DDC00");
+test_comp128v2("9EC9382241ED63D96B4D1C32344E1AE0", "D83B4BECB683510AB6948400");
+test_comp128v2("F35E046CB410739F29DDBE66DD5F37D5", "1A5A5308BA48B041DB62D800");
+test_comp128v2("286C8D04A4E136AD2871F6173640D84A", "7A89F034584E9F8550028C00");
+test_comp128v2("A16B18F2C459C143EEFF761842BB578F", "484459E01603A7A52320AC00");
+test_comp128v2("A8188E3D3E1C1BB3193E45E3D300FDE2", "C1B8C534338CF19DE6EC4800");
+test_comp128v2("5C04D2F4663E98094BBF664207CA5AD8", "35187E89549EBFCC31894800");
+test_comp128v2("21637583D2915E0AC78C44BF8D6B8529", "73D4A069B4EBE3A7F9B3C800");
+test_comp128v2("7D30DF857DAED4EBC23AEFF59558B1B1", "1905B164D13A1493F43E7800");
+test_comp128v2("0761A9113C550E71D4A001D6F2651E62", "191662FEB0B15243BAB64000");
+test_comp128v2("1DF95FF090CAF75AC07F888E70F60BCD", "58EB8C5A5CECAAF234DDB800");
+test_comp128v2("2A4E9F6AAE94DE7A282FE59371E75034", "14B519C690ACA88942B1A800");
+test_comp128v2("50A4BA3A673775C82A273690ED2FE960", "92EB9C62BF57A3462A081400");
+test_comp128v2("89E484024EF1C40A108D261A39298AFD", "2F2903D5DC9FFC4AAA17DC00");
+test_comp128v2("10DCA6BDA94F80E7239120EDF9231AC7", "67B830467AA2C76B8A83B400");
+test_comp128v2("70A961DF5CCF1C45D26AF50541C3ECCB", "B19AC7232C7E7ACEDFF6F800");
+test_comp128v2("7B338E1357DBAF14CB0D1AB035928F71", "83EE66B91C1CFAFBE8C5A000");
+test_comp128v2("F68F8CB5C1EAD184564C0B518D2DF608", "35E056CBD8D692CB54555400");
+test_comp128v2("A0B4F049C406ED5FCC1AE8FC690BD520", "9556CEF79B478627D5D4E800");
+test_comp128v2("9E8F808AAC6301867025A4C7B247FBD8", "58950816A5768A4FCCCFFC00");
+test_comp128v2("AC5DAB1E100A506A6114696EDE6A064F", "94A4116760CE7D8897D08400");
+test_comp128v2("8601AA0166D16DBE7320C9158D0700EF", "F4E00766FA137211703F6000");
+test_comp128v2("7D0E95EBA4BD16E3C6B538FB723FAB93", "3D231451211EACBA3DD42800");
+test_comp128v2("EB41290ABEDE397978C898B02219908D", "5EB704A737FD1C97848CC400");
+test_comp128v2("230DAD3A95D90EC20EBC8EC573781B06", "CC0A164A00B54DBF2BA99400");
+test_comp128v2("0769460FA069E0DE021693AF2B923CB3", "4AD863E830BE2F6013FD8C00");
+test_comp128v2("DCF8186B27A4D60588375B514EE8217B", "6BA6F69D924AB5B806C22400");
+test_comp128v2("E17C33D2F1B42CC9CC4BB68C372B86AB", "A315B3B4BBF2AFACF82EB400");
+test_comp128v2("C74127FCD69A7DEDAF3EC080DD794C2B", "A288120EC5E5D774E60EE800");
+test_comp128v2("D148DEDDC094E552A75B362858807E76", "037A7E48A6E230437E1AE400");
+test_comp128v2("91F0824B24B3190318CB89B0758B6821", "D608EA0088C201318F3A4400");
+test_comp128v2("7F5D92535D449D7412E16856C9A9CC83", "8C126E8E0155CAF47607AC00");
+test_comp128v2("22D7AFB76E71CF4AA209B7B5B8711551", "7C7707A33EB1CAC94FE51C00");
+test_comp128v2("8848CEADDCF76EC13D5D5309594E7A58", "7E141BD3C032FAAADDF1C400");
+test_comp128v2("76D1736CF997CBD643A242F805917ADE", "4A422DED87839DE4F8639800");
+test_comp128v2("96B7E7197A05CBDDE68CD566E833F907", "62E205A674974554C7F5A000");
+test_comp128v2("928AFCA1A1DB27340BC5689F9ADCC3FD", "9A7A16C8AAA1A89D28CBAC00");
+test_comp128v2("566561B80926991BC84FF3D782C43533", "4C67249BE59008455BAD8400");
+test_comp128v2("AD7CCE408FE4D908234C4B9B7AD4586F", "54FF6E91AEFCACE32C6B0400");
+test_comp128v2("270BE9B26BFD8E8F399D63CE342C3AD6", "BD3B66DBED973FD195CA9800");
+test_comp128v2("6B09662F3C200C2079B15CCA03EE8550", "BAA793152333F7B78DE07400");
+test_comp128v2("52A0DE611C43E8A2AA08C73B79122EF0", "8B619DFBFDCA21ED3246A800");
+test_comp128v2("089249127245C7364E2DA1F4B12B4174", "1BB9BECD4723DAB665D9B000");
+test_comp128v2("78A4E8D674E7A9BAF1A2EEC2BCA52C83", "1F4A8220DC3B790194AB3000");
+test_comp128v2("D69D8E89A9DB9FDF5008A490DCA35932", "97F23433085310FEF92B0800");
+test_comp128v2("303EC59372B82FEEF9776A77B89AD1EF", "D62B685B0469F2DCB8431000");
+test_comp128v2("BF25B6FBA7D5B955F81A196F603DB6DD", "9EEF5B576A0D5904CFE16400");
+test_comp128v2("A034EDBF71F3789C7AD0B7DD3E2983B7", "F3955289B3B925D317E41C00");
+test_comp128v2("0F64D014BCA2B53B1FB6C5267C6AA869", "176AD9DFEF9FD87C1B26FC00");
+test_comp128v2("E8A8E6665D25A32DEFED1BBFE032178D", "635E89FD4FAAFAEE81A6E800");
+test_comp128v2("D61E52FB7BDDB6B08D79E5727701E327", "1A8FC1CFEAC2D83C73BEE800");
+test_comp128v2("F526D40E8A4791776F76B754BCB6002E", "42230C725900932FEEB32C00");
+test_comp128v2("33274BEAE8FCC71C0547FCD8370F53D1", "A647CFBD2B6015A5071F2800");
+test_comp128v2("71B260044E7818F625536196647D609D", "9F6CAE8F4BA7E18167D1F800");
+test_comp128v2("494D5B1DD29C4CE82825A0DE60D75B28", "747D3A2FD2456A63434BB400");
+test_comp128v2("D57BC3C7180DC541ABFE858D10462A05", "171FA63B591C6B7002CB9C00");
+test_comp128v2("75CDED92F2DA05D5F5A180371FE51F0C", "8D6064E886661C7493535400");
+test_comp128v2("0A188392250D0CDB92FD3E224332F7B0", "788924D7FA3700DBC29A5800");
+test_comp128v2("15D4AC837FC73BA6C4A0FE899D09718F", "7CCF880D84106A31F5F07400");
+test_comp128v2("AC453FA3FDB5BF207156144B24AD1E7B", "F9DEC85BC2B8D3996D094800");
+test_comp128v2("71F2AD4E06BB7F988C5004A0357F6970", "DF76F1CA8D1203DCFB8F5400");
+test_comp128v2("9ACF6CF19BB44FEB4D95541AFC4A14A0", "261B9A333A06FCCEA0D19000");
+test_comp128v2("3E26329310742282F2B9D1E3DC25033A", "15020ADE64D319AA40610000");
+test_comp128v2("A6DDCDBA584140D229FB839D398F78A7", "3073F2C778550F75EC707000");
+test_comp128v2("D3AD058E5268095511BEA6976BA94D02", "6C2CC3C6B0325705D3393800");
+test_comp128v2("E4F0FF1E5296A93BDC84A3B0E03CD043", "5DF3547DC840423AD633F800");
+test_comp128v2("DC5F59D24CD8961B0872CD4264F240E3", "4038666247DF1CBE432D0000");
+test_comp128v2("BC9CE92196AEFEDB4A9C93D9CA8A006C", "3EA4747DE9A8B930EC780C00");
+test_comp128v2("A7FDBBF43164D9C679C09F010ED57120", "A0D97A4D4B329DAC3C1D9400");
+test_comp128v2("885F62DAEC03DC5C7C3B6D2985F1989F", "8E8C3BB5767DEB1A84B8AC00");
+test_comp128v2("2BF7BCEA0DAEEFED5F1B9BF67C59C42F", "3E83E6A4BDA567C0C1C37C00");
+test_comp128v2("9A90204CA9EBEDDB0E8E270C232430F4", "FE65162A4E81EAD4C0FAF000");
+test_comp128v2("983A16E1E9F06C1E16CA66D0024295A8", "A31960B3BCA0409A77D76400");
+test_comp128v2("894A65F0863621F6F4B0F7D2DB52AF61", "EABDE0292515ACBA40C8E800");
+test_comp128v2("F12067DCF27C55BBEE33B0856124CD88", "82F1FFC3EB594F53CDF39400");
+test_comp128v2("81821C13A89580DAEFA775D37D75C58E", "6DE6DC3F4AA7EBCF3BF69400");
+test_comp128v2("296F16BACCB5B66E5316A21A82E603AC", "CC5D42E68A362BC4EB60E400");
+test_comp128v2("5AD7081575AB7E65BA8DF2DE3B6B7909", "CEC011CC38CA5ED64CB93000");
+test_comp128v2("84AB79B6A3A1F005563210592BE8604B", "63D53A5C888A72E5A18E0000");
+test_comp128v2("06DB39540FFAFC31D275F3E56EB15824", "88AEDFAFE13E7632EA7CC000");
+test_comp128v2("9E38292FDB67242052D0A445014910D0", "41BBF707586B1FCCCDE90400");
+test_comp128v2("A371E96FAD96E1545D8E8808A07E07E3", "6A58E0D91F95F6DBB18CCC00");
+test_comp128v2("BB10FDDCFD8C047EB0B51E96048CE459", "2DC85575F29CA4F11FC36C00");
+test_comp128v2("5B4307D70E43F25A9CFFFD56370BBC94", "9F3DD6CE52DAA89234550C00");
+test_comp128v2("42FA4C38D32C541EC2F1AD27DECA6C67", "13D083584650096DF3789C00");
+test_comp128v2("B8FDEDEDCB6E23CF14E6EEA25DC419F7", "09F8ED29BB3C6C40A9196800");
+test_comp128v2("2F83B170565F4977A89E3E09477CA1B3", "E1053E83AD4F056439AF0000");
+test_comp128v2("7C2EC5FEA03C78F65D7D711DE30D76A6", "CC39D08EBE81752FB84A6000");
+test_comp128v2("1EE80FBE225CD938D1800459985B61EA", "688E5F40E8C20BCD7E90AC00");
+test_comp128v2("0F3D06972170FCE7CE9C7511293846D9", "D90B439D68E4F9229AF30000");
+test_comp128v2("B15AAFD4778B30CBEBA6123A2DCF242D", "416073391C2A09D498896000");
+test_comp128v2("F39B05FDE23CD3513FC1F9426CFFF0C0", "C833CCF0BA49B3417F93C800");
+test_comp128v2("D778CA42BBA1BF18D77DFF99BBEC939B", "F3878F86134C23289EFE4C00");
+test_comp128v2("E54F1991A18C175859242DB288BC581D", "589458131E50C6D50B946400");
+test_comp128v2("3C5BEB096F9D117872C665B719EE1477", "C39175020428B806D442F400");
+test_comp128v2("9412AB06825CA3411BBE178480A7D1EB", "70B4716B4A43ADD6217EA400");
+test_comp128v2("06EBAED1B90E8A2D25C3AB1973905D5D", "ECB251D81D64096720ABA800");
+test_comp128v2("FD229FC2ABD4D5CB1E24FD63EA77AD66", "4E74DCC86725C9249311E000");
+test_comp128v2("D87E8FE1157A93AC00DD5D2948ECCAA3", "4EB7C5F4A40577BA424F0C00");
+test_comp128v2("30884DEB37B796F54A3C04F3A86F010D", "3A2F6B2DB3E7387C9B85F400");
+test_comp128v2("1BAC80F40908D0C03313C33CAE26F5DC", "9646ED009469732EC3EBCC00");
+test_comp128v2("CD302E7008E2683A7244AADB9417E501", "7839F2AE68BC906AFC06E800");
+test_comp128v2("1348D0CD2910306D9118E9796E303C1E", "FED0DE5F032BB902E4354C00");
+test_comp128v2("70C3FB8FB3CA6942BD7C1DF5EDB10180", "7E9B37DB18F1AFC4D28BB000");
+test_comp128v2("A4150041B47229B850660FDB84B65828", "D8A37D0FB9B2675AAFB9DC00");
+test_comp128v2("5D67CF90EB0C63FB4951C40B5F91259E", "7CFDC3D570F1E7C38BBE5000");
+test_comp128v2("88017172C4612F91C89EC43868C6FDF8", "4E838FF2E0008654C5CF0000");
+test_comp128v2("23B4A866497F2C4A67353B396936CFC1", "3FA08D495D5063E30EB6F400");
+test_comp128v2("ED2550ACBCC9821894FBDF3DBDC93297", "A45019C0B1E78F60BA837C00");
+test_comp128v2("43C6573D014B23C691BB0DFD2040E9C9", "2901DE457C41F792D77D2C00");
+test_comp128v2("AD204E6AF70B423ED521A4B3AEBF3358", "AF6620C0D42EC71B29135000");
+test_comp128v2("EBF14EDEEC94BE21F6E2521841B71B4F", "C32B0095A611EE1FCF8A0800");
+test_comp128v2("E4354B7F94D37F8974E8912FE63E65ED", "A8844009E0A67032FCB39C00");
+test_comp128v2("5F5F2AD08E071C324A2A0A6FFC77B441", "61BB6EBDFFEA61A3DA29E400");
+test_comp128v2("FAA048F624863639327522D41B31D392", "971B2475B2806A4741497400");
+test_comp128v2("E98C633FB91EE72FC4F0CB18119A67E1", "FBDAE08872C1CCEC77EA8800");
+test_comp128v2("6A8815193A45732FF6CC06AFD49F9316", "F26191BB253A328C7567B400");
+test_comp128v2("FC8FF54ABE8958DB01DBE87E8178A69C", "E691DDCFEF1AB2B6B069A000");
+test_comp128v2("027469E5A3803DC4C2876D95C1C678C6", "2438B8CBCA2A88A931EB9C00");
+test_comp128v2("5159283F05722548C74A737741CD6509", "D46ADFFFCB068AF092F12000");
+test_comp128v2("6AC3B272DD8CC8BB745A8D0B36C211A1", "DDFF97F3223A4B6BC232F800");
+test_comp128v2("8AA83372D1D5EC88F72ED111E27A448E", "2E229F0F997B25213222F000");
+test_comp128v2("3E7608319DCB2A0E65EC9AE2084EA982", "C8B76DFD9A01A240E1B5AC00");
+test_comp128v2("2841232946DE470D2FF755C70C19905E", "DDAA67B52DCB035E9A2CF400");
+test_comp128v2("A944542DF2373E12823C99DEA8DF170B", "0808D4ECBC4D77A0158FD800");
+test_comp128v2("A2138146A6A0E2E642053DFDAA9E16BC", "74EF1291ADB07C95E02E3400");
+test_comp128v2("0DDFDD1D9A82399E61C371CEA1F9CE38", "B58BFCFC24A6D75BCB169800");
+test_comp128v2("9FB3D625B946962B54E2C17B20C42D45", "D7D987D5BF9DEDA710CA8400");
+test_comp128v2("1B55779FB61B29B8BD86771D0BF16D63", "3686F4642D1F419AF0698C00");
+test_comp128v2("39E34A86EC6FFB7055E7FAC2E0C974C4", "D271890EA753A7883B0D3800");
+test_comp128v2("B4A93386400F4CA3FDCA51846BE80335", "457CB81CF3489FE6AE1BA400");
+test_comp128v2("A313371F69544947FCC573B943DD9183", "9F548C3892CFF8A485074C00");
+test_comp128v2("2012EFE25DC9AF67C46C0CBCF2EC7591", "4E80A17F41BD8EA8C55F1000");
+test_comp128v2("486BD31661FFCE74A65CE0D558850D9F", "B613B59771B8352D12C27C00");
+test_comp128v2("2186CAAECA47991101726EC2C6F6E67A", "BEDAEA0EA1943FE1FF221400");
+test_comp128v2("4D42D4D87D70821014D0CD86BC38DA4D", "A2D95578B1FA0E16B0C3B000");
+test_comp128v2("4DA30AC34F7EE91EFBBDC6DF5555B76D", "6937A53FF44D36E61351DC00");
+test_comp128v2("795C15464D421AF29BBA1907DD10F028", "629184CDABC11E3CA0C56400");
+test_comp128v2("B3CE0E7908B649E875005DE7E7FD1FD0", "24C51AEF24FF49A4A4747000");
+test_comp128v2("D957396D9E3C4AF53C89E45C54DC0A5B", "17161024C0F22E10A7430400");
+test_comp128v2("43B416FD921D9BA3CDA47EA123386302", "9810CA384A6F6647E51EEC00");
+test_comp128v2("0B03AE1B7D664FC5B96E2A914C633D89", "DC3FCC1CB0099F7414302C00");
+test_comp128v2("4A6BEE40BA96A40B7CE9E6844DFA73AC", "E9EA864579D55C68B4B9D000");
+test_comp128v2("70FDC71A73F676D9C4EA330754B901C7", "049ECEC4A332DF7B51D98800");
+test_comp128v2("7E61A21AF6B328C26E1D7325DFA25B36", "D7D91E06B4C43EDB795A8400");
+test_comp128v2("C666E78CA92F658FA60C350504BC09C6", "4445B12A7082935CBEF71C00");
+test_comp128v2("55020E9C0982E00235CE187B034B8591", "3B0A8F08523A46377BB9B000");
+test_comp128v2("ED046D0B7B672F496ABF1C835EAA3C84", "64C19D9FA085AE2270B45C00");
+test_comp128v2("175A73A9CA9507BC08465DFFA9B8A496", "59D1449FB47C046EEF89A000");
+test_comp128v2("07C70D392BD451EE506780DFBD5DC83F", "12B436EB13A2F5EE6F3B2400");
+test_comp128v2("F91C460017B34AA789A219167F5224B4", "D4557BAA009D10CF37E70400");
+test_comp128v2("1DA7C45EA6A64514FFA689538ED5ED53", "4C6C7DB8436151A89E15D000");
+test_comp128v2("E87DC47A13D472C5DB246BC2F8D2DB72", "F587FF0ADB6832FBD5257800");
+test_comp128v2("FC7EA44A9CE859DD79E3D01FCFEDE8DF", "7A8E075D75CEC76E2E79D400");
+test_comp128v2("6A03EA7604753B3C008D3DB463A7442B", "47CCC2AB07276A6A9BF0C400");
+test_comp128v2("0017953B084C3B7424D0687D9C02A837", "4A0117D0F840E0A91E2C6000");
+test_comp128v2("EEF338BCB48C15A37795C69AFC7C570E", "EB007C6F30EFF093E499D400");
+test_comp128v2("53A6A76FED38FF6D62777B449E5B548C", "F00CDCCCC10ECB062682A000");
+test_comp128v2("5C70D559D6F8B8DD99751D56C418FA35", "E3C5F362FF9ACACA40A3A400");
+test_comp128v2("9CA9F9FEFE37D57BF633754AF7B3634C", "2534834DE550FC11D9268000");
+test_comp128v2("0C23013C1C3C0954638F9414DF49E0B8", "A51D6BD87F72607CF707E800");
+test_comp128v2("76D341F1D8D1C65514A96277AA457C54", "8900B6FD332891AFE38D5400");
+test_comp128v2("647466BE40774C458ACE1760FB2CBFFC", "EB85994EA6C7F2A785620000");
+test_comp128v2("DB0CC7E41AC5D78A9A09184DF4F90553", "21A4C2684DA076CDC5F05C00");
+test_comp128v2("582C3F28F5E1380932C65D3544B7BDDA", "2006B84F9FD789AB7EF88000");
+test_comp128v2("5F823650EEE1F31CEC3AADEFC452E429", "80C0352D91A88126384F8400");
+test_comp128v2("7D0288577305FB4CF1979056E527E0B2", "F37749459DF1409694865C00");
+test_comp128v2("45566B3BCE18DA92823C95C1D28BC600", "63290D3ABC575FFE70B0E800");
+test_comp128v2("BC54B44285B1123AF6D3EDA43A5446A7", "0787BD187870B36B47403C00");
+test_comp128v2("AFF23EA0922CAA395D87CE8F71E686FF", "EA9A6507116E59F885954800");
+test_comp128v2("81406FA900C3787CEFA83332ECE83ADD", "B9A1B23CF74881FA72F13400");
+test_comp128v2("17ED1CA689D152C83DDE7C21298B1621", "B9DF2AD19F79E00D39BC7800");
+test_comp128v2("BD24FA43CF93AB8F615A2CB55205954E", "8FB777F02793A4A9E96BF800");
+test_comp128v2("6A60A9D4076A4668ABDC434CFF4F4BF1", "3874A5322A30FC61EE2EFC00");
+test_comp128v2("B4A18EC0063E6B403DE774801F83366A", "ED58E3518559614FF3CDC400");
+test_comp128v2("5B4F77B27473E3E9E9F37A270B85AF0C", "3BE0FBEDB313262BC0BFD800");
+test_comp128v2("AB88BAA258597D5459F9B1279809543E", "67E5E4AE690246C0D9E9A000");
+test_comp128v2("A2951495A11BADAC3A91F653349FDB05", "3E6FBD4969707A42327F8C00");
+test_comp128v2("AF7D610513988261234BFDCA9174D852", "7D1721E9A2057DBDFFC78000");
+test_comp128v2("ACC7B916F1D53C75BBB5EAC0C0C9155F", "5B50D39BE87E86DB3FF7C000");
+test_comp128v2("463C7145B20B01098C16142DCD76F3E8", "9D4B45528F381B44F58C8000");
+test_comp128v2("0E5E028DDFA0A3C0C879FA07C9FE0B11", "366B62B32BB6DBA922F9C800");
+test_comp128v2("131524709A0F2C72CF897E34BF7AD533", "8B444B299DE38B10C9931C00");
+test_comp128v2("B2BD87BFF31207E0584989577E010E25", "58798AFBADD4F313CD4E4C00");
+test_comp128v2("878C4B8B7047A04F24B85A039CF1CA08", "134AAC5663497B78E9ED6000");
+test_comp128v2("4372DFCE989ADEAF69B3CE5541F2D44B", "5A4EAC4D5B411199843EC800");
+test_comp128v2("F4FFEF059262212C6A9440F4BBA67303", "2147ADD96FADA5C3B0A82C00");
+test_comp128v2("ECAF923AE9D823A2B5AA234584FA1956", "A7345726E548029DE8C13800");
+test_comp128v2("BF988D41A1D5C109D0706B2068ADFE14", "C3CF7CD2693FFD82DCDF1C00");
+test_comp128v2("449990955002E4111D56E0C20946C6BC", "63437E1008262606709BAC00");
+test_comp128v2("2EE20958580CE4F8A8BFEFFCB1D28D0A", "C5F9DBA0853C4B619979B400");
+test_comp128v2("B6AB470BD27B24DFCE750B3EC08EE38F", "2E4FF932B76DC48617597C00");
+test_comp128v2("8AC1D7BB4F58B97A4973F3BE4AFDE91C", "5E1785F6777316F60EA67400");
+test_comp128v2("495AC23A71E47B790E70823F557301A7", "97A06E87B1351A61E82E4000");
+test_comp128v2("F62F24627A42462892EF3AEDFBD86BCE", "FAAB2671E38D5F25CC2DF000");
+test_comp128v2("60372B92D3EE37510355F7CA2FF1AD89", "248B52F48F946258FEBB3800");
+test_comp128v2("3A6CF14AE01A0CA1562D639A97AE49C7", "31F7D19EAB76B3A4015E7800");
+test_comp128v2("D0FCAFC71D9A145F839F11688295A8C8", "7772C8610A17D87744943400");
+test_comp128v2("842DD75BB5B1E7E201E248663A83CF62", "4C43DDCC9F35ECB2ECBAF800");
+test_comp128v2("45AC11764243D64DFCDF35443F498A11", "CA15ECFAD53D0E487DA51000");
+test_comp128v2("F0A05481CCC3E9759495DDF4D061F7FF", "5284304B591163CF2AA35400");
+test_comp128v2("FCAB0F4F0DC5DDB74F6F45C3DE45A890", "1430B0D94E51B3F0970B2800");
+test_comp128v2("96705A918F3F7DC4779EEE959DF56DDC", "11CD9894491DBACE093D5400");
+test_comp128v2("3324BCE404ABB6FFA1B815FCE3653504", "10B5BF4FAD33E64AA1446400");
+test_comp128v2("69C0EC0F65DB292E47D77861648220C1", "BF307A6E2EAAC31C03ACD000");
+test_comp128v2("2CD92262C563D16CDA7076A3916B025D", "C3DC96C3F8982607CB34F000");
+test_comp128v2("3874E5B8CA16D381A0B33E8846EF7678", "826BF9A7CE95C140A965CC00");
+test_comp128v2("3368842420F16B5476313F02B16B3CDF", "0C34B5F2BBD5B6D336B5A000");
+test_comp128v2("669E584D4DDB2E1EAE7E914C8541F311", "B9246D668912C36EBCD2D400");
+test_comp128v2("8D428F26986A1C746CCA262426C7C0B2", "7BDB274C86342B7068033C00");
+test_comp128v2("02B97CAD06351C5C3CF86D396020026D", "CB2BE5BC456ED73635071C00");
+test_comp128v2("B4696D369884E4941D0E087B32E09D2B", "2BB0A12257D862AAA55E0000");
+test_comp128v2("4EAB87DA796EC3488C342BDF311AEF22", "23A0BCDE4B0DCC2C8D89F800");
+test_comp128v2("DCEBEE5F1C4C7A4E8A83B6D4CB236AEA", "84C90910A45004A63EEA0C00");
+test_comp128v2("55855957EB252F0C59A6B1EC4506B9A3", "9C693CF049FE93DD6D755400");
+test_comp128v2("FDE4AE6CCA16EF7FBC9AFE8067FD4E16", "1E9A9CEDCA101D2193375000");
+test_comp128v2("3600B73545F54A51BFFF6ADF932AEBAE", "7CC316918A7AFFCA973BEC00");
+test_comp128v2("202D67833ED8B105BDF66722B7E64F7F", "540ECE8E6B38E99DF7FBB800");
+test_comp128v2("1868360A46FACED93D287EB937EED141", "EBDFE734375B0DAEE15E8000");
+test_comp128v2("F65A50219A711BA33E5227885C5BD27C", "E87D7741411E095602402400");
+test_comp128v2("FCD82A0A445AC9373D96BB9CE8AF6B61", "517805CE2B3DD5310B6DE000");
+test_comp128v2("AC6AC085B92AB68E52620E350E1BB3F0", "758E969F192A9B2B20B20C00");
+test_comp128v2("E5A32C2C398BE819497923869A8D3316", "97FC978698E4FF67A0F0DC00");
+test_comp128v2("C7BC59BE121995B4AEB0332CED5A1198", "B5CC69159E1C6047190D4400");
+test_comp128v2("827E9C6B80997F053AE704994119544A", "C073B256DE3FBBEB72696400");
+test_comp128v2("7702362250B6F5F6F323230C598F9051", "1BE3AB6CA52CB8A98041E000");
+test_comp128v2("00E5A0BD996A84C310238A05A5AE7495", "A31D2FDB0196FA415CD15000");
+test_comp128v2("8D9CC3F666512DF3DB2056CBE7F62684", "1026ED1657B49F41317A5C00");
+test_comp128v2("BDFA3EF9D36448BAE383A49FD6A977E1", "BB2F552110C1F5872EDD6800");
+test_comp128v2("18D87AA310A0CB9B3CC8EF54439FFCC4", "FC770426413A7100746FCC00");
+test_comp128v2("992813CB979D33BFBAC54D55CEB4B73C", "D0148FCED4882E99B5550C00");
+test_comp128v2("833856A2E8B0EE42A5EFDFE505A2A98E", "C21F2CA3950B24C3D5718000");
+test_comp128v2("D16805B6CFAC637A2A39924114036E5D", "322B554745D2B0DC386FAC00");
+test_comp128v2("2E627A1B378BDD2A3ACC7486963D69C1", "00B201FDFC3C4AB6C6633000");
+test_comp128v2("86F68E8A8FD9FE2457E9E1FE47D2523A", "E4FC49F68FFEF7ECBF3F2400");
+test_comp128v2("F72BF5374387A730D780174FFFCF41EF", "80396F47B01D853208C4E800");
+test_comp128v2("07A2299E7A5F5D56C0070412811B02BB", "EC7B17DB8911F53B2F97BC00");
+test_comp128v2("EE2F57A690134B89D2E4B1C219CD7E03", "F492970E081E648CD3366000");
+test_comp128v2("B2DB578B1D559A2778CBCB0216EE5144", "B3253ED8496B17C05D7B7C00");
+test_comp128v2("6C80254249001719EA40C51F2C4BCD4C", "36E4172968201F89069D3400");
+test_comp128v2("D1C28E94E15762073DBEB812F5F1BEE2", "DBED6738EA5E202530C78800");
+test_comp128v2("0F784B5CAF051C4FE137D2FE59A28C00", "D6008F9F45FB8CC50677F000");
+test_comp128v2("39B71CEAC0104DBA6743E2EC285BF7DE", "01FAF3FD3A79579778F7BC00");
+test_comp128v2("261756F9DB55FDFC1116091B8D6BD58D", "50FCAC1DD42FE079AF7BB000");
+test_comp128v2("57E47170F70AB261FA998017D838199F", "88EE9756212F1BDA4E12BC00");
+test_comp128v2("02DE5B5F4AC153124891E768B5E3A1B6", "B42185D92AAB6A18859F3400");
+test_comp128v2("224E9EEF82B29CF691BC9463D9FFC129", "DB92040E46BAB90675E89800");
+test_comp128v2("524B0B8ED727F299E59957FA271A50B5", "456AE3A856C6FF5A6BFDB000");
+test_comp128v2("242A954E612E1F0194CE8493A4CD1C18", "1F607A7E1DB1212B24A6E400");
+test_comp128v2("A61AA82441B24BDD06AA6BB2CE77CF27", "58FF4B1B3DFBB3E3726E6C00");
+test_comp128v2("E01B82CC43D3D72D8CCD60C92C62EE09", "C00041D883E5BAD0BF03AC00");
+test_comp128v2("3AE3E93F044396DFBB5A529A26DA2553", "DB62C24686FE8014B399EC00");
+test_comp128v2("653A180F0F7C98B94130A5C40BD11EBE", "9B9BCBC09E09E8D559ED1000");
+test_comp128v2("CB92A03B9A262683AA1A39CCF8866BA5", "BA1BDB72BF6C2A94D92E4000");
+test_comp128v2("C79C8FC1619F413BDEDA3F9F8FB7AB19", "2334AFE1C799B9815C7C4C00");
+test_comp128v2("71DC6F9B718457B72CBF948304DF4168", "13230113D8C0A23FD5BA9C00");
+test_comp128v2("A11D3C634DAC5379B5970D401EB6C512", "CF9956024F33B4A965371400");
+test_comp128v2("05B7355A6962EEB393814579339EBC53", "CA1CD0788A724158BC84D400");
+test_comp128v2("D494D03F59245A4FD88A87C4E842F8B3", "C8409116E5BA783DA8B89000");
+test_comp128v2("FA2235589D8182BF643DD68FBD3924B6", "447CC4020F9F87565B5B5800");
+test_comp128v2("3537CDFE59252A2054E7EC1BC16C5061", "9C8D45FB1480BE389112FC00");
+test_comp128v2("D81AC6DF80593B62E4CC6D51EBF682BE", "DF6CAEF62BC536826FCD7800");
+test_comp128v2("EF6FEDBC6F65EC72E71DD457D7F01E39", "545AC9FC051774F6ECD97800");
+test_comp128v2("A926134D19884E0C5DFDFED7E5D43926", "315E8EF19510592D48DE8C00");
+test_comp128v2("D40A68048F84E3C89159DCDC2F6CA432", "4E27DD965DCF6CEB40489000");
+test_comp128v2("E13A16536ABEDC92A087707F6962664B", "F54DF012133B0CC1D91B8400");
+test_comp128v2("443F8F2A487FE8CA0E4E36CB0394FA2F", "FE5A205335BA7EB4F9EB1C00");
+test_comp128v2("4CBDFF21AE06C34FBCF8BCE67A33ECE0", "1A80583C4CDFF82675F59400");
+test_comp128v2("CE08B54548CDE074E31630B0C5F2545E", "47904CB4205016ABEDD7FC00");
+test_comp128v2("16C810823D7C5BF3D5A7DF540BE927BE", "BA3C7853EE826A7FC1E8CC00");
+test_comp128v2("493E34068D98BE1CB0DC488E4215EB44", "A10DFDCC8CF7E13AA9F48000");
+test_comp128v2("2B16221E154B8E737705BFE4EF686EEA", "FBE1504BD0786AB3CE8D5800");
+test_comp128v2("40067BF44F7EBEEC97866D1D2B589C0E", "76C385ABD7A3198D4B2D0800");
+test_comp128v2("AEE48475101B133756C5260C974C3CDC", "B6B159E0B62A3E135CA3E400");
+test_comp128v2("7C337455E7D04CDABF9100A0DCB518C0", "7FEF52780DDF19198AEB3400");
+test_comp128v2("34509DDB0528245C753B34D0A470161E", "79608012018A272CFC4FBC00");
+test_comp128v2("B82EC07003C40E7F69415CFB29090181", "E31D8D19A1038B6F3D25BC00");
+test_comp128v2("101CE5DD0A72E07C3759B23BD07CB713", "13389C0B65706D05753F4C00");
+test_comp128v2("E3508CC1421B61CC1829F1AC5000A3E4", "F3A0E53D7E27598C99901400");
+test_comp128v2("BE906939FEB3D53EE5E3B3F09AF34392", "44F8E711171F64FE3B7A9400");
+test_comp128v2("58AE77015B346DC96112C7463CE44CF5", "217BCBDD9A7A15E4E3B9AC00");
+test_comp128v2("01EB1E42FA9BFECEA63771A8EC8FF608", "1282EA813670CDA82B028800");
+test_comp128v2("0287CC4F44011FFB7BFC45C753A7E764", "EDC47B4AD2F99E044B773000");
+test_comp128v2("FFAC099B033FA5CE08C1E10751436B0D", "774EB65C534D5C554A4E8800");
+test_comp128v2("AB57C444B024972E3CF20C2F885D7211", "8C6F76D58DB1181A94989400");
+test_comp128v2("66B10CEDC32FC796527D98A4B9052E0E", "48BDC529943EC0D5E66CF000");
+test_comp128v2("9D4FC614B4A5ECBF84C40E3F2B7B3B0D", "BAD7D26D697368A3931A5C00");
+test_comp128v2("7529E5C6269C75FCABA03362FFAF0BA8", "4428CA3F074553B7CD193C00");
+test_comp128v2("290F258C9AE1A88D5DB89D1C963ED8CB", "49A6A7D3EE75322C985B5800");
+test_comp128v2("4A635EEB118CF0401AA539B3E78D9BC2", "E75EB6229EBFCD7651869C00");
+test_comp128v2("A0A8CC5650A8C449C27358D13F5D149D", "33D344289813FD1762951400");
+test_comp128v2("00347953F59FEE734FA747B5BBB492EC", "163D84E824A58AEA21C45400");
+test_comp128v2("9C1DB2550ABDC1D83D3C6234C1F7216D", "DA743AF98691235ADBCB9400");
+test_comp128v2("566FFA71F19564E0334521F522D247A9", "E40AB25D08CEB2A2E2961000");
+test_comp128v2("2BE2558950270CE4EA4F041311B700B0", "9D3B8DC6DF02EE2215575000");
+test_comp128v2("2C7CF5A9C76A34069A0086D67162CAE8", "C7C27DFBC668647941BFB800");
+test_comp128v2("C6704C0DA2E47E546BF089365FBB7EEF", "3EB8772558CE07528DAFBC00");
+test_comp128v2("A4789958665D25892122D9B7838A7665", "E3AEA74A7E4487671C72B000");
+test_comp128v2("0359DF86F25D1EF335EDECE2F1300D89", "62C3FD4450596914203B4400");
+test_comp128v2("34BC3AAB3035AAAA631514F56C19D85C", "9C6C6F2C7BF109B71BC24000");
+test_comp128v2("2AE6301993E8679EE9783099EE4B74C4", "5827D1C48907242EC9693000");
+test_comp128v2("8E688E8C19E4842AC61D673A47502BD8", "E937B1C11E000FE617CD9400");
+test_comp128v2("635D70F76E8DD5A60C93E636555643A3", "1FC3F91D21ABDB110560D000");
+test_comp128v2("CFBD75A9EF7C590502CB305E255B32B7", "5AA46577C4A19E56222EAC00");
+test_comp128v2("52017B0F5A735EB4B4195B41C5ECDDAF", "141288BAA0C78E43A21F8800");
+test_comp128v2("9B7F9780EE1DB174EB3DE3E0DCB4430B", "67DFFA9CDC3456FD0ACB4400");
+test_comp128v2("CCB9CCC90211E81ED80A3663FE9520DD", "B296494F844BE19BD0BA5800");
+test_comp128v2("094C25D5E5F556578FEC3D09E1F18FBE", "2ACF6FC60CE2E75D0A26C800");
+test_comp128v2("8EC3B41444043CA925036ED10D358A08", "5026E7548AE49E190927A000");
+test_comp128v2("90E7DF0DE887D9A66C7481D56918E113", "4B84AF649EA0CD5F0840D000");
+test_comp128v2("968EE15F77994D3215AD0B3B830C8022", "353867C1CAEC7F26927B1800");
+test_comp128v2("1DB07381378EFF68414A6DF0B19CFA74", "2DA3CF74819513D2FA280C00");
+test_comp128v2("905553A290DD902F230AB5334EC3463A", "013A682A7041996B08865C00");
+test_comp128v2("6C61792C1391DCBEA18157DA3A5383F7", "61BE5406A149B4FF8B5E9400");
+test_comp128v2("8C1D6A7204459D8394710449B1D13BCE", "CEFE606815A3CE4E25379400");
+test_comp128v2("52A2764A059CED2CC46E04FACAE047AB", "B9ED555DE46B9F27FA452800");
+test_comp128v2("583303EC3575D11BF8340CC10F6FB42A", "DA213F2F44A4DF52BFE50C00");
+test_comp128v2("ABDB49A4B210381D9622AD5822150096", "F3672C97FEFC462BDB03BC00");
+test_comp128v2("711639E35CA2CA66EE65C4A45CDD6380", "536057FBB46AA0D25803FC00");
+test_comp128v2("0C8DB765506BFF298F89022E51C308B0", "89EA94F579D333C66670CC00");
+test_comp128v2("EE21F43BC9268966A546FDD100C3D841", "D4593228E6274177E5750000");
+test_comp128v2("EA1A2B1A515C72C4F4097AA555C93705", "E1DDDB18724B2B66A8D08400");
+test_comp128v2("0C9B8393D38BDF1065B162DF707D3009", "B878385FDB1AFC41854B6C00");
+test_comp128v2("EC0493D80DA33AF6FF5FC42D62870052", "4ADA9E7AF7F353A9D9EC5800");
+test_comp128v2("E41565124D918E28E7ED57AE770D7633", "C8C8CAEB0DF9667A2D34D400");
+test_comp128v2("6F4B3D805D5DCB5672FA617066A4B2BB", "346EA70E1588E99C88A47800");
+test_comp128v2("8A66D7FC4CF30B989EE579AA08872713", "4BE79F8A52FF99AE1C710000");
+test_comp128v2("8C901D0043F0660C0A9BC60171ABDAB8", "148A92FF28DBB5CB7012DC00");
+test_comp128v2("B80E227C8575C331DA9AE0F4050D218D", "4CE2F914C3EB439A03393C00");
+test_comp128v2("9ECF1E38C9B9103C6185B00F3C4D93BD", "CB38318E5B3CF543530D4C00");
+test_comp128v2("BAC15FB21C609560794F4C965685E290", "46B7D216BCBA27E2A4085000");
+test_comp128v2("C4AA0670C7B8A667728DA0D594069C99", "12D51B9D3C7909002613F000");
+test_comp128v2("D099EF68D7E3D1D47F23AD15AEE4B5F3", "93622C70D1D635CCF84E7800");
+test_comp128v2("B33945EE00E962EEEBDE6A8FF4742E4B", "509F4F51D9BEB63CF9B59000");
+test_comp128v2("0D473BB0B5BD4DEB25DEE36BB376C10E", "3FD579DB817D8A510BAF6400");
+test_comp128v2("A14218445FC5A8E72C96B1F27D73AB52", "A3BEF92801B0252DF5DB1C00");
+test_comp128v2("494C095A54E5CDB1A1F6095C42D760E4", "15A68280AEB04086C3638400");
+test_comp128v2("8F90256E47BE4678036609D34B89544E", "2396E34F472750F9D3524000");
+test_comp128v2("5C0927F8F0FD2307F2C6FECE9243F06A", "87AFF076277855F812670400");
+test_comp128v2("C636207195E46AE24C49F4F9D0B786F0", "86C6671A2A8BA28EC6918400");
+test_comp128v2("A7AD2E1B41F3761C59B29F0BFC5890F0", "10574CB3947EDCD7E9595400");
+test_comp128v2("C9FE56B04AC1EDDB9E04E352E8199A3A", "5C1ABFC9A21F5D95E1DA0C00");
+test_comp128v2("C3974645E95D98E4F9274CF62B0D885E", "ACCE97C26AA1DD1BB9340800");
+test_comp128v2("82D095C92DF409D3473ECA08A5A81B65", "30BA06CE2F1AD2A3EAE8D000");
+test_comp128v2("BFAA576B9A290496C47C3D498F8D4FE6", "B43D9C5448CC3F754EA0A800");
+test_comp128v2("040B228CF2C6002BE385DEFD7DB55725", "62D7DDCF277DDBBB84289400");
+test_comp128v2("F1E565C0B52EB2B1E24C17AA3848652A", "9F8A216B9C64DC5A03833400");
+test_comp128v2("2E8A846052A19AF00098BF1AE1FDA9EB", "2C5BF370EA47936AE4802C00");
+test_comp128v2("ACE3EC57D2DBFF11B9B8A81B4406FCB9", "6689168B45E7E9084283D000");
+test_comp128v2("7414C5D415AB5574A82668573BB04166", "AFA7009AE75A5B6E1C8AF000");
+test_comp128v2("A986D44920217FD956E7C4CBC3DE0527", "F9BF62C6B3C722659717AC00");
+test_comp128v2("A08A9B02F531CB9D580DF8176A3A994E", "D379914524C2ED1D1B693000");
+test_comp128v2("4C0F9E924F063A6243865DE1123CA045", "D7F6FEB5091DA38F0D1F9800");
+test_comp128v2("D55B8C7718CF349F906071C76555C986", "564E13F008AA9129A319E400");
+test_comp128v2("0613FF46EFDEB6A663D915B86A9D6C0B", "E75538CAD55D599EC6718C00");
+test_comp128v2("B00D4FA90CD2DA85E1E220AEEFE2C5EC", "ADE280F0C17C8BF566451C00");
+test_comp128v2("FD380C653CBF3A927A769324D9E00324", "3DD21D2EA170DDDFD5E16000");
+test_comp128v2("A9172812C62A2FB789825C71C23BE469", "765EA88CBA94AA15DD3BB800");
+test_comp128v2("59FA5C6FA03F2BD23E35CAFCAF58FD46", "546D5EE3655E43632DD94C00");
+test_comp128v2("F6A4D79BF1DA9F46E41241CD2CD723FF", "74ADD5456F2CD3059AAF3400");
+test_comp128v2("46077741E91463DCBB61F3BA88599848", "24D72BDB319C6EA927B37400");
+test_comp128v2("46E2AFDEF73C2242C2EDA4C690C91E1A", "23B988C1308602402A4FC000");
+test_comp128v2("C240BF323A1B10CF791397D47340B26B", "F13F3AD8A00FF908FC6BD800");
+test_comp128v2("87839B0D4AB1B531495D00751BDCB435", "ADAD6944C3392006CC85E800");
+test_comp128v2("635EFEF876F6318332BE61BE6B4B83E5", "4E763956FC5B9B2C37C09C00");
+test_comp128v2("4A4A4AAFB83EC7B93840A3DADA92F1E9", "7032880172E7BCFB8C72E000");
+test_comp128v2("915C8330D241274251BD71B7E6D37699", "E2003179F7CB405965011000");
+test_comp128v2("E20E7DC2DF7BAE037EC7D880B3C26E90", "992AADDC12E81003488C9800");
+test_comp128v2("EEB75A96C92304E40C2E0E806E918E9A", "BCA49B63865490E279409800");
+test_comp128v2("BB1806312EF173FB73897A3D0BE6A053", "F731BB08A833760754AE0800");
+test_comp128v2("64E576287B81C3442F95345C078D22DB", "B5DEBC603B1ECE7161C95000");
+test_comp128v2("DCB334F708467997480B458DB66356E3", "CFBD2049D829D9C42D26E800");
+test_comp128v2("39EC58A24300E932FF9258EBA374ED62", "A489F81E6E16D0F436977C00");
+test_comp128v2("52FE65AB5569A4DDC91DB5EB747AD872", "712CF42C24F212EE4B80B000");
+test_comp128v2("9401DD3CF0C494B91A3CB28A677A6F9F", "6958E170DB5879834C90AC00");
+test_comp128v2("A7A70C832ACD99447B4DA063BB40A249", "8C4337552EC9121D9C0CB000");
+test_comp128v2("F777485D595BCDAED8AA529E91A161F1", "97DE44F1E89882C3A91A5000");
+test_comp128v2("8D25D899D7458F37D0F26C7D5FD3C0C9", "1E9604A46215B01EE4C11400");
+test_comp128v2("2C75E9C40BBE9AC71B03E2B1A4FD8F77", "BA6F3343BB0A50DFC9F54800");
+test_comp128v2("5E2FBA59B74C51357D5944849B5D5B01", "D5312B4F4774EF49E9318400");
+test_comp128v2("B48D0294C24464CC796F7665C639A3A5", "DEF4ECF98FBCE2A4DF450000");
+test_comp128v2("E1EE10EFABD753F49C13D0B6FFE567F1", "C6CF830856A1AAB6750F1C00");
+test_comp128v2("328BE773AB9ACABE5EBDB67A72DAB593", "1246E6852A5B78EFC63F1400");
+test_comp128v2("C6FA835395102B135A0DF22ED100A30C", "F7EC6507B3D8882E9F86E800");
+test_comp128v2("42BA23DC01CE115FEE284E30D93C2EE1", "85061F767191A64FB6DF3800");
+test_comp128v2("590C81F77828CC50FAE2322F88F2FF72", "4428F98DAC165B709AF39000");
+test_comp128v2("DD5A394D5AF47943FFFCEED795E55131", "7BF03394EA112244A2E53000");
+test_comp128v2("E4B350364A61282E9C7E109C200BB59D", "22A39338B073F44ACC3A7400");
+test_comp128v2("2EC97054F229452094AB6E95713E2B73", "C7DC6BC4D8586FD0A278A400");
+test_comp128v2("9949BBF69464815BBADB53732B830972", "221299171F63C0DF3AEF7800");
+test_comp128v2("AE7021704039DB7C25139864145D2BD2", "1945B987B54CB70E5D718C00");
+test_comp128v2("31E7C45E5C16698DB87FDC4414521085", "68EE8B49C4E327CD7EFF1000");
+test_comp128v2("2C9301A7630A80058E6016DF1E61F67C", "22E69372E777618A21335800");
+test_comp128v2("8BA8B91866F892579CF8EB18BFBCD4E9", "F3E2B573F70A66FB55C23C00");
+test_comp128v2("312372D0F65B447765758D9CAF2434D9", "93609D380DFF429A870F0C00");
+test_comp128v2("CA787B420C4399138BE2317A0DC94249", "9D8372124BE92CCA0D06B000");
+test_comp128v2("27DAE7C8BAE72D001FC9002353E9B64E", "4E15629B933D694F68733C00");
+test_comp128v2("26BAA1215821CA9F90E4CD0690C10F2E", "58103A993006A0C200359000");
+test_comp128v2("A3D6F246FB435A7FF58E1E88B434AD71", "685673795E247655A1B4A800");
+test_comp128v2("FF468FF55671C17282B41DD246D2792D", "26BDB78D824FF8CDBA768800");
+test_comp128v2("600272165F44AF4C0E537AB5D8E66736", "3C79315DB6DAAEF9EA724400");
+test_comp128v2("508F035C9376D9FCC41AAA7D1CC764A8", "41FD7AF4639235E4A02C1800");
+test_comp128v2("F4D22B29DE342EEA7CD8E4E3F43A4943", "CD833E80A4BF33DF3CFA2000");
+test_comp128v2("58843C6F5856B56CA9198695EFE17CF0", "5676CE8A0AE61F33C3ABF400");
+test_comp128v2("6E3C73DB4F5CC678DCC7BFDEE568E826", "A247316EF8F882D42FCCBC00");
+test_comp128v2("D37AE74AD0489776723124F6CE81D42D", "78355AEA1296483A3CBE8800");
+test_comp128v2("F43BA41AD0DB41DA4F54FF5D6FEE4771", "DC1D9BAFDDD5EE83C1B8AC00");
+test_comp128v2("B65FB4E50DD0050E79BAF78FD2F4B9BF", "B0E291BAF797A8275AD71400");
+test_comp128v2("8DC778A2ADA661942266E0B86CD7DA91", "B9D294C0291018F04A09E400");
+test_comp128v2("B6E293ECCA4A56F1D93C8242D5E6756C", "25ED1EE23A3C11FCE7D57000");
+test_comp128v2("4B5B86CCE2090F22424EDA2C512197C8", "A365A6A867B02EE9343CD800");
+test_comp128v2("9F250AC936FDA89F1966C3D3812BFBF4", "3A4AB781109515A1139EE800");
+test_comp128v2("87CF86E273A7A8BE687D1802005D2A5E", "8ED03BDAA9E92833A6727000");
+test_comp128v2("98CA9A659D2C4DB1A235DD54BA36EB77", "0AECFC5BE2B7C1DC6D0BC400");
+test_comp128v2("53EA0452158CD2DF5F5AE2DCAAC86BFF", "29A163B42A2D557A70974400");
+test_comp128v2("74B58541693349756299EE79D408C415", "56D28DFB499FDB30B87CA400");
+test_comp128v2("16E25268D3F1498A42525626C2440505", "39FCE1A8505CD73BA1DAB400");
+test_comp128v2("737D32452FEC46C026B249E7D77B9A80", "9D515ADFCD93432FE73A8800");
+test_comp128v2("ADD0543912E4A632AC4C0814294751F9", "59D694C394485E65DADDBC00");
+test_comp128v2("0F30160AF9D726612C00476DA06F2FD1", "6EEBE451744257F9435F6400");
+test_comp128v2("0198B362FF964F890256674B225AE2EF", "DAB5FF67D8925B0DADD74C00");
+test_comp128v2("F99975FC4D5AD6FDA57655CF1DC35FB3", "8396623C8B44C2904815EC00");
+test_comp128v2("762CD396934B5E7916EB48D07E3D8383", "D597556F2C650DCDAB686800");
+test_comp128v2("ACFD433259569169FEE586564F056F31", "CE6C1FC52C2CC10E886B6400");
+test_comp128v2("C0C3AA12D8EFA599621B8219AEDDB39D", "F46A4FF31C0FB6ADA7FC3000");
+test_comp128v2("88964441874790C6B1AD12C6BB907060", "CC9729FDA25819796E90D000");
+test_comp128v2("BF65C58D03260691C1267E992128F675", "BC7F343F69A3B6C09C114000");
+test_comp128v2("B13CE2B597DA27FB9DE4B9ADFF717495", "87BE699F1748597BCFA46800");
+test_comp128v2("A2680E79DC76B80EE268FEE9C1EC945D", "18E19922978E90020F353800");
+test_comp128v2("0B31B79AB27925553119466A3C845C49", "041D5919C3CA2542AE91AC00");
+test_comp128v2("FFCA938AC5DDF97C526941838527CE9E", "FF7CAB0E892D9AD987AE2800");
+test_comp128v2("36D5B7252A7B57BE2D4E06879E6975C4", "427F72A3254D4BA24C1E6000");
+test_comp128v2("E4FEB6B8FB01025D6C479852FEA000C1", "825845CFF96383778D0ED800");
+test_comp128v2("E138E7CD58527B7022BD1553C4E493F4", "71AE9F089F8B970EA986F400");
+test_comp128v2("F0FD7F38EC52265FC33D60DC9553A5D7", "140CEF85332BCDDBC3B26400");
+test_comp128v2("4F0BDF1C4BE4A35C065EAAEFAE646A01", "96E64BBB007D4761869BF000");
+test_comp128v2("03706861BAEEF0DC1CEA996C3EA93D92", "C2CF16AE93CB94D5A85FB400");
+test_comp128v2("B1259AB7C681443C290E0C1BF5224DC1", "DAD36B50AA8455AD5D6F8C00");
+test_comp128v2("E225F155FA5CA852E151B7AD3BC40394", "9F480C67DF663A51B91C5000");
+test_comp128v2("30098EF69DBBDD25FB9C87315D3020F1", "51D39392BCF956FF0F34F000");
+test_comp128v2("749E0FD7B6ECD4B45E80C6E54A14BD0D", "44F77EF7111682F411EA7800");
+test_comp128v2("5A5444F0E7E7C61CFB031F86E62EAFF6", "2F65BCBA94C07D4346DF7C00");
+test_comp128v2("C9C7A48094A579C8A989B28848DED187", "CB88C47F30FAB985582B0800");
+test_comp128v2("50449C950CE2DB6E0DF22609E005E175", "64EB723CBF43873DD2320000");
+test_comp128v2("9DEEC383005D68C05C665CF484E371FE", "F941903FC1062E6FB20AFC00");
+test_comp128v2("FB3BB14E175FA9172A2741E04F139B5C", "4E9CD42E9C244AB3690E8000");
+test_comp128v2("24C01EBBC6B68F9BD4850D1BC360FEBF", "BDFFBF809BA31A516463A400");
+test_comp128v2("FBF4841145F14A97DDE18D3ADE4CA794", "5CF60E45C59FAEAC54A66C00");
+test_comp128v2("B3AD72EE04894CB4B446CCB338E31656", "39C9B3FA3B84200BD76B8C00");
+test_comp128v2("3BFD7004020C1DE138BB6C78F2042D89", "5BB03480D9B6CA5180F82000");
+test_comp128v2("024D288A0F95E4633BD0B05CD5B700FA", "39DFD93B2CBEBD1CBE42F400");
+test_comp128v2("1AEC0EE2B2E999AB36583974C7668FDC", "68FA512A754892098A4F7800");
+test_comp128v2("6BE0D7EC8A11ED5969386ED31F2AC1A0", "37161F968FC6655AFE02E000");
+test_comp128v2("FD087BD12284E354ADA00FBD47EA0B99", "B1E477DCAE13CA518EEB7800");
+test_comp128v2("5E342819ED86F7026BF73B76227A8CEE", "B002DE9D67667700161BEC00");
+test_comp128v2("75D09A20C3586EC73944AB4C216D44F5", "8AD9F7E3FD40F9637AA0E400");
+test_comp128v2("0E360DD744AA863F6E0341840510AA1B", "478446EF066F048C82A65800");
+test_comp128v2("C048603EDA30D4858F8F6C48A9563B41", "4D53E54088CA31C0AD9A6400");
+test_comp128v2("759445A6138231604DF7C13CCAE4BDEB", "5CB44BCCD6460A0950CAB000");
+test_comp128v2("A91CF2204877ED8903E7B1AC9348BB22", "915775CBBD20EE58C44B0C00");
+test_comp128v2("E21BA0D598D2FC61442E32449589112F", "4A83081F3332DCC326F5DC00");
+test_comp128v2("04F3AA9BA2A1D95E8CDEA6FC34308017", "D6082B73B98D161CBD653800");
+test_comp128v2("594A2A8792456A71705BDC4E89E2521E", "65929B7C79B8DEF106487000");
+test_comp128v2("446D9EEB6FA4D645BB682CB86B8277B0", "5AC860D938A44B12E17F0000");
+test_comp128v2("C951406FF94B294E9276024B879B0661", "AC12B1BC46CBCB5AF2B0DC00");
+test_comp128v2("4E542E0D75649646B084DE8FB0285C77", "65BB3D00B13D1EF9E5173800");
+test_comp128v2("A1268CF4BAF41B5D12BB865F0E3D8B22", "3BE83D7A359D3597AB3B2800");
+test_comp128v2("36C3C451F2325C18FCDD73CC0FF21B18", "4B6718390394E16180E97000");
+test_comp128v2("CE257F14B53AC96792EA2CE8B4A4E58E", "A519EDEB91EFC18B1256F000");
+test_comp128v2("3F14F22F59C516912AF25CA62FA8F053", "F3BA543B2C728E3FA4D30800");
+test_comp128v2("3A4F5220261EAD5516E8C517BD2ED831", "DD66EE67A690B8633E51E800");
+test_comp128v2("495C634F6667460C254D97B35445707A", "C6F29CFA4B9CAED36E270800");
+test_comp128v2("66EB5313B0C83A64FD376BE02E03166C", "5E895656A03CE5C83A4DC000");
+test_comp128v2("35889435A0DCD4B799BE7695320B69CD", "ABFE28829FE27DE9E31B3000");
+test_comp128v2("183B1F81EE25E31AB5DAAA33D015CBA6", "E80C570BEF8028830FB68000");
+test_comp128v2("F92B33E2BF63BF05291C09F0213FF72D", "9FC5D30A549A662B0278A400");
+test_comp128v2("E12E30F732A3A2A206467BB3F174FF2D", "FBF985953AC4308EC8678000");
+test_comp128v2("E66C7ADE2AB71A9DDF8BA3A18F9C1302", "E2F0A7D8972CA55D5873E800");
+test_comp128v2("59DF68C04CB938BB9CAFF8EBBB6C6CA5", "A12CE62E9B86E592D647C800");
+test_comp128v2("5688229644E7F91AD75B47BAAE320C27", "445E1ACDA1CEB5490A7B5400");
+test_comp128v2("8B26CFC065CE0BC44A97E33A5A07345C", "75F0660EB010AB40421F8C00");
+test_comp128v2("77BE38B4815AF6DFBE17DD48BA9AB1C9", "A8F61F6D8CF832A592B4B800");
+test_comp128v2("5E73AD699EEE8DE8460F2C01C2077CD6", "CA6BFA4A79B9104550A07C00");
+test_comp128v2("1B546F3B274639D31AE0ECF3C378D180", "5A668DBD6AE23D628EBD1800");
+test_comp128v2("57887332BE21016DAA2200E69A5E850C", "937CBB32F8A08E24E9550800");
+test_comp128v2("F11C61AB9A2DCF1D73D2566C07F2F90B", "70BA40635D38BC070B1A0C00");
+test_comp128v2("2DFE7BFB3589E3EB3E77895EDF0130C3", "7C0BF94042656E559D11C800");
+test_comp128v2("C7F9F26B1CB9C77524810B97C649137B", "CC9F502181117A6015AEBC00");
+test_comp128v2("E3579A2F7B2267295B14F6A2B2F09937", "FE52FA20DF09C6BAD47E9800");
+test_comp128v2("7A2C147FF0868F41FF61BD482C7E21BA", "81B79CC89B3DC23A023F5800");
+test_comp128v2("ED5E4033949163C5AB820CA16C51AFF6", "A82B3722F3589AC19CFA9C00");
+test_comp128v2("22AB205407EF30ECCDDA49B779ADA405", "9B570A9C9E89BB11D1C04C00");
+test_comp128v2("BD5EFBC04BE376CADFE0207ACD8AF095", "AB4D42353B1DA514E410AC00");
+test_comp128v2("785180CB3BC2FE8792E424C407F12437", "03BF1E622929CAA732929000");
+test_comp128v2("7E1DBB304169F6DE4F12151FDEA7B4E4", "F74A4BA566896445694F0000");
+test_comp128v2("6A1668D9BF09C4B9087F7640A835AE9C", "C467FA442E9052B1A1944400");
+test_comp128v2("096E3A437ED6A342BBA60D4484EB348C", "AF5684AA97791DB5F4F04000");
+test_comp128v2("218223AE24CF97E6BFFFFF1F646ED3AC", "912BAC5C763BAFB866356800");
+test_comp128v2("32E34FC02745575D7844046B5EC92297", "753BA5F36C33B0A8FF19C800");
+test_comp128v2("78193A44A12EF231CA47659678D49122", "B812FB79D7769618FB98D400");
+test_comp128v2("4C79BDF37D02F924936515FA9191535C", "3A3EAA1A02A8770D634AC400");
+test_comp128v2("9149129D54A114706A17C92268E95788", "4BAE933AF24AC862AA02C400");
+test_comp128v2("827123B8A0AFFF76512B9A4247F18263", "4E176C62EF8993DC49BCC000");
+test_comp128v2("B7D362E0CAB7936076570676D3B00926", "F7142C9528BDE0C3410DDC00");
+test_comp128v2("C4835D3873B027F4A04E01E09F10B567", "6CBDDC9F268BB2523D371400");
+test_comp128v2("2C71B6B495E2280B5ADA4882926012E6", "6608CAED6ECE6BBF4E4C6C00");
+test_comp128v2("4DFAD94ADEFED514A8336CF78DF291E3", "BC9E3927D64A5AE83FD09400");
+test_comp128v2("39E9E060A7A89B40951170834EB358D0", "882709FBBF4C15A53ACAA800");
+test_comp128v2("93FA22B2882936519A894C83FB71D7CA", "10CBC4E60938FF6E02BF9C00");
+test_comp128v2("6D3054E4F523088E4672B051B4830D87", "8C235DDFDC54AC96423FD000");
+test_comp128v2("9A9AD3AE912E007D1B7A773CE5995F5A", "C7440E0B278459AAA5452000");
+test_comp128v2("5DE6E922819457D8A17A4495C432CC78", "346894BB2BB3E5396360F000");
+test_comp128v2("CA9D461DE4EFE173DD0F70B21F0EF2E4", "897F09AACA45A443DF046400");
+test_comp128v2("6CC4A0AD6363AA75173ECDDEF1867500", "5E1369255B428A3CAFE91000");
+test_comp128v2("A83B7718967EC4E71FF17A13E504979D", "8ED613C3B5EFDCADB43EA800");
+test_comp128v2("920D2CB5A77A118740641007D01050DA", "5CA75E88F9DDE10943C2E800");
+test_comp128v2("A25AA14FAC524225CF34796E3B48D4E1", "486C8EC0519E9CF7BE04BC00");
+test_comp128v2("079234F699B3D4F4E10E81A6F6CB4AF2", "953C821F1B60AFA612147400");
+test_comp128v2("2C0FA3B7884EC1F49A1FD64D25D918CF", "66B1BE35A97A35B552B54000");
+test_comp128v2("4809694A853437CEBC1430403F2C0AC1", "8B52048DACE2B2426E64D400");
+test_comp128v2("CA0B1E50C790195CF83E867BBBA1B11F", "8A7B4F4A857CBB91D743FC00");
+test_comp128v2("750AD2FEB9321E8161BDCC3737F294CA", "3AFA341A9F80B2C6DECFA400");
+test_comp128v2("EFA25251D61F8DED93F2DD2F5C773DF0", "B05617847AAD49659499E000");
+test_comp128v2("4372D23AD9D5985A321D47FF3B94311E", "2F0458EEAE7C37C9B0D28C00");
+test_comp128v2("0E4D5FFBCC246C0B694D0BAD0C6E01AB", "BB9E49591CDEA7B38E42C400");
+test_comp128v2("C2AF47D04C203797F5EC2CC841A3CEC5", "58EFB4158198FF36194F6400");
+test_comp128v2("5A7F52669369320D3CD5883FA4EA3F2B", "6CCC2ECD466D42B7A4305400");
+test_comp128v2("C50ED70A1FCF421FE6D3E68BAF7D90A8", "DB98CC5763982C52885DEC00");
+test_comp128v2("09483A1EED2CF60CCE0DF670E077459C", "17C5625B1E4B638831C73800");
+test_comp128v2("9E8BE0C3DF99181656D71A665B2F6E78", "8930954F0BEE0ECCE8FF7800");
+test_comp128v2("2E1A3948DF968DACB8B50C7BE01F7457", "1AFC087AF7C3DFB650B5BC00");
+test_comp128v2("DC70952E477B9CC06C507BEE1B1D0DF5", "2CD73DFE8A454951F8F5B000");
+test_comp128v2("20C31EC84115A792269692DD24318D5E", "710E521A571C20908E4FDC00");
+test_comp128v2("57EDCE38D0847365DDC3E2476AC3E1F2", "9C8BA4C70BFFA8D374427800");
+test_comp128v2("2FE14DF7EC89DCFC40F4532DA4CD8FBF", "E929007EF952A2CBCAA1E800");
+test_comp128v2("C891106C395E6FE27CB057717252D1D0", "426667B142F5B2C6DA154800");
+test_comp128v2("E00C2B6A32C78A39943C5C47F2662676", "DFF8A3A85B25DC99325CEC00");
+test_comp128v2("FEC57F0F123AD7D36B4B6F35703F64F2", "0E5DD6F7FDA06422FF0C2C00");
+test_comp128v2("7EA718A0C7FA4D3C942BEDBFF0E8C27F", "0494E06696570FBC07B20800");
+test_comp128v2("5202C1B460DF93CFC147F50DF0DB8AD2", "909CBBBB1234814F20B94C00");
+test_comp128v2("A5BEC24FA1715EE2A004AA64ADB891D8", "79D301F620BB0AF9F434D800");
+test_comp128v2("FE558B21568C8EC4F96ED18492327DD4", "20D3E5E9D2FD6C7B33644400");
+test_comp128v2("72CD73EC048C026C289501852295D8AE", "A7BE173CBA66C90364D90C00");
+test_comp128v2("68359A95139538BDFDA335F9766CB52F", "D9153BE65D53CA5E79DFF800");
+test_comp128v2("FEED7553983FBBD1D9758393FDD5F1B7", "B8CEF24E0140134FCA4E4000");
+test_comp128v2("0A07B08315437682AFB159924B0686BD", "4CAFF446C895B91BE7A06800");
+test_comp128v2("3C326933EE7F409FF467A907DF0036F3", "F80FA736C483EA30DF9A7000");
+test_comp128v2("95F16978198BE120A3080E7339C4DC16", "61B588B440110F1176018C00");
+test_comp128v2("4FB88DCEA84BEC2D61D59D26AAB1E5B2", "63B99FB3D4828DF14A632400");
+test_comp128v2("99052813B4FE1DE320C9D18250D7EC0A", "99B838E84079665C7AE32C00");
+test_comp128v2("58B92356701F585C5DEF34A1867E1164", "6E4C4F64265374992B89F000");
+test_comp128v2("D4730E1A155968372A2796C007DB61C2", "F24DBC3188928DD7F6DEB400");
+test_comp128v2("31F061BE095DD8F0CB9B12915F677513", "432999E45E51F50F160E8000");
+test_comp128v2("A8FA54FD77B174B01419DEC483C3BCFD", "960214386FC602BD0B634800");
+test_comp128v2("B69C34EB57A1E9BAFEA2FC8BDDDACB97", "D31496A364D337F21BA43400");
+test_comp128v2("E3DEFCCF108C176B427C6D558DAB2257", "FD4F744BDFF1BD5408F63400");
+test_comp128v2("634413A6F936B67FB937E47831BA1744", "3D2045CEBCE10C5E3945FC00");
+test_comp128v2("761FDBAD45F01BB614C990C5DE842A48", "7A29FE2AAB86F4F7BC520800");
+test_comp128v2("EC9ED9B997C283EDFAD1D86D2B4A7164", "058544343376B8BE3F87B000");
+test_comp128v2("81627CD5C956F5B71A9C0ED4E521420D", "4E313907E89F9F9B55398000");
+test_comp128v2("3DCD0B3984C8247B8562EF6237E9545F", "17BB7D71DC7324EE7C747400");
+test_comp128v2("6F27674CBCD953B4059F3B55F78E8795", "14900F7EC6BC6B801CF05400");
+test_comp128v2("ABCE668D4532111068E0094A3A100E4D", "A18AF444D2BDC12B60B2F400");
+test_comp128v2("280E9EBF56FAAD5DB2C5CF73CE296DEB", "20055334D6BD65B69284B000");
+test_comp128v2("84608515AAF1D869F9EE47B6EF48EF0C", "78BA397766592C4E05A7E400");
+test_comp128v2("1692DA2B7086E7AA8D3F3035C7107359", "87194D864264ABD4CB900400");
+test_comp128v2("07DE064FA13210922ED16199034CA965", "2ADF1D09B4ADD164B76D1000");
+test_comp128v2("75EF82FBCC14256470722FADF3776AE5", "CD3DDE9AA2529DD7A8C8F800");
+test_comp128v2("B99DC3A08EB5341A32F8C62E4BFEE43D", "F417AB93249FE05D579B5800");
+test_comp128v2("A4183E5E094E733AE11BDD7F6331043C", "90655E9480FB2602C4D18000");
+test_comp128v2("28D40D70C58A581E2BA5DB2D8312BA8B", "535906A3650D559BBC8DB800");
+test_comp128v2("13B5B284571B20D9EE9799C96BD40FC4", "B71466E5B1F11AD6B8AFA400");
+test_comp128v2("0029C96AEEAE094A86983794BD582AF6", "836AAE69B149DD54877A2000");
+test_comp128v2("DBF2EC98F31ABBA2722DBCF89EC6A44E", "68343042FC4F198337C3BC00");
+test_comp128v2("083D0ED162BF1A80574B5906CC1F4AAA", "FA3ECFC6779C1AB430E4BC00");
+test_comp128v2("4E1D795034EC45B8F9821D6CA8203BDB", "E816931A5308C59819AC2C00");
+test_comp128v2("4EE4972E7F60987243A9799E63D662A3", "B16939018348AF781859E000");
+test_comp128v2("849CF4F89D3233F3E584CE0C129D4BFA", "D9C2178D63D98597ADCA8C00");
+test_comp128v2("57EDC728BCC2B30DA9B7BED3393C3CF9", "CE8A219B97FC38CF8EB29400");
+test_comp128v2("9A3E2A0D88F960CBB1808EE7211C6362", "B4753C1822EE5832EAC3D800");
+test_comp128v2("032219016ED376CF2D9CD997FB3ED6A6", "9D99910AFB22549BFA59CC00");
+test_comp128v2("6465F4B9C6DBA457BE7EB0580642E4EA", "349CEB847C741124EECD5400");
+test_comp128v2("EC5EAFC6E0CA5C7811E4DBE5188454D0", "FF3B8B9C7E49CAEB00BA7400");
+test_comp128v2("FC779DF1C75EC65275971CA4DDA54445", "BDF0ACA83F71F5795FF91400");
+test_comp128v2("97167B93AEAC688D65F5CCA5AA540628", "A8934C20176826D8E9210C00");
+test_comp128v2("D6FFDE9C6396DBADD186625777F0EB1C", "25D38BAB18E0B1A4561EC400");
+test_comp128v2("BBABE99B5DA9F492794D1B33F2E69306", "A2F9EB555D1860FCEB90D400");
+test_comp128v2("31336FEC645D23BFBDB2F17A7D051ACD", "DFE297E427C7EBBB85125800");
+test_comp128v2("F4CEA98E6B5D08FFDDEF9E83F02EFF76", "0793F349B87CE001C3D24000");
+test_comp128v2("03C233F35A8980F0167C9C01FD381026", "1B936C46CFBC6210208A5C00");
+test_comp128v2("83937A0CE40B24304B9FD30B2ADE62C8", "81449A34B68F541FC0D26800");
+test_comp128v2("CF885925FF754C3D2E0F17FEAD4AB540", "FB623A02D722E99948756C00");
+test_comp128v2("B263174AD8926BDBDEEC5E9A9E92424E", "4F2D03FD412BB66F8FB45000");
+test_comp128v2("3493E0EE360CCA3459BAD5F44C23E804", "0C327FCEC6FCD5C9BD410400");
+test_comp128v2("1CBE4486B6754A05800548C706835524", "A5B423FCA3BC87386CBCEC00");
+test_comp128v2("96057C428E150BBCBD9AAA18405BC04A", "0683236771BBE74B4A2E1800");
+test_comp128v2("F2B319F79573629E56759FF5BAC67303", "C89F69CBFCAFB5CB5F5BE400");
+test_comp128v2("1DB5E2D4F572F50D2DC637921E46D270", "8B09544DFDD6BA2F6D8F8400");
+test_comp128v2("8EAB71FD2C9F62866607E317946B8515", "7B0C4057E9CF10535B275800");
+test_comp128v2("9033CFBD34995F33F7530BF78C207EB2", "34D5E0DF065F9CD9373DB800");
+test_comp128v2("55B56528FE385672E006DF3E5F15593C", "71D3C14D2EEA2465AD0FC400");
+test_comp128v2("52A4AFF178091E85625C39583A935096", "7EAA20BD18083FAE1FED9800");
+test_comp128v2("7F3F6A273A8A75EEEA484F270209DE61", "695C9E3DE158905DB1B9B400");
+test_comp128v2("B607EFEFC1959FA8B32E0979F241CD7F", "C3B8B80D01C9390D837DD000");
+test_comp128v2("B5D74887A6DC4F652ADC13A10D4CDD9B", "19CC8430EDFC5FC268973800");
+test_comp128v2("A09F045DD589B5223037DFEE3519A376", "E60E7F22341E66A3F3EE1C00");
+test_comp128v2("F3E0ABB2B1E4F00647F2D5C236A1B26F", "7A776258F5C5649E5E201800");
+test_comp128v2("C47160A0897A8422C528D7BFC8D20188", "D1D32C73E3DCA58B70BB3400");
+test_comp128v2("F779D231ADDA823C8F9EE13C5CFF8327", "F1D9065561B6D0591BDAF000");
+test_comp128v2("BAA3CD7BE838696F2F8F7161D6C8BC07", "2F4835836D00DE30A77A2800");
+test_comp128v2("29D8058453F0FB8777E0116247D1624B", "D626DCE8C83BBCAEB1E60C00");
+test_comp128v2("962F26AB8CC6CFE7004EBB98219F6E46", "3114E64D5E558C1CBBCC4400");
+test_comp128v2("B4C608BC11A358456FD44A38ABECD461", "1EF6FD55FB22D74591F2DC00");
+test_comp128v2("DBC87B90E5CC736D89A063C8E7EA12C0", "69A047C836101660FA0EE800");
+test_comp128v2("E2FB2C67E647416BF2A58284677FACC5", "6995DFA7822EFFB01826D400");
+test_comp128v2("6D2FF6CD3C9A5038B9B33755C6DDB410", "4A047503796C5AF0A83D7800");
+test_comp128v2("3D20566CFBFCBED16DF8D3A0284A85E6", "835C3F58AE388B93F74E4400");
+test_comp128v2("88F65F3F649962491D3E0FA045EE23EC", "9612855A987ADDA693BCCC00");
+test_comp128v2("C6ABB80355AD24C621F34965507BDBB3", "98603A29610E403253C30C00");
+test_comp128v2("C37280108B16E450EEED07BA7575FEEC", "2B1FC2879493BEAB8BA75C00");
+test_comp128v2("F637E1EFDD8A8F577040337DE4817A7D", "00E125367FED4AAD7277E000");
+test_comp128v2("EDE6AF5E598389D9BA050D5527405DE6", "904AA4D51E003AD87D170400");
+test_comp128v2("AAEAA56781A803C19F7FD64ED2ED2DB8", "EFA8298CB630D5D9C3325000");
+test_comp128v2("1B7AC6EB7CFE9DB7CBD20B3AC8BE73F2", "46DE7FDFC06B8AE2F3A4C000");
+test_comp128v2("E6A8681B7B066BA7CBC43139B22C3DDA", "BA6F5DCB9895FFD2509C6C00");
+test_comp128v2("A12237D9124C39E638D56647E6A86452", "D25F86768AA3E961C69C0400");
+test_comp128v2("07066B004388D3DFB3B04A64AD83B7F7", "7650268E5DDA7BD220CF0800");
+test_comp128v2("55A2BA46DE50A3C16EDF3100416146F0", "5FA039D0354C912D161E5000");
+test_comp128v2("6109A82102094EA00C2DC1F5D1458EEF", "8D84E7F5DF9FBA1102E23C00");
+test_comp128v2("F37ED30ED80B697C3C71DC8CF41CB486", "AFA2019028CBC07C803FF800");
+test_comp128v2("80D00951B03829654F56D8577B2319DD", "259B7737DEA5AC6586C9CC00");
+test_comp128v2("4ADE88B1C1450BD2C04DB298627E794D", "11F7BD5CD2F0457A912F5C00");
+test_comp128v2("6B8CDA8600BB3D20418AC2D6AB2BE0FB", "6CB450249C7A80539ECCC400");
+test_comp128v2("AF5D6A632867A1AED9B0591504B6C52A", "8976868E00E168C2BFCBD000");
+test_comp128v2("D7881B90D486C90EFF4389A071039F0D", "F652A1C5A41ABBF0AF09BC00");
+test_comp128v2("31744AC378C3A56E2E599A052133E3A1", "990811B8536A91B40FDF3000");
+test_comp128v2("DB828FC7E2BA095663B1CAC857B1C882", "991E252E53D405FA7584CC00");
+test_comp128v2("7789790E921E29D8CB10D2E90A6CFAD7", "C0615EBDF99A548693DB0400");
+test_comp128v2("631510BEDF7A2CF31DA6E69F9AC78378", "6D875FDC78C70F8BCF206000");
+test_comp128v2("41D1BA21CE28CB116716247CD1567A1D", "94903B7659431E454569A800");
+test_comp128v2("0F98273C34B90E685BD7873383CB3BC7", "0C738DC3E630AC6FDAE9C400");
+test_comp128v2("75BCBDB5B2E23F46B6366229281E5487", "68E6EF3AD2A857847D050C00");
+test_comp128v2("A2293CC54F3395A790F86AA56A95E357", "B2FCBED0F540FB5ECEC9AC00");
+test_comp128v2("6E92707ADB71C3808BA4E241DF3EDCF2", "D45945189B01B92C0ECBCC00");
+test_comp128v2("4B469FF0DD32AC00928D4770977EA271", "C20B5CC8B92FF28E449FD400");
+test_comp128v2("A0FC84522EECA927DFA68F9D07C70B0C", "451A254F4DEDE634F514D400");
+test_comp128v2("FE996981505A918727D5BD232B0E157C", "646E03E626B160D204C3B000");
+test_comp128v2("4F388F8FFBDA93A421167BD44F368647", "5F6F12C381E2E75AE300A000");
+test_comp128v2("0086CFA9CA7E7AFE28C4497FD19AE133", "928AEEB2868BEDA13F275000");
+test_comp128v2("4359ACB771F941FB8F52513D01CED563", "393130BF04B3D914DBCFF800");
+test_comp128v2("A19C58E94C9EF7C363A627A72EE4C57C", "B1A84094A806E28A43B57800");
+test_comp128v2("C165902B95C0CB08ED5DC0FAF3580F2D", "6CCB395862241FA3661D6800");
+test_comp128v2("26BC352460FD073FE015A410A7CFA935", "61E88484BB88EB782141E400");
+test_comp128v2("4C3F3A58186A0DB703180BE8E4AD5387", "EB8671AD139925539E964400");
+test_comp128v2("E9CC86936DF7AECCA2B86736689DF416", "ED230A13BF046D8507B77C00");
+test_comp128v2("2D90CEDC4BB18209C39572AC480BA46A", "E011AF24697A323D4CD4D400");
+test_comp128v2("D769D834E79706D9D620286FD60B1882", "35943940C4DA30A49167C400");
+test_comp128v2("FDAD1FA63E891B0D3BF81D8629FCEF99", "1C2DC750B9127257FC288800");
+test_comp128v2("825721F453B177BFEF0BAE758AF1AD2A", "77052E1CE9499B1B7867F400");
+test_comp128v2("2F3D588F1FE8E4CA01533D4A0DD9B4DA", "141618BC5D4E72E62A9F7400");
+test_comp128v2("1B8A0B4D6916EF18BAD7CADCE39D2833", "AEF6463AB65B838A5109A800");
+test_comp128v2("B32247244EC86BEEFC52D7C2491E9D74", "116F80B9090964FD599D3800");
+test_comp128v2("3BE4339301C93DED261879486C6A8D90", "8E23D0F627E7802D1A3CD800");
+test_comp128v2("C903F42E92B38595CE04FD53910EA6A1", "7E92DE635B26DC6051E8F400");
+test_comp128v2("A24E8A73014E79FA74FBC2CF1CBAC711", "0989A5AB4FA9CBD9AD0D3C00");
+test_comp128v2("2F3F558FA77482A4CC9922AFFC7802BE", "281A9A26975E9C768A7E1C00");
+test_comp128v2("82910421BEFAACBAEBB5EB41DC83208C", "A2D604FA378CF8119DB73800");
+test_comp128v2("53E78DBF2B389F15A2371DCCEE1E1DA2", "8ACB8E30CDBF4AF3839FFC00");
+test_comp128v2("559E459FD9ECE082963014F6055E0E36", "436F9DDD7F7E58599A5ABC00");
+test_comp128v2("719BF029031FC8D8650BC2699D5DDD18", "A66649CF28F4FCEC3C4E4C00");
+test_comp128v2("723B50440DE3F461C4E5BB5BC9CCB5F0", "B8686043FB0F1413AA938400");
+test_comp128v2("17D769E91662028370034FEFD2876A25", "635E411815C51636EF944400");
+test_comp128v2("0C102DA3F7A14B3A85B2A92A31CA4789", "0EC89144BABEF0E7095C5C00");
+test_comp128v2("AADB189813213B480EC68B9678281753", "AB74FA76105F492560E98800");
+test_comp128v2("5919335F3F34EB77A0D13D8790E78DE2", "8B1EAD6A1613CB2D66A6E400");
+test_comp128v2("6822677E661136749615304BC7FE951A", "5C94BA4C4C4C6A1A15AB8800");
+test_comp128v2("2CC83DC6F20C2A7CF26E091238784A90", "9AFF51719A5284B6CD051400");
+test_comp128v2("5729A297D31DCA3C80C1AC10AC176B22", "D00E1485CBA3A95D55FE6C00");
+test_comp128v2("8C93C54A70BC96C53D439450A3FF9807", "FEC899718D29F53351630400");
+test_comp128v2("85CDF4DB93CC4C8317EB38D365154735", "091A1DD86B98DC9CC88E7C00");
+test_comp128v2("2ECDC19D1D190EE4E6AEF05FF23EEDE5", "5CBE8BB86ADDEF96A8CCB000");
+test_comp128v2("0797E696BB2890ED056F4EB0528AE0CA", "793D86F92A994DFB06BC1C00");
+test_comp128v2("C066293DCF36C84E6B3CFE96F94F9C47", "5F12425ECEF96D7AD1DE2800");
+test_comp128v2("BBF3B6F26357F2D1079ACE9DFDFC5ACF", "1BBE191A388CC485ACC73C00");
+test_comp128v2("B4A0038D686FBA95824576415B778DCC", "AC22616B710B0813F74BF400");
+test_comp128v2("23D7856727E8712982B14CF92F15BEA3", "C5FBA55A7DE5D2383803B400");
+test_comp128v2("56CA39A1C3CBFD2B69F2655FC24FE648", "C483786DD70F46392ECFF400");
+test_comp128v2("06EB61F4D242712C3DF57BEFD0CDEFE1", "3F1ACAC22225021770211C00");
+test_comp128v2("36C3122A765088E042535DD98BC9ED18", "4AFE30D76B2A655E030ECC00");
+test_comp128v2("DF71036C59630C04C024ACD193606F4E", "C69F93BC5CD672FA60646400");
+test_comp128v2("0A52F96B6B364526C5A69E166586D25A", "CCB7F20B61EBFAF3A43D1400");
+test_comp128v2("C945FFBA58D767D0D10D9F782CEE0187", "C9843051992470B4CE005400");
+test_comp128v2("FDFA26664DEC8A4924CB13A5FC20EE17", "6CD559CDDB082F8DA4352800");
+test_comp128v2("12A863FDE1C0EE9B6D16DE221CFCB61A", "F78ABDD98DCA48EF73190C00");
+test_comp128v2("3A5F7A1CB88C2C9956749106395F96F4", "34BC4920C153F06D3B7E3400");
+test_comp128v2("604BDD6E1FFA40CF8C6F96DFCDD62DA8", "4984353CD8F24EEF1B6D7400");
+test_comp128v2("9587947D970D63EBFE4AD39D0E82F512", "339EAC3E342374FC2A164C00");
+test_comp128v2("1A6CD41A12ADD4531D8296CECDB12374", "3790B825CC997DA4B7A7D000");
+test_comp128v2("D6E632FAEB35738451AD453137E9F3BE", "5EE75C98E3F881BE277A8400");
+test_comp128v2("DD3FDEFF3C7F70BD04683F6DB3418F41", "BD09AC2921A2DB430D86F000");
+test_comp128v2("527D3DC8958F7E48800A4061F1B4C52D", "616B6E288F8484D1C5FC3400");
+test_comp128v2("49C88A8C09113B1B20755F2BD890084F", "4939E9DE1A45020E61931C00");
+test_comp128v2("F8028EC02D6E7E00021452C58B0B60C7", "E5D8BED53BFDDC5D32820400");
+test_comp128v2("205E4C48735F32916A0E1D3F3A0B6B21", "4AD530D94EA8D498044B4800");
+test_comp128v2("B8690268A6F86560B3C5359C6BF6FA3A", "6A92D7E521805F27C5E67000");
+test_comp128v2("5ACCD297E16C479EF11A21BFE70358D7", "FCF7BD1B1EA29CF4373EA400");
+test_comp128v2("74B8193542AE198C23C6031F08FF43CA", "780DBFC6135777BDF9F79000");
+test_comp128v2("CA25D7D6F552A94C5481386366D1A0F5", "99547CBD65A09C3CA2985C00");
+test_comp128v2("DA5C2F5CF869E6D16ED05925CDD78840", "4934C178087623626F070C00");
+test_comp128v2("B1851E619BA5D0A36461F6267B6A9413", "90A284CA11E5A5AC86EFC400");
+test_comp128v2("994A371B63FE48129BCB11984A2604D9", "5BDF08835EEF4D01CBE41800");
+test_comp128v2("0AE26AB49E6158225D94BF39FDB29EBA", "83B81B517E7C54D578B5B400");
+test_comp128v2("E64B2E37042CB00C5C9624BA2EBB6DB1", "F059311F4B7EE022146C8400");
+test_comp128v2("FCD24B6C00C5FBAAD39224D54B3FE4D2", "C8B1E798A5299804F9F06C00");
+test_comp128v2("FEA2A9307DBD872BEA7C42B4517FF856", "FCDB2B1870F46D34F2BD9000");
+test_comp128v2("D6F8D8379339F4B9B6C6C7EA4941880D", "B02031965E6AAD7912746800");
+test_comp128v2("6C7D5314CD07485E80A9CBC3536E8E3C", "F625C41964CFF56A0CB92800");
+test_comp128v2("7B1B09636A93D1D6089F3E8C45939ECF", "AB411511CC23630BB1068C00");
+test_comp128v2("60BC3B66ACCB2FD8FBA2D180C345DDD4", "66ADE7E8DD5FD245FE67D000");
+test_comp128v2("080B4DA8017F1C8076BEAEC2ED4C23D7", "67219CE095584AB1F3CE0400");
+test_comp128v2("36B9E1DD94CE2C7D5C50B4F4782666D7", "837763889C34FFB59C0BF400");
+test_comp128v2("7426357487507712D1544AF62DDE03DD", "E272A3916D75F94A9D18E800");
+test_comp128v2("E3EC5110BF23B8292F7440D236070240", "F98D822F01565E3F776C1400");
+test_comp128v2("1E12B4E8AF0B527E971E7B0F1912E6AD", "8092FAAEF7EF58F4B96CE400");
+test_comp128v2("FF63EF8928F00762BD9204F407F224A2", "8954E660D5557692BF693400");
+test_comp128v2("E6063EE906F69B00C636C2FEAC781869", "56EB75B9916E5DE0192A5C00");
+test_comp128v2("967DD337ADAE9A73E570CDCA4BDF866E", "0A5806A9778A0B3E031BB800");
+test_comp128v2("98D1CA43D4C21509F98120B0D6A1E7DF", "4CC4B4C66ABD3A5DA0638400");
+test_comp128v2("1D97DF816F20FF7ADD1E41D01138B49F", "625867D3F8DC80B255FB2000");
+test_comp128v2("E3946EEF6DAFEB57B967823218D603C2", "9FBD7D5310778C193D99B400");
+test_comp128v2("8E81C1A706E1C873CF8AA371322021D3", "C588BF56F7CC23581225BC00");
+test_comp128v2("20DA7808951EF3A9429114C3462F5747", "30DF8359FE34CE5C0374F800");
+test_comp128v2("B0E6E1CA7B8C4E025636F5A66D09D29E", "D45B3366E8740A43367BC800");
+test_comp128v2("60003F3AD24A644CD2D69EE03C01EF0E", "DAE6302331046B94B6741800");
+test_comp128v2("A6E7C6E2615E1D7C356737AC52EE514F", "FE3A2765EAEAFC0F938D2C00");
+test_comp128v2("DB1A6886B5DC43DD77A0261E1AFF8B2F", "B98EF65CC4BA464524735400");
+test_comp128v2("C0A0C0D4B354E14F2ABF41F602630AA1", "18A96D6E34F8FD4798DA3800");
+test_comp128v2("62BE756646EB90390EC21E6D21BB587D", "10401EE31F4A5BF98EDA6000");
+test_comp128v2("7F2B44B17C9EC961778E1255E9B688A1", "C272B7FD9ACF088ADA573800");
+test_comp128v2("C433B7A9DD753EDE601E7FCA21334158", "3B189C41DDFE0D439C0F3400");
+test_comp128v2("5D998A557E253D40A32DA7CF97D5A29E", "EEC272A2BAD8F690B5F4CC00");
+test_comp128v2("8D1B821D9FCF2BE276D723A435F9954F", "85004EEC5849D04F018DF800");
+test_comp128v2("C8A5404B37F54719B284515CFB9B4001", "4AB5D01ABC448CF3105C6800");
+test_comp128v2("9D3B27999D28125B877274228906EE0D", "DA8C14CD5CFD377A8376BC00");
+test_comp128v2("E5F666FAE14359D65D2F6EB5EA45961E", "94AA2EB983B386BCF21B2800");
+test_comp128v2("06F16C45CE7ED4E6201646F0C750D419", "1593E4E1BCCEC056923B9C00");
+test_comp128v2("82FABF6D7B45CE4C64EB0C6E9DC502E8", "F6487E29D164CAC32D86D000");
+test_comp128v2("541F1AC3AFD74DC7C70D6575555AD55D", "86D04EC42CAE37F01ACF6000");
+test_comp128v2("C597908361D898A0413B7A66354A6065", "14AD14240E876852E6226800");
+test_comp128v2("200438F0979DB724420285D43B2179AD", "F293B889DABDE43C1BE6B400");
+test_comp128v2("739E0F37032ED78A0913D042A8C3FE4A", "8DD8DBC7F999094FD4F0E400");
+test_comp128v2("16A8AD7D1C5631CFE5F4CB9CB9ED9163", "6D3F95B914469F0ABBB81800");
+test_comp128v2("AC81B47EAB5649E55A9F6E0B93B4BF49", "2BA8B6AD2E1E2B4902330C00");
+test_comp128v2("6B0267728AD6B956D254EAD2B770FB37", "C03BE3BC733D51F61B1C7C00");
+test_comp128v2("10B1A550E224F719E76D98ACCC2C85D5", "7FC28C88085940FB0C555400");
+test_comp128v2("E71F7EBF5F6D8804D1C223EB722BB46C", "58742C27AD8676AF08918000");
+test_comp128v2("4C3F8FDDD8FCE4D20174F6286CDF71F1", "7CFD68608E450A2D7D20A000");
+test_comp128v2("99F18874776E15A839C2A3E7C321EDB3", "58B30EF52C693A4B40BB0000");
+test_comp128v2("8AC814B518EE9ED843E35E8EE9C25409", "C0FDDF957DE317A4FF92FC00");
+test_comp128v2("17768D68621DA8385EF1348B274F372C", "44E1FDBBAB1D9EC1E358C000");
+test_comp128v2("AB55D41FCAA07EC8E8C94315F698D793", "5A2F087594F2156AF1DE9800");
+test_comp128v2("6CB52163A5B7FFE27654B0310B572B6E", "98AD77BE4612570C68FD3C00");
+test_comp128v2("CAC07183EEB34F38E70334AB594FC570", "5927855548220C340D283800");
+test_comp128v2("71B14D3013D7651AB586A96FDB2C55C4", "CC9BF8358407E57A3B448800");
+test_comp128v2("6081353FC28741F50C7B103D6B2907C6", "AEB5F267FC32315C39DF4400");
+test_comp128v2("6AF53DD62899A5F9336C3A52898EB0CE", "9BA4DB7E121A278A11EAD800");
+test_comp128v2("2B746DC2022342A402ED432B27F6B243", "13305D58C682BFF823F3C400");
+test_comp128v2("B16EAB6CF2E07F8A3AD61D2DAC6496C6", "4B890108A901763F0ABB1000");
+test_comp128v2("20E2CEA085C2CF1B0C4706E4F8CE9196", "21EA802F554471BAE0D64400");
+test_comp128v2("D1CE68C2764772B1264B93A71E305D3A", "297C675B8A2A277866A7F800");
+test_comp128v2("504B4718D7CD40663A3FA48E87AD07EC", "ADAB984B10C1A3D0A14A1000");
+test_comp128v2("C964C6996F55F06AE5320FDE2406007E", "A023AD3226510F472CCE6000");
+test_comp128v2("BB308E478D79556474FA4E4B53FC151D", "5CD9540DC7AC8A3566D90C00");
+test_comp128v2("29EA1AC88BB26824AE83CF126990FD0A", "69E85D6AD0832BEF5629A000");
+test_comp128v2("873D1B21E6080852EC53F65086D30974", "0F17A7DC95E6E47C6ED51400");
+
+test_comp128v3("00000000000000000000000000000000", "34B4225BF16B96E118A85986");
+test_comp128v3("00102030405060708090A0B0C0D0E0F0", "A892A8EFD6D33E3650372F78");
+test_comp128v3("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", "F699F0BABA87114F0350BD8B");
+test_comp128v3("000102030405060708090A0B0C0D0E0F", "A5B4C7CA0514C4E1B25CBFED");
+test_comp128v3("C2FD8EB45A807D375CEC72D3599C1E04", "F123A4B0D526DA2AEB199FCC");
+test_comp128v3("059BD4242157FEE159683C03B1530CF1", "8CD58D5C05D24653C730F1B4");
+test_comp128v3("6A00543B7F4AA6F5938E3915F1A04F61", "9CB62587973B8079FFDDAA68");
+test_comp128v3("B022CB9F45B6F2E05986825EB60ED3A2", "DD465462764C701D8E07230B");
+test_comp128v3("9C36DFE0444A53EA8D64666EEF095829", "68DB77768CFA36F5D9584C2F");
+test_comp128v3("65EB5166053C36EBE4149CA8E032F85B", "8236AA79048BF9FD23F22CC4");
+test_comp128v3("FE7F96A0CA6743F4FB43725B65C98CEF", "C3D19C91C0BE1A8A80866991");
+test_comp128v3("CA93097AC1F7FAD6AB300291D7378320", "47D77CC1AAAFF848FD02EBB6");
+test_comp128v3("7ECCE6BCB6A960BE9F347FA4BAFF9806", "3F9CE85AFB1B11B747E41A1C");
+test_comp128v3("537CECFE605EF84CEC6AACC26748D8DB", "23AD4EFE3BBD5437ACD58FEC");
+test_comp128v3("77DA6AAB1D63954F7EB121F69939F087", "3782AA51C410DF352D5BA4C6");
+test_comp128v3("6E6989BE6CEE7154543770AE80B1EF0D", "E3EA331104D11B0340EF41C5");
+test_comp128v3("FA3C9311948C43A88A81F9F151218628", "DCAA5F8ABAE6FD1FE3D994A9");
+test_comp128v3("CBAB8FBD3E6268579024BBE465A085AB", "7A08AD916948AC88F285F679");
+test_comp128v3("D9E9545BBAB220B79C11B4268E4AF22E", "76F8883C06A19A0F3AA0FD70");
+test_comp128v3("1F0260A9AE9FEE9D4463888C7E2B58DB", "08EE26FD13A86CD1AAD5B368");
+test_comp128v3("9A3451F2C657E4BEDC052AC7E42A731E", "A8279A6015E5935099372857");
+test_comp128v3("F1B858F9D05C34D05BD5D0483B037071", "F31AD0315CC5E86B76B97ECD");
+test_comp128v3("67E29E6639A94DE8CF774F21D5FCD211", "6ACFB2184DD373148D5D582C");
+test_comp128v3("66287B28DA9E5A4A3674842A416580E3", "0EAEDE610EB9744B2B95913A");
+test_comp128v3("06CB6DE4CF812D00C494C2CC088D7FA8", "D41C2FB8F696C84D882DCF6E");
+test_comp128v3("06A7F31DE8BC76B51A3D43968930B60C", "9CEA8DC24E04224753B9D218");
+test_comp128v3("29D36234576AD8395163D1CC9826167C", "16D467073F5958EA424A09F5");
+test_comp128v3("0A41667DE9BA1AC860500C4ECB359EE3", "22AC7CEFE26F3A4CB98E4B23");
+test_comp128v3("15999866101B177430FE614EB17E76D9", "A1332C1FCE97402B4A743D8F");
+test_comp128v3("C02AB81126B1990F77F810B82B797475", "3CA34AC67EAAB7048DEC15B3");
+test_comp128v3("47061308D6D2A8B4DAEE2AC7A44D6842", "0282A3DF9C9A981A22572231");
+test_comp128v3("8BB120BF99F7F51DBF66B7CBEF239874", "3B915FC6905D571E0244A15B");
+test_comp128v3("2BA369767520B8C1E2CA69166546D1CF", "D9FA973CBA46C79E08993ED8");
+test_comp128v3("E867952D2484B31C4DE74554B8CFD8DA", "D2C4A14D3FF5550E776E783C");
+test_comp128v3("51A70B24DB7DFC4DABC254C6CD9BA81D", "FF770276E357757BF17B6A03");
+test_comp128v3("D79459E2FE6E8E17510C4649E5EBBD43", "DD587C63DA11D7A39B0E51AB");
+test_comp128v3("992511517261548767BC3A5EA0269459", "3123ADD2EBF5C4D7B3F4197C");
+test_comp128v3("38112A87B58DB889B06F70A35B2BB039", "EA4365FEED09E1A34304A763");
+test_comp128v3("4DC4F985E69146A65C0A853EF5C307D6", "57B9BE9FB46D951171CF1DBB");
+test_comp128v3("F08DFB812F799107F8A817C6A93504B5", "5F67F38F8F729A1A34468A50");
+test_comp128v3("2E7AD4225A84CAF9662B79D8AA4EC60B", "9CE2261C86FEC23836F8C25C");
+test_comp128v3("904503A6A4B61660F24330E74C49183C", "8D434E4F0B2518ABAF9C92FF");
+test_comp128v3("FC0B25783A74FE16F97AF6EEC84799C7", "E4869E47D43D385ADD6FED7B");
+test_comp128v3("B351F09F9FC46188103A266FA50BC54F", "DA4E687A478A4C3EB77EA5EA");
+test_comp128v3("453DE3EDBBC72BC9C65335B47536EB38", "2CC578A40472AD4C336D3880");
+test_comp128v3("250133698D0068AAD95A2E0FA356FE47", "F7BDAD3677641DC625C40A3A");
+test_comp128v3("482A117B4A39F9DD842E67F376E4AC8A", "C7C280868DFE252421111382");
+test_comp128v3("B7B435E33F800DEC7881A5AA6DC7795B", "68ECFEF6FBCE86F0145B2710");
+test_comp128v3("5528C93204329236879A8D0EB66EEDF6", "5A3B116AD3A228DF0C148E35");
+test_comp128v3("2BD00A4ABA3837E76379B9C0257CE95B", "DBAE1F2F91E090C7F250A576");
+test_comp128v3("897FAEE5AD4A10D443E1E581E1FADD2A", "5E0FAC279B3DB617F1D79E74");
+test_comp128v3("50C13D10436296F6511294F0659346B4", "6774D9611D81D2B28EF62CB8");
+test_comp128v3("42F5D66DDC05442E1B394FC346AFB794", "AE323C87CC24BB8816555868");
+test_comp128v3("23978478FFFB8DFFA9160898AA04E67B", "F9E28ACDC3FEF9C732506146");
+test_comp128v3("0C736BC43FA36DDE8B66F9E5F5F38468", "836E479A4C3F9060A5048129");
+test_comp128v3("3D0F54C3DF060F76A908CE871B5A15CA", "2C8672011E95771FB6A01EC8");
+test_comp128v3("F300DF8463DCCB4D8222A7021B005E92", "19243A7269EB1F75402A01DC");
+test_comp128v3("7177B3EC6658F41C7245E773138A0F8E", "3790D6633E9FCB095F1D823B");
+test_comp128v3("1A2FE0B12CB713888781DCE0E90B4776", "CB65E9845237344F55D7AE1A");
+test_comp128v3("1BCB63AF37AC2DF53B077E413B588001", "00DB17E0FE288237A333C4A9");
+test_comp128v3("F0A650FE37B236732D4B889CA6A6C835", "7FC46A51EC2B7BE0C66E1A6F");
+test_comp128v3("68B09A32A5459C6F6E5472109FC164E1", "C8F1AF34F21E61D9CD2E6839");
+test_comp128v3("1B57DD3CCEFE0F33E04EF164B25A124E", "A8486968444DAFB51C552932");
+test_comp128v3("3CA34C720BEB4E2FEFEA6D04BA4FD876", "2B1C5B57D1249DACE613F90D");
+test_comp128v3("CAF61E2E3773AC8891E12638871595C9", "4E03646AB273D7835417418A");
+test_comp128v3("B1433F3F651E0E478A12AD2163681E48", "0204AEAE7AA03ED2B87985A6");
+test_comp128v3("907DB9ADC521BEAA511AE36FE1A8084F", "96E8BC8BFA3054AE764A8BC2");
+test_comp128v3("BBD2E95BE518C72529FC67918EF9AC4C", "9461716327C1CA6ECD8E3DD5");
+test_comp128v3("5EFA59CB1257BCEBD7C52842485B1A7C", "FA69B871271C6D3BBE9C2C0F");
+test_comp128v3("1B170AF028368F19F26CBEE3EA04B69C", "9801411E3847223CF3F6F5DF");
+test_comp128v3("8A03489DB2DA7957AC574307457C539F", "18265685F3F9FDE17DF568E9");
+test_comp128v3("9DE46F89BE1AEEE7E08E6E6C96136B4B", "948500624AA36F84F8A9144D");
+test_comp128v3("3502F3348EF421C546A22C60F73D82BB", "3EB807C5B084B783A6ABEAA4");
+test_comp128v3("266F0F71417652FDA262E209ABA9813A", "1AD344CCB780727F29F539A2");
+test_comp128v3("F89ED91B773DB362E3B535ADE806309E", "6154B2555DAA2536747C8C00");
+test_comp128v3("95898AC8F59AE30AE6C131F433609984", "F4231FEE2955D325C6358E8E");
+test_comp128v3("FCF177BED3855914164948383A7BFCD3", "B013BDAFD7B01F6D12635E71");
+test_comp128v3("A41287144BE0462B64F3BF9FC79AFA28", "11FF56DE220314FC01D2F427");
+test_comp128v3("C37A6607EB0CC90AAE0E805987BA2BFF", "96AA9F8F1B82C816479F6F30");
+test_comp128v3("B30688EDF5883129A3EEE07EFBD716CF", "2484F97D0E207448CFFCCABC");
+test_comp128v3("F49EC19D30C40E62ED346BB1E973B3C5", "7F3DB7AD4F1E679D1C1BA290");
+test_comp128v3("AA60565959700AFA4E24383A7852F98E", "40CA139963F8B07D82F93631");
+test_comp128v3("72673BD9D3ECF3BC9948B6F96D44000B", "A29BDBCBAA7C7DFB9ADF7DDB");
+test_comp128v3("F764D588E2AF04E183D9DC2008E54159", "892163F30BD023B629FEEBFC");
+test_comp128v3("6225365E542C73635002C5D0F49D79E8", "9ABE4CC8526046189A15E8DE");
+test_comp128v3("578FCABE430EB1F154DB178035C87340", "A08DCD277DAFEDDE2CF34B7F");
+test_comp128v3("90D2277F8E73308C9FF488C22C64A371", "BDC38FC4489A714E45D465AD");
+test_comp128v3("CCF9D01093489E9322A92CC5B45EDAF4", "524D9D6323724755C3A58301");
+test_comp128v3("DC7AA07884338A1CA74A149C920B7113", "804DF3B4AF8F2EC1EFD23E30");
+test_comp128v3("B49C7B29E5DC67EE200FC77742DDEE5E", "5A6B21FD6EF3D215C82D7033");
+test_comp128v3("943410D203597F271EB914B045471F9A", "243BAB53856F7401082F722B");
+test_comp128v3("A66F889E48C971C19BB1ACE8BA14C7D1", "53BC19A4C99196271B6DDCDC");
+test_comp128v3("2C1987A822D55252A53F4C5165A9A6E0", "695CA9F5FE4FB59944E42198");
+test_comp128v3("6E2A72A29D3E40CF17720A2EB2729F54", "277189F03E8DCE092840239B");
+test_comp128v3("5756340ED21CCF06BD9CAB1B1B6B1F83", "F514DEB77B49396051473F97");
+test_comp128v3("8F4D4E3BD46C79E859EA6C4B1707115A", "FA8DFF24FDDC28232DC7A86F");
+test_comp128v3("6133F53D525646BAEE9303FD23A6A957", "4A1797DFA2F0382CE2C8A691");
+test_comp128v3("E4079E18FBB564363AD12F51E06CE783", "367F320EA19755B931A57645");
+test_comp128v3("7DE5A96E6249F511894B554941711A59", "B9D48BA0539A31A9532462A8");
+test_comp128v3("AFD50CEBA82EC1FD6EE45FF2ABE23BBE", "3A1327E46668F8A9C4F703B0");
+test_comp128v3("0106CFA6F81EAD4369327F7064B87D16", "3F432307ED0F3C057C5F2712");
+test_comp128v3("CE3DB3EC969DAA637C83C99083F1F8A0", "7CED22DC3DC07E253C978C97");
+test_comp128v3("C3392F85F96A21B777F33EFD11A832A9", "247BF07ADD6941713F40A327");
+test_comp128v3("5A815EC556143C56EA7CB787305F8EC8", "BFF611BF4369FB38215FAF6A");
+test_comp128v3("49ABB28EBD9106B5F204CC1AA2EEAE97", "0A9E54DD9C485068CCFD153F");
+test_comp128v3("DEACE7DEE61E242671C0EF0E441C1B6B", "B6FD390C7404DAD7D4359416");
+test_comp128v3("9A327503C873F7679DBC3271382093C7", "189B498F1D693458BD79489C");
+test_comp128v3("6546D5569FDAA7E85217D87DC34C7E0C", "16FE55376BD68D78B6161E58");
+test_comp128v3("0B695FEA192283985799C9CBD614C37A", "8D71BFD1C8A1559770C77689");
+test_comp128v3("11E2A6E032B79DC02CCA50CDF257FEF1", "C8E97ED1703AE1CA0CFD14B4");
+test_comp128v3("15C788FB019580F2EAEC04B3F074D96F", "F83FCEA965FE9D0A141EE058");
+test_comp128v3("24463A9F5279C2F684EB2F17B9C0B793", "10E3C959293B21D9B4293BBC");
+test_comp128v3("A5C0D212FD189818BED2B980CD771710", "21777B0F52239D696F7BEE2F");
+test_comp128v3("6B38A49118E0A121DF29B8781E71C89F", "F922FE3B5C9A2826818B51E0");
+test_comp128v3("100F07B6881EA8482EEAB29E695630D2", "A70F52D10C35A99831518DD0");
+test_comp128v3("5478D20CB06C9D9EE3E5B159BAE6EFBC", "CBA83BF92463F9B14A6882AA");
+test_comp128v3("2B1EAEED654AE3FDDC35BAA926D45B0F", "B2AE2D718F554D6855936C83");
+test_comp128v3("827512AB9C1C73CCB8AE1A292233C563", "0B512886B3CED2AF94A54153");
+test_comp128v3("312063D0754C824DA712B64D2A6B33A2", "8C3C7D5EAE0CC1BC2141AEF1");
+test_comp128v3("C41B044B098F5D6773229480C84D66EF", "36A53378F71AA1014DDDE622");
+test_comp128v3("06CA7A392F7FB360BE218ABE86020D80", "0D7C440E7D4D7C36077390E9");
+test_comp128v3("E8F4DAFA1CF388ED27662B6F234BF3B2", "D755DE9D6A83D78A02EEBD2D");
+test_comp128v3("7451425964131EA8FDEEDC3D51ECCF9E", "4FAB527C28B1F4BDB34158FC");
+test_comp128v3("BA511CCBC0A07FFC45233241E1224340", "13683A5A03D2A1927F0ACDD8");
+test_comp128v3("8CB04EA4DB020D5D4EE3812B38AB84CB", "26648E563AB2075E2B5C7281");
+test_comp128v3("04A2631D325386F77579CDEAA967C37A", "C1DD35C987CA7918F4044197");
+test_comp128v3("A5BE4CC4A516147408183FDEE9DA1D65", "696A0827A2FFA3C73A10404C");
+test_comp128v3("36C43B5BCE7BECE6FB2DE03F4BE709E7", "FFD099DE6A2C089BED7D35D2");
+test_comp128v3("35EA9D9C382CB460467F8B8D1145917F", "40D9401342FE480A8A009E2E");
+test_comp128v3("E00D2EB361732C08E2C3125DB7D2E3F2", "491710E39159DBC5ADE0DBAB");
+test_comp128v3("F587457CAEF8E5BAFBC129641BF8EC69", "CE15ACA01CD0077FDAA76A87");
+test_comp128v3("BFE148C7255EAADCE3753A7CB3E1FDB2", "46BF49FEB914AB4ED667E4E0");
+test_comp128v3("A8452A0CF7A80F80C4D4EB5C7E7969DC", "C04AB5C52A9B1C5964B0B86B");
+test_comp128v3("BF289490E673C0B56DB6E768B3CC0A48", "856BD7044AF5997C29FC5138");
+test_comp128v3("1DA9BF8EABE527222D4B7301F5F6E14A", "3D61A9F9DB5C452DD7C26F95");
+test_comp128v3("036DBC1FC7537E77FA4CBDF33DFF927F", "44CC56A1DC3A5408286C3EBF");
+test_comp128v3("A26A8816BC2735427354CD88742487B6", "BBCCC740C5571A4653805B58");
+test_comp128v3("FB57CEE47FB84A4CF354FFB02BD7F27E", "CC74DB56925160F24B998789");
+test_comp128v3("6B7D14B36BEFA7AFD23BED5C89274817", "7FE28DAB2C64E290FE8D8CD1");
+test_comp128v3("783B2B4B5D240551B0D1C5073C86EAE3", "BF879E67B031772A214137FC");
+test_comp128v3("A5C5D0E238A3C63E36ABE8CBB8D3A755", "C637492282DDADF2344C5F12");
+test_comp128v3("F60AFBED2788482DCE9012B308F91018", "A6D07EDAD84C22F55D578795");
+test_comp128v3("FF29BAAE83F0D4BDAEDF57439B240E2E", "C88A6075AE55B48C41413694");
+test_comp128v3("BD2EE48803F736F741F7BC539143B6B7", "6AF648295D9D5BB30994F0DF");
+test_comp128v3("8759E7150969DE74EA60E6DC6B0605FE", "DCECE445325ADB93295C208C");
+test_comp128v3("E8A3873E185A8130171809B1C670E466", "A52DC25C7BA9A8B5D35A3447");
+test_comp128v3("CFE9F56C387AF2EECB6C16BD73100E84", "9F0AAF87BBE52A0D82B0F79C");
+test_comp128v3("504D313E64F204B950E1FCBA766E6A10", "2A6E346A487840A9FDC91C91");
+test_comp128v3("BB973244B0AB827B73463C26EABEDFF4", "CAA52660E1D03128283903BB");
+test_comp128v3("099D40CC50BECB4943D5417116A02A43", "184B3CD556245A75AC3B2E95");
+test_comp128v3("6F936FB2AEF98A81E78E4D190DF9D876", "591FF4491319AE943B7E3F5A");
+test_comp128v3("ED889EE0177981FB3054558A3D93F5D9", "C3A3682BE186AC971EAE5B96");
+test_comp128v3("D610FF2C9B5E26A58C3852B1CF968675", "CAA5295895B7A4167F1FAE69");
+test_comp128v3("60608D5017ADBEC3DCEC4F36DC2CCADB", "3850062836D6D9C342A5754F");
+test_comp128v3("1607142E96C20A6D55887D473E1C1ABA", "57B3B068E892BCC25B81BAD0");
+test_comp128v3("0173C6DB9751FC3246158C2F1082842F", "D24D9DE4DFF90F1862A202AB");
+test_comp128v3("15A4DFEECD687B26B2398404FE651E26", "124DB27D43E78C9E1F22329B");
+test_comp128v3("8C04FCE7248101CA8434190F8F3F18E7", "DEDA9836E027014878678B27");
+test_comp128v3("A1F308C74C95344CDA356907739190DC", "34E78710601E8D992F9AF14F");
+test_comp128v3("6CB50D780B92072B37F757ED6E63B0C6", "A2AA5D1A550999067BB69BA3");
+test_comp128v3("5E2BFEC3FEE9ACE4CBF6B5441346F5DA", "18617E4E20754E060463F495");
+test_comp128v3("B28D0F02AFCB8CC20235898B355CF3A1", "E1A687503828B8AF3C8EC33A");
+test_comp128v3("E7A8045111133E9BD905248B3E3D9E8A", "98B3E202A3A5A3FA76358768");
+test_comp128v3("CD33375D0823C4C5B6CEB0F6B4E39F8D", "92FB4EB73E56C32476604CDB");
+test_comp128v3("4D8318B9642BAE26C791643DF0F53080", "BE8371F5FB7CEEA806AA292C");
+test_comp128v3("9DABE054F9D33BCE9795748681EE640C", "CDEBCCD1A2CA52EE3907F9AB");
+test_comp128v3("16AE48F67D14618AD12F93B7D5E3A74B", "29D03897577684C1CC2C1A60");
+test_comp128v3("1D544B9110BAE6EBB3FB9BF625DC725D", "4309E6F048FF37D9D21E7EDC");
+test_comp128v3("563E947E114D9A470A52F05745B59B58", "9EAE363902AD89A2EA744C7B");
+test_comp128v3("0804E1F159B228C2B549965B0628B600", "7874B39866D29960E6A4EA9E");
+test_comp128v3("AED48B489D0D2C9E81AC8D5E6A15084A", "45FAA83D1F868D1E1509A444");
+test_comp128v3("FACBAF33A3409556CD177817673BBE7E", "396965C351C7668CD26E734C");
+test_comp128v3("A9919EFE9BEEC2374E74FCA514442152", "9116234214E63C5C488B384B");
+test_comp128v3("870EDD564454CB858A51E67D360D217E", "6A159AF76162DABBD6D0DF63");
+test_comp128v3("E66FBF9271A50B84A5D7AB53E7373176", "30ACE630BED634AF6D1DD338");
+test_comp128v3("1B561ED7F3EEC916D48BE068611A49FB", "47AE71282F48B4F5892F49F7");
+test_comp128v3("400472731C0366CF0BE540DBFA745BD3", "12EFAB1FA8A873483C53F0CA");
+test_comp128v3("DAE6DFAD532BABC40BB959C970D8814B", "40ECC9C908605D2AD7C04044");
+test_comp128v3("61F1FDE5DA854053A07508662FD5198B", "56DE93DEBF9302DA18649DE2");
+test_comp128v3("BFF8B0D12F533A3E3C9C46BB8B73D4E3", "8DB85E1EC6AF6F2720F44165");
+test_comp128v3("172A3E21168D80ECFAD1E4E122C0B1A9", "60CD03545AA93CF3EE8B9A5E");
+test_comp128v3("F304D41493FEC89AECE06C355269D24F", "BDA5728AF5174BFE8A1DE7A6");
+test_comp128v3("7223C3B61097610DB9D86BE0E5C7425A", "EF3B366F60DB819EA4CE3CC8");
+test_comp128v3("73D79A145D0F20AACCFCE879398A14D9", "6B90D4161C02C37583E93EC4");
+test_comp128v3("D2A3297B864EA9FABB396211FB8D7DC5", "43BC011FDDB44128F061841D");
+test_comp128v3("FBF84C03307C92DBF77E819748CA693A", "562EFBF4DB6078A949AFF824");
+test_comp128v3("70D8437A9120D5F1EECC400CB8F009F7", "A3585AC211D316CA9BAF8349");
+test_comp128v3("AD70A2CFA9289909520AC3E442066E95", "4DE9364411A3D22E18E05EA9");
+test_comp128v3("200DF7FF1CA3C90B9CE7BA3E1622C243", "87C54F689FAF75861A864E36");
+test_comp128v3("3558987AA0E60869CCD2AAB41000171D", "F88E5005DDA6A32A86B46323");
+test_comp128v3("76C03334BEECF8488345EFE09AFEBA8F", "7A8B21E14808D8FDE12DEC82");
+test_comp128v3("6C34C7E0F992FFD107CB3C21AFD8FCF2", "7223C34459BE33199E397C97");
+test_comp128v3("F567B76CC9075EADFD5B1F5BB995DAD8", "3A4D7CAE9189475274EB3A26");
+test_comp128v3("FE553460124B7240AD5927F199968901", "66628D72D37687E345B5B80A");
+test_comp128v3("20A361BE827F77F8752324D0DF0191B7", "7BF2B29BD955EE9DF8A0A462");
+test_comp128v3("89E668A5719753E733E483449D26FC35", "59E64E6FFA910A75BA6BBA60");
+test_comp128v3("EC23E756AD6C5A8EB93FE43FD1743407", "296AD8FCB4BE13EB61403D22");
+test_comp128v3("4C78D75FAC41A829171137A924C008FD", "B5B12D7F28E1C3CF0BBA182B");
+test_comp128v3("1582B13A55A441793F24364F4E79D70A", "4FD6AA11A62B3DAEE7AD9B01");
+test_comp128v3("F83F6CF2845E6049268A98937165CF46", "90C14A957BDC4877443E00E8");
+test_comp128v3("89A39A6F6D0EFC34FB44B9D94E1FF998", "B42B60ABBBC80A57030893E0");
+test_comp128v3("506069010FBBD8FB9B621E1E2499CFDB", "E143B413238339E5F1691BA7");
+test_comp128v3("F05CDF287428D1F8A82F8D2B90AD2D45", "97F6CA366943F4B6CE9FF71B");
+test_comp128v3("250C4E224C7EEED75B5C47E9B281F038", "22468D1F2D1F8BF1D39859FA");
+test_comp128v3("D8C1F4CEDF1F26B67CE6AED5CF27346B", "652F8F8149F1819CA8C863CA");
+test_comp128v3("821DCF113144A74A0696107A511BDA50", "3D8BB5E6B9C0F05E46D96D75");
+test_comp128v3("21BB340C501240AC021FFAE616ADA466", "876909CD1586AC2DF5FC7AE6");
+test_comp128v3("F877A1C9FD4DA1F3E375314677BD07CD", "F373090EBB599E4E9EF9F429");
+test_comp128v3("26845DAB23924FD243CE4BA118AFC18F", "039F20C260E2A343D36182FF");
+test_comp128v3("0C74932F7693F4D4F7E0418E41879F5B", "B7C468AD4CD5728DC6565CFA");
+test_comp128v3("9AF335A2CC31464188BD38CF75937FA2", "1D1A99E64812A75CEF4596A9");
+test_comp128v3("A9F5E25ECAA22CC54A2637CB8DC01FFF", "A756214C3895B523FB63A378");
+test_comp128v3("42FB25801DC657140C86C1C7F18F2F01", "590D9B13514090C19B0000BB");
+test_comp128v3("CFA06688034DC8F1A474C5CB230FF52B", "5937F4916B9D698E3FABE3DE");
+test_comp128v3("C711B7789802A2E87BD9C892ADF37666", "B885298A5DBA44735E11AC17");
+test_comp128v3("0754A2EB8464B56CD205F6956C88869D", "CE314473BF4B1E1B6C7BF179");
+test_comp128v3("4EF0E8BE04D929C3AF6BF71852A72A30", "E14518550A295F9866046EFE");
+test_comp128v3("E845124E430E41B9F7AAD910F93DC6C8", "B478A5A1128ABBE224610BC3");
+test_comp128v3("7FB474511BD214140C90B521798743A9", "E8BE27301A6EF0E481A68DDC");
+test_comp128v3("C727D9EFB0A70769934515C95015E3FD", "C33D3FBA7B6B71F7F5B1E18E");
+test_comp128v3("64ED08124194B3590CAF7263A77E688E", "58FB6C2A5678A5FE49C6DF04");
+test_comp128v3("3384D1E460CDBA2E9306042D35C2DAF8", "53249E60E0137005D6C0582F");
+test_comp128v3("4E4E2DAA21826A569BEB3E89C3F75954", "0B51B269D2EF17CC2AC97F8C");
+test_comp128v3("7783A5B5BBCCF29C2AD09070882EDDAA", "F0365CC0D5656AB7C9EEC1D0");
+test_comp128v3("362BC8026D00F70FAC9406ED186655D4", "261C2E9B772917B953719AFC");
+test_comp128v3("DA0E8368EEE2F2946AB1D284CFB58D75", "2AFF64A0A7796A645F8F6569");
+test_comp128v3("1C3F461143F2E728E463F6AA04835328", "98F8FB6C03A8F04E5DA6BD80");
+test_comp128v3("1BFD760F78B82698E764E2F009E83A10", "ADB4E618176A154B4077D28B");
+test_comp128v3("BD4833A790171E25A3FBB40DFCA805CD", "BCA4151338D53087CE12FEA2");
+test_comp128v3("012135788F5DE698BA7865313D838D1F", "B6E7203A49F125E0EF781021");
+test_comp128v3("CE3713587AD50A75828DBD3B27C4227E", "F1E1EC13C4DD8F300801DFA0");
+test_comp128v3("8CA1F5693F9485DA47665289F9B7994C", "820A5683642DC787C4E86A46");
+test_comp128v3("412A89798D2ACDFFE18E5C1E4D7316A7", "D93057561BBC893843682759");
+test_comp128v3("00CD5CE9424EC374FC60FB76B70EECBF", "88A74D19F682E1A255932C53");
+test_comp128v3("038994C83ADEB2F74D8C8839F53437F0", "A3F15A3800700FBF4036A9B6");
+test_comp128v3("5378C9DF92AAF716A3E3479FC93F9B6B", "A1FA256354C249210CE3F4A6");
+test_comp128v3("3201667073288CAACF46F3BEBAE0367A", "345D24DCF43872214332792E");
+test_comp128v3("7C88491C3A4AF5934C112299476F96F2", "DDA8299BAFAE19127326C0E4");
+test_comp128v3("A09EA9002485129676578DBC2D29970E", "19E2856AA1822D8C382BFCE6");
+test_comp128v3("0249D8409D94C899CB3211101F44E706", "34F666DF84C3F4861F031B70");
+test_comp128v3("393735BBB4F295F78875118F2282FEFD", "1172696A8F3AD17FF4CDC32D");
+test_comp128v3("880A34A01DB11B02983984409F474598", "78E946DE142861000EA71378");
+test_comp128v3("8D2D885D4E8D0FEDF57329B9CA684481", "5C839ED7586932AF9267D4EE");
+test_comp128v3("D9A319465292440E4EC40AD4311412BD", "34C4833EAB737BB515DC3E29");
+test_comp128v3("03928DA8EE9E6EF58F8BDD25383BD746", "FBD0B65369592420F4AC13E7");
+test_comp128v3("871B76BCCE398DA305C05583328F3D0B", "10070DBD7C735D468E99FEFC");
+test_comp128v3("2D8329DFF082425E4865ED82BEB77D2B", "6891E87151FABC787888D502");
+test_comp128v3("1AD6B061F1E920431D52B7C4D7A6814A", "1ABA71E6777298078DC34E9A");
+test_comp128v3("6A3113748345C8D03408EC03C67AA757", "C073219B699FF4EFE6BD7F20");
+test_comp128v3("E78DEA79071AE8EBB147A5BA7530F6C2", "7F90BBB9710C26C21B7B306D");
+test_comp128v3("10A9BD1DF9BC3D57CE9878D0AFA3171C", "8BA97E65B5C543E81A0968E9");
+test_comp128v3("691DA2346C6D0FDB814C07F9A243DF31", "14331E4947AD140A7C1A6ECB");
+test_comp128v3("CE6961F7424C872568BB6FFA0D7C00EA", "05543EA7314FB4A0012243D9");
+test_comp128v3("BEF85F199B780AEC2D7E75FECD14F54D", "DBED42B3388D1DCB8FCCE224");
+test_comp128v3("B08AF472657A3742598FB1BC3E3DC702", "776AE1440D3ECC1771317076");
+test_comp128v3("1F585700F880CE42F2C10AA2B2D9F743", "CB2B3444973841C5300DC71B");
+test_comp128v3("25E7C4BF79991617715EA342FDD16E9F", "A4360B1247A7112B4525966F");
+test_comp128v3("EE3964F72F1F85062AF2AE995B43A511", "672886691D327820EA6639D6");
+test_comp128v3("0F4DA216B41A2ED1777CBA97B4674B1B", "B4A8EA97BED0613AF1C51AB8");
+test_comp128v3("66A36F7EC04C45F3948403E381E3D5AA", "9782454E51F13175CE23C4C6");
+test_comp128v3("E88D31F0EB83D24F7D26371129763FBC", "18DB2B166C64F39868EE8D97");
+test_comp128v3("8C13DE138071D1F51FCB8D6FE388E038", "662291FFC942AF9D67AECE01");
+test_comp128v3("F05DCF03504184FDA2616467DF5795A0", "BD52678F949A9FB2B389E5E2");
+test_comp128v3("4F4F788BEC2EE583ACF059B0ADE014CC", "747EAF9274A438F5AC993B1A");
+test_comp128v3("C37A8A7C38765AC31CDA16786D732F1E", "D3411AE9A8133D3577EB52E0");
+test_comp128v3("E4B2DC6D7322CC108231C199330860B1", "0B8183CDB4774373E772B3AB");
+test_comp128v3("642BA8B13B3A34684C6D526A5FD2D752", "902123CAFC2DCF346D63151B");
+test_comp128v3("EDB994505213703314C42A325D55A40C", "83D68942220B5A33CD61FB1F");
+test_comp128v3("4D1399046DA2D653405F1F1940E875C8", "4750475855BE7402E5D1C5C1");
+test_comp128v3("5C435B4BC5E2F9651ECE8EE13D6E25A2", "D8876ABEFACB10BC3AC52E34");
+test_comp128v3("8D9A5A7C9CBA7A07DCFAEA0E4DAB2725", "C58EB014A932C3116E65DE5D");
+test_comp128v3("09A2B5AECF349CB2D56B7A39872E4163", "C1FC34A7A8D16531914737B4");
+test_comp128v3("28EC2B7795CD5FD29D0D88A33D0E107C", "C4254A6DC983AC85BFDCC948");
+test_comp128v3("3BD04EB44E9025675CEEA1EE80A4EFD6", "CD3F1B6EA3FDD0DE0EC87DC2");
+test_comp128v3("B8FE9194D8EDD327E9D5EC30E09CE619", "C2D257CA005B12DAB1C57E99");
+test_comp128v3("9FF0A2CE81526677BECE7093E03F40B7", "F639DA208C14F5D5E9B9155B");
+test_comp128v3("D8523C03A2DE75F6421D0BC91F02359C", "4E3BD1349917A5406A619CF1");
+test_comp128v3("860466FE29D625755A732EF72620BF12", "DB53D349D3D90BFD6C7B5097");
+test_comp128v3("96DCD22792D5381A5B33392650D8FE83", "64C9D371D87E92B9BAFF2BFD");
+test_comp128v3("4482BCC96F8D8E5FD6EE2A3A302316C2", "15D4F790CE455848506F6917");
+test_comp128v3("A53C321889AD33DE74846729AD0482B5", "6819059E37B8BCB2CD3BB056");
+test_comp128v3("CB6FBE7ACE4F1F336B7535F43CE3FCE3", "36FEB6CC91753307137675E5");
+test_comp128v3("32323174AE66387A960E21E3E48A36C2", "7941EB9CFAAF2FCF2D9D4F9D");
+test_comp128v3("A2F01BB704E0A56C51D985BC170C2516", "2DBFDD6D224B73B8E3BA0F93");
+test_comp128v3("B2FD8D3C4135A5F53C9E9CB2E857C3B0", "783971383699EAAB8A969788");
+test_comp128v3("FBFE997F54C815A9769C576DC5557918", "A6EFB070C41375FA9077AD0B");
+test_comp128v3("A04DE27D214F2BAE0AED7427D2D57228", "74A3F90EF7E7E5F9535ACB23");
+test_comp128v3("6E47EF035F98F3D57BC9C1CB574D6799", "FCF439F7297B000610E5BC95");
+test_comp128v3("9F7C7310B4AE3FBEA22077FE53884CD4", "D2D20CA60E5D657DF4AC1A57");
+test_comp128v3("2B5456E3EDE3A798519D70DA24FDC14E", "8786A30EB8DFDE39EF411441");
+test_comp128v3("3EB8F29B8FFCE34CFE924A4C8B412BEB", "FBF694C68239868881135AB5");
+test_comp128v3("9112F7C42E8F86ADC612FFEF62BCF031", "A9A0EC605E0B7D959D94F3C9");
+test_comp128v3("3B9E8C729F6BD2A647103C87B50084FF", "C7C6B0CA4CF9067D70D50450");
+test_comp128v3("721720697921EEF72389D70412DC9BD2", "2E3A7C1632E8038E1DF4710D");
+test_comp128v3("F4B192A4752141D528FDFE57403D1D29", "7EC20B5FFD6D4F380EED6885");
+test_comp128v3("96ABB2AD544F3B40B2302317A00AE6C9", "3AACD18243723B98834DE29E");
+test_comp128v3("475BC853DB0993F15E4DDA017849EAA3", "E356B15F48DE8C2A841CF3DF");
+test_comp128v3("DB6E877FDF36CD13D291111A2A52706A", "20685B9CA28B27D1B267808B");
+test_comp128v3("AF844AFF605D6CA75D32C8D76911FA5F", "05FAD3B3B7DF158D73F68D46");
+test_comp128v3("B7BD6D23A35ADAA7A24698768989CCBB", "2D4B6CE203755ED6DE54D1BD");
+test_comp128v3("F22358724D39699DC5F3CE252E5CB388", "1362F31DED7766967CDF75FD");
+test_comp128v3("8DEED8937A8635D058E1D3B2937C1F14", "FED61D4167F6721F3D42A96A");
+test_comp128v3("C8F471A85DF24F8694B66679B8F3AA05", "0C53F26A0AA68A554F02BFDF");
+test_comp128v3("FBFFD9900A7DEFA9FFAAAC445CEB9FC8", "3A77E657D27C1AB33CC527EF");
+test_comp128v3("57D09B46F380628DC5529A22E6CBB191", "FF53F69D116A083581928053");
+test_comp128v3("2EC3BC236DABD021D37F1777AADD9678", "AC7EB38011974A02ABEAB3F9");
+test_comp128v3("B79834352EA64EB93D000257045EE658", "F9EAA0D8DC11FF29D6B516E9");
+test_comp128v3("655B9375AC8864762424A4A0D47B7BD3", "4646C2ED5F21B2EE15379E4D");
+test_comp128v3("6E022D6981D611DB9C6E1D71BC5F3829", "E9421D6DA7103E98C42BC348");
+test_comp128v3("E82BC59288987CC4900809B3F93A258C", "765C26D3449490E464D3A68E");
+test_comp128v3("D88E96E65B3E75EBEC71A167FC745022", "9CE53769A506228A186ADB5D");
+test_comp128v3("DE5DEBB9E0A8676C9AFD507CC4584B13", "4011F610990EEA93D7CE122A");
+test_comp128v3("4285D4CFB1769D1A24E50EA2E22E9897", "981AF6169C7B6C2F9D35EBBD");
+test_comp128v3("662AA01C92C099B9F1E6202E196893FC", "A18AC40821D530216226AF89");
+test_comp128v3("02AC385F2414C82B3471B647689AB849", "E94F1A9A2178C9FF103B0844");
+test_comp128v3("0F51172514E1CD57F69EF867599C3DC8", "3982621C739ED323AAAA7C37");
+test_comp128v3("F3525F3F535F4E6DF13BECC1D8FB1455", "F62AFDBE83135B71413D79D3");
+test_comp128v3("F92792BC56E1E01FF0E02D970FAFFC4E", "7BA8768FC9DE99379058D8F7");
+test_comp128v3("2B52F1DCB4966196D138C68DD54E5919", "E461FD2030A5BF5D6EE94D1D");
+test_comp128v3("2A185CE97AFEBF1571FE5D75D3BD575C", "97C86A5C1573579F9C21F2A3");
+test_comp128v3("B41B160321225CE25C4E33E040056747", "F571B0467D59F5B9CCF118D6");
+test_comp128v3("F670778BBA33B3995EABDF9CE23E1F2F", "7EC8E7AEB2F5F754DBF3E2C8");
+test_comp128v3("9F01509B4208F00FE9AC5F302E913FD0", "57EC36681223C3B6D4926342");
+test_comp128v3("FA147D70166C6DDE3DF84175679D182B", "10BBA85D4FEAD1DD02D2A997");
+test_comp128v3("CC0F7F90199AA8DC130452DD284E1472", "1A02ED61BFF438D4C5CA0141");
+test_comp128v3("76ED3C6965EDE96C8D4E1E8ECD9F56DC", "6F3A549C817F60E6DAA3EDC9");
+test_comp128v3("4B337D2FDC0E5FE89A8E552DC45CD4C5", "ECED242B4B6A1D78DE53A425");
+test_comp128v3("C2E1E0773A8030D18A18B9D272425875", "BA7CB02898761CDC4873BFD3");
+test_comp128v3("A0B7D58F803E71297F445D449F7D692C", "7D106558576E6F817F16B949");
+test_comp128v3("F9E967729FA158B2BBADB67F03F24077", "6909F02053F635627288732B");
+test_comp128v3("E11EE60D5050CE4C9D0B03410C5ECAE6", "71C3F54E1E05B0F7DAD5C400");
+test_comp128v3("02F33A269A8DC9F28CA3C370A15E8844", "F1947CDB239461CA161485F5");
+test_comp128v3("3EAB022CAE7D0FF5171CCF46470D2B1A", "EC68B69C5D6B56DB8009520A");
+test_comp128v3("D8D4A183A00EE3AE6342CD895CC722FE", "1AA84577A5A893B64CE59077");
+test_comp128v3("8C4AFE74025F7228BEC7F0F338143284", "7D0F91326ED356A09110688B");
+test_comp128v3("0A42C179A055958B374DDB41CCB29EEE", "0D2943530809487742DFA541");
+test_comp128v3("D7ED82A3EE21516F5B5E9AC6F7C461A5", "6366910A49AAAEA42C9030D7");
+test_comp128v3("86D87077BC84F98E3937097EEAB02ED5", "2A9ABE810CF32B7A58CA3F3C");
+test_comp128v3("880C564BBCEFC7442CE047715FF7D734", "0CFCFAC0132393C12C1604E3");
+test_comp128v3("DC31B4989AD996F310386615015ACE5E", "5CC175EAB000EA51A1FFE224");
+test_comp128v3("392104223345E1D18364CBEA4BC3BFD3", "E264A4072A07CD9B6680274E");
+test_comp128v3("5F7D8CD69434C38C21342F0AA1BA95B2", "A6054BD785E94219C6B13676");
+test_comp128v3("0583E23F330357A0ED6C19F4B1170687", "D4420333B9B73E98C9CDBEBD");
+test_comp128v3("BEBA72E43E8B849A8AB7DE5E384F4FFF", "5C8E69DDEDACC0A2E2C53C49");
+test_comp128v3("E924217A8D6DC3349F1227E479B75ED3", "EE4F62ED04137D5789593131");
+test_comp128v3("D816518AD87D4EFCE7596BF5CB44F4E7", "05064CA57A799CC2BE53F4DA");
+test_comp128v3("915D72694C6A437D7B0F426F09E052D6", "D424688D264C9C6C4DF27328");
+test_comp128v3("A670F35E061E9939F3BCDC59FE3713BD", "6D01F2C7E14F078D905D0CC5");
+test_comp128v3("5C4F891E7FA9033123808EA080057854", "CC073D07C363B207B01E7A92");
+test_comp128v3("18179F59C553186751D81E19B525844B", "5A85AB9293AA28FF5FAB717E");
+test_comp128v3("C2B28E2A5F646D7C1D8CD149FC5CFCBC", "C92B159FBE27D67E60BC4979");
+test_comp128v3("B4359F02926FB5CFE5CA5A8D1CA4DD9A", "3F3BE16228D0E16613464E71");
+test_comp128v3("DEE387A6D3DE2596552C22CC63DE4C51", "0C00FAC805524991C3279C9D");
+test_comp128v3("D51C0E2C76902EF329A51E1F0D7BCCD2", "2B22C1C141C8048A35731F8F");
+test_comp128v3("D5E486BEEB5F24C1DA0E8845A9B7A814", "EFC378D93A3973CC122E8D4B");
+test_comp128v3("5854C608946E292D53C10BB4217FFCFE", "1C9F8CC7D50860B4B3A0D942");
+test_comp128v3("B7AF5AC0E19E193F7D8E6F39A574735B", "548B1F53379D01046A6A56CC");
+test_comp128v3("34E91F46730F97BB9FB5EB234FD1F8EA", "63AA742D508678B048EA9C39");
+test_comp128v3("341BA1C17F4B3404873D4FAA11360CFE", "72FB0649FA0BF6BB586BD4D8");
+test_comp128v3("9E3FB44A03A77C0CE5A61A6A1401D171", "6CC44D57F3A12BF4EFD1A8EE");
+test_comp128v3("6F736586A0EEF3449DF0B60D94FDF437", "9CD22D8E908B8604E50AEB38");
+test_comp128v3("3DD7BBAA9219A684937E01ED3C4BB765", "979F4315ADAEEFEB2FA425A8");
+test_comp128v3("14DA6A52901E8307A0A670AE479F86CA", "2BCB1F00A750C44FD8796227");
+test_comp128v3("0CCFC8E22D343F1F742109B298C70B6D", "8A2774F0FCA16945E112A963");
+test_comp128v3("6EFFA300E7B42409B6C0AB2F7702DE10", "03775D043B0E74A09DD3C682");
+test_comp128v3("6E32DD9C06363D3861E0CA8757F6F1E6", "7A93227B2D9D42E1E9BC575D");
+test_comp128v3("EA9C1AE547A7A703FB9927071741BBDE", "E21A228CBE7A6CB571B048A3");
+test_comp128v3("9C02C6007B9520A2C91AD461F0D036B0", "1152183D03228FA0824CB02B");
+test_comp128v3("D05F647A9D52588A8080FABC23C8FBE2", "081E7E132E7FA762FEC9615A");
+test_comp128v3("C69B4F862714E7DE0F164AFB86FA749A", "A6EA4793326C53FCDD068BFE");
+test_comp128v3("8AAA18EA7C2BF9AA2CF2FEBC67A2D237", "A844FDC8F08B88FA76203076");
+test_comp128v3("99EB982A955878D476D0DCF26F4F2549", "4CEFC03D8877AE5A4948132D");
+test_comp128v3("E67E1D6202D1579CB6CE1019C356365C", "359F17EFCEBBAF1871BB23B0");
+test_comp128v3("51E24C6EAE298E24032801B915284529", "A4D4A479C4A563C887CDAB23");
+test_comp128v3("A680BBE906B789E8EABF3A2105F729BD", "003D877DB7245BD9494FAA4F");
+test_comp128v3("B8C0B91B3E4D721C64AB693D3661F0A8", "E6BD97DF792D7247ED7470A6");
+test_comp128v3("C209970974C5FB03F13CC37DC5AB14D9", "CE35FF0D37FA85538CE400E0");
+test_comp128v3("AA776ED1EDA8F6365E7B6C309C2D14C0", "44363E12F52D707C3A603CFC");
+test_comp128v3("63B00CC8C764D6349953A48FA7C9257A", "926B6CD0BA38598834ED10B0");
+test_comp128v3("DCADDE2690C1A93C5E2726A62AAE2C7D", "FBE1015B5DA87469EFC57492");
+test_comp128v3("37EAF2D85AFD72C0262AA7DCD7429557", "33EB97675FC486E25CA4015D");
+test_comp128v3("AD2B37FCBFF34E2A3E298C4D0E889335", "F1FB1A310DE2FDF67C14D823");
+test_comp128v3("21E5FC1E51A73A330400ACE4C4620506", "D5C7DEF1981B1E4777A03D0A");
+test_comp128v3("5715725A11F18EAF719F33AD86259A07", "51A55915E4606D4BB5293F18");
+test_comp128v3("C3F809C472F506B2B1E857DC01069423", "05206E64B7887F0DC6496ECE");
+test_comp128v3("93F2E9C05B6A1C6BDC847F30C173335F", "59A69CA2FF24C63F4081368D");
+test_comp128v3("BE45C95A8747E9AB6CA17343FCBE1EA9", "2584335E68BAE8EA10F0218E");
+test_comp128v3("680BA0B4E836CB3878E5D0DEF1C2E896", "E62B658EEA7A6D7A43D59686");
+test_comp128v3("2D3653DC920D22B620131542E79336C0", "F95FC2F730472BB634C51FE0");
+test_comp128v3("C5519276EB1657216B1EC10FB4A93F56", "3C425689A01D4D8029631CBD");
+test_comp128v3("20BCB9E98C1415A8EDF358D37539315B", "BE8FC33FE00171B5785F850D");
+test_comp128v3("444B9544EE15034F9B8C15E25488BBDC", "192A693DB42C3C1A80AE4D59");
+test_comp128v3("74838C600CAB9BED85163A7DEA529D7C", "45BE629E6266098B2637BABB");
+test_comp128v3("BA67F869BE79821954A4C23546F5A620", "8B1D92C591984DF390B34396");
+test_comp128v3("BAE1A926B0C4C0F224D15BF6480BBB57", "B47B558C9333834B06901440");
+test_comp128v3("3C5A480FBEC0C7DB36FFE0A4D0714EFE", "6324B2C4EC3557EFBB6F0A3A");
+test_comp128v3("79D99D9DAD7E91564058816E40216884", "AE065CF21B8617F8206DF134");
+test_comp128v3("652F5B2A342B02A44BF35CE9BD99B1F1", "27530B5DFE9656356422E110");
+test_comp128v3("298878C7092089346E99538E4B530732", "1E99C17F976097BF59727225");
+test_comp128v3("FCE036213AA9AE0890D6B4C4BBE1B819", "2F406CE178B194BA4223F014");
+test_comp128v3("7CFB133F107F8FAAF1105550EE7153B2", "E9219A1A70AF922F7F6335C0");
+test_comp128v3("2E5CAE7355EC3D5082C3AC9D2D4C1D74", "111F2E0C0435C381F5F0443D");
+test_comp128v3("A432251736F441174D9BF11302FC8A0B", "6D85327CBC7D05E5B498061D");
+test_comp128v3("864C3D7719506623594FD357343FAB3A", "99E9C7CE8A73118896FDFA73");
+test_comp128v3("8060C76EA57A22E835FC003E36FBE134", "5237739EF805E1A8B0175638");
+test_comp128v3("39B499359679F3DF5F20EC816087037F", "EED3A9367C317D2C93F7350F");
+test_comp128v3("3B125A61F19898D982A68D4747F3AB27", "E4565B4CD803A7E706F7648C");
+test_comp128v3("59E0CA0FC910ED47CE9541E983256AB5", "86D49D08A5CF0A80AD3D5471");
+test_comp128v3("1509F82B32C4D1CBD190289F2ABE2A4F", "181C407D8EB4F6228F3829D2");
+test_comp128v3("A5A1461145641E786BEBD6A7216DE8DC", "94431F516F754C875F978737");
+test_comp128v3("059B3DA9442AB954CAF99206B5BE89AD", "651C10359109860AF1718475");
+test_comp128v3("AA9D00B5EE743F509F23AFB30D2DC459", "FDB81785C720C703A71500C9");
+test_comp128v3("55D1E3F5EA6945E329135BE531AE5AA2", "EE17C77D4FFFCC83060A77A6");
+test_comp128v3("6874E0DAA246D283EEBA23D56647A2D1", "E7018B195236562B25504B68");
+test_comp128v3("B97E607938AB98651325079D9873FC2F", "7264AB0E73B77C3BCD9C59E2");
+test_comp128v3("97242D0FFC2DDC9D58DCB99F47FDB54D", "FFA3866BD5962ED89FEA8F43");
+test_comp128v3("7105A4274D2BB5F3964D306E0B84BC00", "362122F98251B36C8D265AE7");
+test_comp128v3("85A013070F50C8F318EA9D2C297B32B8", "2DC9C0B8598E482E3419CADF");
+test_comp128v3("7F9D1A3A528BF1503E0659C4599BAF4D", "426C7085EA709094FB9E9737");
+test_comp128v3("E40D0BF9B1BDB25BB8CEF5F2C6E42EEE", "0A24F4C8561666FACEB3FA68");
+test_comp128v3("99F0E31E63033B10C013EBBEB5A38F25", "D04FDC9CE5590DAEEC9D2071");
+test_comp128v3("ACED4722C9A93AA8653984D1F748AAF3", "F24EA9777C8BA77D01531F9E");
+test_comp128v3("C24AD9258F77CD859AAD2E9929D0F86B", "BCEDF6F871E3EA3157A11783");
+test_comp128v3("C3F2BFEAD419E0677BCCC0BBBA0F0526", "B5677CC99B8ECE1CC3E6A8E5");
+test_comp128v3("754FECEB3814DD16FCCB048240C569F8", "DEFDCB968FE746EF38F62121");
+test_comp128v3("858D87A91898E0E017AE65A8E96E009B", "13239CEC1BBA2B7080B21A45");
+test_comp128v3("5420B3F002F35796CD870C9EF308E305", "2AD04D7F4DEB18EBFC6380E2");
+test_comp128v3("75B4876D6E2469EEAD26C4CBF4AA3A74", "BC66DF1BFE59D3EA4B51056E");
+test_comp128v3("68BAC8C22D18BBAFA5746D8BAF3919D9", "E125668BA81A618FAD0A626E");
+test_comp128v3("61A5CB8A7FE9124A50581DE1F88B4CE3", "4713490084F1061AC0D01E61");
+test_comp128v3("48A114454ECCCD8F73B798AC77397379", "D69DC6F8710A5DDC1C097681");
+test_comp128v3("7295FAE9C0FB3EF6DCCD703EA74BFA6C", "0EAC8CD8DC71849E3C8D11D7");
+test_comp128v3("41EFD59DFD1E7A03F6608E0E7BD475C6", "9276BF8FD0EFE2CEC453E0CD");
+test_comp128v3("C5D1CB28DEAFD2DE2D83F9670C193867", "F8C00545BEA262A59508A28F");
+test_comp128v3("F1341091B0AAD50914EC51A0DA1E8DB6", "0C1CCCA9988F7891593B5B3D");
+test_comp128v3("15B47603920EDDE3B34B7842547DDF58", "75E90A950B489CF1B3FF84E0");
+test_comp128v3("AE9B3B9176219A4A8AC1AFEC7C152267", "54212EDF5C06DD53A5360B30");
+test_comp128v3("640A58C1432588AA65E3B88E8A66326E", "1864A1790FA618FC9AB896C0");
+test_comp128v3("BBDB0C7B620366A7E9F3BB5AD634CA0F", "A059B19B2641F578227C1F99");
+test_comp128v3("FF31F65075488B3C9C4271D31087052A", "B81CD905D39B5FDA2E4A454E");
+test_comp128v3("33D44783AD83F85CEC49E9710B8230E7", "68085BE1594AF4350BB72575");
+test_comp128v3("DB70BDF5382D01D9F38D868298BBB2D4", "E67ABBB646268CA0DD275928");
+test_comp128v3("1ABA1A66B8F22CF69576CE375FAB4EA0", "182F2FB770A7F636B2B97AAA");
+test_comp128v3("2CCC1B002E74532B12BFCE0F75F080EF", "1F298C218193E0F3ED2959D6");
+test_comp128v3("A2E879EB6F21E729463FF02A5367088F", "CCEA2AB95BC3214EAC9E627E");
+test_comp128v3("5325A7BD8CD28B4C8009AFF45E545987", "5BF39891DE27F5C1D971D6A6");
+test_comp128v3("E422ACCAFEBBA23C330372593E0EDCE5", "EFBD096CA871AE04B041A3FA");
+test_comp128v3("AF4F883267B43FB627A6CED4D39D3297", "3F3DE74071C3A880C23A2B12");
+test_comp128v3("FD49F0326311DC823D757F635197572E", "907E8D9EA29C29D0DD4FAB21");
+test_comp128v3("FCE21FB08EF39CBE431CBE3023C4DB27", "73ACE1A839774DEA18A34375");
+test_comp128v3("A0BAE1DF873FE7A7D9048D635F1F14EF", "F3074BBA4F277FBF5A7F91D9");
+test_comp128v3("B37C38BB80328F3C97A977F2ED254174", "AC6039F5FC06E302415DDC31");
+test_comp128v3("665CE0C255C84288F7A75A5F81926F6A", "55234AC615BB3356CD0E41A1");
+test_comp128v3("8E7AA9F32253F42EF7F2D68EFBEB21AC", "04762BF970D1F2DECF22252D");
+test_comp128v3("A1BE05726059C3F312787A379F585DE2", "094D1F7842C129B549BCEE85");
+test_comp128v3("58B1B3DC7636E88130647FD67B68B08E", "8486978922E8D4D23A075885");
+test_comp128v3("01DF6BC1C5CEE8C177C59CFFB4370F8E", "B71D112215E3D942CC8B156B");
+test_comp128v3("E21294A89D9132C2DAA27BE40B719293", "00DBB154E82102ECAAE060A4");
+test_comp128v3("35B192D8BF541EB6EE622972AF7A640C", "4137A9C7D970F4A79B0C0826");
+test_comp128v3("457C3690BCC9955B543D2147A98B8BEF", "1E6860FC647A0AAB87131B5B");
+test_comp128v3("7CBCAFB6658EDF3F504659B024251EFF", "D0BE0503E3D82D3545C0FF71");
+test_comp128v3("247DA9A5A1C41600098D805C941BD8EF", "0B620D456A380440F69C42B0");
+test_comp128v3("96C7ADF6EB63AE953A9AD69CFDEC2ECD", "7B0035A1982AEECC937A9463");
+test_comp128v3("4998CF82AA9184C7AAC721A14EDE612A", "8B953D21C3805FCBDB26DC03");
+test_comp128v3("6D6C2397F816501C1C2A54026A87A891", "5E4E4DA6DF8439447F40AB24");
+test_comp128v3("9296C69A474A588CAA17E769F09E650E", "F2454421E40AF0469806ED3F");
+test_comp128v3("B5E72F91519E8C1676DE816B80E8ADCD", "A3A9B91A7FC134B9D01551BD");
+test_comp128v3("7BCBBFBE158DC5930C71CA5752DB2993", "20AEED525F372D089FA1A1C8");
+test_comp128v3("9F5DAE81ABAFEB880B768EC43240DECC", "AD83E8DD85824241E62C971F");
+test_comp128v3("9A0E44698E7CFA4A85C50490D45B5D52", "B10B5377EDB51812B6F29C8B");
+test_comp128v3("57248389353A263554EB4D9980CCC158", "D1881105398CD380A6B43608");
+test_comp128v3("276F117BDD45E2A3B9E8A034CCBFAD36", "31C05360EC269EDAEF5B60CF");
+test_comp128v3("58B44C471348805E3472F3B3CFCDF804", "C6C8C30D56B10D1D9BB0C187");
+test_comp128v3("7B6B3A243E90EE58132A0C4E648BA8D9", "741851B256F0927411A5E180");
+test_comp128v3("48B2B680CDD3420DA07D8043834FFA25", "8A4DE29E3AD6AFFCA0B4D62D");
+test_comp128v3("9AB7967D54AA825C370EB756206BD293", "3F9C0A891963C81E9C98532E");
+test_comp128v3("05415E6C0388DBD47BA5B90075C80AD1", "FDFBB592A74BB2B7DC06605D");
+test_comp128v3("A16149E3963E97DE8616C5B2D5C69BCD", "28A88DB95E7F29561D90AD81");
+test_comp128v3("B440410CE552432A8CD1C8CFB44D4E17", "9A8DC4CD1584016C16C71170");
+test_comp128v3("282F5FC1F1DB7045E95C4D2CEF993331", "278540F1D12DA5AACCCCA5F2");
+test_comp128v3("69CB46C66FEC0563177C54A92389B55C", "266B6C7FEB0A70ED61325A02");
+test_comp128v3("8A996783B3ED992261F42900F14EEDE0", "E09AC5B6CB1C5D8919A65CF1");
+test_comp128v3("A0D7319B6F633463D5D2678D9535DE6A", "96CF081192B489B4942226CC");
+test_comp128v3("A9163934E4B6F027E9D1B897089E5B8E", "7C33CF678EAC9D79A4B8DF71");
+test_comp128v3("7FA59B5C3098D6A4EA607ACE8EBDFCF6", "09E20383EF90CD41BCFB9E3C");
+test_comp128v3("545266A2AC95D9DC7523D9CC26811772", "76E1DD1B438A449674311F7F");
+test_comp128v3("AD404E88DD3ABACDC4B15C02F41F9DE9", "2EFC6B2B406E29D1E947AF1C");
+test_comp128v3("92CED35256204E31EC3549F58B15C7B0", "1E212698E114E761E5B663C5");
+test_comp128v3("EB1F247E0D56A25EF5718ED36380EEBD", "01BBF677F47C754FF502EBAC");
+test_comp128v3("32083C4DBFF7FE1FA500529BEC94F689", "587DE353144F1B3BA54447E0");
+test_comp128v3("3C6742A6E91A429CC202BB838BB717B8", "CA7694D92FD84F2F45AA6613");
+test_comp128v3("4C6A5D02313B182340FEECDB0A9CB3B2", "416B5C878D90B6481EF1DDBE");
+test_comp128v3("04C814633D2B0BF3B03D3B2F5CFB9C43", "A9E3C68FD77D1B30D415180C");
+test_comp128v3("E6908C7AEFB2819798F070BF57354A8C", "EEAE98FAF4225799B577D6B5");
+test_comp128v3("D8B8B932852D90A70F245B3E01E0623E", "E978D99AE21FA544E0FF7750");
+test_comp128v3("B2B1C9AA587FFAA004D2DE4743EB7DB6", "BEA2D1F69952283D80F4CBCC");
+test_comp128v3("C891C1DDE6D0688136A82B79CB8DD541", "E6E6CBF549BAC1BCC230DC82");
+test_comp128v3("E5619F847A4005AE32AA9751EB407CF8", "F9AA6BB21CE75E21372A5ABB");
+test_comp128v3("E6FE23F42B4B5FE8B333A1428E7EC789", "A84BC66F58C540B8BDA0CC71");
+test_comp128v3("0B784416AEABB2135791774CA7FF04FD", "9AB68C5F642C64C82567E299");
+test_comp128v3("42AFC9A45375E548CE1EF6E49C907FF3", "A756D8B5D20EFF34C4C5D18E");
+test_comp128v3("61334E0DB09793458FF1E7874BD5BB56", "FF1EB9D76FF1B2E49564419D");
+test_comp128v3("471A3B7B06D76797970D836EF664519D", "C51C2ADB60D331AE5AA94282");
+test_comp128v3("26D42F7E2DCB2C1FEB76511033C7D986", "A28858C9C4E7FA2CC6F99576");
+test_comp128v3("8FA6CCDCD58890BCBEDBC29EE019A002", "B394C74C41F3FCA60AD2ED04");
+test_comp128v3("FE6B666AA3EF9CBA6094007E3F1B4F24", "9246AE183103570DBB6E1AE3");
+test_comp128v3("7A18F941E8B893C7D27D63F5F4E14985", "345E27AC263C7C0585F25D06");
+test_comp128v3("C3E4A515BF1C087D1F3AEE498D3C9F4A", "B3A6BBEAB3459BD607310A3F");
+test_comp128v3("DE2024BDD217B94AA602EB502C9FAF4A", "9104CB600FEDEFA6365F34D2");
+test_comp128v3("61636EA7E19138D4BBEA213AD61543AE", "90992C68472147762B9FEEE8");
+test_comp128v3("FAB3BFF88D340A5423E32C9596BC8B57", "7FA6B3679298BB21B282A350");
+test_comp128v3("4D37D80ED1C7F445F73A66F59C11FCF0", "110889228DE97F9AFE93A1BE");
+test_comp128v3("A6D10F7561451F50B85255AD5BD912D3", "668622414C3922D25727F3C7");
+test_comp128v3("E6A2AC428310CAF276CB6035CB8EB9BD", "8F3E6B6B0E0485B69F011B6D");
+test_comp128v3("68204E1B48BDB4F5D89F8A970B2CCACD", "D404A42390D66EB423F42554");
+test_comp128v3("98CFEE98EDA627B7680EF7EDBB4CE14C", "A3B4D01986D64F0AD563F7EB");
+test_comp128v3("D06325445759A1D117B09B2E8F4C94C2", "F5F33FCC60A8E84325C3CF5E");
+test_comp128v3("92A8B5DC09AC530E8A5CF2F38AFF22F9", "2DDC1FB79A084C64EA4BE75A");
+test_comp128v3("B5521DC9BCD55EC9CFB2158A120BAE06", "D30F832834176C330CC43514");
+test_comp128v3("C14B9437622D990C05C3FFCB734DA52A", "D0CA95116EBF7A6261CCF2EB");
+test_comp128v3("75E4718349BE6677212F218679338FD8", "837DC56CE8A0EB5D01903DB0");
+test_comp128v3("937F3F6779B2D4EBD5B7A35E3DC89D57", "A86B1F588435C042D6C7642C");
+test_comp128v3("352D597B542F025B4D18A42C9B50E426", "AF86E90EB92C60A7B0B942E5");
+test_comp128v3("195505E0551B87975CCE1A27F0B1DE1A", "7960D8F66F1D52C8623223DF");
+test_comp128v3("23AD7E24D5C114B17F629337C20B2267", "430761488833363E43CCF38D");
+test_comp128v3("258C233904FE9E5DF8E21E6F5AE217F7", "5A03D16A770893B19751D022");
+test_comp128v3("CB9F5D69C3189F895C6D541588F6F6B1", "AD173ABFA217584CF3E33648");
+test_comp128v3("1D41DB0E40598D7AFD4500E3B3B1934A", "884D68E5EE36AA82FC277648");
+test_comp128v3("A825B23D799E59BF6AC02ECEC986D308", "16731DAC8BC5B9FFE165452F");
+test_comp128v3("5A02958E967EFB560ADFAA471FBE545E", "CD455E83E810D06DAC2DA40A");
+test_comp128v3("E0BA11F212EFD783B1B2D7C1D94CFB02", "BB3D1F7CF901443C564AF018");
+test_comp128v3("6D2B6B980D7A84ABC255FD36D78F73C9", "9A9EB3E89127EC8C59F2F219");
+test_comp128v3("29F7F3DD366FD417FB27FF070C6C64D9", "90A88C2971EF2519A9286ED5");
+test_comp128v3("398096054AAE11F1466EC25C31EB488B", "FE8C1282B3EC0BCC245DC0D4");
+test_comp128v3("4727E5FA42CC306C94BF5BC60BA5D04B", "0979930740A16964D4E8DC9D");
+test_comp128v3("00FA2643930D4CAB0B437D4538A9A5CC", "D7199ABE41A62FA9A21C940D");
+test_comp128v3("4BA3FC019B73B6D50671AA008136D42F", "632173C95CFD3E845734F21A");
+test_comp128v3("DCF66A88B4E29275FEAD88B7FA30432E", "CAFCCD143CAE517ECED695CE");
+test_comp128v3("65945975D5C9C172830BA2C9E82FBCEE", "C124C3DB68DAC92C77D9D77B");
+test_comp128v3("88F1F56B2114A44495DD4758A27DEE2D", "8AE73C7FE5A4D3AFBA04735C");
+test_comp128v3("98D15F929E3C088915CF014704953670", "D40859F7D1B9B0BE218DF3A0");
+test_comp128v3("2A5CE1BDCB03D4A716F94FA058AA4A8D", "3C52E2C038B420B1148FFE5A");
+test_comp128v3("06E140F81908655D7EB5CAB5BA500EAB", "EB33656525860992973EC912");
+test_comp128v3("CA5F889F82FF6D1BC8A37EE7F4CBCD8C", "5A05C0D894B353837EA89DCB");
+test_comp128v3("18EF57BF7CE6A833096851B002085B85", "836B27AE1ACCFB7E70705D78");
+test_comp128v3("03C91A567AA4F70F8FAE96090B1735EB", "6A9AFF2DEF414785C740FA96");
+test_comp128v3("87A6F4595E81766503F3A69ED488CF30", "1CEDAC452A7E2A8F0C6F0898");
+test_comp128v3("A6D2C603B63B9C2DB78C7603FBBA2E56", "4D87573C92C742AD679C5F47");
+test_comp128v3("38F20E83B0B6B0ADECCD8AEEBFA0D699", "174B64864AB6D9ACB49E9974");
+test_comp128v3("FAC8FECBB568C411B8A026E8101EAFCB", "DD1C6136805B948F8A752F88");
+test_comp128v3("444530537C31B55D744B3ECDAE7351F8", "79452F3E1F9D9CAD82B87F8C");
+test_comp128v3("857CC0770DCA36D9022EDAB273E28663", "83392240C1AF37AE62A628EF");
+test_comp128v3("57E9FAD98FEDEE806AF218277C3C5D41", "7CCCC317E62BA74A9C76D519");
+test_comp128v3("B5824EEB55DCD5A494FF1A90587A823B", "286597939FE17FB2632AC770");
+test_comp128v3("2B279D4E24EB13A17401CACFEE936E04", "5218F1BB472334ED7E1638FA");
+test_comp128v3("1EC44F30AD61EFB4E0DAF670C3B2AB70", "9996814A92FCDB239CE26937");
+test_comp128v3("4FCF2FCBA29AB5869EA97742E1B84F36", "4C4AEBEFFF5F38B19E115879");
+test_comp128v3("12690AD6A685FC5E12F9F2C8BC3B0EBC", "4E637991268BBECEB730DCB7");
+test_comp128v3("D9F82CD33E3B58A7A12CCD5CE0263795", "60B29E63DDB9E1662CAB28AA");
+test_comp128v3("9338545BE3BC0BEBB1147A60A901D050", "87A06D1628D7F632AA0B09FE");
+test_comp128v3("430A9DDFFBFDCDB35CF25C2FBD5FE048", "3CFDE615E8709673BBF5F81D");
+test_comp128v3("9142B3536CBC753D11927BE8106E06BF", "7AA594617CF61D637A708F6C");
+test_comp128v3("3035ECECE2B602952946B25C768FFF52", "790963DE796E2AD0F5609414");
+test_comp128v3("238844A8C5D4EE87E1E3DBB9730AF9E1", "EBADA4E0EB87ACAE64160331");
+test_comp128v3("2EE2ECCD9C8353F0DDDB3DE1FB564845", "9639CD9CB0B49815D3CEBDA5");
+test_comp128v3("4CCF70032015B8E5DC13EE6DF5D9766C", "4199007AFF50F079DD974CC9");
+test_comp128v3("940EC0E6CC164B97CE7A620569BAF28D", "8F4FDA8480B3DB9879680E17");
+test_comp128v3("E9AE188BDDE66B3F5854C3EF4B039A52", "E2C4FA22AE53E117546C6A9D");
+test_comp128v3("77933DBD0A5BEC33112F9984918AE86B", "3BFF6F18700B52ECCE2C84C7");
+test_comp128v3("18B1D51FAEAD1B22B013DEACB696F70C", "A60CA3558AF36179BB73000A");
+test_comp128v3("AC8C43FFCA7B3BE74B75C4FE2161DDD2", "0A94334EA63F06450687F5A2");
+test_comp128v3("A1F89ECC18A10A50802BDA9425C04646", "04D28F46E4CB41BF9A42A595");
+test_comp128v3("E1EF29848E8859D78699F0BC084FFBBF", "FAAD7FD942FA72B031577F66");
+test_comp128v3("1A6E390B309FFE210B5F08E60C9A38C6", "AEB7315860F4D0720BB9F041");
+test_comp128v3("B574C2AA7D8F662B40A8B32502003397", "1DF4B893D380E8976DD338E3");
+test_comp128v3("92D42585A0375621E0CE7624BC8A9EB0", "A5806E604AF5D548D7680484");
+test_comp128v3("EDF884875394558E62621E8017BC4F2A", "4716D1CBC44A8B3EFEAF67A9");
+test_comp128v3("B7E1B515FE3CDC08B58C5A9954DEAC7C", "4D639CF494DDFD648BB5AD8E");
+test_comp128v3("7B7E1FD35769F032A5253E103D39C9F1", "ECE54620684332950785D8BE");
+test_comp128v3("0679BCD97C8EEA6B4E3A6D9A6DE33835", "CF055324EBBAB90814F42FBF");
+test_comp128v3("2DC3110C86D5C7E1D4D3D545EE24FC2C", "07938CAEBE1712F5AE1E3ACD");
+test_comp128v3("AE1B1164BDBBEAAB83ABE0C419DDE545", "9A5C9BA8D8F26A7CF64AF101");
+test_comp128v3("B0754B5A1DD4B70D6668EC8EB4B39C10", "52FB1BF1CE5FC6A231F0F05E");
+test_comp128v3("EC45EBD7DD6E36E070B10B353CCF9D5C", "B729AF7EA1195B39374B58E7");
+test_comp128v3("F61666A78A70D5FB48828AF5EF5AA2E7", "D27EC7914E016A7FCFF71C54");
+test_comp128v3("50BD44366D78AF6A69F20093BBD5E0A3", "17A8D6BF04FD4962D8E160BE");
+test_comp128v3("29C0FA93802FAB90949F502AF5E3F2FF", "A8061D733AE08D36228A60C6");
+test_comp128v3("CDF57CEB499D1531687C8E6BEC30F2AD", "2FE50295265CB2EE759C723D");
+test_comp128v3("CBE08B4E5F61E801F929658192748795", "6616AA22DB8D0F9B383553F7");
+test_comp128v3("AF1E33D1EB2364CC5EE33ACB28D96BF1", "7A57FA9E969374C8E3C47BB3");
+test_comp128v3("A836E1719AE7E54F8A98ECAF902F587C", "80938563139ED354B2C3FFA8");
+test_comp128v3("39BEEBBC77D4CC9FB568B738E7D02F71", "34087FA85A9AAC1586847BE1");
+test_comp128v3("EC546393DD23CF2F2862384E8C3B146B", "BB153B83A3908B4E64712AD1");
+test_comp128v3("96BD017521C07684145B6F8C6A001308", "854845992A4DF09576663A15");
+test_comp128v3("F60B146739D623E691FFE695283958A2", "D4E66CF06941040DCACA85CF");
+test_comp128v3("881FF49FE99FF0FBA2ADB26C9E27276D", "0ACAF775BB38337A1E344200");
+test_comp128v3("3714AF1C4056F4F1A0334428E70EAE31", "675C9D5C711980E4568EF851");
+test_comp128v3("76ADE089A96DC337F6DF5AA2AD9B9379", "A4BB7572C86755C40F67668C");
+test_comp128v3("FC2E67BF2FDB79D53509A1B712C3338F", "A08FDFE14B6377B9593425DC");
+test_comp128v3("9B1BF9D0A2191C33F6D3119A057E9ECF", "A40A99883EC4D2F5E66F135F");
+test_comp128v3("8D2D20EA10C7B5E377E110CC2C471298", "D771870E3342A158CF5BC565");
+test_comp128v3("20DBA5BA5C7364DAF94894FA2E3133EB", "D5ED6537C0B3343D2E3DB575");
+test_comp128v3("5B045A56105D5FB8E568F5A18107F339", "DB2DB2118ED8A75AEC9F17EE");
+test_comp128v3("6A6EC373C993C65460F60D5C2F1E2C42", "AFC9C8DBB8D37070636E8A83");
+test_comp128v3("78D42F93ACCE494C7C48F8B3FEB833BC", "56C4A07071992807A24873FD");
+test_comp128v3("877087DBDE0778182AEDF1835188A17A", "A5AEBA67FD0C0053573562D1");
+test_comp128v3("C5D36C7B00BC21E37EE7C8BD2344A2B1", "9B87A0E5CD0F142730217AAB");
+test_comp128v3("2848480D8E779C0190C1FAE7572E7A4A", "8F1512191748CB0A91FDB205");
+test_comp128v3("C3863CD1CBCB481366B8B1C1F6FF8530", "0766720770BE1247317F7B64");
+test_comp128v3("BB71FAB97A20ED16A391A519A9EC193F", "486EC0A9E17EE343578837C0");
+test_comp128v3("052E5A2C31CEF3E3695A1397853D45D5", "936CA82F9FE6A435C4EE4DE2");
+test_comp128v3("7B6306FDF353E730770E66604F8466CF", "4121273261A8C8394BCE6FD5");
+test_comp128v3("9A6FC4AFFD8C84F8818AF4AF49FDD53D", "5763599BEEC27160A6AF64BD");
+test_comp128v3("D61D855CEBE64691EB99EB73E3758FA7", "E5D9845F2515E2BD741E912C");
+test_comp128v3("6982C1E0C933006920542445974B0459", "AD5EBEEDACF13A80488D11FB");
+test_comp128v3("8D36A5A66DD0059C76B2C0510EC41E25", "4AF22EF5C1DB27880E8F1B1F");
+test_comp128v3("CD58C379E73A4923555FF88714E16CF4", "D30AE0937D8729472D0FC3C0");
+test_comp128v3("E04F522692CBEE4B7F0315AD9C51D72D", "D96F380954E06B17783E0391");
+test_comp128v3("BBE2C80970B92F6ADC1AE1525A197DAF", "9FCEBC453C0C2F496D2B7B0B");
+test_comp128v3("D8CC3E92B9C35D22B2FBB94706521276", "BBF9E042F4E5EEDDC95EBA85");
+test_comp128v3("30B4398C6A943E1FE0C3C512BD4BC788", "8503AC4FEB9FDF7CAB207F62");
+test_comp128v3("42176E40D3F1446A15D9AF3BAEAA97D1", "FBB1A09D0DC843BAA4151147");
+test_comp128v3("2D9269B04D899888C4DFD9D18A14EC62", "9319967214C5E69AF7CC83A5");
+test_comp128v3("577A7773EDAF8B1A958F7786EAEF9777", "F32957EF68CF821FE3C4C844");
+test_comp128v3("62BD892681623A3893599E5EDC068BF7", "52B4A34186CA802DC7650385");
+test_comp128v3("A8FF2DED49942BCF15D92184DB625AEC", "2B7ECBDD13D65F645A1D71BC");
+test_comp128v3("2A375F080809C959288ECBE28177B8FE", "A15C38E02FF392874C2477F3");
+test_comp128v3("F24A400691C85CFA11801DB8358EDB28", "AED4274B44DA2CE47C646927");
+test_comp128v3("2A605DD2D6CD2532034962B7B341C92F", "90C1FE26F8FE8BFAA6CCDBD4");
+test_comp128v3("4A0EE729A82478AB404AF83758EABB77", "9FB249FB258CC32EA8C2CE1A");
+test_comp128v3("77E87DCD362B3011042A2D50DA174118", "50FEB8FE43E76FBD9FA6DB41");
+test_comp128v3("05099369CBEF98698783BA40403A34A2", "D6F60A72FB0E5B8B693A2191");
+test_comp128v3("33817E9D63C8FE1DDE0025FDE7DB2FEC", "2CB474A91467A18E2A9CC760");
+test_comp128v3("D237DCCFF06B1DB84E8D2BE3554FCAE9", "8501DE0D5ACF9E38D7363AFB");
+test_comp128v3("377F98A0C49FB4150128986DCE4E7359", "25D8CAAA3EFEE5D7102D6039");
+test_comp128v3("B00DBA3CC58C9C7ABF27447431B16300", "9221FB5259BE9C96B161459F");
+test_comp128v3("20E5A41ACB1B3853D6A31C52DB5DD12E", "67928229F5693E291B98E732");
+test_comp128v3("DF9CCAEC4EAEA10523ACF122D4224B0F", "D6912B17D1ED650EDBFA5DA6");
+test_comp128v3("030C9B40FF53EDDB9097EACF7DE5030A", "931B4F1E46FD35AB1E5B0F58");
+test_comp128v3("977A5F4C3C961719DB5EB52D0B38B1FB", "F8E13B7190E28876833BF22E");
+test_comp128v3("D726AFD1E009A57B50C7751EBCF50A3A", "455B65855ACAB653892103D3");
+test_comp128v3("0066B204988D12934052DD78451B3C38", "7A14D3B1095D6E7778043C48");
+test_comp128v3("310344BE7D063F69CE10EEE11B3D3325", "D9D916E2A9E0EB1D884F8817");
+test_comp128v3("BE1E399FDAC7463EC2AE1BE7CC281C15", "761BD212E485B0C0FB45CD19");
+test_comp128v3("3BCA508E2BBE57BC3F0373052B3BC3D9", "8EFE95BCDA4BD9EDB5DF843C");
+test_comp128v3("F2FDDB7EC0126349130702C354D9FF5C", "212B7A28EBB7D9F43B25FF93");
+test_comp128v3("476582F5421F58306A3C57C8F6CDED9A", "1A591D59BCEA8D9B7D10A2B8");
+test_comp128v3("AC58FDECC86B561D6A148B4074872BE5", "4BA6D4EFC468467C570168BE");
+test_comp128v3("CFE2C743B197342B2C6E33058DCEADF5", "D683B57875B63428A0523913");
+test_comp128v3("D0921D159B743A3E644DD3787FC767F6", "5729DB51AA3905FCF6D11CF5");
+test_comp128v3("22A292888CA8C313B785F970B490C261", "7AB4DC3F26954848629108E5");
+test_comp128v3("996E7453208FCE8F62601B741B187880", "129FA10FA3D67ECE7A49E8E2");
+test_comp128v3("B3915B7F245EE8CA2613C5DBFA40B36B", "AC6CF8265CA6021E6D28F477");
+test_comp128v3("4865C31CE54C3BB99E53591AC8979198", "2650D862DA70A85B9FB4503A");
+test_comp128v3("FC16BFBF1FADDB8A3DED51D1ADD8C391", "F3CD6C256753896320EC4D9A");
+test_comp128v3("1D27C082749B362A9E079528CE462144", "49BBBBF8AB5CFF59005105E9");
+test_comp128v3("19308C8E873FE8D050BDDD797A029CCD", "476AF62908F1421B62E0E334");
+test_comp128v3("1426F94934BB10E6B4EBAD64D2A54A2B", "02C6B814B58120E5F96B4107");
+test_comp128v3("AF1E5C627A5533D575A8CECA5B1117BB", "9304DD11B97DB619F303A9C8");
+test_comp128v3("58547645FA672D474940279877918D62", "BA40A424762D75DD60C52373");
+test_comp128v3("3A56DCC21C13902FC625643FB25C987B", "57E685340A4A237414207C48");
+test_comp128v3("B851E274F9E1E7545ADDEDE0DBA5D2BD", "AE14288C0BD0877319194E8A");
+test_comp128v3("7627A495FF15D16F5DFC3BA784DCC243", "5772AAE27CAB453D3F6EC374");
+test_comp128v3("34CCAF8288808B8281740C29BE6E71B7", "C8CC08C9299FC6A61C92B17A");
+test_comp128v3("17795498DFB7074869664325E892F88E", "E0319808163DA661053AEE0D");
+test_comp128v3("7A4338E4C6CAED253D81CA943F266933", "12FD13AE57F3492999AC0020");
+test_comp128v3("9C70DA6910BEDF88184ED2CC8A630A64", "D13FA04CA1CEE854310D2469");
+test_comp128v3("51C87035E8757BE513382458A614D592", "6643B6F05BD94565D7292AE0");
+test_comp128v3("890B1AB6B918B6FB910A874F1774097E", "5E8292F81CFC8D81DEC5C71E");
+test_comp128v3("093495E9E1A906FF8A02BE13F27EBCAC", "E4700F7002C7311ADFDD0AD3");
+test_comp128v3("18534EA254A6E58AD279F2E75ECD1A2A", "F7CA1F8D9D942211356F15AD");
+test_comp128v3("E1B25EA19D9FE6E6C075DD10D7178DA9", "DAF3C83EE49AA9C795967BA3");
+test_comp128v3("3919CCE828CAA532B0D12734DE55C183", "F9FCA32B5411A7A5802D8953");
+test_comp128v3("056CA833057E0B16285F753AD6FC4925", "D99B2F3AEDD8CB9229BBEC0D");
+test_comp128v3("4E900241483908832374039E44B365DD", "CFCD7BF4E9C80C302555C5E6");
+test_comp128v3("434E2A4081A6AAA495F6324A27A2BEE6", "546C2AE028F7324B31EAD660");
+test_comp128v3("542BB3F650D3FD2197D651F2AA3B4CB8", "779CCC12B9A81203BF6E64E0");
+test_comp128v3("85C002B4D3C22F62CA29B5A200016AEF", "DBFE7A507BF3581FDBC223B3");
+test_comp128v3("A0D62D296D3DE757A2B97313CDFDBF28", "F6A883DBB001D5A06FA56A18");
+test_comp128v3("758F8139CC9EDB9E1046D5D71AC6ACFB", "A11C1322F33B0C7147ACF210");
+test_comp128v3("9854BB439AC95310546DDCD6AF8C9EE4", "75DFC039FC4A5AC6541750D7");
+test_comp128v3("162B05A3D90E4F691CF4FDA964F9D08D", "BD38EC87D8FBA954372B5C2C");
+test_comp128v3("3B870DC087FFF1CFE1FF0E7A3E5809FF", "D8926C4CE7F8A1B73803DEB8");
+test_comp128v3("74DC9116A986A4C5623CCFFE99151940", "E384D58528BA6593998B47F8");
+test_comp128v3("4F0AE2A1169E2C0CA32D76222F82AFDA", "D0D1CF2A17E32F33E0BC5D85");
+test_comp128v3("6E401FA58FAFE8C370CDD180384503D4", "410C2B70E0AF9ED19AD1A655");
+test_comp128v3("B600D795E20D5072AAEC3F12FED9831C", "8B195E4EDDFFBEA4FD2078CD");
+test_comp128v3("84F03AD81AC842234924AEACBFD9E007", "C4841B6926907A9ACE38F692");
+test_comp128v3("A9BB6DD52A6131A6324B2200A94A4C37", "6135DD345339D952D055778D");
+test_comp128v3("8C76285968EE5CE3C5BC053389320472", "483B0678643EC1B079587398");
+test_comp128v3("85CE181363376F133C27395F546810A6", "9942C4C95A9803060EF4E9C5");
+test_comp128v3("0EF7F03976FD4F35877D81E51773F788", "E07E11CCD12DECB4ECFD52F4");
+test_comp128v3("9E051CE8CD789364F3D4514664637125", "37016F051186B84AB6C0017C");
+test_comp128v3("3B969219C864C6EBC0E28E998E723EFD", "06FDA82FD788237C82EFC648");
+test_comp128v3("941D4CA3583D84AD49E8B36043A26B3B", "711A06F246EFD1CB875555EC");
+test_comp128v3("42452AB4BBA8816B642A7A2B2CB32746", "4963261C47864C816D91D757");
+test_comp128v3("EFDC72ECFC87BAF583836B28CD402AEB", "8FFA4E3012A7358F04C87DDC");
+test_comp128v3("6A4A1F77C1F84217AD574B06BADA8D8D", "7C615CB1B0C19C1B5108B2D0");
+test_comp128v3("612B7A4023CE381E2DA777DB5670EF19", "0F3C0B32C0CFA19A1E371569");
+test_comp128v3("F2FE60B316249CFC37FC844738B6776D", "094BD3DFB26EE7787C67A768");
+test_comp128v3("F16427D34518986545D6C34CE3DE0F25", "E61CAA8E90A56C33E64B314E");
+test_comp128v3("8CC551123C8D0E5F06CE4CCC4C5CD2D6", "4A12AC7EC803DE9CCE4F5BD2");
+test_comp128v3("0CAF4FCF0116F09688F70DB5BAC4FCF7", "7BB52ED93C9753BCD663B3CB");
+test_comp128v3("570A449DE9CF697AD0F857BA3B4ED10A", "F4D5A26EB7CFE1DB99F235B9");
+test_comp128v3("E7492BB6C9641FDC442007FADEE378C2", "47BB8A378D5FD4618BAAD3FC");
+test_comp128v3("4BF5A78BEB85E6EE45587980AA8997D1", "856007831C77BAEED3FB74B7");
+test_comp128v3("C467D3AA1E425853300115E2852A2C22", "79D0A87198628A4DD0715A81");
+test_comp128v3("166E20A0937416E40585C4725A2639A9", "E60A8BF1DE5F8FEF98FCAD74");
+test_comp128v3("FF60302DDA32C9B15B810FDFF066C3A8", "066BACD0B62EE1F2DFF67E5C");
+test_comp128v3("0CF0CC0B334C5FD676AA5ABD29DB391C", "A8C1FF13A05A3C2AFADF07B7");
+test_comp128v3("3C6F0B6C1F4145802A9B4DAFF7595919", "B21DEA3B36A10ADE95DFDA5E");
+test_comp128v3("59E49926C0291B47EBAF1E08B8FC2E6A", "29CB0AAFC26985131F99553C");
+test_comp128v3("24A9969D2A435B8E8B8F425AAA089862", "6358ED4DD9679D461F39870B");
+test_comp128v3("CEBF9A54B65EE526C4F5962B744BC8E9", "CFBD78D18CE385CD80AE77D4");
+test_comp128v3("766D7612E2649493E42E8729651E3915", "B543D6DF887B827AFE7A49C4");
+test_comp128v3("8D9C226BDE5412DD4CDC3B82143A831D", "18C01DD500E50DC6BF028E93");
+test_comp128v3("AC89833635DA629FB52A15D4603AED87", "5865D89B38AC00FC8277D3AF");
+test_comp128v3("75C5B6B1886B874B64A935443CB167A4", "B71CEE0596FBA77B740403C9");
+test_comp128v3("A154255A2AFF8779A6E0396E3FAE226D", "CCD287D9A032F1D350D3EDEC");
+test_comp128v3("3493696275EBF6764767DD177EBA8F68", "9D0F44BEFE7C57E7A342E055");
+test_comp128v3("48B4168389CC95EF4EA289767AA4CBDF", "77DC39A48A7C1944B4AFD3AD");
+test_comp128v3("9F1EE8FC7A3886E78B1A21338B64837D", "419BC21C840CA23E21C29EC9");
+test_comp128v3("B1EA444B1E3E7A548FDDA7FF64D2E602", "4977A7DE73FD33B1D97D58FE");
+test_comp128v3("68F8AE28016004B285403B23E021BB2B", "CA330C40333234E36F460166");
+test_comp128v3("7F4F1775A34BE9711260B1F977E152EC", "7BC572ED3D38FFBA5488732D");
+test_comp128v3("3901121148BCE143BD22B87CB212EF88", "5D3212E5298C99705B7AC932");
+test_comp128v3("DC61F4169C4BC0B3C54437F622977834", "D4506840401DF6554635D857");
+test_comp128v3("5A051696E25C5B4852D48331780441CB", "BA534B6CA3EBAF8CF044826F");
+test_comp128v3("841B5804EAB0F86CDE97139A2C6B180F", "278FBF615BF11F7FE79EAF23");
+test_comp128v3("F1488D2026FE51161531EB1966D59BAC", "A3CDC43DD0FAC00FD463B36E");
+test_comp128v3("13913340133F4E555B5BFFADDB325BF2", "6E07FFB5F8E5DFE6FF97BC2E");
+test_comp128v3("9111742825025FF594EFF2F058048BF2", "BD0896C75C8E80FD28C0C583");
+test_comp128v3("BD1CB3D3F4E34057AF30029403CA3E54", "3EDF25FC2A8068B3EB1DB74C");
+test_comp128v3("C054E12BAFDF2452238738A499CC283D", "B7212228FAD9A97F935AB498");
+test_comp128v3("F52B105E60C0CB09793BC8CD7AEEE955", "323153E1E96C18F34AC12A74");
+test_comp128v3("2FD896ADBD204A8EC457DD6AE4446DCA", "78DA31F53A33D4BEA3F7A1E6");
+test_comp128v3("03C67D7FB9F90F3B8416249FEDE60208", "3C625218B4B96297314882EC");
+test_comp128v3("FD0C8286A0EC5A245BBCCED275905A72", "FAD0C4B702D988EF237D72DB");
+test_comp128v3("A93176818C64D31AE11DB44936738D59", "665AE6D0A8E0E0FCF7FE4204");
+test_comp128v3("7801F9B77C8EA23586FF132942D674A9", "C6E394BDAEEB9F1797D9A6EA");
+test_comp128v3("4FA3B9E855330723B00CE8E3B7FD0F2D", "6C615F2A5E6E5BB3E3F4E496");
+test_comp128v3("F3AAEFD08C1A3711672606593FBB55DC", "916E07B07A2BECC7D73C5C7B");
+test_comp128v3("A8A2B83CC57E49E38B3116FB032AB7C2", "A4264C771ABF08AB7B9BF457");
+test_comp128v3("B169A6F3D14D65AB435A411580C72BE0", "91EC0B1EBCB8F77237ECE573");
+test_comp128v3("0D43F218A959414940569C4F80B5F9F1", "A2FCC9A9F23685617EA963CE");
+test_comp128v3("AD5A7D67CBA2D953A064FA3F0C7B426E", "9D2F2AF67DF7016C4078365B");
+test_comp128v3("A1F412EC7A762D4D86B524DB41A03CC5", "B46893F2D972D64E0C56595D");
+test_comp128v3("4FEE01CAB67DB39FE9E67E62D1EAF9FC", "B84477FBD1FD9217E64D21F5");
+test_comp128v3("2C557D29B854DC9F895D95B3D9A71C83", "5FC57C5E4DDD05E6D4125643");
+test_comp128v3("78BAA554D65A8E13CC4AE5F244FDFA65", "05C6EC3E2A5CB9469981D932");
+test_comp128v3("8026E9D238C5ABB9F3453D505358379B", "0A1D29C53AC98815E7A834A5");
+test_comp128v3("3960A9455AAB630A81F8379CB8254B81", "3ED3FD6E9716E4CD21F791D9");
+test_comp128v3("E9D5E86088C4798AAE8EC68FF93B8B6A", "1BCD6B153FBB8C98DCFE2BB8");
+test_comp128v3("E27A3FAEE5ED88DB4184F48A312A955A", "C0A83F05F7F5D8718FE8A810");
+test_comp128v3("3ABF186BF4A9EE6DE4BDD164A9EB3CEA", "0B85C14D123EB7FBEB22BC64");
+test_comp128v3("2B4FEDF3F46178F97BBCB8DC4B6A7AEF", "9B47E11E0BA56D68AE00ABD6");
+test_comp128v3("DF9DB131DD1927D7523C996A8CCC7956", "AFA7F27615E6AABD484B3750");
+test_comp128v3("3151C7838F64ACE68776C88E23DC26F1", "7A18AA3641D5750C64165993");
+test_comp128v3("AFACB079853517002305BA6CB7D7876F", "09851BB26A04A16B792B284C");
+test_comp128v3("620666076D2D088AD2F61F4B4DEC00DB", "63D6377AE4D5077130A3D5FD");
+test_comp128v3("81181C3B04A2FB3E90A2ECB3A09DF44F", "CB46C3E3ADC28DA7A9F12CBE");
+test_comp128v3("9B485FC8D34D39B84D619B0FA0B91DF1", "0366966D53CB7BDE4BF394C1");
+test_comp128v3("DE43D7FFAF046211613FAA0672781DDE", "653E1665CF9679361F428A57");
+test_comp128v3("78C2DFA82F4520991FD3507A142AABD2", "4FBE0E4158E403B8D8AA3269");
+test_comp128v3("6E11061572E6C5755F897773043DB7D4", "7E654E600CEAFE38C6337807");
+test_comp128v3("3FB2EF05BD30839A1F11EEA2BC4C3ACC", "CAF07B3BBA6A5CD6757F0C5E");
+test_comp128v3("6D2557CB6B0ABDAC48E074C3CF3EEA55", "909EEF3E8014ABD0C3141328");
+test_comp128v3("ED451E3A8E2618FAE17CF8C9C544EA12", "D43D8B75C4370BD8DA08289E");
+test_comp128v3("1A7EF4A0F0C6F89DFA9020D69425B363", "BFA698344E2EC5C260D3A3CA");
+test_comp128v3("39FF53E64F2B4B8E445981EC8B04DE8F", "926623ACF4217A7D4DE94C15");
+test_comp128v3("7FB4E8BCE634F763D8FE2CD361057705", "3001951E5CDE9C320AABCBA6");
+test_comp128v3("744DE4EF2893C68A63D340FE40E2C1CE", "420982D52145AB5A54B5EADE");
+test_comp128v3("C8ECBED4C9D3639D3F1E5F4F34F682A1", "24865C4F6792107A3365B515");
+test_comp128v3("D00ED1D1D9CF74C256AB08C8621FA824", "665B7FA2B71AEB7C2DFF7724");
+test_comp128v3("83745C78C893B3F786C728DEF6A48A57", "6872F7917E0FEF0F22D5EA61");
+test_comp128v3("7FBB66885417679E5970AE6B72C5BE4A", "84E39E1931E4CA690551F64D");
+test_comp128v3("AF9D46D06E926C66835517B0155C8ECD", "150A4C90CF275DA03AA0A342");
+test_comp128v3("236722E40A7FE9AF48008DA60028B057", "28C9E79D9B3B9433BA2C8AE8");
+test_comp128v3("374143C31BF20F54B0300181515ECCEF", "028C56AE7D60DB723E0A4983");
+test_comp128v3("A84BEB57AB7EFA419243F145D7B81623", "4E00F03F82C080039BD00EF5");
+test_comp128v3("078CFA828AAC69931B30F86E3451B81E", "AE382636F9F94C763B8070A8");
+test_comp128v3("1F9476007304E4C4A3C1F14A27CB2EEA", "476B9D26577B59CB3E1C3C16");
+test_comp128v3("9DBAF388DAE2EB27B76759C2CCACBE8B", "263C08E1450EAEDF987EDCE7");
+test_comp128v3("9C2BF5F3EFC3DEA34B4EC3F633280B03", "41B8D9727A5E8469EDB661F0");
+test_comp128v3("AC7D476A7CD104A4C4B152FE82899E39", "A3B40003A9FD7894C517C8E3");
+test_comp128v3("178B204DF182A0560778E5B90D1EE170", "E77BF4BCA640C82BD2665C9B");
+test_comp128v3("9AEF8B5694B926BC4A55DED5259163A2", "55A731EF32A6CA3E833F50B4");
+test_comp128v3("6B8D7482E2E1A96F6B776DBE6F7E5661", "CC7E378D8C7AF20E8FCFA0A2");
+test_comp128v3("2AC44A80A5FE1003DD24AA4C6864BC61", "EF7AAE0833F9C3888473EC56");
+test_comp128v3("C260EAC6C71D7B7D35C5BE1CCB34212A", "716DC830699958E175632ABD");
+test_comp128v3("5946CA2D7232076E2DBEC266E794D1A4", "338283CB5CD91817A465438B");
+test_comp128v3("210EAA6C850967ACCF3325487329849F", "29D05D8C1655A641764CEAF0");
+test_comp128v3("393C4E5602EF6301890D599C7766CA53", "85EF9BF7A469BF0005D5AB2D");
+test_comp128v3("5ADE7491694A75A5CE0959996473031A", "78A42538B39E12BED126DD63");
+test_comp128v3("670A72D60EC6606E4E798EBB1D4AEA45", "3EB374EDE44B276A0B05F01D");
+test_comp128v3("23916D367C0E00CF13B2BA5849293281", "3BCEC47F6FF94E05EB2756D7");
+test_comp128v3("3D37E626165E8CFDA7F3503EE96D78AF", "7DB25F0039486AA1C17DEEBC");
+test_comp128v3("730EC7F1A1334D7A9FA161ECB8FE839D", "4DFCF9EDFE4056DAFBFDEDCC");
+test_comp128v3("BF7A806A9945108833CB3C136032A33D", "68CB935008CA401B29CDFE2C");
+test_comp128v3("148D1ADC6281ED1ECEEB4C61A5D5974B", "6611E49991CA4CCC35CA4BBC");
+test_comp128v3("5D941E9A26889E243CC7BA63356B8769", "B2F69A7288ED0794C8D8F3BB");
+test_comp128v3("52176D9C830733245657C8866CB3FD34", "07D624B781E45E1AB2885D43");
+test_comp128v3("B6677C3BD296A6AF1E3D08CB803D9F29", "6DA6E7C25EEFC908BC9CF2ED");
+test_comp128v3("35BC2C889362E17CC46F1DC4C69DE5AE", "9B632BFDC79828C2EAE40ACD");
+test_comp128v3("A8FE6732AC535DB718039CBB7FA0B0A1", "CED6008EBFC492271022666F");
+test_comp128v3("9CCB764C102F715FA8F6A77B9C681A29", "E63D04D6553D5A1272EC93FF");
+test_comp128v3("F430C9CCD6AC2C5448DFC20AEAC26B78", "A268C88D3C4AAC5C3C40B971");
+test_comp128v3("CD2A3D23F134BCD78AD204776884DF1D", "09C2DF4686D239A55FECF7C2");
+test_comp128v3("C6CA21CE9B44435BB2DA88DD15B1E1A6", "23E6DAB765FA303816298AC7");
+test_comp128v3("7F7A993FDE676BE6063A83BCCA2F4CA7", "A0C1BD80DBE3CDDF9157ED84");
+test_comp128v3("84D99115B8B2820C52546580B5A71517", "EF30D73FC9C7712BC1F4E834");
+test_comp128v3("8F104901412EE55AD48EC8A70C0D920A", "F9758C4357FCDDCFF5D7878C");
+test_comp128v3("B6E970122768A8B60D6ECF3590256587", "449F36D3222CBF4262F7052F");
+test_comp128v3("9456329E3E51725FF4306C1BF1FC84C5", "47E7AF27620A89B4F646FB8D");
+test_comp128v3("A320F5AB902AB2DA39A19819EC3DAE64", "F6BBE92D2F19DEE5593071F4");
+test_comp128v3("ACF41B8B0345BB7C0611BAA2F78CE719", "1FBC5EAEE93BD973D6AA6F6F");
+test_comp128v3("511765C125FBEE4D4E5BA1B339214FEA", "6B1389AE53C01A07793BE30D");
+test_comp128v3("960398E8F44A9F26F51694BDE61DE6E8", "1EBE854FECE2AB72356FF067");
+test_comp128v3("43172468FF0E5D538B047E89D9FAF128", "968204B1B443C19E2E861632");
+test_comp128v3("EA690D56A40B0E4810CAA7C3F48ACD9B", "2B46CF65F8EE650856000B67");
+test_comp128v3("CB2728D1C06FA1653325838B6786ED19", "C757A09F686434C6D2AF8FBB");
+test_comp128v3("4ED8EFD706EC13D2D8ADB73E922BDB96", "F188C54E0B4FADFEEEDA9E98");
+test_comp128v3("DE4E12D86637EC29DAF8366BE5A17078", "927929B7DC0C251D1B2BB0B7");
+test_comp128v3("2E241E86614830FC4AFBC8A9B994BC11", "37D46D82906800EA6197658F");
+test_comp128v3("FE24429FB354D1BE7F27D1220D7801EF", "A3D69BDD8EB8C24A6A19BC09");
+test_comp128v3("C1C835697AF1C95B77CB5D09ECBF402F", "684525124857136F39ADE1DD");
+test_comp128v3("AE8AD487E7DD8B1D8CABB82C4B3183CB", "EDED085BBF5084415D4E0205");
+test_comp128v3("70BD0DB40F3D976E4907DCBA3E40FEE1", "EFE6A6F67370348AE283ECCF");
+test_comp128v3("5B1072BA60B98806208700F6BBCB338F", "4C374E86BEBA04BAF4A2E11C");
+test_comp128v3("536C7B7A6D773299B839416916D78B6D", "1F09C90AD9654A66EDEC86C2");
+test_comp128v3("024FF49B1CA2AC1056801B2B9FF0BDF1", "3CB058ECA6914AD9AB4E58F9");
+test_comp128v3("3F73F9C6FD5F80388DE7CD0D447E34C0", "9D4EEE0478937DC2D7EFAC6E");
+test_comp128v3("56C45BC9B76D6D98B674258314ABD03F", "9307A97F0128F4A8A062C418");
+test_comp128v3("6EEDC53430538D16AEE578433AC82C87", "6BFE03DA1A89F83253866536");
+test_comp128v3("15526C4A50256C554663A59AFA31E799", "33F71C34F358D46AD9618212");
+test_comp128v3("31FFA6A17A8A7537CCF03A58E7F32A28", "52F193B5D4238BCBA227B4C7");
+test_comp128v3("C7EEE147EE90896BD4375E96B11D467D", "712F540C52D2B47177F8087D");
+test_comp128v3("218825B240C7C411F7A140834E3C6439", "7659E16CBE00DBEE2C89CA18");
+test_comp128v3("8A61111A6B336543BF5ECCEB68F7D15C", "2E895DC6ED3A9C291F169FA4");
+test_comp128v3("05582B24643BF38B4F0B95044533098F", "484D01822E1106E27D0DF3C4");
+test_comp128v3("A209067823F038C99E35FBBCA3BDE95A", "0DCD65DF9F21B41F6A1E5C8E");
+test_comp128v3("62EE981575D6A3250E3BA64DC029F078", "C7A87C7FA9F0372FE89BF1C4");
+test_comp128v3("062C73ABD56F61A3A42DAEE0F8EFD09D", "F5660C6FFCDA6350574A887B");
+test_comp128v3("2F4F96A5A4062B572F7BBE311ECF6492", "3F67F5A619A34CE49DC41D7E");
+test_comp128v3("B360977080E47CD9B3ED66ED22091F4C", "23822C6017E8BA385838AD0A");
+test_comp128v3("E6E7FBD7603CD52AC2EC8CE72041DD0A", "F76BC82C5FF94A2F0B411FD0");
+test_comp128v3("F53314B138E7CCAFB2F7131185918AEA", "7788F96D0ACEA0A2645D52A7");
+test_comp128v3("D6B452B402B2851C2012C30029645FBA", "311CA2C5A76C27E8C7A58685");
+test_comp128v3("AFDAF1BA6EF954C620B12F16762B35AE", "189701B5967B2D96457EC247");
+test_comp128v3("642D3D046F4F1EBD0C775B06592CDB27", "D054138B51038F23BD0171D8");
+test_comp128v3("CDB86368F91E71CE0FC34A70F6FD65C2", "74D76011A1912FA279AD1CC8");
+test_comp128v3("9FEDAF38BA24A6C82BBA68DA95B71176", "7FE4FCFBF42536F899ED7360");
+test_comp128v3("FEF1D522E84CB983A5090B4151780376", "1489794A18B7CBD81B3E6E57");
+test_comp128v3("861435ACCB03FB2D1BFCA69782DC469D", "4B4D585395AD649C89FE6139");
+test_comp128v3("995AD2985AD4E5A1F8802B90B7F8ECA2", "993C1F391FBAEDF577E144E0");
+test_comp128v3("742263AF7482CE41D4EF0B03A3AD9B7E", "ADB826CAEF2799A7A88DC866");
+test_comp128v3("479337DF35E98C67741FAD81CF3365B9", "FCD508F6FC1ABBE522E0B691");
+test_comp128v3("C7B92DE42D76D646284A2C2039F584B7", "C541B2C7568E4817DFF95FAB");
+test_comp128v3("D0C3DDC48EC35DA67B369A9DE0CCFFCC", "8AA975041C6BD0DA7586DF38");
+test_comp128v3("599B31C8C3852C1C23DD19A7ACD55C11", "07D62DF63575B19B89DA071F");
+test_comp128v3("0F269A0EA3E8EFEF5C3C52D43D002225", "A34DB9124623C3271061BAA6");
+test_comp128v3("6AD44C3FDCF70DD91323CC62CFB02D4E", "D17293017E5E46B0F054C9F7");
+test_comp128v3("BFE112DD9EBF7E917C561F72750B8912", "8825188DA2B08941B8089631");
+test_comp128v3("B87A63D3DCAB1BAA9A185650D52F98BA", "781E9ED97865B4EAEB24F256");
+test_comp128v3("15F374A04F54435C4986C3CEADE49078", "3803413B6A6B7D342431E19B");
+test_comp128v3("9597CEB0C4C1DE570C408C732C4AAEFF", "FFFCC0E7778720989F5D207B");
+test_comp128v3("9EA551BB7EEAB54B2CB0B7D5A4B46984", "12670590F5569DF36255182B");
+test_comp128v3("E0A14DD9D10CA02AAB400CDD6D4CC8DF", "3B8D453873F43514FBFD6E61");
+test_comp128v3("6D7D889972B4415B2C4BB94147A8B0C3", "9AB50F45E012C1C13DC0C123");
+test_comp128v3("BD143BC0B969AB78A4C77AEF75DF577B", "46BA7B2AACE2BE1EAE041BAA");
+test_comp128v3("AFA3644F3A1B2E3C949409CD1A9FD9EE", "4784E15B8459FC8C31BC5A09");
+test_comp128v3("F68A2E4BC14FF93B6E8AED6603681E44", "08C81D5D7ACCE6421A3A83C8");
+test_comp128v3("8958835A3177994FD9E234A64E8DD402", "4AB52CC30160C00D0CB8149E");
+test_comp128v3("FC5A744BCC4C3A64731A56568F1824CD", "7691B4A850CC3F520A27CAED");
+test_comp128v3("A0BC0414793FD7CD91C4901ED37CEFEE", "50387A5169C4BEF0DFABA169");
+test_comp128v3("CECD899ECEEA771F48B27ADAE869A0FA", "AC47989CED4D7ECC858B3316");
+test_comp128v3("227AE04F7CD994EC2C5028C28EB91C60", "2CF79C8535D09CBE08C99BC4");
+test_comp128v3("E1EFAED76F88CB13D36D6FA9341E6F72", "D0939986C168DF7A71F8692B");
+test_comp128v3("0BB39C124E6009D6F192BE076CE0B912", "07ECF9210CD0BA6CB7D0A331");
+test_comp128v3("66B94A56E5ED1CA6D8D13B716C826EFD", "AB586CD5C53D9B44AC9CF827");
+test_comp128v3("74BA0547304F65181E09067ADE3944A8", "1BC03458AF15F80379307560");
+test_comp128v3("E5BDCE39E73DED6127D19DC0D2B07509", "2AA15E6321BC75606E161299");
+test_comp128v3("5FA9FB4F33B5931DFD0B608D3673CD8B", "2EF8B7A870C0B16E2A2E0771");
+test_comp128v3("591C4B52914FD9906794F9B437297932", "57D657E1F9EE91A75BAA281C");
+test_comp128v3("88A97F10BDFC5900CE69B02CD4927D5F", "49B141185B37C4BFE45770A6");
+test_comp128v3("B699392799957BDD5F7578F616FE052D", "E9FAD536A1195A43049FD4FB");
+test_comp128v3("CFDE65C7EEAB7B468E5EB53B59560E56", "EBDD36D040A23090DD2B7C8C");
+test_comp128v3("7DD1288548E9EE0F59C7AB71ED93F458", "570BEE5B5B720E1C71CC4188");
+test_comp128v3("F8A953657955164A202FD05D61ADDF18", "ADB41A9171F3B9EE64CDA252");
+test_comp128v3("8496897F262DB3DA5B1492BD910EE533", "A116D7BB8E39511500CBB3C9");
+test_comp128v3("3143866A1BFF58CB64A6AAD00A8B98A0", "88A823BB6C87C33D326F89E5");
+test_comp128v3("BF2FA6BFFB949B5EF935D4A70A1AD000", "059EB7C4093E12A3D67AF43B");
+test_comp128v3("22D61E9979690AE0F70A2097CF75617A", "4CEA847615CAAB386441D6D3");
+test_comp128v3("8BA2EEFC875953E279A0BBFF3E40D8EF", "EEB30C7A21BF5CFF8C016E76");
+test_comp128v3("0054786656570CAF86CDA3E2658CBC4A", "A8D77AF4C0D2968BF86F7EBC");
+test_comp128v3("CD789413163D67BEB5A8B4B2041AC8C3", "1E8EFC2C49634EF3D3A76663");
+test_comp128v3("D5C2E3294F8E3F7EDDB41D8038E8AE4F", "DFB267CA183A97071445EBCD");
+test_comp128v3("4547BAA42EC0A2AAA5E4A51A40F508C7", "D726295FDD1F03CC38C0D510");
+test_comp128v3("30675DADA51DD427E74150DAA3D08E47", "D98EC07B336FF2636664CEDA");
+test_comp128v3("E2049EFBF5A6B4DBFC1D827F7B6F4F79", "8A5E61E9C25DABB569047DBB");
+test_comp128v3("4DAEAD6EFAFC7B2D5B7599CB572D966A", "3C7F91652C4F50ECAE96E31C");
+test_comp128v3("421C75DAE44E53BF661EC64716C3315F", "B7C0ECAAD15C95E5A230B0BC");
+test_comp128v3("3DB086094870B8992C429827A41388CE", "932A80FADA930997A72E765B");
+test_comp128v3("1AED87BACBA9546CEFD7577149B343CF", "37496BAE7BAB169805B8A404");
+test_comp128v3("1D4C0838314C7B2E969CA01BE86628E8", "FDA25570F91EE000DF4A462D");
+test_comp128v3("E2CFEBC9DF035EED50D61010B97114DF", "507A0EE2F0E2377E9617D79A");
+test_comp128v3("B7C41BDBCB3DC0D686FB4F2A246F1EBE", "9A8B1932BE12002117B66C60");
+test_comp128v3("7F3C6DDFAAB07F2655835AD684C1EAF8", "84F746F4206E7B9D70DCE400");
+test_comp128v3("4BE5B436297DD7EFE78F43B50E9D83AE", "6A7351376DEBD0C0045287F5");
+test_comp128v3("810A6D4C4BCC9B442FCC2D17302ABD52", "BE8DFEFD0040A9171DFD1028");
+test_comp128v3("70BCCBE54FA56D6C760B2A30F12DFE3C", "D066D8EAE15177FB53E82557");
+test_comp128v3("685C7FF8585763703654DA98CA2ADD46", "E3AA8A4EEFF90AE719F7C9A1");
+test_comp128v3("70EF0027B67540B854A5678C2FFDC575", "58B0CE51BE4916D04D84D042");
+test_comp128v3("AA3ED4404B99F8C48BC481239F470693", "C7184C0EC24D703FE74FE294");
+test_comp128v3("9E5EF17C6BEAA0E6B65199ED365DDAB3", "9EE43A1ED3DBFD931A317464");
+test_comp128v3("2E9403A2E3000BA5C4E0D27C2EC64E4C", "813E15EBE8D0B17B5823E4BE");
+test_comp128v3("0173781A0EB21F505712948BE75B8458", "1E3CA90D5A9E8A6464C8E36D");
+test_comp128v3("3C088C10489234D6328F501EDBC98C00", "9D7C6B66C8630DC1F3F5312D");
+test_comp128v3("A6EE02A9C039B2D0FC48FD8A345F1892", "0A822A5118F13C0B8734AF15");
+test_comp128v3("BE8C4CBEAF4F1F1A9A3695894F9F2A99", "CE0FCD1BC48933F43895E002");
+test_comp128v3("128432DC7C3146F692965FB0D0A3308D", "770FB50A91CC47B0382B00E0");
+test_comp128v3("C88C48F3C4D3EC720F01BF9C6A65265C", "8F6DF2A2261D41952A2C382A");
+test_comp128v3("B971116F61EB90F27D34457F37AD39D9", "2D33847A8C32844FDD307D51");
+test_comp128v3("227551D0863419A949DD59F36CC83C5D", "829E83017A42C31FB195868D");
+test_comp128v3("03234F66F921406777377B0DF204A6DE", "C43127089A8D4F7250387C9D");
+test_comp128v3("D88DF421C6DE2284789ED5D54F45F03D", "3495E7918C60F295548DB637");
+test_comp128v3("C3FA2BC662694EEBEE4781F73CBB18C4", "F691B5C42013705DE1C5AE33");
+test_comp128v3("2DDA9DD56CF3E1FA5BC6B9118623A733", "469BDF4A8704D356A9A14B2F");
+test_comp128v3("C6A403AE0667AF03479DA7D96BC52127", "4996261F8E580F85B515239D");
+test_comp128v3("9B2F270E808E89FE9FBF7910D371A99A", "7904A08879D7368E8D28AB78");
+test_comp128v3("346CF33E3A1CB2ECCBB0293B22718FE0", "4A381CFA638346B0AF50A973");
+test_comp128v3("9DBDF0D1632047D2E033CD99585D4EF4", "8D52FC66020546B7F4C0AA7D");
+test_comp128v3("C0C92335F55CAFA75C8F32ECC8A8382E", "AAFF1231A4FF3657E2A2F050");
+test_comp128v3("F98D69B9C10B8180D8CCEB6F8512EFC8", "ECBAA8308702D56AB4B8042E");
+test_comp128v3("D18711BD38803D6528A0ACC4A2D13F44", "FE40B2A809ED1B288A23EFED");
+test_comp128v3("B45EB08D49D283FE8D5CD8736CFBB0BA", "2DC3543A5FC96E5D77C6A8C6");
+test_comp128v3("E5A19F4E5A95B41A6B467A4BB61FAF6D", "FDDE48FF9ABA9E1772A997F1");
+test_comp128v3("DEC185B0F7E9E915A245BCDFAA61B9EE", "B4E8B8317BB9B202C1216D39");
+test_comp128v3("7CF79DD706BB5431EA0505C5A9FD02DD", "B25B155F0F33758DA3E34314");
+test_comp128v3("D7FB84CABA49F0DCDA6CF9BD8DC7706E", "47350A6046056A36028A17EB");
+test_comp128v3("1552B8D34DA464D3306574792B48A3D9", "E941C62F7B37C94DA75700C7");
+test_comp128v3("BC7D021BCD887C891AD03F35E0A15BAF", "BE126713B56707925500E8FB");
+test_comp128v3("9134777CBFF4D521A3BFA344F7A0B437", "FDBDA66AC1D9ADAD8755DFE7");
+test_comp128v3("7C5F8F8A6BCE5887333A3CAD627717E6", "31F970EEF6CD0EB0A2CF4916");
+test_comp128v3("DF8CB343C509A1AD4F2EA7115FCCDB06", "693FC7E51AEE34C25011590B");
+test_comp128v3("A91315BD7A33231FD527B607D84FC46E", "1830B3DC10BDF6965B2C9228");
+test_comp128v3("AD2E8EE1869FF0D47F58E63BC83318BE", "5FC704AB4A24BB4EE7D4E116");
+test_comp128v3("6DEAB545F792A82A34768E828C52895D", "2C2573C04319579657238F81");
+test_comp128v3("002EE13DDD62BB00513824409FCC1E3C", "714637C12FBC3464601C51B9");
+test_comp128v3("1B7F26BDA08083628375BEF7D154A39D", "70863DE4A86FFCBEB170F92D");
+test_comp128v3("50260BE0CBC61779A3974F29E8F759AA", "0977C5842CB846C0F9B7C801");
+test_comp128v3("7CBE72435D57253A7F17B38DBDC91592", "FE586E3BB775847DD4D53896");
+test_comp128v3("AD828B0B2057DC6664ED791C5D07B0F0", "2DA0521A402DB87C23EAA90F");
+test_comp128v3("4D15F0C7057F79CA95112266A0EC2372", "C8E87F6A99CD77F1E6C52BDB");
+test_comp128v3("2603498B980BB24F3CE98CDCE7132DEC", "3D120C7D2A0626188F107796");
+test_comp128v3("7D3F0B786427ACCC65036320D6A87E0D", "90EB68AFCE491FF4FC1B935C");
+test_comp128v3("CEF85C041E9B497E104280592B4E20A5", "D7088EDD39E9441B42FA5425");
+test_comp128v3("28423C88529A282FEB63168012C7C9CA", "8541314D155ED02F6180F8C4");
+test_comp128v3("3D00F94DF50F19EB4FABAEABCFD6D2D0", "CBDC0CBBA58873A08254EBBB");
+test_comp128v3("2770701DD269B0577098A27093E4CBEA", "D433D01C27279F7871B8CFBE");
+test_comp128v3("A6196F4218B78A98B4744669E89272A4", "6D9355226838299D764B92FD");
+test_comp128v3("C2746977B2BDFC92BFBD7B108E31888F", "13349E628F46C2871403E8BD");
+test_comp128v3("EEC4692F450CC83E13E2B71D59B3A3A6", "8373F07A23AA5A770F09475E");
+test_comp128v3("C6016D020BC4C0FFB135065862E023E1", "C65DD883032F002242741716");
+test_comp128v3("7EC7083310F0065F3B96E8472A3B13D1", "1023CB8704E3F094C4254B40");
+test_comp128v3("CF0F35022BD195F113924F7FE3170685", "F91BEF9CEBB0E62E17D189F1");
+test_comp128v3("13B6AB833AA9181A0D0589C321E1D641", "B2393292651E5C5FAC10EEA2");
+test_comp128v3("78E0922DFDD9664537CA30DE31608273", "2BB017C76BEC45864CE8B5DA");
+test_comp128v3("92D6133ADB98116A1A8D5233C0D82798", "A638E5FB37FD99BDAE373B67");
+test_comp128v3("E63DD02079DC3B5E6EB39366B31C321B", "6F90B73C6489D8259C852982");
+test_comp128v3("18A08A6C828005707749B55A9B372486", "D5EB1D8073248AD37B8F239D");
+test_comp128v3("D27A6AFDA367D22533F4A41A08E728D6", "C0C1517C33F09E91EAC4779A");
+test_comp128v3("9DB473E798478DA64AF4ED702F4BC9F2", "3022D423A1C7629E82A5A24E");
+test_comp128v3("D9B45909B8FB54224223494EEA6E2E30", "032151B6AB3213BB7DDFD85D");
+test_comp128v3("8031C87FC0B6482EE41FDAE9452ECB50", "B6944CB7B74EAB9C478F1C52");
+test_comp128v3("D75BDA282D511A8FDA9D2A668C9C8DAF", "2C95EC0DD014289FFB35213F");
+test_comp128v3("CEF23CA86FACB24BC87C7A6F8E3B1C88", "18A4524E271A78D2DE5E7499");
+test_comp128v3("FF647B9CC719F05B6FC23549E39B1357", "0C865AB29E48C3C797B021D6");
+test_comp128v3("27F8DA6420EAD9D9577BB23FBC8505DF", "C3C5015754C0AFA87182B618");
+test_comp128v3("FF8354FB4DF2F4DCAD9810E6D6BE2701", "82C123077C870F46B60D29BD");
+test_comp128v3("036E56648887DBAA96FFA30E83D8AD82", "B8DCA4880CAD8DB0E51FD51C");
+test_comp128v3("86E00865EFAA86388A9005B52F005717", "9241332752219C7BB5A5D3CD");
+test_comp128v3("C9629A55E7894963AD2EEC2468FE7DBB", "E1136ACDFFD9517A555B0F27");
+test_comp128v3("E09B731993F83B3F5B3870A764951ABE", "9BF47B15A4384C738487A24B");
+test_comp128v3("2378E55D7C30DFC2977F4B1DC4F9F5E8", "48EB70F03A3CCB87CD82A158");
+test_comp128v3("6184EA341945118E0646CBA5D58384B4", "77675FA63C5BD4A41AC05381");
+test_comp128v3("3BFDF98A86FD921FB72992EC14F7BB45", "F538CEDE6978E01EAACBB45B");
+test_comp128v3("4456A5A28E7312B13115462951C92AFC", "72A818CF0DC16D1CF61AAB95");
+test_comp128v3("FDD3E2786D4F2CFD9480D66573BCFC9C", "2841008AEF343BB28D103C8D");
+test_comp128v3("6DD6D61B2289A9410CFD9714CCECD4C8", "F59AB2D1B59D311242978F3F");
+test_comp128v3("F167C9441706277D09DDCDD7F7E52A64", "126858DE4A4F5819448B7834");
+test_comp128v3("980FF11DA5B60F457D8AD89A85974578", "379707AA8D96C5D76FA14C03");
+test_comp128v3("70AAC833D245454AE89349A7446EE506", "5D79BA0B6FFD9631AF1CB4C7");
+test_comp128v3("927181350C74438DE3B9E8098A617E9B", "F763FBD8F7F514F54B18A736");
+test_comp128v3("CE2FC9FE401D5EEDE241E70202A918BB", "6D93D8C321F8333F0AEA5D7D");
+test_comp128v3("D0052E34EB985536E784846E9328E485", "4AE323A62EEF67882838712A");
+test_comp128v3("F0258B4E9282FCC224A3D6CD3B03CBD9", "91BE1348792DB54DB4CE8DED");
+test_comp128v3("D14CDA342B363D1D643CA37F69459559", "9B5263789B687DA01AD2408F");
+test_comp128v3("3D1B125A5450D9985C1FEB85BBC60A50", "36BEC97C697AA64958AC0150");
+test_comp128v3("89F95D62593A08D9C22E451C7FB8C5BA", "D57A8B45E9EAA8AB3A514325");
+test_comp128v3("5B1FD080E4A66D7057CFADEF6FED9146", "1BCDA51E01D6A6BD34B4447F");
+test_comp128v3("AFA91C8D534BF172752D8A5A1E5ABF18", "1171B4FE506D4A96CDDEC1A3");
+test_comp128v3("928BCB824199B826E519EADA61A4C251", "EB2F19E5D73C846D8C714D3E");
+test_comp128v3("F53692F3FB3982697190167751544A29", "7AD742D7360FA6C3D379B2B7");
+test_comp128v3("35E981691DFC03F3594134BBB7666048", "E80AAB73B59F47BF4EE3ACA2");
+test_comp128v3("E1C591DED46E4151A2758DEE40739154", "46FE19CD4CFFB3A2A20C2DED");
+test_comp128v3("FDDF6A5BB92A46D2E62A4D892D62DA3E", "91A0067C6F79DCDD23291EB7");
+test_comp128v3("2D57BDF8192CA18115B7D8475314A217", "9714FD544700667211D17C04");
+test_comp128v3("9B362EB227A8F692CBCAAE2A35126D4A", "6A9616C6A43C428F826A47F7");
+test_comp128v3("AFA7288D0D58EADB8C9786402A6E64D8", "997C242B49CB8E562D648454");
+test_comp128v3("DC52408D8CA5204B565EDC5A0FC1F62A", "EE9CB66B77A507D22BF44138");
+test_comp128v3("FCF61DE9035595B243208EC41671C65A", "2FF077600EA3FA5A0D767078");
+test_comp128v3("9A583D3FDD3982A15876623AA3030000", "19A047A8A76A867653D4911C");
+test_comp128v3("2DCFD0800243D3D0D713A0FE4B1C41C9", "C64FC0E63E24B5990B10208E");
+test_comp128v3("72213EB6319FADAE5FFE5DBD4FD3F03E", "8BB15C1A20487D9F61DCBB2A");
+test_comp128v3("2895AC8B667126F52244CEC0831D2C11", "179EC0708E768B387560A03E");
+test_comp128v3("7091C9ABA945FF32B3CD9818DE84AEE5", "2107211D6BC2DC36418D81EC");
+test_comp128v3("219370CB0713962417F979DED2342075", "BF57FBAF865A8BADEA9AABE7");
+test_comp128v3("F836740255B8ECB99BA7AEE2CE8C53BB", "A3A5D83BA6B66D2EC39B4035");
+test_comp128v3("E31DC4205A93AC332F96CA5E7BC9FCA7", "73483A4971376226A7D00F88");
+test_comp128v3("A5128C271F394B9FF303E9D169451808", "E189B4B86326531262853FCB");
+test_comp128v3("7F8AB312C58E36A6FF9B80D9FA784D4F", "77BEDAC4AF6EBD00DDCA8663");
+test_comp128v3("DD6FAC2574A4358D54BF123B5B2E4D47", "29D903403B472B3968A0D511");
+test_comp128v3("85CAE759E11DCD58B02C500C539C1FD2", "EA65F4805AED4E612A71FB27");
+
+ return 0;
+}
diff --git a/tests/comp128/comp128_test.ok b/tests/comp128/comp128_test.ok
new file mode 100644
index 0000000..f9ba7ce
--- /dev/null
+++ b/tests/comp128/comp128_test.ok
@@ -0,0 +1,2050 @@
+COMP128v2 support: 2
+COMP128v3 support: 3
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
+0 OK
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 0685832..59d660a 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -54,6 +54,12 @@ cat $abs_srcdir/auth/milenage_test.ok > expout
AT_CHECK([$abs_top_builddir/tests/auth/milenage_test], [0], [expout], [ignore])
AT_CLEANUP
+AT_SETUP([comp128])
+AT_KEYWORDS([comp128])
+cat $abs_srcdir/comp128/comp128_test.ok > expout
+AT_CHECK([$abs_top_builddir/tests/comp128/comp128_test], [0], [expout])
+AT_CLEANUP
+
AT_SETUP([lapd])
AT_KEYWORDS([lapd])
cat $abs_srcdir/lapd/lapd_test.ok > expout
--
1.8.3.2
--------------050400080209080603040204--
Hi all.
Fedora recently enabled -Werror=format-security by default for all packages to
prevent format string vulnerabilities from appearing.
Should we do this as well for libosmocore? openbsc? other (sub)projects as well?
What do you think?
--
best regards,
Max, http://fairwaves.ru